{"owner":"youzan","repo":"vant","hasSkills":true,"totalSkillsCount":151,"totalTokensCount":221767,"categories":["anthropic-skill","plugin-manifest"],"hasMcp":false,"mcpConfig":null,"found":[".agents/skills/rstack-cli-docs/SKILL.md","packages/create-vant-cli-app/generators/vue2/docs/home.md","packages/create-vant-cli-app/generators/vue2/docs/quickstart.md","packages/create-vant-cli-app/generators/vue2/src/demo-button/README.md","packages/create-vant-cli-app/generators/vue3/docs/home.md","packages/create-vant-cli-app/generators/vue3/docs/quickstart.md","packages/create-vant-cli-app/generators/vue3/src/demo-button/README.md","packages/vant-area-data/README.md","packages/vant-auto-import-resolver/README.md","packages/vant-cli/README.md","packages/vant-cli/docs/commands.md","packages/vant-cli/docs/commands.zh-CN.md","packages/vant-cli/docs/config.md","packages/vant-cli/docs/config.zh-CN.md","packages/vant-cli/docs/directory.md","packages/vant-cli/docs/directory.zh-CN.md","packages/vant-compat/README.md","packages/vant-icons/README.md","packages/vant-popperjs/README.md","packages/vant-touch-emulator/README.md","packages/vant-use/README.md","packages/vant/docs/markdown/advanced-usage.en-US.md","packages/vant/docs/markdown/advanced-usage.zh-CN.md","packages/vant/docs/markdown/changelog.en-US.md","packages/vant/docs/markdown/changelog.zh-CN.md","packages/vant/docs/markdown/contribution.en-US.md","packages/vant/docs/markdown/contribution.zh-CN.md","packages/vant/docs/markdown/design.en-US.md","packages/vant/docs/markdown/design.zh-CN.md","packages/vant/docs/markdown/faq.en-US.md","packages/vant/docs/markdown/faq.zh-CN.md","packages/vant/docs/markdown/home.en-US.md","packages/vant/docs/markdown/home.zh-CN.md","packages/vant/docs/markdown/migrate-from-v2.en-US.md","packages/vant/docs/markdown/migrate-from-v2.zh-CN.md","packages/vant/docs/markdown/migrate-from-v3.en-US.md","packages/vant/docs/markdown/migrate-from-v3.zh-CN.md","packages/vant/docs/markdown/quickstart.en-US.md","packages/vant/docs/markdown/quickstart.zh-CN.md","packages/vant/docs/markdown/release-note-v4.en-US.md","packages/vant/docs/markdown/release-note-v4.zh-CN.md","packages/vant/docs/markdown/use-click-away.en-US.md","packages/vant/docs/markdown/use-click-away.zh-CN.md","packages/vant/docs/markdown/use-count-down.en-US.md","packages/vant/docs/markdown/use-count-down.zh-CN.md","packages/vant/docs/markdown/use-custom-field-value.en-US.md","packages/vant/docs/markdown/use-custom-field-value.zh-CN.md","packages/vant/docs/markdown/use-event-listener.en-US.md","packages/vant/docs/markdown/use-event-listener.zh-CN.md","packages/vant/docs/markdown/use-page-visibility.en-US.md","packages/vant/docs/markdown/use-page-visibility.zh-CN.md","packages/vant/docs/markdown/use-raf.en-US.md","packages/vant/docs/markdown/use-raf.zh-CN.md","packages/vant/docs/markdown/use-rect.en-US.md","packages/vant/docs/markdown/use-rect.zh-CN.md","packages/vant/docs/markdown/use-relation.en-US.md","packages/vant/docs/markdown/use-relation.zh-CN.md","packages/vant/docs/markdown/use-scroll-parent.en-US.md","packages/vant/docs/markdown/use-scroll-parent.zh-CN.md","packages/vant/docs/markdown/use-toggle.en-US.md","packages/vant/docs/markdown/use-toggle.zh-CN.md","packages/vant/docs/markdown/use-window-size.en-US.md","packages/vant/docs/markdown/use-window-size.zh-CN.md","packages/vant/docs/markdown/vant-use-intro.en-US.md","packages/vant/docs/markdown/vant-use-intro.zh-CN.md","packages/vant/src/action-bar/README.md","packages/vant/src/action-sheet/README.md","packages/vant/src/address-edit/README.md","packages/vant/src/address-list/README.md","packages/vant/src/area/README.md","packages/vant/src/back-top/README.md","packages/vant/src/badge/README.md","packages/vant/src/barrage/README.md","packages/vant/src/button/README.md","packages/vant/src/calendar/README.md","packages/vant/src/card/README.md","packages/vant/src/cascader/README.md","packages/vant/src/cell/README.md","packages/vant/src/checkbox/README.md","packages/vant/src/circle/README.md","packages/vant/src/col/README.md","packages/vant/src/collapse/README.md","packages/vant/src/config-provider/README.md","packages/vant/src/contact-card/README.md","packages/vant/src/contact-edit/README.md","packages/vant/src/contact-list/README.md","packages/vant/src/count-down/README.md","packages/vant/src/coupon-list/README.md","packages/vant/src/date-picker/README.md","packages/vant/src/dialog/README.md","packages/vant/src/divider/README.md","packages/vant/src/dropdown-menu/README.md","packages/vant/src/empty/README.md","packages/vant/src/field/README.md","packages/vant/src/floating-bubble/README.md","packages/vant/src/floating-panel/README.md","packages/vant/src/form/README.md","packages/vant/src/grid/README.md","packages/vant/src/highlight/README.md","packages/vant/src/icon/README.md","packages/vant/src/image-preview/README.md","packages/vant/src/image/README.md","packages/vant/src/index-bar/README.md","packages/vant/src/lazyload/README.md","packages/vant/src/list/README.md","packages/vant/src/loading/README.md","packages/vant/src/locale/README.md","packages/vant/src/nav-bar/README.md","packages/vant/src/notice-bar/README.md","packages/vant/src/notify/README.md","packages/vant/src/number-keyboard/README.md","packages/vant/src/overlay/README.md","packages/vant/src/pagination/README.md","packages/vant/src/password-input/README.md","packages/vant/src/picker-group/README.md","packages/vant/src/picker/README.md","packages/vant/src/popover/README.md","packages/vant/src/popup/README.md","packages/vant/src/progress/README.md","packages/vant/src/pull-refresh/README.md","packages/vant/src/radio/README.md","packages/vant/src/rate/README.md","packages/vant/src/rolling-text/README.md","packages/vant/src/search/README.md","packages/vant/src/share-sheet/README.md","packages/vant/src/sidebar/README.md","packages/vant/src/signature/README.md","packages/vant/src/skeleton-avatar/README.md","packages/vant/src/skeleton-image/README.md","packages/vant/src/skeleton-paragraph/README.md","packages/vant/src/skeleton-title/README.md","packages/vant/src/skeleton/README.md","packages/vant/src/slider/README.md","packages/vant/src/space/README.md","packages/vant/src/stepper/README.md","packages/vant/src/steps/README.md","packages/vant/src/sticky/README.md","packages/vant/src/style/README.md","packages/vant/src/submit-bar/README.md","packages/vant/src/swipe-cell/README.md","packages/vant/src/swipe/README.md","packages/vant/src/switch/README.md","packages/vant/src/tab/README.md","packages/vant/src/tabbar/README.md","packages/vant/src/tag/README.md","packages/vant/src/text-ellipsis/README.md","packages/vant/src/time-picker/README.md","packages/vant/src/toast/README.md","packages/vant/src/tree-select/README.md","packages/vant/src/uploader/README.md","packages/vant/src/watermark/README.md"],"skills":{".agents/skills/rstack-cli-docs/SKILL.md":"---\nname: rstack-cli-docs\ndescription: Consult installed, version-matched Rstack docs only for user-facing `rs` command behavior, `rstack.config.*` semantics, or public `rstack` APIs. Do not use for purely internal implementation, tests, performance, or repository maintenance.\n---\n\n# Rstack CLI Docs\n\nRstack CLI is the `rstack` package, exposed through the `rs` binaries. It provides one CLI, one config file, and a consistent workflow for the Rstack JavaScript toolchain.\n\nIt covers web app, library, docs, test, lint, formatting, Git hook, and staged-file workflows.\n\n## Read installed docs when this skill applies\n\nWhen this skill applies, find and read the relevant Markdown documentation shipped with the installed `rstack` package.\n\nModel knowledge can be outdated; the installed documentation is the source of truth for the project's Rstack version.\n\n1. Start with `node_modules/rstack/docs/llms.txt`, then read only the linked pages relevant to the task before proposing or making changes.\n\n2. For exact CLI flags and behavior, also run `rs -h` or `rs <command> -h` when supported.\n\nIf the bundled docs are not available at that path, locate the installed `rstack` package.\n\nIf they are still unavailable, verify that `rstack` is installed, and use CLI help plus the online [Rstack documentation](https://rstack.rs/) as a fallback.\n","packages/create-vant-cli-app/generators/vue2/docs/home.md":"# 介绍\n\n### 关于\n\n这是一段组件库的介绍\n\n### 特性\n\n- 特性一\n- 特性二\n- 特性三\n","packages/create-vant-cli-app/generators/vue2/docs/quickstart.md":"# 快速上手\n\n### 安装\n\n```bash\n# 通过 npm\nnpm i <%= name %>\n\n# 通过 yarn\nyarn add <%= name %>\n\n# 通过 pnpm\npnpm add <%= name %>\n\n# 通过 bun\nbun add <%= name %>\n```\n","packages/create-vant-cli-app/generators/vue2/src/demo-button/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fcreate-vant-cli-app%2Fgenerators%2Fvue2%2Fsrc%2Fdemo-button%2FREADME.md -->","packages/create-vant-cli-app/generators/vue3/docs/home.md":"# 介绍\n\n### 关于\n\n这是一段组件库的介绍\n\n### 特性\n\n- 特性一\n- 特性二\n- 特性三\n","packages/create-vant-cli-app/generators/vue3/docs/quickstart.md":"# 快速上手\n\n### 安装\n\n```bash\n# 通过 npm\nnpm i <%= name %>\n\n# 通过 yarn\nyarn add <%= name %>\n\n# 通过 pnpm\npnpm add <%= name %>\n\n# 通过 bun\nbun add <%= name %>\n```\n","packages/create-vant-cli-app/generators/vue3/src/demo-button/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fcreate-vant-cli-app%2Fgenerators%2Fvue3%2Fsrc%2Fdemo-button%2FREADME.md -->","packages/vant-area-data/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-area-data%2FREADME.md -->","packages/vant-auto-import-resolver/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-auto-import-resolver%2FREADME.md -->","packages/vant-cli/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-cli%2FREADME.md -->","packages/vant-cli/docs/commands.md":"# Commands\n\nYou can add built-in commands to `npm scripts` to use it.\n\n```json\n// package.json\n{\n  \"scripts\": {\n    \"dev\": \"vant-cli dev\",\n    \"test\": \"vant-cli test\",\n    \"release\": \"vant-cli release\",\n    \"build-site\": \"vant-cli build-site\"\n  }\n}\n```\n\nAdditionally, [npx](https://github.com/npm/npx) can used to be run those commands.\n\n```bash\nnpx vant-cli dev\n```\n\n### dev\n\nStart local dev server for browsering components and demo.\n\n### build\n\nBuild Vue component library.\n\nFiles will be output to `es` and `lib` directory. More details [directory structure](https://github.com/vant-ui/vant/tree/main/packages/vant-cli/docs/directory.md)\n\nPlease add the followed config to `package.json` when publish to npm.\n\n```json\n// package.json\n{\n  \"main\": \"lib/index.js\",\n  \"module\": \"es/index.js\",\n  \"files\": [\"es\", \"lib\"]\n}\n```\n\n### build-site\n\nBuild documentation website. Files will be output to `site` directory.\n\n### release\n\nPublish to npm. `build` will be automatically execute when run `release`.\n\n### commit-lint\n\nValidate the format of commit message. Need `husky` to do this.\n","packages/vant-cli/docs/commands.zh-CN.md":"# 命令\n\nVant CLI 中内置了一系列的命令，可以将命令添加到 npm scripts 中进行使用。\n\n```json\n// package.json\n{\n  \"scripts\": {\n    \"dev\": \"vant-cli dev\",\n    \"test\": \"vant-cli test\",\n    \"release\": \"vant-cli release\",\n    \"build-site\": \"vant-cli build-site\"\n  }\n}\n```\n\n也可以通过 npm 自带的 [npx](https://github.com/npm/npx) 直接执行某个命令：\n\n```bash\nnpx vant-cli dev\n```\n\n### dev\n\n运行本地开发环境。\n\n运行 dev 命令时，Vant CLI 会通过启动一个本地服务器，用于在开发过程中对文档和示例进行预览。\n\n### build\n\n构建组件库。\n\n运行 build 命令会在 `es` 和 `lib` 目录下生成可用于生产环境的组件代码，详见 [目录结构](https://github.com/vant-ui/vant/tree/main/packages/vant-cli/docs/directory.zh-CN.md)。\n\n发布 npm 时，请将以下配置加入到 `package.json` 中，使 npm 包能被正确识别:\n\n```json\n// package.json\n{\n  \"main\": \"lib/index.js\",\n  \"module\": \"es/index.js\",\n  \"files\": [\"es\", \"lib\"]\n}\n```\n\n### build-site\n\n构建文档站点，在 `site` 目录生成可用于生产环境的文档站点代码。\n\n### release\n\n发布组件库，发布前会自动执行 build 命令，并按照流程发布 npm 包。\n\n### commit-lint\n\n校验 commit message 的格式是否符合规范，需要配合 `husky` 在提交 commit 时触发。\n","packages/vant-cli/docs/config.md":"# Config\n\n- [Config](#----)\n  - [rsbuild.config.mjs](#rsbuildconfigmjs)\n  - [vite.config.mjs](#viteconfigmjs)\n  - [vant.config.mjs](#vantconfigmjs)\n    - [name](#name)\n    - [build.css.base](#buildcssbase)\n    - [build.css.preprocessor](#buildcsspreprocessor)\n    - [build.site.publicPath](#buildsitepublicpath)\n    - [build.srcDir](#buildsrcdir)\n    - [build.namedExport](#buildnamedexport)\n    - [build.packageManager](#buildpackagemanager)\n    - [site.title](#sitetitle)\n    - [site.logo](#sitelogo)\n    - [site.description](#sitedescription)\n    - [site.nav](#sitenav)\n    - [site.versions](#siteversions)\n    - [site.baiduAnalytics](#sitebaiduanalytics)\n    - [site.hideSimulator](#sitehidesimulator)\n    - [site.simulator.url](#sitesimulatorurl)\n    - [site.htmlMeta](#sitehtmlmeta)\n    - [site.enableVConsole](#siteenablevconsole)\n  - [PostCSS](#postcss)\n    - [Default Config](#-----1)\n  - [browserslist](#browserslist)\n\n## rsbuild.config.mjs\n\nVant CLI uses [Rsbuild](https://github.com/web-infra-dev/rsbuild) to build the documentation site. You can create an Rsbuild configuration file in the same directory as `vant.config.mjs`. The contents of the file will be automatically read by Vant CLI.\n\n```js\n// rsbuild.config.mjs or rsbuild.config.ts\nexport default {\n  plugins: [\n    // Configure Rsbuild plugins\n  ],\n  dev: {\n    // Options related to local development\n  },\n  html: {\n    // Options related to HTML generation\n  },\n  // Other options\n};\n```\n\n> Please refer to [Configure Rsbuild](https://rsbuild.dev/guide/basic/configure-rsbuild) for more information.\n\n## vite.config.mjs\n\nVant Cli uses Vite to build component library code. You can create a Vite configuration file in the same directory as `vant.config.mjs`. In this file, you can add any Vite configuration.\n\n> Please refer to [Vite Configuration](https://vitejs.dev/config/) to learn more.\n\n## vant.config.mjs\n\n`vant.config.mjs` includes bundle and documentation site config. Please create this file and place it in your project root directory. Here is a basic example:\n\n```js\nexport default {\n  // component library name\n  name: 'demo-ui',\n  // bundle config\n  build: {\n    site: {\n      publicPath: '/demo-ui/',\n    },\n  },\n  // documentation site config\n  site: {\n    // title\n    title: 'Demo UI',\n    // logo\n    logo: 'https://fastly.jsdelivr.net/npm/@vant/assets/logo.png',\n    // description\n    description: '示例组件库',\n    // left nav\n    nav: [\n      {\n        title: 'example',\n        items: [\n          {\n            path: 'home',\n            title: 'home',\n          },\n        ],\n      },\n      {\n        title: 'basic components',\n        items: [\n          {\n            path: 'my-button',\n            title: 'MyButton',\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n### name\n\n- Type: `string`\n- Default: `''`\n\nComponent library name. kebab-case recommended.\n\n### build.css.base\n\n- Type: `string`\n- Default: `'style/base.less'`\n\nGlobal style file path. Support absolute path and relative path both.\n\nNote: relative path is calculated based on `src`.\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      base: 'style/global.scss',\n    },\n  },\n};\n```\n\n### build.css.preprocessor\n\n- Type: `string`\n- Default: `'less'`\n\nCSS preprocessor config, support `less` and `sass`. Use `less` by default.\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      preprocessor: 'sass',\n    },\n  },\n};\n```\n\n### build.css.removeSourceFile\n\n- Type: `boolean`\n- Default: `'false'`\n\nWhether to remove the source style files after build.\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      removeSourceFile: true,\n    },\n  },\n};\n```\n\n### build.site.publicPath\n\n- Type: `string`\n- Default: `/`\n\nEquivalent to vite `build.outDir`.\n\nGenerally, documentation site will be deployed to subpath of domain. For example: `https://my.github.io/demo-ui/`, `publicPath` should be `/demo-ui/`.\n\n```js\nmodule.exports = {\n  build: {\n    site: {\n      publicPath: '/demo-ui/',\n    },\n  },\n};\n```\n\n### build.srcDir\n\n- Type: `string`\n- Default: `src`\n\n```js\nmodule.exports = {\n  build: {\n    srcDir: 'myDir',\n  },\n};\n```\n\n### build.namedExport\n\n- Type: `boolean`\n- Default: `false`\n\nShould export components by Named Export.\n\nWhen set to `false`, `export default from 'xxx'` will be used to export module.\n\nWhen set to `true`, `export * from 'xxx'` will be used to export all modules and type definition.\n\n### build.configureVite\n\n- Type: `(config: InlineConfig): InlineConfig | undefined`\n- Default: `undefined`\n\nCustom [vite config](https://vitejs.dev/config/), requires `@vant/cli>= 4.0.0`.\n\n```js\nmodule.exports = {\n  build: {\n    configureVite(config) {\n      config.server.port = 3000;\n      return config;\n    },\n  },\n};\n```\n\nIf you need to configure some vite plugins, please create a `vite.config.ts` file in the same directory of `vant.config.mjs`, in which you can add any vite configuration (this feature requires @vant/cli 5.1.0).\n\n### build.packageManager\n\n- Type: `'npm' | 'yarn' | 'pnpm' | 'bun'`\n- Default: `yarn`\n\n`npm` package manager.\n\n### build.bundleOptions\n\n- Type: `BundleOptions[]`\n\nSpecify the format of the bundled output.\n\nThe type of `BundleOptions`:\n\n```ts\ntype BundleOption = {\n  // Whether to minify code (Tips: es format output can't be minified by vite)\n  minify?: boolean;\n  // Formats, can be set to 'es' | 'cjs' | 'umd' | 'iife'\n  formats: LibraryFormats[];\n  // Dependencies to external (Vue is externaled by default)\n  external?: string[];\n};\n```\n\nDefault value：\n\n```ts\nconst DEFAULT_OPTIONS: BundleOption[] = [\n  {\n    minify: false,\n    formats: ['umd'],\n  },\n  {\n    minify: true,\n    formats: ['umd'],\n  },\n  {\n    minify: false,\n    formats: ['es', 'cjs'],\n    external: allDependencies,\n  },\n];\n```\n\n### site.title\n\n- Type: `string`\n- Default: `''`\n\nDocumentation site title.\n\n### site.logo\n\n- Type: `string`\n- Default: `''`\n\nDocumentation site logo.\n\n### site.description\n\n- Type: `string`\n- Default: `''`\n\nDocumentation site description.\n\n### site.nav\n\n- Type: `object[]`\n- Default: `undefined`\n\nDocumentation site left nav. Each item of `nav` means a navigation group.\n\n```js\nmodule.exports = {\n  site: {\n    nav: [\n      {\n        // group title\n        title: 'Development Guide',\n        // nav items\n        items: [\n          {\n            // nav router\n            path: 'home',\n            // nav title\n            title: 'title',\n            // should hide phone emulator(false by default)\n            hideSimulator: true,\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n### site.versions\n\n- Type: `object[]`\n- Default: `undefined`\n\nDocumentation site muti-version config.\n\n```js\nmodule.exports = {\n  site: {\n    versions: [\n      {\n        label: 'v1',\n        link: '/v1/',\n      },\n    ],\n  },\n};\n```\n\n### site.baiduAnalytics\n\n- Type: `object`\n- Default: `undefined`\n\nDocumentation site baidu analysis config. The script of Baidu Statistic will be automatically loaded when build documentation website.\n\n```js\nmodule.exports = {\n  site: {\n    baiduAnalytics: {\n      // 打开百度统计 ->『管理』->『代码获取』\n      // find the followed URL: \"https://hm.baidu.com/hm.js?xxxxx\"\n      // add `xxxxx` in the seed\n      seed: 'xxxxx',\n    },\n  },\n};\n```\n\n### site.hideSimulator\n\n- Type: `boolean`\n- Default: `false`\n\nShould hide phone emulator, `false` by default.\n\n### site.simulator.url\n\n- Type: `string`\n- Default: -\n\nCustomize iframe URL.\n\n### site.htmlMeta\n\n- Type: `Record<string, string>`\n- Default: `undefined`\n\nCustomize HTML meta tag, key means name, value means content.\n\n### site.headHtml\n\n- Type: `string`\n- Default: `undefined`\n\nInsert a custom HTML content in the `<head>` tag.\n\n### site.enableVConsole\n\n- Type: `boolean`\n- Default: `false`\n\nWhether to enable [vConsole](https://github.com/Tencent/vConsole) debugging in dev, usually used for mobile debugging.\n\n## PostCSS\n\nPostCSS can be configured through the `postcss.config.js` file in the root directory.\n\n### Default Config\n\nPostCSS default config:\n\n```js\nmodule.exports = {\n  plugins: {\n    autoprefixer: {},\n  },\n};\n```\n\n## browserslist\n\nAdd browserslist field to `package.json` file is recommended. It's used by `autoprefixer` to determine the version of target browser, ensuring compatibility of compiled code.\n\nYou can add the following config for mobile:\n\n```json\n{\n  \"browserslist\": [\"Chrome >= 51\", \"iOS >= 10\"]\n}\n```\n","packages/vant-cli/docs/config.zh-CN.md":"# 配置指南\n\n- [配置指南](#----)\n  - [rsbuild.config.mjs](#rsbuildconfigmjs)\n  - [vite.config.mjs](#viteconfigmjs)\n  - [vant.config.mjs](#vantconfigmjs)\n    - [name](#name)\n    - [build.css.base](#buildcssbase)\n    - [build.css.preprocessor](#buildcsspreprocessor)\n    - [build.site.publicPath](#buildsitepublicpath)\n    - [build.srcDir](#buildsrcdir)\n    - [build.namedExport](#buildnamedexport)\n    - [build.packageManager](#buildpackagemanager)\n    - [site.title](#sitetitle)\n    - [site.logo](#sitelogo)\n    - [site.description](#sitedescription)\n    - [site.nav](#sitenav)\n    - [site.versions](#siteversions)\n    - [site.baiduAnalytics](#sitebaiduanalytics)\n    - [site.hideSimulator](#sitehidesimulator)\n    - [site.simulator.url](#sitesimulatorurl)\n    - [site.htmlMeta](#sitehtmlmeta)\n    - [site.enableVConsole](#siteenablevconsole)\n  - [PostCSS](#postcss)\n    - [默认配置](#-----1)\n  - [browserslist](#browserslist)\n\n## rsbuild.config.mjs\n\nVant CLI 使用 [Rsbuild](https://github.com/web-infra-dev/rsbuild) 来构建文档站点，你可以在 `vant.config.mjs` 的同级目录下创建 Rsbuild 的配置文件，文件内容会被 Vant CLI 自动读取。\n\n```js\n// rsbuild.config.mjs 或 rsbuild.config.ts\nexport default {\n  plugins: [\n    // 配置 Rsbuild 插件\n  ],\n  dev: {\n    // 与本地开发有关的选项\n  },\n  html: {\n    // 与 HTML 生成有关的选项\n  },\n  // 其他选项\n};\n```\n\n> 请参考 [配置 Rsbuild](https://rsbuild.dev/zh/guide/basic/configure-rsbuild) 了解更多。\n\n## vite.config.mjs\n\nVant Cli 使用 Vite 来构建组件库代码，你可以在 `vant.config.mjs` 的同级目录下创建 Vite 的配置文件，在该文件中你可以添加任意的 Vite 配置。\n\n> 请参考 [Vite 配置](https://vitejs.dev/config/) 了解更多。\n\n## vant.config.mjs\n\n`vant.config.mjs` 中包含了 `vant-cli` 的打包配置和文档站点配置，请创建此文件并置于项目根目录下。下面是一份基本配置的示例：\n\n```js\nexport default {\n  // 组件库名称\n  name: 'demo-ui',\n  // 构建配置\n  build: {\n    site: {\n      publicPath: '/demo-ui/',\n    },\n  },\n  // 文档站点配置\n  site: {\n    // 标题\n    title: 'Demo UI',\n    // 图标\n    logo: 'https://fastly.jsdelivr.net/npm/@vant/assets/logo.png',\n    // 描述\n    description: '示例组件库',\n    // 左侧导航\n    nav: [\n      {\n        title: '开发指南',\n        items: [\n          {\n            path: 'home',\n            title: '介绍',\n          },\n        ],\n      },\n      {\n        title: '基础组件',\n        items: [\n          {\n            path: 'my-button',\n            title: 'MyButton 按钮',\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n### name\n\n- Type: `string`\n- Default: `''`\n\n组件库名称，建议使用中划线分割，如 `demo-ui`。\n\n### build.css.base\n\n- Type: `string`\n- Default: `'style/base.less'`\n\n全局样式文件的路径，可以为相对路径或绝对路径。\n\n相对路径基于 `src` 目录计算。\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      base: 'style/global.scss',\n    },\n  },\n};\n```\n\n### build.css.preprocessor\n\n- Type: `string`\n- Default: `'less'`\n\nCSS 预处理器配置，目前支持 `less` 和 `sass` 两种预处理器，默认使用 `less`。\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      preprocessor: 'sass',\n    },\n  },\n};\n```\n\n### build.css.removeSourceFile\n\n- Type: `boolean`\n- Default: `'false'`\n\n是否在构建后移除样式文件的源代码。\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      removeSourceFile: true,\n    },\n  },\n};\n```\n\n### build.site.publicPath\n\n- Type: `string`\n- Default: `/`\n\n等价于 vite 的 `build.outDir` 配置。\n\n一般来说，我们的文档网站会部署在一个域名的子路径上，如 `https://my.github.io/demo-ui/`，这时候 `publicPath` 需要跟子路径保持一致，即 `/demo-ui/`。\n\n```js\nmodule.exports = {\n  build: {\n    site: {\n      publicPath: '/demo-ui/',\n    },\n  },\n};\n```\n\n### build.srcDir\n\n- Type: `string`\n- Default: `src`\n\n```js\nmodule.exports = {\n  build: {\n    srcDir: 'myDir',\n  },\n};\n```\n\n### build.namedExport\n\n- Type: `boolean`\n- Default: `false`\n\n是否通过 Named Export 对组件进行导出。\n\n未开启此选项时，会通过 `export default from 'xxx'` 导出组件内部的默认模块。\n\n开启此选项后，会通过 `export * from 'xxx'` 导出组件内部的所有模块、类型定义。\n\n### build.packageManager\n\n- Type: `'npm' | 'yarn' | 'pnpm' | 'bun'`\n- Default: `yarn`\n\n指定使用的包管理器。\n\n### build.bundleOptions\n\n- Type: `BundleOptions[]`\n\n指定打包后产物的格式。\n\n产物格式由三个配置项控制：\n\n```ts\ntype BundleOption = {\n  // 是否压缩代码（注意 es 产物无法被 vite 压缩）\n  minify?: boolean;\n  // 产物类型，可选值为 'es' | 'cjs' | 'umd' | 'iife'\n  formats: LibraryFormats[];\n  // 需要 external 的依赖（Vue 默认会被 external）\n  external?: string[];\n};\n```\n\n该选项的默认值为：\n\n```ts\nconst DEFAULT_OPTIONS: BundleOption[] = [\n  {\n    minify: false,\n    formats: ['umd'],\n  },\n  {\n    minify: true,\n    formats: ['umd'],\n  },\n  {\n    minify: false,\n    formats: ['es', 'cjs'],\n    external: allDependencies,\n  },\n];\n```\n\n### site.title\n\n- Type: `string`\n- Default: `''`\n\n文档站点的标题。\n\n### site.logo\n\n- Type: `string`\n- Default: `''`\n\n文档站点的 Logo。\n\n### site.description\n\n- Type: `string`\n- Default: `''`\n\n标题下方的描述文案。\n\n### site.nav\n\n- Type: `object[]`\n- Default: `undefined`\n\n文档站点的左侧导航，数组中的每个对象表示一个导航分组。\n\n```js\nmodule.exports = {\n  site: {\n    nav: [\n      {\n        // 分组标题\n        title: '开发指南',\n        // 导航项\n        items: [\n          {\n            // 导航项路由\n            path: 'home',\n            // 导航项文案\n            title: '介绍',\n            // 是否隐藏当前页右侧的手机模拟器（默认不隐藏）\n            hideSimulator: true,\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n### site.versions\n\n- Type: `object[]`\n- Default: `undefined`\n\n文档站点多版本配置，当组件库存在多个版本的文档时，可以通过`site.versions`在顶部导航配置一个版本切换按钮。\n\n```js\nmodule.exports = {\n  site: {\n    versions: [\n      {\n        label: 'v1',\n        link: '/v1/',\n      },\n    ],\n  },\n};\n```\n\n### site.baiduAnalytics\n\n- Type: `object`\n- Default: `undefined`\n\n文档网站的百度统计配置，添加这项配置后，会自动在构建文档网站时加载百度统计的脚本。\n\n```js\nmodule.exports = {\n  site: {\n    baiduAnalytics: {\n      // 打开百度统计 ->『管理』->『代码获取』\n      // 找到下面这串 URL: \"https://hm.baidu.com/hm.js?xxxxx\"\n      // 将 `xxxxx` 填写在 seed 中即可\n      seed: 'xxxxx',\n    },\n  },\n};\n```\n\n### site.hideSimulator\n\n- Type: `boolean`\n- Default: `false`\n\n是否隐藏所有页面右侧的手机模拟器，默认不隐藏\n\n### site.simulator.url\n\n- Type: `string`\n- Default: -\n\n自定义手机模拟器的 iframe URL 地址。\n\n### site.htmlMeta\n\n- Type: `Record<string, string>`\n- Default: `undefined`\n\n配置 HTML 中的 meta 标签，对象的 key 为 name，value 为 content。\n\n### site.headHtml\n\n- Type: `string`\n- Default: `undefined`\n\n在 `<head>` 标签中插入一段自定义的 HTML 内容。\n\n### site.enableVConsole\n\n- Type: `boolean`\n- Default: `false`\n\n是否在 dev 时开启 [vConsole](https://github.com/Tencent/vConsole) 调试，用于移动端 debug。\n\n## PostCSS\n\n通过根目录下的`postcss.config.js`文件可以对 PostCSS 进行配置。\n\n### 默认配置\n\n`vant-cli` 中默认的 PostCSS 配置如下：\n\n```js\nmodule.exports = {\n  plugins: {\n    autoprefixer: {},\n  },\n};\n```\n\n## browserslist\n\n推荐在 `package.json` 文件里添加 browserslist 字段，这个值会被 `autoprefixer` 用来确定目标浏览器的版本，保证编译后代码的兼容性。\n\n在移动端浏览器中使用，可以添加如下配置：\n\n```json\n{\n  \"browserslist\": [\"Chrome >= 51\", \"iOS >= 10\"]\n}\n```\n","packages/vant-cli/docs/directory.md":"# Directory Structure\n\n## Source Code Directory\n\nThe basic directory structure of the component library based on Vant CLI is as follows:\n\n```\nproject\n├─ src                # component library source code\n│   ├─ button        # button source code\n│   └─ dialog        # dialog source code\n│\n├─ docs               # static doc directory\n│   ├─ home.md       # documentation site home\n│   └─ changelog.md  # changelog\n│\n├─ vant.config.mjs    # Vant CLI config file\n├─ package.json\n└─ README.md\n```\n\nThe directories for individual components are as follows:\n\n```\nbutton\n├─ demo             # component demo directory\n│   └─ index.vue   # component demo\n├─ index.vue        # component source code\n└─ README.md        # component doc\n```\n\nWhen writing SFC, the corresponding JS and CSS files will be generated after bundle process, and the CSS file will be automatically imported into the JS file.\n\nIf you need to separate JS and CSS to implement functions such as theme customization, you need to use separate JS and CSS files when writing code, as shown below:\n\n```\nbutton\n├─ demo             # component demo directory\n│   └─ index.vue   # component demo entry\n├─ index.js         # component entry\n├─ index.less       # component style，support scss and less\n└─ README.md        # component doc\n```\n\nWhen using this directory structure, the developer of the component library needs to import the JS and CSS files respectively.\n\nTheme customization can be achieved by importing style source files (less or scss) and modifying style variables.\n\n## Output Directory\n\nRunning the `build` command will generate production code in the `es` and `lib` directories with the following structure:\n\n```\nproject\n├─ es                   # ESM Directory\n│   ├─ button          # button component directory\n│   ├─ dialog          # dialog component directory\n│   └─ index.js        # All component files entry (ESModule)\n│\n└─ lib                  # Commonjs directory\n    ├─ button           # button component library\n    ├─ dialog           # dialog component library\n    ├─ index.js         # All component files entry (Commonjs)\n    ├─ index.less       # All component styles entry(Uncompiled)\n    ├─ index.css        # Bundle component styles for CDN\n    ├─ [name].js        # Bundle script for UMD\n    ├─ [name].es.js     # Bundle script for ESM\n    ├─ [name].min.js    # Bundle and minified script for UMD\n    └─ [name].es.min.js # Bundle and minified script for ESM\n```\n\nThe compiled directory of a single component is as follows:\n\n```\nbutton\n├─ index.js         # Bundle script file\n├─ index.css        # Bundle CSS file\n├─ index.less       # Uncompiled CSS file, less or scss\n└─ style            # Style entry on demand directory\n    ├─ index.js     # Compiled styles on demand\n    └─ less.js      # Uncompiled styles on demand, for theme customization\n```\n\n### Generate type definition\n\nWhen the component library is written in TS and the `tsconfig.declaration.json` file exists in the root directory, Vant CLI will automatically generate the `.d.ts` type declaration file.\n\nThe format of `tsconfig.declaration.json` is as follows:\n\n```json\n{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"declaration\": true,\n    \"declarationDir\": \".\",\n    \"emitDeclarationOnly\": true\n  },\n  \"include\": [\"es/**/*\", \"lib/**/*\"],\n  \"exclude\": [\"node_modules\", \"**/test/**/*\", \"**/demo/**/*\"]\n}\n```\n\nPlease add the `typings` field in `package.json` after generate type declaration:\n\n```json\n{\n  \"typings\": \"lib/index.d.ts\"\n}\n```\n","packages/vant-cli/docs/directory.zh-CN.md":"# 目录结构\n\n## 源代码目录\n\n基于 Vant CLI 搭建的组件库的基本目录结构如下所示：\n\n```\nproject\n├─ src                # 组件源代码\n│   ├─ button        # button 组件源代码\n│   └─ dialog        # dialog 组件源代码\n│\n├─ docs               # 静态文档目录\n│   ├─ home.md       # 文档首页\n│   └─ changelog.md  # 更新日志\n│\n├─ vant.config.mjs    # Vant CLI 配置文件\n├─ package.json\n└─ README.md\n```\n\n单个组件的目录如下：\n\n```\nbutton\n├─ demo             # 示例目录\n│   └─ index.vue   # 组件示例\n├─ index.vue        # 组件源码\n└─ README.md        # 组件文档\n```\n\n使用 .vue 文件编写组件时，编译后会生成对应的 JS 和 CSS 文件，且 JS 文件中会自动引入 CSS 文件。\n\n如果需要将 JS 和 CSS 解耦，实现主题定制等功能，在编写代码时就要使用独立的 JS 和 CSS 文件，如下所示：\n\n```\nbutton\n├─ demo             # 组件示例\n│   └─ index.vue   # 组件示例入口\n├─ index.js         # 组件入口\n├─ index.less       # 组件样式，可以为 less 或 scss\n└─ README.md        # 组件文档\n```\n\n采用这种目录结构时，组件的使用者需要分别引入 JS 和 CSS 文件。\n\n通过引入样式源文件（less 或 scss）并修改样式变量，可以实现主题定制功能。\n\n## 构建结果目录\n\n运行 build 命令会在 `es` 和 `lib` 目录下生成可用于生产环境的组件代码，结构如下：\n\n```\nproject\n├─ es                   # es 目录下的代码遵循 esmodule 规范\n│   ├─ button          # button 组件编译后的代码目录\n│   ├─ dialog          # dialog 组件编译后的代码目录\n│   └─ index.js        # 引入所有组件的入口 (ESModule)\n│\n└─ lib                  # lib 目录下的代码遵循 commonjs 规范\n    ├─ button           # button 组件编译后的代码目录\n    ├─ dialog           # dialog 组件编译后的代码目录\n    ├─ index.js         # 引入所有组件的入口\n    ├─ index.less       # 所有组件未编译的样式入口\n    ├─ index.css        # 打包后的组件样式，用于 CDN 引入\n    ├─ [name].js        # 打包后的组件脚本，UMD 格式\n    ├─ [name].es.js     # 打包后的组件脚本，ESModule 格式\n    ├─ [name].min.js    # 打包和压缩后的组件脚本，UMD 格式\n    └─ [name].es.min.js # 打包和压缩后的组件脚本，ESModule 格式\n```\n\n单个组件编译后的目录如下：\n\n```\nbutton\n├─ index.js         # 组件编译后的 JS 文件\n├─ index.css        # 组件编译后的 CSS 文件\n├─ index.less       # 组件编译前的 CSS 文件，可以为 less 或 scss\n└─ style            # 按需引入样式的入口\n    ├─ index.js     # 按需引入编译后的样式\n    └─ less.js      # 按需引入未编译的样式，可用于主题定制\n```\n\n### 生成类型声明\n\n当组件库使用 TS 编写，且根目录下存在 `tsconfig.declaration.json` 文件，Vant CLI 会自动生成 `.d.ts` 类型声明文件。\n\n`tsconfig.declaration.json` 的参考格式如下：\n\n```json\n{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"declaration\": true,\n    \"declarationDir\": \".\",\n    \"emitDeclarationOnly\": true\n  },\n  \"include\": [\"es/**/*\", \"lib/**/*\"],\n  \"exclude\": [\"node_modules\", \"**/test/**/*\", \"**/demo/**/*\"]\n}\n```\n\n成功生成类型声明后，请在 `package.json` 中添加类型入口声明：\n\n```json\n{\n  \"typings\": \"lib/index.d.ts\"\n}\n```\n","packages/vant-compat/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-compat%2FREADME.md -->","packages/vant-icons/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-icons%2FREADME.md -->","packages/vant-popperjs/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-popperjs%2FREADME.md -->","packages/vant-touch-emulator/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-touch-emulator%2FREADME.md -->","packages/vant-use/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-use%2FREADME.md -->","packages/vant/docs/markdown/advanced-usage.en-US.md":"# Advanced Usage\n\n### Intro\n\nThrough this chapter, you can learn about some advanced usages of Vant.\n\n## Component Usage\n\n### Component Registration\n\nVant supports multiple ways to register components:\n\n#### Global Registration\n\n```js\nimport { Button } from 'vant';\nimport { createApp } from 'vue';\n\nconst app = createApp();\n\n// Method 1. via app.use\napp.use(Button);\n\n// Method 2. Register via app.component\napp.component(Button.name, Button);\n```\n\n#### Full Registration\n\nYou can also globally register all Vant components at once:\n\n```js\nimport Vant from 'vant';\nimport { createApp } from 'vue';\n\nconst app = createApp();\n\napp.use(Vant);\n\n// The Lazyload directive needs to be registered separately\napp.use(vant.Lazyload);\n```\n\n> Note: Registering all components will introduce the code of all components, leading to larger bundle size.\n\n#### Local Registration\n\n```js\nimport { Button } from 'vant';\n\nexport default {\n  components: {\n    [Button.name]: Button,\n  },\n};\n```\n\n> For more information, please refer to [Vue.js - Component Registration](https://vuejs.org/guide/components/registration.html)。\n\n#### \\<script setup\\>\n\nVant components can be used directly in `<script setup>` without component registration.\n\n```xml\n<script setup>\n  import { Button } from 'vant';\n</script>\n\n<template>\n  <Button />\n</template>\n```\n\n#### JSX/TSX\n\nVant components can be used directly in JSX and TSX without component registration.\n\n```jsx\nimport { Button } from 'vant';\n\nexport default {\n  render() {\n    return <Button />;\n  },\n};\n```\n\n## Browser adaptation\n\n### Viewport Units\n\nVant uses `px` unit by default, you can use [postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) to transform `px` unit to viewport units (vw, vh, vmin, vmax).\n\n[postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) is a PostCSS 8 based plugin that transforms `px` units to `vw`/`vh` units. It supports `include`/`exclude` file matching and per-file dynamic `viewportWidth`.\n\n#### Install\n\n```bash\nnpm i postcss-mobile-forever -D\n```\n\n#### PostCSS Config\n\nPostCSS config example:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: [require('postcss-mobile-forever')({ viewportWidth: 375 })],\n};\n```\n\nIf the design width is not 375, use the `viewportWidth` function to configure it per file. The following example handles Vant components (375px design) and business code (750px design) separately:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: [\n    require('postcss-mobile-forever')({\n      viewportWidth: (file) => (file.includes('vant') ? 375 : 750),\n    }),\n  ],\n};\n```\n\n### Rem Unit\n\nYou can use tools such as `postcss-pxtorem` to transform `px` unit to `rem` unit.\n\n- [postcss-pxtorem](https://github.com/cuth/postcss-pxtorem)\n- [lib-flexible](https://github.com/amfe/lib-flexible)\n\n#### PostCSS Config\n\nPostCSS config example:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: {\n    'postcss-pxtorem': {\n      rootValue: 37.5,\n      propList: ['*'],\n    },\n  },\n};\n```\n\n### Custom rootValue\n\nIf the size of the design draft is 750 or other sizes, you can adjust the `rootValue` to:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: {\n    // postcss-pxtorem version >= 5.0.0\n    'postcss-pxtorem': {\n      rootValue({ file }) {\n        return file.indexOf('vant') !== -1 ? 37.5 : 75;\n      },\n      propList: ['*'],\n    },\n  },\n};\n```\n\n### Adapt to PC Browsers\n\nVant is a mobile-first component library, if you want to use Vant in PC browsers, you can use the [@vant/touch-emulator](https://github.com/vant-ui/vant/tree/main/packages/vant-touch-emulator) module. This module will automatically convert the mouse events of the PC browser into the touch events of the mobile browser.\n\n```bash\n# Install\nnpm i @vant/touch-emulator -S\n```\n\n```js\n// Just import this module, then Vant works in PC browser\nimport '@vant/touch-emulator';\n```\n","packages/vant/docs/markdown/advanced-usage.zh-CN.md":"# 进阶用法\n\n### 介绍\n\n通过本章节你可以了解到 Vant 的一些进阶用法，比如组件插槽用法、多种浏览器适配方式。\n\n## 组件用法\n\n### 组件注册\n\nVant 支持多种组件注册方式，请根据实际业务需要进行选择。\n\n#### 全局注册\n\n全局注册后，你可以在 app 下的任意子组件中使用注册的 Vant 组件。\n\n```js\nimport { Button } from 'vant';\nimport { createApp } from 'vue';\n\nconst app = createApp();\n\n// 方式一. 通过 app.use 注册\n// 注册完成后，在模板中通过 <van-button> 或 <VanButton> 标签来使用按钮组件\napp.use(Button);\n\n// 方式二. 通过 app.component 注册\n// 注册完成后，在模板中通过 <van-button> 标签来使用按钮组件\napp.component(Button.name, Button);\n```\n\n#### 全量注册\n\n你也可以在全局一次性注册所有 Vant 组件：\n\n```js\nimport Vant from 'vant';\nimport { createApp } from 'vue';\n\nconst app = createApp();\n\napp.use(Vant);\n\n// Lazyload 指令需要单独进行注册\napp.use(vant.Lazyload);\n```\n\n> 注意：注册所有组件会引入所有组件的代码，导致包体积增大。\n\n#### 局部注册\n\n局部注册后，你可以在当前组件中使用注册的 Vant 组件。\n\n```js\nimport { Button } from 'vant';\n\nexport default {\n  components: {\n    [Button.name]: Button,\n  },\n};\n```\n\n> 对于组件注册更详细的介绍，请参考 [Vue 官方文档 - 组件注册](https://cn.vuejs.org/guide/components/registration.html)。\n\n#### \\<script setup\\>\n\n在 `<script setup>` 中可以直接使用 Vant 组件，不需要进行组件注册。\n\n```xml\n<script setup>\n  import { Button } from 'vant';\n</script>\n\n<template>\n  <Button />\n</template>\n```\n\n#### JSX/TSX\n\n在 JSX 和 TSX 中可以直接使用 Vant 组件，不需要进行组件注册。\n\n```jsx\nimport { Button } from 'vant';\n\nexport default {\n  render() {\n    return <Button />;\n  },\n};\n```\n\n### 组件插槽\n\nVant 提供了丰富的组件插槽，通过插槽可以对组件的某一部分进行个性化定制。如果你对 Vue 的插槽不太熟悉，可以阅读 Vue 官方文档中的[插槽章节](https://cn.vuejs.org/guide/components/slots.html)。下面是通过插槽来定制 Checkbox 图标的示例：\n\n```html\n<van-checkbox v-model=\"checked\">\n  <!-- 使用组件提供的 icon 插槽 -->\n  <!-- 将默认图标替换为个性化图片 -->\n  <template #icon=\"props\">\n    <img :src=\"props.checked ? activeIcon : inactiveIcon\" />\n  </template>\n</van-checkbox>\n```\n\n```js\nexport default {\n  data() {\n    return {\n      checked: true,\n      activeIcon:\n        'https://fastly.jsdelivr.net/npm/@vant/assets/user-active.png',\n      inactiveIcon:\n        'https://fastly.jsdelivr.net/npm/@vant/assets/user-inactive.png',\n    };\n  },\n};\n```\n\n### 组件实例方法\n\nVant 中的许多组件提供了实例方法，调用实例方法时，我们需要通过 [ref](https://cn.vuejs.org/guide/essentials/template-refs.html) 来注册组件引用信息，引用信息将会注册在父组件的`$refs`对象上。注册完成后，我们可以通过`this.$refs.xxx`访问到对应的组件实例，并调用上面的实例方法。\n\n```html\n<!-- 通过 ref 属性将组件绑定到 this.$refs.checkbox 上 -->\n<van-checkbox v-model=\"checked\" ref=\"checkbox\"> 复选框 </van-checkbox>\n```\n\n```js\nexport default {\n  data() {\n    return {\n      checked: false,\n    };\n  },\n  // 注意：组件挂载后才能访问到 ref 对象\n  mounted() {\n    this.$refs.checkbox.toggle();\n  },\n};\n```\n\n## 浏览器适配\n\n### Viewport 布局\n\nVant 默认使用 `px` 作为样式单位，如果需要使用 `viewport` 单位 (vw, vh, vmin, vmax)，推荐使用 [postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) 进行转换。\n\n[postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) 是一款基于 PostCSS 8 的插件，用于将 `px` 单位转化为 `vw`/`vh` 单位，支持 `include`/`exclude` 文件匹配，以及按文件动态配置设计稿宽度。\n\n#### 安装\n\n```bash\nnpm i postcss-mobile-forever -D\n```\n\n#### PostCSS 示例配置\n\n下面提供了一份基本的 PostCSS 示例配置，可以在此配置的基础上根据项目需求进行修改。\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: [require('postcss-mobile-forever')({ viewportWidth: 375 })],\n};\n```\n\n如果设计稿的尺寸不是 375，而是 750 或其他大小，可以通过 `viewportWidth` 函数按文件动态配置。下面的示例将 Vant 组件（375px 设计稿）与业务代码（750px 设计稿）分开处理：\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: [\n    require('postcss-mobile-forever')({\n      viewportWidth: (file) => (file.includes('vant') ? 375 : 750),\n    }),\n  ],\n};\n```\n\n> Tips: 在配置 postcss-loader 时，应避免 ignore node_modules 目录，否则将导致 Vant 样式无法被编译。\n\n### Rem 布局适配\n\n如果需要使用 `rem` 单位进行适配，推荐使用以下两个工具：\n\n- [postcss-pxtorem](https://github.com/cuth/postcss-pxtorem) 是一款 PostCSS 插件，用于将 px 单位转化为 rem 单位\n- [lib-flexible](https://github.com/amfe/lib-flexible) 用于设置 rem 基准值\n\n#### PostCSS 示例配置\n\n下面提供了一份基本的 PostCSS 示例配置，可以在此配置的基础上根据项目需求进行修改。\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: {\n    'postcss-pxtorem': {\n      rootValue: 37.5,\n      propList: ['*'],\n    },\n  },\n};\n```\n\n> Tips: 在配置 postcss-pxtorem 时，同样应避免 ignore node_modules 目录，否则会导致 Vant 样式无法被编译。\n\n#### 其他设计稿尺寸\n\n如果设计稿的尺寸不是 375，而是 750 或其他大小，可以将 `rootValue` 配置调整为:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: {\n    // postcss-pxtorem 插件的版本需要 >= 5.0.0\n    'postcss-pxtorem': {\n      rootValue({ file }) {\n        return file.indexOf('vant') !== -1 ? 37.5 : 75;\n      },\n      propList: ['*'],\n    },\n  },\n};\n```\n\n### 桌面端适配\n\nVant 是一个面向移动端的组件库，因此默认只适配了移动端设备，这意味着组件只监听了移动端的 `touch` 事件，没有监听桌面端的 `mouse` 事件。\n\n如果你需要在桌面端使用 Vant，可以引入我们提供的 [@vant/touch-emulator](https://github.com/vant-ui/vant/tree/main/packages/vant-touch-emulator)，这个库会在桌面端自动将 `mouse` 事件转换成对应的 `touch` 事件，使得组件能够在桌面端使用。\n\n```bash\n# 安装模块\nnpm i @vant/touch-emulator -S\n```\n\n```js\n// 引入模块后自动生效\nimport '@vant/touch-emulator';\n```\n\n### 底部安全区适配\n\niPhone X 等机型底部存在底部指示条，指示条的操作区域与页面底部存在重合，容易导致用户误操作，因此我们需要针对这些机型进行安全区适配。Vant 中部分组件提供了 `safe-area-inset-top` 或 `safe-area-inset-bottom` 属性，设置该属性后，即可在对应的机型上开启适配，如下示例：\n\n```html\n<!-- 在 head 标签中添加 meta 标签，并设置 viewport-fit=cover 值 -->\n<meta\n  name=\"viewport\"\n  content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover\"\n/>\n\n<!-- 开启顶部安全区适配 -->\n<van-nav-bar safe-area-inset-top />\n\n<!-- 开启底部安全区适配 -->\n<van-number-keyboard safe-area-inset-bottom />\n```\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/safearea.png\">\n","packages/vant/docs/markdown/changelog.en-US.md":"# Changelog\n\n### Important Notice\n\n**To avoid redundant maintenance and reduce costs.**\n\n**From v4.9.0, Vant's changelog will be published on [GitHub's Releases Page](https://github.com/youzan/vant/releases). This page will no longer be updated.**\n\nThe current document contains the changelog for Vant v4.0.0 ~ v4.9.0. For other versions, please refer to:\n\n- [Vant 2 Changelog](/vant/v2/#/en-US/changelog)\n- [Vant 3 Changelog](/vant/v3/#/en-US/changelog)\n\n### Intro\n\nVant follows [Semantic Versioning 2.0.0](https://semver.org/lang/zh-CN/).\n\n**Release Schedule**\n\n- Patch version：Typically released every 1 to 2 weeks, including new features and bug fixes.\n- Minor version：Typically released every 1 to 2 months, including new components or significant feature updates, with backward compatibility.\n- Major version：No fixed release time, includes breaking changes and major feature updates.\n\n## Details\n\n### v4.9.0\n\n`2024-05-02`\n\n#### New Features 🎉\n\n- feat(Calendar): add switch-mode prop by [@inottn](https://github.com/inottn) in [#12836](https://github.com/youzan/vant/pull/12836)\n- feat(PickerGroup): add new prop showToolbar by [@ReinoFu](https://github.com/ReinoFu) in [#12839](https://github.com/youzan/vant/pull/12839)\n- feat(CLI): support for configuring Rsbuild by [@chenjiahan](https://github.com/chenjiahan) in [#12809](https://github.com/youzan/vant/pull/12809)\n\n#### Bug Fixes 🐞\n\n- fix(cli): Vue SFC style binding failure by [@zoy-l](https://github.com/zoy-l) in [#12799](https://github.com/youzan/vant/pull/12799)\n- fix(ImagePreview): swipeItem may be undefined by [@inottn](https://github.com/inottn) in [#12818](https://github.com/youzan/vant/pull/12818)\n- fix(Highlight): render correctly when keywords is empty by [@Jungzl](https://github.com/Jungzl) in [#12829](https://github.com/youzan/vant/pull/12829)\n- fix(IndexBar): render active anchor correctly when passing sticky & stickyOffsetTop by [@Jungzl](https://github.com/Jungzl) in [#12837](https://github.com/youzan/vant/pull/12837)\n\n#### Document 📖\n\n- docs: remove all Gitee links by [@chenjiahan](https://github.com/chenjiahan) in [#12845](https://github.com/youzan/vant/pull/12845)\n- docs: remove gzip size badge by [@chenjiahan](https://github.com/chenjiahan) in [#12847](https://github.com/youzan/vant/pull/12847)\n- docs: fix Rsbuild HTML build failed by [@chenjiahan](https://github.com/chenjiahan) in [#12848](https://github.com/youzan/vant/pull/12848)\n\n#### Other Changes\n\n- chore(deps): update dependency terser to ^5.30.3 by [@renovate](https://github.com/renovate) in [#12795](https://github.com/youzan/vant/pull/12795)\n- chore(deps): update dependency eslint-plugin-vue to ^9.25.0 by [@renovate](https://github.com/renovate) in [#12794](https://github.com/youzan/vant/pull/12794)\n- chore(deps): update all patch dependencies by [@renovate](https://github.com/renovate) in [#12773](https://github.com/youzan/vant/pull/12773)\n- chore(workflow): upgrade to pnpm v9 by [@chenjiahan](https://github.com/chenjiahan) in [#12808](https://github.com/youzan/vant/pull/12808)\n- chore: bump github-pages-deploy-action[@v4](https://github.com/v4).6.0 by @chenjiahan in [#12810](https://github.com/youzan/vant/pull/12810)\n- chore(deps): update dependency [@vitejs](https://github.com/vitejs)/plugin-vue to v5 by @renovate in [#12840](https://github.com/youzan/vant/pull/12840)\n- chore(deps): update dependency commander to v12 by [@renovate](https://github.com/renovate) in [#12841](https://github.com/youzan/vant/pull/12841)\n- chore(deps): update actions/setup-node action to v4 by [@renovate](https://github.com/renovate) in [#12814](https://github.com/youzan/vant/pull/12814)\n- chore(deps): update github/issue-labeler action to v3.4 by [@renovate](https://github.com/renovate) in [#12813](https://github.com/youzan/vant/pull/12813)\n- chore(deps): update codecov/codecov-action action to v4 by [@renovate](https://github.com/renovate) in [#12815](https://github.com/youzan/vant/pull/12815)\n- chore(deps): update all patch dependencies by [@renovate](https://github.com/renovate) in [#12812](https://github.com/youzan/vant/pull/12812)\n\n#### New Contributors\n\n- [@ReinoFu](https://github.com/ReinoFu) made their first contribution in [#12839](https://github.com/youzan/vant/pull/12839)\n\n### v4.8.11\n\n`2024-04-14`\n\n#### New Features 🎉\n\n- feat(DropdownMenu): add disabled for option by [@inottn](https://github.com/inottn) in [#12785](https://github.com/youzan/vant/pull/12785)\n\n#### Bug Fixes 🐞\n\n- fix: warning `is not a valid value for v-model` in JetBrains IDE by [@anyesu](https://github.com/anyesu) in [#12787](https://github.com/youzan/vant/pull/12787)\n- fix(Cli): remove site tsconfig by [@chenjiahan](https://github.com/chenjiahan) in [#12792](https://github.com/youzan/vant/pull/12792)\n\n#### Document 📖\n\n- docs(list): update Error loading module code by [@wangjue666](https://github.com/wangjue666) in [#12778](https://github.com/youzan/vant/pull/12778)\n\n#### Other Changes\n\n- chore(deps): update dependency eslint-plugin-vue to ^9.24.1 by [@renovate](https://github.com/renovate) in [#12774](https://github.com/youzan/vant/pull/12774)\n- chore(deps): bump Rsbuild v0.6 by [@chenjiahan](https://github.com/chenjiahan) in [#12790](https://github.com/youzan/vant/pull/12790)\n\n#### New Contributors\n\n- [@wangjue666](https://github.com/wangjue666) made their first contribution in [#12778](https://github.com/youzan/vant/pull/12778)\n- [@anyesu](https://github.com/anyesu) made their first contribution in [#12787](https://github.com/youzan/vant/pull/12787)\n\n### v4.8.10\n\n`2024-04-06`\n\n#### New Features 🎉\n\n- feat(TimePicker): support confirm and getSelectedTime methods by [@bluesky335](https://github.com/bluesky335) in [#12761](https://github.com/youzan/vant/pull/12761)\n- feat(DatePicker): support confirm and getSelectedDate method by [@bluesky335](https://github.com/bluesky335) in [#12762](https://github.com/youzan/vant/pull/12762)\n- feat(Coupon): support for checkbox usage by [@CatsAndMice](https://github.com/CatsAndMice) in [#12744](https://github.com/youzan/vant/pull/12744)\n\n#### Other Changes\n\n- chore(deps): update dependency vite to v5.0.13 [security] by [@renovate](https://github.com/renovate) in [#12767](https://github.com/youzan/vant/pull/12767)\n- chore(deps): update all patch dependencies by [@renovate](https://github.com/renovate) in [#12756](https://github.com/youzan/vant/pull/12756)\n- chore(deps): update dependency [@types](https://github.com/types)/lodash to ^4.17.0 by @renovate in [#12757](https://github.com/youzan/vant/pull/12757)\n- chore: correct return type of getSelectedTime by [@chenjiahan](https://github.com/chenjiahan) in [#12768](https://github.com/youzan/vant/pull/12768)\n- refactor(Coupon): simplify the checkbox usage by [@chenjiahan](https://github.com/chenjiahan) in [#12771](https://github.com/youzan/vant/pull/12771)\n\n#### New Contributors\n\n- [@bluesky335](https://github.com/bluesky335) made their first contribution in [#12761](https://github.com/youzan/vant/pull/12761)\n\n### v4.8.9\n\n`2024-04-06`\n\nInvalid version, please do not use it.\n\n### v4.8.8\n\n`2024-03-31`\n\n#### New Features 🎉\n\n- feat(image-preview): export onLoad and style for image slot by [@chouchouji](https://github.com/chouchouji) in [#12740](https://github.com/youzan/vant/pull/12740)\n- feat(AddressList): add event param for click-item by [@chenjiahan](https://github.com/chenjiahan) in [#12748](https://github.com/youzan/vant/pull/12748)\n\n#### Bug Fixes 🐞\n\n- fix(floating-bubble): update offset when the value changed by [@chouchouji](https://github.com/chouchouji) in [#12730](https://github.com/youzan/vant/pull/12730)\n- fix(vant-cli): support defineOptions named by [@wChenonly](https://github.com/wChenonly) in [#12734](https://github.com/youzan/vant/pull/12734)\n- fix(PickerGroup): rendering correctly when using v-for by [@inottn](https://github.com/inottn) in [#12732](https://github.com/youzan/vant/pull/12732)\n- fix(TextEllipsis): should recalculate the ellipsis state when the component is activated by [@inottn](https://github.com/inottn) in [#12741](https://github.com/youzan/vant/pull/12741)\n\n#### Document 📖\n\n- docs(button): Keep Chinese and English documents consistent by [@chouchouji](https://github.com/chouchouji) in [#12708](https://github.com/youzan/vant/pull/12708)\n- docs(cell): correct the type of label by [@chouchouji](https://github.com/chouchouji) in [#12721](https://github.com/youzan/vant/pull/12721)\n- docs(ImagePreview): add image slot scale guide by [@chenjiahan](https://github.com/chenjiahan) in [#12751](https://github.com/youzan/vant/pull/12751)\n\n#### Other Changes\n\n- chore(deps): update dependency vue-router to v4.3.0 by [@renovate](https://github.com/renovate) in [#12702](https://github.com/youzan/vant/pull/12702)\n- chore(deps): update dependency esbuild to ^0.20.0 by [@renovate](https://github.com/renovate) in [#12696](https://github.com/youzan/vant/pull/12696)\n- chore(workflow): let renovate bump package.json by [@chenjiahan](https://github.com/chenjiahan) in [#12714](https://github.com/youzan/vant/pull/12714)\n- chore(deps): update dependency eslint to ^8.57.0 by [@renovate](https://github.com/renovate) in [#12723](https://github.com/youzan/vant/pull/12723)\n- chore(docs): update the vue3-vant-mobile reference by [@CharleeWa](https://github.com/CharleeWa) in [#12735](https://github.com/youzan/vant/pull/12735)\n- chore(deps): update dependency commander to ^11.1.0 by [@renovate](https://github.com/renovate) in [#12718](https://github.com/youzan/vant/pull/12718)\n- chore(deps): update dependency enquirer to v2.4.1 by [@renovate](https://github.com/renovate) in [#12695](https://github.com/youzan/vant/pull/12695)\n- chore(deps): update dependency [@vue](https://github.com/vue)/test-utils to ^2.4.5 by @renovate in [#12716](https://github.com/youzan/vant/pull/12716)\n- chore(deps): bump Rsbuild v0.5 by [@chenjiahan](https://github.com/chenjiahan) in [#12747](https://github.com/youzan/vant/pull/12747)\n- chore(deps): update dependency eslint-config-prettier to ^9.1.0 by [@renovate](https://github.com/renovate) in [#12724](https://github.com/youzan/vant/pull/12724)\n- chore(deps): update dependency fs-extra to ^11.2.0 by [@renovate](https://github.com/renovate) in [#12745](https://github.com/youzan/vant/pull/12745)\n- chore(deps): update dependency highlight.js to ^11.9.0 by [@renovate](https://github.com/renovate) in [#12746](https://github.com/youzan/vant/pull/12746)\n- chore(deps): update dependency fast-glob to ^3.3.2 by [@renovate](https://github.com/renovate) in [#12731](https://github.com/youzan/vant/pull/12731)\n- chore(deps): update dependency less to ^4.2.0 by [@renovate](https://github.com/renovate) in [#12752](https://github.com/youzan/vant/pull/12752)\n- chore(workflow): let renovate group patch updates by [@chenjiahan](https://github.com/chenjiahan) in [#12754](https://github.com/youzan/vant/pull/12754)\n\n#### New Contributors\n\n- [@CharleeWa](https://github.com/CharleeWa) made their first contribution in [#12735](https://github.com/youzan/vant/pull/12735)\n\n### v4.8.7\n\n`2024-03-18`\n\n#### Other Changes\n\n- Revert \"chore(deps): update dependency typescript to v5.4.2\" by [@renovate](https://github.com/renovate) in [#12700](https://github.com/youzan/vant/pull/12700)\n- chore: Update homepage by [@yoyo837](https://github.com/yoyo837) in [#12704](https://github.com/youzan/vant/pull/12704)\n\n### v4.8.6\n\n`2024-03-17`\n\n#### New Features 🎉\n\n- feat(ImagePreview): add vertical prop by [@suncohey](https://github.com/suncohey) in [#12660](https://github.com/youzan/vant/pull/12660)\n- feat(signature): export clear and submit method by [@chouchouji](https://github.com/chouchouji) in [#12654](https://github.com/youzan/vant/pull/12654)\n- feat: support unplugin-auto-import plugin by [@DragonnZhang](https://github.com/DragonnZhang) in [#12679](https://github.com/youzan/vant/pull/12679)\n- feat(ActionSheet): add icon support to the actions data by [@wjw-gavin](https://github.com/wjw-gavin) in [#12671](https://github.com/youzan/vant/pull/12671)\n\n#### Bug Fixes 🐞\n\n- fix(ImagePreview): allow user to swipe to next image when the current image is moved to the edge by [@inottn](https://github.com/inottn) in [#12666](https://github.com/youzan/vant/pull/12666)\n- fix(ActionSheet): icon class name by [@chenjiahan](https://github.com/chenjiahan) in [#12701](https://github.com/youzan/vant/pull/12701)\n\n#### Document 📖\n\n- docs(ImagePreview): add vertical prop by [@chenjiahan](https://github.com/chenjiahan) in [#12663](https://github.com/youzan/vant/pull/12663)\n- docs: change tab's 'Before Change' into a real async function by [@gxy5202](https://github.com/gxy5202) in [#12693](https://github.com/youzan/vant/pull/12693)\n\n#### Other Changes\n\n- chore(deps): bump Rsbuild 0.4.12 by [@chenjiahan](https://github.com/chenjiahan) in [#12665](https://github.com/youzan/vant/pull/12665)\n- chore(deps): update dependency [@vue](https://github.com/vue)/test-utils to v2.4.5 by @renovate in [#12681](https://github.com/youzan/vant/pull/12681)\n- chore(deps): update dependency autoprefixer to v10.4.18 by [@renovate](https://github.com/renovate) in [#12682](https://github.com/youzan/vant/pull/12682)\n- chore(workflow): disable dependency dashboard by [@chenjiahan](https://github.com/chenjiahan) in [#12686](https://github.com/youzan/vant/pull/12686)\n- chore(deps): update dependency prettier to v3.2.5 by [@renovate](https://github.com/renovate) in [#12685](https://github.com/youzan/vant/pull/12685)\n- chore(deps): update rsbuild to v0.4.15 by [@renovate](https://github.com/renovate) in [#12688](https://github.com/youzan/vant/pull/12688)\n- chore(deps): update dependency eslint to v8.57.0 by [@renovate](https://github.com/renovate) in [#12697](https://github.com/youzan/vant/pull/12697)\n- chore(deps): update dependency typescript to v5.4.2 by [@renovate](https://github.com/renovate) in [#12700](https://github.com/youzan/vant/pull/12700)\n\n#### New Contributors\n\n- [@chouchouji](https://github.com/chouchouji) made their first contribution in [#12654](https://github.com/youzan/vant/pull/12654)\n- [@renovate](https://github.com/renovate) made their first contribution in [#12681](https://github.com/youzan/vant/pull/12681)\n- [@gxy5202](https://github.com/gxy5202) made their first contribution in [#12693](https://github.com/youzan/vant/pull/12693)\n- [@DragonnZhang](https://github.com/DragonnZhang) made their first contribution in [#12679](https://github.com/youzan/vant/pull/12679)\n\n### v4.8.5\n\n`2024-02-25`\n\n#### New Features 🎉\n\n- feat(Image): add `crossorigin` & `referrerpolicy` props by [@Jungzl](https://github.com/Jungzl) in [#12641](https://github.com/youzan/vant/pull/12641)\n\n#### Bug Fixes 🐞\n\n- fix(NumberKeyboard): render delete slot correctly when theme is custom by [@TPORL](https://github.com/TPORL) in [#12624](https://github.com/youzan/vant/pull/12624)\n\n#### Document 📖\n\n- docs: update docs for params related to Picker events by [@wjw-gavin](https://github.com/wjw-gavin) in [#12619](https://github.com/youzan/vant/pull/12619)\n- docs(DatePicker): fix en-docs error by [@wjw-gavin](https://github.com/wjw-gavin) in [#12620](https://github.com/youzan/vant/pull/12620)\n- docs(Uploader): fix miss double quote by [@nemo-shen](https://github.com/nemo-shen) in [#12627](https://github.com/youzan/vant/pull/12627)\n- docs: add full registration guide by [@chenjiahan](https://github.com/chenjiahan) in [#12628](https://github.com/youzan/vant/pull/12628)\n- docs: add Rsbuild import on demand guide by [@chenjiahan](https://github.com/chenjiahan) in [#12629](https://github.com/youzan/vant/pull/12629)\n\n#### Other Changes\n\n- Revert \"fix(DropdownMenu): fix recursive update when passing object literal to title-class (#12614)\" by [@inottn](https://github.com/inottn) in [#12617](https://github.com/youzan/vant/pull/12617)\n- chore(deps): bump Rsbuild v0.4 by [@chenjiahan](https://github.com/chenjiahan) in [#12625](https://github.com/youzan/vant/pull/12625)\n- chore(workflow): setup renovate config by [@chenjiahan](https://github.com/chenjiahan) in [#12626](https://github.com/youzan/vant/pull/12626)\n- test: skip image SSR test case by [@chenjiahan](https://github.com/chenjiahan) in [#12644](https://github.com/youzan/vant/pull/12644)\n\n#### New Contributors\n\n- [@TPORL](https://github.com/TPORL) made their first contribution in [#12624](https://github.com/youzan/vant/pull/12624)\n\n### v4.8.4\n\n`2024-02-03`\n\n#### New Features 🎉\n\n- feat(Picker): allow to hidden to toolbar buttons by [@chenjiahan](https://github.com/chenjiahan) in [#12599](https://github.com/youzan/vant/pull/12599)\n\n#### Bug Fixes 🐞\n\n- fix(Sticky): initial sticky position by [@nemo-shen](https://github.com/nemo-shen) in [#12601](https://github.com/youzan/vant/pull/12601)\n- fix(DropdownMenu): fix recursive update when passing object literal to title-class by [@inottn](https://github.com/inottn) in [#12614](https://github.com/youzan/vant/pull/12614)\n\n#### Document 📖\n\n- docs: improve quickstart tips by [@inottn](https://github.com/inottn) in [#12606](https://github.com/youzan/vant/pull/12606)\n\n#### Other Changes\n\n- chore(deps): bump Rsbuild 0.3.9 and enable clean dist by [@chenjiahan](https://github.com/chenjiahan) in [#12600](https://github.com/youzan/vant/pull/12600)\n- chore: avoid workflow running on forked repo by [@tolking](https://github.com/tolking) in [#12607](https://github.com/youzan/vant/pull/12607)\n- chore(workflow): using new M1 macOS runner by [@chenjiahan](https://github.com/chenjiahan) in [#12615](https://github.com/youzan/vant/pull/12615)\n\n### v4.8.3\n\n`2024-01-20`\n\n#### New Features 🎉\n\n- feat(Notify): add teleport prop by [@inottn](https://github.com/inottn) in [#12556](https://github.com/youzan/vant/pull/12556)\n- feat(TextEllipsis): add `action` slot by [@nemo-shen](https://github.com/nemo-shen) in [#12560](https://github.com/youzan/vant/pull/12560)\n- feat(ImagePreview): add close-on-click-image prop by [@inottn](https://github.com/inottn) in [#12566](https://github.com/youzan/vant/pull/12566)\n- feat(icons): add icon `arrow-double-left` and `arrow-double-right` by [@nemo-shen](https://github.com/nemo-shen) in [#12579](https://github.com/youzan/vant/pull/12579)\n- feat(Toast): add z-index prop by [@inottn](https://github.com/inottn) in [#12587](https://github.com/youzan/vant/pull/12587)\n\n#### Bug Fixes 🐞\n\n- fix(Tab): tab(with sticky prop) loss 'fixed' classname after switch tab by [@nemo-shen](https://github.com/nemo-shen) in [#12547](https://github.com/youzan/vant/pull/12547)\n- fix(Image): ImagePosition type is not exported before by [@Jungzl](https://github.com/Jungzl) in [#12549](https://github.com/youzan/vant/pull/12549)\n- fix(Tabs): van-border-radius-sm to van-radius-sm by [@edram](https://github.com/edram) in [#12576](https://github.com/youzan/vant/pull/12576)\n\n#### Document 📖\n\n- docs(Lazyload): fix preLoad type error and spelling mistakes by [@RSS1102](https://github.com/RSS1102) in [#12554](https://github.com/youzan/vant/pull/12554)\n- docs(home): update heading level by [@inottn](https://github.com/inottn) in [#12577](https://github.com/youzan/vant/pull/12577)\n\n#### Other Changes\n\n- test: bump vitest v1.1.3 by [@inottn](https://github.com/inottn) in [#12546](https://github.com/youzan/vant/pull/12546)\n- chore(deps): bump Rsbuild to v0.3.2 by [@chenjiahan](https://github.com/chenjiahan) in [#12565](https://github.com/youzan/vant/pull/12565)\n- chore(deps): bump vue to v3.4.13 by [@inottn](https://github.com/inottn) in [#12567](https://github.com/youzan/vant/pull/12567)\n- chore(deps): bump vite from 5.0.11 to 5.0.12 by [@dependabot](https://github.com/dependabot) in [#12588](https://github.com/youzan/vant/pull/12588)\n\n#### New Contributors\n\n- [@edram](https://github.com/edram) made their first contribution in [#12576](https://github.com/youzan/vant/pull/12576)\n\n### v4.8.2\n\n`2024-01-03`\n\n#### New Features 🎉\n\n- feat: support link css from shadow dom by [@yoyo837](https://github.com/yoyo837) in [#12526](https://github.com/youzan/vant/pull/12526)\n- feat(DropdownMenu): add auto-locate prop by [@inottn](https://github.com/inottn) in [#12251](https://github.com/youzan/vant/pull/12251)\n\n#### Performance 🚀\n\n- perf(CLI): improve markdown compile performance by [@chenjiahan](https://github.com/chenjiahan) in [#12541](https://github.com/youzan/vant/pull/12541)\n\n#### Bug Fixes 🐞\n\n- fix(ci): eslint on windows by [@Jungzl](https://github.com/Jungzl) in [#12516](https://github.com/youzan/vant/pull/12516)\n- fix(ImagePreview): double-scale and close-on-click-overlay may not work in certain scenarios by [@inottn](https://github.com/inottn) in [#12521](https://github.com/youzan/vant/pull/12521)\n\n#### Other Changes\n\n- chore(deps): bump Rsbuild v0.2.8 by [@chenjiahan](https://github.com/chenjiahan) in [#12519](https://github.com/youzan/vant/pull/12519)\n- chore(deps): bump Vue 3.4.0-beta.4 by [@chenjiahan](https://github.com/chenjiahan) in [#12520](https://github.com/youzan/vant/pull/12520)\n- test: bump vitest v1.1.0 by [@chenjiahan](https://github.com/chenjiahan) in [#12522](https://github.com/youzan/vant/pull/12522)\n- chore(deps): bump vite v5 by [@chenjiahan](https://github.com/chenjiahan) in [#12523](https://github.com/youzan/vant/pull/12523)\n- chore(deps): bump esbuild v0.19 by [@chenjiahan](https://github.com/chenjiahan) in [#12524](https://github.com/youzan/vant/pull/12524)\n- chore: lock Rspack v0.4.3 to fix CSS issue by [@chenjiahan](https://github.com/chenjiahan) in [#12525](https://github.com/youzan/vant/pull/12525)\n- chore(workflow): adjust issue templates by [@chenjiahan](https://github.com/chenjiahan) in [#12528](https://github.com/youzan/vant/pull/12528)\n- chore(workflow): update codesandbox URL by [@chenjiahan](https://github.com/chenjiahan) in [#12529](https://github.com/youzan/vant/pull/12529)\n- chore: update vitest config by [@inottn](https://github.com/inottn) in [#12530](https://github.com/youzan/vant/pull/12530)\n- chore(deps): bump Rsbuild and Vue by [@chenjiahan](https://github.com/chenjiahan) in [#12532](https://github.com/youzan/vant/pull/12532)\n- chore(ImagePreview): reuse isTap ref by [@inottn](https://github.com/inottn) in [#12536](https://github.com/youzan/vant/pull/12536)\n- test(Toast): reduce test run time by [@inottn](https://github.com/inottn) in [#12538](https://github.com/youzan/vant/pull/12538)\n- test(FloatingBubble): reduce test run time by [@inottn](https://github.com/inottn) in [#12539](https://github.com/youzan/vant/pull/12539)\n\n### v4.8.1\n\n`2023-12-17`\n\n#### New Features 🎉\n\n- perf(TextEllipsis): reuse windowWidth to avoid repeat calculations by [@inottn](https://github.com/inottn) in [#12471](https://github.com/youzan/vant/pull/12471)\n- feat(TextEllipsis): add the toggle instance method by [@wjw-gavin](https://github.com/wjw-gavin) in [#12472](https://github.com/youzan/vant/pull/12472)\n- feat(cli): bump Rsbuild v0.2.2 by [@chenjiahan](https://github.com/chenjiahan) in [#12502](https://github.com/youzan/vant/pull/12502)\n\n#### Performance 🚀\n\n- perf(cli): disable source map to make compilation faster by [@chenjiahan](https://github.com/chenjiahan) in [#12484](https://github.com/youzan/vant/pull/12484)\n\n#### Bug Fixes 🐞\n\n- fix(cli): remove unused script in template by [@chenjiahan](https://github.com/chenjiahan) in [#12482](https://github.com/youzan/vant/pull/12482)\n- fix(TextEllipsis): fix missing param for toggle by [@wjw-gavin](https://github.com/wjw-gavin) in [#12483](https://github.com/youzan/vant/pull/12483)\n\n#### Document 📖\n\n- docs(collapse): fix missing ref tags by [@RSS1102](https://github.com/RSS1102) in [#12460](https://github.com/youzan/vant/pull/12460)\n- docs(collapse): fix translation Error by [@RSS1102](https://github.com/RSS1102) in [#12464](https://github.com/youzan/vant/pull/12464)\n- docs(dialog): fix translation Error and keep the sample code the same by [@RSS1102](https://github.com/RSS1102) in [#12465](https://github.com/youzan/vant/pull/12465)\n- docs(TreeSelect): correct variable names by [@inottn](https://github.com/inottn) in [#12469](https://github.com/youzan/vant/pull/12469)\n- docs: add Rsbuild scaffold guide by [@chenjiahan](https://github.com/chenjiahan) in [#12475](https://github.com/youzan/vant/pull/12475)\n- docs(image-preview): usage of Supplementing className by [@RSS1102](https://github.com/RSS1102) in [#12491](https://github.com/youzan/vant/pull/12491)\n- docs(Quickstart): unplugin-vue-components usage updated (#12499) by [@wChenonly](https://github.com/wChenonly) in [#12500](https://github.com/youzan/vant/pull/12500)\n\n#### Other Changes\n\n- chore(workflow): add perf label for PR by [@chenjiahan](https://github.com/chenjiahan) in [#12473](https://github.com/youzan/vant/pull/12473)\n- refactor(CLI): integrate Rsbuild to build website by [@chenjiahan](https://github.com/chenjiahan) in [#12481](https://github.com/youzan/vant/pull/12481)\n- chore: bump Rspack 0.4.2 to fix Chinese path by [@chenjiahan](https://github.com/chenjiahan) in [#12496](https://github.com/youzan/vant/pull/12496)\n- chore(deps): bump vite from 4.4.9 to 4.4.12 by [@dependabot](https://github.com/dependabot) in [#12493](https://github.com/youzan/vant/pull/12493)\n\n#### New Contributors\n\n- [@RSS1102](https://github.com/RSS1102) made their first contribution in [#12460](https://github.com/youzan/vant/pull/12460)\n\n### v4.8.0\n\n`2023-11-19`\n\n#### New Component 🎉\n\n- Added Highlight component, contributed by [@wjw-gavin](https://github.com/wjw-gavin) and [@inottn](https://github.com/inottn) ❤️ [#12434](https://github.com/youzan/vant/pull/12434)\n\n#### New Features\n\n- feat(ImagePreview): expose resetScale method by [@inottn](https://github.com/inottn) in [#12426](https://github.com/youzan/vant/pull/12426)\n- feat(Checker): add checked and disabled params to the default slot by [@inottn](https://github.com/inottn) in [#12436](https://github.com/youzan/vant/pull/12436)\n- feat(Row): gutter support vertical space by [@cc-hearts](https://github.com/cc-hearts) in [#12439](https://github.com/youzan/vant/pull/12439)\n\n#### Bug Fixes 🐞\n\n- fix(Calendar): subtitle supports reactive by [@cc-hearts](https://github.com/cc-hearts) in [#12425](https://github.com/youzan/vant/pull/12425)\n\n#### Document 📖\n\n- docs(field): update props size by [@Simon-He95](https://github.com/Simon-He95) in [#12429](https://github.com/youzan/vant/pull/12429)\n- docs(cell): update props size by [@Simon-He95](https://github.com/Simon-He95) in [#12427](https://github.com/youzan/vant/pull/12427)\n- docs(Highlight): add version tip by [@chenjiahan](https://github.com/chenjiahan) in [#12438](https://github.com/youzan/vant/pull/12438)\n- docs(Overlay): add set z-index demo by [@chenjiahan](https://github.com/chenjiahan) in [#12454](https://github.com/youzan/vant/pull/12454)\n- docs: add Rsbuild to quickstart by [@chenjiahan](https://github.com/chenjiahan) in [#12455](https://github.com/youzan/vant/pull/12455)\n\n#### Other Changes\n\n- chore(deps): fix security alerts of babel and postcss by [@chenjiahan](https://github.com/chenjiahan) in [#12414](https://github.com/youzan/vant/pull/12414)\n\n#### New Contributors\n\n- [@cc-hearts](https://github.com/cc-hearts) made their first contribution in [#12425](https://github.com/youzan/vant/pull/12425)\n\n### v4.7.3\n\n`2023-10-29`\n\n#### New Features 🎉\n\n- feat(locale): add Arabic Locale by [@mo9a7i](https://github.com/mo9a7i) in [#12381](https://github.com/youzan/vant/pull/12381)\n- feat(Form): add required prop and support auto display by [@chenjiahan](https://github.com/chenjiahan) in [#12380](https://github.com/youzan/vant/pull/12380)\n- feat(auto-import-resolver): add module option by [@chenjiahan](https://github.com/chenjiahan) in [#12383](https://github.com/youzan/vant/pull/12383)\n- style: replace word-break with overflow-wrap by [@wjw-gavin](https://github.com/wjw-gavin) in [#12396](https://github.com/youzan/vant/pull/12396)\n- feat(Tab): add show-header prop by [@yoyo837](https://github.com/yoyo837) in [#12394](https://github.com/youzan/vant/pull/12394)\n- style(Search): use consistent padding when display error msg by [@chenjiahan](https://github.com/chenjiahan) in [#12409](https://github.com/youzan/vant/pull/12409)\n- feat(Signature): expose resize method by [@inottn](https://github.com/inottn) in [#12405](https://github.com/youzan/vant/pull/12405)\n\n#### Bug Fixes 🐞\n\n- fix(ConfigProvider): export missing theme vars by [@inottn](https://github.com/inottn) in [#12371](https://github.com/youzan/vant/pull/12371)\n- fix(AddressEdit): area field validate error when showArea is false by [@zhousg](https://github.com/zhousg) in [#12393](https://github.com/youzan/vant/pull/12393)\n- fix([@vant](https://github.com/vant)/area-data): add exports types by @Alkaidcc in [#12397](https://github.com/youzan/vant/pull/12397)\n- fix(Search): fix search style when has error message by [@johnsonwong666](https://github.com/johnsonwong666) in [#12385](https://github.com/youzan/vant/pull/12385)\n- fix(PickerGroup): only filter Comment vnode by [@zhousg](https://github.com/zhousg) in [#12402](https://github.com/youzan/vant/pull/12402)\n\n#### Document 📖\n\n- docs(auto-import-resolver): add doc for importStyle option by [@chenjiahan](https://github.com/chenjiahan) in [#12382](https://github.com/youzan/vant/pull/12382)\n- docs(Tab): keep docs and example the same by [@wjw-gavin](https://github.com/wjw-gavin) in [#12395](https://github.com/youzan/vant/pull/12395)\n- chore: add vscode-common-intellisense to the Community Ecosystem by [@Simon-He95](https://github.com/Simon-He95) in [#12406](https://github.com/youzan/vant/pull/12406)\n- docs(Signature): add resize method by [@chenjiahan](https://github.com/chenjiahan) in [#12411](https://github.com/youzan/vant/pull/12411)\n- docs(progress): remove outdated resize method by [@chenjiahan](https://github.com/chenjiahan) in [#12412](https://github.com/youzan/vant/pull/12412)\n\n#### Other Changes\n\n- chore(Field): required label css will active when rules contain required by [@morance](https://github.com/morance) in [#12376](https://github.com/youzan/vant/pull/12376)\n- test(ImagePreview): fix incorrect onClose test case by [@chenjiahan](https://github.com/chenjiahan) in [#12386](https://github.com/youzan/vant/pull/12386)\n- chore: forked repo, skip CI running by [@yoyo837](https://github.com/yoyo837) in [#12410](https://github.com/youzan/vant/pull/12410)\n\n#### New Contributors\n\n- [@morance](https://github.com/morance) made their first contribution in [#12376](https://github.com/youzan/vant/pull/12376)\n- [@mo9a7i](https://github.com/mo9a7i) made their first contribution in [#12381](https://github.com/youzan/vant/pull/12381)\n- [@Alkaidcc](https://github.com/Alkaidcc) made their first contribution in [#12397](https://github.com/youzan/vant/pull/12397)\n- [@johnsonwong666](https://github.com/johnsonwong666) made their first contribution in [#12385](https://github.com/youzan/vant/pull/12385)\n\n### v4.7.2\n\n`2023-10-15`\n\n#### New Features 🎉\n\n- feat(Icon): add font-family css var by [@JeremyFan](https://github.com/JeremyFan) in [#12354](https://github.com/youzan/vant/pull/12354)\n- feat(ImagePreview): add doubleScale option by [@coderXMin](https://github.com/coderXMin) in [#12360](https://github.com/youzan/vant/pull/12360)\n\n#### Bug Fixes 🐞\n\n- fix(Icons): compatible with the browser range of Vant 2 by [@chenjiahan](https://github.com/chenjiahan) in [#12356](https://github.com/youzan/vant/pull/12356)\n- fix(Uploader): multiple reupload only choose one & cancel chose problem by [@zhousg](https://github.com/zhousg) in [#12359](https://github.com/youzan/vant/pull/12359)\n\n#### Other Changes\n\n- refactor(Signature): avoid setting the canvas width and height in the next tick by [@inottn](https://github.com/inottn) in [#12347](https://github.com/youzan/vant/pull/12347)\n- refactor(Signature): use scale method to enhance clarity by [@inottn](https://github.com/inottn) in [#12363](https://github.com/youzan/vant/pull/12363)\n- chore(deps): bump rslog v1.1.0 by [@chenjiahan](https://github.com/chenjiahan) in [#12364](https://github.com/youzan/vant/pull/12364)\n- chore(cli): merge greet logs by [@chenjiahan](https://github.com/chenjiahan) in [#12365](https://github.com/youzan/vant/pull/12365)\n- chore(ImagePreview): rename doubleScale and add test case by [@chenjiahan](https://github.com/chenjiahan) in [#12366](https://github.com/youzan/vant/pull/12366)\n\n#### New Contributors\n\n- [@coderXMin](https://github.com/coderXMin) made their first contribution in [#12360](https://github.com/youzan/vant/pull/12360)\n\n### v4.7.1\n\n`2023-10-06`\n\n#### New Features 🎉\n\n- feat(FloatingPanel): optimize bounce animate by [@zhousg](https://github.com/zhousg) in [#12317](https://github.com/youzan/vant/pull/12317)\n- feat(cli): using rslog by [@chenjiahan](https://github.com/chenjiahan) in [#12334](https://github.com/youzan/vant/pull/12334)\n- style(Swipe): declare transition-property by [@chenjiahan](https://github.com/chenjiahan) in [#12336](https://github.com/youzan/vant/pull/12336)\n- feat(Notify): add JSDoc for utility functions by [@chenjiahan](https://github.com/chenjiahan) in [#12342](https://github.com/youzan/vant/pull/12342)\n- feat(Dialog): add JSDoc for utility functions by [@chenjiahan](https://github.com/chenjiahan) in [#12343](https://github.com/youzan/vant/pull/12343)\n- feat(Toast): add JSDoc for utility functions by [@chenjiahan](https://github.com/chenjiahan) in [#12344](https://github.com/youzan/vant/pull/12344)\n\n#### Bug Fixes 🐞\n\n- fix(Popup): fix failed to inherit scopedId by [@chenjiahan](https://github.com/chenjiahan) in [#12327](https://github.com/youzan/vant/pull/12327)\n- fix(CellGroup): failed to inherit scopeId with title by [@chenjiahan](https://github.com/chenjiahan) in [#12328](https://github.com/youzan/vant/pull/12328)\n- fix(Popover): failed to inherit scopedId by [@chenjiahan](https://github.com/chenjiahan) in [#12329](https://github.com/youzan/vant/pull/12329)\n\n#### Document 📖\n\n- docs: fix typo in Form by [@zcvvvbb](https://github.com/zcvvvbb) in [#12322](https://github.com/youzan/vant/pull/12322)\n- docs: add more ecosystem projects by [@chenjiahan](https://github.com/chenjiahan) in [#12338](https://github.com/youzan/vant/pull/12338)\n- docs(ImagePreview): improve English document by [@chenjiahan](https://github.com/chenjiahan) in [#12345](https://github.com/youzan/vant/pull/12345)\n- docs: mistypo Georqia to Georgia by [@mahnunchik](https://github.com/mahnunchik) in [#12331](https://github.com/youzan/vant/pull/12331)\n\n#### Other Changes\n\n- chore(Swipe): limit the decimal length of transform by [@chenjiahan](https://github.com/chenjiahan) in [#12337](https://github.com/youzan/vant/pull/12337)\n- chore: bump pnpm v8.8.0 by [@chenjiahan](https://github.com/chenjiahan) in [#12339](https://github.com/youzan/vant/pull/12339)\n- chore(deps): bump postcss from 8.4.27 to 8.4.31 by [@dependabot](https://github.com/dependabot) in [#12341](https://github.com/youzan/vant/pull/12341)\n\n#### New Contributors\n\n- [@zcvvvbb](https://github.com/zcvvvbb) made their first contribution in [#12322](https://github.com/youzan/vant/pull/12322)\n- [@mahnunchik](https://github.com/mahnunchik) made their first contribution in [#12331](https://github.com/youzan/vant/pull/12331)\n\n### v4.7.0\n\n`2023-09-24`\n\n#### 🍭 Icon Updates\n\n- Icon: add new `user` icon\n- Icon: add new `notes` icon\n- Icon: add new `newspaper` icon\n- Icon: add new `list-switch` icon\n- Icon: add new `list-switching` icon\n- Icon: add a filled `records` icon\n- Icon: add a filled `contact` icon\n- Icon: add a filled `discount` icon\n- Icon: add a filled `completed` icon\n- Icon: add a filled `description` icon\n- Icon: add a filled `cash-back-record` icon\n- Icon: rename the previous `records` icon to `records-o`\n- Icon: rename the previous `contact` icon to `contact-o`\n- Icon: rename the previous `discount` icon to `discount-o`\n- Icon: rename the previous `completed` icon to `completed-o`\n- Icon: rename the previous `description` icon to `description-o`\n- Icon: rename the previous `cash-back-record` icon to `cash-back-record-o`\n\n#### New Features 🎉\n\n- feat(Calendar): add click-disabled-date event by [@LadyChatterleyLover](https://github.com/LadyChatterleyLover) in [#12274](https://github.com/youzan/vant/pull/12274)\n- feat(Uploader): add --van-uploader-border-radius css variables by [@xieyezi](https://github.com/xieyezi) in [#12280](https://github.com/youzan/vant/pull/12280)\n- feat(SwipeCell): fix triggered close by clickAway when in running beforeClose by [@nined9](https://github.com/nined9) in [#12309](https://github.com/youzan/vant/pull/12309)\n- feat(AddressEdit): add change event for name and tel input by [@zhousg](https://github.com/zhousg) in [#12310](https://github.com/youzan/vant/pull/12310)\n- types(Dialog): improve showDialog return type by [@chenjiahan](https://github.com/chenjiahan) in [#12316](https://github.com/youzan/vant/pull/12316)\n\n#### Bug Fixes 🐞\n\n- fix(Picker): fix bug the content of the popup window is not consistent with the Chinese version under the English version by [@lllomh](https://github.com/lllomh) in [#12300](https://github.com/youzan/vant/pull/12300)\n- fix(Signature): fix checking if canvas is empty when backgroundColor is set by [@sywyyhykkk](https://github.com/sywyyhykkk) in [#12304](https://github.com/youzan/vant/pull/12304)\n- fix(FloatingPanel): dragging down causes the page to move by [@zhousg](https://github.com/zhousg) in [#12314](https://github.com/youzan/vant/pull/12314)\n\n#### Document 📖\n\n- docs(Picker): improve picker document by [@MrXwq](https://github.com/MrXwq) in [#12275](https://github.com/youzan/vant/pull/12275)\n- docs(Uploader): add FAQ about camera permission by [@chenjiahan](https://github.com/chenjiahan) in [#12289](https://github.com/youzan/vant/pull/12289)\n\n#### Other Changes\n\n- test(Dialog): enable function-call test cases by [@chenjiahan](https://github.com/chenjiahan) in [#12315](https://github.com/youzan/vant/pull/12315)\n- fix(cli): allow missing build script when releasing by [@chenjiahan](https://github.com/chenjiahan) in [#12292](https://github.com/youzan/vant/pull/12292)\n\n#### New Contributors\n\n- [@nined9](https://github.com/nined9) made their first contribution in [#12309](https://github.com/youzan/vant/pull/12309)\n- [@sywyyhykkk](https://github.com/sywyyhykkk) made their first contribution in [#12304](https://github.com/youzan/vant/pull/12304)\n\n### v4.6.8\n\n`2023-09-10`\n\n#### New Features 🎉\n\n- feat(Cell): add CSS vars to customize font size of the value by [@inottn](https://github.com/inottn) in [#12260](https://github.com/youzan/vant/pull/12260)\n- feat(ConfigProvider): supplement the type declaration of ConfigProviderThemeVars by [@xieyezi](https://github.com/xieyezi) in [#12264](https://github.com/youzan/vant/pull/12264)\n- feat(NavBar): add leftDisabled and rightDisabled prop by [@m-xlsea](https://github.com/m-xlsea) in [#12258](https://github.com/youzan/vant/pull/12258)\n\n#### Bug Fixes 🐞\n\n- fix(ConfigProvider): failed to set some basic theme vars by [@chenjiahan](https://github.com/chenjiahan) in [#12272](https://github.com/youzan/vant/pull/12272)\n- fix(ConfigProvider): ConfigProviderThemeVars fontSizeXs hump by [@xieyezi](https://github.com/xieyezi) in [#12267](https://github.com/youzan/vant/pull/12267)\n\n#### Document 📖\n\n- docs(NavBar): add disable button demo by [@chenjiahan](https://github.com/chenjiahan) in [#12270](https://github.com/youzan/vant/pull/12270)\n\n#### Other Changes\n\n- chore(CI): enable single-commit to reduce the repo size by [@chenjiahan](https://github.com/chenjiahan) in [#12268](https://github.com/youzan/vant/pull/12268)\n- chore(CI): bump actions version by [@chenjiahan](https://github.com/chenjiahan) in [#12269](https://github.com/youzan/vant/pull/12269)\n- chore: move axure to vant-assets repo by [@chenjiahan](https://github.com/chenjiahan) in [#12271](https://github.com/youzan/vant/pull/12271)\n\n#### New Contributors\n\n- [@xieyezi](https://github.com/xieyezi) made their first contribution in [#12264](https://github.com/youzan/vant/pull/12264)\n- [@m-xlsea](https://github.com/m-xlsea) made their first contribution in [#12258](https://github.com/youzan/vant/pull/12258)\n\n### v4.6.7\n\n`2023-09-04`\n\n#### New Features 🎉\n\n- feat(vant-use): add useRaf by [@Simon-He95](https://github.com/Simon-He95) in [#12211](https://github.com/youzan/vant/pull/12211)\n- feat(Checkbox): add indeterminate status by [@wjw-gavin](https://github.com/wjw-gavin) in [#12216](https://github.com/youzan/vant/pull/12216)\n- feat(auto-import-resolver): add auto-import-resolver package by [@wChenonly](https://github.com/wChenonly) in [#12227](https://github.com/youzan/vant/pull/12227)\n- feat(ConfigProvider): add theme-vars-scope props enable root affects by [@zhousg](https://github.com/zhousg) in [#12240](https://github.com/youzan/vant/pull/12240)\n\n#### Bug Fixes 🐞\n\n- fix(auto-import-resolver): type mismatch in TS projects by [@chenjiahan](https://github.com/chenjiahan) in [#12243](https://github.com/youzan/vant/pull/12243)\n- fix(eslint): using ignorePatterns to replace .eslintignore by [@MrXwq](https://github.com/MrXwq) in [#12237](https://github.com/youzan/vant/pull/12237)\n\n#### Document 📖\n\n- docs: improve the menu position of back-top by [@wjw-gavin](https://github.com/wjw-gavin) in [#12223](https://github.com/youzan/vant/pull/12223)\n- docs: improve use-raf document by [@chenjiahan](https://github.com/chenjiahan) in [#12224](https://github.com/youzan/vant/pull/12224)\n- docs: add Vite and Nuxt guide to quickstart by [@chenjiahan](https://github.com/chenjiahan) in [#12239](https://github.com/youzan/vant/pull/12239)\n- docs(auto-import-resolver): update README and folder name by [@chenjiahan](https://github.com/chenjiahan) in [#12241](https://github.com/youzan/vant/pull/12241)\n- docs(auto-import-resolver): add Rspack usage by [@chenjiahan](https://github.com/chenjiahan) in [#12242](https://github.com/youzan/vant/pull/12242)\n- docs(ConfigProvider): update the guide of modify CSS vars by [@chenjiahan](https://github.com/chenjiahan) in [#12246](https://github.com/youzan/vant/pull/12246)\n\n#### Other Changes\n\n- test: migrate test runner to vitest by [@chenjiahan](https://github.com/chenjiahan) in [#12206](https://github.com/youzan/vant/pull/12206)\n- chore(CI): fix codecov reporter by [@chenjiahan](https://github.com/chenjiahan) in [#12210](https://github.com/youzan/vant/pull/12210)\n- chore: use workspace protocol for internal deps by [@chenjiahan](https://github.com/chenjiahan) in [#12225](https://github.com/youzan/vant/pull/12225)\n- test: fix vitest canvas mock by [@chenjiahan](https://github.com/chenjiahan) in [#12226](https://github.com/youzan/vant/pull/12226)\n\n### v4.6.6\n\n`2023-08-20`\n\n#### New Features 🎉\n\n- feat(DropdownItem): supports boolean value in options by [@baboon-king](https://github.com/baboon-king) in [#12208](https://github.com/youzan/vant/pull/12208)\n\n#### Bug Fixes 🐞\n\n- fix(FloatingBubble): drag should not trigger click on child elements by [@zhousg](https://github.com/zhousg) in [#12201](https://github.com/youzan/vant/pull/12201)\n- fix(FloatingBubble): does not update state while hidden by [@zhousg](https://github.com/zhousg) in [#12207](https://github.com/youzan/vant/pull/12207)\n\n#### Other Changes\n\n- chore(CI): update issue comment messages by [@chenjiahan](https://github.com/chenjiahan) in [#12204](https://github.com/youzan/vant/pull/12204)\n- refactor(cli): remove execa dependency by [@chenjiahan](https://github.com/chenjiahan) in [#12205](https://github.com/youzan/vant/pull/12205)\n\n### v4.6.5\n\n`2023-08-16`\n\n#### New Features 🎉\n\n- feat(DropdownMenu): add swipe-threshold prop by [@inottn](https://github.com/inottn) in [#12117](https://github.com/youzan/vant/pull/12117)\n- types(Toast): add `ToastWrapperInstance` export by [@long-woo](https://github.com/long-woo) in [#12166](https://github.com/youzan/vant/pull/12166)\n- feat(FloatingBubble): use component attrs by [@zhousg](https://github.com/zhousg) in [#12171](https://github.com/youzan/vant/pull/12171)\n\n#### Bug Fixes 🐞\n\n- fix(FloatingPanel): Lag caused by scrollbar and panel movement #12146 by [@yue1123](https://github.com/yue1123) in [#12161](https://github.com/youzan/vant/pull/12161)\n- fix(FloatingPanel): change the default value of lock-scroll to false by [@inottn](https://github.com/inottn) in [#12162](https://github.com/youzan/vant/pull/12162)\n- fix(cli): should escape curly brackets in markdown by [@chenjiahan](https://github.com/chenjiahan) in [#12188](https://github.com/youzan/vant/pull/12188)\n\n#### Document 📖\n\n- docs: add instructions for bun package manager by [@colinhacks](https://github.com/colinhacks) in [#12182](https://github.com/youzan/vant/pull/12182)\n\n#### Other Changes\n\n- chore: add script to format GitHub changelog by [@chenjiahan](https://github.com/chenjiahan) in [#12158](https://github.com/youzan/vant/pull/12158)\n- chore(FloatingPanel): improve code style by [@chenjiahan](https://github.com/chenjiahan) in [#12175](https://github.com/youzan/vant/pull/12175)\n- refactor(cli): rewrite vite-plugin-md by [@chenjiahan](https://github.com/chenjiahan) in [#12179](https://github.com/youzan/vant/pull/12179)\n- chore(deps): bump markdown-it v13 and commander v11 by [@chenjiahan](https://github.com/chenjiahan) in [#12180](https://github.com/youzan/vant/pull/12180)\n- chore(CI): do not run codeql for pull request by [@chenjiahan](https://github.com/chenjiahan) in [#12181](https://github.com/youzan/vant/pull/12181)\n\n#### New Contributors\n\n- [@long-woo](https://github.com/long-woo) made their first contribution in [#12166](https://github.com/youzan/vant/pull/12166)\n- [@yue1123](https://github.com/yue1123) made their first contribution in [#12161](https://github.com/youzan/vant/pull/12161)\n- [@colinhacks](https://github.com/colinhacks) made their first contribution in [#12182](https://github.com/youzan/vant/pull/12182)\n- [@xincheng-1999](https://github.com/xincheng-1999) made their first contribution in [#12189](https://github.com/youzan/vant/pull/12189)\n\n### v4.6.4\n\n`2023-08-06`\n\n#### New Features 🎉\n\n- feat(area-data): update counties of WuHu by [@nivin-studio](https://github.com/nivin-studio) in [#12122](https://github.com/youzan/vant/pull/12122)\n- feat(Locale): add Serbian language to internationalization by [@RogerZXY](https://github.com/RogerZXY) in [#12145](https://github.com/youzan/vant/pull/12145)\n- feat(ImagePreview): add closeOnClickOverlay option by [@chenjiahan](https://github.com/chenjiahan) in [#12153](https://github.com/youzan/vant/pull/12153)\n- feat(List): add scroller prop by [@chenjiahan](https://github.com/chenjiahan) in [#12154](https://github.com/youzan/vant/pull/12154)\n- feat(FloatingPanel): add lock-scroll prop by [@inottn](https://github.com/inottn) in [#12157](https://github.com/youzan/vant/pull/12157)\n\n#### Bug Fixes 🐞\n\n- fix(TextEllipsis): dots repeated by [@muzaisimao](https://github.com/muzaisimao) in [#12120](https://github.com/youzan/vant/pull/12120)\n- fix(TextEllipsis): fix the logic of calculating the position of ellipsis by [@inottn](https://github.com/inottn) in [#12137](https://github.com/youzan/vant/pull/12137)\n\n#### Document 📖\n\n- docs: move PR title format to contribution guide by [@chenjiahan](https://github.com/chenjiahan) in [#12114](https://github.com/youzan/vant/pull/12114)\n- docs(Radio): add document description for the css var '--van-radio-dot-size' by [@wjw-gavin](https://github.com/wjw-gavin) in [#12152](https://github.com/youzan/vant/pull/12152)\n\n#### Other Changes\n\n- chore: avoid prettier breaking hbs template by [@chenjiahan](https://github.com/chenjiahan) in [#12113](https://github.com/youzan/vant/pull/12113)\n- chore(deps): bump release-it v16 by [@chenjiahan](https://github.com/chenjiahan) in [#12115](https://github.com/youzan/vant/pull/12115)\n- feat(get-deps): import('../foo.vue') => import('../foo.mjs') 的替换 by [@suncohey](https://github.com/suncohey) in [#12046](https://github.com/youzan/vant/pull/12046)\n- refactor(cli): rewrite release command by [@chenjiahan](https://github.com/chenjiahan) in [#12133](https://github.com/youzan/vant/pull/12133)\n- feat(cli): support gitTag option for release command by [@chenjiahan](https://github.com/chenjiahan) in [#12134](https://github.com/youzan/vant/pull/12134)\n- chore(CI): automatically generate changelog via GitHub by [@chenjiahan](https://github.com/chenjiahan) in [#12135](https://github.com/youzan/vant/pull/12135)\n- chore: add PR labeler action by [@chenjiahan](https://github.com/chenjiahan) in [#12136](https://github.com/youzan/vant/pull/12136)\n- chore(TextEllipsis): reuse actionText variable by [@chenjiahan](https://github.com/chenjiahan) in [#12138](https://github.com/youzan/vant/pull/12138)\n- refactor(cli): use GitHub changelog instead of conventional-changelog by [@chenjiahan](https://github.com/chenjiahan) in [#12139](https://github.com/youzan/vant/pull/12139)\n- chore: add Serbian to doc and rename the file by [@chenjiahan](https://github.com/chenjiahan) in [#12150](https://github.com/youzan/vant/pull/12150)\n- chore(eslint-config): bump dependencies by [@chenjiahan](https://github.com/chenjiahan) in [#12155](https://github.com/youzan/vant/pull/12155)\n\n#### New Contributors\n\n- [@muzaisimao](https://github.com/muzaisimao) made their first contribution in [#12120](https://github.com/youzan/vant/pull/12120)\n- [@suncohey](https://github.com/suncohey) made their first contribution in [#12046](https://github.com/youzan/vant/pull/12046)\n- [@nivin-studio](https://github.com/nivin-studio) made their first contribution in [#12122](https://github.com/youzan/vant/pull/12122)\n- [@RogerZXY](https://github.com/RogerZXY) made their first contribution in [#12145](https://github.com/youzan/vant/pull/12145)\n\n### [v4.6.3](https://github.com/vant-ui/vant/compare/v4.6.2...v4.6.3)\n\n`2023-07-23`\n\n**Feature**\n\n- AddressList: add show-add-button prop [#12090](https://github.com/vant-ui/vant/issues/12090)\n- CheckboxGroup: add shape prop [#12092](https://github.com/vant-ui/vant/issues/12092)\n- RadioGroup: add shape prop [#12092](https://github.com/vant-ui/vant/issu\n\n<!-- [TRUNCATED AT 50KB] -->","packages/vant/docs/markdown/changelog.zh-CN.md":"# 更新日志\n\n### 重要提示\n\n**为了避免重复维护，降低维护成本。**\n\n**从 v4.9.0 开始，Vant 的更新日志统一发布在 [GitHub 的 Releases 页面](https://github.com/youzan/vant/releases)，当前页面将不再更新。**\n\n当前文档为 Vant v4.0.0 ~ v4.9.0 的的更新日志，其他版本请参考：\n\n- [Vant 2 更新日志](/vant/v2/#/zh-CN/changelog)\n- [Vant 3 更新日志](/vant/v3/#/zh-CN/changelog)\n\n### 介绍\n\nVant 遵循 [Semver](https://semver.org/lang/zh-CN/) 语义化版本规范。\n\n**发布节奏**\n\n- 修订号：通常每隔 1 ~ 2 周发布，包含新特性和问题修复。\n- 次版本号：通常每隔 1 ~ 2 月发布，包含新组件或较大的功能更新，向下兼容。\n- 主版本号：无固定的发布时间，包含不兼容更新和重大功能更新。\n\n## 更新内容\n\n### v4.9.0\n\n`2024-05-02`\n\n#### 新功能 🎉\n\n- feat(Calendar)：添加 switch-mode 属性，由[@inottn](https://github.com/inottn) 贡献，在[#12836](https://github.com/youzan/vant/pull/12836)\n- feat(PickerGroup)：添加新属性 showToolbar，由[@ReinoFu](https://github.com/ReinoFu) 贡献，在[#12839](https://github.com/youzan/vant/pull/12839)\n- feat(CLI)：支持配置 Rsbuild，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12809](https://github.com/youzan/vant/pull/12809)\n\n#### Bug 修复 🐞\n\n- fix(cli)：修复 Vue SFC 样式绑定失败，由[@zoy-l](https://github.com/zoy-l) 贡献，在[#12799](https://github.com/youzan/vant/pull/12799)\n- fix(ImagePreview)：修复 swipeItem 可能为 undefined，由[@inottn](https://github.com/inottn) 贡献，在[#12818](https://github.com/youzan/vant/pull/12818)\n- fix(Highlight)：当 keywords 为空时正确渲染，由[@Jungzl](https://github.com/Jungzl) 贡献，在[#12829](https://github.com/youzan/vant/pull/12829)\n- fix(IndexBar)：当传入 sticky & stickyOffsetTop 时正确渲染激活锚点，由[@Jungzl](https://github.com/Jungzl) 贡献，在[#12837](https://github.com/youzan/vant/pull/12837)\n\n#### 文档 📖\n\n- docs: 移除所有 Gitee 链接，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12845](https://github.com/youzan/vant/pull/12845)\n- docs: 移除 gzip 大小徽章，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12847](https://github.com/youzan/vant/pull/12847)\n- docs: 修复 Rsbuild HTML 构建失败，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12848](https://github.com/youzan/vant/pull/12848)\n\n#### 其他更改\n\n- chore(deps)：升级依赖 terser 至 ^5.30.3，由[@renovate](https://github.com/renovate) 贡献，在[#12795](https://github.com/youzan/vant/pull/12795)\n- chore(deps)：升级依赖 eslint-plugin-vue 至 ^9.25.0，由[@renovate](https://github.com/renovate) 贡献，在[#12794](https://github.com/youzan/vant/pull/12794)\n- chore(deps)：更新所有补丁依赖，由[@renovate](https://github.com/renovate) 贡献，在[#12773](https://github.com/youzan/vant/pull/12773)\n- chore(workflow)：升级至 pnpm v9，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12808](https://github.com/youzan/vant/pull/12808)\n- chore：推送 github-pages-deploy-action[@v4](https://github.com/v4).6.0，由 @chenjiahan 贡献，在[#12810](https://github.com/youzan/vant/pull/12810)\n- chore(deps)：升级依赖 [@vitejs](https://github.com/vitejs)/plugin-vue 至 v5，由 @renovate 贡献，在[#12840](https://github.com/youzan/vant/pull/12840)\n- chore(deps)：升级依赖 commander 至 v12，由[@renovate](https://github.com/renovate) 贡献，在[#12841](https://github.com/youzan/vant/pull/12841)\n- chore(deps)：更新 actions/setup-node 行为至 v4，由[@renovate](https://github.com/renovate) 贡献，在[#12814](https://github.com/youzan/vant/pull/12814)\n- chore(deps)：更新 github/issue-labeler 行为至 v3.4，由[@renovate](https://github.com/renovate) 贡献，在[#12813](https://github.com/youzan/vant/pull/12813)\n- chore(deps)：更新 codecov/codecov-action 行为至 v4，由[@renovate](https://github.com/renovate) 贡献，在[#12815](https://github.com/youzan/vant/pull/12815)\n- chore(deps)：更新所有补丁依赖，由[@renovate](https://github.com/renovate) 贡献，在[#12812](https://github.com/youzan/vant/pull/12812)\n\n#### 新贡献者\n\n- [@ReinoFu](https://github.com/ReinoFu) 在[#12839](https://github.com/youzan/vant/pull/12839) 中首次贡献\n\n### v4.8.11\n\n`2024-04-14`\n\n#### 新功能 🎉\n\n- feat(DropdownMenu)：通过 [@inottn](https://github.com/inottn) 在 [#12785](https://github.com/youzan/vant/pull/12785) 中为选项添加 disabled 属性\n\n#### Bug 修复 🐞\n\n- fix：在 JetBrains IDE 中修复警告 `is not a valid value for v-model`，贡献者 [@anyesu](https://github.com/anyesu) 在 [#12787](https://github.com/youzan/vant/pull/12787)\n- fix(Cli)：移除站点的 tsconfig 文件，贡献者 [@chenjiahan](https://github.com/chenjiahan) 在 [#12792](https://github.com/youzan/vant/pull/12792)\n\n#### 文档 📖\n\n- docs(list)：更新模块代码加载错误信息，贡献者 [@wangjue666](https://github.com/wangjue666) 在 [#12778](https://github.com/youzan/vant/pull/12778)\n\n#### 其他变更\n\n- chore(deps)：更新依赖 eslint-plugin-vue 至 ^9.24.1，由 [@renovate](https://github.com/renovate) 在 [#12774](https://github.com/youzan/vant/pull/12774) 提交\n- chore(deps)：升级 Rsbuild 至 v0.6 版本，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12790](https://github.com/youzan/vant/pull/12790) 提交\n\n#### 新贡献者\n\n- [@wangjue666](https://github.com/wangjue666) 在 [#12778](https://github.com/youzan/vant/pull/12778) 中首次贡献\n- [@anyesu](https://github.com/anyesu) 在 [#12787](https://github.com/youzan/vant/pull/12787) 中首次贡献\n\n### v4.8.10\n\n`2024-04-06`\n\n#### 新功能 🎉\n\n- feat(TimePicker)：支持 confirm 和 getSelectedTime 方法，由 [@bluesky335](https://github.com/bluesky335) 在 [#12761](https://github.com/youzan/vant/pull/12761) 提供\n- feat(DatePicker)：支持 confirm 和 getSelectedDate 方法，由 [@bluesky335](https://github.com/bluesky335) 在 [#12762](https://github.com/youzan/vant/pull/12762) 提供\n- feat(Coupon)：支持复选框用法，由 [@CatsAndMice](https://github.com/CatsAndMice) 在 [#12744](https://github.com/youzan/vant/pull/12744) 提供\n\n#### 其他变更\n\n- chore(deps)：更新依赖 vite 至 v5.0.13 [安全]，由 [@renovate](https://github.com/renovate) 在 [#12767](https://github.com/youzan/vant/pull/12767) 提供\n- chore(deps)：更新所有补丁依赖项，由 [@renovate](https://github.com/renovate) 在 [#12756](https://github.com/youzan/vant/pull/12756) 提供\n- chore(deps)：更新依赖项 [@types](https://github.com/types)/lodash 至 ^4.17.0，由 [@renovate](https://github.com/renovate) 在 [#12757](https://github.com/youzan/vant/pull/12757) 提供\n- chore：修正 getSelectedTime 的返回类型，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12768](https://github.com/youzan/vant/pull/12768) 提供\n- refactor(Coupon)：简化复选框用法，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12771](https://github.com/youzan/vant/pull/12771) 提供\n\n#### 新贡献者\n\n- [@bluesky335](https://github.com/bluesky335) 在 [#12761](https://github.com/youzan/vant/pull/12761) 中首次贡献\n\n### v4.8.9\n\n`2024-04-06`\n\n无效版本，请勿使用。\n\n### v4.8.8\n\n`2024-03-31`\n\n#### 新特性 🎉\n\n- feat(image-preview): 导出 image 插槽的 onLoad 和 style 属性，由[@chouchouji](https://github.com/chouchouji) 在 [#12740](https://github.com/youzan/vant/pull/12740) 提交\n- feat(AddressList): 为 click-item 添加事件参数，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12748](https://github.com/youzan/vant/pull/12748) 提交\n\n#### 故障修复 🐞\n\n- fix(floating-bubble): 当值更改时更新偏移量，由[@chouchouji](https://github.com/chouchouji) 在 [#12730](https://github.com/youzan/vant/pull/12730) 提交\n- fix(vant-cli): 支持以定义的选项命名，由[@wChenonly](https://github.com/wChenonly) 在 [#12734](https://github.com/youzan/vant/pull/12734) 提交\n- fix(PickerGroup): 使用 v-for 时能够正确渲染，由[@inottn](https://github.com/inottn) 在 [#12732](https://github.com/youzan/vant/pull/12732) 提交\n- fix(TextEllipsis): 当组件被激活时应重新计算省略状态，由[@inottn](https://github.com/inottn) 在 [#12741](https://github.com/youzan/vant/pull/12741) 提交\n\n#### 文档更新 📖\n\n- docs(button): 保持中英文文档一致，由[@chouchouji](https://github.com/chouchouji) 在 [#12708](https://github.com/youzan/vant/pull/12708) 提交\n- docs(cell): 更正 label 的类型，由[@chouchouji](https://github.com/chouchouji) 在 [#12721](https://github.com/youzan/vant/pull/12721) 提交\n- docs(ImagePreview): 添加图片插槽缩放指导，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12751](https://github.com/youzan/vant/pull/12751) 提交\n\n#### 其他更改\n\n- chore(deps): 更新 vue-router 依赖至 v4.3.0，由[@renovate](https://github.com/renovate) 在 [#12702](https://github.com/youzan/vant/pull/12702) 提交\n- chore(deps): 更新 esbuild 依赖至 ^0.20.0，由[@renovate](https://github.com/renovate) 在 [#12696](https://github.com/youzan/vant/pull/12696) 提交\n- chore(workflow): 让 renovate 提升 package.json 版本，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12714](https://github.com/youzan/vant/pull/12714) 提交\n- chore(deps): 更新 eslint 依赖至 ^8.57.0，由[@renovate](https://github.com/renovate) 在 [#12723](https://github.com/youzan/vant/pull/12723) 提交\n- chore(docs): 更新 vue3-vant-mobile 参考文档，由[@CharleeWa](https://github.com/CharleeWa) 在 [#12735](https://github.com/youzan/vant/pull/12735) 提交\n- chore(deps): 更新 commander 依赖至 ^11.1.0，由[@renovate](https://github.com/renovate) 在 [#12718](https://github.com/youzan/vant/pull/12718) 提交\n- chore(deps): 更新 enquirer 依赖至 v2.4.1，由[@renovate](https://github.com/renovate) 在 [#12695](https://github.com/youzan/vant/pull/12695) 提交\n- chore(deps): 更新 [@vue](https://github.com/vue)/test-utils 依赖至 ^2.4.5，由 @renovate 在 [#12716](https://github.com/youzan/vant/pull/12716) 提交\n- chore(deps): 版本升至 Rsbuild v0.5，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12747](https://github.com/youzan/vant/pull/12747) 提交\n- chore(deps): 更新 eslint-config-prettier 依赖至 ^9.1.0，由[@renovate](https://github.com/renovate) 在 [#12724](https://github.com/youzan/vant/pull/12724) 提交\n- chore(deps): 更新 fs-extra 依赖至 ^11.2.0，由[@renovate](https://github.com/renovate) 在 [#12745](https://github.com/youzan/vant/pull/12745) 提交\n- chore(deps): 更新 highlight.js 依赖至 ^11.9.0，由[@renovate](https://github.com/renovate) 在 [#12746](https://github.com/youzan/vant/pull/12746) 提交\n- chore(deps): 更新 fast-glob 依赖至 ^3.3.2，由[@renovate](https://github.com/renovate) 在 [#12731](https://github.com/youzan/vant/pull/12731) 提交\n- chore(deps): 更新 less 依赖至 ^4.2.0，由[@renovate](https://github.com/renovate) 在 [#12752](https://github.com/youzan/vant/pull/12752) 提交\n- chore(workflow): 让 renovate 整合补丁更新，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12754](https://github.com/youzan/vant/pull/12754) 提交\n\n#### 新贡献者\n\n- [@CharleeWa](https://github.com/CharleeWa) 在 [#12735](https://github.com/youzan/vant/pull/12735) 中首次贡献\n\n### v4.8.7\n\n`2024-03-18`\n\n#### 其他更改\n\n- 回退 \"chore(deps)：更新依赖 typescript 到 v5.4.2\" by [@renovate](https://github.com/renovate) in [#12700](https://github.com/youzan/vant/pull/12700)\n- 更新 `@vant/auto-import-resolver` homepage by [@yoyo837](https://github.com/yoyo837) in [#12704](https://github.com/youzan/vant/pull/12704)\n\n### v4.8.6\n\n`2024-03-17`\n\n#### 新功能 🎉\n\n- feat(ImagePreview)：添加 vertical 属性 [@suncohey](https://github.com/suncohey) 在 [#12660](https://github.com/youzan/vant/pull/12660)\n- feat(signature)：导出 clear 和 submit 方法 [@chouchouji](https://github.com/chouchouji) 在 [#12654](https://github.com/youzan/vant/pull/12654)\n- feat：支持 unplugin-auto-import 插件 [@DragonnZhang](https://github.com/DragonnZhang) 在 [#12679](https://github.com/youzan/vant/pull/12679)\n- feat(ActionSheet)：在 actions 数据中添加图标支持 [@wjw-gavin](https://github.com/wjw-gavin) 在 [#12671](https://github.com/youzan/vant/pull/12671)\n\n#### Bug 修复 🐞\n\n- fix(ImagePreview)：在当前图片被移动到边缘时，允许用户滑动到下一张图片 [@inottn](https://github.com/inottn) 在 [#12666](https://github.com/youzan/vant/pull/12666)\n- fix(ActionSheet)：图标类名 [@chenjiahan](https://github.com/chenjiahan) 在 [#12701](https://github.com/youzan/vant/pull/12701)\n\n#### 文档更新 📖\n\n- docs(ImagePreview)：添加 vertical 属性 [@chenjiahan](https://github.com/chenjiahan) 在 [#12663](https://github.com/youzan/vant/pull/12663)\n- docs：将 tab 的 'Before Change' 改为一个真正的异步函数 [@gxy5202](https://github.com/gxy5202) 在 [#12693](https://github.com/youzan/vant/pull/12693)\n\n#### 其他更改\n\n- chore(deps)：Rsbuild 升级到 0.4.12 [@chenjiahan](https://github.com/chenjiahan) 在 [#12665](https://github.com/youzan/vant/pull/12665)\n- chore(deps)：更新依赖 [@vue](https://github.com/vue)/test-utils 到 v2.4.5 @renovate 在 [#12681](https://github.com/youzan/vant/pull/12681)\n- chore(deps)：更新依赖 autoprefixer 到 v10.4.18 [@renovate](https://github.com/renovate) 在 [#12682](https://github.com/youzan/vant/pull/12682)\n- chore(workflow)：禁用依赖仪表板 [@chenjiahan](https://github.com/chenjiahan) 在 [#12686](https://github.com/youzan/vant/pull/12686)\n- chore(deps)：更新依赖 prettier 到 v3.2.5 [@renovate](https://github.com/renovate) 在 [#12685](https://github.com/youzan/vant/pull/12685)\n- chore(deps)：更新 Rsbuild 到 v0.4.15 [@renovate](https://github.com/renovate) 在 [#12688](https://github.com/youzan/vant/pull/12688)\n- chore(deps)：更新依赖 eslint 到 v8.57.0 [@renovate](https://github.com/renovate) 在 [#12697](https://github.com/youzan/vant/pull/12697)\n- chore(deps)：更新依赖 typescript 到 v5.4.2 [@renovate](https://github.com/renovate) 在 [#12700](https://github.com/youzan/vant/pull/12700)\n\n#### 新贡献者\n\n- [@chouchouji](https://github.com/chouchouji) 在 [#12654](https://github.com/youzan/vant/pull/12654) 做出了首次贡献\n- [@renovate](https://github.com/renovate) 在 [#12681](https://github.com/youzan/vant/pull/12681) 做出了首次贡献\n- [@gxy5202](https://github.com/gxy5202) 在 [#12693](https://github.com/youzan/vant/pull/12693) 做出了首次贡献\n- [@DragonnZhang](https://github.com/DragonnZhang) 在 [#12679](https://github.com/youzan/vant/pull/12679) 做出了首次贡献\n\n### v4.8.5\n\n`2024-02-25`\n\n#### 新功能 🎉\n\n- feat(Image): 新增 `crossorigin` 和 `referrerpolicy` 属性 by [@Jungzl](https://github.com/Jungzl) in [#12641](https://github.com/youzan/vant/pull/12641)\n\n#### Bug修复 🐞\n\n- fix(NumberKeyboard): 当主题为自定义时正确渲染删除插槽 by [@TPORL](https://github.com/TPORL) in [#12624](https://github.com/youzan/vant/pull/12624)\n\n#### 文档 📖\n\n- docs: 更新与 Picker 事件相关的参数文档 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12619](https://github.com/youzan/vant/pull/12619)\n- docs(DatePicker): 修复英文文档错误 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12620](https://github.com/youzan/vant/pull/12620)\n- docs(Uploader): 修复丢失双引号问题 by [@nemo-shen](https://github.com/nemo-shen) in [#12627](https://github.com/youzan/vant/pull/12627)\n- docs: 新增完整注册指南 by [@chenjiahan](https://github.com/chenjiahan) in [#12628](https://github.com/youzan/vant/pull/12628)\n- docs: 新增Rsbuild按需引入指南 by [@chenjiahan](https://github.com/chenjiahan) in [#12629](https://github.com/youzan/vant/pull/12629)\n\n#### 其他更改\n\n- Revert \"fix(DropdownMenu): 当传递对象字面量给title-class时修复递归更新问题 (#12614)\" by [@inottn](https://github.com/inottn) in [#12617](https://github.com/youzan/vant/pull/12617)\n- chore(deps): 提升 Rsbuild 至 v0.4 版本 by [@chenjiahan](https://github.com/chenjiahan) in [#12625](https://github.com/youzan/vant/pull/12625)\n- chore(workflow): 设置 renovate 配置 by [@chenjiahan](https://github.com/chenjiahan) in [#12626](https://github.com/youzan/vant/pull/12626)\n- test: 跳过图像 SSR 测试案例 by [@chenjiahan](https://github.com/chenjiahan) in [#12644](https://github.com/youzan/vant/pull/12644)\n\n#### 新贡献者\n\n- [@TPORL](https://github.com/TPORL) 在 [#12624](https://github.com/youzan/vant/pull/12624) 中首次贡献\n\n### v4.8.4\n\n`2024-02-03`\n\n#### 新功能 🎉\n\n- feat(Picker): 允许隐藏工具栏按钮 by [@chenjiahan](https://github.com/chenjiahan) in [#12599](https://github.com/youzan/vant/pull/12599)\n\n#### 问题修复 🐞\n\n- fix(Sticky): 初始黏贴位置 by [@nemo-shen](https://github.com/nemo-shen) in [#12601](https://github.com/youzan/vant/pull/12601)\n- fix(DropdownMenu): 修复传递对象字面量到 title-class 时的递归更新问题 by [@inottn](https://github.com/inottn) in [#12614](https://github.com/youzan/vant/pull/12614)\n\n#### 文档 📖\n\n- docs: 改进快速启动提示 by [@inottn](https://github.com/inottn) in [#12606](https://github.com/youzan/vant/pull/12606)\n\n#### 其他改变\n\n- chore(deps): 升级 Rsbuild 至 0.3.9 by [@chenjiahan](https://github.com/chenjiahan) in [#12600](https://github.com/youzan/vant/pull/12600)\n- chore: 避免工作流在 forked repo 上运行 by [@tolking](https://github.com/tolking) in [#12607](https://github.com/youzan/vant/pull/12607)\n- chore(workflow): 使用新的 M1 macOS 运行器 by [@chenjiahan](https://github.com/chenjiahan) in [#12615](https://github.com/youzan/vant/pull/12615)\n\n### v4.8.3\n\n`2024-01-20`\n\n#### 新功能 🎉\n\n- feat(Notify): 添加 teleport 属性，由 [@inottn](https://github.com/inottn) 贡献于 [#12556](https://github.com/youzan/vant/pull/12556)\n- feat(TextEllipsis): 添加 `action` 插槽，由 [@nemo-shen](https://github.com/nemo-shen) 贡献于 [#12560](https://github.com/youzan/vant/pull/12560)\n- feat(ImagePreview): 添加 close-on-click-image 属性，由 [@inottn](https://github.com/inottn) 贡献于 [#12566](https://github.com/youzan/vant/pull/12566)\n- feat(icons): 添加图标 `arrow-double-left` 和 `arrow-double-right`，由 [@nemo-shen](https://github.com/nemo-shen) 贡献于 [#12579](https://github.com/youzan/vant/pull/12579)\n- feat(Toast): 添加 z-index 属性，由 [@inottn](https://github.com/inottn) 贡献于 [#12587](https://github.com/youzan/vant/pull/12587)\n\n#### 问题修复 🐞\n\n- fix(Tab): 带 sticky 属性的标签页在切换后丢失 'fixed' 类名，由 [@nemo-shen](https://github.com/nemo-shen) 贡献于 [#12547](https://github.com/youzan/vant/pull/12547)\n- fix(Image): 之前未导出 ImagePosition 类型，由 [@Jungzl](https://github.com/Jungzl) 贡献于 [#12549](https://github.com/youzan/vant/pull/12549)\n- fix(Tabs): 将 van-border-radius-sm 更改为 van-radius-sm，由 [@edram](https://github.com/edram) 贡献于 [#12576](https://github.com/youzan/vant/pull/12576)\n\n#### 文档更新 📖\n\n- docs(Lazyload): 修复 preLoad 类型错误和拼写错误，由 [@RSS1102](https://github.com/RSS1102) 贡献于 [#12554](https://github.com/youzan/vant/pull/12554)\n- docs(home): 更新标题层级，由 [@inottn](https://github.com/inottn) 贡献于 [#12577](https://github.com/youzan/vant/pull/12577)\n\n#### 其他变更\n\n- test: 将 vitest 升级到 v1.1.3，由 [@inottn](https://github.com/inottn) 贡献于 [#12546](https://github.com/youzan/vant/pull/12546)\n- chore(deps): 将 Rsbuild 升级到 v0.3.2，由 [@chenjiahan](https://github.com/chenjiahan) 贡献于 [#12565](https://github.com/youzan/vant/pull/12565)\n- chore(deps): 将 vue 升级到 v3.4.13，由 [@inottn](https://github.com/inottn) 贡献于 [#12567](https://github.com/youzan/vant/pull/12567)\n- chore(deps): 将 vite 从 5.0.11 升级到 5.0.12，由 [@dependabot](https://github.com/dependabot) 贡献于 [#12588](https://github.com/youzan/vant/pull/12588)\n\n#### 新贡献者\n\n- [@edram](https://github.com/edram) 在 [#12576](https://github.com/youzan/vant/pull/12576) 中首次贡献\n\n### v4.8.2\n\n`2024-01-03`\n\n#### 新功能 🎉\n\n- feat: 支持从 shadow DOM 中链接 CSS [@yoyo837](https://github.com/yoyo837) 在 [#12526](https://github.com/youzan/vant/pull/12526)\n- feat(DropdownMenu): 新增 auto-locate 属性 [@inottn](https://github.com/inottn) 在 [#12251](https://github.com/youzan/vant/pull/12251)\n\n#### 性能提升 🚀\n\n- perf(CLI): 提升 markdown 编译性能 [@chenjiahan](https://github.com/chenjiahan) 在 [#12541](https://github.com/youzan/vant/pull/12541)\n\n#### Bug 修复 🐞\n\n- fix(ci): 在 Windows 上修复 eslint [@Jungzl](https://github.com/Jungzl) 在 [#12516](https://github.com/youzan/vant/pull/12516)\n- fix(ImagePreview): 在某些情况下双倍缩放和点击遮罩关闭可能无法工作 [@inottn](https://github.com/inottn) 在 [#12521](https://github.com/youzan/vant/pull/12521)\n\n#### 其他更改\n\n- chore(deps): 升级 Rsbuild 至 v0.2.8 [@chenjiahan](https://github.com/chenjiahan) 在 [#12519](https://github.com/youzan/vant/pull/12519)\n- chore(deps): 升级 Vue 至 3.4.0-beta.4 [@chenjiahan](https://github.com/chenjiahan) 在 [#12520](https://github.com/youzan/vant/pull/12520)\n- test: 升级 vitest 至 v1.1.0 [@chenjiahan](https://github.com/chenjiahan) 在 [#12522](https://github.com/youzan/vant/pull/12522)\n- chore(deps): 升级 vite 至 v5 [@chenjiahan](https://github.com/chenjiahan) 在 [#12523](https://github.com/youzan/vant/pull/12523)\n- chore(deps): 升级 esbuild 至 v0.19 [@chenjiahan](https://github.com/chenjiahan) 在 [#12524](https://github.com/youzan/vant/pull/12524)\n- chore: 锁定 Rspack 至 v0.4.3 以修复 CSS 问题 [@chenjiahan](https://github.com/chenjiahan) 在 [#12525](https://github.com/youzan/vant/pull/12525)\n- chore(workflow): 调整问题模板 [@chenjiahan](https://github.com/chenjiahan) 在 [#12528](https://github.com/youzan/vant/pull/12528)\n- chore(workflow): 更新 codesandbox 链接 [@chenjiahan](https://github.com/chenjiahan) 在 [#12529](https://github.com/youzan/vant/pull/12529)\n- chore: 更新 vitest 配置 [@inottn](https://github.com/inottn) 在 [#12530](https://github.com/youzan/vant/pull/12530)\n- chore(deps): 升级 Rsbuild 和 Vue [@chenjiahan](https://github.com/chenjiahan) 在 [#12532](https://github.com/youzan/vant/pull/12532)\n- chore(ImagePreview): 重用 isTap 引用 [@inottn](https://github.com/inottn) 在 [#12536](https://github.com/youzan/vant/pull/12536)\n- test(Toast): 减少测试运行时间 [@inottn](https://github.com/inottn) 在 [#12538](https://github.com/youzan/vant/pull/12538)\n- test(FloatingBubble): 减少测试运行时间 [@inottn](https://github.com/inottn) 在 [#12539](https://github.com/youzan/vant/pull/12539)\n- release: 发布 vant v4.8.2 [@chenjiahan](https://github.com/chenjiahan) 在 [#12542](https://github.com/youzan/vant/pull/12542)\n\n### v4.8.1\n\n`2023-12-17`\n\n#### 新功能 🎉\n\n- perf(TextEllipsis): 重用 windowWidth 以避免重复计算 by [@inottn](https://github.com/inottn) in [#12471](https://github.com/youzan/vant/pull/12471)\n- feat(TextEllipsis): 添加 toggle 实例方法 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12472](https://github.com/youzan/vant/pull/12472)\n- feat(cli): 升级 Rsbuild 到 v0.2.2 by [@chenjiahan](https://github.com/chenjiahan) in [#12502](https://github.com/youzan/vant/pull/12502)\n\n#### 性能优化 🚀\n\n- perf(cli): 禁用 source map 以加快编译速度 by [@chenjiahan](https://github.com/chenjiahan) in [#12484](https://github.com/youzan/vant/pull/12484)\n\n#### Bug 修复 🐞\n\n- fix(cli): 在模板中删除未使用的脚本 by [@chenjiahan](https://github.com/chenjiahan) in [#12482](https://github.com/youzan/vant/pull/12482)\n- fix(TextEllipsis): 修复 toggle 的缺少参数 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12483](https://github.com/youzan/vant/pull/12483)\n\n#### 文档 📖\n\n- docs(collapse): 修复缺少的引用标签 by [@RSS1102](https://github.com/RSS1102) in [#12460](https://github.com/youzan/vant/pull/12460)\n- docs(collapse): 修复翻译错误 by [@RSS1102](https://github.com/RSS1102) in [#12464](https://github.com/youzan/vant/pull/12464)\n- docs(dialog): 修复翻译错误并保持示例代码不变 by [@RSS1102](https://github.com/RSS1102) in [#12465](https://github.com/youzan/vant/pull/12465)\n- docs(TreeSelect): 修正变量名 by [@inottn](https://github.com/inottn) in [#12469](https://github.com/youzan/vant/pull/12469)\n- docs: 添加 Rsbuild 脚手架指南 by [@chenjiahan](https://github.com/chenjiahan) in [#12475](https://github.com/youzan/vant/pull/12475)\n- docs(image-preview): 补充 className 的使用方法 by [@RSS1102](https://github.com/RSS1102) in [#12491](https://github.com/youzan/vant/pull/12491)\n- docs(Quickstart): 更新 unplugin-vue-components 的使用方法 (#12499) by [@wChenonly](https://github.com/wChenonly) in [#12500](https://github.com/youzan/vant/pull/12500)\n\n#### 其他变更\n\n- chore(workflow): 为 PR 添加 perf 标签 by [@chenjiahan](https://github.com/chenjiahan) in [#12473](https://github.com/youzan/vant/pull/12473)\n- refactor(CLI): 整合 Rsbuild 以构建网站 by [@chenjiahan](https://github.com/chenjiahan) in [#12481](https://github.com/youzan/vant/pull/12481)\n- chore: 升级 Rspack 到 0.4.2 以修复中文路径问题 by [@chenjiahan](https://github.com/chenjiahan) in [#12496](https://github.com/youzan/vant/pull/12496)\n- chore(deps): 从 4.4.9 升级 vite 到 4.4.12 by [@dependabot](https://github.com/dependabot) in [#12493](https://github.com/youzan/vant/pull/12493)\n\n#### 新贡献者\n\n- [@RSS1102](https://github.com/RSS1102) 在 [#12460](https://github.com/youzan/vant/pull/12460) 中作出了他们的首次贡献\n\n### v4.8.0\n\n`2023-11-19`\n\n#### 新组件 🎉\n\n- 新增 Highlight 组件，由 [@wjw-gavin](https://github.com/wjw-gavin) 和 [@inottn](https://github.com/inottn) 贡献 ❤️ [#12434](https://github.com/youzan/vant/pull/12434)\n\n#### 新功能\n\n- feat(ImagePreview): 由 [@inottn](https://github.com/inottn) 在 [#12426](https://github.com/youzan/vant/pull/12426) 中增加 resetScale 方法\n- feat(Checker): 由 [@inottn](https://github.com/inottn) 在 [#12436](https://github.com/youzan/vant/pull/12436) 中向默认插槽添加 checked 和 disabled 参数\n- feat(Row): 由 [@cc-hearts](https://github.com/cc-hearts) 在 [#12439](https://github.com/youzan/vant/pull/12439) 中支持 gutter 垂直间距\n\n#### Bug 修复 🐞\n\n- fix(Calendar): 由 [@cc-hearts](https://github.com/cc-hearts) 在 [#12425](https://github.com/youzan/vant/pull/12425) 中支持副标题的响应式\n\n#### 文档 📖\n\n- docs(field): 由 [@Simon-He95](https://github.com/Simon-He95) 在 [#12429](https://github.com/youzan/vant/pull/12429) 中更新 props size\n- docs(cell): 由 [@Simon-He95](https://github.com/Simon-He95) 在 [#12427](https://github.com/youzan/vant/pull/12427) 中更新 props size\n- docs(Highlight): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12438](https://github.com/youzan/vant/pull/12438) 中添加版本提示\n- docs(Overlay): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12454](https://github.com/youzan/vant/pull/12454) 中添加设置 z-index 的演示\n- docs: 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12455](https://github.com/youzan/vant/pull/12455) 中将 Rsbuild 添加到快速入门指南\n\n#### 其他变更\n\n- chore(deps): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12414](https://github.com/youzan/vant/pull/12414) 中修复了 babel 和 postcss 的安全警报\n\n#### 新贡献者\n\n- [@cc-hearts](https://github.com/cc-hearts) 在 [#12425](https://github.com/youzan/vant/pull/12425) 中进行了首次贡献\n\n### v4.7.3\n\n`2023-10-29`\n\n#### 新功能 🎉\n\n- feat(locale): 添加阿拉伯语本地化支持 by [@mo9a7i](https://github.com/mo9a7i) in [#12381](https://github.com/youzan/vant/pull/12381)\n- feat(Form): 添加 required 属性并支持自动显示 by [@chenjiahan](https://github.com/chenjiahan) in [#12380](https://github.com/youzan/vant/pull/12380)\n- feat(auto-import-resolver): 添加模块选项 by [@chenjiahan](https://github.com/chenjiahan) in [#12383](https://github.com/youzan/vant/pull/12383)\n- style: 使用 overflow-wrap 替换 word-break by [@wjw-gavin](https://github.com/wjw-gavin) in [#12396](https://github.com/youzan/vant/pull/12396)\n- feat(Tab): 添加 show-header 属性 by [@yoyo837](https://github.com/yoyo837) in [#12394](https://github.com/youzan/vant/pull/12394)\n- style(Search): 在显示错误消息时使用一致的内边距 by [@chenjiahan](https://github.com/chenjiahan) in [#12409](https://github.com/youzan/vant/pull/12409)\n- feat(Signature): 公开 resize 方法 by [@inottn](https://github.com/inottn) in [#12405](https://github.com/youzan/vant/pull/12405)\n\n#### Bug 修复 🐞\n\n- fix(ConfigProvider): 导出丢失的主题变量 by [@inottn](https://github.com/inottn) in [#12371](https://github.com/youzan/vant/pull/12371)\n- fix(AddressEdit): 当 showArea 为 false 时区域字段验证错误 by [@zhousg](https://github.com/zhousg) in [#12393](https://github.com/youzan/vant/pull/12393)\n- fix([@vant](https://github.com/vant)/area-data): 添加导出类型 by @Alkaidcc in [#12397](https://github.com/youzan/vant/pull/12397)\n- fix(Search): 修复显示错误消息时的搜索样式问题 by [@johnsonwong666](https://github.com/johnsonwong666) in [#12385](https://github.com/youzan/vant/pull/12385)\n- fix(PickerGroup): 仅过滤 Comment vnode by [@zhousg](https://github.com/zhousg) in [#12402](https://github.com/youzan/vant/pull/12402)\n\n#### 文档 📖\n\n- docs(auto-import-resolver): 添加 importStyle 选项的文档 by [@chenjiahan](https://github.com/chenjiahan) in [#12382](https://github.com/youzan/vant/pull/12382)\n- docs(Tab): 保持文档和示例的一致性 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12395](https://github.com/youzan/vant/pull/12395)\n- chore: 将 vscode-common-intellisense 添加到社区生态系统中 by [@Simon-He95](https://github.com/Simon-He95) in [#12406](https://github.com/youzan/vant/pull/12406)\n- docs(Signature): 添加 resize 方法 by [@chenjiahan](https://github.com/chenjiahan) in [#12411](https://github.com/youzan/vant/pull/12411)\n- docs(progress): 移除过时的 resize 方法 by [@chenjiahan](https://github.com/chenjiahan) in [#12412](https://github.com/youzan/vant/pull/12412)\n\n#### 其他变更\n\n- chore(Field): 当 rules 包含 required 时，必填标签的 CSS 将生效 by [@morance](https://github.com/morance) in [#12376](https://github.com/youzan/vant/pull/12376)\n- test(ImagePreview): 修复不正确的 onClose 测试用例 by [@chenjiahan](https://github.com/chenjiahan) in [#12386](https://github.com/youzan/vant/pull/12386)\n- chore: forked 仓库，跳过 CI 运行 by [@yoyo837](https://github.com/yoyo837) in [#12410](https://github.com/youzan/vant/pull/12410)\n\n#### 新贡献者\n\n- [@morance](https://github.com/morance) 在 [#12376](https://github.com/youzan/vant/pull/12376) 中进行了首次贡献\n- [@mo9a7i](https://github.com/mo9a7i) 在 [#12381](https://github.com/youzan/vant/pull/12381) 中进行了首次贡献\n- [@Alkaidcc](https://github.com/Alkaidcc) 在 [#12397](https://github.com/youzan/vant/pull/12397) 中进行了首次贡献\n- [@johnsonwong666](https://github.com/johnsonwong666) 在 [#12385](https://github.com/youzan/vant/pull/12385) 中进行了首次贡献\n\n### v4.7.2\n\n`2023-10-15`\n\n#### 新功能 🎉\n\n- feat(Icon): 添加 font-family CSS 变量，由 [@JeremyFan](https://github.com/JeremyFan) 在 [#12354](https://github.com/youzan/vant/pull/12354) 中贡献\n- feat(ImagePreview): 添加 doubleScale 选项，由 [@coderXMin](https://github.com/coderXMin) 在 [#12360](https://github.com/youzan/vant/pull/12360) 中贡献\n\n#### Bug 修复 🐞\n\n- fix(Icons): 使图标与 Vant 2 的浏览器范围兼容，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12356](https://github.com/youzan/vant/pull/12356) 中贡献\n- fix(Uploader): 修复了多次重新上传只选择一个以及取消选择的问题，由 [@zhousg](https://github.com/zhousg) 在 [#12359](https://github.com/youzan/vant/pull/12359) 中贡献\n\n#### 其他更改\n\n- refactor(Signature): 避免在下一个 tick 中设置 canvas 的宽度和高度，由 [@inottn](https://github.com/inottn) 在 [#12347](https://github.com/youzan/vant/pull/12347) 中贡献\n- refactor(Signature): 使用 scale 方法提高清晰度，由 [@inottn](https://github.com/inottn) 在 [#12363](https://github.com/youzan/vant/pull/12363) 中贡献\n- chore(deps): 将 rslog 版本提升至 v1.1.0，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12364](https://github.com/youzan/vant/pull/12364) 中贡献\n- chore(cli): 合并欢迎日志，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12365](https://github.com/youzan/vant/pull/12365) 中贡献\n- chore(ImagePreview): 重命名 doubleScale 并添加测试用例，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12366](https://github.com/youzan/vant/pull/12366) 中贡献\n\n#### 新贡献者\n\n- [@coderXMin](https://github.com/coderXMin) 在 [#12360](https://github.com/youzan/vant/pull/12360) 中进行了他的首次贡献\n\n### v4.7.1\n\n`2023-10-06`\n\n#### 新功能 🎉\n\n- feat(FloatingPanel): 优化弹跳动画，由 [@zhousg](https://github.com/zhousg) 在 [#12317](https://github.com/youzan/vant/pull/12317) 中贡献\n- feat(cli): 使用 rslog，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12334](https://github.com/youzan/vant/pull/12334) 中贡献\n- style(Swipe): 声明 `transition-property` 样式，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12336](https://github.com/youzan/vant/pull/12336) 中贡献\n- feat(Notify): 为辅助函数添加 JSDoc，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12342](https://github.com/youzan/vant/pull/12342) 中贡献\n- feat(Dialog): 为辅助函数添加 JSDoc，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12343](https://github.com/youzan/vant/pull/12343) 中贡献\n- feat(Toast): 为辅助函数添加 JSDoc，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12344](https://github.com/youzan/vant/pull/12344) 中贡献\n\n#### Bug 修复 🐞\n\n- fix(Popup): 修复无法继承 scopedId 的问题，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12327](https://github.com/youzan/vant/pull/12327) 中贡献\n- fix(CellGroup): 修复带有标题时无法继承 scopeId 的问题，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12328](https://github.com/youzan/vant/pull/12328) 中贡献\n- fix(Popover): 修复无法继承 scopedId 的问题，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12329](https://github.com/youzan/vant/pull/12329) 中贡献\n\n#### 文档 📖\n\n- docs: 修复 Form 中的拼写错误，由 [@zcvvvbb](https://github.com/zcvvvbb) 在 [#12322](https://github.com/youzan/vant/pull/12322) 中贡献\n- docs: 添加更多生态项目，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12338](https://github.com/youzan/vant/pull/12338) 中贡献\n- docs(ImagePreview): 改进英文文档，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12345](https://github.com/youzan/vant/pull/12345) 中贡献\n- docs: 修复将 Georqia 错误拼写为 Georgia 的问题，由 [@mahnunchik](https://github.com/mahnunchik) 在 [#12331](https://github.com/youzan/vant/pull/12331) 中贡献\n\n#### 其他变更\n\n- chore(Swipe): 限制 transform 的小数位数，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12337](https://github.com/youzan/vant/pull/12337) 中贡献\n- chore: 升级 pnpm 到 v8.8.0，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12339](https://github.com/youzan/vant/pull/12339) 中贡献\n- chore(deps): 将 postcss 从 8.4.27 升级到 8.4.31，由 [@dependabot](https://github.com/dependabot) 在 [#12341](https://github.com/youzan/vant/pull/12341) 中贡献\n\n#### 新贡献者\n\n- [@zcvvvbb](https://github.com/zcvvvbb) 在 [#12322](https://github.com/youzan/vant/pull/12322) 中首次贡献\n- [@mahnunchik](https://github.com/mahnunchik) 在 [#12331](https://github.com/youzan/vant/pull/12331) 中首次贡献\n\n### v4.7.0\n\n`2023-09-24`\n\n#### 🍭 图标更新\n\n- 图标：添加一个实底的 `records` 图标\n- 图标：添加一个实底的 `contact` 图标\n- 图标：添加一个实底的 `discount` 图标\n- 图标：添加一个实底的 `completed` 图标\n- 图标：添加一个实底的 `description` 图标\n- 图标：添加一个实底的 `cash-back-record` 图标\n- 图标：添加新的 `user` 图标\n- 图标：添加新的 `notes` 图标\n- 图标：添加新的 `newspaper` 图标\n- 图标：添加新的 `list-switch` 图标\n- 图标：添加新的 `list-switching` 图标\n- 图标：将以前的 `records` 图标重命名为 `records-o`\n- 图标：将以前的 `contact` 图标重命名为 `contact-o`\n- 图标：将以前的 `discount` 图标重命名为 `discount-o`\n- 图标：将以前的 `completed` 图标重命名为 `completed-o`\n- 图标：将以前的 `description` 图标重命名为 `description-o`\n- 图标：将以前的 `cash-back-record` 图标重命名为 `cash-back-record-o`\n\n#### 新功能 🎉\n\n- feat(Calendar): 由 [@LadyChatterleyLover](https://github.com/LadyChatterleyLover) 在 [#12274](https://github.com/youzan/vant/pull/12274) 中添加了 `click-disabled-date` 事件\n- feat(Uploader): 由 [@xieyezi](https://github.com/xieyezi) 在 [#12280](https://github.com/youzan/vant/pull/12280) 中添加了 `--van-uploader-border-radius` CSS 变量\n- feat(SwipeCell): 由 [@nined9](https://github.com/nined9) 在 [#12309](https://github.com/youzan/vant/pull/12309) 中修复了运行 `beforeClose` 时点击外部触发关闭的问题\n- feat(AddressEdit): 由 [@zhousg](https://github.com/zhousg) 在 [#12310](https://github.com/youzan/vant/pull/12310) 中为姓名和电话输入添加了 `change` 事件\n- types(Dialog): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12316](https://github.com/youzan/vant/pull/12316) 中改进了 `showDialog` 的返回类型\n\n#### Bug 修复 🐞\n\n- fix(Picker): 由 [@lllomh](https://github.com/lllomh) 在 [#12300](https://github.com/youzan/vant/pull/12300) 中修复了弹出窗口的内容与中文版本不一致的问题\n- fix(Signature): 由 [@sywyyhykkk](https://github.com/sywyyhykkk) 在 [#12304](https://github.com/youzan/vant/pull/12304) 中修复了当设置了背景颜色时检查画布是否为空的问题\n- fix(FloatingPanel): 由 [@zhousg](https://github.com/zhousg) 在 [#12314](https://github.com/youzan/vant/pull/12314) 中修复了向下拖动导致页面移动的问题\n\n#### 文档 📖\n\n- docs(Picker): 由 [@MrXwq](https://github.com/MrXwq) 在 [#12275](https://github.com/youzan/vant/pull/12275) 中改进了 Picker 的文档\n- docs(Uploader): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12289](https://github.com/youzan/vant/pull/12289) 中添加了有关相机权限的常见问题解答\n\n#### 其他变更\n\n- test(Dialog): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12315](https://github.com/youzan/vant/pull/12315) 中启用了函数调用测试用例\n- fix(cli): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12292](https://github.com/youzan/vant/pull/12292) 中允许在发布时缺少构建脚本\n\n#### 新贡献者\n\n- [@nined9](https://github.com/nined9) 在 [#12309](https://github.com/youzan/vant/pull/12309) 中进行了首次贡献\n- [@sywyyhykkk](https://github.com/sywyyhykkk) 在 [#12304](https://github.com/youzan/vant/pull/12304) 中进行了首次贡献\n\n### v4.6.8\n\n`2023-09-10`\n\n#### 新功能 🎉\n\n- feat(Cell): 添加 CSS 变量用于自定义 Value 的字体大小 by [@inottn](https://github.com/inottn) in [#12260](https://github.com/youzan/vant/pull/12260)\n- feat(ConfigProvider): 补充 ConfigProviderThemeVars 的类型声明 by [@xieyezi](https://github.com/xieyezi) in [#12264](https://github.com/youzan/vant/pull/12264)\n- feat(NavBar): 添加 leftDisabled 和 rightDisabled 属性 by [@m-xlsea](https://github.com/m-xlsea) in [#12258](https://github.com/youzan/vant/pull/12258)\n\n#### Bug 修复 🐞\n\n- fix(ConfigProvider): 修复设置某些基础主题变量失败的问题 by [@chenjiahan](https://github.com/chenjiahan) in [#12272](https://github.com/youzan/vant/pull/12272)\n- fix(ConfigProvider): 修复 ConfigProviderThemeVars 的 fontSizeXs 命名错误 by [@xieyezi](https://github.com/xieyezi) in [#12267](https://github.com/youzan/vant/pull/12267)\n\n#### 文档 📖\n\n- docs(NavBar): 添加禁用按钮示例 by [@chenjiahan](https://github.com/chenjiahan) in [#12270](https://github.com/youzan/vant/pull/12270)\n\n#### 其他变更\n\n- chore(CI): 启用单一提交以减小仓库大小 by [@chenjiahan](https://github.com/chenjiahan) in [#12268](https://github.com/youzan/vant/pull/12268)\n- chore(CI): 升级 actions 版本 by [@chenjiahan](https://github.com/chenjiahan) in [#12269](https://github.com/youzan/vant/pull/12269)\n- chore: 将 Axure 文件移动到 vant-assets 仓库 by [@chenjiahan](https://github.com/chenjiahan) in [#12271](https://github.com/youzan/vant/pull/12271)\n\n#### 新贡献者\n\n- [@xieyezi](https://github.com/xieyezi) 在 [#12264](https://github.com/youzan/vant/pull/12264) 中首次贡献\n- [@m-xlsea](https://github.com/m-xlsea) 在 [#12258](https://github.com/youzan/vant/pull/12258) 中首次贡献\n\n### v4.6.7\n\n`2023-09-04`\n\n#### 新功能 🎉\n\n- feat(vant-use): 添加 useRaf，由 [@Simon-He95](https://github.com/Simon-He95) 在 [#12211](https://github.com/youzan/vant/pull/12211) 中贡献\n- feat(Checkbox): 添加不确定状态，由 [@wjw-gavin](https://github.com/wjw-gavin) 在 [#12216](https://github.com/youzan/vant/pull/12216) 中贡献\n- feat(auto-import-resolver): 添加 auto-import-resolver 包，由 [@wChenonly](https://github.com/wChenonly) 在 [#12227](https://github.com/youzan/vant/pull/12227) 中贡献\n- feat(ConfigProvider): 添加 theme-vars-scope 属性以启用根作用域影响，由 [@zhousg](https://github.com/zhousg) 在 [#12240](https://github.com/youzan/vant/pull/12240) 中贡献\n\n#### 问题修复 🐞\n\n- fix(auto-import-resolver): 修复 TS 项目中的类型不匹配问题，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12243](https://github.com/youzan/vant/pull/12243) 中贡献\n- fix(eslint): 使用 ignorePatterns 替代 .eslintignore，由 [@MrXwq](https://github.com/MrXwq) 在 [#12237](https://github.com/youzan/vant/pull/12237) 中贡献\n\n#### 文档 📖\n\n- docs: 改善 back-top 的菜单位置，由 [@wjw-gavin](https://github.com/wjw-gavin) 在 [#12223](https://github.com/youzan/vant/pull/12223) 中贡献\n- docs: 改善 use-raf 文档，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12224](https://github.com/youzan/vant/pull/12224) 中贡献\n- docs: 在快速入门指南中添加 Vite 和 Nuxt 的指引，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12239](https://github.com/youzan/vant/pull/12239) 中贡献\n- docs(auto-import-resolver): 更新 README 和文件夹名称，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12241](https://github.com/youzan/vant/pull/12241) 中贡献\n- docs(auto-import-resolver): 添加 Rspack 的使用方法，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12242](https://github.com/youzan/vant/pull/12242) 中贡献\n- docs(ConfigProvider): 更新修改 CSS 变量的指南，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12246](https://github.com/youzan/vant/pull/12246) 中贡献\n\n#### 其他变更\n\n- test: 将测试运行器迁移到 vitest，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12206](https://github.com/youzan/vant/pull/12206) 中贡献\n- chore(CI): 修复 codecov 报告器，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12210](https://github.com/youzan/vant/pull/12210) 中贡献\n- chore: 对内部依赖使用 workspace 协议，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12225](https://github.com/youzan/vant/pull/12225) 中贡献\n- test: 修复 vitest 的 canvas 模拟，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12226](https://github.com/youzan/vant/pull/12226) 中贡献\n\n### v4.6.6\n\n`2023-08-20`\n\n#### 新功能 🎉\n\n- feat(DropdownItem): 支持在 options 的 value 中传入布尔值 by [@baboon-king](https://github.com/baboon-king) in [#12208](https://github.com/youzan/vant/pull/12208)\n\n#### Bug 修复 🐞\n\n- fix(FloatingBubble): 拖动时不应触发子元素的点击事件 by [@zhousg](https://github.com/zhousg) in [#12201](https://github.com/youzan/vant/pull/12201)\n- fix(FloatingBubble): 隐藏时不更新状态 by [@zhousg](https://github.com/zhousg) in [#12207](https://github.com/youzan/vant/pull/12207)\n\n#### 其他变更\n\n- chore(CI): 更新 issue 评论消息的内容 by [@chenjiahan](https://github.com/chenjiahan) in [#12204](https://github.com/youzan/vant/pull/12204)\n- refactor(cli): 移除 execa 依赖 by [@chenjiahan](https://github.com/chenjiahan) in [#12205](https://github.com/youzan/vant/pull/12205)\n\n### v4.6.5\n\n`2023-08-16`\n\n#### 新功能 🎉\n\n- feat(DropdownMenu): 添加 swipe-threshold 属性 by [@inottn](https://github.com/inottn) in [#12117](https://github.com/youzan/vant/pull/12117)\n- types(Toast): 添加 `ToastWrapperInstance` 导出 by [@long-woo](https://github.com/long-woo) in [#12166](https://github.com/youzan/vant/pull/12166)\n- feat(FloatingBubble): 使用组件属性 by [@zhousg](https://github.com/zhousg) in [#12171](https://github.com/youzan/vant/pull/12171)\n\n#### Bug 修复 🐞\n\n- fix(FloatingPanel): 修复由滚动条和面板移动引起的延迟问题 #12146 by [@yue1123](https://github.com/yue1123) in [#12161](https://github.com/youzan/vant/pull/12161)\n- fix(FloatingPanel): 将 lock-scroll 的默认值更改为 false by [@inottn](https://github.com/inottn) in [#12162](https://github.com/youzan/vant/pull/12162)\n- fix(cli): 在 markdown 中应该转义花括号 by [@chenjiahan](https://github.com/chenjiahan) in [#12188](https://github.com/youzan/vant/pull/12188)\n\n#### 文档 📖\n\n- docs: 添加 bun 包管理器的说明 by [@colinhacks](https://github.com/colinhacks) in [#12182](https://github.com/youzan/vant/pull/12182)\n\n#### 其他变更\n\n- chore: 添加脚本以格式化 GitHub 更新日志 by [@chenjiahan](https://github.com/chenjiahan) in [#12158](https://github.com/youzan/vant/pull/12158)\n- chore(FloatingPanel): 改进代码风格 by [@chenjiahan](https://github.com/chenjiahan) in [#12175](https://github.com/youzan/vant/pull/12175)\n- refactor(cli): 重写 vite-plugin-md by [@chenjiahan](https://github.com/chenjiahan) in [#12179](https://github.com/youzan/vant/pull/12179)\n- chore(deps): 升级 markdown-it 到 v13 和 commander 到 v11 by [@chenjiahan](https://github.com/chenjiahan) in [#12180](https://github.com/youzan/vant/pull/12180)\n- chore(CI): 不在拉取请求中运行 codeql by [@chenjiahan](https://github.com/chenjiahan) in [#12181](https://github.com/youzan/vant/pull/12181)\n\n#### 新贡献者\n\n- [@long-woo](https://github.com/long-woo) 在 [#12166](https://github.com/youzan/vant/pull/12166) 中进行了首次贡献\n- [@yue1123](https://github.com/yue1123) 在 [#12161](https://github.com/youzan/vant/pull/12161) 中进行了首次贡献\n- [@colinhacks](https://github.com/colinhacks) 在 [#12182](https://github.com/youzan/vant/pull/12182) 中进行了首次贡献\n- [@xincheng-1999](https://github.com/xincheng-1999) 在 [#12189](https://github.com/youzan/vant/pull/12189) 中进行了首次贡献\n\n### v4.6.4\n\n`2023-08-06`\n\n#### 新功能 🎉\n\n- feat(area-data): 更新芜湖的县区数据，由 [@nivin-studio](https://github.com/nivin-studio) 在 [#12122](https://github.com/youzan/vant/pull/12122) 中贡献\n- feat(Locale): 添加塞尔维亚语到国际化，由 [@RogerZXY](https://github.com/RogerZXY) 在 [#12145](https://github.com/youzan/vant/pull/12145) 中贡献\n- feat(ImagePreview): 添加 closeOnClickOverlay 选项，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12153](https://github.com/youzan/vant/pull/12153) 中贡献\n- feat(List): 添加 scroller 属性，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12154](https://github.com/youzan/vant/pull/12154) 中贡献\n- feat(FloatingPanel): 添加 lock-scroll 属性，由 [@inottn](https://github.com/inottn) 在 [#12157](https://github.com/youzan/vant/pull/12157) 中贡献\n\n#### Bug 修复 🐞\n\n- fix(TextEllipsis): 修复省略号重复出现的问题，由 [@muzaisimao](https://github.com/muzaisimao) 在 [#12120](https://github.com/youzan/vant/pull/12120) 中贡献\n- fix(TextEllipsis): 修复计算省略号位置的逻辑问题，由 [@inottn](https://github.com/inottn) 在 [#12137](https://github.com/youzan/vant/pull/12137) 中贡献\n\n#### 文档 📖\n\n- docs: 将 PR 标题格式移至贡献指南，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12114](https://github.com/youzan/vant/pull/12114) 中贡献\n- docs(Radio): 添加对 css 变量 '--van-radio-dot-size' 的文档描述，由 [@wjw-gavin](https://github.com/wjw-gavin) 在 [#12152](https://github.com/youzan/vant/pull/12152) 中贡献\n\n#### 其他更改\n\n- chore: 避免 prettier 破坏 hbs 模板 by [@chenjiahan](https://github.com/chenjiahan) in [#12113](https://github.com/youzan/vant/pull/12113)\n- chore(deps): 升级 release-it v16 by [@chenjiahan](https://github.com/chenjiahan) in [#12115](https://github.com/youzan/vant/pull/12115)\n- feat(get-deps): 将 import('../foo.vue') 替换为 import('../foo.mjs') by [@suncohey](https://github.com/suncohey) in [#12046](https://github.com/youzan/vant/pull/12046)\n- refactor(cli): 重写 release 命令 by [@chenjiahan](https://github.com/chenjiahan) in [#12133](https://github.com/youzan/vant/pull/12133)\n- feat(cli): 为 release 命令添加 gitTag 选项支持 by [@chenjiahan](https://github.com/chenjiahan) in [#12134](https://github.com/youzan/vant/pull/12134)\n- chore(CI): 通过 GitHub 自动生成变更日志 by [@chenjiahan](https://github.com/chenjiahan) in [#12135](https://github.com/youzan/vant/pull/12135)\n- chore: 添加 PR 标签动作 by [@chenjiahan](https://github.com/chenjiahan) in [#12136](https://github.com/youzan/vant/pull/12136)\n- chore(TextEllipsis): 重用 actionText 变量 by [@chenjiahan](https://github.com/chenjiahan) in [#12138](https://github.com/youzan/vant/pull/12138)\n- refactor(cli): 使用 GitHub 变更日志替代 conventional-changelog by [@chenjiahan](https://github.com/chenjiahan) in [#12139](https://github.com/youzan/vant/pull/12139)\n- chore: 添加塞尔维亚文档并重命名文件 by [@chenjiahan](https://github.com/chenjiahan) in [#12150](https://github.com/youzan/vant/pull/12150)\n- chore(eslint-config): 升级依赖项 by [@chenjiahan](https://github.com/chenjiahan) in [#12155](https://github.com/youzan/vant/pull/12155)\n\n#### 新贡献者\n\n- [@muzaisimao](https://github.com/muzaisimao) 在 [#12120](https://github.com/youzan/vant/pull/12120) 中首次贡献\n- [@suncohey](https://github.com/suncohey) 在 [#12046](https://github.com/youzan/vant/pull/12046) 中首次贡献\n- [@nivin-studio](https://github.com/nivin-studio) 在 [#12122](https://github.com/youzan/vant/pull/12122) 中首次贡献\n- [@RogerZXY](https://github.com/RogerZXY) 在 [#12145](https://github.com/youzan/vant/pull/12145) 中首次贡献\n\n### [v4.6.3](https://github.com/vant-ui/vant/compare/v4.6.2...v4.6.3)\n\n`2023-07-23`\n\n**Feature**\n\n- AddressList: 新增 show-add-button 属性 [#12090](https://github.com/vant-ui/vant/issues/12090)\n- CheckboxGroup: 新增 shape 属性 [#12092](https://github.com/vant-ui/vant/issues/12092)\n- RadioGroup: 新增 shape 属性 [#12092](https://github.com/vant-ui/vant/issues/12092)\n\n**Bug Fixes**\n\n- FloatingBubble: 修复全局组件类型定义错误 [#12101](https://github.com/vant-ui/vant/issues/12101)\n- Tab: 修复导入路径错误 [#12103](https://github.com/vant-ui/vant/issues/12103)\n\n### [v4.6.2](https://github.com/vant-ui/vant/compare/v4.6.1...v4.6.2)\n\n`2023-07-09`\n\n**Feature**\n\n- Field: 新增 autocapitalize，autocorrect 和 spellcheck 属性 [#12065](https://github.com/vant-ui/vant/issues/12065)\n- FloatingBubble: 新增 CSS 变量用于自定义圆角 [#12070](https://github.com/vant-ui/vant/issues/12070)\n- Radio: 新增 dot 属性 [#12057](https://github.com/vant-ui/vant/issues/12057)\n- TextEllipsis: 新增 position 属性，由 [cxybd](https://github.com/cxybd) 贡献 ❤️ [#12058](https://github.com/vant-ui/vant/issues/12058)\n\n**Bug Fixes**\n\n- FloatingBubble: 修复边界错误 [#12067](https://github.com/vant-ui/vant/issues/12067)\n- Pagination: 修复边框渲染错误 [#12062](https://github.com/vant-ui/vant/issues/12062)\n\n### [v4.6.1](https://github.com/vant-ui/vant/compare/v4.6.0...v4.6.1)\n\n`2023-07-02`\n\n**Feature**\n\n- ellipsis: 改进中文、日文或韩文文本的换行符 [#12030](https://github.com/vant-ui/vant/issues/12030)\n\n**Bug Fixes**\n\n- FloatingBubble: 修复 floatingBubbleBackground 类型问题 [#12029](https://github.com/vant-ui/vant/issues/12029)\n- SubmitBar: 移除多余的 theme 类型定义 [#12031](https://github.com/vant-ui/vant/issues/12031)\n- Uploader: 修复 base64 图片预览导致的性能问题 [#12051](https://github.com/vant-ui/vant/issues/12051)\n\n### [v4.6.0](https://github.com/vant-ui/vant/compare/v4.5.0...v4.6.0)\n\n`2023-06-24`\n\n**New Component**\n\n- 新增 FloatingBubble 组件，由 [@zhousg](https://github.com/zhousg) 贡献 ❤️ [#11880](https://github.com/vant-ui/vant/issues/11880)\n- 新增 RollingText 组件，由 [@cunzaizhuyi](https://github.com/cunzaizhuyi) 贡献 ❤️ [#11911](https://github.com/vant-ui/vant/issues/11911)\n\n**Feature**\n\n- Rate: 新增 clearable 属性 [#11969](https://github.com/vant-ui/vant/issues/11969)\n\n**Bug Fixes**\n\n- DropdownMenu: 修复缺少类型导出的问题 [#11979](https://github.com/vant-ui/vant/issues/11979)\n- Field: 修复使用 input 插槽时设置了多余的 label `for` 属性的问题 [#11966](https://github.com/vant-ui/vant/issues/11966)\n- FloatingPanel: 修复缺少 floatingPanelProps 类型导出的问题 [#11978](https://github.com/vant-ui/vant/issues/11978)\n- FloatingPanel: 修复 passive event warning [#11992](https://github.com/vant-ui/vant/issues/11992)\n- Picker: 修复多列同时滚动时的问题 [#11945](https://github.com/vant-ui/vant/issues/11945)\n- Rate: 修复半星拖动时断触的问题 [#12002](https://github.com/vant-ui/vant/issues/12002)\n\n### [v4.5.0](https://github.com/vant-ui/vant/compare/v4.4.1...v4.5.0)\n\n`2023-06-11`\n\n**New Component**\n\n- 新增 FloatingPanel 组件，由 [@zhousg](https://github.com/zhousg) 贡献 ❤️ [#11832](https://github.com/vant-ui/vant/issues/11832)\n\n**Feature**\n\n- AddressList: 新增 right-icon 属性 [#11959](https://github.com/vant-ui/vant/issues/11959)\n- DropdownMenu: 新增 close 方法 [#11921](https://github.com/vant-ui/vant/issues/11921)\n- Slider: 新增 button 插槽的 dragging 参数 [#11946](https://github.com/vant-ui/vant/issues/11946)\n- TimePicker: 新增 min-time 和 max-time 属性 [#11887](https://github.com/vant-ui/vant/issues/11887)\n- TimePicker: 新增 filter 属性的 values 参数 [#11916](https://github.com/vant-ui/vant/issues/11916)\n- CI: 增加 issue helper [#11963](https://github.com/vant-ui/vant/issues/11963)\n\n**Bug Fixes**\n\n- BackTop: 修复 deactivated 时未隐藏的问题 [#11938](https://github.com/vant-ui/vant/issues/11938)\n\n### [v4.4.1](https://github.com/vant-ui/vant/compare/v4.4.0...v4.4.1)\n\n`2023-05-28`\n\n**Feature**\n\n- Popover: 新增 actions-direction 属性 [#11888](https://github.com/vant-ui/vant/issues/11888)\n\n**Bug Fixes**\n\n- ImagePreview: 修复初始化时可能有过渡动画的问题 [#11897](https://github.com/vant-ui/vant/issues/11897)\n- Popup: 修复 duration 为 0 时 opened 事件触发两次的问题 [#11902](https://github.com/vant-ui/vant/issues/11902)\n- Slider: 修复点击可能无法触发 change 事件的问题 [#11904](https://github.com/vant-ui/vant/issues/11904)\n- Tab: 修复 title-class 和 title-style 属性可能导致死循环的问题 [#11898](https://github.com/vant-ui/vant/issues/11898)\n\n### [v4.4.0](https://github.com/vant-ui/vant/compare/v4.3.2...v4.4.0)\n\n`2023-05-21`\n\n**New Component**\n\n- 新增 Barrage 组件，由 [@zhousg](https://github.com/zhousg) 贡献 ❤️ [#11760](https://github.com/vant-ui/vant/issues/11760)\n\n**Feature**\n\n- Cascader: 切换 Tab 时自动滚动到选中项 [#11869](https://github.com/vant-ui/vant/issues/11869)\n- Divider: 新增 vertical 属性 [#11883](https://github.com/vant-ui/vant/issues/11883)\n- Document: 支持点击标题时自动调整右侧示例到相应的位置 [#11879](https://github.com/vant-ui/vant/issues/11879)\n- ImagePreview: 优化长图的默认展示效果 [#11857](https://github.com/vant-ui/vant/issues/11857)\n- Signature: 优化签名的清晰度 [#11835](https://github.com/vant-ui/vant/issues/11835)\n- Uploader: 新增 reupload prop [#11854](https://github.com/vant-ui/vant/issues/11854)\n\n**Bug Fixes**\n\n- AddressEdit: 修复多余的底部边框 [#11872](https://github.com/vant-ui/vant/issues/11872)\n- Area: 修复多余的 allow-html 和 show-toolbar props 定义 [#11871](https://github.com/vant-ui/vant/issues/11871)\n- BackTop: 默认使用最近的父级滚动元素作为 target [#11858](https://github.com/vant-ui/vant/issues/11858)\n- ContactList: 优化样式和图标大小 [#11873](https://github.com/vant-ui/vant/issues/11873)\n- DatePicker: 修复外部设置 modelValue 时展示错误的问题 [#11839](https://github.com/vant-ui/vant/issues/11839)\n- Dialog: 修复点击按钮时圆角错误的问题 [#11863](https://github.com/vant-ui/vant/issues/11863)\n\n### [v4.3.2](https://github.com/vant-ui/vant/compare/v4.3.1...v4.3.2)\n\n`2023-05-14`\n\n**Feature**\n\n- ImagePreview: 支持基于手指位置进行缩放 [#11848](https://github.com/vant-ui/vant/issues/11848)\n- PickerGroup: 支持控制当前 Tab 的位置 [#11771](https://github.com/vant-ui/vant/issues/11771)\n- Checkbox: 支持在达到最大选择数量时自动禁用其他选项 [#11814](https://github.com/vant-ui/vant/issues/11814)\n\n**Bug Fixes**\n\n- Filed: 修复点击 label 会触发两次 click 事件的问题 [#11838](https://github.com/vant-ui/vant/issues/11838)\n- Steps: 修复只有一个 Step 时样式错误的问题 [#11822](https://github.com/vant-ui/vant/issues/11822)\n- SubmitBar: 移除多余的 CSS 变量 [#11845](https://github.com/vant-ui/vant/issues/11845)\n- Tab: 修复下划线动画可能错误的问题 [#11819](https://github.com/vant-ui/vant/issues/11819)\n\n### [v4.\n\n<!-- [TRUNCATED AT 50KB] -->","packages/vant/docs/markdown/contribution.en-US.md":"# Contribution Guide\n\n### Introduction\n\nThank you for using Vant.\n\nBelow are the guidelines for submitting feedback or code to Vant. Please take a few minutes to read the following before submitting an issue or PR to Vant.\n\n### Issue Specification\n\n- If you encountered a problem, please first confirm whether the problem has been recorded in the issue or has been fixed.\n- When submitting an issue, please describe the problem you encountered in a short language, and add the environment and reproduction steps when the problem occurs.\n\n## Participate in development\n\n### Local development\n\nBefore developing locally, please make sure that [Node.js >= 18](https://nodejs.org) is installed in your development environment.\n\nFollow the steps below to develop Vant components locally.\n\n```bash\n# Clone repository\ngit clone git@github.com:vant-ui/vant.git\n\n# Enable pnpm package manager\ncorepack enable\n\n# Install dependencies\npnpm i\n\n# Start development\npnpm dev\n```\n\nDifferent branches of the repository correspond to different Vant versions, please switch to the appropriate branch for development:\n\n- The main branch corresponds to the Vant 4 version, suitable for Vue 3\n- 3.x branch corresponds to Vant 3 version, suitable for Vue 3\n- 2.x branch corresponds to Vant 2 version, suitable for Vue 2\n\n### Directory Structure\n\nVant uses monorepo for code management, and all subpackages are in the `packages/vant` directory:\n\n```\nroot\n└─ packages\n   ├─ vant        # Component library\n   ├─ vant-cli    # Scaffolding\n   ├─ vant-icons  # Icon library\n   ├─ vant-use    # Composition API\n   └─ ....        # Other npm packages\n```\n\nAmong them, the `packages/vant` directory is the core code of the component library:\n\n```\nvant\n├─ docs             # Documentation\n├─ src              # Component source code\n├─ test             # Test utils\n└─ vant.config.mjs  # Document configuration\n```\n\nThe `packages/vant/src` directory contains the source code of each component, and each folder corresponds to a component:\n\n```\nsrc\n└─ button\n   ├─ demo             # Demo code\n   ├─ test             # Unit test\n   ├─ Component.tsx    # Component\n   ├─ index.ts         # Component entry\n   ├─ index.less       # Styles\n   ├─ README.md        # English document\n   └─ README.zh-CN.md  # Chinese document\n```\n\n### Code Specification\n\nWhen writing code, please note:\n\n- Make sure the code can pass the repository's lint check (`pnpm lint`).\n- Format the code with Rstack CLI (`pnpm exec rs fmt`).\n- Make sure you don't use incompatible APIs like `async`, `await`.\n\n## Submitting a Pull Request\n\n### Reference Guide\n\nIf this is your first time submitting a pull request on GitHub, you can learn from the following article:\n\n- [First participation in open source](https://github.com/firstcontributions/first-contributions/blob/main/docs/translations/README.en-pirate.md)\n\n### Pull Request Specification\n\nWhen submitting a Pull Request, please note:\n\n- Keep your PRs small enough that a PR only addresses a single issue or adds a single feature.\n- When adding new components or modifying original components, remember to add or modify the corresponding unit tests to ensure the stability of the code.\n- Please include an appropriate description in the PR, and link related issues.\n\n### Pull Request Process\n\n1. Fork the main repository. If you have already forked, please synchronize the latest code from the main repository.\n2. Create a new branch based on the main branch of the repository after the fork, such as `feature/button_color`.\n3. Develop on the new branch. When development is complete, submit a pull request to the main branch of the main repository.\n4. The pull request is merged into the main repository after the review is approved.\n5. Wait for Vant to release a new version, usually once a week.\n\n### Pull Request Title Format\n\nThe title of the Pull Request should be in the following format:\n\n```bash\ntype(ComponentName?)：commit message\n```\n\nExample：\n\n- docs: fix typo in quickstart\n- build: optimize build speed\n- fix(Button): incorrect style\n- feat(Button): add color prop\n\nAllowed Types:\n\n- fix\n- feat\n- docs\n- perf\n- test\n- types\n- style\n- build\n- chore\n- release\n- refactor\n- breaking change\n- revert:\n\n### Synchronize the latest code\n\nBefore submitting a Pull Request, please synchronize the latest code of the main repository according to the following process:\n\n```bash\n# Add the main repository to remote\ngit remote add upstream git@github.com:vant-ui/vant.git\n\n# Pull the latest code from the main repository\ngit fetch upstream\n\n# Switch to the main branch\ngit checkout main\n\n# Merge the code from the main repository\ngit merge upstream/main\n```\n","packages/vant/docs/markdown/contribution.zh-CN.md":"# 贡献指南\n\n### 介绍\n\n感谢你使用 Vant。\n\n以下是关于向 Vant 提交反馈或代码的指南。在向 Vant 提交 issue 或者 PR 之前，请先花几分钟时间阅读以下内容。\n\n### Issue 规范\n\n- 遇到问题时，请先确认这个问题是否已经在 issue 中有记录或者已被修复。\n- 提 issue 时，请用简短的语言描述遇到的问题，并添加出现问题时的环境和复现步骤。\n\n## 参与开发\n\n### 本地开发\n\n在进行本地开发前，请先确保你的开发环境中安装了 [Node.js >= 18](https://nodejs.org)。\n\n按照下面的步骤操作，即可在本地开发 Vant 组件。\n\n```bash\n# 克隆仓库\ngit clone git@github.com:vant-ui/vant.git\n\n# 启用 pnpm 包管理器\ncorepack enable\n\n# 安装依赖\npnpm i\n\n# 进入开发模式，浏览器访问 localhost\npnpm dev\n```\n\n仓库的不同分支对应不同的 Vant 版本，请切换到对应分支进行开发：\n\n- main 分支对应 Vant 4 版本，适用于 Vue 3\n- 3.x 分支对应 Vant 3 版本 ，适用于 Vue 3\n- 2.x 分支对应 Vant 2 版本，适用于 Vue 2\n\n### 目录结构\n\nVant 采用 monorepo 进行代码管理，所有子包在 `packages` 目录下:\n\n```\nroot\n└─ packages\n   ├─ vant        # 组件库\n   ├─ vant-cli    # 脚手架\n   ├─ vant-icons  # 图标库\n   ├─ vant-use    # Composition API\n   └─ ....        # 其他周边 npm 包\n```\n\n其中，`packages/vant` 目录为组件库的核心代码：\n\n```\nvant\n├─ docs             # 文档\n├─ src              # 组件源代码\n├─ test             # 单测工具类\n└─ vant.config.mjs  # 文档网站配置\n```\n\n`packages/vant/src` 目录包含各个组件的源码，每个文件夹对应一个组件：\n\n```\nsrc\n└─ button\n   ├─ demo             # 示例代码\n   ├─ test             # 单元测试\n   ├─ Component.tsx    # 组件\n   ├─ index.ts         # 组件入口\n   ├─ index.less       # 样式\n   ├─ README.md        # 英文文档\n   └─ README.zh-CN.md  # 中文文档\n```\n\n### 代码规范\n\n在编写代码时，请注意：\n\n- 确保代码可以通过仓库的 lint 校验（`pnpm lint`）。\n- 使用 Rstack CLI（`pnpm exec rs fmt`）规范化代码格式。\n- 确保没有使用超出兼容性范围的 API，比如 `async`, `await`.\n\n## 提交 Pull Request\n\n### 参考指南\n\n如果你是第一次在 GitHub 上提 Pull Request ，可以阅读下面这两篇文章来学习：\n\n- [第一次参与开源](https://github.com/firstcontributions/first-contributions/blob/main/docs/translations/README.zh-cn.md)\n- [如何优雅地在 GitHub 上贡献代码](https://segmentfault.com/a/1190000000736629)\n\n### Pull Request 规范\n\n在提交 Pull Request 时，请注意：\n\n- 保持你的 PR 足够小，一个 PR 只解决单个问题或添加单个功能。\n- 当新增组件或者修改原有组件时，记得增加或者修改对应的单元测试，保证代码的稳定。\n- 在 PR 中请添加合适的描述，并关联相关的 Issue。\n\n### Pull Request 流程\n\n1. fork 主仓库，如果已经 fork 过，请同步主仓库的最新代码。\n2. 基于 fork 后仓库的 main 分支新建一个分支，比如 `feature/button_color`。\n3. 在新分支上进行开发，开发完成后，提 Pull Request 到主仓库的 main 分支。\n4. Pull Request 会在 Review 通过后被合并到主仓库。\n5. 等待 Vant 发布新版本，一般是每周一次。\n\n### Pull Request 标题格式\n\nPull Request 的标题应该遵循以下格式：\n\n```bash\ntype(ComponentName?)：commit message\n```\n\n示例：\n\n- docs: fix typo in quickstart\n- build: optimize build speed\n- fix(Button): incorrect style\n- feat(Button): add color prop\n\n可选的类型：\n\n- fix\n- feat\n- docs\n- perf\n- test\n- types\n- style\n- build\n- chore\n- release\n- refactor\n- breaking change\n- revert:\n\n### 同步最新代码\n\n提 Pull Request 前，请依照下面的流程同步主仓库的最新代码：\n\n```bash\n# 添加主仓库到 remote\ngit remote add upstream git@github.com:vant-ui/vant.git\n\n# 拉取主仓库最新代码\ngit fetch upstream\n\n# 切换至 main 分支\ngit checkout main\n\n# 合并主仓库代码\ngit merge upstream/main\n```\n","packages/vant/docs/markdown/design.en-US.md":"# Design Resource\n\n### Intro\n\nYou can download Vant's design resources here.\n\n## Resources\n\n### Components (Sketch)\n\nContains color specifications, font specifications, and component design specifications.\n\n#### Colors\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/color_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n#### Fonts\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/words_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n#### Components\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/tab_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant/blob/main/packages/vant/docs/assets/design.sketch?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">Download</a>\n\n### Icons (Sketch)\n\nContains icon library resources.\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/design-icons-0321.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant/blob/main/packages/vant-icons/assets/icons.sketch?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">Download</a>\n\n### Axure\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/vant-axure-0905.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant-assets/blob/main/design/axure-20200905.zip?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">Download</a>\n","packages/vant/docs/markdown/design.zh-CN.md":"# 设计资源\n\n### 介绍\n\n本页面提供 Vant 的设计资源下载。\n\n## 设计稿\n\n### 组件设计稿（Sketch）\n\n包含 Sketch 格式的色彩规范、字体规范、组件设计规范。\n\n#### 色彩规范\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/color_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n#### 字体规范\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/words_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n#### 组件规范\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/tab_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant/blob/main/packages/vant/docs/assets/design.sketch?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">下载</a>\n\n### 图标设计稿（Sketch）\n\n包含 Sketch 格式的图标库资源。\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/design-icons-0321.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant/blob/main/packages/vant-icons/assets/icons.sketch?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">下载</a>\n\n#### 在线资源\n\nVant 的所有图标都托管在 **iconfont.cn** 上，点此查看：[Vant 图标库](https://www.iconfont.cn/collections/detail?spm=a313x.7781069.1998910419.d9df05512&cid=31945)。\n\n### Axure 元件库\n\nAxure 元件库，由社区的 [@axure-tczy](https://github.com/axure-tczy) 同学贡献。\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/vant-axure-0905.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant-assets/blob/main/design/axure-20200905.zip?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">下载</a>\n","packages/vant/docs/markdown/faq.en-US.md":"# FAQ\n\n### How do I customize the style of Vant components?\n\n#### 1. Theme customization\n\nVant provides the ability to customize the theme based on CSS variables, and can uniformly modify the component style. For details, see [ConfigProvider Global Configuration](#/en-US/config-provider) component.\n\n#### 2. Overriding the default style\n\nIf the theme customization does not meet your needs, you can also override the default style using a **custom style class**, see the following example:\n\n```html\n<template>\n  <van-button class=\"my-button\">Button</van-button>\n</template>\n\n<style>\n  /** Override the style of Button's root element */\n  .my-button {\n    width: 200px;\n  }\n\n  /** Override the style of Button's child elements */\n  .my-button.van-button__text {\n    color: red;\n  }\n</style>\n```\n\n### Components not rendering correctly in HTML?\n\nWhen using Vant components in HTML, you may encounter situations where some sample code may not render correctly, such as the following usage:\n\n```html\n<van-cell-group>\n  <van-cell title=\"cell\" value=\"content\" />\n  <van-cell title=\"cell\" value=\"content\" />\n</van-cell-group>\n```\n\nThis is because HTML does not support self-closing custom elements, so syntax like `<van-cell />` is not recognized. Using a closing tag can work around this problem:\n\n```html\n<van-cell-group>\n  <van-cell title=\"cell\" value=\"content\"></van-cell>\n  <van-cell title=\"cell\" value=\"content\"></van-cell>\n</van-cell-group>\n```\n\nSelf-closing custom elements are available in single-file components, string templates, and JSX, so this problem doesn't arise.\n\n### Can't trigger the click feedback on iOS?\n\nThis is because iOS Safari does not trigger the `:active` pseudo-class by default. The solution is to add an empty `ontouchstart` attribute to the `body` tag:\n\n```html\n<body ontouchstart=\"\">\n  ...\n</body>\n```\n\nReference link: [stackoverflow - :active pseudo-class doesn't work in mobile safari](https://stackoverflow.com/questions/3885018/active-pseudo-class-doesnt-work-in-mobile-safari/33681490#33681490)\n\n### Why is there no Select component?\n\nSelect is a widely used component on the desktop, but its interactive form is not suitable for the mobile device.\n\nOn the mobile side, we recommend using the [Picker selector component](#/en-US/picker) instead.\n\n### Is it supported in uni-app?\n\nAll components of Vant are implemented based on the Vue framework and are not adapted to uni-app, so the availability of each component under uni-app is not guaranteed.\n\nIf you encounter problems using Vant in uni-app, it is recommended to provide feedback to uni-app.\n\n### Some components do not work on the desktop?\n\nSee [Adapt to PC Browsers](#/en-US/advanced-usage#adapt-to-pc-browsers).\n\n### How do I implement mobile responsive adaptation?\n\nSee [Browser Adaptation](#/en-US/advanced-usage#browser-adaptation).\n","packages/vant/docs/markdown/faq.zh-CN.md":"# 常见问题\n\n### 如何自定义 Vant 组件的样式？\n\n#### 1. 主题定制\n\nVant 基于 CSS 变量提供了主题定制的能力，可以对组件样式进行统一修改，详见 [ConfigProvider 全局配置](#/zh-CN/config-provider) 组件。\n\n#### 2. 覆盖默认样式\n\n如果主题定制不能满足你的需求，也可以通过**自定义样式类**来覆盖默认样式，参考下面的示例：\n\n```html\n<template>\n  <van-button class=\"my-button\">按钮</van-button>\n</template>\n\n<style>\n  /** 覆盖 Button 最外层元素的样式 */\n  .my-button {\n    width: 200px;\n  }\n\n  /** 覆盖 Button 内部子元素的样式 */\n  .my-button .van-button__text {\n    color: red;\n  }\n</style>\n```\n\n### 在 HTML 中无法正确渲染组件？\n\n在 HTML 中使用 Vant 组件时，你可能会碰到部分示例代码无法正确渲染的情况，比如下面的用法：\n\n```html\n<van-cell-group>\n  <van-cell title=\"单元格\" value=\"内容\" />\n  <van-cell title=\"单元格\" value=\"内容\" />\n</van-cell-group>\n```\n\n这是因为 HTML 并不支持自闭合的自定义元素，也就是说 `<van-cell />` 这样的语法是不被识别的，使用完整的闭合标签可以避免这个问题：\n\n```html\n<van-cell-group>\n  <van-cell title=\"单元格\" value=\"内容\"></van-cell>\n  <van-cell title=\"单元格\" value=\"内容\"></van-cell>\n</van-cell-group>\n```\n\n在单文件组件、字符串模板和 JSX 中可以使用自闭合的自定义元素，因此不会出现这个问题。\n\n### 在 iOS 上无法触发组件的点击反馈效果？\n\n这是因为 iOS Safari 默认不会触发 `:active` 伪类，解决方法是在 `body` 标签上添加一个空的 `ontouchstart` 属性：\n\n```html\n<body ontouchstart=\"\">\n  ...\n</body>\n```\n\n参考链接：[stackoverflow - :active pseudo-class doesn't work in mobile safari](https://stackoverflow.com/questions/3885018/active-pseudo-class-doesnt-work-in-mobile-safari/33681490#33681490)\n\n### 为什么没有 Select 组件？\n\nSelect 是桌面端常用的组件，但它的交互形式不适合移动端。\n\n在移动端，我们推荐使用 [Picker 选择器组件](#/zh-CN/picker) 作为代替。\n\n### 是否支持在 uni-app 中使用？\n\nVant 所有组件都是基于 Vue 框架实现的，没有针对 uni-app 进行适配，因此不保证各个组件在 uni-app 下的可用性。\n\n如果你在 uni-app 中使用 Vant 遇到问题，建议向 uni-app 进行反馈。\n\n### 部分组件无法在桌面端进行操作？\n\n参见[桌面端适配](#/zh-CN/advanced-usage#zhuo-mian-duan-gua-pei)。\n\n### 如何进行移动端响应式适配？\n\n参见[浏览器适配](#/zh-CN/advanced-usage#liu-lan-qi-gua-pei)。\n","packages/vant/docs/markdown/home.en-US.md":"<div class=\"van-doc-card\">\n  <div class=\"van-doc-intro\">\n    <img class=\"van-doc-intro__logo\" style=\"width: 120px; height: 120px;\" src=\"https://fastly.jsdelivr.net/npm/@vant/assets/logo.png\">\n    <h2 style=\"margin: 0; font-size: 36px; line-height: 60px;\">Vant</h2>\n    <p>A lightweight, customizable Vue UI library for mobile web apps.</p>\n  </div>\n</div>\n\n### Features\n\n- 🚀 1KB Component average size (min+gzip)\n- 🚀 80+ High quality components\n- 🚀 Zero third-party dependencies\n- 💪 90%+ Unit test coverage\n- 💪 Written in TypeScript\n- 📖 Extensive documentation and demos\n- 📖 Provide Sketch and Axure design resources\n- 🍭 Support Vue 2 & Vue 3\n- 🍭 Support Nuxt 2 & Nuxt 3, provide [Vant Module](https://github.com/vant-ui/vant-nuxt) for Nuxt\n- 🍭 Support Tree Shaking\n- 🍭 Support Custom Theme\n- 🍭 Support Accessibility (still improving)\n- 🍭 Support Dark Mode\n- 🍭 Support SSR\n- 🌍 Support i18n, built-in 30+ languages\n\n### Scaffold\n\nIt is recommended to use [Rsbuild](https://github.com/web-infra-dev/rsbuild) to create a scaffold project.\n\nRsbuild is a build tool based on Rspack, developed by the author of Vant, with first-class build speed and development experience, providing first-priority support for Vant.\n\nYou can create a Rsbuild project with the following command:\n\n```bash\nnpm create rsbuild@latest\n```\n\nPlease visit the [Rsbuild repository](https://github.com/web-infra-dev/rsbuild) for more information.\n\n### Quickstart\n\nSee in [Quickstart](#/en-US/quickstart).\n\n### Browser Support\n\nVant 2 supports modern browsers and Android >= 4.0、iOS >= 8.0.\n\nVant 3/4 supports modern browsers and Chrome >= 51、iOS >= 10.0 (same as Vue 3).\n\n### Maintenance Status\n\nThe current maintenance status of each version of Vant is as follows:\n\n| Name | Framework | Release | Latest Version | Status |\n| --- | --- | --- | --- | --- |\n| Vant 4 | Vue 3 | `2022.12` | ![](https://img.shields.io/npm/v/vant/latest?style=flat-square) | Long-term support |\n| Vant 3 | Vue 3 | `2020.12` | ![](https://img.shields.io/npm/v/vant/latest-v3?style=flat-square) | End of life |\n| Vant 2 | Vue 2 | `2019.06` | ![](https://img.shields.io/npm/v/vant/latest-v2?style=flat-square) | End of life |\n| Vant 1 | Vue 2 | `2018.03` | ![](https://img.shields.io/npm/v/vant/latest-v1?style=flat-square) | End of life |\n\n## Links\n\n### Official Ecosystem\n\n| Project | Description |\n| --- | --- |\n| [vant-weapp](https://github.com/vant-ui/vant-weapp) | WeChat MiniProgram UI |\n| [vant-demo](https://github.com/vant-ui/vant-demo) | Collection of Vant demos |\n| [vant-cli](https://github.com/vant-ui/vant/tree/main/packages/vant-cli) | Scaffold for UI library |\n| [vant-icons](https://github.com/vant-ui/vant/tree/main/packages/vant-icons) | Vant icons |\n| [vant-touch-emulator](https://github.com/vant-ui/vant/tree/main/packages/vant-touch-emulator) | Using vant in desktop browsers |\n| [vant-nuxt](https://github.com/vant-ui/vant-nuxt) | Vant module for Nuxt |\n\n### Community Ecosystem\n\n| Project | Description |\n| --- | --- |\n| [3lang3/react-vant](https://github.com/3lang3/react-vant) | React mobile UI Components based on Vant |\n| [vant-theme](https://github.com/Aisen60/vant-theme) | Online theme preview built on Vant UI |\n| [@antmjs/vantui](https://github.com/antmjs/vantui) | Mobile UI Components based on Vant, supporting Taro and React |\n| [vant-playground](https://github.com/LadyChatterleyLover/vant-playground) | Vant Playground |\n| [sfc-playground-vant](https://github.com/zhixiaoqiang/sfc-playground-vant) | Vant Playground |\n| [vue3-h5-template](https://github.com/yulimchen/vue3-h5-template) | Mobile project template based on Vant |\n| [vue3-vant-mobile](https://github.com/vue-zone/vue3-vant-mobile) | Mobile project template based on Vant, out of the box |\n| [raycast-vant-documentation](https://github.com/Aisen60/raycast-vant-documentation) | An Raycast extension, it can search Vant UI library documentation in Raycast |\n| [nuxt-vant-mobile](https://github.com/vue-zone/nuxt-vant-mobile) | Nuxt _⁴_ project template based on Vant, out of the box |\n| [mobvue](https://github.com/un-pany/mobvue) | A well-crafted mobile web app template |\n\n### Other Links\n\n- [Feedback](https://github.com/vant-ui/vant/issues)\n- [Changelog](#/en-US/changelog)\n- [Discussions](https://github.com/vant-ui/vant/discussions)\n\n## Contribution\n\n### Core Team\n\nCore contributors of Vant and Vant Weapp:\n\n| [![chenjiahan](https://avatars.githubusercontent.com/u/7237365?s=80&v=4)](https://github.com/chenjiahan/) | [![cookfront](https://avatars.githubusercontent.com/u/4829465?s=80&v=4)](https://github.com/cookfront/) | [![w91](https://avatars.githubusercontent.com/u/2599455?s=80&v=4)](https://github.com/w91/) | [![pangxie1991](https://avatars.githubusercontent.com/u/5961240?s=80&v=4)](https://github.com/pangxie1991/) | [![rex-zsd](https://avatars.githubusercontent.com/u/8767877?s=80&v=4)](https://github.com/rex-zsd/) | [![nemo-shen](https://avatars.githubusercontent.com/u/13480805?s=80&v=4)](https://github.com/nemo-shen/) |\n| :-: | :-: | :-: | :-: | :-: | :-: |\n| [chenjiahan](https://github.com/chenjiahan/) | [cookfront](https://github.com/cookfront/) | [wangnaiyi](https://github.com/w91/) | [pangxie](https://github.com/pangxie1991/) | [rex-zsd](https://github.com/rex-zsd/) | [nemo-shen](https://github.com/nemo-shen/) |\n\n| [![Lindysen](https://avatars.githubusercontent.com/u/33708359?s=80&v=4)](https://github.com/Lindysen/) | [![JakeLaoyu](https://avatars.githubusercontent.com/u/16181940?s=80&v=4)](https://github.com/JakeLaoyu/) | [![landluck](https://avatars.githubusercontent.com/u/27060081?s=80&v=4)](https://github.com/landluck/) | [![wjw-gavin](https://avatars.githubusercontent.com/u/19986739?s=80&v=4)](https://github.com/wjw-gavin/) | [![inottn](https://avatars.githubusercontent.com/u/18509404?s=80&v=4)](https://github.com/inottn/) | [![zhousg](https://avatars.githubusercontent.com/u/15833290?s=80&v=4)](https://github.com/zhousg/) |\n| :-: | :-: | :-: | :-: | :-: | :-: |\n| [Lindysen](https://github.com/Lindysen/) | [JakeLaoyu](https://github.com/JakeLaoyu/) | [landluck](https://github.com/landluck/) | [wjw-gavin](https://github.com/wjw-gavin/) | [inottn](https://github.com/inottn/) | [zhousg](https://github.com/zhousg/) |\n\n### All Contributors\n\nThanks to the following friends for their contributions to Vant:\n\n<a href=\"https://github.com/vant-ui/vant/graphs/contributors\" target=\"_blank\">\n  <img src=\"https://opencollective.com/vant/contributors.svg?width=890&button=false\" alt=\"contributors\" style=\"width: 100%; margin: 16px 0\">\n</a>\n\n### Contribution Guide\n\nPlease make sure to read the [Contributing Guide](https://github.com/vant-ui/vant/blob/main/.github/CONTRIBUTING.md) before making a pull request.\n\n### LICENSE\n\n[MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89).\n","packages/vant/docs/markdown/home.zh-CN.md":"<div class=\"van-doc-card\">\n  <div class=\"van-doc-intro\">\n    <img class=\"van-doc-intro__logo\" style=\"width: 120px; height: 120px;\" src=\"https://fastly.jsdelivr.net/npm/@vant/assets/logo.png\">\n    <h2 style=\"margin: 0; font-size: 36px; line-height: 60px;\">Vant</h2>\n    <p>轻量、可定制的移动端 Vue 组件库</p>\n  </div>\n</div>\n\n### 介绍\n\nVant 是一个**轻量、可定制的移动端组件库**，于 2017 年开源。\n\n目前 Vant 官方提供了 [Vue 2 版本](/vant/v2/)、[Vue 3 版本](/vant/)和[微信小程序版本](/vant-weapp/)，并由社区团队维护 [React 版本](https://github.com/3lang3/react-vant)。\n\n### 特性\n\n- 🚀 性能极佳，组件平均体积小于 1KB（min+gzip）\n- 🚀 80+ 个高质量组件，覆盖移动端主流场景\n- 🚀 零外部依赖，不依赖三方 npm 包\n- 💪 使用 TypeScript 编写，提供完整的类型定义\n- 💪 单元测试覆盖率超过 90%，提供稳定性保障\n- 📖 提供丰富的中英文文档和组件示例\n- 📖 提供 Sketch 和 Axure 设计资源\n- 🍭 支持 Vue 2、Vue 3 和微信小程序\n- 🍭 支持 Nuxt 2、Nuxt 3，提供 Nuxt 的 [Vant Module](https://github.com/vant-ui/vant-nuxt)\n- 🍭 支持主题定制，内置 700+ 个主题变量\n- 🍭 支持按需引入和 Tree Shaking\n- 🍭 支持无障碍访问（持续改进中）\n- 🍭 支持深色模式\n- 🍭 支持服务器端渲染\n- 🌍 支持国际化，内置 30+ 种语言包\n\n### 版本提示\n\n你当前浏览的是 **Vant 4.x 版本** 的文档，适用于 Vue 3 开发。如果你在使用 Vue 2，请浏览 [Vant 2 文档](/vant/v2/)。\n\n### 脚手架\n\n推荐使用 [Rsbuild](https://github.com/web-infra-dev/rsbuild) 来创建一个脚手架项目。\n\nRsbuild 是基于 Rspack 的构建工具，由 Vant 作者开发，具备一流的构建速度和开发体验，对 Vant 提供第一优先级支持。\n\n你可以通过以下命令创建一个 Rsbuild 项目：\n\n```bash\nnpm create rsbuild@latest\n```\n\n请访问 [Rsbuild 仓库](https://github.com/web-infra-dev/rsbuild) 了解更多信息。\n\n### 快速上手\n\n请阅读[快速上手](#/zh-CN/quickstart)章节，通过该章节你可以了解到 Vant 的安装方法和基本使用姿势。\n\n### 浏览器支持\n\nVant 2 支持现代浏览器以及 Android >= 4.0、iOS >= 8.0。\n\nVant 3/4 支持现代浏览器以及 Chrome >= 51、iOS >= 10.0（与 Vue 3 一致）。\n\n### 维护状态\n\n目前 Vant 各个版本的维护状态如下：\n\n| 名称 | 框架 | 发布时间 | 最新版 | 维护状态 |\n| --- | --- | --- | --- | --- |\n| Vant 4 | Vue 3 | `2022.12` | ![](https://img.shields.io/npm/v/vant/latest?style=flat-square) | 长期支持 |\n| Vant 3 | Vue 3 | `2020.12` | ![](https://img.shields.io/npm/v/vant/latest-v3?style=flat-square) | 终止支持，不再接受 PR |\n| Vant 2 | Vue 2 | `2019.06` | ![](https://img.shields.io/npm/v/vant/latest-v2?style=flat-square) | 终止支持，不再接受 PR |\n| Vant 1 | Vue 2 | `2018.03` | ![](https://img.shields.io/npm/v/vant/latest-v1?style=flat-square) | 终止支持，不再接受 PR |\n\n## 链接\n\n### 官方生态\n\n由 Vant 官方团队维护的项目如下：\n\n| 项目 | 描述 |\n| --- | --- |\n| [vant-weapp](https://github.com/vant-ui/vant-weapp) | Vant 微信小程序版 |\n| [vant-demo](https://github.com/vant-ui/vant-demo) | Vant 官方示例合集 |\n| [vant-cli](https://github.com/vant-ui/vant/tree/main/packages/vant-cli) | 开箱即用的组件库搭建工具 |\n| [vant-icons](https://github.com/vant-ui/vant/tree/main/packages/vant-icons) | Vant 图标库 |\n| [vant-touch-emulator](https://github.com/vant-ui/vant/tree/main/packages/vant-touch-emulator) | 在桌面端使用 Vant 的辅助库 |\n| [vant-nuxt](https://github.com/vant-ui/vant-nuxt) | 为 Nuxt 准备的模块 |\n\n### 社区生态\n\n由社区维护的项目如下，欢迎补充：\n\n| 项目 | 描述 |\n| --- | --- |\n| [3lang3/react-vant](https://github.com/3lang3/react-vant) | 参照 Vant 打造的 React 移动端组件库 |\n| [vant-theme](https://github.com/Aisen60/vant-theme) | Vant 在线主题预览工具 |\n| [@antmjs/vantui](https://github.com/antmjs/vantui) | 基于 Vant Weapp 开发的多端组件库，同时支持 Taro 和 React |\n| [vant-playground](https://github.com/LadyChatterleyLover/vant-playground) | Vant Playground |\n| [sfc-playground-vant](https://github.com/zhixiaoqiang/sfc-playground-vant) | Vant Playground |\n| [vue3-h5-template](https://github.com/yulimchen/vue3-h5-template) | 基于 Vant 的移动端项目模板 |\n| [vue3-vant-mobile](https://github.com/vue-zone/vue3-vant-mobile) | 基于 Vant 的移动端项目模板，开箱即用 |\n| [raycast-vant-documentation](https://github.com/Aisen60/raycast-vant-documentation) | 一个 Raycast 拓展，能在 Raycast 中搜索 Vant 组件库文档 |\n| [nuxt-vant-mobile](https://github.com/vue-zone/nuxt-vant-mobile) | 基于 Vant 的 Nuxt _⁴_ 项目模板，开箱即用 |\n| [mobvue](https://github.com/un-pany/mobvue) | 一个精心制作的移动端 H5 模板 |\n\n### 其他链接\n\n- [意见反馈](https://github.com/vant-ui/vant/issues)\n- [更新日志](#/zh-CN/changelog)\n- [Discussions 讨论区](https://github.com/vant-ui/vant/discussions)\n\n## 贡献\n\n### 核心团队\n\n以下是 Vant 和 Vant Weapp 的核心贡献者们：\n\n| [![chenjiahan](https://avatars.githubusercontent.com/u/7237365?s=80&v=4)](https://github.com/chenjiahan/) | [![cookfront](https://avatars.githubusercontent.com/u/4829465?s=80&v=4)](https://github.com/cookfront/) | [![w91](https://avatars.githubusercontent.com/u/2599455?s=80&v=4)](https://github.com/w91/) | [![pangxie1991](https://avatars.githubusercontent.com/u/5961240?s=80&v=4)](https://github.com/pangxie1991/) | [![rex-zsd](https://avatars.githubusercontent.com/u/8767877?s=80&v=4)](https://github.com/rex-zsd/) | [![nemo-shen](https://avatars.githubusercontent.com/u/13480805?s=80&v=4)](https://github.com/nemo-shen/) |\n| :-: | :-: | :-: | :-: | :-: | :-: |\n| [chenjiahan](https://github.com/chenjiahan/) | [cookfront](https://github.com/cookfront/) | [wangnaiyi](https://github.com/w91/) | [pangxie](https://github.com/pangxie1991/) | [rex-zsd](https://github.com/rex-zsd/) | [nemo-shen](https://github.com/nemo-shen/) |\n\n| [![Lindysen](https://avatars.githubusercontent.com/u/33708359?s=80&v=4)](https://github.com/Lindysen/) | [![JakeLaoyu](https://avatars.githubusercontent.com/u/16181940?s=80&v=4)](https://github.com/JakeLaoyu/) | [![landluck](https://avatars.githubusercontent.com/u/27060081?s=80&v=4)](https://github.com/landluck/) | [![wjw-gavin](https://avatars.githubusercontent.com/u/19986739?s=80&v=4)](https://github.com/wjw-gavin/) | [![inottn](https://avatars.githubusercontent.com/u/18509404?s=80&v=4)](https://github.com/inottn/) | [![zhousg](https://avatars.githubusercontent.com/u/15833290?s=80&v=4)](https://github.com/zhousg/) |\n| :-: | :-: | :-: | :-: | :-: | :-: |\n| [Lindysen](https://github.com/Lindysen/) | [JakeLaoyu](https://github.com/JakeLaoyu/) | [landluck](https://github.com/landluck/) | [wjw-gavin](https://github.com/wjw-gavin/) | [inottn](https://github.com/inottn/) | [zhousg](https://github.com/zhousg/) |\n\n### 贡献者们\n\n感谢以下小伙伴们为 Vant 发展做出的贡献：\n\n<a href=\"https://github.com/vant-ui/vant/graphs/contributors\" target=\"_blank\">\n  <img src=\"https://opencollective.com/vant/contributors.svg?width=890&button=false\" alt=\"contributors\" style=\"width: 100%; margin: 16px 0\">\n</a>\n\n### 贡献指南\n\n贡献代码请阅读我们的[贡献指南](#/zh-CN/contribution)。\n\n使用过程中发现任何问题都可以提 [Issue](https://github.com/vant-ui/vant/issues) 给我们，当然，我们也非常欢迎你给我们发 [PR](https://github.com/vant-ui/vant/pulls)。\n\n### 开源协议\n\n本项目基于 [MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89) 协议，请自由地享受和参与开源。\n","packages/vant/docs/markdown/migrate-from-v2.en-US.md":"# Upgrade from v2 to v3\n\n### Introduction\n\nThis document provides an upgrade guide from Vant 2 to Vant 3.\n\n### Upgrade steps\n\n#### 1. Upgrade to Vue 3\n\nVant 3 is developed based on Vue 3. Before using Vant 3, please upgrade the Vue in the project to version 3.0 or above.\n\n#### 2. Handle incompatible changes\n\nThere are some incompatible changes from Vant 2 to Vant 3, please read the incompatible changes below carefully and deal with them in order.\n\n## Incompatible changes\n\n### Component renaming\n\nThe GoodsAction component is renamed to **ActionBar**.\n\n```html\n<!-- Vant 2 -->\n<van-goods-action>\n  <van-goods-action-icon text=\"icon\" />\n  <van-goods-action-button text=\"button\" />\n</van-goods-action>\n\n<!-- Vant 3 -->\n<van-action-bar>\n  <van-action-bar-icon text=\"icon\" />\n  <van-action-bar-button text=\"button\" />\n</van-action-bar>\n```\n\n### Deprecated components\n\nVant v3 removed the SwitchCell component, you can use the Cell and Switch components instead.\n\n```html\n<!-- Vant 2 -->\n<van-switch-cell title=\"title\" v-model=\"checked\" />\n\n<!-- Vant 3 -->\n<van-cell center title=\"title\">\n  <template #right-icon>\n    <van-switch v-model=\"checked\" size=\"24\" />\n  </template>\n</van-cell>\n```\n\n### Popup components v-model changes\n\nIn order to adapt to Vue 3's v-model API usage changes, all components that provide v-model have some adjustments in usage. `v-model` for the following popup components has been renamed to `v-model:show`:\n\n- ActionSheet\n- Calendar\n- Dialog\n- Image Preview\n- Notify\n- Popover\n- Popup -ShareSheet\n\n```html\n<!-- Vant 2 -->\n<van-popup v-model=\"show\" />\n\n<!-- Vant 3 -->\n<van-popup v-model:show=\"show\" />\n```\n\n### Form component v-model internal value change\n\nThe prop corresponding to the following form component v-model is renamed to `modelValue`, and the event is renamed to `update:modelValue`:\n\n-Checkbox\n\n- CheckboxGroup -DatetimePicker -DropdownItem -Field -Radio\n- RadioGroup -Search\n- Stepper -Switch\n- Sidebar\n- Uploader\n\n```html\n<!-- Vant 2 -->\n<van-field :value=\"value\" @input=\"onInput\" />\n\n<!-- Vant 3 -->\n<van-field :model-value=\"value\" @update:model-value=\"onInput\" />\n```\n\n### Other v-model tweaks\n\n- Circle: `v-model` renamed to `v-model:currentRate`\n- CouponList: `v-model` renamed to `v-model:code`\n- List: `v-model` renamed to `v-model:loading`, `error.sync` renamed to `v-model:error`\n- Tabs: `v-model` renamed to `v-model:active`\n- TreeSelect: `active-id.sync` renamed to `v-model:active-id`\n- TreeSelect: `main-active-index.sync` renamed to `v-model:main-active-index`\n\n### Badge prop adjustment\n\nIn the previous version, we used the `info` prop to display the badge in the upper right corner of the icon. In order to better meet the naming habits of the community, we renamed this prop to badge, which affects the following components:\n\n- Tab\n- Icon\n- GridItem\n- TreeSelect\n- TabbarItem\n- SidebarItem\n- GoodsActionIcon\n\nAt the same time, the Info component will also be renamed to Badge.\n\n```html\n<!-- Vant 2 -->\n<van-icon info=\"5\" />\n\n<!-- Vant 3 -->\n<van-icon badge=\"5\" />\n```\n\n### Rename the get-container prop\n\nVue 3.0 added a new Teleport component, which provides the ability to render the component to any DOM position, and Vant 2 also provides similar capabilities through the `get-container` prop. For consistency with the official API, the `get-container` prop in Vant 3 will be renamed to `teleport`.\n\n```html\n<!-- Vant 2 -->\n<template>\n  <van-popup get-container=\"body\" />\n  <van-popup :get-container=\"getContainer\" />\n</template>\n<script>\n  export default {\n    methods: {\n      getContainer() {\n        return document.querySelector('#container');\n      },\n    },\n  };\n</script>\n\n<!-- Vant 3 -->\n<template>\n  <van-popup teleport=\"body\" />\n  <van-popup :teleport=\"container\" />\n</template>\n<script>\n  export default {\n    beforeCreate() {\n      this.container = document.querySelector('#container');\n    },\n  };\n</script>\n```\n\n### API adjustments\n\n#### Area\n\n- The `change` event parameter is no longer passed to the component instance\n\n#### Button\n\n- The type corresponding to the blue button is adjusted from `info` to `primary`\n- The type corresponding to the green button is adjusted from `primary` to `success`\n- Default value of `native-type` changed from `submit` to `button`\n\n#### Checkbox\n\n- When used inside Cell, you now need to manually add `@click.stop` to prevent event bubbling\n\n#### Dialog\n\n- The `allow-html` prop is disabled by default.\n- `before-close` prop usage adjustment, no longer pass in the done function, but return Promise to control.\n\n#### DatetimePicker\n\n- The `change` event parameter is no longer passed to the component instance\n\n#### ImagePreview\n\n- Remove the `async-close` prop, you can use the new `before-close` prop instead.\n\n#### Picker\n\n- The `change` event parameter is no longer passed to the component instance.\n- The `allow-html` prop is turned off by default.\n- The `show-toolbar` prop is enabled by default.\n- Under cascade selection, the callback parameters returned by the `confirm` and `change` events will contain a complete option object.\n\n#### Popover\n\n- Default value of `trigger` prop adjusted to `click`.\n\n#### Stepper\n\n- The `async-change` prop is renamed to `before-change`, and the usage method is adjusted.\n\n#### SwipeCell\n\n- `detail` parameter of `open` event renamed to `name`.\n- `on-close` prop renamed to `before-close`, and parameter structure adjusted.\n- The `before-close` prop is no longer passed to the component instance.\n\n#### Toast\n\n- `mask` prop renamed to `overlay`.\n\n#### TreeSelect\n\n- `navclick` event renamed to `click-nav`.\n- `itemclick` event renamed to `click-item`.\n\n### Global methods\n\nGlobal methods such as `$toast` and `$dialog` are provided by default in Vant 2, but Vue 3.0 no longer supports directly mounting methods on Vue's prototype chain, so starting from Vant 3.0, you must first pass `app.use` registers the component to the corresponding app.\n\n```js\nimport { Toast, Dialog, Notify } from 'vant';\n\n// Register components such as Toast to the app\napp.use(Toast);\napp.use(Dialog);\napp.use(Notify);\n\n// Subcomponents in the app can directly call methods such as $toast\nexport default {\n  mounted() {\n    this.$toast('prompt text');\n  },\n};\n```\n","packages/vant/docs/markdown/migrate-from-v2.zh-CN.md":"# 从 v2 升级到 v3\n\n### 介绍\n\n本文档提供了从 Vant 2 到 Vant 3 的升级指南。\n\n### 升级步骤\n\n#### 1. 升级 Vue 3\n\nVant 3 是基于 Vue 3 开发的，在使用 Vant 3 前，请将项目中的 Vue 升级到 3.0 以上版本。\n\n#### 2. 处理不兼容更新\n\nVant 2 到 Vant 3 存在一些不兼容更新，请仔细阅读下方的不兼容更新内容，并依次处理。\n\n## 不兼容更新\n\n### 组件命名调整\n\nGoodsAction 商品导航组件重命名为 **ActionBar 行动栏**。\n\n```html\n<!-- Vant 2 -->\n<van-goods-action>\n  <van-goods-action-icon text=\"图标\" />\n  <van-goods-action-button text=\"按钮\" />\n</van-goods-action>\n\n<!-- Vant 3 -->\n<van-action-bar>\n  <van-action-bar-icon text=\"图标\" />\n  <van-action-bar-button text=\"按钮\" />\n</van-action-bar>\n```\n\n### 废弃组件\n\n移除 SwitchCell 组件，可以直接使用 Cell 和 Switch 组件代替。\n\n```html\n<!-- Vant 2 -->\n<van-switch-cell title=\"标题\" v-model=\"checked\" />\n\n<!-- Vant 3 -->\n<van-cell center title=\"标题\">\n  <template #right-icon>\n    <van-switch v-model=\"checked\" size=\"24\" />\n  </template>\n</van-cell>\n```\n\n### 弹窗型组件 v-model 变更\n\n为了适配 Vue 3 的 v-model API 用法变更，所有提供 v-model 属性的组件在用法上有一定调整。以下弹窗类组件的 `v-model` 被重命名为 `v-model:show`：\n\n- ActionSheet\n- Calendar\n- Dialog\n- ImagePreview\n- Notify\n- Popover\n- Popup\n- ShareSheet\n\n```html\n<!-- Vant 2 -->\n<van-popup v-model=\"show\" />\n\n<!-- Vant 3 -->\n<van-popup v-model:show=\"show\" />\n```\n\n### 表单型组件 v-model 内部值变更\n\n以下表单型组件 v-model 对应的 prop 重命名为 `modelValue`，event 重命名为 `update:modelValue`：\n\n- Checkbox\n- CheckboxGroup\n- DatetimePicker\n- DropdownItem\n- Field\n- Radio\n- RadioGroup\n- Search\n- Stepper\n- Switch\n- Sidebar\n- Uploader\n\n```html\n<!-- Vant 2 -->\n<van-field :value=\"value\" @input=\"onInput\" />\n\n<!-- Vant 3 -->\n<van-field :model-value=\"value\" @update:model-value=\"onInput\" />\n```\n\n### 其他 v-model 调整\n\n- Circle: `v-model` 重命名为 `v-model:currentRate`\n- CouponList: `v-model` 重命名为 `v-model:code`\n- List: `v-model` 重命名为 `v-model:loading`，`error.sync` 重命名为 `v-model:error`\n- Tabs: `v-model` 重命名为 `v-model:active`\n- TreeSelect: `active-id.sync` 重命名为 `v-model:active-id`\n- TreeSelect: `main-active-index.sync` 重命名为 `v-model:main-active-index`\n\n### 徽标属性命名调整\n\n在之前的版本中，我们通过 info 属性来展示图标右上角的徽标信息，为了更符合社区的命名习惯，我们将这个属性重命名为 badge，影响以下组件：\n\n- Tab\n- Icon\n- GridItem\n- TreeSelect\n- TabbarItem\n- SidebarItem\n- GoodsActionIcon\n\n同时内部使用的 Info 组件也会重命名为 Badge。\n\n```html\n<!-- Vant 2 -->\n<van-icon info=\"5\" />\n\n<!-- Vant 3 -->\n<van-icon badge=\"5\" />\n```\n\n### 重命名 get-container 属性\n\nVue 3.0 中增加了 `Teleport` 组件，提供将组件渲染到任意 DOM 位置的能力，Vant 2 也通过 `get-container` 属性提供了类似的能力。为了与官方的 API 保持一致，Vant 中的 `get-container` 属性将重命名为 `teleport`。\n\n```html\n<!-- Vant 2 -->\n<template>\n  <van-popup get-container=\"body\" />\n  <van-popup :get-container=\"getContainer\" />\n</template>\n<script>\n  export default {\n    methods: {\n      getContainer() {\n        return document.querySelector('#container');\n      },\n    },\n  };\n</script>\n\n<!-- Vant 3 -->\n<template>\n  <van-popup teleport=\"body\" />\n  <van-popup :teleport=\"container\" />\n</template>\n<script>\n  export default {\n    beforeCreate() {\n      this.container = document.querySelector('#container');\n    },\n  };\n</script>\n```\n\n### API 调整\n\n#### Area\n\n- `change` 事件参数不再传入组件实例\n\n#### Button\n\n- 蓝色按钮对应的类型由 `info` 调整为 `primary`\n- 绿色按钮对应的类型由 `primary` 调整为 `success`\n- `native-type` 的默认值由 `submit` 调整为 `button`\n\n#### Checkbox\n\n- 在 Cell 内部使用时，现在需要手动添加 `@click.stop` 来阻止事件冒泡\n\n#### Dialog\n\n- 默认关闭 `allow-html` 属性\n- `before-close` 属性用法调整，不再传入 done 函数，而是通过返回 Promise 来控制\n\n#### DatetimePicker\n\n- `change` 事件参数不再传入组件实例\n\n#### ImagePreview\n\n- 移除 `async-close` 属性，可以使用新增的 `before-close` 属性代替\n\n#### Picker\n\n- `change` 事件参数不再传入组件实例\n- 默认关闭 `allow-html` 属性\n- 默认开启 `show-toolbar` 属性\n- 级联选择下，`confirm`、`change` 事件返回的回调参数将包含为完整的选项对象。\n\n#### Popover\n\n- `trigger` 属性的默认值调整为 `click`\n\n#### Stepper\n\n- `async-change` 属性重命名为 `before-change`，并调整使用方法\n\n#### SwipeCell\n\n- `open` 事件的 `detail` 参数重命名为 `name`\n- `on-close` 属性重命名为 `before-close`，并调整参数结构\n- `before-close` 属性不再传入组件实例\n\n#### Toast\n\n- `mask` 属性重命名为 `overlay`\n\n#### TreeSelect\n\n- `navclick` 事件重命名为 `click-nav`\n- `itemclick` 事件重命名为 `click-item`\n\n### 注册全局方法\n\nVant 2 中默认提供了 `$toast`、`$dialog` 等全局方法，但 Vue 3.0 不再支持直接在 Vue 的原型链上挂载方法，因此从 Vant 3.0 开始，使用全局方法前必须先通过 `app.use` 将组件注册到对应的 app 上。\n\n```js\nimport { Toast, Dialog, Notify } from 'vant';\n\n// 将 Toast 等组件注册到 app 上\napp.use(Toast);\napp.use(Dialog);\napp.use(Notify);\n\n// app 内的子组件可以直接调用 $toast 等方法\nexport default {\n  mounted() {\n    this.$toast('提示文案');\n  },\n};\n```\n","packages/vant/docs/markdown/migrate-from-v3.en-US.md":"# Upgrade from v3 to v4\n\n### Introduction\n\nThis document provides an upgrade guide from Vant 3 to Vant 4.\n\n### Installing Vant 4\n\nFirst you need to install Vant 4 and `@vant/compat`.\n\n`@vant/compat` is a compatibility package that helps you to switch from Vant 3 to Vant 4.\n\n```bash\n# Install via npm\nnpm add vant@^4 @vant/compat@^1\n\n# Install via yarn\nyarn add vant@^4 @vant/compat@^1\n\n# Install via pnpm\npnpm add vant@^4 @vant/compat@^1\n\n# Install via Bun\nbun add vant@^4 @vant/compat@^1\n```\n\nYou can also change the version directly in the `dependencies` field of `package.json`, and you will need to reinstall the dependencies after the change.\n\n```diff\n{\n   \"dependencies\": {\n-    \"vant\": \"^3.0.0\",\n+    \"vant\": \"^4.0.0\",\n+    \"@vant/compat\": \"^1.0.0\",\n   }\n}\n```\n\n## Import method changes\n\n### Remove babel-plugin-import\n\nStarting from Vant 4.0, `babel-plugin-import` will no longer be supported, please remove the `babel-plugin-import` plugin that the project depends on.\n\nSimply remove the following code in `babel.config.js`:\n\n```diff\nmodule.exports = {\n  plugins: [\n-    ['import', {\n-      libraryName: 'vant',\n-      libraryDirectory: 'es',\n-      style: true\n-    }, 'vant']\n  ]\n};\n```\n\n#### Benefits\n\nThe main benefits of removing `babel-plugin-import` are as follows:\n\n- Instead of relying heavily on Babel compilation, projects can use modern compilation tools such as SWC and esbuild to improve compilation efficiency.\n- No longer subject to the import restrictions of `babel-plugin-import`, you can import content other than Vant components, such as the new `showToast` method in Vant 4, or the `buttonProps` object:\n\n```ts\nimport { showToast, buttonProps } from 'vant';\n```\n\n#### Import style on demand\n\nRemoving `babel-plugin-import` will not affect the JS size of the project, because Vant supports Tree Shaking to remove unnecessary JS code by default.\n\nThe way the CSS code is imported can be selected from the following two ways:\n\n- Include Vant's style files in their entirety in the project:\n\n```js\nimport 'vant/lib/index.css';\n```\n\n- Use the [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) plugin to import styles on demand, see [Quick Start](#/en-US/quickstart) for detailed usage.\n\n## Component refactoring\n\n### Introduction\n\nIn Vant 4, three components have been refactored, they are:\n\n- `Area`\n- `Picker`\n- `DatetimePicker`\n\nThe reason for refactoring these three components is that in the previous version, the API design of the `Picker` component had some unreasonable designs, which caused people to often encounter problems when using it, such as:\n\n- Picker columns data format definition is unreasonable, easy to cause misunderstanding\n- The Picker data flow is not clear, exposing too many instance methods to operate on the data\n- DatetimePicker logic is too complicated, bugs often occur in borderline scenarios\n\nTo solve the above problems, we have refactored the `Picker` component in the v4 version, and also refactored the `Area` and `DatetimePicker` components derived from `Picker`. If you use these three components in your project, please read the documentation carefully and upgrade.\n\n### Picker component refactoring\n\n#### Major changes\n\n- Support binding the currently selected value through `v-model`, remove the `default-index` prop.\n- Redefine the structure of the `columns` prop.\n- Removed the instance methods for manipulating internal data, only the `confirm` method remains.\n- Added `getSelectedOptions` instance method.\n- Changed parameters of `confirm`, `cancel`, `change` events.\n- Renamed `item-height` prop to `option-height`.\n- Renamed `visible-item-count` prop to `visible-option-num`.\n\n> Please refer to [Picker Component Documentation](#/en-US/picker) for detailed usage.\n\n### DatetimePicker component refactoring\n\nThe DatetimePicker component is split into three subcomponents:\n\n- [TimePicker](#/en-US/time-picker): Used for time selection, including hours, minutes, and seconds.\n- [DatePicker](#/en-US/date-picker): Used for date selection, including year, month and day.\n- [PickerGroup](#/en-US/picker-group): Used to combine multiple Picker selector components to select multiple values in one interaction.\n\nAt the same time, the TimePicker and DatePicker components are also refactored based on the new version of the Picker component, and some API designs are optimized.\n\n#### Major changes\n\nThe following are the main API changes of TimePicker and DatePicker. For more details, please refer to [TimePicker](#/en-US/time-picker) and [DatePicker](#/en-US/date-picker) documentation.\n\n- The value of `v-model` binding is adjusted to array format.\n- Added `columns-type` prop to control option type and order.\n- Remove `type` and `columns-order` props.\n- Remove `getPicker` method.\n- Adjust the parameters of `confirm`, `cancel`, `change` events to be consistent with the Picker component.\n\n> Vant 4 no longer provides the old version of the DatetimePicker component. The PickerGroup component can be used to achieve more flexible and richer interactive effects. For specific usage, please refer to the [PickerGroup](#/en-US/picker-group) component documentation.\n\n### Area component refactoring\n\nThe Area component is encapsulated based on the Picker component, so this upgrade also refactors the internal logic of the Area component and optimizes some APIs.\n\n#### Major changes\n\n- Support binding the currently selected value via `v-model`.\n- Removed `reset` method, now can be reset by modifying `v-model`.\n- Removed `is-oversea-code` prop.\n- Adjust the parameters of `confirm`, `cancel`, `change` events to be consistent with the Picker component.\n- Renamed `value` prop to `modelValue`.\n- Renamed `item-height` prop to `option-height`.\n- Renamed `visible-item-count` prop to `visible-option-num`.\n\n> Please refer to [Area Component Documentation](#/en-US/area) for detailed usage.\n\n## API tweaks\n\n### Dialog calling method adjustment\n\nIn Vant 3, `Dialog` is a function, and calling the function can quickly evoke the global Dialog component, and `Dialog.Component` is the `Dialog` component object, which is different from the usage of most components, which can easily lead to mistake.\n\nIn order to be more intuitive, we adjusted the calling method of `Dialog` in Vant 4, renamed the `Dialog()` function to `showDialog()`, and let `Dialog` directly point to the component object.\n\n```js\n// Vant 3\nDialog(); // function call\nDialog.Component; // Component object\n\n// Vant 4\nshowDialog(); // function call\nDialog; // component object\n```\n\nSince `Dialog` has become a component object, other methods mounted on `Dialog` have also been renamed. The mapping relationship between the old and new APIs is as follows:\n\n```js\nDialog(); // -> showDialog()\nDialog.alert(); // -> showDialog()\nDialog.confirm(); // -> showConfirmDialog()\nDialog.close(); // -> closeDialog();\nDialog.setDefaultOptions(); // -> setDialogDefaultOptions()\nDialog.resetDefaultOptions(); // -> resetDialogDefaultOptions()\n```\n\n#### Migration\n\nIn order to facilitate the migration of old version code to v4, we provide a compatibility solution, you can use the `Dialog` object exported in `@vant/compat` to be compatible with the original code.\n\nReference the `Dialog` method from `@vant/compat`:\n\n```js\nimport { Dialog } from '@vant/compat';\n\nDialog();\nDialog.close();\n```\n\nThe `Dialog` exported in `@vant/compat` has exactly the same API and behavior as the `Dialog` in Vant 3, so you only need to modify the reference path of `Dialog`, and other codes can remain unchanged.\n\nAfter the project is upgraded to Vant v4, it is recommended to gradually replace it with the new `showDialog` and other methods in iterations, and remove the `@vant/compat` package.\n\n### Toast calling method adjustment\n\nIn Vant 4, the calling method of the `Toast` component has also been adjusted, which is consistent with the changes of the `Dialog` component:\n\n```js\n// Vant 3\nToast(); // function call\n\n// Vant 4\nshowToast(); // function call\nToast; // component object\n```\n\nOther methods mounted on `Toast` have also been renamed, and the mapping relationship between the old and new APIs is as follows:\n\n```js\nToast(); // -> showToast()\nToast.fail(); // -> showFailToast()\nToast.success(); // -> showSuccessToast()\nToast.loading(); // -> showLoadingToast()\nToast.clear(); // -> closeToast()\nToast.setDefaultOptions(); // -> setToastDefaultOptions()\nToast.resetDefaultOptions(); // -> resetToastDefaultOptions()\n```\n\nAt the same time, Vant 4 will no longer globally register the `$toast` method on the `this` object, which means that `$toast` will not be accessible on the `this` object.\n\n#### Migration\n\nIn order to facilitate code migration, we provide a compatibility solution, you can use the `Toast` object exported in `@vant/compat` to be compatible with the original code.\n\n```js\nimport { Toast } from '@vant/compat';\n\nToast();\nToast.clear();\n```\n\nThe `Toast` exported in `@vant/compat` has exactly the same API and behavior as `Toast` in Vant 3, so you only need to modify the reference path of `Toast`, and other codes can remain unchanged.\n\n### Notify calling method adjustment\n\nIn Vant 4, the calling method of the `Notify` component has also been adjusted, which is consistent with the changes of the `Dialog` component:\n\n```js\n// Vant 3\nNotify(); // function call\nNotify.Component; // component object\n\n// Vant 4\nshowNotify(); // function call\nNotify; // component object\n```\n\nOther methods mounted on `Notify` have also been renamed, and the mapping relationship between the old and new APIs is as follows:\n\n```js\nNotify(); // -> showNotify()\nNotify.clear(); // -> closeNotify()\nNotify.setDefaultOptions(); // -> setNotifyDefaultOptions()\nNotify.resetDefaultOptions(); // -> resetNotifyDefaultOptions()\n```\n\nAt the same time, Vant 4 will no longer globally register the `$notify` method on the `this` object, which means that `$notify` will not be accessible on the `this` object.\n\n#### Migration\n\nIn order to facilitate code migration, we provide a compatibility solution, you can use the `Notify` object exported in `@vant/compat` to be compatible with the original code.\n\n```js\nimport { Notify } from '@vant/compat';\n\nNotify();\nNotify.clear();\n```\n\n`Notify` exported in `@vant/compat` has exactly the same API and behavior as `Notify` in Vant 3, so you only need to modify the reference path of `Notify`, and other codes can remain unchanged.\n\n### ImagePreview calling method adjustment\n\nIn Vant 4, the calling method of the `ImagePreview` component has also been adjusted, which is consistent with the changes of the `Dialog` component:\n\n```js\n// Vant 3\nImagePreview(); // function call\nImagePreview.Component; // component object\n\n// Vant 4\nshowImagePreview(); // function call\nImagePreview; // component object\n```\n\n#### Migration\n\nIn order to facilitate code migration, we provide a compatibility solution, you can use the `ImagePreview` object exported in `@vant/compat` to be compatible with the original code.\n\n```js\nimport { ImagePreview } from '@vant/compat';\n\nImagePreview();\n```\n\nThe `ImagePreview` exported in `@vant/compat` has exactly the same API and behavior as the `ImagePreview` in Vant 3, so you only need to modify the reference path of `ImagePreview`, and other codes can remain unchanged.\n\n### Event naming adjustment\n\nStarting from Vant 4, all events are named in **camelCase** officially recommended by Vue.\n\n```js\n// Vant 3\nemit('click-input');\n\n// Vant 4\nemit('clickInput');\n```\n\nThis change **does not affect the original template code**, Vue will automatically format the event name in the template, so you don't need to make any changes.\n\n```html\n<!-- The following code works as usual without any changes -->\n<van-field @click-input=\"onClick\" />\n```\n\nIf you use the Vant component in JSX, you need to adjust the monitored event name to camel case format, the original dash format will no longer take effect, and the new monitoring method is more in line with JSX's own specifications:\n\n```jsx\n// Vant 3\n<Field onClick-input={onClick} />\n\n// Vant 4\n<Field onClickInput={onClick} />\n```\n\n### Other API adjustments\n\nIn Vant 4.0 version, the following APIs have been updated incompatible:\n\n#### AddressEdit\n\n- Remove `show-postal` prop.\n- Remove `postal-validator` prop.\n- Parameter of `change-area` event changed to `PickerOption[]` type.\n- Remove undocumented `getArea` instance method.\n\n#### Popup\n\nSome adjustments have been made to the CSS style of Popup. If you have added some custom CSS styles to the Popup component, please check if this update affects the UI in the project.\n\n- Added `box-sizing: border-box` style by default.\n- Changed the horizontal centering method when `position=\"center\"`, to solve the problem that the width of the Popup cannot be adjusted correctly.\n\n```less\n// Vant 3\n.van-popup --center {\n  left: 50%;\n  transform: translate3d(-50%, -50%, 0);\n}\n\n// Vant 4\n.van-popup --center {\n  left: 0;\n  right: 0;\n  width: fit-content;\n  max-width: calc(100vw - var(--van-padding-md) * 2);\n  margin: 0 auto;\n  transform: translateY(-50%);\n}\n```\n\n#### Tabs\n\n- Removed `click` and `disabled` events, please use `click-tab` event instead\n\n## Style adjustments\n\n### Uniform primary color\n\nIn the previous version, Vant components had two primary colors, some components used blue (#1989fa) as the primary color, and others used red (#ee0a24).\n\nTo keep the colour specification consistent,, we have unified the primary color in Vant 4, and all components use blue as the primary color.\n\nThe primary color of the following components has been changed from red to blue:\n\n- AddressEdit\n- AddressList\n- Card\n- Calendar\n- Cascader\n- ContactList\n- ContactEdit\n- CouponList\n- Dialog\n- DropdownMenu -IndexBar\n- Sidebar -Steps\n- Tabs\n- TreeSelect\n\n### Remove Less variables\n\nCurrently, Vant already supports theme customization capabilities based on CSS variables, which is more flexible than Less customization. Therefore, Vant 4 will no longer provide Less-based theme customization.\n\nThis means that Vant's npm package will no longer contain `.less` style source files, only the compiled `.css` style files will be provided.\n\nIf your project is using an old version of Less theme customization, please use the [ConfigProvider global configuration](#/en-US/config-provider) component to replace it.\n\n### Simplify CSS variable names\n\nWith code size and usability in mind, we have simplified the names of some CSS variables, and used shorter words in the variable names to reduce the code size.\n\nThis upgrade includes the following variable name changes:\n\n```less\nanimation-duration -> duration\nanimation-timing-function-enter -> ease-out\nanimation-timing-function-leave -> ease-in\nbackground-color -> background\nbackground-color-light -> background-2\nborder-radius -> radius\nborder-width-base -> border-width\nbox-shadow -> shadow\nfont-family -> font\nfont-weight-bold -> font-bold\nprice-integer-font -> price-font\ntext-link -> link\ntransition-duration -> duration\n```\n\nDue to the large number of CSS variables involved, it is recommended that you perform a global match and replace in the code repository.\n\nFor the `ConfigProvider` component, we have added the `ConfigProviderThemeVars` type definition to provide full type hints. In TypeScript code, you can use type hints to ensure that theme variables are substituted correctly.\n\n```ts\nimport type { ConfigProviderThemeVars } from 'vant';\n\nconst themeVars: ConfigProviderThemeVars = {\n  sliderBarHeight: '4px',\n};\n```\n","packages/vant/docs/markdown/migrate-from-v3.zh-CN.md":"# 从 v3 升级到 v4\n\n### 介绍\n\n本文档提供了从 Vant 3 到 Vant 4 的升级指南。\n\n### 安装 Vant 4\n\n首先你需要安装 Vant 4 以及 `@vant/compat`。\n\n`@vant/compat` 是一个兼容包，可以帮助你从 Vant 3 过渡到 Vant 4。\n\n```bash\n# 通过 npm 安装\nnpm add vant@^4 @vant/compat@^1\n\n# 通过 yarn 安装\nyarn add vant@^4 @vant/compat@^1\n\n# 通过 pnpm 安装\npnpm add vant@^4 @vant/compat@^1\n\n# 通过 Bun 安装\nbun add vant@^4 @vant/compat@^1\n```\n\n你也可以直接修改 `package.json` 的 `dependencies` 字段中的版本号，修改完成后需要重新安装依赖。\n\n```diff\n{\n  \"dependencies\": {\n-    \"vant\": \"^3.0.0\",\n+    \"vant\": \"^4.0.0\",\n+    \"@vant/compat\": \"^1.0.0\",\n  }\n}\n```\n\n## 调整按需引入方式\n\n### 移除 babel-plugin-import\n\n从 Vant 4.0 开始，将不再支持 `babel-plugin-import`，请移除项目中依赖的 `babel-plugin-import` 插件。\n\n只需要删除 `babel.config.js` 中的以下代码即可：\n\n```diff\nmodule.exports = {\n  plugins: [\n-    ['import', {\n-      libraryName: 'vant',\n-      libraryDirectory: 'es',\n-      style: true\n-    }, 'vant']\n  ]\n};\n```\n\n#### 收益\n\n移除 `babel-plugin-import` 主要带来以下收益：\n\n- 不再强依赖 Babel 编译，项目可以使用 SWC、esbuild 等现代编译工具，进而提升编译效率。\n- 不再受到 `babel-plugin-import` 的 import 限制，可以从 Vant 中导入除组件以外的内容，比如 Vant 4 中新增的 `showToast` 方法，或是 `buttonProps` 对象：\n\n```ts\nimport { showToast, buttonProps } from 'vant';\n```\n\n#### 样式引入方案\n\n移除 `babel-plugin-import` 对项目的 JS 体积不会有影响，因为 Vant 默认支持通过 Tree Shaking 来移除不需要的 JS 代码。\n\n而 CSS 代码的引入方式可以从以下两种方式中进行选择：\n\n- 在项目中全量引入 Vant 的样式文件：\n\n```js\nimport 'vant/lib/index.css';\n```\n\n- 通过 [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) 插件实现按需引入样式，详细用法参见 [快速上手](#/zh-CN/quickstart)。\n\n## 组件重构\n\n### 介绍\n\n在 Vant 4 中，一共有三个组件被完全重构，它们是：\n\n- `Area`\n- `Picker`\n- `DatetimePicker`\n\n这三个组件之所以被重构，是因为在之前的版本中，`Picker` 组件的 API 设计存在一些不合理的设计，导致大家在使用时经常遇到问题，比如：\n\n- Picker columns 数据格式定义不合理，容易产生误解\n- Picker 数据流不清晰，暴露了过多的实例方法来对数据进行操作\n- DatetimePicker 逻辑过于复杂，经常在边界场景下出现 bug\n\n为了解决上述问题，我们在 v4 版本中对 `Picker` 组件进行了重构，同时也重构了基于 `Picker` 派生出的 `Area` 和 `DatetimePicker` 组件。如果你的项目中使用了这三个组件，请仔细阅读文档并进行升级。\n\n### Picker 组件重构\n\n#### 主要变更\n\n- 支持通过 `v-model` 绑定当前选中的值，移除 `default-index` 属性\n- 重新定义了 `columns` 属性的结构\n- 移除了操作内部数据的实例方法，仅保留 `confirm` 方法\n- 新增 `getSelectedOptions` 实例方法\n- 调整了 `confirm`、`cancel`、`change` 事件的参数\n- 重命名 `item-height` 属性为 `option-height`\n- 重命名 `visible-item-count` 属性为 `visible-option-num`\n\n> 详细用法请参见 [Picker 组件文档](#/zh-CN/picker)。\n\n### DatetimePicker 组件重构\n\nDatetimePicker 组件被拆分为三个子组件：\n\n- [TimePicker](#/zh-CN/time-picker): 用于时间选择，包括时、分、秒。\n- [DatePicker](#/zh-CN/date-picker): 用于日期选择，包括年、月、日。\n- [PickerGroup](#/zh-CN/picker-group): 用于结合多个 Picker 选择器组件，在一次交互中完成多个值的选择。\n\n同时，TimePicker 和 DatePicker 组件也基于新版 Picker 组件进行重构，并优化了部分 API 设计。\n\n#### 主要变更\n\n以下是 TimePicker 和 DatePicker 的主要 API 变化，更多细节请参考 [TimePicker](#/zh-CN/time-picker) 和 [DatePicker](#/zh-CN/date-picker) 文档。\n\n- `v-model` 绑定的值调整为数组格式\n- 新增 `columns-type` 属性，用于控制选项类型和顺序\n- 移除 `type` 属性和 `columns-order` 属性\n- 移除 `getPicker` 方法\n- 调整 `confirm`、`cancel`、`change` 事件的参数，与 Picker 组件保持一致\n\n> Vant 4 不再提供旧版的 DatetimePicker 组件，使用 PickerGroup 组件可以实现更灵活、更丰富的交互效果，具体用法请参考 [PickerGroup](#/zh-CN/picker-group) 组件文档。\n\n### Area 组件重构\n\nArea 组件是基于 Picker 组件进行封装的，因此本次升级也对 Area 组件进行了内部逻辑的重构，并优化了部分 API。\n\n#### 主要变更\n\n- 支持通过 `v-model` 绑定当前选中的值\n- 移除 `reset` 方法，现在可以通过修改 `v-model` 来进行重置\n- 移除 `is-oversea-code` 属性\n- 调整 `confirm`、`cancel`、`change` 事件的参数，与 Picker 组件保持一致\n- 重命名 `value` 属性为 `modelValue`\n- 重命名 `item-height` 属性为 `option-height`\n- 重命名 `visible-item-count` 属性为 `visible-option-num`\n\n> 详细用法请参见 [Area 组件文档](#/zh-CN/area)。\n\n## API 调整\n\n### Dialog 调用方式调整\n\n在 Vant 3 中，`Dialog` 是一个函数，调用函数可以快速唤起全局的弹窗组件，而 `Dialog.Component` 才是 `Dialog` 组件对象，这与大部分组件的用法存在差异，容易导致使用错误。\n\n为了更符合直觉，我们在 Vant 4 中调整了 `Dialog` 的调用方式，将 `Dialog()` 函数重命名为 `showDialog()`，并让 `Dialog` 直接指向组件对象。\n\n```js\n// Vant 3\nDialog(); // 函数调用\nDialog.Component; // 组件对象\n\n// Vant 4\nshowDialog(); // 函数调用\nDialog; // 组件对象\n```\n\n由于 `Dialog` 变为了组件对象，`Dialog` 上挂载的其他方法也进行了重命名，新旧 API 的映射关系如下：\n\n```js\nDialog(); // -> showDialog()\nDialog.alert(); // -> showDialog()\nDialog.confirm(); // -> showConfirmDialog()\nDialog.close(); // -> closeDialog();\nDialog.setDefaultOptions(); // -> setDialogDefaultOptions()\nDialog.resetDefaultOptions(); // -> resetDialogDefaultOptions()\n```\n\n#### 兼容方案\n\n为了便于旧版本代码迁移至 v4，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `Dialog` 对象来兼容原有代码。\n\n从 `@vant/compat` 中引用 `Dialog` 方法：\n\n```js\nimport { Dialog } from '@vant/compat';\n\nDialog();\nDialog.close();\n```\n\n`@vant/compat` 中导出的 `Dialog` 与 Vant 3 中的 `Dialog` 拥有完全一致的 API 和行为，因此你只需要修改 `Dialog` 的引用路径，其他代码可以保持不变。\n\n在项目完成升级到 Vant v4 后，建议在迭代中逐步替换为新的 `showDialog` 等方法，并移除 `@vant/compat` 包。\n\n### Toast 调用方式调整\n\nVant 4 中，`Toast` 组件的调用方式也进行了调整，与 `Dialog` 组件的改动一致：\n\n```js\n// Vant 3\nToast(); // 函数调用\n\n// Vant 4\nshowToast(); // 函数调用\nToast; // 组件对象\n```\n\n`Toast` 上挂载的其他方法也进行了重命名，新旧 API 的映射关系如下：\n\n```js\nToast(); // -> showToast()\nToast.fail(); // -> showFailToast()\nToast.success(); // -> showSuccessToast()\nToast.loading(); // -> showLoadingToast()\nToast.clear(); // -> closeToast()\nToast.setDefaultOptions(); // -> setToastDefaultOptions()\nToast.resetDefaultOptions(); // -> resetToastDefaultOptions()\n```\n\n同时，Vant 4 将不再在 `this` 对象上全局注册 `$toast` 方法，这意味着 `this` 对象上将无法访问到 `$toast`。\n\n#### 兼容方案\n\n为了便于代码迁移，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `Toast` 对象来兼容原有代码。\n\n```js\nimport { Toast } from '@vant/compat';\n\nToast();\nToast.clear();\n```\n\n`@vant/compat` 中导出的 `Toast` 与 Vant 3 中的 `Toast` 拥有完全一致的 API 和行为，因此你只需要修改 `Toast` 的引用路径，其他代码可以保持不变。\n\n### Notify 调用方式调整\n\nVant 4 中，`Notify` 组件的调用方式也进行了调整，与 `Dialog` 组件的改动一致：\n\n```js\n// Vant 3\nNotify(); // 函数调用\nNotify.Component; // 组件对象\n\n// Vant 4\nshowNotify(); // 函数调用\nNotify; // 组件对象\n```\n\n`Notify` 上挂载的其他方法也进行了重命名，新旧 API 的映射关系如下：\n\n```js\nNotify(); // -> showNotify()\nNotify.clear(); // -> closeNotify()\nNotify.setDefaultOptions(); // -> setNotifyDefaultOptions()\nNotify.resetDefaultOptions(); // -> resetNotifyDefaultOptions()\n```\n\n同时，Vant 4 将不再在 `this` 对象上全局注册 `$notify` 方法，这意味着 `this` 对象上将无法访问到 `$notify`。\n\n#### 兼容方案\n\n为了便于代码迁移，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `Notify` 对象来兼容原有代码。\n\n```js\nimport { Notify } from '@vant/compat';\n\nNotify();\nNotify.clear();\n```\n\n`@vant/compat` 中导出的 `Notify` 与 Vant 3 中的 `Notify` 拥有完全一致的 API 和行为，因此你只需要修改 `Notify` 的引用路径，其他代码可以保持不变。\n\n### ImagePreview 调用方式调整\n\nVant 4 中，`ImagePreview` 组件的调用方式也进行了调整，与 `Dialog` 组件的改动一致：\n\n```js\n// Vant 3\nImagePreview(); // 函数调用\nImagePreview.Component; // 组件对象\n\n// Vant 4\nshowImagePreview(); // 函数调用\nImagePreview; // 组件对象\n```\n\n#### 兼容方案\n\n为了便于代码迁移，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `ImagePreview` 对象来兼容原有代码。\n\n```js\nimport { ImagePreview } from '@vant/compat';\n\nImagePreview();\n```\n\n`@vant/compat` 中导出的 `ImagePreview` 与 Vant 3 中的 `ImagePreview` 拥有完全一致的 API 和行为，因此你只需要修改 `ImagePreview` 的引用路径，其他代码可以保持不变。\n\n### 事件命名调整\n\n从 Vant 4 开始，所有的事件均采用 Vue 官方推荐的**驼峰格式**进行命名。\n\n```js\n// Vant 3\nemit('click-input');\n\n// Vant 4\nemit('clickInput');\n```\n\n这项改动**不影响原有的模板代码**，Vue 会自动在模板中对事件名进行格式转换，因此你无须做任何更改。\n\n```html\n<!-- 以下代码可以照常运行，无须做任何更改 -->\n<van-field @click-input=\"onClick\" />\n```\n\n如果你在 JSX 中使用 Vant 组件，需要将监听的事件名调整为驼峰格式，原有的中划线格式将不再生效，新的监听方式更加符合 JSX 本身的规范：\n\n```jsx\n// Vant 3\n<Field onClick-input={onClick} />\n\n// Vant 4\n<Field onClickInput={onClick} />\n```\n\n### 其他 API 调整\n\n在 Vant 4.0 版本中，以下 API 进行了不兼容更新：\n\n#### AddressEdit\n\n- 移除 `show-postal` 属性\n- 移除 `postal-validator` 属性\n- `change-area` 事件的参数调整为 `PickerOption[]` 类型\n- 移除未在文档中标注的 `getArea` 实例方法\n\n#### Popup\n\nPopup 的 CSS 样式进行了一定调整，如果你在 Popup 组件上添加了一些自定义的 CSS 样式，请确认本次升级是否对项目中的 UI 产生影响。\n\n- 默认添加了 `box-sizing: border-box` 样式\n- 调整了 `position=\"center\"` 时的水平居中方式，以解决弹窗宽度无法正确自适应的问题：\n\n```less\n// Vant 3\n.van-popup--center {\n  left: 50%;\n  transform: translate3d(-50%, -50%, 0);\n}\n\n// Vant 4\n.van-popup--center {\n  left: 0;\n  right: 0;\n  width: fit-content;\n  max-width: calc(100vw - var(--van-padding-md) * 2);\n  margin: 0 auto;\n  transform: translateY(-50%);\n}\n```\n\n#### Tabs\n\n- 移除了 `click` 和 `disabled` 事件，请使用 `click-tab` 事件代替\n\n## 样式调整\n\n### 主色调统一\n\n在之前的版本中，Vant 组件有两种主色调，部分组件采用蓝色（#1989fa）作为主色调，另一部分则采用红色（#ee0a24）。\n\n为了保持色彩规范的一致性，我们在 Vant 4 中对主色调进行统一，所有组件均采用蓝色作为主色调。\n\n以下组件的主色调由红色调整为蓝色：\n\n- AddressEdit\n- AddressList\n- Card\n- Calendar\n- Cascader\n- ContactList\n- ContactEdit\n- CouponList\n- Dialog\n- DropdownMenu\n- IndexBar\n- Sidebar\n- Steps\n- Tabs\n- TreeSelect\n\n### 移除 Less 变量\n\n目前 Vant 已经支持了基于 CSS 变量的主题定制能力，相较于 Less 定制更加灵活。因此，Vant 4 将不再提供基于 Less 的主题定制方式。\n\n这意味着 Vant 的 npm 包中将不再会包含 `.less` 样式源文件，只会提供编译后的 `.css` 样式文件。\n\n如果你的项目正在使用旧版的 Less 主题定制，请使用 [ConfigProvider 全局配置](#/zh-CN/config-provider) 组件进行替换。\n\n### 简化 CSS 变量名\n\n考虑到 **代码体积** 和 **使用便捷性**，我们对部分 CSS 变量的名称进行了简化，在变量名中使用了更简短的单词，以减小代码体积。\n\n本次升级涉及以下变量名变更：\n\n```less\nanimation-duration               ->  duration\nanimation-timing-function-enter  ->  ease-out\nanimation-timing-function-leave  ->  ease-in\nbackground-color                 ->  background\nbackground-color-light           ->  background-2\nborder-radius                    ->  radius\nborder-width-base                ->  border-width\nbox-shadow                       ->  shadow\nfont-family                      ->  font\nfont-weight-bold                 ->  font-bold\nprice-integer-font               ->  price-font\ntext-link                        ->  link\ntransition-duration              ->  duration\n```\n\n由于涉及的 CSS 变量较多，建议在代码仓库中进行全局匹配和替换。\n\n对于 `ConfigProvider` 组件，我们新增了 `ConfigProviderThemeVars` 类型定义，提供完整的类型提示。在 TypeScript 代码中，你可以通过类型提示来确保主题变量被正确替换。\n\n```ts\nimport type { ConfigProviderThemeVars } from 'vant';\n\nconst themeVars: ConfigProviderThemeVars = {\n  sliderBarHeight: '4px',\n};\n```\n","packages/vant/docs/markdown/quickstart.en-US.md":"# Quickstart\n\n## Install\n\n### npm\n\nUsing `npm` to install:\n\n```bash\n# install latest Vant for Vue 3 project\nnpm i vant\n\n# install Vant 2 for Vue 2 project\nnpm i vant@latest-v2\n```\n\nUsing `yarn`, `pnpm`, or `bun`:\n\n```bash\n# with yarn\nyarn add vant\n\n# with pnpm\npnpm add vant\n\n# with Bun\nbun add vant\n```\n\n### Using in a New Project\n\nIf you need to create a new project, we recommend using [Rsbuild](https://github.com/web-infra-dev/rsbuild), [Vite](https://vitejs.dev/) or [Nuxt framework](https://nuxtjs.org/).\n\n#### Rsbuild\n\nRsbuild is a build tool based on Rspack, developed by the author of Vant, with first-class build speed and development experience, providing first-priority support for Vant.\n\nYou can create a Rsbuild project with the following command:\n\n```bash\nnpm create rsbuild@latest\n```\n\nPlease visit the [Rsbuild repository](https://github.com/web-infra-dev/rsbuild) for more information.\n\n#### Example\n\nHere are the example projects provided by Vant official. You can clone these projects and copy the code.\n\n- [vant-demo - rsbuild](https://github.com/vant-ui/vant-demo/tree/master/vant/rsbuild): Build an application using Vue 3, Vant 4, and Rsbuild.\n- [vant-demo - vite](https://github.com/vant-ui/vant-demo/tree/master/vant/vite): Build an application using Vue 3, Vant 4, and Vite.\n- [vant-demo - nuxt3](https://github.com/vant-ui/vant-demo/tree/master/vant/nuxt3): Build an application using Vue 3, Nuxt 3, and Vant 4.\n\n### CDN\n\nIf you only need to develop a simple HTML page, you can directly include the CDN links in the HTML file. After that, you can access all the components through the global variable `vant`.\n\n```html\n<!-- import style -->\n<link\n  rel=\"stylesheet\"\n  href=\"https://fastly.jsdelivr.net/npm/vant@4/lib/index.css\"\n/>\n\n<!-- import script -->\n<script src=\"https://fastly.jsdelivr.net/npm/vue@3\"></script>\n<script src=\"https://fastly.jsdelivr.net/npm/vant@4/lib/vant.min.js\"></script>\n\n<script>\n  // Render the Button component\n  const app = Vue.createApp({\n    template: `<van-button>Button</van-button>`,\n  });\n  app.use(vant);\n\n  // Register Lazyload directive\n  app.use(vant.Lazyload);\n\n  // Call function component\n  vant.showToast('Message');\n\n  app.mount('#app');\n</script>\n```\n\n#### Free CDN\n\nYou can use Vant through these free CDN services:\n\n- [jsdelivr](https://www.jsdelivr.com/package/npm/vant)\n- [cdnjs](https://cdnjs.com/libraries/vant)\n- [unpkg](https://unpkg.com/)\n\nNote: Free CDN is generally used for making prototypes or personal projects. It is not recommended to use free CDN in production environment.\n\nFor enterprise developers, we recommend:\n\n- install with npm, use build tools to bundle it\n- download the scripts, host it on your own server\n\n## Usage\n\n### Basic Usage\n\nThe basic usage of Vant components:\n\n```js\nimport { createApp } from 'vue';\n// 1. Import the components you need\nimport { Button } from 'vant';\n// 2. Import the components style\nimport 'vant/lib/index.css';\n\nconst app = createApp();\n\n// 3. Register the components you need\napp.use(Button);\n```\n\n> Tip: Vant supports Tree Shaking by default, so you don't need to configure any plugins, the unused JS code will be removed by Tree Shaking, but CSS styles cannot be optimized by it.\n\n### Import on demand\n\nIf you are using Rsbuild, Vite, webpack or vue-cli, you can use [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components), this plugin can help you to auto importing components.\n\nVant officially wrote an automatic import style parser [@vant/auto-import-resolver](https://github.com/youzan/vant/tree/main/packages/vant-auto-import-resolver) based on `unplugin-vue-components`, both of which are used together.\n\nCompared with conventional usage, this method can introduce the CSS style of components on demand, thus reducing part of the code volume, but it will become more cumbersome to use. If the business's volume requirements for CSS are not particularly extreme, we recommend a simpler general usage.\n\n#### 1. Install Plugin\n\n```bash\n# with npm\nnpm i @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# with yarn\nyarn add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# with pnpm\npnpm add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# with Bun\nbun add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n```\n\n#### 2. Configure Plugin\n\nFor Rsbuild based project，configure the plugin in the `rsbuild.config.js` file:\n\n```js\nimport { defineConfig } from '@rsbuild/core';\nimport { pluginVue } from '@rsbuild/plugin-vue';\nimport AutoImport from 'unplugin-auto-import/rspack';\nimport Components from 'unplugin-vue-components/rspack';\nimport { VantResolver } from '@vant/auto-import-resolver';\n\nexport default defineConfig({\n  plugins: [pluginVue()],\n  tools: {\n    rspack: {\n      plugins: [\n        AutoImport({\n          resolvers: [VantResolver()],\n        }),\n        Components({\n          resolvers: [VantResolver()],\n        }),\n      ],\n    },\n  },\n});\n```\n\nFor Vite based project，configure the plugin in the `vite.config.js` file:\n\n```js\nimport vue from '@vitejs/plugin-vue';\nimport AutoImport from 'unplugin-auto-import/vite';\nimport Components from 'unplugin-vue-components/vite';\nimport { VantResolver } from '@vant/auto-import-resolver';\n\nexport default {\n  plugins: [\n    vue(),\n    AutoImport({\n      resolvers: [VantResolver()],\n    }),\n    Components({\n      resolvers: [VantResolver()],\n    }),\n  ],\n};\n```\n\nFor vue-cli based project，configure the plugin in the `vue.config.js` file:\n\n```js\nconst { VantResolver } = require('@vant/auto-import-resolver');\nconst AutoImport = require('unplugin-auto-import/webpack');\nconst Components = require('unplugin-vue-components/webpack');\n\nmodule.exports = {\n  configureWebpack: {\n    plugins: [\n      // When the version of unplugin-vue-components is less than 0.26.0:\n      AutoImport({ resolvers: [VantResolver()] }),\n      Components({ resolvers: [VantResolver()] }),\n      // when the unplugin-vue-components version is greater than or equal to 0.26.0:\n      AutoImport.default({\n        resolvers: [VantResolver()],\n      }),\n      Components.default({ resolvers: [VantResolver()] }),\n    ],\n  },\n};\n```\n\nFor webpack based project，configure the plugin in the `webpack.config.js` file:\n\n```js\nconst { VantResolver } = require('@vant/auto-import-resolver');\nconst AutoImport = require('unplugin-auto-import/webpack');\nconst Components = require('unplugin-vue-components/webpack');\n\nmodule.exports = {\n  plugins: [\n    // When the version of unplugin-vue-components is less than 0.26.0:\n    AutoImport({ resolvers: [VantResolver()] }),\n    Components({ resolvers: [VantResolver()] }),\n    // when the unplugin-vue-components version is greater than or equal to 0.26.0:\n    AutoImport.default({\n      resolvers: [VantResolver()],\n    }),\n    Components.default({ resolvers: [VantResolver()] }),\n  ],\n};\n```\n\n#### 3. Using Components\n\nThen you can using components from Vant in the template, the `unplugin-vue-components` will automatically import the corresponding Vant components,`@vant/auto-import-resolver` The corresponding component style will be automatically introduced.\n\n```html\n<template>\n  <van-button type=\"primary\" />\n</template>\n```\n\n`unplugin-auto-import` will automatically import the corresponding Vant API and styles.\n\n```html\n<script>\n  showToast('No need to import showToast');\n</script>\n```\n\n#### Tips\n\n- \"Full Import\" and \"On-demand Import\" should not be used at the same time, otherwise it will lead to problems such as code duplication and style overrides.\n- During use, if the component cannot be imported, because `unplugin-vue-components` is not a plug-in officially maintained by `Vant`, it is recommended to give feedback under the [unplugin/unplugin-vue-components](https://github.com/antfu/unplugin/unplugin-vue-components) repository.\n- when the version number of `unplugin-vue-components` is >= 0.26.0, for `webpack`, `vue-cli`, and `rspack`, you need to use `ComponentsPlugin.default` to register.\n- `@vant/auto-import-resolver` provides some configuration options. Please refer to the [README document](https://github.com/youzan/vant/tree/main/packages/vant-auto-import-resolver) for more information.\n- If it is a similar problem that the style does not take effect, feedback under the `Vant` repository.\n\n## With Frameworks\n\n### Use Vant in Nuxt 3\n\nWhen using Vant in Nuxt 3, you can use [vant-nuxt](https://github.com/vant-ui/vant-nuxt), this module can help you to auto importing components and reduce CSS file size.\n\n#### 1. Install Module\n\n```bash\n# with npm\nnpm i @vant/nuxt -D\n\n# with yarn\nyarn add @vant/nuxt -D\n\n# with pnpm\npnpm add @vant/nuxt -D\n\n# with Bun\nbun add @vant/nuxt -D\n```\n\n#### 2. Add Module\n\nadd the module in the `nuxt.config.js` file:\n\n```js\nexport default defineNuxtConfig({\n  modules: ['@vant/nuxt'],\n});\n```\n\n#### 3. Using Components\n\nThen you can using components from Vant in the template, Go to the [Nuxt documentation](https://nuxt.com/docs/guide/directory-structure/components) to learn more.\n\n```html\n<template>\n  <van-button type=\"primary\" @click=\"showToast('toast')\">button</van-button>\n  <VanButton type=\"success\" @click=\"showNotify('notify')\">button</VanButton>\n  <LazyVanButton type=\"default\">lazy button</LazyVanButton>\n</template>\n```\n","packages/vant/docs/markdown/quickstart.zh-CN.md":"# 快速上手\n\n### 介绍\n\n通过本章节你可以了解到 Vant 的安装方法和基本使用姿势。\n\n## 安装\n\n### 通过 npm 安装\n\n在现有项目中使用 Vant 时，可以通过 `npm` 进行安装：\n\n```bash\n# Vue 3 项目，安装最新版 Vant\nnpm i vant\n\n# Vue 2 项目，安装 Vant 2\nnpm i vant@latest-v2\n```\n\n当然，你也可以通过 `yarn`、`pnpm` 或 `bun` 进行安装：\n\n```bash\n# 通过 yarn 安装\nyarn add vant\n\n# 通过 pnpm 安装\npnpm add vant\n\n# 通过 Bun 安装\nbun add vant\n```\n\n### 在新项目中使用\n\n如果你需要新建一个项目，我们推荐使用 [Rsbuild](https://github.com/web-infra-dev/rsbuild)，[Vite](https://cn.vitejs.dev/) 或 [Nuxt 框架](https://nuxt.com)。\n\n#### Rsbuild\n\nRsbuild 是基于 Rspack 的构建工具，由 Vant 作者开发，具备一流的构建速度和开发体验，对 Vant 提供第一优先级支持。\n\n你可以通过以下命令创建一个 Rsbuild 项目：\n\n```bash\nnpm create rsbuild@latest\n```\n\n请访问 [Rsbuild 仓库](https://github.com/web-infra-dev/rsbuild) 了解更多信息。\n\n#### 示例项目\n\n以下是 Vant 官方提供的一些示例项目，你可以克隆该项目，并直接拷贝代码来使用。\n\n- [vant-demo - rsbuild](https://github.com/vant-ui/vant-demo/tree/master/vant/rsbuild)：使用 Vue 3、Vant 4、Rsbuild 搭建应用\n- [vant-demo - vite](https://github.com/vant-ui/vant-demo/tree/master/vant/vite)：使用 Vue 3、Vant 4、Vite 搭建应用\n- [vant-demo - nuxt3](https://github.com/vant-ui/vant-demo/tree/master/vant/nuxt3)：使用 Vue 3、Nuxt 3、Vant 4 搭建应用。\n\n### 通过 CDN 安装\n\n如果你只需要开发一个简单的 HTML 页面，那么可以直接在 HTML 文件中引入 CDN 链接，之后你可以通过全局变量 `vant` 访问到所有组件。\n\n```html\n<!-- 引入样式文件 -->\n<link\n  rel=\"stylesheet\"\n  href=\"https://fastly.jsdelivr.net/npm/vant@4/lib/index.css\"\n/>\n\n<!-- 引入 Vue 和 Vant 的 JS 文件 -->\n<script src=\"https://fastly.jsdelivr.net/npm/vue@3\"></script>\n<script src=\"https://fastly.jsdelivr.net/npm/vant@4/lib/vant.min.js\"></script>\n\n<script>\n  // 在 #app 标签下渲染一个按钮组件\n  const app = Vue.createApp({\n    template: `<van-button>按钮</van-button>`,\n  });\n  app.use(vant);\n\n  // 通过 CDN 引入时不会自动注册 Lazyload 组件\n  // 可以通过下面的方式手动注册\n  app.use(vant.Lazyload);\n\n  // 调用工具函数，弹出一个 Toast\n  vant.showToast('提示');\n\n  app.mount('#app');\n</script>\n```\n\n#### 免费 CDN\n\n你可以通过以下免费 CDN 服务来使用 Vant:\n\n- [jsdelivr](https://www.jsdelivr.com/package/npm/vant)\n- [cdnjs](https://cdnjs.com/libraries/vant)\n- [unpkg](https://unpkg.com/)\n\n注意：免费 CDN 一般用于制作原型或个人小型项目，不推荐在企业生产环境中使用免费 CDN。\n\n对于企业开发者，建议使用以下方式：\n\n- 通过 npm 引入，并通过构建工具进行打包\n- 下载对应文件，并托管在你自己的服务器或 CDN 上\n\n## 示例\n\n### 示例工程\n\n我们提供了丰富的[示例工程](https://github.com/vant-ui/vant-demo)，通过示例工程你可以了解如下内容：\n\n- 基于 Rsbuild 和 Vant 搭建应用\n- 基于 Vite 和 Vant 搭建应用\n- 基于 Nuxt 和 Vant 搭建应用\n- 基于 Vue CLI 和 Vant 搭建应用\n- 配置按需引入组件\n- 配置基于 Rem 的适配方案\n- 配置基于 Viewport 的适配方案\n- 配置基于 TypeScript 的工程\n\n## 引入组件\n\n### 方法一. 常规用法\n\n下面是使用 Vant 组件的用法示例：\n\n```js\nimport { createApp } from 'vue';\n// 1. 引入你需要的组件\nimport { Button } from 'vant';\n// 2. 引入组件样式\nimport 'vant/lib/index.css';\n\nconst app = createApp();\n\n// 3. 注册你需要的组件\napp.use(Button);\n```\n\nVant 支持多种组件注册方式，除了在 app 上全局注册组件，你也可以选择其他的方式，比如局部注册，详见 [组件注册](#/zh-CN/advanced-usage#zu-jian-zhu-ce) 章节。\n\n> 提示：Vant 默认支持 Tree Shaking，因此你不需要配置任何插件，通过 Tree Shaking 即可移除不需要的 JS 代码，但 CSS 样式无法通过这种方式优化，如果需要按需引入 CSS 样式，请参考下面的方法二。\n\n### 方法二. 按需引入组件样式\n\n在基于 Rsbuild、Vite、webpack 或 vue-cli 的项目中使用 Vant 时，可以使用 [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) 插件，它可以自动引入组件。\n\nVant 官方基于 `unplugin-vue-components` 提供了自动导入样式的解析器 [@vant/auto-import-resolver](https://github.com/youzan/vant/tree/main/packages/vant-auto-import-resolver)，两者可以配合使用。\n\n相比于常规用法，这种方式可以按需引入组件的 CSS 样式，从而减少一部分代码体积，但使用起来会变得繁琐一些。如果业务对 CSS 的体积要求不是特别极致，我们推荐使用更简便的常规用法。\n\n#### 1. 安装插件\n\n```bash\n# 通过 npm 安装\nnpm i @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# 通过 yarn 安装\nyarn add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# 通过 pnpm 安装\npnpm add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# 通过 bun 安装\nbun add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n```\n\n#### 2. 配置插件\n\n如果是基于 [Rsbuild](https://github.com/web-infra-dev/rsbuild) 的项目，在 `rsbuild.config.js` 文件中配置插件：\n\n```js\nimport { defineConfig } from '@rsbuild/core';\nimport { pluginVue } from '@rsbuild/plugin-vue';\nimport AutoImport from 'unplugin-auto-import/rspack';\nimport Components from 'unplugin-vue-components/rspack';\nimport { VantResolver } from '@vant/auto-import-resolver';\n\nexport default defineConfig({\n  plugins: [pluginVue()],\n  tools: {\n    rspack: {\n      plugins: [\n        AutoImport({\n          resolvers: [VantResolver()],\n        }),\n        Components({\n          resolvers: [VantResolver()],\n        }),\n      ],\n    },\n  },\n});\n```\n\n如果是基于 Vite 的项目，在 `vite.config.js` 文件中配置插件：\n\n```js\nimport vue from '@vitejs/plugin-vue';\nimport AutoImport from 'unplugin-auto-import/vite';\nimport Components from 'unplugin-vue-components/vite';\nimport { VantResolver } from '@vant/auto-import-resolver';\n\nexport default {\n  plugins: [\n    vue(),\n    AutoImport({\n      resolvers: [VantResolver()],\n    }),\n    Components({\n      resolvers: [VantResolver()],\n    }),\n  ],\n};\n```\n\n如果是基于 vue-cli 的项目，在 `vue.config.js` 文件中配置插件：\n\n```js\nconst { VantResolver } = require('@vant/auto-import-resolver');\nconst AutoImport = require('unplugin-auto-import/webpack');\nconst Components = require('unplugin-vue-components/webpack');\n\nmodule.exports = {\n  configureWebpack: {\n    plugins: [\n      // 当 unplugin-vue-components 版本小于 0.26.0 时，使用以下写法\n      AutoImport({ resolvers: [VantResolver()] }),\n      Components({ resolvers: [VantResolver()] }),\n      //当 unplugin-vue-components 版本大于等于 0.26.0 时，使用以下写法\n      AutoImport.default({\n        resolvers: [VantResolver()],\n      }),\n      Components.default({ resolvers: [VantResolver()] }),\n    ],\n  },\n};\n```\n\n如果是基于 webpack 的项目，在 `webpack.config.js` 文件中配置插件：\n\n```js\nconst { VantResolver } = require('@vant/auto-import-resolver');\nconst AutoImport = require('unplugin-auto-import/webpack');\nconst Components = require('unplugin-vue-components/webpack');\n\nmodule.exports = {\n  plugins: [\n    // 当 unplugin-vue-components 版本小于 0.26.0 时，使用以下写法\n    AutoImport({ resolvers: [VantResolver()] }),\n    Components({ resolvers: [VantResolver()] }),\n    //当 unplugin-vue-components 版本大于等于 0.26.0 时，使用以下写法\n    AutoImport.default({\n      resolvers: [VantResolver()],\n    }),\n    Components.default({ resolvers: [VantResolver()] }),\n  ],\n};\n```\n\n#### 3. 使用组件和 API\n\n完成以上两步，就可以直接在模板中使用 Vant 组件了，`unplugin-vue-components` 会解析模板并自动注册对应的组件, `@vant/auto-import-resolver` 会自动引入对应的组件样式。\n\n```html\n<template>\n  <van-button type=\"primary\" />\n</template>\n```\n\n`unplugin-auto-import` 会自动导入对应的 Vant API 以及样式。\n\n```html\n<script>\n  showToast('No need to import showToast');\n</script>\n```\n\n#### 使用提示\n\n- 请避免同时使用「全量引入」和「按需引入」这两种引入方式，否则会导致代码重复、样式错乱等问题。\n- 在使用过程中，如果你遇到组件不能导入的问题，因为 unplugin-vue-components 并不是 Vant 官方维护的插件，所以建议到 [unplugin/unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) 仓库下反馈。\n- 当 `unplugin-vue-components` 的版本号 >= 0.26.0 时，对于 `webpack`、`vue-cli` 和 `rspack`，你需要使用 `ComponentsPlugin.default` 进行注册。\n- `@vant/auto-import-resolver` 提供了一些配置项，请参考 [README 文档](https://github.com/youzan/vant/tree/main/packages/vant-auto-import-resolver) 来了解更多。\n- 如果是样式不生效的相关问题，你可以在 Vant 仓库下反馈。\n\n## 在框架中使用\n\n### 在 Nuxt 3 中使用\n\n在 Nuxt 3 中使用 Vant 时，可以使用 [vant-nuxt](https://github.com/vant-ui/vant-nuxt) 模块，它可以自动引入组件，并按需引入的样式（包括函数组件）。\n\n#### 1. 安装模块\n\n```bash\n# 通过 npm 安装\nnpm i @vant/nuxt -D\n\n# 通过 yarn 安装\nyarn add @vant/nuxt -D\n\n# 通过 pnpm 安装\npnpm add @vant/nuxt -D\n\n# 通过 Bun 安装\nbun add @vant/nuxt -D\n```\n\n#### 2. 增加模块\n\n在 `nuxt.config.js` 文件中增加模块：\n\n```js\nexport default defineNuxtConfig({\n  modules: ['@vant/nuxt'],\n});\n```\n\n#### 3. 使用组件\n\n完成以上两步，就可以直接在模板中使用 Vant 组件了。前往 [Nuxt 文档](https://nuxt.com/docs/guide/directory-structure/components) 了解更多。\n\n```html\n<template>\n  <van-button type=\"primary\" @click=\"showToast('toast')\">button</van-button>\n  <VanButton type=\"success\" @click=\"showNotify('notify')\">button</VanButton>\n  <LazyVanButton type=\"default\">lazy button</LazyVanButton>\n</template>\n```\n\n## 迁移提示\n\n### 移除 babel-plugin-import\n\n从 Vant 4.0 版本开始，将不再支持 `babel-plugin-import`，请移除项目中依赖的 `babel-plugin-import` 插件。\n\n只需要删除 `babel.config.js` 中的以下代码即可：\n\n```diff\nmodule.exports = {\n  plugins: [\n-    ['import', {\n-      libraryName: 'vant',\n-      libraryDirectory: 'es',\n-      style: true\n-    }, 'vant']\n  ]\n};\n```\n\n#### 收益\n\n移除 `babel-plugin-import` 有以下收益：\n\n- 不再强依赖 babel，项目可以使用 esbuild、swc 等更高效的编译工具，大幅度提升编译效率。\n- 不再受到 `babel-plugin-import` 的 import 写法限制，可以从 vant 中导入除了组件以外的其他内容，比如 Vant 4 中新增的 `showToast` 等方法。\n\n```ts\nimport { showToast, showDialog } from 'vant';\n```\n","packages/vant/docs/markdown/release-note-v4.en-US.md":"# 4.0 Release Note\n\n### Introduction\n\nAfter a year of iterations, Vant 4.0 has been officially released, which is the fourth major version of Vant since it was open-sourced in 2017.\n\nIn this iteration, Vant supports the dark mode, adds five new components, improves the utility function API, and refactors components such as Picker, while continuing to make improvements in lightweighting and usability.\n\n### Dark mode support\n\n**Vant 4.0 supports switching all components to dark mode.**\n\nSimply set the `theme` attribute of the [ConfigProvider component](/vant/#/en-US/config-provider) to `dark` to switch to dark mode, which will switch all Vant components on the page to a dark style.\n\n```html\n<van-config-provider theme=\"dark\">\n  <!-- child components -->\n</van-config-provider>\n```\n\n![](https://user-images.githubusercontent.com/7237365/205472724-6c9ee0df-df10-4f9b-84b6-081576bdcea9.png)\n\nAt the same time, the Vant 4.0 document also supports switching to dark mode:\n\n![](https://user-images.githubusercontent.com/7237365/205472729-fefc9053-1866-4812-8b97-ee0ba5d47230.png)\n\n### Several new components\n\n**Vant 4.0 contains the following new components:**\n\n- [BackTop](/vant/#/en-US/back-top): Used to back to the top of the page.\n- [TimePicker](/vant/#/en-US/time-picker): Used for time selection, including hours, minutes, and seconds.\n- [DatePicker](/vant/#/en-US/time-picker): Used for date selection, including year, month, and day.\n- [PickerGroup](/vant/#/en-US/picker-group): Used to combine multiple Picker components, allow users to select multiple value.\n- [SkeletonItems](/vant/#/en-US/skeleton): Customize the skeleton through subcomponents such as SkeletonTitle, SkeletonImage, and SkeletonAvatar.\n\nAmong them, TimePicker and DatePicker are split from the old DatetimePicker component, and the DatetimePicker component is removed. You can use PickerGroup to get the interactive effect of selecting the date and time at the same time.\n\n![](https://user-images.githubusercontent.com/7237365/205474243-14e0a87c-dcfa-4229-9a16-f6ebf910b621.png)\n\n### Keep it lightweight\n\n**Vant 4.0 has a 30% reduction in installation size, keeping bundle size lightweight.**\n\nAs the npm ecosystem grows, node_modules are eating up our disk space. To alleviate the node_modules black hole and speed up installation, we have optimized Vant's npm dependencies and build outputs.\n\nCompared with Vant 3.6.2, the installation size of Vant 4.0.0 has been reduced from 7MB to 5MB. In contrast, the installation size of mainstream component libraries in the community is generally between 15MB and 80MB. You can check the installation size of npm packages through [packagephobia](https://packagephobia.com/result?p=vant).\n\n![](https://user-images.githubusercontent.com/7237365/205470714-e1828299-4df2-40f4-b7cc-f65971fe4567.png)\n\nIn terms of bundle size, this update still increases the size without increasing the price, and the size after Minified + Gzipped remains below 70KB:\n\n![](https://user-images.githubusercontent.com/7237365/205474583-f2d8226f-e089-42d7-8326-3c874dcf1784.png)\n\n### Unify the primary color\n\n**Vant 4.0 unifies the primary color of all components.**\n\nIn the previous version, Vant components had two primary colors, some components used blue `#1989fa` as their primary color, and others used red `#ee0a24`.\n\nTo keep the color specification consistent, we have unified the primary color in Vant 4, and all components use blue as the primary color.\n\n![](https://user-images.githubusercontent.com/7237365/205472726-a0552833-f99d-447a-acce-051ec7ebdbe1.png)\n\nNow that the primary color is unified, theme customization becomes easier. For example, you can override the `--van-primary-color` CSS variable to set the primary color of all components to green:\n\n```css\n:root {\n  --van-primary-color: #07c160;\n}\n```\n\n### Import method adjustment as needed\n\n**Vant 4.0 no longer uses babel-plugin-import for on-demand import.**\n\nIn the early days, most component libraries used `babel-plugin-import` to achieve on-demand import, which means that component libraries will strongly rely on Babel compilation. Starting from Vant 4.0, `babel-plugin-import` is no longer supported, which has the following main advantages:\n\n- Instead of relying heavily on Babel compilation, projects can use modern compilation tools such as SWC and esbuild to improve compilation efficiency.\n\n![](https://user-images.githubusercontent.com/7237365/205478241-dba3c4ed-152c-4892-9e74-1a0d978be314.png)\n\n- No longer subject to the import restrictions of `babel-plugin-import`, you can import content other than Vant components, such as the new `showToast` method in Vant 4, or the `buttonProps` object:\n\n```ts\nimport { showToast, buttonProps } from 'vant';\n```\n\nIn terms of bundle size, removing `babel-plugin-import` will not affect on the JS size of the project, because Vant supports tree shaking by default to remove unnecessary JS code by default, and CSS code can be imported on demand via [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components). For detailed usage, please refer to [\"Quick Start\"](/vant/#/en-US/quickstart).\n\n### Style variable type hints\n\n**Vant 4.0 provides type hints for style variables.**\n\nVant provides more than 700 style variables, which you can modify through CSS code or `ConfigProvider` component. In Vant 4.0, we have added the `ConfigProviderThemeVars` type to provide type hints for style variables.\n\nSo when writing TypeScript code, you can use type hints to complete theme variable names:\n\n![](https://user-images.githubusercontent.com/7237365/205478960-c284e272-a394-4098-ad0f-eda72e74f9f7.png)\n\n### Picker component refactoring\n\n**Vant 4.0 refactored the Picker component, as well as the Picker-based Area and DatetimePicker components.**\n\nIn the previous version, the API design of the `Picker` component was not sensible enough, causing people to often encounter problems when using it, such as:\n\n- The columns data format of Picker is unreasonable, which is easy to cause misunderstanding.\n- The data flow of Picker is not clear, exposing too many instance methods to operate on the data.\n- The logic of DatetimePicker is too complex, and bugs often occur in borderline scenarios.\n\nTo solve the above problems, we refactored the `Picker` component in Vant 4.0, and also refactored the `Area` and `DatetimePicker` components derived from `Picker`.\n\nIf these three components are used in your project, please read the [\"Upgrade Guide\"](/vant/#/en-US/migrate-from-v3) to upgrade.\n\n### Component Utils Adjustment\n\n**Vant 4.0 adjusts the usage of component utility functions to be more intuitive.**\n\nVant 3 provides some component utils, such as calling the `Dialog()` function, which can quickly invoke the global Dialog component, and `Dialog.Component` is the component object corresponding to `Dialog`.\n\n```ts\n// function call\nDialog({ message: 'Hello World!' });\n\n// component registration\napp.use('van-dialog', Dialog.Component);\n```\n\nThe above API design leads to usage differences between Dialog and other components, and is easily abused; it also prevents `unplugin-vue-components` from automatically importing Dialog and other components.\n\nTo be more intuitive, we have adjusted the calling method of component utils in Vant 4. The affected functions include `Dialog()`, `Toast()`, `Notify()` and `ImagePreview()`. Taking Dialog as an example, we rename the `Dialog()` function to `showDialog()`, and let `Dialog` directly point to the component object.\n\n```ts\n// function call\nshowDialog({ message: 'Hello World!' });\n\n// component registration\napp.use('van-dialog', Dialog);\n```\n\nTo facilitate the migration of existing code to Vant 4.0, we provide a compatibility solution. You can use the `Dialog()` function exported from `@vant/compat` to be compatible with the original code.\n\n```js\nimport { Dialog } from '@vant/compat';\n\nDialog({ message: 'Hello World!' });\n```\n\nThe `Dialog()` exported in `@vant/compat` has exactly the same API and behavior as `Dialog()` in Vant 3, so when upgrading, you only need to change its reference path, and the rest of the code can remain constant. After upgrading the project to Vant 4.0, it is recommended to gradually replace it with the new `showDialog()` and other methods in iterations, and remove the `@vant/compat` package.\n\n### Event naming adjustment\n\n**Vant 4.0 changes the event name to camel case.**\n\nStarting from Vant 4, all events are named in camelCase format recommended by Vue.\n\n```js\n// Vant 3\nemit('click-input');\n\n// Vant 4\nemit('clickInput');\n```\n\nThis change **does not affect the original template code**, Vue will automatically format the event name in the template, so you don't need to make any changes.\n\n```html\n<!-- The following code works as usual without any changes -->\n<van-field @click-input=\"onClick\" />\n```\n\nIf you are using the Vant component in JSX, you will need to change the event name to camel case, the original dash format will no longer take effect, and the new monitoring method is more in line with JSX's own specifications:\n\n```jsx\n// Vant 3\n<Field onClick-input={onClick} />\n\n// Vant 4\n<Field onClickInput={onClick} />\n```\n\n### Remove Less variables\n\n**Vant 4.0 no longer supports theme customization via Less variables.**\n\nCurrently Vant already supports theme customization based on CSS variables, which is more flexible than Less customization. Therefore, Vant 4 will no longer provide Less-based theme customization. This means that Vant's npm package will no longer contain `.less` style source files, only the compiled `.css` style files will be provided.\n\nIf your project is using an old version of Less theme customization, please use [ConfigProvider global configuration](#/en-US/config-provider) to replace it.\n\n### Vant Cli 5.0\n\n**This update also releases Vant Cli 5.0.**\n\n[Vant Cli](https://github.com/youzan/vant/tree/main/packages/vant-cli) is the underlying component library construction tool of Vant. The content of this update includes:\n\n- Upgrade Vite to version 3.0, and upgrade related Vite plugins.\n- The `stylelint` and `@vant/stylelint-config` dependencies are no longer installed by default, you can install them yourself if needed:\n\n```bash\nnpm add stylelint@13 @vant/stylelint-config\n```\n\n- The `gh-pages` dependency is no longer installed by default, please update package.json as follows:\n\n```diff\n- \"release:site\": \"pnpm build:site && gh-pages -d site-dist\",\n+ \"release:site\": \"pnpm build:site && npx gh-pages -d site-dist\",\n```\n\n### Version Information\n\n**Currently both [Vant official website](/vant/) and npm latest tag point to Vant 4.0.**\n\nWe have prepared a complete upgrade guide for Vant 4.0, please read [Upgrade from v3 to v4](/vant/#/en-US/migrate-from-v3) to upgrade.\n\nThe maintenance status of each version of Vant is as follows:\n\n| Name   | Framework | Release Date | Maintenance Status |\n| ------ | --------- | ------------ | ------------------ |\n| Vant 4 | Vue 3     | `2022.12`    | Long-term support  |\n| Vant 3 | Vue 3     | `2020.12`    | End of life        |\n| Vant 2 | Vue 2     | `2019.06`    | End of life        |\n| Vant 1 | Vue 2     | `2018.03`    | End of life        |\n\n### Finally\n\nThanks to all the friends who contributed to the development of Vant 4.0, thanks to all developers who use Vant, and hope that everyone will keep walking on the road of open source.\n\n![](https://user-images.githubusercontent.com/7237365/205481230-fdd89482-86ad-40c8-b81f-4af0789f8488.png)\n","packages/vant/docs/markdown/release-note-v4.zh-CN.md":"# 4.0 版本介绍\n\n### 引言\n\n历经一年的迭代，Vant 4.0 版本已正式发布，这是 Vant 自 2017 年开源以来发布的第四个重要版本。\n\n在本次迭代中，Vant 支持了深色模式，增加五个新组件，改善工具函数 API 并重构 Picker 等组件，同时继续在轻量化和易用性方面做出改进。\n\n### 支持深色模式\n\n**Vant 4.0 支持切换所有组件为深色模式。**\n\n只需要把 [ConfigProvider 组件](/vant/#/zh-CN/config-provider)的 `theme` 属性设置为 `dark`，即可切换为深色模式，将页面上的所有 Vant 组件变成深色风格。\n\n```html\n<van-config-provider theme=\"dark\">\n  <!-- child components -->\n</van-config-provider>\n```\n\n![](https://user-images.githubusercontent.com/7237365/205472724-6c9ee0df-df10-4f9b-84b6-081576bdcea9.png)\n\n同时，Vant 4.0 文档也已支持切换为深色模式：\n\n![](https://user-images.githubusercontent.com/7237365/205472729-fefc9053-1866-4812-8b97-ee0ba5d47230.png)\n\n### 几个新组件\n\n**Vant 4.0 包含以下新组件：**\n\n- [BackTop 回到顶部](/vant/#/zh-CN/back-top)：返回页面顶部的操作按钮。\n- [TimePicker 时间选择器](/vant/#/zh-CN/time-picker)：用于时间选择，包括时、分、秒。\n- [DatePicker 日期选择器](/vant/#/zh-CN/date-picker)：用于日期选择，包括年、月、日。\n- [PickerGroup 选择器组](/vant/#/zh-CN/picker-group)：用于结合多个 Picker 选择器组件，在一次交互中完成多个值的选择。\n- [Skeleton 骨架屏子组件](/vant/#/zh-CN/skeleton)：通过 SkeletonTitle、SkeletonImage、SkeletonAvatar 等子组件来自定义骨架屏。\n\n其中，TimePicker 和 DatePicker 由旧版的 DatetimePicker 组件拆分而来，DatetimePicker 组件不再提供。你可以通过 PickerGroup 来实现同时选择日期和时间的交互效果。\n\n![](https://user-images.githubusercontent.com/7237365/205474243-14e0a87c-dcfa-4229-9a16-f6ebf910b621.png)\n\n### 保持轻量\n\n**Vant 4.0 的安装体积降低 30%，包体积保持轻量。**\n\n随着 npm 生态的发展，node_modules 正在吞噬我们的磁盘空间。为了缓解 node_modules 黑洞、加快安装速度，我们对 Vant 的 npm 依赖和构建产物进行了优化。\n\n相较于 Vant 3.6.2 版本，Vant 4.0.0 版本的安装体积由 7MB 下降至 5MB。作为对比，社区中主流组件库的安装体积普遍在 15MB ~ 80MB。你可以通过 [packagephobia](https://packagephobia.com/result?p=vant) 来查询 npm 包的安装体积。\n\n![](https://user-images.githubusercontent.com/7237365/205470714-e1828299-4df2-40f4-b7cc-f65971fe4567.png)\n\n在包体积上，本次更新依然加量不加价，Minified + Gzipped 后的体积保持在 70KB 以下：\n\n![](https://user-images.githubusercontent.com/7237365/205474583-f2d8226f-e089-42d7-8326-3c874dcf1784.png)\n\n### 统一主色调\n\n**Vant 4.0 统一了所有组件的主色调。**\n\n在之前的版本中，Vant 组件有两种主色调，部分组件采用蓝色 `#1989fa` 作为主色调，另一部分则采用红色 `#ee0a24`。\n\n为了保持色彩规范的一致性，我们在 Vant 4 中对主色调进行统一，所有组件均采用蓝色作为主色调。\n\n![](https://user-images.githubusercontent.com/7237365/205472726-a0552833-f99d-447a-acce-051ec7ebdbe1.png)\n\n统一主色调后，主题定制会变得更加容易。比如，你可以覆盖 `--van-primary-color` 这个 CSS 变量，将所有组件的主色调设置为绿色：\n\n```css\n:root {\n  --van-primary-color: #07c160;\n}\n```\n\n### 按需引入方式调整\n\n**Vant 4.0 不再使用 babel-plugin-import 实现按需引入。**\n\n在早期，组件库大多使用 `babel-plugin-import` 实现按需引入，这意味着组件库会强依赖 Babel 编译。从 Vant 4.0 开始，将不再支持 `babel-plugin-import`，主要带来以下收益：\n\n- 不再强依赖 Babel 编译，项目可以使用 SWC、esbuild 等现代编译工具，进而提升编译效率。\n\n![](https://user-images.githubusercontent.com/7237365/205478241-dba3c4ed-152c-4892-9e74-1a0d978be314.png)\n\n- 不再受到 `babel-plugin-import` 的 import 限制，可以从 Vant 中导入除组件以外的内容，比如 Vant 4 中新增的 `showToast` 方法，或是 `buttonProps` 对象：\n\n```ts\nimport { showToast, buttonProps } from 'vant';\n```\n\n在包体积方面，移除 `babel-plugin-import` 对项目的 JS 体积不会有影响，因为 Vant 默认支持通过 Tree Shaking 来移除不需要的 JS 代码，而 CSS 代码可以通过 [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) 插件实现按需引入，详细用法请参考 [「快速上手」](/vant/#/zh-CN/quickstart)。\n\n### 样式变量类型提示\n\n**Vant 4.0 提供了样式变量的类型提示。**\n\nVant 提供了 700 多个样式变量，你可以通过 CSS 代码或 `ConfigProvider` 组件修改这些样式变量。在 Vant 4.0 中，我们新增了 `ConfigProviderThemeVars` 类型，以提供样式变量的类型提示。\n\n因此在编写 TypeScript 代码时，你可以通过类型提示来补全主题变量名称：\n\n![](https://user-images.githubusercontent.com/7237365/205478960-c284e272-a394-4098-ad0f-eda72e74f9f7.png)\n\n### Picker 组件重构\n\n**Vant 4.0 重构了 Picker 组件，以及基于 Picker 的 Area 和 DatetimePicker 组件。**\n\n在之前的版本中，`Picker` 组件的 API 设计不够合理，导致大家在使用时经常遇到问题，比如：\n\n- Picker 的 columns 数据格式不合理，容易产生误解。\n- Picker 的数据流不清晰，暴露了过多的实例方法来对数据进行操作。\n- DatetimePicker 的逻辑过于复杂，经常在边界场景下出现 bug。\n\n为了解决上述问题，我们在 Vant 4.0 中对 `Picker` 组件进行了重构，同时也重构了基于 `Picker` 派生出的 `Area` 和 `DatetimePicker` 组件。\n\n如果你的项目中使用了这三个组件，请阅读 [「升级指南」](/vant/#/zh-CN/migrate-from-v3) 进行升级。\n\n### 组件工具函数调整\n\n**Vant 4.0 调整了组件工具函数的用法，使其更符合直觉。**\n\nVant 3 提供了一些组件工具函数，比如调用 `Dialog()` 函数，可以快速唤起全局的弹窗组件，而 `Dialog.Component` 才是 `Dialog` 对应的组件对象。\n\n```ts\n// 函数调用\nDialog({ message: 'Hello World!' });\n\n// 组件注册\napp.use('van-dialog', Dialog.Component);\n```\n\n以上 API 设计导致 Dialog 等支持工具函数的组件与常规组件存在用法差异，容易被误用；同时也导致 `unplugin-vue-components` 无法自动引入 Dialog 等组件。\n\n为了更符合直觉，我们在 Vant 4 中调整了组件工具函数的调用方式，受影响的函数包括 `Dialog()`、`Toast()`、`Notify()` 和 `ImagePreview()`。以 Dialog 为例，我们将 `Dialog()` 函数重命名为 `showDialog()`，并让 `Dialog` 直接指向组件对象。\n\n```ts\n// 函数调用\nshowDialog({ message: 'Hello World!' });\n\n// 组件注册\napp.use('van-dialog', Dialog);\n```\n\n为了便于存量代码迁移至 Vant 4.0，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `Dialog()` 函数来兼容原有代码。\n\n```js\nimport { Dialog } from '@vant/compat';\n\nDialog({ message: 'Hello World!' });\n```\n\n`@vant/compat` 中导出的 `Dialog()` 与 Vant 3 中的 `Dialog()` 拥有完全一致的 API 和行为，因此在升级时，你只需要修改它的引用路径，其余代码可以保持不变。在项目完成升级到 Vant 4.0 后，建议在迭代中逐步替换为新的 `showDialog()` 等方法，并移除 `@vant/compat` 包。\n\n### 事件命名调整\n\n**Vant 4.0 将事件名改为驼峰格式。**\n\n从 Vant 4 开始，所有的事件均采用 Vue 官方推荐的驼峰格式进行命名。\n\n```js\n// Vant 3\nemit('click-input');\n\n// Vant 4\nemit('clickInput');\n```\n\n这项改动**不影响原有的模板代码**，Vue 会自动在模板中对事件名进行格式转换，因此你无须做任何更改。\n\n```html\n<!-- 以下代码可以照常运行，无须做任何更改 -->\n<van-field @click-input=\"onClick\" />\n```\n\n如果你在 JSX 中使用 Vant 组件，需要将监听的事件名调整为驼峰格式，原有的中划线格式将不再生效，新的监听方式更加符合 JSX 本身的规范：\n\n```jsx\n// Vant 3\n<Field onClick-input={onClick} />\n\n// Vant 4\n<Field onClickInput={onClick} />\n```\n\n### 移除 Less 变量\n\n**Vant 4.0 不再支持通过 Less 变量定制主题。**\n\n目前 Vant 已经支持基于 CSS 变量的主题定制，相较于 Less 定制更加灵活。因此，Vant 4 将不再提供基于 Less 的主题定制。这意味着 Vant 的 npm 包中将不再会包含 `.less` 样式源文件，仅会提供编译后的 `.css` 样式文件。\n\n如果你的项目正在使用旧版的 Less 主题定制，请使用 [ConfigProvider 全局配置](#/zh-CN/config-provider) 进行替换。\n\n### Vant Cli 5.0\n\n**本次更新同步发布了 Vant Cli 5.0 版本。**\n\n[Vant Cli](https://github.com/youzan/vant/tree/main/packages/vant-cli) 是 Vant 底层的组件库构建工具，本次更新内容有：\n\n- 升级 Vite 到 3.0 版本，并对相关的 Vite 插件进行升级。\n- 不再默认安装 `stylelint` 和 `@vant/stylelint-config` 依赖，需要的话可以自行安装：\n\n```bash\nnpm add stylelint@13 @vant/stylelint-config\n```\n\n- 不再默认安装 `gh-pages` 依赖，请按照如下方式更新 package.json：\n\n```diff\n- \"release:site\": \"pnpm build:site && gh-pages -d site-dist\",\n+ \"release:site\": \"pnpm build:site && npx gh-pages -d site-dist\",\n```\n\n### 版本信息\n\n**目前 [Vant 官网](/vant/) 和 npm latest 标签均已指向 Vant 4.0。**\n\n我们为 Vant 4.0 准备了完整的升级指南，请阅读 [从 v3 升级到 v4](/vant/#/zh-CN/migrate-from-v3) 进行升级。\n\n后续 Vant 各个版本的维护状态如下：\n\n| 名称   | 框架  | 发布时间  | 维护状态              |\n| ------ | ----- | --------- | --------------------- |\n| Vant 4 | Vue 3 | `2022.12` | 长期支持              |\n| Vant 3 | Vue 3 | `2020.12` | 终止支持，不再接受 PR |\n| Vant 2 | Vue 2 | `2019.06` | 终止支持，不再接受 PR |\n| Vant 1 | Vue 2 | `2018.03` | 终止支持，不再接受 PR |\n\n### 最后\n\n感谢在 Vant 4.0 迭代期间做出贡献的朋友们，感谢所有使用 Vant 的开发者，愿大家在开源的道路上步履不停。\n\n![](https://user-images.githubusercontent.com/7237365/205481230-fdd89482-86ad-40c8-b81f-4af0789f8488.png)\n","packages/vant/docs/markdown/use-click-away.en-US.md":"# useClickAway\n\n### Intro\n\nTriggers a callback when user clicks outside of the target element.\n\n## Usage\n\n### Basic Usage\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref } from 'vue';\nimport { useClickAway } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    useClickAway(root, () => {\n      console.log('click outside!');\n    });\n\n    return { root };\n  },\n};\n```\n\n### Custom Event\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref } from 'vue';\nimport { useClickAway } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    useClickAway(\n      root,\n      () => {\n        console.log('touch outside!');\n      },\n      { eventName: 'touchstart' },\n    );\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\ntype Options = {\n  eventName?: string;\n};\n\nfunction useClickAway(\n  target:\n    | Element\n    | Ref<Element | undefined>\n    | Array<Element | Ref<Element | undefined>>,\n  listener: EventListener,\n  options?: Options,\n): void;\n```\n\n### Params\n\n| Name | Description | Type | Default Value |\n| --- | --- | --- | --- |\n| target | Target element, support multiple elements | _Element \\| Ref\\<Element> \\| Array\\<Element \\| Ref\\<Element>>_ | - |\n| listener | Callback function when the outside is clicked | _EventListener_ | - |\n| options | Options | _Options_ | `{ eventName: 'click' }` |\n\n### Options\n\n| Name      | Description | Type     | Default Value |\n| --------- | ----------- | -------- | ------------- |\n| eventName | Event name  | _string_ | `click`       |\n","packages/vant/docs/markdown/use-click-away.zh-CN.md":"# useClickAway\n\n### 介绍\n\n监听点击元素外部的事件。\n\n## 代码演示\n\n### 基本用法\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref } from 'vue';\nimport { useClickAway } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    useClickAway(root, () => {\n      console.log('click outside!');\n    });\n\n    return { root };\n  },\n};\n```\n\n### 自定义事件\n\n通过 `eventName` 选项可以自定义需要监听的事件类型。\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref } from 'vue';\nimport { useClickAway } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    useClickAway(\n      root,\n      () => {\n        console.log('touch outside!');\n      },\n      { eventName: 'touchstart' },\n    );\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\ntype Options = {\n  eventName?: string;\n};\n\nfunction useClickAway(\n  target:\n    | Element\n    | Ref<Element | undefined>\n    | Array<Element | Ref<Element | undefined>>,\n  listener: EventListener,\n  options?: Options,\n): void;\n```\n\n### 参数\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| target | 绑定事件的元素，支持传入数组来绑定多个元素 | _Element \\| Ref\\<Element> \\| Array\\<Element \\| Ref\\<Element>>_ | - |\n| listener | 点击外部时触发的回调函数 | _EventListener_ | - |\n| options | 可选的配置项 | _Options_ | 见下表 |\n\n### Options\n\n| 参数      | 说明           | 类型     | 默认值  |\n| --------- | -------------- | -------- | ------- |\n| eventName | 监听的事件类型 | _string_ | `click` |\n","packages/vant/docs/markdown/use-count-down.en-US.md":"# useCountDown\n\n### Intro\n\nUsed to manage the countdown.\n\n## Usage\n\n### Basic Usage\n\n```html\n<span>Total time：{{ current.total }}</span>\n<span>Remain days：{{ current.days }}</span>\n<span>Remain hours：{{ current.hours }}</span>\n<span>Remain minutes：{{ current.minutes }}</span>\n<span>Remain seconds：{{ current.seconds }}</span>\n<span>Remain milliseconds：{{ current.milliseconds }}</span>\n```\n\n```js\nimport { useCountDown } from '@vant/use';\n\nexport default {\n  setup() {\n    const countDown = useCountDown({\n      time: 24 * 60 * 60 * 1000,\n    });\n\n    countDown.start();\n\n    return {\n      current: countDown.current,\n    };\n  },\n};\n```\n\n### Millisecond\n\n```js\nimport { useCountDown } from '@vant/use';\n\nexport default {\n  setup() {\n    const countDown = useCountDown({\n      time: 24 * 60 * 60 * 1000,\n      millisecond: true,\n    });\n    countDown.start();\n\n    return {\n      current: countDown.current,\n    };\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\ntype CurrentTime = {\n  days: number;\n  hours: number;\n  total: number;\n  minutes: number;\n  seconds: number;\n  milliseconds: number;\n};\n\ntype CountDown = {\n  start: () => void;\n  pause: () => void;\n  reset: (totalTime: number) => void;\n  current: ComputedRef<CurrentTime>;\n};\n\ntype UseCountDownOptions = {\n  time: number;\n  millisecond?: boolean;\n  onChange?: (current: CurrentTime) => void;\n  onFinish?: () => void;\n};\n\nfunction useCountDown(options: UseCountDownOptions): CountDown;\n```\n\n### Params\n\n| Name | Description | Type | Default Value |\n| --- | --- | --- | --- |\n| time | Total time, unit milliseconds | _number_ | - |\n| millisecond | Whether to enable millisecond render | _boolean_ | `false` |\n| onChange | Triggered when count down changed | _(current: CurrentTime) => void_ | - |\n| onFinish | Triggered when count down finished | _() => void_ | - |\n\n### Return Value\n\n| Name    | Description         | Type                    |\n| ------- | ------------------- | ----------------------- |\n| current | Current remain time | _CurrentTime_           |\n| start   | Start count down    | _() => void_            |\n| pause   | Pause count down    | _() => void_            |\n| reset   | Reset count down    | _(time?: number): void_ |\n\n### CurrentTime Structure\n\n| Name         | Description                   | Type     |\n| ------------ | ----------------------------- | -------- |\n| total        | Total time, unit milliseconds | _number_ |\n| days         | Remain days                   | _number_ |\n| hours        | Remain hours                  | _number_ |\n| minutes      | Remain minutes                | _number_ |\n| seconds      | Remain seconds                | _number_ |\n| milliseconds | Remain milliseconds           | _number_ |\n","packages/vant/docs/markdown/use-count-down.zh-CN.md":"# useCountDown\n\n### 介绍\n\n提供倒计时管理能力。\n\n## 代码演示\n\n### 基本用法\n\n```html\n<span>总时间：{{ current.total }}</span>\n<span>剩余天数：{{ current.days }}</span>\n<span>剩余小时：{{ current.hours }}</span>\n<span>剩余分钟：{{ current.minutes }}</span>\n<span>剩余秒数：{{ current.seconds }}</span>\n<span>剩余毫秒：{{ current.milliseconds }}</span>\n```\n\n```js\nimport { useCountDown } from '@vant/use';\n\nexport default {\n  setup() {\n    const countDown = useCountDown({\n      // 倒计时 24 小时\n      time: 24 * 60 * 60 * 1000,\n    });\n\n    // 开始倒计时\n    countDown.start();\n\n    return {\n      current: countDown.current,\n    };\n  },\n};\n```\n\n### 毫秒级渲染\n\n倒计时默认每秒渲染一次，设置 millisecond 选项可以开启毫秒级渲染。\n\n```js\nimport { useCountDown } from '@vant/use';\n\nexport default {\n  setup() {\n    const countDown = useCountDown({\n      time: 24 * 60 * 60 * 1000,\n      millisecond: true,\n    });\n    countDown.start();\n\n    return {\n      current: countDown.current,\n    };\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\ntype CurrentTime = {\n  days: number;\n  hours: number;\n  total: number;\n  minutes: number;\n  seconds: number;\n  milliseconds: number;\n};\n\ntype CountDown = {\n  start: () => void;\n  pause: () => void;\n  reset: (totalTime: number) => void;\n  current: ComputedRef<CurrentTime>;\n};\n\ntype UseCountDownOptions = {\n  time: number;\n  millisecond?: boolean;\n  onChange?: (current: CurrentTime) => void;\n  onFinish?: () => void;\n};\n\nfunction useCountDown(options: UseCountDownOptions): CountDown;\n```\n\n### 参数\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| time | 倒计时时长，单位毫秒 | _number_ | - |\n| millisecond | 是否开启毫秒级渲染 | _boolean_ | `false` |\n| onChange | 倒计时改变时触发的回调函数 | _(current: CurrentTime) => void_ | - |\n| onFinish | 倒计时结束时触发的回调函数 | _() => void_ | - |\n\n### 返回值\n\n| 参数    | 说明                               | 类型                    |\n| ------- | ---------------------------------- | ----------------------- |\n| current | 当前剩余的时间                     | _CurrentTime_           |\n| start   | 开始倒计时                         | _() => void_            |\n| pause   | 暂停倒计时                         | _() => void_            |\n| reset   | 重置倒计时，支持传入新的倒计时时长 | _(time?: number): void_ |\n\n### CurrentTime 格式\n\n| 名称         | 说明                   | 类型     |\n| ------------ | ---------------------- | -------- |\n| total        | 剩余总时间（单位毫秒） | _number_ |\n| days         | 剩余天数               | _number_ |\n| hours        | 剩余小时               | _number_ |\n| minutes      | 剩余分钟               | _number_ |\n| seconds      | 剩余秒数               | _number_ |\n| milliseconds | 剩余毫秒               | _number_ |\n","packages/vant/docs/markdown/use-custom-field-value.en-US.md":"# useCustomFieldValue\n\n### Intro\n\nUsed to custom Field value.\n\n## Usage\n\n### Basic Usage\n\nIf you want to custom Form items, you can insert your component into the `input` slot of the Field component, and call the `useCustomFieldValue` method inside your custom component.\n\n#### MyComponent\n\n```js\n// MyComponent.vue\nimport { ref } from 'vue';\nimport { useCustomFieldValue } from '@vant/use';\n\nexport default {\n  setup() {\n    const myValue = ref(0);\n\n    useCustomFieldValue(() => myValue.value);\n\n    return { myValue };\n  },\n};\n```\n\n#### Form\n\n```html\n<van-form>\n  <van-field name=\"my-field\" label=\"Custom Field\">\n    <template #input>\n      <my-component />\n    </template>\n  </van-field>\n</van-form>\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useCustomFieldValue(customValue: () => unknown): void;\n```\n\n### Params\n\n| Name        | Description                 | Type            | Default Value |\n| ----------- | --------------------------- | --------------- | ------------- |\n| customValue | Function to get field value | _() => unknown_ | -             |\n","packages/vant/docs/markdown/use-custom-field-value.zh-CN.md":"# useCustomFieldValue\n\n### 介绍\n\n用于自定义 Form 组件中的表单项。\n\n## 代码演示\n\n### 基本用法\n\n如果需要自定义表单项，可以在 Field 组件的 `input` 插槽中插入你的自定义组件，并在自定义组件内部调用 `useCustomFieldValue` 方法。\n\n#### 自定义组件\n\n首先，在你的自定义组件中，调用 `useCustomFieldValue` 方法，并传入一个回调函数，这个函数返回值为表单项的值。\n\n```js\n// MyComponent.vue\nimport { ref } from 'vue';\nimport { useCustomFieldValue } from '@vant/use';\n\nexport default {\n  setup() {\n    const myValue = ref(0);\n\n    // 此处传入的值会替代 Field 组件内部的 value\n    useCustomFieldValue(() => myValue.value);\n\n    return { myValue };\n  },\n};\n```\n\n#### 表单\n\n接着，在 Form 组件中嵌入你的自定义组件，当提交表单时，即可获取到自定义表单项的值。\n\n```html\n<van-form>\n  <!-- 这是一个自定义表单项 -->\n  <!-- 当表单提交时，会包括 useCustomFieldValue 中传入的值 -->\n  <van-field name=\"my-field\" label=\"自定义表单项\">\n    <template #input>\n      <my-component />\n    </template>\n  </van-field>\n</van-form>\n```\n\n## API\n\n### 类型定义\n\n```ts\nfunction useCustomFieldValue(customValue: () => unknown): void;\n```\n\n### 参数\n\n| 参数        | 说明               | 类型            | 默认值 |\n| ----------- | ------------------ | --------------- | ------ |\n| customValue | 获取表单项值的函数 | _() => unknown_ | -      |\n","packages/vant/docs/markdown/use-event-listener.en-US.md":"# useEventListener\n\n### Intro\n\nAttaching an event when the component is `mounted` and `activated`, then removing the event when the component is `unmounted` and `deactivated`.\n\n## Usage\n\n### Basic Usage\n\n```js\nimport { ref } from 'vue';\nimport { useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    // attach the resize event to window\n    useEventListener('resize', () => {\n      console.log('window resize');\n    });\n\n    // attach the click event to the body element\n    useEventListener(\n      'click',\n      () => {\n        console.log('click body');\n      },\n      { target: document.body },\n    );\n  },\n};\n```\n\n### Remove Event Listener\n\n`useEventListener` will return a `cleanup` function，you can call it to remove the event listener.\n\n```js\nimport { ref } from 'vue';\nimport { useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    const cleanup = useEventListener('resize', () => {\n      console.log('window resize');\n    });\n\n    cleanup();\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\ntype Options = {\n  target?: EventTarget | Ref<EventTarget>;\n  capture?: boolean;\n  passive?: boolean;\n};\n\nfunction useEventListener(\n  type: string,\n  listener: EventListener,\n  options?: Options,\n): () => void;\n```\n\n### Params\n\n| Name     | Description       | Type            | Default Value |\n| -------- | ----------------- | --------------- | ------------- |\n| type     | Event type        | _string_        | -             |\n| listener | Callback function | _EventListener_ | -             |\n| options  | Options           | _Options_       | -             |\n\n### Options\n\n| Name | Description | Type | Default Value |\n| --- | --- | --- | --- |\n| target | Target element | _EventTarget \\| Ref\\<EventTarget>_ | `window` |\n| capture | Whether to enable capture | _boolean_ | `false` |\n| passive | if true, indicates that the listener will never call `preventDefault()` | _boolean_ | `false` |\n","packages/vant/docs/markdown/use-event-listener.zh-CN.md":"# useEventListener\n\n### 介绍\n\n方便地进行事件绑定，在组件 `mounted` 和 `activated` 时绑定事件，`unmounted` 和 `deactivated` 时解绑事件。\n\n## 代码演示\n\n### 基本用法\n\n```js\nimport { ref } from 'vue';\nimport { useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    // 在 window 上绑定 resize 事件\n    // 未指定监听对象时，默认会监听 window 的事件\n    useEventListener('resize', () => {\n      console.log('window resize');\n    });\n\n    // 在 body 元素上绑定 click 事件\n    useEventListener(\n      'click',\n      () => {\n        console.log('click body');\n      },\n      { target: document.body },\n    );\n  },\n};\n```\n\n### 取消事件监听\n\n`useEventListener` 会返回一个 `cleanup` 函数，调用该函数可以取消事件监听。\n\n```js\nimport { ref } from 'vue';\nimport { useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    const cleanup = useEventListener('resize', () => {\n      console.log('window resize');\n    });\n\n    cleanup();\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\ntype Options = {\n  target?: EventTarget | Ref<EventTarget>;\n  capture?: boolean;\n  passive?: boolean;\n};\n\nfunction useEventListener(\n  type: string,\n  listener: EventListener,\n  options?: Options,\n): () => void;\n```\n\n### 参数\n\n| 参数     | 说明           | 类型            | 默认值 |\n| -------- | -------------- | --------------- | ------ |\n| type     | 监听的事件类型 | _string_        | -      |\n| listener | 事件回调函数   | _EventListener_ | -      |\n| options  | 可选的配置项   | _Options_       | -      |\n\n### Options\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| target | 绑定事件的元素 | _EventTarget \\| Ref\\<EventTarget>_ | `window` |\n| capture | 是否在事件捕获阶段触发 | _boolean_ | `false` |\n| passive | 设置为 `true` 时，表示 `listener` 永远不会调用 `preventDefault` | _boolean_ | `false` |\n","packages/vant/docs/markdown/use-page-visibility.en-US.md":"# usePageVisibility\n\n### Intro\n\nGet the visible state of the page.\n\n## Usage\n\n### Basic Usage\n\n```js\nimport { watch } from 'vue';\nimport { usePageVisibility } from '@vant/use';\n\nexport default {\n  setup() {\n    const pageVisibility = usePageVisibility();\n\n    watch(pageVisibility, (value) => {\n      console.log('visibility: ', value);\n    });\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\ntype VisibilityState = 'visible' | 'hidden';\n\nfunction usePageVisibility(): Ref<VisibilityState>;\n```\n\n### Return Value\n\n| Name | Description | Type |\n| --- | --- | --- |\n| visibilityState | The current visible state of the page, could be `visible` or `hidden` | _Ref\\<VisibilityState>_ |\n","packages/vant/docs/markdown/use-page-visibility.zh-CN.md":"# usePageVisibility\n\n### 介绍\n\n获取页面的可见状态。\n\n## 代码演示\n\n### 基本用法\n\n```js\nimport { watch } from 'vue';\nimport { usePageVisibility } from '@vant/use';\n\nexport default {\n  setup() {\n    const pageVisibility = usePageVisibility();\n\n    watch(pageVisibility, (value) => {\n      console.log('visibility: ', value);\n    });\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\ntype VisibilityState = 'visible' | 'hidden';\n\nfunction usePageVisibility(): Ref<VisibilityState>;\n```\n\n### 返回值\n\n| 参数 | 说明 | 类型 |\n| --- | --- | --- |\n| visibilityState | 页面当前的可见状态，`visible` 为可见，`hidden` 为隐藏 | _Ref\\<VisibilityState>_ |\n","packages/vant/docs/markdown/use-raf.en-US.md":"# useRaf\n\n### Intro\n\nProvide convenient call and cancellation of [requestAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame).\n\n## Usage\n\n### Single Call\n\nBy using the `useRaf` method, you can execute a function before the next browser repaint.\n\n```js\nimport { useRaf } from '@vant/use';\n\nexport default {\n  setup() {\n    let count = 0;\n    useRaf(() => {\n      console.log(++count); // It will only be executed once.\n    });\n  },\n};\n```\n\n### Loop Calls\n\nBy using the `isLoop` option, you can execution of a function repeatedly at a specified interval until it is canceled.\n\n```js\nimport { useRaf } from '@vant/use';\n\nexport default {\n  setup() {\n    let count = 0;\n    const cancelRaf = useRaf(\n      () => {\n        console.log(++count); // Execute infinitely until canceled\n\n        if (count === 5) {\n          cancelRaf();\n        }\n      },\n      {\n        isLoop: true, // Enable the loop\n        interval: 100, // Set call interval\n      },\n    );\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useRaf(\n  callback: () => void,\n  options: {\n    interval?: number;\n    isLoop?: boolean;\n  },\n): void;\n```\n\n### Params\n\n| Name | Description | Type | Default |\n| --- | --- | --- | --- |\n| callback | Callback | _() => void_ | - |\n| options | Options | _{ interval?: number; isLoop?: boolean }_ | _{ interval: 0; isLoop: false }_ |\n","packages/vant/docs/markdown/use-raf.zh-CN.md":"# useRaf\n\n### 介绍\n\n提供便捷的 [requestAnimationFrame](https://developer.mozilla.org/zh-CN/docs/Web/API/window/requestAnimationFrame) 的调用和取消。\n\n## 代码演示\n\n### 单次调用\n\n通过 `useRaf` 方法，可以在下一次浏览器重新绘制之前调用指定的函数。\n\n```js\nimport { useRaf } from '@vant/use';\n\nexport default {\n  setup() {\n    let count = 0;\n    useRaf(() => {\n      console.log(++count); // 只会执行 1 次\n    });\n  },\n};\n```\n\n### 循环调用\n\n通过开启 `isLoop` 选项，你可以按指定的间隔重复执行某个函数，直到被取消。\n\n```js\nimport { useRaf } from '@vant/use';\n\nexport default {\n  setup() {\n    let count = 0;\n    const cancelRaf = useRaf(\n      () => {\n        console.log(++count); // 无限执行，直到被 cancel\n\n        if (count === 5) {\n          cancelRaf();\n        }\n      },\n      {\n        isLoop: true, // 开启循环\n        interval: 100, // 设置调用间隔\n      },\n    );\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\nfunction useRaf(\n  callback: () => void,\n  options: {\n    interval?: number;\n    isLoop?: boolean;\n  },\n): void;\n```\n\n### 参数\n\n| 参数 | 说明 | 类型 | 默认 |\n| --- | --- | --- | --- |\n| callback | 回调函数 | _() => void_ | - |\n| options | 配置参数 | _{ interval?: number; isLoop?: boolean }_ | _{ interval: 0; isLoop: false }_ |\n","packages/vant/docs/markdown/use-rect.en-US.md":"# useRect\n\n### Intro\n\nGet the size of an element and its position relative to the viewport, equivalent to [Element.getBoundingClientRect](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).\n\n## Usage\n\n### Basic Usage\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref, onMounted } from 'vue';\nimport { useRect } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n\n    onMounted(() => {\n      const rect = useRect(root);\n      console.log(rect); // -> the size of an element and its position relative to the viewport\n    });\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useRect(\n  element: Element | Window | Ref<Element | Window | undefined>,\n): DOMRect;\n```\n\n### Return Value\n\n| Name | Description | Type |\n| --- | --- | --- |\n| width | Width of the element | _number_ |\n| height | Height of the element | _number_ |\n| top | The distance from the top to the top-left of the viewport | _number_ |\n| left | The distance from the left to the top-left of the viewport | _number_ |\n| right | The distance from the right to the top-left of the viewport | _number_ |\n| bottom | The distance from the bottom to the top-left of the viewport | _number_ |\n","packages/vant/docs/markdown/use-rect.zh-CN.md":"# useRect\n\n### 介绍\n\n获取元素的大小及其相对于视口的位置，等价于 [Element.getBoundingClientRect](https://developer.mozilla.org/zh-CN/docs/Web/API/Element/getBoundingClientRect)。\n\n## 代码演示\n\n### 基本用法\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref, onMounted } from 'vue';\nimport { useRect } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n\n    onMounted(() => {\n      const rect = useRect(root);\n      console.log(rect); // -> 元素的大小及其相对于视口的位置\n    });\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\nfunction useRect(\n  element: Element | Window | Ref<Element | Window | undefined>,\n): DOMRect;\n```\n\n### 返回值\n\n| 参数   | 说明                       | 类型     |\n| ------ | -------------------------- | -------- |\n| width  | 宽度                       | _number_ |\n| height | 高度                       | _number_ |\n| top    | 顶部与视图窗口左上角的距离 | _number_ |\n| left   | 左侧与视图窗口左上角的距离 | _number_ |\n| right  | 右侧与视图窗口左上角的距离 | _number_ |\n| bottom | 底部与视图窗口左上角的距离 | _number_ |\n","packages/vant/docs/markdown/use-relation.en-US.md":"# useRelation\n\n### Intro\n\nEstablish the association relationship between parent and child components, perform data communication and method invocation, based on `provide` and `inject` implementation.\n\n## Usage\n\n### Basic Usage\n\nUse `useChildren` in parent to associate child components:\n\n```js\nimport { ref } from 'vue';\nimport { useChildren } from '@vant/use';\n\nconst RELATION_KEY = Symbol('my-relation');\n\nexport default {\n  setup() {\n    const { linkChildren } = useChildren(RELATION_KEY);\n\n    const count = ref(0);\n    const add = () => {\n      count.value++;\n    };\n\n    // provide data and methods to children\n    linkChildren({ add, count });\n  },\n};\n```\n\nUse `useParent` in child component to get the data and methods provided by parent.\n\n```js\nimport { useParent } from '@vant/use';\n\nexport default {\n  setup() {\n    const { parent } = useParent(RELATION_KEY);\n\n    // use data and methods provided by parent\n    if (parent) {\n      parent.add();\n      console.log(parent.count.value); // -> 1\n    }\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useParent<T>(key: string | symbol): {\n  parent?: T;\n  index?: Ref<number>;\n};\n\nfunction useChildren(key: string | symbol): {\n  children: ComponentPublicInstance[];\n  linkChildren: (value: any) => void;\n};\n```\n\n### Return Value of useParent\n\n| Name | Description | Type |\n| --- | --- | --- |\n| parent | Data and methods provided by parent | _any_ |\n| index | Index position of the current component in all child of the parent component | _Ref\\<number>_ |\n\n### Return Value of useChildren\n\n| Name | Description | Type |\n| --- | --- | --- |\n| children | Component list of children | _ComponentPublicInstance[]_ |\n| linkChildren | Function to provide values to child | _(value: any) => void_ |\n","packages/vant/docs/markdown/use-relation.zh-CN.md":"# useRelation\n\n### 介绍\n\n建立父子组件之间的关联关系，进行数据通信和方法调用，基于 `provide` 和 `inject` 实现。\n\n## 代码演示\n\n### 基本用法\n\n在父组件中使用 `useChildren` 关联子组件:\n\n```js\nimport { ref } from 'vue';\nimport { useChildren } from '@vant/use';\n\nconst RELATION_KEY = Symbol('my-relation');\n\nexport default {\n  setup() {\n    const { linkChildren } = useChildren(RELATION_KEY);\n\n    const count = ref(0);\n    const add = () => {\n      count.value++;\n    };\n\n    // 向子组件提供数据和方法\n    linkChildren({ add, count });\n  },\n};\n```\n\n在子组件中使用 `useParent` 获取父组件提供的数据和方法:\n\n```js\nimport { useParent } from '@vant/use';\n\nexport default {\n  setup() {\n    const { parent } = useParent(RELATION_KEY);\n\n    // 调用父组件提供的数据和方法\n    if (parent) {\n      parent.add();\n      console.log(parent.count.value); // -> 1\n    }\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\nfunction useParent<T>(key: string | symbol): {\n  parent?: T;\n  index?: Ref<number>;\n};\n\nfunction useChildren(key: string | symbol): {\n  children: ComponentPublicInstance[];\n  linkChildren: (value: any) => void;\n};\n```\n\n### useParent 返回值\n\n| 参数   | 说明                                         | 类型           |\n| ------ | -------------------------------------------- | -------------- |\n| parent | 父组件提供的值                               | _any_          |\n| index  | 当前组件在父组件的所有子组件中对应的索引位置 | _Ref\\<number>_ |\n\n### useChildren 返回值\n\n| 参数         | 说明                 | 类型                        |\n| ------------ | -------------------- | --------------------------- |\n| children     | 子组件列表           | _ComponentPublicInstance[]_ |\n| linkChildren | 向子组件提供值的方法 | _(value: any) => void_      |\n","packages/vant/docs/markdown/use-scroll-parent.en-US.md":"# useScrollParent\n\n### Intro\n\nGet the closest parent element that is scrollable.\n\n## Usage\n\n### Basic Usage\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref, watch } from 'vue';\nimport { useScrollParent, useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    const scrollParent = useScrollParent(root);\n\n    useEventListener(\n      'scroll',\n      () => {\n        console.log('scroll');\n      },\n      { target: scrollParent },\n    );\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useScrollParent(\n  element: Ref<Element | undefined>,\n): Ref<Element | Window | undefined>;\n```\n\n### Params\n\n| Name    | Description         | Type            | Default Value |\n| ------- | ------------------- | --------------- | ------------- |\n| element | The current element | _Ref\\<Element>_ | -             |\n\n### Return Value\n\n| Name | Description | Type |\n| --- | --- | --- |\n| scrollParent | The closest parent element that is scrollable | _Ref\\<Element>_ |\n","packages/vant/docs/markdown/use-scroll-parent.zh-CN.md":"# useScrollParent\n\n### 介绍\n\n获取元素最近的可滚动父元素。\n\n## 代码演示\n\n### 基本用法\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref, watch } from 'vue';\nimport { useScrollParent, useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    const scrollParent = useScrollParent(root);\n\n    useEventListener(\n      'scroll',\n      () => {\n        console.log('scroll');\n      },\n      { target: scrollParent },\n    );\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\nfunction useScrollParent(\n  element: Ref<Element | undefined>,\n): Ref<Element | Window | undefined>;\n```\n\n### 参数\n\n| 参数    | 说明     | 类型            | 默认值 |\n| ------- | -------- | --------------- | ------ |\n| element | 当前元素 | _Ref\\<Element>_ | -      |\n\n### 返回值\n\n| 参数         | 说明               | 类型            |\n| ------------ | ------------------ | --------------- |\n| scrollParent | 最近的可滚动父元素 | _Ref\\<Element>_ |\n","packages/vant/docs/markdown/use-toggle.en-US.md":"# useToggle\n\n### Intro\n\nUsed to switch between `true` and `false`.\n\n## Usage\n\n### Basic Usage\n\n```js\nimport { useToggle } from '@vant/use';\n\nexport default {\n  setup() {\n    const [state, toggle] = useToggle();\n\n    toggle(true);\n    console.log(state.value); // -> true\n\n    toggle(false);\n    console.log(state.value); // -> false\n\n    toggle();\n    console.log(state.value); // -> true\n  },\n};\n```\n\n### Default Value\n\n```js\nimport { useToggle } from '@vant/use';\n\nexport default {\n  setup() {\n    const [state, toggle] = useToggle(true);\n    console.log(state.value); // -> true\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useToggle(\n  defaultValue: boolean,\n): [Ref<boolean>, (newValue: boolean) => void];\n```\n\n### Params\n\n| Name         | Description   | Type      | Default Value |\n| ------------ | ------------- | --------- | ------------- |\n| defaultValue | Default value | _boolean_ | `false`       |\n\n### Return Value\n\n| Name   | Description              | Type                           |\n| ------ | ------------------------ | ------------------------------ |\n| state  | State                    | _Ref\\<boolean>_                |\n| toggle | Function to switch state | _(newValue?: boolean) => void_ |\n","packages/vant/docs/markdown/use-toggle.zh-CN.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fdocs%2Fmarkdown%2Fuse-toggle.zh-CN.md -->","packages/vant/docs/markdown/use-window-size.en-US.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fdocs%2Fmarkdown%2Fuse-window-size.en-US.md -->","packages/vant/docs/markdown/use-window-size.zh-CN.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fdocs%2Fmarkdown%2Fuse-window-size.zh-CN.md -->","packages/vant/docs/markdown/vant-use-intro.en-US.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fdocs%2Fmarkdown%2Fvant-use-intro.en-US.md -->","packages/vant/docs/markdown/vant-use-intro.zh-CN.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fdocs%2Fmarkdown%2Fvant-use-intro.zh-CN.md -->","packages/vant/src/action-bar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Faction-bar%2FREADME.md -->","packages/vant/src/action-sheet/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Faction-sheet%2FREADME.md -->","packages/vant/src/address-edit/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Faddress-edit%2FREADME.md -->","packages/vant/src/address-list/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Faddress-list%2FREADME.md -->","packages/vant/src/area/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Farea%2FREADME.md -->","packages/vant/src/back-top/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fback-top%2FREADME.md -->","packages/vant/src/badge/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fbadge%2FREADME.md -->","packages/vant/src/barrage/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fbarrage%2FREADME.md -->","packages/vant/src/button/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fbutton%2FREADME.md -->","packages/vant/src/calendar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcalendar%2FREADME.md -->","packages/vant/src/card/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcard%2FREADME.md -->","packages/vant/src/cascader/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcascader%2FREADME.md -->","packages/vant/src/cell/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcell%2FREADME.md -->","packages/vant/src/checkbox/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcheckbox%2FREADME.md -->","packages/vant/src/circle/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcircle%2FREADME.md -->","packages/vant/src/col/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcol%2FREADME.md -->","packages/vant/src/collapse/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcollapse%2FREADME.md -->","packages/vant/src/config-provider/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fconfig-provider%2FREADME.md -->","packages/vant/src/contact-card/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcontact-card%2FREADME.md -->","packages/vant/src/contact-edit/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcontact-edit%2FREADME.md -->","packages/vant/src/contact-list/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcontact-list%2FREADME.md -->","packages/vant/src/count-down/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcount-down%2FREADME.md -->","packages/vant/src/coupon-list/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcoupon-list%2FREADME.md -->","packages/vant/src/date-picker/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fdate-picker%2FREADME.md -->","packages/vant/src/dialog/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fdialog%2FREADME.md -->","packages/vant/src/divider/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fdivider%2FREADME.md -->","packages/vant/src/dropdown-menu/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fdropdown-menu%2FREADME.md -->","packages/vant/src/empty/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fempty%2FREADME.md -->","packages/vant/src/field/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ffield%2FREADME.md -->","packages/vant/src/floating-bubble/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ffloating-bubble%2FREADME.md -->","packages/vant/src/floating-panel/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ffloating-panel%2FREADME.md -->","packages/vant/src/form/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fform%2FREADME.md -->","packages/vant/src/grid/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fgrid%2FREADME.md -->","packages/vant/src/highlight/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fhighlight%2FREADME.md -->","packages/vant/src/icon/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ficon%2FREADME.md -->","packages/vant/src/image-preview/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fimage-preview%2FREADME.md -->","packages/vant/src/image/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fimage%2FREADME.md -->","packages/vant/src/index-bar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Findex-bar%2FREADME.md -->","packages/vant/src/lazyload/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Flazyload%2FREADME.md -->","packages/vant/src/list/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Flist%2FREADME.md -->","packages/vant/src/loading/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Floading%2FREADME.md -->","packages/vant/src/locale/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Flocale%2FREADME.md -->","packages/vant/src/nav-bar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fnav-bar%2FREADME.md -->","packages/vant/src/notice-bar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fnotice-bar%2FREADME.md -->","packages/vant/src/notify/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fnotify%2FREADME.md -->","packages/vant/src/number-keyboard/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fnumber-keyboard%2FREADME.md -->","packages/vant/src/overlay/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Foverlay%2FREADME.md -->","packages/vant/src/pagination/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpagination%2FREADME.md -->","packages/vant/src/password-input/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpassword-input%2FREADME.md -->","packages/vant/src/picker-group/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpicker-group%2FREADME.md -->","packages/vant/src/picker/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpicker%2FREADME.md -->","packages/vant/src/popover/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpopover%2FREADME.md -->","packages/vant/src/popup/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpopup%2FREADME.md -->","packages/vant/src/progress/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fprogress%2FREADME.md -->","packages/vant/src/pull-refresh/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpull-refresh%2FREADME.md -->","packages/vant/src/radio/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fradio%2FREADME.md -->","packages/vant/src/rate/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Frate%2FREADME.md -->","packages/vant/src/rolling-text/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Frolling-text%2FREADME.md -->","packages/vant/src/search/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsearch%2FREADME.md -->","packages/vant/src/share-sheet/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fshare-sheet%2FREADME.md -->","packages/vant/src/sidebar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsidebar%2FREADME.md -->","packages/vant/src/signature/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsignature%2FREADME.md -->","packages/vant/src/skeleton-avatar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fskeleton-avatar%2FREADME.md -->","packages/vant/src/skeleton-image/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fskeleton-image%2FREADME.md -->","packages/vant/src/skeleton-paragraph/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fskeleton-paragraph%2FREADME.md -->","packages/vant/src/skeleton-title/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fskeleton-title%2FREADME.md -->","packages/vant/src/skeleton/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fskeleton%2FREADME.md -->","packages/vant/src/slider/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fslider%2FREADME.md -->","packages/vant/src/space/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fspace%2FREADME.md -->","packages/vant/src/stepper/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fstepper%2FREADME.md -->","packages/vant/src/steps/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsteps%2FREADME.md -->","packages/vant/src/sticky/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsticky%2FREADME.md -->","packages/vant/src/style/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fstyle%2FREADME.md -->","packages/vant/src/submit-bar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsubmit-bar%2FREADME.md -->","packages/vant/src/swipe-cell/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fswipe-cell%2FREADME.md -->","packages/vant/src/swipe/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fswipe%2FREADME.md -->","packages/vant/src/switch/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fswitch%2FREADME.md -->","packages/vant/src/tab/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftab%2FREADME.md -->","packages/vant/src/tabbar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftabbar%2FREADME.md -->","packages/vant/src/tag/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftag%2FREADME.md -->","packages/vant/src/text-ellipsis/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftext-ellipsis%2FREADME.md -->","packages/vant/src/time-picker/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftime-picker%2FREADME.md -->","packages/vant/src/toast/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftoast%2FREADME.md -->","packages/vant/src/tree-select/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftree-select%2FREADME.md -->","packages/vant/src/uploader/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fuploader%2FREADME.md -->","packages/vant/src/watermark/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fwatermark%2FREADME.md -->"},"files":{".agents/skills/rstack-cli-docs/SKILL.md":"---\nname: rstack-cli-docs\ndescription: Consult installed, version-matched Rstack docs only for user-facing `rs` command behavior, `rstack.config.*` semantics, or public `rstack` APIs. Do not use for purely internal implementation, tests, performance, or repository maintenance.\n---\n\n# Rstack CLI Docs\n\nRstack CLI is the `rstack` package, exposed through the `rs` binaries. It provides one CLI, one config file, and a consistent workflow for the Rstack JavaScript toolchain.\n\nIt covers web app, library, docs, test, lint, formatting, Git hook, and staged-file workflows.\n\n## Read installed docs when this skill applies\n\nWhen this skill applies, find and read the relevant Markdown documentation shipped with the installed `rstack` package.\n\nModel knowledge can be outdated; the installed documentation is the source of truth for the project's Rstack version.\n\n1. Start with `node_modules/rstack/docs/llms.txt`, then read only the linked pages relevant to the task before proposing or making changes.\n\n2. For exact CLI flags and behavior, also run `rs -h` or `rs <command> -h` when supported.\n\nIf the bundled docs are not available at that path, locate the installed `rstack` package.\n\nIf they are still unavailable, verify that `rstack` is installed, and use CLI help plus the online [Rstack documentation](https://rstack.rs/) as a fallback.\n","packages/create-vant-cli-app/generators/vue2/docs/home.md":"# 介绍\n\n### 关于\n\n这是一段组件库的介绍\n\n### 特性\n\n- 特性一\n- 特性二\n- 特性三\n","packages/create-vant-cli-app/generators/vue2/docs/quickstart.md":"# 快速上手\n\n### 安装\n\n```bash\n# 通过 npm\nnpm i <%= name %>\n\n# 通过 yarn\nyarn add <%= name %>\n\n# 通过 pnpm\npnpm add <%= name %>\n\n# 通过 bun\nbun add <%= name %>\n```\n","packages/create-vant-cli-app/generators/vue2/src/demo-button/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fcreate-vant-cli-app%2Fgenerators%2Fvue2%2Fsrc%2Fdemo-button%2FREADME.md -->","packages/create-vant-cli-app/generators/vue3/docs/home.md":"# 介绍\n\n### 关于\n\n这是一段组件库的介绍\n\n### 特性\n\n- 特性一\n- 特性二\n- 特性三\n","packages/create-vant-cli-app/generators/vue3/docs/quickstart.md":"# 快速上手\n\n### 安装\n\n```bash\n# 通过 npm\nnpm i <%= name %>\n\n# 通过 yarn\nyarn add <%= name %>\n\n# 通过 pnpm\npnpm add <%= name %>\n\n# 通过 bun\nbun add <%= name %>\n```\n","packages/create-vant-cli-app/generators/vue3/src/demo-button/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fcreate-vant-cli-app%2Fgenerators%2Fvue3%2Fsrc%2Fdemo-button%2FREADME.md -->","packages/vant-area-data/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-area-data%2FREADME.md -->","packages/vant-auto-import-resolver/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-auto-import-resolver%2FREADME.md -->","packages/vant-cli/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-cli%2FREADME.md -->","packages/vant-cli/docs/commands.md":"# Commands\n\nYou can add built-in commands to `npm scripts` to use it.\n\n```json\n// package.json\n{\n  \"scripts\": {\n    \"dev\": \"vant-cli dev\",\n    \"test\": \"vant-cli test\",\n    \"release\": \"vant-cli release\",\n    \"build-site\": \"vant-cli build-site\"\n  }\n}\n```\n\nAdditionally, [npx](https://github.com/npm/npx) can used to be run those commands.\n\n```bash\nnpx vant-cli dev\n```\n\n### dev\n\nStart local dev server for browsering components and demo.\n\n### build\n\nBuild Vue component library.\n\nFiles will be output to `es` and `lib` directory. More details [directory structure](https://github.com/vant-ui/vant/tree/main/packages/vant-cli/docs/directory.md)\n\nPlease add the followed config to `package.json` when publish to npm.\n\n```json\n// package.json\n{\n  \"main\": \"lib/index.js\",\n  \"module\": \"es/index.js\",\n  \"files\": [\"es\", \"lib\"]\n}\n```\n\n### build-site\n\nBuild documentation website. Files will be output to `site` directory.\n\n### release\n\nPublish to npm. `build` will be automatically execute when run `release`.\n\n### commit-lint\n\nValidate the format of commit message. Need `husky` to do this.\n","packages/vant-cli/docs/commands.zh-CN.md":"# 命令\n\nVant CLI 中内置了一系列的命令，可以将命令添加到 npm scripts 中进行使用。\n\n```json\n// package.json\n{\n  \"scripts\": {\n    \"dev\": \"vant-cli dev\",\n    \"test\": \"vant-cli test\",\n    \"release\": \"vant-cli release\",\n    \"build-site\": \"vant-cli build-site\"\n  }\n}\n```\n\n也可以通过 npm 自带的 [npx](https://github.com/npm/npx) 直接执行某个命令：\n\n```bash\nnpx vant-cli dev\n```\n\n### dev\n\n运行本地开发环境。\n\n运行 dev 命令时，Vant CLI 会通过启动一个本地服务器，用于在开发过程中对文档和示例进行预览。\n\n### build\n\n构建组件库。\n\n运行 build 命令会在 `es` 和 `lib` 目录下生成可用于生产环境的组件代码，详见 [目录结构](https://github.com/vant-ui/vant/tree/main/packages/vant-cli/docs/directory.zh-CN.md)。\n\n发布 npm 时，请将以下配置加入到 `package.json` 中，使 npm 包能被正确识别:\n\n```json\n// package.json\n{\n  \"main\": \"lib/index.js\",\n  \"module\": \"es/index.js\",\n  \"files\": [\"es\", \"lib\"]\n}\n```\n\n### build-site\n\n构建文档站点，在 `site` 目录生成可用于生产环境的文档站点代码。\n\n### release\n\n发布组件库，发布前会自动执行 build 命令，并按照流程发布 npm 包。\n\n### commit-lint\n\n校验 commit message 的格式是否符合规范，需要配合 `husky` 在提交 commit 时触发。\n","packages/vant-cli/docs/config.md":"# Config\n\n- [Config](#----)\n  - [rsbuild.config.mjs](#rsbuildconfigmjs)\n  - [vite.config.mjs](#viteconfigmjs)\n  - [vant.config.mjs](#vantconfigmjs)\n    - [name](#name)\n    - [build.css.base](#buildcssbase)\n    - [build.css.preprocessor](#buildcsspreprocessor)\n    - [build.site.publicPath](#buildsitepublicpath)\n    - [build.srcDir](#buildsrcdir)\n    - [build.namedExport](#buildnamedexport)\n    - [build.packageManager](#buildpackagemanager)\n    - [site.title](#sitetitle)\n    - [site.logo](#sitelogo)\n    - [site.description](#sitedescription)\n    - [site.nav](#sitenav)\n    - [site.versions](#siteversions)\n    - [site.baiduAnalytics](#sitebaiduanalytics)\n    - [site.hideSimulator](#sitehidesimulator)\n    - [site.simulator.url](#sitesimulatorurl)\n    - [site.htmlMeta](#sitehtmlmeta)\n    - [site.enableVConsole](#siteenablevconsole)\n  - [PostCSS](#postcss)\n    - [Default Config](#-----1)\n  - [browserslist](#browserslist)\n\n## rsbuild.config.mjs\n\nVant CLI uses [Rsbuild](https://github.com/web-infra-dev/rsbuild) to build the documentation site. You can create an Rsbuild configuration file in the same directory as `vant.config.mjs`. The contents of the file will be automatically read by Vant CLI.\n\n```js\n// rsbuild.config.mjs or rsbuild.config.ts\nexport default {\n  plugins: [\n    // Configure Rsbuild plugins\n  ],\n  dev: {\n    // Options related to local development\n  },\n  html: {\n    // Options related to HTML generation\n  },\n  // Other options\n};\n```\n\n> Please refer to [Configure Rsbuild](https://rsbuild.dev/guide/basic/configure-rsbuild) for more information.\n\n## vite.config.mjs\n\nVant Cli uses Vite to build component library code. You can create a Vite configuration file in the same directory as `vant.config.mjs`. In this file, you can add any Vite configuration.\n\n> Please refer to [Vite Configuration](https://vitejs.dev/config/) to learn more.\n\n## vant.config.mjs\n\n`vant.config.mjs` includes bundle and documentation site config. Please create this file and place it in your project root directory. Here is a basic example:\n\n```js\nexport default {\n  // component library name\n  name: 'demo-ui',\n  // bundle config\n  build: {\n    site: {\n      publicPath: '/demo-ui/',\n    },\n  },\n  // documentation site config\n  site: {\n    // title\n    title: 'Demo UI',\n    // logo\n    logo: 'https://fastly.jsdelivr.net/npm/@vant/assets/logo.png',\n    // description\n    description: '示例组件库',\n    // left nav\n    nav: [\n      {\n        title: 'example',\n        items: [\n          {\n            path: 'home',\n            title: 'home',\n          },\n        ],\n      },\n      {\n        title: 'basic components',\n        items: [\n          {\n            path: 'my-button',\n            title: 'MyButton',\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n### name\n\n- Type: `string`\n- Default: `''`\n\nComponent library name. kebab-case recommended.\n\n### build.css.base\n\n- Type: `string`\n- Default: `'style/base.less'`\n\nGlobal style file path. Support absolute path and relative path both.\n\nNote: relative path is calculated based on `src`.\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      base: 'style/global.scss',\n    },\n  },\n};\n```\n\n### build.css.preprocessor\n\n- Type: `string`\n- Default: `'less'`\n\nCSS preprocessor config, support `less` and `sass`. Use `less` by default.\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      preprocessor: 'sass',\n    },\n  },\n};\n```\n\n### build.css.removeSourceFile\n\n- Type: `boolean`\n- Default: `'false'`\n\nWhether to remove the source style files after build.\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      removeSourceFile: true,\n    },\n  },\n};\n```\n\n### build.site.publicPath\n\n- Type: `string`\n- Default: `/`\n\nEquivalent to vite `build.outDir`.\n\nGenerally, documentation site will be deployed to subpath of domain. For example: `https://my.github.io/demo-ui/`, `publicPath` should be `/demo-ui/`.\n\n```js\nmodule.exports = {\n  build: {\n    site: {\n      publicPath: '/demo-ui/',\n    },\n  },\n};\n```\n\n### build.srcDir\n\n- Type: `string`\n- Default: `src`\n\n```js\nmodule.exports = {\n  build: {\n    srcDir: 'myDir',\n  },\n};\n```\n\n### build.namedExport\n\n- Type: `boolean`\n- Default: `false`\n\nShould export components by Named Export.\n\nWhen set to `false`, `export default from 'xxx'` will be used to export module.\n\nWhen set to `true`, `export * from 'xxx'` will be used to export all modules and type definition.\n\n### build.configureVite\n\n- Type: `(config: InlineConfig): InlineConfig | undefined`\n- Default: `undefined`\n\nCustom [vite config](https://vitejs.dev/config/), requires `@vant/cli>= 4.0.0`.\n\n```js\nmodule.exports = {\n  build: {\n    configureVite(config) {\n      config.server.port = 3000;\n      return config;\n    },\n  },\n};\n```\n\nIf you need to configure some vite plugins, please create a `vite.config.ts` file in the same directory of `vant.config.mjs`, in which you can add any vite configuration (this feature requires @vant/cli 5.1.0).\n\n### build.packageManager\n\n- Type: `'npm' | 'yarn' | 'pnpm' | 'bun'`\n- Default: `yarn`\n\n`npm` package manager.\n\n### build.bundleOptions\n\n- Type: `BundleOptions[]`\n\nSpecify the format of the bundled output.\n\nThe type of `BundleOptions`:\n\n```ts\ntype BundleOption = {\n  // Whether to minify code (Tips: es format output can't be minified by vite)\n  minify?: boolean;\n  // Formats, can be set to 'es' | 'cjs' | 'umd' | 'iife'\n  formats: LibraryFormats[];\n  // Dependencies to external (Vue is externaled by default)\n  external?: string[];\n};\n```\n\nDefault value：\n\n```ts\nconst DEFAULT_OPTIONS: BundleOption[] = [\n  {\n    minify: false,\n    formats: ['umd'],\n  },\n  {\n    minify: true,\n    formats: ['umd'],\n  },\n  {\n    minify: false,\n    formats: ['es', 'cjs'],\n    external: allDependencies,\n  },\n];\n```\n\n### site.title\n\n- Type: `string`\n- Default: `''`\n\nDocumentation site title.\n\n### site.logo\n\n- Type: `string`\n- Default: `''`\n\nDocumentation site logo.\n\n### site.description\n\n- Type: `string`\n- Default: `''`\n\nDocumentation site description.\n\n### site.nav\n\n- Type: `object[]`\n- Default: `undefined`\n\nDocumentation site left nav. Each item of `nav` means a navigation group.\n\n```js\nmodule.exports = {\n  site: {\n    nav: [\n      {\n        // group title\n        title: 'Development Guide',\n        // nav items\n        items: [\n          {\n            // nav router\n            path: 'home',\n            // nav title\n            title: 'title',\n            // should hide phone emulator(false by default)\n            hideSimulator: true,\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n### site.versions\n\n- Type: `object[]`\n- Default: `undefined`\n\nDocumentation site muti-version config.\n\n```js\nmodule.exports = {\n  site: {\n    versions: [\n      {\n        label: 'v1',\n        link: '/v1/',\n      },\n    ],\n  },\n};\n```\n\n### site.baiduAnalytics\n\n- Type: `object`\n- Default: `undefined`\n\nDocumentation site baidu analysis config. The script of Baidu Statistic will be automatically loaded when build documentation website.\n\n```js\nmodule.exports = {\n  site: {\n    baiduAnalytics: {\n      // 打开百度统计 ->『管理』->『代码获取』\n      // find the followed URL: \"https://hm.baidu.com/hm.js?xxxxx\"\n      // add `xxxxx` in the seed\n      seed: 'xxxxx',\n    },\n  },\n};\n```\n\n### site.hideSimulator\n\n- Type: `boolean`\n- Default: `false`\n\nShould hide phone emulator, `false` by default.\n\n### site.simulator.url\n\n- Type: `string`\n- Default: -\n\nCustomize iframe URL.\n\n### site.htmlMeta\n\n- Type: `Record<string, string>`\n- Default: `undefined`\n\nCustomize HTML meta tag, key means name, value means content.\n\n### site.headHtml\n\n- Type: `string`\n- Default: `undefined`\n\nInsert a custom HTML content in the `<head>` tag.\n\n### site.enableVConsole\n\n- Type: `boolean`\n- Default: `false`\n\nWhether to enable [vConsole](https://github.com/Tencent/vConsole) debugging in dev, usually used for mobile debugging.\n\n## PostCSS\n\nPostCSS can be configured through the `postcss.config.js` file in the root directory.\n\n### Default Config\n\nPostCSS default config:\n\n```js\nmodule.exports = {\n  plugins: {\n    autoprefixer: {},\n  },\n};\n```\n\n## browserslist\n\nAdd browserslist field to `package.json` file is recommended. It's used by `autoprefixer` to determine the version of target browser, ensuring compatibility of compiled code.\n\nYou can add the following config for mobile:\n\n```json\n{\n  \"browserslist\": [\"Chrome >= 51\", \"iOS >= 10\"]\n}\n```\n","packages/vant-cli/docs/config.zh-CN.md":"# 配置指南\n\n- [配置指南](#----)\n  - [rsbuild.config.mjs](#rsbuildconfigmjs)\n  - [vite.config.mjs](#viteconfigmjs)\n  - [vant.config.mjs](#vantconfigmjs)\n    - [name](#name)\n    - [build.css.base](#buildcssbase)\n    - [build.css.preprocessor](#buildcsspreprocessor)\n    - [build.site.publicPath](#buildsitepublicpath)\n    - [build.srcDir](#buildsrcdir)\n    - [build.namedExport](#buildnamedexport)\n    - [build.packageManager](#buildpackagemanager)\n    - [site.title](#sitetitle)\n    - [site.logo](#sitelogo)\n    - [site.description](#sitedescription)\n    - [site.nav](#sitenav)\n    - [site.versions](#siteversions)\n    - [site.baiduAnalytics](#sitebaiduanalytics)\n    - [site.hideSimulator](#sitehidesimulator)\n    - [site.simulator.url](#sitesimulatorurl)\n    - [site.htmlMeta](#sitehtmlmeta)\n    - [site.enableVConsole](#siteenablevconsole)\n  - [PostCSS](#postcss)\n    - [默认配置](#-----1)\n  - [browserslist](#browserslist)\n\n## rsbuild.config.mjs\n\nVant CLI 使用 [Rsbuild](https://github.com/web-infra-dev/rsbuild) 来构建文档站点，你可以在 `vant.config.mjs` 的同级目录下创建 Rsbuild 的配置文件，文件内容会被 Vant CLI 自动读取。\n\n```js\n// rsbuild.config.mjs 或 rsbuild.config.ts\nexport default {\n  plugins: [\n    // 配置 Rsbuild 插件\n  ],\n  dev: {\n    // 与本地开发有关的选项\n  },\n  html: {\n    // 与 HTML 生成有关的选项\n  },\n  // 其他选项\n};\n```\n\n> 请参考 [配置 Rsbuild](https://rsbuild.dev/zh/guide/basic/configure-rsbuild) 了解更多。\n\n## vite.config.mjs\n\nVant Cli 使用 Vite 来构建组件库代码，你可以在 `vant.config.mjs` 的同级目录下创建 Vite 的配置文件，在该文件中你可以添加任意的 Vite 配置。\n\n> 请参考 [Vite 配置](https://vitejs.dev/config/) 了解更多。\n\n## vant.config.mjs\n\n`vant.config.mjs` 中包含了 `vant-cli` 的打包配置和文档站点配置，请创建此文件并置于项目根目录下。下面是一份基本配置的示例：\n\n```js\nexport default {\n  // 组件库名称\n  name: 'demo-ui',\n  // 构建配置\n  build: {\n    site: {\n      publicPath: '/demo-ui/',\n    },\n  },\n  // 文档站点配置\n  site: {\n    // 标题\n    title: 'Demo UI',\n    // 图标\n    logo: 'https://fastly.jsdelivr.net/npm/@vant/assets/logo.png',\n    // 描述\n    description: '示例组件库',\n    // 左侧导航\n    nav: [\n      {\n        title: '开发指南',\n        items: [\n          {\n            path: 'home',\n            title: '介绍',\n          },\n        ],\n      },\n      {\n        title: '基础组件',\n        items: [\n          {\n            path: 'my-button',\n            title: 'MyButton 按钮',\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n### name\n\n- Type: `string`\n- Default: `''`\n\n组件库名称，建议使用中划线分割，如 `demo-ui`。\n\n### build.css.base\n\n- Type: `string`\n- Default: `'style/base.less'`\n\n全局样式文件的路径，可以为相对路径或绝对路径。\n\n相对路径基于 `src` 目录计算。\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      base: 'style/global.scss',\n    },\n  },\n};\n```\n\n### build.css.preprocessor\n\n- Type: `string`\n- Default: `'less'`\n\nCSS 预处理器配置，目前支持 `less` 和 `sass` 两种预处理器，默认使用 `less`。\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      preprocessor: 'sass',\n    },\n  },\n};\n```\n\n### build.css.removeSourceFile\n\n- Type: `boolean`\n- Default: `'false'`\n\n是否在构建后移除样式文件的源代码。\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      removeSourceFile: true,\n    },\n  },\n};\n```\n\n### build.site.publicPath\n\n- Type: `string`\n- Default: `/`\n\n等价于 vite 的 `build.outDir` 配置。\n\n一般来说，我们的文档网站会部署在一个域名的子路径上，如 `https://my.github.io/demo-ui/`，这时候 `publicPath` 需要跟子路径保持一致，即 `/demo-ui/`。\n\n```js\nmodule.exports = {\n  build: {\n    site: {\n      publicPath: '/demo-ui/',\n    },\n  },\n};\n```\n\n### build.srcDir\n\n- Type: `string`\n- Default: `src`\n\n```js\nmodule.exports = {\n  build: {\n    srcDir: 'myDir',\n  },\n};\n```\n\n### build.namedExport\n\n- Type: `boolean`\n- Default: `false`\n\n是否通过 Named Export 对组件进行导出。\n\n未开启此选项时，会通过 `export default from 'xxx'` 导出组件内部的默认模块。\n\n开启此选项后，会通过 `export * from 'xxx'` 导出组件内部的所有模块、类型定义。\n\n### build.packageManager\n\n- Type: `'npm' | 'yarn' | 'pnpm' | 'bun'`\n- Default: `yarn`\n\n指定使用的包管理器。\n\n### build.bundleOptions\n\n- Type: `BundleOptions[]`\n\n指定打包后产物的格式。\n\n产物格式由三个配置项控制：\n\n```ts\ntype BundleOption = {\n  // 是否压缩代码（注意 es 产物无法被 vite 压缩）\n  minify?: boolean;\n  // 产物类型，可选值为 'es' | 'cjs' | 'umd' | 'iife'\n  formats: LibraryFormats[];\n  // 需要 external 的依赖（Vue 默认会被 external）\n  external?: string[];\n};\n```\n\n该选项的默认值为：\n\n```ts\nconst DEFAULT_OPTIONS: BundleOption[] = [\n  {\n    minify: false,\n    formats: ['umd'],\n  },\n  {\n    minify: true,\n    formats: ['umd'],\n  },\n  {\n    minify: false,\n    formats: ['es', 'cjs'],\n    external: allDependencies,\n  },\n];\n```\n\n### site.title\n\n- Type: `string`\n- Default: `''`\n\n文档站点的标题。\n\n### site.logo\n\n- Type: `string`\n- Default: `''`\n\n文档站点的 Logo。\n\n### site.description\n\n- Type: `string`\n- Default: `''`\n\n标题下方的描述文案。\n\n### site.nav\n\n- Type: `object[]`\n- Default: `undefined`\n\n文档站点的左侧导航，数组中的每个对象表示一个导航分组。\n\n```js\nmodule.exports = {\n  site: {\n    nav: [\n      {\n        // 分组标题\n        title: '开发指南',\n        // 导航项\n        items: [\n          {\n            // 导航项路由\n            path: 'home',\n            // 导航项文案\n            title: '介绍',\n            // 是否隐藏当前页右侧的手机模拟器（默认不隐藏）\n            hideSimulator: true,\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n### site.versions\n\n- Type: `object[]`\n- Default: `undefined`\n\n文档站点多版本配置，当组件库存在多个版本的文档时，可以通过`site.versions`在顶部导航配置一个版本切换按钮。\n\n```js\nmodule.exports = {\n  site: {\n    versions: [\n      {\n        label: 'v1',\n        link: '/v1/',\n      },\n    ],\n  },\n};\n```\n\n### site.baiduAnalytics\n\n- Type: `object`\n- Default: `undefined`\n\n文档网站的百度统计配置，添加这项配置后，会自动在构建文档网站时加载百度统计的脚本。\n\n```js\nmodule.exports = {\n  site: {\n    baiduAnalytics: {\n      // 打开百度统计 ->『管理』->『代码获取』\n      // 找到下面这串 URL: \"https://hm.baidu.com/hm.js?xxxxx\"\n      // 将 `xxxxx` 填写在 seed 中即可\n      seed: 'xxxxx',\n    },\n  },\n};\n```\n\n### site.hideSimulator\n\n- Type: `boolean`\n- Default: `false`\n\n是否隐藏所有页面右侧的手机模拟器，默认不隐藏\n\n### site.simulator.url\n\n- Type: `string`\n- Default: -\n\n自定义手机模拟器的 iframe URL 地址。\n\n### site.htmlMeta\n\n- Type: `Record<string, string>`\n- Default: `undefined`\n\n配置 HTML 中的 meta 标签，对象的 key 为 name，value 为 content。\n\n### site.headHtml\n\n- Type: `string`\n- Default: `undefined`\n\n在 `<head>` 标签中插入一段自定义的 HTML 内容。\n\n### site.enableVConsole\n\n- Type: `boolean`\n- Default: `false`\n\n是否在 dev 时开启 [vConsole](https://github.com/Tencent/vConsole) 调试，用于移动端 debug。\n\n## PostCSS\n\n通过根目录下的`postcss.config.js`文件可以对 PostCSS 进行配置。\n\n### 默认配置\n\n`vant-cli` 中默认的 PostCSS 配置如下：\n\n```js\nmodule.exports = {\n  plugins: {\n    autoprefixer: {},\n  },\n};\n```\n\n## browserslist\n\n推荐在 `package.json` 文件里添加 browserslist 字段，这个值会被 `autoprefixer` 用来确定目标浏览器的版本，保证编译后代码的兼容性。\n\n在移动端浏览器中使用，可以添加如下配置：\n\n```json\n{\n  \"browserslist\": [\"Chrome >= 51\", \"iOS >= 10\"]\n}\n```\n","packages/vant-cli/docs/directory.md":"# Directory Structure\n\n## Source Code Directory\n\nThe basic directory structure of the component library based on Vant CLI is as follows:\n\n```\nproject\n├─ src                # component library source code\n│   ├─ button        # button source code\n│   └─ dialog        # dialog source code\n│\n├─ docs               # static doc directory\n│   ├─ home.md       # documentation site home\n│   └─ changelog.md  # changelog\n│\n├─ vant.config.mjs    # Vant CLI config file\n├─ package.json\n└─ README.md\n```\n\nThe directories for individual components are as follows:\n\n```\nbutton\n├─ demo             # component demo directory\n│   └─ index.vue   # component demo\n├─ index.vue        # component source code\n└─ README.md        # component doc\n```\n\nWhen writing SFC, the corresponding JS and CSS files will be generated after bundle process, and the CSS file will be automatically imported into the JS file.\n\nIf you need to separate JS and CSS to implement functions such as theme customization, you need to use separate JS and CSS files when writing code, as shown below:\n\n```\nbutton\n├─ demo             # component demo directory\n│   └─ index.vue   # component demo entry\n├─ index.js         # component entry\n├─ index.less       # component style，support scss and less\n└─ README.md        # component doc\n```\n\nWhen using this directory structure, the developer of the component library needs to import the JS and CSS files respectively.\n\nTheme customization can be achieved by importing style source files (less or scss) and modifying style variables.\n\n## Output Directory\n\nRunning the `build` command will generate production code in the `es` and `lib` directories with the following structure:\n\n```\nproject\n├─ es                   # ESM Directory\n│   ├─ button          # button component directory\n│   ├─ dialog          # dialog component directory\n│   └─ index.js        # All component files entry (ESModule)\n│\n└─ lib                  # Commonjs directory\n    ├─ button           # button component library\n    ├─ dialog           # dialog component library\n    ├─ index.js         # All component files entry (Commonjs)\n    ├─ index.less       # All component styles entry(Uncompiled)\n    ├─ index.css        # Bundle component styles for CDN\n    ├─ [name].js        # Bundle script for UMD\n    ├─ [name].es.js     # Bundle script for ESM\n    ├─ [name].min.js    # Bundle and minified script for UMD\n    └─ [name].es.min.js # Bundle and minified script for ESM\n```\n\nThe compiled directory of a single component is as follows:\n\n```\nbutton\n├─ index.js         # Bundle script file\n├─ index.css        # Bundle CSS file\n├─ index.less       # Uncompiled CSS file, less or scss\n└─ style            # Style entry on demand directory\n    ├─ index.js     # Compiled styles on demand\n    └─ less.js      # Uncompiled styles on demand, for theme customization\n```\n\n### Generate type definition\n\nWhen the component library is written in TS and the `tsconfig.declaration.json` file exists in the root directory, Vant CLI will automatically generate the `.d.ts` type declaration file.\n\nThe format of `tsconfig.declaration.json` is as follows:\n\n```json\n{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"declaration\": true,\n    \"declarationDir\": \".\",\n    \"emitDeclarationOnly\": true\n  },\n  \"include\": [\"es/**/*\", \"lib/**/*\"],\n  \"exclude\": [\"node_modules\", \"**/test/**/*\", \"**/demo/**/*\"]\n}\n```\n\nPlease add the `typings` field in `package.json` after generate type declaration:\n\n```json\n{\n  \"typings\": \"lib/index.d.ts\"\n}\n```\n","packages/vant-cli/docs/directory.zh-CN.md":"# 目录结构\n\n## 源代码目录\n\n基于 Vant CLI 搭建的组件库的基本目录结构如下所示：\n\n```\nproject\n├─ src                # 组件源代码\n│   ├─ button        # button 组件源代码\n│   └─ dialog        # dialog 组件源代码\n│\n├─ docs               # 静态文档目录\n│   ├─ home.md       # 文档首页\n│   └─ changelog.md  # 更新日志\n│\n├─ vant.config.mjs    # Vant CLI 配置文件\n├─ package.json\n└─ README.md\n```\n\n单个组件的目录如下：\n\n```\nbutton\n├─ demo             # 示例目录\n│   └─ index.vue   # 组件示例\n├─ index.vue        # 组件源码\n└─ README.md        # 组件文档\n```\n\n使用 .vue 文件编写组件时，编译后会生成对应的 JS 和 CSS 文件，且 JS 文件中会自动引入 CSS 文件。\n\n如果需要将 JS 和 CSS 解耦，实现主题定制等功能，在编写代码时就要使用独立的 JS 和 CSS 文件，如下所示：\n\n```\nbutton\n├─ demo             # 组件示例\n│   └─ index.vue   # 组件示例入口\n├─ index.js         # 组件入口\n├─ index.less       # 组件样式，可以为 less 或 scss\n└─ README.md        # 组件文档\n```\n\n采用这种目录结构时，组件的使用者需要分别引入 JS 和 CSS 文件。\n\n通过引入样式源文件（less 或 scss）并修改样式变量，可以实现主题定制功能。\n\n## 构建结果目录\n\n运行 build 命令会在 `es` 和 `lib` 目录下生成可用于生产环境的组件代码，结构如下：\n\n```\nproject\n├─ es                   # es 目录下的代码遵循 esmodule 规范\n│   ├─ button          # button 组件编译后的代码目录\n│   ├─ dialog          # dialog 组件编译后的代码目录\n│   └─ index.js        # 引入所有组件的入口 (ESModule)\n│\n└─ lib                  # lib 目录下的代码遵循 commonjs 规范\n    ├─ button           # button 组件编译后的代码目录\n    ├─ dialog           # dialog 组件编译后的代码目录\n    ├─ index.js         # 引入所有组件的入口\n    ├─ index.less       # 所有组件未编译的样式入口\n    ├─ index.css        # 打包后的组件样式，用于 CDN 引入\n    ├─ [name].js        # 打包后的组件脚本，UMD 格式\n    ├─ [name].es.js     # 打包后的组件脚本，ESModule 格式\n    ├─ [name].min.js    # 打包和压缩后的组件脚本，UMD 格式\n    └─ [name].es.min.js # 打包和压缩后的组件脚本，ESModule 格式\n```\n\n单个组件编译后的目录如下：\n\n```\nbutton\n├─ index.js         # 组件编译后的 JS 文件\n├─ index.css        # 组件编译后的 CSS 文件\n├─ index.less       # 组件编译前的 CSS 文件，可以为 less 或 scss\n└─ style            # 按需引入样式的入口\n    ├─ index.js     # 按需引入编译后的样式\n    └─ less.js      # 按需引入未编译的样式，可用于主题定制\n```\n\n### 生成类型声明\n\n当组件库使用 TS 编写，且根目录下存在 `tsconfig.declaration.json` 文件，Vant CLI 会自动生成 `.d.ts` 类型声明文件。\n\n`tsconfig.declaration.json` 的参考格式如下：\n\n```json\n{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"declaration\": true,\n    \"declarationDir\": \".\",\n    \"emitDeclarationOnly\": true\n  },\n  \"include\": [\"es/**/*\", \"lib/**/*\"],\n  \"exclude\": [\"node_modules\", \"**/test/**/*\", \"**/demo/**/*\"]\n}\n```\n\n成功生成类型声明后，请在 `package.json` 中添加类型入口声明：\n\n```json\n{\n  \"typings\": \"lib/index.d.ts\"\n}\n```\n","packages/vant-compat/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-compat%2FREADME.md -->","packages/vant-icons/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-icons%2FREADME.md -->","packages/vant-popperjs/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-popperjs%2FREADME.md -->","packages/vant-touch-emulator/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-touch-emulator%2FREADME.md -->","packages/vant-use/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-use%2FREADME.md -->","packages/vant/docs/markdown/advanced-usage.en-US.md":"# Advanced Usage\n\n### Intro\n\nThrough this chapter, you can learn about some advanced usages of Vant.\n\n## Component Usage\n\n### Component Registration\n\nVant supports multiple ways to register components:\n\n#### Global Registration\n\n```js\nimport { Button } from 'vant';\nimport { createApp } from 'vue';\n\nconst app = createApp();\n\n// Method 1. via app.use\napp.use(Button);\n\n// Method 2. Register via app.component\napp.component(Button.name, Button);\n```\n\n#### Full Registration\n\nYou can also globally register all Vant components at once:\n\n```js\nimport Vant from 'vant';\nimport { createApp } from 'vue';\n\nconst app = createApp();\n\napp.use(Vant);\n\n// The Lazyload directive needs to be registered separately\napp.use(vant.Lazyload);\n```\n\n> Note: Registering all components will introduce the code of all components, leading to larger bundle size.\n\n#### Local Registration\n\n```js\nimport { Button } from 'vant';\n\nexport default {\n  components: {\n    [Button.name]: Button,\n  },\n};\n```\n\n> For more information, please refer to [Vue.js - Component Registration](https://vuejs.org/guide/components/registration.html)。\n\n#### \\<script setup\\>\n\nVant components can be used directly in `<script setup>` without component registration.\n\n```xml\n<script setup>\n  import { Button } from 'vant';\n</script>\n\n<template>\n  <Button />\n</template>\n```\n\n#### JSX/TSX\n\nVant components can be used directly in JSX and TSX without component registration.\n\n```jsx\nimport { Button } from 'vant';\n\nexport default {\n  render() {\n    return <Button />;\n  },\n};\n```\n\n## Browser adaptation\n\n### Viewport Units\n\nVant uses `px` unit by default, you can use [postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) to transform `px` unit to viewport units (vw, vh, vmin, vmax).\n\n[postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) is a PostCSS 8 based plugin that transforms `px` units to `vw`/`vh` units. It supports `include`/`exclude` file matching and per-file dynamic `viewportWidth`.\n\n#### Install\n\n```bash\nnpm i postcss-mobile-forever -D\n```\n\n#### PostCSS Config\n\nPostCSS config example:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: [require('postcss-mobile-forever')({ viewportWidth: 375 })],\n};\n```\n\nIf the design width is not 375, use the `viewportWidth` function to configure it per file. The following example handles Vant components (375px design) and business code (750px design) separately:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: [\n    require('postcss-mobile-forever')({\n      viewportWidth: (file) => (file.includes('vant') ? 375 : 750),\n    }),\n  ],\n};\n```\n\n### Rem Unit\n\nYou can use tools such as `postcss-pxtorem` to transform `px` unit to `rem` unit.\n\n- [postcss-pxtorem](https://github.com/cuth/postcss-pxtorem)\n- [lib-flexible](https://github.com/amfe/lib-flexible)\n\n#### PostCSS Config\n\nPostCSS config example:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: {\n    'postcss-pxtorem': {\n      rootValue: 37.5,\n      propList: ['*'],\n    },\n  },\n};\n```\n\n### Custom rootValue\n\nIf the size of the design draft is 750 or other sizes, you can adjust the `rootValue` to:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: {\n    // postcss-pxtorem version >= 5.0.0\n    'postcss-pxtorem': {\n      rootValue({ file }) {\n        return file.indexOf('vant') !== -1 ? 37.5 : 75;\n      },\n      propList: ['*'],\n    },\n  },\n};\n```\n\n### Adapt to PC Browsers\n\nVant is a mobile-first component library, if you want to use Vant in PC browsers, you can use the [@vant/touch-emulator](https://github.com/vant-ui/vant/tree/main/packages/vant-touch-emulator) module. This module will automatically convert the mouse events of the PC browser into the touch events of the mobile browser.\n\n```bash\n# Install\nnpm i @vant/touch-emulator -S\n```\n\n```js\n// Just import this module, then Vant works in PC browser\nimport '@vant/touch-emulator';\n```\n","packages/vant/docs/markdown/advanced-usage.zh-CN.md":"# 进阶用法\n\n### 介绍\n\n通过本章节你可以了解到 Vant 的一些进阶用法，比如组件插槽用法、多种浏览器适配方式。\n\n## 组件用法\n\n### 组件注册\n\nVant 支持多种组件注册方式，请根据实际业务需要进行选择。\n\n#### 全局注册\n\n全局注册后，你可以在 app 下的任意子组件中使用注册的 Vant 组件。\n\n```js\nimport { Button } from 'vant';\nimport { createApp } from 'vue';\n\nconst app = createApp();\n\n// 方式一. 通过 app.use 注册\n// 注册完成后，在模板中通过 <van-button> 或 <VanButton> 标签来使用按钮组件\napp.use(Button);\n\n// 方式二. 通过 app.component 注册\n// 注册完成后，在模板中通过 <van-button> 标签来使用按钮组件\napp.component(Button.name, Button);\n```\n\n#### 全量注册\n\n你也可以在全局一次性注册所有 Vant 组件：\n\n```js\nimport Vant from 'vant';\nimport { createApp } from 'vue';\n\nconst app = createApp();\n\napp.use(Vant);\n\n// Lazyload 指令需要单独进行注册\napp.use(vant.Lazyload);\n```\n\n> 注意：注册所有组件会引入所有组件的代码，导致包体积增大。\n\n#### 局部注册\n\n局部注册后，你可以在当前组件中使用注册的 Vant 组件。\n\n```js\nimport { Button } from 'vant';\n\nexport default {\n  components: {\n    [Button.name]: Button,\n  },\n};\n```\n\n> 对于组件注册更详细的介绍，请参考 [Vue 官方文档 - 组件注册](https://cn.vuejs.org/guide/components/registration.html)。\n\n#### \\<script setup\\>\n\n在 `<script setup>` 中可以直接使用 Vant 组件，不需要进行组件注册。\n\n```xml\n<script setup>\n  import { Button } from 'vant';\n</script>\n\n<template>\n  <Button />\n</template>\n```\n\n#### JSX/TSX\n\n在 JSX 和 TSX 中可以直接使用 Vant 组件，不需要进行组件注册。\n\n```jsx\nimport { Button } from 'vant';\n\nexport default {\n  render() {\n    return <Button />;\n  },\n};\n```\n\n### 组件插槽\n\nVant 提供了丰富的组件插槽，通过插槽可以对组件的某一部分进行个性化定制。如果你对 Vue 的插槽不太熟悉，可以阅读 Vue 官方文档中的[插槽章节](https://cn.vuejs.org/guide/components/slots.html)。下面是通过插槽来定制 Checkbox 图标的示例：\n\n```html\n<van-checkbox v-model=\"checked\">\n  <!-- 使用组件提供的 icon 插槽 -->\n  <!-- 将默认图标替换为个性化图片 -->\n  <template #icon=\"props\">\n    <img :src=\"props.checked ? activeIcon : inactiveIcon\" />\n  </template>\n</van-checkbox>\n```\n\n```js\nexport default {\n  data() {\n    return {\n      checked: true,\n      activeIcon:\n        'https://fastly.jsdelivr.net/npm/@vant/assets/user-active.png',\n      inactiveIcon:\n        'https://fastly.jsdelivr.net/npm/@vant/assets/user-inactive.png',\n    };\n  },\n};\n```\n\n### 组件实例方法\n\nVant 中的许多组件提供了实例方法，调用实例方法时，我们需要通过 [ref](https://cn.vuejs.org/guide/essentials/template-refs.html) 来注册组件引用信息，引用信息将会注册在父组件的`$refs`对象上。注册完成后，我们可以通过`this.$refs.xxx`访问到对应的组件实例，并调用上面的实例方法。\n\n```html\n<!-- 通过 ref 属性将组件绑定到 this.$refs.checkbox 上 -->\n<van-checkbox v-model=\"checked\" ref=\"checkbox\"> 复选框 </van-checkbox>\n```\n\n```js\nexport default {\n  data() {\n    return {\n      checked: false,\n    };\n  },\n  // 注意：组件挂载后才能访问到 ref 对象\n  mounted() {\n    this.$refs.checkbox.toggle();\n  },\n};\n```\n\n## 浏览器适配\n\n### Viewport 布局\n\nVant 默认使用 `px` 作为样式单位，如果需要使用 `viewport` 单位 (vw, vh, vmin, vmax)，推荐使用 [postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) 进行转换。\n\n[postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) 是一款基于 PostCSS 8 的插件，用于将 `px` 单位转化为 `vw`/`vh` 单位，支持 `include`/`exclude` 文件匹配，以及按文件动态配置设计稿宽度。\n\n#### 安装\n\n```bash\nnpm i postcss-mobile-forever -D\n```\n\n#### PostCSS 示例配置\n\n下面提供了一份基本的 PostCSS 示例配置，可以在此配置的基础上根据项目需求进行修改。\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: [require('postcss-mobile-forever')({ viewportWidth: 375 })],\n};\n```\n\n如果设计稿的尺寸不是 375，而是 750 或其他大小，可以通过 `viewportWidth` 函数按文件动态配置。下面的示例将 Vant 组件（375px 设计稿）与业务代码（750px 设计稿）分开处理：\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: [\n    require('postcss-mobile-forever')({\n      viewportWidth: (file) => (file.includes('vant') ? 375 : 750),\n    }),\n  ],\n};\n```\n\n> Tips: 在配置 postcss-loader 时，应避免 ignore node_modules 目录，否则将导致 Vant 样式无法被编译。\n\n### Rem 布局适配\n\n如果需要使用 `rem` 单位进行适配，推荐使用以下两个工具：\n\n- [postcss-pxtorem](https://github.com/cuth/postcss-pxtorem) 是一款 PostCSS 插件，用于将 px 单位转化为 rem 单位\n- [lib-flexible](https://github.com/amfe/lib-flexible) 用于设置 rem 基准值\n\n#### PostCSS 示例配置\n\n下面提供了一份基本的 PostCSS 示例配置，可以在此配置的基础上根据项目需求进行修改。\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: {\n    'postcss-pxtorem': {\n      rootValue: 37.5,\n      propList: ['*'],\n    },\n  },\n};\n```\n\n> Tips: 在配置 postcss-pxtorem 时，同样应避免 ignore node_modules 目录，否则会导致 Vant 样式无法被编译。\n\n#### 其他设计稿尺寸\n\n如果设计稿的尺寸不是 375，而是 750 或其他大小，可以将 `rootValue` 配置调整为:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: {\n    // postcss-pxtorem 插件的版本需要 >= 5.0.0\n    'postcss-pxtorem': {\n      rootValue({ file }) {\n        return file.indexOf('vant') !== -1 ? 37.5 : 75;\n      },\n      propList: ['*'],\n    },\n  },\n};\n```\n\n### 桌面端适配\n\nVant 是一个面向移动端的组件库，因此默认只适配了移动端设备，这意味着组件只监听了移动端的 `touch` 事件，没有监听桌面端的 `mouse` 事件。\n\n如果你需要在桌面端使用 Vant，可以引入我们提供的 [@vant/touch-emulator](https://github.com/vant-ui/vant/tree/main/packages/vant-touch-emulator)，这个库会在桌面端自动将 `mouse` 事件转换成对应的 `touch` 事件，使得组件能够在桌面端使用。\n\n```bash\n# 安装模块\nnpm i @vant/touch-emulator -S\n```\n\n```js\n// 引入模块后自动生效\nimport '@vant/touch-emulator';\n```\n\n### 底部安全区适配\n\niPhone X 等机型底部存在底部指示条，指示条的操作区域与页面底部存在重合，容易导致用户误操作，因此我们需要针对这些机型进行安全区适配。Vant 中部分组件提供了 `safe-area-inset-top` 或 `safe-area-inset-bottom` 属性，设置该属性后，即可在对应的机型上开启适配，如下示例：\n\n```html\n<!-- 在 head 标签中添加 meta 标签，并设置 viewport-fit=cover 值 -->\n<meta\n  name=\"viewport\"\n  content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover\"\n/>\n\n<!-- 开启顶部安全区适配 -->\n<van-nav-bar safe-area-inset-top />\n\n<!-- 开启底部安全区适配 -->\n<van-number-keyboard safe-area-inset-bottom />\n```\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/safearea.png\">\n","packages/vant/docs/markdown/changelog.en-US.md":"# Changelog\n\n### Important Notice\n\n**To avoid redundant maintenance and reduce costs.**\n\n**From v4.9.0, Vant's changelog will be published on [GitHub's Releases Page](https://github.com/youzan/vant/releases). This page will no longer be updated.**\n\nThe current document contains the changelog for Vant v4.0.0 ~ v4.9.0. For other versions, please refer to:\n\n- [Vant 2 Changelog](/vant/v2/#/en-US/changelog)\n- [Vant 3 Changelog](/vant/v3/#/en-US/changelog)\n\n### Intro\n\nVant follows [Semantic Versioning 2.0.0](https://semver.org/lang/zh-CN/).\n\n**Release Schedule**\n\n- Patch version：Typically released every 1 to 2 weeks, including new features and bug fixes.\n- Minor version：Typically released every 1 to 2 months, including new components or significant feature updates, with backward compatibility.\n- Major version：No fixed release time, includes breaking changes and major feature updates.\n\n## Details\n\n### v4.9.0\n\n`2024-05-02`\n\n#### New Features 🎉\n\n- feat(Calendar): add switch-mode prop by [@inottn](https://github.com/inottn) in [#12836](https://github.com/youzan/vant/pull/12836)\n- feat(PickerGroup): add new prop showToolbar by [@ReinoFu](https://github.com/ReinoFu) in [#12839](https://github.com/youzan/vant/pull/12839)\n- feat(CLI): support for configuring Rsbuild by [@chenjiahan](https://github.com/chenjiahan) in [#12809](https://github.com/youzan/vant/pull/12809)\n\n#### Bug Fixes 🐞\n\n- fix(cli): Vue SFC style binding failure by [@zoy-l](https://github.com/zoy-l) in [#12799](https://github.com/youzan/vant/pull/12799)\n- fix(ImagePreview): swipeItem may be undefined by [@inottn](https://github.com/inottn) in [#12818](https://github.com/youzan/vant/pull/12818)\n- fix(Highlight): render correctly when keywords is empty by [@Jungzl](https://github.com/Jungzl) in [#12829](https://github.com/youzan/vant/pull/12829)\n- fix(IndexBar): render active anchor correctly when passing sticky & stickyOffsetTop by [@Jungzl](https://github.com/Jungzl) in [#12837](https://github.com/youzan/vant/pull/12837)\n\n#### Document 📖\n\n- docs: remove all Gitee links by [@chenjiahan](https://github.com/chenjiahan) in [#12845](https://github.com/youzan/vant/pull/12845)\n- docs: remove gzip size badge by [@chenjiahan](https://github.com/chenjiahan) in [#12847](https://github.com/youzan/vant/pull/12847)\n- docs: fix Rsbuild HTML build failed by [@chenjiahan](https://github.com/chenjiahan) in [#12848](https://github.com/youzan/vant/pull/12848)\n\n#### Other Changes\n\n- chore(deps): update dependency terser to ^5.30.3 by [@renovate](https://github.com/renovate) in [#12795](https://github.com/youzan/vant/pull/12795)\n- chore(deps): update dependency eslint-plugin-vue to ^9.25.0 by [@renovate](https://github.com/renovate) in [#12794](https://github.com/youzan/vant/pull/12794)\n- chore(deps): update all patch dependencies by [@renovate](https://github.com/renovate) in [#12773](https://github.com/youzan/vant/pull/12773)\n- chore(workflow): upgrade to pnpm v9 by [@chenjiahan](https://github.com/chenjiahan) in [#12808](https://github.com/youzan/vant/pull/12808)\n- chore: bump github-pages-deploy-action[@v4](https://github.com/v4).6.0 by @chenjiahan in [#12810](https://github.com/youzan/vant/pull/12810)\n- chore(deps): update dependency [@vitejs](https://github.com/vitejs)/plugin-vue to v5 by @renovate in [#12840](https://github.com/youzan/vant/pull/12840)\n- chore(deps): update dependency commander to v12 by [@renovate](https://github.com/renovate) in [#12841](https://github.com/youzan/vant/pull/12841)\n- chore(deps): update actions/setup-node action to v4 by [@renovate](https://github.com/renovate) in [#12814](https://github.com/youzan/vant/pull/12814)\n- chore(deps): update github/issue-labeler action to v3.4 by [@renovate](https://github.com/renovate) in [#12813](https://github.com/youzan/vant/pull/12813)\n- chore(deps): update codecov/codecov-action action to v4 by [@renovate](https://github.com/renovate) in [#12815](https://github.com/youzan/vant/pull/12815)\n- chore(deps): update all patch dependencies by [@renovate](https://github.com/renovate) in [#12812](https://github.com/youzan/vant/pull/12812)\n\n#### New Contributors\n\n- [@ReinoFu](https://github.com/ReinoFu) made their first contribution in [#12839](https://github.com/youzan/vant/pull/12839)\n\n### v4.8.11\n\n`2024-04-14`\n\n#### New Features 🎉\n\n- feat(DropdownMenu): add disabled for option by [@inottn](https://github.com/inottn) in [#12785](https://github.com/youzan/vant/pull/12785)\n\n#### Bug Fixes 🐞\n\n- fix: warning `is not a valid value for v-model` in JetBrains IDE by [@anyesu](https://github.com/anyesu) in [#12787](https://github.com/youzan/vant/pull/12787)\n- fix(Cli): remove site tsconfig by [@chenjiahan](https://github.com/chenjiahan) in [#12792](https://github.com/youzan/vant/pull/12792)\n\n#### Document 📖\n\n- docs(list): update Error loading module code by [@wangjue666](https://github.com/wangjue666) in [#12778](https://github.com/youzan/vant/pull/12778)\n\n#### Other Changes\n\n- chore(deps): update dependency eslint-plugin-vue to ^9.24.1 by [@renovate](https://github.com/renovate) in [#12774](https://github.com/youzan/vant/pull/12774)\n- chore(deps): bump Rsbuild v0.6 by [@chenjiahan](https://github.com/chenjiahan) in [#12790](https://github.com/youzan/vant/pull/12790)\n\n#### New Contributors\n\n- [@wangjue666](https://github.com/wangjue666) made their first contribution in [#12778](https://github.com/youzan/vant/pull/12778)\n- [@anyesu](https://github.com/anyesu) made their first contribution in [#12787](https://github.com/youzan/vant/pull/12787)\n\n### v4.8.10\n\n`2024-04-06`\n\n#### New Features 🎉\n\n- feat(TimePicker): support confirm and getSelectedTime methods by [@bluesky335](https://github.com/bluesky335) in [#12761](https://github.com/youzan/vant/pull/12761)\n- feat(DatePicker): support confirm and getSelectedDate method by [@bluesky335](https://github.com/bluesky335) in [#12762](https://github.com/youzan/vant/pull/12762)\n- feat(Coupon): support for checkbox usage by [@CatsAndMice](https://github.com/CatsAndMice) in [#12744](https://github.com/youzan/vant/pull/12744)\n\n#### Other Changes\n\n- chore(deps): update dependency vite to v5.0.13 [security] by [@renovate](https://github.com/renovate) in [#12767](https://github.com/youzan/vant/pull/12767)\n- chore(deps): update all patch dependencies by [@renovate](https://github.com/renovate) in [#12756](https://github.com/youzan/vant/pull/12756)\n- chore(deps): update dependency [@types](https://github.com/types)/lodash to ^4.17.0 by @renovate in [#12757](https://github.com/youzan/vant/pull/12757)\n- chore: correct return type of getSelectedTime by [@chenjiahan](https://github.com/chenjiahan) in [#12768](https://github.com/youzan/vant/pull/12768)\n- refactor(Coupon): simplify the checkbox usage by [@chenjiahan](https://github.com/chenjiahan) in [#12771](https://github.com/youzan/vant/pull/12771)\n\n#### New Contributors\n\n- [@bluesky335](https://github.com/bluesky335) made their first contribution in [#12761](https://github.com/youzan/vant/pull/12761)\n\n### v4.8.9\n\n`2024-04-06`\n\nInvalid version, please do not use it.\n\n### v4.8.8\n\n`2024-03-31`\n\n#### New Features 🎉\n\n- feat(image-preview): export onLoad and style for image slot by [@chouchouji](https://github.com/chouchouji) in [#12740](https://github.com/youzan/vant/pull/12740)\n- feat(AddressList): add event param for click-item by [@chenjiahan](https://github.com/chenjiahan) in [#12748](https://github.com/youzan/vant/pull/12748)\n\n#### Bug Fixes 🐞\n\n- fix(floating-bubble): update offset when the value changed by [@chouchouji](https://github.com/chouchouji) in [#12730](https://github.com/youzan/vant/pull/12730)\n- fix(vant-cli): support defineOptions named by [@wChenonly](https://github.com/wChenonly) in [#12734](https://github.com/youzan/vant/pull/12734)\n- fix(PickerGroup): rendering correctly when using v-for by [@inottn](https://github.com/inottn) in [#12732](https://github.com/youzan/vant/pull/12732)\n- fix(TextEllipsis): should recalculate the ellipsis state when the component is activated by [@inottn](https://github.com/inottn) in [#12741](https://github.com/youzan/vant/pull/12741)\n\n#### Document 📖\n\n- docs(button): Keep Chinese and English documents consistent by [@chouchouji](https://github.com/chouchouji) in [#12708](https://github.com/youzan/vant/pull/12708)\n- docs(cell): correct the type of label by [@chouchouji](https://github.com/chouchouji) in [#12721](https://github.com/youzan/vant/pull/12721)\n- docs(ImagePreview): add image slot scale guide by [@chenjiahan](https://github.com/chenjiahan) in [#12751](https://github.com/youzan/vant/pull/12751)\n\n#### Other Changes\n\n- chore(deps): update dependency vue-router to v4.3.0 by [@renovate](https://github.com/renovate) in [#12702](https://github.com/youzan/vant/pull/12702)\n- chore(deps): update dependency esbuild to ^0.20.0 by [@renovate](https://github.com/renovate) in [#12696](https://github.com/youzan/vant/pull/12696)\n- chore(workflow): let renovate bump package.json by [@chenjiahan](https://github.com/chenjiahan) in [#12714](https://github.com/youzan/vant/pull/12714)\n- chore(deps): update dependency eslint to ^8.57.0 by [@renovate](https://github.com/renovate) in [#12723](https://github.com/youzan/vant/pull/12723)\n- chore(docs): update the vue3-vant-mobile reference by [@CharleeWa](https://github.com/CharleeWa) in [#12735](https://github.com/youzan/vant/pull/12735)\n- chore(deps): update dependency commander to ^11.1.0 by [@renovate](https://github.com/renovate) in [#12718](https://github.com/youzan/vant/pull/12718)\n- chore(deps): update dependency enquirer to v2.4.1 by [@renovate](https://github.com/renovate) in [#12695](https://github.com/youzan/vant/pull/12695)\n- chore(deps): update dependency [@vue](https://github.com/vue)/test-utils to ^2.4.5 by @renovate in [#12716](https://github.com/youzan/vant/pull/12716)\n- chore(deps): bump Rsbuild v0.5 by [@chenjiahan](https://github.com/chenjiahan) in [#12747](https://github.com/youzan/vant/pull/12747)\n- chore(deps): update dependency eslint-config-prettier to ^9.1.0 by [@renovate](https://github.com/renovate) in [#12724](https://github.com/youzan/vant/pull/12724)\n- chore(deps): update dependency fs-extra to ^11.2.0 by [@renovate](https://github.com/renovate) in [#12745](https://github.com/youzan/vant/pull/12745)\n- chore(deps): update dependency highlight.js to ^11.9.0 by [@renovate](https://github.com/renovate) in [#12746](https://github.com/youzan/vant/pull/12746)\n- chore(deps): update dependency fast-glob to ^3.3.2 by [@renovate](https://github.com/renovate) in [#12731](https://github.com/youzan/vant/pull/12731)\n- chore(deps): update dependency less to ^4.2.0 by [@renovate](https://github.com/renovate) in [#12752](https://github.com/youzan/vant/pull/12752)\n- chore(workflow): let renovate group patch updates by [@chenjiahan](https://github.com/chenjiahan) in [#12754](https://github.com/youzan/vant/pull/12754)\n\n#### New Contributors\n\n- [@CharleeWa](https://github.com/CharleeWa) made their first contribution in [#12735](https://github.com/youzan/vant/pull/12735)\n\n### v4.8.7\n\n`2024-03-18`\n\n#### Other Changes\n\n- Revert \"chore(deps): update dependency typescript to v5.4.2\" by [@renovate](https://github.com/renovate) in [#12700](https://github.com/youzan/vant/pull/12700)\n- chore: Update homepage by [@yoyo837](https://github.com/yoyo837) in [#12704](https://github.com/youzan/vant/pull/12704)\n\n### v4.8.6\n\n`2024-03-17`\n\n#### New Features 🎉\n\n- feat(ImagePreview): add vertical prop by [@suncohey](https://github.com/suncohey) in [#12660](https://github.com/youzan/vant/pull/12660)\n- feat(signature): export clear and submit method by [@chouchouji](https://github.com/chouchouji) in [#12654](https://github.com/youzan/vant/pull/12654)\n- feat: support unplugin-auto-import plugin by [@DragonnZhang](https://github.com/DragonnZhang) in [#12679](https://github.com/youzan/vant/pull/12679)\n- feat(ActionSheet): add icon support to the actions data by [@wjw-gavin](https://github.com/wjw-gavin) in [#12671](https://github.com/youzan/vant/pull/12671)\n\n#### Bug Fixes 🐞\n\n- fix(ImagePreview): allow user to swipe to next image when the current image is moved to the edge by [@inottn](https://github.com/inottn) in [#12666](https://github.com/youzan/vant/pull/12666)\n- fix(ActionSheet): icon class name by [@chenjiahan](https://github.com/chenjiahan) in [#12701](https://github.com/youzan/vant/pull/12701)\n\n#### Document 📖\n\n- docs(ImagePreview): add vertical prop by [@chenjiahan](https://github.com/chenjiahan) in [#12663](https://github.com/youzan/vant/pull/12663)\n- docs: change tab's 'Before Change' into a real async function by [@gxy5202](https://github.com/gxy5202) in [#12693](https://github.com/youzan/vant/pull/12693)\n\n#### Other Changes\n\n- chore(deps): bump Rsbuild 0.4.12 by [@chenjiahan](https://github.com/chenjiahan) in [#12665](https://github.com/youzan/vant/pull/12665)\n- chore(deps): update dependency [@vue](https://github.com/vue)/test-utils to v2.4.5 by @renovate in [#12681](https://github.com/youzan/vant/pull/12681)\n- chore(deps): update dependency autoprefixer to v10.4.18 by [@renovate](https://github.com/renovate) in [#12682](https://github.com/youzan/vant/pull/12682)\n- chore(workflow): disable dependency dashboard by [@chenjiahan](https://github.com/chenjiahan) in [#12686](https://github.com/youzan/vant/pull/12686)\n- chore(deps): update dependency prettier to v3.2.5 by [@renovate](https://github.com/renovate) in [#12685](https://github.com/youzan/vant/pull/12685)\n- chore(deps): update rsbuild to v0.4.15 by [@renovate](https://github.com/renovate) in [#12688](https://github.com/youzan/vant/pull/12688)\n- chore(deps): update dependency eslint to v8.57.0 by [@renovate](https://github.com/renovate) in [#12697](https://github.com/youzan/vant/pull/12697)\n- chore(deps): update dependency typescript to v5.4.2 by [@renovate](https://github.com/renovate) in [#12700](https://github.com/youzan/vant/pull/12700)\n\n#### New Contributors\n\n- [@chouchouji](https://github.com/chouchouji) made their first contribution in [#12654](https://github.com/youzan/vant/pull/12654)\n- [@renovate](https://github.com/renovate) made their first contribution in [#12681](https://github.com/youzan/vant/pull/12681)\n- [@gxy5202](https://github.com/gxy5202) made their first contribution in [#12693](https://github.com/youzan/vant/pull/12693)\n- [@DragonnZhang](https://github.com/DragonnZhang) made their first contribution in [#12679](https://github.com/youzan/vant/pull/12679)\n\n### v4.8.5\n\n`2024-02-25`\n\n#### New Features 🎉\n\n- feat(Image): add `crossorigin` & `referrerpolicy` props by [@Jungzl](https://github.com/Jungzl) in [#12641](https://github.com/youzan/vant/pull/12641)\n\n#### Bug Fixes 🐞\n\n- fix(NumberKeyboard): render delete slot correctly when theme is custom by [@TPORL](https://github.com/TPORL) in [#12624](https://github.com/youzan/vant/pull/12624)\n\n#### Document 📖\n\n- docs: update docs for params related to Picker events by [@wjw-gavin](https://github.com/wjw-gavin) in [#12619](https://github.com/youzan/vant/pull/12619)\n- docs(DatePicker): fix en-docs error by [@wjw-gavin](https://github.com/wjw-gavin) in [#12620](https://github.com/youzan/vant/pull/12620)\n- docs(Uploader): fix miss double quote by [@nemo-shen](https://github.com/nemo-shen) in [#12627](https://github.com/youzan/vant/pull/12627)\n- docs: add full registration guide by [@chenjiahan](https://github.com/chenjiahan) in [#12628](https://github.com/youzan/vant/pull/12628)\n- docs: add Rsbuild import on demand guide by [@chenjiahan](https://github.com/chenjiahan) in [#12629](https://github.com/youzan/vant/pull/12629)\n\n#### Other Changes\n\n- Revert \"fix(DropdownMenu): fix recursive update when passing object literal to title-class (#12614)\" by [@inottn](https://github.com/inottn) in [#12617](https://github.com/youzan/vant/pull/12617)\n- chore(deps): bump Rsbuild v0.4 by [@chenjiahan](https://github.com/chenjiahan) in [#12625](https://github.com/youzan/vant/pull/12625)\n- chore(workflow): setup renovate config by [@chenjiahan](https://github.com/chenjiahan) in [#12626](https://github.com/youzan/vant/pull/12626)\n- test: skip image SSR test case by [@chenjiahan](https://github.com/chenjiahan) in [#12644](https://github.com/youzan/vant/pull/12644)\n\n#### New Contributors\n\n- [@TPORL](https://github.com/TPORL) made their first contribution in [#12624](https://github.com/youzan/vant/pull/12624)\n\n### v4.8.4\n\n`2024-02-03`\n\n#### New Features 🎉\n\n- feat(Picker): allow to hidden to toolbar buttons by [@chenjiahan](https://github.com/chenjiahan) in [#12599](https://github.com/youzan/vant/pull/12599)\n\n#### Bug Fixes 🐞\n\n- fix(Sticky): initial sticky position by [@nemo-shen](https://github.com/nemo-shen) in [#12601](https://github.com/youzan/vant/pull/12601)\n- fix(DropdownMenu): fix recursive update when passing object literal to title-class by [@inottn](https://github.com/inottn) in [#12614](https://github.com/youzan/vant/pull/12614)\n\n#### Document 📖\n\n- docs: improve quickstart tips by [@inottn](https://github.com/inottn) in [#12606](https://github.com/youzan/vant/pull/12606)\n\n#### Other Changes\n\n- chore(deps): bump Rsbuild 0.3.9 and enable clean dist by [@chenjiahan](https://github.com/chenjiahan) in [#12600](https://github.com/youzan/vant/pull/12600)\n- chore: avoid workflow running on forked repo by [@tolking](https://github.com/tolking) in [#12607](https://github.com/youzan/vant/pull/12607)\n- chore(workflow): using new M1 macOS runner by [@chenjiahan](https://github.com/chenjiahan) in [#12615](https://github.com/youzan/vant/pull/12615)\n\n### v4.8.3\n\n`2024-01-20`\n\n#### New Features 🎉\n\n- feat(Notify): add teleport prop by [@inottn](https://github.com/inottn) in [#12556](https://github.com/youzan/vant/pull/12556)\n- feat(TextEllipsis): add `action` slot by [@nemo-shen](https://github.com/nemo-shen) in [#12560](https://github.com/youzan/vant/pull/12560)\n- feat(ImagePreview): add close-on-click-image prop by [@inottn](https://github.com/inottn) in [#12566](https://github.com/youzan/vant/pull/12566)\n- feat(icons): add icon `arrow-double-left` and `arrow-double-right` by [@nemo-shen](https://github.com/nemo-shen) in [#12579](https://github.com/youzan/vant/pull/12579)\n- feat(Toast): add z-index prop by [@inottn](https://github.com/inottn) in [#12587](https://github.com/youzan/vant/pull/12587)\n\n#### Bug Fixes 🐞\n\n- fix(Tab): tab(with sticky prop) loss 'fixed' classname after switch tab by [@nemo-shen](https://github.com/nemo-shen) in [#12547](https://github.com/youzan/vant/pull/12547)\n- fix(Image): ImagePosition type is not exported before by [@Jungzl](https://github.com/Jungzl) in [#12549](https://github.com/youzan/vant/pull/12549)\n- fix(Tabs): van-border-radius-sm to van-radius-sm by [@edram](https://github.com/edram) in [#12576](https://github.com/youzan/vant/pull/12576)\n\n#### Document 📖\n\n- docs(Lazyload): fix preLoad type error and spelling mistakes by [@RSS1102](https://github.com/RSS1102) in [#12554](https://github.com/youzan/vant/pull/12554)\n- docs(home): update heading level by [@inottn](https://github.com/inottn) in [#12577](https://github.com/youzan/vant/pull/12577)\n\n#### Other Changes\n\n- test: bump vitest v1.1.3 by [@inottn](https://github.com/inottn) in [#12546](https://github.com/youzan/vant/pull/12546)\n- chore(deps): bump Rsbuild to v0.3.2 by [@chenjiahan](https://github.com/chenjiahan) in [#12565](https://github.com/youzan/vant/pull/12565)\n- chore(deps): bump vue to v3.4.13 by [@inottn](https://github.com/inottn) in [#12567](https://github.com/youzan/vant/pull/12567)\n- chore(deps): bump vite from 5.0.11 to 5.0.12 by [@dependabot](https://github.com/dependabot) in [#12588](https://github.com/youzan/vant/pull/12588)\n\n#### New Contributors\n\n- [@edram](https://github.com/edram) made their first contribution in [#12576](https://github.com/youzan/vant/pull/12576)\n\n### v4.8.2\n\n`2024-01-03`\n\n#### New Features 🎉\n\n- feat: support link css from shadow dom by [@yoyo837](https://github.com/yoyo837) in [#12526](https://github.com/youzan/vant/pull/12526)\n- feat(DropdownMenu): add auto-locate prop by [@inottn](https://github.com/inottn) in [#12251](https://github.com/youzan/vant/pull/12251)\n\n#### Performance 🚀\n\n- perf(CLI): improve markdown compile performance by [@chenjiahan](https://github.com/chenjiahan) in [#12541](https://github.com/youzan/vant/pull/12541)\n\n#### Bug Fixes 🐞\n\n- fix(ci): eslint on windows by [@Jungzl](https://github.com/Jungzl) in [#12516](https://github.com/youzan/vant/pull/12516)\n- fix(ImagePreview): double-scale and close-on-click-overlay may not work in certain scenarios by [@inottn](https://github.com/inottn) in [#12521](https://github.com/youzan/vant/pull/12521)\n\n#### Other Changes\n\n- chore(deps): bump Rsbuild v0.2.8 by [@chenjiahan](https://github.com/chenjiahan) in [#12519](https://github.com/youzan/vant/pull/12519)\n- chore(deps): bump Vue 3.4.0-beta.4 by [@chenjiahan](https://github.com/chenjiahan) in [#12520](https://github.com/youzan/vant/pull/12520)\n- test: bump vitest v1.1.0 by [@chenjiahan](https://github.com/chenjiahan) in [#12522](https://github.com/youzan/vant/pull/12522)\n- chore(deps): bump vite v5 by [@chenjiahan](https://github.com/chenjiahan) in [#12523](https://github.com/youzan/vant/pull/12523)\n- chore(deps): bump esbuild v0.19 by [@chenjiahan](https://github.com/chenjiahan) in [#12524](https://github.com/youzan/vant/pull/12524)\n- chore: lock Rspack v0.4.3 to fix CSS issue by [@chenjiahan](https://github.com/chenjiahan) in [#12525](https://github.com/youzan/vant/pull/12525)\n- chore(workflow): adjust issue templates by [@chenjiahan](https://github.com/chenjiahan) in [#12528](https://github.com/youzan/vant/pull/12528)\n- chore(workflow): update codesandbox URL by [@chenjiahan](https://github.com/chenjiahan) in [#12529](https://github.com/youzan/vant/pull/12529)\n- chore: update vitest config by [@inottn](https://github.com/inottn) in [#12530](https://github.com/youzan/vant/pull/12530)\n- chore(deps): bump Rsbuild and Vue by [@chenjiahan](https://github.com/chenjiahan) in [#12532](https://github.com/youzan/vant/pull/12532)\n- chore(ImagePreview): reuse isTap ref by [@inottn](https://github.com/inottn) in [#12536](https://github.com/youzan/vant/pull/12536)\n- test(Toast): reduce test run time by [@inottn](https://github.com/inottn) in [#12538](https://github.com/youzan/vant/pull/12538)\n- test(FloatingBubble): reduce test run time by [@inottn](https://github.com/inottn) in [#12539](https://github.com/youzan/vant/pull/12539)\n\n### v4.8.1\n\n`2023-12-17`\n\n#### New Features 🎉\n\n- perf(TextEllipsis): reuse windowWidth to avoid repeat calculations by [@inottn](https://github.com/inottn) in [#12471](https://github.com/youzan/vant/pull/12471)\n- feat(TextEllipsis): add the toggle instance method by [@wjw-gavin](https://github.com/wjw-gavin) in [#12472](https://github.com/youzan/vant/pull/12472)\n- feat(cli): bump Rsbuild v0.2.2 by [@chenjiahan](https://github.com/chenjiahan) in [#12502](https://github.com/youzan/vant/pull/12502)\n\n#### Performance 🚀\n\n- perf(cli): disable source map to make compilation faster by [@chenjiahan](https://github.com/chenjiahan) in [#12484](https://github.com/youzan/vant/pull/12484)\n\n#### Bug Fixes 🐞\n\n- fix(cli): remove unused script in template by [@chenjiahan](https://github.com/chenjiahan) in [#12482](https://github.com/youzan/vant/pull/12482)\n- fix(TextEllipsis): fix missing param for toggle by [@wjw-gavin](https://github.com/wjw-gavin) in [#12483](https://github.com/youzan/vant/pull/12483)\n\n#### Document 📖\n\n- docs(collapse): fix missing ref tags by [@RSS1102](https://github.com/RSS1102) in [#12460](https://github.com/youzan/vant/pull/12460)\n- docs(collapse): fix translation Error by [@RSS1102](https://github.com/RSS1102) in [#12464](https://github.com/youzan/vant/pull/12464)\n- docs(dialog): fix translation Error and keep the sample code the same by [@RSS1102](https://github.com/RSS1102) in [#12465](https://github.com/youzan/vant/pull/12465)\n- docs(TreeSelect): correct variable names by [@inottn](https://github.com/inottn) in [#12469](https://github.com/youzan/vant/pull/12469)\n- docs: add Rsbuild scaffold guide by [@chenjiahan](https://github.com/chenjiahan) in [#12475](https://github.com/youzan/vant/pull/12475)\n- docs(image-preview): usage of Supplementing className by [@RSS1102](https://github.com/RSS1102) in [#12491](https://github.com/youzan/vant/pull/12491)\n- docs(Quickstart): unplugin-vue-components usage updated (#12499) by [@wChenonly](https://github.com/wChenonly) in [#12500](https://github.com/youzan/vant/pull/12500)\n\n#### Other Changes\n\n- chore(workflow): add perf label for PR by [@chenjiahan](https://github.com/chenjiahan) in [#12473](https://github.com/youzan/vant/pull/12473)\n- refactor(CLI): integrate Rsbuild to build website by [@chenjiahan](https://github.com/chenjiahan) in [#12481](https://github.com/youzan/vant/pull/12481)\n- chore: bump Rspack 0.4.2 to fix Chinese path by [@chenjiahan](https://github.com/chenjiahan) in [#12496](https://github.com/youzan/vant/pull/12496)\n- chore(deps): bump vite from 4.4.9 to 4.4.12 by [@dependabot](https://github.com/dependabot) in [#12493](https://github.com/youzan/vant/pull/12493)\n\n#### New Contributors\n\n- [@RSS1102](https://github.com/RSS1102) made their first contribution in [#12460](https://github.com/youzan/vant/pull/12460)\n\n### v4.8.0\n\n`2023-11-19`\n\n#### New Component 🎉\n\n- Added Highlight component, contributed by [@wjw-gavin](https://github.com/wjw-gavin) and [@inottn](https://github.com/inottn) ❤️ [#12434](https://github.com/youzan/vant/pull/12434)\n\n#### New Features\n\n- feat(ImagePreview): expose resetScale method by [@inottn](https://github.com/inottn) in [#12426](https://github.com/youzan/vant/pull/12426)\n- feat(Checker): add checked and disabled params to the default slot by [@inottn](https://github.com/inottn) in [#12436](https://github.com/youzan/vant/pull/12436)\n- feat(Row): gutter support vertical space by [@cc-hearts](https://github.com/cc-hearts) in [#12439](https://github.com/youzan/vant/pull/12439)\n\n#### Bug Fixes 🐞\n\n- fix(Calendar): subtitle supports reactive by [@cc-hearts](https://github.com/cc-hearts) in [#12425](https://github.com/youzan/vant/pull/12425)\n\n#### Document 📖\n\n- docs(field): update props size by [@Simon-He95](https://github.com/Simon-He95) in [#12429](https://github.com/youzan/vant/pull/12429)\n- docs(cell): update props size by [@Simon-He95](https://github.com/Simon-He95) in [#12427](https://github.com/youzan/vant/pull/12427)\n- docs(Highlight): add version tip by [@chenjiahan](https://github.com/chenjiahan) in [#12438](https://github.com/youzan/vant/pull/12438)\n- docs(Overlay): add set z-index demo by [@chenjiahan](https://github.com/chenjiahan) in [#12454](https://github.com/youzan/vant/pull/12454)\n- docs: add Rsbuild to quickstart by [@chenjiahan](https://github.com/chenjiahan) in [#12455](https://github.com/youzan/vant/pull/12455)\n\n#### Other Changes\n\n- chore(deps): fix security alerts of babel and postcss by [@chenjiahan](https://github.com/chenjiahan) in [#12414](https://github.com/youzan/vant/pull/12414)\n\n#### New Contributors\n\n- [@cc-hearts](https://github.com/cc-hearts) made their first contribution in [#12425](https://github.com/youzan/vant/pull/12425)\n\n### v4.7.3\n\n`2023-10-29`\n\n#### New Features 🎉\n\n- feat(locale): add Arabic Locale by [@mo9a7i](https://github.com/mo9a7i) in [#12381](https://github.com/youzan/vant/pull/12381)\n- feat(Form): add required prop and support auto display by [@chenjiahan](https://github.com/chenjiahan) in [#12380](https://github.com/youzan/vant/pull/12380)\n- feat(auto-import-resolver): add module option by [@chenjiahan](https://github.com/chenjiahan) in [#12383](https://github.com/youzan/vant/pull/12383)\n- style: replace word-break with overflow-wrap by [@wjw-gavin](https://github.com/wjw-gavin) in [#12396](https://github.com/youzan/vant/pull/12396)\n- feat(Tab): add show-header prop by [@yoyo837](https://github.com/yoyo837) in [#12394](https://github.com/youzan/vant/pull/12394)\n- style(Search): use consistent padding when display error msg by [@chenjiahan](https://github.com/chenjiahan) in [#12409](https://github.com/youzan/vant/pull/12409)\n- feat(Signature): expose resize method by [@inottn](https://github.com/inottn) in [#12405](https://github.com/youzan/vant/pull/12405)\n\n#### Bug Fixes 🐞\n\n- fix(ConfigProvider): export missing theme vars by [@inottn](https://github.com/inottn) in [#12371](https://github.com/youzan/vant/pull/12371)\n- fix(AddressEdit): area field validate error when showArea is false by [@zhousg](https://github.com/zhousg) in [#12393](https://github.com/youzan/vant/pull/12393)\n- fix([@vant](https://github.com/vant)/area-data): add exports types by @Alkaidcc in [#12397](https://github.com/youzan/vant/pull/12397)\n- fix(Search): fix search style when has error message by [@johnsonwong666](https://github.com/johnsonwong666) in [#12385](https://github.com/youzan/vant/pull/12385)\n- fix(PickerGroup): only filter Comment vnode by [@zhousg](https://github.com/zhousg) in [#12402](https://github.com/youzan/vant/pull/12402)\n\n#### Document 📖\n\n- docs(auto-import-resolver): add doc for importStyle option by [@chenjiahan](https://github.com/chenjiahan) in [#12382](https://github.com/youzan/vant/pull/12382)\n- docs(Tab): keep docs and example the same by [@wjw-gavin](https://github.com/wjw-gavin) in [#12395](https://github.com/youzan/vant/pull/12395)\n- chore: add vscode-common-intellisense to the Community Ecosystem by [@Simon-He95](https://github.com/Simon-He95) in [#12406](https://github.com/youzan/vant/pull/12406)\n- docs(Signature): add resize method by [@chenjiahan](https://github.com/chenjiahan) in [#12411](https://github.com/youzan/vant/pull/12411)\n- docs(progress): remove outdated resize method by [@chenjiahan](https://github.com/chenjiahan) in [#12412](https://github.com/youzan/vant/pull/12412)\n\n#### Other Changes\n\n- chore(Field): required label css will active when rules contain required by [@morance](https://github.com/morance) in [#12376](https://github.com/youzan/vant/pull/12376)\n- test(ImagePreview): fix incorrect onClose test case by [@chenjiahan](https://github.com/chenjiahan) in [#12386](https://github.com/youzan/vant/pull/12386)\n- chore: forked repo, skip CI running by [@yoyo837](https://github.com/yoyo837) in [#12410](https://github.com/youzan/vant/pull/12410)\n\n#### New Contributors\n\n- [@morance](https://github.com/morance) made their first contribution in [#12376](https://github.com/youzan/vant/pull/12376)\n- [@mo9a7i](https://github.com/mo9a7i) made their first contribution in [#12381](https://github.com/youzan/vant/pull/12381)\n- [@Alkaidcc](https://github.com/Alkaidcc) made their first contribution in [#12397](https://github.com/youzan/vant/pull/12397)\n- [@johnsonwong666](https://github.com/johnsonwong666) made their first contribution in [#12385](https://github.com/youzan/vant/pull/12385)\n\n### v4.7.2\n\n`2023-10-15`\n\n#### New Features 🎉\n\n- feat(Icon): add font-family css var by [@JeremyFan](https://github.com/JeremyFan) in [#12354](https://github.com/youzan/vant/pull/12354)\n- feat(ImagePreview): add doubleScale option by [@coderXMin](https://github.com/coderXMin) in [#12360](https://github.com/youzan/vant/pull/12360)\n\n#### Bug Fixes 🐞\n\n- fix(Icons): compatible with the browser range of Vant 2 by [@chenjiahan](https://github.com/chenjiahan) in [#12356](https://github.com/youzan/vant/pull/12356)\n- fix(Uploader): multiple reupload only choose one & cancel chose problem by [@zhousg](https://github.com/zhousg) in [#12359](https://github.com/youzan/vant/pull/12359)\n\n#### Other Changes\n\n- refactor(Signature): avoid setting the canvas width and height in the next tick by [@inottn](https://github.com/inottn) in [#12347](https://github.com/youzan/vant/pull/12347)\n- refactor(Signature): use scale method to enhance clarity by [@inottn](https://github.com/inottn) in [#12363](https://github.com/youzan/vant/pull/12363)\n- chore(deps): bump rslog v1.1.0 by [@chenjiahan](https://github.com/chenjiahan) in [#12364](https://github.com/youzan/vant/pull/12364)\n- chore(cli): merge greet logs by [@chenjiahan](https://github.com/chenjiahan) in [#12365](https://github.com/youzan/vant/pull/12365)\n- chore(ImagePreview): rename doubleScale and add test case by [@chenjiahan](https://github.com/chenjiahan) in [#12366](https://github.com/youzan/vant/pull/12366)\n\n#### New Contributors\n\n- [@coderXMin](https://github.com/coderXMin) made their first contribution in [#12360](https://github.com/youzan/vant/pull/12360)\n\n### v4.7.1\n\n`2023-10-06`\n\n#### New Features 🎉\n\n- feat(FloatingPanel): optimize bounce animate by [@zhousg](https://github.com/zhousg) in [#12317](https://github.com/youzan/vant/pull/12317)\n- feat(cli): using rslog by [@chenjiahan](https://github.com/chenjiahan) in [#12334](https://github.com/youzan/vant/pull/12334)\n- style(Swipe): declare transition-property by [@chenjiahan](https://github.com/chenjiahan) in [#12336](https://github.com/youzan/vant/pull/12336)\n- feat(Notify): add JSDoc for utility functions by [@chenjiahan](https://github.com/chenjiahan) in [#12342](https://github.com/youzan/vant/pull/12342)\n- feat(Dialog): add JSDoc for utility functions by [@chenjiahan](https://github.com/chenjiahan) in [#12343](https://github.com/youzan/vant/pull/12343)\n- feat(Toast): add JSDoc for utility functions by [@chenjiahan](https://github.com/chenjiahan) in [#12344](https://github.com/youzan/vant/pull/12344)\n\n#### Bug Fixes 🐞\n\n- fix(Popup): fix failed to inherit scopedId by [@chenjiahan](https://github.com/chenjiahan) in [#12327](https://github.com/youzan/vant/pull/12327)\n- fix(CellGroup): failed to inherit scopeId with title by [@chenjiahan](https://github.com/chenjiahan) in [#12328](https://github.com/youzan/vant/pull/12328)\n- fix(Popover): failed to inherit scopedId by [@chenjiahan](https://github.com/chenjiahan) in [#12329](https://github.com/youzan/vant/pull/12329)\n\n#### Document 📖\n\n- docs: fix typo in Form by [@zcvvvbb](https://github.com/zcvvvbb) in [#12322](https://github.com/youzan/vant/pull/12322)\n- docs: add more ecosystem projects by [@chenjiahan](https://github.com/chenjiahan) in [#12338](https://github.com/youzan/vant/pull/12338)\n- docs(ImagePreview): improve English document by [@chenjiahan](https://github.com/chenjiahan) in [#12345](https://github.com/youzan/vant/pull/12345)\n- docs: mistypo Georqia to Georgia by [@mahnunchik](https://github.com/mahnunchik) in [#12331](https://github.com/youzan/vant/pull/12331)\n\n#### Other Changes\n\n- chore(Swipe): limit the decimal length of transform by [@chenjiahan](https://github.com/chenjiahan) in [#12337](https://github.com/youzan/vant/pull/12337)\n- chore: bump pnpm v8.8.0 by [@chenjiahan](https://github.com/chenjiahan) in [#12339](https://github.com/youzan/vant/pull/12339)\n- chore(deps): bump postcss from 8.4.27 to 8.4.31 by [@dependabot](https://github.com/dependabot) in [#12341](https://github.com/youzan/vant/pull/12341)\n\n#### New Contributors\n\n- [@zcvvvbb](https://github.com/zcvvvbb) made their first contribution in [#12322](https://github.com/youzan/vant/pull/12322)\n- [@mahnunchik](https://github.com/mahnunchik) made their first contribution in [#12331](https://github.com/youzan/vant/pull/12331)\n\n### v4.7.0\n\n`2023-09-24`\n\n#### 🍭 Icon Updates\n\n- Icon: add new `user` icon\n- Icon: add new `notes` icon\n- Icon: add new `newspaper` icon\n- Icon: add new `list-switch` icon\n- Icon: add new `list-switching` icon\n- Icon: add a filled `records` icon\n- Icon: add a filled `contact` icon\n- Icon: add a filled `discount` icon\n- Icon: add a filled `completed` icon\n- Icon: add a filled `description` icon\n- Icon: add a filled `cash-back-record` icon\n- Icon: rename the previous `records` icon to `records-o`\n- Icon: rename the previous `contact` icon to `contact-o`\n- Icon: rename the previous `discount` icon to `discount-o`\n- Icon: rename the previous `completed` icon to `completed-o`\n- Icon: rename the previous `description` icon to `description-o`\n- Icon: rename the previous `cash-back-record` icon to `cash-back-record-o`\n\n#### New Features 🎉\n\n- feat(Calendar): add click-disabled-date event by [@LadyChatterleyLover](https://github.com/LadyChatterleyLover) in [#12274](https://github.com/youzan/vant/pull/12274)\n- feat(Uploader): add --van-uploader-border-radius css variables by [@xieyezi](https://github.com/xieyezi) in [#12280](https://github.com/youzan/vant/pull/12280)\n- feat(SwipeCell): fix triggered close by clickAway when in running beforeClose by [@nined9](https://github.com/nined9) in [#12309](https://github.com/youzan/vant/pull/12309)\n- feat(AddressEdit): add change event for name and tel input by [@zhousg](https://github.com/zhousg) in [#12310](https://github.com/youzan/vant/pull/12310)\n- types(Dialog): improve showDialog return type by [@chenjiahan](https://github.com/chenjiahan) in [#12316](https://github.com/youzan/vant/pull/12316)\n\n#### Bug Fixes 🐞\n\n- fix(Picker): fix bug the content of the popup window is not consistent with the Chinese version under the English version by [@lllomh](https://github.com/lllomh) in [#12300](https://github.com/youzan/vant/pull/12300)\n- fix(Signature): fix checking if canvas is empty when backgroundColor is set by [@sywyyhykkk](https://github.com/sywyyhykkk) in [#12304](https://github.com/youzan/vant/pull/12304)\n- fix(FloatingPanel): dragging down causes the page to move by [@zhousg](https://github.com/zhousg) in [#12314](https://github.com/youzan/vant/pull/12314)\n\n#### Document 📖\n\n- docs(Picker): improve picker document by [@MrXwq](https://github.com/MrXwq) in [#12275](https://github.com/youzan/vant/pull/12275)\n- docs(Uploader): add FAQ about camera permission by [@chenjiahan](https://github.com/chenjiahan) in [#12289](https://github.com/youzan/vant/pull/12289)\n\n#### Other Changes\n\n- test(Dialog): enable function-call test cases by [@chenjiahan](https://github.com/chenjiahan) in [#12315](https://github.com/youzan/vant/pull/12315)\n- fix(cli): allow missing build script when releasing by [@chenjiahan](https://github.com/chenjiahan) in [#12292](https://github.com/youzan/vant/pull/12292)\n\n#### New Contributors\n\n- [@nined9](https://github.com/nined9) made their first contribution in [#12309](https://github.com/youzan/vant/pull/12309)\n- [@sywyyhykkk](https://github.com/sywyyhykkk) made their first contribution in [#12304](https://github.com/youzan/vant/pull/12304)\n\n### v4.6.8\n\n`2023-09-10`\n\n#### New Features 🎉\n\n- feat(Cell): add CSS vars to customize font size of the value by [@inottn](https://github.com/inottn) in [#12260](https://github.com/youzan/vant/pull/12260)\n- feat(ConfigProvider): supplement the type declaration of ConfigProviderThemeVars by [@xieyezi](https://github.com/xieyezi) in [#12264](https://github.com/youzan/vant/pull/12264)\n- feat(NavBar): add leftDisabled and rightDisabled prop by [@m-xlsea](https://github.com/m-xlsea) in [#12258](https://github.com/youzan/vant/pull/12258)\n\n#### Bug Fixes 🐞\n\n- fix(ConfigProvider): failed to set some basic theme vars by [@chenjiahan](https://github.com/chenjiahan) in [#12272](https://github.com/youzan/vant/pull/12272)\n- fix(ConfigProvider): ConfigProviderThemeVars fontSizeXs hump by [@xieyezi](https://github.com/xieyezi) in [#12267](https://github.com/youzan/vant/pull/12267)\n\n#### Document 📖\n\n- docs(NavBar): add disable button demo by [@chenjiahan](https://github.com/chenjiahan) in [#12270](https://github.com/youzan/vant/pull/12270)\n\n#### Other Changes\n\n- chore(CI): enable single-commit to reduce the repo size by [@chenjiahan](https://github.com/chenjiahan) in [#12268](https://github.com/youzan/vant/pull/12268)\n- chore(CI): bump actions version by [@chenjiahan](https://github.com/chenjiahan) in [#12269](https://github.com/youzan/vant/pull/12269)\n- chore: move axure to vant-assets repo by [@chenjiahan](https://github.com/chenjiahan) in [#12271](https://github.com/youzan/vant/pull/12271)\n\n#### New Contributors\n\n- [@xieyezi](https://github.com/xieyezi) made their first contribution in [#12264](https://github.com/youzan/vant/pull/12264)\n- [@m-xlsea](https://github.com/m-xlsea) made their first contribution in [#12258](https://github.com/youzan/vant/pull/12258)\n\n### v4.6.7\n\n`2023-09-04`\n\n#### New Features 🎉\n\n- feat(vant-use): add useRaf by [@Simon-He95](https://github.com/Simon-He95) in [#12211](https://github.com/youzan/vant/pull/12211)\n- feat(Checkbox): add indeterminate status by [@wjw-gavin](https://github.com/wjw-gavin) in [#12216](https://github.com/youzan/vant/pull/12216)\n- feat(auto-import-resolver): add auto-import-resolver package by [@wChenonly](https://github.com/wChenonly) in [#12227](https://github.com/youzan/vant/pull/12227)\n- feat(ConfigProvider): add theme-vars-scope props enable root affects by [@zhousg](https://github.com/zhousg) in [#12240](https://github.com/youzan/vant/pull/12240)\n\n#### Bug Fixes 🐞\n\n- fix(auto-import-resolver): type mismatch in TS projects by [@chenjiahan](https://github.com/chenjiahan) in [#12243](https://github.com/youzan/vant/pull/12243)\n- fix(eslint): using ignorePatterns to replace .eslintignore by [@MrXwq](https://github.com/MrXwq) in [#12237](https://github.com/youzan/vant/pull/12237)\n\n#### Document 📖\n\n- docs: improve the menu position of back-top by [@wjw-gavin](https://github.com/wjw-gavin) in [#12223](https://github.com/youzan/vant/pull/12223)\n- docs: improve use-raf document by [@chenjiahan](https://github.com/chenjiahan) in [#12224](https://github.com/youzan/vant/pull/12224)\n- docs: add Vite and Nuxt guide to quickstart by [@chenjiahan](https://github.com/chenjiahan) in [#12239](https://github.com/youzan/vant/pull/12239)\n- docs(auto-import-resolver): update README and folder name by [@chenjiahan](https://github.com/chenjiahan) in [#12241](https://github.com/youzan/vant/pull/12241)\n- docs(auto-import-resolver): add Rspack usage by [@chenjiahan](https://github.com/chenjiahan) in [#12242](https://github.com/youzan/vant/pull/12242)\n- docs(ConfigProvider): update the guide of modify CSS vars by [@chenjiahan](https://github.com/chenjiahan) in [#12246](https://github.com/youzan/vant/pull/12246)\n\n#### Other Changes\n\n- test: migrate test runner to vitest by [@chenjiahan](https://github.com/chenjiahan) in [#12206](https://github.com/youzan/vant/pull/12206)\n- chore(CI): fix codecov reporter by [@chenjiahan](https://github.com/chenjiahan) in [#12210](https://github.com/youzan/vant/pull/12210)\n- chore: use workspace protocol for internal deps by [@chenjiahan](https://github.com/chenjiahan) in [#12225](https://github.com/youzan/vant/pull/12225)\n- test: fix vitest canvas mock by [@chenjiahan](https://github.com/chenjiahan) in [#12226](https://github.com/youzan/vant/pull/12226)\n\n### v4.6.6\n\n`2023-08-20`\n\n#### New Features 🎉\n\n- feat(DropdownItem): supports boolean value in options by [@baboon-king](https://github.com/baboon-king) in [#12208](https://github.com/youzan/vant/pull/12208)\n\n#### Bug Fixes 🐞\n\n- fix(FloatingBubble): drag should not trigger click on child elements by [@zhousg](https://github.com/zhousg) in [#12201](https://github.com/youzan/vant/pull/12201)\n- fix(FloatingBubble): does not update state while hidden by [@zhousg](https://github.com/zhousg) in [#12207](https://github.com/youzan/vant/pull/12207)\n\n#### Other Changes\n\n- chore(CI): update issue comment messages by [@chenjiahan](https://github.com/chenjiahan) in [#12204](https://github.com/youzan/vant/pull/12204)\n- refactor(cli): remove execa dependency by [@chenjiahan](https://github.com/chenjiahan) in [#12205](https://github.com/youzan/vant/pull/12205)\n\n### v4.6.5\n\n`2023-08-16`\n\n#### New Features 🎉\n\n- feat(DropdownMenu): add swipe-threshold prop by [@inottn](https://github.com/inottn) in [#12117](https://github.com/youzan/vant/pull/12117)\n- types(Toast): add `ToastWrapperInstance` export by [@long-woo](https://github.com/long-woo) in [#12166](https://github.com/youzan/vant/pull/12166)\n- feat(FloatingBubble): use component attrs by [@zhousg](https://github.com/zhousg) in [#12171](https://github.com/youzan/vant/pull/12171)\n\n#### Bug Fixes 🐞\n\n- fix(FloatingPanel): Lag caused by scrollbar and panel movement #12146 by [@yue1123](https://github.com/yue1123) in [#12161](https://github.com/youzan/vant/pull/12161)\n- fix(FloatingPanel): change the default value of lock-scroll to false by [@inottn](https://github.com/inottn) in [#12162](https://github.com/youzan/vant/pull/12162)\n- fix(cli): should escape curly brackets in markdown by [@chenjiahan](https://github.com/chenjiahan) in [#12188](https://github.com/youzan/vant/pull/12188)\n\n#### Document 📖\n\n- docs: add instructions for bun package manager by [@colinhacks](https://github.com/colinhacks) in [#12182](https://github.com/youzan/vant/pull/12182)\n\n#### Other Changes\n\n- chore: add script to format GitHub changelog by [@chenjiahan](https://github.com/chenjiahan) in [#12158](https://github.com/youzan/vant/pull/12158)\n- chore(FloatingPanel): improve code style by [@chenjiahan](https://github.com/chenjiahan) in [#12175](https://github.com/youzan/vant/pull/12175)\n- refactor(cli): rewrite vite-plugin-md by [@chenjiahan](https://github.com/chenjiahan) in [#12179](https://github.com/youzan/vant/pull/12179)\n- chore(deps): bump markdown-it v13 and commander v11 by [@chenjiahan](https://github.com/chenjiahan) in [#12180](https://github.com/youzan/vant/pull/12180)\n- chore(CI): do not run codeql for pull request by [@chenjiahan](https://github.com/chenjiahan) in [#12181](https://github.com/youzan/vant/pull/12181)\n\n#### New Contributors\n\n- [@long-woo](https://github.com/long-woo) made their first contribution in [#12166](https://github.com/youzan/vant/pull/12166)\n- [@yue1123](https://github.com/yue1123) made their first contribution in [#12161](https://github.com/youzan/vant/pull/12161)\n- [@colinhacks](https://github.com/colinhacks) made their first contribution in [#12182](https://github.com/youzan/vant/pull/12182)\n- [@xincheng-1999](https://github.com/xincheng-1999) made their first contribution in [#12189](https://github.com/youzan/vant/pull/12189)\n\n### v4.6.4\n\n`2023-08-06`\n\n#### New Features 🎉\n\n- feat(area-data): update counties of WuHu by [@nivin-studio](https://github.com/nivin-studio) in [#12122](https://github.com/youzan/vant/pull/12122)\n- feat(Locale): add Serbian language to internationalization by [@RogerZXY](https://github.com/RogerZXY) in [#12145](https://github.com/youzan/vant/pull/12145)\n- feat(ImagePreview): add closeOnClickOverlay option by [@chenjiahan](https://github.com/chenjiahan) in [#12153](https://github.com/youzan/vant/pull/12153)\n- feat(List): add scroller prop by [@chenjiahan](https://github.com/chenjiahan) in [#12154](https://github.com/youzan/vant/pull/12154)\n- feat(FloatingPanel): add lock-scroll prop by [@inottn](https://github.com/inottn) in [#12157](https://github.com/youzan/vant/pull/12157)\n\n#### Bug Fixes 🐞\n\n- fix(TextEllipsis): dots repeated by [@muzaisimao](https://github.com/muzaisimao) in [#12120](https://github.com/youzan/vant/pull/12120)\n- fix(TextEllipsis): fix the logic of calculating the position of ellipsis by [@inottn](https://github.com/inottn) in [#12137](https://github.com/youzan/vant/pull/12137)\n\n#### Document 📖\n\n- docs: move PR title format to contribution guide by [@chenjiahan](https://github.com/chenjiahan) in [#12114](https://github.com/youzan/vant/pull/12114)\n- docs(Radio): add document description for the css var '--van-radio-dot-size' by [@wjw-gavin](https://github.com/wjw-gavin) in [#12152](https://github.com/youzan/vant/pull/12152)\n\n#### Other Changes\n\n- chore: avoid prettier breaking hbs template by [@chenjiahan](https://github.com/chenjiahan) in [#12113](https://github.com/youzan/vant/pull/12113)\n- chore(deps): bump release-it v16 by [@chenjiahan](https://github.com/chenjiahan) in [#12115](https://github.com/youzan/vant/pull/12115)\n- feat(get-deps): import('../foo.vue') => import('../foo.mjs') 的替换 by [@suncohey](https://github.com/suncohey) in [#12046](https://github.com/youzan/vant/pull/12046)\n- refactor(cli): rewrite release command by [@chenjiahan](https://github.com/chenjiahan) in [#12133](https://github.com/youzan/vant/pull/12133)\n- feat(cli): support gitTag option for release command by [@chenjiahan](https://github.com/chenjiahan) in [#12134](https://github.com/youzan/vant/pull/12134)\n- chore(CI): automatically generate changelog via GitHub by [@chenjiahan](https://github.com/chenjiahan) in [#12135](https://github.com/youzan/vant/pull/12135)\n- chore: add PR labeler action by [@chenjiahan](https://github.com/chenjiahan) in [#12136](https://github.com/youzan/vant/pull/12136)\n- chore(TextEllipsis): reuse actionText variable by [@chenjiahan](https://github.com/chenjiahan) in [#12138](https://github.com/youzan/vant/pull/12138)\n- refactor(cli): use GitHub changelog instead of conventional-changelog by [@chenjiahan](https://github.com/chenjiahan) in [#12139](https://github.com/youzan/vant/pull/12139)\n- chore: add Serbian to doc and rename the file by [@chenjiahan](https://github.com/chenjiahan) in [#12150](https://github.com/youzan/vant/pull/12150)\n- chore(eslint-config): bump dependencies by [@chenjiahan](https://github.com/chenjiahan) in [#12155](https://github.com/youzan/vant/pull/12155)\n\n#### New Contributors\n\n- [@muzaisimao](https://github.com/muzaisimao) made their first contribution in [#12120](https://github.com/youzan/vant/pull/12120)\n- [@suncohey](https://github.com/suncohey) made their first contribution in [#12046](https://github.com/youzan/vant/pull/12046)\n- [@nivin-studio](https://github.com/nivin-studio) made their first contribution in [#12122](https://github.com/youzan/vant/pull/12122)\n- [@RogerZXY](https://github.com/RogerZXY) made their first contribution in [#12145](https://github.com/youzan/vant/pull/12145)\n\n### [v4.6.3](https://github.com/vant-ui/vant/compare/v4.6.2...v4.6.3)\n\n`2023-07-23`\n\n**Feature**\n\n- AddressList: add show-add-button prop [#12090](https://github.com/vant-ui/vant/issues/12090)\n- CheckboxGroup: add shape prop [#12092](https://github.com/vant-ui/vant/issues/12092)\n- RadioGroup: add shape prop [#12092](https://github.com/vant-ui/vant/issu\n\n<!-- [TRUNCATED AT 50KB] -->","packages/vant/docs/markdown/changelog.zh-CN.md":"# 更新日志\n\n### 重要提示\n\n**为了避免重复维护，降低维护成本。**\n\n**从 v4.9.0 开始，Vant 的更新日志统一发布在 [GitHub 的 Releases 页面](https://github.com/youzan/vant/releases)，当前页面将不再更新。**\n\n当前文档为 Vant v4.0.0 ~ v4.9.0 的的更新日志，其他版本请参考：\n\n- [Vant 2 更新日志](/vant/v2/#/zh-CN/changelog)\n- [Vant 3 更新日志](/vant/v3/#/zh-CN/changelog)\n\n### 介绍\n\nVant 遵循 [Semver](https://semver.org/lang/zh-CN/) 语义化版本规范。\n\n**发布节奏**\n\n- 修订号：通常每隔 1 ~ 2 周发布，包含新特性和问题修复。\n- 次版本号：通常每隔 1 ~ 2 月发布，包含新组件或较大的功能更新，向下兼容。\n- 主版本号：无固定的发布时间，包含不兼容更新和重大功能更新。\n\n## 更新内容\n\n### v4.9.0\n\n`2024-05-02`\n\n#### 新功能 🎉\n\n- feat(Calendar)：添加 switch-mode 属性，由[@inottn](https://github.com/inottn) 贡献，在[#12836](https://github.com/youzan/vant/pull/12836)\n- feat(PickerGroup)：添加新属性 showToolbar，由[@ReinoFu](https://github.com/ReinoFu) 贡献，在[#12839](https://github.com/youzan/vant/pull/12839)\n- feat(CLI)：支持配置 Rsbuild，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12809](https://github.com/youzan/vant/pull/12809)\n\n#### Bug 修复 🐞\n\n- fix(cli)：修复 Vue SFC 样式绑定失败，由[@zoy-l](https://github.com/zoy-l) 贡献，在[#12799](https://github.com/youzan/vant/pull/12799)\n- fix(ImagePreview)：修复 swipeItem 可能为 undefined，由[@inottn](https://github.com/inottn) 贡献，在[#12818](https://github.com/youzan/vant/pull/12818)\n- fix(Highlight)：当 keywords 为空时正确渲染，由[@Jungzl](https://github.com/Jungzl) 贡献，在[#12829](https://github.com/youzan/vant/pull/12829)\n- fix(IndexBar)：当传入 sticky & stickyOffsetTop 时正确渲染激活锚点，由[@Jungzl](https://github.com/Jungzl) 贡献，在[#12837](https://github.com/youzan/vant/pull/12837)\n\n#### 文档 📖\n\n- docs: 移除所有 Gitee 链接，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12845](https://github.com/youzan/vant/pull/12845)\n- docs: 移除 gzip 大小徽章，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12847](https://github.com/youzan/vant/pull/12847)\n- docs: 修复 Rsbuild HTML 构建失败，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12848](https://github.com/youzan/vant/pull/12848)\n\n#### 其他更改\n\n- chore(deps)：升级依赖 terser 至 ^5.30.3，由[@renovate](https://github.com/renovate) 贡献，在[#12795](https://github.com/youzan/vant/pull/12795)\n- chore(deps)：升级依赖 eslint-plugin-vue 至 ^9.25.0，由[@renovate](https://github.com/renovate) 贡献，在[#12794](https://github.com/youzan/vant/pull/12794)\n- chore(deps)：更新所有补丁依赖，由[@renovate](https://github.com/renovate) 贡献，在[#12773](https://github.com/youzan/vant/pull/12773)\n- chore(workflow)：升级至 pnpm v9，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12808](https://github.com/youzan/vant/pull/12808)\n- chore：推送 github-pages-deploy-action[@v4](https://github.com/v4).6.0，由 @chenjiahan 贡献，在[#12810](https://github.com/youzan/vant/pull/12810)\n- chore(deps)：升级依赖 [@vitejs](https://github.com/vitejs)/plugin-vue 至 v5，由 @renovate 贡献，在[#12840](https://github.com/youzan/vant/pull/12840)\n- chore(deps)：升级依赖 commander 至 v12，由[@renovate](https://github.com/renovate) 贡献，在[#12841](https://github.com/youzan/vant/pull/12841)\n- chore(deps)：更新 actions/setup-node 行为至 v4，由[@renovate](https://github.com/renovate) 贡献，在[#12814](https://github.com/youzan/vant/pull/12814)\n- chore(deps)：更新 github/issue-labeler 行为至 v3.4，由[@renovate](https://github.com/renovate) 贡献，在[#12813](https://github.com/youzan/vant/pull/12813)\n- chore(deps)：更新 codecov/codecov-action 行为至 v4，由[@renovate](https://github.com/renovate) 贡献，在[#12815](https://github.com/youzan/vant/pull/12815)\n- chore(deps)：更新所有补丁依赖，由[@renovate](https://github.com/renovate) 贡献，在[#12812](https://github.com/youzan/vant/pull/12812)\n\n#### 新贡献者\n\n- [@ReinoFu](https://github.com/ReinoFu) 在[#12839](https://github.com/youzan/vant/pull/12839) 中首次贡献\n\n### v4.8.11\n\n`2024-04-14`\n\n#### 新功能 🎉\n\n- feat(DropdownMenu)：通过 [@inottn](https://github.com/inottn) 在 [#12785](https://github.com/youzan/vant/pull/12785) 中为选项添加 disabled 属性\n\n#### Bug 修复 🐞\n\n- fix：在 JetBrains IDE 中修复警告 `is not a valid value for v-model`，贡献者 [@anyesu](https://github.com/anyesu) 在 [#12787](https://github.com/youzan/vant/pull/12787)\n- fix(Cli)：移除站点的 tsconfig 文件，贡献者 [@chenjiahan](https://github.com/chenjiahan) 在 [#12792](https://github.com/youzan/vant/pull/12792)\n\n#### 文档 📖\n\n- docs(list)：更新模块代码加载错误信息，贡献者 [@wangjue666](https://github.com/wangjue666) 在 [#12778](https://github.com/youzan/vant/pull/12778)\n\n#### 其他变更\n\n- chore(deps)：更新依赖 eslint-plugin-vue 至 ^9.24.1，由 [@renovate](https://github.com/renovate) 在 [#12774](https://github.com/youzan/vant/pull/12774) 提交\n- chore(deps)：升级 Rsbuild 至 v0.6 版本，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12790](https://github.com/youzan/vant/pull/12790) 提交\n\n#### 新贡献者\n\n- [@wangjue666](https://github.com/wangjue666) 在 [#12778](https://github.com/youzan/vant/pull/12778) 中首次贡献\n- [@anyesu](https://github.com/anyesu) 在 [#12787](https://github.com/youzan/vant/pull/12787) 中首次贡献\n\n### v4.8.10\n\n`2024-04-06`\n\n#### 新功能 🎉\n\n- feat(TimePicker)：支持 confirm 和 getSelectedTime 方法，由 [@bluesky335](https://github.com/bluesky335) 在 [#12761](https://github.com/youzan/vant/pull/12761) 提供\n- feat(DatePicker)：支持 confirm 和 getSelectedDate 方法，由 [@bluesky335](https://github.com/bluesky335) 在 [#12762](https://github.com/youzan/vant/pull/12762) 提供\n- feat(Coupon)：支持复选框用法，由 [@CatsAndMice](https://github.com/CatsAndMice) 在 [#12744](https://github.com/youzan/vant/pull/12744) 提供\n\n#### 其他变更\n\n- chore(deps)：更新依赖 vite 至 v5.0.13 [安全]，由 [@renovate](https://github.com/renovate) 在 [#12767](https://github.com/youzan/vant/pull/12767) 提供\n- chore(deps)：更新所有补丁依赖项，由 [@renovate](https://github.com/renovate) 在 [#12756](https://github.com/youzan/vant/pull/12756) 提供\n- chore(deps)：更新依赖项 [@types](https://github.com/types)/lodash 至 ^4.17.0，由 [@renovate](https://github.com/renovate) 在 [#12757](https://github.com/youzan/vant/pull/12757) 提供\n- chore：修正 getSelectedTime 的返回类型，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12768](https://github.com/youzan/vant/pull/12768) 提供\n- refactor(Coupon)：简化复选框用法，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12771](https://github.com/youzan/vant/pull/12771) 提供\n\n#### 新贡献者\n\n- [@bluesky335](https://github.com/bluesky335) 在 [#12761](https://github.com/youzan/vant/pull/12761) 中首次贡献\n\n### v4.8.9\n\n`2024-04-06`\n\n无效版本，请勿使用。\n\n### v4.8.8\n\n`2024-03-31`\n\n#### 新特性 🎉\n\n- feat(image-preview): 导出 image 插槽的 onLoad 和 style 属性，由[@chouchouji](https://github.com/chouchouji) 在 [#12740](https://github.com/youzan/vant/pull/12740) 提交\n- feat(AddressList): 为 click-item 添加事件参数，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12748](https://github.com/youzan/vant/pull/12748) 提交\n\n#### 故障修复 🐞\n\n- fix(floating-bubble): 当值更改时更新偏移量，由[@chouchouji](https://github.com/chouchouji) 在 [#12730](https://github.com/youzan/vant/pull/12730) 提交\n- fix(vant-cli): 支持以定义的选项命名，由[@wChenonly](https://github.com/wChenonly) 在 [#12734](https://github.com/youzan/vant/pull/12734) 提交\n- fix(PickerGroup): 使用 v-for 时能够正确渲染，由[@inottn](https://github.com/inottn) 在 [#12732](https://github.com/youzan/vant/pull/12732) 提交\n- fix(TextEllipsis): 当组件被激活时应重新计算省略状态，由[@inottn](https://github.com/inottn) 在 [#12741](https://github.com/youzan/vant/pull/12741) 提交\n\n#### 文档更新 📖\n\n- docs(button): 保持中英文文档一致，由[@chouchouji](https://github.com/chouchouji) 在 [#12708](https://github.com/youzan/vant/pull/12708) 提交\n- docs(cell): 更正 label 的类型，由[@chouchouji](https://github.com/chouchouji) 在 [#12721](https://github.com/youzan/vant/pull/12721) 提交\n- docs(ImagePreview): 添加图片插槽缩放指导，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12751](https://github.com/youzan/vant/pull/12751) 提交\n\n#### 其他更改\n\n- chore(deps): 更新 vue-router 依赖至 v4.3.0，由[@renovate](https://github.com/renovate) 在 [#12702](https://github.com/youzan/vant/pull/12702) 提交\n- chore(deps): 更新 esbuild 依赖至 ^0.20.0，由[@renovate](https://github.com/renovate) 在 [#12696](https://github.com/youzan/vant/pull/12696) 提交\n- chore(workflow): 让 renovate 提升 package.json 版本，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12714](https://github.com/youzan/vant/pull/12714) 提交\n- chore(deps): 更新 eslint 依赖至 ^8.57.0，由[@renovate](https://github.com/renovate) 在 [#12723](https://github.com/youzan/vant/pull/12723) 提交\n- chore(docs): 更新 vue3-vant-mobile 参考文档，由[@CharleeWa](https://github.com/CharleeWa) 在 [#12735](https://github.com/youzan/vant/pull/12735) 提交\n- chore(deps): 更新 commander 依赖至 ^11.1.0，由[@renovate](https://github.com/renovate) 在 [#12718](https://github.com/youzan/vant/pull/12718) 提交\n- chore(deps): 更新 enquirer 依赖至 v2.4.1，由[@renovate](https://github.com/renovate) 在 [#12695](https://github.com/youzan/vant/pull/12695) 提交\n- chore(deps): 更新 [@vue](https://github.com/vue)/test-utils 依赖至 ^2.4.5，由 @renovate 在 [#12716](https://github.com/youzan/vant/pull/12716) 提交\n- chore(deps): 版本升至 Rsbuild v0.5，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12747](https://github.com/youzan/vant/pull/12747) 提交\n- chore(deps): 更新 eslint-config-prettier 依赖至 ^9.1.0，由[@renovate](https://github.com/renovate) 在 [#12724](https://github.com/youzan/vant/pull/12724) 提交\n- chore(deps): 更新 fs-extra 依赖至 ^11.2.0，由[@renovate](https://github.com/renovate) 在 [#12745](https://github.com/youzan/vant/pull/12745) 提交\n- chore(deps): 更新 highlight.js 依赖至 ^11.9.0，由[@renovate](https://github.com/renovate) 在 [#12746](https://github.com/youzan/vant/pull/12746) 提交\n- chore(deps): 更新 fast-glob 依赖至 ^3.3.2，由[@renovate](https://github.com/renovate) 在 [#12731](https://github.com/youzan/vant/pull/12731) 提交\n- chore(deps): 更新 less 依赖至 ^4.2.0，由[@renovate](https://github.com/renovate) 在 [#12752](https://github.com/youzan/vant/pull/12752) 提交\n- chore(workflow): 让 renovate 整合补丁更新，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12754](https://github.com/youzan/vant/pull/12754) 提交\n\n#### 新贡献者\n\n- [@CharleeWa](https://github.com/CharleeWa) 在 [#12735](https://github.com/youzan/vant/pull/12735) 中首次贡献\n\n### v4.8.7\n\n`2024-03-18`\n\n#### 其他更改\n\n- 回退 \"chore(deps)：更新依赖 typescript 到 v5.4.2\" by [@renovate](https://github.com/renovate) in [#12700](https://github.com/youzan/vant/pull/12700)\n- 更新 `@vant/auto-import-resolver` homepage by [@yoyo837](https://github.com/yoyo837) in [#12704](https://github.com/youzan/vant/pull/12704)\n\n### v4.8.6\n\n`2024-03-17`\n\n#### 新功能 🎉\n\n- feat(ImagePreview)：添加 vertical 属性 [@suncohey](https://github.com/suncohey) 在 [#12660](https://github.com/youzan/vant/pull/12660)\n- feat(signature)：导出 clear 和 submit 方法 [@chouchouji](https://github.com/chouchouji) 在 [#12654](https://github.com/youzan/vant/pull/12654)\n- feat：支持 unplugin-auto-import 插件 [@DragonnZhang](https://github.com/DragonnZhang) 在 [#12679](https://github.com/youzan/vant/pull/12679)\n- feat(ActionSheet)：在 actions 数据中添加图标支持 [@wjw-gavin](https://github.com/wjw-gavin) 在 [#12671](https://github.com/youzan/vant/pull/12671)\n\n#### Bug 修复 🐞\n\n- fix(ImagePreview)：在当前图片被移动到边缘时，允许用户滑动到下一张图片 [@inottn](https://github.com/inottn) 在 [#12666](https://github.com/youzan/vant/pull/12666)\n- fix(ActionSheet)：图标类名 [@chenjiahan](https://github.com/chenjiahan) 在 [#12701](https://github.com/youzan/vant/pull/12701)\n\n#### 文档更新 📖\n\n- docs(ImagePreview)：添加 vertical 属性 [@chenjiahan](https://github.com/chenjiahan) 在 [#12663](https://github.com/youzan/vant/pull/12663)\n- docs：将 tab 的 'Before Change' 改为一个真正的异步函数 [@gxy5202](https://github.com/gxy5202) 在 [#12693](https://github.com/youzan/vant/pull/12693)\n\n#### 其他更改\n\n- chore(deps)：Rsbuild 升级到 0.4.12 [@chenjiahan](https://github.com/chenjiahan) 在 [#12665](https://github.com/youzan/vant/pull/12665)\n- chore(deps)：更新依赖 [@vue](https://github.com/vue)/test-utils 到 v2.4.5 @renovate 在 [#12681](https://github.com/youzan/vant/pull/12681)\n- chore(deps)：更新依赖 autoprefixer 到 v10.4.18 [@renovate](https://github.com/renovate) 在 [#12682](https://github.com/youzan/vant/pull/12682)\n- chore(workflow)：禁用依赖仪表板 [@chenjiahan](https://github.com/chenjiahan) 在 [#12686](https://github.com/youzan/vant/pull/12686)\n- chore(deps)：更新依赖 prettier 到 v3.2.5 [@renovate](https://github.com/renovate) 在 [#12685](https://github.com/youzan/vant/pull/12685)\n- chore(deps)：更新 Rsbuild 到 v0.4.15 [@renovate](https://github.com/renovate) 在 [#12688](https://github.com/youzan/vant/pull/12688)\n- chore(deps)：更新依赖 eslint 到 v8.57.0 [@renovate](https://github.com/renovate) 在 [#12697](https://github.com/youzan/vant/pull/12697)\n- chore(deps)：更新依赖 typescript 到 v5.4.2 [@renovate](https://github.com/renovate) 在 [#12700](https://github.com/youzan/vant/pull/12700)\n\n#### 新贡献者\n\n- [@chouchouji](https://github.com/chouchouji) 在 [#12654](https://github.com/youzan/vant/pull/12654) 做出了首次贡献\n- [@renovate](https://github.com/renovate) 在 [#12681](https://github.com/youzan/vant/pull/12681) 做出了首次贡献\n- [@gxy5202](https://github.com/gxy5202) 在 [#12693](https://github.com/youzan/vant/pull/12693) 做出了首次贡献\n- [@DragonnZhang](https://github.com/DragonnZhang) 在 [#12679](https://github.com/youzan/vant/pull/12679) 做出了首次贡献\n\n### v4.8.5\n\n`2024-02-25`\n\n#### 新功能 🎉\n\n- feat(Image): 新增 `crossorigin` 和 `referrerpolicy` 属性 by [@Jungzl](https://github.com/Jungzl) in [#12641](https://github.com/youzan/vant/pull/12641)\n\n#### Bug修复 🐞\n\n- fix(NumberKeyboard): 当主题为自定义时正确渲染删除插槽 by [@TPORL](https://github.com/TPORL) in [#12624](https://github.com/youzan/vant/pull/12624)\n\n#### 文档 📖\n\n- docs: 更新与 Picker 事件相关的参数文档 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12619](https://github.com/youzan/vant/pull/12619)\n- docs(DatePicker): 修复英文文档错误 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12620](https://github.com/youzan/vant/pull/12620)\n- docs(Uploader): 修复丢失双引号问题 by [@nemo-shen](https://github.com/nemo-shen) in [#12627](https://github.com/youzan/vant/pull/12627)\n- docs: 新增完整注册指南 by [@chenjiahan](https://github.com/chenjiahan) in [#12628](https://github.com/youzan/vant/pull/12628)\n- docs: 新增Rsbuild按需引入指南 by [@chenjiahan](https://github.com/chenjiahan) in [#12629](https://github.com/youzan/vant/pull/12629)\n\n#### 其他更改\n\n- Revert \"fix(DropdownMenu): 当传递对象字面量给title-class时修复递归更新问题 (#12614)\" by [@inottn](https://github.com/inottn) in [#12617](https://github.com/youzan/vant/pull/12617)\n- chore(deps): 提升 Rsbuild 至 v0.4 版本 by [@chenjiahan](https://github.com/chenjiahan) in [#12625](https://github.com/youzan/vant/pull/12625)\n- chore(workflow): 设置 renovate 配置 by [@chenjiahan](https://github.com/chenjiahan) in [#12626](https://github.com/youzan/vant/pull/12626)\n- test: 跳过图像 SSR 测试案例 by [@chenjiahan](https://github.com/chenjiahan) in [#12644](https://github.com/youzan/vant/pull/12644)\n\n#### 新贡献者\n\n- [@TPORL](https://github.com/TPORL) 在 [#12624](https://github.com/youzan/vant/pull/12624) 中首次贡献\n\n### v4.8.4\n\n`2024-02-03`\n\n#### 新功能 🎉\n\n- feat(Picker): 允许隐藏工具栏按钮 by [@chenjiahan](https://github.com/chenjiahan) in [#12599](https://github.com/youzan/vant/pull/12599)\n\n#### 问题修复 🐞\n\n- fix(Sticky): 初始黏贴位置 by [@nemo-shen](https://github.com/nemo-shen) in [#12601](https://github.com/youzan/vant/pull/12601)\n- fix(DropdownMenu): 修复传递对象字面量到 title-class 时的递归更新问题 by [@inottn](https://github.com/inottn) in [#12614](https://github.com/youzan/vant/pull/12614)\n\n#### 文档 📖\n\n- docs: 改进快速启动提示 by [@inottn](https://github.com/inottn) in [#12606](https://github.com/youzan/vant/pull/12606)\n\n#### 其他改变\n\n- chore(deps): 升级 Rsbuild 至 0.3.9 by [@chenjiahan](https://github.com/chenjiahan) in [#12600](https://github.com/youzan/vant/pull/12600)\n- chore: 避免工作流在 forked repo 上运行 by [@tolking](https://github.com/tolking) in [#12607](https://github.com/youzan/vant/pull/12607)\n- chore(workflow): 使用新的 M1 macOS 运行器 by [@chenjiahan](https://github.com/chenjiahan) in [#12615](https://github.com/youzan/vant/pull/12615)\n\n### v4.8.3\n\n`2024-01-20`\n\n#### 新功能 🎉\n\n- feat(Notify): 添加 teleport 属性，由 [@inottn](https://github.com/inottn) 贡献于 [#12556](https://github.com/youzan/vant/pull/12556)\n- feat(TextEllipsis): 添加 `action` 插槽，由 [@nemo-shen](https://github.com/nemo-shen) 贡献于 [#12560](https://github.com/youzan/vant/pull/12560)\n- feat(ImagePreview): 添加 close-on-click-image 属性，由 [@inottn](https://github.com/inottn) 贡献于 [#12566](https://github.com/youzan/vant/pull/12566)\n- feat(icons): 添加图标 `arrow-double-left` 和 `arrow-double-right`，由 [@nemo-shen](https://github.com/nemo-shen) 贡献于 [#12579](https://github.com/youzan/vant/pull/12579)\n- feat(Toast): 添加 z-index 属性，由 [@inottn](https://github.com/inottn) 贡献于 [#12587](https://github.com/youzan/vant/pull/12587)\n\n#### 问题修复 🐞\n\n- fix(Tab): 带 sticky 属性的标签页在切换后丢失 'fixed' 类名，由 [@nemo-shen](https://github.com/nemo-shen) 贡献于 [#12547](https://github.com/youzan/vant/pull/12547)\n- fix(Image): 之前未导出 ImagePosition 类型，由 [@Jungzl](https://github.com/Jungzl) 贡献于 [#12549](https://github.com/youzan/vant/pull/12549)\n- fix(Tabs): 将 van-border-radius-sm 更改为 van-radius-sm，由 [@edram](https://github.com/edram) 贡献于 [#12576](https://github.com/youzan/vant/pull/12576)\n\n#### 文档更新 📖\n\n- docs(Lazyload): 修复 preLoad 类型错误和拼写错误，由 [@RSS1102](https://github.com/RSS1102) 贡献于 [#12554](https://github.com/youzan/vant/pull/12554)\n- docs(home): 更新标题层级，由 [@inottn](https://github.com/inottn) 贡献于 [#12577](https://github.com/youzan/vant/pull/12577)\n\n#### 其他变更\n\n- test: 将 vitest 升级到 v1.1.3，由 [@inottn](https://github.com/inottn) 贡献于 [#12546](https://github.com/youzan/vant/pull/12546)\n- chore(deps): 将 Rsbuild 升级到 v0.3.2，由 [@chenjiahan](https://github.com/chenjiahan) 贡献于 [#12565](https://github.com/youzan/vant/pull/12565)\n- chore(deps): 将 vue 升级到 v3.4.13，由 [@inottn](https://github.com/inottn) 贡献于 [#12567](https://github.com/youzan/vant/pull/12567)\n- chore(deps): 将 vite 从 5.0.11 升级到 5.0.12，由 [@dependabot](https://github.com/dependabot) 贡献于 [#12588](https://github.com/youzan/vant/pull/12588)\n\n#### 新贡献者\n\n- [@edram](https://github.com/edram) 在 [#12576](https://github.com/youzan/vant/pull/12576) 中首次贡献\n\n### v4.8.2\n\n`2024-01-03`\n\n#### 新功能 🎉\n\n- feat: 支持从 shadow DOM 中链接 CSS [@yoyo837](https://github.com/yoyo837) 在 [#12526](https://github.com/youzan/vant/pull/12526)\n- feat(DropdownMenu): 新增 auto-locate 属性 [@inottn](https://github.com/inottn) 在 [#12251](https://github.com/youzan/vant/pull/12251)\n\n#### 性能提升 🚀\n\n- perf(CLI): 提升 markdown 编译性能 [@chenjiahan](https://github.com/chenjiahan) 在 [#12541](https://github.com/youzan/vant/pull/12541)\n\n#### Bug 修复 🐞\n\n- fix(ci): 在 Windows 上修复 eslint [@Jungzl](https://github.com/Jungzl) 在 [#12516](https://github.com/youzan/vant/pull/12516)\n- fix(ImagePreview): 在某些情况下双倍缩放和点击遮罩关闭可能无法工作 [@inottn](https://github.com/inottn) 在 [#12521](https://github.com/youzan/vant/pull/12521)\n\n#### 其他更改\n\n- chore(deps): 升级 Rsbuild 至 v0.2.8 [@chenjiahan](https://github.com/chenjiahan) 在 [#12519](https://github.com/youzan/vant/pull/12519)\n- chore(deps): 升级 Vue 至 3.4.0-beta.4 [@chenjiahan](https://github.com/chenjiahan) 在 [#12520](https://github.com/youzan/vant/pull/12520)\n- test: 升级 vitest 至 v1.1.0 [@chenjiahan](https://github.com/chenjiahan) 在 [#12522](https://github.com/youzan/vant/pull/12522)\n- chore(deps): 升级 vite 至 v5 [@chenjiahan](https://github.com/chenjiahan) 在 [#12523](https://github.com/youzan/vant/pull/12523)\n- chore(deps): 升级 esbuild 至 v0.19 [@chenjiahan](https://github.com/chenjiahan) 在 [#12524](https://github.com/youzan/vant/pull/12524)\n- chore: 锁定 Rspack 至 v0.4.3 以修复 CSS 问题 [@chenjiahan](https://github.com/chenjiahan) 在 [#12525](https://github.com/youzan/vant/pull/12525)\n- chore(workflow): 调整问题模板 [@chenjiahan](https://github.com/chenjiahan) 在 [#12528](https://github.com/youzan/vant/pull/12528)\n- chore(workflow): 更新 codesandbox 链接 [@chenjiahan](https://github.com/chenjiahan) 在 [#12529](https://github.com/youzan/vant/pull/12529)\n- chore: 更新 vitest 配置 [@inottn](https://github.com/inottn) 在 [#12530](https://github.com/youzan/vant/pull/12530)\n- chore(deps): 升级 Rsbuild 和 Vue [@chenjiahan](https://github.com/chenjiahan) 在 [#12532](https://github.com/youzan/vant/pull/12532)\n- chore(ImagePreview): 重用 isTap 引用 [@inottn](https://github.com/inottn) 在 [#12536](https://github.com/youzan/vant/pull/12536)\n- test(Toast): 减少测试运行时间 [@inottn](https://github.com/inottn) 在 [#12538](https://github.com/youzan/vant/pull/12538)\n- test(FloatingBubble): 减少测试运行时间 [@inottn](https://github.com/inottn) 在 [#12539](https://github.com/youzan/vant/pull/12539)\n- release: 发布 vant v4.8.2 [@chenjiahan](https://github.com/chenjiahan) 在 [#12542](https://github.com/youzan/vant/pull/12542)\n\n### v4.8.1\n\n`2023-12-17`\n\n#### 新功能 🎉\n\n- perf(TextEllipsis): 重用 windowWidth 以避免重复计算 by [@inottn](https://github.com/inottn) in [#12471](https://github.com/youzan/vant/pull/12471)\n- feat(TextEllipsis): 添加 toggle 实例方法 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12472](https://github.com/youzan/vant/pull/12472)\n- feat(cli): 升级 Rsbuild 到 v0.2.2 by [@chenjiahan](https://github.com/chenjiahan) in [#12502](https://github.com/youzan/vant/pull/12502)\n\n#### 性能优化 🚀\n\n- perf(cli): 禁用 source map 以加快编译速度 by [@chenjiahan](https://github.com/chenjiahan) in [#12484](https://github.com/youzan/vant/pull/12484)\n\n#### Bug 修复 🐞\n\n- fix(cli): 在模板中删除未使用的脚本 by [@chenjiahan](https://github.com/chenjiahan) in [#12482](https://github.com/youzan/vant/pull/12482)\n- fix(TextEllipsis): 修复 toggle 的缺少参数 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12483](https://github.com/youzan/vant/pull/12483)\n\n#### 文档 📖\n\n- docs(collapse): 修复缺少的引用标签 by [@RSS1102](https://github.com/RSS1102) in [#12460](https://github.com/youzan/vant/pull/12460)\n- docs(collapse): 修复翻译错误 by [@RSS1102](https://github.com/RSS1102) in [#12464](https://github.com/youzan/vant/pull/12464)\n- docs(dialog): 修复翻译错误并保持示例代码不变 by [@RSS1102](https://github.com/RSS1102) in [#12465](https://github.com/youzan/vant/pull/12465)\n- docs(TreeSelect): 修正变量名 by [@inottn](https://github.com/inottn) in [#12469](https://github.com/youzan/vant/pull/12469)\n- docs: 添加 Rsbuild 脚手架指南 by [@chenjiahan](https://github.com/chenjiahan) in [#12475](https://github.com/youzan/vant/pull/12475)\n- docs(image-preview): 补充 className 的使用方法 by [@RSS1102](https://github.com/RSS1102) in [#12491](https://github.com/youzan/vant/pull/12491)\n- docs(Quickstart): 更新 unplugin-vue-components 的使用方法 (#12499) by [@wChenonly](https://github.com/wChenonly) in [#12500](https://github.com/youzan/vant/pull/12500)\n\n#### 其他变更\n\n- chore(workflow): 为 PR 添加 perf 标签 by [@chenjiahan](https://github.com/chenjiahan) in [#12473](https://github.com/youzan/vant/pull/12473)\n- refactor(CLI): 整合 Rsbuild 以构建网站 by [@chenjiahan](https://github.com/chenjiahan) in [#12481](https://github.com/youzan/vant/pull/12481)\n- chore: 升级 Rspack 到 0.4.2 以修复中文路径问题 by [@chenjiahan](https://github.com/chenjiahan) in [#12496](https://github.com/youzan/vant/pull/12496)\n- chore(deps): 从 4.4.9 升级 vite 到 4.4.12 by [@dependabot](https://github.com/dependabot) in [#12493](https://github.com/youzan/vant/pull/12493)\n\n#### 新贡献者\n\n- [@RSS1102](https://github.com/RSS1102) 在 [#12460](https://github.com/youzan/vant/pull/12460) 中作出了他们的首次贡献\n\n### v4.8.0\n\n`2023-11-19`\n\n#### 新组件 🎉\n\n- 新增 Highlight 组件，由 [@wjw-gavin](https://github.com/wjw-gavin) 和 [@inottn](https://github.com/inottn) 贡献 ❤️ [#12434](https://github.com/youzan/vant/pull/12434)\n\n#### 新功能\n\n- feat(ImagePreview): 由 [@inottn](https://github.com/inottn) 在 [#12426](https://github.com/youzan/vant/pull/12426) 中增加 resetScale 方法\n- feat(Checker): 由 [@inottn](https://github.com/inottn) 在 [#12436](https://github.com/youzan/vant/pull/12436) 中向默认插槽添加 checked 和 disabled 参数\n- feat(Row): 由 [@cc-hearts](https://github.com/cc-hearts) 在 [#12439](https://github.com/youzan/vant/pull/12439) 中支持 gutter 垂直间距\n\n#### Bug 修复 🐞\n\n- fix(Calendar): 由 [@cc-hearts](https://github.com/cc-hearts) 在 [#12425](https://github.com/youzan/vant/pull/12425) 中支持副标题的响应式\n\n#### 文档 📖\n\n- docs(field): 由 [@Simon-He95](https://github.com/Simon-He95) 在 [#12429](https://github.com/youzan/vant/pull/12429) 中更新 props size\n- docs(cell): 由 [@Simon-He95](https://github.com/Simon-He95) 在 [#12427](https://github.com/youzan/vant/pull/12427) 中更新 props size\n- docs(Highlight): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12438](https://github.com/youzan/vant/pull/12438) 中添加版本提示\n- docs(Overlay): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12454](https://github.com/youzan/vant/pull/12454) 中添加设置 z-index 的演示\n- docs: 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12455](https://github.com/youzan/vant/pull/12455) 中将 Rsbuild 添加到快速入门指南\n\n#### 其他变更\n\n- chore(deps): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12414](https://github.com/youzan/vant/pull/12414) 中修复了 babel 和 postcss 的安全警报\n\n#### 新贡献者\n\n- [@cc-hearts](https://github.com/cc-hearts) 在 [#12425](https://github.com/youzan/vant/pull/12425) 中进行了首次贡献\n\n### v4.7.3\n\n`2023-10-29`\n\n#### 新功能 🎉\n\n- feat(locale): 添加阿拉伯语本地化支持 by [@mo9a7i](https://github.com/mo9a7i) in [#12381](https://github.com/youzan/vant/pull/12381)\n- feat(Form): 添加 required 属性并支持自动显示 by [@chenjiahan](https://github.com/chenjiahan) in [#12380](https://github.com/youzan/vant/pull/12380)\n- feat(auto-import-resolver): 添加模块选项 by [@chenjiahan](https://github.com/chenjiahan) in [#12383](https://github.com/youzan/vant/pull/12383)\n- style: 使用 overflow-wrap 替换 word-break by [@wjw-gavin](https://github.com/wjw-gavin) in [#12396](https://github.com/youzan/vant/pull/12396)\n- feat(Tab): 添加 show-header 属性 by [@yoyo837](https://github.com/yoyo837) in [#12394](https://github.com/youzan/vant/pull/12394)\n- style(Search): 在显示错误消息时使用一致的内边距 by [@chenjiahan](https://github.com/chenjiahan) in [#12409](https://github.com/youzan/vant/pull/12409)\n- feat(Signature): 公开 resize 方法 by [@inottn](https://github.com/inottn) in [#12405](https://github.com/youzan/vant/pull/12405)\n\n#### Bug 修复 🐞\n\n- fix(ConfigProvider): 导出丢失的主题变量 by [@inottn](https://github.com/inottn) in [#12371](https://github.com/youzan/vant/pull/12371)\n- fix(AddressEdit): 当 showArea 为 false 时区域字段验证错误 by [@zhousg](https://github.com/zhousg) in [#12393](https://github.com/youzan/vant/pull/12393)\n- fix([@vant](https://github.com/vant)/area-data): 添加导出类型 by @Alkaidcc in [#12397](https://github.com/youzan/vant/pull/12397)\n- fix(Search): 修复显示错误消息时的搜索样式问题 by [@johnsonwong666](https://github.com/johnsonwong666) in [#12385](https://github.com/youzan/vant/pull/12385)\n- fix(PickerGroup): 仅过滤 Comment vnode by [@zhousg](https://github.com/zhousg) in [#12402](https://github.com/youzan/vant/pull/12402)\n\n#### 文档 📖\n\n- docs(auto-import-resolver): 添加 importStyle 选项的文档 by [@chenjiahan](https://github.com/chenjiahan) in [#12382](https://github.com/youzan/vant/pull/12382)\n- docs(Tab): 保持文档和示例的一致性 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12395](https://github.com/youzan/vant/pull/12395)\n- chore: 将 vscode-common-intellisense 添加到社区生态系统中 by [@Simon-He95](https://github.com/Simon-He95) in [#12406](https://github.com/youzan/vant/pull/12406)\n- docs(Signature): 添加 resize 方法 by [@chenjiahan](https://github.com/chenjiahan) in [#12411](https://github.com/youzan/vant/pull/12411)\n- docs(progress): 移除过时的 resize 方法 by [@chenjiahan](https://github.com/chenjiahan) in [#12412](https://github.com/youzan/vant/pull/12412)\n\n#### 其他变更\n\n- chore(Field): 当 rules 包含 required 时，必填标签的 CSS 将生效 by [@morance](https://github.com/morance) in [#12376](https://github.com/youzan/vant/pull/12376)\n- test(ImagePreview): 修复不正确的 onClose 测试用例 by [@chenjiahan](https://github.com/chenjiahan) in [#12386](https://github.com/youzan/vant/pull/12386)\n- chore: forked 仓库，跳过 CI 运行 by [@yoyo837](https://github.com/yoyo837) in [#12410](https://github.com/youzan/vant/pull/12410)\n\n#### 新贡献者\n\n- [@morance](https://github.com/morance) 在 [#12376](https://github.com/youzan/vant/pull/12376) 中进行了首次贡献\n- [@mo9a7i](https://github.com/mo9a7i) 在 [#12381](https://github.com/youzan/vant/pull/12381) 中进行了首次贡献\n- [@Alkaidcc](https://github.com/Alkaidcc) 在 [#12397](https://github.com/youzan/vant/pull/12397) 中进行了首次贡献\n- [@johnsonwong666](https://github.com/johnsonwong666) 在 [#12385](https://github.com/youzan/vant/pull/12385) 中进行了首次贡献\n\n### v4.7.2\n\n`2023-10-15`\n\n#### 新功能 🎉\n\n- feat(Icon): 添加 font-family CSS 变量，由 [@JeremyFan](https://github.com/JeremyFan) 在 [#12354](https://github.com/youzan/vant/pull/12354) 中贡献\n- feat(ImagePreview): 添加 doubleScale 选项，由 [@coderXMin](https://github.com/coderXMin) 在 [#12360](https://github.com/youzan/vant/pull/12360) 中贡献\n\n#### Bug 修复 🐞\n\n- fix(Icons): 使图标与 Vant 2 的浏览器范围兼容，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12356](https://github.com/youzan/vant/pull/12356) 中贡献\n- fix(Uploader): 修复了多次重新上传只选择一个以及取消选择的问题，由 [@zhousg](https://github.com/zhousg) 在 [#12359](https://github.com/youzan/vant/pull/12359) 中贡献\n\n#### 其他更改\n\n- refactor(Signature): 避免在下一个 tick 中设置 canvas 的宽度和高度，由 [@inottn](https://github.com/inottn) 在 [#12347](https://github.com/youzan/vant/pull/12347) 中贡献\n- refactor(Signature): 使用 scale 方法提高清晰度，由 [@inottn](https://github.com/inottn) 在 [#12363](https://github.com/youzan/vant/pull/12363) 中贡献\n- chore(deps): 将 rslog 版本提升至 v1.1.0，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12364](https://github.com/youzan/vant/pull/12364) 中贡献\n- chore(cli): 合并欢迎日志，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12365](https://github.com/youzan/vant/pull/12365) 中贡献\n- chore(ImagePreview): 重命名 doubleScale 并添加测试用例，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12366](https://github.com/youzan/vant/pull/12366) 中贡献\n\n#### 新贡献者\n\n- [@coderXMin](https://github.com/coderXMin) 在 [#12360](https://github.com/youzan/vant/pull/12360) 中进行了他的首次贡献\n\n### v4.7.1\n\n`2023-10-06`\n\n#### 新功能 🎉\n\n- feat(FloatingPanel): 优化弹跳动画，由 [@zhousg](https://github.com/zhousg) 在 [#12317](https://github.com/youzan/vant/pull/12317) 中贡献\n- feat(cli): 使用 rslog，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12334](https://github.com/youzan/vant/pull/12334) 中贡献\n- style(Swipe): 声明 `transition-property` 样式，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12336](https://github.com/youzan/vant/pull/12336) 中贡献\n- feat(Notify): 为辅助函数添加 JSDoc，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12342](https://github.com/youzan/vant/pull/12342) 中贡献\n- feat(Dialog): 为辅助函数添加 JSDoc，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12343](https://github.com/youzan/vant/pull/12343) 中贡献\n- feat(Toast): 为辅助函数添加 JSDoc，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12344](https://github.com/youzan/vant/pull/12344) 中贡献\n\n#### Bug 修复 🐞\n\n- fix(Popup): 修复无法继承 scopedId 的问题，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12327](https://github.com/youzan/vant/pull/12327) 中贡献\n- fix(CellGroup): 修复带有标题时无法继承 scopeId 的问题，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12328](https://github.com/youzan/vant/pull/12328) 中贡献\n- fix(Popover): 修复无法继承 scopedId 的问题，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12329](https://github.com/youzan/vant/pull/12329) 中贡献\n\n#### 文档 📖\n\n- docs: 修复 Form 中的拼写错误，由 [@zcvvvbb](https://github.com/zcvvvbb) 在 [#12322](https://github.com/youzan/vant/pull/12322) 中贡献\n- docs: 添加更多生态项目，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12338](https://github.com/youzan/vant/pull/12338) 中贡献\n- docs(ImagePreview): 改进英文文档，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12345](https://github.com/youzan/vant/pull/12345) 中贡献\n- docs: 修复将 Georqia 错误拼写为 Georgia 的问题，由 [@mahnunchik](https://github.com/mahnunchik) 在 [#12331](https://github.com/youzan/vant/pull/12331) 中贡献\n\n#### 其他变更\n\n- chore(Swipe): 限制 transform 的小数位数，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12337](https://github.com/youzan/vant/pull/12337) 中贡献\n- chore: 升级 pnpm 到 v8.8.0，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12339](https://github.com/youzan/vant/pull/12339) 中贡献\n- chore(deps): 将 postcss 从 8.4.27 升级到 8.4.31，由 [@dependabot](https://github.com/dependabot) 在 [#12341](https://github.com/youzan/vant/pull/12341) 中贡献\n\n#### 新贡献者\n\n- [@zcvvvbb](https://github.com/zcvvvbb) 在 [#12322](https://github.com/youzan/vant/pull/12322) 中首次贡献\n- [@mahnunchik](https://github.com/mahnunchik) 在 [#12331](https://github.com/youzan/vant/pull/12331) 中首次贡献\n\n### v4.7.0\n\n`2023-09-24`\n\n#### 🍭 图标更新\n\n- 图标：添加一个实底的 `records` 图标\n- 图标：添加一个实底的 `contact` 图标\n- 图标：添加一个实底的 `discount` 图标\n- 图标：添加一个实底的 `completed` 图标\n- 图标：添加一个实底的 `description` 图标\n- 图标：添加一个实底的 `cash-back-record` 图标\n- 图标：添加新的 `user` 图标\n- 图标：添加新的 `notes` 图标\n- 图标：添加新的 `newspaper` 图标\n- 图标：添加新的 `list-switch` 图标\n- 图标：添加新的 `list-switching` 图标\n- 图标：将以前的 `records` 图标重命名为 `records-o`\n- 图标：将以前的 `contact` 图标重命名为 `contact-o`\n- 图标：将以前的 `discount` 图标重命名为 `discount-o`\n- 图标：将以前的 `completed` 图标重命名为 `completed-o`\n- 图标：将以前的 `description` 图标重命名为 `description-o`\n- 图标：将以前的 `cash-back-record` 图标重命名为 `cash-back-record-o`\n\n#### 新功能 🎉\n\n- feat(Calendar): 由 [@LadyChatterleyLover](https://github.com/LadyChatterleyLover) 在 [#12274](https://github.com/youzan/vant/pull/12274) 中添加了 `click-disabled-date` 事件\n- feat(Uploader): 由 [@xieyezi](https://github.com/xieyezi) 在 [#12280](https://github.com/youzan/vant/pull/12280) 中添加了 `--van-uploader-border-radius` CSS 变量\n- feat(SwipeCell): 由 [@nined9](https://github.com/nined9) 在 [#12309](https://github.com/youzan/vant/pull/12309) 中修复了运行 `beforeClose` 时点击外部触发关闭的问题\n- feat(AddressEdit): 由 [@zhousg](https://github.com/zhousg) 在 [#12310](https://github.com/youzan/vant/pull/12310) 中为姓名和电话输入添加了 `change` 事件\n- types(Dialog): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12316](https://github.com/youzan/vant/pull/12316) 中改进了 `showDialog` 的返回类型\n\n#### Bug 修复 🐞\n\n- fix(Picker): 由 [@lllomh](https://github.com/lllomh) 在 [#12300](https://github.com/youzan/vant/pull/12300) 中修复了弹出窗口的内容与中文版本不一致的问题\n- fix(Signature): 由 [@sywyyhykkk](https://github.com/sywyyhykkk) 在 [#12304](https://github.com/youzan/vant/pull/12304) 中修复了当设置了背景颜色时检查画布是否为空的问题\n- fix(FloatingPanel): 由 [@zhousg](https://github.com/zhousg) 在 [#12314](https://github.com/youzan/vant/pull/12314) 中修复了向下拖动导致页面移动的问题\n\n#### 文档 📖\n\n- docs(Picker): 由 [@MrXwq](https://github.com/MrXwq) 在 [#12275](https://github.com/youzan/vant/pull/12275) 中改进了 Picker 的文档\n- docs(Uploader): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12289](https://github.com/youzan/vant/pull/12289) 中添加了有关相机权限的常见问题解答\n\n#### 其他变更\n\n- test(Dialog): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12315](https://github.com/youzan/vant/pull/12315) 中启用了函数调用测试用例\n- fix(cli): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12292](https://github.com/youzan/vant/pull/12292) 中允许在发布时缺少构建脚本\n\n#### 新贡献者\n\n- [@nined9](https://github.com/nined9) 在 [#12309](https://github.com/youzan/vant/pull/12309) 中进行了首次贡献\n- [@sywyyhykkk](https://github.com/sywyyhykkk) 在 [#12304](https://github.com/youzan/vant/pull/12304) 中进行了首次贡献\n\n### v4.6.8\n\n`2023-09-10`\n\n#### 新功能 🎉\n\n- feat(Cell): 添加 CSS 变量用于自定义 Value 的字体大小 by [@inottn](https://github.com/inottn) in [#12260](https://github.com/youzan/vant/pull/12260)\n- feat(ConfigProvider): 补充 ConfigProviderThemeVars 的类型声明 by [@xieyezi](https://github.com/xieyezi) in [#12264](https://github.com/youzan/vant/pull/12264)\n- feat(NavBar): 添加 leftDisabled 和 rightDisabled 属性 by [@m-xlsea](https://github.com/m-xlsea) in [#12258](https://github.com/youzan/vant/pull/12258)\n\n#### Bug 修复 🐞\n\n- fix(ConfigProvider): 修复设置某些基础主题变量失败的问题 by [@chenjiahan](https://github.com/chenjiahan) in [#12272](https://github.com/youzan/vant/pull/12272)\n- fix(ConfigProvider): 修复 ConfigProviderThemeVars 的 fontSizeXs 命名错误 by [@xieyezi](https://github.com/xieyezi) in [#12267](https://github.com/youzan/vant/pull/12267)\n\n#### 文档 📖\n\n- docs(NavBar): 添加禁用按钮示例 by [@chenjiahan](https://github.com/chenjiahan) in [#12270](https://github.com/youzan/vant/pull/12270)\n\n#### 其他变更\n\n- chore(CI): 启用单一提交以减小仓库大小 by [@chenjiahan](https://github.com/chenjiahan) in [#12268](https://github.com/youzan/vant/pull/12268)\n- chore(CI): 升级 actions 版本 by [@chenjiahan](https://github.com/chenjiahan) in [#12269](https://github.com/youzan/vant/pull/12269)\n- chore: 将 Axure 文件移动到 vant-assets 仓库 by [@chenjiahan](https://github.com/chenjiahan) in [#12271](https://github.com/youzan/vant/pull/12271)\n\n#### 新贡献者\n\n- [@xieyezi](https://github.com/xieyezi) 在 [#12264](https://github.com/youzan/vant/pull/12264) 中首次贡献\n- [@m-xlsea](https://github.com/m-xlsea) 在 [#12258](https://github.com/youzan/vant/pull/12258) 中首次贡献\n\n### v4.6.7\n\n`2023-09-04`\n\n#### 新功能 🎉\n\n- feat(vant-use): 添加 useRaf，由 [@Simon-He95](https://github.com/Simon-He95) 在 [#12211](https://github.com/youzan/vant/pull/12211) 中贡献\n- feat(Checkbox): 添加不确定状态，由 [@wjw-gavin](https://github.com/wjw-gavin) 在 [#12216](https://github.com/youzan/vant/pull/12216) 中贡献\n- feat(auto-import-resolver): 添加 auto-import-resolver 包，由 [@wChenonly](https://github.com/wChenonly) 在 [#12227](https://github.com/youzan/vant/pull/12227) 中贡献\n- feat(ConfigProvider): 添加 theme-vars-scope 属性以启用根作用域影响，由 [@zhousg](https://github.com/zhousg) 在 [#12240](https://github.com/youzan/vant/pull/12240) 中贡献\n\n#### 问题修复 🐞\n\n- fix(auto-import-resolver): 修复 TS 项目中的类型不匹配问题，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12243](https://github.com/youzan/vant/pull/12243) 中贡献\n- fix(eslint): 使用 ignorePatterns 替代 .eslintignore，由 [@MrXwq](https://github.com/MrXwq) 在 [#12237](https://github.com/youzan/vant/pull/12237) 中贡献\n\n#### 文档 📖\n\n- docs: 改善 back-top 的菜单位置，由 [@wjw-gavin](https://github.com/wjw-gavin) 在 [#12223](https://github.com/youzan/vant/pull/12223) 中贡献\n- docs: 改善 use-raf 文档，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12224](https://github.com/youzan/vant/pull/12224) 中贡献\n- docs: 在快速入门指南中添加 Vite 和 Nuxt 的指引，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12239](https://github.com/youzan/vant/pull/12239) 中贡献\n- docs(auto-import-resolver): 更新 README 和文件夹名称，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12241](https://github.com/youzan/vant/pull/12241) 中贡献\n- docs(auto-import-resolver): 添加 Rspack 的使用方法，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12242](https://github.com/youzan/vant/pull/12242) 中贡献\n- docs(ConfigProvider): 更新修改 CSS 变量的指南，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12246](https://github.com/youzan/vant/pull/12246) 中贡献\n\n#### 其他变更\n\n- test: 将测试运行器迁移到 vitest，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12206](https://github.com/youzan/vant/pull/12206) 中贡献\n- chore(CI): 修复 codecov 报告器，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12210](https://github.com/youzan/vant/pull/12210) 中贡献\n- chore: 对内部依赖使用 workspace 协议，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12225](https://github.com/youzan/vant/pull/12225) 中贡献\n- test: 修复 vitest 的 canvas 模拟，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12226](https://github.com/youzan/vant/pull/12226) 中贡献\n\n### v4.6.6\n\n`2023-08-20`\n\n#### 新功能 🎉\n\n- feat(DropdownItem): 支持在 options 的 value 中传入布尔值 by [@baboon-king](https://github.com/baboon-king) in [#12208](https://github.com/youzan/vant/pull/12208)\n\n#### Bug 修复 🐞\n\n- fix(FloatingBubble): 拖动时不应触发子元素的点击事件 by [@zhousg](https://github.com/zhousg) in [#12201](https://github.com/youzan/vant/pull/12201)\n- fix(FloatingBubble): 隐藏时不更新状态 by [@zhousg](https://github.com/zhousg) in [#12207](https://github.com/youzan/vant/pull/12207)\n\n#### 其他变更\n\n- chore(CI): 更新 issue 评论消息的内容 by [@chenjiahan](https://github.com/chenjiahan) in [#12204](https://github.com/youzan/vant/pull/12204)\n- refactor(cli): 移除 execa 依赖 by [@chenjiahan](https://github.com/chenjiahan) in [#12205](https://github.com/youzan/vant/pull/12205)\n\n### v4.6.5\n\n`2023-08-16`\n\n#### 新功能 🎉\n\n- feat(DropdownMenu): 添加 swipe-threshold 属性 by [@inottn](https://github.com/inottn) in [#12117](https://github.com/youzan/vant/pull/12117)\n- types(Toast): 添加 `ToastWrapperInstance` 导出 by [@long-woo](https://github.com/long-woo) in [#12166](https://github.com/youzan/vant/pull/12166)\n- feat(FloatingBubble): 使用组件属性 by [@zhousg](https://github.com/zhousg) in [#12171](https://github.com/youzan/vant/pull/12171)\n\n#### Bug 修复 🐞\n\n- fix(FloatingPanel): 修复由滚动条和面板移动引起的延迟问题 #12146 by [@yue1123](https://github.com/yue1123) in [#12161](https://github.com/youzan/vant/pull/12161)\n- fix(FloatingPanel): 将 lock-scroll 的默认值更改为 false by [@inottn](https://github.com/inottn) in [#12162](https://github.com/youzan/vant/pull/12162)\n- fix(cli): 在 markdown 中应该转义花括号 by [@chenjiahan](https://github.com/chenjiahan) in [#12188](https://github.com/youzan/vant/pull/12188)\n\n#### 文档 📖\n\n- docs: 添加 bun 包管理器的说明 by [@colinhacks](https://github.com/colinhacks) in [#12182](https://github.com/youzan/vant/pull/12182)\n\n#### 其他变更\n\n- chore: 添加脚本以格式化 GitHub 更新日志 by [@chenjiahan](https://github.com/chenjiahan) in [#12158](https://github.com/youzan/vant/pull/12158)\n- chore(FloatingPanel): 改进代码风格 by [@chenjiahan](https://github.com/chenjiahan) in [#12175](https://github.com/youzan/vant/pull/12175)\n- refactor(cli): 重写 vite-plugin-md by [@chenjiahan](https://github.com/chenjiahan) in [#12179](https://github.com/youzan/vant/pull/12179)\n- chore(deps): 升级 markdown-it 到 v13 和 commander 到 v11 by [@chenjiahan](https://github.com/chenjiahan) in [#12180](https://github.com/youzan/vant/pull/12180)\n- chore(CI): 不在拉取请求中运行 codeql by [@chenjiahan](https://github.com/chenjiahan) in [#12181](https://github.com/youzan/vant/pull/12181)\n\n#### 新贡献者\n\n- [@long-woo](https://github.com/long-woo) 在 [#12166](https://github.com/youzan/vant/pull/12166) 中进行了首次贡献\n- [@yue1123](https://github.com/yue1123) 在 [#12161](https://github.com/youzan/vant/pull/12161) 中进行了首次贡献\n- [@colinhacks](https://github.com/colinhacks) 在 [#12182](https://github.com/youzan/vant/pull/12182) 中进行了首次贡献\n- [@xincheng-1999](https://github.com/xincheng-1999) 在 [#12189](https://github.com/youzan/vant/pull/12189) 中进行了首次贡献\n\n### v4.6.4\n\n`2023-08-06`\n\n#### 新功能 🎉\n\n- feat(area-data): 更新芜湖的县区数据，由 [@nivin-studio](https://github.com/nivin-studio) 在 [#12122](https://github.com/youzan/vant/pull/12122) 中贡献\n- feat(Locale): 添加塞尔维亚语到国际化，由 [@RogerZXY](https://github.com/RogerZXY) 在 [#12145](https://github.com/youzan/vant/pull/12145) 中贡献\n- feat(ImagePreview): 添加 closeOnClickOverlay 选项，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12153](https://github.com/youzan/vant/pull/12153) 中贡献\n- feat(List): 添加 scroller 属性，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12154](https://github.com/youzan/vant/pull/12154) 中贡献\n- feat(FloatingPanel): 添加 lock-scroll 属性，由 [@inottn](https://github.com/inottn) 在 [#12157](https://github.com/youzan/vant/pull/12157) 中贡献\n\n#### Bug 修复 🐞\n\n- fix(TextEllipsis): 修复省略号重复出现的问题，由 [@muzaisimao](https://github.com/muzaisimao) 在 [#12120](https://github.com/youzan/vant/pull/12120) 中贡献\n- fix(TextEllipsis): 修复计算省略号位置的逻辑问题，由 [@inottn](https://github.com/inottn) 在 [#12137](https://github.com/youzan/vant/pull/12137) 中贡献\n\n#### 文档 📖\n\n- docs: 将 PR 标题格式移至贡献指南，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12114](https://github.com/youzan/vant/pull/12114) 中贡献\n- docs(Radio): 添加对 css 变量 '--van-radio-dot-size' 的文档描述，由 [@wjw-gavin](https://github.com/wjw-gavin) 在 [#12152](https://github.com/youzan/vant/pull/12152) 中贡献\n\n#### 其他更改\n\n- chore: 避免 prettier 破坏 hbs 模板 by [@chenjiahan](https://github.com/chenjiahan) in [#12113](https://github.com/youzan/vant/pull/12113)\n- chore(deps): 升级 release-it v16 by [@chenjiahan](https://github.com/chenjiahan) in [#12115](https://github.com/youzan/vant/pull/12115)\n- feat(get-deps): 将 import('../foo.vue') 替换为 import('../foo.mjs') by [@suncohey](https://github.com/suncohey) in [#12046](https://github.com/youzan/vant/pull/12046)\n- refactor(cli): 重写 release 命令 by [@chenjiahan](https://github.com/chenjiahan) in [#12133](https://github.com/youzan/vant/pull/12133)\n- feat(cli): 为 release 命令添加 gitTag 选项支持 by [@chenjiahan](https://github.com/chenjiahan) in [#12134](https://github.com/youzan/vant/pull/12134)\n- chore(CI): 通过 GitHub 自动生成变更日志 by [@chenjiahan](https://github.com/chenjiahan) in [#12135](https://github.com/youzan/vant/pull/12135)\n- chore: 添加 PR 标签动作 by [@chenjiahan](https://github.com/chenjiahan) in [#12136](https://github.com/youzan/vant/pull/12136)\n- chore(TextEllipsis): 重用 actionText 变量 by [@chenjiahan](https://github.com/chenjiahan) in [#12138](https://github.com/youzan/vant/pull/12138)\n- refactor(cli): 使用 GitHub 变更日志替代 conventional-changelog by [@chenjiahan](https://github.com/chenjiahan) in [#12139](https://github.com/youzan/vant/pull/12139)\n- chore: 添加塞尔维亚文档并重命名文件 by [@chenjiahan](https://github.com/chenjiahan) in [#12150](https://github.com/youzan/vant/pull/12150)\n- chore(eslint-config): 升级依赖项 by [@chenjiahan](https://github.com/chenjiahan) in [#12155](https://github.com/youzan/vant/pull/12155)\n\n#### 新贡献者\n\n- [@muzaisimao](https://github.com/muzaisimao) 在 [#12120](https://github.com/youzan/vant/pull/12120) 中首次贡献\n- [@suncohey](https://github.com/suncohey) 在 [#12046](https://github.com/youzan/vant/pull/12046) 中首次贡献\n- [@nivin-studio](https://github.com/nivin-studio) 在 [#12122](https://github.com/youzan/vant/pull/12122) 中首次贡献\n- [@RogerZXY](https://github.com/RogerZXY) 在 [#12145](https://github.com/youzan/vant/pull/12145) 中首次贡献\n\n### [v4.6.3](https://github.com/vant-ui/vant/compare/v4.6.2...v4.6.3)\n\n`2023-07-23`\n\n**Feature**\n\n- AddressList: 新增 show-add-button 属性 [#12090](https://github.com/vant-ui/vant/issues/12090)\n- CheckboxGroup: 新增 shape 属性 [#12092](https://github.com/vant-ui/vant/issues/12092)\n- RadioGroup: 新增 shape 属性 [#12092](https://github.com/vant-ui/vant/issues/12092)\n\n**Bug Fixes**\n\n- FloatingBubble: 修复全局组件类型定义错误 [#12101](https://github.com/vant-ui/vant/issues/12101)\n- Tab: 修复导入路径错误 [#12103](https://github.com/vant-ui/vant/issues/12103)\n\n### [v4.6.2](https://github.com/vant-ui/vant/compare/v4.6.1...v4.6.2)\n\n`2023-07-09`\n\n**Feature**\n\n- Field: 新增 autocapitalize，autocorrect 和 spellcheck 属性 [#12065](https://github.com/vant-ui/vant/issues/12065)\n- FloatingBubble: 新增 CSS 变量用于自定义圆角 [#12070](https://github.com/vant-ui/vant/issues/12070)\n- Radio: 新增 dot 属性 [#12057](https://github.com/vant-ui/vant/issues/12057)\n- TextEllipsis: 新增 position 属性，由 [cxybd](https://github.com/cxybd) 贡献 ❤️ [#12058](https://github.com/vant-ui/vant/issues/12058)\n\n**Bug Fixes**\n\n- FloatingBubble: 修复边界错误 [#12067](https://github.com/vant-ui/vant/issues/12067)\n- Pagination: 修复边框渲染错误 [#12062](https://github.com/vant-ui/vant/issues/12062)\n\n### [v4.6.1](https://github.com/vant-ui/vant/compare/v4.6.0...v4.6.1)\n\n`2023-07-02`\n\n**Feature**\n\n- ellipsis: 改进中文、日文或韩文文本的换行符 [#12030](https://github.com/vant-ui/vant/issues/12030)\n\n**Bug Fixes**\n\n- FloatingBubble: 修复 floatingBubbleBackground 类型问题 [#12029](https://github.com/vant-ui/vant/issues/12029)\n- SubmitBar: 移除多余的 theme 类型定义 [#12031](https://github.com/vant-ui/vant/issues/12031)\n- Uploader: 修复 base64 图片预览导致的性能问题 [#12051](https://github.com/vant-ui/vant/issues/12051)\n\n### [v4.6.0](https://github.com/vant-ui/vant/compare/v4.5.0...v4.6.0)\n\n`2023-06-24`\n\n**New Component**\n\n- 新增 FloatingBubble 组件，由 [@zhousg](https://github.com/zhousg) 贡献 ❤️ [#11880](https://github.com/vant-ui/vant/issues/11880)\n- 新增 RollingText 组件，由 [@cunzaizhuyi](https://github.com/cunzaizhuyi) 贡献 ❤️ [#11911](https://github.com/vant-ui/vant/issues/11911)\n\n**Feature**\n\n- Rate: 新增 clearable 属性 [#11969](https://github.com/vant-ui/vant/issues/11969)\n\n**Bug Fixes**\n\n- DropdownMenu: 修复缺少类型导出的问题 [#11979](https://github.com/vant-ui/vant/issues/11979)\n- Field: 修复使用 input 插槽时设置了多余的 label `for` 属性的问题 [#11966](https://github.com/vant-ui/vant/issues/11966)\n- FloatingPanel: 修复缺少 floatingPanelProps 类型导出的问题 [#11978](https://github.com/vant-ui/vant/issues/11978)\n- FloatingPanel: 修复 passive event warning [#11992](https://github.com/vant-ui/vant/issues/11992)\n- Picker: 修复多列同时滚动时的问题 [#11945](https://github.com/vant-ui/vant/issues/11945)\n- Rate: 修复半星拖动时断触的问题 [#12002](https://github.com/vant-ui/vant/issues/12002)\n\n### [v4.5.0](https://github.com/vant-ui/vant/compare/v4.4.1...v4.5.0)\n\n`2023-06-11`\n\n**New Component**\n\n- 新增 FloatingPanel 组件，由 [@zhousg](https://github.com/zhousg) 贡献 ❤️ [#11832](https://github.com/vant-ui/vant/issues/11832)\n\n**Feature**\n\n- AddressList: 新增 right-icon 属性 [#11959](https://github.com/vant-ui/vant/issues/11959)\n- DropdownMenu: 新增 close 方法 [#11921](https://github.com/vant-ui/vant/issues/11921)\n- Slider: 新增 button 插槽的 dragging 参数 [#11946](https://github.com/vant-ui/vant/issues/11946)\n- TimePicker: 新增 min-time 和 max-time 属性 [#11887](https://github.com/vant-ui/vant/issues/11887)\n- TimePicker: 新增 filter 属性的 values 参数 [#11916](https://github.com/vant-ui/vant/issues/11916)\n- CI: 增加 issue helper [#11963](https://github.com/vant-ui/vant/issues/11963)\n\n**Bug Fixes**\n\n- BackTop: 修复 deactivated 时未隐藏的问题 [#11938](https://github.com/vant-ui/vant/issues/11938)\n\n### [v4.4.1](https://github.com/vant-ui/vant/compare/v4.4.0...v4.4.1)\n\n`2023-05-28`\n\n**Feature**\n\n- Popover: 新增 actions-direction 属性 [#11888](https://github.com/vant-ui/vant/issues/11888)\n\n**Bug Fixes**\n\n- ImagePreview: 修复初始化时可能有过渡动画的问题 [#11897](https://github.com/vant-ui/vant/issues/11897)\n- Popup: 修复 duration 为 0 时 opened 事件触发两次的问题 [#11902](https://github.com/vant-ui/vant/issues/11902)\n- Slider: 修复点击可能无法触发 change 事件的问题 [#11904](https://github.com/vant-ui/vant/issues/11904)\n- Tab: 修复 title-class 和 title-style 属性可能导致死循环的问题 [#11898](https://github.com/vant-ui/vant/issues/11898)\n\n### [v4.4.0](https://github.com/vant-ui/vant/compare/v4.3.2...v4.4.0)\n\n`2023-05-21`\n\n**New Component**\n\n- 新增 Barrage 组件，由 [@zhousg](https://github.com/zhousg) 贡献 ❤️ [#11760](https://github.com/vant-ui/vant/issues/11760)\n\n**Feature**\n\n- Cascader: 切换 Tab 时自动滚动到选中项 [#11869](https://github.com/vant-ui/vant/issues/11869)\n- Divider: 新增 vertical 属性 [#11883](https://github.com/vant-ui/vant/issues/11883)\n- Document: 支持点击标题时自动调整右侧示例到相应的位置 [#11879](https://github.com/vant-ui/vant/issues/11879)\n- ImagePreview: 优化长图的默认展示效果 [#11857](https://github.com/vant-ui/vant/issues/11857)\n- Signature: 优化签名的清晰度 [#11835](https://github.com/vant-ui/vant/issues/11835)\n- Uploader: 新增 reupload prop [#11854](https://github.com/vant-ui/vant/issues/11854)\n\n**Bug Fixes**\n\n- AddressEdit: 修复多余的底部边框 [#11872](https://github.com/vant-ui/vant/issues/11872)\n- Area: 修复多余的 allow-html 和 show-toolbar props 定义 [#11871](https://github.com/vant-ui/vant/issues/11871)\n- BackTop: 默认使用最近的父级滚动元素作为 target [#11858](https://github.com/vant-ui/vant/issues/11858)\n- ContactList: 优化样式和图标大小 [#11873](https://github.com/vant-ui/vant/issues/11873)\n- DatePicker: 修复外部设置 modelValue 时展示错误的问题 [#11839](https://github.com/vant-ui/vant/issues/11839)\n- Dialog: 修复点击按钮时圆角错误的问题 [#11863](https://github.com/vant-ui/vant/issues/11863)\n\n### [v4.3.2](https://github.com/vant-ui/vant/compare/v4.3.1...v4.3.2)\n\n`2023-05-14`\n\n**Feature**\n\n- ImagePreview: 支持基于手指位置进行缩放 [#11848](https://github.com/vant-ui/vant/issues/11848)\n- PickerGroup: 支持控制当前 Tab 的位置 [#11771](https://github.com/vant-ui/vant/issues/11771)\n- Checkbox: 支持在达到最大选择数量时自动禁用其他选项 [#11814](https://github.com/vant-ui/vant/issues/11814)\n\n**Bug Fixes**\n\n- Filed: 修复点击 label 会触发两次 click 事件的问题 [#11838](https://github.com/vant-ui/vant/issues/11838)\n- Steps: 修复只有一个 Step 时样式错误的问题 [#11822](https://github.com/vant-ui/vant/issues/11822)\n- SubmitBar: 移除多余的 CSS 变量 [#11845](https://github.com/vant-ui/vant/issues/11845)\n- Tab: 修复下划线动画可能错误的问题 [#11819](https://github.com/vant-ui/vant/issues/11819)\n\n### [v4.\n\n<!-- [TRUNCATED AT 50KB] -->","packages/vant/docs/markdown/contribution.en-US.md":"# Contribution Guide\n\n### Introduction\n\nThank you for using Vant.\n\nBelow are the guidelines for submitting feedback or code to Vant. Please take a few minutes to read the following before submitting an issue or PR to Vant.\n\n### Issue Specification\n\n- If you encountered a problem, please first confirm whether the problem has been recorded in the issue or has been fixed.\n- When submitting an issue, please describe the problem you encountered in a short language, and add the environment and reproduction steps when the problem occurs.\n\n## Participate in development\n\n### Local development\n\nBefore developing locally, please make sure that [Node.js >= 18](https://nodejs.org) is installed in your development environment.\n\nFollow the steps below to develop Vant components locally.\n\n```bash\n# Clone repository\ngit clone git@github.com:vant-ui/vant.git\n\n# Enable pnpm package manager\ncorepack enable\n\n# Install dependencies\npnpm i\n\n# Start development\npnpm dev\n```\n\nDifferent branches of the repository correspond to different Vant versions, please switch to the appropriate branch for development:\n\n- The main branch corresponds to the Vant 4 version, suitable for Vue 3\n- 3.x branch corresponds to Vant 3 version, suitable for Vue 3\n- 2.x branch corresponds to Vant 2 version, suitable for Vue 2\n\n### Directory Structure\n\nVant uses monorepo for code management, and all subpackages are in the `packages/vant` directory:\n\n```\nroot\n└─ packages\n   ├─ vant        # Component library\n   ├─ vant-cli    # Scaffolding\n   ├─ vant-icons  # Icon library\n   ├─ vant-use    # Composition API\n   └─ ....        # Other npm packages\n```\n\nAmong them, the `packages/vant` directory is the core code of the component library:\n\n```\nvant\n├─ docs             # Documentation\n├─ src              # Component source code\n├─ test             # Test utils\n└─ vant.config.mjs  # Document configuration\n```\n\nThe `packages/vant/src` directory contains the source code of each component, and each folder corresponds to a component:\n\n```\nsrc\n└─ button\n   ├─ demo             # Demo code\n   ├─ test             # Unit test\n   ├─ Component.tsx    # Component\n   ├─ index.ts         # Component entry\n   ├─ index.less       # Styles\n   ├─ README.md        # English document\n   └─ README.zh-CN.md  # Chinese document\n```\n\n### Code Specification\n\nWhen writing code, please note:\n\n- Make sure the code can pass the repository's lint check (`pnpm lint`).\n- Format the code with Rstack CLI (`pnpm exec rs fmt`).\n- Make sure you don't use incompatible APIs like `async`, `await`.\n\n## Submitting a Pull Request\n\n### Reference Guide\n\nIf this is your first time submitting a pull request on GitHub, you can learn from the following article:\n\n- [First participation in open source](https://github.com/firstcontributions/first-contributions/blob/main/docs/translations/README.en-pirate.md)\n\n### Pull Request Specification\n\nWhen submitting a Pull Request, please note:\n\n- Keep your PRs small enough that a PR only addresses a single issue or adds a single feature.\n- When adding new components or modifying original components, remember to add or modify the corresponding unit tests to ensure the stability of the code.\n- Please include an appropriate description in the PR, and link related issues.\n\n### Pull Request Process\n\n1. Fork the main repository. If you have already forked, please synchronize the latest code from the main repository.\n2. Create a new branch based on the main branch of the repository after the fork, such as `feature/button_color`.\n3. Develop on the new branch. When development is complete, submit a pull request to the main branch of the main repository.\n4. The pull request is merged into the main repository after the review is approved.\n5. Wait for Vant to release a new version, usually once a week.\n\n### Pull Request Title Format\n\nThe title of the Pull Request should be in the following format:\n\n```bash\ntype(ComponentName?)：commit message\n```\n\nExample：\n\n- docs: fix typo in quickstart\n- build: optimize build speed\n- fix(Button): incorrect style\n- feat(Button): add color prop\n\nAllowed Types:\n\n- fix\n- feat\n- docs\n- perf\n- test\n- types\n- style\n- build\n- chore\n- release\n- refactor\n- breaking change\n- revert:\n\n### Synchronize the latest code\n\nBefore submitting a Pull Request, please synchronize the latest code of the main repository according to the following process:\n\n```bash\n# Add the main repository to remote\ngit remote add upstream git@github.com:vant-ui/vant.git\n\n# Pull the latest code from the main repository\ngit fetch upstream\n\n# Switch to the main branch\ngit checkout main\n\n# Merge the code from the main repository\ngit merge upstream/main\n```\n","packages/vant/docs/markdown/contribution.zh-CN.md":"# 贡献指南\n\n### 介绍\n\n感谢你使用 Vant。\n\n以下是关于向 Vant 提交反馈或代码的指南。在向 Vant 提交 issue 或者 PR 之前，请先花几分钟时间阅读以下内容。\n\n### Issue 规范\n\n- 遇到问题时，请先确认这个问题是否已经在 issue 中有记录或者已被修复。\n- 提 issue 时，请用简短的语言描述遇到的问题，并添加出现问题时的环境和复现步骤。\n\n## 参与开发\n\n### 本地开发\n\n在进行本地开发前，请先确保你的开发环境中安装了 [Node.js >= 18](https://nodejs.org)。\n\n按照下面的步骤操作，即可在本地开发 Vant 组件。\n\n```bash\n# 克隆仓库\ngit clone git@github.com:vant-ui/vant.git\n\n# 启用 pnpm 包管理器\ncorepack enable\n\n# 安装依赖\npnpm i\n\n# 进入开发模式，浏览器访问 localhost\npnpm dev\n```\n\n仓库的不同分支对应不同的 Vant 版本，请切换到对应分支进行开发：\n\n- main 分支对应 Vant 4 版本，适用于 Vue 3\n- 3.x 分支对应 Vant 3 版本 ，适用于 Vue 3\n- 2.x 分支对应 Vant 2 版本，适用于 Vue 2\n\n### 目录结构\n\nVant 采用 monorepo 进行代码管理，所有子包在 `packages` 目录下:\n\n```\nroot\n└─ packages\n   ├─ vant        # 组件库\n   ├─ vant-cli    # 脚手架\n   ├─ vant-icons  # 图标库\n   ├─ vant-use    # Composition API\n   └─ ....        # 其他周边 npm 包\n```\n\n其中，`packages/vant` 目录为组件库的核心代码：\n\n```\nvant\n├─ docs             # 文档\n├─ src              # 组件源代码\n├─ test             # 单测工具类\n└─ vant.config.mjs  # 文档网站配置\n```\n\n`packages/vant/src` 目录包含各个组件的源码，每个文件夹对应一个组件：\n\n```\nsrc\n└─ button\n   ├─ demo             # 示例代码\n   ├─ test             # 单元测试\n   ├─ Component.tsx    # 组件\n   ├─ index.ts         # 组件入口\n   ├─ index.less       # 样式\n   ├─ README.md        # 英文文档\n   └─ README.zh-CN.md  # 中文文档\n```\n\n### 代码规范\n\n在编写代码时，请注意：\n\n- 确保代码可以通过仓库的 lint 校验（`pnpm lint`）。\n- 使用 Rstack CLI（`pnpm exec rs fmt`）规范化代码格式。\n- 确保没有使用超出兼容性范围的 API，比如 `async`, `await`.\n\n## 提交 Pull Request\n\n### 参考指南\n\n如果你是第一次在 GitHub 上提 Pull Request ，可以阅读下面这两篇文章来学习：\n\n- [第一次参与开源](https://github.com/firstcontributions/first-contributions/blob/main/docs/translations/README.zh-cn.md)\n- [如何优雅地在 GitHub 上贡献代码](https://segmentfault.com/a/1190000000736629)\n\n### Pull Request 规范\n\n在提交 Pull Request 时，请注意：\n\n- 保持你的 PR 足够小，一个 PR 只解决单个问题或添加单个功能。\n- 当新增组件或者修改原有组件时，记得增加或者修改对应的单元测试，保证代码的稳定。\n- 在 PR 中请添加合适的描述，并关联相关的 Issue。\n\n### Pull Request 流程\n\n1. fork 主仓库，如果已经 fork 过，请同步主仓库的最新代码。\n2. 基于 fork 后仓库的 main 分支新建一个分支，比如 `feature/button_color`。\n3. 在新分支上进行开发，开发完成后，提 Pull Request 到主仓库的 main 分支。\n4. Pull Request 会在 Review 通过后被合并到主仓库。\n5. 等待 Vant 发布新版本，一般是每周一次。\n\n### Pull Request 标题格式\n\nPull Request 的标题应该遵循以下格式：\n\n```bash\ntype(ComponentName?)：commit message\n```\n\n示例：\n\n- docs: fix typo in quickstart\n- build: optimize build speed\n- fix(Button): incorrect style\n- feat(Button): add color prop\n\n可选的类型：\n\n- fix\n- feat\n- docs\n- perf\n- test\n- types\n- style\n- build\n- chore\n- release\n- refactor\n- breaking change\n- revert:\n\n### 同步最新代码\n\n提 Pull Request 前，请依照下面的流程同步主仓库的最新代码：\n\n```bash\n# 添加主仓库到 remote\ngit remote add upstream git@github.com:vant-ui/vant.git\n\n# 拉取主仓库最新代码\ngit fetch upstream\n\n# 切换至 main 分支\ngit checkout main\n\n# 合并主仓库代码\ngit merge upstream/main\n```\n","packages/vant/docs/markdown/design.en-US.md":"# Design Resource\n\n### Intro\n\nYou can download Vant's design resources here.\n\n## Resources\n\n### Components (Sketch)\n\nContains color specifications, font specifications, and component design specifications.\n\n#### Colors\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/color_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n#### Fonts\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/words_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n#### Components\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/tab_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant/blob/main/packages/vant/docs/assets/design.sketch?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">Download</a>\n\n### Icons (Sketch)\n\nContains icon library resources.\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/design-icons-0321.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant/blob/main/packages/vant-icons/assets/icons.sketch?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">Download</a>\n\n### Axure\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/vant-axure-0905.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant-assets/blob/main/design/axure-20200905.zip?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">Download</a>\n","packages/vant/docs/markdown/design.zh-CN.md":"# 设计资源\n\n### 介绍\n\n本页面提供 Vant 的设计资源下载。\n\n## 设计稿\n\n### 组件设计稿（Sketch）\n\n包含 Sketch 格式的色彩规范、字体规范、组件设计规范。\n\n#### 色彩规范\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/color_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n#### 字体规范\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/words_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n#### 组件规范\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/tab_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant/blob/main/packages/vant/docs/assets/design.sketch?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">下载</a>\n\n### 图标设计稿（Sketch）\n\n包含 Sketch 格式的图标库资源。\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/design-icons-0321.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant/blob/main/packages/vant-icons/assets/icons.sketch?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">下载</a>\n\n#### 在线资源\n\nVant 的所有图标都托管在 **iconfont.cn** 上，点此查看：[Vant 图标库](https://www.iconfont.cn/collections/detail?spm=a313x.7781069.1998910419.d9df05512&cid=31945)。\n\n### Axure 元件库\n\nAxure 元件库，由社区的 [@axure-tczy](https://github.com/axure-tczy) 同学贡献。\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/vant-axure-0905.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant-assets/blob/main/design/axure-20200905.zip?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">下载</a>\n","packages/vant/docs/markdown/faq.en-US.md":"# FAQ\n\n### How do I customize the style of Vant components?\n\n#### 1. Theme customization\n\nVant provides the ability to customize the theme based on CSS variables, and can uniformly modify the component style. For details, see [ConfigProvider Global Configuration](#/en-US/config-provider) component.\n\n#### 2. Overriding the default style\n\nIf the theme customization does not meet your needs, you can also override the default style using a **custom style class**, see the following example:\n\n```html\n<template>\n  <van-button class=\"my-button\">Button</van-button>\n</template>\n\n<style>\n  /** Override the style of Button's root element */\n  .my-button {\n    width: 200px;\n  }\n\n  /** Override the style of Button's child elements */\n  .my-button.van-button__text {\n    color: red;\n  }\n</style>\n```\n\n### Components not rendering correctly in HTML?\n\nWhen using Vant components in HTML, you may encounter situations where some sample code may not render correctly, such as the following usage:\n\n```html\n<van-cell-group>\n  <van-cell title=\"cell\" value=\"content\" />\n  <van-cell title=\"cell\" value=\"content\" />\n</van-cell-group>\n```\n\nThis is because HTML does not support self-closing custom elements, so syntax like `<van-cell />` is not recognized. Using a closing tag can work around this problem:\n\n```html\n<van-cell-group>\n  <van-cell title=\"cell\" value=\"content\"></van-cell>\n  <van-cell title=\"cell\" value=\"content\"></van-cell>\n</van-cell-group>\n```\n\nSelf-closing custom elements are available in single-file components, string templates, and JSX, so this problem doesn't arise.\n\n### Can't trigger the click feedback on iOS?\n\nThis is because iOS Safari does not trigger the `:active` pseudo-class by default. The solution is to add an empty `ontouchstart` attribute to the `body` tag:\n\n```html\n<body ontouchstart=\"\">\n  ...\n</body>\n```\n\nReference link: [stackoverflow - :active pseudo-class doesn't work in mobile safari](https://stackoverflow.com/questions/3885018/active-pseudo-class-doesnt-work-in-mobile-safari/33681490#33681490)\n\n### Why is there no Select component?\n\nSelect is a widely used component on the desktop, but its interactive form is not suitable for the mobile device.\n\nOn the mobile side, we recommend using the [Picker selector component](#/en-US/picker) instead.\n\n### Is it supported in uni-app?\n\nAll components of Vant are implemented based on the Vue framework and are not adapted to uni-app, so the availability of each component under uni-app is not guaranteed.\n\nIf you encounter problems using Vant in uni-app, it is recommended to provide feedback to uni-app.\n\n### Some components do not work on the desktop?\n\nSee [Adapt to PC Browsers](#/en-US/advanced-usage#adapt-to-pc-browsers).\n\n### How do I implement mobile responsive adaptation?\n\nSee [Browser Adaptation](#/en-US/advanced-usage#browser-adaptation).\n","packages/vant/docs/markdown/faq.zh-CN.md":"# 常见问题\n\n### 如何自定义 Vant 组件的样式？\n\n#### 1. 主题定制\n\nVant 基于 CSS 变量提供了主题定制的能力，可以对组件样式进行统一修改，详见 [ConfigProvider 全局配置](#/zh-CN/config-provider) 组件。\n\n#### 2. 覆盖默认样式\n\n如果主题定制不能满足你的需求，也可以通过**自定义样式类**来覆盖默认样式，参考下面的示例：\n\n```html\n<template>\n  <van-button class=\"my-button\">按钮</van-button>\n</template>\n\n<style>\n  /** 覆盖 Button 最外层元素的样式 */\n  .my-button {\n    width: 200px;\n  }\n\n  /** 覆盖 Button 内部子元素的样式 */\n  .my-button .van-button__text {\n    color: red;\n  }\n</style>\n```\n\n### 在 HTML 中无法正确渲染组件？\n\n在 HTML 中使用 Vant 组件时，你可能会碰到部分示例代码无法正确渲染的情况，比如下面的用法：\n\n```html\n<van-cell-group>\n  <van-cell title=\"单元格\" value=\"内容\" />\n  <van-cell title=\"单元格\" value=\"内容\" />\n</van-cell-group>\n```\n\n这是因为 HTML 并不支持自闭合的自定义元素，也就是说 `<van-cell />` 这样的语法是不被识别的，使用完整的闭合标签可以避免这个问题：\n\n```html\n<van-cell-group>\n  <van-cell title=\"单元格\" value=\"内容\"></van-cell>\n  <van-cell title=\"单元格\" value=\"内容\"></van-cell>\n</van-cell-group>\n```\n\n在单文件组件、字符串模板和 JSX 中可以使用自闭合的自定义元素，因此不会出现这个问题。\n\n### 在 iOS 上无法触发组件的点击反馈效果？\n\n这是因为 iOS Safari 默认不会触发 `:active` 伪类，解决方法是在 `body` 标签上添加一个空的 `ontouchstart` 属性：\n\n```html\n<body ontouchstart=\"\">\n  ...\n</body>\n```\n\n参考链接：[stackoverflow - :active pseudo-class doesn't work in mobile safari](https://stackoverflow.com/questions/3885018/active-pseudo-class-doesnt-work-in-mobile-safari/33681490#33681490)\n\n### 为什么没有 Select 组件？\n\nSelect 是桌面端常用的组件，但它的交互形式不适合移动端。\n\n在移动端，我们推荐使用 [Picker 选择器组件](#/zh-CN/picker) 作为代替。\n\n### 是否支持在 uni-app 中使用？\n\nVant 所有组件都是基于 Vue 框架实现的，没有针对 uni-app 进行适配，因此不保证各个组件在 uni-app 下的可用性。\n\n如果你在 uni-app 中使用 Vant 遇到问题，建议向 uni-app 进行反馈。\n\n### 部分组件无法在桌面端进行操作？\n\n参见[桌面端适配](#/zh-CN/advanced-usage#zhuo-mian-duan-gua-pei)。\n\n### 如何进行移动端响应式适配？\n\n参见[浏览器适配](#/zh-CN/advanced-usage#liu-lan-qi-gua-pei)。\n","packages/vant/docs/markdown/home.en-US.md":"<div class=\"van-doc-card\">\n  <div class=\"van-doc-intro\">\n    <img class=\"van-doc-intro__logo\" style=\"width: 120px; height: 120px;\" src=\"https://fastly.jsdelivr.net/npm/@vant/assets/logo.png\">\n    <h2 style=\"margin: 0; font-size: 36px; line-height: 60px;\">Vant</h2>\n    <p>A lightweight, customizable Vue UI library for mobile web apps.</p>\n  </div>\n</div>\n\n### Features\n\n- 🚀 1KB Component average size (min+gzip)\n- 🚀 80+ High quality components\n- 🚀 Zero third-party dependencies\n- 💪 90%+ Unit test coverage\n- 💪 Written in TypeScript\n- 📖 Extensive documentation and demos\n- 📖 Provide Sketch and Axure design resources\n- 🍭 Support Vue 2 & Vue 3\n- 🍭 Support Nuxt 2 & Nuxt 3, provide [Vant Module](https://github.com/vant-ui/vant-nuxt) for Nuxt\n- 🍭 Support Tree Shaking\n- 🍭 Support Custom Theme\n- 🍭 Support Accessibility (still improving)\n- 🍭 Support Dark Mode\n- 🍭 Support SSR\n- 🌍 Support i18n, built-in 30+ languages\n\n### Scaffold\n\nIt is recommended to use [Rsbuild](https://github.com/web-infra-dev/rsbuild) to create a scaffold project.\n\nRsbuild is a build tool based on Rspack, developed by the author of Vant, with first-class build speed and development experience, providing first-priority support for Vant.\n\nYou can create a Rsbuild project with the following command:\n\n```bash\nnpm create rsbuild@latest\n```\n\nPlease visit the [Rsbuild repository](https://github.com/web-infra-dev/rsbuild) for more information.\n\n### Quickstart\n\nSee in [Quickstart](#/en-US/quickstart).\n\n### Browser Support\n\nVant 2 supports modern browsers and Android >= 4.0、iOS >= 8.0.\n\nVant 3/4 supports modern browsers and Chrome >= 51、iOS >= 10.0 (same as Vue 3).\n\n### Maintenance Status\n\nThe current maintenance status of each version of Vant is as follows:\n\n| Name | Framework | Release | Latest Version | Status |\n| --- | --- | --- | --- | --- |\n| Vant 4 | Vue 3 | `2022.12` | ![](https://img.shields.io/npm/v/vant/latest?style=flat-square) | Long-term support |\n| Vant 3 | Vue 3 | `2020.12` | ![](https://img.shields.io/npm/v/vant/latest-v3?style=flat-square) | End of life |\n| Vant 2 | Vue 2 | `2019.06` | ![](https://img.shields.io/npm/v/vant/latest-v2?style=flat-square) | End of life |\n| Vant 1 | Vue 2 | `2018.03` | ![](https://img.shields.io/npm/v/vant/latest-v1?style=flat-square) | End of life |\n\n## Links\n\n### Official Ecosystem\n\n| Project | Description |\n| --- | --- |\n| [vant-weapp](https://github.com/vant-ui/vant-weapp) | WeChat MiniProgram UI |\n| [vant-demo](https://github.com/vant-ui/vant-demo) | Collection of Vant demos |\n| [vant-cli](https://github.com/vant-ui/vant/tree/main/packages/vant-cli) | Scaffold for UI library |\n| [vant-icons](https://github.com/vant-ui/vant/tree/main/packages/vant-icons) | Vant icons |\n| [vant-touch-emulator](https://github.com/vant-ui/vant/tree/main/packages/vant-touch-emulator) | Using vant in desktop browsers |\n| [vant-nuxt](https://github.com/vant-ui/vant-nuxt) | Vant module for Nuxt |\n\n### Community Ecosystem\n\n| Project | Description |\n| --- | --- |\n| [3lang3/react-vant](https://github.com/3lang3/react-vant) | React mobile UI Components based on Vant |\n| [vant-theme](https://github.com/Aisen60/vant-theme) | Online theme preview built on Vant UI |\n| [@antmjs/vantui](https://github.com/antmjs/vantui) | Mobile UI Components based on Vant, supporting Taro and React |\n| [vant-playground](https://github.com/LadyChatterleyLover/vant-playground) | Vant Playground |\n| [sfc-playground-vant](https://github.com/zhixiaoqiang/sfc-playground-vant) | Vant Playground |\n| [vue3-h5-template](https://github.com/yulimchen/vue3-h5-template) | Mobile project template based on Vant |\n| [vue3-vant-mobile](https://github.com/vue-zone/vue3-vant-mobile) | Mobile project template based on Vant, out of the box |\n| [raycast-vant-documentation](https://github.com/Aisen60/raycast-vant-documentation) | An Raycast extension, it can search Vant UI library documentation in Raycast |\n| [nuxt-vant-mobile](https://github.com/vue-zone/nuxt-vant-mobile) | Nuxt _⁴_ project template based on Vant, out of the box |\n| [mobvue](https://github.com/un-pany/mobvue) | A well-crafted mobile web app template |\n\n### Other Links\n\n- [Feedback](https://github.com/vant-ui/vant/issues)\n- [Changelog](#/en-US/changelog)\n- [Discussions](https://github.com/vant-ui/vant/discussions)\n\n## Contribution\n\n### Core Team\n\nCore contributors of Vant and Vant Weapp:\n\n| [![chenjiahan](https://avatars.githubusercontent.com/u/7237365?s=80&v=4)](https://github.com/chenjiahan/) | [![cookfront](https://avatars.githubusercontent.com/u/4829465?s=80&v=4)](https://github.com/cookfront/) | [![w91](https://avatars.githubusercontent.com/u/2599455?s=80&v=4)](https://github.com/w91/) | [![pangxie1991](https://avatars.githubusercontent.com/u/5961240?s=80&v=4)](https://github.com/pangxie1991/) | [![rex-zsd](https://avatars.githubusercontent.com/u/8767877?s=80&v=4)](https://github.com/rex-zsd/) | [![nemo-shen](https://avatars.githubusercontent.com/u/13480805?s=80&v=4)](https://github.com/nemo-shen/) |\n| :-: | :-: | :-: | :-: | :-: | :-: |\n| [chenjiahan](https://github.com/chenjiahan/) | [cookfront](https://github.com/cookfront/) | [wangnaiyi](https://github.com/w91/) | [pangxie](https://github.com/pangxie1991/) | [rex-zsd](https://github.com/rex-zsd/) | [nemo-shen](https://github.com/nemo-shen/) |\n\n| [![Lindysen](https://avatars.githubusercontent.com/u/33708359?s=80&v=4)](https://github.com/Lindysen/) | [![JakeLaoyu](https://avatars.githubusercontent.com/u/16181940?s=80&v=4)](https://github.com/JakeLaoyu/) | [![landluck](https://avatars.githubusercontent.com/u/27060081?s=80&v=4)](https://github.com/landluck/) | [![wjw-gavin](https://avatars.githubusercontent.com/u/19986739?s=80&v=4)](https://github.com/wjw-gavin/) | [![inottn](https://avatars.githubusercontent.com/u/18509404?s=80&v=4)](https://github.com/inottn/) | [![zhousg](https://avatars.githubusercontent.com/u/15833290?s=80&v=4)](https://github.com/zhousg/) |\n| :-: | :-: | :-: | :-: | :-: | :-: |\n| [Lindysen](https://github.com/Lindysen/) | [JakeLaoyu](https://github.com/JakeLaoyu/) | [landluck](https://github.com/landluck/) | [wjw-gavin](https://github.com/wjw-gavin/) | [inottn](https://github.com/inottn/) | [zhousg](https://github.com/zhousg/) |\n\n### All Contributors\n\nThanks to the following friends for their contributions to Vant:\n\n<a href=\"https://github.com/vant-ui/vant/graphs/contributors\" target=\"_blank\">\n  <img src=\"https://opencollective.com/vant/contributors.svg?width=890&button=false\" alt=\"contributors\" style=\"width: 100%; margin: 16px 0\">\n</a>\n\n### Contribution Guide\n\nPlease make sure to read the [Contributing Guide](https://github.com/vant-ui/vant/blob/main/.github/CONTRIBUTING.md) before making a pull request.\n\n### LICENSE\n\n[MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89).\n","packages/vant/docs/markdown/home.zh-CN.md":"<div class=\"van-doc-card\">\n  <div class=\"van-doc-intro\">\n    <img class=\"van-doc-intro__logo\" style=\"width: 120px; height: 120px;\" src=\"https://fastly.jsdelivr.net/npm/@vant/assets/logo.png\">\n    <h2 style=\"margin: 0; font-size: 36px; line-height: 60px;\">Vant</h2>\n    <p>轻量、可定制的移动端 Vue 组件库</p>\n  </div>\n</div>\n\n### 介绍\n\nVant 是一个**轻量、可定制的移动端组件库**，于 2017 年开源。\n\n目前 Vant 官方提供了 [Vue 2 版本](/vant/v2/)、[Vue 3 版本](/vant/)和[微信小程序版本](/vant-weapp/)，并由社区团队维护 [React 版本](https://github.com/3lang3/react-vant)。\n\n### 特性\n\n- 🚀 性能极佳，组件平均体积小于 1KB（min+gzip）\n- 🚀 80+ 个高质量组件，覆盖移动端主流场景\n- 🚀 零外部依赖，不依赖三方 npm 包\n- 💪 使用 TypeScript 编写，提供完整的类型定义\n- 💪 单元测试覆盖率超过 90%，提供稳定性保障\n- 📖 提供丰富的中英文文档和组件示例\n- 📖 提供 Sketch 和 Axure 设计资源\n- 🍭 支持 Vue 2、Vue 3 和微信小程序\n- 🍭 支持 Nuxt 2、Nuxt 3，提供 Nuxt 的 [Vant Module](https://github.com/vant-ui/vant-nuxt)\n- 🍭 支持主题定制，内置 700+ 个主题变量\n- 🍭 支持按需引入和 Tree Shaking\n- 🍭 支持无障碍访问（持续改进中）\n- 🍭 支持深色模式\n- 🍭 支持服务器端渲染\n- 🌍 支持国际化，内置 30+ 种语言包\n\n### 版本提示\n\n你当前浏览的是 **Vant 4.x 版本** 的文档，适用于 Vue 3 开发。如果你在使用 Vue 2，请浏览 [Vant 2 文档](/vant/v2/)。\n\n### 脚手架\n\n推荐使用 [Rsbuild](https://github.com/web-infra-dev/rsbuild) 来创建一个脚手架项目。\n\nRsbuild 是基于 Rspack 的构建工具，由 Vant 作者开发，具备一流的构建速度和开发体验，对 Vant 提供第一优先级支持。\n\n你可以通过以下命令创建一个 Rsbuild 项目：\n\n```bash\nnpm create rsbuild@latest\n```\n\n请访问 [Rsbuild 仓库](https://github.com/web-infra-dev/rsbuild) 了解更多信息。\n\n### 快速上手\n\n请阅读[快速上手](#/zh-CN/quickstart)章节，通过该章节你可以了解到 Vant 的安装方法和基本使用姿势。\n\n### 浏览器支持\n\nVant 2 支持现代浏览器以及 Android >= 4.0、iOS >= 8.0。\n\nVant 3/4 支持现代浏览器以及 Chrome >= 51、iOS >= 10.0（与 Vue 3 一致）。\n\n### 维护状态\n\n目前 Vant 各个版本的维护状态如下：\n\n| 名称 | 框架 | 发布时间 | 最新版 | 维护状态 |\n| --- | --- | --- | --- | --- |\n| Vant 4 | Vue 3 | `2022.12` | ![](https://img.shields.io/npm/v/vant/latest?style=flat-square) | 长期支持 |\n| Vant 3 | Vue 3 | `2020.12` | ![](https://img.shields.io/npm/v/vant/latest-v3?style=flat-square) | 终止支持，不再接受 PR |\n| Vant 2 | Vue 2 | `2019.06` | ![](https://img.shields.io/npm/v/vant/latest-v2?style=flat-square) | 终止支持，不再接受 PR |\n| Vant 1 | Vue 2 | `2018.03` | ![](https://img.shields.io/npm/v/vant/latest-v1?style=flat-square) | 终止支持，不再接受 PR |\n\n## 链接\n\n### 官方生态\n\n由 Vant 官方团队维护的项目如下：\n\n| 项目 | 描述 |\n| --- | --- |\n| [vant-weapp](https://github.com/vant-ui/vant-weapp) | Vant 微信小程序版 |\n| [vant-demo](https://github.com/vant-ui/vant-demo) | Vant 官方示例合集 |\n| [vant-cli](https://github.com/vant-ui/vant/tree/main/packages/vant-cli) | 开箱即用的组件库搭建工具 |\n| [vant-icons](https://github.com/vant-ui/vant/tree/main/packages/vant-icons) | Vant 图标库 |\n| [vant-touch-emulator](https://github.com/vant-ui/vant/tree/main/packages/vant-touch-emulator) | 在桌面端使用 Vant 的辅助库 |\n| [vant-nuxt](https://github.com/vant-ui/vant-nuxt) | 为 Nuxt 准备的模块 |\n\n### 社区生态\n\n由社区维护的项目如下，欢迎补充：\n\n| 项目 | 描述 |\n| --- | --- |\n| [3lang3/react-vant](https://github.com/3lang3/react-vant) | 参照 Vant 打造的 React 移动端组件库 |\n| [vant-theme](https://github.com/Aisen60/vant-theme) | Vant 在线主题预览工具 |\n| [@antmjs/vantui](https://github.com/antmjs/vantui) | 基于 Vant Weapp 开发的多端组件库，同时支持 Taro 和 React |\n| [vant-playground](https://github.com/LadyChatterleyLover/vant-playground) | Vant Playground |\n| [sfc-playground-vant](https://github.com/zhixiaoqiang/sfc-playground-vant) | Vant Playground |\n| [vue3-h5-template](https://github.com/yulimchen/vue3-h5-template) | 基于 Vant 的移动端项目模板 |\n| [vue3-vant-mobile](https://github.com/vue-zone/vue3-vant-mobile) | 基于 Vant 的移动端项目模板，开箱即用 |\n| [raycast-vant-documentation](https://github.com/Aisen60/raycast-vant-documentation) | 一个 Raycast 拓展，能在 Raycast 中搜索 Vant 组件库文档 |\n| [nuxt-vant-mobile](https://github.com/vue-zone/nuxt-vant-mobile) | 基于 Vant 的 Nuxt _⁴_ 项目模板，开箱即用 |\n| [mobvue](https://github.com/un-pany/mobvue) | 一个精心制作的移动端 H5 模板 |\n\n### 其他链接\n\n- [意见反馈](https://github.com/vant-ui/vant/issues)\n- [更新日志](#/zh-CN/changelog)\n- [Discussions 讨论区](https://github.com/vant-ui/vant/discussions)\n\n## 贡献\n\n### 核心团队\n\n以下是 Vant 和 Vant Weapp 的核心贡献者们：\n\n| [![chenjiahan](https://avatars.githubusercontent.com/u/7237365?s=80&v=4)](https://github.com/chenjiahan/) | [![cookfront](https://avatars.githubusercontent.com/u/4829465?s=80&v=4)](https://github.com/cookfront/) | [![w91](https://avatars.githubusercontent.com/u/2599455?s=80&v=4)](https://github.com/w91/) | [![pangxie1991](https://avatars.githubusercontent.com/u/5961240?s=80&v=4)](https://github.com/pangxie1991/) | [![rex-zsd](https://avatars.githubusercontent.com/u/8767877?s=80&v=4)](https://github.com/rex-zsd/) | [![nemo-shen](https://avatars.githubusercontent.com/u/13480805?s=80&v=4)](https://github.com/nemo-shen/) |\n| :-: | :-: | :-: | :-: | :-: | :-: |\n| [chenjiahan](https://github.com/chenjiahan/) | [cookfront](https://github.com/cookfront/) | [wangnaiyi](https://github.com/w91/) | [pangxie](https://github.com/pangxie1991/) | [rex-zsd](https://github.com/rex-zsd/) | [nemo-shen](https://github.com/nemo-shen/) |\n\n| [![Lindysen](https://avatars.githubusercontent.com/u/33708359?s=80&v=4)](https://github.com/Lindysen/) | [![JakeLaoyu](https://avatars.githubusercontent.com/u/16181940?s=80&v=4)](https://github.com/JakeLaoyu/) | [![landluck](https://avatars.githubusercontent.com/u/27060081?s=80&v=4)](https://github.com/landluck/) | [![wjw-gavin](https://avatars.githubusercontent.com/u/19986739?s=80&v=4)](https://github.com/wjw-gavin/) | [![inottn](https://avatars.githubusercontent.com/u/18509404?s=80&v=4)](https://github.com/inottn/) | [![zhousg](https://avatars.githubusercontent.com/u/15833290?s=80&v=4)](https://github.com/zhousg/) |\n| :-: | :-: | :-: | :-: | :-: | :-: |\n| [Lindysen](https://github.com/Lindysen/) | [JakeLaoyu](https://github.com/JakeLaoyu/) | [landluck](https://github.com/landluck/) | [wjw-gavin](https://github.com/wjw-gavin/) | [inottn](https://github.com/inottn/) | [zhousg](https://github.com/zhousg/) |\n\n### 贡献者们\n\n感谢以下小伙伴们为 Vant 发展做出的贡献：\n\n<a href=\"https://github.com/vant-ui/vant/graphs/contributors\" target=\"_blank\">\n  <img src=\"https://opencollective.com/vant/contributors.svg?width=890&button=false\" alt=\"contributors\" style=\"width: 100%; margin: 16px 0\">\n</a>\n\n### 贡献指南\n\n贡献代码请阅读我们的[贡献指南](#/zh-CN/contribution)。\n\n使用过程中发现任何问题都可以提 [Issue](https://github.com/vant-ui/vant/issues) 给我们，当然，我们也非常欢迎你给我们发 [PR](https://github.com/vant-ui/vant/pulls)。\n\n### 开源协议\n\n本项目基于 [MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89) 协议，请自由地享受和参与开源。\n","packages/vant/docs/markdown/migrate-from-v2.en-US.md":"# Upgrade from v2 to v3\n\n### Introduction\n\nThis document provides an upgrade guide from Vant 2 to Vant 3.\n\n### Upgrade steps\n\n#### 1. Upgrade to Vue 3\n\nVant 3 is developed based on Vue 3. Before using Vant 3, please upgrade the Vue in the project to version 3.0 or above.\n\n#### 2. Handle incompatible changes\n\nThere are some incompatible changes from Vant 2 to Vant 3, please read the incompatible changes below carefully and deal with them in order.\n\n## Incompatible changes\n\n### Component renaming\n\nThe GoodsAction component is renamed to **ActionBar**.\n\n```html\n<!-- Vant 2 -->\n<van-goods-action>\n  <van-goods-action-icon text=\"icon\" />\n  <van-goods-action-button text=\"button\" />\n</van-goods-action>\n\n<!-- Vant 3 -->\n<van-action-bar>\n  <van-action-bar-icon text=\"icon\" />\n  <van-action-bar-button text=\"button\" />\n</van-action-bar>\n```\n\n### Deprecated components\n\nVant v3 removed the SwitchCell component, you can use the Cell and Switch components instead.\n\n```html\n<!-- Vant 2 -->\n<van-switch-cell title=\"title\" v-model=\"checked\" />\n\n<!-- Vant 3 -->\n<van-cell center title=\"title\">\n  <template #right-icon>\n    <van-switch v-model=\"checked\" size=\"24\" />\n  </template>\n</van-cell>\n```\n\n### Popup components v-model changes\n\nIn order to adapt to Vue 3's v-model API usage changes, all components that provide v-model have some adjustments in usage. `v-model` for the following popup components has been renamed to `v-model:show`:\n\n- ActionSheet\n- Calendar\n- Dialog\n- Image Preview\n- Notify\n- Popover\n- Popup -ShareSheet\n\n```html\n<!-- Vant 2 -->\n<van-popup v-model=\"show\" />\n\n<!-- Vant 3 -->\n<van-popup v-model:show=\"show\" />\n```\n\n### Form component v-model internal value change\n\nThe prop corresponding to the following form component v-model is renamed to `modelValue`, and the event is renamed to `update:modelValue`:\n\n-Checkbox\n\n- CheckboxGroup -DatetimePicker -DropdownItem -Field -Radio\n- RadioGroup -Search\n- Stepper -Switch\n- Sidebar\n- Uploader\n\n```html\n<!-- Vant 2 -->\n<van-field :value=\"value\" @input=\"onInput\" />\n\n<!-- Vant 3 -->\n<van-field :model-value=\"value\" @update:model-value=\"onInput\" />\n```\n\n### Other v-model tweaks\n\n- Circle: `v-model` renamed to `v-model:currentRate`\n- CouponList: `v-model` renamed to `v-model:code`\n- List: `v-model` renamed to `v-model:loading`, `error.sync` renamed to `v-model:error`\n- Tabs: `v-model` renamed to `v-model:active`\n- TreeSelect: `active-id.sync` renamed to `v-model:active-id`\n- TreeSelect: `main-active-index.sync` renamed to `v-model:main-active-index`\n\n### Badge prop adjustment\n\nIn the previous version, we used the `info` prop to display the badge in the upper right corner of the icon. In order to better meet the naming habits of the community, we renamed this prop to badge, which affects the following components:\n\n- Tab\n- Icon\n- GridItem\n- TreeSelect\n- TabbarItem\n- SidebarItem\n- GoodsActionIcon\n\nAt the same time, the Info component will also be renamed to Badge.\n\n```html\n<!-- Vant 2 -->\n<van-icon info=\"5\" />\n\n<!-- Vant 3 -->\n<van-icon badge=\"5\" />\n```\n\n### Rename the get-container prop\n\nVue 3.0 added a new Teleport component, which provides the ability to render the component to any DOM position, and Vant 2 also provides similar capabilities through the `get-container` prop. For consistency with the official API, the `get-container` prop in Vant 3 will be renamed to `teleport`.\n\n```html\n<!-- Vant 2 -->\n<template>\n  <van-popup get-container=\"body\" />\n  <van-popup :get-container=\"getContainer\" />\n</template>\n<script>\n  export default {\n    methods: {\n      getContainer() {\n        return document.querySelector('#container');\n      },\n    },\n  };\n</script>\n\n<!-- Vant 3 -->\n<template>\n  <van-popup teleport=\"body\" />\n  <van-popup :teleport=\"container\" />\n</template>\n<script>\n  export default {\n    beforeCreate() {\n      this.container = document.querySelector('#container');\n    },\n  };\n</script>\n```\n\n### API adjustments\n\n#### Area\n\n- The `change` event parameter is no longer passed to the component instance\n\n#### Button\n\n- The type corresponding to the blue button is adjusted from `info` to `primary`\n- The type corresponding to the green button is adjusted from `primary` to `success`\n- Default value of `native-type` changed from `submit` to `button`\n\n#### Checkbox\n\n- When used inside Cell, you now need to manually add `@click.stop` to prevent event bubbling\n\n#### Dialog\n\n- The `allow-html` prop is disabled by default.\n- `before-close` prop usage adjustment, no longer pass in the done function, but return Promise to control.\n\n#### DatetimePicker\n\n- The `change` event parameter is no longer passed to the component instance\n\n#### ImagePreview\n\n- Remove the `async-close` prop, you can use the new `before-close` prop instead.\n\n#### Picker\n\n- The `change` event parameter is no longer passed to the component instance.\n- The `allow-html` prop is turned off by default.\n- The `show-toolbar` prop is enabled by default.\n- Under cascade selection, the callback parameters returned by the `confirm` and `change` events will contain a complete option object.\n\n#### Popover\n\n- Default value of `trigger` prop adjusted to `click`.\n\n#### Stepper\n\n- The `async-change` prop is renamed to `before-change`, and the usage method is adjusted.\n\n#### SwipeCell\n\n- `detail` parameter of `open` event renamed to `name`.\n- `on-close` prop renamed to `before-close`, and parameter structure adjusted.\n- The `before-close` prop is no longer passed to the component instance.\n\n#### Toast\n\n- `mask` prop renamed to `overlay`.\n\n#### TreeSelect\n\n- `navclick` event renamed to `click-nav`.\n- `itemclick` event renamed to `click-item`.\n\n### Global methods\n\nGlobal methods such as `$toast` and `$dialog` are provided by default in Vant 2, but Vue 3.0 no longer supports directly mounting methods on Vue's prototype chain, so starting from Vant 3.0, you must first pass `app.use` registers the component to the corresponding app.\n\n```js\nimport { Toast, Dialog, Notify } from 'vant';\n\n// Register components such as Toast to the app\napp.use(Toast);\napp.use(Dialog);\napp.use(Notify);\n\n// Subcomponents in the app can directly call methods such as $toast\nexport default {\n  mounted() {\n    this.$toast('prompt text');\n  },\n};\n```\n","packages/vant/docs/markdown/migrate-from-v2.zh-CN.md":"# 从 v2 升级到 v3\n\n### 介绍\n\n本文档提供了从 Vant 2 到 Vant 3 的升级指南。\n\n### 升级步骤\n\n#### 1. 升级 Vue 3\n\nVant 3 是基于 Vue 3 开发的，在使用 Vant 3 前，请将项目中的 Vue 升级到 3.0 以上版本。\n\n#### 2. 处理不兼容更新\n\nVant 2 到 Vant 3 存在一些不兼容更新，请仔细阅读下方的不兼容更新内容，并依次处理。\n\n## 不兼容更新\n\n### 组件命名调整\n\nGoodsAction 商品导航组件重命名为 **ActionBar 行动栏**。\n\n```html\n<!-- Vant 2 -->\n<van-goods-action>\n  <van-goods-action-icon text=\"图标\" />\n  <van-goods-action-button text=\"按钮\" />\n</van-goods-action>\n\n<!-- Vant 3 -->\n<van-action-bar>\n  <van-action-bar-icon text=\"图标\" />\n  <van-action-bar-button text=\"按钮\" />\n</van-action-bar>\n```\n\n### 废弃组件\n\n移除 SwitchCell 组件，可以直接使用 Cell 和 Switch 组件代替。\n\n```html\n<!-- Vant 2 -->\n<van-switch-cell title=\"标题\" v-model=\"checked\" />\n\n<!-- Vant 3 -->\n<van-cell center title=\"标题\">\n  <template #right-icon>\n    <van-switch v-model=\"checked\" size=\"24\" />\n  </template>\n</van-cell>\n```\n\n### 弹窗型组件 v-model 变更\n\n为了适配 Vue 3 的 v-model API 用法变更，所有提供 v-model 属性的组件在用法上有一定调整。以下弹窗类组件的 `v-model` 被重命名为 `v-model:show`：\n\n- ActionSheet\n- Calendar\n- Dialog\n- ImagePreview\n- Notify\n- Popover\n- Popup\n- ShareSheet\n\n```html\n<!-- Vant 2 -->\n<van-popup v-model=\"show\" />\n\n<!-- Vant 3 -->\n<van-popup v-model:show=\"show\" />\n```\n\n### 表单型组件 v-model 内部值变更\n\n以下表单型组件 v-model 对应的 prop 重命名为 `modelValue`，event 重命名为 `update:modelValue`：\n\n- Checkbox\n- CheckboxGroup\n- DatetimePicker\n- DropdownItem\n- Field\n- Radio\n- RadioGroup\n- Search\n- Stepper\n- Switch\n- Sidebar\n- Uploader\n\n```html\n<!-- Vant 2 -->\n<van-field :value=\"value\" @input=\"onInput\" />\n\n<!-- Vant 3 -->\n<van-field :model-value=\"value\" @update:model-value=\"onInput\" />\n```\n\n### 其他 v-model 调整\n\n- Circle: `v-model` 重命名为 `v-model:currentRate`\n- CouponList: `v-model` 重命名为 `v-model:code`\n- List: `v-model` 重命名为 `v-model:loading`，`error.sync` 重命名为 `v-model:error`\n- Tabs: `v-model` 重命名为 `v-model:active`\n- TreeSelect: `active-id.sync` 重命名为 `v-model:active-id`\n- TreeSelect: `main-active-index.sync` 重命名为 `v-model:main-active-index`\n\n### 徽标属性命名调整\n\n在之前的版本中，我们通过 info 属性来展示图标右上角的徽标信息，为了更符合社区的命名习惯，我们将这个属性重命名为 badge，影响以下组件：\n\n- Tab\n- Icon\n- GridItem\n- TreeSelect\n- TabbarItem\n- SidebarItem\n- GoodsActionIcon\n\n同时内部使用的 Info 组件也会重命名为 Badge。\n\n```html\n<!-- Vant 2 -->\n<van-icon info=\"5\" />\n\n<!-- Vant 3 -->\n<van-icon badge=\"5\" />\n```\n\n### 重命名 get-container 属性\n\nVue 3.0 中增加了 `Teleport` 组件，提供将组件渲染到任意 DOM 位置的能力，Vant 2 也通过 `get-container` 属性提供了类似的能力。为了与官方的 API 保持一致，Vant 中的 `get-container` 属性将重命名为 `teleport`。\n\n```html\n<!-- Vant 2 -->\n<template>\n  <van-popup get-container=\"body\" />\n  <van-popup :get-container=\"getContainer\" />\n</template>\n<script>\n  export default {\n    methods: {\n      getContainer() {\n        return document.querySelector('#container');\n      },\n    },\n  };\n</script>\n\n<!-- Vant 3 -->\n<template>\n  <van-popup teleport=\"body\" />\n  <van-popup :teleport=\"container\" />\n</template>\n<script>\n  export default {\n    beforeCreate() {\n      this.container = document.querySelector('#container');\n    },\n  };\n</script>\n```\n\n### API 调整\n\n#### Area\n\n- `change` 事件参数不再传入组件实例\n\n#### Button\n\n- 蓝色按钮对应的类型由 `info` 调整为 `primary`\n- 绿色按钮对应的类型由 `primary` 调整为 `success`\n- `native-type` 的默认值由 `submit` 调整为 `button`\n\n#### Checkbox\n\n- 在 Cell 内部使用时，现在需要手动添加 `@click.stop` 来阻止事件冒泡\n\n#### Dialog\n\n- 默认关闭 `allow-html` 属性\n- `before-close` 属性用法调整，不再传入 done 函数，而是通过返回 Promise 来控制\n\n#### DatetimePicker\n\n- `change` 事件参数不再传入组件实例\n\n#### ImagePreview\n\n- 移除 `async-close` 属性，可以使用新增的 `before-close` 属性代替\n\n#### Picker\n\n- `change` 事件参数不再传入组件实例\n- 默认关闭 `allow-html` 属性\n- 默认开启 `show-toolbar` 属性\n- 级联选择下，`confirm`、`change` 事件返回的回调参数将包含为完整的选项对象。\n\n#### Popover\n\n- `trigger` 属性的默认值调整为 `click`\n\n#### Stepper\n\n- `async-change` 属性重命名为 `before-change`，并调整使用方法\n\n#### SwipeCell\n\n- `open` 事件的 `detail` 参数重命名为 `name`\n- `on-close` 属性重命名为 `before-close`，并调整参数结构\n- `before-close` 属性不再传入组件实例\n\n#### Toast\n\n- `mask` 属性重命名为 `overlay`\n\n#### TreeSelect\n\n- `navclick` 事件重命名为 `click-nav`\n- `itemclick` 事件重命名为 `click-item`\n\n### 注册全局方法\n\nVant 2 中默认提供了 `$toast`、`$dialog` 等全局方法，但 Vue 3.0 不再支持直接在 Vue 的原型链上挂载方法，因此从 Vant 3.0 开始，使用全局方法前必须先通过 `app.use` 将组件注册到对应的 app 上。\n\n```js\nimport { Toast, Dialog, Notify } from 'vant';\n\n// 将 Toast 等组件注册到 app 上\napp.use(Toast);\napp.use(Dialog);\napp.use(Notify);\n\n// app 内的子组件可以直接调用 $toast 等方法\nexport default {\n  mounted() {\n    this.$toast('提示文案');\n  },\n};\n```\n","packages/vant/docs/markdown/migrate-from-v3.en-US.md":"# Upgrade from v3 to v4\n\n### Introduction\n\nThis document provides an upgrade guide from Vant 3 to Vant 4.\n\n### Installing Vant 4\n\nFirst you need to install Vant 4 and `@vant/compat`.\n\n`@vant/compat` is a compatibility package that helps you to switch from Vant 3 to Vant 4.\n\n```bash\n# Install via npm\nnpm add vant@^4 @vant/compat@^1\n\n# Install via yarn\nyarn add vant@^4 @vant/compat@^1\n\n# Install via pnpm\npnpm add vant@^4 @vant/compat@^1\n\n# Install via Bun\nbun add vant@^4 @vant/compat@^1\n```\n\nYou can also change the version directly in the `dependencies` field of `package.json`, and you will need to reinstall the dependencies after the change.\n\n```diff\n{\n   \"dependencies\": {\n-    \"vant\": \"^3.0.0\",\n+    \"vant\": \"^4.0.0\",\n+    \"@vant/compat\": \"^1.0.0\",\n   }\n}\n```\n\n## Import method changes\n\n### Remove babel-plugin-import\n\nStarting from Vant 4.0, `babel-plugin-import` will no longer be supported, please remove the `babel-plugin-import` plugin that the project depends on.\n\nSimply remove the following code in `babel.config.js`:\n\n```diff\nmodule.exports = {\n  plugins: [\n-    ['import', {\n-      libraryName: 'vant',\n-      libraryDirectory: 'es',\n-      style: true\n-    }, 'vant']\n  ]\n};\n```\n\n#### Benefits\n\nThe main benefits of removing `babel-plugin-import` are as follows:\n\n- Instead of relying heavily on Babel compilation, projects can use modern compilation tools such as SWC and esbuild to improve compilation efficiency.\n- No longer subject to the import restrictions of `babel-plugin-import`, you can import content other than Vant components, such as the new `showToast` method in Vant 4, or the `buttonProps` object:\n\n```ts\nimport { showToast, buttonProps } from 'vant';\n```\n\n#### Import style on demand\n\nRemoving `babel-plugin-import` will not affect the JS size of the project, because Vant supports Tree Shaking to remove unnecessary JS code by default.\n\nThe way the CSS code is imported can be selected from the following two ways:\n\n- Include Vant's style files in their entirety in the project:\n\n```js\nimport 'vant/lib/index.css';\n```\n\n- Use the [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) plugin to import styles on demand, see [Quick Start](#/en-US/quickstart) for detailed usage.\n\n## Component refactoring\n\n### Introduction\n\nIn Vant 4, three components have been refactored, they are:\n\n- `Area`\n- `Picker`\n- `DatetimePicker`\n\nThe reason for refactoring these three components is that in the previous version, the API design of the `Picker` component had some unreasonable designs, which caused people to often encounter problems when using it, such as:\n\n- Picker columns data format definition is unreasonable, easy to cause misunderstanding\n- The Picker data flow is not clear, exposing too many instance methods to operate on the data\n- DatetimePicker logic is too complicated, bugs often occur in borderline scenarios\n\nTo solve the above problems, we have refactored the `Picker` component in the v4 version, and also refactored the `Area` and `DatetimePicker` components derived from `Picker`. If you use these three components in your project, please read the documentation carefully and upgrade.\n\n### Picker component refactoring\n\n#### Major changes\n\n- Support binding the currently selected value through `v-model`, remove the `default-index` prop.\n- Redefine the structure of the `columns` prop.\n- Removed the instance methods for manipulating internal data, only the `confirm` method remains.\n- Added `getSelectedOptions` instance method.\n- Changed parameters of `confirm`, `cancel`, `change` events.\n- Renamed `item-height` prop to `option-height`.\n- Renamed `visible-item-count` prop to `visible-option-num`.\n\n> Please refer to [Picker Component Documentation](#/en-US/picker) for detailed usage.\n\n### DatetimePicker component refactoring\n\nThe DatetimePicker component is split into three subcomponents:\n\n- [TimePicker](#/en-US/time-picker): Used for time selection, including hours, minutes, and seconds.\n- [DatePicker](#/en-US/date-picker): Used for date selection, including year, month and day.\n- [PickerGroup](#/en-US/picker-group): Used to combine multiple Picker selector components to select multiple values in one interaction.\n\nAt the same time, the TimePicker and DatePicker components are also refactored based on the new version of the Picker component, and some API designs are optimized.\n\n#### Major changes\n\nThe following are the main API changes of TimePicker and DatePicker. For more details, please refer to [TimePicker](#/en-US/time-picker) and [DatePicker](#/en-US/date-picker) documentation.\n\n- The value of `v-model` binding is adjusted to array format.\n- Added `columns-type` prop to control option type and order.\n- Remove `type` and `columns-order` props.\n- Remove `getPicker` method.\n- Adjust the parameters of `confirm`, `cancel`, `change` events to be consistent with the Picker component.\n\n> Vant 4 no longer provides the old version of the DatetimePicker component. The PickerGroup component can be used to achieve more flexible and richer interactive effects. For specific usage, please refer to the [PickerGroup](#/en-US/picker-group) component documentation.\n\n### Area component refactoring\n\nThe Area component is encapsulated based on the Picker component, so this upgrade also refactors the internal logic of the Area component and optimizes some APIs.\n\n#### Major changes\n\n- Support binding the currently selected value via `v-model`.\n- Removed `reset` method, now can be reset by modifying `v-model`.\n- Removed `is-oversea-code` prop.\n- Adjust the parameters of `confirm`, `cancel`, `change` events to be consistent with the Picker component.\n- Renamed `value` prop to `modelValue`.\n- Renamed `item-height` prop to `option-height`.\n- Renamed `visible-item-count` prop to `visible-option-num`.\n\n> Please refer to [Area Component Documentation](#/en-US/area) for detailed usage.\n\n## API tweaks\n\n### Dialog calling method adjustment\n\nIn Vant 3, `Dialog` is a function, and calling the function can quickly evoke the global Dialog component, and `Dialog.Component` is the `Dialog` component object, which is different from the usage of most components, which can easily lead to mistake.\n\nIn order to be more intuitive, we adjusted the calling method of `Dialog` in Vant 4, renamed the `Dialog()` function to `showDialog()`, and let `Dialog` directly point to the component object.\n\n```js\n// Vant 3\nDialog(); // function call\nDialog.Component; // Component object\n\n// Vant 4\nshowDialog(); // function call\nDialog; // component object\n```\n\nSince `Dialog` has become a component object, other methods mounted on `Dialog` have also been renamed. The mapping relationship between the old and new APIs is as follows:\n\n```js\nDialog(); // -> showDialog()\nDialog.alert(); // -> showDialog()\nDialog.confirm(); // -> showConfirmDialog()\nDialog.close(); // -> closeDialog();\nDialog.setDefaultOptions(); // -> setDialogDefaultOptions()\nDialog.resetDefaultOptions(); // -> resetDialogDefaultOptions()\n```\n\n#### Migration\n\nIn order to facilitate the migration of old version code to v4, we provide a compatibility solution, you can use the `Dialog` object exported in `@vant/compat` to be compatible with the original code.\n\nReference the `Dialog` method from `@vant/compat`:\n\n```js\nimport { Dialog } from '@vant/compat';\n\nDialog();\nDialog.close();\n```\n\nThe `Dialog` exported in `@vant/compat` has exactly the same API and behavior as the `Dialog` in Vant 3, so you only need to modify the reference path of `Dialog`, and other codes can remain unchanged.\n\nAfter the project is upgraded to Vant v4, it is recommended to gradually replace it with the new `showDialog` and other methods in iterations, and remove the `@vant/compat` package.\n\n### Toast calling method adjustment\n\nIn Vant 4, the calling method of the `Toast` component has also been adjusted, which is consistent with the changes of the `Dialog` component:\n\n```js\n// Vant 3\nToast(); // function call\n\n// Vant 4\nshowToast(); // function call\nToast; // component object\n```\n\nOther methods mounted on `Toast` have also been renamed, and the mapping relationship between the old and new APIs is as follows:\n\n```js\nToast(); // -> showToast()\nToast.fail(); // -> showFailToast()\nToast.success(); // -> showSuccessToast()\nToast.loading(); // -> showLoadingToast()\nToast.clear(); // -> closeToast()\nToast.setDefaultOptions(); // -> setToastDefaultOptions()\nToast.resetDefaultOptions(); // -> resetToastDefaultOptions()\n```\n\nAt the same time, Vant 4 will no longer globally register the `$toast` method on the `this` object, which means that `$toast` will not be accessible on the `this` object.\n\n#### Migration\n\nIn order to facilitate code migration, we provide a compatibility solution, you can use the `Toast` object exported in `@vant/compat` to be compatible with the original code.\n\n```js\nimport { Toast } from '@vant/compat';\n\nToast();\nToast.clear();\n```\n\nThe `Toast` exported in `@vant/compat` has exactly the same API and behavior as `Toast` in Vant 3, so you only need to modify the reference path of `Toast`, and other codes can remain unchanged.\n\n### Notify calling method adjustment\n\nIn Vant 4, the calling method of the `Notify` component has also been adjusted, which is consistent with the changes of the `Dialog` component:\n\n```js\n// Vant 3\nNotify(); // function call\nNotify.Component; // component object\n\n// Vant 4\nshowNotify(); // function call\nNotify; // component object\n```\n\nOther methods mounted on `Notify` have also been renamed, and the mapping relationship between the old and new APIs is as follows:\n\n```js\nNotify(); // -> showNotify()\nNotify.clear(); // -> closeNotify()\nNotify.setDefaultOptions(); // -> setNotifyDefaultOptions()\nNotify.resetDefaultOptions(); // -> resetNotifyDefaultOptions()\n```\n\nAt the same time, Vant 4 will no longer globally register the `$notify` method on the `this` object, which means that `$notify` will not be accessible on the `this` object.\n\n#### Migration\n\nIn order to facilitate code migration, we provide a compatibility solution, you can use the `Notify` object exported in `@vant/compat` to be compatible with the original code.\n\n```js\nimport { Notify } from '@vant/compat';\n\nNotify();\nNotify.clear();\n```\n\n`Notify` exported in `@vant/compat` has exactly the same API and behavior as `Notify` in Vant 3, so you only need to modify the reference path of `Notify`, and other codes can remain unchanged.\n\n### ImagePreview calling method adjustment\n\nIn Vant 4, the calling method of the `ImagePreview` component has also been adjusted, which is consistent with the changes of the `Dialog` component:\n\n```js\n// Vant 3\nImagePreview(); // function call\nImagePreview.Component; // component object\n\n// Vant 4\nshowImagePreview(); // function call\nImagePreview; // component object\n```\n\n#### Migration\n\nIn order to facilitate code migration, we provide a compatibility solution, you can use the `ImagePreview` object exported in `@vant/compat` to be compatible with the original code.\n\n```js\nimport { ImagePreview } from '@vant/compat';\n\nImagePreview();\n```\n\nThe `ImagePreview` exported in `@vant/compat` has exactly the same API and behavior as the `ImagePreview` in Vant 3, so you only need to modify the reference path of `ImagePreview`, and other codes can remain unchanged.\n\n### Event naming adjustment\n\nStarting from Vant 4, all events are named in **camelCase** officially recommended by Vue.\n\n```js\n// Vant 3\nemit('click-input');\n\n// Vant 4\nemit('clickInput');\n```\n\nThis change **does not affect the original template code**, Vue will automatically format the event name in the template, so you don't need to make any changes.\n\n```html\n<!-- The following code works as usual without any changes -->\n<van-field @click-input=\"onClick\" />\n```\n\nIf you use the Vant component in JSX, you need to adjust the monitored event name to camel case format, the original dash format will no longer take effect, and the new monitoring method is more in line with JSX's own specifications:\n\n```jsx\n// Vant 3\n<Field onClick-input={onClick} />\n\n// Vant 4\n<Field onClickInput={onClick} />\n```\n\n### Other API adjustments\n\nIn Vant 4.0 version, the following APIs have been updated incompatible:\n\n#### AddressEdit\n\n- Remove `show-postal` prop.\n- Remove `postal-validator` prop.\n- Parameter of `change-area` event changed to `PickerOption[]` type.\n- Remove undocumented `getArea` instance method.\n\n#### Popup\n\nSome adjustments have been made to the CSS style of Popup. If you have added some custom CSS styles to the Popup component, please check if this update affects the UI in the project.\n\n- Added `box-sizing: border-box` style by default.\n- Changed the horizontal centering method when `position=\"center\"`, to solve the problem that the width of the Popup cannot be adjusted correctly.\n\n```less\n// Vant 3\n.van-popup --center {\n  left: 50%;\n  transform: translate3d(-50%, -50%, 0);\n}\n\n// Vant 4\n.van-popup --center {\n  left: 0;\n  right: 0;\n  width: fit-content;\n  max-width: calc(100vw - var(--van-padding-md) * 2);\n  margin: 0 auto;\n  transform: translateY(-50%);\n}\n```\n\n#### Tabs\n\n- Removed `click` and `disabled` events, please use `click-tab` event instead\n\n## Style adjustments\n\n### Uniform primary color\n\nIn the previous version, Vant components had two primary colors, some components used blue (#1989fa) as the primary color, and others used red (#ee0a24).\n\nTo keep the colour specification consistent,, we have unified the primary color in Vant 4, and all components use blue as the primary color.\n\nThe primary color of the following components has been changed from red to blue:\n\n- AddressEdit\n- AddressList\n- Card\n- Calendar\n- Cascader\n- ContactList\n- ContactEdit\n- CouponList\n- Dialog\n- DropdownMenu -IndexBar\n- Sidebar -Steps\n- Tabs\n- TreeSelect\n\n### Remove Less variables\n\nCurrently, Vant already supports theme customization capabilities based on CSS variables, which is more flexible than Less customization. Therefore, Vant 4 will no longer provide Less-based theme customization.\n\nThis means that Vant's npm package will no longer contain `.less` style source files, only the compiled `.css` style files will be provided.\n\nIf your project is using an old version of Less theme customization, please use the [ConfigProvider global configuration](#/en-US/config-provider) component to replace it.\n\n### Simplify CSS variable names\n\nWith code size and usability in mind, we have simplified the names of some CSS variables, and used shorter words in the variable names to reduce the code size.\n\nThis upgrade includes the following variable name changes:\n\n```less\nanimation-duration -> duration\nanimation-timing-function-enter -> ease-out\nanimation-timing-function-leave -> ease-in\nbackground-color -> background\nbackground-color-light -> background-2\nborder-radius -> radius\nborder-width-base -> border-width\nbox-shadow -> shadow\nfont-family -> font\nfont-weight-bold -> font-bold\nprice-integer-font -> price-font\ntext-link -> link\ntransition-duration -> duration\n```\n\nDue to the large number of CSS variables involved, it is recommended that you perform a global match and replace in the code repository.\n\nFor the `ConfigProvider` component, we have added the `ConfigProviderThemeVars` type definition to provide full type hints. In TypeScript code, you can use type hints to ensure that theme variables are substituted correctly.\n\n```ts\nimport type { ConfigProviderThemeVars } from 'vant';\n\nconst themeVars: ConfigProviderThemeVars = {\n  sliderBarHeight: '4px',\n};\n```\n","packages/vant/docs/markdown/migrate-from-v3.zh-CN.md":"# 从 v3 升级到 v4\n\n### 介绍\n\n本文档提供了从 Vant 3 到 Vant 4 的升级指南。\n\n### 安装 Vant 4\n\n首先你需要安装 Vant 4 以及 `@vant/compat`。\n\n`@vant/compat` 是一个兼容包，可以帮助你从 Vant 3 过渡到 Vant 4。\n\n```bash\n# 通过 npm 安装\nnpm add vant@^4 @vant/compat@^1\n\n# 通过 yarn 安装\nyarn add vant@^4 @vant/compat@^1\n\n# 通过 pnpm 安装\npnpm add vant@^4 @vant/compat@^1\n\n# 通过 Bun 安装\nbun add vant@^4 @vant/compat@^1\n```\n\n你也可以直接修改 `package.json` 的 `dependencies` 字段中的版本号，修改完成后需要重新安装依赖。\n\n```diff\n{\n  \"dependencies\": {\n-    \"vant\": \"^3.0.0\",\n+    \"vant\": \"^4.0.0\",\n+    \"@vant/compat\": \"^1.0.0\",\n  }\n}\n```\n\n## 调整按需引入方式\n\n### 移除 babel-plugin-import\n\n从 Vant 4.0 开始，将不再支持 `babel-plugin-import`，请移除项目中依赖的 `babel-plugin-import` 插件。\n\n只需要删除 `babel.config.js` 中的以下代码即可：\n\n```diff\nmodule.exports = {\n  plugins: [\n-    ['import', {\n-      libraryName: 'vant',\n-      libraryDirectory: 'es',\n-      style: true\n-    }, 'vant']\n  ]\n};\n```\n\n#### 收益\n\n移除 `babel-plugin-import` 主要带来以下收益：\n\n- 不再强依赖 Babel 编译，项目可以使用 SWC、esbuild 等现代编译工具，进而提升编译效率。\n- 不再受到 `babel-plugin-import` 的 import 限制，可以从 Vant 中导入除组件以外的内容，比如 Vant 4 中新增的 `showToast` 方法，或是 `buttonProps` 对象：\n\n```ts\nimport { showToast, buttonProps } from 'vant';\n```\n\n#### 样式引入方案\n\n移除 `babel-plugin-import` 对项目的 JS 体积不会有影响，因为 Vant 默认支持通过 Tree Shaking 来移除不需要的 JS 代码。\n\n而 CSS 代码的引入方式可以从以下两种方式中进行选择：\n\n- 在项目中全量引入 Vant 的样式文件：\n\n```js\nimport 'vant/lib/index.css';\n```\n\n- 通过 [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) 插件实现按需引入样式，详细用法参见 [快速上手](#/zh-CN/quickstart)。\n\n## 组件重构\n\n### 介绍\n\n在 Vant 4 中，一共有三个组件被完全重构，它们是：\n\n- `Area`\n- `Picker`\n- `DatetimePicker`\n\n这三个组件之所以被重构，是因为在之前的版本中，`Picker` 组件的 API 设计存在一些不合理的设计，导致大家在使用时经常遇到问题，比如：\n\n- Picker columns 数据格式定义不合理，容易产生误解\n- Picker 数据流不清晰，暴露了过多的实例方法来对数据进行操作\n- DatetimePicker 逻辑过于复杂，经常在边界场景下出现 bug\n\n为了解决上述问题，我们在 v4 版本中对 `Picker` 组件进行了重构，同时也重构了基于 `Picker` 派生出的 `Area` 和 `DatetimePicker` 组件。如果你的项目中使用了这三个组件，请仔细阅读文档并进行升级。\n\n### Picker 组件重构\n\n#### 主要变更\n\n- 支持通过 `v-model` 绑定当前选中的值，移除 `default-index` 属性\n- 重新定义了 `columns` 属性的结构\n- 移除了操作内部数据的实例方法，仅保留 `confirm` 方法\n- 新增 `getSelectedOptions` 实例方法\n- 调整了 `confirm`、`cancel`、`change` 事件的参数\n- 重命名 `item-height` 属性为 `option-height`\n- 重命名 `visible-item-count` 属性为 `visible-option-num`\n\n> 详细用法请参见 [Picker 组件文档](#/zh-CN/picker)。\n\n### DatetimePicker 组件重构\n\nDatetimePicker 组件被拆分为三个子组件：\n\n- [TimePicker](#/zh-CN/time-picker): 用于时间选择，包括时、分、秒。\n- [DatePicker](#/zh-CN/date-picker): 用于日期选择，包括年、月、日。\n- [PickerGroup](#/zh-CN/picker-group): 用于结合多个 Picker 选择器组件，在一次交互中完成多个值的选择。\n\n同时，TimePicker 和 DatePicker 组件也基于新版 Picker 组件进行重构，并优化了部分 API 设计。\n\n#### 主要变更\n\n以下是 TimePicker 和 DatePicker 的主要 API 变化，更多细节请参考 [TimePicker](#/zh-CN/time-picker) 和 [DatePicker](#/zh-CN/date-picker) 文档。\n\n- `v-model` 绑定的值调整为数组格式\n- 新增 `columns-type` 属性，用于控制选项类型和顺序\n- 移除 `type` 属性和 `columns-order` 属性\n- 移除 `getPicker` 方法\n- 调整 `confirm`、`cancel`、`change` 事件的参数，与 Picker 组件保持一致\n\n> Vant 4 不再提供旧版的 DatetimePicker 组件，使用 PickerGroup 组件可以实现更灵活、更丰富的交互效果，具体用法请参考 [PickerGroup](#/zh-CN/picker-group) 组件文档。\n\n### Area 组件重构\n\nArea 组件是基于 Picker 组件进行封装的，因此本次升级也对 Area 组件进行了内部逻辑的重构，并优化了部分 API。\n\n#### 主要变更\n\n- 支持通过 `v-model` 绑定当前选中的值\n- 移除 `reset` 方法，现在可以通过修改 `v-model` 来进行重置\n- 移除 `is-oversea-code` 属性\n- 调整 `confirm`、`cancel`、`change` 事件的参数，与 Picker 组件保持一致\n- 重命名 `value` 属性为 `modelValue`\n- 重命名 `item-height` 属性为 `option-height`\n- 重命名 `visible-item-count` 属性为 `visible-option-num`\n\n> 详细用法请参见 [Area 组件文档](#/zh-CN/area)。\n\n## API 调整\n\n### Dialog 调用方式调整\n\n在 Vant 3 中，`Dialog` 是一个函数，调用函数可以快速唤起全局的弹窗组件，而 `Dialog.Component` 才是 `Dialog` 组件对象，这与大部分组件的用法存在差异，容易导致使用错误。\n\n为了更符合直觉，我们在 Vant 4 中调整了 `Dialog` 的调用方式，将 `Dialog()` 函数重命名为 `showDialog()`，并让 `Dialog` 直接指向组件对象。\n\n```js\n// Vant 3\nDialog(); // 函数调用\nDialog.Component; // 组件对象\n\n// Vant 4\nshowDialog(); // 函数调用\nDialog; // 组件对象\n```\n\n由于 `Dialog` 变为了组件对象，`Dialog` 上挂载的其他方法也进行了重命名，新旧 API 的映射关系如下：\n\n```js\nDialog(); // -> showDialog()\nDialog.alert(); // -> showDialog()\nDialog.confirm(); // -> showConfirmDialog()\nDialog.close(); // -> closeDialog();\nDialog.setDefaultOptions(); // -> setDialogDefaultOptions()\nDialog.resetDefaultOptions(); // -> resetDialogDefaultOptions()\n```\n\n#### 兼容方案\n\n为了便于旧版本代码迁移至 v4，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `Dialog` 对象来兼容原有代码。\n\n从 `@vant/compat` 中引用 `Dialog` 方法：\n\n```js\nimport { Dialog } from '@vant/compat';\n\nDialog();\nDialog.close();\n```\n\n`@vant/compat` 中导出的 `Dialog` 与 Vant 3 中的 `Dialog` 拥有完全一致的 API 和行为，因此你只需要修改 `Dialog` 的引用路径，其他代码可以保持不变。\n\n在项目完成升级到 Vant v4 后，建议在迭代中逐步替换为新的 `showDialog` 等方法，并移除 `@vant/compat` 包。\n\n### Toast 调用方式调整\n\nVant 4 中，`Toast` 组件的调用方式也进行了调整，与 `Dialog` 组件的改动一致：\n\n```js\n// Vant 3\nToast(); // 函数调用\n\n// Vant 4\nshowToast(); // 函数调用\nToast; // 组件对象\n```\n\n`Toast` 上挂载的其他方法也进行了重命名，新旧 API 的映射关系如下：\n\n```js\nToast(); // -> showToast()\nToast.fail(); // -> showFailToast()\nToast.success(); // -> showSuccessToast()\nToast.loading(); // -> showLoadingToast()\nToast.clear(); // -> closeToast()\nToast.setDefaultOptions(); // -> setToastDefaultOptions()\nToast.resetDefaultOptions(); // -> resetToastDefaultOptions()\n```\n\n同时，Vant 4 将不再在 `this` 对象上全局注册 `$toast` 方法，这意味着 `this` 对象上将无法访问到 `$toast`。\n\n#### 兼容方案\n\n为了便于代码迁移，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `Toast` 对象来兼容原有代码。\n\n```js\nimport { Toast } from '@vant/compat';\n\nToast();\nToast.clear();\n```\n\n`@vant/compat` 中导出的 `Toast` 与 Vant 3 中的 `Toast` 拥有完全一致的 API 和行为，因此你只需要修改 `Toast` 的引用路径，其他代码可以保持不变。\n\n### Notify 调用方式调整\n\nVant 4 中，`Notify` 组件的调用方式也进行了调整，与 `Dialog` 组件的改动一致：\n\n```js\n// Vant 3\nNotify(); // 函数调用\nNotify.Component; // 组件对象\n\n// Vant 4\nshowNotify(); // 函数调用\nNotify; // 组件对象\n```\n\n`Notify` 上挂载的其他方法也进行了重命名，新旧 API 的映射关系如下：\n\n```js\nNotify(); // -> showNotify()\nNotify.clear(); // -> closeNotify()\nNotify.setDefaultOptions(); // -> setNotifyDefaultOptions()\nNotify.resetDefaultOptions(); // -> resetNotifyDefaultOptions()\n```\n\n同时，Vant 4 将不再在 `this` 对象上全局注册 `$notify` 方法，这意味着 `this` 对象上将无法访问到 `$notify`。\n\n#### 兼容方案\n\n为了便于代码迁移，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `Notify` 对象来兼容原有代码。\n\n```js\nimport { Notify } from '@vant/compat';\n\nNotify();\nNotify.clear();\n```\n\n`@vant/compat` 中导出的 `Notify` 与 Vant 3 中的 `Notify` 拥有完全一致的 API 和行为，因此你只需要修改 `Notify` 的引用路径，其他代码可以保持不变。\n\n### ImagePreview 调用方式调整\n\nVant 4 中，`ImagePreview` 组件的调用方式也进行了调整，与 `Dialog` 组件的改动一致：\n\n```js\n// Vant 3\nImagePreview(); // 函数调用\nImagePreview.Component; // 组件对象\n\n// Vant 4\nshowImagePreview(); // 函数调用\nImagePreview; // 组件对象\n```\n\n#### 兼容方案\n\n为了便于代码迁移，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `ImagePreview` 对象来兼容原有代码。\n\n```js\nimport { ImagePreview } from '@vant/compat';\n\nImagePreview();\n```\n\n`@vant/compat` 中导出的 `ImagePreview` 与 Vant 3 中的 `ImagePreview` 拥有完全一致的 API 和行为，因此你只需要修改 `ImagePreview` 的引用路径，其他代码可以保持不变。\n\n### 事件命名调整\n\n从 Vant 4 开始，所有的事件均采用 Vue 官方推荐的**驼峰格式**进行命名。\n\n```js\n// Vant 3\nemit('click-input');\n\n// Vant 4\nemit('clickInput');\n```\n\n这项改动**不影响原有的模板代码**，Vue 会自动在模板中对事件名进行格式转换，因此你无须做任何更改。\n\n```html\n<!-- 以下代码可以照常运行，无须做任何更改 -->\n<van-field @click-input=\"onClick\" />\n```\n\n如果你在 JSX 中使用 Vant 组件，需要将监听的事件名调整为驼峰格式，原有的中划线格式将不再生效，新的监听方式更加符合 JSX 本身的规范：\n\n```jsx\n// Vant 3\n<Field onClick-input={onClick} />\n\n// Vant 4\n<Field onClickInput={onClick} />\n```\n\n### 其他 API 调整\n\n在 Vant 4.0 版本中，以下 API 进行了不兼容更新：\n\n#### AddressEdit\n\n- 移除 `show-postal` 属性\n- 移除 `postal-validator` 属性\n- `change-area` 事件的参数调整为 `PickerOption[]` 类型\n- 移除未在文档中标注的 `getArea` 实例方法\n\n#### Popup\n\nPopup 的 CSS 样式进行了一定调整，如果你在 Popup 组件上添加了一些自定义的 CSS 样式，请确认本次升级是否对项目中的 UI 产生影响。\n\n- 默认添加了 `box-sizing: border-box` 样式\n- 调整了 `position=\"center\"` 时的水平居中方式，以解决弹窗宽度无法正确自适应的问题：\n\n```less\n// Vant 3\n.van-popup--center {\n  left: 50%;\n  transform: translate3d(-50%, -50%, 0);\n}\n\n// Vant 4\n.van-popup--center {\n  left: 0;\n  right: 0;\n  width: fit-content;\n  max-width: calc(100vw - var(--van-padding-md) * 2);\n  margin: 0 auto;\n  transform: translateY(-50%);\n}\n```\n\n#### Tabs\n\n- 移除了 `click` 和 `disabled` 事件，请使用 `click-tab` 事件代替\n\n## 样式调整\n\n### 主色调统一\n\n在之前的版本中，Vant 组件有两种主色调，部分组件采用蓝色（#1989fa）作为主色调，另一部分则采用红色（#ee0a24）。\n\n为了保持色彩规范的一致性，我们在 Vant 4 中对主色调进行统一，所有组件均采用蓝色作为主色调。\n\n以下组件的主色调由红色调整为蓝色：\n\n- AddressEdit\n- AddressList\n- Card\n- Calendar\n- Cascader\n- ContactList\n- ContactEdit\n- CouponList\n- Dialog\n- DropdownMenu\n- IndexBar\n- Sidebar\n- Steps\n- Tabs\n- TreeSelect\n\n### 移除 Less 变量\n\n目前 Vant 已经支持了基于 CSS 变量的主题定制能力，相较于 Less 定制更加灵活。因此，Vant 4 将不再提供基于 Less 的主题定制方式。\n\n这意味着 Vant 的 npm 包中将不再会包含 `.less` 样式源文件，只会提供编译后的 `.css` 样式文件。\n\n如果你的项目正在使用旧版的 Less 主题定制，请使用 [ConfigProvider 全局配置](#/zh-CN/config-provider) 组件进行替换。\n\n### 简化 CSS 变量名\n\n考虑到 **代码体积** 和 **使用便捷性**，我们对部分 CSS 变量的名称进行了简化，在变量名中使用了更简短的单词，以减小代码体积。\n\n本次升级涉及以下变量名变更：\n\n```less\nanimation-duration               ->  duration\nanimation-timing-function-enter  ->  ease-out\nanimation-timing-function-leave  ->  ease-in\nbackground-color                 ->  background\nbackground-color-light           ->  background-2\nborder-radius                    ->  radius\nborder-width-base                ->  border-width\nbox-shadow                       ->  shadow\nfont-family                      ->  font\nfont-weight-bold                 ->  font-bold\nprice-integer-font               ->  price-font\ntext-link                        ->  link\ntransition-duration              ->  duration\n```\n\n由于涉及的 CSS 变量较多，建议在代码仓库中进行全局匹配和替换。\n\n对于 `ConfigProvider` 组件，我们新增了 `ConfigProviderThemeVars` 类型定义，提供完整的类型提示。在 TypeScript 代码中，你可以通过类型提示来确保主题变量被正确替换。\n\n```ts\nimport type { ConfigProviderThemeVars } from 'vant';\n\nconst themeVars: ConfigProviderThemeVars = {\n  sliderBarHeight: '4px',\n};\n```\n","packages/vant/docs/markdown/quickstart.en-US.md":"# Quickstart\n\n## Install\n\n### npm\n\nUsing `npm` to install:\n\n```bash\n# install latest Vant for Vue 3 project\nnpm i vant\n\n# install Vant 2 for Vue 2 project\nnpm i vant@latest-v2\n```\n\nUsing `yarn`, `pnpm`, or `bun`:\n\n```bash\n# with yarn\nyarn add vant\n\n# with pnpm\npnpm add vant\n\n# with Bun\nbun add vant\n```\n\n### Using in a New Project\n\nIf you need to create a new project, we recommend using [Rsbuild](https://github.com/web-infra-dev/rsbuild), [Vite](https://vitejs.dev/) or [Nuxt framework](https://nuxtjs.org/).\n\n#### Rsbuild\n\nRsbuild is a build tool based on Rspack, developed by the author of Vant, with first-class build speed and development experience, providing first-priority support for Vant.\n\nYou can create a Rsbuild project with the following command:\n\n```bash\nnpm create rsbuild@latest\n```\n\nPlease visit the [Rsbuild repository](https://github.com/web-infra-dev/rsbuild) for more information.\n\n#### Example\n\nHere are the example projects provided by Vant official. You can clone these projects and copy the code.\n\n- [vant-demo - rsbuild](https://github.com/vant-ui/vant-demo/tree/master/vant/rsbuild): Build an application using Vue 3, Vant 4, and Rsbuild.\n- [vant-demo - vite](https://github.com/vant-ui/vant-demo/tree/master/vant/vite): Build an application using Vue 3, Vant 4, and Vite.\n- [vant-demo - nuxt3](https://github.com/vant-ui/vant-demo/tree/master/vant/nuxt3): Build an application using Vue 3, Nuxt 3, and Vant 4.\n\n### CDN\n\nIf you only need to develop a simple HTML page, you can directly include the CDN links in the HTML file. After that, you can access all the components through the global variable `vant`.\n\n```html\n<!-- import style -->\n<link\n  rel=\"stylesheet\"\n  href=\"https://fastly.jsdelivr.net/npm/vant@4/lib/index.css\"\n/>\n\n<!-- import script -->\n<script src=\"https://fastly.jsdelivr.net/npm/vue@3\"></script>\n<script src=\"https://fastly.jsdelivr.net/npm/vant@4/lib/vant.min.js\"></script>\n\n<script>\n  // Render the Button component\n  const app = Vue.createApp({\n    template: `<van-button>Button</van-button>`,\n  });\n  app.use(vant);\n\n  // Register Lazyload directive\n  app.use(vant.Lazyload);\n\n  // Call function component\n  vant.showToast('Message');\n\n  app.mount('#app');\n</script>\n```\n\n#### Free CDN\n\nYou can use Vant through these free CDN services:\n\n- [jsdelivr](https://www.jsdelivr.com/package/npm/vant)\n- [cdnjs](https://cdnjs.com/libraries/vant)\n- [unpkg](https://unpkg.com/)\n\nNote: Free CDN is generally used for making prototypes or personal projects. It is not recommended to use free CDN in production environment.\n\nFor enterprise developers, we recommend:\n\n- install with npm, use build tools to bundle it\n- download the scripts, host it on your own server\n\n## Usage\n\n### Basic Usage\n\nThe basic usage of Vant components:\n\n```js\nimport { createApp } from 'vue';\n// 1. Import the components you need\nimport { Button } from 'vant';\n// 2. Import the components style\nimport 'vant/lib/index.css';\n\nconst app = createApp();\n\n// 3. Register the components you need\napp.use(Button);\n```\n\n> Tip: Vant supports Tree Shaking by default, so you don't need to configure any plugins, the unused JS code will be removed by Tree Shaking, but CSS styles cannot be optimized by it.\n\n### Import on demand\n\nIf you are using Rsbuild, Vite, webpack or vue-cli, you can use [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components), this plugin can help you to auto importing components.\n\nVant officially wrote an automatic import style parser [@vant/auto-import-resolver](https://github.com/youzan/vant/tree/main/packages/vant-auto-import-resolver) based on `unplugin-vue-components`, both of which are used together.\n\nCompared with conventional usage, this method can introduce the CSS style of components on demand, thus reducing part of the code volume, but it will become more cumbersome to use. If the business's volume requirements for CSS are not particularly extreme, we recommend a simpler general usage.\n\n#### 1. Install Plugin\n\n```bash\n# with npm\nnpm i @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# with yarn\nyarn add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# with pnpm\npnpm add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# with Bun\nbun add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n```\n\n#### 2. Configure Plugin\n\nFor Rsbuild based project，configure the plugin in the `rsbuild.config.js` file:\n\n```js\nimport { defineConfig } from '@rsbuild/core';\nimport { pluginVue } from '@rsbuild/plugin-vue';\nimport AutoImport from 'unplugin-auto-import/rspack';\nimport Components from 'unplugin-vue-components/rspack';\nimport { VantResolver } from '@vant/auto-import-resolver';\n\nexport default defineConfig({\n  plugins: [pluginVue()],\n  tools: {\n    rspack: {\n      plugins: [\n        AutoImport({\n          resolvers: [VantResolver()],\n        }),\n        Components({\n          resolvers: [VantResolver()],\n        }),\n      ],\n    },\n  },\n});\n```\n\nFor Vite based project，configure the plugin in the `vite.config.js` file:\n\n```js\nimport vue from '@vitejs/plugin-vue';\nimport AutoImport from 'unplugin-auto-import/vite';\nimport Components from 'unplugin-vue-components/vite';\nimport { VantResolver } from '@vant/auto-import-resolver';\n\nexport default {\n  plugins: [\n    vue(),\n    AutoImport({\n      resolvers: [VantResolver()],\n    }),\n    Components({\n      resolvers: [VantResolver()],\n    }),\n  ],\n};\n```\n\nFor vue-cli based project，configure the plugin in the `vue.config.js` file:\n\n```js\nconst { VantResolver } = require('@vant/auto-import-resolver');\nconst AutoImport = require('unplugin-auto-import/webpack');\nconst Components = require('unplugin-vue-components/webpack');\n\nmodule.exports = {\n  configureWebpack: {\n    plugins: [\n      // When the version of unplugin-vue-components is less than 0.26.0:\n      AutoImport({ resolvers: [VantResolver()] }),\n      Components({ resolvers: [VantResolver()] }),\n      // when the unplugin-vue-components version is greater than or equal to 0.26.0:\n      AutoImport.default({\n        resolvers: [VantResolver()],\n      }),\n      Components.default({ resolvers: [VantResolver()] }),\n    ],\n  },\n};\n```\n\nFor webpack based project，configure the plugin in the `webpack.config.js` file:\n\n```js\nconst { VantResolver } = require('@vant/auto-import-resolver');\nconst AutoImport = require('unplugin-auto-import/webpack');\nconst Components = require('unplugin-vue-components/webpack');\n\nmodule.exports = {\n  plugins: [\n    // When the version of unplugin-vue-components is less than 0.26.0:\n    AutoImport({ resolvers: [VantResolver()] }),\n    Components({ resolvers: [VantResolver()] }),\n    // when the unplugin-vue-components version is greater than or equal to 0.26.0:\n    AutoImport.default({\n      resolvers: [VantResolver()],\n    }),\n    Components.default({ resolvers: [VantResolver()] }),\n  ],\n};\n```\n\n#### 3. Using Components\n\nThen you can using components from Vant in the template, the `unplugin-vue-components` will automatically import the corresponding Vant components,`@vant/auto-import-resolver` The corresponding component style will be automatically introduced.\n\n```html\n<template>\n  <van-button type=\"primary\" />\n</template>\n```\n\n`unplugin-auto-import` will automatically import the corresponding Vant API and styles.\n\n```html\n<script>\n  showToast('No need to import showToast');\n</script>\n```\n\n#### Tips\n\n- \"Full Import\" and \"On-demand Import\" should not be used at the same time, otherwise it will lead to problems such as code duplication and style overrides.\n- During use, if the component cannot be imported, because `unplugin-vue-components` is not a plug-in officially maintained by `Vant`, it is recommended to give feedback under the [unplugin/unplugin-vue-components](https://github.com/antfu/unplugin/unplugin-vue-components) repository.\n- when the version number of `unplugin-vue-components` is >= 0.26.0, for `webpack`, `vue-cli`, and `rspack`, you need to use `ComponentsPlugin.default` to register.\n- `@vant/auto-import-resolver` provides some configuration options. Please refer to the [README document](https://github.com/youzan/vant/tree/main/packages/vant-auto-import-resolver) for more information.\n- If it is a similar problem that the style does not take effect, feedback under the `Vant` repository.\n\n## With Frameworks\n\n### Use Vant in Nuxt 3\n\nWhen using Vant in Nuxt 3, you can use [vant-nuxt](https://github.com/vant-ui/vant-nuxt), this module can help you to auto importing components and reduce CSS file size.\n\n#### 1. Install Module\n\n```bash\n# with npm\nnpm i @vant/nuxt -D\n\n# with yarn\nyarn add @vant/nuxt -D\n\n# with pnpm\npnpm add @vant/nuxt -D\n\n# with Bun\nbun add @vant/nuxt -D\n```\n\n#### 2. Add Module\n\nadd the module in the `nuxt.config.js` file:\n\n```js\nexport default defineNuxtConfig({\n  modules: ['@vant/nuxt'],\n});\n```\n\n#### 3. Using Components\n\nThen you can using components from Vant in the template, Go to the [Nuxt documentation](https://nuxt.com/docs/guide/directory-structure/components) to learn more.\n\n```html\n<template>\n  <van-button type=\"primary\" @click=\"showToast('toast')\">button</van-button>\n  <VanButton type=\"success\" @click=\"showNotify('notify')\">button</VanButton>\n  <LazyVanButton type=\"default\">lazy button</LazyVanButton>\n</template>\n```\n","packages/vant/docs/markdown/quickstart.zh-CN.md":"# 快速上手\n\n### 介绍\n\n通过本章节你可以了解到 Vant 的安装方法和基本使用姿势。\n\n## 安装\n\n### 通过 npm 安装\n\n在现有项目中使用 Vant 时，可以通过 `npm` 进行安装：\n\n```bash\n# Vue 3 项目，安装最新版 Vant\nnpm i vant\n\n# Vue 2 项目，安装 Vant 2\nnpm i vant@latest-v2\n```\n\n当然，你也可以通过 `yarn`、`pnpm` 或 `bun` 进行安装：\n\n```bash\n# 通过 yarn 安装\nyarn add vant\n\n# 通过 pnpm 安装\npnpm add vant\n\n# 通过 Bun 安装\nbun add vant\n```\n\n### 在新项目中使用\n\n如果你需要新建一个项目，我们推荐使用 [Rsbuild](https://github.com/web-infra-dev/rsbuild)，[Vite](https://cn.vitejs.dev/) 或 [Nuxt 框架](https://nuxt.com)。\n\n#### Rsbuild\n\nRsbuild 是基于 Rspack 的构建工具，由 Vant 作者开发，具备一流的构建速度和开发体验，对 Vant 提供第一优先级支持。\n\n你可以通过以下命令创建一个 Rsbuild 项目：\n\n```bash\nnpm create rsbuild@latest\n```\n\n请访问 [Rsbuild 仓库](https://github.com/web-infra-dev/rsbuild) 了解更多信息。\n\n#### 示例项目\n\n以下是 Vant 官方提供的一些示例项目，你可以克隆该项目，并直接拷贝代码来使用。\n\n- [vant-demo - rsbuild](https://github.com/vant-ui/vant-demo/tree/master/vant/rsbuild)：使用 Vue 3、Vant 4、Rsbuild 搭建应用\n- [vant-demo - vite](https://github.com/vant-ui/vant-demo/tree/master/vant/vite)：使用 Vue 3、Vant 4、Vite 搭建应用\n- [vant-demo - nuxt3](https://github.com/vant-ui/vant-demo/tree/master/vant/nuxt3)：使用 Vue 3、Nuxt 3、Vant 4 搭建应用。\n\n### 通过 CDN 安装\n\n如果你只需要开发一个简单的 HTML 页面，那么可以直接在 HTML 文件中引入 CDN 链接，之后你可以通过全局变量 `vant` 访问到所有组件。\n\n```html\n<!-- 引入样式文件 -->\n<link\n  rel=\"stylesheet\"\n  href=\"https://fastly.jsdelivr.net/npm/vant@4/lib/index.css\"\n/>\n\n<!-- 引入 Vue 和 Vant 的 JS 文件 -->\n<script src=\"https://fastly.jsdelivr.net/npm/vue@3\"></script>\n<script src=\"https://fastly.jsdelivr.net/npm/vant@4/lib/vant.min.js\"></script>\n\n<script>\n  // 在 #app 标签下渲染一个按钮组件\n  const app = Vue.createApp({\n    template: `<van-button>按钮</van-button>`,\n  });\n  app.use(vant);\n\n  // 通过 CDN 引入时不会自动注册 Lazyload 组件\n  // 可以通过下面的方式手动注册\n  app.use(vant.Lazyload);\n\n  // 调用工具函数，弹出一个 Toast\n  vant.showToast('提示');\n\n  app.mount('#app');\n</script>\n```\n\n#### 免费 CDN\n\n你可以通过以下免费 CDN 服务来使用 Vant:\n\n- [jsdelivr](https://www.jsdelivr.com/package/npm/vant)\n- [cdnjs](https://cdnjs.com/libraries/vant)\n- [unpkg](https://unpkg.com/)\n\n注意：免费 CDN 一般用于制作原型或个人小型项目，不推荐在企业生产环境中使用免费 CDN。\n\n对于企业开发者，建议使用以下方式：\n\n- 通过 npm 引入，并通过构建工具进行打包\n- 下载对应文件，并托管在你自己的服务器或 CDN 上\n\n## 示例\n\n### 示例工程\n\n我们提供了丰富的[示例工程](https://github.com/vant-ui/vant-demo)，通过示例工程你可以了解如下内容：\n\n- 基于 Rsbuild 和 Vant 搭建应用\n- 基于 Vite 和 Vant 搭建应用\n- 基于 Nuxt 和 Vant 搭建应用\n- 基于 Vue CLI 和 Vant 搭建应用\n- 配置按需引入组件\n- 配置基于 Rem 的适配方案\n- 配置基于 Viewport 的适配方案\n- 配置基于 TypeScript 的工程\n\n## 引入组件\n\n### 方法一. 常规用法\n\n下面是使用 Vant 组件的用法示例：\n\n```js\nimport { createApp } from 'vue';\n// 1. 引入你需要的组件\nimport { Button } from 'vant';\n// 2. 引入组件样式\nimport 'vant/lib/index.css';\n\nconst app = createApp();\n\n// 3. 注册你需要的组件\napp.use(Button);\n```\n\nVant 支持多种组件注册方式，除了在 app 上全局注册组件，你也可以选择其他的方式，比如局部注册，详见 [组件注册](#/zh-CN/advanced-usage#zu-jian-zhu-ce) 章节。\n\n> 提示：Vant 默认支持 Tree Shaking，因此你不需要配置任何插件，通过 Tree Shaking 即可移除不需要的 JS 代码，但 CSS 样式无法通过这种方式优化，如果需要按需引入 CSS 样式，请参考下面的方法二。\n\n### 方法二. 按需引入组件样式\n\n在基于 Rsbuild、Vite、webpack 或 vue-cli 的项目中使用 Vant 时，可以使用 [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) 插件，它可以自动引入组件。\n\nVant 官方基于 `unplugin-vue-components` 提供了自动导入样式的解析器 [@vant/auto-import-resolver](https://github.com/youzan/vant/tree/main/packages/vant-auto-import-resolver)，两者可以配合使用。\n\n相比于常规用法，这种方式可以按需引入组件的 CSS 样式，从而减少一部分代码体积，但使用起来会变得繁琐一些。如果业务对 CSS 的体积要求不是特别极致，我们推荐使用更简便的常规用法。\n\n#### 1. 安装插件\n\n```bash\n# 通过 npm 安装\nnpm i @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# 通过 yarn 安装\nyarn add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# 通过 pnpm 安装\npnpm add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# 通过 bun 安装\nbun add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n```\n\n#### 2. 配置插件\n\n如果是基于 [Rsbuild](https://github.com/web-infra-dev/rsbuild) 的项目，在 `rsbuild.config.js` 文件中配置插件：\n\n```js\nimport { defineConfig } from '@rsbuild/core';\nimport { pluginVue } from '@rsbuild/plugin-vue';\nimport AutoImport from 'unplugin-auto-import/rspack';\nimport Components from 'unplugin-vue-components/rspack';\nimport { VantResolver } from '@vant/auto-import-resolver';\n\nexport default defineConfig({\n  plugins: [pluginVue()],\n  tools: {\n    rspack: {\n      plugins: [\n        AutoImport({\n          resolvers: [VantResolver()],\n        }),\n        Components({\n          resolvers: [VantResolver()],\n        }),\n      ],\n    },\n  },\n});\n```\n\n如果是基于 Vite 的项目，在 `vite.config.js` 文件中配置插件：\n\n```js\nimport vue from '@vitejs/plugin-vue';\nimport AutoImport from 'unplugin-auto-import/vite';\nimport Components from 'unplugin-vue-components/vite';\nimport { VantResolver } from '@vant/auto-import-resolver';\n\nexport default {\n  plugins: [\n    vue(),\n    AutoImport({\n      resolvers: [VantResolver()],\n    }),\n    Components({\n      resolvers: [VantResolver()],\n    }),\n  ],\n};\n```\n\n如果是基于 vue-cli 的项目，在 `vue.config.js` 文件中配置插件：\n\n```js\nconst { VantResolver } = require('@vant/auto-import-resolver');\nconst AutoImport = require('unplugin-auto-import/webpack');\nconst Components = require('unplugin-vue-components/webpack');\n\nmodule.exports = {\n  configureWebpack: {\n    plugins: [\n      // 当 unplugin-vue-components 版本小于 0.26.0 时，使用以下写法\n      AutoImport({ resolvers: [VantResolver()] }),\n      Components({ resolvers: [VantResolver()] }),\n      //当 unplugin-vue-components 版本大于等于 0.26.0 时，使用以下写法\n      AutoImport.default({\n        resolvers: [VantResolver()],\n      }),\n      Components.default({ resolvers: [VantResolver()] }),\n    ],\n  },\n};\n```\n\n如果是基于 webpack 的项目，在 `webpack.config.js` 文件中配置插件：\n\n```js\nconst { VantResolver } = require('@vant/auto-import-resolver');\nconst AutoImport = require('unplugin-auto-import/webpack');\nconst Components = require('unplugin-vue-components/webpack');\n\nmodule.exports = {\n  plugins: [\n    // 当 unplugin-vue-components 版本小于 0.26.0 时，使用以下写法\n    AutoImport({ resolvers: [VantResolver()] }),\n    Components({ resolvers: [VantResolver()] }),\n    //当 unplugin-vue-components 版本大于等于 0.26.0 时，使用以下写法\n    AutoImport.default({\n      resolvers: [VantResolver()],\n    }),\n    Components.default({ resolvers: [VantResolver()] }),\n  ],\n};\n```\n\n#### 3. 使用组件和 API\n\n完成以上两步，就可以直接在模板中使用 Vant 组件了，`unplugin-vue-components` 会解析模板并自动注册对应的组件, `@vant/auto-import-resolver` 会自动引入对应的组件样式。\n\n```html\n<template>\n  <van-button type=\"primary\" />\n</template>\n```\n\n`unplugin-auto-import` 会自动导入对应的 Vant API 以及样式。\n\n```html\n<script>\n  showToast('No need to import showToast');\n</script>\n```\n\n#### 使用提示\n\n- 请避免同时使用「全量引入」和「按需引入」这两种引入方式，否则会导致代码重复、样式错乱等问题。\n- 在使用过程中，如果你遇到组件不能导入的问题，因为 unplugin-vue-components 并不是 Vant 官方维护的插件，所以建议到 [unplugin/unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) 仓库下反馈。\n- 当 `unplugin-vue-components` 的版本号 >= 0.26.0 时，对于 `webpack`、`vue-cli` 和 `rspack`，你需要使用 `ComponentsPlugin.default` 进行注册。\n- `@vant/auto-import-resolver` 提供了一些配置项，请参考 [README 文档](https://github.com/youzan/vant/tree/main/packages/vant-auto-import-resolver) 来了解更多。\n- 如果是样式不生效的相关问题，你可以在 Vant 仓库下反馈。\n\n## 在框架中使用\n\n### 在 Nuxt 3 中使用\n\n在 Nuxt 3 中使用 Vant 时，可以使用 [vant-nuxt](https://github.com/vant-ui/vant-nuxt) 模块，它可以自动引入组件，并按需引入的样式（包括函数组件）。\n\n#### 1. 安装模块\n\n```bash\n# 通过 npm 安装\nnpm i @vant/nuxt -D\n\n# 通过 yarn 安装\nyarn add @vant/nuxt -D\n\n# 通过 pnpm 安装\npnpm add @vant/nuxt -D\n\n# 通过 Bun 安装\nbun add @vant/nuxt -D\n```\n\n#### 2. 增加模块\n\n在 `nuxt.config.js` 文件中增加模块：\n\n```js\nexport default defineNuxtConfig({\n  modules: ['@vant/nuxt'],\n});\n```\n\n#### 3. 使用组件\n\n完成以上两步，就可以直接在模板中使用 Vant 组件了。前往 [Nuxt 文档](https://nuxt.com/docs/guide/directory-structure/components) 了解更多。\n\n```html\n<template>\n  <van-button type=\"primary\" @click=\"showToast('toast')\">button</van-button>\n  <VanButton type=\"success\" @click=\"showNotify('notify')\">button</VanButton>\n  <LazyVanButton type=\"default\">lazy button</LazyVanButton>\n</template>\n```\n\n## 迁移提示\n\n### 移除 babel-plugin-import\n\n从 Vant 4.0 版本开始，将不再支持 `babel-plugin-import`，请移除项目中依赖的 `babel-plugin-import` 插件。\n\n只需要删除 `babel.config.js` 中的以下代码即可：\n\n```diff\nmodule.exports = {\n  plugins: [\n-    ['import', {\n-      libraryName: 'vant',\n-      libraryDirectory: 'es',\n-      style: true\n-    }, 'vant']\n  ]\n};\n```\n\n#### 收益\n\n移除 `babel-plugin-import` 有以下收益：\n\n- 不再强依赖 babel，项目可以使用 esbuild、swc 等更高效的编译工具，大幅度提升编译效率。\n- 不再受到 `babel-plugin-import` 的 import 写法限制，可以从 vant 中导入除了组件以外的其他内容，比如 Vant 4 中新增的 `showToast` 等方法。\n\n```ts\nimport { showToast, showDialog } from 'vant';\n```\n","packages/vant/docs/markdown/release-note-v4.en-US.md":"# 4.0 Release Note\n\n### Introduction\n\nAfter a year of iterations, Vant 4.0 has been officially released, which is the fourth major version of Vant since it was open-sourced in 2017.\n\nIn this iteration, Vant supports the dark mode, adds five new components, improves the utility function API, and refactors components such as Picker, while continuing to make improvements in lightweighting and usability.\n\n### Dark mode support\n\n**Vant 4.0 supports switching all components to dark mode.**\n\nSimply set the `theme` attribute of the [ConfigProvider component](/vant/#/en-US/config-provider) to `dark` to switch to dark mode, which will switch all Vant components on the page to a dark style.\n\n```html\n<van-config-provider theme=\"dark\">\n  <!-- child components -->\n</van-config-provider>\n```\n\n![](https://user-images.githubusercontent.com/7237365/205472724-6c9ee0df-df10-4f9b-84b6-081576bdcea9.png)\n\nAt the same time, the Vant 4.0 document also supports switching to dark mode:\n\n![](https://user-images.githubusercontent.com/7237365/205472729-fefc9053-1866-4812-8b97-ee0ba5d47230.png)\n\n### Several new components\n\n**Vant 4.0 contains the following new components:**\n\n- [BackTop](/vant/#/en-US/back-top): Used to back to the top of the page.\n- [TimePicker](/vant/#/en-US/time-picker): Used for time selection, including hours, minutes, and seconds.\n- [DatePicker](/vant/#/en-US/time-picker): Used for date selection, including year, month, and day.\n- [PickerGroup](/vant/#/en-US/picker-group): Used to combine multiple Picker components, allow users to select multiple value.\n- [SkeletonItems](/vant/#/en-US/skeleton): Customize the skeleton through subcomponents such as SkeletonTitle, SkeletonImage, and SkeletonAvatar.\n\nAmong them, TimePicker and DatePicker are split from the old DatetimePicker component, and the DatetimePicker component is removed. You can use PickerGroup to get the interactive effect of selecting the date and time at the same time.\n\n![](https://user-images.githubusercontent.com/7237365/205474243-14e0a87c-dcfa-4229-9a16-f6ebf910b621.png)\n\n### Keep it lightweight\n\n**Vant 4.0 has a 30% reduction in installation size, keeping bundle size lightweight.**\n\nAs the npm ecosystem grows, node_modules are eating up our disk space. To alleviate the node_modules black hole and speed up installation, we have optimized Vant's npm dependencies and build outputs.\n\nCompared with Vant 3.6.2, the installation size of Vant 4.0.0 has been reduced from 7MB to 5MB. In contrast, the installation size of mainstream component libraries in the community is generally between 15MB and 80MB. You can check the installation size of npm packages through [packagephobia](https://packagephobia.com/result?p=vant).\n\n![](https://user-images.githubusercontent.com/7237365/205470714-e1828299-4df2-40f4-b7cc-f65971fe4567.png)\n\nIn terms of bundle size, this update still increases the size without increasing the price, and the size after Minified + Gzipped remains below 70KB:\n\n![](https://user-images.githubusercontent.com/7237365/205474583-f2d8226f-e089-42d7-8326-3c874dcf1784.png)\n\n### Unify the primary color\n\n**Vant 4.0 unifies the primary color of all components.**\n\nIn the previous version, Vant components had two primary colors, some components used blue `#1989fa` as their primary color, and others used red `#ee0a24`.\n\nTo keep the color specification consistent, we have unified the primary color in Vant 4, and all components use blue as the primary color.\n\n![](https://user-images.githubusercontent.com/7237365/205472726-a0552833-f99d-447a-acce-051ec7ebdbe1.png)\n\nNow that the primary color is unified, theme customization becomes easier. For example, you can override the `--van-primary-color` CSS variable to set the primary color of all components to green:\n\n```css\n:root {\n  --van-primary-color: #07c160;\n}\n```\n\n### Import method adjustment as needed\n\n**Vant 4.0 no longer uses babel-plugin-import for on-demand import.**\n\nIn the early days, most component libraries used `babel-plugin-import` to achieve on-demand import, which means that component libraries will strongly rely on Babel compilation. Starting from Vant 4.0, `babel-plugin-import` is no longer supported, which has the following main advantages:\n\n- Instead of relying heavily on Babel compilation, projects can use modern compilation tools such as SWC and esbuild to improve compilation efficiency.\n\n![](https://user-images.githubusercontent.com/7237365/205478241-dba3c4ed-152c-4892-9e74-1a0d978be314.png)\n\n- No longer subject to the import restrictions of `babel-plugin-import`, you can import content other than Vant components, such as the new `showToast` method in Vant 4, or the `buttonProps` object:\n\n```ts\nimport { showToast, buttonProps } from 'vant';\n```\n\nIn terms of bundle size, removing `babel-plugin-import` will not affect on the JS size of the project, because Vant supports tree shaking by default to remove unnecessary JS code by default, and CSS code can be imported on demand via [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components). For detailed usage, please refer to [\"Quick Start\"](/vant/#/en-US/quickstart).\n\n### Style variable type hints\n\n**Vant 4.0 provides type hints for style variables.**\n\nVant provides more than 700 style variables, which you can modify through CSS code or `ConfigProvider` component. In Vant 4.0, we have added the `ConfigProviderThemeVars` type to provide type hints for style variables.\n\nSo when writing TypeScript code, you can use type hints to complete theme variable names:\n\n![](https://user-images.githubusercontent.com/7237365/205478960-c284e272-a394-4098-ad0f-eda72e74f9f7.png)\n\n### Picker component refactoring\n\n**Vant 4.0 refactored the Picker component, as well as the Picker-based Area and DatetimePicker components.**\n\nIn the previous version, the API design of the `Picker` component was not sensible enough, causing people to often encounter problems when using it, such as:\n\n- The columns data format of Picker is unreasonable, which is easy to cause misunderstanding.\n- The data flow of Picker is not clear, exposing too many instance methods to operate on the data.\n- The logic of DatetimePicker is too complex, and bugs often occur in borderline scenarios.\n\nTo solve the above problems, we refactored the `Picker` component in Vant 4.0, and also refactored the `Area` and `DatetimePicker` components derived from `Picker`.\n\nIf these three components are used in your project, please read the [\"Upgrade Guide\"](/vant/#/en-US/migrate-from-v3) to upgrade.\n\n### Component Utils Adjustment\n\n**Vant 4.0 adjusts the usage of component utility functions to be more intuitive.**\n\nVant 3 provides some component utils, such as calling the `Dialog()` function, which can quickly invoke the global Dialog component, and `Dialog.Component` is the component object corresponding to `Dialog`.\n\n```ts\n// function call\nDialog({ message: 'Hello World!' });\n\n// component registration\napp.use('van-dialog', Dialog.Component);\n```\n\nThe above API design leads to usage differences between Dialog and other components, and is easily abused; it also prevents `unplugin-vue-components` from automatically importing Dialog and other components.\n\nTo be more intuitive, we have adjusted the calling method of component utils in Vant 4. The affected functions include `Dialog()`, `Toast()`, `Notify()` and `ImagePreview()`. Taking Dialog as an example, we rename the `Dialog()` function to `showDialog()`, and let `Dialog` directly point to the component object.\n\n```ts\n// function call\nshowDialog({ message: 'Hello World!' });\n\n// component registration\napp.use('van-dialog', Dialog);\n```\n\nTo facilitate the migration of existing code to Vant 4.0, we provide a compatibility solution. You can use the `Dialog()` function exported from `@vant/compat` to be compatible with the original code.\n\n```js\nimport { Dialog } from '@vant/compat';\n\nDialog({ message: 'Hello World!' });\n```\n\nThe `Dialog()` exported in `@vant/compat` has exactly the same API and behavior as `Dialog()` in Vant 3, so when upgrading, you only need to change its reference path, and the rest of the code can remain constant. After upgrading the project to Vant 4.0, it is recommended to gradually replace it with the new `showDialog()` and other methods in iterations, and remove the `@vant/compat` package.\n\n### Event naming adjustment\n\n**Vant 4.0 changes the event name to camel case.**\n\nStarting from Vant 4, all events are named in camelCase format recommended by Vue.\n\n```js\n// Vant 3\nemit('click-input');\n\n// Vant 4\nemit('clickInput');\n```\n\nThis change **does not affect the original template code**, Vue will automatically format the event name in the template, so you don't need to make any changes.\n\n```html\n<!-- The following code works as usual without any changes -->\n<van-field @click-input=\"onClick\" />\n```\n\nIf you are using the Vant component in JSX, you will need to change the event name to camel case, the original dash format will no longer take effect, and the new monitoring method is more in line with JSX's own specifications:\n\n```jsx\n// Vant 3\n<Field onClick-input={onClick} />\n\n// Vant 4\n<Field onClickInput={onClick} />\n```\n\n### Remove Less variables\n\n**Vant 4.0 no longer supports theme customization via Less variables.**\n\nCurrently Vant already supports theme customization based on CSS variables, which is more flexible than Less customization. Therefore, Vant 4 will no longer provide Less-based theme customization. This means that Vant's npm package will no longer contain `.less` style source files, only the compiled `.css` style files will be provided.\n\nIf your project is using an old version of Less theme customization, please use [ConfigProvider global configuration](#/en-US/config-provider) to replace it.\n\n### Vant Cli 5.0\n\n**This update also releases Vant Cli 5.0.**\n\n[Vant Cli](https://github.com/youzan/vant/tree/main/packages/vant-cli) is the underlying component library construction tool of Vant. The content of this update includes:\n\n- Upgrade Vite to version 3.0, and upgrade related Vite plugins.\n- The `stylelint` and `@vant/stylelint-config` dependencies are no longer installed by default, you can install them yourself if needed:\n\n```bash\nnpm add stylelint@13 @vant/stylelint-config\n```\n\n- The `gh-pages` dependency is no longer installed by default, please update package.json as follows:\n\n```diff\n- \"release:site\": \"pnpm build:site && gh-pages -d site-dist\",\n+ \"release:site\": \"pnpm build:site && npx gh-pages -d site-dist\",\n```\n\n### Version Information\n\n**Currently both [Vant official website](/vant/) and npm latest tag point to Vant 4.0.**\n\nWe have prepared a complete upgrade guide for Vant 4.0, please read [Upgrade from v3 to v4](/vant/#/en-US/migrate-from-v3) to upgrade.\n\nThe maintenance status of each version of Vant is as follows:\n\n| Name   | Framework | Release Date | Maintenance Status |\n| ------ | --------- | ------------ | ------------------ |\n| Vant 4 | Vue 3     | `2022.12`    | Long-term support  |\n| Vant 3 | Vue 3     | `2020.12`    | End of life        |\n| Vant 2 | Vue 2     | `2019.06`    | End of life        |\n| Vant 1 | Vue 2     | `2018.03`    | End of life        |\n\n### Finally\n\nThanks to all the friends who contributed to the development of Vant 4.0, thanks to all developers who use Vant, and hope that everyone will keep walking on the road of open source.\n\n![](https://user-images.githubusercontent.com/7237365/205481230-fdd89482-86ad-40c8-b81f-4af0789f8488.png)\n","packages/vant/docs/markdown/release-note-v4.zh-CN.md":"# 4.0 版本介绍\n\n### 引言\n\n历经一年的迭代，Vant 4.0 版本已正式发布，这是 Vant 自 2017 年开源以来发布的第四个重要版本。\n\n在本次迭代中，Vant 支持了深色模式，增加五个新组件，改善工具函数 API 并重构 Picker 等组件，同时继续在轻量化和易用性方面做出改进。\n\n### 支持深色模式\n\n**Vant 4.0 支持切换所有组件为深色模式。**\n\n只需要把 [ConfigProvider 组件](/vant/#/zh-CN/config-provider)的 `theme` 属性设置为 `dark`，即可切换为深色模式，将页面上的所有 Vant 组件变成深色风格。\n\n```html\n<van-config-provider theme=\"dark\">\n  <!-- child components -->\n</van-config-provider>\n```\n\n![](https://user-images.githubusercontent.com/7237365/205472724-6c9ee0df-df10-4f9b-84b6-081576bdcea9.png)\n\n同时，Vant 4.0 文档也已支持切换为深色模式：\n\n![](https://user-images.githubusercontent.com/7237365/205472729-fefc9053-1866-4812-8b97-ee0ba5d47230.png)\n\n### 几个新组件\n\n**Vant 4.0 包含以下新组件：**\n\n- [BackTop 回到顶部](/vant/#/zh-CN/back-top)：返回页面顶部的操作按钮。\n- [TimePicker 时间选择器](/vant/#/zh-CN/time-picker)：用于时间选择，包括时、分、秒。\n- [DatePicker 日期选择器](/vant/#/zh-CN/date-picker)：用于日期选择，包括年、月、日。\n- [PickerGroup 选择器组](/vant/#/zh-CN/picker-group)：用于结合多个 Picker 选择器组件，在一次交互中完成多个值的选择。\n- [Skeleton 骨架屏子组件](/vant/#/zh-CN/skeleton)：通过 SkeletonTitle、SkeletonImage、SkeletonAvatar 等子组件来自定义骨架屏。\n\n其中，TimePicker 和 DatePicker 由旧版的 DatetimePicker 组件拆分而来，DatetimePicker 组件不再提供。你可以通过 PickerGroup 来实现同时选择日期和时间的交互效果。\n\n![](https://user-images.githubusercontent.com/7237365/205474243-14e0a87c-dcfa-4229-9a16-f6ebf910b621.png)\n\n### 保持轻量\n\n**Vant 4.0 的安装体积降低 30%，包体积保持轻量。**\n\n随着 npm 生态的发展，node_modules 正在吞噬我们的磁盘空间。为了缓解 node_modules 黑洞、加快安装速度，我们对 Vant 的 npm 依赖和构建产物进行了优化。\n\n相较于 Vant 3.6.2 版本，Vant 4.0.0 版本的安装体积由 7MB 下降至 5MB。作为对比，社区中主流组件库的安装体积普遍在 15MB ~ 80MB。你可以通过 [packagephobia](https://packagephobia.com/result?p=vant) 来查询 npm 包的安装体积。\n\n![](https://user-images.githubusercontent.com/7237365/205470714-e1828299-4df2-40f4-b7cc-f65971fe4567.png)\n\n在包体积上，本次更新依然加量不加价，Minified + Gzipped 后的体积保持在 70KB 以下：\n\n![](https://user-images.githubusercontent.com/7237365/205474583-f2d8226f-e089-42d7-8326-3c874dcf1784.png)\n\n### 统一主色调\n\n**Vant 4.0 统一了所有组件的主色调。**\n\n在之前的版本中，Vant 组件有两种主色调，部分组件采用蓝色 `#1989fa` 作为主色调，另一部分则采用红色 `#ee0a24`。\n\n为了保持色彩规范的一致性，我们在 Vant 4 中对主色调进行统一，所有组件均采用蓝色作为主色调。\n\n![](https://user-images.githubusercontent.com/7237365/205472726-a0552833-f99d-447a-acce-051ec7ebdbe1.png)\n\n统一主色调后，主题定制会变得更加容易。比如，你可以覆盖 `--van-primary-color` 这个 CSS 变量，将所有组件的主色调设置为绿色：\n\n```css\n:root {\n  --van-primary-color: #07c160;\n}\n```\n\n### 按需引入方式调整\n\n**Vant 4.0 不再使用 babel-plugin-import 实现按需引入。**\n\n在早期，组件库大多使用 `babel-plugin-import` 实现按需引入，这意味着组件库会强依赖 Babel 编译。从 Vant 4.0 开始，将不再支持 `babel-plugin-import`，主要带来以下收益：\n\n- 不再强依赖 Babel 编译，项目可以使用 SWC、esbuild 等现代编译工具，进而提升编译效率。\n\n![](https://user-images.githubusercontent.com/7237365/205478241-dba3c4ed-152c-4892-9e74-1a0d978be314.png)\n\n- 不再受到 `babel-plugin-import` 的 import 限制，可以从 Vant 中导入除组件以外的内容，比如 Vant 4 中新增的 `showToast` 方法，或是 `buttonProps` 对象：\n\n```ts\nimport { showToast, buttonProps } from 'vant';\n```\n\n在包体积方面，移除 `babel-plugin-import` 对项目的 JS 体积不会有影响，因为 Vant 默认支持通过 Tree Shaking 来移除不需要的 JS 代码，而 CSS 代码可以通过 [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) 插件实现按需引入，详细用法请参考 [「快速上手」](/vant/#/zh-CN/quickstart)。\n\n### 样式变量类型提示\n\n**Vant 4.0 提供了样式变量的类型提示。**\n\nVant 提供了 700 多个样式变量，你可以通过 CSS 代码或 `ConfigProvider` 组件修改这些样式变量。在 Vant 4.0 中，我们新增了 `ConfigProviderThemeVars` 类型，以提供样式变量的类型提示。\n\n因此在编写 TypeScript 代码时，你可以通过类型提示来补全主题变量名称：\n\n![](https://user-images.githubusercontent.com/7237365/205478960-c284e272-a394-4098-ad0f-eda72e74f9f7.png)\n\n### Picker 组件重构\n\n**Vant 4.0 重构了 Picker 组件，以及基于 Picker 的 Area 和 DatetimePicker 组件。**\n\n在之前的版本中，`Picker` 组件的 API 设计不够合理，导致大家在使用时经常遇到问题，比如：\n\n- Picker 的 columns 数据格式不合理，容易产生误解。\n- Picker 的数据流不清晰，暴露了过多的实例方法来对数据进行操作。\n- DatetimePicker 的逻辑过于复杂，经常在边界场景下出现 bug。\n\n为了解决上述问题，我们在 Vant 4.0 中对 `Picker` 组件进行了重构，同时也重构了基于 `Picker` 派生出的 `Area` 和 `DatetimePicker` 组件。\n\n如果你的项目中使用了这三个组件，请阅读 [「升级指南」](/vant/#/zh-CN/migrate-from-v3) 进行升级。\n\n### 组件工具函数调整\n\n**Vant 4.0 调整了组件工具函数的用法，使其更符合直觉。**\n\nVant 3 提供了一些组件工具函数，比如调用 `Dialog()` 函数，可以快速唤起全局的弹窗组件，而 `Dialog.Component` 才是 `Dialog` 对应的组件对象。\n\n```ts\n// 函数调用\nDialog({ message: 'Hello World!' });\n\n// 组件注册\napp.use('van-dialog', Dialog.Component);\n```\n\n以上 API 设计导致 Dialog 等支持工具函数的组件与常规组件存在用法差异，容易被误用；同时也导致 `unplugin-vue-components` 无法自动引入 Dialog 等组件。\n\n为了更符合直觉，我们在 Vant 4 中调整了组件工具函数的调用方式，受影响的函数包括 `Dialog()`、`Toast()`、`Notify()` 和 `ImagePreview()`。以 Dialog 为例，我们将 `Dialog()` 函数重命名为 `showDialog()`，并让 `Dialog` 直接指向组件对象。\n\n```ts\n// 函数调用\nshowDialog({ message: 'Hello World!' });\n\n// 组件注册\napp.use('van-dialog', Dialog);\n```\n\n为了便于存量代码迁移至 Vant 4.0，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `Dialog()` 函数来兼容原有代码。\n\n```js\nimport { Dialog } from '@vant/compat';\n\nDialog({ message: 'Hello World!' });\n```\n\n`@vant/compat` 中导出的 `Dialog()` 与 Vant 3 中的 `Dialog()` 拥有完全一致的 API 和行为，因此在升级时，你只需要修改它的引用路径，其余代码可以保持不变。在项目完成升级到 Vant 4.0 后，建议在迭代中逐步替换为新的 `showDialog()` 等方法，并移除 `@vant/compat` 包。\n\n### 事件命名调整\n\n**Vant 4.0 将事件名改为驼峰格式。**\n\n从 Vant 4 开始，所有的事件均采用 Vue 官方推荐的驼峰格式进行命名。\n\n```js\n// Vant 3\nemit('click-input');\n\n// Vant 4\nemit('clickInput');\n```\n\n这项改动**不影响原有的模板代码**，Vue 会自动在模板中对事件名进行格式转换，因此你无须做任何更改。\n\n```html\n<!-- 以下代码可以照常运行，无须做任何更改 -->\n<van-field @click-input=\"onClick\" />\n```\n\n如果你在 JSX 中使用 Vant 组件，需要将监听的事件名调整为驼峰格式，原有的中划线格式将不再生效，新的监听方式更加符合 JSX 本身的规范：\n\n```jsx\n// Vant 3\n<Field onClick-input={onClick} />\n\n// Vant 4\n<Field onClickInput={onClick} />\n```\n\n### 移除 Less 变量\n\n**Vant 4.0 不再支持通过 Less 变量定制主题。**\n\n目前 Vant 已经支持基于 CSS 变量的主题定制，相较于 Less 定制更加灵活。因此，Vant 4 将不再提供基于 Less 的主题定制。这意味着 Vant 的 npm 包中将不再会包含 `.less` 样式源文件，仅会提供编译后的 `.css` 样式文件。\n\n如果你的项目正在使用旧版的 Less 主题定制，请使用 [ConfigProvider 全局配置](#/zh-CN/config-provider) 进行替换。\n\n### Vant Cli 5.0\n\n**本次更新同步发布了 Vant Cli 5.0 版本。**\n\n[Vant Cli](https://github.com/youzan/vant/tree/main/packages/vant-cli) 是 Vant 底层的组件库构建工具，本次更新内容有：\n\n- 升级 Vite 到 3.0 版本，并对相关的 Vite 插件进行升级。\n- 不再默认安装 `stylelint` 和 `@vant/stylelint-config` 依赖，需要的话可以自行安装：\n\n```bash\nnpm add stylelint@13 @vant/stylelint-config\n```\n\n- 不再默认安装 `gh-pages` 依赖，请按照如下方式更新 package.json：\n\n```diff\n- \"release:site\": \"pnpm build:site && gh-pages -d site-dist\",\n+ \"release:site\": \"pnpm build:site && npx gh-pages -d site-dist\",\n```\n\n### 版本信息\n\n**目前 [Vant 官网](/vant/) 和 npm latest 标签均已指向 Vant 4.0。**\n\n我们为 Vant 4.0 准备了完整的升级指南，请阅读 [从 v3 升级到 v4](/vant/#/zh-CN/migrate-from-v3) 进行升级。\n\n后续 Vant 各个版本的维护状态如下：\n\n| 名称   | 框架  | 发布时间  | 维护状态              |\n| ------ | ----- | --------- | --------------------- |\n| Vant 4 | Vue 3 | `2022.12` | 长期支持              |\n| Vant 3 | Vue 3 | `2020.12` | 终止支持，不再接受 PR |\n| Vant 2 | Vue 2 | `2019.06` | 终止支持，不再接受 PR |\n| Vant 1 | Vue 2 | `2018.03` | 终止支持，不再接受 PR |\n\n### 最后\n\n感谢在 Vant 4.0 迭代期间做出贡献的朋友们，感谢所有使用 Vant 的开发者，愿大家在开源的道路上步履不停。\n\n![](https://user-images.githubusercontent.com/7237365/205481230-fdd89482-86ad-40c8-b81f-4af0789f8488.png)\n","packages/vant/docs/markdown/use-click-away.en-US.md":"# useClickAway\n\n### Intro\n\nTriggers a callback when user clicks outside of the target element.\n\n## Usage\n\n### Basic Usage\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref } from 'vue';\nimport { useClickAway } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    useClickAway(root, () => {\n      console.log('click outside!');\n    });\n\n    return { root };\n  },\n};\n```\n\n### Custom Event\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref } from 'vue';\nimport { useClickAway } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    useClickAway(\n      root,\n      () => {\n        console.log('touch outside!');\n      },\n      { eventName: 'touchstart' },\n    );\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\ntype Options = {\n  eventName?: string;\n};\n\nfunction useClickAway(\n  target:\n    | Element\n    | Ref<Element | undefined>\n    | Array<Element | Ref<Element | undefined>>,\n  listener: EventListener,\n  options?: Options,\n): void;\n```\n\n### Params\n\n| Name | Description | Type | Default Value |\n| --- | --- | --- | --- |\n| target | Target element, support multiple elements | _Element \\| Ref\\<Element> \\| Array\\<Element \\| Ref\\<Element>>_ | - |\n| listener | Callback function when the outside is clicked | _EventListener_ | - |\n| options | Options | _Options_ | `{ eventName: 'click' }` |\n\n### Options\n\n| Name      | Description | Type     | Default Value |\n| --------- | ----------- | -------- | ------------- |\n| eventName | Event name  | _string_ | `click`       |\n","packages/vant/docs/markdown/use-click-away.zh-CN.md":"# useClickAway\n\n### 介绍\n\n监听点击元素外部的事件。\n\n## 代码演示\n\n### 基本用法\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref } from 'vue';\nimport { useClickAway } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    useClickAway(root, () => {\n      console.log('click outside!');\n    });\n\n    return { root };\n  },\n};\n```\n\n### 自定义事件\n\n通过 `eventName` 选项可以自定义需要监听的事件类型。\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref } from 'vue';\nimport { useClickAway } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    useClickAway(\n      root,\n      () => {\n        console.log('touch outside!');\n      },\n      { eventName: 'touchstart' },\n    );\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\ntype Options = {\n  eventName?: string;\n};\n\nfunction useClickAway(\n  target:\n    | Element\n    | Ref<Element | undefined>\n    | Array<Element | Ref<Element | undefined>>,\n  listener: EventListener,\n  options?: Options,\n): void;\n```\n\n### 参数\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| target | 绑定事件的元素，支持传入数组来绑定多个元素 | _Element \\| Ref\\<Element> \\| Array\\<Element \\| Ref\\<Element>>_ | - |\n| listener | 点击外部时触发的回调函数 | _EventListener_ | - |\n| options | 可选的配置项 | _Options_ | 见下表 |\n\n### Options\n\n| 参数      | 说明           | 类型     | 默认值  |\n| --------- | -------------- | -------- | ------- |\n| eventName | 监听的事件类型 | _string_ | `click` |\n","packages/vant/docs/markdown/use-count-down.en-US.md":"# useCountDown\n\n### Intro\n\nUsed to manage the countdown.\n\n## Usage\n\n### Basic Usage\n\n```html\n<span>Total time：{{ current.total }}</span>\n<span>Remain days：{{ current.days }}</span>\n<span>Remain hours：{{ current.hours }}</span>\n<span>Remain minutes：{{ current.minutes }}</span>\n<span>Remain seconds：{{ current.seconds }}</span>\n<span>Remain milliseconds：{{ current.milliseconds }}</span>\n```\n\n```js\nimport { useCountDown } from '@vant/use';\n\nexport default {\n  setup() {\n    const countDown = useCountDown({\n      time: 24 * 60 * 60 * 1000,\n    });\n\n    countDown.start();\n\n    return {\n      current: countDown.current,\n    };\n  },\n};\n```\n\n### Millisecond\n\n```js\nimport { useCountDown } from '@vant/use';\n\nexport default {\n  setup() {\n    const countDown = useCountDown({\n      time: 24 * 60 * 60 * 1000,\n      millisecond: true,\n    });\n    countDown.start();\n\n    return {\n      current: countDown.current,\n    };\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\ntype CurrentTime = {\n  days: number;\n  hours: number;\n  total: number;\n  minutes: number;\n  seconds: number;\n  milliseconds: number;\n};\n\ntype CountDown = {\n  start: () => void;\n  pause: () => void;\n  reset: (totalTime: number) => void;\n  current: ComputedRef<CurrentTime>;\n};\n\ntype UseCountDownOptions = {\n  time: number;\n  millisecond?: boolean;\n  onChange?: (current: CurrentTime) => void;\n  onFinish?: () => void;\n};\n\nfunction useCountDown(options: UseCountDownOptions): CountDown;\n```\n\n### Params\n\n| Name | Description | Type | Default Value |\n| --- | --- | --- | --- |\n| time | Total time, unit milliseconds | _number_ | - |\n| millisecond | Whether to enable millisecond render | _boolean_ | `false` |\n| onChange | Triggered when count down changed | _(current: CurrentTime) => void_ | - |\n| onFinish | Triggered when count down finished | _() => void_ | - |\n\n### Return Value\n\n| Name    | Description         | Type                    |\n| ------- | ------------------- | ----------------------- |\n| current | Current remain time | _CurrentTime_           |\n| start   | Start count down    | _() => void_            |\n| pause   | Pause count down    | _() => void_            |\n| reset   | Reset count down    | _(time?: number): void_ |\n\n### CurrentTime Structure\n\n| Name         | Description                   | Type     |\n| ------------ | ----------------------------- | -------- |\n| total        | Total time, unit milliseconds | _number_ |\n| days         | Remain days                   | _number_ |\n| hours        | Remain hours                  | _number_ |\n| minutes      | Remain minutes                | _number_ |\n| seconds      | Remain seconds                | _number_ |\n| milliseconds | Remain milliseconds           | _number_ |\n","packages/vant/docs/markdown/use-count-down.zh-CN.md":"# useCountDown\n\n### 介绍\n\n提供倒计时管理能力。\n\n## 代码演示\n\n### 基本用法\n\n```html\n<span>总时间：{{ current.total }}</span>\n<span>剩余天数：{{ current.days }}</span>\n<span>剩余小时：{{ current.hours }}</span>\n<span>剩余分钟：{{ current.minutes }}</span>\n<span>剩余秒数：{{ current.seconds }}</span>\n<span>剩余毫秒：{{ current.milliseconds }}</span>\n```\n\n```js\nimport { useCountDown } from '@vant/use';\n\nexport default {\n  setup() {\n    const countDown = useCountDown({\n      // 倒计时 24 小时\n      time: 24 * 60 * 60 * 1000,\n    });\n\n    // 开始倒计时\n    countDown.start();\n\n    return {\n      current: countDown.current,\n    };\n  },\n};\n```\n\n### 毫秒级渲染\n\n倒计时默认每秒渲染一次，设置 millisecond 选项可以开启毫秒级渲染。\n\n```js\nimport { useCountDown } from '@vant/use';\n\nexport default {\n  setup() {\n    const countDown = useCountDown({\n      time: 24 * 60 * 60 * 1000,\n      millisecond: true,\n    });\n    countDown.start();\n\n    return {\n      current: countDown.current,\n    };\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\ntype CurrentTime = {\n  days: number;\n  hours: number;\n  total: number;\n  minutes: number;\n  seconds: number;\n  milliseconds: number;\n};\n\ntype CountDown = {\n  start: () => void;\n  pause: () => void;\n  reset: (totalTime: number) => void;\n  current: ComputedRef<CurrentTime>;\n};\n\ntype UseCountDownOptions = {\n  time: number;\n  millisecond?: boolean;\n  onChange?: (current: CurrentTime) => void;\n  onFinish?: () => void;\n};\n\nfunction useCountDown(options: UseCountDownOptions): CountDown;\n```\n\n### 参数\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| time | 倒计时时长，单位毫秒 | _number_ | - |\n| millisecond | 是否开启毫秒级渲染 | _boolean_ | `false` |\n| onChange | 倒计时改变时触发的回调函数 | _(current: CurrentTime) => void_ | - |\n| onFinish | 倒计时结束时触发的回调函数 | _() => void_ | - |\n\n### 返回值\n\n| 参数    | 说明                               | 类型                    |\n| ------- | ---------------------------------- | ----------------------- |\n| current | 当前剩余的时间                     | _CurrentTime_           |\n| start   | 开始倒计时                         | _() => void_            |\n| pause   | 暂停倒计时                         | _() => void_            |\n| reset   | 重置倒计时，支持传入新的倒计时时长 | _(time?: number): void_ |\n\n### CurrentTime 格式\n\n| 名称         | 说明                   | 类型     |\n| ------------ | ---------------------- | -------- |\n| total        | 剩余总时间（单位毫秒） | _number_ |\n| days         | 剩余天数               | _number_ |\n| hours        | 剩余小时               | _number_ |\n| minutes      | 剩余分钟               | _number_ |\n| seconds      | 剩余秒数               | _number_ |\n| milliseconds | 剩余毫秒               | _number_ |\n","packages/vant/docs/markdown/use-custom-field-value.en-US.md":"# useCustomFieldValue\n\n### Intro\n\nUsed to custom Field value.\n\n## Usage\n\n### Basic Usage\n\nIf you want to custom Form items, you can insert your component into the `input` slot of the Field component, and call the `useCustomFieldValue` method inside your custom component.\n\n#### MyComponent\n\n```js\n// MyComponent.vue\nimport { ref } from 'vue';\nimport { useCustomFieldValue } from '@vant/use';\n\nexport default {\n  setup() {\n    const myValue = ref(0);\n\n    useCustomFieldValue(() => myValue.value);\n\n    return { myValue };\n  },\n};\n```\n\n#### Form\n\n```html\n<van-form>\n  <van-field name=\"my-field\" label=\"Custom Field\">\n    <template #input>\n      <my-component />\n    </template>\n  </van-field>\n</van-form>\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useCustomFieldValue(customValue: () => unknown): void;\n```\n\n### Params\n\n| Name        | Description                 | Type            | Default Value |\n| ----------- | --------------------------- | --------------- | ------------- |\n| customValue | Function to get field value | _() => unknown_ | -             |\n","packages/vant/docs/markdown/use-custom-field-value.zh-CN.md":"# useCustomFieldValue\n\n### 介绍\n\n用于自定义 Form 组件中的表单项。\n\n## 代码演示\n\n### 基本用法\n\n如果需要自定义表单项，可以在 Field 组件的 `input` 插槽中插入你的自定义组件，并在自定义组件内部调用 `useCustomFieldValue` 方法。\n\n#### 自定义组件\n\n首先，在你的自定义组件中，调用 `useCustomFieldValue` 方法，并传入一个回调函数，这个函数返回值为表单项的值。\n\n```js\n// MyComponent.vue\nimport { ref } from 'vue';\nimport { useCustomFieldValue } from '@vant/use';\n\nexport default {\n  setup() {\n    const myValue = ref(0);\n\n    // 此处传入的值会替代 Field 组件内部的 value\n    useCustomFieldValue(() => myValue.value);\n\n    return { myValue };\n  },\n};\n```\n\n#### 表单\n\n接着，在 Form 组件中嵌入你的自定义组件，当提交表单时，即可获取到自定义表单项的值。\n\n```html\n<van-form>\n  <!-- 这是一个自定义表单项 -->\n  <!-- 当表单提交时，会包括 useCustomFieldValue 中传入的值 -->\n  <van-field name=\"my-field\" label=\"自定义表单项\">\n    <template #input>\n      <my-component />\n    </template>\n  </van-field>\n</van-form>\n```\n\n## API\n\n### 类型定义\n\n```ts\nfunction useCustomFieldValue(customValue: () => unknown): void;\n```\n\n### 参数\n\n| 参数        | 说明               | 类型            | 默认值 |\n| ----------- | ------------------ | --------------- | ------ |\n| customValue | 获取表单项值的函数 | _() => unknown_ | -      |\n","packages/vant/docs/markdown/use-event-listener.en-US.md":"# useEventListener\n\n### Intro\n\nAttaching an event when the component is `mounted` and `activated`, then removing the event when the component is `unmounted` and `deactivated`.\n\n## Usage\n\n### Basic Usage\n\n```js\nimport { ref } from 'vue';\nimport { useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    // attach the resize event to window\n    useEventListener('resize', () => {\n      console.log('window resize');\n    });\n\n    // attach the click event to the body element\n    useEventListener(\n      'click',\n      () => {\n        console.log('click body');\n      },\n      { target: document.body },\n    );\n  },\n};\n```\n\n### Remove Event Listener\n\n`useEventListener` will return a `cleanup` function，you can call it to remove the event listener.\n\n```js\nimport { ref } from 'vue';\nimport { useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    const cleanup = useEventListener('resize', () => {\n      console.log('window resize');\n    });\n\n    cleanup();\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\ntype Options = {\n  target?: EventTarget | Ref<EventTarget>;\n  capture?: boolean;\n  passive?: boolean;\n};\n\nfunction useEventListener(\n  type: string,\n  listener: EventListener,\n  options?: Options,\n): () => void;\n```\n\n### Params\n\n| Name     | Description       | Type            | Default Value |\n| -------- | ----------------- | --------------- | ------------- |\n| type     | Event type        | _string_        | -             |\n| listener | Callback function | _EventListener_ | -             |\n| options  | Options           | _Options_       | -             |\n\n### Options\n\n| Name | Description | Type | Default Value |\n| --- | --- | --- | --- |\n| target | Target element | _EventTarget \\| Ref\\<EventTarget>_ | `window` |\n| capture | Whether to enable capture | _boolean_ | `false` |\n| passive | if true, indicates that the listener will never call `preventDefault()` | _boolean_ | `false` |\n","packages/vant/docs/markdown/use-event-listener.zh-CN.md":"# useEventListener\n\n### 介绍\n\n方便地进行事件绑定，在组件 `mounted` 和 `activated` 时绑定事件，`unmounted` 和 `deactivated` 时解绑事件。\n\n## 代码演示\n\n### 基本用法\n\n```js\nimport { ref } from 'vue';\nimport { useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    // 在 window 上绑定 resize 事件\n    // 未指定监听对象时，默认会监听 window 的事件\n    useEventListener('resize', () => {\n      console.log('window resize');\n    });\n\n    // 在 body 元素上绑定 click 事件\n    useEventListener(\n      'click',\n      () => {\n        console.log('click body');\n      },\n      { target: document.body },\n    );\n  },\n};\n```\n\n### 取消事件监听\n\n`useEventListener` 会返回一个 `cleanup` 函数，调用该函数可以取消事件监听。\n\n```js\nimport { ref } from 'vue';\nimport { useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    const cleanup = useEventListener('resize', () => {\n      console.log('window resize');\n    });\n\n    cleanup();\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\ntype Options = {\n  target?: EventTarget | Ref<EventTarget>;\n  capture?: boolean;\n  passive?: boolean;\n};\n\nfunction useEventListener(\n  type: string,\n  listener: EventListener,\n  options?: Options,\n): () => void;\n```\n\n### 参数\n\n| 参数     | 说明           | 类型            | 默认值 |\n| -------- | -------------- | --------------- | ------ |\n| type     | 监听的事件类型 | _string_        | -      |\n| listener | 事件回调函数   | _EventListener_ | -      |\n| options  | 可选的配置项   | _Options_       | -      |\n\n### Options\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| target | 绑定事件的元素 | _EventTarget \\| Ref\\<EventTarget>_ | `window` |\n| capture | 是否在事件捕获阶段触发 | _boolean_ | `false` |\n| passive | 设置为 `true` 时，表示 `listener` 永远不会调用 `preventDefault` | _boolean_ | `false` |\n","packages/vant/docs/markdown/use-page-visibility.en-US.md":"# usePageVisibility\n\n### Intro\n\nGet the visible state of the page.\n\n## Usage\n\n### Basic Usage\n\n```js\nimport { watch } from 'vue';\nimport { usePageVisibility } from '@vant/use';\n\nexport default {\n  setup() {\n    const pageVisibility = usePageVisibility();\n\n    watch(pageVisibility, (value) => {\n      console.log('visibility: ', value);\n    });\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\ntype VisibilityState = 'visible' | 'hidden';\n\nfunction usePageVisibility(): Ref<VisibilityState>;\n```\n\n### Return Value\n\n| Name | Description | Type |\n| --- | --- | --- |\n| visibilityState | The current visible state of the page, could be `visible` or `hidden` | _Ref\\<VisibilityState>_ |\n","packages/vant/docs/markdown/use-page-visibility.zh-CN.md":"# usePageVisibility\n\n### 介绍\n\n获取页面的可见状态。\n\n## 代码演示\n\n### 基本用法\n\n```js\nimport { watch } from 'vue';\nimport { usePageVisibility } from '@vant/use';\n\nexport default {\n  setup() {\n    const pageVisibility = usePageVisibility();\n\n    watch(pageVisibility, (value) => {\n      console.log('visibility: ', value);\n    });\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\ntype VisibilityState = 'visible' | 'hidden';\n\nfunction usePageVisibility(): Ref<VisibilityState>;\n```\n\n### 返回值\n\n| 参数 | 说明 | 类型 |\n| --- | --- | --- |\n| visibilityState | 页面当前的可见状态，`visible` 为可见，`hidden` 为隐藏 | _Ref\\<VisibilityState>_ |\n","packages/vant/docs/markdown/use-raf.en-US.md":"# useRaf\n\n### Intro\n\nProvide convenient call and cancellation of [requestAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame).\n\n## Usage\n\n### Single Call\n\nBy using the `useRaf` method, you can execute a function before the next browser repaint.\n\n```js\nimport { useRaf } from '@vant/use';\n\nexport default {\n  setup() {\n    let count = 0;\n    useRaf(() => {\n      console.log(++count); // It will only be executed once.\n    });\n  },\n};\n```\n\n### Loop Calls\n\nBy using the `isLoop` option, you can execution of a function repeatedly at a specified interval until it is canceled.\n\n```js\nimport { useRaf } from '@vant/use';\n\nexport default {\n  setup() {\n    let count = 0;\n    const cancelRaf = useRaf(\n      () => {\n        console.log(++count); // Execute infinitely until canceled\n\n        if (count === 5) {\n          cancelRaf();\n        }\n      },\n      {\n        isLoop: true, // Enable the loop\n        interval: 100, // Set call interval\n      },\n    );\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useRaf(\n  callback: () => void,\n  options: {\n    interval?: number;\n    isLoop?: boolean;\n  },\n): void;\n```\n\n### Params\n\n| Name | Description | Type | Default |\n| --- | --- | --- | --- |\n| callback | Callback | _() => void_ | - |\n| options | Options | _{ interval?: number; isLoop?: boolean }_ | _{ interval: 0; isLoop: false }_ |\n","packages/vant/docs/markdown/use-raf.zh-CN.md":"# useRaf\n\n### 介绍\n\n提供便捷的 [requestAnimationFrame](https://developer.mozilla.org/zh-CN/docs/Web/API/window/requestAnimationFrame) 的调用和取消。\n\n## 代码演示\n\n### 单次调用\n\n通过 `useRaf` 方法，可以在下一次浏览器重新绘制之前调用指定的函数。\n\n```js\nimport { useRaf } from '@vant/use';\n\nexport default {\n  setup() {\n    let count = 0;\n    useRaf(() => {\n      console.log(++count); // 只会执行 1 次\n    });\n  },\n};\n```\n\n### 循环调用\n\n通过开启 `isLoop` 选项，你可以按指定的间隔重复执行某个函数，直到被取消。\n\n```js\nimport { useRaf } from '@vant/use';\n\nexport default {\n  setup() {\n    let count = 0;\n    const cancelRaf = useRaf(\n      () => {\n        console.log(++count); // 无限执行，直到被 cancel\n\n        if (count === 5) {\n          cancelRaf();\n        }\n      },\n      {\n        isLoop: true, // 开启循环\n        interval: 100, // 设置调用间隔\n      },\n    );\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\nfunction useRaf(\n  callback: () => void,\n  options: {\n    interval?: number;\n    isLoop?: boolean;\n  },\n): void;\n```\n\n### 参数\n\n| 参数 | 说明 | 类型 | 默认 |\n| --- | --- | --- | --- |\n| callback | 回调函数 | _() => void_ | - |\n| options | 配置参数 | _{ interval?: number; isLoop?: boolean }_ | _{ interval: 0; isLoop: false }_ |\n","packages/vant/docs/markdown/use-rect.en-US.md":"# useRect\n\n### Intro\n\nGet the size of an element and its position relative to the viewport, equivalent to [Element.getBoundingClientRect](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).\n\n## Usage\n\n### Basic Usage\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref, onMounted } from 'vue';\nimport { useRect } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n\n    onMounted(() => {\n      const rect = useRect(root);\n      console.log(rect); // -> the size of an element and its position relative to the viewport\n    });\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useRect(\n  element: Element | Window | Ref<Element | Window | undefined>,\n): DOMRect;\n```\n\n### Return Value\n\n| Name | Description | Type |\n| --- | --- | --- |\n| width | Width of the element | _number_ |\n| height | Height of the element | _number_ |\n| top | The distance from the top to the top-left of the viewport | _number_ |\n| left | The distance from the left to the top-left of the viewport | _number_ |\n| right | The distance from the right to the top-left of the viewport | _number_ |\n| bottom | The distance from the bottom to the top-left of the viewport | _number_ |\n","packages/vant/docs/markdown/use-rect.zh-CN.md":"# useRect\n\n### 介绍\n\n获取元素的大小及其相对于视口的位置，等价于 [Element.getBoundingClientRect](https://developer.mozilla.org/zh-CN/docs/Web/API/Element/getBoundingClientRect)。\n\n## 代码演示\n\n### 基本用法\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref, onMounted } from 'vue';\nimport { useRect } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n\n    onMounted(() => {\n      const rect = useRect(root);\n      console.log(rect); // -> 元素的大小及其相对于视口的位置\n    });\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\nfunction useRect(\n  element: Element | Window | Ref<Element | Window | undefined>,\n): DOMRect;\n```\n\n### 返回值\n\n| 参数   | 说明                       | 类型     |\n| ------ | -------------------------- | -------- |\n| width  | 宽度                       | _number_ |\n| height | 高度                       | _number_ |\n| top    | 顶部与视图窗口左上角的距离 | _number_ |\n| left   | 左侧与视图窗口左上角的距离 | _number_ |\n| right  | 右侧与视图窗口左上角的距离 | _number_ |\n| bottom | 底部与视图窗口左上角的距离 | _number_ |\n","packages/vant/docs/markdown/use-relation.en-US.md":"# useRelation\n\n### Intro\n\nEstablish the association relationship between parent and child components, perform data communication and method invocation, based on `provide` and `inject` implementation.\n\n## Usage\n\n### Basic Usage\n\nUse `useChildren` in parent to associate child components:\n\n```js\nimport { ref } from 'vue';\nimport { useChildren } from '@vant/use';\n\nconst RELATION_KEY = Symbol('my-relation');\n\nexport default {\n  setup() {\n    const { linkChildren } = useChildren(RELATION_KEY);\n\n    const count = ref(0);\n    const add = () => {\n      count.value++;\n    };\n\n    // provide data and methods to children\n    linkChildren({ add, count });\n  },\n};\n```\n\nUse `useParent` in child component to get the data and methods provided by parent.\n\n```js\nimport { useParent } from '@vant/use';\n\nexport default {\n  setup() {\n    const { parent } = useParent(RELATION_KEY);\n\n    // use data and methods provided by parent\n    if (parent) {\n      parent.add();\n      console.log(parent.count.value); // -> 1\n    }\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useParent<T>(key: string | symbol): {\n  parent?: T;\n  index?: Ref<number>;\n};\n\nfunction useChildren(key: string | symbol): {\n  children: ComponentPublicInstance[];\n  linkChildren: (value: any) => void;\n};\n```\n\n### Return Value of useParent\n\n| Name | Description | Type |\n| --- | --- | --- |\n| parent | Data and methods provided by parent | _any_ |\n| index | Index position of the current component in all child of the parent component | _Ref\\<number>_ |\n\n### Return Value of useChildren\n\n| Name | Description | Type |\n| --- | --- | --- |\n| children | Component list of children | _ComponentPublicInstance[]_ |\n| linkChildren | Function to provide values to child | _(value: any) => void_ |\n","packages/vant/docs/markdown/use-relation.zh-CN.md":"# useRelation\n\n### 介绍\n\n建立父子组件之间的关联关系，进行数据通信和方法调用，基于 `provide` 和 `inject` 实现。\n\n## 代码演示\n\n### 基本用法\n\n在父组件中使用 `useChildren` 关联子组件:\n\n```js\nimport { ref } from 'vue';\nimport { useChildren } from '@vant/use';\n\nconst RELATION_KEY = Symbol('my-relation');\n\nexport default {\n  setup() {\n    const { linkChildren } = useChildren(RELATION_KEY);\n\n    const count = ref(0);\n    const add = () => {\n      count.value++;\n    };\n\n    // 向子组件提供数据和方法\n    linkChildren({ add, count });\n  },\n};\n```\n\n在子组件中使用 `useParent` 获取父组件提供的数据和方法:\n\n```js\nimport { useParent } from '@vant/use';\n\nexport default {\n  setup() {\n    const { parent } = useParent(RELATION_KEY);\n\n    // 调用父组件提供的数据和方法\n    if (parent) {\n      parent.add();\n      console.log(parent.count.value); // -> 1\n    }\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\nfunction useParent<T>(key: string | symbol): {\n  parent?: T;\n  index?: Ref<number>;\n};\n\nfunction useChildren(key: string | symbol): {\n  children: ComponentPublicInstance[];\n  linkChildren: (value: any) => void;\n};\n```\n\n### useParent 返回值\n\n| 参数   | 说明                                         | 类型           |\n| ------ | -------------------------------------------- | -------------- |\n| parent | 父组件提供的值                               | _any_          |\n| index  | 当前组件在父组件的所有子组件中对应的索引位置 | _Ref\\<number>_ |\n\n### useChildren 返回值\n\n| 参数         | 说明                 | 类型                        |\n| ------------ | -------------------- | --------------------------- |\n| children     | 子组件列表           | _ComponentPublicInstance[]_ |\n| linkChildren | 向子组件提供值的方法 | _(value: any) => void_      |\n","packages/vant/docs/markdown/use-scroll-parent.en-US.md":"# useScrollParent\n\n### Intro\n\nGet the closest parent element that is scrollable.\n\n## Usage\n\n### Basic Usage\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref, watch } from 'vue';\nimport { useScrollParent, useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    const scrollParent = useScrollParent(root);\n\n    useEventListener(\n      'scroll',\n      () => {\n        console.log('scroll');\n      },\n      { target: scrollParent },\n    );\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useScrollParent(\n  element: Ref<Element | undefined>,\n): Ref<Element | Window | undefined>;\n```\n\n### Params\n\n| Name    | Description         | Type            | Default Value |\n| ------- | ------------------- | --------------- | ------------- |\n| element | The current element | _Ref\\<Element>_ | -             |\n\n### Return Value\n\n| Name | Description | Type |\n| --- | --- | --- |\n| scrollParent | The closest parent element that is scrollable | _Ref\\<Element>_ |\n","packages/vant/docs/markdown/use-scroll-parent.zh-CN.md":"# useScrollParent\n\n### 介绍\n\n获取元素最近的可滚动父元素。\n\n## 代码演示\n\n### 基本用法\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref, watch } from 'vue';\nimport { useScrollParent, useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    const scrollParent = useScrollParent(root);\n\n    useEventListener(\n      'scroll',\n      () => {\n        console.log('scroll');\n      },\n      { target: scrollParent },\n    );\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\nfunction useScrollParent(\n  element: Ref<Element | undefined>,\n): Ref<Element | Window | undefined>;\n```\n\n### 参数\n\n| 参数    | 说明     | 类型            | 默认值 |\n| ------- | -------- | --------------- | ------ |\n| element | 当前元素 | _Ref\\<Element>_ | -      |\n\n### 返回值\n\n| 参数         | 说明               | 类型            |\n| ------------ | ------------------ | --------------- |\n| scrollParent | 最近的可滚动父元素 | _Ref\\<Element>_ |\n","packages/vant/docs/markdown/use-toggle.en-US.md":"# useToggle\n\n### Intro\n\nUsed to switch between `true` and `false`.\n\n## Usage\n\n### Basic Usage\n\n```js\nimport { useToggle } from '@vant/use';\n\nexport default {\n  setup() {\n    const [state, toggle] = useToggle();\n\n    toggle(true);\n    console.log(state.value); // -> true\n\n    toggle(false);\n    console.log(state.value); // -> false\n\n    toggle();\n    console.log(state.value); // -> true\n  },\n};\n```\n\n### Default Value\n\n```js\nimport { useToggle } from '@vant/use';\n\nexport default {\n  setup() {\n    const [state, toggle] = useToggle(true);\n    console.log(state.value); // -> true\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useToggle(\n  defaultValue: boolean,\n): [Ref<boolean>, (newValue: boolean) => void];\n```\n\n### Params\n\n| Name         | Description   | Type      | Default Value |\n| ------------ | ------------- | --------- | ------------- |\n| defaultValue | Default value | _boolean_ | `false`       |\n\n### Return Value\n\n| Name   | Description              | Type                           |\n| ------ | ------------------------ | ------------------------------ |\n| state  | State                    | _Ref\\<boolean>_                |\n| toggle | Function to switch state | _(newValue?: boolean) => void_ |\n","packages/vant/docs/markdown/use-toggle.zh-CN.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fdocs%2Fmarkdown%2Fuse-toggle.zh-CN.md -->","packages/vant/docs/markdown/use-window-size.en-US.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fdocs%2Fmarkdown%2Fuse-window-size.en-US.md -->","packages/vant/docs/markdown/use-window-size.zh-CN.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fdocs%2Fmarkdown%2Fuse-window-size.zh-CN.md -->","packages/vant/docs/markdown/vant-use-intro.en-US.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fdocs%2Fmarkdown%2Fvant-use-intro.en-US.md -->","packages/vant/docs/markdown/vant-use-intro.zh-CN.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fdocs%2Fmarkdown%2Fvant-use-intro.zh-CN.md -->","packages/vant/src/action-bar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Faction-bar%2FREADME.md -->","packages/vant/src/action-sheet/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Faction-sheet%2FREADME.md -->","packages/vant/src/address-edit/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Faddress-edit%2FREADME.md -->","packages/vant/src/address-list/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Faddress-list%2FREADME.md -->","packages/vant/src/area/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Farea%2FREADME.md -->","packages/vant/src/back-top/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fback-top%2FREADME.md -->","packages/vant/src/badge/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fbadge%2FREADME.md -->","packages/vant/src/barrage/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fbarrage%2FREADME.md -->","packages/vant/src/button/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fbutton%2FREADME.md -->","packages/vant/src/calendar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcalendar%2FREADME.md -->","packages/vant/src/card/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcard%2FREADME.md -->","packages/vant/src/cascader/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcascader%2FREADME.md -->","packages/vant/src/cell/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcell%2FREADME.md -->","packages/vant/src/checkbox/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcheckbox%2FREADME.md -->","packages/vant/src/circle/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcircle%2FREADME.md -->","packages/vant/src/col/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcol%2FREADME.md -->","packages/vant/src/collapse/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcollapse%2FREADME.md -->","packages/vant/src/config-provider/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fconfig-provider%2FREADME.md -->","packages/vant/src/contact-card/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcontact-card%2FREADME.md -->","packages/vant/src/contact-edit/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcontact-edit%2FREADME.md -->","packages/vant/src/contact-list/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcontact-list%2FREADME.md -->","packages/vant/src/count-down/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcount-down%2FREADME.md -->","packages/vant/src/coupon-list/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcoupon-list%2FREADME.md -->","packages/vant/src/date-picker/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fdate-picker%2FREADME.md -->","packages/vant/src/dialog/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fdialog%2FREADME.md -->","packages/vant/src/divider/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fdivider%2FREADME.md -->","packages/vant/src/dropdown-menu/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fdropdown-menu%2FREADME.md -->","packages/vant/src/empty/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fempty%2FREADME.md -->","packages/vant/src/field/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ffield%2FREADME.md -->","packages/vant/src/floating-bubble/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ffloating-bubble%2FREADME.md -->","packages/vant/src/floating-panel/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ffloating-panel%2FREADME.md -->","packages/vant/src/form/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fform%2FREADME.md -->","packages/vant/src/grid/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fgrid%2FREADME.md -->","packages/vant/src/highlight/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fhighlight%2FREADME.md -->","packages/vant/src/icon/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ficon%2FREADME.md -->","packages/vant/src/image-preview/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fimage-preview%2FREADME.md -->","packages/vant/src/image/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fimage%2FREADME.md -->","packages/vant/src/index-bar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Findex-bar%2FREADME.md -->","packages/vant/src/lazyload/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Flazyload%2FREADME.md -->","packages/vant/src/list/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Flist%2FREADME.md -->","packages/vant/src/loading/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Floading%2FREADME.md -->","packages/vant/src/locale/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Flocale%2FREADME.md -->","packages/vant/src/nav-bar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fnav-bar%2FREADME.md -->","packages/vant/src/notice-bar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fnotice-bar%2FREADME.md -->","packages/vant/src/notify/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fnotify%2FREADME.md -->","packages/vant/src/number-keyboard/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fnumber-keyboard%2FREADME.md -->","packages/vant/src/overlay/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Foverlay%2FREADME.md -->","packages/vant/src/pagination/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpagination%2FREADME.md -->","packages/vant/src/password-input/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpassword-input%2FREADME.md -->","packages/vant/src/picker-group/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpicker-group%2FREADME.md -->","packages/vant/src/picker/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpicker%2FREADME.md -->","packages/vant/src/popover/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpopover%2FREADME.md -->","packages/vant/src/popup/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpopup%2FREADME.md -->","packages/vant/src/progress/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fprogress%2FREADME.md -->","packages/vant/src/pull-refresh/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpull-refresh%2FREADME.md -->","packages/vant/src/radio/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fradio%2FREADME.md -->","packages/vant/src/rate/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Frate%2FREADME.md -->","packages/vant/src/rolling-text/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Frolling-text%2FREADME.md -->","packages/vant/src/search/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsearch%2FREADME.md -->","packages/vant/src/share-sheet/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fshare-sheet%2FREADME.md -->","packages/vant/src/sidebar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsidebar%2FREADME.md -->","packages/vant/src/signature/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsignature%2FREADME.md -->","packages/vant/src/skeleton-avatar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fskeleton-avatar%2FREADME.md -->","packages/vant/src/skeleton-image/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fskeleton-image%2FREADME.md -->","packages/vant/src/skeleton-paragraph/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fskeleton-paragraph%2FREADME.md -->","packages/vant/src/skeleton-title/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fskeleton-title%2FREADME.md -->","packages/vant/src/skeleton/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fskeleton%2FREADME.md -->","packages/vant/src/slider/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fslider%2FREADME.md -->","packages/vant/src/space/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fspace%2FREADME.md -->","packages/vant/src/stepper/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fstepper%2FREADME.md -->","packages/vant/src/steps/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsteps%2FREADME.md -->","packages/vant/src/sticky/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsticky%2FREADME.md -->","packages/vant/src/style/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fstyle%2FREADME.md -->","packages/vant/src/submit-bar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsubmit-bar%2FREADME.md -->","packages/vant/src/swipe-cell/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fswipe-cell%2FREADME.md -->","packages/vant/src/swipe/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fswipe%2FREADME.md -->","packages/vant/src/switch/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fswitch%2FREADME.md -->","packages/vant/src/tab/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftab%2FREADME.md -->","packages/vant/src/tabbar/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftabbar%2FREADME.md -->","packages/vant/src/tag/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftag%2FREADME.md -->","packages/vant/src/text-ellipsis/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftext-ellipsis%2FREADME.md -->","packages/vant/src/time-picker/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftime-picker%2FREADME.md -->","packages/vant/src/toast/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftoast%2FREADME.md -->","packages/vant/src/tree-select/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftree-select%2FREADME.md -->","packages/vant/src/uploader/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fuploader%2FREADME.md -->","packages/vant/src/watermark/README.md":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fwatermark%2FREADME.md -->"},"items":[{"name":"SKILL.md","path":".agents/skills/rstack-cli-docs/SKILL.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/.agents/skills/rstack-cli-docs/SKILL.md","title":"rstack-cli-docs","category":"anthropic-skill","format":"markdown","content":"---\nname: rstack-cli-docs\ndescription: Consult installed, version-matched Rstack docs only for user-facing `rs` command behavior, `rstack.config.*` semantics, or public `rstack` APIs. Do not use for purely internal implementation, tests, performance, or repository maintenance.\n---\n\n# Rstack CLI Docs\n\nRstack CLI is the `rstack` package, exposed through the `rs` binaries. It provides one CLI, one config file, and a consistent workflow for the Rstack JavaScript toolchain.\n\nIt covers web app, library, docs, test, lint, formatting, Git hook, and staged-file workflows.\n\n## Read installed docs when this skill applies\n\nWhen this skill applies, find and read the relevant Markdown documentation shipped with the installed `rstack` package.\n\nModel knowledge can be outdated; the installed documentation is the source of truth for the project's Rstack version.\n\n1. Start with `node_modules/rstack/docs/llms.txt`, then read only the linked pages relevant to the task before proposing or making changes.\n\n2. For exact CLI flags and behavior, also run `rs -h` or `rs <command> -h` when supported.\n\nIf the bundled docs are not available at that path, locate the installed `rstack` package.\n\nIf they are still unavailable, verify that `rstack` is installed, and use CLI help plus the online [Rstack documentation](https://rstack.rs/) as a fallback.\n","frontmatter":{"name":"rstack-cli-docs","description":"Consult installed, version-matched Rstack docs only for user-facing `rs` command behavior, `rstack.config.*` semantics, or public `rstack` APIs. Do not use for purely internal implementation, tests, performance, or repository maintenance."},"isInternal":false,"tokens":301,"sizeBytes":1341},{"name":"home.md","path":"packages/create-vant-cli-app/generators/vue2/docs/home.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/create-vant-cli-app/generators/vue2/docs/home.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# 介绍\n\n### 关于\n\n这是一段组件库的介绍\n\n### 特性\n\n- 特性一\n- 特性二\n- 特性三\n","isInternal":false,"tokens":45,"sizeBytes":102},{"name":"quickstart.md","path":"packages/create-vant-cli-app/generators/vue2/docs/quickstart.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/create-vant-cli-app/generators/vue2/docs/quickstart.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# 快速上手\n\n### 安装\n\n```bash\n# 通过 npm\nnpm i <%= name %>\n\n# 通过 yarn\nyarn add <%= name %>\n\n# 通过 pnpm\npnpm add <%= name %>\n\n# 通过 bun\nbun add <%= name %>\n```\n","isInternal":false,"tokens":65,"sizeBytes":177},{"name":"home.md","path":"packages/create-vant-cli-app/generators/vue3/docs/home.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/create-vant-cli-app/generators/vue3/docs/home.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# 介绍\n\n### 关于\n\n这是一段组件库的介绍\n\n### 特性\n\n- 特性一\n- 特性二\n- 特性三\n","isInternal":false,"tokens":45,"sizeBytes":102},{"name":"quickstart.md","path":"packages/create-vant-cli-app/generators/vue3/docs/quickstart.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/create-vant-cli-app/generators/vue3/docs/quickstart.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# 快速上手\n\n### 安装\n\n```bash\n# 通过 npm\nnpm i <%= name %>\n\n# 通过 yarn\nyarn add <%= name %>\n\n# 通过 pnpm\npnpm add <%= name %>\n\n# 通过 bun\nbun add <%= name %>\n```\n","isInternal":false,"tokens":65,"sizeBytes":177},{"name":"commands.md","path":"packages/vant-cli/docs/commands.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant-cli/docs/commands.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# Commands\n\nYou can add built-in commands to `npm scripts` to use it.\n\n```json\n// package.json\n{\n  \"scripts\": {\n    \"dev\": \"vant-cli dev\",\n    \"test\": \"vant-cli test\",\n    \"release\": \"vant-cli release\",\n    \"build-site\": \"vant-cli build-site\"\n  }\n}\n```\n\nAdditionally, [npx](https://github.com/npm/npx) can used to be run those commands.\n\n```bash\nnpx vant-cli dev\n```\n\n### dev\n\nStart local dev server for browsering components and demo.\n\n### build\n\nBuild Vue component library.\n\nFiles will be output to `es` and `lib` directory. More details [directory structure](https://github.com/vant-ui/vant/tree/main/packages/vant-cli/docs/directory.md)\n\nPlease add the followed config to `package.json` when publish to npm.\n\n```json\n// package.json\n{\n  \"main\": \"lib/index.js\",\n  \"module\": \"es/index.js\",\n  \"files\": [\"es\", \"lib\"]\n}\n```\n\n### build-site\n\nBuild documentation website. Files will be output to `site` directory.\n\n### release\n\nPublish to npm. `build` will be automatically execute when run `release`.\n\n### commit-lint\n\nValidate the format of commit message. Need `husky` to do this.\n","isInternal":false,"tokens":281,"sizeBytes":1082},{"name":"commands.zh-CN.md","path":"packages/vant-cli/docs/commands.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant-cli/docs/commands.zh-CN.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# 命令\n\nVant CLI 中内置了一系列的命令，可以将命令添加到 npm scripts 中进行使用。\n\n```json\n// package.json\n{\n  \"scripts\": {\n    \"dev\": \"vant-cli dev\",\n    \"test\": \"vant-cli test\",\n    \"release\": \"vant-cli release\",\n    \"build-site\": \"vant-cli build-site\"\n  }\n}\n```\n\n也可以通过 npm 自带的 [npx](https://github.com/npm/npx) 直接执行某个命令：\n\n```bash\nnpx vant-cli dev\n```\n\n### dev\n\n运行本地开发环境。\n\n运行 dev 命令时，Vant CLI 会通过启动一个本地服务器，用于在开发过程中对文档和示例进行预览。\n\n### build\n\n构建组件库。\n\n运行 build 命令会在 `es` 和 `lib` 目录下生成可用于生产环境的组件代码，详见 [目录结构](https://github.com/vant-ui/vant/tree/main/packages/vant-cli/docs/directory.zh-CN.md)。\n\n发布 npm 时，请将以下配置加入到 `package.json` 中，使 npm 包能被正确识别:\n\n```json\n// package.json\n{\n  \"main\": \"lib/index.js\",\n  \"module\": \"es/index.js\",\n  \"files\": [\"es\", \"lib\"]\n}\n```\n\n### build-site\n\n构建文档站点，在 `site` 目录生成可用于生产环境的文档站点代码。\n\n### release\n\n发布组件库，发布前会自动执行 build 命令，并按照流程发布 npm 包。\n\n### commit-lint\n\n校验 commit message 的格式是否符合规范，需要配合 `husky` 在提交 commit 时触发。\n","isInternal":false,"tokens":433,"sizeBytes":1361},{"name":"config.md","path":"packages/vant-cli/docs/config.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant-cli/docs/config.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# Config\n\n- [Config](#----)\n  - [rsbuild.config.mjs](#rsbuildconfigmjs)\n  - [vite.config.mjs](#viteconfigmjs)\n  - [vant.config.mjs](#vantconfigmjs)\n    - [name](#name)\n    - [build.css.base](#buildcssbase)\n    - [build.css.preprocessor](#buildcsspreprocessor)\n    - [build.site.publicPath](#buildsitepublicpath)\n    - [build.srcDir](#buildsrcdir)\n    - [build.namedExport](#buildnamedexport)\n    - [build.packageManager](#buildpackagemanager)\n    - [site.title](#sitetitle)\n    - [site.logo](#sitelogo)\n    - [site.description](#sitedescription)\n    - [site.nav](#sitenav)\n    - [site.versions](#siteversions)\n    - [site.baiduAnalytics](#sitebaiduanalytics)\n    - [site.hideSimulator](#sitehidesimulator)\n    - [site.simulator.url](#sitesimulatorurl)\n    - [site.htmlMeta](#sitehtmlmeta)\n    - [site.enableVConsole](#siteenablevconsole)\n  - [PostCSS](#postcss)\n    - [Default Config](#-----1)\n  - [browserslist](#browserslist)\n\n## rsbuild.config.mjs\n\nVant CLI uses [Rsbuild](https://github.com/web-infra-dev/rsbuild) to build the documentation site. You can create an Rsbuild configuration file in the same directory as `vant.config.mjs`. The contents of the file will be automatically read by Vant CLI.\n\n```js\n// rsbuild.config.mjs or rsbuild.config.ts\nexport default {\n  plugins: [\n    // Configure Rsbuild plugins\n  ],\n  dev: {\n    // Options related to local development\n  },\n  html: {\n    // Options related to HTML generation\n  },\n  // Other options\n};\n```\n\n> Please refer to [Configure Rsbuild](https://rsbuild.dev/guide/basic/configure-rsbuild) for more information.\n\n## vite.config.mjs\n\nVant Cli uses Vite to build component library code. You can create a Vite configuration file in the same directory as `vant.config.mjs`. In this file, you can add any Vite configuration.\n\n> Please refer to [Vite Configuration](https://vitejs.dev/config/) to learn more.\n\n## vant.config.mjs\n\n`vant.config.mjs` includes bundle and documentation site config. Please create this file and place it in your project root directory. Here is a basic example:\n\n```js\nexport default {\n  // component library name\n  name: 'demo-ui',\n  // bundle config\n  build: {\n    site: {\n      publicPath: '/demo-ui/',\n    },\n  },\n  // documentation site config\n  site: {\n    // title\n    title: 'Demo UI',\n    // logo\n    logo: 'https://fastly.jsdelivr.net/npm/@vant/assets/logo.png',\n    // description\n    description: '示例组件库',\n    // left nav\n    nav: [\n      {\n        title: 'example',\n        items: [\n          {\n            path: 'home',\n            title: 'home',\n          },\n        ],\n      },\n      {\n        title: 'basic components',\n        items: [\n          {\n            path: 'my-button',\n            title: 'MyButton',\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n### name\n\n- Type: `string`\n- Default: `''`\n\nComponent library name. kebab-case recommended.\n\n### build.css.base\n\n- Type: `string`\n- Default: `'style/base.less'`\n\nGlobal style file path. Support absolute path and relative path both.\n\nNote: relative path is calculated based on `src`.\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      base: 'style/global.scss',\n    },\n  },\n};\n```\n\n### build.css.preprocessor\n\n- Type: `string`\n- Default: `'less'`\n\nCSS preprocessor config, support `less` and `sass`. Use `less` by default.\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      preprocessor: 'sass',\n    },\n  },\n};\n```\n\n### build.css.removeSourceFile\n\n- Type: `boolean`\n- Default: `'false'`\n\nWhether to remove the source style files after build.\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      removeSourceFile: true,\n    },\n  },\n};\n```\n\n### build.site.publicPath\n\n- Type: `string`\n- Default: `/`\n\nEquivalent to vite `build.outDir`.\n\nGenerally, documentation site will be deployed to subpath of domain. For example: `https://my.github.io/demo-ui/`, `publicPath` should be `/demo-ui/`.\n\n```js\nmodule.exports = {\n  build: {\n    site: {\n      publicPath: '/demo-ui/',\n    },\n  },\n};\n```\n\n### build.srcDir\n\n- Type: `string`\n- Default: `src`\n\n```js\nmodule.exports = {\n  build: {\n    srcDir: 'myDir',\n  },\n};\n```\n\n### build.namedExport\n\n- Type: `boolean`\n- Default: `false`\n\nShould export components by Named Export.\n\nWhen set to `false`, `export default from 'xxx'` will be used to export module.\n\nWhen set to `true`, `export * from 'xxx'` will be used to export all modules and type definition.\n\n### build.configureVite\n\n- Type: `(config: InlineConfig): InlineConfig | undefined`\n- Default: `undefined`\n\nCustom [vite config](https://vitejs.dev/config/), requires `@vant/cli>= 4.0.0`.\n\n```js\nmodule.exports = {\n  build: {\n    configureVite(config) {\n      config.server.port = 3000;\n      return config;\n    },\n  },\n};\n```\n\nIf you need to configure some vite plugins, please create a `vite.config.ts` file in the same directory of `vant.config.mjs`, in which you can add any vite configuration (this feature requires @vant/cli 5.1.0).\n\n### build.packageManager\n\n- Type: `'npm' | 'yarn' | 'pnpm' | 'bun'`\n- Default: `yarn`\n\n`npm` package manager.\n\n### build.bundleOptions\n\n- Type: `BundleOptions[]`\n\nSpecify the format of the bundled output.\n\nThe type of `BundleOptions`:\n\n```ts\ntype BundleOption = {\n  // Whether to minify code (Tips: es format output can't be minified by vite)\n  minify?: boolean;\n  // Formats, can be set to 'es' | 'cjs' | 'umd' | 'iife'\n  formats: LibraryFormats[];\n  // Dependencies to external (Vue is externaled by default)\n  external?: string[];\n};\n```\n\nDefault value：\n\n```ts\nconst DEFAULT_OPTIONS: BundleOption[] = [\n  {\n    minify: false,\n    formats: ['umd'],\n  },\n  {\n    minify: true,\n    formats: ['umd'],\n  },\n  {\n    minify: false,\n    formats: ['es', 'cjs'],\n    external: allDependencies,\n  },\n];\n```\n\n### site.title\n\n- Type: `string`\n- Default: `''`\n\nDocumentation site title.\n\n### site.logo\n\n- Type: `string`\n- Default: `''`\n\nDocumentation site logo.\n\n### site.description\n\n- Type: `string`\n- Default: `''`\n\nDocumentation site description.\n\n### site.nav\n\n- Type: `object[]`\n- Default: `undefined`\n\nDocumentation site left nav. Each item of `nav` means a navigation group.\n\n```js\nmodule.exports = {\n  site: {\n    nav: [\n      {\n        // group title\n        title: 'Development Guide',\n        // nav items\n        items: [\n          {\n            // nav router\n            path: 'home',\n            // nav title\n            title: 'title',\n            // should hide phone emulator(false by default)\n            hideSimulator: true,\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n### site.versions\n\n- Type: `object[]`\n- Default: `undefined`\n\nDocumentation site muti-version config.\n\n```js\nmodule.exports = {\n  site: {\n    versions: [\n      {\n        label: 'v1',\n        link: '/v1/',\n      },\n    ],\n  },\n};\n```\n\n### site.baiduAnalytics\n\n- Type: `object`\n- Default: `undefined`\n\nDocumentation site baidu analysis config. The script of Baidu Statistic will be automatically loaded when build documentation website.\n\n```js\nmodule.exports = {\n  site: {\n    baiduAnalytics: {\n      // 打开百度统计 ->『管理』->『代码获取』\n      // find the followed URL: \"https://hm.baidu.com/hm.js?xxxxx\"\n      // add `xxxxx` in the seed\n      seed: 'xxxxx',\n    },\n  },\n};\n```\n\n### site.hideSimulator\n\n- Type: `boolean`\n- Default: `false`\n\nShould hide phone emulator, `false` by default.\n\n### site.simulator.url\n\n- Type: `string`\n- Default: -\n\nCustomize iframe URL.\n\n### site.htmlMeta\n\n- Type: `Record<string, string>`\n- Default: `undefined`\n\nCustomize HTML meta tag, key means name, value means content.\n\n### site.headHtml\n\n- Type: `string`\n- Default: `undefined`\n\nInsert a custom HTML content in the `<head>` tag.\n\n### site.enableVConsole\n\n- Type: `boolean`\n- Default: `false`\n\nWhether to enable [vConsole](https://github.com/Tencent/vConsole) debugging in dev, usually used for mobile debugging.\n\n## PostCSS\n\nPostCSS can be configured through the `postcss.config.js` file in the root directory.\n\n### Default Config\n\nPostCSS default config:\n\n```js\nmodule.exports = {\n  plugins: {\n    autoprefixer: {},\n  },\n};\n```\n\n## browserslist\n\nAdd browserslist field to `package.json` file is recommended. It's used by `autoprefixer` to determine the version of target browser, ensuring compatibility of compiled code.\n\nYou can add the following config for mobile:\n\n```json\n{\n  \"browserslist\": [\"Chrome >= 51\", \"iOS >= 10\"]\n}\n```\n","isInternal":false,"tokens":2204,"sizeBytes":8342},{"name":"config.zh-CN.md","path":"packages/vant-cli/docs/config.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant-cli/docs/config.zh-CN.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# 配置指南\n\n- [配置指南](#----)\n  - [rsbuild.config.mjs](#rsbuildconfigmjs)\n  - [vite.config.mjs](#viteconfigmjs)\n  - [vant.config.mjs](#vantconfigmjs)\n    - [name](#name)\n    - [build.css.base](#buildcssbase)\n    - [build.css.preprocessor](#buildcsspreprocessor)\n    - [build.site.publicPath](#buildsitepublicpath)\n    - [build.srcDir](#buildsrcdir)\n    - [build.namedExport](#buildnamedexport)\n    - [build.packageManager](#buildpackagemanager)\n    - [site.title](#sitetitle)\n    - [site.logo](#sitelogo)\n    - [site.description](#sitedescription)\n    - [site.nav](#sitenav)\n    - [site.versions](#siteversions)\n    - [site.baiduAnalytics](#sitebaiduanalytics)\n    - [site.hideSimulator](#sitehidesimulator)\n    - [site.simulator.url](#sitesimulatorurl)\n    - [site.htmlMeta](#sitehtmlmeta)\n    - [site.enableVConsole](#siteenablevconsole)\n  - [PostCSS](#postcss)\n    - [默认配置](#-----1)\n  - [browserslist](#browserslist)\n\n## rsbuild.config.mjs\n\nVant CLI 使用 [Rsbuild](https://github.com/web-infra-dev/rsbuild) 来构建文档站点，你可以在 `vant.config.mjs` 的同级目录下创建 Rsbuild 的配置文件，文件内容会被 Vant CLI 自动读取。\n\n```js\n// rsbuild.config.mjs 或 rsbuild.config.ts\nexport default {\n  plugins: [\n    // 配置 Rsbuild 插件\n  ],\n  dev: {\n    // 与本地开发有关的选项\n  },\n  html: {\n    // 与 HTML 生成有关的选项\n  },\n  // 其他选项\n};\n```\n\n> 请参考 [配置 Rsbuild](https://rsbuild.dev/zh/guide/basic/configure-rsbuild) 了解更多。\n\n## vite.config.mjs\n\nVant Cli 使用 Vite 来构建组件库代码，你可以在 `vant.config.mjs` 的同级目录下创建 Vite 的配置文件，在该文件中你可以添加任意的 Vite 配置。\n\n> 请参考 [Vite 配置](https://vitejs.dev/config/) 了解更多。\n\n## vant.config.mjs\n\n`vant.config.mjs` 中包含了 `vant-cli` 的打包配置和文档站点配置，请创建此文件并置于项目根目录下。下面是一份基本配置的示例：\n\n```js\nexport default {\n  // 组件库名称\n  name: 'demo-ui',\n  // 构建配置\n  build: {\n    site: {\n      publicPath: '/demo-ui/',\n    },\n  },\n  // 文档站点配置\n  site: {\n    // 标题\n    title: 'Demo UI',\n    // 图标\n    logo: 'https://fastly.jsdelivr.net/npm/@vant/assets/logo.png',\n    // 描述\n    description: '示例组件库',\n    // 左侧导航\n    nav: [\n      {\n        title: '开发指南',\n        items: [\n          {\n            path: 'home',\n            title: '介绍',\n          },\n        ],\n      },\n      {\n        title: '基础组件',\n        items: [\n          {\n            path: 'my-button',\n            title: 'MyButton 按钮',\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n### name\n\n- Type: `string`\n- Default: `''`\n\n组件库名称，建议使用中划线分割，如 `demo-ui`。\n\n### build.css.base\n\n- Type: `string`\n- Default: `'style/base.less'`\n\n全局样式文件的路径，可以为相对路径或绝对路径。\n\n相对路径基于 `src` 目录计算。\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      base: 'style/global.scss',\n    },\n  },\n};\n```\n\n### build.css.preprocessor\n\n- Type: `string`\n- Default: `'less'`\n\nCSS 预处理器配置，目前支持 `less` 和 `sass` 两种预处理器，默认使用 `less`。\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      preprocessor: 'sass',\n    },\n  },\n};\n```\n\n### build.css.removeSourceFile\n\n- Type: `boolean`\n- Default: `'false'`\n\n是否在构建后移除样式文件的源代码。\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      removeSourceFile: true,\n    },\n  },\n};\n```\n\n### build.site.publicPath\n\n- Type: `string`\n- Default: `/`\n\n等价于 vite 的 `build.outDir` 配置。\n\n一般来说，我们的文档网站会部署在一个域名的子路径上，如 `https://my.github.io/demo-ui/`，这时候 `publicPath` 需要跟子路径保持一致，即 `/demo-ui/`。\n\n```js\nmodule.exports = {\n  build: {\n    site: {\n      publicPath: '/demo-ui/',\n    },\n  },\n};\n```\n\n### build.srcDir\n\n- Type: `string`\n- Default: `src`\n\n```js\nmodule.exports = {\n  build: {\n    srcDir: 'myDir',\n  },\n};\n```\n\n### build.namedExport\n\n- Type: `boolean`\n- Default: `false`\n\n是否通过 Named Export 对组件进行导出。\n\n未开启此选项时，会通过 `export default from 'xxx'` 导出组件内部的默认模块。\n\n开启此选项后，会通过 `export * from 'xxx'` 导出组件内部的所有模块、类型定义。\n\n### build.packageManager\n\n- Type: `'npm' | 'yarn' | 'pnpm' | 'bun'`\n- Default: `yarn`\n\n指定使用的包管理器。\n\n### build.bundleOptions\n\n- Type: `BundleOptions[]`\n\n指定打包后产物的格式。\n\n产物格式由三个配置项控制：\n\n```ts\ntype BundleOption = {\n  // 是否压缩代码（注意 es 产物无法被 vite 压缩）\n  minify?: boolean;\n  // 产物类型，可选值为 'es' | 'cjs' | 'umd' | 'iife'\n  formats: LibraryFormats[];\n  // 需要 external 的依赖（Vue 默认会被 external）\n  external?: string[];\n};\n```\n\n该选项的默认值为：\n\n```ts\nconst DEFAULT_OPTIONS: BundleOption[] = [\n  {\n    minify: false,\n    formats: ['umd'],\n  },\n  {\n    minify: true,\n    formats: ['umd'],\n  },\n  {\n    minify: false,\n    formats: ['es', 'cjs'],\n    external: allDependencies,\n  },\n];\n```\n\n### site.title\n\n- Type: `string`\n- Default: `''`\n\n文档站点的标题。\n\n### site.logo\n\n- Type: `string`\n- Default: `''`\n\n文档站点的 Logo。\n\n### site.description\n\n- Type: `string`\n- Default: `''`\n\n标题下方的描述文案。\n\n### site.nav\n\n- Type: `object[]`\n- Default: `undefined`\n\n文档站点的左侧导航，数组中的每个对象表示一个导航分组。\n\n```js\nmodule.exports = {\n  site: {\n    nav: [\n      {\n        // 分组标题\n        title: '开发指南',\n        // 导航项\n        items: [\n          {\n            // 导航项路由\n            path: 'home',\n            // 导航项文案\n            title: '介绍',\n            // 是否隐藏当前页右侧的手机模拟器（默认不隐藏）\n            hideSimulator: true,\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n### site.versions\n\n- Type: `object[]`\n- Default: `undefined`\n\n文档站点多版本配置，当组件库存在多个版本的文档时，可以通过`site.versions`在顶部导航配置一个版本切换按钮。\n\n```js\nmodule.exports = {\n  site: {\n    versions: [\n      {\n        label: 'v1',\n        link: '/v1/',\n      },\n    ],\n  },\n};\n```\n\n### site.baiduAnalytics\n\n- Type: `object`\n- Default: `undefined`\n\n文档网站的百度统计配置，添加这项配置后，会自动在构建文档网站时加载百度统计的脚本。\n\n```js\nmodule.exports = {\n  site: {\n    baiduAnalytics: {\n      // 打开百度统计 ->『管理』->『代码获取』\n      // 找到下面这串 URL: \"https://hm.baidu.com/hm.js?xxxxx\"\n      // 将 `xxxxx` 填写在 seed 中即可\n      seed: 'xxxxx',\n    },\n  },\n};\n```\n\n### site.hideSimulator\n\n- Type: `boolean`\n- Default: `false`\n\n是否隐藏所有页面右侧的手机模拟器，默认不隐藏\n\n### site.simulator.url\n\n- Type: `string`\n- Default: -\n\n自定义手机模拟器的 iframe URL 地址。\n\n### site.htmlMeta\n\n- Type: `Record<string, string>`\n- Default: `undefined`\n\n配置 HTML 中的 meta 标签，对象的 key 为 name，value 为 content。\n\n### site.headHtml\n\n- Type: `string`\n- Default: `undefined`\n\n在 `<head>` 标签中插入一段自定义的 HTML 内容。\n\n### site.enableVConsole\n\n- Type: `boolean`\n- Default: `false`\n\n是否在 dev 时开启 [vConsole](https://github.com/Tencent/vConsole) 调试，用于移动端 debug。\n\n## PostCSS\n\n通过根目录下的`postcss.config.js`文件可以对 PostCSS 进行配置。\n\n### 默认配置\n\n`vant-cli` 中默认的 PostCSS 配置如下：\n\n```js\nmodule.exports = {\n  plugins: {\n    autoprefixer: {},\n  },\n};\n```\n\n## browserslist\n\n推荐在 `package.json` 文件里添加 browserslist 字段，这个值会被 `autoprefixer` 用来确定目标浏览器的版本，保证编译后代码的兼容性。\n\n在移动端浏览器中使用，可以添加如下配置：\n\n```json\n{\n  \"browserslist\": [\"Chrome >= 51\", \"iOS >= 10\"]\n}\n```\n","isInternal":false,"tokens":2476,"sizeBytes":8111},{"name":"directory.md","path":"packages/vant-cli/docs/directory.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant-cli/docs/directory.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# Directory Structure\n\n## Source Code Directory\n\nThe basic directory structure of the component library based on Vant CLI is as follows:\n\n```\nproject\n├─ src                # component library source code\n│   ├─ button        # button source code\n│   └─ dialog        # dialog source code\n│\n├─ docs               # static doc directory\n│   ├─ home.md       # documentation site home\n│   └─ changelog.md  # changelog\n│\n├─ vant.config.mjs    # Vant CLI config file\n├─ package.json\n└─ README.md\n```\n\nThe directories for individual components are as follows:\n\n```\nbutton\n├─ demo             # component demo directory\n│   └─ index.vue   # component demo\n├─ index.vue        # component source code\n└─ README.md        # component doc\n```\n\nWhen writing SFC, the corresponding JS and CSS files will be generated after bundle process, and the CSS file will be automatically imported into the JS file.\n\nIf you need to separate JS and CSS to implement functions such as theme customization, you need to use separate JS and CSS files when writing code, as shown below:\n\n```\nbutton\n├─ demo             # component demo directory\n│   └─ index.vue   # component demo entry\n├─ index.js         # component entry\n├─ index.less       # component style，support scss and less\n└─ README.md        # component doc\n```\n\nWhen using this directory structure, the developer of the component library needs to import the JS and CSS files respectively.\n\nTheme customization can be achieved by importing style source files (less or scss) and modifying style variables.\n\n## Output Directory\n\nRunning the `build` command will generate production code in the `es` and `lib` directories with the following structure:\n\n```\nproject\n├─ es                   # ESM Directory\n│   ├─ button          # button component directory\n│   ├─ dialog          # dialog component directory\n│   └─ index.js        # All component files entry (ESModule)\n│\n└─ lib                  # Commonjs directory\n    ├─ button           # button component library\n    ├─ dialog           # dialog component library\n    ├─ index.js         # All component files entry (Commonjs)\n    ├─ index.less       # All component styles entry(Uncompiled)\n    ├─ index.css        # Bundle component styles for CDN\n    ├─ [name].js        # Bundle script for UMD\n    ├─ [name].es.js     # Bundle script for ESM\n    ├─ [name].min.js    # Bundle and minified script for UMD\n    └─ [name].es.min.js # Bundle and minified script for ESM\n```\n\nThe compiled directory of a single component is as follows:\n\n```\nbutton\n├─ index.js         # Bundle script file\n├─ index.css        # Bundle CSS file\n├─ index.less       # Uncompiled CSS file, less or scss\n└─ style            # Style entry on demand directory\n    ├─ index.js     # Compiled styles on demand\n    └─ less.js      # Uncompiled styles on demand, for theme customization\n```\n\n### Generate type definition\n\nWhen the component library is written in TS and the `tsconfig.declaration.json` file exists in the root directory, Vant CLI will automatically generate the `.d.ts` type declaration file.\n\nThe format of `tsconfig.declaration.json` is as follows:\n\n```json\n{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"declaration\": true,\n    \"declarationDir\": \".\",\n    \"emitDeclarationOnly\": true\n  },\n  \"include\": [\"es/**/*\", \"lib/**/*\"],\n  \"exclude\": [\"node_modules\", \"**/test/**/*\", \"**/demo/**/*\"]\n}\n```\n\nPlease add the `typings` field in `package.json` after generate type declaration:\n\n```json\n{\n  \"typings\": \"lib/index.d.ts\"\n}\n```\n","isInternal":false,"tokens":859,"sizeBytes":3694},{"name":"directory.zh-CN.md","path":"packages/vant-cli/docs/directory.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant-cli/docs/directory.zh-CN.md","title":"Docs Skill","category":"anthropic-skill","format":"markdown","content":"# 目录结构\n\n## 源代码目录\n\n基于 Vant CLI 搭建的组件库的基本目录结构如下所示：\n\n```\nproject\n├─ src                # 组件源代码\n│   ├─ button        # button 组件源代码\n│   └─ dialog        # dialog 组件源代码\n│\n├─ docs               # 静态文档目录\n│   ├─ home.md       # 文档首页\n│   └─ changelog.md  # 更新日志\n│\n├─ vant.config.mjs    # Vant CLI 配置文件\n├─ package.json\n└─ README.md\n```\n\n单个组件的目录如下：\n\n```\nbutton\n├─ demo             # 示例目录\n│   └─ index.vue   # 组件示例\n├─ index.vue        # 组件源码\n└─ README.md        # 组件文档\n```\n\n使用 .vue 文件编写组件时，编译后会生成对应的 JS 和 CSS 文件，且 JS 文件中会自动引入 CSS 文件。\n\n如果需要将 JS 和 CSS 解耦，实现主题定制等功能，在编写代码时就要使用独立的 JS 和 CSS 文件，如下所示：\n\n```\nbutton\n├─ demo             # 组件示例\n│   └─ index.vue   # 组件示例入口\n├─ index.js         # 组件入口\n├─ index.less       # 组件样式，可以为 less 或 scss\n└─ README.md        # 组件文档\n```\n\n采用这种目录结构时，组件的使用者需要分别引入 JS 和 CSS 文件。\n\n通过引入样式源文件（less 或 scss）并修改样式变量，可以实现主题定制功能。\n\n## 构建结果目录\n\n运行 build 命令会在 `es` 和 `lib` 目录下生成可用于生产环境的组件代码，结构如下：\n\n```\nproject\n├─ es                   # es 目录下的代码遵循 esmodule 规范\n│   ├─ button          # button 组件编译后的代码目录\n│   ├─ dialog          # dialog 组件编译后的代码目录\n│   └─ index.js        # 引入所有组件的入口 (ESModule)\n│\n└─ lib                  # lib 目录下的代码遵循 commonjs 规范\n    ├─ button           # button 组件编译后的代码目录\n    ├─ dialog           # dialog 组件编译后的代码目录\n    ├─ index.js         # 引入所有组件的入口\n    ├─ index.less       # 所有组件未编译的样式入口\n    ├─ index.css        # 打包后的组件样式，用于 CDN 引入\n    ├─ [name].js        # 打包后的组件脚本，UMD 格式\n    ├─ [name].es.js     # 打包后的组件脚本，ESModule 格式\n    ├─ [name].min.js    # 打包和压缩后的组件脚本，UMD 格式\n    └─ [name].es.min.js # 打包和压缩后的组件脚本，ESModule 格式\n```\n\n单个组件编译后的目录如下：\n\n```\nbutton\n├─ index.js         # 组件编译后的 JS 文件\n├─ index.css        # 组件编译后的 CSS 文件\n├─ index.less       # 组件编译前的 CSS 文件，可以为 less 或 scss\n└─ style            # 按需引入样式的入口\n    ├─ index.js     # 按需引入编译后的样式\n    └─ less.js      # 按需引入未编译的样式，可用于主题定制\n```\n\n### 生成类型声明\n\n当组件库使用 TS 编写，且根目录下存在 `tsconfig.declaration.json` 文件，Vant CLI 会自动生成 `.d.ts` 类型声明文件。\n\n`tsconfig.declaration.json` 的参考格式如下：\n\n```json\n{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"declaration\": true,\n    \"declarationDir\": \".\",\n    \"emitDeclarationOnly\": true\n  },\n  \"include\": [\"es/**/*\", \"lib/**/*\"],\n  \"exclude\": [\"node_modules\", \"**/test/**/*\", \"**/demo/**/*\"]\n}\n```\n\n成功生成类型声明后，请在 `package.json` 中添加类型入口声明：\n\n```json\n{\n  \"typings\": \"lib/index.d.ts\"\n}\n```\n","isInternal":false,"tokens":1144,"sizeBytes":3622},{"name":"advanced-usage.en-US.md","path":"packages/vant/docs/markdown/advanced-usage.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/advanced-usage.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# Advanced Usage\n\n### Intro\n\nThrough this chapter, you can learn about some advanced usages of Vant.\n\n## Component Usage\n\n### Component Registration\n\nVant supports multiple ways to register components:\n\n#### Global Registration\n\n```js\nimport { Button } from 'vant';\nimport { createApp } from 'vue';\n\nconst app = createApp();\n\n// Method 1. via app.use\napp.use(Button);\n\n// Method 2. Register via app.component\napp.component(Button.name, Button);\n```\n\n#### Full Registration\n\nYou can also globally register all Vant components at once:\n\n```js\nimport Vant from 'vant';\nimport { createApp } from 'vue';\n\nconst app = createApp();\n\napp.use(Vant);\n\n// The Lazyload directive needs to be registered separately\napp.use(vant.Lazyload);\n```\n\n> Note: Registering all components will introduce the code of all components, leading to larger bundle size.\n\n#### Local Registration\n\n```js\nimport { Button } from 'vant';\n\nexport default {\n  components: {\n    [Button.name]: Button,\n  },\n};\n```\n\n> For more information, please refer to [Vue.js - Component Registration](https://vuejs.org/guide/components/registration.html)。\n\n#### \\<script setup\\>\n\nVant components can be used directly in `<script setup>` without component registration.\n\n```xml\n<script setup>\n  import { Button } from 'vant';\n</script>\n\n<template>\n  <Button />\n</template>\n```\n\n#### JSX/TSX\n\nVant components can be used directly in JSX and TSX without component registration.\n\n```jsx\nimport { Button } from 'vant';\n\nexport default {\n  render() {\n    return <Button />;\n  },\n};\n```\n\n## Browser adaptation\n\n### Viewport Units\n\nVant uses `px` unit by default, you can use [postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) to transform `px` unit to viewport units (vw, vh, vmin, vmax).\n\n[postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) is a PostCSS 8 based plugin that transforms `px` units to `vw`/`vh` units. It supports `include`/`exclude` file matching and per-file dynamic `viewportWidth`.\n\n#### Install\n\n```bash\nnpm i postcss-mobile-forever -D\n```\n\n#### PostCSS Config\n\nPostCSS config example:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: [require('postcss-mobile-forever')({ viewportWidth: 375 })],\n};\n```\n\nIf the design width is not 375, use the `viewportWidth` function to configure it per file. The following example handles Vant components (375px design) and business code (750px design) separately:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: [\n    require('postcss-mobile-forever')({\n      viewportWidth: (file) => (file.includes('vant') ? 375 : 750),\n    }),\n  ],\n};\n```\n\n### Rem Unit\n\nYou can use tools such as `postcss-pxtorem` to transform `px` unit to `rem` unit.\n\n- [postcss-pxtorem](https://github.com/cuth/postcss-pxtorem)\n- [lib-flexible](https://github.com/amfe/lib-flexible)\n\n#### PostCSS Config\n\nPostCSS config example:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: {\n    'postcss-pxtorem': {\n      rootValue: 37.5,\n      propList: ['*'],\n    },\n  },\n};\n```\n\n### Custom rootValue\n\nIf the size of the design draft is 750 or other sizes, you can adjust the `rootValue` to:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: {\n    // postcss-pxtorem version >= 5.0.0\n    'postcss-pxtorem': {\n      rootValue({ file }) {\n        return file.indexOf('vant') !== -1 ? 37.5 : 75;\n      },\n      propList: ['*'],\n    },\n  },\n};\n```\n\n### Adapt to PC Browsers\n\nVant is a mobile-first component library, if you want to use Vant in PC browsers, you can use the [@vant/touch-emulator](https://github.com/vant-ui/vant/tree/main/packages/vant-touch-emulator) module. This module will automatically convert the mouse events of the PC browser into the touch events of the mobile browser.\n\n```bash\n# Install\nnpm i @vant/touch-emulator -S\n```\n\n```js\n// Just import this module, then Vant works in PC browser\nimport '@vant/touch-emulator';\n```\n","isInternal":false,"tokens":1017,"sizeBytes":3899},{"name":"advanced-usage.zh-CN.md","path":"packages/vant/docs/markdown/advanced-usage.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/advanced-usage.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# 进阶用法\n\n### 介绍\n\n通过本章节你可以了解到 Vant 的一些进阶用法，比如组件插槽用法、多种浏览器适配方式。\n\n## 组件用法\n\n### 组件注册\n\nVant 支持多种组件注册方式，请根据实际业务需要进行选择。\n\n#### 全局注册\n\n全局注册后，你可以在 app 下的任意子组件中使用注册的 Vant 组件。\n\n```js\nimport { Button } from 'vant';\nimport { createApp } from 'vue';\n\nconst app = createApp();\n\n// 方式一. 通过 app.use 注册\n// 注册完成后，在模板中通过 <van-button> 或 <VanButton> 标签来使用按钮组件\napp.use(Button);\n\n// 方式二. 通过 app.component 注册\n// 注册完成后，在模板中通过 <van-button> 标签来使用按钮组件\napp.component(Button.name, Button);\n```\n\n#### 全量注册\n\n你也可以在全局一次性注册所有 Vant 组件：\n\n```js\nimport Vant from 'vant';\nimport { createApp } from 'vue';\n\nconst app = createApp();\n\napp.use(Vant);\n\n// Lazyload 指令需要单独进行注册\napp.use(vant.Lazyload);\n```\n\n> 注意：注册所有组件会引入所有组件的代码，导致包体积增大。\n\n#### 局部注册\n\n局部注册后，你可以在当前组件中使用注册的 Vant 组件。\n\n```js\nimport { Button } from 'vant';\n\nexport default {\n  components: {\n    [Button.name]: Button,\n  },\n};\n```\n\n> 对于组件注册更详细的介绍，请参考 [Vue 官方文档 - 组件注册](https://cn.vuejs.org/guide/components/registration.html)。\n\n#### \\<script setup\\>\n\n在 `<script setup>` 中可以直接使用 Vant 组件，不需要进行组件注册。\n\n```xml\n<script setup>\n  import { Button } from 'vant';\n</script>\n\n<template>\n  <Button />\n</template>\n```\n\n#### JSX/TSX\n\n在 JSX 和 TSX 中可以直接使用 Vant 组件，不需要进行组件注册。\n\n```jsx\nimport { Button } from 'vant';\n\nexport default {\n  render() {\n    return <Button />;\n  },\n};\n```\n\n### 组件插槽\n\nVant 提供了丰富的组件插槽，通过插槽可以对组件的某一部分进行个性化定制。如果你对 Vue 的插槽不太熟悉，可以阅读 Vue 官方文档中的[插槽章节](https://cn.vuejs.org/guide/components/slots.html)。下面是通过插槽来定制 Checkbox 图标的示例：\n\n```html\n<van-checkbox v-model=\"checked\">\n  <!-- 使用组件提供的 icon 插槽 -->\n  <!-- 将默认图标替换为个性化图片 -->\n  <template #icon=\"props\">\n    <img :src=\"props.checked ? activeIcon : inactiveIcon\" />\n  </template>\n</van-checkbox>\n```\n\n```js\nexport default {\n  data() {\n    return {\n      checked: true,\n      activeIcon:\n        'https://fastly.jsdelivr.net/npm/@vant/assets/user-active.png',\n      inactiveIcon:\n        'https://fastly.jsdelivr.net/npm/@vant/assets/user-inactive.png',\n    };\n  },\n};\n```\n\n### 组件实例方法\n\nVant 中的许多组件提供了实例方法，调用实例方法时，我们需要通过 [ref](https://cn.vuejs.org/guide/essentials/template-refs.html) 来注册组件引用信息，引用信息将会注册在父组件的`$refs`对象上。注册完成后，我们可以通过`this.$refs.xxx`访问到对应的组件实例，并调用上面的实例方法。\n\n```html\n<!-- 通过 ref 属性将组件绑定到 this.$refs.checkbox 上 -->\n<van-checkbox v-model=\"checked\" ref=\"checkbox\"> 复选框 </van-checkbox>\n```\n\n```js\nexport default {\n  data() {\n    return {\n      checked: false,\n    };\n  },\n  // 注意：组件挂载后才能访问到 ref 对象\n  mounted() {\n    this.$refs.checkbox.toggle();\n  },\n};\n```\n\n## 浏览器适配\n\n### Viewport 布局\n\nVant 默认使用 `px` 作为样式单位，如果需要使用 `viewport` 单位 (vw, vh, vmin, vmax)，推荐使用 [postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) 进行转换。\n\n[postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) 是一款基于 PostCSS 8 的插件，用于将 `px` 单位转化为 `vw`/`vh` 单位，支持 `include`/`exclude` 文件匹配，以及按文件动态配置设计稿宽度。\n\n#### 安装\n\n```bash\nnpm i postcss-mobile-forever -D\n```\n\n#### PostCSS 示例配置\n\n下面提供了一份基本的 PostCSS 示例配置，可以在此配置的基础上根据项目需求进行修改。\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: [require('postcss-mobile-forever')({ viewportWidth: 375 })],\n};\n```\n\n如果设计稿的尺寸不是 375，而是 750 或其他大小，可以通过 `viewportWidth` 函数按文件动态配置。下面的示例将 Vant 组件（375px 设计稿）与业务代码（750px 设计稿）分开处理：\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: [\n    require('postcss-mobile-forever')({\n      viewportWidth: (file) => (file.includes('vant') ? 375 : 750),\n    }),\n  ],\n};\n```\n\n> Tips: 在配置 postcss-loader 时，应避免 ignore node_modules 目录，否则将导致 Vant 样式无法被编译。\n\n### Rem 布局适配\n\n如果需要使用 `rem` 单位进行适配，推荐使用以下两个工具：\n\n- [postcss-pxtorem](https://github.com/cuth/postcss-pxtorem) 是一款 PostCSS 插件，用于将 px 单位转化为 rem 单位\n- [lib-flexible](https://github.com/amfe/lib-flexible) 用于设置 rem 基准值\n\n#### PostCSS 示例配置\n\n下面提供了一份基本的 PostCSS 示例配置，可以在此配置的基础上根据项目需求进行修改。\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: {\n    'postcss-pxtorem': {\n      rootValue: 37.5,\n      propList: ['*'],\n    },\n  },\n};\n```\n\n> Tips: 在配置 postcss-pxtorem 时，同样应避免 ignore node_modules 目录，否则会导致 Vant 样式无法被编译。\n\n#### 其他设计稿尺寸\n\n如果设计稿的尺寸不是 375，而是 750 或其他大小，可以将 `rootValue` 配置调整为:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: {\n    // postcss-pxtorem 插件的版本需要 >= 5.0.0\n    'postcss-pxtorem': {\n      rootValue({ file }) {\n        return file.indexOf('vant') !== -1 ? 37.5 : 75;\n      },\n      propList: ['*'],\n    },\n  },\n};\n```\n\n### 桌面端适配\n\nVant 是一个面向移动端的组件库，因此默认只适配了移动端设备，这意味着组件只监听了移动端的 `touch` 事件，没有监听桌面端的 `mouse` 事件。\n\n如果你需要在桌面端使用 Vant，可以引入我们提供的 [@vant/touch-emulator](https://github.com/vant-ui/vant/tree/main/packages/vant-touch-emulator)，这个库会在桌面端自动将 `mouse` 事件转换成对应的 `touch` 事件，使得组件能够在桌面端使用。\n\n```bash\n# 安装模块\nnpm i @vant/touch-emulator -S\n```\n\n```js\n// 引入模块后自动生效\nimport '@vant/touch-emulator';\n```\n\n### 底部安全区适配\n\niPhone X 等机型底部存在底部指示条，指示条的操作区域与页面底部存在重合，容易导致用户误操作，因此我们需要针对这些机型进行安全区适配。Vant 中部分组件提供了 `safe-area-inset-top` 或 `safe-area-inset-bottom` 属性，设置该属性后，即可在对应的机型上开启适配，如下示例：\n\n```html\n<!-- 在 head 标签中添加 meta 标签，并设置 viewport-fit=cover 值 -->\n<meta\n  name=\"viewport\"\n  content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover\"\n/>\n\n<!-- 开启顶部安全区适配 -->\n<van-nav-bar safe-area-inset-top />\n\n<!-- 开启底部安全区适配 -->\n<van-number-keyboard safe-area-inset-bottom />\n```\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/safearea.png\">\n","isInternal":false,"tokens":2322,"sizeBytes":7516},{"name":"changelog.en-US.md","path":"packages/vant/docs/markdown/changelog.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/changelog.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# Changelog\n\n### Important Notice\n\n**To avoid redundant maintenance and reduce costs.**\n\n**From v4.9.0, Vant's changelog will be published on [GitHub's Releases Page](https://github.com/youzan/vant/releases). This page will no longer be updated.**\n\nThe current document contains the changelog for Vant v4.0.0 ~ v4.9.0. For other versions, please refer to:\n\n- [Vant 2 Changelog](/vant/v2/#/en-US/changelog)\n- [Vant 3 Changelog](/vant/v3/#/en-US/changelog)\n\n### Intro\n\nVant follows [Semantic Versioning 2.0.0](https://semver.org/lang/zh-CN/).\n\n**Release Schedule**\n\n- Patch version：Typically released every 1 to 2 weeks, including new features and bug fixes.\n- Minor version：Typically released every 1 to 2 months, including new components or significant feature updates, with backward compatibility.\n- Major version：No fixed release time, includes breaking changes and major feature updates.\n\n## Details\n\n### v4.9.0\n\n`2024-05-02`\n\n#### New Features 🎉\n\n- feat(Calendar): add switch-mode prop by [@inottn](https://github.com/inottn) in [#12836](https://github.com/youzan/vant/pull/12836)\n- feat(PickerGroup): add new prop showToolbar by [@ReinoFu](https://github.com/ReinoFu) in [#12839](https://github.com/youzan/vant/pull/12839)\n- feat(CLI): support for configuring Rsbuild by [@chenjiahan](https://github.com/chenjiahan) in [#12809](https://github.com/youzan/vant/pull/12809)\n\n#### Bug Fixes 🐞\n\n- fix(cli): Vue SFC style binding failure by [@zoy-l](https://github.com/zoy-l) in [#12799](https://github.com/youzan/vant/pull/12799)\n- fix(ImagePreview): swipeItem may be undefined by [@inottn](https://github.com/inottn) in [#12818](https://github.com/youzan/vant/pull/12818)\n- fix(Highlight): render correctly when keywords is empty by [@Jungzl](https://github.com/Jungzl) in [#12829](https://github.com/youzan/vant/pull/12829)\n- fix(IndexBar): render active anchor correctly when passing sticky & stickyOffsetTop by [@Jungzl](https://github.com/Jungzl) in [#12837](https://github.com/youzan/vant/pull/12837)\n\n#### Document 📖\n\n- docs: remove all Gitee links by [@chenjiahan](https://github.com/chenjiahan) in [#12845](https://github.com/youzan/vant/pull/12845)\n- docs: remove gzip size badge by [@chenjiahan](https://github.com/chenjiahan) in [#12847](https://github.com/youzan/vant/pull/12847)\n- docs: fix Rsbuild HTML build failed by [@chenjiahan](https://github.com/chenjiahan) in [#12848](https://github.com/youzan/vant/pull/12848)\n\n#### Other Changes\n\n- chore(deps): update dependency terser to ^5.30.3 by [@renovate](https://github.com/renovate) in [#12795](https://github.com/youzan/vant/pull/12795)\n- chore(deps): update dependency eslint-plugin-vue to ^9.25.0 by [@renovate](https://github.com/renovate) in [#12794](https://github.com/youzan/vant/pull/12794)\n- chore(deps): update all patch dependencies by [@renovate](https://github.com/renovate) in [#12773](https://github.com/youzan/vant/pull/12773)\n- chore(workflow): upgrade to pnpm v9 by [@chenjiahan](https://github.com/chenjiahan) in [#12808](https://github.com/youzan/vant/pull/12808)\n- chore: bump github-pages-deploy-action[@v4](https://github.com/v4).6.0 by @chenjiahan in [#12810](https://github.com/youzan/vant/pull/12810)\n- chore(deps): update dependency [@vitejs](https://github.com/vitejs)/plugin-vue to v5 by @renovate in [#12840](https://github.com/youzan/vant/pull/12840)\n- chore(deps): update dependency commander to v12 by [@renovate](https://github.com/renovate) in [#12841](https://github.com/youzan/vant/pull/12841)\n- chore(deps): update actions/setup-node action to v4 by [@renovate](https://github.com/renovate) in [#12814](https://github.com/youzan/vant/pull/12814)\n- chore(deps): update github/issue-labeler action to v3.4 by [@renovate](https://github.com/renovate) in [#12813](https://github.com/youzan/vant/pull/12813)\n- chore(deps): update codecov/codecov-action action to v4 by [@renovate](https://github.com/renovate) in [#12815](https://github.com/youzan/vant/pull/12815)\n- chore(deps): update all patch dependencies by [@renovate](https://github.com/renovate) in [#12812](https://github.com/youzan/vant/pull/12812)\n\n#### New Contributors\n\n- [@ReinoFu](https://github.com/ReinoFu) made their first contribution in [#12839](https://github.com/youzan/vant/pull/12839)\n\n### v4.8.11\n\n`2024-04-14`\n\n#### New Features 🎉\n\n- feat(DropdownMenu): add disabled for option by [@inottn](https://github.com/inottn) in [#12785](https://github.com/youzan/vant/pull/12785)\n\n#### Bug Fixes 🐞\n\n- fix: warning `is not a valid value for v-model` in JetBrains IDE by [@anyesu](https://github.com/anyesu) in [#12787](https://github.com/youzan/vant/pull/12787)\n- fix(Cli): remove site tsconfig by [@chenjiahan](https://github.com/chenjiahan) in [#12792](https://github.com/youzan/vant/pull/12792)\n\n#### Document 📖\n\n- docs(list): update Error loading module code by [@wangjue666](https://github.com/wangjue666) in [#12778](https://github.com/youzan/vant/pull/12778)\n\n#### Other Changes\n\n- chore(deps): update dependency eslint-plugin-vue to ^9.24.1 by [@renovate](https://github.com/renovate) in [#12774](https://github.com/youzan/vant/pull/12774)\n- chore(deps): bump Rsbuild v0.6 by [@chenjiahan](https://github.com/chenjiahan) in [#12790](https://github.com/youzan/vant/pull/12790)\n\n#### New Contributors\n\n- [@wangjue666](https://github.com/wangjue666) made their first contribution in [#12778](https://github.com/youzan/vant/pull/12778)\n- [@anyesu](https://github.com/anyesu) made their first contribution in [#12787](https://github.com/youzan/vant/pull/12787)\n\n### v4.8.10\n\n`2024-04-06`\n\n#### New Features 🎉\n\n- feat(TimePicker): support confirm and getSelectedTime methods by [@bluesky335](https://github.com/bluesky335) in [#12761](https://github.com/youzan/vant/pull/12761)\n- feat(DatePicker): support confirm and getSelectedDate method by [@bluesky335](https://github.com/bluesky335) in [#12762](https://github.com/youzan/vant/pull/12762)\n- feat(Coupon): support for checkbox usage by [@CatsAndMice](https://github.com/CatsAndMice) in [#12744](https://github.com/youzan/vant/pull/12744)\n\n#### Other Changes\n\n- chore(deps): update dependency vite to v5.0.13 [security] by [@renovate](https://github.com/renovate) in [#12767](https://github.com/youzan/vant/pull/12767)\n- chore(deps): update all patch dependencies by [@renovate](https://github.com/renovate) in [#12756](https://github.com/youzan/vant/pull/12756)\n- chore(deps): update dependency [@types](https://github.com/types)/lodash to ^4.17.0 by @renovate in [#12757](https://github.com/youzan/vant/pull/12757)\n- chore: correct return type of getSelectedTime by [@chenjiahan](https://github.com/chenjiahan) in [#12768](https://github.com/youzan/vant/pull/12768)\n- refactor(Coupon): simplify the checkbox usage by [@chenjiahan](https://github.com/chenjiahan) in [#12771](https://github.com/youzan/vant/pull/12771)\n\n#### New Contributors\n\n- [@bluesky335](https://github.com/bluesky335) made their first contribution in [#12761](https://github.com/youzan/vant/pull/12761)\n\n### v4.8.9\n\n`2024-04-06`\n\nInvalid version, please do not use it.\n\n### v4.8.8\n\n`2024-03-31`\n\n#### New Features 🎉\n\n- feat(image-preview): export onLoad and style for image slot by [@chouchouji](https://github.com/chouchouji) in [#12740](https://github.com/youzan/vant/pull/12740)\n- feat(AddressList): add event param for click-item by [@chenjiahan](https://github.com/chenjiahan) in [#12748](https://github.com/youzan/vant/pull/12748)\n\n#### Bug Fixes 🐞\n\n- fix(floating-bubble): update offset when the value changed by [@chouchouji](https://github.com/chouchouji) in [#12730](https://github.com/youzan/vant/pull/12730)\n- fix(vant-cli): support defineOptions named by [@wChenonly](https://github.com/wChenonly) in [#12734](https://github.com/youzan/vant/pull/12734)\n- fix(PickerGroup): rendering correctly when using v-for by [@inottn](https://github.com/inottn) in [#12732](https://github.com/youzan/vant/pull/12732)\n- fix(TextEllipsis): should recalculate the ellipsis state when the component is activated by [@inottn](https://github.com/inottn) in [#12741](https://github.com/youzan/vant/pull/12741)\n\n#### Document 📖\n\n- docs(button): Keep Chinese and English documents consistent by [@chouchouji](https://github.com/chouchouji) in [#12708](https://github.com/youzan/vant/pull/12708)\n- docs(cell): correct the type of label by [@chouchouji](https://github.com/chouchouji) in [#12721](https://github.com/youzan/vant/pull/12721)\n- docs(ImagePreview): add image slot scale guide by [@chenjiahan](https://github.com/chenjiahan) in [#12751](https://github.com/youzan/vant/pull/12751)\n\n#### Other Changes\n\n- chore(deps): update dependency vue-router to v4.3.0 by [@renovate](https://github.com/renovate) in [#12702](https://github.com/youzan/vant/pull/12702)\n- chore(deps): update dependency esbuild to ^0.20.0 by [@renovate](https://github.com/renovate) in [#12696](https://github.com/youzan/vant/pull/12696)\n- chore(workflow): let renovate bump package.json by [@chenjiahan](https://github.com/chenjiahan) in [#12714](https://github.com/youzan/vant/pull/12714)\n- chore(deps): update dependency eslint to ^8.57.0 by [@renovate](https://github.com/renovate) in [#12723](https://github.com/youzan/vant/pull/12723)\n- chore(docs): update the vue3-vant-mobile reference by [@CharleeWa](https://github.com/CharleeWa) in [#12735](https://github.com/youzan/vant/pull/12735)\n- chore(deps): update dependency commander to ^11.1.0 by [@renovate](https://github.com/renovate) in [#12718](https://github.com/youzan/vant/pull/12718)\n- chore(deps): update dependency enquirer to v2.4.1 by [@renovate](https://github.com/renovate) in [#12695](https://github.com/youzan/vant/pull/12695)\n- chore(deps): update dependency [@vue](https://github.com/vue)/test-utils to ^2.4.5 by @renovate in [#12716](https://github.com/youzan/vant/pull/12716)\n- chore(deps): bump Rsbuild v0.5 by [@chenjiahan](https://github.com/chenjiahan) in [#12747](https://github.com/youzan/vant/pull/12747)\n- chore(deps): update dependency eslint-config-prettier to ^9.1.0 by [@renovate](https://github.com/renovate) in [#12724](https://github.com/youzan/vant/pull/12724)\n- chore(deps): update dependency fs-extra to ^11.2.0 by [@renovate](https://github.com/renovate) in [#12745](https://github.com/youzan/vant/pull/12745)\n- chore(deps): update dependency highlight.js to ^11.9.0 by [@renovate](https://github.com/renovate) in [#12746](https://github.com/youzan/vant/pull/12746)\n- chore(deps): update dependency fast-glob to ^3.3.2 by [@renovate](https://github.com/renovate) in [#12731](https://github.com/youzan/vant/pull/12731)\n- chore(deps): update dependency less to ^4.2.0 by [@renovate](https://github.com/renovate) in [#12752](https://github.com/youzan/vant/pull/12752)\n- chore(workflow): let renovate group patch updates by [@chenjiahan](https://github.com/chenjiahan) in [#12754](https://github.com/youzan/vant/pull/12754)\n\n#### New Contributors\n\n- [@CharleeWa](https://github.com/CharleeWa) made their first contribution in [#12735](https://github.com/youzan/vant/pull/12735)\n\n### v4.8.7\n\n`2024-03-18`\n\n#### Other Changes\n\n- Revert \"chore(deps): update dependency typescript to v5.4.2\" by [@renovate](https://github.com/renovate) in [#12700](https://github.com/youzan/vant/pull/12700)\n- chore: Update homepage by [@yoyo837](https://github.com/yoyo837) in [#12704](https://github.com/youzan/vant/pull/12704)\n\n### v4.8.6\n\n`2024-03-17`\n\n#### New Features 🎉\n\n- feat(ImagePreview): add vertical prop by [@suncohey](https://github.com/suncohey) in [#12660](https://github.com/youzan/vant/pull/12660)\n- feat(signature): export clear and submit method by [@chouchouji](https://github.com/chouchouji) in [#12654](https://github.com/youzan/vant/pull/12654)\n- feat: support unplugin-auto-import plugin by [@DragonnZhang](https://github.com/DragonnZhang) in [#12679](https://github.com/youzan/vant/pull/12679)\n- feat(ActionSheet): add icon support to the actions data by [@wjw-gavin](https://github.com/wjw-gavin) in [#12671](https://github.com/youzan/vant/pull/12671)\n\n#### Bug Fixes 🐞\n\n- fix(ImagePreview): allow user to swipe to next image when the current image is moved to the edge by [@inottn](https://github.com/inottn) in [#12666](https://github.com/youzan/vant/pull/12666)\n- fix(ActionSheet): icon class name by [@chenjiahan](https://github.com/chenjiahan) in [#12701](https://github.com/youzan/vant/pull/12701)\n\n#### Document 📖\n\n- docs(ImagePreview): add vertical prop by [@chenjiahan](https://github.com/chenjiahan) in [#12663](https://github.com/youzan/vant/pull/12663)\n- docs: change tab's 'Before Change' into a real async function by [@gxy5202](https://github.com/gxy5202) in [#12693](https://github.com/youzan/vant/pull/12693)\n\n#### Other Changes\n\n- chore(deps): bump Rsbuild 0.4.12 by [@chenjiahan](https://github.com/chenjiahan) in [#12665](https://github.com/youzan/vant/pull/12665)\n- chore(deps): update dependency [@vue](https://github.com/vue)/test-utils to v2.4.5 by @renovate in [#12681](https://github.com/youzan/vant/pull/12681)\n- chore(deps): update dependency autoprefixer to v10.4.18 by [@renovate](https://github.com/renovate) in [#12682](https://github.com/youzan/vant/pull/12682)\n- chore(workflow): disable dependency dashboard by [@chenjiahan](https://github.com/chenjiahan) in [#12686](https://github.com/youzan/vant/pull/12686)\n- chore(deps): update dependency prettier to v3.2.5 by [@renovate](https://github.com/renovate) in [#12685](https://github.com/youzan/vant/pull/12685)\n- chore(deps): update rsbuild to v0.4.15 by [@renovate](https://github.com/renovate) in [#12688](https://github.com/youzan/vant/pull/12688)\n- chore(deps): update dependency eslint to v8.57.0 by [@renovate](https://github.com/renovate) in [#12697](https://github.com/youzan/vant/pull/12697)\n- chore(deps): update dependency typescript to v5.4.2 by [@renovate](https://github.com/renovate) in [#12700](https://github.com/youzan/vant/pull/12700)\n\n#### New Contributors\n\n- [@chouchouji](https://github.com/chouchouji) made their first contribution in [#12654](https://github.com/youzan/vant/pull/12654)\n- [@renovate](https://github.com/renovate) made their first contribution in [#12681](https://github.com/youzan/vant/pull/12681)\n- [@gxy5202](https://github.com/gxy5202) made their first contribution in [#12693](https://github.com/youzan/vant/pull/12693)\n- [@DragonnZhang](https://github.com/DragonnZhang) made their first contribution in [#12679](https://github.com/youzan/vant/pull/12679)\n\n### v4.8.5\n\n`2024-02-25`\n\n#### New Features 🎉\n\n- feat(Image): add `crossorigin` & `referrerpolicy` props by [@Jungzl](https://github.com/Jungzl) in [#12641](https://github.com/youzan/vant/pull/12641)\n\n#### Bug Fixes 🐞\n\n- fix(NumberKeyboard): render delete slot correctly when theme is custom by [@TPORL](https://github.com/TPORL) in [#12624](https://github.com/youzan/vant/pull/12624)\n\n#### Document 📖\n\n- docs: update docs for params related to Picker events by [@wjw-gavin](https://github.com/wjw-gavin) in [#12619](https://github.com/youzan/vant/pull/12619)\n- docs(DatePicker): fix en-docs error by [@wjw-gavin](https://github.com/wjw-gavin) in [#12620](https://github.com/youzan/vant/pull/12620)\n- docs(Uploader): fix miss double quote by [@nemo-shen](https://github.com/nemo-shen) in [#12627](https://github.com/youzan/vant/pull/12627)\n- docs: add full registration guide by [@chenjiahan](https://github.com/chenjiahan) in [#12628](https://github.com/youzan/vant/pull/12628)\n- docs: add Rsbuild import on demand guide by [@chenjiahan](https://github.com/chenjiahan) in [#12629](https://github.com/youzan/vant/pull/12629)\n\n#### Other Changes\n\n- Revert \"fix(DropdownMenu): fix recursive update when passing object literal to title-class (#12614)\" by [@inottn](https://github.com/inottn) in [#12617](https://github.com/youzan/vant/pull/12617)\n- chore(deps): bump Rsbuild v0.4 by [@chenjiahan](https://github.com/chenjiahan) in [#12625](https://github.com/youzan/vant/pull/12625)\n- chore(workflow): setup renovate config by [@chenjiahan](https://github.com/chenjiahan) in [#12626](https://github.com/youzan/vant/pull/12626)\n- test: skip image SSR test case by [@chenjiahan](https://github.com/chenjiahan) in [#12644](https://github.com/youzan/vant/pull/12644)\n\n#### New Contributors\n\n- [@TPORL](https://github.com/TPORL) made their first contribution in [#12624](https://github.com/youzan/vant/pull/12624)\n\n### v4.8.4\n\n`2024-02-03`\n\n#### New Features 🎉\n\n- feat(Picker): allow to hidden to toolbar buttons by [@chenjiahan](https://github.com/chenjiahan) in [#12599](https://github.com/youzan/vant/pull/12599)\n\n#### Bug Fixes 🐞\n\n- fix(Sticky): initial sticky position by [@nemo-shen](https://github.com/nemo-shen) in [#12601](https://github.com/youzan/vant/pull/12601)\n- fix(DropdownMenu): fix recursive update when passing object literal to title-class by [@inottn](https://github.com/inottn) in [#12614](https://github.com/youzan/vant/pull/12614)\n\n#### Document 📖\n\n- docs: improve quickstart tips by [@inottn](https://github.com/inottn) in [#12606](https://github.com/youzan/vant/pull/12606)\n\n#### Other Changes\n\n- chore(deps): bump Rsbuild 0.3.9 and enable clean dist by [@chenjiahan](https://github.com/chenjiahan) in [#12600](https://github.com/youzan/vant/pull/12600)\n- chore: avoid workflow running on forked repo by [@tolking](https://github.com/tolking) in [#12607](https://github.com/youzan/vant/pull/12607)\n- chore(workflow): using new M1 macOS runner by [@chenjiahan](https://github.com/chenjiahan) in [#12615](https://github.com/youzan/vant/pull/12615)\n\n### v4.8.3\n\n`2024-01-20`\n\n#### New Features 🎉\n\n- feat(Notify): add teleport prop by [@inottn](https://github.com/inottn) in [#12556](https://github.com/youzan/vant/pull/12556)\n- feat(TextEllipsis): add `action` slot by [@nemo-shen](https://github.com/nemo-shen) in [#12560](https://github.com/youzan/vant/pull/12560)\n- feat(ImagePreview): add close-on-click-image prop by [@inottn](https://github.com/inottn) in [#12566](https://github.com/youzan/vant/pull/12566)\n- feat(icons): add icon `arrow-double-left` and `arrow-double-right` by [@nemo-shen](https://github.com/nemo-shen) in [#12579](https://github.com/youzan/vant/pull/12579)\n- feat(Toast): add z-index prop by [@inottn](https://github.com/inottn) in [#12587](https://github.com/youzan/vant/pull/12587)\n\n#### Bug Fixes 🐞\n\n- fix(Tab): tab(with sticky prop) loss 'fixed' classname after switch tab by [@nemo-shen](https://github.com/nemo-shen) in [#12547](https://github.com/youzan/vant/pull/12547)\n- fix(Image): ImagePosition type is not exported before by [@Jungzl](https://github.com/Jungzl) in [#12549](https://github.com/youzan/vant/pull/12549)\n- fix(Tabs): van-border-radius-sm to van-radius-sm by [@edram](https://github.com/edram) in [#12576](https://github.com/youzan/vant/pull/12576)\n\n#### Document 📖\n\n- docs(Lazyload): fix preLoad type error and spelling mistakes by [@RSS1102](https://github.com/RSS1102) in [#12554](https://github.com/youzan/vant/pull/12554)\n- docs(home): update heading level by [@inottn](https://github.com/inottn) in [#12577](https://github.com/youzan/vant/pull/12577)\n\n#### Other Changes\n\n- test: bump vitest v1.1.3 by [@inottn](https://github.com/inottn) in [#12546](https://github.com/youzan/vant/pull/12546)\n- chore(deps): bump Rsbuild to v0.3.2 by [@chenjiahan](https://github.com/chenjiahan) in [#12565](https://github.com/youzan/vant/pull/12565)\n- chore(deps): bump vue to v3.4.13 by [@inottn](https://github.com/inottn) in [#12567](https://github.com/youzan/vant/pull/12567)\n- chore(deps): bump vite from 5.0.11 to 5.0.12 by [@dependabot](https://github.com/dependabot) in [#12588](https://github.com/youzan/vant/pull/12588)\n\n#### New Contributors\n\n- [@edram](https://github.com/edram) made their first contribution in [#12576](https://github.com/youzan/vant/pull/12576)\n\n### v4.8.2\n\n`2024-01-03`\n\n#### New Features 🎉\n\n- feat: support link css from shadow dom by [@yoyo837](https://github.com/yoyo837) in [#12526](https://github.com/youzan/vant/pull/12526)\n- feat(DropdownMenu): add auto-locate prop by [@inottn](https://github.com/inottn) in [#12251](https://github.com/youzan/vant/pull/12251)\n\n#### Performance 🚀\n\n- perf(CLI): improve markdown compile performance by [@chenjiahan](https://github.com/chenjiahan) in [#12541](https://github.com/youzan/vant/pull/12541)\n\n#### Bug Fixes 🐞\n\n- fix(ci): eslint on windows by [@Jungzl](https://github.com/Jungzl) in [#12516](https://github.com/youzan/vant/pull/12516)\n- fix(ImagePreview): double-scale and close-on-click-overlay may not work in certain scenarios by [@inottn](https://github.com/inottn) in [#12521](https://github.com/youzan/vant/pull/12521)\n\n#### Other Changes\n\n- chore(deps): bump Rsbuild v0.2.8 by [@chenjiahan](https://github.com/chenjiahan) in [#12519](https://github.com/youzan/vant/pull/12519)\n- chore(deps): bump Vue 3.4.0-beta.4 by [@chenjiahan](https://github.com/chenjiahan) in [#12520](https://github.com/youzan/vant/pull/12520)\n- test: bump vitest v1.1.0 by [@chenjiahan](https://github.com/chenjiahan) in [#12522](https://github.com/youzan/vant/pull/12522)\n- chore(deps): bump vite v5 by [@chenjiahan](https://github.com/chenjiahan) in [#12523](https://github.com/youzan/vant/pull/12523)\n- chore(deps): bump esbuild v0.19 by [@chenjiahan](https://github.com/chenjiahan) in [#12524](https://github.com/youzan/vant/pull/12524)\n- chore: lock Rspack v0.4.3 to fix CSS issue by [@chenjiahan](https://github.com/chenjiahan) in [#12525](https://github.com/youzan/vant/pull/12525)\n- chore(workflow): adjust issue templates by [@chenjiahan](https://github.com/chenjiahan) in [#12528](https://github.com/youzan/vant/pull/12528)\n- chore(workflow): update codesandbox URL by [@chenjiahan](https://github.com/chenjiahan) in [#12529](https://github.com/youzan/vant/pull/12529)\n- chore: update vitest config by [@inottn](https://github.com/inottn) in [#12530](https://github.com/youzan/vant/pull/12530)\n- chore(deps): bump Rsbuild and Vue by [@chenjiahan](https://github.com/chenjiahan) in [#12532](https://github.com/youzan/vant/pull/12532)\n- chore(ImagePreview): reuse isTap ref by [@inottn](https://github.com/inottn) in [#12536](https://github.com/youzan/vant/pull/12536)\n- test(Toast): reduce test run time by [@inottn](https://github.com/inottn) in [#12538](https://github.com/youzan/vant/pull/12538)\n- test(FloatingBubble): reduce test run time by [@inottn](https://github.com/inottn) in [#12539](https://github.com/youzan/vant/pull/12539)\n\n### v4.8.1\n\n`2023-12-17`\n\n#### New Features 🎉\n\n- perf(TextEllipsis): reuse windowWidth to avoid repeat calculations by [@inottn](https://github.com/inottn) in [#12471](https://github.com/youzan/vant/pull/12471)\n- feat(TextEllipsis): add the toggle instance method by [@wjw-gavin](https://github.com/wjw-gavin) in [#12472](https://github.com/youzan/vant/pull/12472)\n- feat(cli): bump Rsbuild v0.2.2 by [@chenjiahan](https://github.com/chenjiahan) in [#12502](https://github.com/youzan/vant/pull/12502)\n\n#### Performance 🚀\n\n- perf(cli): disable source map to make compilation faster by [@chenjiahan](https://github.com/chenjiahan) in [#12484](https://github.com/youzan/vant/pull/12484)\n\n#### Bug Fixes 🐞\n\n- fix(cli): remove unused script in template by [@chenjiahan](https://github.com/chenjiahan) in [#12482](https://github.com/youzan/vant/pull/12482)\n- fix(TextEllipsis): fix missing param for toggle by [@wjw-gavin](https://github.com/wjw-gavin) in [#12483](https://github.com/youzan/vant/pull/12483)\n\n#### Document 📖\n\n- docs(collapse): fix missing ref tags by [@RSS1102](https://github.com/RSS1102) in [#12460](https://github.com/youzan/vant/pull/12460)\n- docs(collapse): fix translation Error by [@RSS1102](https://github.com/RSS1102) in [#12464](https://github.com/youzan/vant/pull/12464)\n- docs(dialog): fix translation Error and keep the sample code the same by [@RSS1102](https://github.com/RSS1102) in [#12465](https://github.com/youzan/vant/pull/12465)\n- docs(TreeSelect): correct variable names by [@inottn](https://github.com/inottn) in [#12469](https://github.com/youzan/vant/pull/12469)\n- docs: add Rsbuild scaffold guide by [@chenjiahan](https://github.com/chenjiahan) in [#12475](https://github.com/youzan/vant/pull/12475)\n- docs(image-preview): usage of Supplementing className by [@RSS1102](https://github.com/RSS1102) in [#12491](https://github.com/youzan/vant/pull/12491)\n- docs(Quickstart): unplugin-vue-components usage updated (#12499) by [@wChenonly](https://github.com/wChenonly) in [#12500](https://github.com/youzan/vant/pull/12500)\n\n#### Other Changes\n\n- chore(workflow): add perf label for PR by [@chenjiahan](https://github.com/chenjiahan) in [#12473](https://github.com/youzan/vant/pull/12473)\n- refactor(CLI): integrate Rsbuild to build website by [@chenjiahan](https://github.com/chenjiahan) in [#12481](https://github.com/youzan/vant/pull/12481)\n- chore: bump Rspack 0.4.2 to fix Chinese path by [@chenjiahan](https://github.com/chenjiahan) in [#12496](https://github.com/youzan/vant/pull/12496)\n- chore(deps): bump vite from 4.4.9 to 4.4.12 by [@dependabot](https://github.com/dependabot) in [#12493](https://github.com/youzan/vant/pull/12493)\n\n#### New Contributors\n\n- [@RSS1102](https://github.com/RSS1102) made their first contribution in [#12460](https://github.com/youzan/vant/pull/12460)\n\n### v4.8.0\n\n`2023-11-19`\n\n#### New Component 🎉\n\n- Added Highlight component, contributed by [@wjw-gavin](https://github.com/wjw-gavin) and [@inottn](https://github.com/inottn) ❤️ [#12434](https://github.com/youzan/vant/pull/12434)\n\n#### New Features\n\n- feat(ImagePreview): expose resetScale method by [@inottn](https://github.com/inottn) in [#12426](https://github.com/youzan/vant/pull/12426)\n- feat(Checker): add checked and disabled params to the default slot by [@inottn](https://github.com/inottn) in [#12436](https://github.com/youzan/vant/pull/12436)\n- feat(Row): gutter support vertical space by [@cc-hearts](https://github.com/cc-hearts) in [#12439](https://github.com/youzan/vant/pull/12439)\n\n#### Bug Fixes 🐞\n\n- fix(Calendar): subtitle supports reactive by [@cc-hearts](https://github.com/cc-hearts) in [#12425](https://github.com/youzan/vant/pull/12425)\n\n#### Document 📖\n\n- docs(field): update props size by [@Simon-He95](https://github.com/Simon-He95) in [#12429](https://github.com/youzan/vant/pull/12429)\n- docs(cell): update props size by [@Simon-He95](https://github.com/Simon-He95) in [#12427](https://github.com/youzan/vant/pull/12427)\n- docs(Highlight): add version tip by [@chenjiahan](https://github.com/chenjiahan) in [#12438](https://github.com/youzan/vant/pull/12438)\n- docs(Overlay): add set z-index demo by [@chenjiahan](https://github.com/chenjiahan) in [#12454](https://github.com/youzan/vant/pull/12454)\n- docs: add Rsbuild to quickstart by [@chenjiahan](https://github.com/chenjiahan) in [#12455](https://github.com/youzan/vant/pull/12455)\n\n#### Other Changes\n\n- chore(deps): fix security alerts of babel and postcss by [@chenjiahan](https://github.com/chenjiahan) in [#12414](https://github.com/youzan/vant/pull/12414)\n\n#### New Contributors\n\n- [@cc-hearts](https://github.com/cc-hearts) made their first contribution in [#12425](https://github.com/youzan/vant/pull/12425)\n\n### v4.7.3\n\n`2023-10-29`\n\n#### New Features 🎉\n\n- feat(locale): add Arabic Locale by [@mo9a7i](https://github.com/mo9a7i) in [#12381](https://github.com/youzan/vant/pull/12381)\n- feat(Form): add required prop and support auto display by [@chenjiahan](https://github.com/chenjiahan) in [#12380](https://github.com/youzan/vant/pull/12380)\n- feat(auto-import-resolver): add module option by [@chenjiahan](https://github.com/chenjiahan) in [#12383](https://github.com/youzan/vant/pull/12383)\n- style: replace word-break with overflow-wrap by [@wjw-gavin](https://github.com/wjw-gavin) in [#12396](https://github.com/youzan/vant/pull/12396)\n- feat(Tab): add show-header prop by [@yoyo837](https://github.com/yoyo837) in [#12394](https://github.com/youzan/vant/pull/12394)\n- style(Search): use consistent padding when display error msg by [@chenjiahan](https://github.com/chenjiahan) in [#12409](https://github.com/youzan/vant/pull/12409)\n- feat(Signature): expose resize method by [@inottn](https://github.com/inottn) in [#12405](https://github.com/youzan/vant/pull/12405)\n\n#### Bug Fixes 🐞\n\n- fix(ConfigProvider): export missing theme vars by [@inottn](https://github.com/inottn) in [#12371](https://github.com/youzan/vant/pull/12371)\n- fix(AddressEdit): area field validate error when showArea is false by [@zhousg](https://github.com/zhousg) in [#12393](https://github.com/youzan/vant/pull/12393)\n- fix([@vant](https://github.com/vant)/area-data): add exports types by @Alkaidcc in [#12397](https://github.com/youzan/vant/pull/12397)\n- fix(Search): fix search style when has error message by [@johnsonwong666](https://github.com/johnsonwong666) in [#12385](https://github.com/youzan/vant/pull/12385)\n- fix(PickerGroup): only filter Comment vnode by [@zhousg](https://github.com/zhousg) in [#12402](https://github.com/youzan/vant/pull/12402)\n\n#### Document 📖\n\n- docs(auto-import-resolver): add doc for importStyle option by [@chenjiahan](https://github.com/chenjiahan) in [#12382](https://github.com/youzan/vant/pull/12382)\n- docs(Tab): keep docs and example the same by [@wjw-gavin](https://github.com/wjw-gavin) in [#12395](https://github.com/youzan/vant/pull/12395)\n- chore: add vscode-common-intellisense to the Community Ecosystem by [@Simon-He95](https://github.com/Simon-He95) in [#12406](https://github.com/youzan/vant/pull/12406)\n- docs(Signature): add resize method by [@chenjiahan](https://github.com/chenjiahan) in [#12411](https://github.com/youzan/vant/pull/12411)\n- docs(progress): remove outdated resize method by [@chenjiahan](https://github.com/chenjiahan) in [#12412](https://github.com/youzan/vant/pull/12412)\n\n#### Other Changes\n\n- chore(Field): required label css will active when rules contain required by [@morance](https://github.com/morance) in [#12376](https://github.com/youzan/vant/pull/12376)\n- test(ImagePreview): fix incorrect onClose test case by [@chenjiahan](https://github.com/chenjiahan) in [#12386](https://github.com/youzan/vant/pull/12386)\n- chore: forked repo, skip CI running by [@yoyo837](https://github.com/yoyo837) in [#12410](https://github.com/youzan/vant/pull/12410)\n\n#### New Contributors\n\n- [@morance](https://github.com/morance) made their first contribution in [#12376](https://github.com/youzan/vant/pull/12376)\n- [@mo9a7i](https://github.com/mo9a7i) made their first contribution in [#12381](https://github.com/youzan/vant/pull/12381)\n- [@Alkaidcc](https://github.com/Alkaidcc) made their first contribution in [#12397](https://github.com/youzan/vant/pull/12397)\n- [@johnsonwong666](https://github.com/johnsonwong666) made their first contribution in [#12385](https://github.com/youzan/vant/pull/12385)\n\n### v4.7.2\n\n`2023-10-15`\n\n#### New Features 🎉\n\n- feat(Icon): add font-family css var by [@JeremyFan](https://github.com/JeremyFan) in [#12354](https://github.com/youzan/vant/pull/12354)\n- feat(ImagePreview): add doubleScale option by [@coderXMin](https://github.com/coderXMin) in [#12360](https://github.com/youzan/vant/pull/12360)\n\n#### Bug Fixes 🐞\n\n- fix(Icons): compatible with the browser range of Vant 2 by [@chenjiahan](https://github.com/chenjiahan) in [#12356](https://github.com/youzan/vant/pull/12356)\n- fix(Uploader): multiple reupload only choose one & cancel chose problem by [@zhousg](https://github.com/zhousg) in [#12359](https://github.com/youzan/vant/pull/12359)\n\n#### Other Changes\n\n- refactor(Signature): avoid setting the canvas width and height in the next tick by [@inottn](https://github.com/inottn) in [#12347](https://github.com/youzan/vant/pull/12347)\n- refactor(Signature): use scale method to enhance clarity by [@inottn](https://github.com/inottn) in [#12363](https://github.com/youzan/vant/pull/12363)\n- chore(deps): bump rslog v1.1.0 by [@chenjiahan](https://github.com/chenjiahan) in [#12364](https://github.com/youzan/vant/pull/12364)\n- chore(cli): merge greet logs by [@chenjiahan](https://github.com/chenjiahan) in [#12365](https://github.com/youzan/vant/pull/12365)\n- chore(ImagePreview): rename doubleScale and add test case by [@chenjiahan](https://github.com/chenjiahan) in [#12366](https://github.com/youzan/vant/pull/12366)\n\n#### New Contributors\n\n- [@coderXMin](https://github.com/coderXMin) made their first contribution in [#12360](https://github.com/youzan/vant/pull/12360)\n\n### v4.7.1\n\n`2023-10-06`\n\n#### New Features 🎉\n\n- feat(FloatingPanel): optimize bounce animate by [@zhousg](https://github.com/zhousg) in [#12317](https://github.com/youzan/vant/pull/12317)\n- feat(cli): using rslog by [@chenjiahan](https://github.com/chenjiahan) in [#12334](https://github.com/youzan/vant/pull/12334)\n- style(Swipe): declare transition-property by [@chenjiahan](https://github.com/chenjiahan) in [#12336](https://github.com/youzan/vant/pull/12336)\n- feat(Notify): add JSDoc for utility functions by [@chenjiahan](https://github.com/chenjiahan) in [#12342](https://github.com/youzan/vant/pull/12342)\n- feat(Dialog): add JSDoc for utility functions by [@chenjiahan](https://github.com/chenjiahan) in [#12343](https://github.com/youzan/vant/pull/12343)\n- feat(Toast): add JSDoc for utility functions by [@chenjiahan](https://github.com/chenjiahan) in [#12344](https://github.com/youzan/vant/pull/12344)\n\n#### Bug Fixes 🐞\n\n- fix(Popup): fix failed to inherit scopedId by [@chenjiahan](https://github.com/chenjiahan) in [#12327](https://github.com/youzan/vant/pull/12327)\n- fix(CellGroup): failed to inherit scopeId with title by [@chenjiahan](https://github.com/chenjiahan) in [#12328](https://github.com/youzan/vant/pull/12328)\n- fix(Popover): failed to inherit scopedId by [@chenjiahan](https://github.com/chenjiahan) in [#12329](https://github.com/youzan/vant/pull/12329)\n\n#### Document 📖\n\n- docs: fix typo in Form by [@zcvvvbb](https://github.com/zcvvvbb) in [#12322](https://github.com/youzan/vant/pull/12322)\n- docs: add more ecosystem projects by [@chenjiahan](https://github.com/chenjiahan) in [#12338](https://github.com/youzan/vant/pull/12338)\n- docs(ImagePreview): improve English document by [@chenjiahan](https://github.com/chenjiahan) in [#12345](https://github.com/youzan/vant/pull/12345)\n- docs: mistypo Georqia to Georgia by [@mahnunchik](https://github.com/mahnunchik) in [#12331](https://github.com/youzan/vant/pull/12331)\n\n#### Other Changes\n\n- chore(Swipe): limit the decimal length of transform by [@chenjiahan](https://github.com/chenjiahan) in [#12337](https://github.com/youzan/vant/pull/12337)\n- chore: bump pnpm v8.8.0 by [@chenjiahan](https://github.com/chenjiahan) in [#12339](https://github.com/youzan/vant/pull/12339)\n- chore(deps): bump postcss from 8.4.27 to 8.4.31 by [@dependabot](https://github.com/dependabot) in [#12341](https://github.com/youzan/vant/pull/12341)\n\n#### New Contributors\n\n- [@zcvvvbb](https://github.com/zcvvvbb) made their first contribution in [#12322](https://github.com/youzan/vant/pull/12322)\n- [@mahnunchik](https://github.com/mahnunchik) made their first contribution in [#12331](https://github.com/youzan/vant/pull/12331)\n\n### v4.7.0\n\n`2023-09-24`\n\n#### 🍭 Icon Updates\n\n- Icon: add new `user` icon\n- Icon: add new `notes` icon\n- Icon: add new `newspaper` icon\n- Icon: add new `list-switch` icon\n- Icon: add new `list-switching` icon\n- Icon: add a filled `records` icon\n- Icon: add a filled `contact` icon\n- Icon: add a filled `discount` icon\n- Icon: add a filled `completed` icon\n- Icon: add a filled `description` icon\n- Icon: add a filled `cash-back-record` icon\n- Icon: rename the previous `records` icon to `records-o`\n- Icon: rename the previous `contact` icon to `contact-o`\n- Icon: rename the previous `discount` icon to `discount-o`\n- Icon: rename the previous `completed` icon to `completed-o`\n- Icon: rename the previous `description` icon to `description-o`\n- Icon: rename the previous `cash-back-record` icon to `cash-back-record-o`\n\n#### New Features 🎉\n\n- feat(Calendar): add click-disabled-date event by [@LadyChatterleyLover](https://github.com/LadyChatterleyLover) in [#12274](https://github.com/youzan/vant/pull/12274)\n- feat(Uploader): add --van-uploader-border-radius css variables by [@xieyezi](https://github.com/xieyezi) in [#12280](https://github.com/youzan/vant/pull/12280)\n- feat(SwipeCell): fix triggered close by clickAway when in running beforeClose by [@nined9](https://github.com/nined9) in [#12309](https://github.com/youzan/vant/pull/12309)\n- feat(AddressEdit): add change event for name and tel input by [@zhousg](https://github.com/zhousg) in [#12310](https://github.com/youzan/vant/pull/12310)\n- types(Dialog): improve showDialog return type by [@chenjiahan](https://github.com/chenjiahan) in [#12316](https://github.com/youzan/vant/pull/12316)\n\n#### Bug Fixes 🐞\n\n- fix(Picker): fix bug the content of the popup window is not consistent with the Chinese version under the English version by [@lllomh](https://github.com/lllomh) in [#12300](https://github.com/youzan/vant/pull/12300)\n- fix(Signature): fix checking if canvas is empty when backgroundColor is set by [@sywyyhykkk](https://github.com/sywyyhykkk) in [#12304](https://github.com/youzan/vant/pull/12304)\n- fix(FloatingPanel): dragging down causes the page to move by [@zhousg](https://github.com/zhousg) in [#12314](https://github.com/youzan/vant/pull/12314)\n\n#### Document 📖\n\n- docs(Picker): improve picker document by [@MrXwq](https://github.com/MrXwq) in [#12275](https://github.com/youzan/vant/pull/12275)\n- docs(Uploader): add FAQ about camera permission by [@chenjiahan](https://github.com/chenjiahan) in [#12289](https://github.com/youzan/vant/pull/12289)\n\n#### Other Changes\n\n- test(Dialog): enable function-call test cases by [@chenjiahan](https://github.com/chenjiahan) in [#12315](https://github.com/youzan/vant/pull/12315)\n- fix(cli): allow missing build script when releasing by [@chenjiahan](https://github.com/chenjiahan) in [#12292](https://github.com/youzan/vant/pull/12292)\n\n#### New Contributors\n\n- [@nined9](https://github.com/nined9) made their first contribution in [#12309](https://github.com/youzan/vant/pull/12309)\n- [@sywyyhykkk](https://github.com/sywyyhykkk) made their first contribution in [#12304](https://github.com/youzan/vant/pull/12304)\n\n### v4.6.8\n\n`2023-09-10`\n\n#### New Features 🎉\n\n- feat(Cell): add CSS vars to customize font size of the value by [@inottn](https://github.com/inottn) in [#12260](https://github.com/youzan/vant/pull/12260)\n- feat(ConfigProvider): supplement the type declaration of ConfigProviderThemeVars by [@xieyezi](https://github.com/xieyezi) in [#12264](https://github.com/youzan/vant/pull/12264)\n- feat(NavBar): add leftDisabled and rightDisabled prop by [@m-xlsea](https://github.com/m-xlsea) in [#12258](https://github.com/youzan/vant/pull/12258)\n\n#### Bug Fixes 🐞\n\n- fix(ConfigProvider): failed to set some basic theme vars by [@chenjiahan](https://github.com/chenjiahan) in [#12272](https://github.com/youzan/vant/pull/12272)\n- fix(ConfigProvider): ConfigProviderThemeVars fontSizeXs hump by [@xieyezi](https://github.com/xieyezi) in [#12267](https://github.com/youzan/vant/pull/12267)\n\n#### Document 📖\n\n- docs(NavBar): add disable button demo by [@chenjiahan](https://github.com/chenjiahan) in [#12270](https://github.com/youzan/vant/pull/12270)\n\n#### Other Changes\n\n- chore(CI): enable single-commit to reduce the repo size by [@chenjiahan](https://github.com/chenjiahan) in [#12268](https://github.com/youzan/vant/pull/12268)\n- chore(CI): bump actions version by [@chenjiahan](https://github.com/chenjiahan) in [#12269](https://github.com/youzan/vant/pull/12269)\n- chore: move axure to vant-assets repo by [@chenjiahan](https://github.com/chenjiahan) in [#12271](https://github.com/youzan/vant/pull/12271)\n\n#### New Contributors\n\n- [@xieyezi](https://github.com/xieyezi) made their first contribution in [#12264](https://github.com/youzan/vant/pull/12264)\n- [@m-xlsea](https://github.com/m-xlsea) made their first contribution in [#12258](https://github.com/youzan/vant/pull/12258)\n\n### v4.6.7\n\n`2023-09-04`\n\n#### New Features 🎉\n\n- feat(vant-use): add useRaf by [@Simon-He95](https://github.com/Simon-He95) in [#12211](https://github.com/youzan/vant/pull/12211)\n- feat(Checkbox): add indeterminate status by [@wjw-gavin](https://github.com/wjw-gavin) in [#12216](https://github.com/youzan/vant/pull/12216)\n- feat(auto-import-resolver): add auto-import-resolver package by [@wChenonly](https://github.com/wChenonly) in [#12227](https://github.com/youzan/vant/pull/12227)\n- feat(ConfigProvider): add theme-vars-scope props enable root affects by [@zhousg](https://github.com/zhousg) in [#12240](https://github.com/youzan/vant/pull/12240)\n\n#### Bug Fixes 🐞\n\n- fix(auto-import-resolver): type mismatch in TS projects by [@chenjiahan](https://github.com/chenjiahan) in [#12243](https://github.com/youzan/vant/pull/12243)\n- fix(eslint): using ignorePatterns to replace .eslintignore by [@MrXwq](https://github.com/MrXwq) in [#12237](https://github.com/youzan/vant/pull/12237)\n\n#### Document 📖\n\n- docs: improve the menu position of back-top by [@wjw-gavin](https://github.com/wjw-gavin) in [#12223](https://github.com/youzan/vant/pull/12223)\n- docs: improve use-raf document by [@chenjiahan](https://github.com/chenjiahan) in [#12224](https://github.com/youzan/vant/pull/12224)\n- docs: add Vite and Nuxt guide to quickstart by [@chenjiahan](https://github.com/chenjiahan) in [#12239](https://github.com/youzan/vant/pull/12239)\n- docs(auto-import-resolver): update README and folder name by [@chenjiahan](https://github.com/chenjiahan) in [#12241](https://github.com/youzan/vant/pull/12241)\n- docs(auto-import-resolver): add Rspack usage by [@chenjiahan](https://github.com/chenjiahan) in [#12242](https://github.com/youzan/vant/pull/12242)\n- docs(ConfigProvider): update the guide of modify CSS vars by [@chenjiahan](https://github.com/chenjiahan) in [#12246](https://github.com/youzan/vant/pull/12246)\n\n#### Other Changes\n\n- test: migrate test runner to vitest by [@chenjiahan](https://github.com/chenjiahan) in [#12206](https://github.com/youzan/vant/pull/12206)\n- chore(CI): fix codecov reporter by [@chenjiahan](https://github.com/chenjiahan) in [#12210](https://github.com/youzan/vant/pull/12210)\n- chore: use workspace protocol for internal deps by [@chenjiahan](https://github.com/chenjiahan) in [#12225](https://github.com/youzan/vant/pull/12225)\n- test: fix vitest canvas mock by [@chenjiahan](https://github.com/chenjiahan) in [#12226](https://github.com/youzan/vant/pull/12226)\n\n### v4.6.6\n\n`2023-08-20`\n\n#### New Features 🎉\n\n- feat(DropdownItem): supports boolean value in options by [@baboon-king](https://github.com/baboon-king) in [#12208](https://github.com/youzan/vant/pull/12208)\n\n#### Bug Fixes 🐞\n\n- fix(FloatingBubble): drag should not trigger click on child elements by [@zhousg](https://github.com/zhousg) in [#12201](https://github.com/youzan/vant/pull/12201)\n- fix(FloatingBubble): does not update state while hidden by [@zhousg](https://github.com/zhousg) in [#12207](https://github.com/youzan/vant/pull/12207)\n\n#### Other Changes\n\n- chore(CI): update issue comment messages by [@chenjiahan](https://github.com/chenjiahan) in [#12204](https://github.com/youzan/vant/pull/12204)\n- refactor(cli): remove execa dependency by [@chenjiahan](https://github.com/chenjiahan) in [#12205](https://github.com/youzan/vant/pull/12205)\n\n### v4.6.5\n\n`2023-08-16`\n\n#### New Features 🎉\n\n- feat(DropdownMenu): add swipe-threshold prop by [@inottn](https://github.com/inottn) in [#12117](https://github.com/youzan/vant/pull/12117)\n- types(Toast): add `ToastWrapperInstance` export by [@long-woo](https://github.com/long-woo) in [#12166](https://github.com/youzan/vant/pull/12166)\n- feat(FloatingBubble): use component attrs by [@zhousg](https://github.com/zhousg) in [#12171](https://github.com/youzan/vant/pull/12171)\n\n#### Bug Fixes 🐞\n\n- fix(FloatingPanel): Lag caused by scrollbar and panel movement #12146 by [@yue1123](https://github.com/yue1123) in [#12161](https://github.com/youzan/vant/pull/12161)\n- fix(FloatingPanel): change the default value of lock-scroll to false by [@inottn](https://github.com/inottn) in [#12162](https://github.com/youzan/vant/pull/12162)\n- fix(cli): should escape curly brackets in markdown by [@chenjiahan](https://github.com/chenjiahan) in [#12188](https://github.com/youzan/vant/pull/12188)\n\n#### Document 📖\n\n- docs: add instructions for bun package manager by [@colinhacks](https://github.com/colinhacks) in [#12182](https://github.com/youzan/vant/pull/12182)\n\n#### Other Changes\n\n- chore: add script to format GitHub changelog by [@chenjiahan](https://github.com/chenjiahan) in [#12158](https://github.com/youzan/vant/pull/12158)\n- chore(FloatingPanel): improve code style by [@chenjiahan](https://github.com/chenjiahan) in [#12175](https://github.com/youzan/vant/pull/12175)\n- refactor(cli): rewrite vite-plugin-md by [@chenjiahan](https://github.com/chenjiahan) in [#12179](https://github.com/youzan/vant/pull/12179)\n- chore(deps): bump markdown-it v13 and commander v11 by [@chenjiahan](https://github.com/chenjiahan) in [#12180](https://github.com/youzan/vant/pull/12180)\n- chore(CI): do not run codeql for pull request by [@chenjiahan](https://github.com/chenjiahan) in [#12181](https://github.com/youzan/vant/pull/12181)\n\n#### New Contributors\n\n- [@long-woo](https://github.com/long-woo) made their first contribution in [#12166](https://github.com/youzan/vant/pull/12166)\n- [@yue1123](https://github.com/yue1123) made their first contribution in [#12161](https://github.com/youzan/vant/pull/12161)\n- [@colinhacks](https://github.com/colinhacks) made their first contribution in [#12182](https://github.com/youzan/vant/pull/12182)\n- [@xincheng-1999](https://github.com/xincheng-1999) made their first contribution in [#12189](https://github.com/youzan/vant/pull/12189)\n\n### v4.6.4\n\n`2023-08-06`\n\n#### New Features 🎉\n\n- feat(area-data): update counties of WuHu by [@nivin-studio](https://github.com/nivin-studio) in [#12122](https://github.com/youzan/vant/pull/12122)\n- feat(Locale): add Serbian language to internationalization by [@RogerZXY](https://github.com/RogerZXY) in [#12145](https://github.com/youzan/vant/pull/12145)\n- feat(ImagePreview): add closeOnClickOverlay option by [@chenjiahan](https://github.com/chenjiahan) in [#12153](https://github.com/youzan/vant/pull/12153)\n- feat(List): add scroller prop by [@chenjiahan](https://github.com/chenjiahan) in [#12154](https://github.com/youzan/vant/pull/12154)\n- feat(FloatingPanel): add lock-scroll prop by [@inottn](https://github.com/inottn) in [#12157](https://github.com/youzan/vant/pull/12157)\n\n#### Bug Fixes 🐞\n\n- fix(TextEllipsis): dots repeated by [@muzaisimao](https://github.com/muzaisimao) in [#12120](https://github.com/youzan/vant/pull/12120)\n- fix(TextEllipsis): fix the logic of calculating the position of ellipsis by [@inottn](https://github.com/inottn) in [#12137](https://github.com/youzan/vant/pull/12137)\n\n#### Document 📖\n\n- docs: move PR title format to contribution guide by [@chenjiahan](https://github.com/chenjiahan) in [#12114](https://github.com/youzan/vant/pull/12114)\n- docs(Radio): add document description for the css var '--van-radio-dot-size' by [@wjw-gavin](https://github.com/wjw-gavin) in [#12152](https://github.com/youzan/vant/pull/12152)\n\n#### Other Changes\n\n- chore: avoid prettier breaking hbs template by [@chenjiahan](https://github.com/chenjiahan) in [#12113](https://github.com/youzan/vant/pull/12113)\n- chore(deps): bump release-it v16 by [@chenjiahan](https://github.com/chenjiahan) in [#12115](https://github.com/youzan/vant/pull/12115)\n- feat(get-deps): import('../foo.vue') => import('../foo.mjs') 的替换 by [@suncohey](https://github.com/suncohey) in [#12046](https://github.com/youzan/vant/pull/12046)\n- refactor(cli): rewrite release command by [@chenjiahan](https://github.com/chenjiahan) in [#12133](https://github.com/youzan/vant/pull/12133)\n- feat(cli): support gitTag option for release command by [@chenjiahan](https://github.com/chenjiahan) in [#12134](https://github.com/youzan/vant/pull/12134)\n- chore(CI): automatically generate changelog via GitHub by [@chenjiahan](https://github.com/chenjiahan) in [#12135](https://github.com/youzan/vant/pull/12135)\n- chore: add PR labeler action by [@chenjiahan](https://github.com/chenjiahan) in [#12136](https://github.com/youzan/vant/pull/12136)\n- chore(TextEllipsis): reuse actionText variable by [@chenjiahan](https://github.com/chenjiahan) in [#12138](https://github.com/youzan/vant/pull/12138)\n- refactor(cli): use GitHub changelog instead of conventional-changelog by [@chenjiahan](https://github.com/chenjiahan) in [#12139](https://github.com/youzan/vant/pull/12139)\n- chore: add Serbian to doc and rename the file by [@chenjiahan](https://github.com/chenjiahan) in [#12150](https://github.com/youzan/vant/pull/12150)\n- chore(eslint-config): bump dependencies by [@chenjiahan](https://github.com/chenjiahan) in [#12155](https://github.com/youzan/vant/pull/12155)\n\n#### New Contributors\n\n- [@muzaisimao](https://github.com/muzaisimao) made their first contribution in [#12120](https://github.com/youzan/vant/pull/12120)\n- [@suncohey](https://github.com/suncohey) made their first contribution in [#12046](https://github.com/youzan/vant/pull/12046)\n- [@nivin-studio](https://github.com/nivin-studio) made their first contribution in [#12122](https://github.com/youzan/vant/pull/12122)\n- [@RogerZXY](https://github.com/RogerZXY) made their first contribution in [#12145](https://github.com/youzan/vant/pull/12145)\n\n### [v4.6.3](https://github.com/vant-ui/vant/compare/v4.6.2...v4.6.3)\n\n`2023-07-23`\n\n**Feature**\n\n- AddressList: add show-add-button prop [#12090](https://github.com/vant-ui/vant/issues/12090)\n- CheckboxGroup: add shape prop [#12092](https://github.com/vant-ui/vant/issues/12092)\n- RadioGroup: add shape prop [#12092](https://github.com/vant-ui/vant/issu\n\n<!-- [TRUNCATED AT 50KB] -->","isInternal":false,"tokens":15830,"sizeBytes":50162},{"name":"changelog.zh-CN.md","path":"packages/vant/docs/markdown/changelog.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/changelog.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# 更新日志\n\n### 重要提示\n\n**为了避免重复维护，降低维护成本。**\n\n**从 v4.9.0 开始，Vant 的更新日志统一发布在 [GitHub 的 Releases 页面](https://github.com/youzan/vant/releases)，当前页面将不再更新。**\n\n当前文档为 Vant v4.0.0 ~ v4.9.0 的的更新日志，其他版本请参考：\n\n- [Vant 2 更新日志](/vant/v2/#/zh-CN/changelog)\n- [Vant 3 更新日志](/vant/v3/#/zh-CN/changelog)\n\n### 介绍\n\nVant 遵循 [Semver](https://semver.org/lang/zh-CN/) 语义化版本规范。\n\n**发布节奏**\n\n- 修订号：通常每隔 1 ~ 2 周发布，包含新特性和问题修复。\n- 次版本号：通常每隔 1 ~ 2 月发布，包含新组件或较大的功能更新，向下兼容。\n- 主版本号：无固定的发布时间，包含不兼容更新和重大功能更新。\n\n## 更新内容\n\n### v4.9.0\n\n`2024-05-02`\n\n#### 新功能 🎉\n\n- feat(Calendar)：添加 switch-mode 属性，由[@inottn](https://github.com/inottn) 贡献，在[#12836](https://github.com/youzan/vant/pull/12836)\n- feat(PickerGroup)：添加新属性 showToolbar，由[@ReinoFu](https://github.com/ReinoFu) 贡献，在[#12839](https://github.com/youzan/vant/pull/12839)\n- feat(CLI)：支持配置 Rsbuild，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12809](https://github.com/youzan/vant/pull/12809)\n\n#### Bug 修复 🐞\n\n- fix(cli)：修复 Vue SFC 样式绑定失败，由[@zoy-l](https://github.com/zoy-l) 贡献，在[#12799](https://github.com/youzan/vant/pull/12799)\n- fix(ImagePreview)：修复 swipeItem 可能为 undefined，由[@inottn](https://github.com/inottn) 贡献，在[#12818](https://github.com/youzan/vant/pull/12818)\n- fix(Highlight)：当 keywords 为空时正确渲染，由[@Jungzl](https://github.com/Jungzl) 贡献，在[#12829](https://github.com/youzan/vant/pull/12829)\n- fix(IndexBar)：当传入 sticky & stickyOffsetTop 时正确渲染激活锚点，由[@Jungzl](https://github.com/Jungzl) 贡献，在[#12837](https://github.com/youzan/vant/pull/12837)\n\n#### 文档 📖\n\n- docs: 移除所有 Gitee 链接，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12845](https://github.com/youzan/vant/pull/12845)\n- docs: 移除 gzip 大小徽章，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12847](https://github.com/youzan/vant/pull/12847)\n- docs: 修复 Rsbuild HTML 构建失败，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12848](https://github.com/youzan/vant/pull/12848)\n\n#### 其他更改\n\n- chore(deps)：升级依赖 terser 至 ^5.30.3，由[@renovate](https://github.com/renovate) 贡献，在[#12795](https://github.com/youzan/vant/pull/12795)\n- chore(deps)：升级依赖 eslint-plugin-vue 至 ^9.25.0，由[@renovate](https://github.com/renovate) 贡献，在[#12794](https://github.com/youzan/vant/pull/12794)\n- chore(deps)：更新所有补丁依赖，由[@renovate](https://github.com/renovate) 贡献，在[#12773](https://github.com/youzan/vant/pull/12773)\n- chore(workflow)：升级至 pnpm v9，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12808](https://github.com/youzan/vant/pull/12808)\n- chore：推送 github-pages-deploy-action[@v4](https://github.com/v4).6.0，由 @chenjiahan 贡献，在[#12810](https://github.com/youzan/vant/pull/12810)\n- chore(deps)：升级依赖 [@vitejs](https://github.com/vitejs)/plugin-vue 至 v5，由 @renovate 贡献，在[#12840](https://github.com/youzan/vant/pull/12840)\n- chore(deps)：升级依赖 commander 至 v12，由[@renovate](https://github.com/renovate) 贡献，在[#12841](https://github.com/youzan/vant/pull/12841)\n- chore(deps)：更新 actions/setup-node 行为至 v4，由[@renovate](https://github.com/renovate) 贡献，在[#12814](https://github.com/youzan/vant/pull/12814)\n- chore(deps)：更新 github/issue-labeler 行为至 v3.4，由[@renovate](https://github.com/renovate) 贡献，在[#12813](https://github.com/youzan/vant/pull/12813)\n- chore(deps)：更新 codecov/codecov-action 行为至 v4，由[@renovate](https://github.com/renovate) 贡献，在[#12815](https://github.com/youzan/vant/pull/12815)\n- chore(deps)：更新所有补丁依赖，由[@renovate](https://github.com/renovate) 贡献，在[#12812](https://github.com/youzan/vant/pull/12812)\n\n#### 新贡献者\n\n- [@ReinoFu](https://github.com/ReinoFu) 在[#12839](https://github.com/youzan/vant/pull/12839) 中首次贡献\n\n### v4.8.11\n\n`2024-04-14`\n\n#### 新功能 🎉\n\n- feat(DropdownMenu)：通过 [@inottn](https://github.com/inottn) 在 [#12785](https://github.com/youzan/vant/pull/12785) 中为选项添加 disabled 属性\n\n#### Bug 修复 🐞\n\n- fix：在 JetBrains IDE 中修复警告 `is not a valid value for v-model`，贡献者 [@anyesu](https://github.com/anyesu) 在 [#12787](https://github.com/youzan/vant/pull/12787)\n- fix(Cli)：移除站点的 tsconfig 文件，贡献者 [@chenjiahan](https://github.com/chenjiahan) 在 [#12792](https://github.com/youzan/vant/pull/12792)\n\n#### 文档 📖\n\n- docs(list)：更新模块代码加载错误信息，贡献者 [@wangjue666](https://github.com/wangjue666) 在 [#12778](https://github.com/youzan/vant/pull/12778)\n\n#### 其他变更\n\n- chore(deps)：更新依赖 eslint-plugin-vue 至 ^9.24.1，由 [@renovate](https://github.com/renovate) 在 [#12774](https://github.com/youzan/vant/pull/12774) 提交\n- chore(deps)：升级 Rsbuild 至 v0.6 版本，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12790](https://github.com/youzan/vant/pull/12790) 提交\n\n#### 新贡献者\n\n- [@wangjue666](https://github.com/wangjue666) 在 [#12778](https://github.com/youzan/vant/pull/12778) 中首次贡献\n- [@anyesu](https://github.com/anyesu) 在 [#12787](https://github.com/youzan/vant/pull/12787) 中首次贡献\n\n### v4.8.10\n\n`2024-04-06`\n\n#### 新功能 🎉\n\n- feat(TimePicker)：支持 confirm 和 getSelectedTime 方法，由 [@bluesky335](https://github.com/bluesky335) 在 [#12761](https://github.com/youzan/vant/pull/12761) 提供\n- feat(DatePicker)：支持 confirm 和 getSelectedDate 方法，由 [@bluesky335](https://github.com/bluesky335) 在 [#12762](https://github.com/youzan/vant/pull/12762) 提供\n- feat(Coupon)：支持复选框用法，由 [@CatsAndMice](https://github.com/CatsAndMice) 在 [#12744](https://github.com/youzan/vant/pull/12744) 提供\n\n#### 其他变更\n\n- chore(deps)：更新依赖 vite 至 v5.0.13 [安全]，由 [@renovate](https://github.com/renovate) 在 [#12767](https://github.com/youzan/vant/pull/12767) 提供\n- chore(deps)：更新所有补丁依赖项，由 [@renovate](https://github.com/renovate) 在 [#12756](https://github.com/youzan/vant/pull/12756) 提供\n- chore(deps)：更新依赖项 [@types](https://github.com/types)/lodash 至 ^4.17.0，由 [@renovate](https://github.com/renovate) 在 [#12757](https://github.com/youzan/vant/pull/12757) 提供\n- chore：修正 getSelectedTime 的返回类型，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12768](https://github.com/youzan/vant/pull/12768) 提供\n- refactor(Coupon)：简化复选框用法，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12771](https://github.com/youzan/vant/pull/12771) 提供\n\n#### 新贡献者\n\n- [@bluesky335](https://github.com/bluesky335) 在 [#12761](https://github.com/youzan/vant/pull/12761) 中首次贡献\n\n### v4.8.9\n\n`2024-04-06`\n\n无效版本，请勿使用。\n\n### v4.8.8\n\n`2024-03-31`\n\n#### 新特性 🎉\n\n- feat(image-preview): 导出 image 插槽的 onLoad 和 style 属性，由[@chouchouji](https://github.com/chouchouji) 在 [#12740](https://github.com/youzan/vant/pull/12740) 提交\n- feat(AddressList): 为 click-item 添加事件参数，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12748](https://github.com/youzan/vant/pull/12748) 提交\n\n#### 故障修复 🐞\n\n- fix(floating-bubble): 当值更改时更新偏移量，由[@chouchouji](https://github.com/chouchouji) 在 [#12730](https://github.com/youzan/vant/pull/12730) 提交\n- fix(vant-cli): 支持以定义的选项命名，由[@wChenonly](https://github.com/wChenonly) 在 [#12734](https://github.com/youzan/vant/pull/12734) 提交\n- fix(PickerGroup): 使用 v-for 时能够正确渲染，由[@inottn](https://github.com/inottn) 在 [#12732](https://github.com/youzan/vant/pull/12732) 提交\n- fix(TextEllipsis): 当组件被激活时应重新计算省略状态，由[@inottn](https://github.com/inottn) 在 [#12741](https://github.com/youzan/vant/pull/12741) 提交\n\n#### 文档更新 📖\n\n- docs(button): 保持中英文文档一致，由[@chouchouji](https://github.com/chouchouji) 在 [#12708](https://github.com/youzan/vant/pull/12708) 提交\n- docs(cell): 更正 label 的类型，由[@chouchouji](https://github.com/chouchouji) 在 [#12721](https://github.com/youzan/vant/pull/12721) 提交\n- docs(ImagePreview): 添加图片插槽缩放指导，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12751](https://github.com/youzan/vant/pull/12751) 提交\n\n#### 其他更改\n\n- chore(deps): 更新 vue-router 依赖至 v4.3.0，由[@renovate](https://github.com/renovate) 在 [#12702](https://github.com/youzan/vant/pull/12702) 提交\n- chore(deps): 更新 esbuild 依赖至 ^0.20.0，由[@renovate](https://github.com/renovate) 在 [#12696](https://github.com/youzan/vant/pull/12696) 提交\n- chore(workflow): 让 renovate 提升 package.json 版本，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12714](https://github.com/youzan/vant/pull/12714) 提交\n- chore(deps): 更新 eslint 依赖至 ^8.57.0，由[@renovate](https://github.com/renovate) 在 [#12723](https://github.com/youzan/vant/pull/12723) 提交\n- chore(docs): 更新 vue3-vant-mobile 参考文档，由[@CharleeWa](https://github.com/CharleeWa) 在 [#12735](https://github.com/youzan/vant/pull/12735) 提交\n- chore(deps): 更新 commander 依赖至 ^11.1.0，由[@renovate](https://github.com/renovate) 在 [#12718](https://github.com/youzan/vant/pull/12718) 提交\n- chore(deps): 更新 enquirer 依赖至 v2.4.1，由[@renovate](https://github.com/renovate) 在 [#12695](https://github.com/youzan/vant/pull/12695) 提交\n- chore(deps): 更新 [@vue](https://github.com/vue)/test-utils 依赖至 ^2.4.5，由 @renovate 在 [#12716](https://github.com/youzan/vant/pull/12716) 提交\n- chore(deps): 版本升至 Rsbuild v0.5，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12747](https://github.com/youzan/vant/pull/12747) 提交\n- chore(deps): 更新 eslint-config-prettier 依赖至 ^9.1.0，由[@renovate](https://github.com/renovate) 在 [#12724](https://github.com/youzan/vant/pull/12724) 提交\n- chore(deps): 更新 fs-extra 依赖至 ^11.2.0，由[@renovate](https://github.com/renovate) 在 [#12745](https://github.com/youzan/vant/pull/12745) 提交\n- chore(deps): 更新 highlight.js 依赖至 ^11.9.0，由[@renovate](https://github.com/renovate) 在 [#12746](https://github.com/youzan/vant/pull/12746) 提交\n- chore(deps): 更新 fast-glob 依赖至 ^3.3.2，由[@renovate](https://github.com/renovate) 在 [#12731](https://github.com/youzan/vant/pull/12731) 提交\n- chore(deps): 更新 less 依赖至 ^4.2.0，由[@renovate](https://github.com/renovate) 在 [#12752](https://github.com/youzan/vant/pull/12752) 提交\n- chore(workflow): 让 renovate 整合补丁更新，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12754](https://github.com/youzan/vant/pull/12754) 提交\n\n#### 新贡献者\n\n- [@CharleeWa](https://github.com/CharleeWa) 在 [#12735](https://github.com/youzan/vant/pull/12735) 中首次贡献\n\n### v4.8.7\n\n`2024-03-18`\n\n#### 其他更改\n\n- 回退 \"chore(deps)：更新依赖 typescript 到 v5.4.2\" by [@renovate](https://github.com/renovate) in [#12700](https://github.com/youzan/vant/pull/12700)\n- 更新 `@vant/auto-import-resolver` homepage by [@yoyo837](https://github.com/yoyo837) in [#12704](https://github.com/youzan/vant/pull/12704)\n\n### v4.8.6\n\n`2024-03-17`\n\n#### 新功能 🎉\n\n- feat(ImagePreview)：添加 vertical 属性 [@suncohey](https://github.com/suncohey) 在 [#12660](https://github.com/youzan/vant/pull/12660)\n- feat(signature)：导出 clear 和 submit 方法 [@chouchouji](https://github.com/chouchouji) 在 [#12654](https://github.com/youzan/vant/pull/12654)\n- feat：支持 unplugin-auto-import 插件 [@DragonnZhang](https://github.com/DragonnZhang) 在 [#12679](https://github.com/youzan/vant/pull/12679)\n- feat(ActionSheet)：在 actions 数据中添加图标支持 [@wjw-gavin](https://github.com/wjw-gavin) 在 [#12671](https://github.com/youzan/vant/pull/12671)\n\n#### Bug 修复 🐞\n\n- fix(ImagePreview)：在当前图片被移动到边缘时，允许用户滑动到下一张图片 [@inottn](https://github.com/inottn) 在 [#12666](https://github.com/youzan/vant/pull/12666)\n- fix(ActionSheet)：图标类名 [@chenjiahan](https://github.com/chenjiahan) 在 [#12701](https://github.com/youzan/vant/pull/12701)\n\n#### 文档更新 📖\n\n- docs(ImagePreview)：添加 vertical 属性 [@chenjiahan](https://github.com/chenjiahan) 在 [#12663](https://github.com/youzan/vant/pull/12663)\n- docs：将 tab 的 'Before Change' 改为一个真正的异步函数 [@gxy5202](https://github.com/gxy5202) 在 [#12693](https://github.com/youzan/vant/pull/12693)\n\n#### 其他更改\n\n- chore(deps)：Rsbuild 升级到 0.4.12 [@chenjiahan](https://github.com/chenjiahan) 在 [#12665](https://github.com/youzan/vant/pull/12665)\n- chore(deps)：更新依赖 [@vue](https://github.com/vue)/test-utils 到 v2.4.5 @renovate 在 [#12681](https://github.com/youzan/vant/pull/12681)\n- chore(deps)：更新依赖 autoprefixer 到 v10.4.18 [@renovate](https://github.com/renovate) 在 [#12682](https://github.com/youzan/vant/pull/12682)\n- chore(workflow)：禁用依赖仪表板 [@chenjiahan](https://github.com/chenjiahan) 在 [#12686](https://github.com/youzan/vant/pull/12686)\n- chore(deps)：更新依赖 prettier 到 v3.2.5 [@renovate](https://github.com/renovate) 在 [#12685](https://github.com/youzan/vant/pull/12685)\n- chore(deps)：更新 Rsbuild 到 v0.4.15 [@renovate](https://github.com/renovate) 在 [#12688](https://github.com/youzan/vant/pull/12688)\n- chore(deps)：更新依赖 eslint 到 v8.57.0 [@renovate](https://github.com/renovate) 在 [#12697](https://github.com/youzan/vant/pull/12697)\n- chore(deps)：更新依赖 typescript 到 v5.4.2 [@renovate](https://github.com/renovate) 在 [#12700](https://github.com/youzan/vant/pull/12700)\n\n#### 新贡献者\n\n- [@chouchouji](https://github.com/chouchouji) 在 [#12654](https://github.com/youzan/vant/pull/12654) 做出了首次贡献\n- [@renovate](https://github.com/renovate) 在 [#12681](https://github.com/youzan/vant/pull/12681) 做出了首次贡献\n- [@gxy5202](https://github.com/gxy5202) 在 [#12693](https://github.com/youzan/vant/pull/12693) 做出了首次贡献\n- [@DragonnZhang](https://github.com/DragonnZhang) 在 [#12679](https://github.com/youzan/vant/pull/12679) 做出了首次贡献\n\n### v4.8.5\n\n`2024-02-25`\n\n#### 新功能 🎉\n\n- feat(Image): 新增 `crossorigin` 和 `referrerpolicy` 属性 by [@Jungzl](https://github.com/Jungzl) in [#12641](https://github.com/youzan/vant/pull/12641)\n\n#### Bug修复 🐞\n\n- fix(NumberKeyboard): 当主题为自定义时正确渲染删除插槽 by [@TPORL](https://github.com/TPORL) in [#12624](https://github.com/youzan/vant/pull/12624)\n\n#### 文档 📖\n\n- docs: 更新与 Picker 事件相关的参数文档 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12619](https://github.com/youzan/vant/pull/12619)\n- docs(DatePicker): 修复英文文档错误 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12620](https://github.com/youzan/vant/pull/12620)\n- docs(Uploader): 修复丢失双引号问题 by [@nemo-shen](https://github.com/nemo-shen) in [#12627](https://github.com/youzan/vant/pull/12627)\n- docs: 新增完整注册指南 by [@chenjiahan](https://github.com/chenjiahan) in [#12628](https://github.com/youzan/vant/pull/12628)\n- docs: 新增Rsbuild按需引入指南 by [@chenjiahan](https://github.com/chenjiahan) in [#12629](https://github.com/youzan/vant/pull/12629)\n\n#### 其他更改\n\n- Revert \"fix(DropdownMenu): 当传递对象字面量给title-class时修复递归更新问题 (#12614)\" by [@inottn](https://github.com/inottn) in [#12617](https://github.com/youzan/vant/pull/12617)\n- chore(deps): 提升 Rsbuild 至 v0.4 版本 by [@chenjiahan](https://github.com/chenjiahan) in [#12625](https://github.com/youzan/vant/pull/12625)\n- chore(workflow): 设置 renovate 配置 by [@chenjiahan](https://github.com/chenjiahan) in [#12626](https://github.com/youzan/vant/pull/12626)\n- test: 跳过图像 SSR 测试案例 by [@chenjiahan](https://github.com/chenjiahan) in [#12644](https://github.com/youzan/vant/pull/12644)\n\n#### 新贡献者\n\n- [@TPORL](https://github.com/TPORL) 在 [#12624](https://github.com/youzan/vant/pull/12624) 中首次贡献\n\n### v4.8.4\n\n`2024-02-03`\n\n#### 新功能 🎉\n\n- feat(Picker): 允许隐藏工具栏按钮 by [@chenjiahan](https://github.com/chenjiahan) in [#12599](https://github.com/youzan/vant/pull/12599)\n\n#### 问题修复 🐞\n\n- fix(Sticky): 初始黏贴位置 by [@nemo-shen](https://github.com/nemo-shen) in [#12601](https://github.com/youzan/vant/pull/12601)\n- fix(DropdownMenu): 修复传递对象字面量到 title-class 时的递归更新问题 by [@inottn](https://github.com/inottn) in [#12614](https://github.com/youzan/vant/pull/12614)\n\n#### 文档 📖\n\n- docs: 改进快速启动提示 by [@inottn](https://github.com/inottn) in [#12606](https://github.com/youzan/vant/pull/12606)\n\n#### 其他改变\n\n- chore(deps): 升级 Rsbuild 至 0.3.9 by [@chenjiahan](https://github.com/chenjiahan) in [#12600](https://github.com/youzan/vant/pull/12600)\n- chore: 避免工作流在 forked repo 上运行 by [@tolking](https://github.com/tolking) in [#12607](https://github.com/youzan/vant/pull/12607)\n- chore(workflow): 使用新的 M1 macOS 运行器 by [@chenjiahan](https://github.com/chenjiahan) in [#12615](https://github.com/youzan/vant/pull/12615)\n\n### v4.8.3\n\n`2024-01-20`\n\n#### 新功能 🎉\n\n- feat(Notify): 添加 teleport 属性，由 [@inottn](https://github.com/inottn) 贡献于 [#12556](https://github.com/youzan/vant/pull/12556)\n- feat(TextEllipsis): 添加 `action` 插槽，由 [@nemo-shen](https://github.com/nemo-shen) 贡献于 [#12560](https://github.com/youzan/vant/pull/12560)\n- feat(ImagePreview): 添加 close-on-click-image 属性，由 [@inottn](https://github.com/inottn) 贡献于 [#12566](https://github.com/youzan/vant/pull/12566)\n- feat(icons): 添加图标 `arrow-double-left` 和 `arrow-double-right`，由 [@nemo-shen](https://github.com/nemo-shen) 贡献于 [#12579](https://github.com/youzan/vant/pull/12579)\n- feat(Toast): 添加 z-index 属性，由 [@inottn](https://github.com/inottn) 贡献于 [#12587](https://github.com/youzan/vant/pull/12587)\n\n#### 问题修复 🐞\n\n- fix(Tab): 带 sticky 属性的标签页在切换后丢失 'fixed' 类名，由 [@nemo-shen](https://github.com/nemo-shen) 贡献于 [#12547](https://github.com/youzan/vant/pull/12547)\n- fix(Image): 之前未导出 ImagePosition 类型，由 [@Jungzl](https://github.com/Jungzl) 贡献于 [#12549](https://github.com/youzan/vant/pull/12549)\n- fix(Tabs): 将 van-border-radius-sm 更改为 van-radius-sm，由 [@edram](https://github.com/edram) 贡献于 [#12576](https://github.com/youzan/vant/pull/12576)\n\n#### 文档更新 📖\n\n- docs(Lazyload): 修复 preLoad 类型错误和拼写错误，由 [@RSS1102](https://github.com/RSS1102) 贡献于 [#12554](https://github.com/youzan/vant/pull/12554)\n- docs(home): 更新标题层级，由 [@inottn](https://github.com/inottn) 贡献于 [#12577](https://github.com/youzan/vant/pull/12577)\n\n#### 其他变更\n\n- test: 将 vitest 升级到 v1.1.3，由 [@inottn](https://github.com/inottn) 贡献于 [#12546](https://github.com/youzan/vant/pull/12546)\n- chore(deps): 将 Rsbuild 升级到 v0.3.2，由 [@chenjiahan](https://github.com/chenjiahan) 贡献于 [#12565](https://github.com/youzan/vant/pull/12565)\n- chore(deps): 将 vue 升级到 v3.4.13，由 [@inottn](https://github.com/inottn) 贡献于 [#12567](https://github.com/youzan/vant/pull/12567)\n- chore(deps): 将 vite 从 5.0.11 升级到 5.0.12，由 [@dependabot](https://github.com/dependabot) 贡献于 [#12588](https://github.com/youzan/vant/pull/12588)\n\n#### 新贡献者\n\n- [@edram](https://github.com/edram) 在 [#12576](https://github.com/youzan/vant/pull/12576) 中首次贡献\n\n### v4.8.2\n\n`2024-01-03`\n\n#### 新功能 🎉\n\n- feat: 支持从 shadow DOM 中链接 CSS [@yoyo837](https://github.com/yoyo837) 在 [#12526](https://github.com/youzan/vant/pull/12526)\n- feat(DropdownMenu): 新增 auto-locate 属性 [@inottn](https://github.com/inottn) 在 [#12251](https://github.com/youzan/vant/pull/12251)\n\n#### 性能提升 🚀\n\n- perf(CLI): 提升 markdown 编译性能 [@chenjiahan](https://github.com/chenjiahan) 在 [#12541](https://github.com/youzan/vant/pull/12541)\n\n#### Bug 修复 🐞\n\n- fix(ci): 在 Windows 上修复 eslint [@Jungzl](https://github.com/Jungzl) 在 [#12516](https://github.com/youzan/vant/pull/12516)\n- fix(ImagePreview): 在某些情况下双倍缩放和点击遮罩关闭可能无法工作 [@inottn](https://github.com/inottn) 在 [#12521](https://github.com/youzan/vant/pull/12521)\n\n#### 其他更改\n\n- chore(deps): 升级 Rsbuild 至 v0.2.8 [@chenjiahan](https://github.com/chenjiahan) 在 [#12519](https://github.com/youzan/vant/pull/12519)\n- chore(deps): 升级 Vue 至 3.4.0-beta.4 [@chenjiahan](https://github.com/chenjiahan) 在 [#12520](https://github.com/youzan/vant/pull/12520)\n- test: 升级 vitest 至 v1.1.0 [@chenjiahan](https://github.com/chenjiahan) 在 [#12522](https://github.com/youzan/vant/pull/12522)\n- chore(deps): 升级 vite 至 v5 [@chenjiahan](https://github.com/chenjiahan) 在 [#12523](https://github.com/youzan/vant/pull/12523)\n- chore(deps): 升级 esbuild 至 v0.19 [@chenjiahan](https://github.com/chenjiahan) 在 [#12524](https://github.com/youzan/vant/pull/12524)\n- chore: 锁定 Rspack 至 v0.4.3 以修复 CSS 问题 [@chenjiahan](https://github.com/chenjiahan) 在 [#12525](https://github.com/youzan/vant/pull/12525)\n- chore(workflow): 调整问题模板 [@chenjiahan](https://github.com/chenjiahan) 在 [#12528](https://github.com/youzan/vant/pull/12528)\n- chore(workflow): 更新 codesandbox 链接 [@chenjiahan](https://github.com/chenjiahan) 在 [#12529](https://github.com/youzan/vant/pull/12529)\n- chore: 更新 vitest 配置 [@inottn](https://github.com/inottn) 在 [#12530](https://github.com/youzan/vant/pull/12530)\n- chore(deps): 升级 Rsbuild 和 Vue [@chenjiahan](https://github.com/chenjiahan) 在 [#12532](https://github.com/youzan/vant/pull/12532)\n- chore(ImagePreview): 重用 isTap 引用 [@inottn](https://github.com/inottn) 在 [#12536](https://github.com/youzan/vant/pull/12536)\n- test(Toast): 减少测试运行时间 [@inottn](https://github.com/inottn) 在 [#12538](https://github.com/youzan/vant/pull/12538)\n- test(FloatingBubble): 减少测试运行时间 [@inottn](https://github.com/inottn) 在 [#12539](https://github.com/youzan/vant/pull/12539)\n- release: 发布 vant v4.8.2 [@chenjiahan](https://github.com/chenjiahan) 在 [#12542](https://github.com/youzan/vant/pull/12542)\n\n### v4.8.1\n\n`2023-12-17`\n\n#### 新功能 🎉\n\n- perf(TextEllipsis): 重用 windowWidth 以避免重复计算 by [@inottn](https://github.com/inottn) in [#12471](https://github.com/youzan/vant/pull/12471)\n- feat(TextEllipsis): 添加 toggle 实例方法 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12472](https://github.com/youzan/vant/pull/12472)\n- feat(cli): 升级 Rsbuild 到 v0.2.2 by [@chenjiahan](https://github.com/chenjiahan) in [#12502](https://github.com/youzan/vant/pull/12502)\n\n#### 性能优化 🚀\n\n- perf(cli): 禁用 source map 以加快编译速度 by [@chenjiahan](https://github.com/chenjiahan) in [#12484](https://github.com/youzan/vant/pull/12484)\n\n#### Bug 修复 🐞\n\n- fix(cli): 在模板中删除未使用的脚本 by [@chenjiahan](https://github.com/chenjiahan) in [#12482](https://github.com/youzan/vant/pull/12482)\n- fix(TextEllipsis): 修复 toggle 的缺少参数 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12483](https://github.com/youzan/vant/pull/12483)\n\n#### 文档 📖\n\n- docs(collapse): 修复缺少的引用标签 by [@RSS1102](https://github.com/RSS1102) in [#12460](https://github.com/youzan/vant/pull/12460)\n- docs(collapse): 修复翻译错误 by [@RSS1102](https://github.com/RSS1102) in [#12464](https://github.com/youzan/vant/pull/12464)\n- docs(dialog): 修复翻译错误并保持示例代码不变 by [@RSS1102](https://github.com/RSS1102) in [#12465](https://github.com/youzan/vant/pull/12465)\n- docs(TreeSelect): 修正变量名 by [@inottn](https://github.com/inottn) in [#12469](https://github.com/youzan/vant/pull/12469)\n- docs: 添加 Rsbuild 脚手架指南 by [@chenjiahan](https://github.com/chenjiahan) in [#12475](https://github.com/youzan/vant/pull/12475)\n- docs(image-preview): 补充 className 的使用方法 by [@RSS1102](https://github.com/RSS1102) in [#12491](https://github.com/youzan/vant/pull/12491)\n- docs(Quickstart): 更新 unplugin-vue-components 的使用方法 (#12499) by [@wChenonly](https://github.com/wChenonly) in [#12500](https://github.com/youzan/vant/pull/12500)\n\n#### 其他变更\n\n- chore(workflow): 为 PR 添加 perf 标签 by [@chenjiahan](https://github.com/chenjiahan) in [#12473](https://github.com/youzan/vant/pull/12473)\n- refactor(CLI): 整合 Rsbuild 以构建网站 by [@chenjiahan](https://github.com/chenjiahan) in [#12481](https://github.com/youzan/vant/pull/12481)\n- chore: 升级 Rspack 到 0.4.2 以修复中文路径问题 by [@chenjiahan](https://github.com/chenjiahan) in [#12496](https://github.com/youzan/vant/pull/12496)\n- chore(deps): 从 4.4.9 升级 vite 到 4.4.12 by [@dependabot](https://github.com/dependabot) in [#12493](https://github.com/youzan/vant/pull/12493)\n\n#### 新贡献者\n\n- [@RSS1102](https://github.com/RSS1102) 在 [#12460](https://github.com/youzan/vant/pull/12460) 中作出了他们的首次贡献\n\n### v4.8.0\n\n`2023-11-19`\n\n#### 新组件 🎉\n\n- 新增 Highlight 组件，由 [@wjw-gavin](https://github.com/wjw-gavin) 和 [@inottn](https://github.com/inottn) 贡献 ❤️ [#12434](https://github.com/youzan/vant/pull/12434)\n\n#### 新功能\n\n- feat(ImagePreview): 由 [@inottn](https://github.com/inottn) 在 [#12426](https://github.com/youzan/vant/pull/12426) 中增加 resetScale 方法\n- feat(Checker): 由 [@inottn](https://github.com/inottn) 在 [#12436](https://github.com/youzan/vant/pull/12436) 中向默认插槽添加 checked 和 disabled 参数\n- feat(Row): 由 [@cc-hearts](https://github.com/cc-hearts) 在 [#12439](https://github.com/youzan/vant/pull/12439) 中支持 gutter 垂直间距\n\n#### Bug 修复 🐞\n\n- fix(Calendar): 由 [@cc-hearts](https://github.com/cc-hearts) 在 [#12425](https://github.com/youzan/vant/pull/12425) 中支持副标题的响应式\n\n#### 文档 📖\n\n- docs(field): 由 [@Simon-He95](https://github.com/Simon-He95) 在 [#12429](https://github.com/youzan/vant/pull/12429) 中更新 props size\n- docs(cell): 由 [@Simon-He95](https://github.com/Simon-He95) 在 [#12427](https://github.com/youzan/vant/pull/12427) 中更新 props size\n- docs(Highlight): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12438](https://github.com/youzan/vant/pull/12438) 中添加版本提示\n- docs(Overlay): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12454](https://github.com/youzan/vant/pull/12454) 中添加设置 z-index 的演示\n- docs: 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12455](https://github.com/youzan/vant/pull/12455) 中将 Rsbuild 添加到快速入门指南\n\n#### 其他变更\n\n- chore(deps): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12414](https://github.com/youzan/vant/pull/12414) 中修复了 babel 和 postcss 的安全警报\n\n#### 新贡献者\n\n- [@cc-hearts](https://github.com/cc-hearts) 在 [#12425](https://github.com/youzan/vant/pull/12425) 中进行了首次贡献\n\n### v4.7.3\n\n`2023-10-29`\n\n#### 新功能 🎉\n\n- feat(locale): 添加阿拉伯语本地化支持 by [@mo9a7i](https://github.com/mo9a7i) in [#12381](https://github.com/youzan/vant/pull/12381)\n- feat(Form): 添加 required 属性并支持自动显示 by [@chenjiahan](https://github.com/chenjiahan) in [#12380](https://github.com/youzan/vant/pull/12380)\n- feat(auto-import-resolver): 添加模块选项 by [@chenjiahan](https://github.com/chenjiahan) in [#12383](https://github.com/youzan/vant/pull/12383)\n- style: 使用 overflow-wrap 替换 word-break by [@wjw-gavin](https://github.com/wjw-gavin) in [#12396](https://github.com/youzan/vant/pull/12396)\n- feat(Tab): 添加 show-header 属性 by [@yoyo837](https://github.com/yoyo837) in [#12394](https://github.com/youzan/vant/pull/12394)\n- style(Search): 在显示错误消息时使用一致的内边距 by [@chenjiahan](https://github.com/chenjiahan) in [#12409](https://github.com/youzan/vant/pull/12409)\n- feat(Signature): 公开 resize 方法 by [@inottn](https://github.com/inottn) in [#12405](https://github.com/youzan/vant/pull/12405)\n\n#### Bug 修复 🐞\n\n- fix(ConfigProvider): 导出丢失的主题变量 by [@inottn](https://github.com/inottn) in [#12371](https://github.com/youzan/vant/pull/12371)\n- fix(AddressEdit): 当 showArea 为 false 时区域字段验证错误 by [@zhousg](https://github.com/zhousg) in [#12393](https://github.com/youzan/vant/pull/12393)\n- fix([@vant](https://github.com/vant)/area-data): 添加导出类型 by @Alkaidcc in [#12397](https://github.com/youzan/vant/pull/12397)\n- fix(Search): 修复显示错误消息时的搜索样式问题 by [@johnsonwong666](https://github.com/johnsonwong666) in [#12385](https://github.com/youzan/vant/pull/12385)\n- fix(PickerGroup): 仅过滤 Comment vnode by [@zhousg](https://github.com/zhousg) in [#12402](https://github.com/youzan/vant/pull/12402)\n\n#### 文档 📖\n\n- docs(auto-import-resolver): 添加 importStyle 选项的文档 by [@chenjiahan](https://github.com/chenjiahan) in [#12382](https://github.com/youzan/vant/pull/12382)\n- docs(Tab): 保持文档和示例的一致性 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12395](https://github.com/youzan/vant/pull/12395)\n- chore: 将 vscode-common-intellisense 添加到社区生态系统中 by [@Simon-He95](https://github.com/Simon-He95) in [#12406](https://github.com/youzan/vant/pull/12406)\n- docs(Signature): 添加 resize 方法 by [@chenjiahan](https://github.com/chenjiahan) in [#12411](https://github.com/youzan/vant/pull/12411)\n- docs(progress): 移除过时的 resize 方法 by [@chenjiahan](https://github.com/chenjiahan) in [#12412](https://github.com/youzan/vant/pull/12412)\n\n#### 其他变更\n\n- chore(Field): 当 rules 包含 required 时，必填标签的 CSS 将生效 by [@morance](https://github.com/morance) in [#12376](https://github.com/youzan/vant/pull/12376)\n- test(ImagePreview): 修复不正确的 onClose 测试用例 by [@chenjiahan](https://github.com/chenjiahan) in [#12386](https://github.com/youzan/vant/pull/12386)\n- chore: forked 仓库，跳过 CI 运行 by [@yoyo837](https://github.com/yoyo837) in [#12410](https://github.com/youzan/vant/pull/12410)\n\n#### 新贡献者\n\n- [@morance](https://github.com/morance) 在 [#12376](https://github.com/youzan/vant/pull/12376) 中进行了首次贡献\n- [@mo9a7i](https://github.com/mo9a7i) 在 [#12381](https://github.com/youzan/vant/pull/12381) 中进行了首次贡献\n- [@Alkaidcc](https://github.com/Alkaidcc) 在 [#12397](https://github.com/youzan/vant/pull/12397) 中进行了首次贡献\n- [@johnsonwong666](https://github.com/johnsonwong666) 在 [#12385](https://github.com/youzan/vant/pull/12385) 中进行了首次贡献\n\n### v4.7.2\n\n`2023-10-15`\n\n#### 新功能 🎉\n\n- feat(Icon): 添加 font-family CSS 变量，由 [@JeremyFan](https://github.com/JeremyFan) 在 [#12354](https://github.com/youzan/vant/pull/12354) 中贡献\n- feat(ImagePreview): 添加 doubleScale 选项，由 [@coderXMin](https://github.com/coderXMin) 在 [#12360](https://github.com/youzan/vant/pull/12360) 中贡献\n\n#### Bug 修复 🐞\n\n- fix(Icons): 使图标与 Vant 2 的浏览器范围兼容，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12356](https://github.com/youzan/vant/pull/12356) 中贡献\n- fix(Uploader): 修复了多次重新上传只选择一个以及取消选择的问题，由 [@zhousg](https://github.com/zhousg) 在 [#12359](https://github.com/youzan/vant/pull/12359) 中贡献\n\n#### 其他更改\n\n- refactor(Signature): 避免在下一个 tick 中设置 canvas 的宽度和高度，由 [@inottn](https://github.com/inottn) 在 [#12347](https://github.com/youzan/vant/pull/12347) 中贡献\n- refactor(Signature): 使用 scale 方法提高清晰度，由 [@inottn](https://github.com/inottn) 在 [#12363](https://github.com/youzan/vant/pull/12363) 中贡献\n- chore(deps): 将 rslog 版本提升至 v1.1.0，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12364](https://github.com/youzan/vant/pull/12364) 中贡献\n- chore(cli): 合并欢迎日志，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12365](https://github.com/youzan/vant/pull/12365) 中贡献\n- chore(ImagePreview): 重命名 doubleScale 并添加测试用例，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12366](https://github.com/youzan/vant/pull/12366) 中贡献\n\n#### 新贡献者\n\n- [@coderXMin](https://github.com/coderXMin) 在 [#12360](https://github.com/youzan/vant/pull/12360) 中进行了他的首次贡献\n\n### v4.7.1\n\n`2023-10-06`\n\n#### 新功能 🎉\n\n- feat(FloatingPanel): 优化弹跳动画，由 [@zhousg](https://github.com/zhousg) 在 [#12317](https://github.com/youzan/vant/pull/12317) 中贡献\n- feat(cli): 使用 rslog，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12334](https://github.com/youzan/vant/pull/12334) 中贡献\n- style(Swipe): 声明 `transition-property` 样式，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12336](https://github.com/youzan/vant/pull/12336) 中贡献\n- feat(Notify): 为辅助函数添加 JSDoc，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12342](https://github.com/youzan/vant/pull/12342) 中贡献\n- feat(Dialog): 为辅助函数添加 JSDoc，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12343](https://github.com/youzan/vant/pull/12343) 中贡献\n- feat(Toast): 为辅助函数添加 JSDoc，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12344](https://github.com/youzan/vant/pull/12344) 中贡献\n\n#### Bug 修复 🐞\n\n- fix(Popup): 修复无法继承 scopedId 的问题，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12327](https://github.com/youzan/vant/pull/12327) 中贡献\n- fix(CellGroup): 修复带有标题时无法继承 scopeId 的问题，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12328](https://github.com/youzan/vant/pull/12328) 中贡献\n- fix(Popover): 修复无法继承 scopedId 的问题，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12329](https://github.com/youzan/vant/pull/12329) 中贡献\n\n#### 文档 📖\n\n- docs: 修复 Form 中的拼写错误，由 [@zcvvvbb](https://github.com/zcvvvbb) 在 [#12322](https://github.com/youzan/vant/pull/12322) 中贡献\n- docs: 添加更多生态项目，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12338](https://github.com/youzan/vant/pull/12338) 中贡献\n- docs(ImagePreview): 改进英文文档，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12345](https://github.com/youzan/vant/pull/12345) 中贡献\n- docs: 修复将 Georqia 错误拼写为 Georgia 的问题，由 [@mahnunchik](https://github.com/mahnunchik) 在 [#12331](https://github.com/youzan/vant/pull/12331) 中贡献\n\n#### 其他变更\n\n- chore(Swipe): 限制 transform 的小数位数，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12337](https://github.com/youzan/vant/pull/12337) 中贡献\n- chore: 升级 pnpm 到 v8.8.0，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12339](https://github.com/youzan/vant/pull/12339) 中贡献\n- chore(deps): 将 postcss 从 8.4.27 升级到 8.4.31，由 [@dependabot](https://github.com/dependabot) 在 [#12341](https://github.com/youzan/vant/pull/12341) 中贡献\n\n#### 新贡献者\n\n- [@zcvvvbb](https://github.com/zcvvvbb) 在 [#12322](https://github.com/youzan/vant/pull/12322) 中首次贡献\n- [@mahnunchik](https://github.com/mahnunchik) 在 [#12331](https://github.com/youzan/vant/pull/12331) 中首次贡献\n\n### v4.7.0\n\n`2023-09-24`\n\n#### 🍭 图标更新\n\n- 图标：添加一个实底的 `records` 图标\n- 图标：添加一个实底的 `contact` 图标\n- 图标：添加一个实底的 `discount` 图标\n- 图标：添加一个实底的 `completed` 图标\n- 图标：添加一个实底的 `description` 图标\n- 图标：添加一个实底的 `cash-back-record` 图标\n- 图标：添加新的 `user` 图标\n- 图标：添加新的 `notes` 图标\n- 图标：添加新的 `newspaper` 图标\n- 图标：添加新的 `list-switch` 图标\n- 图标：添加新的 `list-switching` 图标\n- 图标：将以前的 `records` 图标重命名为 `records-o`\n- 图标：将以前的 `contact` 图标重命名为 `contact-o`\n- 图标：将以前的 `discount` 图标重命名为 `discount-o`\n- 图标：将以前的 `completed` 图标重命名为 `completed-o`\n- 图标：将以前的 `description` 图标重命名为 `description-o`\n- 图标：将以前的 `cash-back-record` 图标重命名为 `cash-back-record-o`\n\n#### 新功能 🎉\n\n- feat(Calendar): 由 [@LadyChatterleyLover](https://github.com/LadyChatterleyLover) 在 [#12274](https://github.com/youzan/vant/pull/12274) 中添加了 `click-disabled-date` 事件\n- feat(Uploader): 由 [@xieyezi](https://github.com/xieyezi) 在 [#12280](https://github.com/youzan/vant/pull/12280) 中添加了 `--van-uploader-border-radius` CSS 变量\n- feat(SwipeCell): 由 [@nined9](https://github.com/nined9) 在 [#12309](https://github.com/youzan/vant/pull/12309) 中修复了运行 `beforeClose` 时点击外部触发关闭的问题\n- feat(AddressEdit): 由 [@zhousg](https://github.com/zhousg) 在 [#12310](https://github.com/youzan/vant/pull/12310) 中为姓名和电话输入添加了 `change` 事件\n- types(Dialog): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12316](https://github.com/youzan/vant/pull/12316) 中改进了 `showDialog` 的返回类型\n\n#### Bug 修复 🐞\n\n- fix(Picker): 由 [@lllomh](https://github.com/lllomh) 在 [#12300](https://github.com/youzan/vant/pull/12300) 中修复了弹出窗口的内容与中文版本不一致的问题\n- fix(Signature): 由 [@sywyyhykkk](https://github.com/sywyyhykkk) 在 [#12304](https://github.com/youzan/vant/pull/12304) 中修复了当设置了背景颜色时检查画布是否为空的问题\n- fix(FloatingPanel): 由 [@zhousg](https://github.com/zhousg) 在 [#12314](https://github.com/youzan/vant/pull/12314) 中修复了向下拖动导致页面移动的问题\n\n#### 文档 📖\n\n- docs(Picker): 由 [@MrXwq](https://github.com/MrXwq) 在 [#12275](https://github.com/youzan/vant/pull/12275) 中改进了 Picker 的文档\n- docs(Uploader): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12289](https://github.com/youzan/vant/pull/12289) 中添加了有关相机权限的常见问题解答\n\n#### 其他变更\n\n- test(Dialog): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12315](https://github.com/youzan/vant/pull/12315) 中启用了函数调用测试用例\n- fix(cli): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12292](https://github.com/youzan/vant/pull/12292) 中允许在发布时缺少构建脚本\n\n#### 新贡献者\n\n- [@nined9](https://github.com/nined9) 在 [#12309](https://github.com/youzan/vant/pull/12309) 中进行了首次贡献\n- [@sywyyhykkk](https://github.com/sywyyhykkk) 在 [#12304](https://github.com/youzan/vant/pull/12304) 中进行了首次贡献\n\n### v4.6.8\n\n`2023-09-10`\n\n#### 新功能 🎉\n\n- feat(Cell): 添加 CSS 变量用于自定义 Value 的字体大小 by [@inottn](https://github.com/inottn) in [#12260](https://github.com/youzan/vant/pull/12260)\n- feat(ConfigProvider): 补充 ConfigProviderThemeVars 的类型声明 by [@xieyezi](https://github.com/xieyezi) in [#12264](https://github.com/youzan/vant/pull/12264)\n- feat(NavBar): 添加 leftDisabled 和 rightDisabled 属性 by [@m-xlsea](https://github.com/m-xlsea) in [#12258](https://github.com/youzan/vant/pull/12258)\n\n#### Bug 修复 🐞\n\n- fix(ConfigProvider): 修复设置某些基础主题变量失败的问题 by [@chenjiahan](https://github.com/chenjiahan) in [#12272](https://github.com/youzan/vant/pull/12272)\n- fix(ConfigProvider): 修复 ConfigProviderThemeVars 的 fontSizeXs 命名错误 by [@xieyezi](https://github.com/xieyezi) in [#12267](https://github.com/youzan/vant/pull/12267)\n\n#### 文档 📖\n\n- docs(NavBar): 添加禁用按钮示例 by [@chenjiahan](https://github.com/chenjiahan) in [#12270](https://github.com/youzan/vant/pull/12270)\n\n#### 其他变更\n\n- chore(CI): 启用单一提交以减小仓库大小 by [@chenjiahan](https://github.com/chenjiahan) in [#12268](https://github.com/youzan/vant/pull/12268)\n- chore(CI): 升级 actions 版本 by [@chenjiahan](https://github.com/chenjiahan) in [#12269](https://github.com/youzan/vant/pull/12269)\n- chore: 将 Axure 文件移动到 vant-assets 仓库 by [@chenjiahan](https://github.com/chenjiahan) in [#12271](https://github.com/youzan/vant/pull/12271)\n\n#### 新贡献者\n\n- [@xieyezi](https://github.com/xieyezi) 在 [#12264](https://github.com/youzan/vant/pull/12264) 中首次贡献\n- [@m-xlsea](https://github.com/m-xlsea) 在 [#12258](https://github.com/youzan/vant/pull/12258) 中首次贡献\n\n### v4.6.7\n\n`2023-09-04`\n\n#### 新功能 🎉\n\n- feat(vant-use): 添加 useRaf，由 [@Simon-He95](https://github.com/Simon-He95) 在 [#12211](https://github.com/youzan/vant/pull/12211) 中贡献\n- feat(Checkbox): 添加不确定状态，由 [@wjw-gavin](https://github.com/wjw-gavin) 在 [#12216](https://github.com/youzan/vant/pull/12216) 中贡献\n- feat(auto-import-resolver): 添加 auto-import-resolver 包，由 [@wChenonly](https://github.com/wChenonly) 在 [#12227](https://github.com/youzan/vant/pull/12227) 中贡献\n- feat(ConfigProvider): 添加 theme-vars-scope 属性以启用根作用域影响，由 [@zhousg](https://github.com/zhousg) 在 [#12240](https://github.com/youzan/vant/pull/12240) 中贡献\n\n#### 问题修复 🐞\n\n- fix(auto-import-resolver): 修复 TS 项目中的类型不匹配问题，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12243](https://github.com/youzan/vant/pull/12243) 中贡献\n- fix(eslint): 使用 ignorePatterns 替代 .eslintignore，由 [@MrXwq](https://github.com/MrXwq) 在 [#12237](https://github.com/youzan/vant/pull/12237) 中贡献\n\n#### 文档 📖\n\n- docs: 改善 back-top 的菜单位置，由 [@wjw-gavin](https://github.com/wjw-gavin) 在 [#12223](https://github.com/youzan/vant/pull/12223) 中贡献\n- docs: 改善 use-raf 文档，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12224](https://github.com/youzan/vant/pull/12224) 中贡献\n- docs: 在快速入门指南中添加 Vite 和 Nuxt 的指引，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12239](https://github.com/youzan/vant/pull/12239) 中贡献\n- docs(auto-import-resolver): 更新 README 和文件夹名称，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12241](https://github.com/youzan/vant/pull/12241) 中贡献\n- docs(auto-import-resolver): 添加 Rspack 的使用方法，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12242](https://github.com/youzan/vant/pull/12242) 中贡献\n- docs(ConfigProvider): 更新修改 CSS 变量的指南，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12246](https://github.com/youzan/vant/pull/12246) 中贡献\n\n#### 其他变更\n\n- test: 将测试运行器迁移到 vitest，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12206](https://github.com/youzan/vant/pull/12206) 中贡献\n- chore(CI): 修复 codecov 报告器，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12210](https://github.com/youzan/vant/pull/12210) 中贡献\n- chore: 对内部依赖使用 workspace 协议，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12225](https://github.com/youzan/vant/pull/12225) 中贡献\n- test: 修复 vitest 的 canvas 模拟，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12226](https://github.com/youzan/vant/pull/12226) 中贡献\n\n### v4.6.6\n\n`2023-08-20`\n\n#### 新功能 🎉\n\n- feat(DropdownItem): 支持在 options 的 value 中传入布尔值 by [@baboon-king](https://github.com/baboon-king) in [#12208](https://github.com/youzan/vant/pull/12208)\n\n#### Bug 修复 🐞\n\n- fix(FloatingBubble): 拖动时不应触发子元素的点击事件 by [@zhousg](https://github.com/zhousg) in [#12201](https://github.com/youzan/vant/pull/12201)\n- fix(FloatingBubble): 隐藏时不更新状态 by [@zhousg](https://github.com/zhousg) in [#12207](https://github.com/youzan/vant/pull/12207)\n\n#### 其他变更\n\n- chore(CI): 更新 issue 评论消息的内容 by [@chenjiahan](https://github.com/chenjiahan) in [#12204](https://github.com/youzan/vant/pull/12204)\n- refactor(cli): 移除 execa 依赖 by [@chenjiahan](https://github.com/chenjiahan) in [#12205](https://github.com/youzan/vant/pull/12205)\n\n### v4.6.5\n\n`2023-08-16`\n\n#### 新功能 🎉\n\n- feat(DropdownMenu): 添加 swipe-threshold 属性 by [@inottn](https://github.com/inottn) in [#12117](https://github.com/youzan/vant/pull/12117)\n- types(Toast): 添加 `ToastWrapperInstance` 导出 by [@long-woo](https://github.com/long-woo) in [#12166](https://github.com/youzan/vant/pull/12166)\n- feat(FloatingBubble): 使用组件属性 by [@zhousg](https://github.com/zhousg) in [#12171](https://github.com/youzan/vant/pull/12171)\n\n#### Bug 修复 🐞\n\n- fix(FloatingPanel): 修复由滚动条和面板移动引起的延迟问题 #12146 by [@yue1123](https://github.com/yue1123) in [#12161](https://github.com/youzan/vant/pull/12161)\n- fix(FloatingPanel): 将 lock-scroll 的默认值更改为 false by [@inottn](https://github.com/inottn) in [#12162](https://github.com/youzan/vant/pull/12162)\n- fix(cli): 在 markdown 中应该转义花括号 by [@chenjiahan](https://github.com/chenjiahan) in [#12188](https://github.com/youzan/vant/pull/12188)\n\n#### 文档 📖\n\n- docs: 添加 bun 包管理器的说明 by [@colinhacks](https://github.com/colinhacks) in [#12182](https://github.com/youzan/vant/pull/12182)\n\n#### 其他变更\n\n- chore: 添加脚本以格式化 GitHub 更新日志 by [@chenjiahan](https://github.com/chenjiahan) in [#12158](https://github.com/youzan/vant/pull/12158)\n- chore(FloatingPanel): 改进代码风格 by [@chenjiahan](https://github.com/chenjiahan) in [#12175](https://github.com/youzan/vant/pull/12175)\n- refactor(cli): 重写 vite-plugin-md by [@chenjiahan](https://github.com/chenjiahan) in [#12179](https://github.com/youzan/vant/pull/12179)\n- chore(deps): 升级 markdown-it 到 v13 和 commander 到 v11 by [@chenjiahan](https://github.com/chenjiahan) in [#12180](https://github.com/youzan/vant/pull/12180)\n- chore(CI): 不在拉取请求中运行 codeql by [@chenjiahan](https://github.com/chenjiahan) in [#12181](https://github.com/youzan/vant/pull/12181)\n\n#### 新贡献者\n\n- [@long-woo](https://github.com/long-woo) 在 [#12166](https://github.com/youzan/vant/pull/12166) 中进行了首次贡献\n- [@yue1123](https://github.com/yue1123) 在 [#12161](https://github.com/youzan/vant/pull/12161) 中进行了首次贡献\n- [@colinhacks](https://github.com/colinhacks) 在 [#12182](https://github.com/youzan/vant/pull/12182) 中进行了首次贡献\n- [@xincheng-1999](https://github.com/xincheng-1999) 在 [#12189](https://github.com/youzan/vant/pull/12189) 中进行了首次贡献\n\n### v4.6.4\n\n`2023-08-06`\n\n#### 新功能 🎉\n\n- feat(area-data): 更新芜湖的县区数据，由 [@nivin-studio](https://github.com/nivin-studio) 在 [#12122](https://github.com/youzan/vant/pull/12122) 中贡献\n- feat(Locale): 添加塞尔维亚语到国际化，由 [@RogerZXY](https://github.com/RogerZXY) 在 [#12145](https://github.com/youzan/vant/pull/12145) 中贡献\n- feat(ImagePreview): 添加 closeOnClickOverlay 选项，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12153](https://github.com/youzan/vant/pull/12153) 中贡献\n- feat(List): 添加 scroller 属性，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12154](https://github.com/youzan/vant/pull/12154) 中贡献\n- feat(FloatingPanel): 添加 lock-scroll 属性，由 [@inottn](https://github.com/inottn) 在 [#12157](https://github.com/youzan/vant/pull/12157) 中贡献\n\n#### Bug 修复 🐞\n\n- fix(TextEllipsis): 修复省略号重复出现的问题，由 [@muzaisimao](https://github.com/muzaisimao) 在 [#12120](https://github.com/youzan/vant/pull/12120) 中贡献\n- fix(TextEllipsis): 修复计算省略号位置的逻辑问题，由 [@inottn](https://github.com/inottn) 在 [#12137](https://github.com/youzan/vant/pull/12137) 中贡献\n\n#### 文档 📖\n\n- docs: 将 PR 标题格式移至贡献指南，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12114](https://github.com/youzan/vant/pull/12114) 中贡献\n- docs(Radio): 添加对 css 变量 '--van-radio-dot-size' 的文档描述，由 [@wjw-gavin](https://github.com/wjw-gavin) 在 [#12152](https://github.com/youzan/vant/pull/12152) 中贡献\n\n#### 其他更改\n\n- chore: 避免 prettier 破坏 hbs 模板 by [@chenjiahan](https://github.com/chenjiahan) in [#12113](https://github.com/youzan/vant/pull/12113)\n- chore(deps): 升级 release-it v16 by [@chenjiahan](https://github.com/chenjiahan) in [#12115](https://github.com/youzan/vant/pull/12115)\n- feat(get-deps): 将 import('../foo.vue') 替换为 import('../foo.mjs') by [@suncohey](https://github.com/suncohey) in [#12046](https://github.com/youzan/vant/pull/12046)\n- refactor(cli): 重写 release 命令 by [@chenjiahan](https://github.com/chenjiahan) in [#12133](https://github.com/youzan/vant/pull/12133)\n- feat(cli): 为 release 命令添加 gitTag 选项支持 by [@chenjiahan](https://github.com/chenjiahan) in [#12134](https://github.com/youzan/vant/pull/12134)\n- chore(CI): 通过 GitHub 自动生成变更日志 by [@chenjiahan](https://github.com/chenjiahan) in [#12135](https://github.com/youzan/vant/pull/12135)\n- chore: 添加 PR 标签动作 by [@chenjiahan](https://github.com/chenjiahan) in [#12136](https://github.com/youzan/vant/pull/12136)\n- chore(TextEllipsis): 重用 actionText 变量 by [@chenjiahan](https://github.com/chenjiahan) in [#12138](https://github.com/youzan/vant/pull/12138)\n- refactor(cli): 使用 GitHub 变更日志替代 conventional-changelog by [@chenjiahan](https://github.com/chenjiahan) in [#12139](https://github.com/youzan/vant/pull/12139)\n- chore: 添加塞尔维亚文档并重命名文件 by [@chenjiahan](https://github.com/chenjiahan) in [#12150](https://github.com/youzan/vant/pull/12150)\n- chore(eslint-config): 升级依赖项 by [@chenjiahan](https://github.com/chenjiahan) in [#12155](https://github.com/youzan/vant/pull/12155)\n\n#### 新贡献者\n\n- [@muzaisimao](https://github.com/muzaisimao) 在 [#12120](https://github.com/youzan/vant/pull/12120) 中首次贡献\n- [@suncohey](https://github.com/suncohey) 在 [#12046](https://github.com/youzan/vant/pull/12046) 中首次贡献\n- [@nivin-studio](https://github.com/nivin-studio) 在 [#12122](https://github.com/youzan/vant/pull/12122) 中首次贡献\n- [@RogerZXY](https://github.com/RogerZXY) 在 [#12145](https://github.com/youzan/vant/pull/12145) 中首次贡献\n\n### [v4.6.3](https://github.com/vant-ui/vant/compare/v4.6.2...v4.6.3)\n\n`2023-07-23`\n\n**Feature**\n\n- AddressList: 新增 show-add-button 属性 [#12090](https://github.com/vant-ui/vant/issues/12090)\n- CheckboxGroup: 新增 shape 属性 [#12092](https://github.com/vant-ui/vant/issues/12092)\n- RadioGroup: 新增 shape 属性 [#12092](https://github.com/vant-ui/vant/issues/12092)\n\n**Bug Fixes**\n\n- FloatingBubble: 修复全局组件类型定义错误 [#12101](https://github.com/vant-ui/vant/issues/12101)\n- Tab: 修复导入路径错误 [#12103](https://github.com/vant-ui/vant/issues/12103)\n\n### [v4.6.2](https://github.com/vant-ui/vant/compare/v4.6.1...v4.6.2)\n\n`2023-07-09`\n\n**Feature**\n\n- Field: 新增 autocapitalize，autocorrect 和 spellcheck 属性 [#12065](https://github.com/vant-ui/vant/issues/12065)\n- FloatingBubble: 新增 CSS 变量用于自定义圆角 [#12070](https://github.com/vant-ui/vant/issues/12070)\n- Radio: 新增 dot 属性 [#12057](https://github.com/vant-ui/vant/issues/12057)\n- TextEllipsis: 新增 position 属性，由 [cxybd](https://github.com/cxybd) 贡献 ❤️ [#12058](https://github.com/vant-ui/vant/issues/12058)\n\n**Bug Fixes**\n\n- FloatingBubble: 修复边界错误 [#12067](https://github.com/vant-ui/vant/issues/12067)\n- Pagination: 修复边框渲染错误 [#12062](https://github.com/vant-ui/vant/issues/12062)\n\n### [v4.6.1](https://github.com/vant-ui/vant/compare/v4.6.0...v4.6.1)\n\n`2023-07-02`\n\n**Feature**\n\n- ellipsis: 改进中文、日文或韩文文本的换行符 [#12030](https://github.com/vant-ui/vant/issues/12030)\n\n**Bug Fixes**\n\n- FloatingBubble: 修复 floatingBubbleBackground 类型问题 [#12029](https://github.com/vant-ui/vant/issues/12029)\n- SubmitBar: 移除多余的 theme 类型定义 [#12031](https://github.com/vant-ui/vant/issues/12031)\n- Uploader: 修复 base64 图片预览导致的性能问题 [#12051](https://github.com/vant-ui/vant/issues/12051)\n\n### [v4.6.0](https://github.com/vant-ui/vant/compare/v4.5.0...v4.6.0)\n\n`2023-06-24`\n\n**New Component**\n\n- 新增 FloatingBubble 组件，由 [@zhousg](https://github.com/zhousg) 贡献 ❤️ [#11880](https://github.com/vant-ui/vant/issues/11880)\n- 新增 RollingText 组件，由 [@cunzaizhuyi](https://github.com/cunzaizhuyi) 贡献 ❤️ [#11911](https://github.com/vant-ui/vant/issues/11911)\n\n**Feature**\n\n- Rate: 新增 clearable 属性 [#11969](https://github.com/vant-ui/vant/issues/11969)\n\n**Bug Fixes**\n\n- DropdownMenu: 修复缺少类型导出的问题 [#11979](https://github.com/vant-ui/vant/issues/11979)\n- Field: 修复使用 input 插槽时设置了多余的 label `for` 属性的问题 [#11966](https://github.com/vant-ui/vant/issues/11966)\n- FloatingPanel: 修复缺少 floatingPanelProps 类型导出的问题 [#11978](https://github.com/vant-ui/vant/issues/11978)\n- FloatingPanel: 修复 passive event warning [#11992](https://github.com/vant-ui/vant/issues/11992)\n- Picker: 修复多列同时滚动时的问题 [#11945](https://github.com/vant-ui/vant/issues/11945)\n- Rate: 修复半星拖动时断触的问题 [#12002](https://github.com/vant-ui/vant/issues/12002)\n\n### [v4.5.0](https://github.com/vant-ui/vant/compare/v4.4.1...v4.5.0)\n\n`2023-06-11`\n\n**New Component**\n\n- 新增 FloatingPanel 组件，由 [@zhousg](https://github.com/zhousg) 贡献 ❤️ [#11832](https://github.com/vant-ui/vant/issues/11832)\n\n**Feature**\n\n- AddressList: 新增 right-icon 属性 [#11959](https://github.com/vant-ui/vant/issues/11959)\n- DropdownMenu: 新增 close 方法 [#11921](https://github.com/vant-ui/vant/issues/11921)\n- Slider: 新增 button 插槽的 dragging 参数 [#11946](https://github.com/vant-ui/vant/issues/11946)\n- TimePicker: 新增 min-time 和 max-time 属性 [#11887](https://github.com/vant-ui/vant/issues/11887)\n- TimePicker: 新增 filter 属性的 values 参数 [#11916](https://github.com/vant-ui/vant/issues/11916)\n- CI: 增加 issue helper [#11963](https://github.com/vant-ui/vant/issues/11963)\n\n**Bug Fixes**\n\n- BackTop: 修复 deactivated 时未隐藏的问题 [#11938](https://github.com/vant-ui/vant/issues/11938)\n\n### [v4.4.1](https://github.com/vant-ui/vant/compare/v4.4.0...v4.4.1)\n\n`2023-05-28`\n\n**Feature**\n\n- Popover: 新增 actions-direction 属性 [#11888](https://github.com/vant-ui/vant/issues/11888)\n\n**Bug Fixes**\n\n- ImagePreview: 修复初始化时可能有过渡动画的问题 [#11897](https://github.com/vant-ui/vant/issues/11897)\n- Popup: 修复 duration 为 0 时 opened 事件触发两次的问题 [#11902](https://github.com/vant-ui/vant/issues/11902)\n- Slider: 修复点击可能无法触发 change 事件的问题 [#11904](https://github.com/vant-ui/vant/issues/11904)\n- Tab: 修复 title-class 和 title-style 属性可能导致死循环的问题 [#11898](https://github.com/vant-ui/vant/issues/11898)\n\n### [v4.4.0](https://github.com/vant-ui/vant/compare/v4.3.2...v4.4.0)\n\n`2023-05-21`\n\n**New Component**\n\n- 新增 Barrage 组件，由 [@zhousg](https://github.com/zhousg) 贡献 ❤️ [#11760](https://github.com/vant-ui/vant/issues/11760)\n\n**Feature**\n\n- Cascader: 切换 Tab 时自动滚动到选中项 [#11869](https://github.com/vant-ui/vant/issues/11869)\n- Divider: 新增 vertical 属性 [#11883](https://github.com/vant-ui/vant/issues/11883)\n- Document: 支持点击标题时自动调整右侧示例到相应的位置 [#11879](https://github.com/vant-ui/vant/issues/11879)\n- ImagePreview: 优化长图的默认展示效果 [#11857](https://github.com/vant-ui/vant/issues/11857)\n- Signature: 优化签名的清晰度 [#11835](https://github.com/vant-ui/vant/issues/11835)\n- Uploader: 新增 reupload prop [#11854](https://github.com/vant-ui/vant/issues/11854)\n\n**Bug Fixes**\n\n- AddressEdit: 修复多余的底部边框 [#11872](https://github.com/vant-ui/vant/issues/11872)\n- Area: 修复多余的 allow-html 和 show-toolbar props 定义 [#11871](https://github.com/vant-ui/vant/issues/11871)\n- BackTop: 默认使用最近的父级滚动元素作为 target [#11858](https://github.com/vant-ui/vant/issues/11858)\n- ContactList: 优化样式和图标大小 [#11873](https://github.com/vant-ui/vant/issues/11873)\n- DatePicker: 修复外部设置 modelValue 时展示错误的问题 [#11839](https://github.com/vant-ui/vant/issues/11839)\n- Dialog: 修复点击按钮时圆角错误的问题 [#11863](https://github.com/vant-ui/vant/issues/11863)\n\n### [v4.3.2](https://github.com/vant-ui/vant/compare/v4.3.1...v4.3.2)\n\n`2023-05-14`\n\n**Feature**\n\n- ImagePreview: 支持基于手指位置进行缩放 [#11848](https://github.com/vant-ui/vant/issues/11848)\n- PickerGroup: 支持控制当前 Tab 的位置 [#11771](https://github.com/vant-ui/vant/issues/11771)\n- Checkbox: 支持在达到最大选择数量时自动禁用其他选项 [#11814](https://github.com/vant-ui/vant/issues/11814)\n\n**Bug Fixes**\n\n- Filed: 修复点击 label 会触发两次 click 事件的问题 [#11838](https://github.com/vant-ui/vant/issues/11838)\n- Steps: 修复只有一个 Step 时样式错误的问题 [#11822](https://github.com/vant-ui/vant/issues/11822)\n- SubmitBar: 移除多余的 CSS 变量 [#11845](https://github.com/vant-ui/vant/issues/11845)\n- Tab: 修复下划线动画可能错误的问题 [#11819](https://github.com/vant-ui/vant/issues/11819)\n\n### [v4.\n\n<!-- [TRUNCATED AT 50KB] -->","isInternal":false,"tokens":20865,"sizeBytes":58916},{"name":"contribution.en-US.md","path":"packages/vant/docs/markdown/contribution.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/contribution.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# Contribution Guide\n\n### Introduction\n\nThank you for using Vant.\n\nBelow are the guidelines for submitting feedback or code to Vant. Please take a few minutes to read the following before submitting an issue or PR to Vant.\n\n### Issue Specification\n\n- If you encountered a problem, please first confirm whether the problem has been recorded in the issue or has been fixed.\n- When submitting an issue, please describe the problem you encountered in a short language, and add the environment and reproduction steps when the problem occurs.\n\n## Participate in development\n\n### Local development\n\nBefore developing locally, please make sure that [Node.js >= 18](https://nodejs.org) is installed in your development environment.\n\nFollow the steps below to develop Vant components locally.\n\n```bash\n# Clone repository\ngit clone git@github.com:vant-ui/vant.git\n\n# Enable pnpm package manager\ncorepack enable\n\n# Install dependencies\npnpm i\n\n# Start development\npnpm dev\n```\n\nDifferent branches of the repository correspond to different Vant versions, please switch to the appropriate branch for development:\n\n- The main branch corresponds to the Vant 4 version, suitable for Vue 3\n- 3.x branch corresponds to Vant 3 version, suitable for Vue 3\n- 2.x branch corresponds to Vant 2 version, suitable for Vue 2\n\n### Directory Structure\n\nVant uses monorepo for code management, and all subpackages are in the `packages/vant` directory:\n\n```\nroot\n└─ packages\n   ├─ vant        # Component library\n   ├─ vant-cli    # Scaffolding\n   ├─ vant-icons  # Icon library\n   ├─ vant-use    # Composition API\n   └─ ....        # Other npm packages\n```\n\nAmong them, the `packages/vant` directory is the core code of the component library:\n\n```\nvant\n├─ docs             # Documentation\n├─ src              # Component source code\n├─ test             # Test utils\n└─ vant.config.mjs  # Document configuration\n```\n\nThe `packages/vant/src` directory contains the source code of each component, and each folder corresponds to a component:\n\n```\nsrc\n└─ button\n   ├─ demo             # Demo code\n   ├─ test             # Unit test\n   ├─ Component.tsx    # Component\n   ├─ index.ts         # Component entry\n   ├─ index.less       # Styles\n   ├─ README.md        # English document\n   └─ README.zh-CN.md  # Chinese document\n```\n\n### Code Specification\n\nWhen writing code, please note:\n\n- Make sure the code can pass the repository's lint check (`pnpm lint`).\n- Format the code with Rstack CLI (`pnpm exec rs fmt`).\n- Make sure you don't use incompatible APIs like `async`, `await`.\n\n## Submitting a Pull Request\n\n### Reference Guide\n\nIf this is your first time submitting a pull request on GitHub, you can learn from the following article:\n\n- [First participation in open source](https://github.com/firstcontributions/first-contributions/blob/main/docs/translations/README.en-pirate.md)\n\n### Pull Request Specification\n\nWhen submitting a Pull Request, please note:\n\n- Keep your PRs small enough that a PR only addresses a single issue or adds a single feature.\n- When adding new components or modifying original components, remember to add or modify the corresponding unit tests to ensure the stability of the code.\n- Please include an appropriate description in the PR, and link related issues.\n\n### Pull Request Process\n\n1. Fork the main repository. If you have already forked, please synchronize the latest code from the main repository.\n2. Create a new branch based on the main branch of the repository after the fork, such as `feature/button_color`.\n3. Develop on the new branch. When development is complete, submit a pull request to the main branch of the main repository.\n4. The pull request is merged into the main repository after the review is approved.\n5. Wait for Vant to release a new version, usually once a week.\n\n### Pull Request Title Format\n\nThe title of the Pull Request should be in the following format:\n\n```bash\ntype(ComponentName?)：commit message\n```\n\nExample：\n\n- docs: fix typo in quickstart\n- build: optimize build speed\n- fix(Button): incorrect style\n- feat(Button): add color prop\n\nAllowed Types:\n\n- fix\n- feat\n- docs\n- perf\n- test\n- types\n- style\n- build\n- chore\n- release\n- refactor\n- breaking change\n- revert:\n\n### Synchronize the latest code\n\nBefore submitting a Pull Request, please synchronize the latest code of the main repository according to the following process:\n\n```bash\n# Add the main repository to remote\ngit remote add upstream git@github.com:vant-ui/vant.git\n\n# Pull the latest code from the main repository\ngit fetch upstream\n\n# Switch to the main branch\ngit checkout main\n\n# Merge the code from the main repository\ngit merge upstream/main\n```\n","isInternal":false,"tokens":1057,"sizeBytes":4730},{"name":"contribution.zh-CN.md","path":"packages/vant/docs/markdown/contribution.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/contribution.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# 贡献指南\n\n### 介绍\n\n感谢你使用 Vant。\n\n以下是关于向 Vant 提交反馈或代码的指南。在向 Vant 提交 issue 或者 PR 之前，请先花几分钟时间阅读以下内容。\n\n### Issue 规范\n\n- 遇到问题时，请先确认这个问题是否已经在 issue 中有记录或者已被修复。\n- 提 issue 时，请用简短的语言描述遇到的问题，并添加出现问题时的环境和复现步骤。\n\n## 参与开发\n\n### 本地开发\n\n在进行本地开发前，请先确保你的开发环境中安装了 [Node.js >= 18](https://nodejs.org)。\n\n按照下面的步骤操作，即可在本地开发 Vant 组件。\n\n```bash\n# 克隆仓库\ngit clone git@github.com:vant-ui/vant.git\n\n# 启用 pnpm 包管理器\ncorepack enable\n\n# 安装依赖\npnpm i\n\n# 进入开发模式，浏览器访问 localhost\npnpm dev\n```\n\n仓库的不同分支对应不同的 Vant 版本，请切换到对应分支进行开发：\n\n- main 分支对应 Vant 4 版本，适用于 Vue 3\n- 3.x 分支对应 Vant 3 版本 ，适用于 Vue 3\n- 2.x 分支对应 Vant 2 版本，适用于 Vue 2\n\n### 目录结构\n\nVant 采用 monorepo 进行代码管理，所有子包在 `packages` 目录下:\n\n```\nroot\n└─ packages\n   ├─ vant        # 组件库\n   ├─ vant-cli    # 脚手架\n   ├─ vant-icons  # 图标库\n   ├─ vant-use    # Composition API\n   └─ ....        # 其他周边 npm 包\n```\n\n其中，`packages/vant` 目录为组件库的核心代码：\n\n```\nvant\n├─ docs             # 文档\n├─ src              # 组件源代码\n├─ test             # 单测工具类\n└─ vant.config.mjs  # 文档网站配置\n```\n\n`packages/vant/src` 目录包含各个组件的源码，每个文件夹对应一个组件：\n\n```\nsrc\n└─ button\n   ├─ demo             # 示例代码\n   ├─ test             # 单元测试\n   ├─ Component.tsx    # 组件\n   ├─ index.ts         # 组件入口\n   ├─ index.less       # 样式\n   ├─ README.md        # 英文文档\n   └─ README.zh-CN.md  # 中文文档\n```\n\n### 代码规范\n\n在编写代码时，请注意：\n\n- 确保代码可以通过仓库的 lint 校验（`pnpm lint`）。\n- 使用 Rstack CLI（`pnpm exec rs fmt`）规范化代码格式。\n- 确保没有使用超出兼容性范围的 API，比如 `async`, `await`.\n\n## 提交 Pull Request\n\n### 参考指南\n\n如果你是第一次在 GitHub 上提 Pull Request ，可以阅读下面这两篇文章来学习：\n\n- [第一次参与开源](https://github.com/firstcontributions/first-contributions/blob/main/docs/translations/README.zh-cn.md)\n- [如何优雅地在 GitHub 上贡献代码](https://segmentfault.com/a/1190000000736629)\n\n### Pull Request 规范\n\n在提交 Pull Request 时，请注意：\n\n- 保持你的 PR 足够小，一个 PR 只解决单个问题或添加单个功能。\n- 当新增组件或者修改原有组件时，记得增加或者修改对应的单元测试，保证代码的稳定。\n- 在 PR 中请添加合适的描述，并关联相关的 Issue。\n\n### Pull Request 流程\n\n1. fork 主仓库，如果已经 fork 过，请同步主仓库的最新代码。\n2. 基于 fork 后仓库的 main 分支新建一个分支，比如 `feature/button_color`。\n3. 在新分支上进行开发，开发完成后，提 Pull Request 到主仓库的 main 分支。\n4. Pull Request 会在 Review 通过后被合并到主仓库。\n5. 等待 Vant 发布新版本，一般是每周一次。\n\n### Pull Request 标题格式\n\nPull Request 的标题应该遵循以下格式：\n\n```bash\ntype(ComponentName?)：commit message\n```\n\n示例：\n\n- docs: fix typo in quickstart\n- build: optimize build speed\n- fix(Button): incorrect style\n- feat(Button): add color prop\n\n可选的类型：\n\n- fix\n- feat\n- docs\n- perf\n- test\n- types\n- style\n- build\n- chore\n- release\n- refactor\n- breaking change\n- revert:\n\n### 同步最新代码\n\n提 Pull Request 前，请依照下面的流程同步主仓库的最新代码：\n\n```bash\n# 添加主仓库到 remote\ngit remote add upstream git@github.com:vant-ui/vant.git\n\n# 拉取主仓库最新代码\ngit fetch upstream\n\n# 切换至 main 分支\ngit checkout main\n\n# 合并主仓库代码\ngit merge upstream/main\n```\n","isInternal":false,"tokens":1358,"sizeBytes":4192},{"name":"design.en-US.md","path":"packages/vant/docs/markdown/design.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/design.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# Design Resource\n\n### Intro\n\nYou can download Vant's design resources here.\n\n## Resources\n\n### Components (Sketch)\n\nContains color specifications, font specifications, and component design specifications.\n\n#### Colors\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/color_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n#### Fonts\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/words_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n#### Components\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/tab_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant/blob/main/packages/vant/docs/assets/design.sketch?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">Download</a>\n\n### Icons (Sketch)\n\nContains icon library resources.\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/design-icons-0321.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant/blob/main/packages/vant-icons/assets/icons.sketch?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">Download</a>\n\n### Axure\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/vant-axure-0905.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant-assets/blob/main/design/axure-20200905.zip?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">Download</a>\n","isInternal":false,"tokens":536,"sizeBytes":1758},{"name":"design.zh-CN.md","path":"packages/vant/docs/markdown/design.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/design.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# 设计资源\n\n### 介绍\n\n本页面提供 Vant 的设计资源下载。\n\n## 设计稿\n\n### 组件设计稿（Sketch）\n\n包含 Sketch 格式的色彩规范、字体规范、组件设计规范。\n\n#### 色彩规范\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/color_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n#### 字体规范\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/words_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n#### 组件规范\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/tab_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant/blob/main/packages/vant/docs/assets/design.sketch?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">下载</a>\n\n### 图标设计稿（Sketch）\n\n包含 Sketch 格式的图标库资源。\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/design-icons-0321.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant/blob/main/packages/vant-icons/assets/icons.sketch?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">下载</a>\n\n#### 在线资源\n\nVant 的所有图标都托管在 **iconfont.cn** 上，点此查看：[Vant 图标库](https://www.iconfont.cn/collections/detail?spm=a313x.7781069.1998910419.d9df05512&cid=31945)。\n\n### Axure 元件库\n\nAxure 元件库，由社区的 [@axure-tczy](https://github.com/axure-tczy) 同学贡献。\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/vant-axure-0905.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant-assets/blob/main/design/axure-20200905.zip?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">下载</a>\n","isInternal":false,"tokens":696,"sizeBytes":2086},{"name":"faq.en-US.md","path":"packages/vant/docs/markdown/faq.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/faq.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# FAQ\n\n### How do I customize the style of Vant components?\n\n#### 1. Theme customization\n\nVant provides the ability to customize the theme based on CSS variables, and can uniformly modify the component style. For details, see [ConfigProvider Global Configuration](#/en-US/config-provider) component.\n\n#### 2. Overriding the default style\n\nIf the theme customization does not meet your needs, you can also override the default style using a **custom style class**, see the following example:\n\n```html\n<template>\n  <van-button class=\"my-button\">Button</van-button>\n</template>\n\n<style>\n  /** Override the style of Button's root element */\n  .my-button {\n    width: 200px;\n  }\n\n  /** Override the style of Button's child elements */\n  .my-button.van-button__text {\n    color: red;\n  }\n</style>\n```\n\n### Components not rendering correctly in HTML?\n\nWhen using Vant components in HTML, you may encounter situations where some sample code may not render correctly, such as the following usage:\n\n```html\n<van-cell-group>\n  <van-cell title=\"cell\" value=\"content\" />\n  <van-cell title=\"cell\" value=\"content\" />\n</van-cell-group>\n```\n\nThis is because HTML does not support self-closing custom elements, so syntax like `<van-cell />` is not recognized. Using a closing tag can work around this problem:\n\n```html\n<van-cell-group>\n  <van-cell title=\"cell\" value=\"content\"></van-cell>\n  <van-cell title=\"cell\" value=\"content\"></van-cell>\n</van-cell-group>\n```\n\nSelf-closing custom elements are available in single-file components, string templates, and JSX, so this problem doesn't arise.\n\n### Can't trigger the click feedback on iOS?\n\nThis is because iOS Safari does not trigger the `:active` pseudo-class by default. The solution is to add an empty `ontouchstart` attribute to the `body` tag:\n\n```html\n<body ontouchstart=\"\">\n  ...\n</body>\n```\n\nReference link: [stackoverflow - :active pseudo-class doesn't work in mobile safari](https://stackoverflow.com/questions/3885018/active-pseudo-class-doesnt-work-in-mobile-safari/33681490#33681490)\n\n### Why is there no Select component?\n\nSelect is a widely used component on the desktop, but its interactive form is not suitable for the mobile device.\n\nOn the mobile side, we recommend using the [Picker selector component](#/en-US/picker) instead.\n\n### Is it supported in uni-app?\n\nAll components of Vant are implemented based on the Vue framework and are not adapted to uni-app, so the availability of each component under uni-app is not guaranteed.\n\nIf you encounter problems using Vant in uni-app, it is recommended to provide feedback to uni-app.\n\n### Some components do not work on the desktop?\n\nSee [Adapt to PC Browsers](#/en-US/advanced-usage#adapt-to-pc-browsers).\n\n### How do I implement mobile responsive adaptation?\n\nSee [Browser Adaptation](#/en-US/advanced-usage#browser-adaptation).\n","isInternal":false,"tokens":652,"sizeBytes":2830},{"name":"faq.zh-CN.md","path":"packages/vant/docs/markdown/faq.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/faq.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# 常见问题\n\n### 如何自定义 Vant 组件的样式？\n\n#### 1. 主题定制\n\nVant 基于 CSS 变量提供了主题定制的能力，可以对组件样式进行统一修改，详见 [ConfigProvider 全局配置](#/zh-CN/config-provider) 组件。\n\n#### 2. 覆盖默认样式\n\n如果主题定制不能满足你的需求，也可以通过**自定义样式类**来覆盖默认样式，参考下面的示例：\n\n```html\n<template>\n  <van-button class=\"my-button\">按钮</van-button>\n</template>\n\n<style>\n  /** 覆盖 Button 最外层元素的样式 */\n  .my-button {\n    width: 200px;\n  }\n\n  /** 覆盖 Button 内部子元素的样式 */\n  .my-button .van-button__text {\n    color: red;\n  }\n</style>\n```\n\n### 在 HTML 中无法正确渲染组件？\n\n在 HTML 中使用 Vant 组件时，你可能会碰到部分示例代码无法正确渲染的情况，比如下面的用法：\n\n```html\n<van-cell-group>\n  <van-cell title=\"单元格\" value=\"内容\" />\n  <van-cell title=\"单元格\" value=\"内容\" />\n</van-cell-group>\n```\n\n这是因为 HTML 并不支持自闭合的自定义元素，也就是说 `<van-cell />` 这样的语法是不被识别的，使用完整的闭合标签可以避免这个问题：\n\n```html\n<van-cell-group>\n  <van-cell title=\"单元格\" value=\"内容\"></van-cell>\n  <van-cell title=\"单元格\" value=\"内容\"></van-cell>\n</van-cell-group>\n```\n\n在单文件组件、字符串模板和 JSX 中可以使用自闭合的自定义元素，因此不会出现这个问题。\n\n### 在 iOS 上无法触发组件的点击反馈效果？\n\n这是因为 iOS Safari 默认不会触发 `:active` 伪类，解决方法是在 `body` 标签上添加一个空的 `ontouchstart` 属性：\n\n```html\n<body ontouchstart=\"\">\n  ...\n</body>\n```\n\n参考链接：[stackoverflow - :active pseudo-class doesn't work in mobile safari](https://stackoverflow.com/questions/3885018/active-pseudo-class-doesnt-work-in-mobile-safari/33681490#33681490)\n\n### 为什么没有 Select 组件？\n\nSelect 是桌面端常用的组件，但它的交互形式不适合移动端。\n\n在移动端，我们推荐使用 [Picker 选择器组件](#/zh-CN/picker) 作为代替。\n\n### 是否支持在 uni-app 中使用？\n\nVant 所有组件都是基于 Vue 框架实现的，没有针对 uni-app 进行适配，因此不保证各个组件在 uni-app 下的可用性。\n\n如果你在 uni-app 中使用 Vant 遇到问题，建议向 uni-app 进行反馈。\n\n### 部分组件无法在桌面端进行操作？\n\n参见[桌面端适配](#/zh-CN/advanced-usage#zhuo-mian-duan-gua-pei)。\n\n### 如何进行移动端响应式适配？\n\n参见[浏览器适配](#/zh-CN/advanced-usage#liu-lan-qi-gua-pei)。\n","isInternal":false,"tokens":860,"sizeBytes":2664},{"name":"home.en-US.md","path":"packages/vant/docs/markdown/home.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/home.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"<div class=\"van-doc-card\">\n  <div class=\"van-doc-intro\">\n    <img class=\"van-doc-intro__logo\" style=\"width: 120px; height: 120px;\" src=\"https://fastly.jsdelivr.net/npm/@vant/assets/logo.png\">\n    <h2 style=\"margin: 0; font-size: 36px; line-height: 60px;\">Vant</h2>\n    <p>A lightweight, customizable Vue UI library for mobile web apps.</p>\n  </div>\n</div>\n\n### Features\n\n- 🚀 1KB Component average size (min+gzip)\n- 🚀 80+ High quality components\n- 🚀 Zero third-party dependencies\n- 💪 90%+ Unit test coverage\n- 💪 Written in TypeScript\n- 📖 Extensive documentation and demos\n- 📖 Provide Sketch and Axure design resources\n- 🍭 Support Vue 2 & Vue 3\n- 🍭 Support Nuxt 2 & Nuxt 3, provide [Vant Module](https://github.com/vant-ui/vant-nuxt) for Nuxt\n- 🍭 Support Tree Shaking\n- 🍭 Support Custom Theme\n- 🍭 Support Accessibility (still improving)\n- 🍭 Support Dark Mode\n- 🍭 Support SSR\n- 🌍 Support i18n, built-in 30+ languages\n\n### Scaffold\n\nIt is recommended to use [Rsbuild](https://github.com/web-infra-dev/rsbuild) to create a scaffold project.\n\nRsbuild is a build tool based on Rspack, developed by the author of Vant, with first-class build speed and development experience, providing first-priority support for Vant.\n\nYou can create a Rsbuild project with the following command:\n\n```bash\nnpm create rsbuild@latest\n```\n\nPlease visit the [Rsbuild repository](https://github.com/web-infra-dev/rsbuild) for more information.\n\n### Quickstart\n\nSee in [Quickstart](#/en-US/quickstart).\n\n### Browser Support\n\nVant 2 supports modern browsers and Android >= 4.0、iOS >= 8.0.\n\nVant 3/4 supports modern browsers and Chrome >= 51、iOS >= 10.0 (same as Vue 3).\n\n### Maintenance Status\n\nThe current maintenance status of each version of Vant is as follows:\n\n| Name | Framework | Release | Latest Version | Status |\n| --- | --- | --- | --- | --- |\n| Vant 4 | Vue 3 | `2022.12` | ![](https://img.shields.io/npm/v/vant/latest?style=flat-square) | Long-term support |\n| Vant 3 | Vue 3 | `2020.12` | ![](https://img.shields.io/npm/v/vant/latest-v3?style=flat-square) | End of life |\n| Vant 2 | Vue 2 | `2019.06` | ![](https://img.shields.io/npm/v/vant/latest-v2?style=flat-square) | End of life |\n| Vant 1 | Vue 2 | `2018.03` | ![](https://img.shields.io/npm/v/vant/latest-v1?style=flat-square) | End of life |\n\n## Links\n\n### Official Ecosystem\n\n| Project | Description |\n| --- | --- |\n| [vant-weapp](https://github.com/vant-ui/vant-weapp) | WeChat MiniProgram UI |\n| [vant-demo](https://github.com/vant-ui/vant-demo) | Collection of Vant demos |\n| [vant-cli](https://github.com/vant-ui/vant/tree/main/packages/vant-cli) | Scaffold for UI library |\n| [vant-icons](https://github.com/vant-ui/vant/tree/main/packages/vant-icons) | Vant icons |\n| [vant-touch-emulator](https://github.com/vant-ui/vant/tree/main/packages/vant-touch-emulator) | Using vant in desktop browsers |\n| [vant-nuxt](https://github.com/vant-ui/vant-nuxt) | Vant module for Nuxt |\n\n### Community Ecosystem\n\n| Project | Description |\n| --- | --- |\n| [3lang3/react-vant](https://github.com/3lang3/react-vant) | React mobile UI Components based on Vant |\n| [vant-theme](https://github.com/Aisen60/vant-theme) | Online theme preview built on Vant UI |\n| [@antmjs/vantui](https://github.com/antmjs/vantui) | Mobile UI Components based on Vant, supporting Taro and React |\n| [vant-playground](https://github.com/LadyChatterleyLover/vant-playground) | Vant Playground |\n| [sfc-playground-vant](https://github.com/zhixiaoqiang/sfc-playground-vant) | Vant Playground |\n| [vue3-h5-template](https://github.com/yulimchen/vue3-h5-template) | Mobile project template based on Vant |\n| [vue3-vant-mobile](https://github.com/vue-zone/vue3-vant-mobile) | Mobile project template based on Vant, out of the box |\n| [raycast-vant-documentation](https://github.com/Aisen60/raycast-vant-documentation) | An Raycast extension, it can search Vant UI library documentation in Raycast |\n| [nuxt-vant-mobile](https://github.com/vue-zone/nuxt-vant-mobile) | Nuxt _⁴_ project template based on Vant, out of the box |\n| [mobvue](https://github.com/un-pany/mobvue) | A well-crafted mobile web app template |\n\n### Other Links\n\n- [Feedback](https://github.com/vant-ui/vant/issues)\n- [Changelog](#/en-US/changelog)\n- [Discussions](https://github.com/vant-ui/vant/discussions)\n\n## Contribution\n\n### Core Team\n\nCore contributors of Vant and Vant Weapp:\n\n| [![chenjiahan](https://avatars.githubusercontent.com/u/7237365?s=80&v=4)](https://github.com/chenjiahan/) | [![cookfront](https://avatars.githubusercontent.com/u/4829465?s=80&v=4)](https://github.com/cookfront/) | [![w91](https://avatars.githubusercontent.com/u/2599455?s=80&v=4)](https://github.com/w91/) | [![pangxie1991](https://avatars.githubusercontent.com/u/5961240?s=80&v=4)](https://github.com/pangxie1991/) | [![rex-zsd](https://avatars.githubusercontent.com/u/8767877?s=80&v=4)](https://github.com/rex-zsd/) | [![nemo-shen](https://avatars.githubusercontent.com/u/13480805?s=80&v=4)](https://github.com/nemo-shen/) |\n| :-: | :-: | :-: | :-: | :-: | :-: |\n| [chenjiahan](https://github.com/chenjiahan/) | [cookfront](https://github.com/cookfront/) | [wangnaiyi](https://github.com/w91/) | [pangxie](https://github.com/pangxie1991/) | [rex-zsd](https://github.com/rex-zsd/) | [nemo-shen](https://github.com/nemo-shen/) |\n\n| [![Lindysen](https://avatars.githubusercontent.com/u/33708359?s=80&v=4)](https://github.com/Lindysen/) | [![JakeLaoyu](https://avatars.githubusercontent.com/u/16181940?s=80&v=4)](https://github.com/JakeLaoyu/) | [![landluck](https://avatars.githubusercontent.com/u/27060081?s=80&v=4)](https://github.com/landluck/) | [![wjw-gavin](https://avatars.githubusercontent.com/u/19986739?s=80&v=4)](https://github.com/wjw-gavin/) | [![inottn](https://avatars.githubusercontent.com/u/18509404?s=80&v=4)](https://github.com/inottn/) | [![zhousg](https://avatars.githubusercontent.com/u/15833290?s=80&v=4)](https://github.com/zhousg/) |\n| :-: | :-: | :-: | :-: | :-: | :-: |\n| [Lindysen](https://github.com/Lindysen/) | [JakeLaoyu](https://github.com/JakeLaoyu/) | [landluck](https://github.com/landluck/) | [wjw-gavin](https://github.com/wjw-gavin/) | [inottn](https://github.com/inottn/) | [zhousg](https://github.com/zhousg/) |\n\n### All Contributors\n\nThanks to the following friends for their contributions to Vant:\n\n<a href=\"https://github.com/vant-ui/vant/graphs/contributors\" target=\"_blank\">\n  <img src=\"https://opencollective.com/vant/contributors.svg?width=890&button=false\" alt=\"contributors\" style=\"width: 100%; margin: 16px 0\">\n</a>\n\n### Contribution Guide\n\nPlease make sure to read the [Contributing Guide](https://github.com/vant-ui/vant/blob/main/.github/CONTRIBUTING.md) before making a pull request.\n\n### LICENSE\n\n[MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89).\n","isInternal":false,"tokens":2086,"sizeBytes":6834},{"name":"home.zh-CN.md","path":"packages/vant/docs/markdown/home.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/home.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"<div class=\"van-doc-card\">\n  <div class=\"van-doc-intro\">\n    <img class=\"van-doc-intro__logo\" style=\"width: 120px; height: 120px;\" src=\"https://fastly.jsdelivr.net/npm/@vant/assets/logo.png\">\n    <h2 style=\"margin: 0; font-size: 36px; line-height: 60px;\">Vant</h2>\n    <p>轻量、可定制的移动端 Vue 组件库</p>\n  </div>\n</div>\n\n### 介绍\n\nVant 是一个**轻量、可定制的移动端组件库**，于 2017 年开源。\n\n目前 Vant 官方提供了 [Vue 2 版本](/vant/v2/)、[Vue 3 版本](/vant/)和[微信小程序版本](/vant-weapp/)，并由社区团队维护 [React 版本](https://github.com/3lang3/react-vant)。\n\n### 特性\n\n- 🚀 性能极佳，组件平均体积小于 1KB（min+gzip）\n- 🚀 80+ 个高质量组件，覆盖移动端主流场景\n- 🚀 零外部依赖，不依赖三方 npm 包\n- 💪 使用 TypeScript 编写，提供完整的类型定义\n- 💪 单元测试覆盖率超过 90%，提供稳定性保障\n- 📖 提供丰富的中英文文档和组件示例\n- 📖 提供 Sketch 和 Axure 设计资源\n- 🍭 支持 Vue 2、Vue 3 和微信小程序\n- 🍭 支持 Nuxt 2、Nuxt 3，提供 Nuxt 的 [Vant Module](https://github.com/vant-ui/vant-nuxt)\n- 🍭 支持主题定制，内置 700+ 个主题变量\n- 🍭 支持按需引入和 Tree Shaking\n- 🍭 支持无障碍访问（持续改进中）\n- 🍭 支持深色模式\n- 🍭 支持服务器端渲染\n- 🌍 支持国际化，内置 30+ 种语言包\n\n### 版本提示\n\n你当前浏览的是 **Vant 4.x 版本** 的文档，适用于 Vue 3 开发。如果你在使用 Vue 2，请浏览 [Vant 2 文档](/vant/v2/)。\n\n### 脚手架\n\n推荐使用 [Rsbuild](https://github.com/web-infra-dev/rsbuild) 来创建一个脚手架项目。\n\nRsbuild 是基于 Rspack 的构建工具，由 Vant 作者开发，具备一流的构建速度和开发体验，对 Vant 提供第一优先级支持。\n\n你可以通过以下命令创建一个 Rsbuild 项目：\n\n```bash\nnpm create rsbuild@latest\n```\n\n请访问 [Rsbuild 仓库](https://github.com/web-infra-dev/rsbuild) 了解更多信息。\n\n### 快速上手\n\n请阅读[快速上手](#/zh-CN/quickstart)章节，通过该章节你可以了解到 Vant 的安装方法和基本使用姿势。\n\n### 浏览器支持\n\nVant 2 支持现代浏览器以及 Android >= 4.0、iOS >= 8.0。\n\nVant 3/4 支持现代浏览器以及 Chrome >= 51、iOS >= 10.0（与 Vue 3 一致）。\n\n### 维护状态\n\n目前 Vant 各个版本的维护状态如下：\n\n| 名称 | 框架 | 发布时间 | 最新版 | 维护状态 |\n| --- | --- | --- | --- | --- |\n| Vant 4 | Vue 3 | `2022.12` | ![](https://img.shields.io/npm/v/vant/latest?style=flat-square) | 长期支持 |\n| Vant 3 | Vue 3 | `2020.12` | ![](https://img.shields.io/npm/v/vant/latest-v3?style=flat-square) | 终止支持，不再接受 PR |\n| Vant 2 | Vue 2 | `2019.06` | ![](https://img.shields.io/npm/v/vant/latest-v2?style=flat-square) | 终止支持，不再接受 PR |\n| Vant 1 | Vue 2 | `2018.03` | ![](https://img.shields.io/npm/v/vant/latest-v1?style=flat-square) | 终止支持，不再接受 PR |\n\n## 链接\n\n### 官方生态\n\n由 Vant 官方团队维护的项目如下：\n\n| 项目 | 描述 |\n| --- | --- |\n| [vant-weapp](https://github.com/vant-ui/vant-weapp) | Vant 微信小程序版 |\n| [vant-demo](https://github.com/vant-ui/vant-demo) | Vant 官方示例合集 |\n| [vant-cli](https://github.com/vant-ui/vant/tree/main/packages/vant-cli) | 开箱即用的组件库搭建工具 |\n| [vant-icons](https://github.com/vant-ui/vant/tree/main/packages/vant-icons) | Vant 图标库 |\n| [vant-touch-emulator](https://github.com/vant-ui/vant/tree/main/packages/vant-touch-emulator) | 在桌面端使用 Vant 的辅助库 |\n| [vant-nuxt](https://github.com/vant-ui/vant-nuxt) | 为 Nuxt 准备的模块 |\n\n### 社区生态\n\n由社区维护的项目如下，欢迎补充：\n\n| 项目 | 描述 |\n| --- | --- |\n| [3lang3/react-vant](https://github.com/3lang3/react-vant) | 参照 Vant 打造的 React 移动端组件库 |\n| [vant-theme](https://github.com/Aisen60/vant-theme) | Vant 在线主题预览工具 |\n| [@antmjs/vantui](https://github.com/antmjs/vantui) | 基于 Vant Weapp 开发的多端组件库，同时支持 Taro 和 React |\n| [vant-playground](https://github.com/LadyChatterleyLover/vant-playground) | Vant Playground |\n| [sfc-playground-vant](https://github.com/zhixiaoqiang/sfc-playground-vant) | Vant Playground |\n| [vue3-h5-template](https://github.com/yulimchen/vue3-h5-template) | 基于 Vant 的移动端项目模板 |\n| [vue3-vant-mobile](https://github.com/vue-zone/vue3-vant-mobile) | 基于 Vant 的移动端项目模板，开箱即用 |\n| [raycast-vant-documentation](https://github.com/Aisen60/raycast-vant-documentation) | 一个 Raycast 拓展，能在 Raycast 中搜索 Vant 组件库文档 |\n| [nuxt-vant-mobile](https://github.com/vue-zone/nuxt-vant-mobile) | 基于 Vant 的 Nuxt _⁴_ 项目模板，开箱即用 |\n| [mobvue](https://github.com/un-pany/mobvue) | 一个精心制作的移动端 H5 模板 |\n\n### 其他链接\n\n- [意见反馈](https://github.com/vant-ui/vant/issues)\n- [更新日志](#/zh-CN/changelog)\n- [Discussions 讨论区](https://github.com/vant-ui/vant/discussions)\n\n## 贡献\n\n### 核心团队\n\n以下是 Vant 和 Vant Weapp 的核心贡献者们：\n\n| [![chenjiahan](https://avatars.githubusercontent.com/u/7237365?s=80&v=4)](https://github.com/chenjiahan/) | [![cookfront](https://avatars.githubusercontent.com/u/4829465?s=80&v=4)](https://github.com/cookfront/) | [![w91](https://avatars.githubusercontent.com/u/2599455?s=80&v=4)](https://github.com/w91/) | [![pangxie1991](https://avatars.githubusercontent.com/u/5961240?s=80&v=4)](https://github.com/pangxie1991/) | [![rex-zsd](https://avatars.githubusercontent.com/u/8767877?s=80&v=4)](https://github.com/rex-zsd/) | [![nemo-shen](https://avatars.githubusercontent.com/u/13480805?s=80&v=4)](https://github.com/nemo-shen/) |\n| :-: | :-: | :-: | :-: | :-: | :-: |\n| [chenjiahan](https://github.com/chenjiahan/) | [cookfront](https://github.com/cookfront/) | [wangnaiyi](https://github.com/w91/) | [pangxie](https://github.com/pangxie1991/) | [rex-zsd](https://github.com/rex-zsd/) | [nemo-shen](https://github.com/nemo-shen/) |\n\n| [![Lindysen](https://avatars.githubusercontent.com/u/33708359?s=80&v=4)](https://github.com/Lindysen/) | [![JakeLaoyu](https://avatars.githubusercontent.com/u/16181940?s=80&v=4)](https://github.com/JakeLaoyu/) | [![landluck](https://avatars.githubusercontent.com/u/27060081?s=80&v=4)](https://github.com/landluck/) | [![wjw-gavin](https://avatars.githubusercontent.com/u/19986739?s=80&v=4)](https://github.com/wjw-gavin/) | [![inottn](https://avatars.githubusercontent.com/u/18509404?s=80&v=4)](https://github.com/inottn/) | [![zhousg](https://avatars.githubusercontent.com/u/15833290?s=80&v=4)](https://github.com/zhousg/) |\n| :-: | :-: | :-: | :-: | :-: | :-: |\n| [Lindysen](https://github.com/Lindysen/) | [JakeLaoyu](https://github.com/JakeLaoyu/) | [landluck](https://github.com/landluck/) | [wjw-gavin](https://github.com/wjw-gavin/) | [inottn](https://github.com/inottn/) | [zhousg](https://github.com/zhousg/) |\n\n### 贡献者们\n\n感谢以下小伙伴们为 Vant 发展做出的贡献：\n\n<a href=\"https://github.com/vant-ui/vant/graphs/contributors\" target=\"_blank\">\n  <img src=\"https://opencollective.com/vant/contributors.svg?width=890&button=false\" alt=\"contributors\" style=\"width: 100%; margin: 16px 0\">\n</a>\n\n### 贡献指南\n\n贡献代码请阅读我们的[贡献指南](#/zh-CN/contribution)。\n\n使用过程中发现任何问题都可以提 [Issue](https://github.com/vant-ui/vant/issues) 给我们，当然，我们也非常欢迎你给我们发 [PR](https://github.com/vant-ui/vant/pulls)。\n\n### 开源协议\n\n本项目基于 [MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89) 协议，请自由地享受和参与开源。\n","isInternal":false,"tokens":2835,"sizeBytes":7872},{"name":"migrate-from-v2.en-US.md","path":"packages/vant/docs/markdown/migrate-from-v2.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/migrate-from-v2.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# Upgrade from v2 to v3\n\n### Introduction\n\nThis document provides an upgrade guide from Vant 2 to Vant 3.\n\n### Upgrade steps\n\n#### 1. Upgrade to Vue 3\n\nVant 3 is developed based on Vue 3. Before using Vant 3, please upgrade the Vue in the project to version 3.0 or above.\n\n#### 2. Handle incompatible changes\n\nThere are some incompatible changes from Vant 2 to Vant 3, please read the incompatible changes below carefully and deal with them in order.\n\n## Incompatible changes\n\n### Component renaming\n\nThe GoodsAction component is renamed to **ActionBar**.\n\n```html\n<!-- Vant 2 -->\n<van-goods-action>\n  <van-goods-action-icon text=\"icon\" />\n  <van-goods-action-button text=\"button\" />\n</van-goods-action>\n\n<!-- Vant 3 -->\n<van-action-bar>\n  <van-action-bar-icon text=\"icon\" />\n  <van-action-bar-button text=\"button\" />\n</van-action-bar>\n```\n\n### Deprecated components\n\nVant v3 removed the SwitchCell component, you can use the Cell and Switch components instead.\n\n```html\n<!-- Vant 2 -->\n<van-switch-cell title=\"title\" v-model=\"checked\" />\n\n<!-- Vant 3 -->\n<van-cell center title=\"title\">\n  <template #right-icon>\n    <van-switch v-model=\"checked\" size=\"24\" />\n  </template>\n</van-cell>\n```\n\n### Popup components v-model changes\n\nIn order to adapt to Vue 3's v-model API usage changes, all components that provide v-model have some adjustments in usage. `v-model` for the following popup components has been renamed to `v-model:show`:\n\n- ActionSheet\n- Calendar\n- Dialog\n- Image Preview\n- Notify\n- Popover\n- Popup -ShareSheet\n\n```html\n<!-- Vant 2 -->\n<van-popup v-model=\"show\" />\n\n<!-- Vant 3 -->\n<van-popup v-model:show=\"show\" />\n```\n\n### Form component v-model internal value change\n\nThe prop corresponding to the following form component v-model is renamed to `modelValue`, and the event is renamed to `update:modelValue`:\n\n-Checkbox\n\n- CheckboxGroup -DatetimePicker -DropdownItem -Field -Radio\n- RadioGroup -Search\n- Stepper -Switch\n- Sidebar\n- Uploader\n\n```html\n<!-- Vant 2 -->\n<van-field :value=\"value\" @input=\"onInput\" />\n\n<!-- Vant 3 -->\n<van-field :model-value=\"value\" @update:model-value=\"onInput\" />\n```\n\n### Other v-model tweaks\n\n- Circle: `v-model` renamed to `v-model:currentRate`\n- CouponList: `v-model` renamed to `v-model:code`\n- List: `v-model` renamed to `v-model:loading`, `error.sync` renamed to `v-model:error`\n- Tabs: `v-model` renamed to `v-model:active`\n- TreeSelect: `active-id.sync` renamed to `v-model:active-id`\n- TreeSelect: `main-active-index.sync` renamed to `v-model:main-active-index`\n\n### Badge prop adjustment\n\nIn the previous version, we used the `info` prop to display the badge in the upper right corner of the icon. In order to better meet the naming habits of the community, we renamed this prop to badge, which affects the following components:\n\n- Tab\n- Icon\n- GridItem\n- TreeSelect\n- TabbarItem\n- SidebarItem\n- GoodsActionIcon\n\nAt the same time, the Info component will also be renamed to Badge.\n\n```html\n<!-- Vant 2 -->\n<van-icon info=\"5\" />\n\n<!-- Vant 3 -->\n<van-icon badge=\"5\" />\n```\n\n### Rename the get-container prop\n\nVue 3.0 added a new Teleport component, which provides the ability to render the component to any DOM position, and Vant 2 also provides similar capabilities through the `get-container` prop. For consistency with the official API, the `get-container` prop in Vant 3 will be renamed to `teleport`.\n\n```html\n<!-- Vant 2 -->\n<template>\n  <van-popup get-container=\"body\" />\n  <van-popup :get-container=\"getContainer\" />\n</template>\n<script>\n  export default {\n    methods: {\n      getContainer() {\n        return document.querySelector('#container');\n      },\n    },\n  };\n</script>\n\n<!-- Vant 3 -->\n<template>\n  <van-popup teleport=\"body\" />\n  <van-popup :teleport=\"container\" />\n</template>\n<script>\n  export default {\n    beforeCreate() {\n      this.container = document.querySelector('#container');\n    },\n  };\n</script>\n```\n\n### API adjustments\n\n#### Area\n\n- The `change` event parameter is no longer passed to the component instance\n\n#### Button\n\n- The type corresponding to the blue button is adjusted from `info` to `primary`\n- The type corresponding to the green button is adjusted from `primary` to `success`\n- Default value of `native-type` changed from `submit` to `button`\n\n#### Checkbox\n\n- When used inside Cell, you now need to manually add `@click.stop` to prevent event bubbling\n\n#### Dialog\n\n- The `allow-html` prop is disabled by default.\n- `before-close` prop usage adjustment, no longer pass in the done function, but return Promise to control.\n\n#### DatetimePicker\n\n- The `change` event parameter is no longer passed to the component instance\n\n#### ImagePreview\n\n- Remove the `async-close` prop, you can use the new `before-close` prop instead.\n\n#### Picker\n\n- The `change` event parameter is no longer passed to the component instance.\n- The `allow-html` prop is turned off by default.\n- The `show-toolbar` prop is enabled by default.\n- Under cascade selection, the callback parameters returned by the `confirm` and `change` events will contain a complete option object.\n\n#### Popover\n\n- Default value of `trigger` prop adjusted to `click`.\n\n#### Stepper\n\n- The `async-change` prop is renamed to `before-change`, and the usage method is adjusted.\n\n#### SwipeCell\n\n- `detail` parameter of `open` event renamed to `name`.\n- `on-close` prop renamed to `before-close`, and parameter structure adjusted.\n- The `before-close` prop is no longer passed to the component instance.\n\n#### Toast\n\n- `mask` prop renamed to `overlay`.\n\n#### TreeSelect\n\n- `navclick` event renamed to `click-nav`.\n- `itemclick` event renamed to `click-item`.\n\n### Global methods\n\nGlobal methods such as `$toast` and `$dialog` are provided by default in Vant 2, but Vue 3.0 no longer supports directly mounting methods on Vue's prototype chain, so starting from Vant 3.0, you must first pass `app.use` registers the component to the corresponding app.\n\n```js\nimport { Toast, Dialog, Notify } from 'vant';\n\n// Register components such as Toast to the app\napp.use(Toast);\napp.use(Dialog);\napp.use(Notify);\n\n// Subcomponents in the app can directly call methods such as $toast\nexport default {\n  mounted() {\n    this.$toast('prompt text');\n  },\n};\n```\n","isInternal":false,"tokens":1544,"sizeBytes":6198},{"name":"migrate-from-v2.zh-CN.md","path":"packages/vant/docs/markdown/migrate-from-v2.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/migrate-from-v2.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# 从 v2 升级到 v3\n\n### 介绍\n\n本文档提供了从 Vant 2 到 Vant 3 的升级指南。\n\n### 升级步骤\n\n#### 1. 升级 Vue 3\n\nVant 3 是基于 Vue 3 开发的，在使用 Vant 3 前，请将项目中的 Vue 升级到 3.0 以上版本。\n\n#### 2. 处理不兼容更新\n\nVant 2 到 Vant 3 存在一些不兼容更新，请仔细阅读下方的不兼容更新内容，并依次处理。\n\n## 不兼容更新\n\n### 组件命名调整\n\nGoodsAction 商品导航组件重命名为 **ActionBar 行动栏**。\n\n```html\n<!-- Vant 2 -->\n<van-goods-action>\n  <van-goods-action-icon text=\"图标\" />\n  <van-goods-action-button text=\"按钮\" />\n</van-goods-action>\n\n<!-- Vant 3 -->\n<van-action-bar>\n  <van-action-bar-icon text=\"图标\" />\n  <van-action-bar-button text=\"按钮\" />\n</van-action-bar>\n```\n\n### 废弃组件\n\n移除 SwitchCell 组件，可以直接使用 Cell 和 Switch 组件代替。\n\n```html\n<!-- Vant 2 -->\n<van-switch-cell title=\"标题\" v-model=\"checked\" />\n\n<!-- Vant 3 -->\n<van-cell center title=\"标题\">\n  <template #right-icon>\n    <van-switch v-model=\"checked\" size=\"24\" />\n  </template>\n</van-cell>\n```\n\n### 弹窗型组件 v-model 变更\n\n为了适配 Vue 3 的 v-model API 用法变更，所有提供 v-model 属性的组件在用法上有一定调整。以下弹窗类组件的 `v-model` 被重命名为 `v-model:show`：\n\n- ActionSheet\n- Calendar\n- Dialog\n- ImagePreview\n- Notify\n- Popover\n- Popup\n- ShareSheet\n\n```html\n<!-- Vant 2 -->\n<van-popup v-model=\"show\" />\n\n<!-- Vant 3 -->\n<van-popup v-model:show=\"show\" />\n```\n\n### 表单型组件 v-model 内部值变更\n\n以下表单型组件 v-model 对应的 prop 重命名为 `modelValue`，event 重命名为 `update:modelValue`：\n\n- Checkbox\n- CheckboxGroup\n- DatetimePicker\n- DropdownItem\n- Field\n- Radio\n- RadioGroup\n- Search\n- Stepper\n- Switch\n- Sidebar\n- Uploader\n\n```html\n<!-- Vant 2 -->\n<van-field :value=\"value\" @input=\"onInput\" />\n\n<!-- Vant 3 -->\n<van-field :model-value=\"value\" @update:model-value=\"onInput\" />\n```\n\n### 其他 v-model 调整\n\n- Circle: `v-model` 重命名为 `v-model:currentRate`\n- CouponList: `v-model` 重命名为 `v-model:code`\n- List: `v-model` 重命名为 `v-model:loading`，`error.sync` 重命名为 `v-model:error`\n- Tabs: `v-model` 重命名为 `v-model:active`\n- TreeSelect: `active-id.sync` 重命名为 `v-model:active-id`\n- TreeSelect: `main-active-index.sync` 重命名为 `v-model:main-active-index`\n\n### 徽标属性命名调整\n\n在之前的版本中，我们通过 info 属性来展示图标右上角的徽标信息，为了更符合社区的命名习惯，我们将这个属性重命名为 badge，影响以下组件：\n\n- Tab\n- Icon\n- GridItem\n- TreeSelect\n- TabbarItem\n- SidebarItem\n- GoodsActionIcon\n\n同时内部使用的 Info 组件也会重命名为 Badge。\n\n```html\n<!-- Vant 2 -->\n<van-icon info=\"5\" />\n\n<!-- Vant 3 -->\n<van-icon badge=\"5\" />\n```\n\n### 重命名 get-container 属性\n\nVue 3.0 中增加了 `Teleport` 组件，提供将组件渲染到任意 DOM 位置的能力，Vant 2 也通过 `get-container` 属性提供了类似的能力。为了与官方的 API 保持一致，Vant 中的 `get-container` 属性将重命名为 `teleport`。\n\n```html\n<!-- Vant 2 -->\n<template>\n  <van-popup get-container=\"body\" />\n  <van-popup :get-container=\"getContainer\" />\n</template>\n<script>\n  export default {\n    methods: {\n      getContainer() {\n        return document.querySelector('#container');\n      },\n    },\n  };\n</script>\n\n<!-- Vant 3 -->\n<template>\n  <van-popup teleport=\"body\" />\n  <van-popup :teleport=\"container\" />\n</template>\n<script>\n  export default {\n    beforeCreate() {\n      this.container = document.querySelector('#container');\n    },\n  };\n</script>\n```\n\n### API 调整\n\n#### Area\n\n- `change` 事件参数不再传入组件实例\n\n#### Button\n\n- 蓝色按钮对应的类型由 `info` 调整为 `primary`\n- 绿色按钮对应的类型由 `primary` 调整为 `success`\n- `native-type` 的默认值由 `submit` 调整为 `button`\n\n#### Checkbox\n\n- 在 Cell 内部使用时，现在需要手动添加 `@click.stop` 来阻止事件冒泡\n\n#### Dialog\n\n- 默认关闭 `allow-html` 属性\n- `before-close` 属性用法调整，不再传入 done 函数，而是通过返回 Promise 来控制\n\n#### DatetimePicker\n\n- `change` 事件参数不再传入组件实例\n\n#### ImagePreview\n\n- 移除 `async-close` 属性，可以使用新增的 `before-close` 属性代替\n\n#### Picker\n\n- `change` 事件参数不再传入组件实例\n- 默认关闭 `allow-html` 属性\n- 默认开启 `show-toolbar` 属性\n- 级联选择下，`confirm`、`change` 事件返回的回调参数将包含为完整的选项对象。\n\n#### Popover\n\n- `trigger` 属性的默认值调整为 `click`\n\n#### Stepper\n\n- `async-change` 属性重命名为 `before-change`，并调整使用方法\n\n#### SwipeCell\n\n- `open` 事件的 `detail` 参数重命名为 `name`\n- `on-close` 属性重命名为 `before-close`，并调整参数结构\n- `before-close` 属性不再传入组件实例\n\n#### Toast\n\n- `mask` 属性重命名为 `overlay`\n\n#### TreeSelect\n\n- `navclick` 事件重命名为 `click-nav`\n- `itemclick` 事件重命名为 `click-item`\n\n### 注册全局方法\n\nVant 2 中默认提供了 `$toast`、`$dialog` 等全局方法，但 Vue 3.0 不再支持直接在 Vue 的原型链上挂载方法，因此从 Vant 3.0 开始，使用全局方法前必须先通过 `app.use` 将组件注册到对应的 app 上。\n\n```js\nimport { Toast, Dialog, Notify } from 'vant';\n\n// 将 Toast 等组件注册到 app 上\napp.use(Toast);\napp.use(Dialog);\napp.use(Notify);\n\n// app 内的子组件可以直接调用 $toast 等方法\nexport default {\n  mounted() {\n    this.$toast('提示文案');\n  },\n};\n```\n","isInternal":false,"tokens":1813,"sizeBytes":5701},{"name":"migrate-from-v3.en-US.md","path":"packages/vant/docs/markdown/migrate-from-v3.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/migrate-from-v3.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# Upgrade from v3 to v4\n\n### Introduction\n\nThis document provides an upgrade guide from Vant 3 to Vant 4.\n\n### Installing Vant 4\n\nFirst you need to install Vant 4 and `@vant/compat`.\n\n`@vant/compat` is a compatibility package that helps you to switch from Vant 3 to Vant 4.\n\n```bash\n# Install via npm\nnpm add vant@^4 @vant/compat@^1\n\n# Install via yarn\nyarn add vant@^4 @vant/compat@^1\n\n# Install via pnpm\npnpm add vant@^4 @vant/compat@^1\n\n# Install via Bun\nbun add vant@^4 @vant/compat@^1\n```\n\nYou can also change the version directly in the `dependencies` field of `package.json`, and you will need to reinstall the dependencies after the change.\n\n```diff\n{\n   \"dependencies\": {\n-    \"vant\": \"^3.0.0\",\n+    \"vant\": \"^4.0.0\",\n+    \"@vant/compat\": \"^1.0.0\",\n   }\n}\n```\n\n## Import method changes\n\n### Remove babel-plugin-import\n\nStarting from Vant 4.0, `babel-plugin-import` will no longer be supported, please remove the `babel-plugin-import` plugin that the project depends on.\n\nSimply remove the following code in `babel.config.js`:\n\n```diff\nmodule.exports = {\n  plugins: [\n-    ['import', {\n-      libraryName: 'vant',\n-      libraryDirectory: 'es',\n-      style: true\n-    }, 'vant']\n  ]\n};\n```\n\n#### Benefits\n\nThe main benefits of removing `babel-plugin-import` are as follows:\n\n- Instead of relying heavily on Babel compilation, projects can use modern compilation tools such as SWC and esbuild to improve compilation efficiency.\n- No longer subject to the import restrictions of `babel-plugin-import`, you can import content other than Vant components, such as the new `showToast` method in Vant 4, or the `buttonProps` object:\n\n```ts\nimport { showToast, buttonProps } from 'vant';\n```\n\n#### Import style on demand\n\nRemoving `babel-plugin-import` will not affect the JS size of the project, because Vant supports Tree Shaking to remove unnecessary JS code by default.\n\nThe way the CSS code is imported can be selected from the following two ways:\n\n- Include Vant's style files in their entirety in the project:\n\n```js\nimport 'vant/lib/index.css';\n```\n\n- Use the [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) plugin to import styles on demand, see [Quick Start](#/en-US/quickstart) for detailed usage.\n\n## Component refactoring\n\n### Introduction\n\nIn Vant 4, three components have been refactored, they are:\n\n- `Area`\n- `Picker`\n- `DatetimePicker`\n\nThe reason for refactoring these three components is that in the previous version, the API design of the `Picker` component had some unreasonable designs, which caused people to often encounter problems when using it, such as:\n\n- Picker columns data format definition is unreasonable, easy to cause misunderstanding\n- The Picker data flow is not clear, exposing too many instance methods to operate on the data\n- DatetimePicker logic is too complicated, bugs often occur in borderline scenarios\n\nTo solve the above problems, we have refactored the `Picker` component in the v4 version, and also refactored the `Area` and `DatetimePicker` components derived from `Picker`. If you use these three components in your project, please read the documentation carefully and upgrade.\n\n### Picker component refactoring\n\n#### Major changes\n\n- Support binding the currently selected value through `v-model`, remove the `default-index` prop.\n- Redefine the structure of the `columns` prop.\n- Removed the instance methods for manipulating internal data, only the `confirm` method remains.\n- Added `getSelectedOptions` instance method.\n- Changed parameters of `confirm`, `cancel`, `change` events.\n- Renamed `item-height` prop to `option-height`.\n- Renamed `visible-item-count` prop to `visible-option-num`.\n\n> Please refer to [Picker Component Documentation](#/en-US/picker) for detailed usage.\n\n### DatetimePicker component refactoring\n\nThe DatetimePicker component is split into three subcomponents:\n\n- [TimePicker](#/en-US/time-picker): Used for time selection, including hours, minutes, and seconds.\n- [DatePicker](#/en-US/date-picker): Used for date selection, including year, month and day.\n- [PickerGroup](#/en-US/picker-group): Used to combine multiple Picker selector components to select multiple values in one interaction.\n\nAt the same time, the TimePicker and DatePicker components are also refactored based on the new version of the Picker component, and some API designs are optimized.\n\n#### Major changes\n\nThe following are the main API changes of TimePicker and DatePicker. For more details, please refer to [TimePicker](#/en-US/time-picker) and [DatePicker](#/en-US/date-picker) documentation.\n\n- The value of `v-model` binding is adjusted to array format.\n- Added `columns-type` prop to control option type and order.\n- Remove `type` and `columns-order` props.\n- Remove `getPicker` method.\n- Adjust the parameters of `confirm`, `cancel`, `change` events to be consistent with the Picker component.\n\n> Vant 4 no longer provides the old version of the DatetimePicker component. The PickerGroup component can be used to achieve more flexible and richer interactive effects. For specific usage, please refer to the [PickerGroup](#/en-US/picker-group) component documentation.\n\n### Area component refactoring\n\nThe Area component is encapsulated based on the Picker component, so this upgrade also refactors the internal logic of the Area component and optimizes some APIs.\n\n#### Major changes\n\n- Support binding the currently selected value via `v-model`.\n- Removed `reset` method, now can be reset by modifying `v-model`.\n- Removed `is-oversea-code` prop.\n- Adjust the parameters of `confirm`, `cancel`, `change` events to be consistent with the Picker component.\n- Renamed `value` prop to `modelValue`.\n- Renamed `item-height` prop to `option-height`.\n- Renamed `visible-item-count` prop to `visible-option-num`.\n\n> Please refer to [Area Component Documentation](#/en-US/area) for detailed usage.\n\n## API tweaks\n\n### Dialog calling method adjustment\n\nIn Vant 3, `Dialog` is a function, and calling the function can quickly evoke the global Dialog component, and `Dialog.Component` is the `Dialog` component object, which is different from the usage of most components, which can easily lead to mistake.\n\nIn order to be more intuitive, we adjusted the calling method of `Dialog` in Vant 4, renamed the `Dialog()` function to `showDialog()`, and let `Dialog` directly point to the component object.\n\n```js\n// Vant 3\nDialog(); // function call\nDialog.Component; // Component object\n\n// Vant 4\nshowDialog(); // function call\nDialog; // component object\n```\n\nSince `Dialog` has become a component object, other methods mounted on `Dialog` have also been renamed. The mapping relationship between the old and new APIs is as follows:\n\n```js\nDialog(); // -> showDialog()\nDialog.alert(); // -> showDialog()\nDialog.confirm(); // -> showConfirmDialog()\nDialog.close(); // -> closeDialog();\nDialog.setDefaultOptions(); // -> setDialogDefaultOptions()\nDialog.resetDefaultOptions(); // -> resetDialogDefaultOptions()\n```\n\n#### Migration\n\nIn order to facilitate the migration of old version code to v4, we provide a compatibility solution, you can use the `Dialog` object exported in `@vant/compat` to be compatible with the original code.\n\nReference the `Dialog` method from `@vant/compat`:\n\n```js\nimport { Dialog } from '@vant/compat';\n\nDialog();\nDialog.close();\n```\n\nThe `Dialog` exported in `@vant/compat` has exactly the same API and behavior as the `Dialog` in Vant 3, so you only need to modify the reference path of `Dialog`, and other codes can remain unchanged.\n\nAfter the project is upgraded to Vant v4, it is recommended to gradually replace it with the new `showDialog` and other methods in iterations, and remove the `@vant/compat` package.\n\n### Toast calling method adjustment\n\nIn Vant 4, the calling method of the `Toast` component has also been adjusted, which is consistent with the changes of the `Dialog` component:\n\n```js\n// Vant 3\nToast(); // function call\n\n// Vant 4\nshowToast(); // function call\nToast; // component object\n```\n\nOther methods mounted on `Toast` have also been renamed, and the mapping relationship between the old and new APIs is as follows:\n\n```js\nToast(); // -> showToast()\nToast.fail(); // -> showFailToast()\nToast.success(); // -> showSuccessToast()\nToast.loading(); // -> showLoadingToast()\nToast.clear(); // -> closeToast()\nToast.setDefaultOptions(); // -> setToastDefaultOptions()\nToast.resetDefaultOptions(); // -> resetToastDefaultOptions()\n```\n\nAt the same time, Vant 4 will no longer globally register the `$toast` method on the `this` object, which means that `$toast` will not be accessible on the `this` object.\n\n#### Migration\n\nIn order to facilitate code migration, we provide a compatibility solution, you can use the `Toast` object exported in `@vant/compat` to be compatible with the original code.\n\n```js\nimport { Toast } from '@vant/compat';\n\nToast();\nToast.clear();\n```\n\nThe `Toast` exported in `@vant/compat` has exactly the same API and behavior as `Toast` in Vant 3, so you only need to modify the reference path of `Toast`, and other codes can remain unchanged.\n\n### Notify calling method adjustment\n\nIn Vant 4, the calling method of the `Notify` component has also been adjusted, which is consistent with the changes of the `Dialog` component:\n\n```js\n// Vant 3\nNotify(); // function call\nNotify.Component; // component object\n\n// Vant 4\nshowNotify(); // function call\nNotify; // component object\n```\n\nOther methods mounted on `Notify` have also been renamed, and the mapping relationship between the old and new APIs is as follows:\n\n```js\nNotify(); // -> showNotify()\nNotify.clear(); // -> closeNotify()\nNotify.setDefaultOptions(); // -> setNotifyDefaultOptions()\nNotify.resetDefaultOptions(); // -> resetNotifyDefaultOptions()\n```\n\nAt the same time, Vant 4 will no longer globally register the `$notify` method on the `this` object, which means that `$notify` will not be accessible on the `this` object.\n\n#### Migration\n\nIn order to facilitate code migration, we provide a compatibility solution, you can use the `Notify` object exported in `@vant/compat` to be compatible with the original code.\n\n```js\nimport { Notify } from '@vant/compat';\n\nNotify();\nNotify.clear();\n```\n\n`Notify` exported in `@vant/compat` has exactly the same API and behavior as `Notify` in Vant 3, so you only need to modify the reference path of `Notify`, and other codes can remain unchanged.\n\n### ImagePreview calling method adjustment\n\nIn Vant 4, the calling method of the `ImagePreview` component has also been adjusted, which is consistent with the changes of the `Dialog` component:\n\n```js\n// Vant 3\nImagePreview(); // function call\nImagePreview.Component; // component object\n\n// Vant 4\nshowImagePreview(); // function call\nImagePreview; // component object\n```\n\n#### Migration\n\nIn order to facilitate code migration, we provide a compatibility solution, you can use the `ImagePreview` object exported in `@vant/compat` to be compatible with the original code.\n\n```js\nimport { ImagePreview } from '@vant/compat';\n\nImagePreview();\n```\n\nThe `ImagePreview` exported in `@vant/compat` has exactly the same API and behavior as the `ImagePreview` in Vant 3, so you only need to modify the reference path of `ImagePreview`, and other codes can remain unchanged.\n\n### Event naming adjustment\n\nStarting from Vant 4, all events are named in **camelCase** officially recommended by Vue.\n\n```js\n// Vant 3\nemit('click-input');\n\n// Vant 4\nemit('clickInput');\n```\n\nThis change **does not affect the original template code**, Vue will automatically format the event name in the template, so you don't need to make any changes.\n\n```html\n<!-- The following code works as usual without any changes -->\n<van-field @click-input=\"onClick\" />\n```\n\nIf you use the Vant component in JSX, you need to adjust the monitored event name to camel case format, the original dash format will no longer take effect, and the new monitoring method is more in line with JSX's own specifications:\n\n```jsx\n// Vant 3\n<Field onClick-input={onClick} />\n\n// Vant 4\n<Field onClickInput={onClick} />\n```\n\n### Other API adjustments\n\nIn Vant 4.0 version, the following APIs have been updated incompatible:\n\n#### AddressEdit\n\n- Remove `show-postal` prop.\n- Remove `postal-validator` prop.\n- Parameter of `change-area` event changed to `PickerOption[]` type.\n- Remove undocumented `getArea` instance method.\n\n#### Popup\n\nSome adjustments have been made to the CSS style of Popup. If you have added some custom CSS styles to the Popup component, please check if this update affects the UI in the project.\n\n- Added `box-sizing: border-box` style by default.\n- Changed the horizontal centering method when `position=\"center\"`, to solve the problem that the width of the Popup cannot be adjusted correctly.\n\n```less\n// Vant 3\n.van-popup --center {\n  left: 50%;\n  transform: translate3d(-50%, -50%, 0);\n}\n\n// Vant 4\n.van-popup --center {\n  left: 0;\n  right: 0;\n  width: fit-content;\n  max-width: calc(100vw - var(--van-padding-md) * 2);\n  margin: 0 auto;\n  transform: translateY(-50%);\n}\n```\n\n#### Tabs\n\n- Removed `click` and `disabled` events, please use `click-tab` event instead\n\n## Style adjustments\n\n### Uniform primary color\n\nIn the previous version, Vant components had two primary colors, some components used blue (#1989fa) as the primary color, and others used red (#ee0a24).\n\nTo keep the colour specification consistent,, we have unified the primary color in Vant 4, and all components use blue as the primary color.\n\nThe primary color of the following components has been changed from red to blue:\n\n- AddressEdit\n- AddressList\n- Card\n- Calendar\n- Cascader\n- ContactList\n- ContactEdit\n- CouponList\n- Dialog\n- DropdownMenu -IndexBar\n- Sidebar -Steps\n- Tabs\n- TreeSelect\n\n### Remove Less variables\n\nCurrently, Vant already supports theme customization capabilities based on CSS variables, which is more flexible than Less customization. Therefore, Vant 4 will no longer provide Less-based theme customization.\n\nThis means that Vant's npm package will no longer contain `.less` style source files, only the compiled `.css` style files will be provided.\n\nIf your project is using an old version of Less theme customization, please use the [ConfigProvider global configuration](#/en-US/config-provider) component to replace it.\n\n### Simplify CSS variable names\n\nWith code size and usability in mind, we have simplified the names of some CSS variables, and used shorter words in the variable names to reduce the code size.\n\nThis upgrade includes the following variable name changes:\n\n```less\nanimation-duration -> duration\nanimation-timing-function-enter -> ease-out\nanimation-timing-function-leave -> ease-in\nbackground-color -> background\nbackground-color-light -> background-2\nborder-radius -> radius\nborder-width-base -> border-width\nbox-shadow -> shadow\nfont-family -> font\nfont-weight-bold -> font-bold\nprice-integer-font -> price-font\ntext-link -> link\ntransition-duration -> duration\n```\n\nDue to the large number of CSS variables involved, it is recommended that you perform a global match and replace in the code repository.\n\nFor the `ConfigProvider` component, we have added the `ConfigProviderThemeVars` type definition to provide full type hints. In TypeScript code, you can use type hints to ensure that theme variables are substituted correctly.\n\n```ts\nimport type { ConfigProviderThemeVars } from 'vant';\n\nconst themeVars: ConfigProviderThemeVars = {\n  sliderBarHeight: '4px',\n};\n```\n","isInternal":false,"tokens":3576,"sizeBytes":15475},{"name":"migrate-from-v3.zh-CN.md","path":"packages/vant/docs/markdown/migrate-from-v3.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/migrate-from-v3.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# 从 v3 升级到 v4\n\n### 介绍\n\n本文档提供了从 Vant 3 到 Vant 4 的升级指南。\n\n### 安装 Vant 4\n\n首先你需要安装 Vant 4 以及 `@vant/compat`。\n\n`@vant/compat` 是一个兼容包，可以帮助你从 Vant 3 过渡到 Vant 4。\n\n```bash\n# 通过 npm 安装\nnpm add vant@^4 @vant/compat@^1\n\n# 通过 yarn 安装\nyarn add vant@^4 @vant/compat@^1\n\n# 通过 pnpm 安装\npnpm add vant@^4 @vant/compat@^1\n\n# 通过 Bun 安装\nbun add vant@^4 @vant/compat@^1\n```\n\n你也可以直接修改 `package.json` 的 `dependencies` 字段中的版本号，修改完成后需要重新安装依赖。\n\n```diff\n{\n  \"dependencies\": {\n-    \"vant\": \"^3.0.0\",\n+    \"vant\": \"^4.0.0\",\n+    \"@vant/compat\": \"^1.0.0\",\n  }\n}\n```\n\n## 调整按需引入方式\n\n### 移除 babel-plugin-import\n\n从 Vant 4.0 开始，将不再支持 `babel-plugin-import`，请移除项目中依赖的 `babel-plugin-import` 插件。\n\n只需要删除 `babel.config.js` 中的以下代码即可：\n\n```diff\nmodule.exports = {\n  plugins: [\n-    ['import', {\n-      libraryName: 'vant',\n-      libraryDirectory: 'es',\n-      style: true\n-    }, 'vant']\n  ]\n};\n```\n\n#### 收益\n\n移除 `babel-plugin-import` 主要带来以下收益：\n\n- 不再强依赖 Babel 编译，项目可以使用 SWC、esbuild 等现代编译工具，进而提升编译效率。\n- 不再受到 `babel-plugin-import` 的 import 限制，可以从 Vant 中导入除组件以外的内容，比如 Vant 4 中新增的 `showToast` 方法，或是 `buttonProps` 对象：\n\n```ts\nimport { showToast, buttonProps } from 'vant';\n```\n\n#### 样式引入方案\n\n移除 `babel-plugin-import` 对项目的 JS 体积不会有影响，因为 Vant 默认支持通过 Tree Shaking 来移除不需要的 JS 代码。\n\n而 CSS 代码的引入方式可以从以下两种方式中进行选择：\n\n- 在项目中全量引入 Vant 的样式文件：\n\n```js\nimport 'vant/lib/index.css';\n```\n\n- 通过 [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) 插件实现按需引入样式，详细用法参见 [快速上手](#/zh-CN/quickstart)。\n\n## 组件重构\n\n### 介绍\n\n在 Vant 4 中，一共有三个组件被完全重构，它们是：\n\n- `Area`\n- `Picker`\n- `DatetimePicker`\n\n这三个组件之所以被重构，是因为在之前的版本中，`Picker` 组件的 API 设计存在一些不合理的设计，导致大家在使用时经常遇到问题，比如：\n\n- Picker columns 数据格式定义不合理，容易产生误解\n- Picker 数据流不清晰，暴露了过多的实例方法来对数据进行操作\n- DatetimePicker 逻辑过于复杂，经常在边界场景下出现 bug\n\n为了解决上述问题，我们在 v4 版本中对 `Picker` 组件进行了重构，同时也重构了基于 `Picker` 派生出的 `Area` 和 `DatetimePicker` 组件。如果你的项目中使用了这三个组件，请仔细阅读文档并进行升级。\n\n### Picker 组件重构\n\n#### 主要变更\n\n- 支持通过 `v-model` 绑定当前选中的值，移除 `default-index` 属性\n- 重新定义了 `columns` 属性的结构\n- 移除了操作内部数据的实例方法，仅保留 `confirm` 方法\n- 新增 `getSelectedOptions` 实例方法\n- 调整了 `confirm`、`cancel`、`change` 事件的参数\n- 重命名 `item-height` 属性为 `option-height`\n- 重命名 `visible-item-count` 属性为 `visible-option-num`\n\n> 详细用法请参见 [Picker 组件文档](#/zh-CN/picker)。\n\n### DatetimePicker 组件重构\n\nDatetimePicker 组件被拆分为三个子组件：\n\n- [TimePicker](#/zh-CN/time-picker): 用于时间选择，包括时、分、秒。\n- [DatePicker](#/zh-CN/date-picker): 用于日期选择，包括年、月、日。\n- [PickerGroup](#/zh-CN/picker-group): 用于结合多个 Picker 选择器组件，在一次交互中完成多个值的选择。\n\n同时，TimePicker 和 DatePicker 组件也基于新版 Picker 组件进行重构，并优化了部分 API 设计。\n\n#### 主要变更\n\n以下是 TimePicker 和 DatePicker 的主要 API 变化，更多细节请参考 [TimePicker](#/zh-CN/time-picker) 和 [DatePicker](#/zh-CN/date-picker) 文档。\n\n- `v-model` 绑定的值调整为数组格式\n- 新增 `columns-type` 属性，用于控制选项类型和顺序\n- 移除 `type` 属性和 `columns-order` 属性\n- 移除 `getPicker` 方法\n- 调整 `confirm`、`cancel`、`change` 事件的参数，与 Picker 组件保持一致\n\n> Vant 4 不再提供旧版的 DatetimePicker 组件，使用 PickerGroup 组件可以实现更灵活、更丰富的交互效果，具体用法请参考 [PickerGroup](#/zh-CN/picker-group) 组件文档。\n\n### Area 组件重构\n\nArea 组件是基于 Picker 组件进行封装的，因此本次升级也对 Area 组件进行了内部逻辑的重构，并优化了部分 API。\n\n#### 主要变更\n\n- 支持通过 `v-model` 绑定当前选中的值\n- 移除 `reset` 方法，现在可以通过修改 `v-model` 来进行重置\n- 移除 `is-oversea-code` 属性\n- 调整 `confirm`、`cancel`、`change` 事件的参数，与 Picker 组件保持一致\n- 重命名 `value` 属性为 `modelValue`\n- 重命名 `item-height` 属性为 `option-height`\n- 重命名 `visible-item-count` 属性为 `visible-option-num`\n\n> 详细用法请参见 [Area 组件文档](#/zh-CN/area)。\n\n## API 调整\n\n### Dialog 调用方式调整\n\n在 Vant 3 中，`Dialog` 是一个函数，调用函数可以快速唤起全局的弹窗组件，而 `Dialog.Component` 才是 `Dialog` 组件对象，这与大部分组件的用法存在差异，容易导致使用错误。\n\n为了更符合直觉，我们在 Vant 4 中调整了 `Dialog` 的调用方式，将 `Dialog()` 函数重命名为 `showDialog()`，并让 `Dialog` 直接指向组件对象。\n\n```js\n// Vant 3\nDialog(); // 函数调用\nDialog.Component; // 组件对象\n\n// Vant 4\nshowDialog(); // 函数调用\nDialog; // 组件对象\n```\n\n由于 `Dialog` 变为了组件对象，`Dialog` 上挂载的其他方法也进行了重命名，新旧 API 的映射关系如下：\n\n```js\nDialog(); // -> showDialog()\nDialog.alert(); // -> showDialog()\nDialog.confirm(); // -> showConfirmDialog()\nDialog.close(); // -> closeDialog();\nDialog.setDefaultOptions(); // -> setDialogDefaultOptions()\nDialog.resetDefaultOptions(); // -> resetDialogDefaultOptions()\n```\n\n#### 兼容方案\n\n为了便于旧版本代码迁移至 v4，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `Dialog` 对象来兼容原有代码。\n\n从 `@vant/compat` 中引用 `Dialog` 方法：\n\n```js\nimport { Dialog } from '@vant/compat';\n\nDialog();\nDialog.close();\n```\n\n`@vant/compat` 中导出的 `Dialog` 与 Vant 3 中的 `Dialog` 拥有完全一致的 API 和行为，因此你只需要修改 `Dialog` 的引用路径，其他代码可以保持不变。\n\n在项目完成升级到 Vant v4 后，建议在迭代中逐步替换为新的 `showDialog` 等方法，并移除 `@vant/compat` 包。\n\n### Toast 调用方式调整\n\nVant 4 中，`Toast` 组件的调用方式也进行了调整，与 `Dialog` 组件的改动一致：\n\n```js\n// Vant 3\nToast(); // 函数调用\n\n// Vant 4\nshowToast(); // 函数调用\nToast; // 组件对象\n```\n\n`Toast` 上挂载的其他方法也进行了重命名，新旧 API 的映射关系如下：\n\n```js\nToast(); // -> showToast()\nToast.fail(); // -> showFailToast()\nToast.success(); // -> showSuccessToast()\nToast.loading(); // -> showLoadingToast()\nToast.clear(); // -> closeToast()\nToast.setDefaultOptions(); // -> setToastDefaultOptions()\nToast.resetDefaultOptions(); // -> resetToastDefaultOptions()\n```\n\n同时，Vant 4 将不再在 `this` 对象上全局注册 `$toast` 方法，这意味着 `this` 对象上将无法访问到 `$toast`。\n\n#### 兼容方案\n\n为了便于代码迁移，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `Toast` 对象来兼容原有代码。\n\n```js\nimport { Toast } from '@vant/compat';\n\nToast();\nToast.clear();\n```\n\n`@vant/compat` 中导出的 `Toast` 与 Vant 3 中的 `Toast` 拥有完全一致的 API 和行为，因此你只需要修改 `Toast` 的引用路径，其他代码可以保持不变。\n\n### Notify 调用方式调整\n\nVant 4 中，`Notify` 组件的调用方式也进行了调整，与 `Dialog` 组件的改动一致：\n\n```js\n// Vant 3\nNotify(); // 函数调用\nNotify.Component; // 组件对象\n\n// Vant 4\nshowNotify(); // 函数调用\nNotify; // 组件对象\n```\n\n`Notify` 上挂载的其他方法也进行了重命名，新旧 API 的映射关系如下：\n\n```js\nNotify(); // -> showNotify()\nNotify.clear(); // -> closeNotify()\nNotify.setDefaultOptions(); // -> setNotifyDefaultOptions()\nNotify.resetDefaultOptions(); // -> resetNotifyDefaultOptions()\n```\n\n同时，Vant 4 将不再在 `this` 对象上全局注册 `$notify` 方法，这意味着 `this` 对象上将无法访问到 `$notify`。\n\n#### 兼容方案\n\n为了便于代码迁移，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `Notify` 对象来兼容原有代码。\n\n```js\nimport { Notify } from '@vant/compat';\n\nNotify();\nNotify.clear();\n```\n\n`@vant/compat` 中导出的 `Notify` 与 Vant 3 中的 `Notify` 拥有完全一致的 API 和行为，因此你只需要修改 `Notify` 的引用路径，其他代码可以保持不变。\n\n### ImagePreview 调用方式调整\n\nVant 4 中，`ImagePreview` 组件的调用方式也进行了调整，与 `Dialog` 组件的改动一致：\n\n```js\n// Vant 3\nImagePreview(); // 函数调用\nImagePreview.Component; // 组件对象\n\n// Vant 4\nshowImagePreview(); // 函数调用\nImagePreview; // 组件对象\n```\n\n#### 兼容方案\n\n为了便于代码迁移，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `ImagePreview` 对象来兼容原有代码。\n\n```js\nimport { ImagePreview } from '@vant/compat';\n\nImagePreview();\n```\n\n`@vant/compat` 中导出的 `ImagePreview` 与 Vant 3 中的 `ImagePreview` 拥有完全一致的 API 和行为，因此你只需要修改 `ImagePreview` 的引用路径，其他代码可以保持不变。\n\n### 事件命名调整\n\n从 Vant 4 开始，所有的事件均采用 Vue 官方推荐的**驼峰格式**进行命名。\n\n```js\n// Vant 3\nemit('click-input');\n\n// Vant 4\nemit('clickInput');\n```\n\n这项改动**不影响原有的模板代码**，Vue 会自动在模板中对事件名进行格式转换，因此你无须做任何更改。\n\n```html\n<!-- 以下代码可以照常运行，无须做任何更改 -->\n<van-field @click-input=\"onClick\" />\n```\n\n如果你在 JSX 中使用 Vant 组件，需要将监听的事件名调整为驼峰格式，原有的中划线格式将不再生效，新的监听方式更加符合 JSX 本身的规范：\n\n```jsx\n// Vant 3\n<Field onClick-input={onClick} />\n\n// Vant 4\n<Field onClickInput={onClick} />\n```\n\n### 其他 API 调整\n\n在 Vant 4.0 版本中，以下 API 进行了不兼容更新：\n\n#### AddressEdit\n\n- 移除 `show-postal` 属性\n- 移除 `postal-validator` 属性\n- `change-area` 事件的参数调整为 `PickerOption[]` 类型\n- 移除未在文档中标注的 `getArea` 实例方法\n\n#### Popup\n\nPopup 的 CSS 样式进行了一定调整，如果你在 Popup 组件上添加了一些自定义的 CSS 样式，请确认本次升级是否对项目中的 UI 产生影响。\n\n- 默认添加了 `box-sizing: border-box` 样式\n- 调整了 `position=\"center\"` 时的水平居中方式，以解决弹窗宽度无法正确自适应的问题：\n\n```less\n// Vant 3\n.van-popup--center {\n  left: 50%;\n  transform: translate3d(-50%, -50%, 0);\n}\n\n// Vant 4\n.van-popup--center {\n  left: 0;\n  right: 0;\n  width: fit-content;\n  max-width: calc(100vw - var(--van-padding-md) * 2);\n  margin: 0 auto;\n  transform: translateY(-50%);\n}\n```\n\n#### Tabs\n\n- 移除了 `click` 和 `disabled` 事件，请使用 `click-tab` 事件代替\n\n## 样式调整\n\n### 主色调统一\n\n在之前的版本中，Vant 组件有两种主色调，部分组件采用蓝色（#1989fa）作为主色调，另一部分则采用红色（#ee0a24）。\n\n为了保持色彩规范的一致性，我们在 Vant 4 中对主色调进行统一，所有组件均采用蓝色作为主色调。\n\n以下组件的主色调由红色调整为蓝色：\n\n- AddressEdit\n- AddressList\n- Card\n- Calendar\n- Cascader\n- ContactList\n- ContactEdit\n- CouponList\n- Dialog\n- DropdownMenu\n- IndexBar\n- Sidebar\n- Steps\n- Tabs\n- TreeSelect\n\n### 移除 Less 变量\n\n目前 Vant 已经支持了基于 CSS 变量的主题定制能力，相较于 Less 定制更加灵活。因此，Vant 4 将不再提供基于 Less 的主题定制方式。\n\n这意味着 Vant 的 npm 包中将不再会包含 `.less` 样式源文件，只会提供编译后的 `.css` 样式文件。\n\n如果你的项目正在使用旧版的 Less 主题定制，请使用 [ConfigProvider 全局配置](#/zh-CN/config-provider) 组件进行替换。\n\n### 简化 CSS 变量名\n\n考虑到 **代码体积** 和 **使用便捷性**，我们对部分 CSS 变量的名称进行了简化，在变量名中使用了更简短的单词，以减小代码体积。\n\n本次升级涉及以下变量名变更：\n\n```less\nanimation-duration               ->  duration\nanimation-timing-function-enter  ->  ease-out\nanimation-timing-function-leave  ->  ease-in\nbackground-color                 ->  background\nbackground-color-light           ->  background-2\nborder-radius                    ->  radius\nborder-width-base                ->  border-width\nbox-shadow                       ->  shadow\nfont-family                      ->  font\nfont-weight-bold                 ->  font-bold\nprice-integer-font               ->  price-font\ntext-link                        ->  link\ntransition-duration              ->  duration\n```\n\n由于涉及的 CSS 变量较多，建议在代码仓库中进行全局匹配和替换。\n\n对于 `ConfigProvider` 组件，我们新增了 `ConfigProviderThemeVars` 类型定义，提供完整的类型提示。在 TypeScript 代码中，你可以通过类型提示来确保主题变量被正确替换。\n\n```ts\nimport type { ConfigProviderThemeVars } from 'vant';\n\nconst themeVars: ConfigProviderThemeVars = {\n  sliderBarHeight: '4px',\n};\n```\n","isInternal":false,"tokens":4439,"sizeBytes":14090},{"name":"quickstart.en-US.md","path":"packages/vant/docs/markdown/quickstart.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/quickstart.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# Quickstart\n\n## Install\n\n### npm\n\nUsing `npm` to install:\n\n```bash\n# install latest Vant for Vue 3 project\nnpm i vant\n\n# install Vant 2 for Vue 2 project\nnpm i vant@latest-v2\n```\n\nUsing `yarn`, `pnpm`, or `bun`:\n\n```bash\n# with yarn\nyarn add vant\n\n# with pnpm\npnpm add vant\n\n# with Bun\nbun add vant\n```\n\n### Using in a New Project\n\nIf you need to create a new project, we recommend using [Rsbuild](https://github.com/web-infra-dev/rsbuild), [Vite](https://vitejs.dev/) or [Nuxt framework](https://nuxtjs.org/).\n\n#### Rsbuild\n\nRsbuild is a build tool based on Rspack, developed by the author of Vant, with first-class build speed and development experience, providing first-priority support for Vant.\n\nYou can create a Rsbuild project with the following command:\n\n```bash\nnpm create rsbuild@latest\n```\n\nPlease visit the [Rsbuild repository](https://github.com/web-infra-dev/rsbuild) for more information.\n\n#### Example\n\nHere are the example projects provided by Vant official. You can clone these projects and copy the code.\n\n- [vant-demo - rsbuild](https://github.com/vant-ui/vant-demo/tree/master/vant/rsbuild): Build an application using Vue 3, Vant 4, and Rsbuild.\n- [vant-demo - vite](https://github.com/vant-ui/vant-demo/tree/master/vant/vite): Build an application using Vue 3, Vant 4, and Vite.\n- [vant-demo - nuxt3](https://github.com/vant-ui/vant-demo/tree/master/vant/nuxt3): Build an application using Vue 3, Nuxt 3, and Vant 4.\n\n### CDN\n\nIf you only need to develop a simple HTML page, you can directly include the CDN links in the HTML file. After that, you can access all the components through the global variable `vant`.\n\n```html\n<!-- import style -->\n<link\n  rel=\"stylesheet\"\n  href=\"https://fastly.jsdelivr.net/npm/vant@4/lib/index.css\"\n/>\n\n<!-- import script -->\n<script src=\"https://fastly.jsdelivr.net/npm/vue@3\"></script>\n<script src=\"https://fastly.jsdelivr.net/npm/vant@4/lib/vant.min.js\"></script>\n\n<script>\n  // Render the Button component\n  const app = Vue.createApp({\n    template: `<van-button>Button</van-button>`,\n  });\n  app.use(vant);\n\n  // Register Lazyload directive\n  app.use(vant.Lazyload);\n\n  // Call function component\n  vant.showToast('Message');\n\n  app.mount('#app');\n</script>\n```\n\n#### Free CDN\n\nYou can use Vant through these free CDN services:\n\n- [jsdelivr](https://www.jsdelivr.com/package/npm/vant)\n- [cdnjs](https://cdnjs.com/libraries/vant)\n- [unpkg](https://unpkg.com/)\n\nNote: Free CDN is generally used for making prototypes or personal projects. It is not recommended to use free CDN in production environment.\n\nFor enterprise developers, we recommend:\n\n- install with npm, use build tools to bundle it\n- download the scripts, host it on your own server\n\n## Usage\n\n### Basic Usage\n\nThe basic usage of Vant components:\n\n```js\nimport { createApp } from 'vue';\n// 1. Import the components you need\nimport { Button } from 'vant';\n// 2. Import the components style\nimport 'vant/lib/index.css';\n\nconst app = createApp();\n\n// 3. Register the components you need\napp.use(Button);\n```\n\n> Tip: Vant supports Tree Shaking by default, so you don't need to configure any plugins, the unused JS code will be removed by Tree Shaking, but CSS styles cannot be optimized by it.\n\n### Import on demand\n\nIf you are using Rsbuild, Vite, webpack or vue-cli, you can use [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components), this plugin can help you to auto importing components.\n\nVant officially wrote an automatic import style parser [@vant/auto-import-resolver](https://github.com/youzan/vant/tree/main/packages/vant-auto-import-resolver) based on `unplugin-vue-components`, both of which are used together.\n\nCompared with conventional usage, this method can introduce the CSS style of components on demand, thus reducing part of the code volume, but it will become more cumbersome to use. If the business's volume requirements for CSS are not particularly extreme, we recommend a simpler general usage.\n\n#### 1. Install Plugin\n\n```bash\n# with npm\nnpm i @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# with yarn\nyarn add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# with pnpm\npnpm add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# with Bun\nbun add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n```\n\n#### 2. Configure Plugin\n\nFor Rsbuild based project，configure the plugin in the `rsbuild.config.js` file:\n\n```js\nimport { defineConfig } from '@rsbuild/core';\nimport { pluginVue } from '@rsbuild/plugin-vue';\nimport AutoImport from 'unplugin-auto-import/rspack';\nimport Components from 'unplugin-vue-components/rspack';\nimport { VantResolver } from '@vant/auto-import-resolver';\n\nexport default defineConfig({\n  plugins: [pluginVue()],\n  tools: {\n    rspack: {\n      plugins: [\n        AutoImport({\n          resolvers: [VantResolver()],\n        }),\n        Components({\n          resolvers: [VantResolver()],\n        }),\n      ],\n    },\n  },\n});\n```\n\nFor Vite based project，configure the plugin in the `vite.config.js` file:\n\n```js\nimport vue from '@vitejs/plugin-vue';\nimport AutoImport from 'unplugin-auto-import/vite';\nimport Components from 'unplugin-vue-components/vite';\nimport { VantResolver } from '@vant/auto-import-resolver';\n\nexport default {\n  plugins: [\n    vue(),\n    AutoImport({\n      resolvers: [VantResolver()],\n    }),\n    Components({\n      resolvers: [VantResolver()],\n    }),\n  ],\n};\n```\n\nFor vue-cli based project，configure the plugin in the `vue.config.js` file:\n\n```js\nconst { VantResolver } = require('@vant/auto-import-resolver');\nconst AutoImport = require('unplugin-auto-import/webpack');\nconst Components = require('unplugin-vue-components/webpack');\n\nmodule.exports = {\n  configureWebpack: {\n    plugins: [\n      // When the version of unplugin-vue-components is less than 0.26.0:\n      AutoImport({ resolvers: [VantResolver()] }),\n      Components({ resolvers: [VantResolver()] }),\n      // when the unplugin-vue-components version is greater than or equal to 0.26.0:\n      AutoImport.default({\n        resolvers: [VantResolver()],\n      }),\n      Components.default({ resolvers: [VantResolver()] }),\n    ],\n  },\n};\n```\n\nFor webpack based project，configure the plugin in the `webpack.config.js` file:\n\n```js\nconst { VantResolver } = require('@vant/auto-import-resolver');\nconst AutoImport = require('unplugin-auto-import/webpack');\nconst Components = require('unplugin-vue-components/webpack');\n\nmodule.exports = {\n  plugins: [\n    // When the version of unplugin-vue-components is less than 0.26.0:\n    AutoImport({ resolvers: [VantResolver()] }),\n    Components({ resolvers: [VantResolver()] }),\n    // when the unplugin-vue-components version is greater than or equal to 0.26.0:\n    AutoImport.default({\n      resolvers: [VantResolver()],\n    }),\n    Components.default({ resolvers: [VantResolver()] }),\n  ],\n};\n```\n\n#### 3. Using Components\n\nThen you can using components from Vant in the template, the `unplugin-vue-components` will automatically import the corresponding Vant components,`@vant/auto-import-resolver` The corresponding component style will be automatically introduced.\n\n```html\n<template>\n  <van-button type=\"primary\" />\n</template>\n```\n\n`unplugin-auto-import` will automatically import the corresponding Vant API and styles.\n\n```html\n<script>\n  showToast('No need to import showToast');\n</script>\n```\n\n#### Tips\n\n- \"Full Import\" and \"On-demand Import\" should not be used at the same time, otherwise it will lead to problems such as code duplication and style overrides.\n- During use, if the component cannot be imported, because `unplugin-vue-components` is not a plug-in officially maintained by `Vant`, it is recommended to give feedback under the [unplugin/unplugin-vue-components](https://github.com/antfu/unplugin/unplugin-vue-components) repository.\n- when the version number of `unplugin-vue-components` is >= 0.26.0, for `webpack`, `vue-cli`, and `rspack`, you need to use `ComponentsPlugin.default` to register.\n- `@vant/auto-import-resolver` provides some configuration options. Please refer to the [README document](https://github.com/youzan/vant/tree/main/packages/vant-auto-import-resolver) for more information.\n- If it is a similar problem that the style does not take effect, feedback under the `Vant` repository.\n\n## With Frameworks\n\n### Use Vant in Nuxt 3\n\nWhen using Vant in Nuxt 3, you can use [vant-nuxt](https://github.com/vant-ui/vant-nuxt), this module can help you to auto importing components and reduce CSS file size.\n\n#### 1. Install Module\n\n```bash\n# with npm\nnpm i @vant/nuxt -D\n\n# with yarn\nyarn add @vant/nuxt -D\n\n# with pnpm\npnpm add @vant/nuxt -D\n\n# with Bun\nbun add @vant/nuxt -D\n```\n\n#### 2. Add Module\n\nadd the module in the `nuxt.config.js` file:\n\n```js\nexport default defineNuxtConfig({\n  modules: ['@vant/nuxt'],\n});\n```\n\n#### 3. Using Components\n\nThen you can using components from Vant in the template, Go to the [Nuxt documentation](https://nuxt.com/docs/guide/directory-structure/components) to learn more.\n\n```html\n<template>\n  <van-button type=\"primary\" @click=\"showToast('toast')\">button</van-button>\n  <VanButton type=\"success\" @click=\"showNotify('notify')\">button</VanButton>\n  <LazyVanButton type=\"default\">lazy button</LazyVanButton>\n</template>\n```\n","isInternal":false,"tokens":2342,"sizeBytes":9345},{"name":"quickstart.zh-CN.md","path":"packages/vant/docs/markdown/quickstart.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/quickstart.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# 快速上手\n\n### 介绍\n\n通过本章节你可以了解到 Vant 的安装方法和基本使用姿势。\n\n## 安装\n\n### 通过 npm 安装\n\n在现有项目中使用 Vant 时，可以通过 `npm` 进行安装：\n\n```bash\n# Vue 3 项目，安装最新版 Vant\nnpm i vant\n\n# Vue 2 项目，安装 Vant 2\nnpm i vant@latest-v2\n```\n\n当然，你也可以通过 `yarn`、`pnpm` 或 `bun` 进行安装：\n\n```bash\n# 通过 yarn 安装\nyarn add vant\n\n# 通过 pnpm 安装\npnpm add vant\n\n# 通过 Bun 安装\nbun add vant\n```\n\n### 在新项目中使用\n\n如果你需要新建一个项目，我们推荐使用 [Rsbuild](https://github.com/web-infra-dev/rsbuild)，[Vite](https://cn.vitejs.dev/) 或 [Nuxt 框架](https://nuxt.com)。\n\n#### Rsbuild\n\nRsbuild 是基于 Rspack 的构建工具，由 Vant 作者开发，具备一流的构建速度和开发体验，对 Vant 提供第一优先级支持。\n\n你可以通过以下命令创建一个 Rsbuild 项目：\n\n```bash\nnpm create rsbuild@latest\n```\n\n请访问 [Rsbuild 仓库](https://github.com/web-infra-dev/rsbuild) 了解更多信息。\n\n#### 示例项目\n\n以下是 Vant 官方提供的一些示例项目，你可以克隆该项目，并直接拷贝代码来使用。\n\n- [vant-demo - rsbuild](https://github.com/vant-ui/vant-demo/tree/master/vant/rsbuild)：使用 Vue 3、Vant 4、Rsbuild 搭建应用\n- [vant-demo - vite](https://github.com/vant-ui/vant-demo/tree/master/vant/vite)：使用 Vue 3、Vant 4、Vite 搭建应用\n- [vant-demo - nuxt3](https://github.com/vant-ui/vant-demo/tree/master/vant/nuxt3)：使用 Vue 3、Nuxt 3、Vant 4 搭建应用。\n\n### 通过 CDN 安装\n\n如果你只需要开发一个简单的 HTML 页面，那么可以直接在 HTML 文件中引入 CDN 链接，之后你可以通过全局变量 `vant` 访问到所有组件。\n\n```html\n<!-- 引入样式文件 -->\n<link\n  rel=\"stylesheet\"\n  href=\"https://fastly.jsdelivr.net/npm/vant@4/lib/index.css\"\n/>\n\n<!-- 引入 Vue 和 Vant 的 JS 文件 -->\n<script src=\"https://fastly.jsdelivr.net/npm/vue@3\"></script>\n<script src=\"https://fastly.jsdelivr.net/npm/vant@4/lib/vant.min.js\"></script>\n\n<script>\n  // 在 #app 标签下渲染一个按钮组件\n  const app = Vue.createApp({\n    template: `<van-button>按钮</van-button>`,\n  });\n  app.use(vant);\n\n  // 通过 CDN 引入时不会自动注册 Lazyload 组件\n  // 可以通过下面的方式手动注册\n  app.use(vant.Lazyload);\n\n  // 调用工具函数，弹出一个 Toast\n  vant.showToast('提示');\n\n  app.mount('#app');\n</script>\n```\n\n#### 免费 CDN\n\n你可以通过以下免费 CDN 服务来使用 Vant:\n\n- [jsdelivr](https://www.jsdelivr.com/package/npm/vant)\n- [cdnjs](https://cdnjs.com/libraries/vant)\n- [unpkg](https://unpkg.com/)\n\n注意：免费 CDN 一般用于制作原型或个人小型项目，不推荐在企业生产环境中使用免费 CDN。\n\n对于企业开发者，建议使用以下方式：\n\n- 通过 npm 引入，并通过构建工具进行打包\n- 下载对应文件，并托管在你自己的服务器或 CDN 上\n\n## 示例\n\n### 示例工程\n\n我们提供了丰富的[示例工程](https://github.com/vant-ui/vant-demo)，通过示例工程你可以了解如下内容：\n\n- 基于 Rsbuild 和 Vant 搭建应用\n- 基于 Vite 和 Vant 搭建应用\n- 基于 Nuxt 和 Vant 搭建应用\n- 基于 Vue CLI 和 Vant 搭建应用\n- 配置按需引入组件\n- 配置基于 Rem 的适配方案\n- 配置基于 Viewport 的适配方案\n- 配置基于 TypeScript 的工程\n\n## 引入组件\n\n### 方法一. 常规用法\n\n下面是使用 Vant 组件的用法示例：\n\n```js\nimport { createApp } from 'vue';\n// 1. 引入你需要的组件\nimport { Button } from 'vant';\n// 2. 引入组件样式\nimport 'vant/lib/index.css';\n\nconst app = createApp();\n\n// 3. 注册你需要的组件\napp.use(Button);\n```\n\nVant 支持多种组件注册方式，除了在 app 上全局注册组件，你也可以选择其他的方式，比如局部注册，详见 [组件注册](#/zh-CN/advanced-usage#zu-jian-zhu-ce) 章节。\n\n> 提示：Vant 默认支持 Tree Shaking，因此你不需要配置任何插件，通过 Tree Shaking 即可移除不需要的 JS 代码，但 CSS 样式无法通过这种方式优化，如果需要按需引入 CSS 样式，请参考下面的方法二。\n\n### 方法二. 按需引入组件样式\n\n在基于 Rsbuild、Vite、webpack 或 vue-cli 的项目中使用 Vant 时，可以使用 [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) 插件，它可以自动引入组件。\n\nVant 官方基于 `unplugin-vue-components` 提供了自动导入样式的解析器 [@vant/auto-import-resolver](https://github.com/youzan/vant/tree/main/packages/vant-auto-import-resolver)，两者可以配合使用。\n\n相比于常规用法，这种方式可以按需引入组件的 CSS 样式，从而减少一部分代码体积，但使用起来会变得繁琐一些。如果业务对 CSS 的体积要求不是特别极致，我们推荐使用更简便的常规用法。\n\n#### 1. 安装插件\n\n```bash\n# 通过 npm 安装\nnpm i @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# 通过 yarn 安装\nyarn add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# 通过 pnpm 安装\npnpm add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# 通过 bun 安装\nbun add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n```\n\n#### 2. 配置插件\n\n如果是基于 [Rsbuild](https://github.com/web-infra-dev/rsbuild) 的项目，在 `rsbuild.config.js` 文件中配置插件：\n\n```js\nimport { defineConfig } from '@rsbuild/core';\nimport { pluginVue } from '@rsbuild/plugin-vue';\nimport AutoImport from 'unplugin-auto-import/rspack';\nimport Components from 'unplugin-vue-components/rspack';\nimport { VantResolver } from '@vant/auto-import-resolver';\n\nexport default defineConfig({\n  plugins: [pluginVue()],\n  tools: {\n    rspack: {\n      plugins: [\n        AutoImport({\n          resolvers: [VantResolver()],\n        }),\n        Components({\n          resolvers: [VantResolver()],\n        }),\n      ],\n    },\n  },\n});\n```\n\n如果是基于 Vite 的项目，在 `vite.config.js` 文件中配置插件：\n\n```js\nimport vue from '@vitejs/plugin-vue';\nimport AutoImport from 'unplugin-auto-import/vite';\nimport Components from 'unplugin-vue-components/vite';\nimport { VantResolver } from '@vant/auto-import-resolver';\n\nexport default {\n  plugins: [\n    vue(),\n    AutoImport({\n      resolvers: [VantResolver()],\n    }),\n    Components({\n      resolvers: [VantResolver()],\n    }),\n  ],\n};\n```\n\n如果是基于 vue-cli 的项目，在 `vue.config.js` 文件中配置插件：\n\n```js\nconst { VantResolver } = require('@vant/auto-import-resolver');\nconst AutoImport = require('unplugin-auto-import/webpack');\nconst Components = require('unplugin-vue-components/webpack');\n\nmodule.exports = {\n  configureWebpack: {\n    plugins: [\n      // 当 unplugin-vue-components 版本小于 0.26.0 时，使用以下写法\n      AutoImport({ resolvers: [VantResolver()] }),\n      Components({ resolvers: [VantResolver()] }),\n      //当 unplugin-vue-components 版本大于等于 0.26.0 时，使用以下写法\n      AutoImport.default({\n        resolvers: [VantResolver()],\n      }),\n      Components.default({ resolvers: [VantResolver()] }),\n    ],\n  },\n};\n```\n\n如果是基于 webpack 的项目，在 `webpack.config.js` 文件中配置插件：\n\n```js\nconst { VantResolver } = require('@vant/auto-import-resolver');\nconst AutoImport = require('unplugin-auto-import/webpack');\nconst Components = require('unplugin-vue-components/webpack');\n\nmodule.exports = {\n  plugins: [\n    // 当 unplugin-vue-components 版本小于 0.26.0 时，使用以下写法\n    AutoImport({ resolvers: [VantResolver()] }),\n    Components({ resolvers: [VantResolver()] }),\n    //当 unplugin-vue-components 版本大于等于 0.26.0 时，使用以下写法\n    AutoImport.default({\n      resolvers: [VantResolver()],\n    }),\n    Components.default({ resolvers: [VantResolver()] }),\n  ],\n};\n```\n\n#### 3. 使用组件和 API\n\n完成以上两步，就可以直接在模板中使用 Vant 组件了，`unplugin-vue-components` 会解析模板并自动注册对应的组件, `@vant/auto-import-resolver` 会自动引入对应的组件样式。\n\n```html\n<template>\n  <van-button type=\"primary\" />\n</template>\n```\n\n`unplugin-auto-import` 会自动导入对应的 Vant API 以及样式。\n\n```html\n<script>\n  showToast('No need to import showToast');\n</script>\n```\n\n#### 使用提示\n\n- 请避免同时使用「全量引入」和「按需引入」这两种引入方式，否则会导致代码重复、样式错乱等问题。\n- 在使用过程中，如果你遇到组件不能导入的问题，因为 unplugin-vue-components 并不是 Vant 官方维护的插件，所以建议到 [unplugin/unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) 仓库下反馈。\n- 当 `unplugin-vue-components` 的版本号 >= 0.26.0 时，对于 `webpack`、`vue-cli` 和 `rspack`，你需要使用 `ComponentsPlugin.default` 进行注册。\n- `@vant/auto-import-resolver` 提供了一些配置项，请参考 [README 文档](https://github.com/youzan/vant/tree/main/packages/vant-auto-import-resolver) 来了解更多。\n- 如果是样式不生效的相关问题，你可以在 Vant 仓库下反馈。\n\n## 在框架中使用\n\n### 在 Nuxt 3 中使用\n\n在 Nuxt 3 中使用 Vant 时，可以使用 [vant-nuxt](https://github.com/vant-ui/vant-nuxt) 模块，它可以自动引入组件，并按需引入的样式（包括函数组件）。\n\n#### 1. 安装模块\n\n```bash\n# 通过 npm 安装\nnpm i @vant/nuxt -D\n\n# 通过 yarn 安装\nyarn add @vant/nuxt -D\n\n# 通过 pnpm 安装\npnpm add @vant/nuxt -D\n\n# 通过 Bun 安装\nbun add @vant/nuxt -D\n```\n\n#### 2. 增加模块\n\n在 `nuxt.config.js` 文件中增加模块：\n\n```js\nexport default defineNuxtConfig({\n  modules: ['@vant/nuxt'],\n});\n```\n\n#### 3. 使用组件\n\n完成以上两步，就可以直接在模板中使用 Vant 组件了。前往 [Nuxt 文档](https://nuxt.com/docs/guide/directory-structure/components) 了解更多。\n\n```html\n<template>\n  <van-button type=\"primary\" @click=\"showToast('toast')\">button</van-button>\n  <VanButton type=\"success\" @click=\"showNotify('notify')\">button</VanButton>\n  <LazyVanButton type=\"default\">lazy button</LazyVanButton>\n</template>\n```\n\n## 迁移提示\n\n### 移除 babel-plugin-import\n\n从 Vant 4.0 版本开始，将不再支持 `babel-plugin-import`，请移除项目中依赖的 `babel-plugin-import` 插件。\n\n只需要删除 `babel.config.js` 中的以下代码即可：\n\n```diff\nmodule.exports = {\n  plugins: [\n-    ['import', {\n-      libraryName: 'vant',\n-      libraryDirectory: 'es',\n-      style: true\n-    }, 'vant']\n  ]\n};\n```\n\n#### 收益\n\n移除 `babel-plugin-import` 有以下收益：\n\n- 不再强依赖 babel，项目可以使用 esbuild、swc 等更高效的编译工具，大幅度提升编译效率。\n- 不再受到 `babel-plugin-import` 的 import 写法限制，可以从 vant 中导入除了组件以外的其他内容，比如 Vant 4 中新增的 `showToast` 等方法。\n\n```ts\nimport { showToast, showDialog } from 'vant';\n```\n","isInternal":false,"tokens":3400,"sizeBytes":11228},{"name":"release-note-v4.en-US.md","path":"packages/vant/docs/markdown/release-note-v4.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/release-note-v4.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# 4.0 Release Note\n\n### Introduction\n\nAfter a year of iterations, Vant 4.0 has been officially released, which is the fourth major version of Vant since it was open-sourced in 2017.\n\nIn this iteration, Vant supports the dark mode, adds five new components, improves the utility function API, and refactors components such as Picker, while continuing to make improvements in lightweighting and usability.\n\n### Dark mode support\n\n**Vant 4.0 supports switching all components to dark mode.**\n\nSimply set the `theme` attribute of the [ConfigProvider component](/vant/#/en-US/config-provider) to `dark` to switch to dark mode, which will switch all Vant components on the page to a dark style.\n\n```html\n<van-config-provider theme=\"dark\">\n  <!-- child components -->\n</van-config-provider>\n```\n\n![](https://user-images.githubusercontent.com/7237365/205472724-6c9ee0df-df10-4f9b-84b6-081576bdcea9.png)\n\nAt the same time, the Vant 4.0 document also supports switching to dark mode:\n\n![](https://user-images.githubusercontent.com/7237365/205472729-fefc9053-1866-4812-8b97-ee0ba5d47230.png)\n\n### Several new components\n\n**Vant 4.0 contains the following new components:**\n\n- [BackTop](/vant/#/en-US/back-top): Used to back to the top of the page.\n- [TimePicker](/vant/#/en-US/time-picker): Used for time selection, including hours, minutes, and seconds.\n- [DatePicker](/vant/#/en-US/time-picker): Used for date selection, including year, month, and day.\n- [PickerGroup](/vant/#/en-US/picker-group): Used to combine multiple Picker components, allow users to select multiple value.\n- [SkeletonItems](/vant/#/en-US/skeleton): Customize the skeleton through subcomponents such as SkeletonTitle, SkeletonImage, and SkeletonAvatar.\n\nAmong them, TimePicker and DatePicker are split from the old DatetimePicker component, and the DatetimePicker component is removed. You can use PickerGroup to get the interactive effect of selecting the date and time at the same time.\n\n![](https://user-images.githubusercontent.com/7237365/205474243-14e0a87c-dcfa-4229-9a16-f6ebf910b621.png)\n\n### Keep it lightweight\n\n**Vant 4.0 has a 30% reduction in installation size, keeping bundle size lightweight.**\n\nAs the npm ecosystem grows, node_modules are eating up our disk space. To alleviate the node_modules black hole and speed up installation, we have optimized Vant's npm dependencies and build outputs.\n\nCompared with Vant 3.6.2, the installation size of Vant 4.0.0 has been reduced from 7MB to 5MB. In contrast, the installation size of mainstream component libraries in the community is generally between 15MB and 80MB. You can check the installation size of npm packages through [packagephobia](https://packagephobia.com/result?p=vant).\n\n![](https://user-images.githubusercontent.com/7237365/205470714-e1828299-4df2-40f4-b7cc-f65971fe4567.png)\n\nIn terms of bundle size, this update still increases the size without increasing the price, and the size after Minified + Gzipped remains below 70KB:\n\n![](https://user-images.githubusercontent.com/7237365/205474583-f2d8226f-e089-42d7-8326-3c874dcf1784.png)\n\n### Unify the primary color\n\n**Vant 4.0 unifies the primary color of all components.**\n\nIn the previous version, Vant components had two primary colors, some components used blue `#1989fa` as their primary color, and others used red `#ee0a24`.\n\nTo keep the color specification consistent, we have unified the primary color in Vant 4, and all components use blue as the primary color.\n\n![](https://user-images.githubusercontent.com/7237365/205472726-a0552833-f99d-447a-acce-051ec7ebdbe1.png)\n\nNow that the primary color is unified, theme customization becomes easier. For example, you can override the `--van-primary-color` CSS variable to set the primary color of all components to green:\n\n```css\n:root {\n  --van-primary-color: #07c160;\n}\n```\n\n### Import method adjustment as needed\n\n**Vant 4.0 no longer uses babel-plugin-import for on-demand import.**\n\nIn the early days, most component libraries used `babel-plugin-import` to achieve on-demand import, which means that component libraries will strongly rely on Babel compilation. Starting from Vant 4.0, `babel-plugin-import` is no longer supported, which has the following main advantages:\n\n- Instead of relying heavily on Babel compilation, projects can use modern compilation tools such as SWC and esbuild to improve compilation efficiency.\n\n![](https://user-images.githubusercontent.com/7237365/205478241-dba3c4ed-152c-4892-9e74-1a0d978be314.png)\n\n- No longer subject to the import restrictions of `babel-plugin-import`, you can import content other than Vant components, such as the new `showToast` method in Vant 4, or the `buttonProps` object:\n\n```ts\nimport { showToast, buttonProps } from 'vant';\n```\n\nIn terms of bundle size, removing `babel-plugin-import` will not affect on the JS size of the project, because Vant supports tree shaking by default to remove unnecessary JS code by default, and CSS code can be imported on demand via [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components). For detailed usage, please refer to [\"Quick Start\"](/vant/#/en-US/quickstart).\n\n### Style variable type hints\n\n**Vant 4.0 provides type hints for style variables.**\n\nVant provides more than 700 style variables, which you can modify through CSS code or `ConfigProvider` component. In Vant 4.0, we have added the `ConfigProviderThemeVars` type to provide type hints for style variables.\n\nSo when writing TypeScript code, you can use type hints to complete theme variable names:\n\n![](https://user-images.githubusercontent.com/7237365/205478960-c284e272-a394-4098-ad0f-eda72e74f9f7.png)\n\n### Picker component refactoring\n\n**Vant 4.0 refactored the Picker component, as well as the Picker-based Area and DatetimePicker components.**\n\nIn the previous version, the API design of the `Picker` component was not sensible enough, causing people to often encounter problems when using it, such as:\n\n- The columns data format of Picker is unreasonable, which is easy to cause misunderstanding.\n- The data flow of Picker is not clear, exposing too many instance methods to operate on the data.\n- The logic of DatetimePicker is too complex, and bugs often occur in borderline scenarios.\n\nTo solve the above problems, we refactored the `Picker` component in Vant 4.0, and also refactored the `Area` and `DatetimePicker` components derived from `Picker`.\n\nIf these three components are used in your project, please read the [\"Upgrade Guide\"](/vant/#/en-US/migrate-from-v3) to upgrade.\n\n### Component Utils Adjustment\n\n**Vant 4.0 adjusts the usage of component utility functions to be more intuitive.**\n\nVant 3 provides some component utils, such as calling the `Dialog()` function, which can quickly invoke the global Dialog component, and `Dialog.Component` is the component object corresponding to `Dialog`.\n\n```ts\n// function call\nDialog({ message: 'Hello World!' });\n\n// component registration\napp.use('van-dialog', Dialog.Component);\n```\n\nThe above API design leads to usage differences between Dialog and other components, and is easily abused; it also prevents `unplugin-vue-components` from automatically importing Dialog and other components.\n\nTo be more intuitive, we have adjusted the calling method of component utils in Vant 4. The affected functions include `Dialog()`, `Toast()`, `Notify()` and `ImagePreview()`. Taking Dialog as an example, we rename the `Dialog()` function to `showDialog()`, and let `Dialog` directly point to the component object.\n\n```ts\n// function call\nshowDialog({ message: 'Hello World!' });\n\n// component registration\napp.use('van-dialog', Dialog);\n```\n\nTo facilitate the migration of existing code to Vant 4.0, we provide a compatibility solution. You can use the `Dialog()` function exported from `@vant/compat` to be compatible with the original code.\n\n```js\nimport { Dialog } from '@vant/compat';\n\nDialog({ message: 'Hello World!' });\n```\n\nThe `Dialog()` exported in `@vant/compat` has exactly the same API and behavior as `Dialog()` in Vant 3, so when upgrading, you only need to change its reference path, and the rest of the code can remain constant. After upgrading the project to Vant 4.0, it is recommended to gradually replace it with the new `showDialog()` and other methods in iterations, and remove the `@vant/compat` package.\n\n### Event naming adjustment\n\n**Vant 4.0 changes the event name to camel case.**\n\nStarting from Vant 4, all events are named in camelCase format recommended by Vue.\n\n```js\n// Vant 3\nemit('click-input');\n\n// Vant 4\nemit('clickInput');\n```\n\nThis change **does not affect the original template code**, Vue will automatically format the event name in the template, so you don't need to make any changes.\n\n```html\n<!-- The following code works as usual without any changes -->\n<van-field @click-input=\"onClick\" />\n```\n\nIf you are using the Vant component in JSX, you will need to change the event name to camel case, the original dash format will no longer take effect, and the new monitoring method is more in line with JSX's own specifications:\n\n```jsx\n// Vant 3\n<Field onClick-input={onClick} />\n\n// Vant 4\n<Field onClickInput={onClick} />\n```\n\n### Remove Less variables\n\n**Vant 4.0 no longer supports theme customization via Less variables.**\n\nCurrently Vant already supports theme customization based on CSS variables, which is more flexible than Less customization. Therefore, Vant 4 will no longer provide Less-based theme customization. This means that Vant's npm package will no longer contain `.less` style source files, only the compiled `.css` style files will be provided.\n\nIf your project is using an old version of Less theme customization, please use [ConfigProvider global configuration](#/en-US/config-provider) to replace it.\n\n### Vant Cli 5.0\n\n**This update also releases Vant Cli 5.0.**\n\n[Vant Cli](https://github.com/youzan/vant/tree/main/packages/vant-cli) is the underlying component library construction tool of Vant. The content of this update includes:\n\n- Upgrade Vite to version 3.0, and upgrade related Vite plugins.\n- The `stylelint` and `@vant/stylelint-config` dependencies are no longer installed by default, you can install them yourself if needed:\n\n```bash\nnpm add stylelint@13 @vant/stylelint-config\n```\n\n- The `gh-pages` dependency is no longer installed by default, please update package.json as follows:\n\n```diff\n- \"release:site\": \"pnpm build:site && gh-pages -d site-dist\",\n+ \"release:site\": \"pnpm build:site && npx gh-pages -d site-dist\",\n```\n\n### Version Information\n\n**Currently both [Vant official website](/vant/) and npm latest tag point to Vant 4.0.**\n\nWe have prepared a complete upgrade guide for Vant 4.0, please read [Upgrade from v3 to v4](/vant/#/en-US/migrate-from-v3) to upgrade.\n\nThe maintenance status of each version of Vant is as follows:\n\n| Name   | Framework | Release Date | Maintenance Status |\n| ------ | --------- | ------------ | ------------------ |\n| Vant 4 | Vue 3     | `2022.12`    | Long-term support  |\n| Vant 3 | Vue 3     | `2020.12`    | End of life        |\n| Vant 2 | Vue 2     | `2019.06`    | End of life        |\n| Vant 1 | Vue 2     | `2018.03`    | End of life        |\n\n### Finally\n\nThanks to all the friends who contributed to the development of Vant 4.0, thanks to all developers who use Vant, and hope that everyone will keep walking on the road of open source.\n\n![](https://user-images.githubusercontent.com/7237365/205481230-fdd89482-86ad-40c8-b81f-4af0789f8488.png)\n","isInternal":false,"tokens":2821,"sizeBytes":11472},{"name":"release-note-v4.zh-CN.md","path":"packages/vant/docs/markdown/release-note-v4.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/release-note-v4.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# 4.0 版本介绍\n\n### 引言\n\n历经一年的迭代，Vant 4.0 版本已正式发布，这是 Vant 自 2017 年开源以来发布的第四个重要版本。\n\n在本次迭代中，Vant 支持了深色模式，增加五个新组件，改善工具函数 API 并重构 Picker 等组件，同时继续在轻量化和易用性方面做出改进。\n\n### 支持深色模式\n\n**Vant 4.0 支持切换所有组件为深色模式。**\n\n只需要把 [ConfigProvider 组件](/vant/#/zh-CN/config-provider)的 `theme` 属性设置为 `dark`，即可切换为深色模式，将页面上的所有 Vant 组件变成深色风格。\n\n```html\n<van-config-provider theme=\"dark\">\n  <!-- child components -->\n</van-config-provider>\n```\n\n![](https://user-images.githubusercontent.com/7237365/205472724-6c9ee0df-df10-4f9b-84b6-081576bdcea9.png)\n\n同时，Vant 4.0 文档也已支持切换为深色模式：\n\n![](https://user-images.githubusercontent.com/7237365/205472729-fefc9053-1866-4812-8b97-ee0ba5d47230.png)\n\n### 几个新组件\n\n**Vant 4.0 包含以下新组件：**\n\n- [BackTop 回到顶部](/vant/#/zh-CN/back-top)：返回页面顶部的操作按钮。\n- [TimePicker 时间选择器](/vant/#/zh-CN/time-picker)：用于时间选择，包括时、分、秒。\n- [DatePicker 日期选择器](/vant/#/zh-CN/date-picker)：用于日期选择，包括年、月、日。\n- [PickerGroup 选择器组](/vant/#/zh-CN/picker-group)：用于结合多个 Picker 选择器组件，在一次交互中完成多个值的选择。\n- [Skeleton 骨架屏子组件](/vant/#/zh-CN/skeleton)：通过 SkeletonTitle、SkeletonImage、SkeletonAvatar 等子组件来自定义骨架屏。\n\n其中，TimePicker 和 DatePicker 由旧版的 DatetimePicker 组件拆分而来，DatetimePicker 组件不再提供。你可以通过 PickerGroup 来实现同时选择日期和时间的交互效果。\n\n![](https://user-images.githubusercontent.com/7237365/205474243-14e0a87c-dcfa-4229-9a16-f6ebf910b621.png)\n\n### 保持轻量\n\n**Vant 4.0 的安装体积降低 30%，包体积保持轻量。**\n\n随着 npm 生态的发展，node_modules 正在吞噬我们的磁盘空间。为了缓解 node_modules 黑洞、加快安装速度，我们对 Vant 的 npm 依赖和构建产物进行了优化。\n\n相较于 Vant 3.6.2 版本，Vant 4.0.0 版本的安装体积由 7MB 下降至 5MB。作为对比，社区中主流组件库的安装体积普遍在 15MB ~ 80MB。你可以通过 [packagephobia](https://packagephobia.com/result?p=vant) 来查询 npm 包的安装体积。\n\n![](https://user-images.githubusercontent.com/7237365/205470714-e1828299-4df2-40f4-b7cc-f65971fe4567.png)\n\n在包体积上，本次更新依然加量不加价，Minified + Gzipped 后的体积保持在 70KB 以下：\n\n![](https://user-images.githubusercontent.com/7237365/205474583-f2d8226f-e089-42d7-8326-3c874dcf1784.png)\n\n### 统一主色调\n\n**Vant 4.0 统一了所有组件的主色调。**\n\n在之前的版本中，Vant 组件有两种主色调，部分组件采用蓝色 `#1989fa` 作为主色调，另一部分则采用红色 `#ee0a24`。\n\n为了保持色彩规范的一致性，我们在 Vant 4 中对主色调进行统一，所有组件均采用蓝色作为主色调。\n\n![](https://user-images.githubusercontent.com/7237365/205472726-a0552833-f99d-447a-acce-051ec7ebdbe1.png)\n\n统一主色调后，主题定制会变得更加容易。比如，你可以覆盖 `--van-primary-color` 这个 CSS 变量，将所有组件的主色调设置为绿色：\n\n```css\n:root {\n  --van-primary-color: #07c160;\n}\n```\n\n### 按需引入方式调整\n\n**Vant 4.0 不再使用 babel-plugin-import 实现按需引入。**\n\n在早期，组件库大多使用 `babel-plugin-import` 实现按需引入，这意味着组件库会强依赖 Babel 编译。从 Vant 4.0 开始，将不再支持 `babel-plugin-import`，主要带来以下收益：\n\n- 不再强依赖 Babel 编译，项目可以使用 SWC、esbuild 等现代编译工具，进而提升编译效率。\n\n![](https://user-images.githubusercontent.com/7237365/205478241-dba3c4ed-152c-4892-9e74-1a0d978be314.png)\n\n- 不再受到 `babel-plugin-import` 的 import 限制，可以从 Vant 中导入除组件以外的内容，比如 Vant 4 中新增的 `showToast` 方法，或是 `buttonProps` 对象：\n\n```ts\nimport { showToast, buttonProps } from 'vant';\n```\n\n在包体积方面，移除 `babel-plugin-import` 对项目的 JS 体积不会有影响，因为 Vant 默认支持通过 Tree Shaking 来移除不需要的 JS 代码，而 CSS 代码可以通过 [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) 插件实现按需引入，详细用法请参考 [「快速上手」](/vant/#/zh-CN/quickstart)。\n\n### 样式变量类型提示\n\n**Vant 4.0 提供了样式变量的类型提示。**\n\nVant 提供了 700 多个样式变量，你可以通过 CSS 代码或 `ConfigProvider` 组件修改这些样式变量。在 Vant 4.0 中，我们新增了 `ConfigProviderThemeVars` 类型，以提供样式变量的类型提示。\n\n因此在编写 TypeScript 代码时，你可以通过类型提示来补全主题变量名称：\n\n![](https://user-images.githubusercontent.com/7237365/205478960-c284e272-a394-4098-ad0f-eda72e74f9f7.png)\n\n### Picker 组件重构\n\n**Vant 4.0 重构了 Picker 组件，以及基于 Picker 的 Area 和 DatetimePicker 组件。**\n\n在之前的版本中，`Picker` 组件的 API 设计不够合理，导致大家在使用时经常遇到问题，比如：\n\n- Picker 的 columns 数据格式不合理，容易产生误解。\n- Picker 的数据流不清晰，暴露了过多的实例方法来对数据进行操作。\n- DatetimePicker 的逻辑过于复杂，经常在边界场景下出现 bug。\n\n为了解决上述问题，我们在 Vant 4.0 中对 `Picker` 组件进行了重构，同时也重构了基于 `Picker` 派生出的 `Area` 和 `DatetimePicker` 组件。\n\n如果你的项目中使用了这三个组件，请阅读 [「升级指南」](/vant/#/zh-CN/migrate-from-v3) 进行升级。\n\n### 组件工具函数调整\n\n**Vant 4.0 调整了组件工具函数的用法，使其更符合直觉。**\n\nVant 3 提供了一些组件工具函数，比如调用 `Dialog()` 函数，可以快速唤起全局的弹窗组件，而 `Dialog.Component` 才是 `Dialog` 对应的组件对象。\n\n```ts\n// 函数调用\nDialog({ message: 'Hello World!' });\n\n// 组件注册\napp.use('van-dialog', Dialog.Component);\n```\n\n以上 API 设计导致 Dialog 等支持工具函数的组件与常规组件存在用法差异，容易被误用；同时也导致 `unplugin-vue-components` 无法自动引入 Dialog 等组件。\n\n为了更符合直觉，我们在 Vant 4 中调整了组件工具函数的调用方式，受影响的函数包括 `Dialog()`、`Toast()`、`Notify()` 和 `ImagePreview()`。以 Dialog 为例，我们将 `Dialog()` 函数重命名为 `showDialog()`，并让 `Dialog` 直接指向组件对象。\n\n```ts\n// 函数调用\nshowDialog({ message: 'Hello World!' });\n\n// 组件注册\napp.use('van-dialog', Dialog);\n```\n\n为了便于存量代码迁移至 Vant 4.0，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `Dialog()` 函数来兼容原有代码。\n\n```js\nimport { Dialog } from '@vant/compat';\n\nDialog({ message: 'Hello World!' });\n```\n\n`@vant/compat` 中导出的 `Dialog()` 与 Vant 3 中的 `Dialog()` 拥有完全一致的 API 和行为，因此在升级时，你只需要修改它的引用路径，其余代码可以保持不变。在项目完成升级到 Vant 4.0 后，建议在迭代中逐步替换为新的 `showDialog()` 等方法，并移除 `@vant/compat` 包。\n\n### 事件命名调整\n\n**Vant 4.0 将事件名改为驼峰格式。**\n\n从 Vant 4 开始，所有的事件均采用 Vue 官方推荐的驼峰格式进行命名。\n\n```js\n// Vant 3\nemit('click-input');\n\n// Vant 4\nemit('clickInput');\n```\n\n这项改动**不影响原有的模板代码**，Vue 会自动在模板中对事件名进行格式转换，因此你无须做任何更改。\n\n```html\n<!-- 以下代码可以照常运行，无须做任何更改 -->\n<van-field @click-input=\"onClick\" />\n```\n\n如果你在 JSX 中使用 Vant 组件，需要将监听的事件名调整为驼峰格式，原有的中划线格式将不再生效，新的监听方式更加符合 JSX 本身的规范：\n\n```jsx\n// Vant 3\n<Field onClick-input={onClick} />\n\n// Vant 4\n<Field onClickInput={onClick} />\n```\n\n### 移除 Less 变量\n\n**Vant 4.0 不再支持通过 Less 变量定制主题。**\n\n目前 Vant 已经支持基于 CSS 变量的主题定制，相较于 Less 定制更加灵活。因此，Vant 4 将不再提供基于 Less 的主题定制。这意味着 Vant 的 npm 包中将不再会包含 `.less` 样式源文件，仅会提供编译后的 `.css` 样式文件。\n\n如果你的项目正在使用旧版的 Less 主题定制，请使用 [ConfigProvider 全局配置](#/zh-CN/config-provider) 进行替换。\n\n### Vant Cli 5.0\n\n**本次更新同步发布了 Vant Cli 5.0 版本。**\n\n[Vant Cli](https://github.com/youzan/vant/tree/main/packages/vant-cli) 是 Vant 底层的组件库构建工具，本次更新内容有：\n\n- 升级 Vite 到 3.0 版本，并对相关的 Vite 插件进行升级。\n- 不再默认安装 `stylelint` 和 `@vant/stylelint-config` 依赖，需要的话可以自行安装：\n\n```bash\nnpm add stylelint@13 @vant/stylelint-config\n```\n\n- 不再默认安装 `gh-pages` 依赖，请按照如下方式更新 package.json：\n\n```diff\n- \"release:site\": \"pnpm build:site && gh-pages -d site-dist\",\n+ \"release:site\": \"pnpm build:site && npx gh-pages -d site-dist\",\n```\n\n### 版本信息\n\n**目前 [Vant 官网](/vant/) 和 npm latest 标签均已指向 Vant 4.0。**\n\n我们为 Vant 4.0 准备了完整的升级指南，请阅读 [从 v3 升级到 v4](/vant/#/zh-CN/migrate-from-v3) 进行升级。\n\n后续 Vant 各个版本的维护状态如下：\n\n| 名称   | 框架  | 发布时间  | 维护状态              |\n| ------ | ----- | --------- | --------------------- |\n| Vant 4 | Vue 3 | `2022.12` | 长期支持              |\n| Vant 3 | Vue 3 | `2020.12` | 终止支持，不再接受 PR |\n| Vant 2 | Vue 2 | `2019.06` | 终止支持，不再接受 PR |\n| Vant 1 | Vue 2 | `2018.03` | 终止支持，不再接受 PR |\n\n### 最后\n\n感谢在 Vant 4.0 迭代期间做出贡献的朋友们，感谢所有使用 Vant 的开发者，愿大家在开源的道路上步履不停。\n\n![](https://user-images.githubusercontent.com/7237365/205481230-fdd89482-86ad-40c8-b81f-4af0789f8488.png)\n","isInternal":false,"tokens":3592,"sizeBytes":10491},{"name":"use-click-away.en-US.md","path":"packages/vant/docs/markdown/use-click-away.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-click-away.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# useClickAway\n\n### Intro\n\nTriggers a callback when user clicks outside of the target element.\n\n## Usage\n\n### Basic Usage\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref } from 'vue';\nimport { useClickAway } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    useClickAway(root, () => {\n      console.log('click outside!');\n    });\n\n    return { root };\n  },\n};\n```\n\n### Custom Event\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref } from 'vue';\nimport { useClickAway } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    useClickAway(\n      root,\n      () => {\n        console.log('touch outside!');\n      },\n      { eventName: 'touchstart' },\n    );\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\ntype Options = {\n  eventName?: string;\n};\n\nfunction useClickAway(\n  target:\n    | Element\n    | Ref<Element | undefined>\n    | Array<Element | Ref<Element | undefined>>,\n  listener: EventListener,\n  options?: Options,\n): void;\n```\n\n### Params\n\n| Name | Description | Type | Default Value |\n| --- | --- | --- | --- |\n| target | Target element, support multiple elements | _Element \\| Ref\\<Element> \\| Array\\<Element \\| Ref\\<Element>>_ | - |\n| listener | Callback function when the outside is clicked | _EventListener_ | - |\n| options | Options | _Options_ | `{ eventName: 'click' }` |\n\n### Options\n\n| Name      | Description | Type     | Default Value |\n| --------- | ----------- | -------- | ------------- |\n| eventName | Event name  | _string_ | `click`       |\n","isInternal":false,"tokens":386,"sizeBytes":1543},{"name":"use-click-away.zh-CN.md","path":"packages/vant/docs/markdown/use-click-away.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-click-away.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# useClickAway\n\n### 介绍\n\n监听点击元素外部的事件。\n\n## 代码演示\n\n### 基本用法\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref } from 'vue';\nimport { useClickAway } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    useClickAway(root, () => {\n      console.log('click outside!');\n    });\n\n    return { root };\n  },\n};\n```\n\n### 自定义事件\n\n通过 `eventName` 选项可以自定义需要监听的事件类型。\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref } from 'vue';\nimport { useClickAway } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    useClickAway(\n      root,\n      () => {\n        console.log('touch outside!');\n      },\n      { eventName: 'touchstart' },\n    );\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\ntype Options = {\n  eventName?: string;\n};\n\nfunction useClickAway(\n  target:\n    | Element\n    | Ref<Element | undefined>\n    | Array<Element | Ref<Element | undefined>>,\n  listener: EventListener,\n  options?: Options,\n): void;\n```\n\n### 参数\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| target | 绑定事件的元素，支持传入数组来绑定多个元素 | _Element \\| Ref\\<Element> \\| Array\\<Element \\| Ref\\<Element>>_ | - |\n| listener | 点击外部时触发的回调函数 | _EventListener_ | - |\n| options | 可选的配置项 | _Options_ | 见下表 |\n\n### Options\n\n| 参数      | 说明           | 类型     | 默认值  |\n| --------- | -------------- | -------- | ------- |\n| eventName | 监听的事件类型 | _string_ | `click` |\n","isInternal":false,"tokens":442,"sizeBytes":1602},{"name":"use-count-down.en-US.md","path":"packages/vant/docs/markdown/use-count-down.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-count-down.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# useCountDown\n\n### Intro\n\nUsed to manage the countdown.\n\n## Usage\n\n### Basic Usage\n\n```html\n<span>Total time：{{ current.total }}</span>\n<span>Remain days：{{ current.days }}</span>\n<span>Remain hours：{{ current.hours }}</span>\n<span>Remain minutes：{{ current.minutes }}</span>\n<span>Remain seconds：{{ current.seconds }}</span>\n<span>Remain milliseconds：{{ current.milliseconds }}</span>\n```\n\n```js\nimport { useCountDown } from '@vant/use';\n\nexport default {\n  setup() {\n    const countDown = useCountDown({\n      time: 24 * 60 * 60 * 1000,\n    });\n\n    countDown.start();\n\n    return {\n      current: countDown.current,\n    };\n  },\n};\n```\n\n### Millisecond\n\n```js\nimport { useCountDown } from '@vant/use';\n\nexport default {\n  setup() {\n    const countDown = useCountDown({\n      time: 24 * 60 * 60 * 1000,\n      millisecond: true,\n    });\n    countDown.start();\n\n    return {\n      current: countDown.current,\n    };\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\ntype CurrentTime = {\n  days: number;\n  hours: number;\n  total: number;\n  minutes: number;\n  seconds: number;\n  milliseconds: number;\n};\n\ntype CountDown = {\n  start: () => void;\n  pause: () => void;\n  reset: (totalTime: number) => void;\n  current: ComputedRef<CurrentTime>;\n};\n\ntype UseCountDownOptions = {\n  time: number;\n  millisecond?: boolean;\n  onChange?: (current: CurrentTime) => void;\n  onFinish?: () => void;\n};\n\nfunction useCountDown(options: UseCountDownOptions): CountDown;\n```\n\n### Params\n\n| Name | Description | Type | Default Value |\n| --- | --- | --- | --- |\n| time | Total time, unit milliseconds | _number_ | - |\n| millisecond | Whether to enable millisecond render | _boolean_ | `false` |\n| onChange | Triggered when count down changed | _(current: CurrentTime) => void_ | - |\n| onFinish | Triggered when count down finished | _() => void_ | - |\n\n### Return Value\n\n| Name    | Description         | Type                    |\n| ------- | ------------------- | ----------------------- |\n| current | Current remain time | _CurrentTime_           |\n| start   | Start count down    | _() => void_            |\n| pause   | Pause count down    | _() => void_            |\n| reset   | Reset count down    | _(time?: number): void_ |\n\n### CurrentTime Structure\n\n| Name         | Description                   | Type     |\n| ------------ | ----------------------------- | -------- |\n| total        | Total time, unit milliseconds | _number_ |\n| days         | Remain days                   | _number_ |\n| hours        | Remain hours                  | _number_ |\n| minutes      | Remain minutes                | _number_ |\n| seconds      | Remain seconds                | _number_ |\n| milliseconds | Remain milliseconds           | _number_ |\n","isInternal":false,"tokens":666,"sizeBytes":2729},{"name":"use-count-down.zh-CN.md","path":"packages/vant/docs/markdown/use-count-down.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-count-down.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# useCountDown\n\n### 介绍\n\n提供倒计时管理能力。\n\n## 代码演示\n\n### 基本用法\n\n```html\n<span>总时间：{{ current.total }}</span>\n<span>剩余天数：{{ current.days }}</span>\n<span>剩余小时：{{ current.hours }}</span>\n<span>剩余分钟：{{ current.minutes }}</span>\n<span>剩余秒数：{{ current.seconds }}</span>\n<span>剩余毫秒：{{ current.milliseconds }}</span>\n```\n\n```js\nimport { useCountDown } from '@vant/use';\n\nexport default {\n  setup() {\n    const countDown = useCountDown({\n      // 倒计时 24 小时\n      time: 24 * 60 * 60 * 1000,\n    });\n\n    // 开始倒计时\n    countDown.start();\n\n    return {\n      current: countDown.current,\n    };\n  },\n};\n```\n\n### 毫秒级渲染\n\n倒计时默认每秒渲染一次，设置 millisecond 选项可以开启毫秒级渲染。\n\n```js\nimport { useCountDown } from '@vant/use';\n\nexport default {\n  setup() {\n    const countDown = useCountDown({\n      time: 24 * 60 * 60 * 1000,\n      millisecond: true,\n    });\n    countDown.start();\n\n    return {\n      current: countDown.current,\n    };\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\ntype CurrentTime = {\n  days: number;\n  hours: number;\n  total: number;\n  minutes: number;\n  seconds: number;\n  milliseconds: number;\n};\n\ntype CountDown = {\n  start: () => void;\n  pause: () => void;\n  reset: (totalTime: number) => void;\n  current: ComputedRef<CurrentTime>;\n};\n\ntype UseCountDownOptions = {\n  time: number;\n  millisecond?: boolean;\n  onChange?: (current: CurrentTime) => void;\n  onFinish?: () => void;\n};\n\nfunction useCountDown(options: UseCountDownOptions): CountDown;\n```\n\n### 参数\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| time | 倒计时时长，单位毫秒 | _number_ | - |\n| millisecond | 是否开启毫秒级渲染 | _boolean_ | `false` |\n| onChange | 倒计时改变时触发的回调函数 | _(current: CurrentTime) => void_ | - |\n| onFinish | 倒计时结束时触发的回调函数 | _() => void_ | - |\n\n### 返回值\n\n| 参数    | 说明                               | 类型                    |\n| ------- | ---------------------------------- | ----------------------- |\n| current | 当前剩余的时间                     | _CurrentTime_           |\n| start   | 开始倒计时                         | _() => void_            |\n| pause   | 暂停倒计时                         | _() => void_            |\n| reset   | 重置倒计时，支持传入新的倒计时时长 | _(time?: number): void_ |\n\n### CurrentTime 格式\n\n| 名称         | 说明                   | 类型     |\n| ------------ | ---------------------- | -------- |\n| total        | 剩余总时间（单位毫秒） | _number_ |\n| days         | 剩余天数               | _number_ |\n| hours        | 剩余小时               | _number_ |\n| minutes      | 剩余分钟               | _number_ |\n| seconds      | 剩余秒数               | _number_ |\n| milliseconds | 剩余毫秒               | _number_ |\n","isInternal":false,"tokens":846,"sizeBytes":2975},{"name":"use-custom-field-value.en-US.md","path":"packages/vant/docs/markdown/use-custom-field-value.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-custom-field-value.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# useCustomFieldValue\n\n### Intro\n\nUsed to custom Field value.\n\n## Usage\n\n### Basic Usage\n\nIf you want to custom Form items, you can insert your component into the `input` slot of the Field component, and call the `useCustomFieldValue` method inside your custom component.\n\n#### MyComponent\n\n```js\n// MyComponent.vue\nimport { ref } from 'vue';\nimport { useCustomFieldValue } from '@vant/use';\n\nexport default {\n  setup() {\n    const myValue = ref(0);\n\n    useCustomFieldValue(() => myValue.value);\n\n    return { myValue };\n  },\n};\n```\n\n#### Form\n\n```html\n<van-form>\n  <van-field name=\"my-field\" label=\"Custom Field\">\n    <template #input>\n      <my-component />\n    </template>\n  </van-field>\n</van-form>\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useCustomFieldValue(customValue: () => unknown): void;\n```\n\n### Params\n\n| Name        | Description                 | Type            | Default Value |\n| ----------- | --------------------------- | --------------- | ------------- |\n| customValue | Function to get field value | _() => unknown_ | -             |\n","isInternal":false,"tokens":248,"sizeBytes":1067},{"name":"use-custom-field-value.zh-CN.md","path":"packages/vant/docs/markdown/use-custom-field-value.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-custom-field-value.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# useCustomFieldValue\n\n### 介绍\n\n用于自定义 Form 组件中的表单项。\n\n## 代码演示\n\n### 基本用法\n\n如果需要自定义表单项，可以在 Field 组件的 `input` 插槽中插入你的自定义组件，并在自定义组件内部调用 `useCustomFieldValue` 方法。\n\n#### 自定义组件\n\n首先，在你的自定义组件中，调用 `useCustomFieldValue` 方法，并传入一个回调函数，这个函数返回值为表单项的值。\n\n```js\n// MyComponent.vue\nimport { ref } from 'vue';\nimport { useCustomFieldValue } from '@vant/use';\n\nexport default {\n  setup() {\n    const myValue = ref(0);\n\n    // 此处传入的值会替代 Field 组件内部的 value\n    useCustomFieldValue(() => myValue.value);\n\n    return { myValue };\n  },\n};\n```\n\n#### 表单\n\n接着，在 Form 组件中嵌入你的自定义组件，当提交表单时，即可获取到自定义表单项的值。\n\n```html\n<van-form>\n  <!-- 这是一个自定义表单项 -->\n  <!-- 当表单提交时，会包括 useCustomFieldValue 中传入的值 -->\n  <van-field name=\"my-field\" label=\"自定义表单项\">\n    <template #input>\n      <my-component />\n    </template>\n  </van-field>\n</van-form>\n```\n\n## API\n\n### 类型定义\n\n```ts\nfunction useCustomFieldValue(customValue: () => unknown): void;\n```\n\n### 参数\n\n| 参数        | 说明               | 类型            | 默认值 |\n| ----------- | ------------------ | --------------- | ------ |\n| customValue | 获取表单项值的函数 | _() => unknown_ | -      |\n","isInternal":false,"tokens":419,"sizeBytes":1517},{"name":"use-event-listener.en-US.md","path":"packages/vant/docs/markdown/use-event-listener.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-event-listener.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# useEventListener\n\n### Intro\n\nAttaching an event when the component is `mounted` and `activated`, then removing the event when the component is `unmounted` and `deactivated`.\n\n## Usage\n\n### Basic Usage\n\n```js\nimport { ref } from 'vue';\nimport { useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    // attach the resize event to window\n    useEventListener('resize', () => {\n      console.log('window resize');\n    });\n\n    // attach the click event to the body element\n    useEventListener(\n      'click',\n      () => {\n        console.log('click body');\n      },\n      { target: document.body },\n    );\n  },\n};\n```\n\n### Remove Event Listener\n\n`useEventListener` will return a `cleanup` function，you can call it to remove the event listener.\n\n```js\nimport { ref } from 'vue';\nimport { useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    const cleanup = useEventListener('resize', () => {\n      console.log('window resize');\n    });\n\n    cleanup();\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\ntype Options = {\n  target?: EventTarget | Ref<EventTarget>;\n  capture?: boolean;\n  passive?: boolean;\n};\n\nfunction useEventListener(\n  type: string,\n  listener: EventListener,\n  options?: Options,\n): () => void;\n```\n\n### Params\n\n| Name     | Description       | Type            | Default Value |\n| -------- | ----------------- | --------------- | ------------- |\n| type     | Event type        | _string_        | -             |\n| listener | Callback function | _EventListener_ | -             |\n| options  | Options           | _Options_       | -             |\n\n### Options\n\n| Name | Description | Type | Default Value |\n| --- | --- | --- | --- |\n| target | Target element | _EventTarget \\| Ref\\<EventTarget>_ | `window` |\n| capture | Whether to enable capture | _boolean_ | `false` |\n| passive | if true, indicates that the listener will never call `preventDefault()` | _boolean_ | `false` |\n","isInternal":false,"tokens":448,"sizeBytes":1934},{"name":"use-event-listener.zh-CN.md","path":"packages/vant/docs/markdown/use-event-listener.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-event-listener.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# useEventListener\n\n### 介绍\n\n方便地进行事件绑定，在组件 `mounted` 和 `activated` 时绑定事件，`unmounted` 和 `deactivated` 时解绑事件。\n\n## 代码演示\n\n### 基本用法\n\n```js\nimport { ref } from 'vue';\nimport { useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    // 在 window 上绑定 resize 事件\n    // 未指定监听对象时，默认会监听 window 的事件\n    useEventListener('resize', () => {\n      console.log('window resize');\n    });\n\n    // 在 body 元素上绑定 click 事件\n    useEventListener(\n      'click',\n      () => {\n        console.log('click body');\n      },\n      { target: document.body },\n    );\n  },\n};\n```\n\n### 取消事件监听\n\n`useEventListener` 会返回一个 `cleanup` 函数，调用该函数可以取消事件监听。\n\n```js\nimport { ref } from 'vue';\nimport { useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    const cleanup = useEventListener('resize', () => {\n      console.log('window resize');\n    });\n\n    cleanup();\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\ntype Options = {\n  target?: EventTarget | Ref<EventTarget>;\n  capture?: boolean;\n  passive?: boolean;\n};\n\nfunction useEventListener(\n  type: string,\n  listener: EventListener,\n  options?: Options,\n): () => void;\n```\n\n### 参数\n\n| 参数     | 说明           | 类型            | 默认值 |\n| -------- | -------------- | --------------- | ------ |\n| type     | 监听的事件类型 | _string_        | -      |\n| listener | 事件回调函数   | _EventListener_ | -      |\n| options  | 可选的配置项   | _Options_       | -      |\n\n### Options\n\n| 参数 | 说明 | 类型 | 默认值 |\n| --- | --- | --- | --- |\n| target | 绑定事件的元素 | _EventTarget \\| Ref\\<EventTarget>_ | `window` |\n| capture | 是否在事件捕获阶段触发 | _boolean_ | `false` |\n| passive | 设置为 `true` 时，表示 `listener` 永远不会调用 `preventDefault` | _boolean_ | `false` |\n","isInternal":false,"tokens":537,"sizeBytes":1976},{"name":"use-page-visibility.en-US.md","path":"packages/vant/docs/markdown/use-page-visibility.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-page-visibility.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# usePageVisibility\n\n### Intro\n\nGet the visible state of the page.\n\n## Usage\n\n### Basic Usage\n\n```js\nimport { watch } from 'vue';\nimport { usePageVisibility } from '@vant/use';\n\nexport default {\n  setup() {\n    const pageVisibility = usePageVisibility();\n\n    watch(pageVisibility, (value) => {\n      console.log('visibility: ', value);\n    });\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\ntype VisibilityState = 'visible' | 'hidden';\n\nfunction usePageVisibility(): Ref<VisibilityState>;\n```\n\n### Return Value\n\n| Name | Description | Type |\n| --- | --- | --- |\n| visibilityState | The current visible state of the page, could be `visible` or `hidden` | _Ref\\<VisibilityState>_ |\n","isInternal":false,"tokens":167,"sizeBytes":684},{"name":"use-page-visibility.zh-CN.md","path":"packages/vant/docs/markdown/use-page-visibility.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-page-visibility.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# usePageVisibility\n\n### 介绍\n\n获取页面的可见状态。\n\n## 代码演示\n\n### 基本用法\n\n```js\nimport { watch } from 'vue';\nimport { usePageVisibility } from '@vant/use';\n\nexport default {\n  setup() {\n    const pageVisibility = usePageVisibility();\n\n    watch(pageVisibility, (value) => {\n      console.log('visibility: ', value);\n    });\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\ntype VisibilityState = 'visible' | 'hidden';\n\nfunction usePageVisibility(): Ref<VisibilityState>;\n```\n\n### 返回值\n\n| 参数 | 说明 | 类型 |\n| --- | --- | --- |\n| visibilityState | 页面当前的可见状态，`visible` 为可见，`hidden` 为隐藏 | _Ref\\<VisibilityState>_ |\n","isInternal":false,"tokens":184,"sizeBytes":681},{"name":"use-raf.en-US.md","path":"packages/vant/docs/markdown/use-raf.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-raf.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# useRaf\n\n### Intro\n\nProvide convenient call and cancellation of [requestAnimationFrame](https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame).\n\n## Usage\n\n### Single Call\n\nBy using the `useRaf` method, you can execute a function before the next browser repaint.\n\n```js\nimport { useRaf } from '@vant/use';\n\nexport default {\n  setup() {\n    let count = 0;\n    useRaf(() => {\n      console.log(++count); // It will only be executed once.\n    });\n  },\n};\n```\n\n### Loop Calls\n\nBy using the `isLoop` option, you can execution of a function repeatedly at a specified interval until it is canceled.\n\n```js\nimport { useRaf } from '@vant/use';\n\nexport default {\n  setup() {\n    let count = 0;\n    const cancelRaf = useRaf(\n      () => {\n        console.log(++count); // Execute infinitely until canceled\n\n        if (count === 5) {\n          cancelRaf();\n        }\n      },\n      {\n        isLoop: true, // Enable the loop\n        interval: 100, // Set call interval\n      },\n    );\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useRaf(\n  callback: () => void,\n  options: {\n    interval?: number;\n    isLoop?: boolean;\n  },\n): void;\n```\n\n### Params\n\n| Name | Description | Type | Default |\n| --- | --- | --- | --- |\n| callback | Callback | _() => void_ | - |\n| options | Options | _{ interval?: number; isLoop?: boolean }_ | _{ interval: 0; isLoop: false }_ |\n","isInternal":false,"tokens":360,"sizeBytes":1388},{"name":"use-raf.zh-CN.md","path":"packages/vant/docs/markdown/use-raf.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-raf.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# useRaf\n\n### 介绍\n\n提供便捷的 [requestAnimationFrame](https://developer.mozilla.org/zh-CN/docs/Web/API/window/requestAnimationFrame) 的调用和取消。\n\n## 代码演示\n\n### 单次调用\n\n通过 `useRaf` 方法，可以在下一次浏览器重新绘制之前调用指定的函数。\n\n```js\nimport { useRaf } from '@vant/use';\n\nexport default {\n  setup() {\n    let count = 0;\n    useRaf(() => {\n      console.log(++count); // 只会执行 1 次\n    });\n  },\n};\n```\n\n### 循环调用\n\n通过开启 `isLoop` 选项，你可以按指定的间隔重复执行某个函数，直到被取消。\n\n```js\nimport { useRaf } from '@vant/use';\n\nexport default {\n  setup() {\n    let count = 0;\n    const cancelRaf = useRaf(\n      () => {\n        console.log(++count); // 无限执行，直到被 cancel\n\n        if (count === 5) {\n          cancelRaf();\n        }\n      },\n      {\n        isLoop: true, // 开启循环\n        interval: 100, // 设置调用间隔\n      },\n    );\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\nfunction useRaf(\n  callback: () => void,\n  options: {\n    interval?: number;\n    isLoop?: boolean;\n  },\n): void;\n```\n\n### 参数\n\n| 参数 | 说明 | 类型 | 默认 |\n| --- | --- | --- | --- |\n| callback | 回调函数 | _() => void_ | - |\n| options | 配置参数 | _{ interval?: number; isLoop?: boolean }_ | _{ interval: 0; isLoop: false }_ |\n","isInternal":false,"tokens":423,"sizeBytes":1368},{"name":"use-rect.en-US.md","path":"packages/vant/docs/markdown/use-rect.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-rect.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# useRect\n\n### Intro\n\nGet the size of an element and its position relative to the viewport, equivalent to [Element.getBoundingClientRect](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).\n\n## Usage\n\n### Basic Usage\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref, onMounted } from 'vue';\nimport { useRect } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n\n    onMounted(() => {\n      const rect = useRect(root);\n      console.log(rect); // -> the size of an element and its position relative to the viewport\n    });\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useRect(\n  element: Element | Window | Ref<Element | Window | undefined>,\n): DOMRect;\n```\n\n### Return Value\n\n| Name | Description | Type |\n| --- | --- | --- |\n| width | Width of the element | _number_ |\n| height | Height of the element | _number_ |\n| top | The distance from the top to the top-left of the viewport | _number_ |\n| left | The distance from the left to the top-left of the viewport | _number_ |\n| right | The distance from the right to the top-left of the viewport | _number_ |\n| bottom | The distance from the bottom to the top-left of the viewport | _number_ |\n","isInternal":false,"tokens":299,"sizeBytes":1233},{"name":"use-rect.zh-CN.md","path":"packages/vant/docs/markdown/use-rect.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-rect.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# useRect\n\n### 介绍\n\n获取元素的大小及其相对于视口的位置，等价于 [Element.getBoundingClientRect](https://developer.mozilla.org/zh-CN/docs/Web/API/Element/getBoundingClientRect)。\n\n## 代码演示\n\n### 基本用法\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref, onMounted } from 'vue';\nimport { useRect } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n\n    onMounted(() => {\n      const rect = useRect(root);\n      console.log(rect); // -> 元素的大小及其相对于视口的位置\n    });\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\nfunction useRect(\n  element: Element | Window | Ref<Element | Window | undefined>,\n): DOMRect;\n```\n\n### 返回值\n\n| 参数   | 说明                       | 类型     |\n| ------ | -------------------------- | -------- |\n| width  | 宽度                       | _number_ |\n| height | 高度                       | _number_ |\n| top    | 顶部与视图窗口左上角的距离 | _number_ |\n| left   | 左侧与视图窗口左上角的距离 | _number_ |\n| right  | 右侧与视图窗口左上角的距离 | _number_ |\n| bottom | 底部与视图窗口左上角的距离 | _number_ |\n","isInternal":false,"tokens":350,"sizeBytes":1199},{"name":"use-relation.en-US.md","path":"packages/vant/docs/markdown/use-relation.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-relation.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# useRelation\n\n### Intro\n\nEstablish the association relationship between parent and child components, perform data communication and method invocation, based on `provide` and `inject` implementation.\n\n## Usage\n\n### Basic Usage\n\nUse `useChildren` in parent to associate child components:\n\n```js\nimport { ref } from 'vue';\nimport { useChildren } from '@vant/use';\n\nconst RELATION_KEY = Symbol('my-relation');\n\nexport default {\n  setup() {\n    const { linkChildren } = useChildren(RELATION_KEY);\n\n    const count = ref(0);\n    const add = () => {\n      count.value++;\n    };\n\n    // provide data and methods to children\n    linkChildren({ add, count });\n  },\n};\n```\n\nUse `useParent` in child component to get the data and methods provided by parent.\n\n```js\nimport { useParent } from '@vant/use';\n\nexport default {\n  setup() {\n    const { parent } = useParent(RELATION_KEY);\n\n    // use data and methods provided by parent\n    if (parent) {\n      parent.add();\n      console.log(parent.count.value); // -> 1\n    }\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useParent<T>(key: string | symbol): {\n  parent?: T;\n  index?: Ref<number>;\n};\n\nfunction useChildren(key: string | symbol): {\n  children: ComponentPublicInstance[];\n  linkChildren: (value: any) => void;\n};\n```\n\n### Return Value of useParent\n\n| Name | Description | Type |\n| --- | --- | --- |\n| parent | Data and methods provided by parent | _any_ |\n| index | Index position of the current component in all child of the parent component | _Ref\\<number>_ |\n\n### Return Value of useChildren\n\n| Name | Description | Type |\n| --- | --- | --- |\n| children | Component list of children | _ComponentPublicInstance[]_ |\n| linkChildren | Function to provide values to child | _(value: any) => void_ |\n","isInternal":false,"tokens":420,"sizeBytes":1759},{"name":"use-relation.zh-CN.md","path":"packages/vant/docs/markdown/use-relation.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-relation.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# useRelation\n\n### 介绍\n\n建立父子组件之间的关联关系，进行数据通信和方法调用，基于 `provide` 和 `inject` 实现。\n\n## 代码演示\n\n### 基本用法\n\n在父组件中使用 `useChildren` 关联子组件:\n\n```js\nimport { ref } from 'vue';\nimport { useChildren } from '@vant/use';\n\nconst RELATION_KEY = Symbol('my-relation');\n\nexport default {\n  setup() {\n    const { linkChildren } = useChildren(RELATION_KEY);\n\n    const count = ref(0);\n    const add = () => {\n      count.value++;\n    };\n\n    // 向子组件提供数据和方法\n    linkChildren({ add, count });\n  },\n};\n```\n\n在子组件中使用 `useParent` 获取父组件提供的数据和方法:\n\n```js\nimport { useParent } from '@vant/use';\n\nexport default {\n  setup() {\n    const { parent } = useParent(RELATION_KEY);\n\n    // 调用父组件提供的数据和方法\n    if (parent) {\n      parent.add();\n      console.log(parent.count.value); // -> 1\n    }\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\nfunction useParent<T>(key: string | symbol): {\n  parent?: T;\n  index?: Ref<number>;\n};\n\nfunction useChildren(key: string | symbol): {\n  children: ComponentPublicInstance[];\n  linkChildren: (value: any) => void;\n};\n```\n\n### useParent 返回值\n\n| 参数   | 说明                                         | 类型           |\n| ------ | -------------------------------------------- | -------------- |\n| parent | 父组件提供的值                               | _any_          |\n| index  | 当前组件在父组件的所有子组件中对应的索引位置 | _Ref\\<number>_ |\n\n### useChildren 返回值\n\n| 参数         | 说明                 | 类型                        |\n| ------------ | -------------------- | --------------------------- |\n| children     | 子组件列表           | _ComponentPublicInstance[]_ |\n| linkChildren | 向子组件提供值的方法 | _(value: any) => void_      |\n","isInternal":false,"tokens":493,"sizeBytes":1899},{"name":"use-scroll-parent.en-US.md","path":"packages/vant/docs/markdown/use-scroll-parent.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-scroll-parent.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# useScrollParent\n\n### Intro\n\nGet the closest parent element that is scrollable.\n\n## Usage\n\n### Basic Usage\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref, watch } from 'vue';\nimport { useScrollParent, useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    const scrollParent = useScrollParent(root);\n\n    useEventListener(\n      'scroll',\n      () => {\n        console.log('scroll');\n      },\n      { target: scrollParent },\n    );\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useScrollParent(\n  element: Ref<Element | undefined>,\n): Ref<Element | Window | undefined>;\n```\n\n### Params\n\n| Name    | Description         | Type            | Default Value |\n| ------- | ------------------- | --------------- | ------------- |\n| element | The current element | _Ref\\<Element>_ | -             |\n\n### Return Value\n\n| Name | Description | Type |\n| --- | --- | --- |\n| scrollParent | The closest parent element that is scrollable | _Ref\\<Element>_ |\n","isInternal":false,"tokens":238,"sizeBytes":1024},{"name":"use-scroll-parent.zh-CN.md","path":"packages/vant/docs/markdown/use-scroll-parent.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-scroll-parent.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# useScrollParent\n\n### 介绍\n\n获取元素最近的可滚动父元素。\n\n## 代码演示\n\n### 基本用法\n\n```html\n<div ref=\"root\" />\n```\n\n```js\nimport { ref, watch } from 'vue';\nimport { useScrollParent, useEventListener } from '@vant/use';\n\nexport default {\n  setup() {\n    const root = ref();\n    const scrollParent = useScrollParent(root);\n\n    useEventListener(\n      'scroll',\n      () => {\n        console.log('scroll');\n      },\n      { target: scrollParent },\n    );\n\n    return { root };\n  },\n};\n```\n\n## API\n\n### 类型定义\n\n```ts\nfunction useScrollParent(\n  element: Ref<Element | undefined>,\n): Ref<Element | Window | undefined>;\n```\n\n### 参数\n\n| 参数    | 说明     | 类型            | 默认值 |\n| ------- | -------- | --------------- | ------ |\n| element | 当前元素 | _Ref\\<Element>_ | -      |\n\n### 返回值\n\n| 参数         | 说明               | 类型            |\n| ------------ | ------------------ | --------------- |\n| scrollParent | 最近的可滚动父元素 | _Ref\\<Element>_ |\n","isInternal":false,"tokens":267,"sizeBytes":1026},{"name":"use-toggle.en-US.md","path":"packages/vant/docs/markdown/use-toggle.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-toggle.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"# useToggle\n\n### Intro\n\nUsed to switch between `true` and `false`.\n\n## Usage\n\n### Basic Usage\n\n```js\nimport { useToggle } from '@vant/use';\n\nexport default {\n  setup() {\n    const [state, toggle] = useToggle();\n\n    toggle(true);\n    console.log(state.value); // -> true\n\n    toggle(false);\n    console.log(state.value); // -> false\n\n    toggle();\n    console.log(state.value); // -> true\n  },\n};\n```\n\n### Default Value\n\n```js\nimport { useToggle } from '@vant/use';\n\nexport default {\n  setup() {\n    const [state, toggle] = useToggle(true);\n    console.log(state.value); // -> true\n  },\n};\n```\n\n## API\n\n### Type Declarations\n\n```ts\nfunction useToggle(\n  defaultValue: boolean,\n): [Ref<boolean>, (newValue: boolean) => void];\n```\n\n### Params\n\n| Name         | Description   | Type      | Default Value |\n| ------------ | ------------- | --------- | ------------- |\n| defaultValue | Default value | _boolean_ | `false`       |\n\n### Return Value\n\n| Name   | Description              | Type                           |\n| ------ | ------------------------ | ------------------------------ |\n| state  | State                    | _Ref\\<boolean>_                |\n| toggle | Function to switch state | _(newValue?: boolean) => void_ |\n","isInternal":false,"tokens":281,"sizeBytes":1228},{"name":"use-toggle.zh-CN.md","path":"packages/vant/docs/markdown/use-toggle.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-toggle.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fdocs%2Fmarkdown%2Fuse-toggle.zh-CN.md -->","isInternal":false,"tokens":309,"sizeBytes":1197},{"name":"use-window-size.en-US.md","path":"packages/vant/docs/markdown/use-window-size.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-window-size.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fdocs%2Fmarkdown%2Fuse-window-size.en-US.md -->","isInternal":false,"tokens":209,"sizeBytes":915},{"name":"use-window-size.zh-CN.md","path":"packages/vant/docs/markdown/use-window-size.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/use-window-size.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fdocs%2Fmarkdown%2Fuse-window-size.zh-CN.md -->","isInternal":false,"tokens":248,"sizeBytes":833},{"name":"vant-use-intro.en-US.md","path":"packages/vant/docs/markdown/vant-use-intro.en-US.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/vant-use-intro.en-US.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fdocs%2Fmarkdown%2Fvant-use-intro.en-US.md -->","isInternal":false,"tokens":417,"sizeBytes":1660},{"name":"vant-use-intro.zh-CN.md","path":"packages/vant/docs/markdown/vant-use-intro.zh-CN.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/docs/markdown/vant-use-intro.zh-CN.md","title":"Markdown Skill","category":"anthropic-skill","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fdocs%2Fmarkdown%2Fvant-use-intro.zh-CN.md -->","isInternal":false,"tokens":608,"sizeBytes":1878},{"name":"README.md","path":"packages/create-vant-cli-app/generators/vue2/src/demo-button/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/create-vant-cli-app/generators/vue2/src/demo-button/README.md","title":"demo-button Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fcreate-vant-cli-app%2Fgenerators%2Fvue2%2Fsrc%2Fdemo-button%2FREADME.md -->","isInternal":false,"tokens":230,"sizeBytes":760},{"name":"README.md","path":"packages/create-vant-cli-app/generators/vue3/src/demo-button/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/create-vant-cli-app/generators/vue3/src/demo-button/README.md","title":"demo-button Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fcreate-vant-cli-app%2Fgenerators%2Fvue3%2Fsrc%2Fdemo-button%2FREADME.md -->","isInternal":false,"tokens":230,"sizeBytes":760},{"name":"README.md","path":"packages/vant-area-data/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant-area-data/README.md","title":"vant-area-data Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-area-data%2FREADME.md -->","isInternal":false,"tokens":337,"sizeBytes":1034},{"name":"README.md","path":"packages/vant-auto-import-resolver/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant-auto-import-resolver/README.md","title":"vant-auto-import-resolver Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-auto-import-resolver%2FREADME.md -->","isInternal":false,"tokens":1067,"sizeBytes":4206},{"name":"README.md","path":"packages/vant-cli/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant-cli/README.md","title":"vant-cli Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-cli%2FREADME.md -->","isInternal":false,"tokens":451,"sizeBytes":1604},{"name":"README.md","path":"packages/vant-compat/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant-compat/README.md","title":"vant-compat Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-compat%2FREADME.md -->","isInternal":false,"tokens":168,"sizeBytes":544},{"name":"README.md","path":"packages/vant-icons/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant-icons/README.md","title":"vant-icons Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-icons%2FREADME.md -->","isInternal":false,"tokens":101,"sizeBytes":308},{"name":"README.md","path":"packages/vant-popperjs/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant-popperjs/README.md","title":"vant-popperjs Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-popperjs%2FREADME.md -->","isInternal":false,"tokens":109,"sizeBytes":351},{"name":"README.md","path":"packages/vant-touch-emulator/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant-touch-emulator/README.md","title":"vant-touch-emulator Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-touch-emulator%2FREADME.md -->","isInternal":false,"tokens":256,"sizeBytes":802},{"name":"README.md","path":"packages/vant-use/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant-use/README.md","title":"vant-use Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant-use%2FREADME.md -->","isInternal":false,"tokens":65,"sizeBytes":194},{"name":"README.md","path":"packages/vant/src/action-bar/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/action-bar/README.md","title":"action-bar Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Faction-bar%2FREADME.md -->","isInternal":false,"tokens":1513,"sizeBytes":5646},{"name":"README.md","path":"packages/vant/src/action-sheet/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/action-sheet/README.md","title":"action-sheet Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Faction-sheet%2FREADME.md -->","isInternal":false,"tokens":2197,"sizeBytes":8264},{"name":"README.md","path":"packages/vant/src/address-edit/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/address-edit/README.md","title":"address-edit Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Faddress-edit%2FREADME.md -->","isInternal":false,"tokens":1425,"sizeBytes":5820},{"name":"README.md","path":"packages/vant/src/address-list/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/address-list/README.md","title":"address-list Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Faddress-list%2FREADME.md -->","isInternal":false,"tokens":1242,"sizeBytes":4879},{"name":"README.md","path":"packages/vant/src/area/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/area/README.md","title":"area Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Farea%2FREADME.md -->","isInternal":false,"tokens":1322,"sizeBytes":5133},{"name":"README.md","path":"packages/vant/src/back-top/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/back-top/README.md","title":"back-top Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fback-top%2FREADME.md -->","isInternal":false,"tokens":980,"sizeBytes":3831},{"name":"README.md","path":"packages/vant/src/badge/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/badge/README.md","title":"badge Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fbadge%2FREADME.md -->","isInternal":false,"tokens":1163,"sizeBytes":4067},{"name":"README.md","path":"packages/vant/src/barrage/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/barrage/README.md","title":"barrage Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fbarrage%2FREADME.md -->","isInternal":false,"tokens":1136,"sizeBytes":4045},{"name":"README.md","path":"packages/vant/src/button/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/button/README.md","title":"button Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fbutton%2FREADME.md -->","isInternal":false,"tokens":2271,"sizeBytes":8548},{"name":"README.md","path":"packages/vant/src/calendar/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/calendar/README.md","title":"calendar Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcalendar%2FREADME.md -->","isInternal":false,"tokens":3957,"sizeBytes":15139},{"name":"README.md","path":"packages/vant/src/card/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/card/README.md","title":"card Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcard%2FREADME.md -->","isInternal":false,"tokens":1067,"sizeBytes":4037},{"name":"README.md","path":"packages/vant/src/cascader/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/cascader/README.md","title":"cascader Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcascader%2FREADME.md -->","isInternal":false,"tokens":2093,"sizeBytes":7909},{"name":"README.md","path":"packages/vant/src/cell/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/cell/README.md","title":"cell Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcell%2FREADME.md -->","isInternal":false,"tokens":1939,"sizeBytes":7321},{"name":"README.md","path":"packages/vant/src/checkbox/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/checkbox/README.md","title":"checkbox Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcheckbox%2FREADME.md -->","isInternal":false,"tokens":2720,"sizeBytes":10859},{"name":"README.md","path":"packages/vant/src/circle/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/circle/README.md","title":"circle Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcircle%2FREADME.md -->","isInternal":false,"tokens":1229,"sizeBytes":4638},{"name":"README.md","path":"packages/vant/src/col/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/col/README.md","title":"col Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcol%2FREADME.md -->","isInternal":false,"tokens":1083,"sizeBytes":3560},{"name":"README.md","path":"packages/vant/src/collapse/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/collapse/README.md","title":"collapse Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcollapse%2FREADME.md -->","isInternal":false,"tokens":2089,"sizeBytes":8493},{"name":"README.md","path":"packages/vant/src/config-provider/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/config-provider/README.md","title":"config-provider Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fconfig-provider%2FREADME.md -->","isInternal":false,"tokens":2768,"sizeBytes":10876},{"name":"README.md","path":"packages/vant/src/contact-card/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/contact-card/README.md","title":"contact-card Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcontact-card%2FREADME.md -->","isInternal":false,"tokens":602,"sizeBytes":2321},{"name":"README.md","path":"packages/vant/src/contact-edit/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/contact-edit/README.md","title":"contact-edit Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcontact-edit%2FREADME.md -->","isInternal":false,"tokens":719,"sizeBytes":2956},{"name":"README.md","path":"packages/vant/src/contact-list/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/contact-list/README.md","title":"contact-list Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcontact-list%2FREADME.md -->","isInternal":false,"tokens":743,"sizeBytes":2936},{"name":"README.md","path":"packages/vant/src/count-down/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/count-down/README.md","title":"count-down Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcount-down%2FREADME.md -->","isInternal":false,"tokens":1301,"sizeBytes":5336},{"name":"README.md","path":"packages/vant/src/coupon-list/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/coupon-list/README.md","title":"coupon-list Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fcoupon-list%2FREADME.md -->","isInternal":false,"tokens":1710,"sizeBytes":6626},{"name":"README.md","path":"packages/vant/src/date-picker/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/date-picker/README.md","title":"date-picker Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fdate-picker%2FREADME.md -->","isInternal":false,"tokens":1536,"sizeBytes":5688},{"name":"README.md","path":"packages/vant/src/dialog/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/dialog/README.md","title":"dialog Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fdialog%2FREADME.md -->","isInternal":false,"tokens":2707,"sizeBytes":11000},{"name":"README.md","path":"packages/vant/src/divider/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/divider/README.md","title":"divider Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fdivider%2FREADME.md -->","isInternal":false,"tokens":663,"sizeBytes":2695},{"name":"README.md","path":"packages/vant/src/dropdown-menu/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/dropdown-menu/README.md","title":"dropdown-menu Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fdropdown-menu%2FREADME.md -->","isInternal":false,"tokens":2146,"sizeBytes":8664},{"name":"README.md","path":"packages/vant/src/empty/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/empty/README.md","title":"empty Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fempty%2FREADME.md -->","isInternal":false,"tokens":713,"sizeBytes":2861},{"name":"README.md","path":"packages/vant/src/field/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/field/README.md","title":"field Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ffield%2FREADME.md -->","isInternal":false,"tokens":3633,"sizeBytes":13875},{"name":"README.md","path":"packages/vant/src/floating-bubble/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/floating-bubble/README.md","title":"floating-bubble Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ffloating-bubble%2FREADME.md -->","isInternal":false,"tokens":904,"sizeBytes":3520},{"name":"README.md","path":"packages/vant/src/floating-panel/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/floating-panel/README.md","title":"floating-panel Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ffloating-panel%2FREADME.md -->","isInternal":false,"tokens":1305,"sizeBytes":5426},{"name":"README.md","path":"packages/vant/src/form/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/form/README.md","title":"form Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fform%2FREADME.md -->","isInternal":false,"tokens":3547,"sizeBytes":13861},{"name":"README.md","path":"packages/vant/src/grid/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/grid/README.md","title":"grid Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fgrid%2FREADME.md -->","isInternal":false,"tokens":1348,"sizeBytes":4902},{"name":"README.md","path":"packages/vant/src/highlight/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/highlight/README.md","title":"highlight Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fhighlight%2FREADME.md -->","isInternal":false,"tokens":723,"sizeBytes":3021},{"name":"README.md","path":"packages/vant/src/icon/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/icon/README.md","title":"icon Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ficon%2FREADME.md -->","isInternal":false,"tokens":756,"sizeBytes":2863},{"name":"README.md","path":"packages/vant/src/image-preview/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/image-preview/README.md","title":"image-preview Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fimage-preview%2FREADME.md -->","isInternal":false,"tokens":3142,"sizeBytes":12298},{"name":"README.md","path":"packages/vant/src/image/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/image/README.md","title":"image Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fimage%2FREADME.md -->","isInternal":false,"tokens":1328,"sizeBytes":5243},{"name":"README.md","path":"packages/vant/src/index-bar/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/index-bar/README.md","title":"index-bar Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Findex-bar%2FREADME.md -->","isInternal":false,"tokens":1080,"sizeBytes":4157},{"name":"README.md","path":"packages/vant/src/lazyload/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/lazyload/README.md","title":"lazyload Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Flazyload%2FREADME.md -->","isInternal":false,"tokens":514,"sizeBytes":1911},{"name":"README.md","path":"packages/vant/src/list/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/list/README.md","title":"list Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Flist%2FREADME.md -->","isInternal":false,"tokens":2019,"sizeBytes":8476},{"name":"README.md","path":"packages/vant/src/loading/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/loading/README.md","title":"loading Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Floading%2FREADME.md -->","isInternal":false,"tokens":683,"sizeBytes":2677},{"name":"README.md","path":"packages/vant/src/locale/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/locale/README.md","title":"locale Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Flocale%2FREADME.md -->","isInternal":false,"tokens":999,"sizeBytes":3650},{"name":"README.md","path":"packages/vant/src/nav-bar/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/nav-bar/README.md","title":"nav-bar Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fnav-bar%2FREADME.md -->","isInternal":false,"tokens":1040,"sizeBytes":4214},{"name":"README.md","path":"packages/vant/src/notice-bar/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/notice-bar/README.md","title":"notice-bar Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fnotice-bar%2FREADME.md -->","isInternal":false,"tokens":1160,"sizeBytes":4322},{"name":"README.md","path":"packages/vant/src/notify/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/notify/README.md","title":"notify Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fnotify%2FREADME.md -->","isInternal":false,"tokens":1497,"sizeBytes":5994},{"name":"README.md","path":"packages/vant/src/number-keyboard/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/number-keyboard/README.md","title":"number-keyboard Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fnumber-keyboard%2FREADME.md -->","isInternal":false,"tokens":1654,"sizeBytes":6262},{"name":"README.md","path":"packages/vant/src/overlay/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/overlay/README.md","title":"overlay Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Foverlay%2FREADME.md -->","isInternal":false,"tokens":687,"sizeBytes":2805},{"name":"README.md","path":"packages/vant/src/pagination/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/pagination/README.md","title":"pagination Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpagination%2FREADME.md -->","isInternal":false,"tokens":924,"sizeBytes":3485},{"name":"README.md","path":"packages/vant/src/password-input/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/password-input/README.md","title":"password-input Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpassword-input%2FREADME.md -->","isInternal":false,"tokens":1105,"sizeBytes":4274},{"name":"README.md","path":"packages/vant/src/picker-group/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/picker-group/README.md","title":"picker-group Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpicker-group%2FREADME.md -->","isInternal":false,"tokens":2129,"sizeBytes":8269},{"name":"README.md","path":"packages/vant/src/picker/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/picker/README.md","title":"picker Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpicker%2FREADME.md -->","isInternal":false,"tokens":3089,"sizeBytes":12031},{"name":"README.md","path":"packages/vant/src/popover/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/popover/README.md","title":"popover Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpopover%2FREADME.md -->","isInternal":false,"tokens":2403,"sizeBytes":9095},{"name":"README.md","path":"packages/vant/src/popup/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/popup/README.md","title":"popup Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpopup%2FREADME.md -->","isInternal":false,"tokens":2119,"sizeBytes":8104},{"name":"README.md","path":"packages/vant/src/progress/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/progress/README.md","title":"progress Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fprogress%2FREADME.md -->","isInternal":false,"tokens":810,"sizeBytes":3257},{"name":"README.md","path":"packages/vant/src/pull-refresh/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/pull-refresh/README.md","title":"pull-refresh Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fpull-refresh%2FREADME.md -->","isInternal":false,"tokens":1117,"sizeBytes":4418},{"name":"README.md","path":"packages/vant/src/radio/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/radio/README.md","title":"radio Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fradio%2FREADME.md -->","isInternal":false,"tokens":1766,"sizeBytes":6457},{"name":"README.md","path":"packages/vant/src/rate/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/rate/README.md","title":"rate Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Frate%2FREADME.md -->","isInternal":false,"tokens":1038,"sizeBytes":3873},{"name":"README.md","path":"packages/vant/src/rolling-text/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/rolling-text/README.md","title":"rolling-text Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Frolling-text%2FREADME.md -->","isInternal":false,"tokens":1433,"sizeBytes":5514},{"name":"README.md","path":"packages/vant/src/search/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/search/README.md","title":"search Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsearch%2FREADME.md -->","isInternal":false,"tokens":1771,"sizeBytes":7368},{"name":"README.md","path":"packages/vant/src/share-sheet/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/share-sheet/README.md","title":"share-sheet Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fshare-sheet%2FREADME.md -->","isInternal":false,"tokens":1880,"sizeBytes":7173},{"name":"README.md","path":"packages/vant/src/sidebar/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/sidebar/README.md","title":"sidebar Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsidebar%2FREADME.md -->","isInternal":false,"tokens":1099,"sizeBytes":4349},{"name":"README.md","path":"packages/vant/src/signature/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/signature/README.md","title":"signature Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsignature%2FREADME.md -->","isInternal":false,"tokens":1092,"sizeBytes":4308},{"name":"README.md","path":"packages/vant/src/skeleton-avatar/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/skeleton-avatar/README.md","title":"skeleton-avatar Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fskeleton-avatar%2FREADME.md -->","isInternal":false,"tokens":21,"sizeBytes":82},{"name":"README.md","path":"packages/vant/src/skeleton-image/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/skeleton-image/README.md","title":"skeleton-image Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fskeleton-image%2FREADME.md -->","isInternal":false,"tokens":21,"sizeBytes":80},{"name":"README.md","path":"packages/vant/src/skeleton-paragraph/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/skeleton-paragraph/README.md","title":"skeleton-paragraph Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fskeleton-paragraph%2FREADME.md -->","isInternal":false,"tokens":21,"sizeBytes":88},{"name":"README.md","path":"packages/vant/src/skeleton-title/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/skeleton-title/README.md","title":"skeleton-title Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fskeleton-title%2FREADME.md -->","isInternal":false,"tokens":23,"sizeBytes":84},{"name":"README.md","path":"packages/vant/src/skeleton/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/skeleton/README.md","title":"skeleton Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fskeleton%2FREADME.md -->","isInternal":false,"tokens":1202,"sizeBytes":4952},{"name":"README.md","path":"packages/vant/src/slider/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/slider/README.md","title":"slider Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fslider%2FREADME.md -->","isInternal":false,"tokens":1342,"sizeBytes":4942},{"name":"README.md","path":"packages/vant/src/space/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/space/README.md","title":"space Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fspace%2FREADME.md -->","isInternal":false,"tokens":882,"sizeBytes":3263},{"name":"README.md","path":"packages/vant/src/stepper/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/stepper/README.md","title":"stepper Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fstepper%2FREADME.md -->","isInternal":false,"tokens":1453,"sizeBytes":5460},{"name":"README.md","path":"packages/vant/src/steps/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/steps/README.md","title":"steps Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsteps%2FREADME.md -->","isInternal":false,"tokens":988,"sizeBytes":3409},{"name":"README.md","path":"packages/vant/src/sticky/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/sticky/README.md","title":"sticky Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsticky%2FREADME.md -->","isInternal":false,"tokens":640,"sizeBytes":2499},{"name":"README.md","path":"packages/vant/src/style/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/style/README.md","title":"style Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fstyle%2FREADME.md -->","isInternal":false,"tokens":559,"sizeBytes":2228},{"name":"README.md","path":"packages/vant/src/submit-bar/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/submit-bar/README.md","title":"submit-bar Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fsubmit-bar%2FREADME.md -->","isInternal":false,"tokens":1149,"sizeBytes":4353},{"name":"README.md","path":"packages/vant/src/swipe-cell/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/swipe-cell/README.md","title":"swipe-cell Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fswipe-cell%2FREADME.md -->","isInternal":false,"tokens":1161,"sizeBytes":4597},{"name":"README.md","path":"packages/vant/src/swipe/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/swipe/README.md","title":"swipe Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fswipe%2FREADME.md -->","isInternal":false,"tokens":1704,"sizeBytes":6161},{"name":"README.md","path":"packages/vant/src/switch/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/switch/README.md","title":"switch Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fswitch%2FREADME.md -->","isInternal":false,"tokens":1125,"sizeBytes":4231},{"name":"README.md","path":"packages/vant/src/tab/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/tab/README.md","title":"tab Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftab%2FREADME.md -->","isInternal":false,"tokens":3261,"sizeBytes":12363},{"name":"README.md","path":"packages/vant/src/tabbar/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/tabbar/README.md","title":"tabbar Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftabbar%2FREADME.md -->","isInternal":false,"tokens":1819,"sizeBytes":6513},{"name":"README.md","path":"packages/vant/src/tag/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/tag/README.md","title":"tag Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftag%2FREADME.md -->","isInternal":false,"tokens":1045,"sizeBytes":3720},{"name":"README.md","path":"packages/vant/src/text-ellipsis/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/text-ellipsis/README.md","title":"text-ellipsis Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftext-ellipsis%2FREADME.md -->","isInternal":false,"tokens":1524,"sizeBytes":6327},{"name":"README.md","path":"packages/vant/src/time-picker/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/time-picker/README.md","title":"time-picker Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftime-picker%2FREADME.md -->","isInternal":false,"tokens":2098,"sizeBytes":7947},{"name":"README.md","path":"packages/vant/src/toast/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/toast/README.md","title":"toast Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftoast%2FREADME.md -->","isInternal":false,"tokens":3095,"sizeBytes":12592},{"name":"README.md","path":"packages/vant/src/tree-select/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/tree-select/README.md","title":"tree-select Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Ftree-select%2FREADME.md -->","isInternal":false,"tokens":1663,"sizeBytes":6324},{"name":"README.md","path":"packages/vant/src/uploader/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/uploader/README.md","title":"uploader Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fuploader%2FREADME.md -->","isInternal":false,"tokens":3379,"sizeBytes":13251},{"name":"README.md","path":"packages/vant/src/watermark/README.md","rawUrl":"https://raw.githubusercontent.com/youzan/vant/HEAD/packages/vant/src/watermark/README.md","title":"watermark Documentation","category":"plugin-manifest","format":"markdown","content":"<!-- Skill available on-demand via /api/skills/youzan/vant?path=packages%2Fvant%2Fsrc%2Fwatermark%2FREADME.md -->","isInternal":false,"tokens":926,"sizeBytes":3566}],"systemPromptSnippet":"<yakaai_skills repo=\"youzan/vant\">\n<!-- File: .agents/skills/rstack-cli-docs/SKILL.md (Tokens: ~301 | Category: anthropic-skill) -->\n---\nname: rstack-cli-docs\ndescription: Consult installed, version-matched Rstack docs only for user-facing `rs` command behavior, `rstack.config.*` semantics, or public `rstack` APIs. Do not use for purely internal implementation, tests, performance, or repository maintenance.\n---\n\n# Rstack CLI Docs\n\nRstack CLI is the `rstack` package, exposed through the `rs` binaries. It provides one CLI, one config file, and a consistent workflow for the Rstack JavaScript toolchain.\n\nIt covers web app, library, docs, test, lint, formatting, Git hook, and staged-file workflows.\n\n## Read installed docs when this skill applies\n\nWhen this skill applies, find and read the relevant Markdown documentation shipped with the installed `rstack` package.\n\nModel knowledge can be outdated; the installed documentation is the source of truth for the project's Rstack version.\n\n1. Start with `node_modules/rstack/docs/llms.txt`, then read only the linked pages relevant to the task before proposing or making changes.\n\n2. For exact CLI flags and behavior, also run `rs -h` or `rs <command> -h` when supported.\n\nIf the bundled docs are not available at that path, locate the installed `rstack` package.\n\nIf they are still unavailable, verify that `rstack` is installed, and use CLI help plus the online [Rstack documentation](https://rstack.rs/) as a fallback.\n\n<!-- File: packages/create-vant-cli-app/generators/vue2/docs/home.md (Tokens: ~45 | Category: anthropic-skill) -->\n# 介绍\n\n### 关于\n\n这是一段组件库的介绍\n\n### 特性\n\n- 特性一\n- 特性二\n- 特性三\n\n<!-- File: packages/create-vant-cli-app/generators/vue2/docs/quickstart.md (Tokens: ~65 | Category: anthropic-skill) -->\n# 快速上手\n\n### 安装\n\n```bash\n# 通过 npm\nnpm i <%= name %>\n\n# 通过 yarn\nyarn add <%= name %>\n\n# 通过 pnpm\npnpm add <%= name %>\n\n# 通过 bun\nbun add <%= name %>\n```\n\n<!-- File: packages/create-vant-cli-app/generators/vue3/docs/home.md (Tokens: ~45 | Category: anthropic-skill) -->\n# 介绍\n\n### 关于\n\n这是一段组件库的介绍\n\n### 特性\n\n- 特性一\n- 特性二\n- 特性三\n\n<!-- File: packages/create-vant-cli-app/generators/vue3/docs/quickstart.md (Tokens: ~65 | Category: anthropic-skill) -->\n# 快速上手\n\n### 安装\n\n```bash\n# 通过 npm\nnpm i <%= name %>\n\n# 通过 yarn\nyarn add <%= name %>\n\n# 通过 pnpm\npnpm add <%= name %>\n\n# 通过 bun\nbun add <%= name %>\n```\n\n<!-- File: packages/vant-cli/docs/commands.md (Tokens: ~281 | Category: anthropic-skill) -->\n# Commands\n\nYou can add built-in commands to `npm scripts` to use it.\n\n```json\n// package.json\n{\n  \"scripts\": {\n    \"dev\": \"vant-cli dev\",\n    \"test\": \"vant-cli test\",\n    \"release\": \"vant-cli release\",\n    \"build-site\": \"vant-cli build-site\"\n  }\n}\n```\n\nAdditionally, [npx](https://github.com/npm/npx) can used to be run those commands.\n\n```bash\nnpx vant-cli dev\n```\n\n### dev\n\nStart local dev server for browsering components and demo.\n\n### build\n\nBuild Vue component library.\n\nFiles will be output to `es` and `lib` directory. More details [directory structure](https://github.com/vant-ui/vant/tree/main/packages/vant-cli/docs/directory.md)\n\nPlease add the followed config to `package.json` when publish to npm.\n\n```json\n// package.json\n{\n  \"main\": \"lib/index.js\",\n  \"module\": \"es/index.js\",\n  \"files\": [\"es\", \"lib\"]\n}\n```\n\n### build-site\n\nBuild documentation website. Files will be output to `site` directory.\n\n### release\n\nPublish to npm. `build` will be automatically execute when run `release`.\n\n### commit-lint\n\nValidate the format of commit message. Need `husky` to do this.\n\n<!-- File: packages/vant-cli/docs/commands.zh-CN.md (Tokens: ~433 | Category: anthropic-skill) -->\n# 命令\n\nVant CLI 中内置了一系列的命令，可以将命令添加到 npm scripts 中进行使用。\n\n```json\n// package.json\n{\n  \"scripts\": {\n    \"dev\": \"vant-cli dev\",\n    \"test\": \"vant-cli test\",\n    \"release\": \"vant-cli release\",\n    \"build-site\": \"vant-cli build-site\"\n  }\n}\n```\n\n也可以通过 npm 自带的 [npx](https://github.com/npm/npx) 直接执行某个命令：\n\n```bash\nnpx vant-cli dev\n```\n\n### dev\n\n运行本地开发环境。\n\n运行 dev 命令时，Vant CLI 会通过启动一个本地服务器，用于在开发过程中对文档和示例进行预览。\n\n### build\n\n构建组件库。\n\n运行 build 命令会在 `es` 和 `lib` 目录下生成可用于生产环境的组件代码，详见 [目录结构](https://github.com/vant-ui/vant/tree/main/packages/vant-cli/docs/directory.zh-CN.md)。\n\n发布 npm 时，请将以下配置加入到 `package.json` 中，使 npm 包能被正确识别:\n\n```json\n// package.json\n{\n  \"main\": \"lib/index.js\",\n  \"module\": \"es/index.js\",\n  \"files\": [\"es\", \"lib\"]\n}\n```\n\n### build-site\n\n构建文档站点，在 `site` 目录生成可用于生产环境的文档站点代码。\n\n### release\n\n发布组件库，发布前会自动执行 build 命令，并按照流程发布 npm 包。\n\n### commit-lint\n\n校验 commit message 的格式是否符合规范，需要配合 `husky` 在提交 commit 时触发。\n\n<!-- File: packages/vant-cli/docs/config.md (Tokens: ~2204 | Category: anthropic-skill) -->\n# Config\n\n- [Config](#----)\n  - [rsbuild.config.mjs](#rsbuildconfigmjs)\n  - [vite.config.mjs](#viteconfigmjs)\n  - [vant.config.mjs](#vantconfigmjs)\n    - [name](#name)\n    - [build.css.base](#buildcssbase)\n    - [build.css.preprocessor](#buildcsspreprocessor)\n    - [build.site.publicPath](#buildsitepublicpath)\n    - [build.srcDir](#buildsrcdir)\n    - [build.namedExport](#buildnamedexport)\n    - [build.packageManager](#buildpackagemanager)\n    - [site.title](#sitetitle)\n    - [site.logo](#sitelogo)\n    - [site.description](#sitedescription)\n    - [site.nav](#sitenav)\n    - [site.versions](#siteversions)\n    - [site.baiduAnalytics](#sitebaiduanalytics)\n    - [site.hideSimulator](#sitehidesimulator)\n    - [site.simulator.url](#sitesimulatorurl)\n    - [site.htmlMeta](#sitehtmlmeta)\n    - [site.enableVConsole](#siteenablevconsole)\n  - [PostCSS](#postcss)\n    - [Default Config](#-----1)\n  - [browserslist](#browserslist)\n\n## rsbuild.config.mjs\n\nVant CLI uses [Rsbuild](https://github.com/web-infra-dev/rsbuild) to build the documentation site. You can create an Rsbuild configuration file in the same directory as `vant.config.mjs`. The contents of the file will be automatically read by Vant CLI.\n\n```js\n// rsbuild.config.mjs or rsbuild.config.ts\nexport default {\n  plugins: [\n    // Configure Rsbuild plugins\n  ],\n  dev: {\n    // Options related to local development\n  },\n  html: {\n    // Options related to HTML generation\n  },\n  // Other options\n};\n```\n\n> Please refer to [Configure Rsbuild](https://rsbuild.dev/guide/basic/configure-rsbuild) for more information.\n\n## vite.config.mjs\n\nVant Cli uses Vite to build component library code. You can create a Vite configuration file in the same directory as `vant.config.mjs`. In this file, you can add any Vite configuration.\n\n> Please refer to [Vite Configuration](https://vitejs.dev/config/) to learn more.\n\n## vant.config.mjs\n\n`vant.config.mjs` includes bundle and documentation site config. Please create this file and place it in your project root directory. Here is a basic example:\n\n```js\nexport default {\n  // component library name\n  name: 'demo-ui',\n  // bundle config\n  build: {\n    site: {\n      publicPath: '/demo-ui/',\n    },\n  },\n  // documentation site config\n  site: {\n    // title\n    title: 'Demo UI',\n    // logo\n    logo: 'https://fastly.jsdelivr.net/npm/@vant/assets/logo.png',\n    // description\n    description: '示例组件库',\n    // left nav\n    nav: [\n      {\n        title: 'example',\n        items: [\n          {\n            path: 'home',\n            title: 'home',\n          },\n        ],\n      },\n      {\n        title: 'basic components',\n        items: [\n          {\n            path: 'my-button',\n            title: 'MyButton',\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n### name\n\n- Type: `string`\n- Default: `''`\n\nComponent library name. kebab-case recommended.\n\n### build.css.base\n\n- Type: `string`\n- Default: `'style/base.less'`\n\nGlobal style file path. Support absolute path and relative path both.\n\nNote: relative path is calculated based on `src`.\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      base: 'style/global.scss',\n    },\n  },\n};\n```\n\n### build.css.preprocessor\n\n- Type: `string`\n- Default: `'less'`\n\nCSS preprocessor config, support `less` and `sass`. Use `less` by default.\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      preprocessor: 'sass',\n    },\n  },\n};\n```\n\n### build.css.removeSourceFile\n\n- Type: `boolean`\n- Default: `'false'`\n\nWhether to remove the source style files after build.\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      removeSourceFile: true,\n    },\n  },\n};\n```\n\n### build.site.publicPath\n\n- Type: `string`\n- Default: `/`\n\nEquivalent to vite `build.outDir`.\n\nGenerally, documentation site will be deployed to subpath of domain. For example: `https://my.github.io/demo-ui/`, `publicPath` should be `/demo-ui/`.\n\n```js\nmodule.exports = {\n  build: {\n    site: {\n      publicPath: '/demo-ui/',\n    },\n  },\n};\n```\n\n### build.srcDir\n\n- Type: `string`\n- Default: `src`\n\n```js\nmodule.exports = {\n  build: {\n    srcDir: 'myDir',\n  },\n};\n```\n\n### build.namedExport\n\n- Type: `boolean`\n- Default: `false`\n\nShould export components by Named Export.\n\nWhen set to `false`, `export default from 'xxx'` will be used to export module.\n\nWhen set to `true`, `export * from 'xxx'` will be used to export all modules and type definition.\n\n### build.configureVite\n\n- Type: `(config: InlineConfig): InlineConfig | undefined`\n- Default: `undefined`\n\nCustom [vite config](https://vitejs.dev/config/), requires `@vant/cli>= 4.0.0`.\n\n```js\nmodule.exports = {\n  build: {\n    configureVite(config) {\n      config.server.port = 3000;\n      return config;\n    },\n  },\n};\n```\n\nIf you need to configure some vite plugins, please create a `vite.config.ts` file in the same directory of `vant.config.mjs`, in which you can add any vite configuration (this feature requires @vant/cli 5.1.0).\n\n### build.packageManager\n\n- Type: `'npm' | 'yarn' | 'pnpm' | 'bun'`\n- Default: `yarn`\n\n`npm` package manager.\n\n### build.bundleOptions\n\n- Type: `BundleOptions[]`\n\nSpecify the format of the bundled output.\n\nThe type of `BundleOptions`:\n\n```ts\ntype BundleOption = {\n  // Whether to minify code (Tips: es format output can't be minified by vite)\n  minify?: boolean;\n  // Formats, can be set to 'es' | 'cjs' | 'umd' | 'iife'\n  formats: LibraryFormats[];\n  // Dependencies to external (Vue is externaled by default)\n  external?: string[];\n};\n```\n\nDefault value：\n\n```ts\nconst DEFAULT_OPTIONS: BundleOption[] = [\n  {\n    minify: false,\n    formats: ['umd'],\n  },\n  {\n    minify: true,\n    formats: ['umd'],\n  },\n  {\n    minify: false,\n    formats: ['es', 'cjs'],\n    external: allDependencies,\n  },\n];\n```\n\n### site.title\n\n- Type: `string`\n- Default: `''`\n\nDocumentation site title.\n\n### site.logo\n\n- Type: `string`\n- Default: `''`\n\nDocumentation site logo.\n\n### site.description\n\n- Type: `string`\n- Default: `''`\n\nDocumentation site description.\n\n### site.nav\n\n- Type: `object[]`\n- Default: `undefined`\n\nDocumentation site left nav. Each item of `nav` means a navigation group.\n\n```js\nmodule.exports = {\n  site: {\n    nav: [\n      {\n        // group title\n        title: 'Development Guide',\n        // nav items\n        items: [\n          {\n            // nav router\n            path: 'home',\n            // nav title\n            title: 'title',\n            // should hide phone emulator(false by default)\n            hideSimulator: true,\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n### site.versions\n\n- Type: `object[]`\n- Default: `undefined`\n\nDocumentation site muti-version config.\n\n```js\nmodule.exports = {\n  site: {\n    versions: [\n      {\n        label: 'v1',\n        link: '/v1/',\n      },\n    ],\n  },\n};\n```\n\n### site.baiduAnalytics\n\n- Type: `object`\n- Default: `undefined`\n\nDocumentation site baidu analysis config. The script of Baidu Statistic will be automatically loaded when build documentation website.\n\n```js\nmodule.exports = {\n  site: {\n    baiduAnalytics: {\n      // 打开百度统计 ->『管理』->『代码获取』\n      // find the followed URL: \"https://hm.baidu.com/hm.js?xxxxx\"\n      // add `xxxxx` in the seed\n      seed: 'xxxxx',\n    },\n  },\n};\n```\n\n### site.hideSimulator\n\n- Type: `boolean`\n- Default: `false`\n\nShould hide phone emulator, `false` by default.\n\n### site.simulator.url\n\n- Type: `string`\n- Default: -\n\nCustomize iframe URL.\n\n### site.htmlMeta\n\n- Type: `Record<string, string>`\n- Default: `undefined`\n\nCustomize HTML meta tag, key means name, value means content.\n\n### site.headHtml\n\n- Type: `string`\n- Default: `undefined`\n\nInsert a custom HTML content in the `<head>` tag.\n\n### site.enableVConsole\n\n- Type: `boolean`\n- Default: `false`\n\nWhether to enable [vConsole](https://github.com/Tencent/vConsole) debugging in dev, usually used for mobile debugging.\n\n## PostCSS\n\nPostCSS can be configured through the `postcss.config.js` file in the root directory.\n\n### Default Config\n\nPostCSS default config:\n\n```js\nmodule.exports = {\n  plugins: {\n    autoprefixer: {},\n  },\n};\n```\n\n## browserslist\n\nAdd browserslist field to `package.json` file is recommended. It's used by `autoprefixer` to determine the version of target browser, ensuring compatibility of compiled code.\n\nYou can add the following config for mobile:\n\n```json\n{\n  \"browserslist\": [\"Chrome >= 51\", \"iOS >= 10\"]\n}\n```\n\n<!-- File: packages/vant-cli/docs/config.zh-CN.md (Tokens: ~2476 | Category: anthropic-skill) -->\n# 配置指南\n\n- [配置指南](#----)\n  - [rsbuild.config.mjs](#rsbuildconfigmjs)\n  - [vite.config.mjs](#viteconfigmjs)\n  - [vant.config.mjs](#vantconfigmjs)\n    - [name](#name)\n    - [build.css.base](#buildcssbase)\n    - [build.css.preprocessor](#buildcsspreprocessor)\n    - [build.site.publicPath](#buildsitepublicpath)\n    - [build.srcDir](#buildsrcdir)\n    - [build.namedExport](#buildnamedexport)\n    - [build.packageManager](#buildpackagemanager)\n    - [site.title](#sitetitle)\n    - [site.logo](#sitelogo)\n    - [site.description](#sitedescription)\n    - [site.nav](#sitenav)\n    - [site.versions](#siteversions)\n    - [site.baiduAnalytics](#sitebaiduanalytics)\n    - [site.hideSimulator](#sitehidesimulator)\n    - [site.simulator.url](#sitesimulatorurl)\n    - [site.htmlMeta](#sitehtmlmeta)\n    - [site.enableVConsole](#siteenablevconsole)\n  - [PostCSS](#postcss)\n    - [默认配置](#-----1)\n  - [browserslist](#browserslist)\n\n## rsbuild.config.mjs\n\nVant CLI 使用 [Rsbuild](https://github.com/web-infra-dev/rsbuild) 来构建文档站点，你可以在 `vant.config.mjs` 的同级目录下创建 Rsbuild 的配置文件，文件内容会被 Vant CLI 自动读取。\n\n```js\n// rsbuild.config.mjs 或 rsbuild.config.ts\nexport default {\n  plugins: [\n    // 配置 Rsbuild 插件\n  ],\n  dev: {\n    // 与本地开发有关的选项\n  },\n  html: {\n    // 与 HTML 生成有关的选项\n  },\n  // 其他选项\n};\n```\n\n> 请参考 [配置 Rsbuild](https://rsbuild.dev/zh/guide/basic/configure-rsbuild) 了解更多。\n\n## vite.config.mjs\n\nVant Cli 使用 Vite 来构建组件库代码，你可以在 `vant.config.mjs` 的同级目录下创建 Vite 的配置文件，在该文件中你可以添加任意的 Vite 配置。\n\n> 请参考 [Vite 配置](https://vitejs.dev/config/) 了解更多。\n\n## vant.config.mjs\n\n`vant.config.mjs` 中包含了 `vant-cli` 的打包配置和文档站点配置，请创建此文件并置于项目根目录下。下面是一份基本配置的示例：\n\n```js\nexport default {\n  // 组件库名称\n  name: 'demo-ui',\n  // 构建配置\n  build: {\n    site: {\n      publicPath: '/demo-ui/',\n    },\n  },\n  // 文档站点配置\n  site: {\n    // 标题\n    title: 'Demo UI',\n    // 图标\n    logo: 'https://fastly.jsdelivr.net/npm/@vant/assets/logo.png',\n    // 描述\n    description: '示例组件库',\n    // 左侧导航\n    nav: [\n      {\n        title: '开发指南',\n        items: [\n          {\n            path: 'home',\n            title: '介绍',\n          },\n        ],\n      },\n      {\n        title: '基础组件',\n        items: [\n          {\n            path: 'my-button',\n            title: 'MyButton 按钮',\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n### name\n\n- Type: `string`\n- Default: `''`\n\n组件库名称，建议使用中划线分割，如 `demo-ui`。\n\n### build.css.base\n\n- Type: `string`\n- Default: `'style/base.less'`\n\n全局样式文件的路径，可以为相对路径或绝对路径。\n\n相对路径基于 `src` 目录计算。\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      base: 'style/global.scss',\n    },\n  },\n};\n```\n\n### build.css.preprocessor\n\n- Type: `string`\n- Default: `'less'`\n\nCSS 预处理器配置，目前支持 `less` 和 `sass` 两种预处理器，默认使用 `less`。\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      preprocessor: 'sass',\n    },\n  },\n};\n```\n\n### build.css.removeSourceFile\n\n- Type: `boolean`\n- Default: `'false'`\n\n是否在构建后移除样式文件的源代码。\n\n```js\nmodule.exports = {\n  build: {\n    css: {\n      removeSourceFile: true,\n    },\n  },\n};\n```\n\n### build.site.publicPath\n\n- Type: `string`\n- Default: `/`\n\n等价于 vite 的 `build.outDir` 配置。\n\n一般来说，我们的文档网站会部署在一个域名的子路径上，如 `https://my.github.io/demo-ui/`，这时候 `publicPath` 需要跟子路径保持一致，即 `/demo-ui/`。\n\n```js\nmodule.exports = {\n  build: {\n    site: {\n      publicPath: '/demo-ui/',\n    },\n  },\n};\n```\n\n### build.srcDir\n\n- Type: `string`\n- Default: `src`\n\n```js\nmodule.exports = {\n  build: {\n    srcDir: 'myDir',\n  },\n};\n```\n\n### build.namedExport\n\n- Type: `boolean`\n- Default: `false`\n\n是否通过 Named Export 对组件进行导出。\n\n未开启此选项时，会通过 `export default from 'xxx'` 导出组件内部的默认模块。\n\n开启此选项后，会通过 `export * from 'xxx'` 导出组件内部的所有模块、类型定义。\n\n### build.packageManager\n\n- Type: `'npm' | 'yarn' | 'pnpm' | 'bun'`\n- Default: `yarn`\n\n指定使用的包管理器。\n\n### build.bundleOptions\n\n- Type: `BundleOptions[]`\n\n指定打包后产物的格式。\n\n产物格式由三个配置项控制：\n\n```ts\ntype BundleOption = {\n  // 是否压缩代码（注意 es 产物无法被 vite 压缩）\n  minify?: boolean;\n  // 产物类型，可选值为 'es' | 'cjs' | 'umd' | 'iife'\n  formats: LibraryFormats[];\n  // 需要 external 的依赖（Vue 默认会被 external）\n  external?: string[];\n};\n```\n\n该选项的默认值为：\n\n```ts\nconst DEFAULT_OPTIONS: BundleOption[] = [\n  {\n    minify: false,\n    formats: ['umd'],\n  },\n  {\n    minify: true,\n    formats: ['umd'],\n  },\n  {\n    minify: false,\n    formats: ['es', 'cjs'],\n    external: allDependencies,\n  },\n];\n```\n\n### site.title\n\n- Type: `string`\n- Default: `''`\n\n文档站点的标题。\n\n### site.logo\n\n- Type: `string`\n- Default: `''`\n\n文档站点的 Logo。\n\n### site.description\n\n- Type: `string`\n- Default: `''`\n\n标题下方的描述文案。\n\n### site.nav\n\n- Type: `object[]`\n- Default: `undefined`\n\n文档站点的左侧导航，数组中的每个对象表示一个导航分组。\n\n```js\nmodule.exports = {\n  site: {\n    nav: [\n      {\n        // 分组标题\n        title: '开发指南',\n        // 导航项\n        items: [\n          {\n            // 导航项路由\n            path: 'home',\n            // 导航项文案\n            title: '介绍',\n            // 是否隐藏当前页右侧的手机模拟器（默认不隐藏）\n            hideSimulator: true,\n          },\n        ],\n      },\n    ],\n  },\n};\n```\n\n### site.versions\n\n- Type: `object[]`\n- Default: `undefined`\n\n文档站点多版本配置，当组件库存在多个版本的文档时，可以通过`site.versions`在顶部导航配置一个版本切换按钮。\n\n```js\nmodule.exports = {\n  site: {\n    versions: [\n      {\n        label: 'v1',\n        link: '/v1/',\n      },\n    ],\n  },\n};\n```\n\n### site.baiduAnalytics\n\n- Type: `object`\n- Default: `undefined`\n\n文档网站的百度统计配置，添加这项配置后，会自动在构建文档网站时加载百度统计的脚本。\n\n```js\nmodule.exports = {\n  site: {\n    baiduAnalytics: {\n      // 打开百度统计 ->『管理』->『代码获取』\n      // 找到下面这串 URL: \"https://hm.baidu.com/hm.js?xxxxx\"\n      // 将 `xxxxx` 填写在 seed 中即可\n      seed: 'xxxxx',\n    },\n  },\n};\n```\n\n### site.hideSimulator\n\n- Type: `boolean`\n- Default: `false`\n\n是否隐藏所有页面右侧的手机模拟器，默认不隐藏\n\n### site.simulator.url\n\n- Type: `string`\n- Default: -\n\n自定义手机模拟器的 iframe URL 地址。\n\n### site.htmlMeta\n\n- Type: `Record<string, string>`\n- Default: `undefined`\n\n配置 HTML 中的 meta 标签，对象的 key 为 name，value 为 content。\n\n### site.headHtml\n\n- Type: `string`\n- Default: `undefined`\n\n在 `<head>` 标签中插入一段自定义的 HTML 内容。\n\n### site.enableVConsole\n\n- Type: `boolean`\n- Default: `false`\n\n是否在 dev 时开启 [vConsole](https://github.com/Tencent/vConsole) 调试，用于移动端 debug。\n\n## PostCSS\n\n通过根目录下的`postcss.config.js`文件可以对 PostCSS 进行配置。\n\n### 默认配置\n\n`vant-cli` 中默认的 PostCSS 配置如下：\n\n```js\nmodule.exports = {\n  plugins: {\n    autoprefixer: {},\n  },\n};\n```\n\n## browserslist\n\n推荐在 `package.json` 文件里添加 browserslist 字段，这个值会被 `autoprefixer` 用来确定目标浏览器的版本，保证编译后代码的兼容性。\n\n在移动端浏览器中使用，可以添加如下配置：\n\n```json\n{\n  \"browserslist\": [\"Chrome >= 51\", \"iOS >= 10\"]\n}\n```\n\n<!-- File: packages/vant-cli/docs/directory.md (Tokens: ~859 | Category: anthropic-skill) -->\n# Directory Structure\n\n## Source Code Directory\n\nThe basic directory structure of the component library based on Vant CLI is as follows:\n\n```\nproject\n├─ src                # component library source code\n│   ├─ button        # button source code\n│   └─ dialog        # dialog source code\n│\n├─ docs               # static doc directory\n│   ├─ home.md       # documentation site home\n│   └─ changelog.md  # changelog\n│\n├─ vant.config.mjs    # Vant CLI config file\n├─ package.json\n└─ README.md\n```\n\nThe directories for individual components are as follows:\n\n```\nbutton\n├─ demo             # component demo directory\n│   └─ index.vue   # component demo\n├─ index.vue        # component source code\n└─ README.md        # component doc\n```\n\nWhen writing SFC, the corresponding JS and CSS files will be generated after bundle process, and the CSS file will be automatically imported into the JS file.\n\nIf you need to separate JS and CSS to implement functions such as theme customization, you need to use separate JS and CSS files when writing code, as shown below:\n\n```\nbutton\n├─ demo             # component demo directory\n│   └─ index.vue   # component demo entry\n├─ index.js         # component entry\n├─ index.less       # component style，support scss and less\n└─ README.md        # component doc\n```\n\nWhen using this directory structure, the developer of the component library needs to import the JS and CSS files respectively.\n\nTheme customization can be achieved by importing style source files (less or scss) and modifying style variables.\n\n## Output Directory\n\nRunning the `build` command will generate production code in the `es` and `lib` directories with the following structure:\n\n```\nproject\n├─ es                   # ESM Directory\n│   ├─ button          # button component directory\n│   ├─ dialog          # dialog component directory\n│   └─ index.js        # All component files entry (ESModule)\n│\n└─ lib                  # Commonjs directory\n    ├─ button           # button component library\n    ├─ dialog           # dialog component library\n    ├─ index.js         # All component files entry (Commonjs)\n    ├─ index.less       # All component styles entry(Uncompiled)\n    ├─ index.css        # Bundle component styles for CDN\n    ├─ [name].js        # Bundle script for UMD\n    ├─ [name].es.js     # Bundle script for ESM\n    ├─ [name].min.js    # Bundle and minified script for UMD\n    └─ [name].es.min.js # Bundle and minified script for ESM\n```\n\nThe compiled directory of a single component is as follows:\n\n```\nbutton\n├─ index.js         # Bundle script file\n├─ index.css        # Bundle CSS file\n├─ index.less       # Uncompiled CSS file, less or scss\n└─ style            # Style entry on demand directory\n    ├─ index.js     # Compiled styles on demand\n    └─ less.js      # Uncompiled styles on demand, for theme customization\n```\n\n### Generate type definition\n\nWhen the component library is written in TS and the `tsconfig.declaration.json` file exists in the root directory, Vant CLI will automatically generate the `.d.ts` type declaration file.\n\nThe format of `tsconfig.declaration.json` is as follows:\n\n```json\n{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"declaration\": true,\n    \"declarationDir\": \".\",\n    \"emitDeclarationOnly\": true\n  },\n  \"include\": [\"es/**/*\", \"lib/**/*\"],\n  \"exclude\": [\"node_modules\", \"**/test/**/*\", \"**/demo/**/*\"]\n}\n```\n\nPlease add the `typings` field in `package.json` after generate type declaration:\n\n```json\n{\n  \"typings\": \"lib/index.d.ts\"\n}\n```\n\n<!-- File: packages/vant-cli/docs/directory.zh-CN.md (Tokens: ~1144 | Category: anthropic-skill) -->\n# 目录结构\n\n## 源代码目录\n\n基于 Vant CLI 搭建的组件库的基本目录结构如下所示：\n\n```\nproject\n├─ src                # 组件源代码\n│   ├─ button        # button 组件源代码\n│   └─ dialog        # dialog 组件源代码\n│\n├─ docs               # 静态文档目录\n│   ├─ home.md       # 文档首页\n│   └─ changelog.md  # 更新日志\n│\n├─ vant.config.mjs    # Vant CLI 配置文件\n├─ package.json\n└─ README.md\n```\n\n单个组件的目录如下：\n\n```\nbutton\n├─ demo             # 示例目录\n│   └─ index.vue   # 组件示例\n├─ index.vue        # 组件源码\n└─ README.md        # 组件文档\n```\n\n使用 .vue 文件编写组件时，编译后会生成对应的 JS 和 CSS 文件，且 JS 文件中会自动引入 CSS 文件。\n\n如果需要将 JS 和 CSS 解耦，实现主题定制等功能，在编写代码时就要使用独立的 JS 和 CSS 文件，如下所示：\n\n```\nbutton\n├─ demo             # 组件示例\n│   └─ index.vue   # 组件示例入口\n├─ index.js         # 组件入口\n├─ index.less       # 组件样式，可以为 less 或 scss\n└─ README.md        # 组件文档\n```\n\n采用这种目录结构时，组件的使用者需要分别引入 JS 和 CSS 文件。\n\n通过引入样式源文件（less 或 scss）并修改样式变量，可以实现主题定制功能。\n\n## 构建结果目录\n\n运行 build 命令会在 `es` 和 `lib` 目录下生成可用于生产环境的组件代码，结构如下：\n\n```\nproject\n├─ es                   # es 目录下的代码遵循 esmodule 规范\n│   ├─ button          # button 组件编译后的代码目录\n│   ├─ dialog          # dialog 组件编译后的代码目录\n│   └─ index.js        # 引入所有组件的入口 (ESModule)\n│\n└─ lib                  # lib 目录下的代码遵循 commonjs 规范\n    ├─ button           # button 组件编译后的代码目录\n    ├─ dialog           # dialog 组件编译后的代码目录\n    ├─ index.js         # 引入所有组件的入口\n    ├─ index.less       # 所有组件未编译的样式入口\n    ├─ index.css        # 打包后的组件样式，用于 CDN 引入\n    ├─ [name].js        # 打包后的组件脚本，UMD 格式\n    ├─ [name].es.js     # 打包后的组件脚本，ESModule 格式\n    ├─ [name].min.js    # 打包和压缩后的组件脚本，UMD 格式\n    └─ [name].es.min.js # 打包和压缩后的组件脚本，ESModule 格式\n```\n\n单个组件编译后的目录如下：\n\n```\nbutton\n├─ index.js         # 组件编译后的 JS 文件\n├─ index.css        # 组件编译后的 CSS 文件\n├─ index.less       # 组件编译前的 CSS 文件，可以为 less 或 scss\n└─ style            # 按需引入样式的入口\n    ├─ index.js     # 按需引入编译后的样式\n    └─ less.js      # 按需引入未编译的样式，可用于主题定制\n```\n\n### 生成类型声明\n\n当组件库使用 TS 编写，且根目录下存在 `tsconfig.declaration.json` 文件，Vant CLI 会自动生成 `.d.ts` 类型声明文件。\n\n`tsconfig.declaration.json` 的参考格式如下：\n\n```json\n{\n  \"extends\": \"./tsconfig.json\",\n  \"compilerOptions\": {\n    \"declaration\": true,\n    \"declarationDir\": \".\",\n    \"emitDeclarationOnly\": true\n  },\n  \"include\": [\"es/**/*\", \"lib/**/*\"],\n  \"exclude\": [\"node_modules\", \"**/test/**/*\", \"**/demo/**/*\"]\n}\n```\n\n成功生成类型声明后，请在 `package.json` 中添加类型入口声明：\n\n```json\n{\n  \"typings\": \"lib/index.d.ts\"\n}\n```\n\n<!-- File: packages/vant/docs/markdown/advanced-usage.en-US.md (Tokens: ~1017 | Category: anthropic-skill) -->\n# Advanced Usage\n\n### Intro\n\nThrough this chapter, you can learn about some advanced usages of Vant.\n\n## Component Usage\n\n### Component Registration\n\nVant supports multiple ways to register components:\n\n#### Global Registration\n\n```js\nimport { Button } from 'vant';\nimport { createApp } from 'vue';\n\nconst app = createApp();\n\n// Method 1. via app.use\napp.use(Button);\n\n// Method 2. Register via app.component\napp.component(Button.name, Button);\n```\n\n#### Full Registration\n\nYou can also globally register all Vant components at once:\n\n```js\nimport Vant from 'vant';\nimport { createApp } from 'vue';\n\nconst app = createApp();\n\napp.use(Vant);\n\n// The Lazyload directive needs to be registered separately\napp.use(vant.Lazyload);\n```\n\n> Note: Registering all components will introduce the code of all components, leading to larger bundle size.\n\n#### Local Registration\n\n```js\nimport { Button } from 'vant';\n\nexport default {\n  components: {\n    [Button.name]: Button,\n  },\n};\n```\n\n> For more information, please refer to [Vue.js - Component Registration](https://vuejs.org/guide/components/registration.html)。\n\n#### \\<script setup\\>\n\nVant components can be used directly in `<script setup>` without component registration.\n\n```xml\n<script setup>\n  import { Button } from 'vant';\n</script>\n\n<template>\n  <Button />\n</template>\n```\n\n#### JSX/TSX\n\nVant components can be used directly in JSX and TSX without component registration.\n\n```jsx\nimport { Button } from 'vant';\n\nexport default {\n  render() {\n    return <Button />;\n  },\n};\n```\n\n## Browser adaptation\n\n### Viewport Units\n\nVant uses `px` unit by default, you can use [postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) to transform `px` unit to viewport units (vw, vh, vmin, vmax).\n\n[postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) is a PostCSS 8 based plugin that transforms `px` units to `vw`/`vh` units. It supports `include`/`exclude` file matching and per-file dynamic `viewportWidth`.\n\n#### Install\n\n```bash\nnpm i postcss-mobile-forever -D\n```\n\n#### PostCSS Config\n\nPostCSS config example:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: [require('postcss-mobile-forever')({ viewportWidth: 375 })],\n};\n```\n\nIf the design width is not 375, use the `viewportWidth` function to configure it per file. The following example handles Vant components (375px design) and business code (750px design) separately:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: [\n    require('postcss-mobile-forever')({\n      viewportWidth: (file) => (file.includes('vant') ? 375 : 750),\n    }),\n  ],\n};\n```\n\n### Rem Unit\n\nYou can use tools such as `postcss-pxtorem` to transform `px` unit to `rem` unit.\n\n- [postcss-pxtorem](https://github.com/cuth/postcss-pxtorem)\n- [lib-flexible](https://github.com/amfe/lib-flexible)\n\n#### PostCSS Config\n\nPostCSS config example:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: {\n    'postcss-pxtorem': {\n      rootValue: 37.5,\n      propList: ['*'],\n    },\n  },\n};\n```\n\n### Custom rootValue\n\nIf the size of the design draft is 750 or other sizes, you can adjust the `rootValue` to:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: {\n    // postcss-pxtorem version >= 5.0.0\n    'postcss-pxtorem': {\n      rootValue({ file }) {\n        return file.indexOf('vant') !== -1 ? 37.5 : 75;\n      },\n      propList: ['*'],\n    },\n  },\n};\n```\n\n### Adapt to PC Browsers\n\nVant is a mobile-first component library, if you want to use Vant in PC browsers, you can use the [@vant/touch-emulator](https://github.com/vant-ui/vant/tree/main/packages/vant-touch-emulator) module. This module will automatically convert the mouse events of the PC browser into the touch events of the mobile browser.\n\n```bash\n# Install\nnpm i @vant/touch-emulator -S\n```\n\n```js\n// Just import this module, then Vant works in PC browser\nimport '@vant/touch-emulator';\n```\n\n<!-- File: packages/vant/docs/markdown/advanced-usage.zh-CN.md (Tokens: ~2322 | Category: anthropic-skill) -->\n# 进阶用法\n\n### 介绍\n\n通过本章节你可以了解到 Vant 的一些进阶用法，比如组件插槽用法、多种浏览器适配方式。\n\n## 组件用法\n\n### 组件注册\n\nVant 支持多种组件注册方式，请根据实际业务需要进行选择。\n\n#### 全局注册\n\n全局注册后，你可以在 app 下的任意子组件中使用注册的 Vant 组件。\n\n```js\nimport { Button } from 'vant';\nimport { createApp } from 'vue';\n\nconst app = createApp();\n\n// 方式一. 通过 app.use 注册\n// 注册完成后，在模板中通过 <van-button> 或 <VanButton> 标签来使用按钮组件\napp.use(Button);\n\n// 方式二. 通过 app.component 注册\n// 注册完成后，在模板中通过 <van-button> 标签来使用按钮组件\napp.component(Button.name, Button);\n```\n\n#### 全量注册\n\n你也可以在全局一次性注册所有 Vant 组件：\n\n```js\nimport Vant from 'vant';\nimport { createApp } from 'vue';\n\nconst app = createApp();\n\napp.use(Vant);\n\n// Lazyload 指令需要单独进行注册\napp.use(vant.Lazyload);\n```\n\n> 注意：注册所有组件会引入所有组件的代码，导致包体积增大。\n\n#### 局部注册\n\n局部注册后，你可以在当前组件中使用注册的 Vant 组件。\n\n```js\nimport { Button } from 'vant';\n\nexport default {\n  components: {\n    [Button.name]: Button,\n  },\n};\n```\n\n> 对于组件注册更详细的介绍，请参考 [Vue 官方文档 - 组件注册](https://cn.vuejs.org/guide/components/registration.html)。\n\n#### \\<script setup\\>\n\n在 `<script setup>` 中可以直接使用 Vant 组件，不需要进行组件注册。\n\n```xml\n<script setup>\n  import { Button } from 'vant';\n</script>\n\n<template>\n  <Button />\n</template>\n```\n\n#### JSX/TSX\n\n在 JSX 和 TSX 中可以直接使用 Vant 组件，不需要进行组件注册。\n\n```jsx\nimport { Button } from 'vant';\n\nexport default {\n  render() {\n    return <Button />;\n  },\n};\n```\n\n### 组件插槽\n\nVant 提供了丰富的组件插槽，通过插槽可以对组件的某一部分进行个性化定制。如果你对 Vue 的插槽不太熟悉，可以阅读 Vue 官方文档中的[插槽章节](https://cn.vuejs.org/guide/components/slots.html)。下面是通过插槽来定制 Checkbox 图标的示例：\n\n```html\n<van-checkbox v-model=\"checked\">\n  <!-- 使用组件提供的 icon 插槽 -->\n  <!-- 将默认图标替换为个性化图片 -->\n  <template #icon=\"props\">\n    <img :src=\"props.checked ? activeIcon : inactiveIcon\" />\n  </template>\n</van-checkbox>\n```\n\n```js\nexport default {\n  data() {\n    return {\n      checked: true,\n      activeIcon:\n        'https://fastly.jsdelivr.net/npm/@vant/assets/user-active.png',\n      inactiveIcon:\n        'https://fastly.jsdelivr.net/npm/@vant/assets/user-inactive.png',\n    };\n  },\n};\n```\n\n### 组件实例方法\n\nVant 中的许多组件提供了实例方法，调用实例方法时，我们需要通过 [ref](https://cn.vuejs.org/guide/essentials/template-refs.html) 来注册组件引用信息，引用信息将会注册在父组件的`$refs`对象上。注册完成后，我们可以通过`this.$refs.xxx`访问到对应的组件实例，并调用上面的实例方法。\n\n```html\n<!-- 通过 ref 属性将组件绑定到 this.$refs.checkbox 上 -->\n<van-checkbox v-model=\"checked\" ref=\"checkbox\"> 复选框 </van-checkbox>\n```\n\n```js\nexport default {\n  data() {\n    return {\n      checked: false,\n    };\n  },\n  // 注意：组件挂载后才能访问到 ref 对象\n  mounted() {\n    this.$refs.checkbox.toggle();\n  },\n};\n```\n\n## 浏览器适配\n\n### Viewport 布局\n\nVant 默认使用 `px` 作为样式单位，如果需要使用 `viewport` 单位 (vw, vh, vmin, vmax)，推荐使用 [postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) 进行转换。\n\n[postcss-mobile-forever](https://github.com/wswmsword/postcss-mobile-forever) 是一款基于 PostCSS 8 的插件，用于将 `px` 单位转化为 `vw`/`vh` 单位，支持 `include`/`exclude` 文件匹配，以及按文件动态配置设计稿宽度。\n\n#### 安装\n\n```bash\nnpm i postcss-mobile-forever -D\n```\n\n#### PostCSS 示例配置\n\n下面提供了一份基本的 PostCSS 示例配置，可以在此配置的基础上根据项目需求进行修改。\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: [require('postcss-mobile-forever')({ viewportWidth: 375 })],\n};\n```\n\n如果设计稿的尺寸不是 375，而是 750 或其他大小，可以通过 `viewportWidth` 函数按文件动态配置。下面的示例将 Vant 组件（375px 设计稿）与业务代码（750px 设计稿）分开处理：\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: [\n    require('postcss-mobile-forever')({\n      viewportWidth: (file) => (file.includes('vant') ? 375 : 750),\n    }),\n  ],\n};\n```\n\n> Tips: 在配置 postcss-loader 时，应避免 ignore node_modules 目录，否则将导致 Vant 样式无法被编译。\n\n### Rem 布局适配\n\n如果需要使用 `rem` 单位进行适配，推荐使用以下两个工具：\n\n- [postcss-pxtorem](https://github.com/cuth/postcss-pxtorem) 是一款 PostCSS 插件，用于将 px 单位转化为 rem 单位\n- [lib-flexible](https://github.com/amfe/lib-flexible) 用于设置 rem 基准值\n\n#### PostCSS 示例配置\n\n下面提供了一份基本的 PostCSS 示例配置，可以在此配置的基础上根据项目需求进行修改。\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: {\n    'postcss-pxtorem': {\n      rootValue: 37.5,\n      propList: ['*'],\n    },\n  },\n};\n```\n\n> Tips: 在配置 postcss-pxtorem 时，同样应避免 ignore node_modules 目录，否则会导致 Vant 样式无法被编译。\n\n#### 其他设计稿尺寸\n\n如果设计稿的尺寸不是 375，而是 750 或其他大小，可以将 `rootValue` 配置调整为:\n\n```js\n// postcss.config.js\nmodule.exports = {\n  plugins: {\n    // postcss-pxtorem 插件的版本需要 >= 5.0.0\n    'postcss-pxtorem': {\n      rootValue({ file }) {\n        return file.indexOf('vant') !== -1 ? 37.5 : 75;\n      },\n      propList: ['*'],\n    },\n  },\n};\n```\n\n### 桌面端适配\n\nVant 是一个面向移动端的组件库，因此默认只适配了移动端设备，这意味着组件只监听了移动端的 `touch` 事件，没有监听桌面端的 `mouse` 事件。\n\n如果你需要在桌面端使用 Vant，可以引入我们提供的 [@vant/touch-emulator](https://github.com/vant-ui/vant/tree/main/packages/vant-touch-emulator)，这个库会在桌面端自动将 `mouse` 事件转换成对应的 `touch` 事件，使得组件能够在桌面端使用。\n\n```bash\n# 安装模块\nnpm i @vant/touch-emulator -S\n```\n\n```js\n// 引入模块后自动生效\nimport '@vant/touch-emulator';\n```\n\n### 底部安全区适配\n\niPhone X 等机型底部存在底部指示条，指示条的操作区域与页面底部存在重合，容易导致用户误操作，因此我们需要针对这些机型进行安全区适配。Vant 中部分组件提供了 `safe-area-inset-top` 或 `safe-area-inset-bottom` 属性，设置该属性后，即可在对应的机型上开启适配，如下示例：\n\n```html\n<!-- 在 head 标签中添加 meta 标签，并设置 viewport-fit=cover 值 -->\n<meta\n  name=\"viewport\"\n  content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover\"\n/>\n\n<!-- 开启顶部安全区适配 -->\n<van-nav-bar safe-area-inset-top />\n\n<!-- 开启底部安全区适配 -->\n<van-number-keyboard safe-area-inset-bottom />\n```\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/safearea.png\">\n\n<!-- File: packages/vant/docs/markdown/changelog.en-US.md (Tokens: ~15830 | Category: anthropic-skill) -->\n# Changelog\n\n### Important Notice\n\n**To avoid redundant maintenance and reduce costs.**\n\n**From v4.9.0, Vant's changelog will be published on [GitHub's Releases Page](https://github.com/youzan/vant/releases). This page will no longer be updated.**\n\nThe current document contains the changelog for Vant v4.0.0 ~ v4.9.0. For other versions, please refer to:\n\n- [Vant 2 Changelog](/vant/v2/#/en-US/changelog)\n- [Vant 3 Changelog](/vant/v3/#/en-US/changelog)\n\n### Intro\n\nVant follows [Semantic Versioning 2.0.0](https://semver.org/lang/zh-CN/).\n\n**Release Schedule**\n\n- Patch version：Typically released every 1 to 2 weeks, including new features and bug fixes.\n- Minor version：Typically released every 1 to 2 months, including new components or significant feature updates, with backward compatibility.\n- Major version：No fixed release time, includes breaking changes and major feature updates.\n\n## Details\n\n### v4.9.0\n\n`2024-05-02`\n\n#### New Features 🎉\n\n- feat(Calendar): add switch-mode prop by [@inottn](https://github.com/inottn) in [#12836](https://github.com/youzan/vant/pull/12836)\n- feat(PickerGroup): add new prop showToolbar by [@ReinoFu](https://github.com/ReinoFu) in [#12839](https://github.com/youzan/vant/pull/12839)\n- feat(CLI): support for configuring Rsbuild by [@chenjiahan](https://github.com/chenjiahan) in [#12809](https://github.com/youzan/vant/pull/12809)\n\n#### Bug Fixes 🐞\n\n- fix(cli): Vue SFC style binding failure by [@zoy-l](https://github.com/zoy-l) in [#12799](https://github.com/youzan/vant/pull/12799)\n- fix(ImagePreview): swipeItem may be undefined by [@inottn](https://github.com/inottn) in [#12818](https://github.com/youzan/vant/pull/12818)\n- fix(Highlight): render correctly when keywords is empty by [@Jungzl](https://github.com/Jungzl) in [#12829](https://github.com/youzan/vant/pull/12829)\n- fix(IndexBar): render active anchor correctly when passing sticky & stickyOffsetTop by [@Jungzl](https://github.com/Jungzl) in [#12837](https://github.com/youzan/vant/pull/12837)\n\n#### Document 📖\n\n- docs: remove all Gitee links by [@chenjiahan](https://github.com/chenjiahan) in [#12845](https://github.com/youzan/vant/pull/12845)\n- docs: remove gzip size badge by [@chenjiahan](https://github.com/chenjiahan) in [#12847](https://github.com/youzan/vant/pull/12847)\n- docs: fix Rsbuild HTML build failed by [@chenjiahan](https://github.com/chenjiahan) in [#12848](https://github.com/youzan/vant/pull/12848)\n\n#### Other Changes\n\n- chore(deps): update dependency terser to ^5.30.3 by [@renovate](https://github.com/renovate) in [#12795](https://github.com/youzan/vant/pull/12795)\n- chore(deps): update dependency eslint-plugin-vue to ^9.25.0 by [@renovate](https://github.com/renovate) in [#12794](https://github.com/youzan/vant/pull/12794)\n- chore(deps): update all patch dependencies by [@renovate](https://github.com/renovate) in [#12773](https://github.com/youzan/vant/pull/12773)\n- chore(workflow): upgrade to pnpm v9 by [@chenjiahan](https://github.com/chenjiahan) in [#12808](https://github.com/youzan/vant/pull/12808)\n- chore: bump github-pages-deploy-action[@v4](https://github.com/v4).6.0 by @chenjiahan in [#12810](https://github.com/youzan/vant/pull/12810)\n- chore(deps): update dependency [@vitejs](https://github.com/vitejs)/plugin-vue to v5 by @renovate in [#12840](https://github.com/youzan/vant/pull/12840)\n- chore(deps): update dependency commander to v12 by [@renovate](https://github.com/renovate) in [#12841](https://github.com/youzan/vant/pull/12841)\n- chore(deps): update actions/setup-node action to v4 by [@renovate](https://github.com/renovate) in [#12814](https://github.com/youzan/vant/pull/12814)\n- chore(deps): update github/issue-labeler action to v3.4 by [@renovate](https://github.com/renovate) in [#12813](https://github.com/youzan/vant/pull/12813)\n- chore(deps): update codecov/codecov-action action to v4 by [@renovate](https://github.com/renovate) in [#12815](https://github.com/youzan/vant/pull/12815)\n- chore(deps): update all patch dependencies by [@renovate](https://github.com/renovate) in [#12812](https://github.com/youzan/vant/pull/12812)\n\n#### New Contributors\n\n- [@ReinoFu](https://github.com/ReinoFu) made their first contribution in [#12839](https://github.com/youzan/vant/pull/12839)\n\n### v4.8.11\n\n`2024-04-14`\n\n#### New Features 🎉\n\n- feat(DropdownMenu): add disabled for option by [@inottn](https://github.com/inottn) in [#12785](https://github.com/youzan/vant/pull/12785)\n\n#### Bug Fixes 🐞\n\n- fix: warning `is not a valid value for v-model` in JetBrains IDE by [@anyesu](https://github.com/anyesu) in [#12787](https://github.com/youzan/vant/pull/12787)\n- fix(Cli): remove site tsconfig by [@chenjiahan](https://github.com/chenjiahan) in [#12792](https://github.com/youzan/vant/pull/12792)\n\n#### Document 📖\n\n- docs(list): update Error loading module code by [@wangjue666](https://github.com/wangjue666) in [#12778](https://github.com/youzan/vant/pull/12778)\n\n#### Other Changes\n\n- chore(deps): update dependency eslint-plugin-vue to ^9.24.1 by [@renovate](https://github.com/renovate) in [#12774](https://github.com/youzan/vant/pull/12774)\n- chore(deps): bump Rsbuild v0.6 by [@chenjiahan](https://github.com/chenjiahan) in [#12790](https://github.com/youzan/vant/pull/12790)\n\n#### New Contributors\n\n- [@wangjue666](https://github.com/wangjue666) made their first contribution in [#12778](https://github.com/youzan/vant/pull/12778)\n- [@anyesu](https://github.com/anyesu) made their first contribution in [#12787](https://github.com/youzan/vant/pull/12787)\n\n### v4.8.10\n\n`2024-04-06`\n\n#### New Features 🎉\n\n- feat(TimePicker): support confirm and getSelectedTime methods by [@bluesky335](https://github.com/bluesky335) in [#12761](https://github.com/youzan/vant/pull/12761)\n- feat(DatePicker): support confirm and getSelectedDate method by [@bluesky335](https://github.com/bluesky335) in [#12762](https://github.com/youzan/vant/pull/12762)\n- feat(Coupon): support for checkbox usage by [@CatsAndMice](https://github.com/CatsAndMice) in [#12744](https://github.com/youzan/vant/pull/12744)\n\n#### Other Changes\n\n- chore(deps): update dependency vite to v5.0.13 [security] by [@renovate](https://github.com/renovate) in [#12767](https://github.com/youzan/vant/pull/12767)\n- chore(deps): update all patch dependencies by [@renovate](https://github.com/renovate) in [#12756](https://github.com/youzan/vant/pull/12756)\n- chore(deps): update dependency [@types](https://github.com/types)/lodash to ^4.17.0 by @renovate in [#12757](https://github.com/youzan/vant/pull/12757)\n- chore: correct return type of getSelectedTime by [@chenjiahan](https://github.com/chenjiahan) in [#12768](https://github.com/youzan/vant/pull/12768)\n- refactor(Coupon): simplify the checkbox usage by [@chenjiahan](https://github.com/chenjiahan) in [#12771](https://github.com/youzan/vant/pull/12771)\n\n#### New Contributors\n\n- [@bluesky335](https://github.com/bluesky335) made their first contribution in [#12761](https://github.com/youzan/vant/pull/12761)\n\n### v4.8.9\n\n`2024-04-06`\n\nInvalid version, please do not use it.\n\n### v4.8.8\n\n`2024-03-31`\n\n#### New Features 🎉\n\n- feat(image-preview): export onLoad and style for image slot by [@chouchouji](https://github.com/chouchouji) in [#12740](https://github.com/youzan/vant/pull/12740)\n- feat(AddressList): add event param for click-item by [@chenjiahan](https://github.com/chenjiahan) in [#12748](https://github.com/youzan/vant/pull/12748)\n\n#### Bug Fixes 🐞\n\n- fix(floating-bubble): update offset when the value changed by [@chouchouji](https://github.com/chouchouji) in [#12730](https://github.com/youzan/vant/pull/12730)\n- fix(vant-cli): support defineOptions named by [@wChenonly](https://github.com/wChenonly) in [#12734](https://github.com/youzan/vant/pull/12734)\n- fix(PickerGroup): rendering correctly when using v-for by [@inottn](https://github.com/inottn) in [#12732](https://github.com/youzan/vant/pull/12732)\n- fix(TextEllipsis): should recalculate the ellipsis state when the component is activated by [@inottn](https://github.com/inottn) in [#12741](https://github.com/youzan/vant/pull/12741)\n\n#### Document 📖\n\n- docs(button): Keep Chinese and English documents consistent by [@chouchouji](https://github.com/chouchouji) in [#12708](https://github.com/youzan/vant/pull/12708)\n- docs(cell): correct the type of label by [@chouchouji](https://github.com/chouchouji) in [#12721](https://github.com/youzan/vant/pull/12721)\n- docs(ImagePreview): add image slot scale guide by [@chenjiahan](https://github.com/chenjiahan) in [#12751](https://github.com/youzan/vant/pull/12751)\n\n#### Other Changes\n\n- chore(deps): update dependency vue-router to v4.3.0 by [@renovate](https://github.com/renovate) in [#12702](https://github.com/youzan/vant/pull/12702)\n- chore(deps): update dependency esbuild to ^0.20.0 by [@renovate](https://github.com/renovate) in [#12696](https://github.com/youzan/vant/pull/12696)\n- chore(workflow): let renovate bump package.json by [@chenjiahan](https://github.com/chenjiahan) in [#12714](https://github.com/youzan/vant/pull/12714)\n- chore(deps): update dependency eslint to ^8.57.0 by [@renovate](https://github.com/renovate) in [#12723](https://github.com/youzan/vant/pull/12723)\n- chore(docs): update the vue3-vant-mobile reference by [@CharleeWa](https://github.com/CharleeWa) in [#12735](https://github.com/youzan/vant/pull/12735)\n- chore(deps): update dependency commander to ^11.1.0 by [@renovate](https://github.com/renovate) in [#12718](https://github.com/youzan/vant/pull/12718)\n- chore(deps): update dependency enquirer to v2.4.1 by [@renovate](https://github.com/renovate) in [#12695](https://github.com/youzan/vant/pull/12695)\n- chore(deps): update dependency [@vue](https://github.com/vue)/test-utils to ^2.4.5 by @renovate in [#12716](https://github.com/youzan/vant/pull/12716)\n- chore(deps): bump Rsbuild v0.5 by [@chenjiahan](https://github.com/chenjiahan) in [#12747](https://github.com/youzan/vant/pull/12747)\n- chore(deps): update dependency eslint-config-prettier to ^9.1.0 by [@renovate](https://github.com/renovate) in [#12724](https://github.com/youzan/vant/pull/12724)\n- chore(deps): update dependency fs-extra to ^11.2.0 by [@renovate](https://github.com/renovate) in [#12745](https://github.com/youzan/vant/pull/12745)\n- chore(deps): update dependency highlight.js to ^11.9.0 by [@renovate](https://github.com/renovate) in [#12746](https://github.com/youzan/vant/pull/12746)\n- chore(deps): update dependency fast-glob to ^3.3.2 by [@renovate](https://github.com/renovate) in [#12731](https://github.com/youzan/vant/pull/12731)\n- chore(deps): update dependency less to ^4.2.0 by [@renovate](https://github.com/renovate) in [#12752](https://github.com/youzan/vant/pull/12752)\n- chore(workflow): let renovate group patch updates by [@chenjiahan](https://github.com/chenjiahan) in [#12754](https://github.com/youzan/vant/pull/12754)\n\n#### New Contributors\n\n- [@CharleeWa](https://github.com/CharleeWa) made their first contribution in [#12735](https://github.com/youzan/vant/pull/12735)\n\n### v4.8.7\n\n`2024-03-18`\n\n#### Other Changes\n\n- Revert \"chore(deps): update dependency typescript to v5.4.2\" by [@renovate](https://github.com/renovate) in [#12700](https://github.com/youzan/vant/pull/12700)\n- chore: Update homepage by [@yoyo837](https://github.com/yoyo837) in [#12704](https://github.com/youzan/vant/pull/12704)\n\n### v4.8.6\n\n`2024-03-17`\n\n#### New Features 🎉\n\n- feat(ImagePreview): add vertical prop by [@suncohey](https://github.com/suncohey) in [#12660](https://github.com/youzan/vant/pull/12660)\n- feat(signature): export clear and submit method by [@chouchouji](https://github.com/chouchouji) in [#12654](https://github.com/youzan/vant/pull/12654)\n- feat: support unplugin-auto-import plugin by [@DragonnZhang](https://github.com/DragonnZhang) in [#12679](https://github.com/youzan/vant/pull/12679)\n- feat(ActionSheet): add icon support to the actions data by [@wjw-gavin](https://github.com/wjw-gavin) in [#12671](https://github.com/youzan/vant/pull/12671)\n\n#### Bug Fixes 🐞\n\n- fix(ImagePreview): allow user to swipe to next image when the current image is moved to the edge by [@inottn](https://github.com/inottn) in [#12666](https://github.com/youzan/vant/pull/12666)\n- fix(ActionSheet): icon class name by [@chenjiahan](https://github.com/chenjiahan) in [#12701](https://github.com/youzan/vant/pull/12701)\n\n#### Document 📖\n\n- docs(ImagePreview): add vertical prop by [@chenjiahan](https://github.com/chenjiahan) in [#12663](https://github.com/youzan/vant/pull/12663)\n- docs: change tab's 'Before Change' into a real async function by [@gxy5202](https://github.com/gxy5202) in [#12693](https://github.com/youzan/vant/pull/12693)\n\n#### Other Changes\n\n- chore(deps): bump Rsbuild 0.4.12 by [@chenjiahan](https://github.com/chenjiahan) in [#12665](https://github.com/youzan/vant/pull/12665)\n- chore(deps): update dependency [@vue](https://github.com/vue)/test-utils to v2.4.5 by @renovate in [#12681](https://github.com/youzan/vant/pull/12681)\n- chore(deps): update dependency autoprefixer to v10.4.18 by [@renovate](https://github.com/renovate) in [#12682](https://github.com/youzan/vant/pull/12682)\n- chore(workflow): disable dependency dashboard by [@chenjiahan](https://github.com/chenjiahan) in [#12686](https://github.com/youzan/vant/pull/12686)\n- chore(deps): update dependency prettier to v3.2.5 by [@renovate](https://github.com/renovate) in [#12685](https://github.com/youzan/vant/pull/12685)\n- chore(deps): update rsbuild to v0.4.15 by [@renovate](https://github.com/renovate) in [#12688](https://github.com/youzan/vant/pull/12688)\n- chore(deps): update dependency eslint to v8.57.0 by [@renovate](https://github.com/renovate) in [#12697](https://github.com/youzan/vant/pull/12697)\n- chore(deps): update dependency typescript to v5.4.2 by [@renovate](https://github.com/renovate) in [#12700](https://github.com/youzan/vant/pull/12700)\n\n#### New Contributors\n\n- [@chouchouji](https://github.com/chouchouji) made their first contribution in [#12654](https://github.com/youzan/vant/pull/12654)\n- [@renovate](https://github.com/renovate) made their first contribution in [#12681](https://github.com/youzan/vant/pull/12681)\n- [@gxy5202](https://github.com/gxy5202) made their first contribution in [#12693](https://github.com/youzan/vant/pull/12693)\n- [@DragonnZhang](https://github.com/DragonnZhang) made their first contribution in [#12679](https://github.com/youzan/vant/pull/12679)\n\n### v4.8.5\n\n`2024-02-25`\n\n#### New Features 🎉\n\n- feat(Image): add `crossorigin` & `referrerpolicy` props by [@Jungzl](https://github.com/Jungzl) in [#12641](https://github.com/youzan/vant/pull/12641)\n\n#### Bug Fixes 🐞\n\n- fix(NumberKeyboard): render delete slot correctly when theme is custom by [@TPORL](https://github.com/TPORL) in [#12624](https://github.com/youzan/vant/pull/12624)\n\n#### Document 📖\n\n- docs: update docs for params related to Picker events by [@wjw-gavin](https://github.com/wjw-gavin) in [#12619](https://github.com/youzan/vant/pull/12619)\n- docs(DatePicker): fix en-docs error by [@wjw-gavin](https://github.com/wjw-gavin) in [#12620](https://github.com/youzan/vant/pull/12620)\n- docs(Uploader): fix miss double quote by [@nemo-shen](https://github.com/nemo-shen) in [#12627](https://github.com/youzan/vant/pull/12627)\n- docs: add full registration guide by [@chenjiahan](https://github.com/chenjiahan) in [#12628](https://github.com/youzan/vant/pull/12628)\n- docs: add Rsbuild import on demand guide by [@chenjiahan](https://github.com/chenjiahan) in [#12629](https://github.com/youzan/vant/pull/12629)\n\n#### Other Changes\n\n- Revert \"fix(DropdownMenu): fix recursive update when passing object literal to title-class (#12614)\" by [@inottn](https://github.com/inottn) in [#12617](https://github.com/youzan/vant/pull/12617)\n- chore(deps): bump Rsbuild v0.4 by [@chenjiahan](https://github.com/chenjiahan) in [#12625](https://github.com/youzan/vant/pull/12625)\n- chore(workflow): setup renovate config by [@chenjiahan](https://github.com/chenjiahan) in [#12626](https://github.com/youzan/vant/pull/12626)\n- test: skip image SSR test case by [@chenjiahan](https://github.com/chenjiahan) in [#12644](https://github.com/youzan/vant/pull/12644)\n\n#### New Contributors\n\n- [@TPORL](https://github.com/TPORL) made their first contribution in [#12624](https://github.com/youzan/vant/pull/12624)\n\n### v4.8.4\n\n`2024-02-03`\n\n#### New Features 🎉\n\n- feat(Picker): allow to hidden to toolbar buttons by [@chenjiahan](https://github.com/chenjiahan) in [#12599](https://github.com/youzan/vant/pull/12599)\n\n#### Bug Fixes 🐞\n\n- fix(Sticky): initial sticky position by [@nemo-shen](https://github.com/nemo-shen) in [#12601](https://github.com/youzan/vant/pull/12601)\n- fix(DropdownMenu): fix recursive update when passing object literal to title-class by [@inottn](https://github.com/inottn) in [#12614](https://github.com/youzan/vant/pull/12614)\n\n#### Document 📖\n\n- docs: improve quickstart tips by [@inottn](https://github.com/inottn) in [#12606](https://github.com/youzan/vant/pull/12606)\n\n#### Other Changes\n\n- chore(deps): bump Rsbuild 0.3.9 and enable clean dist by [@chenjiahan](https://github.com/chenjiahan) in [#12600](https://github.com/youzan/vant/pull/12600)\n- chore: avoid workflow running on forked repo by [@tolking](https://github.com/tolking) in [#12607](https://github.com/youzan/vant/pull/12607)\n- chore(workflow): using new M1 macOS runner by [@chenjiahan](https://github.com/chenjiahan) in [#12615](https://github.com/youzan/vant/pull/12615)\n\n### v4.8.3\n\n`2024-01-20`\n\n#### New Features 🎉\n\n- feat(Notify): add teleport prop by [@inottn](https://github.com/inottn) in [#12556](https://github.com/youzan/vant/pull/12556)\n- feat(TextEllipsis): add `action` slot by [@nemo-shen](https://github.com/nemo-shen) in [#12560](https://github.com/youzan/vant/pull/12560)\n- feat(ImagePreview): add close-on-click-image prop by [@inottn](https://github.com/inottn) in [#12566](https://github.com/youzan/vant/pull/12566)\n- feat(icons): add icon `arrow-double-left` and `arrow-double-right` by [@nemo-shen](https://github.com/nemo-shen) in [#12579](https://github.com/youzan/vant/pull/12579)\n- feat(Toast): add z-index prop by [@inottn](https://github.com/inottn) in [#12587](https://github.com/youzan/vant/pull/12587)\n\n#### Bug Fixes 🐞\n\n- fix(Tab): tab(with sticky prop) loss 'fixed' classname after switch tab by [@nemo-shen](https://github.com/nemo-shen) in [#12547](https://github.com/youzan/vant/pull/12547)\n- fix(Image): ImagePosition type is not exported before by [@Jungzl](https://github.com/Jungzl) in [#12549](https://github.com/youzan/vant/pull/12549)\n- fix(Tabs): van-border-radius-sm to van-radius-sm by [@edram](https://github.com/edram) in [#12576](https://github.com/youzan/vant/pull/12576)\n\n#### Document 📖\n\n- docs(Lazyload): fix preLoad type error and spelling mistakes by [@RSS1102](https://github.com/RSS1102) in [#12554](https://github.com/youzan/vant/pull/12554)\n- docs(home): update heading level by [@inottn](https://github.com/inottn) in [#12577](https://github.com/youzan/vant/pull/12577)\n\n#### Other Changes\n\n- test: bump vitest v1.1.3 by [@inottn](https://github.com/inottn) in [#12546](https://github.com/youzan/vant/pull/12546)\n- chore(deps): bump Rsbuild to v0.3.2 by [@chenjiahan](https://github.com/chenjiahan) in [#12565](https://github.com/youzan/vant/pull/12565)\n- chore(deps): bump vue to v3.4.13 by [@inottn](https://github.com/inottn) in [#12567](https://github.com/youzan/vant/pull/12567)\n- chore(deps): bump vite from 5.0.11 to 5.0.12 by [@dependabot](https://github.com/dependabot) in [#12588](https://github.com/youzan/vant/pull/12588)\n\n#### New Contributors\n\n- [@edram](https://github.com/edram) made their first contribution in [#12576](https://github.com/youzan/vant/pull/12576)\n\n### v4.8.2\n\n`2024-01-03`\n\n#### New Features 🎉\n\n- feat: support link css from shadow dom by [@yoyo837](https://github.com/yoyo837) in [#12526](https://github.com/youzan/vant/pull/12526)\n- feat(DropdownMenu): add auto-locate prop by [@inottn](https://github.com/inottn) in [#12251](https://github.com/youzan/vant/pull/12251)\n\n#### Performance 🚀\n\n- perf(CLI): improve markdown compile performance by [@chenjiahan](https://github.com/chenjiahan) in [#12541](https://github.com/youzan/vant/pull/12541)\n\n#### Bug Fixes 🐞\n\n- fix(ci): eslint on windows by [@Jungzl](https://github.com/Jungzl) in [#12516](https://github.com/youzan/vant/pull/12516)\n- fix(ImagePreview): double-scale and close-on-click-overlay may not work in certain scenarios by [@inottn](https://github.com/inottn) in [#12521](https://github.com/youzan/vant/pull/12521)\n\n#### Other Changes\n\n- chore(deps): bump Rsbuild v0.2.8 by [@chenjiahan](https://github.com/chenjiahan) in [#12519](https://github.com/youzan/vant/pull/12519)\n- chore(deps): bump Vue 3.4.0-beta.4 by [@chenjiahan](https://github.com/chenjiahan) in [#12520](https://github.com/youzan/vant/pull/12520)\n- test: bump vitest v1.1.0 by [@chenjiahan](https://github.com/chenjiahan) in [#12522](https://github.com/youzan/vant/pull/12522)\n- chore(deps): bump vite v5 by [@chenjiahan](https://github.com/chenjiahan) in [#12523](https://github.com/youzan/vant/pull/12523)\n- chore(deps): bump esbuild v0.19 by [@chenjiahan](https://github.com/chenjiahan) in [#12524](https://github.com/youzan/vant/pull/12524)\n- chore: lock Rspack v0.4.3 to fix CSS issue by [@chenjiahan](https://github.com/chenjiahan) in [#12525](https://github.com/youzan/vant/pull/12525)\n- chore(workflow): adjust issue templates by [@chenjiahan](https://github.com/chenjiahan) in [#12528](https://github.com/youzan/vant/pull/12528)\n- chore(workflow): update codesandbox URL by [@chenjiahan](https://github.com/chenjiahan) in [#12529](https://github.com/youzan/vant/pull/12529)\n- chore: update vitest config by [@inottn](https://github.com/inottn) in [#12530](https://github.com/youzan/vant/pull/12530)\n- chore(deps): bump Rsbuild and Vue by [@chenjiahan](https://github.com/chenjiahan) in [#12532](https://github.com/youzan/vant/pull/12532)\n- chore(ImagePreview): reuse isTap ref by [@inottn](https://github.com/inottn) in [#12536](https://github.com/youzan/vant/pull/12536)\n- test(Toast): reduce test run time by [@inottn](https://github.com/inottn) in [#12538](https://github.com/youzan/vant/pull/12538)\n- test(FloatingBubble): reduce test run time by [@inottn](https://github.com/inottn) in [#12539](https://github.com/youzan/vant/pull/12539)\n\n### v4.8.1\n\n`2023-12-17`\n\n#### New Features 🎉\n\n- perf(TextEllipsis): reuse windowWidth to avoid repeat calculations by [@inottn](https://github.com/inottn) in [#12471](https://github.com/youzan/vant/pull/12471)\n- feat(TextEllipsis): add the toggle instance method by [@wjw-gavin](https://github.com/wjw-gavin) in [#12472](https://github.com/youzan/vant/pull/12472)\n- feat(cli): bump Rsbuild v0.2.2 by [@chenjiahan](https://github.com/chenjiahan) in [#12502](https://github.com/youzan/vant/pull/12502)\n\n#### Performance 🚀\n\n- perf(cli): disable source map to make compilation faster by [@chenjiahan](https://github.com/chenjiahan) in [#12484](https://github.com/youzan/vant/pull/12484)\n\n#### Bug Fixes 🐞\n\n- fix(cli): remove unused script in template by [@chenjiahan](https://github.com/chenjiahan) in [#12482](https://github.com/youzan/vant/pull/12482)\n- fix(TextEllipsis): fix missing param for toggle by [@wjw-gavin](https://github.com/wjw-gavin) in [#12483](https://github.com/youzan/vant/pull/12483)\n\n#### Document 📖\n\n- docs(collapse): fix missing ref tags by [@RSS1102](https://github.com/RSS1102) in [#12460](https://github.com/youzan/vant/pull/12460)\n- docs(collapse): fix translation Error by [@RSS1102](https://github.com/RSS1102) in [#12464](https://github.com/youzan/vant/pull/12464)\n- docs(dialog): fix translation Error and keep the sample code the same by [@RSS1102](https://github.com/RSS1102) in [#12465](https://github.com/youzan/vant/pull/12465)\n- docs(TreeSelect): correct variable names by [@inottn](https://github.com/inottn) in [#12469](https://github.com/youzan/vant/pull/12469)\n- docs: add Rsbuild scaffold guide by [@chenjiahan](https://github.com/chenjiahan) in [#12475](https://github.com/youzan/vant/pull/12475)\n- docs(image-preview): usage of Supplementing className by [@RSS1102](https://github.com/RSS1102) in [#12491](https://github.com/youzan/vant/pull/12491)\n- docs(Quickstart): unplugin-vue-components usage updated (#12499) by [@wChenonly](https://github.com/wChenonly) in [#12500](https://github.com/youzan/vant/pull/12500)\n\n#### Other Changes\n\n- chore(workflow): add perf label for PR by [@chenjiahan](https://github.com/chenjiahan) in [#12473](https://github.com/youzan/vant/pull/12473)\n- refactor(CLI): integrate Rsbuild to build website by [@chenjiahan](https://github.com/chenjiahan) in [#12481](https://github.com/youzan/vant/pull/12481)\n- chore: bump Rspack 0.4.2 to fix Chinese path by [@chenjiahan](https://github.com/chenjiahan) in [#12496](https://github.com/youzan/vant/pull/12496)\n- chore(deps): bump vite from 4.4.9 to 4.4.12 by [@dependabot](https://github.com/dependabot) in [#12493](https://github.com/youzan/vant/pull/12493)\n\n#### New Contributors\n\n- [@RSS1102](https://github.com/RSS1102) made their first contribution in [#12460](https://github.com/youzan/vant/pull/12460)\n\n### v4.8.0\n\n`2023-11-19`\n\n#### New Component 🎉\n\n- Added Highlight component, contributed by [@wjw-gavin](https://github.com/wjw-gavin) and [@inottn](https://github.com/inottn) ❤️ [#12434](https://github.com/youzan/vant/pull/12434)\n\n#### New Features\n\n- feat(ImagePreview): expose resetScale method by [@inottn](https://github.com/inottn) in [#12426](https://github.com/youzan/vant/pull/12426)\n- feat(Checker): add checked and disabled params to the default slot by [@inottn](https://github.com/inottn) in [#12436](https://github.com/youzan/vant/pull/12436)\n- feat(Row): gutter support vertical space by [@cc-hearts](https://github.com/cc-hearts) in [#12439](https://github.com/youzan/vant/pull/12439)\n\n#### Bug Fixes 🐞\n\n- fix(Calendar): subtitle supports reactive by [@cc-hearts](https://github.com/cc-hearts) in [#12425](https://github.com/youzan/vant/pull/12425)\n\n#### Document 📖\n\n- docs(field): update props size by [@Simon-He95](https://github.com/Simon-He95) in [#12429](https://github.com/youzan/vant/pull/12429)\n- docs(cell): update props size by [@Simon-He95](https://github.com/Simon-He95) in [#12427](https://github.com/youzan/vant/pull/12427)\n- docs(Highlight): add version tip by [@chenjiahan](https://github.com/chenjiahan) in [#12438](https://github.com/youzan/vant/pull/12438)\n- docs(Overlay): add set z-index demo by [@chenjiahan](https://github.com/chenjiahan) in [#12454](https://github.com/youzan/vant/pull/12454)\n- docs: add Rsbuild to quickstart by [@chenjiahan](https://github.com/chenjiahan) in [#12455](https://github.com/youzan/vant/pull/12455)\n\n#### Other Changes\n\n- chore(deps): fix security alerts of babel and postcss by [@chenjiahan](https://github.com/chenjiahan) in [#12414](https://github.com/youzan/vant/pull/12414)\n\n#### New Contributors\n\n- [@cc-hearts](https://github.com/cc-hearts) made their first contribution in [#12425](https://github.com/youzan/vant/pull/12425)\n\n### v4.7.3\n\n`2023-10-29`\n\n#### New Features 🎉\n\n- feat(locale): add Arabic Locale by [@mo9a7i](https://github.com/mo9a7i) in [#12381](https://github.com/youzan/vant/pull/12381)\n- feat(Form): add required prop and support auto display by [@chenjiahan](https://github.com/chenjiahan) in [#12380](https://github.com/youzan/vant/pull/12380)\n- feat(auto-import-resolver): add module option by [@chenjiahan](https://github.com/chenjiahan) in [#12383](https://github.com/youzan/vant/pull/12383)\n- style: replace word-break with overflow-wrap by [@wjw-gavin](https://github.com/wjw-gavin) in [#12396](https://github.com/youzan/vant/pull/12396)\n- feat(Tab): add show-header prop by [@yoyo837](https://github.com/yoyo837) in [#12394](https://github.com/youzan/vant/pull/12394)\n- style(Search): use consistent padding when display error msg by [@chenjiahan](https://github.com/chenjiahan) in [#12409](https://github.com/youzan/vant/pull/12409)\n- feat(Signature): expose resize method by [@inottn](https://github.com/inottn) in [#12405](https://github.com/youzan/vant/pull/12405)\n\n#### Bug Fixes 🐞\n\n- fix(ConfigProvider): export missing theme vars by [@inottn](https://github.com/inottn) in [#12371](https://github.com/youzan/vant/pull/12371)\n- fix(AddressEdit): area field validate error when showArea is false by [@zhousg](https://github.com/zhousg) in [#12393](https://github.com/youzan/vant/pull/12393)\n- fix([@vant](https://github.com/vant)/area-data): add exports types by @Alkaidcc in [#12397](https://github.com/youzan/vant/pull/12397)\n- fix(Search): fix search style when has error message by [@johnsonwong666](https://github.com/johnsonwong666) in [#12385](https://github.com/youzan/vant/pull/12385)\n- fix(PickerGroup): only filter Comment vnode by [@zhousg](https://github.com/zhousg) in [#12402](https://github.com/youzan/vant/pull/12402)\n\n#### Document 📖\n\n- docs(auto-import-resolver): add doc for importStyle option by [@chenjiahan](https://github.com/chenjiahan) in [#12382](https://github.com/youzan/vant/pull/12382)\n- docs(Tab): keep docs and example the same by [@wjw-gavin](https://github.com/wjw-gavin) in [#12395](https://github.com/youzan/vant/pull/12395)\n- chore: add vscode-common-intellisense to the Community Ecosystem by [@Simon-He95](https://github.com/Simon-He95) in [#12406](https://github.com/youzan/vant/pull/12406)\n- docs(Signature): add resize method by [@chenjiahan](https://github.com/chenjiahan) in [#12411](https://github.com/youzan/vant/pull/12411)\n- docs(progress): remove outdated resize method by [@chenjiahan](https://github.com/chenjiahan) in [#12412](https://github.com/youzan/vant/pull/12412)\n\n#### Other Changes\n\n- chore(Field): required label css will active when rules contain required by [@morance](https://github.com/morance) in [#12376](https://github.com/youzan/vant/pull/12376)\n- test(ImagePreview): fix incorrect onClose test case by [@chenjiahan](https://github.com/chenjiahan) in [#12386](https://github.com/youzan/vant/pull/12386)\n- chore: forked repo, skip CI running by [@yoyo837](https://github.com/yoyo837) in [#12410](https://github.com/youzan/vant/pull/12410)\n\n#### New Contributors\n\n- [@morance](https://github.com/morance) made their first contribution in [#12376](https://github.com/youzan/vant/pull/12376)\n- [@mo9a7i](https://github.com/mo9a7i) made their first contribution in [#12381](https://github.com/youzan/vant/pull/12381)\n- [@Alkaidcc](https://github.com/Alkaidcc) made their first contribution in [#12397](https://github.com/youzan/vant/pull/12397)\n- [@johnsonwong666](https://github.com/johnsonwong666) made their first contribution in [#12385](https://github.com/youzan/vant/pull/12385)\n\n### v4.7.2\n\n`2023-10-15`\n\n#### New Features 🎉\n\n- feat(Icon): add font-family css var by [@JeremyFan](https://github.com/JeremyFan) in [#12354](https://github.com/youzan/vant/pull/12354)\n- feat(ImagePreview): add doubleScale option by [@coderXMin](https://github.com/coderXMin) in [#12360](https://github.com/youzan/vant/pull/12360)\n\n#### Bug Fixes 🐞\n\n- fix(Icons): compatible with the browser range of Vant 2 by [@chenjiahan](https://github.com/chenjiahan) in [#12356](https://github.com/youzan/vant/pull/12356)\n- fix(Uploader): multiple reupload only choose one & cancel chose problem by [@zhousg](https://github.com/zhousg) in [#12359](https://github.com/youzan/vant/pull/12359)\n\n#### Other Changes\n\n- refactor(Signature): avoid setting the canvas width and height in the next tick by [@inottn](https://github.com/inottn) in [#12347](https://github.com/youzan/vant/pull/12347)\n- refactor(Signature): use scale method to enhance clarity by [@inottn](https://github.com/inottn) in [#12363](https://github.com/youzan/vant/pull/12363)\n- chore(deps): bump rslog v1.1.0 by [@chenjiahan](https://github.com/chenjiahan) in [#12364](https://github.com/youzan/vant/pull/12364)\n- chore(cli): merge greet logs by [@chenjiahan](https://github.com/chenjiahan) in [#12365](https://github.com/youzan/vant/pull/12365)\n- chore(ImagePreview): rename doubleScale and add test case by [@chenjiahan](https://github.com/chenjiahan) in [#12366](https://github.com/youzan/vant/pull/12366)\n\n#### New Contributors\n\n- [@coderXMin](https://github.com/coderXMin) made their first contribution in [#12360](https://github.com/youzan/vant/pull/12360)\n\n### v4.7.1\n\n`2023-10-06`\n\n#### New Features 🎉\n\n- feat(FloatingPanel): optimize bounce animate by [@zhousg](https://github.com/zhousg) in [#12317](https://github.com/youzan/vant/pull/12317)\n- feat(cli): using rslog by [@chenjiahan](https://github.com/chenjiahan) in [#12334](https://github.com/youzan/vant/pull/12334)\n- style(Swipe): declare transition-property by [@chenjiahan](https://github.com/chenjiahan) in [#12336](https://github.com/youzan/vant/pull/12336)\n- feat(Notify): add JSDoc for utility functions by [@chenjiahan](https://github.com/chenjiahan) in [#12342](https://github.com/youzan/vant/pull/12342)\n- feat(Dialog): add JSDoc for utility functions by [@chenjiahan](https://github.com/chenjiahan) in [#12343](https://github.com/youzan/vant/pull/12343)\n- feat(Toast): add JSDoc for utility functions by [@chenjiahan](https://github.com/chenjiahan) in [#12344](https://github.com/youzan/vant/pull/12344)\n\n#### Bug Fixes 🐞\n\n- fix(Popup): fix failed to inherit scopedId by [@chenjiahan](https://github.com/chenjiahan) in [#12327](https://github.com/youzan/vant/pull/12327)\n- fix(CellGroup): failed to inherit scopeId with title by [@chenjiahan](https://github.com/chenjiahan) in [#12328](https://github.com/youzan/vant/pull/12328)\n- fix(Popover): failed to inherit scopedId by [@chenjiahan](https://github.com/chenjiahan) in [#12329](https://github.com/youzan/vant/pull/12329)\n\n#### Document 📖\n\n- docs: fix typo in Form by [@zcvvvbb](https://github.com/zcvvvbb) in [#12322](https://github.com/youzan/vant/pull/12322)\n- docs: add more ecosystem projects by [@chenjiahan](https://github.com/chenjiahan) in [#12338](https://github.com/youzan/vant/pull/12338)\n- docs(ImagePreview): improve English document by [@chenjiahan](https://github.com/chenjiahan) in [#12345](https://github.com/youzan/vant/pull/12345)\n- docs: mistypo Georqia to Georgia by [@mahnunchik](https://github.com/mahnunchik) in [#12331](https://github.com/youzan/vant/pull/12331)\n\n#### Other Changes\n\n- chore(Swipe): limit the decimal length of transform by [@chenjiahan](https://github.com/chenjiahan) in [#12337](https://github.com/youzan/vant/pull/12337)\n- chore: bump pnpm v8.8.0 by [@chenjiahan](https://github.com/chenjiahan) in [#12339](https://github.com/youzan/vant/pull/12339)\n- chore(deps): bump postcss from 8.4.27 to 8.4.31 by [@dependabot](https://github.com/dependabot) in [#12341](https://github.com/youzan/vant/pull/12341)\n\n#### New Contributors\n\n- [@zcvvvbb](https://github.com/zcvvvbb) made their first contribution in [#12322](https://github.com/youzan/vant/pull/12322)\n- [@mahnunchik](https://github.com/mahnunchik) made their first contribution in [#12331](https://github.com/youzan/vant/pull/12331)\n\n### v4.7.0\n\n`2023-09-24`\n\n#### 🍭 Icon Updates\n\n- Icon: add new `user` icon\n- Icon: add new `notes` icon\n- Icon: add new `newspaper` icon\n- Icon: add new `list-switch` icon\n- Icon: add new `list-switching` icon\n- Icon: add a filled `records` icon\n- Icon: add a filled `contact` icon\n- Icon: add a filled `discount` icon\n- Icon: add a filled `completed` icon\n- Icon: add a filled `description` icon\n- Icon: add a filled `cash-back-record` icon\n- Icon: rename the previous `records` icon to `records-o`\n- Icon: rename the previous `contact` icon to `contact-o`\n- Icon: rename the previous `discount` icon to `discount-o`\n- Icon: rename the previous `completed` icon to `completed-o`\n- Icon: rename the previous `description` icon to `description-o`\n- Icon: rename the previous `cash-back-record` icon to `cash-back-record-o`\n\n#### New Features 🎉\n\n- feat(Calendar): add click-disabled-date event by [@LadyChatterleyLover](https://github.com/LadyChatterleyLover) in [#12274](https://github.com/youzan/vant/pull/12274)\n- feat(Uploader): add --van-uploader-border-radius css variables by [@xieyezi](https://github.com/xieyezi) in [#12280](https://github.com/youzan/vant/pull/12280)\n- feat(SwipeCell): fix triggered close by clickAway when in running beforeClose by [@nined9](https://github.com/nined9) in [#12309](https://github.com/youzan/vant/pull/12309)\n- feat(AddressEdit): add change event for name and tel input by [@zhousg](https://github.com/zhousg) in [#12310](https://github.com/youzan/vant/pull/12310)\n- types(Dialog): improve showDialog return type by [@chenjiahan](https://github.com/chenjiahan) in [#12316](https://github.com/youzan/vant/pull/12316)\n\n#### Bug Fixes 🐞\n\n- fix(Picker): fix bug the content of the popup window is not consistent with the Chinese version under the English version by [@lllomh](https://github.com/lllomh) in [#12300](https://github.com/youzan/vant/pull/12300)\n- fix(Signature): fix checking if canvas is empty when backgroundColor is set by [@sywyyhykkk](https://github.com/sywyyhykkk) in [#12304](https://github.com/youzan/vant/pull/12304)\n- fix(FloatingPanel): dragging down causes the page to move by [@zhousg](https://github.com/zhousg) in [#12314](https://github.com/youzan/vant/pull/12314)\n\n#### Document 📖\n\n- docs(Picker): improve picker document by [@MrXwq](https://github.com/MrXwq) in [#12275](https://github.com/youzan/vant/pull/12275)\n- docs(Uploader): add FAQ about camera permission by [@chenjiahan](https://github.com/chenjiahan) in [#12289](https://github.com/youzan/vant/pull/12289)\n\n#### Other Changes\n\n- test(Dialog): enable function-call test cases by [@chenjiahan](https://github.com/chenjiahan) in [#12315](https://github.com/youzan/vant/pull/12315)\n- fix(cli): allow missing build script when releasing by [@chenjiahan](https://github.com/chenjiahan) in [#12292](https://github.com/youzan/vant/pull/12292)\n\n#### New Contributors\n\n- [@nined9](https://github.com/nined9) made their first contribution in [#12309](https://github.com/youzan/vant/pull/12309)\n- [@sywyyhykkk](https://github.com/sywyyhykkk) made their first contribution in [#12304](https://github.com/youzan/vant/pull/12304)\n\n### v4.6.8\n\n`2023-09-10`\n\n#### New Features 🎉\n\n- feat(Cell): add CSS vars to customize font size of the value by [@inottn](https://github.com/inottn) in [#12260](https://github.com/youzan/vant/pull/12260)\n- feat(ConfigProvider): supplement the type declaration of ConfigProviderThemeVars by [@xieyezi](https://github.com/xieyezi) in [#12264](https://github.com/youzan/vant/pull/12264)\n- feat(NavBar): add leftDisabled and rightDisabled prop by [@m-xlsea](https://github.com/m-xlsea) in [#12258](https://github.com/youzan/vant/pull/12258)\n\n#### Bug Fixes 🐞\n\n- fix(ConfigProvider): failed to set some basic theme vars by [@chenjiahan](https://github.com/chenjiahan) in [#12272](https://github.com/youzan/vant/pull/12272)\n- fix(ConfigProvider): ConfigProviderThemeVars fontSizeXs hump by [@xieyezi](https://github.com/xieyezi) in [#12267](https://github.com/youzan/vant/pull/12267)\n\n#### Document 📖\n\n- docs(NavBar): add disable button demo by [@chenjiahan](https://github.com/chenjiahan) in [#12270](https://github.com/youzan/vant/pull/12270)\n\n#### Other Changes\n\n- chore(CI): enable single-commit to reduce the repo size by [@chenjiahan](https://github.com/chenjiahan) in [#12268](https://github.com/youzan/vant/pull/12268)\n- chore(CI): bump actions version by [@chenjiahan](https://github.com/chenjiahan) in [#12269](https://github.com/youzan/vant/pull/12269)\n- chore: move axure to vant-assets repo by [@chenjiahan](https://github.com/chenjiahan) in [#12271](https://github.com/youzan/vant/pull/12271)\n\n#### New Contributors\n\n- [@xieyezi](https://github.com/xieyezi) made their first contribution in [#12264](https://github.com/youzan/vant/pull/12264)\n- [@m-xlsea](https://github.com/m-xlsea) made their first contribution in [#12258](https://github.com/youzan/vant/pull/12258)\n\n### v4.6.7\n\n`2023-09-04`\n\n#### New Features 🎉\n\n- feat(vant-use): add useRaf by [@Simon-He95](https://github.com/Simon-He95) in [#12211](https://github.com/youzan/vant/pull/12211)\n- feat(Checkbox): add indeterminate status by [@wjw-gavin](https://github.com/wjw-gavin) in [#12216](https://github.com/youzan/vant/pull/12216)\n- feat(auto-import-resolver): add auto-import-resolver package by [@wChenonly](https://github.com/wChenonly) in [#12227](https://github.com/youzan/vant/pull/12227)\n- feat(ConfigProvider): add theme-vars-scope props enable root affects by [@zhousg](https://github.com/zhousg) in [#12240](https://github.com/youzan/vant/pull/12240)\n\n#### Bug Fixes 🐞\n\n- fix(auto-import-resolver): type mismatch in TS projects by [@chenjiahan](https://github.com/chenjiahan) in [#12243](https://github.com/youzan/vant/pull/12243)\n- fix(eslint): using ignorePatterns to replace .eslintignore by [@MrXwq](https://github.com/MrXwq) in [#12237](https://github.com/youzan/vant/pull/12237)\n\n#### Document 📖\n\n- docs: improve the menu position of back-top by [@wjw-gavin](https://github.com/wjw-gavin) in [#12223](https://github.com/youzan/vant/pull/12223)\n- docs: improve use-raf document by [@chenjiahan](https://github.com/chenjiahan) in [#12224](https://github.com/youzan/vant/pull/12224)\n- docs: add Vite and Nuxt guide to quickstart by [@chenjiahan](https://github.com/chenjiahan) in [#12239](https://github.com/youzan/vant/pull/12239)\n- docs(auto-import-resolver): update README and folder name by [@chenjiahan](https://github.com/chenjiahan) in [#12241](https://github.com/youzan/vant/pull/12241)\n- docs(auto-import-resolver): add Rspack usage by [@chenjiahan](https://github.com/chenjiahan) in [#12242](https://github.com/youzan/vant/pull/12242)\n- docs(ConfigProvider): update the guide of modify CSS vars by [@chenjiahan](https://github.com/chenjiahan) in [#12246](https://github.com/youzan/vant/pull/12246)\n\n#### Other Changes\n\n- test: migrate test runner to vitest by [@chenjiahan](https://github.com/chenjiahan) in [#12206](https://github.com/youzan/vant/pull/12206)\n- chore(CI): fix codecov reporter by [@chenjiahan](https://github.com/chenjiahan) in [#12210](https://github.com/youzan/vant/pull/12210)\n- chore: use workspace protocol for internal deps by [@chenjiahan](https://github.com/chenjiahan) in [#12225](https://github.com/youzan/vant/pull/12225)\n- test: fix vitest canvas mock by [@chenjiahan](https://github.com/chenjiahan) in [#12226](https://github.com/youzan/vant/pull/12226)\n\n### v4.6.6\n\n`2023-08-20`\n\n#### New Features 🎉\n\n- feat(DropdownItem): supports boolean value in options by [@baboon-king](https://github.com/baboon-king) in [#12208](https://github.com/youzan/vant/pull/12208)\n\n#### Bug Fixes 🐞\n\n- fix(FloatingBubble): drag should not trigger click on child elements by [@zhousg](https://github.com/zhousg) in [#12201](https://github.com/youzan/vant/pull/12201)\n- fix(FloatingBubble): does not update state while hidden by [@zhousg](https://github.com/zhousg) in [#12207](https://github.com/youzan/vant/pull/12207)\n\n#### Other Changes\n\n- chore(CI): update issue comment messages by [@chenjiahan](https://github.com/chenjiahan) in [#12204](https://github.com/youzan/vant/pull/12204)\n- refactor(cli): remove execa dependency by [@chenjiahan](https://github.com/chenjiahan) in [#12205](https://github.com/youzan/vant/pull/12205)\n\n### v4.6.5\n\n`2023-08-16`\n\n#### New Features 🎉\n\n- feat(DropdownMenu): add swipe-threshold prop by [@inottn](https://github.com/inottn) in [#12117](https://github.com/youzan/vant/pull/12117)\n- types(Toast): add `ToastWrapperInstance` export by [@long-woo](https://github.com/long-woo) in [#12166](https://github.com/youzan/vant/pull/12166)\n- feat(FloatingBubble): use component attrs by [@zhousg](https://github.com/zhousg) in [#12171](https://github.com/youzan/vant/pull/12171)\n\n#### Bug Fixes 🐞\n\n- fix(FloatingPanel): Lag caused by scrollbar and panel movement #12146 by [@yue1123](https://github.com/yue1123) in [#12161](https://github.com/youzan/vant/pull/12161)\n- fix(FloatingPanel): change the default value of lock-scroll to false by [@inottn](https://github.com/inottn) in [#12162](https://github.com/youzan/vant/pull/12162)\n- fix(cli): should escape curly brackets in markdown by [@chenjiahan](https://github.com/chenjiahan) in [#12188](https://github.com/youzan/vant/pull/12188)\n\n#### Document 📖\n\n- docs: add instructions for bun package manager by [@colinhacks](https://github.com/colinhacks) in [#12182](https://github.com/youzan/vant/pull/12182)\n\n#### Other Changes\n\n- chore: add script to format GitHub changelog by [@chenjiahan](https://github.com/chenjiahan) in [#12158](https://github.com/youzan/vant/pull/12158)\n- chore(FloatingPanel): improve code style by [@chenjiahan](https://github.com/chenjiahan) in [#12175](https://github.com/youzan/vant/pull/12175)\n- refactor(cli): rewrite vite-plugin-md by [@chenjiahan](https://github.com/chenjiahan) in [#12179](https://github.com/youzan/vant/pull/12179)\n- chore(deps): bump markdown-it v13 and commander v11 by [@chenjiahan](https://github.com/chenjiahan) in [#12180](https://github.com/youzan/vant/pull/12180)\n- chore(CI): do not run codeql for pull request by [@chenjiahan](https://github.com/chenjiahan) in [#12181](https://github.com/youzan/vant/pull/12181)\n\n#### New Contributors\n\n- [@long-woo](https://github.com/long-woo) made their first contribution in [#12166](https://github.com/youzan/vant/pull/12166)\n- [@yue1123](https://github.com/yue1123) made their first contribution in [#12161](https://github.com/youzan/vant/pull/12161)\n- [@colinhacks](https://github.com/colinhacks) made their first contribution in [#12182](https://github.com/youzan/vant/pull/12182)\n- [@xincheng-1999](https://github.com/xincheng-1999) made their first contribution in [#12189](https://github.com/youzan/vant/pull/12189)\n\n### v4.6.4\n\n`2023-08-06`\n\n#### New Features 🎉\n\n- feat(area-data): update counties of WuHu by [@nivin-studio](https://github.com/nivin-studio) in [#12122](https://github.com/youzan/vant/pull/12122)\n- feat(Locale): add Serbian language to internationalization by [@RogerZXY](https://github.com/RogerZXY) in [#12145](https://github.com/youzan/vant/pull/12145)\n- feat(ImagePreview): add closeOnClickOverlay option by [@chenjiahan](https://github.com/chenjiahan) in [#12153](https://github.com/youzan/vant/pull/12153)\n- feat(List): add scroller prop by [@chenjiahan](https://github.com/chenjiahan) in [#12154](https://github.com/youzan/vant/pull/12154)\n- feat(FloatingPanel): add lock-scroll prop by [@inottn](https://github.com/inottn) in [#12157](https://github.com/youzan/vant/pull/12157)\n\n#### Bug Fixes 🐞\n\n- fix(TextEllipsis): dots repeated by [@muzaisimao](https://github.com/muzaisimao) in [#12120](https://github.com/youzan/vant/pull/12120)\n- fix(TextEllipsis): fix the logic of calculating the position of ellipsis by [@inottn](https://github.com/inottn) in [#12137](https://github.com/youzan/vant/pull/12137)\n\n#### Document 📖\n\n- docs: move PR title format to contribution guide by [@chenjiahan](https://github.com/chenjiahan) in [#12114](https://github.com/youzan/vant/pull/12114)\n- docs(Radio): add document description for the css var '--van-radio-dot-size' by [@wjw-gavin](https://github.com/wjw-gavin) in [#12152](https://github.com/youzan/vant/pull/12152)\n\n#### Other Changes\n\n- chore: avoid prettier breaking hbs template by [@chenjiahan](https://github.com/chenjiahan) in [#12113](https://github.com/youzan/vant/pull/12113)\n- chore(deps): bump release-it v16 by [@chenjiahan](https://github.com/chenjiahan) in [#12115](https://github.com/youzan/vant/pull/12115)\n- feat(get-deps): import('../foo.vue') => import('../foo.mjs') 的替换 by [@suncohey](https://github.com/suncohey) in [#12046](https://github.com/youzan/vant/pull/12046)\n- refactor(cli): rewrite release command by [@chenjiahan](https://github.com/chenjiahan) in [#12133](https://github.com/youzan/vant/pull/12133)\n- feat(cli): support gitTag option for release command by [@chenjiahan](https://github.com/chenjiahan) in [#12134](https://github.com/youzan/vant/pull/12134)\n- chore(CI): automatically generate changelog via GitHub by [@chenjiahan](https://github.com/chenjiahan) in [#12135](https://github.com/youzan/vant/pull/12135)\n- chore: add PR labeler action by [@chenjiahan](https://github.com/chenjiahan) in [#12136](https://github.com/youzan/vant/pull/12136)\n- chore(TextEllipsis): reuse actionText variable by [@chenjiahan](https://github.com/chenjiahan) in [#12138](https://github.com/youzan/vant/pull/12138)\n- refactor(cli): use GitHub changelog instead of conventional-changelog by [@chenjiahan](https://github.com/chenjiahan) in [#12139](https://github.com/youzan/vant/pull/12139)\n- chore: add Serbian to doc and rename the file by [@chenjiahan](https://github.com/chenjiahan) in [#12150](https://github.com/youzan/vant/pull/12150)\n- chore(eslint-config): bump dependencies by [@chenjiahan](https://github.com/chenjiahan) in [#12155](https://github.com/youzan/vant/pull/12155)\n\n#### New Contributors\n\n- [@muzaisimao](https://github.com/muzaisimao) made their first contribution in [#12120](https://github.com/youzan/vant/pull/12120)\n- [@suncohey](https://github.com/suncohey) made their first contribution in [#12046](https://github.com/youzan/vant/pull/12046)\n- [@nivin-studio](https://github.com/nivin-studio) made their first contribution in [#12122](https://github.com/youzan/vant/pull/12122)\n- [@RogerZXY](https://github.com/RogerZXY) made their first contribution in [#12145](https://github.com/youzan/vant/pull/12145)\n\n### [v4.6.3](https://github.com/vant-ui/vant/compare/v4.6.2...v4.6.3)\n\n`2023-07-23`\n\n**Feature**\n\n- AddressList: add show-add-button prop [#12090](https://github.com/vant-ui/vant/issues/12090)\n- CheckboxGroup: add shape prop [#12092](https://github.com/vant-ui/vant/issues/12092)\n- RadioGroup: add shape prop [#12092](https://github.com/vant-ui/vant/issu\n\n<!-- [TRUNCATED AT 50KB] -->\n\n<!-- File: packages/vant/docs/markdown/changelog.zh-CN.md (Tokens: ~20865 | Category: anthropic-skill) -->\n# 更新日志\n\n### 重要提示\n\n**为了避免重复维护，降低维护成本。**\n\n**从 v4.9.0 开始，Vant 的更新日志统一发布在 [GitHub 的 Releases 页面](https://github.com/youzan/vant/releases)，当前页面将不再更新。**\n\n当前文档为 Vant v4.0.0 ~ v4.9.0 的的更新日志，其他版本请参考：\n\n- [Vant 2 更新日志](/vant/v2/#/zh-CN/changelog)\n- [Vant 3 更新日志](/vant/v3/#/zh-CN/changelog)\n\n### 介绍\n\nVant 遵循 [Semver](https://semver.org/lang/zh-CN/) 语义化版本规范。\n\n**发布节奏**\n\n- 修订号：通常每隔 1 ~ 2 周发布，包含新特性和问题修复。\n- 次版本号：通常每隔 1 ~ 2 月发布，包含新组件或较大的功能更新，向下兼容。\n- 主版本号：无固定的发布时间，包含不兼容更新和重大功能更新。\n\n## 更新内容\n\n### v4.9.0\n\n`2024-05-02`\n\n#### 新功能 🎉\n\n- feat(Calendar)：添加 switch-mode 属性，由[@inottn](https://github.com/inottn) 贡献，在[#12836](https://github.com/youzan/vant/pull/12836)\n- feat(PickerGroup)：添加新属性 showToolbar，由[@ReinoFu](https://github.com/ReinoFu) 贡献，在[#12839](https://github.com/youzan/vant/pull/12839)\n- feat(CLI)：支持配置 Rsbuild，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12809](https://github.com/youzan/vant/pull/12809)\n\n#### Bug 修复 🐞\n\n- fix(cli)：修复 Vue SFC 样式绑定失败，由[@zoy-l](https://github.com/zoy-l) 贡献，在[#12799](https://github.com/youzan/vant/pull/12799)\n- fix(ImagePreview)：修复 swipeItem 可能为 undefined，由[@inottn](https://github.com/inottn) 贡献，在[#12818](https://github.com/youzan/vant/pull/12818)\n- fix(Highlight)：当 keywords 为空时正确渲染，由[@Jungzl](https://github.com/Jungzl) 贡献，在[#12829](https://github.com/youzan/vant/pull/12829)\n- fix(IndexBar)：当传入 sticky & stickyOffsetTop 时正确渲染激活锚点，由[@Jungzl](https://github.com/Jungzl) 贡献，在[#12837](https://github.com/youzan/vant/pull/12837)\n\n#### 文档 📖\n\n- docs: 移除所有 Gitee 链接，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12845](https://github.com/youzan/vant/pull/12845)\n- docs: 移除 gzip 大小徽章，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12847](https://github.com/youzan/vant/pull/12847)\n- docs: 修复 Rsbuild HTML 构建失败，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12848](https://github.com/youzan/vant/pull/12848)\n\n#### 其他更改\n\n- chore(deps)：升级依赖 terser 至 ^5.30.3，由[@renovate](https://github.com/renovate) 贡献，在[#12795](https://github.com/youzan/vant/pull/12795)\n- chore(deps)：升级依赖 eslint-plugin-vue 至 ^9.25.0，由[@renovate](https://github.com/renovate) 贡献，在[#12794](https://github.com/youzan/vant/pull/12794)\n- chore(deps)：更新所有补丁依赖，由[@renovate](https://github.com/renovate) 贡献，在[#12773](https://github.com/youzan/vant/pull/12773)\n- chore(workflow)：升级至 pnpm v9，由[@chenjiahan](https://github.com/chenjiahan) 贡献，在[#12808](https://github.com/youzan/vant/pull/12808)\n- chore：推送 github-pages-deploy-action[@v4](https://github.com/v4).6.0，由 @chenjiahan 贡献，在[#12810](https://github.com/youzan/vant/pull/12810)\n- chore(deps)：升级依赖 [@vitejs](https://github.com/vitejs)/plugin-vue 至 v5，由 @renovate 贡献，在[#12840](https://github.com/youzan/vant/pull/12840)\n- chore(deps)：升级依赖 commander 至 v12，由[@renovate](https://github.com/renovate) 贡献，在[#12841](https://github.com/youzan/vant/pull/12841)\n- chore(deps)：更新 actions/setup-node 行为至 v4，由[@renovate](https://github.com/renovate) 贡献，在[#12814](https://github.com/youzan/vant/pull/12814)\n- chore(deps)：更新 github/issue-labeler 行为至 v3.4，由[@renovate](https://github.com/renovate) 贡献，在[#12813](https://github.com/youzan/vant/pull/12813)\n- chore(deps)：更新 codecov/codecov-action 行为至 v4，由[@renovate](https://github.com/renovate) 贡献，在[#12815](https://github.com/youzan/vant/pull/12815)\n- chore(deps)：更新所有补丁依赖，由[@renovate](https://github.com/renovate) 贡献，在[#12812](https://github.com/youzan/vant/pull/12812)\n\n#### 新贡献者\n\n- [@ReinoFu](https://github.com/ReinoFu) 在[#12839](https://github.com/youzan/vant/pull/12839) 中首次贡献\n\n### v4.8.11\n\n`2024-04-14`\n\n#### 新功能 🎉\n\n- feat(DropdownMenu)：通过 [@inottn](https://github.com/inottn) 在 [#12785](https://github.com/youzan/vant/pull/12785) 中为选项添加 disabled 属性\n\n#### Bug 修复 🐞\n\n- fix：在 JetBrains IDE 中修复警告 `is not a valid value for v-model`，贡献者 [@anyesu](https://github.com/anyesu) 在 [#12787](https://github.com/youzan/vant/pull/12787)\n- fix(Cli)：移除站点的 tsconfig 文件，贡献者 [@chenjiahan](https://github.com/chenjiahan) 在 [#12792](https://github.com/youzan/vant/pull/12792)\n\n#### 文档 📖\n\n- docs(list)：更新模块代码加载错误信息，贡献者 [@wangjue666](https://github.com/wangjue666) 在 [#12778](https://github.com/youzan/vant/pull/12778)\n\n#### 其他变更\n\n- chore(deps)：更新依赖 eslint-plugin-vue 至 ^9.24.1，由 [@renovate](https://github.com/renovate) 在 [#12774](https://github.com/youzan/vant/pull/12774) 提交\n- chore(deps)：升级 Rsbuild 至 v0.6 版本，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12790](https://github.com/youzan/vant/pull/12790) 提交\n\n#### 新贡献者\n\n- [@wangjue666](https://github.com/wangjue666) 在 [#12778](https://github.com/youzan/vant/pull/12778) 中首次贡献\n- [@anyesu](https://github.com/anyesu) 在 [#12787](https://github.com/youzan/vant/pull/12787) 中首次贡献\n\n### v4.8.10\n\n`2024-04-06`\n\n#### 新功能 🎉\n\n- feat(TimePicker)：支持 confirm 和 getSelectedTime 方法，由 [@bluesky335](https://github.com/bluesky335) 在 [#12761](https://github.com/youzan/vant/pull/12761) 提供\n- feat(DatePicker)：支持 confirm 和 getSelectedDate 方法，由 [@bluesky335](https://github.com/bluesky335) 在 [#12762](https://github.com/youzan/vant/pull/12762) 提供\n- feat(Coupon)：支持复选框用法，由 [@CatsAndMice](https://github.com/CatsAndMice) 在 [#12744](https://github.com/youzan/vant/pull/12744) 提供\n\n#### 其他变更\n\n- chore(deps)：更新依赖 vite 至 v5.0.13 [安全]，由 [@renovate](https://github.com/renovate) 在 [#12767](https://github.com/youzan/vant/pull/12767) 提供\n- chore(deps)：更新所有补丁依赖项，由 [@renovate](https://github.com/renovate) 在 [#12756](https://github.com/youzan/vant/pull/12756) 提供\n- chore(deps)：更新依赖项 [@types](https://github.com/types)/lodash 至 ^4.17.0，由 [@renovate](https://github.com/renovate) 在 [#12757](https://github.com/youzan/vant/pull/12757) 提供\n- chore：修正 getSelectedTime 的返回类型，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12768](https://github.com/youzan/vant/pull/12768) 提供\n- refactor(Coupon)：简化复选框用法，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12771](https://github.com/youzan/vant/pull/12771) 提供\n\n#### 新贡献者\n\n- [@bluesky335](https://github.com/bluesky335) 在 [#12761](https://github.com/youzan/vant/pull/12761) 中首次贡献\n\n### v4.8.9\n\n`2024-04-06`\n\n无效版本，请勿使用。\n\n### v4.8.8\n\n`2024-03-31`\n\n#### 新特性 🎉\n\n- feat(image-preview): 导出 image 插槽的 onLoad 和 style 属性，由[@chouchouji](https://github.com/chouchouji) 在 [#12740](https://github.com/youzan/vant/pull/12740) 提交\n- feat(AddressList): 为 click-item 添加事件参数，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12748](https://github.com/youzan/vant/pull/12748) 提交\n\n#### 故障修复 🐞\n\n- fix(floating-bubble): 当值更改时更新偏移量，由[@chouchouji](https://github.com/chouchouji) 在 [#12730](https://github.com/youzan/vant/pull/12730) 提交\n- fix(vant-cli): 支持以定义的选项命名，由[@wChenonly](https://github.com/wChenonly) 在 [#12734](https://github.com/youzan/vant/pull/12734) 提交\n- fix(PickerGroup): 使用 v-for 时能够正确渲染，由[@inottn](https://github.com/inottn) 在 [#12732](https://github.com/youzan/vant/pull/12732) 提交\n- fix(TextEllipsis): 当组件被激活时应重新计算省略状态，由[@inottn](https://github.com/inottn) 在 [#12741](https://github.com/youzan/vant/pull/12741) 提交\n\n#### 文档更新 📖\n\n- docs(button): 保持中英文文档一致，由[@chouchouji](https://github.com/chouchouji) 在 [#12708](https://github.com/youzan/vant/pull/12708) 提交\n- docs(cell): 更正 label 的类型，由[@chouchouji](https://github.com/chouchouji) 在 [#12721](https://github.com/youzan/vant/pull/12721) 提交\n- docs(ImagePreview): 添加图片插槽缩放指导，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12751](https://github.com/youzan/vant/pull/12751) 提交\n\n#### 其他更改\n\n- chore(deps): 更新 vue-router 依赖至 v4.3.0，由[@renovate](https://github.com/renovate) 在 [#12702](https://github.com/youzan/vant/pull/12702) 提交\n- chore(deps): 更新 esbuild 依赖至 ^0.20.0，由[@renovate](https://github.com/renovate) 在 [#12696](https://github.com/youzan/vant/pull/12696) 提交\n- chore(workflow): 让 renovate 提升 package.json 版本，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12714](https://github.com/youzan/vant/pull/12714) 提交\n- chore(deps): 更新 eslint 依赖至 ^8.57.0，由[@renovate](https://github.com/renovate) 在 [#12723](https://github.com/youzan/vant/pull/12723) 提交\n- chore(docs): 更新 vue3-vant-mobile 参考文档，由[@CharleeWa](https://github.com/CharleeWa) 在 [#12735](https://github.com/youzan/vant/pull/12735) 提交\n- chore(deps): 更新 commander 依赖至 ^11.1.0，由[@renovate](https://github.com/renovate) 在 [#12718](https://github.com/youzan/vant/pull/12718) 提交\n- chore(deps): 更新 enquirer 依赖至 v2.4.1，由[@renovate](https://github.com/renovate) 在 [#12695](https://github.com/youzan/vant/pull/12695) 提交\n- chore(deps): 更新 [@vue](https://github.com/vue)/test-utils 依赖至 ^2.4.5，由 @renovate 在 [#12716](https://github.com/youzan/vant/pull/12716) 提交\n- chore(deps): 版本升至 Rsbuild v0.5，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12747](https://github.com/youzan/vant/pull/12747) 提交\n- chore(deps): 更新 eslint-config-prettier 依赖至 ^9.1.0，由[@renovate](https://github.com/renovate) 在 [#12724](https://github.com/youzan/vant/pull/12724) 提交\n- chore(deps): 更新 fs-extra 依赖至 ^11.2.0，由[@renovate](https://github.com/renovate) 在 [#12745](https://github.com/youzan/vant/pull/12745) 提交\n- chore(deps): 更新 highlight.js 依赖至 ^11.9.0，由[@renovate](https://github.com/renovate) 在 [#12746](https://github.com/youzan/vant/pull/12746) 提交\n- chore(deps): 更新 fast-glob 依赖至 ^3.3.2，由[@renovate](https://github.com/renovate) 在 [#12731](https://github.com/youzan/vant/pull/12731) 提交\n- chore(deps): 更新 less 依赖至 ^4.2.0，由[@renovate](https://github.com/renovate) 在 [#12752](https://github.com/youzan/vant/pull/12752) 提交\n- chore(workflow): 让 renovate 整合补丁更新，由[@chenjiahan](https://github.com/chenjiahan) 在 [#12754](https://github.com/youzan/vant/pull/12754) 提交\n\n#### 新贡献者\n\n- [@CharleeWa](https://github.com/CharleeWa) 在 [#12735](https://github.com/youzan/vant/pull/12735) 中首次贡献\n\n### v4.8.7\n\n`2024-03-18`\n\n#### 其他更改\n\n- 回退 \"chore(deps)：更新依赖 typescript 到 v5.4.2\" by [@renovate](https://github.com/renovate) in [#12700](https://github.com/youzan/vant/pull/12700)\n- 更新 `@vant/auto-import-resolver` homepage by [@yoyo837](https://github.com/yoyo837) in [#12704](https://github.com/youzan/vant/pull/12704)\n\n### v4.8.6\n\n`2024-03-17`\n\n#### 新功能 🎉\n\n- feat(ImagePreview)：添加 vertical 属性 [@suncohey](https://github.com/suncohey) 在 [#12660](https://github.com/youzan/vant/pull/12660)\n- feat(signature)：导出 clear 和 submit 方法 [@chouchouji](https://github.com/chouchouji) 在 [#12654](https://github.com/youzan/vant/pull/12654)\n- feat：支持 unplugin-auto-import 插件 [@DragonnZhang](https://github.com/DragonnZhang) 在 [#12679](https://github.com/youzan/vant/pull/12679)\n- feat(ActionSheet)：在 actions 数据中添加图标支持 [@wjw-gavin](https://github.com/wjw-gavin) 在 [#12671](https://github.com/youzan/vant/pull/12671)\n\n#### Bug 修复 🐞\n\n- fix(ImagePreview)：在当前图片被移动到边缘时，允许用户滑动到下一张图片 [@inottn](https://github.com/inottn) 在 [#12666](https://github.com/youzan/vant/pull/12666)\n- fix(ActionSheet)：图标类名 [@chenjiahan](https://github.com/chenjiahan) 在 [#12701](https://github.com/youzan/vant/pull/12701)\n\n#### 文档更新 📖\n\n- docs(ImagePreview)：添加 vertical 属性 [@chenjiahan](https://github.com/chenjiahan) 在 [#12663](https://github.com/youzan/vant/pull/12663)\n- docs：将 tab 的 'Before Change' 改为一个真正的异步函数 [@gxy5202](https://github.com/gxy5202) 在 [#12693](https://github.com/youzan/vant/pull/12693)\n\n#### 其他更改\n\n- chore(deps)：Rsbuild 升级到 0.4.12 [@chenjiahan](https://github.com/chenjiahan) 在 [#12665](https://github.com/youzan/vant/pull/12665)\n- chore(deps)：更新依赖 [@vue](https://github.com/vue)/test-utils 到 v2.4.5 @renovate 在 [#12681](https://github.com/youzan/vant/pull/12681)\n- chore(deps)：更新依赖 autoprefixer 到 v10.4.18 [@renovate](https://github.com/renovate) 在 [#12682](https://github.com/youzan/vant/pull/12682)\n- chore(workflow)：禁用依赖仪表板 [@chenjiahan](https://github.com/chenjiahan) 在 [#12686](https://github.com/youzan/vant/pull/12686)\n- chore(deps)：更新依赖 prettier 到 v3.2.5 [@renovate](https://github.com/renovate) 在 [#12685](https://github.com/youzan/vant/pull/12685)\n- chore(deps)：更新 Rsbuild 到 v0.4.15 [@renovate](https://github.com/renovate) 在 [#12688](https://github.com/youzan/vant/pull/12688)\n- chore(deps)：更新依赖 eslint 到 v8.57.0 [@renovate](https://github.com/renovate) 在 [#12697](https://github.com/youzan/vant/pull/12697)\n- chore(deps)：更新依赖 typescript 到 v5.4.2 [@renovate](https://github.com/renovate) 在 [#12700](https://github.com/youzan/vant/pull/12700)\n\n#### 新贡献者\n\n- [@chouchouji](https://github.com/chouchouji) 在 [#12654](https://github.com/youzan/vant/pull/12654) 做出了首次贡献\n- [@renovate](https://github.com/renovate) 在 [#12681](https://github.com/youzan/vant/pull/12681) 做出了首次贡献\n- [@gxy5202](https://github.com/gxy5202) 在 [#12693](https://github.com/youzan/vant/pull/12693) 做出了首次贡献\n- [@DragonnZhang](https://github.com/DragonnZhang) 在 [#12679](https://github.com/youzan/vant/pull/12679) 做出了首次贡献\n\n### v4.8.5\n\n`2024-02-25`\n\n#### 新功能 🎉\n\n- feat(Image): 新增 `crossorigin` 和 `referrerpolicy` 属性 by [@Jungzl](https://github.com/Jungzl) in [#12641](https://github.com/youzan/vant/pull/12641)\n\n#### Bug修复 🐞\n\n- fix(NumberKeyboard): 当主题为自定义时正确渲染删除插槽 by [@TPORL](https://github.com/TPORL) in [#12624](https://github.com/youzan/vant/pull/12624)\n\n#### 文档 📖\n\n- docs: 更新与 Picker 事件相关的参数文档 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12619](https://github.com/youzan/vant/pull/12619)\n- docs(DatePicker): 修复英文文档错误 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12620](https://github.com/youzan/vant/pull/12620)\n- docs(Uploader): 修复丢失双引号问题 by [@nemo-shen](https://github.com/nemo-shen) in [#12627](https://github.com/youzan/vant/pull/12627)\n- docs: 新增完整注册指南 by [@chenjiahan](https://github.com/chenjiahan) in [#12628](https://github.com/youzan/vant/pull/12628)\n- docs: 新增Rsbuild按需引入指南 by [@chenjiahan](https://github.com/chenjiahan) in [#12629](https://github.com/youzan/vant/pull/12629)\n\n#### 其他更改\n\n- Revert \"fix(DropdownMenu): 当传递对象字面量给title-class时修复递归更新问题 (#12614)\" by [@inottn](https://github.com/inottn) in [#12617](https://github.com/youzan/vant/pull/12617)\n- chore(deps): 提升 Rsbuild 至 v0.4 版本 by [@chenjiahan](https://github.com/chenjiahan) in [#12625](https://github.com/youzan/vant/pull/12625)\n- chore(workflow): 设置 renovate 配置 by [@chenjiahan](https://github.com/chenjiahan) in [#12626](https://github.com/youzan/vant/pull/12626)\n- test: 跳过图像 SSR 测试案例 by [@chenjiahan](https://github.com/chenjiahan) in [#12644](https://github.com/youzan/vant/pull/12644)\n\n#### 新贡献者\n\n- [@TPORL](https://github.com/TPORL) 在 [#12624](https://github.com/youzan/vant/pull/12624) 中首次贡献\n\n### v4.8.4\n\n`2024-02-03`\n\n#### 新功能 🎉\n\n- feat(Picker): 允许隐藏工具栏按钮 by [@chenjiahan](https://github.com/chenjiahan) in [#12599](https://github.com/youzan/vant/pull/12599)\n\n#### 问题修复 🐞\n\n- fix(Sticky): 初始黏贴位置 by [@nemo-shen](https://github.com/nemo-shen) in [#12601](https://github.com/youzan/vant/pull/12601)\n- fix(DropdownMenu): 修复传递对象字面量到 title-class 时的递归更新问题 by [@inottn](https://github.com/inottn) in [#12614](https://github.com/youzan/vant/pull/12614)\n\n#### 文档 📖\n\n- docs: 改进快速启动提示 by [@inottn](https://github.com/inottn) in [#12606](https://github.com/youzan/vant/pull/12606)\n\n#### 其他改变\n\n- chore(deps): 升级 Rsbuild 至 0.3.9 by [@chenjiahan](https://github.com/chenjiahan) in [#12600](https://github.com/youzan/vant/pull/12600)\n- chore: 避免工作流在 forked repo 上运行 by [@tolking](https://github.com/tolking) in [#12607](https://github.com/youzan/vant/pull/12607)\n- chore(workflow): 使用新的 M1 macOS 运行器 by [@chenjiahan](https://github.com/chenjiahan) in [#12615](https://github.com/youzan/vant/pull/12615)\n\n### v4.8.3\n\n`2024-01-20`\n\n#### 新功能 🎉\n\n- feat(Notify): 添加 teleport 属性，由 [@inottn](https://github.com/inottn) 贡献于 [#12556](https://github.com/youzan/vant/pull/12556)\n- feat(TextEllipsis): 添加 `action` 插槽，由 [@nemo-shen](https://github.com/nemo-shen) 贡献于 [#12560](https://github.com/youzan/vant/pull/12560)\n- feat(ImagePreview): 添加 close-on-click-image 属性，由 [@inottn](https://github.com/inottn) 贡献于 [#12566](https://github.com/youzan/vant/pull/12566)\n- feat(icons): 添加图标 `arrow-double-left` 和 `arrow-double-right`，由 [@nemo-shen](https://github.com/nemo-shen) 贡献于 [#12579](https://github.com/youzan/vant/pull/12579)\n- feat(Toast): 添加 z-index 属性，由 [@inottn](https://github.com/inottn) 贡献于 [#12587](https://github.com/youzan/vant/pull/12587)\n\n#### 问题修复 🐞\n\n- fix(Tab): 带 sticky 属性的标签页在切换后丢失 'fixed' 类名，由 [@nemo-shen](https://github.com/nemo-shen) 贡献于 [#12547](https://github.com/youzan/vant/pull/12547)\n- fix(Image): 之前未导出 ImagePosition 类型，由 [@Jungzl](https://github.com/Jungzl) 贡献于 [#12549](https://github.com/youzan/vant/pull/12549)\n- fix(Tabs): 将 van-border-radius-sm 更改为 van-radius-sm，由 [@edram](https://github.com/edram) 贡献于 [#12576](https://github.com/youzan/vant/pull/12576)\n\n#### 文档更新 📖\n\n- docs(Lazyload): 修复 preLoad 类型错误和拼写错误，由 [@RSS1102](https://github.com/RSS1102) 贡献于 [#12554](https://github.com/youzan/vant/pull/12554)\n- docs(home): 更新标题层级，由 [@inottn](https://github.com/inottn) 贡献于 [#12577](https://github.com/youzan/vant/pull/12577)\n\n#### 其他变更\n\n- test: 将 vitest 升级到 v1.1.3，由 [@inottn](https://github.com/inottn) 贡献于 [#12546](https://github.com/youzan/vant/pull/12546)\n- chore(deps): 将 Rsbuild 升级到 v0.3.2，由 [@chenjiahan](https://github.com/chenjiahan) 贡献于 [#12565](https://github.com/youzan/vant/pull/12565)\n- chore(deps): 将 vue 升级到 v3.4.13，由 [@inottn](https://github.com/inottn) 贡献于 [#12567](https://github.com/youzan/vant/pull/12567)\n- chore(deps): 将 vite 从 5.0.11 升级到 5.0.12，由 [@dependabot](https://github.com/dependabot) 贡献于 [#12588](https://github.com/youzan/vant/pull/12588)\n\n#### 新贡献者\n\n- [@edram](https://github.com/edram) 在 [#12576](https://github.com/youzan/vant/pull/12576) 中首次贡献\n\n### v4.8.2\n\n`2024-01-03`\n\n#### 新功能 🎉\n\n- feat: 支持从 shadow DOM 中链接 CSS [@yoyo837](https://github.com/yoyo837) 在 [#12526](https://github.com/youzan/vant/pull/12526)\n- feat(DropdownMenu): 新增 auto-locate 属性 [@inottn](https://github.com/inottn) 在 [#12251](https://github.com/youzan/vant/pull/12251)\n\n#### 性能提升 🚀\n\n- perf(CLI): 提升 markdown 编译性能 [@chenjiahan](https://github.com/chenjiahan) 在 [#12541](https://github.com/youzan/vant/pull/12541)\n\n#### Bug 修复 🐞\n\n- fix(ci): 在 Windows 上修复 eslint [@Jungzl](https://github.com/Jungzl) 在 [#12516](https://github.com/youzan/vant/pull/12516)\n- fix(ImagePreview): 在某些情况下双倍缩放和点击遮罩关闭可能无法工作 [@inottn](https://github.com/inottn) 在 [#12521](https://github.com/youzan/vant/pull/12521)\n\n#### 其他更改\n\n- chore(deps): 升级 Rsbuild 至 v0.2.8 [@chenjiahan](https://github.com/chenjiahan) 在 [#12519](https://github.com/youzan/vant/pull/12519)\n- chore(deps): 升级 Vue 至 3.4.0-beta.4 [@chenjiahan](https://github.com/chenjiahan) 在 [#12520](https://github.com/youzan/vant/pull/12520)\n- test: 升级 vitest 至 v1.1.0 [@chenjiahan](https://github.com/chenjiahan) 在 [#12522](https://github.com/youzan/vant/pull/12522)\n- chore(deps): 升级 vite 至 v5 [@chenjiahan](https://github.com/chenjiahan) 在 [#12523](https://github.com/youzan/vant/pull/12523)\n- chore(deps): 升级 esbuild 至 v0.19 [@chenjiahan](https://github.com/chenjiahan) 在 [#12524](https://github.com/youzan/vant/pull/12524)\n- chore: 锁定 Rspack 至 v0.4.3 以修复 CSS 问题 [@chenjiahan](https://github.com/chenjiahan) 在 [#12525](https://github.com/youzan/vant/pull/12525)\n- chore(workflow): 调整问题模板 [@chenjiahan](https://github.com/chenjiahan) 在 [#12528](https://github.com/youzan/vant/pull/12528)\n- chore(workflow): 更新 codesandbox 链接 [@chenjiahan](https://github.com/chenjiahan) 在 [#12529](https://github.com/youzan/vant/pull/12529)\n- chore: 更新 vitest 配置 [@inottn](https://github.com/inottn) 在 [#12530](https://github.com/youzan/vant/pull/12530)\n- chore(deps): 升级 Rsbuild 和 Vue [@chenjiahan](https://github.com/chenjiahan) 在 [#12532](https://github.com/youzan/vant/pull/12532)\n- chore(ImagePreview): 重用 isTap 引用 [@inottn](https://github.com/inottn) 在 [#12536](https://github.com/youzan/vant/pull/12536)\n- test(Toast): 减少测试运行时间 [@inottn](https://github.com/inottn) 在 [#12538](https://github.com/youzan/vant/pull/12538)\n- test(FloatingBubble): 减少测试运行时间 [@inottn](https://github.com/inottn) 在 [#12539](https://github.com/youzan/vant/pull/12539)\n- release: 发布 vant v4.8.2 [@chenjiahan](https://github.com/chenjiahan) 在 [#12542](https://github.com/youzan/vant/pull/12542)\n\n### v4.8.1\n\n`2023-12-17`\n\n#### 新功能 🎉\n\n- perf(TextEllipsis): 重用 windowWidth 以避免重复计算 by [@inottn](https://github.com/inottn) in [#12471](https://github.com/youzan/vant/pull/12471)\n- feat(TextEllipsis): 添加 toggle 实例方法 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12472](https://github.com/youzan/vant/pull/12472)\n- feat(cli): 升级 Rsbuild 到 v0.2.2 by [@chenjiahan](https://github.com/chenjiahan) in [#12502](https://github.com/youzan/vant/pull/12502)\n\n#### 性能优化 🚀\n\n- perf(cli): 禁用 source map 以加快编译速度 by [@chenjiahan](https://github.com/chenjiahan) in [#12484](https://github.com/youzan/vant/pull/12484)\n\n#### Bug 修复 🐞\n\n- fix(cli): 在模板中删除未使用的脚本 by [@chenjiahan](https://github.com/chenjiahan) in [#12482](https://github.com/youzan/vant/pull/12482)\n- fix(TextEllipsis): 修复 toggle 的缺少参数 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12483](https://github.com/youzan/vant/pull/12483)\n\n#### 文档 📖\n\n- docs(collapse): 修复缺少的引用标签 by [@RSS1102](https://github.com/RSS1102) in [#12460](https://github.com/youzan/vant/pull/12460)\n- docs(collapse): 修复翻译错误 by [@RSS1102](https://github.com/RSS1102) in [#12464](https://github.com/youzan/vant/pull/12464)\n- docs(dialog): 修复翻译错误并保持示例代码不变 by [@RSS1102](https://github.com/RSS1102) in [#12465](https://github.com/youzan/vant/pull/12465)\n- docs(TreeSelect): 修正变量名 by [@inottn](https://github.com/inottn) in [#12469](https://github.com/youzan/vant/pull/12469)\n- docs: 添加 Rsbuild 脚手架指南 by [@chenjiahan](https://github.com/chenjiahan) in [#12475](https://github.com/youzan/vant/pull/12475)\n- docs(image-preview): 补充 className 的使用方法 by [@RSS1102](https://github.com/RSS1102) in [#12491](https://github.com/youzan/vant/pull/12491)\n- docs(Quickstart): 更新 unplugin-vue-components 的使用方法 (#12499) by [@wChenonly](https://github.com/wChenonly) in [#12500](https://github.com/youzan/vant/pull/12500)\n\n#### 其他变更\n\n- chore(workflow): 为 PR 添加 perf 标签 by [@chenjiahan](https://github.com/chenjiahan) in [#12473](https://github.com/youzan/vant/pull/12473)\n- refactor(CLI): 整合 Rsbuild 以构建网站 by [@chenjiahan](https://github.com/chenjiahan) in [#12481](https://github.com/youzan/vant/pull/12481)\n- chore: 升级 Rspack 到 0.4.2 以修复中文路径问题 by [@chenjiahan](https://github.com/chenjiahan) in [#12496](https://github.com/youzan/vant/pull/12496)\n- chore(deps): 从 4.4.9 升级 vite 到 4.4.12 by [@dependabot](https://github.com/dependabot) in [#12493](https://github.com/youzan/vant/pull/12493)\n\n#### 新贡献者\n\n- [@RSS1102](https://github.com/RSS1102) 在 [#12460](https://github.com/youzan/vant/pull/12460) 中作出了他们的首次贡献\n\n### v4.8.0\n\n`2023-11-19`\n\n#### 新组件 🎉\n\n- 新增 Highlight 组件，由 [@wjw-gavin](https://github.com/wjw-gavin) 和 [@inottn](https://github.com/inottn) 贡献 ❤️ [#12434](https://github.com/youzan/vant/pull/12434)\n\n#### 新功能\n\n- feat(ImagePreview): 由 [@inottn](https://github.com/inottn) 在 [#12426](https://github.com/youzan/vant/pull/12426) 中增加 resetScale 方法\n- feat(Checker): 由 [@inottn](https://github.com/inottn) 在 [#12436](https://github.com/youzan/vant/pull/12436) 中向默认插槽添加 checked 和 disabled 参数\n- feat(Row): 由 [@cc-hearts](https://github.com/cc-hearts) 在 [#12439](https://github.com/youzan/vant/pull/12439) 中支持 gutter 垂直间距\n\n#### Bug 修复 🐞\n\n- fix(Calendar): 由 [@cc-hearts](https://github.com/cc-hearts) 在 [#12425](https://github.com/youzan/vant/pull/12425) 中支持副标题的响应式\n\n#### 文档 📖\n\n- docs(field): 由 [@Simon-He95](https://github.com/Simon-He95) 在 [#12429](https://github.com/youzan/vant/pull/12429) 中更新 props size\n- docs(cell): 由 [@Simon-He95](https://github.com/Simon-He95) 在 [#12427](https://github.com/youzan/vant/pull/12427) 中更新 props size\n- docs(Highlight): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12438](https://github.com/youzan/vant/pull/12438) 中添加版本提示\n- docs(Overlay): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12454](https://github.com/youzan/vant/pull/12454) 中添加设置 z-index 的演示\n- docs: 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12455](https://github.com/youzan/vant/pull/12455) 中将 Rsbuild 添加到快速入门指南\n\n#### 其他变更\n\n- chore(deps): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12414](https://github.com/youzan/vant/pull/12414) 中修复了 babel 和 postcss 的安全警报\n\n#### 新贡献者\n\n- [@cc-hearts](https://github.com/cc-hearts) 在 [#12425](https://github.com/youzan/vant/pull/12425) 中进行了首次贡献\n\n### v4.7.3\n\n`2023-10-29`\n\n#### 新功能 🎉\n\n- feat(locale): 添加阿拉伯语本地化支持 by [@mo9a7i](https://github.com/mo9a7i) in [#12381](https://github.com/youzan/vant/pull/12381)\n- feat(Form): 添加 required 属性并支持自动显示 by [@chenjiahan](https://github.com/chenjiahan) in [#12380](https://github.com/youzan/vant/pull/12380)\n- feat(auto-import-resolver): 添加模块选项 by [@chenjiahan](https://github.com/chenjiahan) in [#12383](https://github.com/youzan/vant/pull/12383)\n- style: 使用 overflow-wrap 替换 word-break by [@wjw-gavin](https://github.com/wjw-gavin) in [#12396](https://github.com/youzan/vant/pull/12396)\n- feat(Tab): 添加 show-header 属性 by [@yoyo837](https://github.com/yoyo837) in [#12394](https://github.com/youzan/vant/pull/12394)\n- style(Search): 在显示错误消息时使用一致的内边距 by [@chenjiahan](https://github.com/chenjiahan) in [#12409](https://github.com/youzan/vant/pull/12409)\n- feat(Signature): 公开 resize 方法 by [@inottn](https://github.com/inottn) in [#12405](https://github.com/youzan/vant/pull/12405)\n\n#### Bug 修复 🐞\n\n- fix(ConfigProvider): 导出丢失的主题变量 by [@inottn](https://github.com/inottn) in [#12371](https://github.com/youzan/vant/pull/12371)\n- fix(AddressEdit): 当 showArea 为 false 时区域字段验证错误 by [@zhousg](https://github.com/zhousg) in [#12393](https://github.com/youzan/vant/pull/12393)\n- fix([@vant](https://github.com/vant)/area-data): 添加导出类型 by @Alkaidcc in [#12397](https://github.com/youzan/vant/pull/12397)\n- fix(Search): 修复显示错误消息时的搜索样式问题 by [@johnsonwong666](https://github.com/johnsonwong666) in [#12385](https://github.com/youzan/vant/pull/12385)\n- fix(PickerGroup): 仅过滤 Comment vnode by [@zhousg](https://github.com/zhousg) in [#12402](https://github.com/youzan/vant/pull/12402)\n\n#### 文档 📖\n\n- docs(auto-import-resolver): 添加 importStyle 选项的文档 by [@chenjiahan](https://github.com/chenjiahan) in [#12382](https://github.com/youzan/vant/pull/12382)\n- docs(Tab): 保持文档和示例的一致性 by [@wjw-gavin](https://github.com/wjw-gavin) in [#12395](https://github.com/youzan/vant/pull/12395)\n- chore: 将 vscode-common-intellisense 添加到社区生态系统中 by [@Simon-He95](https://github.com/Simon-He95) in [#12406](https://github.com/youzan/vant/pull/12406)\n- docs(Signature): 添加 resize 方法 by [@chenjiahan](https://github.com/chenjiahan) in [#12411](https://github.com/youzan/vant/pull/12411)\n- docs(progress): 移除过时的 resize 方法 by [@chenjiahan](https://github.com/chenjiahan) in [#12412](https://github.com/youzan/vant/pull/12412)\n\n#### 其他变更\n\n- chore(Field): 当 rules 包含 required 时，必填标签的 CSS 将生效 by [@morance](https://github.com/morance) in [#12376](https://github.com/youzan/vant/pull/12376)\n- test(ImagePreview): 修复不正确的 onClose 测试用例 by [@chenjiahan](https://github.com/chenjiahan) in [#12386](https://github.com/youzan/vant/pull/12386)\n- chore: forked 仓库，跳过 CI 运行 by [@yoyo837](https://github.com/yoyo837) in [#12410](https://github.com/youzan/vant/pull/12410)\n\n#### 新贡献者\n\n- [@morance](https://github.com/morance) 在 [#12376](https://github.com/youzan/vant/pull/12376) 中进行了首次贡献\n- [@mo9a7i](https://github.com/mo9a7i) 在 [#12381](https://github.com/youzan/vant/pull/12381) 中进行了首次贡献\n- [@Alkaidcc](https://github.com/Alkaidcc) 在 [#12397](https://github.com/youzan/vant/pull/12397) 中进行了首次贡献\n- [@johnsonwong666](https://github.com/johnsonwong666) 在 [#12385](https://github.com/youzan/vant/pull/12385) 中进行了首次贡献\n\n### v4.7.2\n\n`2023-10-15`\n\n#### 新功能 🎉\n\n- feat(Icon): 添加 font-family CSS 变量，由 [@JeremyFan](https://github.com/JeremyFan) 在 [#12354](https://github.com/youzan/vant/pull/12354) 中贡献\n- feat(ImagePreview): 添加 doubleScale 选项，由 [@coderXMin](https://github.com/coderXMin) 在 [#12360](https://github.com/youzan/vant/pull/12360) 中贡献\n\n#### Bug 修复 🐞\n\n- fix(Icons): 使图标与 Vant 2 的浏览器范围兼容，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12356](https://github.com/youzan/vant/pull/12356) 中贡献\n- fix(Uploader): 修复了多次重新上传只选择一个以及取消选择的问题，由 [@zhousg](https://github.com/zhousg) 在 [#12359](https://github.com/youzan/vant/pull/12359) 中贡献\n\n#### 其他更改\n\n- refactor(Signature): 避免在下一个 tick 中设置 canvas 的宽度和高度，由 [@inottn](https://github.com/inottn) 在 [#12347](https://github.com/youzan/vant/pull/12347) 中贡献\n- refactor(Signature): 使用 scale 方法提高清晰度，由 [@inottn](https://github.com/inottn) 在 [#12363](https://github.com/youzan/vant/pull/12363) 中贡献\n- chore(deps): 将 rslog 版本提升至 v1.1.0，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12364](https://github.com/youzan/vant/pull/12364) 中贡献\n- chore(cli): 合并欢迎日志，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12365](https://github.com/youzan/vant/pull/12365) 中贡献\n- chore(ImagePreview): 重命名 doubleScale 并添加测试用例，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12366](https://github.com/youzan/vant/pull/12366) 中贡献\n\n#### 新贡献者\n\n- [@coderXMin](https://github.com/coderXMin) 在 [#12360](https://github.com/youzan/vant/pull/12360) 中进行了他的首次贡献\n\n### v4.7.1\n\n`2023-10-06`\n\n#### 新功能 🎉\n\n- feat(FloatingPanel): 优化弹跳动画，由 [@zhousg](https://github.com/zhousg) 在 [#12317](https://github.com/youzan/vant/pull/12317) 中贡献\n- feat(cli): 使用 rslog，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12334](https://github.com/youzan/vant/pull/12334) 中贡献\n- style(Swipe): 声明 `transition-property` 样式，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12336](https://github.com/youzan/vant/pull/12336) 中贡献\n- feat(Notify): 为辅助函数添加 JSDoc，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12342](https://github.com/youzan/vant/pull/12342) 中贡献\n- feat(Dialog): 为辅助函数添加 JSDoc，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12343](https://github.com/youzan/vant/pull/12343) 中贡献\n- feat(Toast): 为辅助函数添加 JSDoc，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12344](https://github.com/youzan/vant/pull/12344) 中贡献\n\n#### Bug 修复 🐞\n\n- fix(Popup): 修复无法继承 scopedId 的问题，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12327](https://github.com/youzan/vant/pull/12327) 中贡献\n- fix(CellGroup): 修复带有标题时无法继承 scopeId 的问题，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12328](https://github.com/youzan/vant/pull/12328) 中贡献\n- fix(Popover): 修复无法继承 scopedId 的问题，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12329](https://github.com/youzan/vant/pull/12329) 中贡献\n\n#### 文档 📖\n\n- docs: 修复 Form 中的拼写错误，由 [@zcvvvbb](https://github.com/zcvvvbb) 在 [#12322](https://github.com/youzan/vant/pull/12322) 中贡献\n- docs: 添加更多生态项目，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12338](https://github.com/youzan/vant/pull/12338) 中贡献\n- docs(ImagePreview): 改进英文文档，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12345](https://github.com/youzan/vant/pull/12345) 中贡献\n- docs: 修复将 Georqia 错误拼写为 Georgia 的问题，由 [@mahnunchik](https://github.com/mahnunchik) 在 [#12331](https://github.com/youzan/vant/pull/12331) 中贡献\n\n#### 其他变更\n\n- chore(Swipe): 限制 transform 的小数位数，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12337](https://github.com/youzan/vant/pull/12337) 中贡献\n- chore: 升级 pnpm 到 v8.8.0，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12339](https://github.com/youzan/vant/pull/12339) 中贡献\n- chore(deps): 将 postcss 从 8.4.27 升级到 8.4.31，由 [@dependabot](https://github.com/dependabot) 在 [#12341](https://github.com/youzan/vant/pull/12341) 中贡献\n\n#### 新贡献者\n\n- [@zcvvvbb](https://github.com/zcvvvbb) 在 [#12322](https://github.com/youzan/vant/pull/12322) 中首次贡献\n- [@mahnunchik](https://github.com/mahnunchik) 在 [#12331](https://github.com/youzan/vant/pull/12331) 中首次贡献\n\n### v4.7.0\n\n`2023-09-24`\n\n#### 🍭 图标更新\n\n- 图标：添加一个实底的 `records` 图标\n- 图标：添加一个实底的 `contact` 图标\n- 图标：添加一个实底的 `discount` 图标\n- 图标：添加一个实底的 `completed` 图标\n- 图标：添加一个实底的 `description` 图标\n- 图标：添加一个实底的 `cash-back-record` 图标\n- 图标：添加新的 `user` 图标\n- 图标：添加新的 `notes` 图标\n- 图标：添加新的 `newspaper` 图标\n- 图标：添加新的 `list-switch` 图标\n- 图标：添加新的 `list-switching` 图标\n- 图标：将以前的 `records` 图标重命名为 `records-o`\n- 图标：将以前的 `contact` 图标重命名为 `contact-o`\n- 图标：将以前的 `discount` 图标重命名为 `discount-o`\n- 图标：将以前的 `completed` 图标重命名为 `completed-o`\n- 图标：将以前的 `description` 图标重命名为 `description-o`\n- 图标：将以前的 `cash-back-record` 图标重命名为 `cash-back-record-o`\n\n#### 新功能 🎉\n\n- feat(Calendar): 由 [@LadyChatterleyLover](https://github.com/LadyChatterleyLover) 在 [#12274](https://github.com/youzan/vant/pull/12274) 中添加了 `click-disabled-date` 事件\n- feat(Uploader): 由 [@xieyezi](https://github.com/xieyezi) 在 [#12280](https://github.com/youzan/vant/pull/12280) 中添加了 `--van-uploader-border-radius` CSS 变量\n- feat(SwipeCell): 由 [@nined9](https://github.com/nined9) 在 [#12309](https://github.com/youzan/vant/pull/12309) 中修复了运行 `beforeClose` 时点击外部触发关闭的问题\n- feat(AddressEdit): 由 [@zhousg](https://github.com/zhousg) 在 [#12310](https://github.com/youzan/vant/pull/12310) 中为姓名和电话输入添加了 `change` 事件\n- types(Dialog): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12316](https://github.com/youzan/vant/pull/12316) 中改进了 `showDialog` 的返回类型\n\n#### Bug 修复 🐞\n\n- fix(Picker): 由 [@lllomh](https://github.com/lllomh) 在 [#12300](https://github.com/youzan/vant/pull/12300) 中修复了弹出窗口的内容与中文版本不一致的问题\n- fix(Signature): 由 [@sywyyhykkk](https://github.com/sywyyhykkk) 在 [#12304](https://github.com/youzan/vant/pull/12304) 中修复了当设置了背景颜色时检查画布是否为空的问题\n- fix(FloatingPanel): 由 [@zhousg](https://github.com/zhousg) 在 [#12314](https://github.com/youzan/vant/pull/12314) 中修复了向下拖动导致页面移动的问题\n\n#### 文档 📖\n\n- docs(Picker): 由 [@MrXwq](https://github.com/MrXwq) 在 [#12275](https://github.com/youzan/vant/pull/12275) 中改进了 Picker 的文档\n- docs(Uploader): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12289](https://github.com/youzan/vant/pull/12289) 中添加了有关相机权限的常见问题解答\n\n#### 其他变更\n\n- test(Dialog): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12315](https://github.com/youzan/vant/pull/12315) 中启用了函数调用测试用例\n- fix(cli): 由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12292](https://github.com/youzan/vant/pull/12292) 中允许在发布时缺少构建脚本\n\n#### 新贡献者\n\n- [@nined9](https://github.com/nined9) 在 [#12309](https://github.com/youzan/vant/pull/12309) 中进行了首次贡献\n- [@sywyyhykkk](https://github.com/sywyyhykkk) 在 [#12304](https://github.com/youzan/vant/pull/12304) 中进行了首次贡献\n\n### v4.6.8\n\n`2023-09-10`\n\n#### 新功能 🎉\n\n- feat(Cell): 添加 CSS 变量用于自定义 Value 的字体大小 by [@inottn](https://github.com/inottn) in [#12260](https://github.com/youzan/vant/pull/12260)\n- feat(ConfigProvider): 补充 ConfigProviderThemeVars 的类型声明 by [@xieyezi](https://github.com/xieyezi) in [#12264](https://github.com/youzan/vant/pull/12264)\n- feat(NavBar): 添加 leftDisabled 和 rightDisabled 属性 by [@m-xlsea](https://github.com/m-xlsea) in [#12258](https://github.com/youzan/vant/pull/12258)\n\n#### Bug 修复 🐞\n\n- fix(ConfigProvider): 修复设置某些基础主题变量失败的问题 by [@chenjiahan](https://github.com/chenjiahan) in [#12272](https://github.com/youzan/vant/pull/12272)\n- fix(ConfigProvider): 修复 ConfigProviderThemeVars 的 fontSizeXs 命名错误 by [@xieyezi](https://github.com/xieyezi) in [#12267](https://github.com/youzan/vant/pull/12267)\n\n#### 文档 📖\n\n- docs(NavBar): 添加禁用按钮示例 by [@chenjiahan](https://github.com/chenjiahan) in [#12270](https://github.com/youzan/vant/pull/12270)\n\n#### 其他变更\n\n- chore(CI): 启用单一提交以减小仓库大小 by [@chenjiahan](https://github.com/chenjiahan) in [#12268](https://github.com/youzan/vant/pull/12268)\n- chore(CI): 升级 actions 版本 by [@chenjiahan](https://github.com/chenjiahan) in [#12269](https://github.com/youzan/vant/pull/12269)\n- chore: 将 Axure 文件移动到 vant-assets 仓库 by [@chenjiahan](https://github.com/chenjiahan) in [#12271](https://github.com/youzan/vant/pull/12271)\n\n#### 新贡献者\n\n- [@xieyezi](https://github.com/xieyezi) 在 [#12264](https://github.com/youzan/vant/pull/12264) 中首次贡献\n- [@m-xlsea](https://github.com/m-xlsea) 在 [#12258](https://github.com/youzan/vant/pull/12258) 中首次贡献\n\n### v4.6.7\n\n`2023-09-04`\n\n#### 新功能 🎉\n\n- feat(vant-use): 添加 useRaf，由 [@Simon-He95](https://github.com/Simon-He95) 在 [#12211](https://github.com/youzan/vant/pull/12211) 中贡献\n- feat(Checkbox): 添加不确定状态，由 [@wjw-gavin](https://github.com/wjw-gavin) 在 [#12216](https://github.com/youzan/vant/pull/12216) 中贡献\n- feat(auto-import-resolver): 添加 auto-import-resolver 包，由 [@wChenonly](https://github.com/wChenonly) 在 [#12227](https://github.com/youzan/vant/pull/12227) 中贡献\n- feat(ConfigProvider): 添加 theme-vars-scope 属性以启用根作用域影响，由 [@zhousg](https://github.com/zhousg) 在 [#12240](https://github.com/youzan/vant/pull/12240) 中贡献\n\n#### 问题修复 🐞\n\n- fix(auto-import-resolver): 修复 TS 项目中的类型不匹配问题，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12243](https://github.com/youzan/vant/pull/12243) 中贡献\n- fix(eslint): 使用 ignorePatterns 替代 .eslintignore，由 [@MrXwq](https://github.com/MrXwq) 在 [#12237](https://github.com/youzan/vant/pull/12237) 中贡献\n\n#### 文档 📖\n\n- docs: 改善 back-top 的菜单位置，由 [@wjw-gavin](https://github.com/wjw-gavin) 在 [#12223](https://github.com/youzan/vant/pull/12223) 中贡献\n- docs: 改善 use-raf 文档，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12224](https://github.com/youzan/vant/pull/12224) 中贡献\n- docs: 在快速入门指南中添加 Vite 和 Nuxt 的指引，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12239](https://github.com/youzan/vant/pull/12239) 中贡献\n- docs(auto-import-resolver): 更新 README 和文件夹名称，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12241](https://github.com/youzan/vant/pull/12241) 中贡献\n- docs(auto-import-resolver): 添加 Rspack 的使用方法，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12242](https://github.com/youzan/vant/pull/12242) 中贡献\n- docs(ConfigProvider): 更新修改 CSS 变量的指南，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12246](https://github.com/youzan/vant/pull/12246) 中贡献\n\n#### 其他变更\n\n- test: 将测试运行器迁移到 vitest，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12206](https://github.com/youzan/vant/pull/12206) 中贡献\n- chore(CI): 修复 codecov 报告器，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12210](https://github.com/youzan/vant/pull/12210) 中贡献\n- chore: 对内部依赖使用 workspace 协议，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12225](https://github.com/youzan/vant/pull/12225) 中贡献\n- test: 修复 vitest 的 canvas 模拟，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12226](https://github.com/youzan/vant/pull/12226) 中贡献\n\n### v4.6.6\n\n`2023-08-20`\n\n#### 新功能 🎉\n\n- feat(DropdownItem): 支持在 options 的 value 中传入布尔值 by [@baboon-king](https://github.com/baboon-king) in [#12208](https://github.com/youzan/vant/pull/12208)\n\n#### Bug 修复 🐞\n\n- fix(FloatingBubble): 拖动时不应触发子元素的点击事件 by [@zhousg](https://github.com/zhousg) in [#12201](https://github.com/youzan/vant/pull/12201)\n- fix(FloatingBubble): 隐藏时不更新状态 by [@zhousg](https://github.com/zhousg) in [#12207](https://github.com/youzan/vant/pull/12207)\n\n#### 其他变更\n\n- chore(CI): 更新 issue 评论消息的内容 by [@chenjiahan](https://github.com/chenjiahan) in [#12204](https://github.com/youzan/vant/pull/12204)\n- refactor(cli): 移除 execa 依赖 by [@chenjiahan](https://github.com/chenjiahan) in [#12205](https://github.com/youzan/vant/pull/12205)\n\n### v4.6.5\n\n`2023-08-16`\n\n#### 新功能 🎉\n\n- feat(DropdownMenu): 添加 swipe-threshold 属性 by [@inottn](https://github.com/inottn) in [#12117](https://github.com/youzan/vant/pull/12117)\n- types(Toast): 添加 `ToastWrapperInstance` 导出 by [@long-woo](https://github.com/long-woo) in [#12166](https://github.com/youzan/vant/pull/12166)\n- feat(FloatingBubble): 使用组件属性 by [@zhousg](https://github.com/zhousg) in [#12171](https://github.com/youzan/vant/pull/12171)\n\n#### Bug 修复 🐞\n\n- fix(FloatingPanel): 修复由滚动条和面板移动引起的延迟问题 #12146 by [@yue1123](https://github.com/yue1123) in [#12161](https://github.com/youzan/vant/pull/12161)\n- fix(FloatingPanel): 将 lock-scroll 的默认值更改为 false by [@inottn](https://github.com/inottn) in [#12162](https://github.com/youzan/vant/pull/12162)\n- fix(cli): 在 markdown 中应该转义花括号 by [@chenjiahan](https://github.com/chenjiahan) in [#12188](https://github.com/youzan/vant/pull/12188)\n\n#### 文档 📖\n\n- docs: 添加 bun 包管理器的说明 by [@colinhacks](https://github.com/colinhacks) in [#12182](https://github.com/youzan/vant/pull/12182)\n\n#### 其他变更\n\n- chore: 添加脚本以格式化 GitHub 更新日志 by [@chenjiahan](https://github.com/chenjiahan) in [#12158](https://github.com/youzan/vant/pull/12158)\n- chore(FloatingPanel): 改进代码风格 by [@chenjiahan](https://github.com/chenjiahan) in [#12175](https://github.com/youzan/vant/pull/12175)\n- refactor(cli): 重写 vite-plugin-md by [@chenjiahan](https://github.com/chenjiahan) in [#12179](https://github.com/youzan/vant/pull/12179)\n- chore(deps): 升级 markdown-it 到 v13 和 commander 到 v11 by [@chenjiahan](https://github.com/chenjiahan) in [#12180](https://github.com/youzan/vant/pull/12180)\n- chore(CI): 不在拉取请求中运行 codeql by [@chenjiahan](https://github.com/chenjiahan) in [#12181](https://github.com/youzan/vant/pull/12181)\n\n#### 新贡献者\n\n- [@long-woo](https://github.com/long-woo) 在 [#12166](https://github.com/youzan/vant/pull/12166) 中进行了首次贡献\n- [@yue1123](https://github.com/yue1123) 在 [#12161](https://github.com/youzan/vant/pull/12161) 中进行了首次贡献\n- [@colinhacks](https://github.com/colinhacks) 在 [#12182](https://github.com/youzan/vant/pull/12182) 中进行了首次贡献\n- [@xincheng-1999](https://github.com/xincheng-1999) 在 [#12189](https://github.com/youzan/vant/pull/12189) 中进行了首次贡献\n\n### v4.6.4\n\n`2023-08-06`\n\n#### 新功能 🎉\n\n- feat(area-data): 更新芜湖的县区数据，由 [@nivin-studio](https://github.com/nivin-studio) 在 [#12122](https://github.com/youzan/vant/pull/12122) 中贡献\n- feat(Locale): 添加塞尔维亚语到国际化，由 [@RogerZXY](https://github.com/RogerZXY) 在 [#12145](https://github.com/youzan/vant/pull/12145) 中贡献\n- feat(ImagePreview): 添加 closeOnClickOverlay 选项，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12153](https://github.com/youzan/vant/pull/12153) 中贡献\n- feat(List): 添加 scroller 属性，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12154](https://github.com/youzan/vant/pull/12154) 中贡献\n- feat(FloatingPanel): 添加 lock-scroll 属性，由 [@inottn](https://github.com/inottn) 在 [#12157](https://github.com/youzan/vant/pull/12157) 中贡献\n\n#### Bug 修复 🐞\n\n- fix(TextEllipsis): 修复省略号重复出现的问题，由 [@muzaisimao](https://github.com/muzaisimao) 在 [#12120](https://github.com/youzan/vant/pull/12120) 中贡献\n- fix(TextEllipsis): 修复计算省略号位置的逻辑问题，由 [@inottn](https://github.com/inottn) 在 [#12137](https://github.com/youzan/vant/pull/12137) 中贡献\n\n#### 文档 📖\n\n- docs: 将 PR 标题格式移至贡献指南，由 [@chenjiahan](https://github.com/chenjiahan) 在 [#12114](https://github.com/youzan/vant/pull/12114) 中贡献\n- docs(Radio): 添加对 css 变量 '--van-radio-dot-size' 的文档描述，由 [@wjw-gavin](https://github.com/wjw-gavin) 在 [#12152](https://github.com/youzan/vant/pull/12152) 中贡献\n\n#### 其他更改\n\n- chore: 避免 prettier 破坏 hbs 模板 by [@chenjiahan](https://github.com/chenjiahan) in [#12113](https://github.com/youzan/vant/pull/12113)\n- chore(deps): 升级 release-it v16 by [@chenjiahan](https://github.com/chenjiahan) in [#12115](https://github.com/youzan/vant/pull/12115)\n- feat(get-deps): 将 import('../foo.vue') 替换为 import('../foo.mjs') by [@suncohey](https://github.com/suncohey) in [#12046](https://github.com/youzan/vant/pull/12046)\n- refactor(cli): 重写 release 命令 by [@chenjiahan](https://github.com/chenjiahan) in [#12133](https://github.com/youzan/vant/pull/12133)\n- feat(cli): 为 release 命令添加 gitTag 选项支持 by [@chenjiahan](https://github.com/chenjiahan) in [#12134](https://github.com/youzan/vant/pull/12134)\n- chore(CI): 通过 GitHub 自动生成变更日志 by [@chenjiahan](https://github.com/chenjiahan) in [#12135](https://github.com/youzan/vant/pull/12135)\n- chore: 添加 PR 标签动作 by [@chenjiahan](https://github.com/chenjiahan) in [#12136](https://github.com/youzan/vant/pull/12136)\n- chore(TextEllipsis): 重用 actionText 变量 by [@chenjiahan](https://github.com/chenjiahan) in [#12138](https://github.com/youzan/vant/pull/12138)\n- refactor(cli): 使用 GitHub 变更日志替代 conventional-changelog by [@chenjiahan](https://github.com/chenjiahan) in [#12139](https://github.com/youzan/vant/pull/12139)\n- chore: 添加塞尔维亚文档并重命名文件 by [@chenjiahan](https://github.com/chenjiahan) in [#12150](https://github.com/youzan/vant/pull/12150)\n- chore(eslint-config): 升级依赖项 by [@chenjiahan](https://github.com/chenjiahan) in [#12155](https://github.com/youzan/vant/pull/12155)\n\n#### 新贡献者\n\n- [@muzaisimao](https://github.com/muzaisimao) 在 [#12120](https://github.com/youzan/vant/pull/12120) 中首次贡献\n- [@suncohey](https://github.com/suncohey) 在 [#12046](https://github.com/youzan/vant/pull/12046) 中首次贡献\n- [@nivin-studio](https://github.com/nivin-studio) 在 [#12122](https://github.com/youzan/vant/pull/12122) 中首次贡献\n- [@RogerZXY](https://github.com/RogerZXY) 在 [#12145](https://github.com/youzan/vant/pull/12145) 中首次贡献\n\n### [v4.6.3](https://github.com/vant-ui/vant/compare/v4.6.2...v4.6.3)\n\n`2023-07-23`\n\n**Feature**\n\n- AddressList: 新增 show-add-button 属性 [#12090](https://github.com/vant-ui/vant/issues/12090)\n- CheckboxGroup: 新增 shape 属性 [#12092](https://github.com/vant-ui/vant/issues/12092)\n- RadioGroup: 新增 shape 属性 [#12092](https://github.com/vant-ui/vant/issues/12092)\n\n**Bug Fixes**\n\n- FloatingBubble: 修复全局组件类型定义错误 [#12101](https://github.com/vant-ui/vant/issues/12101)\n- Tab: 修复导入路径错误 [#12103](https://github.com/vant-ui/vant/issues/12103)\n\n### [v4.6.2](https://github.com/vant-ui/vant/compare/v4.6.1...v4.6.2)\n\n`2023-07-09`\n\n**Feature**\n\n- Field: 新增 autocapitalize，autocorrect 和 spellcheck 属性 [#12065](https://github.com/vant-ui/vant/issues/12065)\n- FloatingBubble: 新增 CSS 变量用于自定义圆角 [#12070](https://github.com/vant-ui/vant/issues/12070)\n- Radio: 新增 dot 属性 [#12057](https://github.com/vant-ui/vant/issues/12057)\n- TextEllipsis: 新增 position 属性，由 [cxybd](https://github.com/cxybd) 贡献 ❤️ [#12058](https://github.com/vant-ui/vant/issues/12058)\n\n**Bug Fixes**\n\n- FloatingBubble: 修复边界错误 [#12067](https://github.com/vant-ui/vant/issues/12067)\n- Pagination: 修复边框渲染错误 [#12062](https://github.com/vant-ui/vant/issues/12062)\n\n### [v4.6.1](https://github.com/vant-ui/vant/compare/v4.6.0...v4.6.1)\n\n`2023-07-02`\n\n**Feature**\n\n- ellipsis: 改进中文、日文或韩文文本的换行符 [#12030](https://github.com/vant-ui/vant/issues/12030)\n\n**Bug Fixes**\n\n- FloatingBubble: 修复 floatingBubbleBackground 类型问题 [#12029](https://github.com/vant-ui/vant/issues/12029)\n- SubmitBar: 移除多余的 theme 类型定义 [#12031](https://github.com/vant-ui/vant/issues/12031)\n- Uploader: 修复 base64 图片预览导致的性能问题 [#12051](https://github.com/vant-ui/vant/issues/12051)\n\n### [v4.6.0](https://github.com/vant-ui/vant/compare/v4.5.0...v4.6.0)\n\n`2023-06-24`\n\n**New Component**\n\n- 新增 FloatingBubble 组件，由 [@zhousg](https://github.com/zhousg) 贡献 ❤️ [#11880](https://github.com/vant-ui/vant/issues/11880)\n- 新增 RollingText 组件，由 [@cunzaizhuyi](https://github.com/cunzaizhuyi) 贡献 ❤️ [#11911](https://github.com/vant-ui/vant/issues/11911)\n\n**Feature**\n\n- Rate: 新增 clearable 属性 [#11969](https://github.com/vant-ui/vant/issues/11969)\n\n**Bug Fixes**\n\n- DropdownMenu: 修复缺少类型导出的问题 [#11979](https://github.com/vant-ui/vant/issues/11979)\n- Field: 修复使用 input 插槽时设置了多余的 label `for` 属性的问题 [#11966](https://github.com/vant-ui/vant/issues/11966)\n- FloatingPanel: 修复缺少 floatingPanelProps 类型导出的问题 [#11978](https://github.com/vant-ui/vant/issues/11978)\n- FloatingPanel: 修复 passive event warning [#11992](https://github.com/vant-ui/vant/issues/11992)\n- Picker: 修复多列同时滚动时的问题 [#11945](https://github.com/vant-ui/vant/issues/11945)\n- Rate: 修复半星拖动时断触的问题 [#12002](https://github.com/vant-ui/vant/issues/12002)\n\n### [v4.5.0](https://github.com/vant-ui/vant/compare/v4.4.1...v4.5.0)\n\n`2023-06-11`\n\n**New Component**\n\n- 新增 FloatingPanel 组件，由 [@zhousg](https://github.com/zhousg) 贡献 ❤️ [#11832](https://github.com/vant-ui/vant/issues/11832)\n\n**Feature**\n\n- AddressList: 新增 right-icon 属性 [#11959](https://github.com/vant-ui/vant/issues/11959)\n- DropdownMenu: 新增 close 方法 [#11921](https://github.com/vant-ui/vant/issues/11921)\n- Slider: 新增 button 插槽的 dragging 参数 [#11946](https://github.com/vant-ui/vant/issues/11946)\n- TimePicker: 新增 min-time 和 max-time 属性 [#11887](https://github.com/vant-ui/vant/issues/11887)\n- TimePicker: 新增 filter 属性的 values 参数 [#11916](https://github.com/vant-ui/vant/issues/11916)\n- CI: 增加 issue helper [#11963](https://github.com/vant-ui/vant/issues/11963)\n\n**Bug Fixes**\n\n- BackTop: 修复 deactivated 时未隐藏的问题 [#11938](https://github.com/vant-ui/vant/issues/11938)\n\n### [v4.4.1](https://github.com/vant-ui/vant/compare/v4.4.0...v4.4.1)\n\n`2023-05-28`\n\n**Feature**\n\n- Popover: 新增 actions-direction 属性 [#11888](https://github.com/vant-ui/vant/issues/11888)\n\n**Bug Fixes**\n\n- ImagePreview: 修复初始化时可能有过渡动画的问题 [#11897](https://github.com/vant-ui/vant/issues/11897)\n- Popup: 修复 duration 为 0 时 opened 事件触发两次的问题 [#11902](https://github.com/vant-ui/vant/issues/11902)\n- Slider: 修复点击可能无法触发 change 事件的问题 [#11904](https://github.com/vant-ui/vant/issues/11904)\n- Tab: 修复 title-class 和 title-style 属性可能导致死循环的问题 [#11898](https://github.com/vant-ui/vant/issues/11898)\n\n### [v4.4.0](https://github.com/vant-ui/vant/compare/v4.3.2...v4.4.0)\n\n`2023-05-21`\n\n**New Component**\n\n- 新增 Barrage 组件，由 [@zhousg](https://github.com/zhousg) 贡献 ❤️ [#11760](https://github.com/vant-ui/vant/issues/11760)\n\n**Feature**\n\n- Cascader: 切换 Tab 时自动滚动到选中项 [#11869](https://github.com/vant-ui/vant/issues/11869)\n- Divider: 新增 vertical 属性 [#11883](https://github.com/vant-ui/vant/issues/11883)\n- Document: 支持点击标题时自动调整右侧示例到相应的位置 [#11879](https://github.com/vant-ui/vant/issues/11879)\n- ImagePreview: 优化长图的默认展示效果 [#11857](https://github.com/vant-ui/vant/issues/11857)\n- Signature: 优化签名的清晰度 [#11835](https://github.com/vant-ui/vant/issues/11835)\n- Uploader: 新增 reupload prop [#11854](https://github.com/vant-ui/vant/issues/11854)\n\n**Bug Fixes**\n\n- AddressEdit: 修复多余的底部边框 [#11872](https://github.com/vant-ui/vant/issues/11872)\n- Area: 修复多余的 allow-html 和 show-toolbar props 定义 [#11871](https://github.com/vant-ui/vant/issues/11871)\n- BackTop: 默认使用最近的父级滚动元素作为 target [#11858](https://github.com/vant-ui/vant/issues/11858)\n- ContactList: 优化样式和图标大小 [#11873](https://github.com/vant-ui/vant/issues/11873)\n- DatePicker: 修复外部设置 modelValue 时展示错误的问题 [#11839](https://github.com/vant-ui/vant/issues/11839)\n- Dialog: 修复点击按钮时圆角错误的问题 [#11863](https://github.com/vant-ui/vant/issues/11863)\n\n### [v4.3.2](https://github.com/vant-ui/vant/compare/v4.3.1...v4.3.2)\n\n`2023-05-14`\n\n**Feature**\n\n- ImagePreview: 支持基于手指位置进行缩放 [#11848](https://github.com/vant-ui/vant/issues/11848)\n- PickerGroup: 支持控制当前 Tab 的位置 [#11771](https://github.com/vant-ui/vant/issues/11771)\n- Checkbox: 支持在达到最大选择数量时自动禁用其他选项 [#11814](https://github.com/vant-ui/vant/issues/11814)\n\n**Bug Fixes**\n\n- Filed: 修复点击 label 会触发两次 click 事件的问题 [#11838](https://github.com/vant-ui/vant/issues/11838)\n- Steps: 修复只有一个 Step 时样式错误的问题 [#11822](https://github.com/vant-ui/vant/issues/11822)\n- SubmitBar: 移除多余的 CSS 变量 [#11845](https://github.com/vant-ui/vant/issues/11845)\n- Tab: 修复下划线动画可能错误的问题 [#11819](https://github.com/vant-ui/vant/issues/11819)\n\n### [v4.\n\n<!-- [TRUNCATED AT 50KB] -->\n\n<!-- File: packages/vant/docs/markdown/contribution.en-US.md (Tokens: ~1057 | Category: anthropic-skill) -->\n# Contribution Guide\n\n### Introduction\n\nThank you for using Vant.\n\nBelow are the guidelines for submitting feedback or code to Vant. Please take a few minutes to read the following before submitting an issue or PR to Vant.\n\n### Issue Specification\n\n- If you encountered a problem, please first confirm whether the problem has been recorded in the issue or has been fixed.\n- When submitting an issue, please describe the problem you encountered in a short language, and add the environment and reproduction steps when the problem occurs.\n\n## Participate in development\n\n### Local development\n\nBefore developing locally, please make sure that [Node.js >= 18](https://nodejs.org) is installed in your development environment.\n\nFollow the steps below to develop Vant components locally.\n\n```bash\n# Clone repository\ngit clone git@github.com:vant-ui/vant.git\n\n# Enable pnpm package manager\ncorepack enable\n\n# Install dependencies\npnpm i\n\n# Start development\npnpm dev\n```\n\nDifferent branches of the repository correspond to different Vant versions, please switch to the appropriate branch for development:\n\n- The main branch corresponds to the Vant 4 version, suitable for Vue 3\n- 3.x branch corresponds to Vant 3 version, suitable for Vue 3\n- 2.x branch corresponds to Vant 2 version, suitable for Vue 2\n\n### Directory Structure\n\nVant uses monorepo for code management, and all subpackages are in the `packages/vant` directory:\n\n```\nroot\n└─ packages\n   ├─ vant        # Component library\n   ├─ vant-cli    # Scaffolding\n   ├─ vant-icons  # Icon library\n   ├─ vant-use    # Composition API\n   └─ ....        # Other npm packages\n```\n\nAmong them, the `packages/vant` directory is the core code of the component library:\n\n```\nvant\n├─ docs             # Documentation\n├─ src              # Component source code\n├─ test             # Test utils\n└─ vant.config.mjs  # Document configuration\n```\n\nThe `packages/vant/src` directory contains the source code of each component, and each folder corresponds to a component:\n\n```\nsrc\n└─ button\n   ├─ demo             # Demo code\n   ├─ test             # Unit test\n   ├─ Component.tsx    # Component\n   ├─ index.ts         # Component entry\n   ├─ index.less       # Styles\n   ├─ README.md        # English document\n   └─ README.zh-CN.md  # Chinese document\n```\n\n### Code Specification\n\nWhen writing code, please note:\n\n- Make sure the code can pass the repository's lint check (`pnpm lint`).\n- Format the code with Rstack CLI (`pnpm exec rs fmt`).\n- Make sure you don't use incompatible APIs like `async`, `await`.\n\n## Submitting a Pull Request\n\n### Reference Guide\n\nIf this is your first time submitting a pull request on GitHub, you can learn from the following article:\n\n- [First participation in open source](https://github.com/firstcontributions/first-contributions/blob/main/docs/translations/README.en-pirate.md)\n\n### Pull Request Specification\n\nWhen submitting a Pull Request, please note:\n\n- Keep your PRs small enough that a PR only addresses a single issue or adds a single feature.\n- When adding new components or modifying original components, remember to add or modify the corresponding unit tests to ensure the stability of the code.\n- Please include an appropriate description in the PR, and link related issues.\n\n### Pull Request Process\n\n1. Fork the main repository. If you have already forked, please synchronize the latest code from the main repository.\n2. Create a new branch based on the main branch of the repository after the fork, such as `feature/button_color`.\n3. Develop on the new branch. When development is complete, submit a pull request to the main branch of the main repository.\n4. The pull request is merged into the main repository after the review is approved.\n5. Wait for Vant to release a new version, usually once a week.\n\n### Pull Request Title Format\n\nThe title of the Pull Request should be in the following format:\n\n```bash\ntype(ComponentName?)：commit message\n```\n\nExample：\n\n- docs: fix typo in quickstart\n- build: optimize build speed\n- fix(Button): incorrect style\n- feat(Button): add color prop\n\nAllowed Types:\n\n- fix\n- feat\n- docs\n- perf\n- test\n- types\n- style\n- build\n- chore\n- release\n- refactor\n- breaking change\n- revert:\n\n### Synchronize the latest code\n\nBefore submitting a Pull Request, please synchronize the latest code of the main repository according to the following process:\n\n```bash\n# Add the main repository to remote\ngit remote add upstream git@github.com:vant-ui/vant.git\n\n# Pull the latest code from the main repository\ngit fetch upstream\n\n# Switch to the main branch\ngit checkout main\n\n# Merge the code from the main repository\ngit merge upstream/main\n```\n\n<!-- File: packages/vant/docs/markdown/contribution.zh-CN.md (Tokens: ~1358 | Category: anthropic-skill) -->\n# 贡献指南\n\n### 介绍\n\n感谢你使用 Vant。\n\n以下是关于向 Vant 提交反馈或代码的指南。在向 Vant 提交 issue 或者 PR 之前，请先花几分钟时间阅读以下内容。\n\n### Issue 规范\n\n- 遇到问题时，请先确认这个问题是否已经在 issue 中有记录或者已被修复。\n- 提 issue 时，请用简短的语言描述遇到的问题，并添加出现问题时的环境和复现步骤。\n\n## 参与开发\n\n### 本地开发\n\n在进行本地开发前，请先确保你的开发环境中安装了 [Node.js >= 18](https://nodejs.org)。\n\n按照下面的步骤操作，即可在本地开发 Vant 组件。\n\n```bash\n# 克隆仓库\ngit clone git@github.com:vant-ui/vant.git\n\n# 启用 pnpm 包管理器\ncorepack enable\n\n# 安装依赖\npnpm i\n\n# 进入开发模式，浏览器访问 localhost\npnpm dev\n```\n\n仓库的不同分支对应不同的 Vant 版本，请切换到对应分支进行开发：\n\n- main 分支对应 Vant 4 版本，适用于 Vue 3\n- 3.x 分支对应 Vant 3 版本 ，适用于 Vue 3\n- 2.x 分支对应 Vant 2 版本，适用于 Vue 2\n\n### 目录结构\n\nVant 采用 monorepo 进行代码管理，所有子包在 `packages` 目录下:\n\n```\nroot\n└─ packages\n   ├─ vant        # 组件库\n   ├─ vant-cli    # 脚手架\n   ├─ vant-icons  # 图标库\n   ├─ vant-use    # Composition API\n   └─ ....        # 其他周边 npm 包\n```\n\n其中，`packages/vant` 目录为组件库的核心代码：\n\n```\nvant\n├─ docs             # 文档\n├─ src              # 组件源代码\n├─ test             # 单测工具类\n└─ vant.config.mjs  # 文档网站配置\n```\n\n`packages/vant/src` 目录包含各个组件的源码，每个文件夹对应一个组件：\n\n```\nsrc\n└─ button\n   ├─ demo             # 示例代码\n   ├─ test             # 单元测试\n   ├─ Component.tsx    # 组件\n   ├─ index.ts         # 组件入口\n   ├─ index.less       # 样式\n   ├─ README.md        # 英文文档\n   └─ README.zh-CN.md  # 中文文档\n```\n\n### 代码规范\n\n在编写代码时，请注意：\n\n- 确保代码可以通过仓库的 lint 校验（`pnpm lint`）。\n- 使用 Rstack CLI（`pnpm exec rs fmt`）规范化代码格式。\n- 确保没有使用超出兼容性范围的 API，比如 `async`, `await`.\n\n## 提交 Pull Request\n\n### 参考指南\n\n如果你是第一次在 GitHub 上提 Pull Request ，可以阅读下面这两篇文章来学习：\n\n- [第一次参与开源](https://github.com/firstcontributions/first-contributions/blob/main/docs/translations/README.zh-cn.md)\n- [如何优雅地在 GitHub 上贡献代码](https://segmentfault.com/a/1190000000736629)\n\n### Pull Request 规范\n\n在提交 Pull Request 时，请注意：\n\n- 保持你的 PR 足够小，一个 PR 只解决单个问题或添加单个功能。\n- 当新增组件或者修改原有组件时，记得增加或者修改对应的单元测试，保证代码的稳定。\n- 在 PR 中请添加合适的描述，并关联相关的 Issue。\n\n### Pull Request 流程\n\n1. fork 主仓库，如果已经 fork 过，请同步主仓库的最新代码。\n2. 基于 fork 后仓库的 main 分支新建一个分支，比如 `feature/button_color`。\n3. 在新分支上进行开发，开发完成后，提 Pull Request 到主仓库的 main 分支。\n4. Pull Request 会在 Review 通过后被合并到主仓库。\n5. 等待 Vant 发布新版本，一般是每周一次。\n\n### Pull Request 标题格式\n\nPull Request 的标题应该遵循以下格式：\n\n```bash\ntype(ComponentName?)：commit message\n```\n\n示例：\n\n- docs: fix typo in quickstart\n- build: optimize build speed\n- fix(Button): incorrect style\n- feat(Button): add color prop\n\n可选的类型：\n\n- fix\n- feat\n- docs\n- perf\n- test\n- types\n- style\n- build\n- chore\n- release\n- refactor\n- breaking change\n- revert:\n\n### 同步最新代码\n\n提 Pull Request 前，请依照下面的流程同步主仓库的最新代码：\n\n```bash\n# 添加主仓库到 remote\ngit remote add upstream git@github.com:vant-ui/vant.git\n\n# 拉取主仓库最新代码\ngit fetch upstream\n\n# 切换至 main 分支\ngit checkout main\n\n# 合并主仓库代码\ngit merge upstream/main\n```\n\n<!-- File: packages/vant/docs/markdown/design.en-US.md (Tokens: ~536 | Category: anthropic-skill) -->\n# Design Resource\n\n### Intro\n\nYou can download Vant's design resources here.\n\n## Resources\n\n### Components (Sketch)\n\nContains color specifications, font specifications, and component design specifications.\n\n#### Colors\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/color_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n#### Fonts\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/words_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n#### Components\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/tab_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant/blob/main/packages/vant/docs/assets/design.sketch?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">Download</a>\n\n### Icons (Sketch)\n\nContains icon library resources.\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/design-icons-0321.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant/blob/main/packages/vant-icons/assets/icons.sketch?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">Download</a>\n\n### Axure\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/vant-axure-0905.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant-assets/blob/main/design/axure-20200905.zip?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">Download</a>\n\n<!-- File: packages/vant/docs/markdown/design.zh-CN.md (Tokens: ~696 | Category: anthropic-skill) -->\n# 设计资源\n\n### 介绍\n\n本页面提供 Vant 的设计资源下载。\n\n## 设计稿\n\n### 组件设计稿（Sketch）\n\n包含 Sketch 格式的色彩规范、字体规范、组件设计规范。\n\n#### 色彩规范\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/color_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n#### 字体规范\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/words_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n#### 组件规范\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/tab_202009101415.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant/blob/main/packages/vant/docs/assets/design.sketch?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">下载</a>\n\n### 图标设计稿（Sketch）\n\n包含 Sketch 格式的图标库资源。\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/design-icons-0321.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant/blob/main/packages/vant-icons/assets/icons.sketch?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">下载</a>\n\n#### 在线资源\n\nVant 的所有图标都托管在 **iconfont.cn** 上，点此查看：[Vant 图标库](https://www.iconfont.cn/collections/detail?spm=a313x.7781069.1998910419.d9df05512&cid=31945)。\n\n### Axure 元件库\n\nAxure 元件库，由社区的 [@axure-tczy](https://github.com/axure-tczy) 同学贡献。\n\n<img src=\"https://fastly.jsdelivr.net/npm/@vant/assets/vant-axure-0905.png\" style=\"width: 80%; box-shadow: 0 1px 2px rgba(0,0,0,.2)\">\n\n<a href=\"https://github.com/vant-ui/vant-assets/blob/main/design/axure-20200905.zip?raw=true\" style=\"display: inline-block; width: 100px; color: #fff; line-height: 40px; text-align: center; background-color: #38f; border-radius: 3px;\">下载</a>\n\n<!-- File: packages/vant/docs/markdown/faq.en-US.md (Tokens: ~652 | Category: anthropic-skill) -->\n# FAQ\n\n### How do I customize the style of Vant components?\n\n#### 1. Theme customization\n\nVant provides the ability to customize the theme based on CSS variables, and can uniformly modify the component style. For details, see [ConfigProvider Global Configuration](#/en-US/config-provider) component.\n\n#### 2. Overriding the default style\n\nIf the theme customization does not meet your needs, you can also override the default style using a **custom style class**, see the following example:\n\n```html\n<template>\n  <van-button class=\"my-button\">Button</van-button>\n</template>\n\n<style>\n  /** Override the style of Button's root element */\n  .my-button {\n    width: 200px;\n  }\n\n  /** Override the style of Button's child elements */\n  .my-button.van-button__text {\n    color: red;\n  }\n</style>\n```\n\n### Components not rendering correctly in HTML?\n\nWhen using Vant components in HTML, you may encounter situations where some sample code may not render correctly, such as the following usage:\n\n```html\n<van-cell-group>\n  <van-cell title=\"cell\" value=\"content\" />\n  <van-cell title=\"cell\" value=\"content\" />\n</van-cell-group>\n```\n\nThis is because HTML does not support self-closing custom elements, so syntax like `<van-cell />` is not recognized. Using a closing tag can work around this problem:\n\n```html\n<van-cell-group>\n  <van-cell title=\"cell\" value=\"content\"></van-cell>\n  <van-cell title=\"cell\" value=\"content\"></van-cell>\n</van-cell-group>\n```\n\nSelf-closing custom elements are available in single-file components, string templates, and JSX, so this problem doesn't arise.\n\n### Can't trigger the click feedback on iOS?\n\nThis is because iOS Safari does not trigger the `:active` pseudo-class by default. The solution is to add an empty `ontouchstart` attribute to the `body` tag:\n\n```html\n<body ontouchstart=\"\">\n  ...\n</body>\n```\n\nReference link: [stackoverflow - :active pseudo-class doesn't work in mobile safari](https://stackoverflow.com/questions/3885018/active-pseudo-class-doesnt-work-in-mobile-safari/33681490#33681490)\n\n### Why is there no Select component?\n\nSelect is a widely used component on the desktop, but its interactive form is not suitable for the mobile device.\n\nOn the mobile side, we recommend using the [Picker selector component](#/en-US/picker) instead.\n\n### Is it supported in uni-app?\n\nAll components of Vant are implemented based on the Vue framework and are not adapted to uni-app, so the availability of each component under uni-app is not guaranteed.\n\nIf you encounter problems using Vant in uni-app, it is recommended to provide feedback to uni-app.\n\n### Some components do not work on the desktop?\n\nSee [Adapt to PC Browsers](#/en-US/advanced-usage#adapt-to-pc-browsers).\n\n### How do I implement mobile responsive adaptation?\n\nSee [Browser Adaptation](#/en-US/advanced-usage#browser-adaptation).\n\n<!-- File: packages/vant/docs/markdown/faq.zh-CN.md (Tokens: ~860 | Category: anthropic-skill) -->\n# 常见问题\n\n### 如何自定义 Vant 组件的样式？\n\n#### 1. 主题定制\n\nVant 基于 CSS 变量提供了主题定制的能力，可以对组件样式进行统一修改，详见 [ConfigProvider 全局配置](#/zh-CN/config-provider) 组件。\n\n#### 2. 覆盖默认样式\n\n如果主题定制不能满足你的需求，也可以通过**自定义样式类**来覆盖默认样式，参考下面的示例：\n\n```html\n<template>\n  <van-button class=\"my-button\">按钮</van-button>\n</template>\n\n<style>\n  /** 覆盖 Button 最外层元素的样式 */\n  .my-button {\n    width: 200px;\n  }\n\n  /** 覆盖 Button 内部子元素的样式 */\n  .my-button .van-button__text {\n    color: red;\n  }\n</style>\n```\n\n### 在 HTML 中无法正确渲染组件？\n\n在 HTML 中使用 Vant 组件时，你可能会碰到部分示例代码无法正确渲染的情况，比如下面的用法：\n\n```html\n<van-cell-group>\n  <van-cell title=\"单元格\" value=\"内容\" />\n  <van-cell title=\"单元格\" value=\"内容\" />\n</van-cell-group>\n```\n\n这是因为 HTML 并不支持自闭合的自定义元素，也就是说 `<van-cell />` 这样的语法是不被识别的，使用完整的闭合标签可以避免这个问题：\n\n```html\n<van-cell-group>\n  <van-cell title=\"单元格\" value=\"内容\"></van-cell>\n  <van-cell title=\"单元格\" value=\"内容\"></van-cell>\n</van-cell-group>\n```\n\n在单文件组件、字符串模板和 JSX 中可以使用自闭合的自定义元素，因此不会出现这个问题。\n\n### 在 iOS 上无法触发组件的点击反馈效果？\n\n这是因为 iOS Safari 默认不会触发 `:active` 伪类，解决方法是在 `body` 标签上添加一个空的 `ontouchstart` 属性：\n\n```html\n<body ontouchstart=\"\">\n  ...\n</body>\n```\n\n参考链接：[stackoverflow - :active pseudo-class doesn't work in mobile safari](https://stackoverflow.com/questions/3885018/active-pseudo-class-doesnt-work-in-mobile-safari/33681490#33681490)\n\n### 为什么没有 Select 组件？\n\nSelect 是桌面端常用的组件，但它的交互形式不适合移动端。\n\n在移动端，我们推荐使用 [Picker 选择器组件](#/zh-CN/picker) 作为代替。\n\n### 是否支持在 uni-app 中使用？\n\nVant 所有组件都是基于 Vue 框架实现的，没有针对 uni-app 进行适配，因此不保证各个组件在 uni-app 下的可用性。\n\n如果你在 uni-app 中使用 Vant 遇到问题，建议向 uni-app 进行反馈。\n\n### 部分组件无法在桌面端进行操作？\n\n参见[桌面端适配](#/zh-CN/advanced-usage#zhuo-mian-duan-gua-pei)。\n\n### 如何进行移动端响应式适配？\n\n参见[浏览器适配](#/zh-CN/advanced-usage#liu-lan-qi-gua-pei)。\n\n<!-- File: packages/vant/docs/markdown/home.en-US.md (Tokens: ~2086 | Category: anthropic-skill) -->\n<div class=\"van-doc-card\">\n  <div class=\"van-doc-intro\">\n    <img class=\"van-doc-intro__logo\" style=\"width: 120px; height: 120px;\" src=\"https://fastly.jsdelivr.net/npm/@vant/assets/logo.png\">\n    <h2 style=\"margin: 0; font-size: 36px; line-height: 60px;\">Vant</h2>\n    <p>A lightweight, customizable Vue UI library for mobile web apps.</p>\n  </div>\n</div>\n\n### Features\n\n- 🚀 1KB Component average size (min+gzip)\n- 🚀 80+ High quality components\n- 🚀 Zero third-party dependencies\n- 💪 90%+ Unit test coverage\n- 💪 Written in TypeScript\n- 📖 Extensive documentation and demos\n- 📖 Provide Sketch and Axure design resources\n- 🍭 Support Vue 2 & Vue 3\n- 🍭 Support Nuxt 2 & Nuxt 3, provide [Vant Module](https://github.com/vant-ui/vant-nuxt) for Nuxt\n- 🍭 Support Tree Shaking\n- 🍭 Support Custom Theme\n- 🍭 Support Accessibility (still improving)\n- 🍭 Support Dark Mode\n- 🍭 Support SSR\n- 🌍 Support i18n, built-in 30+ languages\n\n### Scaffold\n\nIt is recommended to use [Rsbuild](https://github.com/web-infra-dev/rsbuild) to create a scaffold project.\n\nRsbuild is a build tool based on Rspack, developed by the author of Vant, with first-class build speed and development experience, providing first-priority support for Vant.\n\nYou can create a Rsbuild project with the following command:\n\n```bash\nnpm create rsbuild@latest\n```\n\nPlease visit the [Rsbuild repository](https://github.com/web-infra-dev/rsbuild) for more information.\n\n### Quickstart\n\nSee in [Quickstart](#/en-US/quickstart).\n\n### Browser Support\n\nVant 2 supports modern browsers and Android >= 4.0、iOS >= 8.0.\n\nVant 3/4 supports modern browsers and Chrome >= 51、iOS >= 10.0 (same as Vue 3).\n\n### Maintenance Status\n\nThe current maintenance status of each version of Vant is as follows:\n\n| Name | Framework | Release | Latest Version | Status |\n| --- | --- | --- | --- | --- |\n| Vant 4 | Vue 3 | `2022.12` | ![](https://img.shields.io/npm/v/vant/latest?style=flat-square) | Long-term support |\n| Vant 3 | Vue 3 | `2020.12` | ![](https://img.shields.io/npm/v/vant/latest-v3?style=flat-square) | End of life |\n| Vant 2 | Vue 2 | `2019.06` | ![](https://img.shields.io/npm/v/vant/latest-v2?style=flat-square) | End of life |\n| Vant 1 | Vue 2 | `2018.03` | ![](https://img.shields.io/npm/v/vant/latest-v1?style=flat-square) | End of life |\n\n## Links\n\n### Official Ecosystem\n\n| Project | Description |\n| --- | --- |\n| [vant-weapp](https://github.com/vant-ui/vant-weapp) | WeChat MiniProgram UI |\n| [vant-demo](https://github.com/vant-ui/vant-demo) | Collection of Vant demos |\n| [vant-cli](https://github.com/vant-ui/vant/tree/main/packages/vant-cli) | Scaffold for UI library |\n| [vant-icons](https://github.com/vant-ui/vant/tree/main/packages/vant-icons) | Vant icons |\n| [vant-touch-emulator](https://github.com/vant-ui/vant/tree/main/packages/vant-touch-emulator) | Using vant in desktop browsers |\n| [vant-nuxt](https://github.com/vant-ui/vant-nuxt) | Vant module for Nuxt |\n\n### Community Ecosystem\n\n| Project | Description |\n| --- | --- |\n| [3lang3/react-vant](https://github.com/3lang3/react-vant) | React mobile UI Components based on Vant |\n| [vant-theme](https://github.com/Aisen60/vant-theme) | Online theme preview built on Vant UI |\n| [@antmjs/vantui](https://github.com/antmjs/vantui) | Mobile UI Components based on Vant, supporting Taro and React |\n| [vant-playground](https://github.com/LadyChatterleyLover/vant-playground) | Vant Playground |\n| [sfc-playground-vant](https://github.com/zhixiaoqiang/sfc-playground-vant) | Vant Playground |\n| [vue3-h5-template](https://github.com/yulimchen/vue3-h5-template) | Mobile project template based on Vant |\n| [vue3-vant-mobile](https://github.com/vue-zone/vue3-vant-mobile) | Mobile project template based on Vant, out of the box |\n| [raycast-vant-documentation](https://github.com/Aisen60/raycast-vant-documentation) | An Raycast extension, it can search Vant UI library documentation in Raycast |\n| [nuxt-vant-mobile](https://github.com/vue-zone/nuxt-vant-mobile) | Nuxt _⁴_ project template based on Vant, out of the box |\n| [mobvue](https://github.com/un-pany/mobvue) | A well-crafted mobile web app template |\n\n### Other Links\n\n- [Feedback](https://github.com/vant-ui/vant/issues)\n- [Changelog](#/en-US/changelog)\n- [Discussions](https://github.com/vant-ui/vant/discussions)\n\n## Contribution\n\n### Core Team\n\nCore contributors of Vant and Vant Weapp:\n\n| [![chenjiahan](https://avatars.githubusercontent.com/u/7237365?s=80&v=4)](https://github.com/chenjiahan/) | [![cookfront](https://avatars.githubusercontent.com/u/4829465?s=80&v=4)](https://github.com/cookfront/) | [![w91](https://avatars.githubusercontent.com/u/2599455?s=80&v=4)](https://github.com/w91/) | [![pangxie1991](https://avatars.githubusercontent.com/u/5961240?s=80&v=4)](https://github.com/pangxie1991/) | [![rex-zsd](https://avatars.githubusercontent.com/u/8767877?s=80&v=4)](https://github.com/rex-zsd/) | [![nemo-shen](https://avatars.githubusercontent.com/u/13480805?s=80&v=4)](https://github.com/nemo-shen/) |\n| :-: | :-: | :-: | :-: | :-: | :-: |\n| [chenjiahan](https://github.com/chenjiahan/) | [cookfront](https://github.com/cookfront/) | [wangnaiyi](https://github.com/w91/) | [pangxie](https://github.com/pangxie1991/) | [rex-zsd](https://github.com/rex-zsd/) | [nemo-shen](https://github.com/nemo-shen/) |\n\n| [![Lindysen](https://avatars.githubusercontent.com/u/33708359?s=80&v=4)](https://github.com/Lindysen/) | [![JakeLaoyu](https://avatars.githubusercontent.com/u/16181940?s=80&v=4)](https://github.com/JakeLaoyu/) | [![landluck](https://avatars.githubusercontent.com/u/27060081?s=80&v=4)](https://github.com/landluck/) | [![wjw-gavin](https://avatars.githubusercontent.com/u/19986739?s=80&v=4)](https://github.com/wjw-gavin/) | [![inottn](https://avatars.githubusercontent.com/u/18509404?s=80&v=4)](https://github.com/inottn/) | [![zhousg](https://avatars.githubusercontent.com/u/15833290?s=80&v=4)](https://github.com/zhousg/) |\n| :-: | :-: | :-: | :-: | :-: | :-: |\n| [Lindysen](https://github.com/Lindysen/) | [JakeLaoyu](https://github.com/JakeLaoyu/) | [landluck](https://github.com/landluck/) | [wjw-gavin](https://github.com/wjw-gavin/) | [inottn](https://github.com/inottn/) | [zhousg](https://github.com/zhousg/) |\n\n### All Contributors\n\nThanks to the following friends for their contributions to Vant:\n\n<a href=\"https://github.com/vant-ui/vant/graphs/contributors\" target=\"_blank\">\n  <img src=\"https://opencollective.com/vant/contributors.svg?width=890&button=false\" alt=\"contributors\" style=\"width: 100%; margin: 16px 0\">\n</a>\n\n### Contribution Guide\n\nPlease make sure to read the [Contributing Guide](https://github.com/vant-ui/vant/blob/main/.github/CONTRIBUTING.md) before making a pull request.\n\n### LICENSE\n\n[MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89).\n\n<!-- File: packages/vant/docs/markdown/home.zh-CN.md (Tokens: ~2835 | Category: anthropic-skill) -->\n<div class=\"van-doc-card\">\n  <div class=\"van-doc-intro\">\n    <img class=\"van-doc-intro__logo\" style=\"width: 120px; height: 120px;\" src=\"https://fastly.jsdelivr.net/npm/@vant/assets/logo.png\">\n    <h2 style=\"margin: 0; font-size: 36px; line-height: 60px;\">Vant</h2>\n    <p>轻量、可定制的移动端 Vue 组件库</p>\n  </div>\n</div>\n\n### 介绍\n\nVant 是一个**轻量、可定制的移动端组件库**，于 2017 年开源。\n\n目前 Vant 官方提供了 [Vue 2 版本](/vant/v2/)、[Vue 3 版本](/vant/)和[微信小程序版本](/vant-weapp/)，并由社区团队维护 [React 版本](https://github.com/3lang3/react-vant)。\n\n### 特性\n\n- 🚀 性能极佳，组件平均体积小于 1KB（min+gzip）\n- 🚀 80+ 个高质量组件，覆盖移动端主流场景\n- 🚀 零外部依赖，不依赖三方 npm 包\n- 💪 使用 TypeScript 编写，提供完整的类型定义\n- 💪 单元测试覆盖率超过 90%，提供稳定性保障\n- 📖 提供丰富的中英文文档和组件示例\n- 📖 提供 Sketch 和 Axure 设计资源\n- 🍭 支持 Vue 2、Vue 3 和微信小程序\n- 🍭 支持 Nuxt 2、Nuxt 3，提供 Nuxt 的 [Vant Module](https://github.com/vant-ui/vant-nuxt)\n- 🍭 支持主题定制，内置 700+ 个主题变量\n- 🍭 支持按需引入和 Tree Shaking\n- 🍭 支持无障碍访问（持续改进中）\n- 🍭 支持深色模式\n- 🍭 支持服务器端渲染\n- 🌍 支持国际化，内置 30+ 种语言包\n\n### 版本提示\n\n你当前浏览的是 **Vant 4.x 版本** 的文档，适用于 Vue 3 开发。如果你在使用 Vue 2，请浏览 [Vant 2 文档](/vant/v2/)。\n\n### 脚手架\n\n推荐使用 [Rsbuild](https://github.com/web-infra-dev/rsbuild) 来创建一个脚手架项目。\n\nRsbuild 是基于 Rspack 的构建工具，由 Vant 作者开发，具备一流的构建速度和开发体验，对 Vant 提供第一优先级支持。\n\n你可以通过以下命令创建一个 Rsbuild 项目：\n\n```bash\nnpm create rsbuild@latest\n```\n\n请访问 [Rsbuild 仓库](https://github.com/web-infra-dev/rsbuild) 了解更多信息。\n\n### 快速上手\n\n请阅读[快速上手](#/zh-CN/quickstart)章节，通过该章节你可以了解到 Vant 的安装方法和基本使用姿势。\n\n### 浏览器支持\n\nVant 2 支持现代浏览器以及 Android >= 4.0、iOS >= 8.0。\n\nVant 3/4 支持现代浏览器以及 Chrome >= 51、iOS >= 10.0（与 Vue 3 一致）。\n\n### 维护状态\n\n目前 Vant 各个版本的维护状态如下：\n\n| 名称 | 框架 | 发布时间 | 最新版 | 维护状态 |\n| --- | --- | --- | --- | --- |\n| Vant 4 | Vue 3 | `2022.12` | ![](https://img.shields.io/npm/v/vant/latest?style=flat-square) | 长期支持 |\n| Vant 3 | Vue 3 | `2020.12` | ![](https://img.shields.io/npm/v/vant/latest-v3?style=flat-square) | 终止支持，不再接受 PR |\n| Vant 2 | Vue 2 | `2019.06` | ![](https://img.shields.io/npm/v/vant/latest-v2?style=flat-square) | 终止支持，不再接受 PR |\n| Vant 1 | Vue 2 | `2018.03` | ![](https://img.shields.io/npm/v/vant/latest-v1?style=flat-square) | 终止支持，不再接受 PR |\n\n## 链接\n\n### 官方生态\n\n由 Vant 官方团队维护的项目如下：\n\n| 项目 | 描述 |\n| --- | --- |\n| [vant-weapp](https://github.com/vant-ui/vant-weapp) | Vant 微信小程序版 |\n| [vant-demo](https://github.com/vant-ui/vant-demo) | Vant 官方示例合集 |\n| [vant-cli](https://github.com/vant-ui/vant/tree/main/packages/vant-cli) | 开箱即用的组件库搭建工具 |\n| [vant-icons](https://github.com/vant-ui/vant/tree/main/packages/vant-icons) | Vant 图标库 |\n| [vant-touch-emulator](https://github.com/vant-ui/vant/tree/main/packages/vant-touch-emulator) | 在桌面端使用 Vant 的辅助库 |\n| [vant-nuxt](https://github.com/vant-ui/vant-nuxt) | 为 Nuxt 准备的模块 |\n\n### 社区生态\n\n由社区维护的项目如下，欢迎补充：\n\n| 项目 | 描述 |\n| --- | --- |\n| [3lang3/react-vant](https://github.com/3lang3/react-vant) | 参照 Vant 打造的 React 移动端组件库 |\n| [vant-theme](https://github.com/Aisen60/vant-theme) | Vant 在线主题预览工具 |\n| [@antmjs/vantui](https://github.com/antmjs/vantui) | 基于 Vant Weapp 开发的多端组件库，同时支持 Taro 和 React |\n| [vant-playground](https://github.com/LadyChatterleyLover/vant-playground) | Vant Playground |\n| [sfc-playground-vant](https://github.com/zhixiaoqiang/sfc-playground-vant) | Vant Playground |\n| [vue3-h5-template](https://github.com/yulimchen/vue3-h5-template) | 基于 Vant 的移动端项目模板 |\n| [vue3-vant-mobile](https://github.com/vue-zone/vue3-vant-mobile) | 基于 Vant 的移动端项目模板，开箱即用 |\n| [raycast-vant-documentation](https://github.com/Aisen60/raycast-vant-documentation) | 一个 Raycast 拓展，能在 Raycast 中搜索 Vant 组件库文档 |\n| [nuxt-vant-mobile](https://github.com/vue-zone/nuxt-vant-mobile) | 基于 Vant 的 Nuxt _⁴_ 项目模板，开箱即用 |\n| [mobvue](https://github.com/un-pany/mobvue) | 一个精心制作的移动端 H5 模板 |\n\n### 其他链接\n\n- [意见反馈](https://github.com/vant-ui/vant/issues)\n- [更新日志](#/zh-CN/changelog)\n- [Discussions 讨论区](https://github.com/vant-ui/vant/discussions)\n\n## 贡献\n\n### 核心团队\n\n以下是 Vant 和 Vant Weapp 的核心贡献者们：\n\n| [![chenjiahan](https://avatars.githubusercontent.com/u/7237365?s=80&v=4)](https://github.com/chenjiahan/) | [![cookfront](https://avatars.githubusercontent.com/u/4829465?s=80&v=4)](https://github.com/cookfront/) | [![w91](https://avatars.githubusercontent.com/u/2599455?s=80&v=4)](https://github.com/w91/) | [![pangxie1991](https://avatars.githubusercontent.com/u/5961240?s=80&v=4)](https://github.com/pangxie1991/) | [![rex-zsd](https://avatars.githubusercontent.com/u/8767877?s=80&v=4)](https://github.com/rex-zsd/) | [![nemo-shen](https://avatars.githubusercontent.com/u/13480805?s=80&v=4)](https://github.com/nemo-shen/) |\n| :-: | :-: | :-: | :-: | :-: | :-: |\n| [chenjiahan](https://github.com/chenjiahan/) | [cookfront](https://github.com/cookfront/) | [wangnaiyi](https://github.com/w91/) | [pangxie](https://github.com/pangxie1991/) | [rex-zsd](https://github.com/rex-zsd/) | [nemo-shen](https://github.com/nemo-shen/) |\n\n| [![Lindysen](https://avatars.githubusercontent.com/u/33708359?s=80&v=4)](https://github.com/Lindysen/) | [![JakeLaoyu](https://avatars.githubusercontent.com/u/16181940?s=80&v=4)](https://github.com/JakeLaoyu/) | [![landluck](https://avatars.githubusercontent.com/u/27060081?s=80&v=4)](https://github.com/landluck/) | [![wjw-gavin](https://avatars.githubusercontent.com/u/19986739?s=80&v=4)](https://github.com/wjw-gavin/) | [![inottn](https://avatars.githubusercontent.com/u/18509404?s=80&v=4)](https://github.com/inottn/) | [![zhousg](https://avatars.githubusercontent.com/u/15833290?s=80&v=4)](https://github.com/zhousg/) |\n| :-: | :-: | :-: | :-: | :-: | :-: |\n| [Lindysen](https://github.com/Lindysen/) | [JakeLaoyu](https://github.com/JakeLaoyu/) | [landluck](https://github.com/landluck/) | [wjw-gavin](https://github.com/wjw-gavin/) | [inottn](https://github.com/inottn/) | [zhousg](https://github.com/zhousg/) |\n\n### 贡献者们\n\n感谢以下小伙伴们为 Vant 发展做出的贡献：\n\n<a href=\"https://github.com/vant-ui/vant/graphs/contributors\" target=\"_blank\">\n  <img src=\"https://opencollective.com/vant/contributors.svg?width=890&button=false\" alt=\"contributors\" style=\"width: 100%; margin: 16px 0\">\n</a>\n\n### 贡献指南\n\n贡献代码请阅读我们的[贡献指南](#/zh-CN/contribution)。\n\n使用过程中发现任何问题都可以提 [Issue](https://github.com/vant-ui/vant/issues) 给我们，当然，我们也非常欢迎你给我们发 [PR](https://github.com/vant-ui/vant/pulls)。\n\n### 开源协议\n\n本项目基于 [MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89) 协议，请自由地享受和参与开源。\n\n<!-- File: packages/vant/docs/markdown/migrate-from-v2.en-US.md (Tokens: ~1544 | Category: anthropic-skill) -->\n# Upgrade from v2 to v3\n\n### Introduction\n\nThis document provides an upgrade guide from Vant 2 to Vant 3.\n\n### Upgrade steps\n\n#### 1. Upgrade to Vue 3\n\nVant 3 is developed based on Vue 3. Before using Vant 3, please upgrade the Vue in the project to version 3.0 or above.\n\n#### 2. Handle incompatible changes\n\nThere are some incompatible changes from Vant 2 to Vant 3, please read the incompatible changes below carefully and deal with them in order.\n\n## Incompatible changes\n\n### Component renaming\n\nThe GoodsAction component is renamed to **ActionBar**.\n\n```html\n<!-- Vant 2 -->\n<van-goods-action>\n  <van-goods-action-icon text=\"icon\" />\n  <van-goods-action-button text=\"button\" />\n</van-goods-action>\n\n<!-- Vant 3 -->\n<van-action-bar>\n  <van-action-bar-icon text=\"icon\" />\n  <van-action-bar-button text=\"button\" />\n</van-action-bar>\n```\n\n### Deprecated components\n\nVant v3 removed the SwitchCell component, you can use the Cell and Switch components instead.\n\n```html\n<!-- Vant 2 -->\n<van-switch-cell title=\"title\" v-model=\"checked\" />\n\n<!-- Vant 3 -->\n<van-cell center title=\"title\">\n  <template #right-icon>\n    <van-switch v-model=\"checked\" size=\"24\" />\n  </template>\n</van-cell>\n```\n\n### Popup components v-model changes\n\nIn order to adapt to Vue 3's v-model API usage changes, all components that provide v-model have some adjustments in usage. `v-model` for the following popup components has been renamed to `v-model:show`:\n\n- ActionSheet\n- Calendar\n- Dialog\n- Image Preview\n- Notify\n- Popover\n- Popup -ShareSheet\n\n```html\n<!-- Vant 2 -->\n<van-popup v-model=\"show\" />\n\n<!-- Vant 3 -->\n<van-popup v-model:show=\"show\" />\n```\n\n### Form component v-model internal value change\n\nThe prop corresponding to the following form component v-model is renamed to `modelValue`, and the event is renamed to `update:modelValue`:\n\n-Checkbox\n\n- CheckboxGroup -DatetimePicker -DropdownItem -Field -Radio\n- RadioGroup -Search\n- Stepper -Switch\n- Sidebar\n- Uploader\n\n```html\n<!-- Vant 2 -->\n<van-field :value=\"value\" @input=\"onInput\" />\n\n<!-- Vant 3 -->\n<van-field :model-value=\"value\" @update:model-value=\"onInput\" />\n```\n\n### Other v-model tweaks\n\n- Circle: `v-model` renamed to `v-model:currentRate`\n- CouponList: `v-model` renamed to `v-model:code`\n- List: `v-model` renamed to `v-model:loading`, `error.sync` renamed to `v-model:error`\n- Tabs: `v-model` renamed to `v-model:active`\n- TreeSelect: `active-id.sync` renamed to `v-model:active-id`\n- TreeSelect: `main-active-index.sync` renamed to `v-model:main-active-index`\n\n### Badge prop adjustment\n\nIn the previous version, we used the `info` prop to display the badge in the upper right corner of the icon. In order to better meet the naming habits of the community, we renamed this prop to badge, which affects the following components:\n\n- Tab\n- Icon\n- GridItem\n- TreeSelect\n- TabbarItem\n- SidebarItem\n- GoodsActionIcon\n\nAt the same time, the Info component will also be renamed to Badge.\n\n```html\n<!-- Vant 2 -->\n<van-icon info=\"5\" />\n\n<!-- Vant 3 -->\n<van-icon badge=\"5\" />\n```\n\n### Rename the get-container prop\n\nVue 3.0 added a new Teleport component, which provides the ability to render the component to any DOM position, and Vant 2 also provides similar capabilities through the `get-container` prop. For consistency with the official API, the `get-container` prop in Vant 3 will be renamed to `teleport`.\n\n```html\n<!-- Vant 2 -->\n<template>\n  <van-popup get-container=\"body\" />\n  <van-popup :get-container=\"getContainer\" />\n</template>\n<script>\n  export default {\n    methods: {\n      getContainer() {\n        return document.querySelector('#container');\n      },\n    },\n  };\n</script>\n\n<!-- Vant 3 -->\n<template>\n  <van-popup teleport=\"body\" />\n  <van-popup :teleport=\"container\" />\n</template>\n<script>\n  export default {\n    beforeCreate() {\n      this.container = document.querySelector('#container');\n    },\n  };\n</script>\n```\n\n### API adjustments\n\n#### Area\n\n- The `change` event parameter is no longer passed to the component instance\n\n#### Button\n\n- The type corresponding to the blue button is adjusted from `info` to `primary`\n- The type corresponding to the green button is adjusted from `primary` to `success`\n- Default value of `native-type` changed from `submit` to `button`\n\n#### Checkbox\n\n- When used inside Cell, you now need to manually add `@click.stop` to prevent event bubbling\n\n#### Dialog\n\n- The `allow-html` prop is disabled by default.\n- `before-close` prop usage adjustment, no longer pass in the done function, but return Promise to control.\n\n#### DatetimePicker\n\n- The `change` event parameter is no longer passed to the component instance\n\n#### ImagePreview\n\n- Remove the `async-close` prop, you can use the new `before-close` prop instead.\n\n#### Picker\n\n- The `change` event parameter is no longer passed to the component instance.\n- The `allow-html` prop is turned off by default.\n- The `show-toolbar` prop is enabled by default.\n- Under cascade selection, the callback parameters returned by the `confirm` and `change` events will contain a complete option object.\n\n#### Popover\n\n- Default value of `trigger` prop adjusted to `click`.\n\n#### Stepper\n\n- The `async-change` prop is renamed to `before-change`, and the usage method is adjusted.\n\n#### SwipeCell\n\n- `detail` parameter of `open` event renamed to `name`.\n- `on-close` prop renamed to `before-close`, and parameter structure adjusted.\n- The `before-close` prop is no longer passed to the component instance.\n\n#### Toast\n\n- `mask` prop renamed to `overlay`.\n\n#### TreeSelect\n\n- `navclick` event renamed to `click-nav`.\n- `itemclick` event renamed to `click-item`.\n\n### Global methods\n\nGlobal methods such as `$toast` and `$dialog` are provided by default in Vant 2, but Vue 3.0 no longer supports directly mounting methods on Vue's prototype chain, so starting from Vant 3.0, you must first pass `app.use` registers the component to the corresponding app.\n\n```js\nimport { Toast, Dialog, Notify } from 'vant';\n\n// Register components such as Toast to the app\napp.use(Toast);\napp.use(Dialog);\napp.use(Notify);\n\n// Subcomponents in the app can directly call methods such as $toast\nexport default {\n  mounted() {\n    this.$toast('prompt text');\n  },\n};\n```\n\n<!-- File: packages/vant/docs/markdown/migrate-from-v2.zh-CN.md (Tokens: ~1813 | Category: anthropic-skill) -->\n# 从 v2 升级到 v3\n\n### 介绍\n\n本文档提供了从 Vant 2 到 Vant 3 的升级指南。\n\n### 升级步骤\n\n#### 1. 升级 Vue 3\n\nVant 3 是基于 Vue 3 开发的，在使用 Vant 3 前，请将项目中的 Vue 升级到 3.0 以上版本。\n\n#### 2. 处理不兼容更新\n\nVant 2 到 Vant 3 存在一些不兼容更新，请仔细阅读下方的不兼容更新内容，并依次处理。\n\n## 不兼容更新\n\n### 组件命名调整\n\nGoodsAction 商品导航组件重命名为 **ActionBar 行动栏**。\n\n```html\n<!-- Vant 2 -->\n<van-goods-action>\n  <van-goods-action-icon text=\"图标\" />\n  <van-goods-action-button text=\"按钮\" />\n</van-goods-action>\n\n<!-- Vant 3 -->\n<van-action-bar>\n  <van-action-bar-icon text=\"图标\" />\n  <van-action-bar-button text=\"按钮\" />\n</van-action-bar>\n```\n\n### 废弃组件\n\n移除 SwitchCell 组件，可以直接使用 Cell 和 Switch 组件代替。\n\n```html\n<!-- Vant 2 -->\n<van-switch-cell title=\"标题\" v-model=\"checked\" />\n\n<!-- Vant 3 -->\n<van-cell center title=\"标题\">\n  <template #right-icon>\n    <van-switch v-model=\"checked\" size=\"24\" />\n  </template>\n</van-cell>\n```\n\n### 弹窗型组件 v-model 变更\n\n为了适配 Vue 3 的 v-model API 用法变更，所有提供 v-model 属性的组件在用法上有一定调整。以下弹窗类组件的 `v-model` 被重命名为 `v-model:show`：\n\n- ActionSheet\n- Calendar\n- Dialog\n- ImagePreview\n- Notify\n- Popover\n- Popup\n- ShareSheet\n\n```html\n<!-- Vant 2 -->\n<van-popup v-model=\"show\" />\n\n<!-- Vant 3 -->\n<van-popup v-model:show=\"show\" />\n```\n\n### 表单型组件 v-model 内部值变更\n\n以下表单型组件 v-model 对应的 prop 重命名为 `modelValue`，event 重命名为 `update:modelValue`：\n\n- Checkbox\n- CheckboxGroup\n- DatetimePicker\n- DropdownItem\n- Field\n- Radio\n- RadioGroup\n- Search\n- Stepper\n- Switch\n- Sidebar\n- Uploader\n\n```html\n<!-- Vant 2 -->\n<van-field :value=\"value\" @input=\"onInput\" />\n\n<!-- Vant 3 -->\n<van-field :model-value=\"value\" @update:model-value=\"onInput\" />\n```\n\n### 其他 v-model 调整\n\n- Circle: `v-model` 重命名为 `v-model:currentRate`\n- CouponList: `v-model` 重命名为 `v-model:code`\n- List: `v-model` 重命名为 `v-model:loading`，`error.sync` 重命名为 `v-model:error`\n- Tabs: `v-model` 重命名为 `v-model:active`\n- TreeSelect: `active-id.sync` 重命名为 `v-model:active-id`\n- TreeSelect: `main-active-index.sync` 重命名为 `v-model:main-active-index`\n\n### 徽标属性命名调整\n\n在之前的版本中，我们通过 info 属性来展示图标右上角的徽标信息，为了更符合社区的命名习惯，我们将这个属性重命名为 badge，影响以下组件：\n\n- Tab\n- Icon\n- GridItem\n- TreeSelect\n- TabbarItem\n- SidebarItem\n- GoodsActionIcon\n\n同时内部使用的 Info 组件也会重命名为 Badge。\n\n```html\n<!-- Vant 2 -->\n<van-icon info=\"5\" />\n\n<!-- Vant 3 -->\n<van-icon badge=\"5\" />\n```\n\n### 重命名 get-container 属性\n\nVue 3.0 中增加了 `Teleport` 组件，提供将组件渲染到任意 DOM 位置的能力，Vant 2 也通过 `get-container` 属性提供了类似的能力。为了与官方的 API 保持一致，Vant 中的 `get-container` 属性将重命名为 `teleport`。\n\n```html\n<!-- Vant 2 -->\n<template>\n  <van-popup get-container=\"body\" />\n  <van-popup :get-container=\"getContainer\" />\n</template>\n<script>\n  export default {\n    methods: {\n      getContainer() {\n        return document.querySelector('#container');\n      },\n    },\n  };\n</script>\n\n<!-- Vant 3 -->\n<template>\n  <van-popup teleport=\"body\" />\n  <van-popup :teleport=\"container\" />\n</template>\n<script>\n  export default {\n    beforeCreate() {\n      this.container = document.querySelector('#container');\n    },\n  };\n</script>\n```\n\n### API 调整\n\n#### Area\n\n- `change` 事件参数不再传入组件实例\n\n#### Button\n\n- 蓝色按钮对应的类型由 `info` 调整为 `primary`\n- 绿色按钮对应的类型由 `primary` 调整为 `success`\n- `native-type` 的默认值由 `submit` 调整为 `button`\n\n#### Checkbox\n\n- 在 Cell 内部使用时，现在需要手动添加 `@click.stop` 来阻止事件冒泡\n\n#### Dialog\n\n- 默认关闭 `allow-html` 属性\n- `before-close` 属性用法调整，不再传入 done 函数，而是通过返回 Promise 来控制\n\n#### DatetimePicker\n\n- `change` 事件参数不再传入组件实例\n\n#### ImagePreview\n\n- 移除 `async-close` 属性，可以使用新增的 `before-close` 属性代替\n\n#### Picker\n\n- `change` 事件参数不再传入组件实例\n- 默认关闭 `allow-html` 属性\n- 默认开启 `show-toolbar` 属性\n- 级联选择下，`confirm`、`change` 事件返回的回调参数将包含为完整的选项对象。\n\n#### Popover\n\n- `trigger` 属性的默认值调整为 `click`\n\n#### Stepper\n\n- `async-change` 属性重命名为 `before-change`，并调整使用方法\n\n#### SwipeCell\n\n- `open` 事件的 `detail` 参数重命名为 `name`\n- `on-close` 属性重命名为 `before-close`，并调整参数结构\n- `before-close` 属性不再传入组件实例\n\n#### Toast\n\n- `mask` 属性重命名为 `overlay`\n\n#### TreeSelect\n\n- `navclick` 事件重命名为 `click-nav`\n- `itemclick` 事件重命名为 `click-item`\n\n### 注册全局方法\n\nVant 2 中默认提供了 `$toast`、`$dialog` 等全局方法，但 Vue 3.0 不再支持直接在 Vue 的原型链上挂载方法，因此从 Vant 3.0 开始，使用全局方法前必须先通过 `app.use` 将组件注册到对应的 app 上。\n\n```js\nimport { Toast, Dialog, Notify } from 'vant';\n\n// 将 Toast 等组件注册到 app 上\napp.use(Toast);\napp.use(Dialog);\napp.use(Notify);\n\n// app 内的子组件可以直接调用 $toast 等方法\nexport default {\n  mounted() {\n    this.$toast('提示文案');\n  },\n};\n```\n\n<!-- File: packages/vant/docs/markdown/migrate-from-v3.en-US.md (Tokens: ~3576 | Category: anthropic-skill) -->\n# Upgrade from v3 to v4\n\n### Introduction\n\nThis document provides an upgrade guide from Vant 3 to Vant 4.\n\n### Installing Vant 4\n\nFirst you need to install Vant 4 and `@vant/compat`.\n\n`@vant/compat` is a compatibility package that helps you to switch from Vant 3 to Vant 4.\n\n```bash\n# Install via npm\nnpm add vant@^4 @vant/compat@^1\n\n# Install via yarn\nyarn add vant@^4 @vant/compat@^1\n\n# Install via pnpm\npnpm add vant@^4 @vant/compat@^1\n\n# Install via Bun\nbun add vant@^4 @vant/compat@^1\n```\n\nYou can also change the version directly in the `dependencies` field of `package.json`, and you will need to reinstall the dependencies after the change.\n\n```diff\n{\n   \"dependencies\": {\n-    \"vant\": \"^3.0.0\",\n+    \"vant\": \"^4.0.0\",\n+    \"@vant/compat\": \"^1.0.0\",\n   }\n}\n```\n\n## Import method changes\n\n### Remove babel-plugin-import\n\nStarting from Vant 4.0, `babel-plugin-import` will no longer be supported, please remove the `babel-plugin-import` plugin that the project depends on.\n\nSimply remove the following code in `babel.config.js`:\n\n```diff\nmodule.exports = {\n  plugins: [\n-    ['import', {\n-      libraryName: 'vant',\n-      libraryDirectory: 'es',\n-      style: true\n-    }, 'vant']\n  ]\n};\n```\n\n#### Benefits\n\nThe main benefits of removing `babel-plugin-import` are as follows:\n\n- Instead of relying heavily on Babel compilation, projects can use modern compilation tools such as SWC and esbuild to improve compilation efficiency.\n- No longer subject to the import restrictions of `babel-plugin-import`, you can import content other than Vant components, such as the new `showToast` method in Vant 4, or the `buttonProps` object:\n\n```ts\nimport { showToast, buttonProps } from 'vant';\n```\n\n#### Import style on demand\n\nRemoving `babel-plugin-import` will not affect the JS size of the project, because Vant supports Tree Shaking to remove unnecessary JS code by default.\n\nThe way the CSS code is imported can be selected from the following two ways:\n\n- Include Vant's style files in their entirety in the project:\n\n```js\nimport 'vant/lib/index.css';\n```\n\n- Use the [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) plugin to import styles on demand, see [Quick Start](#/en-US/quickstart) for detailed usage.\n\n## Component refactoring\n\n### Introduction\n\nIn Vant 4, three components have been refactored, they are:\n\n- `Area`\n- `Picker`\n- `DatetimePicker`\n\nThe reason for refactoring these three components is that in the previous version, the API design of the `Picker` component had some unreasonable designs, which caused people to often encounter problems when using it, such as:\n\n- Picker columns data format definition is unreasonable, easy to cause misunderstanding\n- The Picker data flow is not clear, exposing too many instance methods to operate on the data\n- DatetimePicker logic is too complicated, bugs often occur in borderline scenarios\n\nTo solve the above problems, we have refactored the `Picker` component in the v4 version, and also refactored the `Area` and `DatetimePicker` components derived from `Picker`. If you use these three components in your project, please read the documentation carefully and upgrade.\n\n### Picker component refactoring\n\n#### Major changes\n\n- Support binding the currently selected value through `v-model`, remove the `default-index` prop.\n- Redefine the structure of the `columns` prop.\n- Removed the instance methods for manipulating internal data, only the `confirm` method remains.\n- Added `getSelectedOptions` instance method.\n- Changed parameters of `confirm`, `cancel`, `change` events.\n- Renamed `item-height` prop to `option-height`.\n- Renamed `visible-item-count` prop to `visible-option-num`.\n\n> Please refer to [Picker Component Documentation](#/en-US/picker) for detailed usage.\n\n### DatetimePicker component refactoring\n\nThe DatetimePicker component is split into three subcomponents:\n\n- [TimePicker](#/en-US/time-picker): Used for time selection, including hours, minutes, and seconds.\n- [DatePicker](#/en-US/date-picker): Used for date selection, including year, month and day.\n- [PickerGroup](#/en-US/picker-group): Used to combine multiple Picker selector components to select multiple values in one interaction.\n\nAt the same time, the TimePicker and DatePicker components are also refactored based on the new version of the Picker component, and some API designs are optimized.\n\n#### Major changes\n\nThe following are the main API changes of TimePicker and DatePicker. For more details, please refer to [TimePicker](#/en-US/time-picker) and [DatePicker](#/en-US/date-picker) documentation.\n\n- The value of `v-model` binding is adjusted to array format.\n- Added `columns-type` prop to control option type and order.\n- Remove `type` and `columns-order` props.\n- Remove `getPicker` method.\n- Adjust the parameters of `confirm`, `cancel`, `change` events to be consistent with the Picker component.\n\n> Vant 4 no longer provides the old version of the DatetimePicker component. The PickerGroup component can be used to achieve more flexible and richer interactive effects. For specific usage, please refer to the [PickerGroup](#/en-US/picker-group) component documentation.\n\n### Area component refactoring\n\nThe Area component is encapsulated based on the Picker component, so this upgrade also refactors the internal logic of the Area component and optimizes some APIs.\n\n#### Major changes\n\n- Support binding the currently selected value via `v-model`.\n- Removed `reset` method, now can be reset by modifying `v-model`.\n- Removed `is-oversea-code` prop.\n- Adjust the parameters of `confirm`, `cancel`, `change` events to be consistent with the Picker component.\n- Renamed `value` prop to `modelValue`.\n- Renamed `item-height` prop to `option-height`.\n- Renamed `visible-item-count` prop to `visible-option-num`.\n\n> Please refer to [Area Component Documentation](#/en-US/area) for detailed usage.\n\n## API tweaks\n\n### Dialog calling method adjustment\n\nIn Vant 3, `Dialog` is a function, and calling the function can quickly evoke the global Dialog component, and `Dialog.Component` is the `Dialog` component object, which is different from the usage of most components, which can easily lead to mistake.\n\nIn order to be more intuitive, we adjusted the calling method of `Dialog` in Vant 4, renamed the `Dialog()` function to `showDialog()`, and let `Dialog` directly point to the component object.\n\n```js\n// Vant 3\nDialog(); // function call\nDialog.Component; // Component object\n\n// Vant 4\nshowDialog(); // function call\nDialog; // component object\n```\n\nSince `Dialog` has become a component object, other methods mounted on `Dialog` have also been renamed. The mapping relationship between the old and new APIs is as follows:\n\n```js\nDialog(); // -> showDialog()\nDialog.alert(); // -> showDialog()\nDialog.confirm(); // -> showConfirmDialog()\nDialog.close(); // -> closeDialog();\nDialog.setDefaultOptions(); // -> setDialogDefaultOptions()\nDialog.resetDefaultOptions(); // -> resetDialogDefaultOptions()\n```\n\n#### Migration\n\nIn order to facilitate the migration of old version code to v4, we provide a compatibility solution, you can use the `Dialog` object exported in `@vant/compat` to be compatible with the original code.\n\nReference the `Dialog` method from `@vant/compat`:\n\n```js\nimport { Dialog } from '@vant/compat';\n\nDialog();\nDialog.close();\n```\n\nThe `Dialog` exported in `@vant/compat` has exactly the same API and behavior as the `Dialog` in Vant 3, so you only need to modify the reference path of `Dialog`, and other codes can remain unchanged.\n\nAfter the project is upgraded to Vant v4, it is recommended to gradually replace it with the new `showDialog` and other methods in iterations, and remove the `@vant/compat` package.\n\n### Toast calling method adjustment\n\nIn Vant 4, the calling method of the `Toast` component has also been adjusted, which is consistent with the changes of the `Dialog` component:\n\n```js\n// Vant 3\nToast(); // function call\n\n// Vant 4\nshowToast(); // function call\nToast; // component object\n```\n\nOther methods mounted on `Toast` have also been renamed, and the mapping relationship between the old and new APIs is as follows:\n\n```js\nToast(); // -> showToast()\nToast.fail(); // -> showFailToast()\nToast.success(); // -> showSuccessToast()\nToast.loading(); // -> showLoadingToast()\nToast.clear(); // -> closeToast()\nToast.setDefaultOptions(); // -> setToastDefaultOptions()\nToast.resetDefaultOptions(); // -> resetToastDefaultOptions()\n```\n\nAt the same time, Vant 4 will no longer globally register the `$toast` method on the `this` object, which means that `$toast` will not be accessible on the `this` object.\n\n#### Migration\n\nIn order to facilitate code migration, we provide a compatibility solution, you can use the `Toast` object exported in `@vant/compat` to be compatible with the original code.\n\n```js\nimport { Toast } from '@vant/compat';\n\nToast();\nToast.clear();\n```\n\nThe `Toast` exported in `@vant/compat` has exactly the same API and behavior as `Toast` in Vant 3, so you only need to modify the reference path of `Toast`, and other codes can remain unchanged.\n\n### Notify calling method adjustment\n\nIn Vant 4, the calling method of the `Notify` component has also been adjusted, which is consistent with the changes of the `Dialog` component:\n\n```js\n// Vant 3\nNotify(); // function call\nNotify.Component; // component object\n\n// Vant 4\nshowNotify(); // function call\nNotify; // component object\n```\n\nOther methods mounted on `Notify` have also been renamed, and the mapping relationship between the old and new APIs is as follows:\n\n```js\nNotify(); // -> showNotify()\nNotify.clear(); // -> closeNotify()\nNotify.setDefaultOptions(); // -> setNotifyDefaultOptions()\nNotify.resetDefaultOptions(); // -> resetNotifyDefaultOptions()\n```\n\nAt the same time, Vant 4 will no longer globally register the `$notify` method on the `this` object, which means that `$notify` will not be accessible on the `this` object.\n\n#### Migration\n\nIn order to facilitate code migration, we provide a compatibility solution, you can use the `Notify` object exported in `@vant/compat` to be compatible with the original code.\n\n```js\nimport { Notify } from '@vant/compat';\n\nNotify();\nNotify.clear();\n```\n\n`Notify` exported in `@vant/compat` has exactly the same API and behavior as `Notify` in Vant 3, so you only need to modify the reference path of `Notify`, and other codes can remain unchanged.\n\n### ImagePreview calling method adjustment\n\nIn Vant 4, the calling method of the `ImagePreview` component has also been adjusted, which is consistent with the changes of the `Dialog` component:\n\n```js\n// Vant 3\nImagePreview(); // function call\nImagePreview.Component; // component object\n\n// Vant 4\nshowImagePreview(); // function call\nImagePreview; // component object\n```\n\n#### Migration\n\nIn order to facilitate code migration, we provide a compatibility solution, you can use the `ImagePreview` object exported in `@vant/compat` to be compatible with the original code.\n\n```js\nimport { ImagePreview } from '@vant/compat';\n\nImagePreview();\n```\n\nThe `ImagePreview` exported in `@vant/compat` has exactly the same API and behavior as the `ImagePreview` in Vant 3, so you only need to modify the reference path of `ImagePreview`, and other codes can remain unchanged.\n\n### Event naming adjustment\n\nStarting from Vant 4, all events are named in **camelCase** officially recommended by Vue.\n\n```js\n// Vant 3\nemit('click-input');\n\n// Vant 4\nemit('clickInput');\n```\n\nThis change **does not affect the original template code**, Vue will automatically format the event name in the template, so you don't need to make any changes.\n\n```html\n<!-- The following code works as usual without any changes -->\n<van-field @click-input=\"onClick\" />\n```\n\nIf you use the Vant component in JSX, you need to adjust the monitored event name to camel case format, the original dash format will no longer take effect, and the new monitoring method is more in line with JSX's own specifications:\n\n```jsx\n// Vant 3\n<Field onClick-input={onClick} />\n\n// Vant 4\n<Field onClickInput={onClick} />\n```\n\n### Other API adjustments\n\nIn Vant 4.0 version, the following APIs have been updated incompatible:\n\n#### AddressEdit\n\n- Remove `show-postal` prop.\n- Remove `postal-validator` prop.\n- Parameter of `change-area` event changed to `PickerOption[]` type.\n- Remove undocumented `getArea` instance method.\n\n#### Popup\n\nSome adjustments have been made to the CSS style of Popup. If you have added some custom CSS styles to the Popup component, please check if this update affects the UI in the project.\n\n- Added `box-sizing: border-box` style by default.\n- Changed the horizontal centering method when `position=\"center\"`, to solve the problem that the width of the Popup cannot be adjusted correctly.\n\n```less\n// Vant 3\n.van-popup --center {\n  left: 50%;\n  transform: translate3d(-50%, -50%, 0);\n}\n\n// Vant 4\n.van-popup --center {\n  left: 0;\n  right: 0;\n  width: fit-content;\n  max-width: calc(100vw - var(--van-padding-md) * 2);\n  margin: 0 auto;\n  transform: translateY(-50%);\n}\n```\n\n#### Tabs\n\n- Removed `click` and `disabled` events, please use `click-tab` event instead\n\n## Style adjustments\n\n### Uniform primary color\n\nIn the previous version, Vant components had two primary colors, some components used blue (#1989fa) as the primary color, and others used red (#ee0a24).\n\nTo keep the colour specification consistent,, we have unified the primary color in Vant 4, and all components use blue as the primary color.\n\nThe primary color of the following components has been changed from red to blue:\n\n- AddressEdit\n- AddressList\n- Card\n- Calendar\n- Cascader\n- ContactList\n- ContactEdit\n- CouponList\n- Dialog\n- DropdownMenu -IndexBar\n- Sidebar -Steps\n- Tabs\n- TreeSelect\n\n### Remove Less variables\n\nCurrently, Vant already supports theme customization capabilities based on CSS variables, which is more flexible than Less customization. Therefore, Vant 4 will no longer provide Less-based theme customization.\n\nThis means that Vant's npm package will no longer contain `.less` style source files, only the compiled `.css` style files will be provided.\n\nIf your project is using an old version of Less theme customization, please use the [ConfigProvider global configuration](#/en-US/config-provider) component to replace it.\n\n### Simplify CSS variable names\n\nWith code size and usability in mind, we have simplified the names of some CSS variables, and used shorter words in the variable names to reduce the code size.\n\nThis upgrade includes the following variable name changes:\n\n```less\nanimation-duration -> duration\nanimation-timing-function-enter -> ease-out\nanimation-timing-function-leave -> ease-in\nbackground-color -> background\nbackground-color-light -> background-2\nborder-radius -> radius\nborder-width-base -> border-width\nbox-shadow -> shadow\nfont-family -> font\nfont-weight-bold -> font-bold\nprice-integer-font -> price-font\ntext-link -> link\ntransition-duration -> duration\n```\n\nDue to the large number of CSS variables involved, it is recommended that you perform a global match and replace in the code repository.\n\nFor the `ConfigProvider` component, we have added the `ConfigProviderThemeVars` type definition to provide full type hints. In TypeScript code, you can use type hints to ensure that theme variables are substituted correctly.\n\n```ts\nimport type { ConfigProviderThemeVars } from 'vant';\n\nconst themeVars: ConfigProviderThemeVars = {\n  sliderBarHeight: '4px',\n};\n```\n\n<!-- File: packages/vant/docs/markdown/migrate-from-v3.zh-CN.md (Tokens: ~4439 | Category: anthropic-skill) -->\n# 从 v3 升级到 v4\n\n### 介绍\n\n本文档提供了从 Vant 3 到 Vant 4 的升级指南。\n\n### 安装 Vant 4\n\n首先你需要安装 Vant 4 以及 `@vant/compat`。\n\n`@vant/compat` 是一个兼容包，可以帮助你从 Vant 3 过渡到 Vant 4。\n\n```bash\n# 通过 npm 安装\nnpm add vant@^4 @vant/compat@^1\n\n# 通过 yarn 安装\nyarn add vant@^4 @vant/compat@^1\n\n# 通过 pnpm 安装\npnpm add vant@^4 @vant/compat@^1\n\n# 通过 Bun 安装\nbun add vant@^4 @vant/compat@^1\n```\n\n你也可以直接修改 `package.json` 的 `dependencies` 字段中的版本号，修改完成后需要重新安装依赖。\n\n```diff\n{\n  \"dependencies\": {\n-    \"vant\": \"^3.0.0\",\n+    \"vant\": \"^4.0.0\",\n+    \"@vant/compat\": \"^1.0.0\",\n  }\n}\n```\n\n## 调整按需引入方式\n\n### 移除 babel-plugin-import\n\n从 Vant 4.0 开始，将不再支持 `babel-plugin-import`，请移除项目中依赖的 `babel-plugin-import` 插件。\n\n只需要删除 `babel.config.js` 中的以下代码即可：\n\n```diff\nmodule.exports = {\n  plugins: [\n-    ['import', {\n-      libraryName: 'vant',\n-      libraryDirectory: 'es',\n-      style: true\n-    }, 'vant']\n  ]\n};\n```\n\n#### 收益\n\n移除 `babel-plugin-import` 主要带来以下收益：\n\n- 不再强依赖 Babel 编译，项目可以使用 SWC、esbuild 等现代编译工具，进而提升编译效率。\n- 不再受到 `babel-plugin-import` 的 import 限制，可以从 Vant 中导入除组件以外的内容，比如 Vant 4 中新增的 `showToast` 方法，或是 `buttonProps` 对象：\n\n```ts\nimport { showToast, buttonProps } from 'vant';\n```\n\n#### 样式引入方案\n\n移除 `babel-plugin-import` 对项目的 JS 体积不会有影响，因为 Vant 默认支持通过 Tree Shaking 来移除不需要的 JS 代码。\n\n而 CSS 代码的引入方式可以从以下两种方式中进行选择：\n\n- 在项目中全量引入 Vant 的样式文件：\n\n```js\nimport 'vant/lib/index.css';\n```\n\n- 通过 [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) 插件实现按需引入样式，详细用法参见 [快速上手](#/zh-CN/quickstart)。\n\n## 组件重构\n\n### 介绍\n\n在 Vant 4 中，一共有三个组件被完全重构，它们是：\n\n- `Area`\n- `Picker`\n- `DatetimePicker`\n\n这三个组件之所以被重构，是因为在之前的版本中，`Picker` 组件的 API 设计存在一些不合理的设计，导致大家在使用时经常遇到问题，比如：\n\n- Picker columns 数据格式定义不合理，容易产生误解\n- Picker 数据流不清晰，暴露了过多的实例方法来对数据进行操作\n- DatetimePicker 逻辑过于复杂，经常在边界场景下出现 bug\n\n为了解决上述问题，我们在 v4 版本中对 `Picker` 组件进行了重构，同时也重构了基于 `Picker` 派生出的 `Area` 和 `DatetimePicker` 组件。如果你的项目中使用了这三个组件，请仔细阅读文档并进行升级。\n\n### Picker 组件重构\n\n#### 主要变更\n\n- 支持通过 `v-model` 绑定当前选中的值，移除 `default-index` 属性\n- 重新定义了 `columns` 属性的结构\n- 移除了操作内部数据的实例方法，仅保留 `confirm` 方法\n- 新增 `getSelectedOptions` 实例方法\n- 调整了 `confirm`、`cancel`、`change` 事件的参数\n- 重命名 `item-height` 属性为 `option-height`\n- 重命名 `visible-item-count` 属性为 `visible-option-num`\n\n> 详细用法请参见 [Picker 组件文档](#/zh-CN/picker)。\n\n### DatetimePicker 组件重构\n\nDatetimePicker 组件被拆分为三个子组件：\n\n- [TimePicker](#/zh-CN/time-picker): 用于时间选择，包括时、分、秒。\n- [DatePicker](#/zh-CN/date-picker): 用于日期选择，包括年、月、日。\n- [PickerGroup](#/zh-CN/picker-group): 用于结合多个 Picker 选择器组件，在一次交互中完成多个值的选择。\n\n同时，TimePicker 和 DatePicker 组件也基于新版 Picker 组件进行重构，并优化了部分 API 设计。\n\n#### 主要变更\n\n以下是 TimePicker 和 DatePicker 的主要 API 变化，更多细节请参考 [TimePicker](#/zh-CN/time-picker) 和 [DatePicker](#/zh-CN/date-picker) 文档。\n\n- `v-model` 绑定的值调整为数组格式\n- 新增 `columns-type` 属性，用于控制选项类型和顺序\n- 移除 `type` 属性和 `columns-order` 属性\n- 移除 `getPicker` 方法\n- 调整 `confirm`、`cancel`、`change` 事件的参数，与 Picker 组件保持一致\n\n> Vant 4 不再提供旧版的 DatetimePicker 组件，使用 PickerGroup 组件可以实现更灵活、更丰富的交互效果，具体用法请参考 [PickerGroup](#/zh-CN/picker-group) 组件文档。\n\n### Area 组件重构\n\nArea 组件是基于 Picker 组件进行封装的，因此本次升级也对 Area 组件进行了内部逻辑的重构，并优化了部分 API。\n\n#### 主要变更\n\n- 支持通过 `v-model` 绑定当前选中的值\n- 移除 `reset` 方法，现在可以通过修改 `v-model` 来进行重置\n- 移除 `is-oversea-code` 属性\n- 调整 `confirm`、`cancel`、`change` 事件的参数，与 Picker 组件保持一致\n- 重命名 `value` 属性为 `modelValue`\n- 重命名 `item-height` 属性为 `option-height`\n- 重命名 `visible-item-count` 属性为 `visible-option-num`\n\n> 详细用法请参见 [Area 组件文档](#/zh-CN/area)。\n\n## API 调整\n\n### Dialog 调用方式调整\n\n在 Vant 3 中，`Dialog` 是一个函数，调用函数可以快速唤起全局的弹窗组件，而 `Dialog.Component` 才是 `Dialog` 组件对象，这与大部分组件的用法存在差异，容易导致使用错误。\n\n为了更符合直觉，我们在 Vant 4 中调整了 `Dialog` 的调用方式，将 `Dialog()` 函数重命名为 `showDialog()`，并让 `Dialog` 直接指向组件对象。\n\n```js\n// Vant 3\nDialog(); // 函数调用\nDialog.Component; // 组件对象\n\n// Vant 4\nshowDialog(); // 函数调用\nDialog; // 组件对象\n```\n\n由于 `Dialog` 变为了组件对象，`Dialog` 上挂载的其他方法也进行了重命名，新旧 API 的映射关系如下：\n\n```js\nDialog(); // -> showDialog()\nDialog.alert(); // -> showDialog()\nDialog.confirm(); // -> showConfirmDialog()\nDialog.close(); // -> closeDialog();\nDialog.setDefaultOptions(); // -> setDialogDefaultOptions()\nDialog.resetDefaultOptions(); // -> resetDialogDefaultOptions()\n```\n\n#### 兼容方案\n\n为了便于旧版本代码迁移至 v4，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `Dialog` 对象来兼容原有代码。\n\n从 `@vant/compat` 中引用 `Dialog` 方法：\n\n```js\nimport { Dialog } from '@vant/compat';\n\nDialog();\nDialog.close();\n```\n\n`@vant/compat` 中导出的 `Dialog` 与 Vant 3 中的 `Dialog` 拥有完全一致的 API 和行为，因此你只需要修改 `Dialog` 的引用路径，其他代码可以保持不变。\n\n在项目完成升级到 Vant v4 后，建议在迭代中逐步替换为新的 `showDialog` 等方法，并移除 `@vant/compat` 包。\n\n### Toast 调用方式调整\n\nVant 4 中，`Toast` 组件的调用方式也进行了调整，与 `Dialog` 组件的改动一致：\n\n```js\n// Vant 3\nToast(); // 函数调用\n\n// Vant 4\nshowToast(); // 函数调用\nToast; // 组件对象\n```\n\n`Toast` 上挂载的其他方法也进行了重命名，新旧 API 的映射关系如下：\n\n```js\nToast(); // -> showToast()\nToast.fail(); // -> showFailToast()\nToast.success(); // -> showSuccessToast()\nToast.loading(); // -> showLoadingToast()\nToast.clear(); // -> closeToast()\nToast.setDefaultOptions(); // -> setToastDefaultOptions()\nToast.resetDefaultOptions(); // -> resetToastDefaultOptions()\n```\n\n同时，Vant 4 将不再在 `this` 对象上全局注册 `$toast` 方法，这意味着 `this` 对象上将无法访问到 `$toast`。\n\n#### 兼容方案\n\n为了便于代码迁移，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `Toast` 对象来兼容原有代码。\n\n```js\nimport { Toast } from '@vant/compat';\n\nToast();\nToast.clear();\n```\n\n`@vant/compat` 中导出的 `Toast` 与 Vant 3 中的 `Toast` 拥有完全一致的 API 和行为，因此你只需要修改 `Toast` 的引用路径，其他代码可以保持不变。\n\n### Notify 调用方式调整\n\nVant 4 中，`Notify` 组件的调用方式也进行了调整，与 `Dialog` 组件的改动一致：\n\n```js\n// Vant 3\nNotify(); // 函数调用\nNotify.Component; // 组件对象\n\n// Vant 4\nshowNotify(); // 函数调用\nNotify; // 组件对象\n```\n\n`Notify` 上挂载的其他方法也进行了重命名，新旧 API 的映射关系如下：\n\n```js\nNotify(); // -> showNotify()\nNotify.clear(); // -> closeNotify()\nNotify.setDefaultOptions(); // -> setNotifyDefaultOptions()\nNotify.resetDefaultOptions(); // -> resetNotifyDefaultOptions()\n```\n\n同时，Vant 4 将不再在 `this` 对象上全局注册 `$notify` 方法，这意味着 `this` 对象上将无法访问到 `$notify`。\n\n#### 兼容方案\n\n为了便于代码迁移，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `Notify` 对象来兼容原有代码。\n\n```js\nimport { Notify } from '@vant/compat';\n\nNotify();\nNotify.clear();\n```\n\n`@vant/compat` 中导出的 `Notify` 与 Vant 3 中的 `Notify` 拥有完全一致的 API 和行为，因此你只需要修改 `Notify` 的引用路径，其他代码可以保持不变。\n\n### ImagePreview 调用方式调整\n\nVant 4 中，`ImagePreview` 组件的调用方式也进行了调整，与 `Dialog` 组件的改动一致：\n\n```js\n// Vant 3\nImagePreview(); // 函数调用\nImagePreview.Component; // 组件对象\n\n// Vant 4\nshowImagePreview(); // 函数调用\nImagePreview; // 组件对象\n```\n\n#### 兼容方案\n\n为了便于代码迁移，我们提供了兼容方案，你可以使用 `@vant/compat` 中导出的 `ImagePreview` 对象来兼容原有代码。\n\n```js\nimport { ImagePreview } from '@vant/compat';\n\nImagePreview();\n```\n\n`@vant/compat` 中导出的 `ImagePreview` 与 Vant 3 中的 `ImagePreview` 拥有完全一致的 API 和行为，因此你只需要修改 `ImagePreview` 的引用路径，其他代码可以保持不变。\n\n### 事件命名调整\n\n从 Vant 4 开始，所有的事件均采用 Vue 官方推荐的**驼峰格式**进行命名。\n\n```js\n// Vant 3\nemit('click-input');\n\n// Vant 4\nemit('clickInput');\n```\n\n这项改动**不影响原有的模板代码**，Vue 会自动在模板中对事件名进行格式转换，因此你无须做任何更改。\n\n```html\n<!-- 以下代码可以照常运行，无须做任何更改 -->\n<van-field @click-input=\"onClick\" />\n```\n\n如果你在 JSX 中使用 Vant 组件，需要将监听的事件名调整为驼峰格式，原有的中划线格式将不再生效，新的监听方式更加符合 JSX 本身的规范：\n\n```jsx\n// Vant 3\n<Field onClick-input={onClick} />\n\n// Vant 4\n<Field onClickInput={onClick} />\n```\n\n### 其他 API 调整\n\n在 Vant 4.0 版本中，以下 API 进行了不兼容更新：\n\n#### AddressEdit\n\n- 移除 `show-postal` 属性\n- 移除 `postal-validator` 属性\n- `change-area` 事件的参数调整为 `PickerOption[]` 类型\n- 移除未在文档中标注的 `getArea` 实例方法\n\n#### Popup\n\nPopup 的 CSS 样式进行了一定调整，如果你在 Popup 组件上添加了一些自定义的 CSS 样式，请确认本次升级是否对项目中的 UI 产生影响。\n\n- 默认添加了 `box-sizing: border-box` 样式\n- 调整了 `position=\"center\"` 时的水平居中方式，以解决弹窗宽度无法正确自适应的问题：\n\n```less\n// Vant 3\n.van-popup--center {\n  left: 50%;\n  transform: translate3d(-50%, -50%, 0);\n}\n\n// Vant 4\n.van-popup--center {\n  left: 0;\n  right: 0;\n  width: fit-content;\n  max-width: calc(100vw - var(--van-padding-md) * 2);\n  margin: 0 auto;\n  transform: translateY(-50%);\n}\n```\n\n#### Tabs\n\n- 移除了 `click` 和 `disabled` 事件，请使用 `click-tab` 事件代替\n\n## 样式调整\n\n### 主色调统一\n\n在之前的版本中，Vant 组件有两种主色调，部分组件采用蓝色（#1989fa）作为主色调，另一部分则采用红色（#ee0a24）。\n\n为了保持色彩规范的一致性，我们在 Vant 4 中对主色调进行统一，所有组件均采用蓝色作为主色调。\n\n以下组件的主色调由红色调整为蓝色：\n\n- AddressEdit\n- AddressList\n- Card\n- Calendar\n- Cascader\n- ContactList\n- ContactEdit\n- CouponList\n- Dialog\n- DropdownMenu\n- IndexBar\n- Sidebar\n- Steps\n- Tabs\n- TreeSelect\n\n### 移除 Less 变量\n\n目前 Vant 已经支持了基于 CSS 变量的主题定制能力，相较于 Less 定制更加灵活。因此，Vant 4 将不再提供基于 Less 的主题定制方式。\n\n这意味着 Vant 的 npm 包中将不再会包含 `.less` 样式源文件，只会提供编译后的 `.css` 样式文件。\n\n如果你的项目正在使用旧版的 Less 主题定制，请使用 [ConfigProvider 全局配置](#/zh-CN/config-provider) 组件进行替换。\n\n### 简化 CSS 变量名\n\n考虑到 **代码体积** 和 **使用便捷性**，我们对部分 CSS 变量的名称进行了简化，在变量名中使用了更简短的单词，以减小代码体积。\n\n本次升级涉及以下变量名变更：\n\n```less\nanimation-duration               ->  duration\nanimation-timing-function-enter  ->  ease-out\nanimation-timing-function-leave  ->  ease-in\nbackground-color                 ->  background\nbackground-color-light           ->  background-2\nborder-radius                    ->  radius\nborder-width-base                ->  border-width\nbox-shadow                       ->  shadow\nfont-family                      ->  font\nfont-weight-bold                 ->  font-bold\nprice-integer-font               ->  price-font\ntext-link                        ->  link\ntransition-duration              ->  duration\n```\n\n由于涉及的 CSS 变量较多，建议在代码仓库中进行全局匹配和替换。\n\n对于 `ConfigProvider` 组件，我们新增了 `ConfigProviderThemeVars` 类型定义，提供完整的类型提示。在 TypeScript 代码中，你可以通过类型提示来确保主题变量被正确替换。\n\n```ts\nimport type { ConfigProviderThemeVars } from 'vant';\n\nconst themeVars: ConfigProviderThemeVars = {\n  sliderBarHeight: '4px',\n};\n```\n\n<!-- File: packages/vant/docs/markdown/quickstart.en-US.md (Tokens: ~2342 | Category: anthropic-skill) -->\n# Quickstart\n\n## Install\n\n### npm\n\nUsing `npm` to install:\n\n```bash\n# install latest Vant for Vue 3 project\nnpm i vant\n\n# install Vant 2 for Vue 2 project\nnpm i vant@latest-v2\n```\n\nUsing `yarn`, `pnpm`, or `bun`:\n\n```bash\n# with yarn\nyarn add vant\n\n# with pnpm\npnpm add vant\n\n# with Bun\nbun add vant\n```\n\n### Using in a New Project\n\nIf you need to create a new project, we recommend using [Rsbuild](https://github.com/web-infra-dev/rsbuild), [Vite](https://vitejs.dev/) or [Nuxt framework](https://nuxtjs.org/).\n\n#### Rsbuild\n\nRsbuild is a build tool based on Rspack, developed by the author of Vant, with first-class build speed and development experience, providing first-priority support for Vant.\n\nYou can create a Rsbuild project with the following command:\n\n```bash\nnpm create rsbuild@latest\n```\n\nPlease visit the [Rsbuild repository](https://github.com/web-infra-dev/rsbuild) for more information.\n\n#### Example\n\nHere are the example projects provided by Vant official. You can clone these projects and copy the code.\n\n- [vant-demo - rsbuild](https://github.com/vant-ui/vant-demo/tree/master/vant/rsbuild): Build an application using Vue 3, Vant 4, and Rsbuild.\n- [vant-demo - vite](https://github.com/vant-ui/vant-demo/tree/master/vant/vite): Build an application using Vue 3, Vant 4, and Vite.\n- [vant-demo - nuxt3](https://github.com/vant-ui/vant-demo/tree/master/vant/nuxt3): Build an application using Vue 3, Nuxt 3, and Vant 4.\n\n### CDN\n\nIf you only need to develop a simple HTML page, you can directly include the CDN links in the HTML file. After that, you can access all the components through the global variable `vant`.\n\n```html\n<!-- import style -->\n<link\n  rel=\"stylesheet\"\n  href=\"https://fastly.jsdelivr.net/npm/vant@4/lib/index.css\"\n/>\n\n<!-- import script -->\n<script src=\"https://fastly.jsdelivr.net/npm/vue@3\"></script>\n<script src=\"https://fastly.jsdelivr.net/npm/vant@4/lib/vant.min.js\"></script>\n\n<script>\n  // Render the Button component\n  const app = Vue.createApp({\n    template: `<van-button>Button</van-button>`,\n  });\n  app.use(vant);\n\n  // Register Lazyload directive\n  app.use(vant.Lazyload);\n\n  // Call function component\n  vant.showToast('Message');\n\n  app.mount('#app');\n</script>\n```\n\n#### Free CDN\n\nYou can use Vant through these free CDN services:\n\n- [jsdelivr](https://www.jsdelivr.com/package/npm/vant)\n- [cdnjs](https://cdnjs.com/libraries/vant)\n- [unpkg](https://unpkg.com/)\n\nNote: Free CDN is generally used for making prototypes or personal projects. It is not recommended to use free CDN in production environment.\n\nFor enterprise developers, we recommend:\n\n- install with npm, use build tools to bundle it\n- download the scripts, host it on your own server\n\n## Usage\n\n### Basic Usage\n\nThe basic usage of Vant components:\n\n```js\nimport { createApp } from 'vue';\n// 1. Import the components you need\nimport { Button } from 'vant';\n// 2. Import the components style\nimport 'vant/lib/index.css';\n\nconst app = createApp();\n\n// 3. Register the components you need\napp.use(Button);\n```\n\n> Tip: Vant supports Tree Shaking by default, so you don't need to configure any plugins, the unused JS code will be removed by Tree Shaking, but CSS styles cannot be optimized by it.\n\n### Import on demand\n\nIf you are using Rsbuild, Vite, webpack or vue-cli, you can use [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components), this plugin can help you to auto importing components.\n\nVant officially wrote an automatic import style parser [@vant/auto-import-resolver](https://github.com/youzan/vant/tree/main/packages/vant-auto-import-resolver) based on `unplugin-vue-components`, both of which are used together.\n\nCompared with conventional usage, this method can introduce the CSS style of components on demand, thus reducing part of the code volume, but it will become more cumbersome to use. If the business's volume requirements for CSS are not particularly extreme, we recommend a simpler general usage.\n\n#### 1. Install Plugin\n\n```bash\n# with npm\nnpm i @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# with yarn\nyarn add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# with pnpm\npnpm add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# with Bun\nbun add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n```\n\n#### 2. Configure Plugin\n\nFor Rsbuild based project，configure the plugin in the `rsbuild.config.js` file:\n\n```js\nimport { defineConfig } from '@rsbuild/core';\nimport { pluginVue } from '@rsbuild/plugin-vue';\nimport AutoImport from 'unplugin-auto-import/rspack';\nimport Components from 'unplugin-vue-components/rspack';\nimport { VantResolver } from '@vant/auto-import-resolver';\n\nexport default defineConfig({\n  plugins: [pluginVue()],\n  tools: {\n    rspack: {\n      plugins: [\n        AutoImport({\n          resolvers: [VantResolver()],\n        }),\n        Components({\n          resolvers: [VantResolver()],\n        }),\n      ],\n    },\n  },\n});\n```\n\nFor Vite based project，configure the plugin in the `vite.config.js` file:\n\n```js\nimport vue from '@vitejs/plugin-vue';\nimport AutoImport from 'unplugin-auto-import/vite';\nimport Components from 'unplugin-vue-components/vite';\nimport { VantResolver } from '@vant/auto-import-resolver';\n\nexport default {\n  plugins: [\n    vue(),\n    AutoImport({\n      resolvers: [VantResolver()],\n    }),\n    Components({\n      resolvers: [VantResolver()],\n    }),\n  ],\n};\n```\n\nFor vue-cli based project，configure the plugin in the `vue.config.js` file:\n\n```js\nconst { VantResolver } = require('@vant/auto-import-resolver');\nconst AutoImport = require('unplugin-auto-import/webpack');\nconst Components = require('unplugin-vue-components/webpack');\n\nmodule.exports = {\n  configureWebpack: {\n    plugins: [\n      // When the version of unplugin-vue-components is less than 0.26.0:\n      AutoImport({ resolvers: [VantResolver()] }),\n      Components({ resolvers: [VantResolver()] }),\n      // when the unplugin-vue-components version is greater than or equal to 0.26.0:\n      AutoImport.default({\n        resolvers: [VantResolver()],\n      }),\n      Components.default({ resolvers: [VantResolver()] }),\n    ],\n  },\n};\n```\n\nFor webpack based project，configure the plugin in the `webpack.config.js` file:\n\n```js\nconst { VantResolver } = require('@vant/auto-import-resolver');\nconst AutoImport = require('unplugin-auto-import/webpack');\nconst Components = require('unplugin-vue-components/webpack');\n\nmodule.exports = {\n  plugins: [\n    // When the version of unplugin-vue-components is less than 0.26.0:\n    AutoImport({ resolvers: [VantResolver()] }),\n    Components({ resolvers: [VantResolver()] }),\n    // when the unplugin-vue-components version is greater than or equal to 0.26.0:\n    AutoImport.default({\n      resolvers: [VantResolver()],\n    }),\n    Components.default({ resolvers: [VantResolver()] }),\n  ],\n};\n```\n\n#### 3. Using Components\n\nThen you can using components from Vant in the template, the `unplugin-vue-components` will automatically import the corresponding Vant components,`@vant/auto-import-resolver` The corresponding component style will be automatically introduced.\n\n```html\n<template>\n  <van-button type=\"primary\" />\n</template>\n```\n\n`unplugin-auto-import` will automatically import the corresponding Vant API and styles.\n\n```html\n<script>\n  showToast('No need to import showToast');\n</script>\n```\n\n#### Tips\n\n- \"Full Import\" and \"On-demand Import\" should not be used at the same time, otherwise it will lead to problems such as code duplication and style overrides.\n- During use, if the component cannot be imported, because `unplugin-vue-components` is not a plug-in officially maintained by `Vant`, it is recommended to give feedback under the [unplugin/unplugin-vue-components](https://github.com/antfu/unplugin/unplugin-vue-components) repository.\n- when the version number of `unplugin-vue-components` is >= 0.26.0, for `webpack`, `vue-cli`, and `rspack`, you need to use `ComponentsPlugin.default` to register.\n- `@vant/auto-import-resolver` provides some configuration options. Please refer to the [README document](https://github.com/youzan/vant/tree/main/packages/vant-auto-import-resolver) for more information.\n- If it is a similar problem that the style does not take effect, feedback under the `Vant` repository.\n\n## With Frameworks\n\n### Use Vant in Nuxt 3\n\nWhen using Vant in Nuxt 3, you can use [vant-nuxt](https://github.com/vant-ui/vant-nuxt), this module can help you to auto importing components and reduce CSS file size.\n\n#### 1. Install Module\n\n```bash\n# with npm\nnpm i @vant/nuxt -D\n\n# with yarn\nyarn add @vant/nuxt -D\n\n# with pnpm\npnpm add @vant/nuxt -D\n\n# with Bun\nbun add @vant/nuxt -D\n```\n\n#### 2. Add Module\n\nadd the module in the `nuxt.config.js` file:\n\n```js\nexport default defineNuxtConfig({\n  modules: ['@vant/nuxt'],\n});\n```\n\n#### 3. Using Components\n\nThen you can using components from Vant in the template, Go to the [Nuxt documentation](https://nuxt.com/docs/guide/directory-structure/components) to learn more.\n\n```html\n<template>\n  <van-button type=\"primary\" @click=\"showToast('toast')\">button</van-button>\n  <VanButton type=\"success\" @click=\"showNotify('notify')\">button</VanButton>\n  <LazyVanButton type=\"default\">lazy button</LazyVanButton>\n</template>\n```\n\n<!-- File: packages/vant/docs/markdown/quickstart.zh-CN.md (Tokens: ~3400 | Category: anthropic-skill) -->\n# 快速上手\n\n### 介绍\n\n通过本章节你可以了解到 Vant 的安装方法和基本使用姿势。\n\n## 安装\n\n### 通过 npm 安装\n\n在现有项目中使用 Vant 时，可以通过 `npm` 进行安装：\n\n```bash\n# Vue 3 项目，安装最新版 Vant\nnpm i vant\n\n# Vue 2 项目，安装 Vant 2\nnpm i vant@latest-v2\n```\n\n当然，你也可以通过 `yarn`、`pnpm` 或 `bun` 进行安装：\n\n```bash\n# 通过 yarn 安装\nyarn add vant\n\n# 通过 pnpm 安装\npnpm add vant\n\n# 通过 Bun 安装\nbun add vant\n```\n\n### 在新项目中使用\n\n如果你需要新建一个项目，我们推荐使用 [Rsbuild](https://github.com/web-infra-dev/rsbuild)，[Vite](https://cn.vitejs.dev/) 或 [Nuxt 框架](https://nuxt.com)。\n\n#### Rsbuild\n\nRsbuild 是基于 Rspack 的构建工具，由 Vant 作者开发，具备一流的构建速度和开发体验，对 Vant 提供第一优先级支持。\n\n你可以通过以下命令创建一个 Rsbuild 项目：\n\n```bash\nnpm create rsbuild@latest\n```\n\n请访问 [Rsbuild 仓库](https://github.com/web-infra-dev/rsbuild) 了解更多信息。\n\n#### 示例项目\n\n以下是 Vant 官方提供的一些示例项目，你可以克隆该项目，并直接拷贝代码来使用。\n\n- [vant-demo - rsbuild](https://github.com/vant-ui/vant-demo/tree/master/vant/rsbuild)：使用 Vue 3、Vant 4、Rsbuild 搭建应用\n- [vant-demo - vite](https://github.com/vant-ui/vant-demo/tree/master/vant/vite)：使用 Vue 3、Vant 4、Vite 搭建应用\n- [vant-demo - nuxt3](https://github.com/vant-ui/vant-demo/tree/master/vant/nuxt3)：使用 Vue 3、Nuxt 3、Vant 4 搭建应用。\n\n### 通过 CDN 安装\n\n如果你只需要开发一个简单的 HTML 页面，那么可以直接在 HTML 文件中引入 CDN 链接，之后你可以通过全局变量 `vant` 访问到所有组件。\n\n```html\n<!-- 引入样式文件 -->\n<link\n  rel=\"stylesheet\"\n  href=\"https://fastly.jsdelivr.net/npm/vant@4/lib/index.css\"\n/>\n\n<!-- 引入 Vue 和 Vant 的 JS 文件 -->\n<script src=\"https://fastly.jsdelivr.net/npm/vue@3\"></script>\n<script src=\"https://fastly.jsdelivr.net/npm/vant@4/lib/vant.min.js\"></script>\n\n<script>\n  // 在 #app 标签下渲染一个按钮组件\n  const app = Vue.createApp({\n    template: `<van-button>按钮</van-button>`,\n  });\n  app.use(vant);\n\n  // 通过 CDN 引入时不会自动注册 Lazyload 组件\n  // 可以通过下面的方式手动注册\n  app.use(vant.Lazyload);\n\n  // 调用工具函数，弹出一个 Toast\n  vant.showToast('提示');\n\n  app.mount('#app');\n</script>\n```\n\n#### 免费 CDN\n\n你可以通过以下免费 CDN 服务来使用 Vant:\n\n- [jsdelivr](https://www.jsdelivr.com/package/npm/vant)\n- [cdnjs](https://cdnjs.com/libraries/vant)\n- [unpkg](https://unpkg.com/)\n\n注意：免费 CDN 一般用于制作原型或个人小型项目，不推荐在企业生产环境中使用免费 CDN。\n\n对于企业开发者，建议使用以下方式：\n\n- 通过 npm 引入，并通过构建工具进行打包\n- 下载对应文件，并托管在你自己的服务器或 CDN 上\n\n## 示例\n\n### 示例工程\n\n我们提供了丰富的[示例工程](https://github.com/vant-ui/vant-demo)，通过示例工程你可以了解如下内容：\n\n- 基于 Rsbuild 和 Vant 搭建应用\n- 基于 Vite 和 Vant 搭建应用\n- 基于 Nuxt 和 Vant 搭建应用\n- 基于 Vue CLI 和 Vant 搭建应用\n- 配置按需引入组件\n- 配置基于 Rem 的适配方案\n- 配置基于 Viewport 的适配方案\n- 配置基于 TypeScript 的工程\n\n## 引入组件\n\n### 方法一. 常规用法\n\n下面是使用 Vant 组件的用法示例：\n\n```js\nimport { createApp } from 'vue';\n// 1. 引入你需要的组件\nimport { Button } from 'vant';\n// 2. 引入组件样式\nimport 'vant/lib/index.css';\n\nconst app = createApp();\n\n// 3. 注册你需要的组件\napp.use(Button);\n```\n\nVant 支持多种组件注册方式，除了在 app 上全局注册组件，你也可以选择其他的方式，比如局部注册，详见 [组件注册](#/zh-CN/advanced-usage#zu-jian-zhu-ce) 章节。\n\n> 提示：Vant 默认支持 Tree Shaking，因此你不需要配置任何插件，通过 Tree Shaking 即可移除不需要的 JS 代码，但 CSS 样式无法通过这种方式优化，如果需要按需引入 CSS 样式，请参考下面的方法二。\n\n### 方法二. 按需引入组件样式\n\n在基于 Rsbuild、Vite、webpack 或 vue-cli 的项目中使用 Vant 时，可以使用 [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) 插件，它可以自动引入组件。\n\nVant 官方基于 `unplugin-vue-components` 提供了自动导入样式的解析器 [@vant/auto-import-resolver](https://github.com/youzan/vant/tree/main/packages/vant-auto-import-resolver)，两者可以配合使用。\n\n相比于常规用法，这种方式可以按需引入组件的 CSS 样式，从而减少一部分代码体积，但使用起来会变得繁琐一些。如果业务对 CSS 的体积要求不是特别极致，我们推荐使用更简便的常规用法。\n\n#### 1. 安装插件\n\n```bash\n# 通过 npm 安装\nnpm i @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# 通过 yarn 安装\nyarn add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# 通过 pnpm 安装\npnpm add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n\n# 通过 bun 安装\nbun add @vant/auto-import-resolver unplugin-vue-components unplugin-auto-import -D\n```\n\n#### 2. 配置插件\n\n如果是基于 [Rsbuild](https://github.com/web-infra-dev/rsbuild) 的项目，在 `rsbuild.config.js` 文件中配置插件：\n\n```js\nimport { defineConfig } from '@rsbuild/core';\nimport { pluginVue } from '@rsbuild/plugin-vue';\nimport AutoImport from 'unplugin-auto-import/rspack';\nimport Components from 'unplugin-vue-components/rspack';\nimport { VantResolver } from '@vant/auto-import-resolver';\n\nexport default defineConfig({\n  plugins: [pluginVue()],\n  tools: {\n    rspack: {\n      plugins: [\n        AutoImport({\n          resolvers: [VantResolver()],\n        }),\n        Components({\n          resolvers: [VantResolver()],\n        }),\n      ],\n    },\n  },\n});\n```\n\n如果是基于 Vite 的项目，在 `vite.config.js` 文件中配置插件：\n\n```js\nimport vue from '@vitejs/plugin-vue';\nimport AutoImport from 'unplugin-auto-import/vite';\nimport Components from 'unplugin-vue-components/vite';\nimport { VantResolver } from '@vant/auto-import-resolver';\n\nexport default {\n  plugins: [\n    vue(),\n    AutoImport({\n      resolvers: [VantResolver()],\n    }),\n    Components({\n      resolvers: [VantResolver()],\n    }),\n  ],\n};\n```\n\n如果是基于 vue-cli 的项目，在 `vue.config.js` 文件中配置插件：\n\n```js\nconst { VantResolver } = require('@vant/auto-import-resolver');\nconst AutoImport = require('unplugin-auto-import/webpack');\nconst Components = require('unplugin-vue-components/webpack');\n\nmodule.exports = {\n  configureWebpack: {\n    plugins: [\n      // 当 unplugin-vue-components 版本小于 0.26.0 时，使用以下写法\n      AutoImport({ resolvers: [VantResolver()] }),\n      Components({ resolvers: [VantResolver()] }),\n      //当 unplugin-vue-components 版本大于等于 0.26.0 时，使用以下写法\n      AutoImport.default({\n        resolvers: [VantResolver()],\n      }),\n      Components.default({ resolvers: [VantResolver()] }),\n    ],\n  },\n};\n```\n\n如果是基于 webpack 的项目，在 `webpack.config.js` 文件中配置插件：\n\n```js\nconst { VantResolver } = require('@vant/auto-import-resolver');\nconst AutoImport = require('unplugin-auto-import/webpack');\nconst Components = require('unplugin-vue-components/webpack');\n\nmodule.exports = {\n  plugins: [\n    // 当 unplugin-vue-components 版本小于 0.26.0 时，使用以下写法\n    AutoImport({ resolvers: [VantResolver()] }),\n    Components({ resolvers: [VantResolver()] }),\n    //当 unplugin-vue-components 版本大于等于 0.26.0 时，使用以下写法\n    AutoImport.default({\n      resolvers: [VantResolver()],\n    }),\n    Components.default({ resolvers: [VantResolver()] }),\n  ],\n};\n```\n\n#### 3. 使用组件和 API\n\n完成以上两步，就可以直接在模板中使用 Vant 组件了，`unplugin-vue-components` 会解析模板并自动注册对应的组件, `@vant/auto-import-resolver` 会自动引入对应的组件样式。\n\n```html\n<template>\n  <van-button type=\"primary\" />\n</template>\n```\n\n`unplugin-auto-import` 会自动导入对应的 Vant API 以及样式。\n\n```html\n<script>\n  showToast('No need to import showToast');\n</script>\n```\n\n#### 使用提示\n\n- 请避免同时使用「全量引入」和「按需引入」这两种引入方式，否则会导致代码重复、样式错乱等问题。\n- 在使用过程中，如果你遇到组件不能导入的问题，因为 unplugin-vue-components 并不是 Vant 官方维护的插件，所以建议到 [unplugin/unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) 仓库下反馈。\n- 当 `unplugin-vue-components` 的版本号 >= 0.26.0 时，对于 `webpack`、`vue-cli` 和 `rspack`，你需要使用 `ComponentsPlugin.default` 进行注册。\n- `@vant/auto-import-resolver` 提供了一些配置项，请参考 [README 文档](https://github.com/youzan/vant/tree/main/packages/vant-auto-import-resolver) 来了解更多。\n- 如果是样式不生效的相关问题，你可以在 Vant 仓库下反馈。\n\n## 在框架中使用\n\n### 在 Nuxt 3 中使用\n\n在 Nuxt 3 中使用 Vant 时，可以使用 [vant-nuxt](https://github.com/vant-ui/vant-nuxt) 模块，它可以自动引入组件，并按需引入的样式（包括函数组件）。\n\n#### 1. 安装模块\n\n```bash\n# 通过 npm 安装\nnpm i @vant/nuxt -D\n\n# 通过 yarn 安装\nyarn add @vant/nuxt -D\n\n# 通过 pnpm 安装\npnpm add @vant/nuxt -D\n\n# 通过 Bun 安装\nbun add @vant/nuxt -D\n```\n\n#### 2. 增加模块\n\n在 `nuxt.config.js` 文件中增加模块：\n\n```js\nexport default defineNuxtConfig({\n  modules: ['@vant/nuxt'],\n});\n```\n\n#### 3. 使用组件\n\n完成以上两步，就可以直接在模板中使用 Vant 组件了。前往 [Nuxt 文档](https://nuxt.com/docs/guide/directory-structure/components) 了解更多。\n\n```html\n<template>\n  <van-button type=\"primary\" @click=\"showToast('toast')\">button</van-button>\n  <VanButton type=\"success\" @click=\"showNotify('notify')\">button</VanButton>\n  <LazyVanButton type=\"default\">lazy button</LazyVanButton>\n</template>\n```\n\n## 迁移提示\n\n### 移除 babel-plugin-import\n\n从 Vant 4.0 版本开始，将不再支持 `babel-plugin-import`，请移除项目中依赖的 `babel-plugin-import` 插件。\n\n只需要删除 `babel.config.js` 中的以下代码即可：\n\n```diff\nmodule.exports = {\n  plugins: [\n-    ['import', {\n-      libraryName: 'vant',\n-      libraryDirectory: 'es',\n-      style: true\n-    }, 'vant']\n  ]\n};\n```\n\n#### 收益\n\n移除 `babel-plugin-import` 有以下收益：\n\n- 不再强依赖 babel，项目可以使用 esbuild、swc 等更高效的编译工具，大幅度提升编译效率。\n- 不再受到 `babel-plugin-import` 的 import 写法限制，可以从 vant 中导入除了组件以外的其他内容，比如 Vant 4 中新增的 `showToast` 等方法。\n\n```ts\nimport { showToast, showDialog } from 'vant';\n```\n\n<!-- File: packages/vant/docs/markdown/release-note-v4.en-US.md (Tokens: ~2821 | Category: anthropic-skill) -->\n# 4.0 Release Note\n\n### Introduction\n\nAfter a year of iterations, Vant 4.0 has been officially released, which is the fourth major version of Vant since it was open-sourced in 2017.\n\nIn this iteration, Vant supports the dark mode, adds five new components, improves the utility function API, and refactors components such as Picker, while continuing to make improvements in lightweighting and usability.\n\n### Dark mode support\n\n**Vant 4.0 supports switching all components to dark mode.**\n\nSimply set the `theme` attribute of the [ConfigProvider component](/vant/#/en-US/config-provider) to `dark` to switch to dark mode, which will switch all Vant components on the page to a dark style.\n\n```html\n<van-config-provider theme=\"dark\">\n  <!-- child components -->\n</van-config-provider>\n```\n\n![](https://user-images.githubusercontent.com/7237365/205472724-6c9ee0df-df10-4f9b-84b6-081576bdcea9.png)\n\nAt the same time, the Vant 4.0 document also supports switching to dark mode:\n\n![](https://user-images.githubusercontent.com/7237365/205472729-fefc9053-1866-4812-8b97-ee0ba5d47230.png)\n\n### Several new components\n\n**Vant 4.0 contains the following new components:**\n\n- [BackTop](/vant/#/en-US/back-top): Used to back to the top of the page.\n- [TimePicker](/vant/#/en-US/time-picker): Used for time selection, including hours, minutes, and seconds.\n- [DatePicker](/vant/#/en-US/time-picker): Used for date selection, including year, month, and day.\n- [PickerGroup](/vant/#/en-US/picker-group): Used to combine multiple Picker components, allow users to select multiple value.\n- [SkeletonItems](/vant/#/en-US/skeleton): Customize the skeleton through subcomponents such as SkeletonTitle, SkeletonImage, and SkeletonAvatar.\n\nAmong them, TimePicker and DatePicker are split from the old DatetimePicker component, and the DatetimePicker component is removed. You can use PickerGroup to get the interactive effect of selecting the date and time at the same time.\n\n![](https://user-images.githubusercontent.com/7237365/205474243-14e0a87c-dcfa-4229-9a16-f6ebf910b621.png)\n\n### Keep it lightweight\n\n**Vant 4.0 has a 30% reduction in installation size, keeping bundle size lightweight.**\n\nAs the npm ecosystem grows, node_modules are eating up our disk space. To alleviate the node_modules black hole and speed up installation, we have optimized Vant's npm dependencies and build outputs.\n\nCompared with Vant 3.6.2, the installation size of Vant 4.0.0 has been reduced from 7MB to 5MB. In contrast, the installation size of mainstream component libraries in the community is generally between 15MB and 80MB. You can check the installation size of npm packages through [packagephobia](https://packagephobia.com/result?p=vant).\n\n![](https://user-images.githubusercontent.com/7237365/205470714-e1828299-4df2-40f4-b7cc-f65971fe4567.png)\n\nIn terms of bundle size, this update still increases the size without increasing the price, and the size after Minified + Gzipped remains below 70KB:\n\n![](https://user-images.githubusercontent.com/7237365/205474583-f2d8226f-e089-42d7-8326-3c874dcf1784.png)\n\n### Unify the primary color\n\n**Vant 4.0 unifies the primary color of all components.**\n\nIn the previous version, Vant components had two primary colors, some components used blue `#1989fa` as their primary color, and others used red `#ee0a24`.\n\nTo keep the color specification consistent, we have unified the primary color in Vant 4, and all components use blue as the primary color.\n\n![](https://user-images.githubusercontent.com/7237365/205472726-a0552833-f99d-447a-acce-051ec7ebdbe1.png)\n\nNow that the primary color is unified, theme customization becomes easier. For example, you can override the `--van-primary-color` CSS variable to set the primary color of all components to green:\n\n```css\n:root {\n  --van-primary-color: #07c160;\n}\n```\n\n### Import method adjustment as needed\n\n**Vant 4.0 no longer uses babel-plugin-import for on-demand import.**\n\nIn the early days, most component libraries used `babel-plugin-import` to achieve on-demand import, which means that component libraries will strongly rely on Babel compilation. Starting from Vant 4.0, `babel-plugin-import` is no longer supported, which has the following main advantages:\n\n- Instead of relying heavily on Babel compilation, projects can use modern compilation tools such as SWC and esbuild to improve compilation efficiency.\n\n![](https://user-images.githubusercontent.com/7237365/205478241-dba3c4ed-152c-4892-9e74-1a0d978be314.png)\n\n- No longer subject to the import restrictions of `babel-plugin-import`, you can import content other than Vant components, such as the new `showToast` method in Vant 4, or the `buttonProps` object:\n\n```ts\nimport { showToast, buttonProps } from 'vant';\n```\n\nIn terms of bundle size, removing `babel-plugin-import` will not affect on the JS size of the project, because Vant supports tree shaking by default to remove unnecessary JS code by default, and CSS code can be imported on demand via [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components). For detailed usage, please refer to [\"Quick Start\"](/vant/#/en-US/quickstart).\n\n### Style variable type hints\n\n**Vant 4.0 provides type hints for style variables.**\n\nVant provides more than 700 style variables, which you can modify through CSS code or `ConfigProvider` component. In Vant 4.0, we have added the `ConfigProviderThemeVars` type to provide type hints for style variables.\n\nSo when writing TypeScript code, you can use type hints to complete theme variable names:\n\n![](https://user-images.githubusercontent.com/7237365/205478960-c284e272-a394-4098-ad0f-eda72e74f9f7.png)\n\n### Picker component refactoring\n\n**Vant 4.0 refactored the Picker component, as well as the Picker-based Area and DatetimePicker components.**\n\nIn the previous version, the API design of the `Picker` component was not sensible enough, causing people to often encounter problems when using it, such as:\n\n- The columns data format of Picker is unreasonable, which is easy to cause misunderstanding.\n- The data flow of Picker is not clear, exposing too many instance methods to operate on the data.\n- The logic of DatetimePicker is too complex, and bugs often occur in borderline scenarios.\n\nTo solve the above problems, we refactored the `Picker` component in Vant 4.0, and also refactored the `Area` and `DatetimePicker` components derived from `Picker`.\n\nIf these three components are used in your project, please read the [\"Upgrade Guide\"](/vant/#/en-US/migrate-from-v3) to upgrade.\n\n### Component Utils Adjustment\n\n**Vant 4.0 adjusts the usage of component utility functions to be more intuitive.**\n\nVant 3 provides some component utils, such as calling the `Dialog()` function, which can quickly invoke the global Dialog component, and `Dialog.Component` is the component object corresponding to `Dialog`.\n\n```ts\n// function call\nDialog({ message: 'Hello World!' });\n\n// component registration\napp.use('van-dialog', Dialog.Component);\n```\n\nThe above API design leads to usage differences between Dialog and other components, and is easily abused; it also prevents `unplugin-vue-components` from automatically importing Dialog and other components.\n\nTo be more intuitive, we have adjusted the calling method of component utils in Vant 4. The affected functions include `Dialog()`, `Toast()`, `Notify()` and `ImagePreview()`. Taking Dialog as an example, we rename the `Dialog()` function to `showDialog()`, and let `Dialog` directly point to the component object.\n\n```ts\n// function call\nshowDialog({ message: 'Hello World!' });\n\n// component registration\napp.use('van-dialog', Dialog);\n```\n\nTo facilitate the migration of existing code to Vant 4.0, we provide a compatibility solution. You can use the `Dialog()` function exported from `@vant/compat` to be compatible with the original code.\n\n```js\nimport { Dialog } from '@vant/compat';\n\nDialog({ message: 'Hello World!' });\n```\n\nThe `Dialog()` exported in `@vant/compat` has exactly the same API and behavior as `Dialog()` in Vant 3, so when upgrading, you only need to change its reference path, and the rest of the code can remain constant. After upgrading the project to Vant 4.0, it is recommended to gradually replace it with the new `showDialog()` and other methods in iterations, and remove the `@vant/compat` package.\n\n### Event naming adjustment\n\n**Vant 4.0 changes the event name to camel case.**\n\nStarting from Vant 4, all events are named in camelCase format recommended by Vue.\n\n```js\n// Vant 3\nemit('click-input');\n\n// Vant 4\nemit('clickInput');\n```\n\nThis change **does not affect the original template code**, Vue will automatically format the event name in the template, so you don't need to make any changes.\n\n```html\n<!-- The following code works as usual without any changes -->\n<van-field @click-input=\"onClick\" />\n```\n\nIf you are using the Vant component in JSX, you will need to change the event name to camel case, the original dash format will no longer take effect, and the new monitoring method is more in line with JSX's own specifications:\n\n```jsx\n// Vant 3\n<Field onClick-input={onClick} />\n\n// Vant 4\n<Field onClickInput={onClick} />\n```\n\n### Remove Less variables\n\n**Vant 4.0 no longer supports theme customization via Less variables.**\n\nCurrently Vant already supports theme customization based on CSS variables, which is more flexible than Less customization. Therefore, Vant 4 will no longer provide Less-based theme customization. This means that Vant's npm package will no longer contain `.less` style source files, only the compiled `.css` style files will be provided.\n\nIf your project is using an old version of Less theme customization, please use [ConfigProvider global configuration](#/en-US/config-provider) to replace it.\n\n### Vant Cli 5.0\n\n**This update also releases Vant Cli 5.0.**\n\n[Vant Cli](https://github.com/youzan/vant/tree/main/packages/vant-cli) is the underlying component library construction tool of Vant. The content of this update includes:\n\n- Upgrade Vite to version 3.0, and upgrade related Vite plugins.\n- The `stylelint` and `@vant/stylelint-config` dependencies are no longer installed by default, you can install them yourself if needed:\n\n```bash\nnpm add stylelint@13 @vant/stylelint-config\n```\n\n- The `gh-pages` dependency is no longer installed by default, please update package.json as follows:\n\n```diff\n- \"release:site\": \"pnpm build:site && gh-pages -d site-dist\",\n+ \"release:site\": \"pnpm build:site && npx gh-pages -d site-dist\",\n```\n\n### Version Information\n\n**Currently both [Vant official website](/vant/) and npm latest tag point to Vant 4.0.**\n\nWe have prepared a complete upgrade guide for Vant 4.0, please read [Upgrade from v3 to v4](/vant/#/en-US/migrate-from-v3) to upgrade.\n\nThe maintenance status of each version of Vant is as follows:\n\n| Name   | Framework | Release Date | Maintenance Status |\n| ------ | --------- | ------------ | ------------------ |\n| Vant 4 | Vue 3     | `2022.12`    | Long-term support  |\n| Vant 3 | Vue 3     | `2020.12`    | End of life        |\n| Vant 2 | Vue 2     | `2019.06`    | End of life        |\n| Vant 1 | Vue 2     | `2018.03`    | End of life        |\n\n### Finally\n\nThanks to all the friends who contributed to the development of Vant 4.0, thanks to all developers who use Vant, and hope that everyone will keep walking on the road of open source.\n\n![](https://user-images.githubusercontent.com/7237365/205481230-fdd89482-86ad-40c8-b81f-4af0789f8488.png)\n\n<!-- ... +121 more modular skills available via /api/skills/youzan/vant?path={path} -->\n</yakaai_skills>"}