Full Code of arco-design/arco-design-vue for AI

main 463014760f93 cached
2232 files
9.7 MB
2.7M tokens
2046 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (10,633K chars total). Download the full file to get everything.
Repository: arco-design/arco-design-vue
Branch: main
Commit: 463014760f93
Files: 2232
Total size: 9.7 MB

Directory structure:
gitextract_qdd6vk9x/

├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   └── config.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── deploy-site-preview.yml
│       ├── issue-duplicate.yml
│       ├── issue-labeled.yml
│       ├── issue-manager.yml
│       ├── issue-remove-inactive.yml
│       ├── pr_check.yml
│       └── release.yml
├── .gitignore
├── .husky/
│   ├── commit-msg
│   └── pre-commit
├── .npmrc
├── .nvmrc
├── .prettierrc.js
├── .vscode/
│   └── settings.json
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── CONTRIBUTING.zh-CN.md
├── LICENSE
├── README.md
├── README.zh-CN.md
├── commitlint.config.js
├── package.json
├── packages/
│   ├── arco-changelog/
│   │   ├── .eslintignore
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── .prettierrc.js
│   │   ├── README.md
│   │   ├── copy-template.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .github/
│   │   │   │   └── PULL_REQUEST_TEMPLATE.md
│   │   │   ├── .gitlab/
│   │   │   │   └── merge_request_templates/
│   │   │   │       └── CHANGELOG.md
│   │   │   ├── changelog.ts
│   │   │   ├── cmd.ts
│   │   │   ├── config.ts
│   │   │   ├── copy-github.js
│   │   │   ├── default/
│   │   │   │   ├── emit-files.ts
│   │   │   │   ├── template.en-US.njk
│   │   │   │   └── template.zh-CN.njk
│   │   │   ├── index.ts
│   │   │   ├── interface.ts
│   │   │   ├── test.md
│   │   │   ├── utils/
│   │   │   │   ├── config.ts
│   │   │   │   ├── convert-case.ts
│   │   │   │   ├── invert.ts
│   │   │   │   └── version.ts
│   │   │   └── vue/
│   │   │       ├── emit-files.ts
│   │   │       ├── template.en-US.njk
│   │   │       ├── template.zh-CN.njk
│   │   │       └── vue.config.ts
│   │   └── tsconfig.json
│   ├── arco-vue-docs/
│   │   ├── .eslintignore
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── .prettierrc.js
│   │   ├── .stylelintrc.js
│   │   ├── README.md
│   │   ├── app.vue
│   │   ├── components/
│   │   │   ├── anchor-head/
│   │   │   │   ├── index.vue
│   │   │   │   └── style.less
│   │   │   ├── article/
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.vue
│   │   │   │   └── style.less
│   │   │   ├── aside-anchor/
│   │   │   │   ├── index.vue
│   │   │   │   ├── interface.ts
│   │   │   │   └── style.less
│   │   │   ├── aside-nav/
│   │   │   │   ├── index.vue
│   │   │   │   └── style.less
│   │   │   ├── cell-code/
│   │   │   │   ├── index.vue
│   │   │   │   └── style.less
│   │   │   ├── cell-demo/
│   │   │   │   ├── index.vue
│   │   │   │   └── style.less
│   │   │   ├── changelog-box/
│   │   │   │   └── index.vue
│   │   │   ├── code-block/
│   │   │   │   ├── index.vue
│   │   │   │   └── style.less
│   │   │   ├── footer/
│   │   │   │   ├── index.vue
│   │   │   │   └── style.less
│   │   │   ├── logo/
│   │   │   │   └── index.vue
│   │   │   ├── navbar/
│   │   │   │   ├── index.vue
│   │   │   │   └── style.less
│   │   │   ├── theme-box/
│   │   │   │   ├── index.vue
│   │   │   │   └── interface.ts
│   │   │   └── token-table/
│   │   │       └── token-table.vue
│   │   ├── context.ts
│   │   ├── docs/
│   │   │   ├── dark.en-US.md
│   │   │   ├── dark.zh-CN.md
│   │   │   ├── faq.en-US.md
│   │   │   ├── faq.zh-CN.md
│   │   │   ├── i18n.en-US.md
│   │   │   ├── i18n.zh-CN.md
│   │   │   ├── pro/
│   │   │   │   ├── build.en-US.md
│   │   │   │   ├── build.zh-CN.md
│   │   │   │   ├── directory.en-US.md
│   │   │   │   ├── directory.zh-CN.md
│   │   │   │   ├── faq.en-US.md
│   │   │   │   ├── faq.zh-CN.md
│   │   │   │   ├── i18n.en-US.md
│   │   │   │   ├── i18n.zh-CN.md
│   │   │   │   ├── layout.en-US.md
│   │   │   │   ├── layout.zh-CN.md
│   │   │   │   ├── mock.en-US.md
│   │   │   │   ├── mock.zh-CN.md
│   │   │   │   ├── npm-scripts.en-US.md
│   │   │   │   ├── npm-scripts.zh-CN.md
│   │   │   │   ├── permission.en-US.md
│   │   │   │   ├── permission.zh-CN.md
│   │   │   │   ├── routes-and-menu.en-US.md
│   │   │   │   ├── routes-and-menu.zh-CN.md
│   │   │   │   ├── start.en-US.md
│   │   │   │   ├── start.zh-CN.md
│   │   │   │   ├── state-management-pinia.en-US.md
│   │   │   │   ├── state-management-pinia.zh-CN.md
│   │   │   │   ├── state-management.en-US.md
│   │   │   │   └── state-management.zh-CN.md
│   │   │   ├── start.en-US.md
│   │   │   ├── start.zh-CN.md
│   │   │   ├── theme.en-US.md
│   │   │   └── theme.zh-CN.md
│   │   ├── global.d.ts
│   │   ├── hooks/
│   │   │   ├── useLanguage.ts
│   │   │   └── useTheme.ts
│   │   ├── index.html
│   │   ├── index.ts
│   │   ├── locale/
│   │   │   ├── en-us.js
│   │   │   ├── index.js
│   │   │   └── zh-cn.js
│   │   ├── package.json
│   │   ├── pages/
│   │   │   ├── changelog/
│   │   │   │   ├── changelog.vue
│   │   │   │   └── style/
│   │   │   │       └── index.less
│   │   │   ├── icon/
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── icon-font.md
│   │   │   │   │   ├── spin.md
│   │   │   │   │   └── tree-shaking.md
│   │   │   │   ├── icon-demo.vue
│   │   │   │   ├── icons.json
│   │   │   │   └── style.less
│   │   │   └── token/
│   │   │       ├── token.vue
│   │   │       └── tokens.ts
│   │   ├── router.ts
│   │   ├── style/
│   │   │   ├── demo.less
│   │   │   └── index.less
│   │   ├── tsconfig.json
│   │   └── utils/
│   │       ├── api.ts
│   │       ├── clipboard.ts
│   │       ├── code-sandbox.ts
│   │       ├── code-stackblitz.ts
│   │       ├── code-template.ts
│   │       ├── codepen.ts
│   │       ├── join-chart.ts
│   │       ├── local-storage.ts
│   │       ├── login.ts
│   │       └── strings.ts
│   ├── arco-vue-docs-navbar/
│   │   ├── .eslintignore
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── dist/
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   └── style.css
│   │   ├── package.json
│   │   ├── plugins/
│   │   │   └── rollup-plugin-svgr.ts
│   │   ├── src/
│   │   │   ├── index.less
│   │   │   ├── index.tsx
│   │   │   ├── navbar.css
│   │   │   ├── navbar.less
│   │   │   └── style/
│   │   │       ├── history.less
│   │   │       ├── hot.less
│   │   │       └── list.less
│   │   ├── tsconfig.json
│   │   └── vite.config.ts
│   ├── arco-vue-scripts/
│   │   ├── .eslintignore
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── .prettierrc.js
│   │   ├── README.md
│   │   ├── copy-template.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── configs/
│   │   │   │   ├── jest.config.ts
│   │   │   │   ├── vite.dev.ts
│   │   │   │   ├── vite.material.library.ts
│   │   │   │   ├── vite.material.library.umd.ts
│   │   │   │   ├── vite.material.prod.ts
│   │   │   │   ├── vite.material.style.ts
│   │   │   │   ├── vite.prod.style.ts
│   │   │   │   ├── vite.prod.ts
│   │   │   │   ├── vite.prod.umd.ts
│   │   │   │   ├── vite.site.dev.ts
│   │   │   │   └── vite.site.prod.ts
│   │   │   ├── index.ts
│   │   │   ├── plugins/
│   │   │   │   ├── md-vue-jest/
│   │   │   │   │   └── index.js
│   │   │   │   ├── vite-plugin-cssjs/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── vite-plugin-external/
│   │   │   │   │   └── index.ts
│   │   │   │   └── vite-plugin-vue-export-helper/
│   │   │   │       └── index.ts
│   │   │   ├── scripts/
│   │   │   │   ├── build-component/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── build-material/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── build-material-library/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── build-site/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── build-style/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── changelog/
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── template/
│   │   │   │   │   │   ├── main.en-US.njk
│   │   │   │   │   │   └── main.zh-CN.njk
│   │   │   │   │   └── utils.ts
│   │   │   │   ├── dev-component/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── dev-site/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── docgen/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── slot-tag-handler.ts
│   │   │   │   │   ├── templates/
│   │   │   │   │   │   ├── events.ts
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── methods.ts
│   │   │   │   │   │   ├── props.ts
│   │   │   │   │   │   └── slots.ts
│   │   │   │   │   └── utils/
│   │   │   │   │       ├── index.ts
│   │   │   │   │       ├── parse-interface.ts
│   │   │   │   │       ├── parse-material.ts
│   │   │   │   │       └── print.ts
│   │   │   │   ├── dtsgen/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── icongen/
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── svgo.config.ts
│   │   │   │   │   └── vue-template.ts
│   │   │   │   ├── jsongen/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── lessgen/
│   │   │   │   │   └── index.ts
│   │   │   │   └── test/
│   │   │   │       ├── index.ts
│   │   │   │       └── screentshot.ts
│   │   │   └── utils/
│   │   │       ├── config.ts
│   │   │       ├── convert-case.ts
│   │   │       ├── get-package.ts
│   │   │       ├── paths.ts
│   │   │       └── rollup.ts
│   │   └── tsconfig.json
│   ├── vite-plugin-arco-vue-docs/
│   │   ├── .eslintignore
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── .prettierrc.js
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── descriptor.ts
│   │   │   ├── index.ts
│   │   │   ├── interface.ts
│   │   │   ├── markdown.ts
│   │   │   ├── marked.ts
│   │   │   ├── parse-changelog.ts
│   │   │   ├── utils.ts
│   │   │   └── vue-template.ts
│   │   └── tsconfig.json
│   ├── web-vue/
│   │   ├── .eslintignore
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── .prettierrc.js
│   │   ├── .stylelintrc.js
│   │   ├── CHANGELOG.md
│   │   ├── CHANGELOG.zh-CN.md
│   │   ├── README.md
│   │   ├── README.zh-CN.md
│   │   ├── babel.config.js
│   │   ├── components/
│   │   │   ├── _components/
│   │   │   │   ├── auto-tooltip/
│   │   │   │   │   ├── auto-tooltip.tsx
│   │   │   │   │   └── style/
│   │   │   │   │       ├── index.less
│   │   │   │   │       └── index.ts
│   │   │   │   ├── client-only.tsx
│   │   │   │   ├── feedback-icon.vue
│   │   │   │   ├── icon-hover.vue
│   │   │   │   ├── input-label/
│   │   │   │   │   ├── input-label.tsx
│   │   │   │   │   └── style/
│   │   │   │   │       ├── index.less
│   │   │   │   │       ├── index.ts
│   │   │   │   │       ├── input-label.less
│   │   │   │   │       └── token.less
│   │   │   │   ├── picker/
│   │   │   │   │   ├── input-range.vue
│   │   │   │   │   ├── input.vue
│   │   │   │   │   └── style/
│   │   │   │   │       ├── index.less
│   │   │   │   │       └── token.less
│   │   │   │   ├── render-function.ts
│   │   │   │   ├── resize-observer-v2.ts
│   │   │   │   ├── resize-observer.tsx
│   │   │   │   ├── resize-trigger.vue
│   │   │   │   ├── select-view/
│   │   │   │   │   ├── interface.ts
│   │   │   │   │   ├── select-view.tsx
│   │   │   │   │   └── style/
│   │   │   │   │       ├── index.less
│   │   │   │   │       ├── index.ts
│   │   │   │   │       └── token.less
│   │   │   │   ├── transition/
│   │   │   │   │   └── expand-transition.vue
│   │   │   │   ├── virtual-list/
│   │   │   │   │   ├── filler.vue
│   │   │   │   │   ├── hooks/
│   │   │   │   │   │   ├── use-item-height.ts
│   │   │   │   │   │   ├── use-range-state.ts
│   │   │   │   │   │   ├── use-render-children.tsx
│   │   │   │   │   │   ├── use-scroll-to.ts
│   │   │   │   │   │   └── use-viewport-height.ts
│   │   │   │   │   ├── interface.ts
│   │   │   │   │   ├── utils/
│   │   │   │   │   │   ├── algorithm.ts
│   │   │   │   │   │   └── index.ts
│   │   │   │   │   └── virtual-list.vue
│   │   │   │   └── virtual-list-v2/
│   │   │   │       ├── hooks/
│   │   │   │       │   └── use-size.ts
│   │   │   │       ├── index.ts
│   │   │   │       ├── interface.ts
│   │   │   │       ├── virtual-list-item.tsx
│   │   │   │       └── virtual-list.vue
│   │   │   ├── _hooks/
│   │   │   │   ├── use-children-components.ts
│   │   │   │   ├── use-component-ref.ts
│   │   │   │   ├── use-cursor.ts
│   │   │   │   ├── use-first-element.ts
│   │   │   │   ├── use-form-item.ts
│   │   │   │   ├── use-index.ts
│   │   │   │   ├── use-input.ts
│   │   │   │   ├── use-merge-state.ts
│   │   │   │   ├── use-overflow.ts
│   │   │   │   ├── use-pagination.ts
│   │   │   │   ├── use-pick-slots.ts
│   │   │   │   ├── use-popup-container.ts
│   │   │   │   ├── use-popup-manager.ts
│   │   │   │   ├── use-popup-overflow-hidden.ts
│   │   │   │   ├── use-pure-prop.ts
│   │   │   │   ├── use-resize-observer.ts
│   │   │   │   ├── use-responsive.ts
│   │   │   │   ├── use-scrollbar.ts
│   │   │   │   ├── use-size.ts
│   │   │   │   ├── use-state.ts
│   │   │   │   ├── use-teleport-container.ts
│   │   │   │   └── use-trigger.ts
│   │   │   ├── _utils/
│   │   │   │   ├── array.ts
│   │   │   │   ├── clipboard.ts
│   │   │   │   ├── color.ts
│   │   │   │   ├── constant.ts
│   │   │   │   ├── convert-case.ts
│   │   │   │   ├── date.ts
│   │   │   │   ├── debounce.ts
│   │   │   │   ├── dom.ts
│   │   │   │   ├── get-value-by-path.ts
│   │   │   │   ├── global-config.ts
│   │   │   │   ├── is-equal.ts
│   │   │   │   ├── is.ts
│   │   │   │   ├── keyboard.ts
│   │   │   │   ├── keycode.ts
│   │   │   │   ├── omit.ts
│   │   │   │   ├── pad.ts
│   │   │   │   ├── pick-sub-comp-slots.ts
│   │   │   │   ├── pick.ts
│   │   │   │   ├── raf.ts
│   │   │   │   ├── responsive-observe.ts
│   │   │   │   ├── style.ts
│   │   │   │   ├── throttle-by-raf.ts
│   │   │   │   ├── to-array.ts
│   │   │   │   ├── types.ts
│   │   │   │   ├── use-prop-or-slot.ts
│   │   │   │   └── vue-utils.ts
│   │   │   ├── affix/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── bottom.md
│   │   │   │   │   ├── container.md
│   │   │   │   │   ├── fix-change.md
│   │   │   │   │   └── top.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.tsx
│   │   │   │   ├── affix.vue
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       └── index.ts
│   │   │   ├── alert/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── action.md
│   │   │   │   │   ├── banner.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── closable.md
│   │   │   │   │   ├── close-element.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── title.md
│   │   │   │   │   └── type.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── alert.vue
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── anchor/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── affix.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── boundary.md
│   │   │   │   │   ├── hash.md
│   │   │   │   │   └── line-less.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── anchor-link.vue
│   │   │   │   ├── anchor.vue
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── arco-vue.ts
│   │   │   ├── auto-complete/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── footer.md
│   │   │   │   │   ├── scroll.md
│   │   │   │   │   ├── strict.md
│   │   │   │   │   └── virtual-list.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── auto-complete.tsx
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── avatar/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── fit.md
│   │   │   │   │   ├── group.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── image-url.md
│   │   │   │   │   └── size.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── avatar-group.tsx
│   │   │   │   ├── avatar.vue
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── back-top/
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   └── custom.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── back-top.vue
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── badge/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── alone.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── color.md
│   │   │   │   │   ├── dot.md
│   │   │   │   │   ├── max.md
│   │   │   │   │   ├── status.md
│   │   │   │   │   └── text.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── badge.tsx
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── breadcrumb/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── dropdown.md
│   │   │   │   │   ├── ellipsis.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── routes.md
│   │   │   │   │   ├── separator.md
│   │   │   │   │   └── size.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── breadcrumb-item.tsx
│   │   │   │   ├── breadcrumb.tsx
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── button/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── group.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── loading.md
│   │   │   │   │   ├── long.md
│   │   │   │   │   ├── shape.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── status.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── button-group.vue
│   │   │   │   ├── button.vue
│   │   │   │   ├── constants.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── calendar/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   └── basic.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── calendar.tsx
│   │   │   │   ├── header.tsx
│   │   │   │   ├── hooks/
│   │   │   │   │   └── useCellClassName.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── month.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── week.tsx
│   │   │   │   └── year.tsx
│   │   │   ├── card/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── actions.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── bordered.md
│   │   │   │   │   ├── content.md
│   │   │   │   │   ├── grid.md
│   │   │   │   │   ├── hoverable.md
│   │   │   │   │   ├── inner.md
│   │   │   │   │   ├── meta.md
│   │   │   │   │   └── row.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── card-grid.vue
│   │   │   │   ├── card-meta.tsx
│   │   │   │   ├── card.tsx
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── carousel/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── auto.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── card.md
│   │   │   │   │   ├── direction.md
│   │   │   │   │   ├── fade.md
│   │   │   │   │   └── indicator.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── carousel-arrow.vue
│   │   │   │   ├── carousel-indicator.vue
│   │   │   │   ├── carousel-item.vue
│   │   │   │   ├── carousel.tsx
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       ├── slide.less
│   │   │   │       └── token.less
│   │   │   ├── cascader/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── check-strictly.md
│   │   │   │   │   ├── clear.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── expand.md
│   │   │   │   │   ├── fallback.md
│   │   │   │   │   ├── field-names.md
│   │   │   │   │   ├── format.md
│   │   │   │   │   ├── lazy-load.md
│   │   │   │   │   ├── loading.md
│   │   │   │   │   ├── multiple.md
│   │   │   │   │   ├── panel.md
│   │   │   │   │   ├── path.md
│   │   │   │   │   ├── search.md
│   │   │   │   │   └── virtual.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── base-cascader-panel.tsx
│   │   │   │   ├── cascader-column.tsx
│   │   │   │   ├── cascader-option.tsx
│   │   │   │   ├── cascader-panel.vue
│   │   │   │   ├── cascader-search-panel.tsx
│   │   │   │   ├── cascader.vue
│   │   │   │   ├── context.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   └── use-selected-path.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── checkbox/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── all.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── control.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── group.md
│   │   │   │   │   ├── layout.md
│   │   │   │   │   ├── limit.md
│   │   │   │   │   └── options.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── checkbox-group.tsx
│   │   │   │   ├── checkbox.tsx
│   │   │   │   ├── context.ts
│   │   │   │   ├── icon-check.tsx
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── collapse/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── accordion.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── border-less.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── destroy.md
│   │   │   │   │   ├── expand-icon.md
│   │   │   │   │   ├── extra.md
│   │   │   │   │   ├── icon-position.md
│   │   │   │   │   └── nested.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── collapse-item.tsx
│   │   │   │   ├── collapse.vue
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── color-picker/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── colors.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── format.md
│   │   │   │   │   ├── only-panel.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   ├── trigger-element.md
│   │   │   │   │   └── trigger.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── color-picker.tsx
│   │   │   │   ├── colors.ts
│   │   │   │   ├── control-bar.tsx
│   │   │   │   ├── hooks/
│   │   │   │   │   └── use-control-block.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── input-alpha.tsx
│   │   │   │   ├── input-hex.tsx
│   │   │   │   ├── input-rgb.tsx
│   │   │   │   ├── interface.ts
│   │   │   │   ├── palette.tsx
│   │   │   │   ├── panel.tsx
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── comment/
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── align.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── editor.md
│   │   │   │   │   └── nest.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── comment.vue
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── components.ts
│   │   │   ├── config-provider/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── empty.md
│   │   │   │   │   └── rtl.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── config-provider.vue
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       └── index.ts
│   │   │   ├── date-picker/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── control.md
│   │   │   │   │   ├── date-render.md
│   │   │   │   │   ├── default-value.md
│   │   │   │   │   ├── disabled-date-advance.md
│   │   │   │   │   ├── disabled-date.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── extra.md
│   │   │   │   │   ├── month.md
│   │   │   │   │   ├── panel-only.md
│   │   │   │   │   ├── prefix.md
│   │   │   │   │   ├── quarter.md
│   │   │   │   │   ├── range.md
│   │   │   │   │   ├── shortcuts-position.md
│   │   │   │   │   ├── shortcuts.md
│   │   │   │   │   ├── showtime.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   ├── trigger-element.md
│   │   │   │   │   ├── week.md
│   │   │   │   │   └── year.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   ├── use-cell-class-name.ts
│   │   │   │   │   ├── use-format.ts
│   │   │   │   │   ├── use-header-value.ts
│   │   │   │   │   ├── use-inject-datepicker-transform.ts
│   │   │   │   │   ├── use-is-disabled-date.ts
│   │   │   │   │   ├── use-panel-span.ts
│   │   │   │   │   ├── use-picker-state.ts
│   │   │   │   │   ├── use-provide-datepicker-transform.ts
│   │   │   │   │   ├── use-range-header-value.ts
│   │   │   │   │   ├── use-range-picker-state.ts
│   │   │   │   │   ├── use-range-time-picker-value.ts
│   │   │   │   │   ├── use-time-picker-value.ts
│   │   │   │   │   └── use-value-format.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── panels/
│   │   │   │   │   ├── body.vue
│   │   │   │   │   ├── date/
│   │   │   │   │   │   └── index.vue
│   │   │   │   │   ├── footer.vue
│   │   │   │   │   ├── header.vue
│   │   │   │   │   ├── month/
│   │   │   │   │   │   └── index.vue
│   │   │   │   │   ├── quarter/
│   │   │   │   │   │   └── index.vue
│   │   │   │   │   ├── shortcuts.vue
│   │   │   │   │   ├── week/
│   │   │   │   │   │   └── index.vue
│   │   │   │   │   ├── week-list.vue
│   │   │   │   │   └── year/
│   │   │   │   │       └── index.vue
│   │   │   │   ├── picker-panel.vue
│   │   │   │   ├── picker.vue
│   │   │   │   ├── pickers/
│   │   │   │   │   ├── date-picker.tsx
│   │   │   │   │   ├── month-picker.tsx
│   │   │   │   │   ├── quarter-picker.tsx
│   │   │   │   │   ├── week-picker.tsx
│   │   │   │   │   └── year-picker.tsx
│   │   │   │   ├── range-picker-panel.vue
│   │   │   │   ├── range-picker.vue
│   │   │   │   ├── style/
│   │   │   │   │   ├── date.less
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── month.less
│   │   │   │   │   ├── quarter.less
│   │   │   │   │   ├── range.less
│   │   │   │   │   ├── shortcuts.less
│   │   │   │   │   ├── token.less
│   │   │   │   │   ├── week.less
│   │   │   │   │   └── year.less
│   │   │   │   └── utils/
│   │   │   │       └── index.ts
│   │   │   ├── descriptions/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── align.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── bordered.md
│   │   │   │   │   ├── example.md
│   │   │   │   │   ├── layout.md
│   │   │   │   │   └── single.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── descriptions-item.vue
│   │   │   │   ├── descriptions.tsx
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── divider/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── vertical.md
│   │   │   │   │   └── with-text.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── divider.tsx
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── drawer/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── async.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── function.md
│   │   │   │   │   ├── nested.md
│   │   │   │   │   ├── popup-container.md
│   │   │   │   │   └── position.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── drawer.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── dropdown/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── button.md
│   │   │   │   │   ├── context-menu.md
│   │   │   │   │   ├── group.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── position.md
│   │   │   │   │   ├── submenu.md
│   │   │   │   │   └── trigger.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── dropdown-button.vue
│   │   │   │   ├── dropdown-group.vue
│   │   │   │   ├── dropdown-option.vue
│   │   │   │   ├── dropdown-panel.vue
│   │   │   │   ├── dropdown-submenu.vue
│   │   │   │   ├── dropdown.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── empty/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   └── custom.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── empty.tsx
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── form/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── async.md
│   │   │   │   │   ├── auto-width.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── dynamic.md
│   │   │   │   │   ├── extra.md
│   │   │   │   │   ├── grid.md
│   │   │   │   │   ├── layout.md
│   │   │   │   │   ├── nest.md
│   │   │   │   │   ├── scroll.md
│   │   │   │   │   ├── status.md
│   │   │   │   │   ├── validation.md
│   │   │   │   │   └── validation2.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   ├── demo.vue
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── form-item-label.vue
│   │   │   │   ├── form-item-message.vue
│   │   │   │   ├── form-item.vue
│   │   │   │   ├── form.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── status.less
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── grid/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── adaptation-object.md
│   │   │   │   │   ├── adaptation.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── flex-align.md
│   │   │   │   │   ├── flex-justify.md
│   │   │   │   │   ├── flex.md
│   │   │   │   │   ├── grid-responsive.md
│   │   │   │   │   ├── grid.md
│   │   │   │   │   ├── gutter.md
│   │   │   │   │   ├── offset.md
│   │   │   │   │   └── order.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── grid-col.vue
│   │   │   │   ├── grid-item.vue
│   │   │   │   ├── grid-row.vue
│   │   │   │   ├── grid.vue
│   │   │   │   ├── hook/
│   │   │   │   │   ├── use-responsive-state.ts
│   │   │   │   │   └── use-responsive-value.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── col.less
│   │   │   │   │   ├── grid.less
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── row.less
│   │   │   │   └── utils/
│   │   │   │       └── index.ts
│   │   │   ├── icon-component/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── add-from-icon-font-cn.tsx
│   │   │   │   ├── icon.vue
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       └── index.ts
│   │   │   ├── image/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── caption.md
│   │   │   │   │   ├── component-preview-group.md
│   │   │   │   │   ├── component-preview.md
│   │   │   │   │   ├── custom-preview-actions.md
│   │   │   │   │   ├── error.md
│   │   │   │   │   ├── extra.md
│   │   │   │   │   ├── loader.md
│   │   │   │   │   ├── preview-group.md
│   │   │   │   │   ├── preview-popup-container.md
│   │   │   │   │   └── progressive-loader.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   ├── use-image-drag.ts
│   │   │   │   │   └── use-image-load-status.ts
│   │   │   │   ├── image-footer.vue
│   │   │   │   ├── image.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── preview-action.tsx
│   │   │   │   ├── preview-arrow.vue
│   │   │   │   ├── preview-group.vue
│   │   │   │   ├── preview-toolbar.vue
│   │   │   │   ├── preview.vue
│   │   │   │   ├── style/
│   │   │   │   │   ├── image.less
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── preview.less
│   │   │   │   │   ├── token.less
│   │   │   │   │   └── trigger.less
│   │   │   │   └── utils/
│   │   │   │       ├── get-fix-translate.ts
│   │   │   │       ├── get-scale.ts
│   │   │   │       └── index.ts
│   │   │   ├── index.less
│   │   │   ├── index.ts
│   │   │   ├── input/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── group.md
│   │   │   │   │   ├── password.md
│   │   │   │   │   ├── prefix.md
│   │   │   │   │   ├── prepend.md
│   │   │   │   │   ├── search-button.md
│   │   │   │   │   ├── search-loading.md
│   │   │   │   │   ├── search.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   ├── status.md
│   │   │   │   │   └── word-limit.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── input-group.vue
│   │   │   │   ├── input-password.vue
│   │   │   │   ├── input-search.tsx
│   │   │   │   ├── input.tsx
│   │   │   │   └── style/
│   │   │   │       ├── group.less
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       ├── input.less
│   │   │   │       ├── password.less
│   │   │   │       ├── search.less
│   │   │   │       ├── size.less
│   │   │   │       ├── textarea.less
│   │   │   │       └── token.less
│   │   │   ├── input-number/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── format.md
│   │   │   │   │   ├── mode.md
│   │   │   │   │   ├── model.md
│   │   │   │   │   ├── precision.md
│   │   │   │   │   ├── prefix.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── step-icon.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── input-number.tsx
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── input-tag/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── max.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── status.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── input-tag.tsx
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── input-tag.less
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── layout/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── breakpoint.md
│   │   │   │   │   ├── collapsed.md
│   │   │   │   │   ├── custom-icon.md
│   │   │   │   │   └── resize.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── content.vue
│   │   │   │   ├── context.ts
│   │   │   │   ├── footer.vue
│   │   │   │   ├── header.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── layout.vue
│   │   │   │   ├── sider.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── link/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── hoverable.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── loading.md
│   │   │   │   │   └── status.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── link.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── list/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── actions-layout.md
│   │   │   │   │   ├── actions.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── grid.md
│   │   │   │   │   ├── meta.md
│   │   │   │   │   ├── responsive-grid.md
│   │   │   │   │   ├── scroll.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── virtual-list.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── list-item-meta.vue
│   │   │   │   ├── list-item.tsx
│   │   │   │   ├── list.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── use-pagination.ts
│   │   │   ├── locale/
│   │   │   │   ├── __test__/
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   └── lang/
│   │   │   │       ├── ar-eg.ts
│   │   │   │       ├── de-de.ts
│   │   │   │       ├── en-us.ts
│   │   │   │       ├── es-es.ts
│   │   │   │       ├── fr-fr.ts
│   │   │   │       ├── id-id.ts
│   │   │   │       ├── it-it.ts
│   │   │   │       ├── ja-jp.ts
│   │   │   │       ├── km-kh.ts
│   │   │   │       ├── ko-kr.ts
│   │   │   │       ├── ms-my.ts
│   │   │   │       ├── nl-nl.ts
│   │   │   │       ├── pt-pt.ts
│   │   │   │       ├── ru-ru.ts
│   │   │   │       ├── th-th.ts
│   │   │   │       ├── vi-vn.ts
│   │   │   │       ├── zh-cn.ts
│   │   │   │       └── zh-tw.ts
│   │   │   ├── mention/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   └── prefix.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── mention.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── menu/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── breakpoint.md
│   │   │   │   │   ├── collapse-control.md
│   │   │   │   │   ├── dark-horizontal.md
│   │   │   │   │   ├── horizontal.md
│   │   │   │   │   ├── pop-button.md
│   │   │   │   │   ├── pop.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── sub-menu.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── base-menu.vue
│   │   │   │   ├── context.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   ├── use-level.ts
│   │   │   │   │   ├── use-menu-context.ts
│   │   │   │   │   ├── use-menu-data-collector.ts
│   │   │   │   │   ├── use-menu-open-state.ts
│   │   │   │   │   └── use-menu.ts
│   │   │   │   ├── indent.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── item-group.vue
│   │   │   │   ├── item.tsx
│   │   │   │   ├── menu.tsx
│   │   │   │   ├── overflow-wrap.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── sub-menu-inline.vue
│   │   │   │   ├── sub-menu-pop.vue
│   │   │   │   ├── sub-menu.tsx
│   │   │   │   └── utils/
│   │   │   │       └── index.ts
│   │   │   ├── message/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── closeable.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── position.md
│   │   │   │   │   ├── type.md
│   │   │   │   │   └── update.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── message-list.tsx
│   │   │   │   ├── message.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── modal/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── async.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── confirm.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── draggable.md
│   │   │   │   │   ├── form.md
│   │   │   │   │   ├── fullscreen.md
│   │   │   │   │   ├── function.md
│   │   │   │   │   ├── notice.md
│   │   │   │   │   └── width.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   └── use-draggable.ts
│   │   │   │   ├── index.tsx
│   │   │   │   ├── interface.ts
│   │   │   │   ├── modal.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── notification/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── btn.md
│   │   │   │   │   ├── custom-close.md
│   │   │   │   │   ├── position.md
│   │   │   │   │   ├── style.md
│   │   │   │   │   ├── type.md
│   │   │   │   │   ├── update_duration.md
│   │   │   │   │   └── update_notification.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── notification-list.tsx
│   │   │   │   ├── notification.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── overflow-list/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   └── from.md
│   │   │   │   ├── index.ts
│   │   │   │   ├── overflow-list.tsx
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       └── index.ts
│   │   │   ├── page-header/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── breadcrumb.md
│   │   │   │   │   ├── content.md
│   │   │   │   │   └── transparent.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── page-header.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── pagination/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── all.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── ellipsis.md
│   │   │   │   │   ├── jumper.md
│   │   │   │   │   ├── page-size.md
│   │   │   │   │   ├── simple.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── total.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.tsx
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── page-item-ellipsis.vue
│   │   │   │   ├── page-item-step.vue
│   │   │   │   ├── page-item.vue
│   │   │   │   ├── page-jumper.vue
│   │   │   │   ├── page-options.vue
│   │   │   │   ├── pagination.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── popconfirm/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── async.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── position.md
│   │   │   │   │   └── type.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── popconfirm.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── popover/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── position.md
│   │   │   │   │   └── trigger.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── popover.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── progress/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── circle.md
│   │   │   │   │   ├── linear.md
│   │   │   │   │   ├── mini.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   ├── status.md
│   │   │   │   │   ├── steps.md
│   │   │   │   │   └── trackColor.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── circle.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── line.vue
│   │   │   │   ├── progress.vue
│   │   │   │   ├── steps.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── radio/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── button.md
│   │   │   │   │   ├── control.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── direction.md
│   │   │   │   │   ├── group.md
│   │   │   │   │   ├── layout.md
│   │   │   │   │   ├── options.md
│   │   │   │   │   └── size.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── radio-group.tsx
│   │   │   │   ├── radio.tsx
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── rate/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── character.md
│   │   │   │   │   ├── clear.md
│   │   │   │   │   ├── color.md
│   │   │   │   │   ├── count.md
│   │   │   │   │   ├── grading.md
│   │   │   │   │   ├── half.md
│   │   │   │   │   └── readonly.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── rate.tsx
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── resize-box/
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── controlled.md
│   │   │   │   │   ├── custom-triggers.md
│   │   │   │   │   └── layout.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.tsx
│   │   │   │   ├── index.ts
│   │   │   │   ├── resize-box.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── result/
│   │   │   │   ├── 403.tsx
│   │   │   │   ├── 404.tsx
│   │   │   │   ├── 500.tsx
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── 403.md
│   │   │   │   │   ├── 404.md
│   │   │   │   │   ├── 500.md
│   │   │   │   │   ├── all.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── error.md
│   │   │   │   │   ├── success.md
│   │   │   │   │   └── warning.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── result.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── scrollbar/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   └── type.md
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── scrollbar.vue
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── thumb.vue
│   │   │   ├── select/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── border.md
│   │   │   │   │   ├── clear.md
│   │   │   │   │   ├── create.md
│   │   │   │   │   ├── fallback.md
│   │   │   │   │   ├── field-names.md
│   │   │   │   │   ├── footer.md
│   │   │   │   │   ├── group.md
│   │   │   │   │   ├── header.md
│   │   │   │   │   ├── label.md
│   │   │   │   │   ├── linkage.md
│   │   │   │   │   ├── loading.md
│   │   │   │   │   ├── multiple.md
│   │   │   │   │   ├── remote.md
│   │   │   │   │   ├── scroll.md
│   │   │   │   │   ├── search.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── virtual-list.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   ├── use-options.ts
│   │   │   │   │   └── use-select.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── optgroup.vue
│   │   │   │   ├── option.vue
│   │   │   │   ├── select-dropdown.vue
│   │   │   │   ├── select.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── skeleton/
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── animation.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   └── type.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── line.vue
│   │   │   │   ├── shape.vue
│   │   │   │   ├── skeleton.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── slider/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── input.md
│   │   │   │   │   ├── marks.md
│   │   │   │   │   ├── range.md
│   │   │   │   │   ├── step.md
│   │   │   │   │   ├── tooltip.md
│   │   │   │   │   └── vertical.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── slider-button.vue
│   │   │   │   ├── slider-dots.vue
│   │   │   │   ├── slider-input.vue
│   │   │   │   ├── slider-marks.vue
│   │   │   │   ├── slider-ticks.vue
│   │   │   │   ├── slider.vue
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── space/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── align.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   ├── split.md
│   │   │   │   │   ├── vertical.md
│   │   │   │   │   └── wrap.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── space.tsx
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       └── index.ts
│   │   │   ├── spin/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── container.md
│   │   │   │   │   ├── dot.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── tip.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── dot-loading.tsx
│   │   │   │   ├── index.ts
│   │   │   │   ├── spin.tsx
│   │   │   │   └── style/
│   │   │   │       ├── dot-loading.less
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── split/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   └── nested.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── split.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── statistic/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── animation.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── countdown.md
│   │   │   │   │   └── prefix.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── countdown.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── statistic.vue
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── steps/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── arrow.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── changeable.md
│   │   │   │   │   ├── custom-node.md
│   │   │   │   │   ├── description.md
│   │   │   │   │   ├── dot.md
│   │   │   │   │   ├── error.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── label-placement.md
│   │   │   │   │   ├── line-less.md
│   │   │   │   │   ├── navigation.md
│   │   │   │   │   ├── small-arrow.md
│   │   │   │   │   ├── small.md
│   │   │   │   │   └── vertical.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── step.vue
│   │   │   │   ├── steps.vue
│   │   │   │   └── style/
│   │   │   │       ├── arrow.less
│   │   │   │       ├── circle.less
│   │   │   │       ├── dot.less
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       ├── navigation.less
│   │   │   │       └── token.less
│   │   │   ├── style/
│   │   │   │   ├── animation/
│   │   │   │   │   ├── fade.less
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── slide.less
│   │   │   │   │   └── zoom.less
│   │   │   │   ├── color/
│   │   │   │   │   ├── colors.less
│   │   │   │   │   ├── css-variables.less
│   │   │   │   │   ├── get-rgb-str.js
│   │   │   │   │   ├── palette-dark.js
│   │   │   │   │   └── palette.js
│   │   │   │   ├── icon.less
│   │   │   │   ├── index.less
│   │   │   │   ├── mixins/
│   │   │   │   │   ├── icon-hover.less
│   │   │   │   │   └── index.less
│   │   │   │   ├── normalize.less
│   │   │   │   └── theme/
│   │   │   │       ├── component.less
│   │   │   │       ├── css-variables.less
│   │   │   │       ├── global.less
│   │   │   │       └── index.less
│   │   │   ├── switch/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── change-intercept.md
│   │   │   │   │   ├── color.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── loading.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   ├── text.md
│   │   │   │   │   ├── type.md
│   │   │   │   │   └── value.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── switch.vue
│   │   │   ├── table/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── custom-dom.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── drag-handle.md
│   │   │   │   │   ├── drag-row.md
│   │   │   │   │   ├── editable.md
│   │   │   │   │   ├── ellipsis.md
│   │   │   │   │   ├── expand.md
│   │   │   │   │   ├── filter.md
│   │   │   │   │   ├── fixed-group.md
│   │   │   │   │   ├── fixed.md
│   │   │   │   │   ├── group.md
│   │   │   │   │   ├── lazy-load.md
│   │   │   │   │   ├── props.md
│   │   │   │   │   ├── radio.md
│   │   │   │   │   ├── resize.md
│   │   │   │   │   ├── row-selection.md
│   │   │   │   │   ├── scroll.md
│   │   │   │   │   ├── sort.md
│   │   │   │   │   ├── span.md
│   │   │   │   │   ├── sticky.md
│   │   │   │   │   ├── subtree.md
│   │   │   │   │   ├── summary.md
│   │   │   │   │   └── virtual-list.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   ├── use-column-filter.ts
│   │   │   │   │   ├── use-column-resize.ts
│   │   │   │   │   ├── use-column-sorter.ts
│   │   │   │   │   ├── use-drag.ts
│   │   │   │   │   ├── use-expand.ts
│   │   │   │   │   ├── use-filter.ts
│   │   │   │   │   ├── use-pagination.ts
│   │   │   │   │   ├── use-row-selection.ts
│   │   │   │   │   ├── use-sorter.ts
│   │   │   │   │   └── use-span.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── filters-popup.less
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── table-col-group.vue
│   │   │   │   ├── table-column.tsx
│   │   │   │   ├── table-operation-td.tsx
│   │   │   │   ├── table-operation-th.tsx
│   │   │   │   ├── table-tbody.tsx
│   │   │   │   ├── table-td.tsx
│   │   │   │   ├── table-th.tsx
│   │   │   │   ├── table-thead.tsx
│   │   │   │   ├── table-tr.tsx
│   │   │   │   ├── table.tsx
│   │   │   │   └── utils.ts
│   │   │   ├── tabs/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── editable.md
│   │   │   │   │   ├── extra.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── lazy.md
│   │   │   │   │   ├── position.md
│   │   │   │   │   ├── scroll.md
│   │   │   │   │   ├── trigger.md
│   │   │   │   │   └── type.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── rtl.less
│   │   │   │   │   ├── token.less
│   │   │   │   │   └── vertical.less
│   │   │   │   ├── tab-pane.vue
│   │   │   │   ├── tabs-button.tsx
│   │   │   │   ├── tabs-nav-ink.vue
│   │   │   │   ├── tabs-nav.tsx
│   │   │   │   ├── tabs-tab.vue
│   │   │   │   ├── tabs.tsx
│   │   │   │   └── utils.ts
│   │   │   ├── tag/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── bordered.md
│   │   │   │   │   ├── checkable.md
│   │   │   │   │   ├── closeable.md
│   │   │   │   │   ├── color.md
│   │   │   │   │   ├── dynamically.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── loading.md
│   │   │   │   │   └── size.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── tag.vue
│   │   │   ├── textarea/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── auto-size.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── status.md
│   │   │   │   │   └── word-limit.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   └── index.ts
│   │   │   │   ├── textarea.vue
│   │   │   │   └── utils.ts
│   │   │   ├── time-picker/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── control.md
│   │   │   │   │   ├── default-value.md
│   │   │   │   │   ├── disable-confirm.md
│   │   │   │   │   ├── disabled-time.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── extra.md
│   │   │   │   │   ├── format.md
│   │   │   │   │   ├── prefix.md
│   │   │   │   │   ├── rangepicker.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   ├── step.md
│   │   │   │   │   └── use-12-hours.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   ├── use-is-disabled-time.ts
│   │   │   │   │   ├── use-time-format.ts
│   │   │   │   │   ├── use-time-list.ts
│   │   │   │   │   └── use-time-state.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── panel.vue
│   │   │   │   ├── range-panel.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── time-column.vue
│   │   │   │   ├── time-picker.vue
│   │   │   │   └── utils/
│   │   │   │       └── index.ts
│   │   │   ├── timeline/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── direction.md
│   │   │   │   │   ├── dot.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── label.md
│   │   │   │   │   ├── mode.md
│   │   │   │   │   ├── pending.md
│   │   │   │   │   ├── type.md
│   │   │   │   │   └── vertical.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── item.vue
│   │   │   │   ├── style/
│   │   │   │   │   ├── horizontal.less
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── timeline.tsx
│   │   │   ├── tooltip/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── color.md
│   │   │   │   │   ├── mini.md
│   │   │   │   │   └── position.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── tooltip.vue
│   │   │   ├── transfer/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── custom-header.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── one-way.md
│   │   │   │   │   ├── pagination.md
│   │   │   │   │   ├── search.md
│   │   │   │   │   ├── simple.md
│   │   │   │   │   └── tree.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── transfer-list-item.tsx
│   │   │   │   ├── transfer-view.vue
│   │   │   │   └── transfer.vue
│   │   │   ├── tree/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── block-node.md
│   │   │   │   │   ├── checkable.md
│   │   │   │   │   ├── checked-strategy.md
│   │   │   │   │   ├── control.md
│   │   │   │   │   ├── draggable.md
│   │   │   │   │   ├── field-names.md
│   │   │   │   │   ├── icons.md
│   │   │   │   │   ├── load-more.md
│   │   │   │   │   ├── multiple.md
│   │   │   │   │   ├── node-icon.md
│   │   │   │   │   ├── render-extra.md
│   │   │   │   │   ├── search.md
│   │   │   │   │   ├── show-line.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── virtual.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── check-utils.test.ts
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── tree-data.ts
│   │   │   │   ├── base-node.vue
│   │   │   │   ├── context.ts
│   │   │   │   ├── expand-transition.vue
│   │   │   │   ├── hooks/
│   │   │   │   │   ├── use-checked-state.ts
│   │   │   │   │   ├── use-draggable.ts
│   │   │   │   │   ├── use-node-key.ts
│   │   │   │   │   ├── use-tree-context.ts
│   │   │   │   │   └── use-tree-data.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── node-switcher.vue
│   │   │   │   ├── node.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── transition-node-list.vue
│   │   │   │   ├── tree.vue
│   │   │   │   └── utils/
│   │   │   │       ├── check-utils.ts
│   │   │   │       ├── index.ts
│   │   │   │       └── tree-data.ts
│   │   │   ├── tree-select/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── checkable.md
│   │   │   │   │   ├── checked-strategy.md
│   │   │   │   │   ├── control.md
│   │   │   │   │   ├── dropdown-slots.md
│   │   │   │   │   ├── fallback.md
│   │   │   │   │   ├── field-names.md
│   │   │   │   │   ├── label-in-value.md
│   │   │   │   │   ├── load-more.md
│   │   │   │   │   ├── multiple.md
│   │   │   │   │   ├── popup-visible.md
│   │   │   │   │   ├── search-remote.md
│   │   │   │   │   ├── search.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   ├── trigger-element.md
│   │   │   │   │   └── virtual.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   ├── use-filter-tree-node.ts
│   │   │   │   │   └── use-selected-state.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── panel.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── tree-select.vue
│   │   │   ├── trigger/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── align-point.md
│   │   │   │   │   ├── arrow.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── nest.md
│   │   │   │   │   ├── scroll.md
│   │   │   │   │   ├── translate.md
│   │   │   │   │   └── triggers.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── trigger.tsx
│   │   │   │   └── utils.ts
│   │   │   ├── typography/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── ellipsis.md
│   │   │   │   │   ├── operations.md
│   │   │   │   │   ├── paragraph.md
│   │   │   │   │   ├── text.md
│   │   │   │   │   └── title.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── base.tsx
│   │   │   │   ├── edit-content.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── operations.vue
│   │   │   │   ├── paragraph.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── text.tsx
│   │   │   │   ├── title.tsx
│   │   │   │   ├── typography.vue
│   │   │   │   └── utils/
│   │   │   │       ├── getInnerText.tsx
│   │   │   │       └── measure.tsx
│   │   │   ├── upload/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── avatar.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── before-remove.md
│   │   │   │   │   ├── before-upload.md
│   │   │   │   │   ├── custom-button.md
│   │   │   │   │   ├── custom-icon.md
│   │   │   │   │   ├── directory.md
│   │   │   │   │   ├── draggable.md
│   │   │   │   │   ├── limit.md
│   │   │   │   │   ├── picture-card.md
│   │   │   │   │   ├── picture-list.md
│   │   │   │   │   ├── request.md
│   │   │   │   │   ├── submit.md
│   │   │   │   │   └── upload-list.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interfaces.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── upload-button.tsx
│   │   │   │   ├── upload-list-item.tsx
│   │   │   │   ├── upload-list.tsx
│   │   │   │   ├── upload-picture-item.tsx
│   │   │   │   ├── upload-progress.tsx
│   │   │   │   ├── upload.tsx
│   │   │   │   └── utils.ts
│   │   │   ├── verification-code/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── form.md
│   │   │   │   │   ├── formatter.md
│   │   │   │   │   ├── masked.md
│   │   │   │   │   ├── separator.md
│   │   │   │   │   └── status.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── verification-code.tsx
│   │   │   └── watermark/
│   │   │       ├── CHANGELOG.md
│   │   │       ├── CHANGELOG.zh-CN.md
│   │   │       ├── README.en-US.md
│   │   │       ├── README.zh-CN.md
│   │   │       ├── TEMPLATE.md
│   │   │       ├── __demo__/
│   │   │       │   ├── basic.md
│   │   │       │   ├── custom.md
│   │   │       │   ├── image.md
│   │   │       │   └── multiline.md
│   │   │       ├── __test__/
│   │   │       │   ├── __snapshots__/
│   │   │       │   │   └── demo.test.ts.snap
│   │   │       │   └── demo.test.ts
│   │   │       ├── hooks/
│   │   │       │   ├── use-mutation-observer.ts
│   │   │       │   └── use-theme.ts
│   │   │       ├── index.ts
│   │   │       ├── interface.ts
│   │   │       ├── style/
│   │   │       │   └── index.ts
│   │   │       ├── utils/
│   │   │       │   └── index.ts
│   │   │       └── watermark.tsx
│   │   ├── global.d.ts
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── scripts/
│   │   │   └── demo-test.ts
│   │   └── tsconfig.json
│   └── web-vue-storybook/
│       ├── .eslintignore
│       ├── .eslintrc.js
│       ├── .gitignore
│       ├── .prettierrc.js
│       ├── .storybook/
│       │   ├── babel.config.js
│       │   ├── main.js
│       │   └── preview.js
│       ├── README.md
│       ├── global.d.ts
│       ├── package.json
│       ├── stories/
│       │   ├── components/
│       │   │   ├── button.vue
│       │   │   ├── custom-menu.vue
│       │   │   ├── custom-sub-menu.vue
│       │   │   ├── date-picker.vue
│       │   │   ├── dropdown.tsx
│       │   │   ├── form.vue
│       │   │   ├── json.ts
│       │   │   ├── menu.vue
│       │   │   ├── number-input.vue
│       │   │   ├── select.tsx
│       │   │   ├── space.vue
│       │   │   ├── tree-draggable.vue
│       │   │   ├── tree-select.vue
│       │   │   ├── tree.vue
│       │   │   ├── typography.vue
│       │   │   └── virtual-list.vue
│       │   └── index.stories.ts
│       └── tsconfig.json
└── pnpm-workspace.yaml

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true


================================================
FILE: .eslintignore
================================================
/*.json
/*.js


================================================
FILE: .eslintrc.js
================================================
// Adapt to vscode.
// This file will be found in the root directory of vscode.
// If it cannot be found, it will report an error and cannot run eslint in the editor.
module.exports = {};


================================================
FILE: .gitattributes
================================================
# This file is inspired by https://github.com/alexkaratarakis/gitattributes
#
# Auto detect text files and perform LF normalization
* text=auto

# The above will handle all files NOT found below
# These files are text and should be normalized (Convert crlf => lf)

# Source code
*.coffee          text
*.css             text diff=css
*.htm             text diff=html
*.html            text diff=html
*.inc             text
*.ini             text
*.java            text
*.js              text
*.jsx             text
*.less            text
*.ls              text
*.map             text -diff
*.od              text
*.onlydata        text
*.php             text diff=php
*.pl              text
*.ps1             text eol=crlf
*.py              text diff=python
*.rb              text diff=ruby
*.sass            text
*.scm             text
*.scss            text diff=css
.husky/*          text eol=lf
*.sql             text
*.styl            text
*.tag             text
*.ts              text
*.xml             text
*.xhtml           text diff=html
*.md              text eol=lf
*.vue             text eol=lf
*.tsx             text eol=lf

# Scripts
*.bash            text eol=lf
*.fish            text eol=lf
*.sh              text eol=lf
*.zsh             text eol=lf
# These are explicitly windows files and should use crlf
*.bat             text eol=crlf
*.cmd             text eol=crlf
*.ps1             text eol=crlf

# Serialisation
*.json            text
*.toml            text
*.xml             text
*.yaml            text
*.yml             text

# Documents
*.bibtex          text diff=bibtex
*.doc             diff=astextplain
*.DOC             diff=astextplain
*.docx            diff=astextplain
*.DOCX            diff=astextplain
*.dot             diff=astextplain
*.DOT             diff=astextplain
*.pdf             diff=astextplain
*.PDF             diff=astextplain
*.rtf             diff=astextplain
*.RTF             diff=astextplain
*.md              text diff=markdown
*.mdx             text diff=markdown
*.tex             text diff=tex
*.adoc            text
*.textile         text
*.mustache        text
*.csv             text
*.tab             text
*.tsv             text
*.txt             text
*.sql             text
*.epub            diff=astextplain
AUTHORS           text
CHANGELOG         text
CHANGES           text
CONTRIBUTING      text
COPYING           text
copyright         text
*COPYRIGHT*       text
INSTALL           text
license           text
LICENSE           text
NEWS              text
readme            text
*README*          text
TODO              text

# Graphics
*.ai              binary
*.bmp             binary
*.eps             binary
*.gif             binary
*.gifv            binary
*.ico             binary
*.jng             binary
*.jp2             binary
*.jpg             binary
*.jpeg            binary
*.jpx             binary
*.jxr             binary
*.pdf             binary
*.png             binary
*.psb             binary
*.psd             binary
# SVG treated as an asset (binary) by default. If you want to treat it as text,
# comment-out the following line and uncomment the line after.
*.svg             binary
#*.svg            text
*.svgz            binary
*.tif             binary
*.tiff            binary
*.wbmp            binary
*.webp            binary

# These files are binary and should be left untouched
# (binary is a macro for -text -diff)
*.class           binary
*.jar             binary
*.war             binary

## LINTERS
.csslintrc        text
.eslintrc         text
.jscsrc           text
.jshintrc         text
.jshintignore     text
.stylelintrc      text

# Configs
*.cnf             text
*.conf            text
*.config          text
.editorconfig     text
.env              text
.gitattributes    text eol=lf
.gitconfig        text
.htaccess         text
*.lock            text -diff
package.json      text eol=lf
package-lock.json text eol=lf -diff
*.npmignore       text
pnpm-lock.yaml    text eol=lf -diff
.prettierrc       text
yarn.lock         text -diff
browserslist      text
Makefile          text
makefile          text

## HEROKU
Procfile          text
.slugignore       text

## AUDIO
*.kar             binary
*.m4a             binary
*.mid             binary
*.midi            binary
*.mp3             binary
*.ogg             binary
*.ra              binary

## VIDEO
*.3gpp            binary
*.3gp             binary
*.as              binary
*.asf             binary
*.asx             binary
*.fla             binary
*.flv             binary
*.m4v             binary
*.mng             binary
*.mov             binary
*.mp4             binary
*.mpeg            binary
*.mpg             binary
*.swc             binary
*.swf             binary
*.webm            binary

## ARCHIVES
*.7z              binary
*.gz              binary
*.rar             binary
*.tar             binary
*.zip             binary

## FONTS
*.ttf             binary
*.eot             binary
*.otf             binary
*.woff            binary
*.woff2           binary

# Executables
*.exe             binary
*.pyc             binary

# Text files where line endings should be preserved
*.patch           -text

#
# Exclude files from exporting
#

.gitattributes    export-ignore
.gitignore        export-ignore
.gitkeep          export-ignore


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: true
contact_links:
  - name: Create new issue
    url: https://arco.design/issue-helper?repo=arco-design-vue
    about: Please use the following link to create a new issue.


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
  Thanks so much for your PR and contribution.

  Before submitting, please make sure to follow the Pull Request Guidelines: https://github.com/arco-design/arco-design-vue/blob/main/CONTRIBUTING.md
-->

<!-- Put an `x` in "[ ]" to check a box) -->

## Types of changes

<!-- What types of changes does this PR introduce -->
<!-- Only support choose one type, if there are multiple types, you can add the `Type` column in the Changelog. -->

- [ ] New feature
- [ ] Bug fix
- [ ] Enhancement
- [ ] Component style change
- [ ] Typescript definition change
- [ ] Documentation change
- [ ] Coding style change
- [ ] Refactoring
- [ ] Test cases
- [ ] Continuous integration
- [ ] Breaking change
- [ ] Others

## Background and context

<!-- Explain what problem does the PR solve -->
<!-- Link to related open issues if applicable -->

## Solution

<!-- Describe how the problem is fixed in detail -->

## How is the change tested?

<!-- Unit tests should be added/updated for bug fixes and new features, if applicable -->
<!-- Please describe how you tested the change. E.g. Creating/updating unit tests or attaching a screenshot of how it works with your change -->

## Changelog

| Component | Changelog(CN) | Changelog(EN) | Related issues |
| --------- | ------------- | ------------- | -------------- |
|           |               |               |                |

<!-- If there are multiple types, you can add the `Type` column in the Changelog, the value of the column is the same as `Types of changes` -->

## Checklist:

- [ ] Test suite passes (`npm run test`)
- [ ] Provide changelog for relevant changes (e.g. bug fixes and new features) if applicable.
- [ ] Changes are submitted to the appropriate branch (e.g. features should be submitted to `feature` branch and others
  should be submitted to `main` branch)

## Other information

<!-- Please describe what other information that should be taken care of. E.g. describe the impact if introduce a breaking change -->


================================================
FILE: .github/workflows/deploy-site-preview.yml
================================================
name: deploy-site-preview
on:
  pull_request:
    types: [opened, synchronize, reopened]
  workflow_dispatch:

jobs:
  deploy-preview:
    permissions:
      actions: read
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v4

      - name: Setup pnpm
        uses: pnpm/action-setup@v4

      - name: Setup node
        uses: actions/setup-node@v4
        with:
          node-version: 18
          cache: 'pnpm'

      - name: Get pnpm store directory
        id: pnpm-cache
        run: |
          echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT

      - uses: actions/cache@v4
        name: Setup pnpm cache
        with:
          path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
          restore-keys: |
            ${{ runner.os }}-pnpm-store-

      - name: Install deps
        run: pnpm i

      - run: pnpm run init

      - name: build site
        run: NODE_OPTIONS=--max-old-space-size=8192 AssetsPublicPath=/ pnpm run build:site

      - name: netlify install
        run: pnpm add netlify-cli -D

      - name: get PreviewID
        run: |
          if ${{ github.event_name == 'pull_request' }}; then
            echo "PreviewID=${{ github.event.number }}" >> $GITHUB_ENV
          else
            echo "PreviewID=main" >> $GITHUB_ENV
          fi

      - name: netlify deploy
        env:
          NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
          NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
        run: netlify deploy --auth $NETLIFY_AUTH_TOKEN --site $NETLIFY_SITE_ID  --dir=packages/arco-vue-docs/dist --alias=pr-preview-${{ env.PreviewID }}

  add-pr-comment:
    runs-on: ubuntu-latest
    needs: deploy-preview
    if: github.event_name == 'pull_request'
    steps:
      - name: PR Comment
        uses: mshick/add-pr-comment@v2
        env:
          PR_NUMBER: ${{ github.event.number }}
        with:
          # Message to comment
          message: |
            [📚 📚 Site Preview: https://pr-preview-${{ env.PR_NUMBER }}--arco-design-vue.netlify.app](https://pr-preview-${{ env.PR_NUMBER }}--arco-design-vue.netlify.app)

  image-test:
    runs-on: ubuntu-latest
    needs: deploy-preview
    steps:
      - name: checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 2

      - name: Setup pnpm
        uses: pnpm/action-setup@v4

      - name: Setup node
        uses: actions/setup-node@v4
        with:
          node-version: 18

      - name: Get pnpm store directory
        id: pnpm-cache
        run: |
          echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT

      - uses: actions/cache@v4
        name: Setup pnpm cache
        with:
          path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
          restore-keys: |
            ${{ runner.os }}-pnpm-store-

      - run: pnpm i

      - run: pnpm run init

      - name: get PreviewID
        run: |
          if ${{ github.event_name == 'pull_request' }}; then
            echo "PreviewID=${{ github.event.number }}" >> $GITHUB_ENV
          else
            echo "PreviewID=main" >> $GITHUB_ENV
          fi

      - name: gen screenshots
        run: pnpm run test:screenshot --domain=https://pr-preview-${{ env.PreviewID }}--arco-design-vue.netlify.app

      - name: upload screenshots to argos-cli
        run: npx @argos-ci/cli upload ./packages/web-vue/__screenshots__


================================================
FILE: .github/workflows/issue-duplicate.yml
================================================
name: Issue Mark Duplicate

on:
  issue_comment:
    types: [created, edited]

jobs:
  mark-duplicate:
    runs-on: ubuntu-latest
    steps:
      - name: mark-duplicate
        uses: actions-cool/issues-helper@v2
        with:
          actions: 'mark-duplicate'
          token: ${{ secrets.GITHUB_TOKEN }}
          duplicate-labels: "🔄 Duplicate"
          close-issue: true


================================================
FILE: .github/workflows/issue-labeled.yml
================================================
name: Issue Labeled

on:
  issues:
    types: [labeled]

permissions:
  contents: read

jobs:
  issue-labeled:
    permissions:
      issues: write
      pull-requests: write
    runs-on: ubuntu-latest
    steps:
      - name: PR Welcome
        if: github.event.label.name == '❤️ PR Welcome' || github.event.label.name == '🙏 Help wanted'
        uses: actions-cool/issues-helper@v3
        with:
          actions: 'create-comment'
          token: ${{ secrets.GITHUB_TOKEN }}
          issue-number: ${{ github.event.issue.number }}
          body: |
            我们完全同意该提议/反馈,欢迎直接在此仓库创建 Pull Request 来解决这个问题。贡献前请务必阅读[贡献指南](https://github.com/arco-design/arco-design-vue/blob/main/CONTRIBUTING.zh-CN.md),Pull Request 时根据需改动内容填写[预设模板](https://github.com/arco-design/arco-design-vue/blob/main/.github/PULL_REQUEST_TEMPLATE.md),我们会尽快进行 Review,感谢您的贡献!

            We agree with this suggestion/feedback and welcome to create a Pull Request in this repository to help address the issue. Before contributing, please make sure to read the [Contributing Guide](https://github.com/arco-design/arco-design-vue/blob/main/CONTRIBUTING.md). When submitting a Pull Request, kindly use the appropriate [PR template](https://github.com/arco-design/arco-design-vue/blob/main/.github/PULL_REQUEST_TEMPLATE.md) based on the changes you’re making. We’ll review it as soon as possible. Thank you for your contribution!

      - name: Need more info
        if: github.event.label.name == '📄 Need more info'
        uses: actions-cool/issues-helper@v3
        with:
          actions: 'create-comment'
          token: ${{ secrets.GITHUB_TOKEN }}
          issue-number: ${{ github.event.issue.number }}
          body: |
            你好 @${{ github.event.issue.user.login }},我们需要你提供更多的信息或复现链接以便于我们帮你排查定位问题。7 天内未跟进此 issue 将会被自动关闭。

            Hello @${{ github.event.issue.user.login }}, we need more information or a reproducible link from you to help us investigate and pinpoint the issue. If there is no follow-up within 7 days, this issue will be automatically closed.

      - name: Invalid
        if: github.event.label.name == '🙅 Invalid'
        uses: actions-cool/issues-helper@v3
        with:
          actions: 'create-comment,close-issue'
          token: ${{ secrets.GITHUB_TOKEN }}
          issue-number: ${{ github.event.issue.number }}
          body: |
            你好 @${{ github.event.issue.user.login }}, 您的 Issue 已被标记为无效而自动关闭,原因可能如下:

            - 不符合我们的格式要求、可能缺少足够的上下文或关键信息,无法有效解决问题。
            - 非 bug 反馈和需求讨论(如询问如何使用等问题)。
            - 它可能是已有 Issue 的重复项。请在提交新的 Issue 之前检查现有的 Issue。

            可点击加入[Arco Design 飞书用户群](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=0c2qaa71-ed40-40e7-9389-9f3e182011a5)询问,感谢您的理解与配合!

            <img src="https://github.com/user-attachments/assets/65abfd92-38a4-4d34-ad3e-59b9031ca7c3" height="200" />


================================================
FILE: .github/workflows/issue-manager.yml
================================================
name: Issue Manager

on:
  schedule:
    - cron: "0 0 * * *"

permissions:
  contents: read

jobs:
  issue-close:
    permissions:
      issues: write
      pull-requests: write
    runs-on: ubuntu-latest
    if: ${{ github.repository_owner == 'arco-design' }}
    steps:
      - name: Needs more info
        uses: actions-cool/issues-helper@v3
        with:
          actions: 'close-issues'
          labels: '📄 Need more info'
          inactive-day: 7
          body: |
            由于该 issue 被标记为需要更多信息,却 7 天未收到回应。现关闭 issue,若有任何问题,可评论回复或点击加入[Arco Design 飞书用户群](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=0c2qaa71-ed40-40e7-9389-9f3e182011a5)询问。

            This issue has been marked as needing more information, but there hasn’t been a response for 7 days, so we’re closing it for now. If you have any questions, feel free to comment here or join the [Arco Design Feishu user group](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=0c2qaa71-ed40-40e7-9389-9f3e182011a5) to ask for help.

            <img src="https://github.com/user-attachments/assets/65abfd92-38a4-4d34-ad3e-59b9031ca7c3" height="200" />

  check-inactive:
    permissions:
      issues: write
      pull-requests: write
    runs-on: ubuntu-latest
    if: ${{ github.repository_owner == 'arco-design' }}
    steps:
      - name: check-inactive
        uses: actions-cool/issues-helper@v3
        with:
          actions: 'check-inactive'
          inactive-label: '💤 Inactive'
          inactive-day: 30



================================================
FILE: .github/workflows/issue-remove-inactive.yml
================================================
name: Issue Remove Inactive

on:
  issues:
    types: [edited]
  issue_comment:
    types: [created, edited]

permissions:
  contents: read

jobs:
  issue-remove-inactive:
    permissions:
      issues: write
      pull-requests: write
    runs-on: ubuntu-latest
    steps:
      - name: remove inactive
        if: github.event.issue.state == 'open' && github.actor == github.event.issue.user.login
        uses: actions-cool/issues-helper@v3
        with:
          actions: 'remove-labels'
          issue-number: ${{ github.event.issue.number }}
          labels: '💤 Inactive, 📄 Need more info'


================================================
FILE: .github/workflows/pr_check.yml
================================================
name: pr_check
on:
  pull_request:
    types: [ opened, synchronize, reopened ]

jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup pnpm
        uses: pnpm/action-setup@v4

      - name: Setup node
        uses: actions/setup-node@v4
        with:
          node-version: 18
          cache: 'pnpm'

      - name: Get pnpm store directory
        id: pnpm-cache
        run: |
          echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT

      - uses: actions/cache@v4
        name: Setup pnpm cache
        with:
          path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
          key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
          restore-keys: |
            ${{ runner.os }}-pnpm-store-

      - run: pnpm i --frozen-lockfile

      - run: pnpm run init

      - name: mock time
        uses: szenius/set-timezone@v1.0
        with:
          timezoneLinux: 'Asia/Singapore'
          timezoneMacos: 'Asia/Singapore'
          timezoneWindows: 'Singapore Standard Time'

      - name: run test
        run: pnpm run test


================================================
FILE: .github/workflows/release.yml
================================================
name: auto-release
on: create
jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v2

      - name: Get the version
        id: get_version
        run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}

      - name: create-release
        if: github.event.ref_type == 'tag'
        uses: arco-design/arco-auto-release@main
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          changelogPaths: 'packages/web-vue/CHANGELOG.md,packages/web-vue/CHANGELOG.zh-CN.md'
          tagName: ${{ steps.get_version.outputs.VERSION }}


================================================
FILE: .gitignore
================================================
.idea/
# .vscode/

node_modules/
storybook-static/
**/.DS_Store

package-lock.json
lerna-debug.log
npm-debug.log
pnpm-debug.log

package-lock.json
yarn.lock


================================================
FILE: .husky/commit-msg
================================================
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

pnpm exec commitlint --edit $1


================================================
FILE: .husky/pre-commit
================================================
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

pnpm -r run lint-staged


================================================
FILE: .npmrc
================================================
shell-emulator=true
# 提升依赖项
shamefully-hoist=true


================================================
FILE: .nvmrc
================================================
v18


================================================
FILE: .prettierrc.js
================================================
module.exports = {
  tabWidth: 2,
  semi: true,
  printWidth: 80,
  singleQuote: true,
  quoteProps: 'consistent',
  endOfLine: 'auto',
  htmlWhitespaceSensitivity: 'strict',
};


================================================
FILE: .vscode/settings.json
================================================
{
  "eslint.workingDirectories": [{
    "pattern": "./packages/*/"
  }]
}


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment include:

- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

- The use of sexualized language or imagery and unwelcome sexual attention or advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

## Scope

This Code of Conduct applies within all project spaces, and it also applies when an individual is representing the project or its community in public spaces. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at pengjiyuan@bytendance.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq

================================================
FILE: CONTRIBUTING.md
================================================

> English | [简体中文](./CONTRIBUTING.zh-CN.md)
# Contributing

Thank you for taking your time to contribute and make this project better! Here are some guidelines to help you get started. Please make sure to take a moment and read through them before submitting your contributions.

## Code of Conduct

This project is governed by the [Contributor Covenant Code of Conduct](./CODE_OF_CONDUCT.md). By participating, you are expected to adhere to it.

## Open Development

All work happens directly on GitHub. Both core team members and external contributors send pull requests which go through the same review process.

## Semantic Versioning

This project follows semantic versioning. We release patch versions for bug fixes or other changes that do not change the behavior of the API, minor versions for new features that are backward-compatible, and major versions for any breaking changes.

Every significant change is documented in the changelog file.

## Reporting Issues

We use [Github issues](https://github.com/arco-design/arco-design-vue/issues) for bug reports and feature requests. Before reporting an issue, please make sure you have searched for similar [issues](https://github.com/arco-design/arco-design-vue/issues) as they may have been already answered or being fixed. A new issue should be submitted via [issue helper](https://arco.design/issue-helper?repo=arco-design-vue). For bug reporting, please include the minimum code that can be used to reproduce the problem. For feature request, please specify what changes you want and what behavior you expect.

## Sending a pull request
This project uses [pnpm](https://pnpm.io/) for package management. Please install Yarn before development.

### Contribution Process

- **Claim an Issue**: Create an issue on GitHub and claim it (or directly claim an existing issue) to let others know you are working on it, preventing duplicate efforts.
- **Development**: After preparing for development, proceed with bug fixes or feature implementation.
- **Add Unit Tests**: Write unit tests for your code changes and ensure all test cases pass, aiming for reasonable test coverage.
- **Update Snapshots**: If your changes affect the component’s DOM structure, class names, or add/remove demos, update the snapshots accordingly.
- **Generate Documentation**: If the component API is modified, run `pnpm run docgen` to regenerate the documentation.
- **Submit a Pull Request**

### Development

1. Fork [this repository](https://github.com/arco-design/arco-design-vue) and create a branch from `main`.
   - For new features, submit a pull request to the `feature` branch.
   - For other changes, submit to the `main` branch.

```bash
git clone git@github.com:arco-design/arco-design-vue.git
```

2. Install the dependencies of each package in `workspaces`.

```bash
pnpm install
```

3. Initialize the project.

```bash
pnpm run init
```

4. Start and preview the site.

```bash
pnpm run start
```

```bash
# Start Storybook (optional, as debugging can also be done on the official website)
pnpm run storybook
```

5. Make changes to the codebase. If applicable, ensure that you have written the corresponding tests.
6. Make sure all tests pass after running `pnpm run test`.
7. Commit your changes, adhering to the [Commit Guidelines](#commit-guidelines).
8. Open a new pull request, [referencing corresponding issues](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword) if available.


## Commit Guidelines

Commit messages are required to follow the [conventional-changelog standard](https://www.conventionalcommits.org/en/v1.0.0/):

```bash
<type>[optional scope]: <description>

[optional body]

[optional footer(s)]
```

### Commit types

The following is a list of commit types:

- feat: A new feature or functionality
- fix: A bug fix
- docs: Documentation only changes
- style: Code formatting or component style changes
- refactor: Code changes that neither fixes a bug nor adds a feature.
- perf: Improve performance.
- test: Add missing or correct existing tests.
- chore: Other commits that don’t modify src or test files.


## Arco-Vue Repository Structure

This repository is managed by pnpm workspace and includes the following packages:

1. `web-vue`: UI component library
2. `vue-site`: Component documentation site
3. `arco-vue-scripts`: Component scripts
4. `arco-vue-md-loader`: Webpack loader for markdown parsing
5. `arco-vue-site-nav`: Navigation bar of documentation site (using React materials)

### Web-Vue Component Directory

> components/componentName

```
├── README.zh-CN.md (Note:Don't edit this file, it's generated by script)
├── README.en-US.md (Note:Don't edit this file, it's generated by script)
├── TEMPLATE.md (Template used to generate README file)
├── __test__
│   ├── __snapshots__
│   │   └── demo.test.js.snap (Snapshot)
│   ├── demo.test.ts (Snapshot test)
│   └── index.test.ts (Unit test)
├── __demo__ (Demos for each component)
│   ├── basic.md
│   └── advanced.md
├── index.tsx(Component export)
└── style
    └── index.less(Component style)
    └── index.ts (Component style entry)
```

Please note that if you make changes that will affect README (e.g. API changes), make sure to run `npm run docgen` to update README of the component.

For scripts related to the component library, please run under the `web-vue` directory.

## License

By contributing your code to the repository, you agree to license your contribution under the [MIT license](./LICENSE).


================================================
FILE: CONTRIBUTING.zh-CN.md
================================================

> [English](./CONTRIBUTING.md) | 简体中文

# 贡献指南

感谢你的宝贵时间。你的贡献将使这个项目变得更好!在提交贡献之前,请务必花点时间阅读下面的入门指南。

## 行为准则

该项目有一份 [行为准则](./CODE_OF_CONDUCT.md),希望参与项目的贡献者都能严格遵守。

## 透明的开发

所有工作都直接透明地在 GitHub 上进行。核心团队成员和外部贡献者的 pull requests 都需要经过相同的 review 流程。

## 语义化版本

该项目遵循语义化版本。我们对重要的漏洞修复发布修订号,对新特性或不重要的变更发布次版本号,对重大且不兼容的变更发布主版本号。

每个重大更改都将记录在 changelog 中。

## 报告 Issues

我们使用 [Github issues](https://github.com/arco-design/arco-design-vue/issues) 进行 bug 报告和新 feature 建议。在报告 bug 之前,请确保已经搜索过类似的 [问题](https://github.com/arco-design/arco-design-vue/issues),因为它们可能已经得到解答或正在被修复。新问题应通过 [问题助手](https://arco.design/issue-helper?repo=arco-design-vue) 提交。对于 bug 报告,请包含可用于重现问题的代码。对于新 feature 建议,请指出你想要的更改以及期望的行为。

## 提交 Pull Request

本项目使用 [pnpm](https://pnpm.io/zh/) 进行多包管理,请在开发前准备好开发环境。

### 共建流程
- 认领 issue: 在 github 建立 issue 并认领(或直接认领已有 issue),告知大家自己正在修复,避免重复工作。
- 项目开发:在完成开发前准备后,进行 bug 修复或功能开发。
- 添加单测:针对代码变动添加单元测试,确认测试用例通过,尽量保证一定的测试覆盖率。
- 更新快照:如果涉及到组件 dom 层级变动,类名增删或新增/删除了 Demo,快照需要重新生成更新。
- 文档生成:组件 API 存在调整时需执行 `pnpm run docgen` 重新生成文档。
- 提交 PR

### 开发

1. Fork [此仓库](https://github.com/arco-design/arco-design-vue),从 `main` 创建分支。新功能实现请发 pull request 到 `feature` 分支。其他更改发到 `main` 分支。

```bash
git clone git@github.com:arco-design/arco-design-vue.git
```

2. 安装 `workspaces` 中各个包的依赖。

```bash
pnpm install
```

3. 初始化项目

```bash
pnpm run init
```

4. 启动和预览站点

```bash
pnpm run start
```

```bash
# 启动 storybook 。 这里启动不启动都可以,官网也可以调试组件
pnpm run storybook
```

5. 对代码库进行更改。如果适用的话,请确保写了相应的测试。
6. 确认执行 `pnpm run test` 后所有的测试都是通过的。
7. 提交 git commit, 请同时遵守 [Commit 规范](#commit-指南)。
8. 提交 pull request, 如果有对应的 issue,请进行[关联](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword)。

## Commit 指南

Commit messages 请遵循[conventional-changelog 标准](https://www.conventionalcommits.org/en/v1.0.0/):

```bash
<类型>[可选 范围]: <描述>

[可选 正文]

[可选 脚注]
```

### Commit 类型

以下是 commit 类型列表:

- feat: 新特性或功能
- fix: 缺陷修复
- docs: 文档更新
- style: 代码风格或者组件样式更新
- refactor: 代码重构,不引入新功能和缺陷修复
- perf: 性能优化
- test: 单元测试
- chore: 其他不修改 src 或测试文件的提交

## Web-Vue 项目结构

本仓库多包管理,包括以下packages:

1. `web-vue`: Vue组件库
2. `vue-site`: Vue组件库文档站
3. `arco-vue-scripts`: Vue组件库脚本
4. `arco-vue-md-loader`: Vue组件库中markdown文档的webpack loader
5. `arco-vue-site-nav`: Vue组件库文档站的顶部导航栏(使用React物料)

### Web-Vue 组件目录

> components/componentName

```
├── README.zh-CN.md (注意:不要编辑这个文件,它是由脚本自动生成的)
├── README.en-US.md (注意:不要编辑这个文件,它是由脚本自动生成的)
├── TEMPLATE.md (用于生成 README 文件的模板)
├── __test__
│   ├── __snapshots__
│   │   └── demo.test.js.snap
│   ├── demo.test.ts (快照测试)
│   └── index.test.ts (单元测试)
├── __demo__ (组件演示)
│   ├── basic.md
│   └── advanced.md
├── index.tsx(组件导出)
└── style
    └── index.less(组件样式)
    └── index.ts (组件样式导出)
```

请注意: 如果进行了会影响 README 的变更(例如 API 变更),请确保运行 `pnpm run docgen` 来更新组件的 README。

组件库的相关操作在`web-vue`目录下操作.

## License

[MIT 协议](./LICENSE).


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2021 Bytedance, Inc. and its affiliates.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

================================================
FILE: README.md
================================================
<div align="center">
  <a href="https://arco.design" target="_blank">
    <img alt="Arco Design Logo" width="200" src="https://avatars.githubusercontent.com/u/64576149?s=200&v=4"/>
  </a>
</div>
<div align="center">
  <h1>Arco Design</h1>
</div>

<div align="center">

A comprehensive Vue UI components library based on the [Arco Design](https://arco.design/) system.

[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/arco-design/arco-design-vue/blob/main/LICENSE)

</div>

<div align="center">

English | [简体中文](./README.zh-CN.md)

</div>

# Features

## Comprehensive

With more than 60 crafted components that you can use out of the box.

## Customizable theme

Extensive theme tokens can be customized to build your own theme. Two ways of customization are supported:

* [With less-loader](https://arco.design/vue/docs/theme)
* [Design Lab](https://arco.design/themes) - Recommended!

## TypeScript friendly

All components are written in TypeScript so it's type friendly.

# Installation

Available as an [npm package](https://www.npmjs.com/package/@arco-design/web-vue)

```bash
// with npm
npm install @arco-design/web-vue

// with yarn
yarn add @arco-design/web-vue

// with pnpm
pnpm add @arco-design/web-vue
```

# Examples

```typescript
import { createApp } from 'vue'
import ArcoVue from '@arco-design/web-vue';
import App from './App.vue';
import '@arco-design/web-vue/dist/arco.css';

const app = createApp(App);
app.use(ArcoVue);
app.mount('#app');
```

# Useful Links

* [Documentation website](https://arco.design/)
* [Dark mode](https://arco.design/vue/docs/dark)
* [Theme customization](https://arco.design/vue/docs/theme)
* [Figma component library](https://www.figma.com/file/FVu1DydEeXvJqXrkOb90Oi/ArcoDesign%E7%BB%84%E4%BB%B6%E8%AE%BE%E8%AE%A1_2.0?node-id=5472%3A308)
* [Awesome Arco](https://github.com/arco-design/awesome-arco)

# Ecosystems

| Project               | Description                                             |
| --------------------- | ------------------------------------------------------- |
| [React Component Library] | A comprehensive React UI components library based on the Arco Design system |
| [Design Lab] | A platform to create and manage your themes with ease. |
| [Material Market] | A platform that provides massive high-quality customized materials to greatly boost development efficiency. |
| [Icon Box] | One-stop platform to manage your icons. |
| [Arco Pro] | A solution to quickly building applications from scratch. |

[React Component Library]: https://arco.design/react/docs/start

[Design Lab]: https://arco.design/themes

[Material Market]: https://arco.design/material

[Icon Box]: https://arco.design/iconbox

[Arco Pro]: https://arco.design/pro/

# Contributing

Developers interested in contributing should read the [Code of Conduct](./CODE_OF_CONDUCT.md) and
the [Contributing Guide](./CONTRIBUTING.md).

Thank you to all the people who already contributed to ArcoDesign!

<a href="https://github.com/arco-design/arco-design-vue/graphs/contributors"><img src="https://contrib.rocks/image?repo=arco-design/arco-design-vue" /></a>

# License

Ths project is [MIT licensed](./LICENSE).


================================================
FILE: README.zh-CN.md
================================================
<div align="center">
  <a href="https://arco.design" target="_blank">
    <img alt="Arco Design Logo" width="200" src="https://avatars.githubusercontent.com/u/64576149?s=200&v=4"/>
  </a>
</div>

<div align="center">
  <h1>Arco Design</h1>
</div>

<div align="center">

基于 [Arco Design](https://arco.design/) 的 Vue UI 组件库。

[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/arco-design/arco-design-vue/blob/main/LICENSE)

</div>

<div align="center">

[English](./README.md) | 简体中文

</div>

# 特性

## 全面

60多个开箱即用的高质量组件, 可以覆盖绝大部份的业务场景。

## 主题配置

海量的样式 tokens, 支持全局以及组件级别的主题配置。有以下2种方式可以定制主题:

* [Less-loader](https://arco.design/vue/docs/theme)
* [风格配置平台](https://arco.design/themes) - 推荐!

## TypeScript 友好

所有组件都是用 TypeScript 编写的,所以天然的类型友好。

# 安装

[npm package](https://www.npmjs.com/package/@arco-design/web-vue)

```bash
// npm
npm install @arco-design/web-vue

// yarn
yarn add @arco-design/web-vue

// pnpm
pnpm add @arco-design/web-vue
```

# 例子

```typescript
import { createApp } from 'vue'
import ArcoVue from '@arco-design/web-vue';
import App from './App.vue';
import '@arco-design/web-vue/dist/arco.css';

const app = createApp(App);
app.use(ArcoVue);
app.mount('#app');
```

# 相关链接

* [官网](https://arco.design/)
* [暗黑模式](https://arco.design/vue/docs/dark)
* [主题配置](https://arco.design/vue/docs/theme)
* [Figma 设计资源](https://www.figma.com/file/FVu1DydEeXvJqXrkOb90Oi/ArcoDesign%E7%BB%84%E4%BB%B6%E8%AE%BE%E8%AE%A1_2.0?node-id=5472%3A308)
* [Awesome Arco](https://github.com/arco-design/awesome-arco)

# 生态

| 项目               | 介绍                                             |
| --------------------- | ------------------------------------------------------- |
| [React 组件库] | 基于 [Arco Design](https://arco.design/) 的 React UI 组件库。 |
| [风格配置平台] | 精确到组件级的主题视觉配置平台 |
| [物料平台] | 丰富可共享的业务定制物料,让效率突破猛进 |
| [图标平台] | 一站式图标管理平台 |
| [Arco Pro] | 快速构建中后台的前端解决方案 |

[React 组件库]: https://arco.design/react/docs/start
[风格配置平台]: https://arco.design/themes
[物料平台]: https://arco.design/material
[图标平台]: https://arco.design/iconbox
[Arco Pro]: https://arco.design/pro/

# 参与贡献

贡献之前请先阅读 [行为准则](./CODE_OF_CONDUCT.md) 和 [贡献指南](./CONTRIBUTING.zh-CN.md)。

感谢所有为 ArcoDesign 做过贡献的人!

<a href="https://github.com/arco-design/arco-design-vue/graphs/contributors"><img src="https://contrib.rocks/image?repo=arco-design/arco-design-vue" /></a>

# License

[MIT 协议](./LICENSE)


================================================
FILE: commitlint.config.js
================================================
module.exports = {
  extends: ['@commitlint/config-conventional'],
  rules: {
    'subject-case': [0],
    'type-enum': [
      2,
      'always',
      [
        'build',
        'chore',
        'ci',
        'docs',
        'feat',
        'fix',
        'enhance',
        'refactor',
        'revert',
        'style',
        'test',
      ],
    ],
  },
};


================================================
FILE: package.json
================================================
{
  "name": "arco-design-vue-monorepo",
  "description": "Arco Design Vue 2.0 Monorepo",
  "private": true,
  "scripts": {
    "postinstall": "husky install",
    "init": "pnpm -F @arco-design/arco-changelog -F @arco-design/vite-plugin-arco-vue-docs -F @arco-design/arco-vue-scripts run build && pnpm i && pnpm -F @arco-design/web-vue run init",
    "start": "pnpm --filter @arco-design/arco-vue-docs run start",
    "build:site": "pnpm --filter @arco-design/arco-vue-docs run build",
    "test:screenshot": "pnpm --filter @arco-design/web-vue run test:screenshot",
    "build:component": "pnpm --filter @arco-design/web-vue run build",
    "docgen": "pnpm --filter @arco-design/web-vue run docgen",
    "clean": "pnpm -r exec rimraf dist node_modules",
    "test": "pnpm --filter @arco-design/web-vue run test",
    "storybook": "pnpm --filter @arco-design/web-vue-storybook run storybook"
  },
  "packageManager": "pnpm@9.5.0",
  "workspaces": [
    "packages/*"
  ],
  "author": "ArcoDesign Team",
  "license": "MIT",
  "devDependencies": {
    "@commitlint/cli": "^11.0.0",
    "@commitlint/config-conventional": "^12.1.4",
    "@typescript-eslint/eslint-plugin": "^4.33.0",
    "@typescript-eslint/parser": "^4.33.0",
    "eslint": "^7.32.0",
    "eslint-config-airbnb-base": "^14.2.1",
    "eslint-config-prettier": "^8.10.0",
    "eslint-import-resolver-typescript": "^2.7.1",
    "eslint-plugin-import": "^2.31.0",
    "eslint-plugin-prettier": "^3.4.1",
    "eslint-plugin-vue": "^7.20.0",
    "husky": "^7.0.4",
    "lint-staged": "^10.5.4",
    "prettier": "^2.8.8",
    "rimraf": "^6.0.1",
    "stylelint": "^13.13.1",
    "stylelint-config-prettier": "^8.0.2",
    "stylelint-config-rational-order": "^0.1.2",
    "stylelint-config-standard": "^20.0.0",
    "stylelint-order": "^4.1.0",
    "typescript": "^4.9.5"
  },
  "pnpm": {
    "peerDependencyRules": {
      "ignoreMissing": [
        "react-dom"
      ]
    }
  }
}


================================================
FILE: packages/arco-changelog/.eslintignore
================================================
node_modules/*
dist/*
/*.json
/*.js


================================================
FILE: packages/arco-changelog/.eslintrc.js
================================================
module.exports = {
  parser: '@typescript-eslint/parser',
  parserOptions: {
    sourceType: 'module',
    ecmaVersion: 2020,
  },
  env: {
    node: true,
  },
  plugins: ['@typescript-eslint'],
  extends: [
    // Airbnb JavaScript Style Guide https://github.com/airbnb/javascript
    'airbnb-base',
    'plugin:@typescript-eslint/recommended',
    'plugin:import/typescript',
    'plugin:prettier/recommended',
  ],
  settings: {
    'import/resolver': {
      typescript: {
        project: './tsconfig.json',
      },
    },
  },
  rules: {
    'prettier/prettier': 1,
    '@typescript-eslint/no-explicit-any': 0,
    '@typescript-eslint/explicit-module-boundary-types': 0,
    '@typescript-eslint/no-non-null-assertion': 0,
    '@typescript-eslint/no-empty-function': 1,
    '@typescript-eslint/ban-ts-comment': 0,
    'import/extensions': [
      'error',
      'ignorePackages',
      { js: 'never', jsx: 'never', ts: 'never', tsx: 'never' },
    ],
    'import/no-extraneous-dependencies': 0,
    'import/no-unresolved': [2, { caseSensitive: false }],
    'import/prefer-default-export': 0,
    'no-underscore-dangle': 0,
    'no-nested-ternary': 0,
    'no-shadow': 0,
    'prefer-template': 1,
    'no-param-reassign': 0,
    'no-plusplus': 0,
    'no-use-before-define': 0,
    'no-restricted-syntax': 0,
    'no-empty': [2, { allowEmptyCatch: true }],
    'no-bitwise': 0,
    'no-return-assign': 0,
    'no-unused-expressions': [
      'error',
      { allowShortCircuit: true, allowTernary: true },
    ],
    'no-continue': 0,
  },
};


================================================
FILE: packages/arco-changelog/.gitignore
================================================
.idea/
.vscode/

dist/
node_modules/
**/.DS_Store


================================================
FILE: packages/arco-changelog/.prettierrc.js
================================================
module.exports = {
  tabWidth: 2,
  semi: true,
  printWidth: 80,
  singleQuote: true,
  quoteProps: 'consistent',
  endOfLine: 'auto',
  htmlWhitespaceSensitivity: 'strict',
};


================================================
FILE: packages/arco-changelog/README.md
================================================
# Arco Changelog

A simple github changelog generator

## Installation

```
npm install @arco-design/arco-changelog
```

## Command

+ `arco-changelog`

生成日志文件

+ `arco-changelog template`
  + `--gitlab` 生成 Gitlab 项目的 MR 模板

在项目中创建 Github 的 Pull Request 模板

## Usage

1. Create a 'changelog.config.js' file and fill in the necessary config. You can find all configuration properties below

```js
// changelog.config.js

module.exports = {
  repo: 'arco-design/arco-design-vue'
}

```

2. run `arco-changelog`

## Config Options

### repo

+ Type: string
+ Required

用于获取 Pull Request 的项目地址

### type

+ Type: String
+ Default: "github"

指定项目仓库的类型

### merged

+ Type: boolean
+ Default: true

是否只获取合并过的 PR

### requestConfig

+ Type: Function `(config: {
  repo: string;
  version: string;
  merged: boolean;
  }) => AxiosRequestConfig`
+ Default: undefined

自定义请求信息,返回结果可参考 [axios](https://github.com/axios/axios#request-config)

### emitFiles

+ Type: Function `(changelog: Changelog) => EmitFile[]`
+ Default: undefined

生成更新日志文件的方法

changelog 工具使用 [nunjucks](https://mozilla.github.io/nunjucks/) 作为模板引擎。返回数据中的 `template` 字段指定模板文件的位置,`data` 字段指定模板数据

### filename

+ Type: Object `{ zh: string; en: string }`
+ Default: undefined

指定默认配置生成日志文件的文件名,分为中英文文件。例如:`{ zh: 'changelog/CHANGELOG.zh.md'; en: 'changelog/CHANGELOG.en.md' }`

```ts
export interface EmitFile {
  file: string;
  template: string;
  data: Record<string, any>;
}

export interface Changelog {
  version: string;
  date: string;
  list: ChangelogData[];
}

export interface ChangelogData {
  type: string;
  pr: PullRequest;
  issues?: string[];

  [key: string]: any;
}

export interface PullRequest {
  id: number;
  url: string;
}
```

### typeDict

+ Type: Object
+ Default: typeDict

更新日志的类型字典

```js
const typeDict = {
  feature: 'New feature',
  bugfix: 'Bug fix',
  docs: 'Documentation change',
  refactor: 'Refactoring',
  style: 'Component style change',
  enhancement: 'Enhancement',
  test: 'Test cases',
  ci: 'Continuous integration',
  typescript: 'Typescript definition change',
  attention: 'Breaking change',
}
```

### keyDict

+ Type: Object
+ Default: keyDict

更新日志数据的 key 所对应的表格标题字典

```js
const keyDict = {
  type: 'Type',
  component: 'Component',
  changelogZh: 'Changelog(CN)',
  changelogEn: 'Changelog(EN)',
  issues: 'Related issues',
}
```


================================================
FILE: packages/arco-changelog/copy-template.js
================================================
#!/usr/bin/env node

const fs = require('fs-extra');

fs.copySync('src/vue/template.en-US.njk', 'dist/vue/template.en-US.njk', {
  overwrite: true,
});
fs.copySync('src/vue/template.zh-CN.njk', 'dist/vue/template.zh-CN.njk', {
  overwrite: true,
});
fs.copySync(
  'src/default/template.en-US.njk',
  'dist/default/template.en-US.njk',
  {
    overwrite: true,
  }
);
fs.copySync(
  'src/default/template.zh-CN.njk',
  'dist/default/template.zh-CN.njk',
  {
    overwrite: true,
  }
);
fs.copySync('src/.github', 'dist/.github', {
  overwrite: true,
});
fs.copySync('src/.gitlab', 'dist/.gitlab', {
  overwrite: true,
});


================================================
FILE: packages/arco-changelog/package.json
================================================
{
  "name": "@arco-design/arco-changelog",
  "version": "0.3.2",
  "description": "Arco Changelog",
  "author": "ArcoDesign Team",
  "license": "MIT",
  "main": "dist/index.js",
  "bin": "dist/cmd.js",
  "files": [
    "dist"
  ],
  "repository": {
    "type": "git",
    "url": "git+https://github.com/arco-design/arco-design-vue.git"
  },
  "scripts": {
    "dev": "tsc --watch",
    "build": "tsc && node copy-template.js",
    "lint-staged": "npx lint-staged"
  },
  "lint-staged": {
    "*.{js,ts,jsx,tsx}": [
      "eslint --fix",
      "prettier --write"
    ]
  },
  "devDependencies": {
    "@types/fs-extra": "^9.0.13",
    "@types/inquirer": "^7.3.3",
    "@types/nunjucks": "^3.2.6",
    "@typescript-eslint/eslint-plugin": "^4.33.0",
    "@typescript-eslint/parser": "^4.33.0",
    "eslint": "^7.32.0",
    "eslint-config-airbnb-base": "^14.2.1",
    "eslint-config-prettier": "^8.10.0",
    "eslint-import-resolver-typescript": "^2.7.1",
    "eslint-plugin-import": "^2.31.0",
    "eslint-plugin-prettier": "^3.4.1",
    "prettier": "^2.8.8",
    "ts-node": "^10.9.2"
  },
  "dependencies": {
    "axios": "^0.21.4",
    "chalk": "^4.1.2",
    "commander": "^7.2.0",
    "comment-parser": "^1.4.1",
    "fast-glob": "^3.3.3",
    "fs-extra": "^9.1.0",
    "glob": "^7.2.3",
    "inquirer": "^8.2.6",
    "moment": "^2.30.1",
    "nunjucks": "^3.2.4",
    "ora": "^5.4.1",
    "typescript": "^4.9.5"
  }
}


================================================
FILE: packages/arco-changelog/src/.github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
  Thanks so much for your PR and contribution.

  Before submitting, please make sure to follow the Pull Request Guidelines: https://github.com/arco-design/arco-design-vue/blob/main/CONTRIBUTING.md
-->

<!-- Put an `x` in "[ ]" to check a box) -->

## Type of changes

<!-- What type of changes does this PR introduce -->
<!-- Only support choose one type, if there are multiple types, you can add the `Type` column in the Changelog. -->

- [ ] New feature
- [ ] Bug fix
- [ ] Enhancement
- [ ] Component style change
- [ ] Typescript definition change
- [ ] Documentation change
- [ ] Coding style change
- [ ] Refactoring
- [ ] Test cases
- [ ] Continuous integration
- [ ] Breaking change
- [ ] Others

## Background and context

<!-- Explain what problem does the PR solve -->
<!-- Link to related open issues if applicable -->

## Solution

<!-- Describe how the problem is fixed in detail -->

## How is the change tested?

<!-- Unit tests should be added/updated for bug fixes and new features, if applicable -->
<!-- Please describe how you tested the change. E.g. Creating/updating unit tests or attaching a screenshot of how it works with your change -->

## Changelog

| Component | Changelog(CN) | Changelog(EN) | Related issues |
| --------- | ------------- | ------------- | -------------- |
|           |               |               |                |

<!-- If there are multiple types, you can add the `Type` column in the Changelog, the value of the column is the same as `Types of changes` -->

## Checklist:

- [ ] Test suite passes (`npm run test`)
- [ ] Provide changelog for relevant changes (e.g. bug fixes and new features) if applicable.
- [ ] Changes are submitted to the appropriate branch (e.g. features should be submitted to `feature` branch and others
  should be submitted to `main` branch)

## Other information

<!-- Please describe what other information that should be taken care of. E.g. describe the impact if introduce a breaking change -->


================================================
FILE: packages/arco-changelog/src/.gitlab/merge_request_templates/CHANGELOG.md
================================================
<!--
  Thanks so much for your PR and contribution.

  Before submitting, please make sure to follow the Pull Request Guidelines: https://github.com/arco-design/arco-design-vue/blob/main/CONTRIBUTING.md
-->

<!-- Put an `x` in "[ ]" to check a box) -->

## Type of changes

<!-- What type of changes does this PR introduce -->
<!-- Only support choose one type, if there are multiple types, you can add the `Type` column in the Changelog. -->

- [ ] New feature
- [ ] Bug fix
- [ ] Enhancement
- [ ] Component style change
- [ ] Typescript definition change
- [ ] Documentation change
- [ ] Coding style change
- [ ] Refactoring
- [ ] Test cases
- [ ] Continuous integration
- [ ] Breaking change
- [ ] Others

## Background and context

<!-- Explain what problem does the PR solve -->
<!-- Link to related open issues if applicable -->

## Solution

<!-- Describe how the problem is fixed in detail -->

## How is the change tested?

<!-- Unit tests should be added/updated for bug fixes and new features, if applicable -->
<!-- Please describe how you tested the change. E.g. Creating/updating unit tests or attaching a screenshot of how it works with your change -->

## Changelog

| Component | Changelog(CN) | Changelog(EN) | Related issues |
| --------- | ------------- | ------------- | -------------- |
|           |               |               |                |

<!-- If there are multiple types, you can add the `Type` column in the Changelog, the value of the column is the same as `Types of changes` -->

## Checklist:

- [ ] Test suite passes (`npm run test`)
- [ ] Provide changelog for relevant changes (e.g. bug fixes and new features) if applicable.
- [ ] Changes are submitted to the appropriate branch (e.g. features should be submitted to `feature` branch and others
  should be submitted to `main` branch)

## Other information

<!-- Please describe what other information that should be taken care of. E.g. describe the impact if introduce a breaking change -->


================================================
FILE: packages/arco-changelog/src/changelog.ts
================================================
import marked, { Tokens } from 'marked';
import { invertKeyValues } from './utils/invert';
import { ChangelogData } from './interface';

export const getChangelogList = (
  content: string,
  config: {
    pr: any;
    typeDict: Record<string, string>;
    keyDict: Record<string, string>;
  }
) => {
  const _content = content.replace(/\r\n/g, '\n');
  const _typeDict = invertKeyValues(config.typeDict);
  const _keyDict = invertKeyValues(config.keyDict);

  const typeRule = new RegExp(
    '##\\s*Types? of changes.+?\\[\\s*[xX]\\s*]\\s*(.+?)(?:\\n|$)',
    'si'
  );
  const typeMatch = _content.match(typeRule)?.[1].trim();
  const defaultType = typeMatch && _typeDict[typeMatch];

  const rule = new RegExp('##\\s*Changelog\\n(.+?)(?:##|$)', 'si');
  const match = _content.match(rule)?.[1];
  if (!match) return undefined;
  const tokens = marked.lexer(match);
  const table = tokens.filter(
    (token) => token.type === 'table'
  )[0] as Tokens.Table;
  if (!table) return undefined;

  const keys = table.header.map((header) => {
    return _keyDict[header];
  });

  return table.cells.reduce((list, cur) => {
    const data = cur.reduce(
      (data, value, index) => {
        const key = keys[index];
        if (key === 'type') {
          data[key] = _typeDict[value];
        } else if (key === 'issues') {
          data[key] = value
            .split(',')
            .map((item) => item.match(/#\d+/)?.[0])
            .filter((item) => Boolean(item)) as string[];
        } else {
          data[key] = value;
        }

        return data;
      },
      {
        type: defaultType,
        pr: config.pr,
      } as ChangelogData
    );

    list.push(data);
    return list;
  }, [] as ChangelogData[]);
};


================================================
FILE: packages/arco-changelog/src/cmd.ts
================================================
#!/usr/bin/env node

import { Command } from 'commander';
import fs from 'fs-extra';
import path from 'path';
import { changelog } from './index';
import { run } from './copy-github';

const program = new Command();

const packageContent = fs.readFileSync(
  path.resolve(__dirname, '../package.json'),
  'utf8'
);
const packageData: any = JSON.parse(packageContent);

program
  .name('arco-changelog')
  .version(packageData.version)
  .action(async () => {
    await changelog();
  })
  .command('template')
  .option('--gitlab', 'generate gitlab template')
  .action(async ({ gitlab }) => {
    run({ gitlab });
  });

program.parse(process.argv);


================================================
FILE: packages/arco-changelog/src/config.ts
================================================
import path from 'path';
import fs from 'fs-extra';
import { ChangelogConfig } from './interface';
import { getEmitFiles } from './default/emit-files';
import vueConfig from './vue/vue.config';

export const typeDict = {
  feature: 'New feature',
  bugfix: 'Bug fix',
  docs: 'Documentation change',
  refactor: 'Refactoring',
  style: 'Component style change',
  enhancement: 'Enhancement',
  test: 'Test cases',
  ci: 'Continuous integration',
  typescript: 'Typescript definition change',
  attention: 'Breaking change',
};

export const keyDict = {
  type: 'Type',
  component: 'Component',
  changelogZh: 'Changelog(CN)',
  changelogEn: 'Changelog(EN)',
  issues: 'Related issues',
};

const defaultConfig: ChangelogConfig = {
  repo: '',
  merged: true,
  type: 'github',
  emitFiles: getEmitFiles(),
  typeDict,
  keyDict,
};

export const getConfig = async (): Promise<Required<ChangelogConfig>> => {
  const config = { ...defaultConfig } as Required<ChangelogConfig>;
  const filename = path.resolve(process.cwd(), 'changelog.config.js');
  try {
    await fs.access(filename);
    const data = (await import(filename)).default as ChangelogConfig;
    if (data.arcoComponent === 'vue') {
      Object.assign(config, vueConfig);
    }
    Object.assign(config, data);
    if (data.filename) {
      config.emitFiles = getEmitFiles({ filename: data.filename });
    }
  } catch (err) {
    console.log(err);
  }
  return config;
};


================================================
FILE: packages/arco-changelog/src/copy-github.js
================================================
import path from 'path';
import fs from 'fs-extra';

export const run = ({ gitlab }) => {
  if (gitlab) {
    fs.copySync(
      path.resolve(__dirname, '.gitlab'),
      path.resolve(process.cwd(), '.gitlab'),
      {
        overwrite: true,
      }
    );
  } else {
    fs.copySync(
      path.resolve(__dirname, '.github'),
      path.resolve(process.cwd(), '.github'),
      {
        overwrite: true,
      }
    );
  }
};


================================================
FILE: packages/arco-changelog/src/default/emit-files.ts
================================================
import path from 'path';
import { Changelog, EmitFile } from '../interface';

export const getEmitFiles = (config?: any) => {
  return (changelog: Changelog): EmitFile[] => {
    const allCN: Record<string, any> = {};
    const addEN: Record<string, any> = {};

    for (const item of changelog.list) {
      const contentCN = `${item.changelogZh} ([#${item.pr.id}](${item.pr.url}))`;
      const contentEN = `${item.changelogEn} ([#${item.pr.id}](${item.pr.url}))`;
      addAll({ ...item, content: contentCN }, allCN);
      addAll({ ...item, content: contentEN }, addEN);
    }

    return [
      {
        file: config?.filename?.zh ?? 'CHANGELOG.zh-CN.md',
        template: path.resolve(__dirname, 'template.zh-CN.njk'),
        data: { version: changelog.version, date: changelog.date, ...allCN },
      },
      {
        file: config?.filename?.en ?? 'CHANGELOG.md',
        template: path.resolve(__dirname, 'template.en-US.njk'),
        data: { version: changelog.version, date: changelog.date, ...addEN },
      },
    ];
  };
};

const addAll = (data: any, changelog: any) => {
  if (!changelog[data.type]) {
    changelog[data.type] = [];
  }
  if (!data.component || data.component === 'common') {
    changelog[data.type].push(data.content);
  } else {
    changelog[data.type].push(`**${data.component}:** ${data.content}`);
  }
};


================================================
FILE: packages/arco-changelog/src/default/template.en-US.njk
================================================
## {{ version }}

`{{ date }}`

{% if attention -%}
  ### ⚠️ Important Attention

  {% for content in attention -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if feature -%}
  ### 🆕 Feature

  {% for content in feature -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if bugfix -%}
  ### 🐛 BugFix

  {% for content in bugfix -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if enhancement -%}
  ### 💎 Enhancement

  {% for content in enhancement -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if style -%}
  ### 💅 Style

  {% for content in style -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if typescript -%}
  ### 🆎 TypeScript

  {% for content in typescript -%}
    - {{ content }}
  {% endfor %}

{% endif %}


================================================
FILE: packages/arco-changelog/src/default/template.zh-CN.njk
================================================
## {{ version }}

`{{ date }}`

{% if attention -%}
  ### ⚠️ 重点注意

  {% for content in attention -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if feature -%}
  ### 🆕 新增功能

  {% for content in feature -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if bugfix -%}
  ### 🐛 问题修复

  {% for content in bugfix -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if enhancement -%}
  ### 💎 功能优化

  {% for content in enhancement -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if style -%}
  ### 💅 样式更新

  {% for content in style -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if typescript -%}
  ### 🆎 类型修正

  {% for content in typescript -%}
    - {{ content }}
  {% endfor %}

{% endif %}


================================================
FILE: packages/arco-changelog/src/index.ts
================================================
import fs from 'fs-extra';
import inquirer from 'inquirer';
import axios from 'axios';
import moment from 'moment';
import { configure } from 'nunjucks';
import { getConfig } from './config';
import { getPackage } from './utils/config';
import { Changelog, EmitFile } from './interface';
import { getChangelogList } from './changelog';

const nunjucksEnv = configure(__dirname, {
  autoescape: false,
  trimBlocks: true,
  lstripBlocks: true,
});

const appendChangelog = async (emit: EmitFile) => {
  const { file, template, data } = emit;
  const content = nunjucksEnv.render(template, data);

  try {
    await fs.access(file);
    const origin = await fs.readFile(file, 'utf-8');
    const match = origin.match(/^(```yaml\n.*?\n```\n\n)?(.*)$/s);
    if (match) {
      await fs.writeFile(file, `${match[1] ?? ''}${content}\n${match[2]}`);
    }
  } catch {
    // eslint-disable-next-line
    await fs.writeFile(file, '```yaml\nchangelog: true\n```\n\n' + content);
  }
};

const getRequestURL = (config: {
  repo: string;
  version: string;
  merged?: boolean;
}) => {
  let url = `https://api.github.com/search/issues?accept=application/vnd.github.v3+json&q=repo:${config.repo}+is:pr+milestone:${config.version}`;

  if (config.merged) {
    url += '+is:merged';
  }

  return url;
};

export const changelog = async () => {
  const config = await getConfig();
  const packageData = await getPackage();

  let version = (packageData.version ?? '') as string;

  const answer = await inquirer.prompt({
    type: 'input',
    name: 'version',
    message: 'Please input the version',
    default: version,
    validate(input: any) {
      return /\d+\.\d+\.\d+(-beta\.\d+)?/.test(input);
    },
  });

  version = answer.version;

  const res = await axios.request(
    config.requestConfig?.({
      repo: config.repo,
      version,
      merged: config.merged,
    }) ?? {
      method: 'get',
      url: getRequestURL({
        repo: config.repo,
        version,
        merged: config.merged,
      }),
    }
  );

  if (res.status === 200) {
    const { data } = res;
    const changelog: Changelog = {
      version,
      date: moment().format('YYYY-MM-DD'),
      list: [],
    };

    if (config.type === 'gitlab') {
      for (const item of data ?? []) {
        if (item.description) {
          const list = getChangelogList(item.description, {
            pr: {
              id: item.iid,
              url: item.web_url,
            },
            typeDict: config.typeDict,
            keyDict: config.keyDict,
          });
          if (list) {
            changelog.list = changelog.list.concat(list);
          }
        }
      }
    } else {
      for (const item of data?.items ?? []) {
        const list = getChangelogList(item.body, {
          pr: item,
          typeDict: config.typeDict,
          keyDict: config.keyDict,
        });
        if (list) {
          changelog.list = changelog.list.concat(list);
        }
      }
    }

    if (changelog.list.length > 0) {
      const emits = config.emitFiles(changelog);

      for (const item of emits) {
        // eslint-disable-next-line no-await-in-loop
        await appendChangelog(item);
      }
    } else {
      // eslint-disable-next-line no-console
      console.log('No update information found');
    }
  }
};


================================================
FILE: packages/arco-changelog/src/interface.ts
================================================
import { AxiosRequestConfig } from 'axios';

export interface ChangelogConfig {
  repo: string;
  merged?: boolean;
  requestConfig?: (config: {
    repo: string;
    version: string;
    merged: boolean;
  }) => AxiosRequestConfig;
  emitFiles?: (changelog: Changelog) => EmitFile[];
  typeDict?: Record<string, string>;
  type?: 'github' | 'gitlab';
  arcoComponent?: 'react' | 'vue';
  keyDict?: Record<string, string>;
  filename?: { zh: string; en: string };
}

export interface PullRequest {
  id: number;
  url: string;
}

export interface ChangelogData {
  type: string;
  pr: PullRequest;
  issues?: string[];

  [key: string]: any;
}

export interface Changelog {
  version: string;
  date: string;
  list: ChangelogData[];
}

export interface EmitFile {
  file: string;
  template: string;
  data: Record<string, any>;
}


================================================
FILE: packages/arco-changelog/src/test.md
================================================
<!--
  Thanks so much for your PR and contribution.

  Before submitting, please make sure to follow the Pull Request Guidelines: https://github.com/arco-design/arco-design-vue/blob/main/CONTRIBUTING.md
-->

<!-- Put an `x` in "[ ]" to check a box) -->

## Types of changes

<!-- What types of changes does this PR introduce -->
<!-- Only support choose one type, if there are multiple types, you can add the `Type` column in the Changelog. -->

- [x] New feature
- [ ] Bug fix
- [ ] Enhancement
- [ ] Component style change
- [ ] Typescript definition change
- [ ] Documentation change
- [ ] Coding style change
- [ ] Refactoring
- [ ] Test cases
- [ ] Continuous integration
- [ ] Breaking change
- [ ] Others

## Background and context

<!-- Explain what problem does the PR solve -->
<!-- Link to related open issues if applicable -->

## Solution

<!-- Describe how the problem is fixed in detail -->

## How is the change tested?

<!-- Unit tests should be added/updated for bug fixes and new features, if applicable -->
<!-- Please describe how you tested the change. E.g. Creating/updating unit tests or attaching a screenshot of how it works with your change -->

## Changelog

| Component | Changelog(CN) | Changelog(EN) | Related issues |
| --------- | ------------- | ------------- | -------------- |
|  upload  |    新增 `bundle-upload` 属性,支持捆绑上传    |  Added `bundle-upload` property to support bundle upload   |  Close #647  |

<!-- If there are multiple types, you can add the `Type` column in the Changelog, the value of the column is the same as `Types of changes` -->

## Checklist:

- [ ] Test suite passes (`npm run test`)
- [ ] Provide changelog for relevant changes (e.g. bug fixes and new features) if applicable.
- [ ] Changes are submitted to the appropriate branch (e.g. features should be submitted to `feature` branch and others
  should be submitted to `main` branch)

## Other information

<!-- Please describe what other information that should be taken care of. E.g. describe the impact if introduce a breaking change -->


================================================
FILE: packages/arco-changelog/src/utils/config.ts
================================================
import path from 'path';
import fs from 'fs-extra';

export const getConfig = async () => {
  const filename = path.resolve(process.cwd(), 'changelog.config.ts');
  try {
    await fs.access(filename);
    return import(filename);
  } catch {
    return {};
  }
};
let packageCache: Record<string, any>;

export const getPackage = async (): Promise<Record<string, any>> => {
  if (!packageCache) {
    const content = await fs.readFile(
      path.resolve(process.cwd(), 'package.json'),
      'utf8'
    );
    try {
      packageCache = JSON.parse(content);
    } catch {}
  }

  return packageCache ?? {};
};


================================================
FILE: packages/arco-changelog/src/utils/convert-case.ts
================================================
export const toKebabCase = (string: string): string => {
  return string.replace(/[A-Z]+/g, (match, offset) => {
    return `${offset > 0 ? '-' : ''}${match.toLocaleLowerCase()}`;
  });
};

export const toPascalCase = (string: string): string => {
  return string
    .replace(/^./, (match) => match.toLocaleUpperCase())
    .replace(/-(.)/g, (match, p1: string) => {
      return p1.toLocaleUpperCase();
    });
};


================================================
FILE: packages/arco-changelog/src/utils/invert.ts
================================================
export const invertKeyValues = (obj: Record<string, string>) => {
  return Object.keys(obj).reduce((acc, key) => {
    acc[obj[key]] = key;
    return acc;
  }, {} as Record<string, string>);
};


================================================
FILE: packages/arco-changelog/src/utils/version.ts
================================================
const getLastVersion = (content: string) => {
  const match = content.match(/## (\d+\.\d+\.\d+(-beta\.\d+)?)/);
  return match?.[1];
};

const getBetaVersions = (content: string) => {
  const matches = Array.from(
    content.matchAll(/## (\d+\.\d+\.\d+(-beta\.\d+)?)/g)
  );
  const versions = [];
  for (const item of matches) {
    if (/beta/.test(item[1])) {
      versions.push(item[1]);
    } else {
      break;
    }
  }
  return versions;
};

const getVersionNumber = (version: string): number => {
  if (!version) {
    return 0;
  }
  switch (version) {
    case 'alpha':
      return -3;
    case 'beta':
      return -2;
    case 'rc':
      return -1;
    default:
      return parseInt(version, 10);
  }
};

export const compareVersion = (v1: string, v2: string) => {
  const mainArray1 = v1.split('-');
  const mainArray2 = v2.split('-');
  // Major version
  const array1 = mainArray1[0].split('.');
  const array2 = mainArray2[0].split('.');
  const maxL = Math.max(array1.length, array2.length);
  for (let i = 0; i < maxL; i++) {
    const v1 = getVersionNumber(array1[i]);
    const v2 = getVersionNumber(array2[i]);
    if (v1 !== v2) {
      return v1 > v2 ? 1 : -1;
    }
  }

  // Beta part
  const subArray1 = (mainArray1[1] ?? '').split('.');
  const subArray2 = (mainArray2[1] ?? '').split('.');
  const maxSL = Math.max(subArray1.length, subArray2.length);
  for (let i = 0; i < maxSL; i++) {
    const v1 = getVersionNumber(subArray1[i]);
    const v2 = getVersionNumber(subArray2[i]);
    if (v1 !== v2) {
      return v1 > v2 ? 1 : -1;
    }
  }

  return 0;
};


================================================
FILE: packages/arco-changelog/src/vue/emit-files.ts
================================================
import path from 'path';
import { Changelog, EmitFile } from '../interface';

export const emitFiles = (changelog: Changelog): EmitFile[] => {
  const allCN: Record<string, any> = {};
  const addEN: Record<string, any> = {};
  const componentCN: Record<string, any> = {};
  const componentEN: Record<string, any> = {};

  for (const item of changelog.list) {
    const contentCN = `${item.changelogZh} ([#${item.pr.id}](${item.pr.url}))`;
    const contentEN = `${item.changelogEn} ([#${item.pr.id}](${item.pr.url}))`;
    addAll({ ...item, content: contentCN }, allCN);
    addAll({ ...item, content: contentEN }, addEN);
    addComponent({ ...item, content: contentCN }, componentCN);
    addComponent({ ...item, content: contentEN }, componentEN);
  }

  const emits: EmitFile[] = [
    {
      file: 'CHANGELOG.zh-CN.md',
      template: path.resolve(__dirname, 'template.zh-CN.njk'),
      data: { version: changelog.version, date: changelog.date, ...allCN },
    },
    {
      file: 'CHANGELOG.md',
      template: path.resolve(__dirname, 'template.en-US.njk'),
      data: { version: changelog.version, date: changelog.date, ...addEN },
    },
  ];

  emits.push(...getComponentEmits(componentCN, true));
  emits.push(...getComponentEmits(componentEN));

  return emits;
};

const addAll = (data: any, changelog: any) => {
  if (!changelog[data.type]) {
    changelog[data.type] = [];
  }
  if (!data.component || data.component === 'common') {
    changelog[data.type].push(data.content);
  } else {
    changelog[data.type].push(`**${data.component}:** ${data.content}`);
  }
};

const addComponent = (data: any, changelog: any) => {
  if (!data.component || data.component === 'common') {
    return;
  }
  if (!changelog[data.component]) {
    changelog[data.component] = {};
  }
  if (!changelog[data.component][data.type]) {
    changelog[data.component][data.type] = [];
  }
  changelog[data.component][data.type].push(data.content);
};

const getComponentEmits = (changelog: Record<string, any>, zh?: boolean) => {
  const emits: EmitFile[] = [];
  for (const component of Object.keys(changelog)) {
    const file =
      component === 'icon'
        ? `components/icon-component/CHANGELOG.${zh ? 'zh-CN.md' : 'md'}`
        : `components/${component}/CHANGELOG.${zh ? 'zh-CN.md' : 'md'}`;

    emits.push({
      file,
      template: path.resolve(
        __dirname,
        `template.${zh ? 'zh-CN' : 'en-US'}.njk`
      ),
      data: {
        version: changelog.version,
        date: changelog.date,
        ...changelog[component],
      },
    });
  }
  return emits;
};


================================================
FILE: packages/arco-changelog/src/vue/template.en-US.njk
================================================
## {{ version }}

`{{ date }}`

{% if attention -%}
  ### ⚠️ Important Attention

  {% for content in attention -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if feature -%}
  ### 🆕 Feature

  {% for content in feature -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if bugfix -%}
  ### 🐛 BugFix

  {% for content in bugfix -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if enhancement -%}
  ### 💎 Enhancement

  {% for content in enhancement -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if style -%}
  ### 💅 Style

  {% for content in style -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if typescript -%}
  ### 🆎 TypeScript

  {% for content in typescript -%}
    - {{ content }}
  {% endfor %}

{% endif %}


================================================
FILE: packages/arco-changelog/src/vue/template.zh-CN.njk
================================================
## {{ version }}

`{{ date }}`

{% if attention -%}
  ### ⚠️ 重点注意

  {% for content in attention -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if feature -%}
  ### 🆕 新增功能

  {% for content in feature -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if bugfix -%}
  ### 🐛 问题修复

  {% for content in bugfix -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if enhancement -%}
  ### 💎 功能优化

  {% for content in enhancement -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if style -%}
  ### 💅 样式更新

  {% for content in style -%}
    - {{ content }}
  {% endfor %}

{% endif %}
{% if typescript -%}
  ### 🆎 类型修正

  {% for content in typescript -%}
    - {{ content }}
  {% endfor %}

{% endif %}


================================================
FILE: packages/arco-changelog/src/vue/vue.config.ts
================================================
import { emitFiles } from './emit-files';

export default {
  repo: 'arco-design/arco-design-vue',
  merged: true,
  emitFiles,
};


================================================
FILE: packages/arco-changelog/tsconfig.json
================================================
{
  "compilerOptions": {
    "sourceMap": true,
    "outDir": "dist",
    "module": "CommonJS",
    "target": "ES2015",
    "allowJs": true,
    "moduleResolution": "node",
    "baseUrl": ".",
    "strict": true,
    "resolveJsonModule": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "lib": [
      "DOM",
      "ES2020"
    ]
  },
  "include": [
    "src"
  ]
}


================================================
FILE: packages/arco-vue-docs/.eslintignore
================================================
/*.json
/*.js


================================================
FILE: packages/arco-vue-docs/.eslintrc.js
================================================
module.exports = {
  parser: 'vue-eslint-parser',
  parserOptions: {
    // Parser that checks the content of the <script> tag
    parser: '@typescript-eslint/parser',
    sourceType: 'module',
    ecmaVersion: 2020,
    ecmaFeatures: {
      jsx: true,
    },
  },
  env: {
    browser: true,
    node: true,
  },
  plugins: ['@typescript-eslint'],
  extends: [
    // Airbnb JavaScript Style Guide https://github.com/airbnb/javascript
    'airbnb-base',
    'plugin:@typescript-eslint/recommended',
    'plugin:import/typescript',
    'plugin:vue/vue3-recommended',
    'plugin:prettier/recommended',
  ],
  settings: {
    'import/resolver': {
      typescript: {
        project: './tsconfig.json',
      },
    },
  },
  rules: {
    'prettier/prettier': 1,
    'vue/require-default-prop': 0,
    'vue/singleline-html-element-content-newline': 0,
    'vue/max-attributes-per-line': 0,
    'vue/html-self-closing': 0,
    '@typescript-eslint/no-explicit-any': 0,
    '@typescript-eslint/explicit-module-boundary-types': 0,
    '@typescript-eslint/no-non-null-assertion': 0,
    '@typescript-eslint/ban-ts-comment': 0,
    'import/extensions': [
      'error',
      'ignorePackages',
      { js: 'never', jsx: 'never', ts: 'never', tsx: 'never' },
    ],
    'import/no-extraneous-dependencies': 0,
    'import/no-unresolved': [2, { caseSensitive: false }],
    'import/no-named-as-default': 0,
    'import/prefer-default-export': 0,
    'no-underscore-dangle': 0,
    'no-nested-ternary': 0,
    'no-shadow': 0,
    'prefer-template': 1,
    'no-param-reassign': 0,
    'no-plusplus': 0,
    'no-use-before-define': 0,
    'no-restricted-syntax': 0,
    'no-empty': [2, { allowEmptyCatch: true }],
    'no-bitwise': 0,
    'no-return-assign': 0,
    'no-unused-expressions': [
      'error',
      { allowShortCircuit: true, allowTernary: true },
    ],
    'no-continue': 0,
    '@typescript-eslint/no-unused-vars': 0,
    '@typescript-eslint/no-empty-function': 0,
  },
};


================================================
FILE: packages/arco-vue-docs/.gitignore
================================================
.idea/
.vscode/

node_modules/
**/.DS_Store

dist/

index.zip


================================================
FILE: packages/arco-vue-docs/.prettierrc.js
================================================
module.exports = {
  tabWidth: 2,
  semi: true,
  printWidth: 80,
  singleQuote: true,
  quoteProps: 'consistent',
  endOfLine: 'auto',
  htmlWhitespaceSensitivity: 'strict',
};


================================================
FILE: packages/arco-vue-docs/.stylelintrc.js
================================================
module.exports = {
  extends: [
    'stylelint-config-standard',
    'stylelint-config-rational-order',
    'stylelint-config-prettier',
  ],
  defaultSeverity: 'warning',
  plugins: ['stylelint-order'],
  rules: {
    'at-rule-no-unknown': [
      true,
      {
        ignoreAtRules: ['plugin'],
      },
    ],
    'rule-empty-line-before': [
      'always',
      {
        except: ['after-single-line-comment', 'first-nested'],
      },
    ],
    'selector-pseudo-element-no-unknown': [
      true,
      {
        ignorePseudoElements: ['v-deep'],
      },
    ],
  },
};


================================================
FILE: packages/arco-vue-docs/README.md
================================================
# Arco Design Vue Document Station

The site for Arco Design Vue.

[Official website](https://arco.design/vue)

## Developing

1. Install dependencies

```
yarn # or npm install
```

2. Start local development environment

```
npm run start
```


================================================
FILE: packages/arco-vue-docs/app.vue
================================================
<template>
  <div class="arco-vue-site">
    <div
      :class="[
        'arco-vue-body',
        { 'arco-vue-body-has-notice': showGlobalNotice },
      ]"
    >
      <a-alert
        v-if="showGlobalNotice"
        class="site-global-notice"
        :show-icon="false"
        closable
        banner
        @close="handleCloseGlobalNotice"
      >
        <a
          href="https://bytedance.feishu.cn/docx/doxcnHMY3EFM4N7GK8H2no1mZve"
          rel="Arco Global Notice"
          target="_blank"
        >
          <span class="content">
            Arco Toolbox Figma 插件工具全新发布,有奖公测中~
          </span>
          <b>
            查看更多
            <icon-right />
          </b>
        </a>
      </a-alert>
      <aside-nav :show="showNav" @button-click="toggleNav" />
      <router-view />
    </div>
    <ThemeBox />
    <a-back-top :style="{ right: '70px', bottom: '80px' }">
      <a-button class="site-backtop-btn" shape="circle" size="large">
        <icon-up />
      </a-button>
    </a-back-top>
  </div>
</template>

<script lang="ts">
import {
  defineComponent,
  provide,
  reactive,
  ref,
  watch,
  onMounted,
  onBeforeUnmount,
} from 'vue';
import { useRoute } from 'vue-router';
import { PageDurationTracker, teaLog } from '@arco-materials/site-utils';
import { collapseInjectionKey } from './context';
import AsideNav from './components/aside-nav/index.vue';
import { getLocalStorage, setLocalStorage } from './utils/local-storage';
import ThemeBox from './components/theme-box/index.vue';
// import Locale from '@arco-design/web-vue/es/locale';
// import { getLocalStorage, setLocalStorage } from './utils/local-storage';

export default defineComponent({
  name: 'App',
  components: {
    AsideNav,
    ThemeBox,
  },
  props: {
    theme: String,
    language: String,
  },
  emits: ['themeChange', 'languageChange'],
  setup() {
    const showNav = ref(true);
    const showAnchor = ref(true);
    const showGlobalNotice = ref(
      getLocalStorage('arco-global-notice') !== '23-hide'
    );

    const handleCloseGlobalNotice = () => {
      showGlobalNotice.value = false;
      setLocalStorage('arco-global-notice', '23-hide');
    };

    const toggleNav = () => {
      showNav.value = !showNav.value;
    };

    const toggleAnchor = () => {
      showAnchor.value = !showAnchor.value;
    };

    provide(
      collapseInjectionKey,
      reactive({
        showNav,
        showAnchor,
        toggleNav,
        toggleAnchor,
      })
    );

    // provide('toggleTheme', toggleTheme);
    // provide('lang', lang);
    // locale.value = lang.value;
    // provide('changeLanguage', changeLanguage);

    const route = useRoute();
    let tracker: PageDurationTracker;
    let originPath = route.path;

    onMounted(() => {
      tracker = new PageDurationTracker((params) => {
        teaLog('page_view', { ...params, url_path: originPath });
      });
    });

    onBeforeUnmount(() => {
      tracker = null;
    });

    watch(
      () => route.path,
      (path, prePath) => {
        originPath = prePath;
        tracker.handleReport();
      }
    );

    return {
      showNav,
      toggleNav,
      showGlobalNotice,
      handleCloseGlobalNotice,
    };
  },
});
</script>

<style lang="less" src="./style/index.less" />


================================================
FILE: packages/arco-vue-docs/components/anchor-head/index.vue
================================================
<template>
  <component :is="`h${level}`" :id="href" class="anchor-head">
    <a class="anchor-link" :href="`#${href}`" @click.prevent="handleClickCopy">
      <icon-link />
    </a>
    <slot />
  </component>
</template>

<script lang="ts">
import { defineComponent } from 'vue';
import { Message } from '@web-vue/components/index';
import copy from '../../utils/clipboard';

export default defineComponent({
  name: 'AnchorHead',
  props: {
    level: [Number, String],
    href: String,
  },
  setup() {
    const handleClickCopy = (e: MouseEvent) => {
      const copyLink = (e.currentTarget as HTMLAnchorElement).href;
      if (copyLink) {
        copy(copyLink)
          .then(() => {
            Message.success('Copy Success!');
          })
          .catch(() => {
            Message.error('Copy Failed! Please try again.');
          });
      }
    };

    return {
      handleClickCopy,
    };
  },
});
</script>

<style scoped lang="less" src="./style.less" />


================================================
FILE: packages/arco-vue-docs/components/anchor-head/style.less
================================================
.anchor-head {
  position: relative;

  &:hover {
    .anchor-link {
      opacity: 1;
    }
  }

  .anchor-link {
    position: absolute;
    top: 50%;
    left: -22px;
    display: inline-block;
    padding-right: 6px;
    color: var(--color-text-3);
    font-size: 16px;
    transform: translateY(-50%);
    opacity: 0;

    &:hover {
      color: rgb(var(--primary-6));
    }
  }
}


================================================
FILE: packages/arco-vue-docs/components/article/context.ts
================================================
import { InjectionKey } from 'vue';
import { AnchorData } from '../aside-anchor/interface';

interface ArticleContext {
  anchors: AnchorData[];
  addAnchor: (data: AnchorData) => void;
  removeAnchor: (href: string) => void;
}

export const articleInjectionKey: InjectionKey<ArticleContext> =
  Symbol('ArcoArticle');


================================================
FILE: packages/arco-vue-docs/components/article/index.vue
================================================
<template>
  <aside-anchor
    v-if="anchors && anchors.length > 0"
    :show="collapseCtx.showAnchor"
    :anchors="anchors"
    @button-click="collapseCtx.toggleAnchor"
  />
  <main :class="cls">
    <article class="arco-vue-article">
      <div class="article-header">
        <div v-if="meta" class="article-meta">
          <span class="article-type">{{ meta.type }}</span>
          <template v-if="meta.category">
            <span class="separator">/</span>
            <span class="article-category">{{ meta.category }}</span>
          </template>
        </div>
        <h1 class="article-title">{{ title }}</h1>
        <div v-if="description" class="article-description">
          {{ description }}
        </div>
        <ChangelogBox v-if="changelog" :changelog="changelog" />
      </div>
      <div class="article-content">
        <slot />
      </div>
    </article>
    <arco-footer />
  </main>
</template>

<script lang="ts">
import {
  computed,
  defineComponent,
  inject,
  PropType,
  provide,
  reactive,
} from 'vue';
import { useI18n } from 'vue-i18n';
import AsideAnchor from '../aside-anchor/index.vue';
import ArcoFooter from '../footer/index.vue';
import { CollapseContext, collapseInjectionKey } from '../../context';
import { articleInjectionKey } from './context';
import { AnchorData } from '../aside-anchor/interface';
import ChangelogBox from '../changelog-box/index.vue';

export default defineComponent({
  name: 'ArcoArticle',
  components: {
    ChangelogBox,
    AsideAnchor,
    ArcoFooter,
  },
  props: {
    title: String,
    description: String,
    changelog: Array,
    meta: Object as PropType<{ category: string; type: string }>,
  },
  setup(props) {
    const { locale } = useI18n();
    const collapseCtx = inject<CollapseContext>(collapseInjectionKey);

    const getMessage = (zh: string, en: string) => {
      return locale.value === 'zh-CN' ? zh : en;
    };

    const anchors = reactive<AnchorData[]>([]);

    provide(
      articleInjectionKey,
      reactive({
        anchors,
        addAnchor: (data: AnchorData) => {
          anchors.push(data);
        },
        removeAnchor: (href: string) => {},
      })
    );

    const cls = computed(() => [
      'arco-vue-main',
      {
        'aside-nav-show': collapseCtx?.showNav,
        'aside-anchor-show': anchors.length > 0 && collapseCtx?.showAnchor,
      },
    ]);

    return {
      cls,
      locale,
      collapseCtx,
      getMessage,
      anchors,
    };
  },
});
</script>

<style scoped lang="less" src="./style.less" />


================================================
FILE: packages/arco-vue-docs/components/article/style.less
================================================
@import '../../../web-vue/components/style/theme/css-variables.less';

.arco-vue-main {
  margin-left: 13px;
  transition: margin-left 200ms, margin-right 200ms;

  &.aside-nav-show {
    margin-left: 261px;
  }

  &.aside-anchor-show {
    margin-right: 181px;
    border-right-color: var(--color-bg-1);
  }
}

.arco-vue-article {
  max-width: 985px;
  min-height: 800px;
  margin: 0 auto;
  padding: 0 56px 100px;

  .article-header {
    position: relative;
    padding: 36px 0;
    border-bottom: 1px solid var(--color-border);
  }

  .article-meta {
    .separator {
      padding: 0 5px;
      color: var(--color-text-4);
    }

    .article-category {
      color: var(--color-text-1);
      font-weight: 500;
    }
  }

  .article-title {
    margin: 20px 0 12px;
    color: var(--color-text-1);
    font-weight: 500;
    font-size: @font-size-display-1;
  }

  .article-description {
    color: var(--color-text-2);
    line-height: 20px;

    &:not(:last-child) {
      margin-right: 200px;
    }
  }

  .article-content {
    &:deep(img) {
      max-width: 100%;
    }
  }

  //& :deep(a) {
  //  color: rgb(var(--arcoblue-6));
  //  text-decoration: none;
  //}
  & :deep(h3) {
    margin-top: 24px;
    line-height: 24px;
  }

  & :deep(code) {
    padding: 2px 8px;
    color: var(--color-text-2);
    background-color: var(--color-neutral-2);
  }

  & :deep(.code-content) {
    box-sizing: border-box;
    margin: 0;
    padding: 28px 48px;
    background-color: var(--color-neutral-2);
    border-radius: 4px;

    code {
      padding: 0;
      white-space: pre-wrap;
    }
  }

  & :deep(.component-api-table) {
    .arco-table-td:nth-child(1) {
      white-space: nowrap;
    }

    .arco-table-td:nth-child(3) {
      code {
        color: rgb(var(--primary-6));
        font-size: 12px;
        background: unset;
      }
    }

    .arco-table-td:nth-child(4) {
      min-width: 100px;

      code {
        color: rgb(var(--primary-6));
        font-size: 12px;
        background: unset;
      }
    }

    .arco-table-td:nth-child(5) {
      width: 10%;
      max-width: 100px;
    }
  }
}


================================================
FILE: packages/arco-vue-docs/components/aside-anchor/index.vue
================================================
<template>
  <aside :class="cls">
    <div class="aside-top">
      <a-button
        :class="buttonCls"
        shape="circle"
        size="large"
        @click="$emit('buttonClick')"
      >
        <icon-right v-if="show" />
        <icon-left v-else />
      </a-button>
    </div>
    <a-anchor line-less>
      <a-anchor-link
        v-for="(item, index) in anchors"
        :key="index"
        :href="item.href"
      >
        {{ item.title }}
      </a-anchor-link>
      <a-anchor-link v-if="hasAPIAnchor" key="article-api" href="#API">
        API
      </a-anchor-link>
    </a-anchor>
  </aside>
</template>

<script lang="ts">
import { computed, defineComponent, inject, onMounted, ref } from 'vue';
import { useI18n } from 'vue-i18n';
import anchor from '@web-vue/components/anchor/anchor.vue';

export default defineComponent({
  name: 'AsideAnchor',
  props: {
    anchors: {
      type: Array,
    },
    show: {
      type: Boolean,
      default: true,
    },
  },
  emits: ['buttonClick'],
  setup(props) {
    const { locale } = useI18n();
    const hasAPIAnchor = ref(false);

    const getMessage = (zh: string, en: string) => {
      return locale.value === 'zh-CN' ? zh : en;
    };

    const cls = computed(() => [
      'arco-vue-aside',
      {
        'arco-vue-aside-collapse': !props.show,
      },
    ]);

    const buttonCls = computed(() => [
      'aside-collapse-btn',
      {
        'aside-collapse-btn-collapse': !props.show,
      },
    ]);

    onMounted(() => {
      hasAPIAnchor.value = !!document.querySelector('.article-content #API');
    });

    return {
      cls,
      buttonCls,
      hasAPIAnchor,
      getMessage,
    };
  },
});
</script>

<style scoped lang="less" src="./style.less" />


================================================
FILE: packages/arco-vue-docs/components/aside-anchor/interface.ts
================================================
export interface AnchorData {
  href: string;
  title: {
    'zh-CN': string;
    'en-US': string;
  };
}


================================================
FILE: packages/arco-vue-docs/components/aside-anchor/style.less
================================================
.arco-vue-aside {
  position: fixed;
  top: 61px;
  right: 0;
  bottom: 0;
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
  width: 180px;
  padding: 0 24px;
  background-color: var(--color-bg-1);
  border-left: 1px solid var(--color-border);
  transition: right 200ms;

  .aside-top {
    margin: 40px 0;
  }

  .aside-collapse-btn {
    position: relative;
    left: 0;
    transition: left 200ms;

    &-collapse {
      left: -52px;
      width: 28px;
      background-color: var(--color-bg-5);
      border-radius: 18px 0 0 18px;
      box-shadow: -1px 0 5px 0 rgba(0, 0, 0, 0.1);
    }
  }

  .aside-expand-btn {
    position: absolute;
    left: -28px;
    width: 28px;
    color: var(--color-text-2);
    background-color: var(--color-bg-5);
    border: 1px solid transparent;
    border-radius: 18px 0 0 18px;
    box-shadow: -1px 0 5px 0 rgb(0 0 0 / 10%);
  }

  &&-collapse {
    right: -180px;
  }
}


================================================
FILE: packages/arco-vue-docs/components/aside-nav/index.vue
================================================
<template>
  <aside
    :class="cls"
    @transitionstart="handleTranslationStart"
    @transitionend="handleTranslationEnd"
  >
    <nav class="aside-nav">
      <div class="aside-nav-header">
        <div class="type-radio-group">
          <a class="type-radio-button" href="/react/docs/start">React</a>
          <a class="type-radio-button type-radio-button-active">Vue</a>
        </div>
      </div>
      <div v-show="showNav" class="aside-nav-body">
        <template v-for="group in docsMenuList" :key="group.name">
          <div class="aside-nav-group">
            <div class="aside-nav-group-name">{{
              t(`${group.name}.name`)
            }}</div>
            <ul class="aside-nav-list">
              <router-link
                v-for="item of group.menu"
                :key="item.name"
                v-slot="{ href, navigate, isActive }"
                :to="
                  locale === 'en-US'
                    ? item.path.replace('vue/', 'vue/en-US/')
                    : item.path
                "
                custom
              >
                <li
                  :class="[
                    'aside-nav-item',
                    { 'aside-nav-item-active': isActive },
                  ]"
                >
                  <a
                    :href="
                      locale === 'en-US' ? href.replace('#', '#/en-US') : href
                    "
                    class="aside-nav-item-link"
                    @click="navigate"
                  >
                    {{ t(`${group.name}.${item.name}`) }}
                  </a>
                </li>
              </router-link>
            </ul>
          </div>
        </template>

        <div class="aside-nav-group">
          <div class="aside-nav-group-name">{{ t('component.name') }}</div>
          <div
            v-for="group of componentMenu"
            :key="group.name"
            class="aside-nav-group"
          >
            <h4 class="aside-nav-component-group-name">
              {{ t(`group.${group.name}`) }}
            </h4>
            <ul class="aside-nav-list">
              <router-link
                v-for="item of group.list"
                :key="item.name"
                v-slot="{ href, navigate, isActive }"
                :to="
                  locale === 'en-US'
                    ? item.path.replace('vue/', 'vue/en-US/')
                    : item.path
                "
                custom
              >
                <li
                  :class="[
                    'aside-nav-item',
                    { 'aside-nav-item-active': isActive },
                  ]"
                >
                  <a
                    :href="
                      locale === 'en-US' ? href.replace('#', '#/en-US') : href
                    "
                    class="aside-nav-item-link"
                    @click="navigate"
                  >
                    {{ t(`component.${item.name}`) }}
                  </a>
                </li>
              </router-link>
            </ul>
          </div>
        </div>
      </div>
    </nav>
    <a-button
      class="aside-nav-btn"
      shape="circle"
      size="mini"
      @click="$emit('buttonClick')"
    >
      <icon-left v-if="show" />
      <icon-right v-else />
    </a-button>
  </aside>
</template>

<script>
import { computed, defineComponent, ref } from 'vue';
import { useI18n } from 'vue-i18n';
import { componentMenu, docsMenuList } from '../../router';

export default defineComponent({
  name: 'AsideNav',
  props: {
    show: {
      type: Boolean,
      default: true,
    },
  },
  emits: ['buttonClick'],
  setup(props) {
    const { t, locale } = useI18n();
    const showNav = ref(true);

    const handleTranslationStart = () => {
      if (props.show) {
        showNav.value = true;
      }
    };

    const handleTranslationEnd = () => {
      if (!props.show) {
        showNav.value = false;
      }
    };

    const cls = computed(() => [
      'arco-vue-aside-left',
      {
        'arco-vue-aside-left-collapse': !props.show,
      },
    ]);

    return {
      showNav,
      componentMenu,
      docsMenuList,
      t,
      locale,
      cls,
      handleTranslationStart,
      handleTranslationEnd,
    };
  },
});
</script>

<style scoped lang="less" src="./style.less" />


================================================
FILE: packages/arco-vue-docs/components/aside-nav/style.less
================================================
.arco-vue-aside-left {
  position: fixed;
  top: 61px;
  bottom: 0;
  left: 0;
  z-index: 100;
  margin-left: 0;
  border-right: 1px solid var(--color-border);
  transition: margin-left 200ms;

  &-collapse {
    margin-left: -248px;
  }

  .aside-nav-btn {
    position: absolute;
    top: 186px;
    right: -12px;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--color-bg-5);
    border: 1px solid var(--color-fill-3);
    box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.1);
    transition: all 0.15s;

    &:hover {
      background-color: var(--color-bg-5);
      border: 1px solid var(--color-fill-3);
      transform: scale(1.1);
    }
  }
}

.aside-nav {
  display: flex;
  flex-direction: column;
  width: 260px;
  height: 100%;
  background-color: var(--color-bg-1);

  &-header {
    padding: 20px;

    .type-radio {
      &-group {
        display: flex;
        padding: 2px;
        background-color: var(--color-fill-2);
      }

      &-button {
        width: 80px;
        margin: 2px;
        padding: 0 12px;
        color: var(--color-text-2);
        font-size: 16px;
        line-height: 28px;
        text-align: center;
        text-decoration: none;
        border-radius: var(--border-radius-small);
        cursor: pointer;

        &-active {
          color: rgb(var(--primary-6));
          background-color: var(--color-bg-5);
        }

        &:hover {
          background-color: var(--color-bg-5);
        }
      }
    }
  }

  &-body {
    flex-shrink: 1;
    padding: 4px 12px;
    overflow-y: auto;

    &:hover {
      padding-right: 2px;

      &::-webkit-scrollbar {
        display: block;
      }
    }

    &::-webkit-scrollbar {
      display: none;
      width: 10px;
      background: transparent;
    }

    &::-webkit-scrollbar-thumb {
      background: var(--color-fill-3) content-box;
      border: 2px solid transparent;
      border-radius: 5px;

      &:hover {
        background-color: var(--color-fill-4);
      }
    }

    li {
      list-style: none;
    }
  }

  &-group {
    &-name {
      margin: 0 0 4px;
      padding: 0 12px;
      color: var(--color-text-1);
      font-weight: 500;
      font-size: 16px;
      line-height: 40px;
    }
  }

  &-component-group {
    &-name {
      margin: 0 0 4px;
      padding: 0 12px;
      color: var(--color-text-3);
      font-weight: 400;
      line-height: 40px;
    }
  }

  &-list {
    padding: 0;
  }

  &-item {
    margin: 0 0 4px;
    padding: 0 12px;

    .aside-nav-item-link {
      overflow: hidden;
      white-space: nowrap;
      text-overflow: ellipsis;
    }

    &-active {
      font-weight: 500;
      background-color: var(--color-fill-2) !important;

      .aside-nav-item-link {
        color: rgb(var(--arcoblue-6));
      }
    }

    &:hover {
      background-color: var(--color-fill-1);
    }

    &-link {
      display: block;
      padding-left: 20px;
      color: var(--color-text-1);
      line-height: 40px;
      text-decoration: none;
    }
  }
}


================================================
FILE: packages/arco-vue-docs/components/cell-code/index.vue
================================================
<template>
  <div :class="cls">
    <div class="cell-code-operation">
      <a-tooltip
        :content="showCode ? t('tooltip.collapse') : t('tooltip.expand')"
      >
        <a-button
          :class="[
            'cell-code-operation-btn',
            {
              ['cell-code-operation-btn-active']: showCode,
            },
          ]"
          shape="circle"
          size="small"
          @click="handleClick"
        >
          <icon-code />
        </a-button>
      </a-tooltip>
      <a-tooltip :content="t('tooltip.copy')">
        <a-button
          class="cell-code-operation-btn"
          shape="circle"
          size="small"
          @click="handleClickCopy"
        >
          <icon-copy />
        </a-button>
      </a-tooltip>
      <a-tooltip :content="t('tooltip.stackblitz')">
        <a-button
          class="cell-code-operation-btn"
          shape="circle"
          size="small"
          @click="handleClickStackblitz"
        >
          <icon-thunderbolt />
        </a-button>
      </a-tooltip>
      <a-tooltip :content="t('tooltip.codeSandbox')">
        <a-button
          class="cell-code-operation-btn"
          shape="circle"
          size="small"
          @click="handleClickCodeSandbox"
        >
          <icon-code-sandbox />
        </a-button>
      </a-tooltip>
    </div>
    <div ref="contentRef" class="cell-code-content" :style="style">
      <slot />
    </div>
  </div>
</template>

<script lang="ts">
import { computed, CSSProperties, defineComponent, onMounted, ref } from 'vue';
import { useI18n } from 'vue-i18n';
import { Message } from '@web-vue/components/index';
import copy from '../../utils/clipboard';
import { openStackblitz } from '../../utils/code-stackblitz';
import { openCodeSandbox } from '../../utils/code-sandbox';

export default defineComponent({
  name: 'CellCode',
  setup() {
    const { t } = useI18n();
    const showCode = ref(false);
    const contentRef = ref<HTMLElement>();
    const contentHeight = ref<number>(0);

    onMounted(() => {
      if (contentRef.value) {
        const { height } = contentRef.value.getBoundingClientRect();
        contentHeight.value = height;
      }
    });

    const style = computed<CSSProperties>(() => {
      if (showCode.value) {
        const height = contentRef?.value?.firstElementChild?.clientHeight;
        return { height: height ? `${height}px` : 'auto' };
      }
      return { height: 0 };
    });

    const handleClick = () => {
      showCode.value = !showCode.value;
    };

    const handleClickCopy = () => {
      if (contentRef.value?.textContent) {
        copy(contentRef.value.textContent)
          .then(() => {
            Message.success('Copy Success!');
          })
          .catch(() => {
            Message.error('Copy Failed! Please try again.');
          });
      }
    };

    const handleClickStackblitz = () => {
      if (contentRef.value?.textContent) {
        openStackblitz(contentRef.value.textContent);
      }
    };

    const handleClickCodeSandbox = () => {
      if (contentRef.value?.textContent) {
        openCodeSandbox(contentRef.value.textContent);
      }
    };

    const cls = computed(() => ['cell-code']);
    return {
      cls,
      showCode,
      t,
      handleClick,
      handleClickCopy,
      handleClickStackblitz,
      handleClickCodeSandbox,
      contentRef,
      style,
    };
  },
});
</script>

<style scoped lang="less" src="./style.less" />


================================================
FILE: packages/arco-vue-docs/components/cell-code/style.less
================================================
@import '../web-vue/components/style/theme/css-variables.less';

.cell-code {
  margin-top: 12px;
  //&&-collapse {
  //  max-height: 240px;
  //}
  &-content {
    margin-top: 16px;
    overflow: hidden;
    background-color: var(--color-fill-1);
    transition: height 200ms;
  }

  &-operation {
    display: flex;
    justify-content: flex-end;

    & &-btn {
      margin-left: 8px;
      background-color: var(--color-bg-4);
      border: 1px solid var(--color-fill-3);

      &:hover {
        color: rgb(var(--primary-6));
        border-color: rgb(var(--primary-6));
      }

      &-active {
        color: rgb(var(--gray-1));
        background-color: rgb(var(--gray-10));
        border-color: rgb(var(--gray-1));

        &:hover {
          color: rgb(var(--gray-1));
          background-color: rgb(var(--gray-10));
          border-color: rgb(var(--gray-1));
        }
      }
    }
  }
}


================================================
FILE: packages/arco-vue-docs/components/cell-demo/index.vue
================================================
<template>
  <div class="cell-demo">
    <slot />
  </div>
</template>

<script>
import { defineComponent } from 'vue';

export default defineComponent({
  name: 'CellDemo',
});
</script>

<style scoped lang="less" src="./style.less" />


================================================
FILE: packages/arco-vue-docs/components/cell-demo/style.less
================================================
.cell-demo {
  margin-top: 24px;
  padding: 48px;
  border: 1px solid var(--color-border);
  border-radius: 2px 2px 0 0;
}


================================================
FILE: packages/arco-vue-docs/components/changelog-box/index.vue
================================================
<template>
  <Button class="changelog-box-button" @click="drawerVisible = true">
    {{ t('changelogBox.changelog') }}
  </Button>
  <Drawer
    class="changelog-box"
    :visible="drawerVisible"
    :width="800"
    :title="t('changelogBox.changelog')"
    @ok="drawerVisible = false"
    @cancel="drawerVisible = false"
  >
    <div class="changelog-box-filter">
      <div class="changelog-box-filter-title">
        {{ t('changelogBox.filter') }}:
      </div>
      <Grid :cols="5" :col-gap="20">
        <GridItem>
          <Select :model-value="filterType" @change="onFilterChange">
            <Option value="version">
              {{ t('changelogBox.version') }}
            </Option>
            <Option value="date">
              {{ t('changelogBox.date') }}
            </Option>
          </Select>
        </GridItem>
        <GridItem :span="2">
          <Space v-if="filterType === 'version'" fill>
            <Select v-model="start" :options="[...versions].reverse()" />
            {{ t('changelogBox.to') }}
            <Select v-model="end" :options="versions" />
          </Space>
          <RangePicker
            v-else
            :model-value="[start, end]"
            @change="onRangePickerChange"
          />
        </GridItem>
        <GridItem :span="2">
          <Select v-model="type" multiple :max-tag-count="2">
            <Option value="feature" :tag-props="{ color: 'orangered' }">
              {{ t('changelogBox.feature') }}
            </Option>
            <Option value="bugfix" :tag-props="{ color: 'magenta' }">
              {{ t('changelogBox.bugfix') }}
            </Option>
            <Option value="enhancement" :tag-props="{ color: 'green' }">
              {{ t('changelogBox.enhancement') }}
            </Option>
            <Option value="style" :tag-props="{ color: 'purple' }">
              {{ t('changelogBox.style') }}
            </Option>
            <Option value="typescript" :tag-props="{ color: 'arcoblue' }">
              {{ t('changelogBox.typescript') }}
            </Option>
            <Option value="attention" :tag-props="{ color: 'red' }">
              {{ t('changelogBox.attention') }}
            </Option>
          </Select>
        </GridItem>
      </Grid>
    </div>
    <div class="changelog-box-content">
      <Timeline v-if="filterChangelog.length > 0" class="arco-changelog">
        <TimelineItem v-for="item of filterChangelog" :key="item.version">
          <div class="changelog-item">
            <div class="changelog-info">
              <h2 class="changelog-info-version">{{ item.version }}</h2>
              <div class="changelog-info-date">{{ item.date }}</div>
            </div>
            <div class="changelog-content">
              <ul v-if="item.extra && item.extra.length">
                <li
                  v-for="(text, index) of item.extra"
                  :key="index"
                  v-html="text"
                />
              </ul>
              <section v-for="content of item.list" :key="content.type">
                <h3 class="changelog-content-type">{{ content.typeText }}</h3>
                <ul class="changelog-content-list">
                  <li
                    v-for="(text, index) of content.list"
                    :key="index"
                    v-html="text"
                  />
                </ul>
              </section>
            </div>
          </div>
        </TimelineItem>
      </Timeline>
      <Empty v-else></Empty>
    </div>
  </Drawer>
</template>

<script lang="ts">
import { computed, defineComponent, PropType, ref } from 'vue';
import { useI18n } from 'vue-i18n';
import {
  Button,
  Drawer,
  Select,
  Timeline,
  TimelineItem,
  Option,
  Space,
  RangePicker,
  Empty,
  Grid,
  GridItem,
} from '@arco-design/web-vue';

const compareVersion = (v1: string, v2: string) => {
  const mainArray1 = v1.split('-');
  const mainArray2 = v2.split('-');

  const array1 = mainArray1[0].split('.');
  const array2 = mainArray2[0].split('.');
  for (let i = 0; i < 3; i++) {
    if (array1[i] !== array2[i]) {
      return parseInt(array1[i] ?? '0', 10) > parseInt(array2[i] ?? '0', 10)
        ? 1
        : -1;
    }
  }
  return 0;
};

export default defineComponent({
  name: 'ChangelogBox',
  components: {
    Button,
    Drawer,
    Select,
    Timeline,
    Option,
    TimelineItem,
    Grid,
    GridItem,
    Space,
    Empty,
    RangePicker,
  },
  props: {
    changelog: {
      type: Array as PropType<any[]>,
      required: true,
    },
  },
  setup(props) {
    const { t } = useI18n();
    const drawerVisible = ref(false);
    const filterType = ref('version');
    const start = ref('');
    const end = ref('');
    const type = ref([
      'feature',
      'bugfix',
      'enhancement',
      'style',
      'typescript',
      'attention',
    ]);

    const filterChangelog = computed(() => {
      return props.changelog.filter((item) => {
        if (filterType.value === 'version') {
          if (start.value && compareVersion(start.value, item.version) === 1) {
            return false;
          }
          if (end.value && compareVersion(item.version, end.value) === 1) {
            return false;
          }
        } else {
          if (start.value && item.date < start.value) {
            return false;
          }
          if (end.value && item.date > end.value) {
            return false;
          }
        }
        return true;
      });
    });

    const versions = computed(() =>
      props.changelog.map((item: any) => item.version)
    );

    const onFilterChange = (value: string) => {
      filterType.value = value;
      start.value = '';
      end.value = '';
    };

    const onRangePickerChange = (data: [string, string]) => {
      [start.value, end.value] = data;
    };

    return {
      t,
      drawerVisible,
      filterType,
      start,
      versions,
      end,
      onFilterChange,
      onRangePickerChange,
      type,
      filterChangelog,
    };
  },
});
</script>

<style scoped lang="less">
.changelog-box {
  &-button {
    position: absolute;
    bottom: 36px;
    right: 0;
  }

  &-filter {
    margin-bottom: 20px;

    &-title {
      margin-bottom: 10px;
      font-weight: 500;
    }

    :deep(.arco-space-item):first-of-type,
    :deep(.arco-space-item):last-of-type {
      flex: 1;
    }
  }

  &-content {
    padding: 0 20px;
  }
}
</style>


================================================
FILE: packages/arco-vue-docs/components/code-block/index.vue
================================================
<template>
  <section class="code-block">
    <anchor-head :level="2" :href="$attrs.id">{{ title }}</anchor-head>
    <slot name="description" />
    <slot />
  </section>
</template>

<script lang="ts">
import { defineComponent, inject } from 'vue';
import AnchorHead from '../anchor-head/index.vue';
import { articleInjectionKey } from '../article/context';

export default defineComponent({
  name: 'CodeBlock',
  components: {
    AnchorHead,
  },
  props: {
    title: String,
  },
  setup(props, { attrs }) {
    const articleCtx = inject(articleInjectionKey);

    articleCtx?.addAnchor({
      href: `#${attrs.id}`,
      title: props.title,
    });
  },
});
</script>

<style scoped lang="less" src="./style.less" />


================================================
FILE: packages/arco-vue-docs/components/code-block/style.less
================================================
.code-block {
  h2 {
    margin: 48px 0 12px;
    color: var(--color-text-1);
    font-weight: 500;
    font-size: 20px;
  }

  :deep(p) {
    line-height: 1.5;
  }
}


================================================
FILE: packages/arco-vue-docs/components/footer/index.vue
================================================
<template>
  <footer class="arco-site-footer">
    <div class="arco-site-footer-main">
      <div class="arco-site-footer-content">
        <div class="arco-site-footer-logo">
          <logo />
        </div>
        <div class="arco-site-relevant">
          <div
            v-for="(group, index) of relevant"
            :key="index"
            class="arco-site-relevant-group"
          >
            <div class="arco-site-relevant-title">
              {{ t(`footer.${group.title}`) }}
              <icon-down />
            </div>
            <ul class="arco-site-relevant-list">
              <li
                v-for="(item, itemIndex) of group.list"
                :key="itemIndex"
                class="arco-site-relevant-item"
              >
                <a v-if="item.link" :href="item.link">
                  {{ t(`footer.${item.text}`) }}
                </a>
                <span v-else @click="toBeOpen">
                  {{ t(`footer.${item.text}`) }}
                </span>
              </li>
            </ul>
          </div>
        </div>
      </div>
      <div class="arco-site-footer-bottom">
        <div class="arco-site-footer-bottom-left">
          <a class="arco-site-footer-btn" href="/">
            <span class="arco-site-footer-icon">
              <span class="arco-site-footer-icon-gray">
                <icon-arco />
              </span>
              <span class="arco-site-footer-icon-color">
                <icon-arco-color />
              </span>
            </span>
            Powered by ArcoDesign
          </a>
          <div class="arco-site-footer-copyright">
            <span>UED-火山引擎 & 架构前端 </span>
            <span>ⓒ Copyright ByteDance 2019-{{ latestYear }}</span>
          </div>
        </div>
        <div class="arco-site-footer-bottom-right">
          <a target="_blank" rel="noreferrer" href="https://beian.miit.gov.cn/">
            京ICP备19059916号-18
          </a>
        </div>
      </div>
    </div>
  </footer>
</template>

<script lang="ts">
import { defineComponent } from 'vue';
import { useI18n } from 'vue-i18n';
import { Message } from '@web-vue/components/index';
import joinChat from '../../utils/join-chart';
import IconArco from '../../assets/footer/arco.svg';
import IconArcoColor from '../../assets/footer/arco-color.svg';
import Logo from '../logo/index.vue';

export default defineComponent({
  name: 'ArcoFooter',
  components: {
    IconArco,
    IconArcoColor,
    Logo,
  },
  setup() {
    const { t } = useI18n();

    const relevant = [
      {
        title: 'design',
        list: [
          {
            text: 'spec',
            link: '/docs/spec/introduce',
          },
          {
            text: 'principle',
            link: '/docs/spec/philosophy',
          },
        ],
      },
      {
        title: 'component',
        list: [
          // {
          //   text: 'overview',
          //   link: '/vue/components/overview',
          // },
          {
            text: 'start',
            link: '/vue/docs/start',
          },
          {
            text: 'changelog',
            link: '/vue/docs/changelog',
          },
        ],
      },
      {
        title: 'ecosystem',
        list: [
          {
            text: 'designLab',
            link: '/themes/stores',
          },
          {
            text: 'material',
            link: '/material',
          },
          {
            text: 'pro',
            link: '/pro',
          },
        ],
      },
      {
        title: 'resource',
        list: [
          {
            text: 'componentFigma',
            link: 'https://www.figma.com/file/M66cTiLXHa4SVyZIlfY5Pb/arco-Design-System?node-id=7945%3A44563',
          },
          {
            text: 'iconFigma',
            link: 'https://www.figma.com/file/1ohmb16op4ogbI09ojLR5W/Arco-Design-IconsFigma',
          },
        ],
      },
      // {
      //   title: 'about',
      //   list: [
      //     {
      //       text: 'dashboard',
      //       link: '/dashboard',
      //     },
      //   ],
      // },
    ];

    const toBeOpen = () => {
      Message.info('Opening soon');
    };

    const latestYear = new Date().getFullYear();

    return {
      t,
      relevant,
      toBeOpen,
      joinChat,
      latestYear,
    };
  },
});
</script>

<style lang="less" src="./style.less" />


================================================
FILE: packages/arco-vue-docs/components/footer/style.less
================================================
.arco-site-footer {
  display: flex;
  justify-content: center;
  box-sizing: border-box;
  width: 100%;
  padding: 80px 20px 0 20px;
  background-color: #f7f8fa;

  &-main {
    width: 1180px;
  }

  &-logo {
    margin-right: 10px;
  }

  &-content {
    display: flex;
    justify-content: space-between;
  }

  &-bottom {
    display: flex;
    justify-content: space-between;
    margin-top: 80px;
    padding: 20px 0;
    border-top: 1px solid var(--color-border);

    &-left {
      display: flex;
      align-items: center;
    }

    &-right {
      display: flex;
      align-items: center;

      a {
        color: var(--color-text-2);
        text-decoration: none;
      }
    }
  }

  &-btn {
    display: flex;
    align-items: center;
    box-sizing: border-box;
    height: 28px;
    padding: 4px 8px;
    color: var(--color-text-2);
    font-size: 12px;
    text-decoration: none;
    background: var(--color-bg-2);
    border: 1px solid var(--color-border);
    border-radius: 4px;
    outline: none;
    cursor: pointer;
    transition: all 0.2s;

    > svg {
      margin-right: 8px;
    }
  }

  &-copyright {
    margin-left: 12px;
    color: var(--color-text-3);
    font-size: 12px;
    line-height: 12px;
  }

  &-icon {
    position: relative;

    &-color {
      position: absolute;
      left: 0;
    }

    &-gray {
      opacity: 1;
    }

    &-color {
      opacity: 0;
    }

    &:hover {
      .arco-site-footer-icon-gray {
        opacity: 0;
      }

      .arco-site-footer-icon-color {
        opacity: 1;
      }
    }
  }
}

.arco-site-relevant {
  display: flex;

  &-group {
    margin-left: 68px;
  }

  &-title {
    display: flex;
    justify-content: space-between;
    height: 24px;
    margin-bottom: 24px;
    color: var(--color-text-1);
    font-weight: 500;
    font-size: 16px;
    line-height: 24px;

    svg {
      display: none;
    }
  }

  &-list {
    display: flex;
    flex-direction: column;
    margin: 0;
    padding: 0;
    list-style: none;
  }

  &-item {
    margin-bottom: 12px;
    line-height: 22px;
    cursor: pointer;

    > * {
      color: var(--color-text-2);
      font-size: 14px;
      white-space: nowrap;
      text-decoration: none;
      transition: all 0.2s;

      &:hover {
        color: rgb(var(--primary-6));

        .t,
        .d {
          color: rgb(var(--primary-6));
        }
      }
    }
  }
}

@media (min-width: 1600px) {
  .arco-site-relevant-group {
    margin-left: 56px;
  }
}

@media (min-width: 1200px) and (max-width: 1600px) {
  .arco-site-footer {
    &-main {
      width: unset;
    }

    &-logo {
      display: none;
    }
  }

  .arco-site-relevant-group {
    margin-left: 56px;
  }
}

@media (min-width: 992px) and (max-width: 1200px) {
  .arco-site-footer {
    &-main {
      width: unset;
    }

    &-logo {
      display: none;
    }
  }

  .arco-site-relevant-group {
    margin-left: 30px;
  }
}

body[arco-theme='dark'] {
  .arco-site-footer {
    background-color: var(--color-bg-3);
  }
}


================================================
FILE: packages/arco-vue-docs/components/logo/index.vue
================================================
<template>
  <svg width="120px" height="24px" viewBox="0 0 120 24" version="1.1">
    <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
      <g id="画板" transform="translate(-56.000000, -14.000000)">
        <g id="编组-6备份" transform="translate(26.000000, 14.000000)">
          <g id="编组-3">
            <g
              id="编组-2"
              transform="translate(76.300000, 15.000000)"
              fill="var(--color-text-1)"
            >
              <path
                id="椭圆形备份"
                d="M2.34361572,4.26825799 C3.36534251,4.26825799 4.19361572,3.43998478 4.19361572,2.41825799 C4.19361572,1.39653121 3.36534251,0.568257993 2.34361572,0.568257993 C1.32188894,0.568257993 0.493615723,1.39653121 0.493615723,2.41825799 C0.493615723,3.43998478 1.32188894,4.26825799 2.34361572,4.26825799 Z"
              />
            </g>
          </g>
          <path
            id="arco.design"
            d="M45.4540018,8.33500087 L45.4540018,18.9940026 L42.6490014,18.9940026 L42.6490014,17.8170024 C41.9560013,18.6750026 40.9220011,19.2690027 39.4590008,19.2690027 C36.5220004,19.2690027 34.3,16.8600023 34.3,13.6590017 C34.3,10.4580012 36.5220004,8.04900083 39.4590008,8.04900083 C40.9220011,8.04900083 41.9450013,8.64300092 42.6490014,9.51200107 L42.6490014,8.33500087 L45.4540018,8.33500087 Z M39.9870009,10.7220013 C38.3040007,10.7220013 37.2370005,12.0310015 37.2370005,13.6590017 C37.2370005,15.287002 38.3040007,16.5960022 39.9870009,16.5960022 C41.6260012,16.5960022 42.7370005,15.342002 42.7370005,13.6590017 C42.7370005,11.9760015 41.6260012,10.7220013 39.9870009,10.7220013 Z M53.1540011,8.04900083 C53.7700012,8.04900083 54.2540012,8.13700084 54.6500013,8.28000087 L54.2210012,11.1290013 C53.7480012,10.9200013 53.066001,10.7880013 52.4830009,10.7880013 C51.1520007,10.7880013 50.2390006,11.6020014 50.2390006,13.1860017 L50.2390006,18.9940026 L47.3680001,18.9940026 L47.3680001,8.33500087 L50.1510006,8.33500087 L50.1510006,9.50100107 C50.8220007,8.5000009 51.8450008,8.04900083 53.1540011,8.04900083 Z M60.1610009,8.04900083 C61.9430012,8.04900083 63.4500015,8.77500095 64.4290016,10.0620012 L62.3610013,11.7890014 C61.7120012,11.0960013 61.0190011,10.7220013 60.0840009,10.7220013 C58.5990007,10.7220013 57.4110005,11.8880015 57.4110005,13.6590017 C57.4110005,15.441002 58.5880007,16.5960022 60.0730009,16.5960022 C60.9970011,16.5960022 61.7890012,16.1780022 62.3940013,15.5180021 L64.4400016,17.2670023 C63.4390015,18.5540025 61.9430012,19.2690027 60.1610009,19.2690027 C56.7620004,19.2690027 54.485,16.8930023 54.485,13.6590017 C54.485,10.4360012 56.7620004,8.04900083 60.1610009,8.04900083 Z M70.2810009,8.04900083 C73.6030015,8.04900083 76.0560019,10.4470012 76.0560019,13.6590017 C76.0560019,16.8710023 73.6030015,19.2690027 70.2810009,19.2690027 C66.9700004,19.2690027 64.528,16.8710023 64.528,13.6590017 C64.528,10.4470012 66.9700004,8.04900083 70.2810009,8.04900083 Z M70.2810009,10.7220013 C68.6640007,10.7220013 67.4540005,11.9320015 67.4540005,13.6590017 C67.4540005,15.386002 68.6640007,16.5960022 70.2810009,16.5960022 C71.8980012,16.5960022 73.1190014,15.386002 73.1190014,13.6590017 C73.1190014,11.9320015 71.8980012,10.7220013 70.2810009,10.7220013 Z M86.5280008,8.04900083 C87.9580011,8.04900083 88.9700012,8.61000092 89.6630014,9.44600106 L89.6630014,3.15400003 L92.5230018,3.15400003 L92.5230018,18.9940026 L89.7180014,18.9940026 L89.7180014,17.8170024 C89.0250013,18.6750026 87.9910011,19.2690027 86.5280008,19.2690027 C83.5910004,19.2690027 81.369,16.8600023 81.369,13.6590017 C81.369,10.4580012 83.5910004,8.04900083 86.5280008,8.04900083 Z M87.0560009,10.7220013 C85.3730007,10.7220013 84.3060005,12.0310015 84.3060005,13.6590017 C84.3060005,15.287002 85.3730007,16.5960022 87.0560009,16.5960022 C88.6950012,16.5960022 89.8060005,15.342002 89.8060005,13.6590017 C89.8060005,11.9760015 88.6950012,10.7220013 87.0560009,10.7220013 Z M99.1670009,8.04900083 C102.236001,8.04900083 104.337002,10.3260012 104.348002,13.6480017 C104.348002,13.9780018 104.326002,14.3740019 104.293002,14.6160019 L96.7360005,14.6160019 C97.0440005,16.1560022 98.1220007,16.8270023 99.4750009,16.8270023 C100.399001,16.8270023 101.400001,16.4530022 102.170001,15.8040021 L103.853002,17.6520024 C102.643001,18.7630026 101.103001,19.2690027 99.3100009,19.2690027 C96.0430004,19.2690027 93.777,17.0470023 93.777,13.6920018 C93.777,10.3370012 95.9770004,8.04900083 99.1670009,8.04900083 Z M99.1450009,10.5240012 C97.7920007,10.5240012 97.0000005,11.3380014 96.7470005,12.6580016 L101.466001,12.6580016 C101.202001,11.2940014 100.377001,10.5240012 99.1450009,10.5240012 Z M114.127002,9.072001 L113.159001,11.3050014 C112.312001,10.8870013 110.959001,10.4470012 109.760001,10.4360012 C108.671001,10.4360012 108.121001,10.8210013 108.121001,11.4040014 C108.121001,12.0200015 108.891001,12.1740015 109.859001,12.3170015 L110.805001,12.4600016 C113.115001,12.8120016 114.402002,13.8460018 114.402002,15.6500021 C114.402002,17.8500024 112.598001,19.2690027 109.507001,19.2690027 C108.055001,19.2690027 106.152,18.9940026 104.766,18.0150025 L105.899,15.8370021 C106.812,16.4420022 107.923001,16.8820023 109.529001,16.8820023 C110.860001,16.8820023 111.498001,16.5080022 111.498001,15.8810021 C111.498001,15.364002 110.959001,15.078002 109.727001,14.902002 L108.858001,14.7810019 C106.394,14.4400019 105.173,13.3620017 105.173,11.5470014 C105.173,9.35800104 106.867,8.06000083 109.672001,8.06000083 C111.377001,8.06000083 112.708001,8.37900088 114.127002,9.072001 Z M118.439001,8.33500087 L118.439001,18.9940026 L115.568,18.9940026 L115.568,8.33500087 L118.439001,8.33500087 Z M116.987,3.15400003 C118.021001,3.15400003 118.824001,3.96800016 118.824001,5.00200033 C118.824001,6.0360005 118.021001,6.82800063 116.987,6.82800063 C115.953,6.82800063 115.161,6.0360005 115.161,5.00200033 C115.161,3.96800016 115.953,3.15400003 116.987,3.15400003 Z M124.599001,8.04900083 C126.084001,8.04900083 127.173001,8.62100092 127.899001,9.52300107 L127.899001,8.33500087 L130.715002,8.33500087 L130.715002,18.1140025 C130.715002,21.535003 128.482001,23.6030034 124.962001,23.6030034 C123.279001,23.6030034 121.497,23.1630033 120.298,22.3160032 L121.321,19.9730028 C122.388,20.6770029 123.565001,21.062003 124.841001,21.062003 C126.623001,21.062003 127.877001,20.0720028 127.877001,18.2350025 L127.877001,17.4870024 C127.151001,18.3780025 126.073001,18.9280026 124.599001,18.9280026 C122.003,18.9280026 119.693,16.7610023 119.693,13.4940017 C119.693,10.2160012 122.003,8.04900083 124.599001,8.04900083 Z M125.325001,10.6890013 C123.686001,10.6890013 122.641,11.9430015 122.641,13.4940017 C122.641,15.034002 123.686001,16.2880022 125.325001,16.2880022 C126.920001,16.2880022 127.998001,15.078002 127.998001,13.4940017 C127.998001,11.8990015 126.920001,10.6890013 125.325001,10.6890013 Z M138.558001,8.04900083 C140.978001,8.04900083 142.705002,9.7320011 142.705002,12.2070015 L142.705002,18.9940026 L139.834001,18.9940026 L139.834001,13.1310017 C139.834001,11.5910014 139.064001,10.7440013 137.755001,10.7440013 C136.523001,10.7440013 135.500001,11.5470014 135.500001,13.1530017 L135.500001,18.9940026 L132.629,18.9940026 L132.629,8.33500087 L135.423001,8.33500087 L135.423001,9.58900108 C136.182001,8.45600089 137.348001,8.04900083 138.558001,8.04900083 Z"
            fill="var(--color-text-1)"
            fill-rule="nonzero"
          />
        </g>
      </g>
    </g>
  </svg>
</template>

<script lang="ts">
import { defineComponent } from 'vue';

export default defineComponent({
  name: 'ArcoLogo',
});
</script>


================================================
FILE: packages/arco-vue-docs/components/navbar/index.vue
================================================
<template>
  <nav class="arco-nav">
    <div class="arco-nav-logo">
      <logo-arco v-if="theme === 'light'" />
      <logo-arco-dark v-if="theme === 'dark'" />
    </div>
    <div class="arco-nav-right">
      <a-button class="arco-nav-button" type="text" @click="toggleTheme">
        <template #icon>
          <icon-moon-fill v-if="theme === 'light'" />
          <icon-sun-fill v-if="theme === 'dark'" />
        </template>
      </a-button>
      <a-button class="arco-nav-button" type="text" @click="handleClickLang">
        <template #icon>
          <div v-if="lang === 'en-US'">中</div>
          <div v-if="lang === 'zh-CN'">En</div>
        </template>
      </a-button>
    </div>
  </nav>
</template>

<script>
import { defineComponent, inject } from 'vue';
import LogoArco from '../../assets/logo-arco-design.svg';
import LogoArcoDark from '../../assets/logo-arco-design-dark.svg';

export default defineComponent({
  name: 'Navbar',
  components: {
    LogoArco,
    LogoArcoDark,
  },
  setup() {
    const theme = inject('theme');
    const toggleTheme = inject('toggleTheme');
    const lang = inject('lang');
    const changeLanguage = inject('changeLanguage');

    const handleClickLang = () => {
      if (lang.value === 'zh-CN') {
        changeLanguage('en-US');
      } else {
        changeLanguage('zh-CN');
      }
    };

    return { theme, toggleTheme, lang, handleClickLang };
  },
});
</script>

<style scoped lang="less" src="./style.less" />


================================================
FILE: packages/arco-vue-docs/components/navbar/style.less
================================================
.arco-nav {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  height: 60px;
  padding: 0 20px;
  background-color: var(--color-bg-1);
  border-bottom: 1px solid var(--color-border);

  &-right {
    display: flex;
    margin-left: auto;
  }

  &-button {
    margin: 0 4px;
    color: var(--color-text-1);
    font-size: 20px;
  }
}


================================================
FILE: packages/arco-vue-docs/components/theme-box/index.vue
================================================
<template>
  <Badge class="theme-badge" :count="theme ? 1 : 0" dot>
    <Button
      class="theme-badge-button"
      :shape="hover ? 'round' : 'circle'"
      size="large"
      @click="modalVisible = true"
      @mouseenter="hover = true"
      @mouseleave="hover = false"
    >
      <IconSkin />
      <span v-if="hover" style="margin-left: 8px">
        {{ t('themeBox.installTheme') }}
      </span>
    </Button>
  </Badge>
  <Modal
    :visible="modalVisible"
    :width="900"
    @ok="modalVisible = false"
    @cancel="modalVisible = false"
  >
    <template #title>
      <div class="theme-box-header">
        <span>{{ t('themeBox.installTheme') }}</span>
        <div>
          <Input
            :model-value="searchValue"
            :placeholder="t('themeBox.search')"
            allow-clear
            @input="onSearchInput"
          />
        </div>
      </div>
    </template>
    <Row :gutter="[20, 20]">
      <template v-if="isLoading">
        <Col v-for="(_, index) of loadingFillArray" :key="index" :span="8">
          <Card v-if="isLoading" class="theme-box-card">
            <template #cover>
              <Skeleton animation>
                <SkeletonShape style="width: 272px; height: 160px" />
              </Skeleton>
            </template>
            <CardMeta>
              <template #title>
                <Skeleton animation>
                  <SkeletonLine :line-height="25" />
                </Skeleton>
              </template>
            </CardMeta>
            <Skeleton animation>
              <SkeletonShape
                style="
                  width: 100px;
                  height: 24px;
                  margin-top: 20px;
                  margin-left: auto;
                "
              />
            </Skeleton>
          </Card>
        </Col>
      </template>
      <template v-else-if="themeList.length > 0">
        <Col v-for="item of themeList" :key="item.themeId" :span="8">
          <Card class="theme-box-card">
            <template #cover>
              <img :src="item.cover" style="height: 160px" alt="theme-cover" />
            </template>
            <template #actions>
              <Button
                class="theme-box-card-link"
                type="text"
                size="mini"
                :href="`https://arco.design/themes/design/${item.themeId}`"
              >
                <template #icon>
                  <IconLink />
                </template>
                {{ t('themeBox.openInDesignLab') }}
              </Button>
              <Tag
                v-if="theme && theme.themeId === item.themeId"
                color="arcoblue"
              >
                {{ t('themeBox.currentTheme') }}
              </Tag>
              <Button
                v-else
                type="primary"
                size="mini"
                @click="() => useTheme(item)"
              >
                {{ t('themeBox.install') }}
              </Button>
            </template>
            <CardMeta :title="item.packageName" />
          </Card>
        </Col>
      </template>
      <template v-else>
        <Empty style="margin: 200px 0">
          <template #description>
            {{ t('themeBox.noResult') }}
            <Link :href="`https://arco.design/themes`">
              {{ t('themeBox.createTheme') }}
            </Link>
          </template>
        </Empty>
      </template>
    </Row>
    <div class="theme-box-bottom">
      <Pagination
        :total="total"
        :current="page"
        :page-size="6"
        @change="onPageChange"
      />
    </div>
    <template v-if="theme" #footer>
      <div class="theme-box-footer">
        <TypographyText bold>
          {{ t('themeBox.currentTheme') }}: {{ theme.themeName }}
        </TypographyText>
        <Button
          type="primary"
          status="danger"
          size="small"
          @click="onResetClick"
        >
          {{ t('themeBox.resetTheme') }}
        </Button>
      </div>
    </template>
  </Modal>
</template>

<script lang="ts">
import { defineComponent, onMounted, PropType, ref, watch } from 'vue';
import { useI18n } from 'vue-i18n';
import {
  Badge,
  Button,
  Modal,
  Row,
  Col,
  Card,
  CardMeta,
  Pagination,
  Skeleton,
  SkeletonLine,
  SkeletonShape,
  Notification,
  Tag,
  TypographyText,
  Input,
  Empty,
  Link,
} from '@arco-design/web-vue';
import { IconSkin, IconLink } from '@arco-design/web-vue/es/icon';
import axios from 'axios';
import { ThemeData } from './interface';
import {
  getLocalStorage,
  removeLocalStorage,
  setLocalStorage,
} from '../../utils/local-storage';
import { apiBasename } from '../../utils/api';

const THEME_LINK_ID = 'arco-custom-theme';
const loadingFillArray = Array(6).fill(1);

export default defineComponent({
  name: 'ThemeBox',
  components: {
    Badge,
    Button,
    Modal,
    Row,
    Col,
    Card,
    CardMeta,
    Pagination,
    Skeleton,
    SkeletonLine,
    SkeletonShape,
    Tag,
    TypographyText,
    Input,
    Empty,
    Link,
    IconSkin,
    IconLink,
  },
  setup() {
    const { t } = useI18n();
    const theme = ref<ThemeData>();
    const themeList = ref<ThemeData[]>([]);
    const total = ref(0);
    const page = ref(1);
    const modalVisible = ref(false);
    const searchValue = ref('');
    const isLoading = ref(false);
    const hover = ref(false);

    onMounted(() => {
      const _theme = getLocalStorage<ThemeData>(
        'vue-custom-theme',
        true
      ) as ThemeData;
      if (_theme) {
        useTheme(_theme, false);
      }
    });

    const useTheme = (_theme: ThemeData, notice = true) => {
      addTheme(_theme, notice);
      setLocalStorage('vue-custom-theme', _theme);
    };

    const fetchThemeList = async (current: number, search: string) => {
      isLoading.value = true;
      try {
        const data = await axios.get(
          `${apiBasename}/themes/api/open/themes/list?pageSize=6&currentPage=${current}&depLibrary=@arco-design/web-vue&keyword=${search}`
        );

        themeList.value = data.data.list;
        total.value = data.data.total;
      } catch {}
      isLoading.value = false;
    };

    watch(modalVisible, (visible) => {
      if (visible) {
        fetchThemeList(page.value, searchValue.value);
      }
    });

    const addTheme = (_theme: ThemeData, notice: boolean) => {
      const url = `${_theme.unpkgHost}${_theme.packageName}/css/arco.css`;
      axios
        .get(url)
        .then(() => {
          if (theme.value) {
            removeTheme();
          }
          const linkElement = document.createElement('link');
          linkElement.id = THEME_LINK_ID;
          linkElement.href = url;
          linkElement.type = 'text/css';
          linkElement.rel = 'stylesheet';
          document.body.appendChild(linkElement);
          theme.value = _theme;

          if (notice) {
            Notification.success({
              id: 'theme',
              title: t('themeBox.installTheme'),
              content: t('themeBox.installThemeSuccess'),
              duration: 2000,
            });
          }
        })
        .catch(() => {
          Notification.error({
            id: 'theme',
            title: t('themeBox.installTheme'),
            content: t('themeBox.installThemeError'),
            duration: 2000,
          });
        });
    };

    const removeTheme = () => {
      const linkElement = document.getElementById(THEME_LINK_ID);
      if (linkElement) {
        document.body.removeChild(linkElement);
      }
      theme.value = undefined;
    };

    const onResetClick = () => {
      removeTheme();
      removeLocalStorage('vue-custom-theme');
    };

    const onSearchInput = (value: string) => {
      searchValue.value = value;
      page.value = 1;
      fetchThemeList(1, value);
    };

    const onPageChange = (_page: number) => {
      page.value = _page;
      fetchThemeList(_page, searchValue.value);
    };

    return {
      hover,
      modalVisible,
      themeList,
      theme,
      total,
      page,
      isLoading,
      loadingFillArray,
      searchValue,
      useTheme,
      onSearchInput,
      onPageChange,
      onResetClick,
      t,
    };
  },
});
</script>

<style scoped lang="less">
.theme-box {
  &-header {
    width: 100%;
    padding-right: 24px;
    display: flex;
    justify-content: space-between;
    align-items: center;
  }

  &-card {
    &-link {
      opacity: 0;
      transition: opacity 100ms;
    }

    &:hover &-link {
      opacity: 1;
    }

    :deep(.arco-card-meta-title) {
      line-height: 25px;
    }
  }

  &-bottom {
    display: flex;
    justify-content: flex-end;
    margin-top: 20px;
  }

  &-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
}

.theme-badge {
  position: fixed;
  right: 70px;
  bottom: 124px;

  &-button {
    background: var(--color-bg-5) !important;
    border: 1px solid var(--color-fill-3) !important;
    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
  }
}
</style>


================================================
FILE: packages/arco-vue-docs/components/theme-box/interface.ts
================================================
export interface ThemeData {
  themeId: number;
  themeName: string;
  cover: string;
  packageName: string;
  unpkgHost: string;
}


================================================
FILE: packages/arco-vue-docs/components/token-table/token-table.vue
================================================
<template>
  <a-table :columns="columns" :data="data" :pagination="false">
    <template #name="{ record }">
      <div class="token-content">
        <div
          v-if="type === 'color'"
          class="token-sample"
          :style="{
            backgroundColor: dark
              ? record.darkValue ?? record.value
              : record.value,
          }"
        />
        <div class="token-text">
          {{ type === 'color' && dark ? `dark-${record.name}` : record.name }}
        </div>
      </div>
    </template>
    <template #value="{ record }">
      <span class="token-value" @click="onValueClick">
        {{ dark ? record.darkValue ?? record.value : record.value }}
      </span>
    </template>
    <template #cssvar="{ record }">
      {{ record.cssvar ? `--${record.name}` : '-' }}
    </template>
  </a-table>
</template>

<script lang="ts">
import { computed, defineComponent, PropType } from 'vue';
import { Message, TableColumnData } from '@web-vue/components/index';
import clipboard from '../../utils/clipboard';

export default defineComponent({
  name: 'TokenTable',
  props: {
    data: Array,
    type: {
      type: String as PropType<'color' | 'size'>,
      default: 'color',
    },
    dark: Boolean,
    local: {
      type: String,
      default: 'zh-CN',
    },
  },
  setup(props) {
    const columns = computed(() => {
      return [
        {
          title: props.local === 'en-US' ? 'Token' : '变量名',
          dataIndex: 'name',
          slotName: 'name',
          width: 200,
        },
        {
          title: props.local === 'en-US' ? 'Value' : '变量值',
          dataIndex: 'value',
          width: 250,
          slotName: 'value',
        },
        {
          title: props.local === 'en-US' ? 'Css Var' : 'CSS变量',
          dataIndex: 'cssvar',
          slotName: 'cssvar',
          width: 200,
        },
        {
          title: props.local === 'en-US' ? 'Description' : '描述',
          dataIndex: props.local === 'en-US' ? 'descEN' : 'desc',
        },
      ];
    });

    const onValueClick = (ev: Event) => {
      const text = (ev.target as HTMLElement).textContent;
      if (text) {
        clipboard(text)
          .then(() => {
            Message.success(`Copy Success!`);
          })
          .catch(() => {
            Message.error('Copy Failed! Please try again.');
          });
      }
    };

    return {
      columns,
      onValueClick,
    };
  },
});
</script>

<style lang="less">
.token-content {
  display: flex;
  align-items: center;

  .token-sample {
    margin-right: 8px;
    width: 16px;
    height: 16px;
    border-radius: 2px;
  }
}

.token-value {
  cursor: pointer;
}
</style>


================================================
FILE: packages/arco-vue-docs/context.ts
================================================
import { InjectionKey } from 'vue';

export interface CollapseContext {
  showNav: boolean;
  showAnchor: boolean;
  toggleNav: () => void;
  toggleAnchor: () => void;
}

export const collapseInjectionKey: InjectionKey<CollapseContext> =
  Symbol('CollapseContext');


================================================
FILE: packages/arco-vue-docs/docs/dark.en-US.md
================================================
```yaml
meta:
  type: Developer Guide
title: Dark mode
description: The dark theme is built in the component library, and you can easily switch to dark.
```

*Auto translate by google.*

## Switch to dark mode

The component library uses the arco-theme attribute on the body tag to indicate the current theme, so you only need to modify this attribute to complete the theme switch.

```ts
// Set as dark theme
document.body.setAttribute('arco-theme', 'dark')

// Restore light theme
document.body.removeAttribute('arco-theme');
```

## Principle and built-in colors

Refer to [Dark Mode](https://arco.design/react/docs/palette) and [Color](https://arco.design/react/docs/palette)


================================================
FILE: packages/arco-vue-docs/docs/dark.zh-CN.md
================================================
```yaml
meta:
  type: 开发指南
title: 暗黑模式
description: 组件库内置暗色的主题,你可以轻易的切换到暗色。
```

## 切换到暗黑模式

组件库通过 body 标签上的 arco-theme 属性来标明当前的主题,所以你只要修改这个属性,即可完成主题的切换。

```ts
// 设置为暗黑主题
document.body.setAttribute('arco-theme', 'dark')

// 恢复亮色主题
document.body.removeAttribute('arco-theme');
```

## 原理和内置颜色

可参考 [暗黑模式](https://arco.design/react/docs/palette) 和 [颜色](https://arco.design/react/docs/palette)


================================================
FILE: packages/arco-vue-docs/docs/faq.en-US.md
================================================
```yaml
meta:
  type: Developer Guide
title: FAQ
description: Frequently Asked Questions in the Use of the Component Library
```

## Controlled and Uncontrolled

The concept of `controlled` is used in the Arco Design Vue component library, as the name suggests, the display state of the component will always be the same as the incoming value. We recommend using input components in controlled mode.

At this time, you can modify the value of `model-value` through `two-way binding (v-model)` or `change` event to ensure the same value inside and outside the component.

In controlled mode, if you want to control the displayed value, you can use the `change` event to handle it.

If we don't want to control the value of the component, we can use the uncontrolled mode, in which case the value of the component will be maintained inside the component, and the initial value can be set by `default-value`. In uncontrolled mode, you can get the value of the component through the `change` event.

pay attention:
The `default-*` class attributes are used to set initial values in uncontrolled mode and do not affect subsequent states. When this value and the controlled value are used at the same time, the controlled value takes precedence.


## Update At Scroll

By default, the drop-down menu will follow the change of the window scroll bar to update the position. If the component containing the drop-down menu is placed in a scrollable container, there will be a problem that the drop-down menu does not update the position when the container is scrolled. At this time, you can use the trigger inside the component. configuration, will `updateAtScroll`
Set to `true` to enable rolling update support.

If there are many such scenes in the project, you can enable this property globally through the [ConfigProvider](/vue/component/config-provider) component.

## The use of virtual lists

Components that support setting up virtual lists [List](/vue/component/list) 、[Select](/vue/component/Select)、[Table](/vue/component/table)、[Tree](/vue/component/tree) set `virtual-list-props` Enable the virtual list function.

The rendering of virtual list elements can be divided into two cases: **elements are highly fixed** and **elements are highly dynamic**.

|Name|Description|Type|Default|version|
|---|---|---|:---:|:---|
|height|Viewable area height|`number \| string`|`-`||
|fixedSize| Whether the elements in the list are of fixed size (height) |`boolean`|`false`|2.34.1|
|estimatedSize| Estimated size (height) [this value is not valid when `fixedSize` is `true`], and if it is closer to the average size, the scroll bar length will look more accurate. It is recommended to allocate the average calculated by yourself. The default dynamic height will use the average of the first Section |`number`|`-`|2.34.1|
|buffer| The number of elements mounted in advance outside the boundary of the viewport. (`Section = buffer * 3`) the default value is `10` (that is, Section defaults to 30). It is recommended to adjust the height of the list viewport. This value will affect performance. |`number`|`10`|2.34.1|


================================================
FILE: packages/arco-vue-docs/docs/faq.zh-CN.md
================================================
```yaml
meta:
  type: 开发指南
title: 常见问题
description: 组件库使用中的常见问题解答
```

## 受控与非受控

Arco Design Vue 组件库中使用了 `受控` 的概念,正如其名,组件的显示状态将始终与传入值相同。我们推荐通过受控模式来使用输入组件。

这时可以通过 `双向绑定(v-model)` 或者 `change` 事件来修改 `model-value` 的值,来保证组件内部与外部的值相同。

在受控模式中,如果希望控制显示的值,可以使用 `change` 事件进行处理。

如果我们不希望控制组件的值,可以使用非受控模式,此时组件的值将维护在组件内部,可以通过 `default-value` 来设置初始值。非受控模式下可以通过 `change` 事件来获取组件的值。

特别注意:
`default-*` 类属性用来设置非受控模式下的初始值,不会影响后续的状态。此值与受控值同时使用时,受控值优先生效。


## 下拉菜单的滚动跟随

下拉菜单默认会跟随 window 滚动条的变化更新位置,如果将包含下拉菜单的组件放置在一个可滚动的容器中,会出现容器滚动时下拉菜单没有更新位置的问题,此时可以通过组件内部的 trigger 配置,将 `updateAtScroll`
设置为 `true` 开启滚动更新的支持。

如果项目内此场景较多,可以通过 [ConfigProvider](/vue/component/config-provider) 组件全局开启此属性。

## 虚拟列表的使用

支持设置虚拟列表的组件 [List](/vue/component/list) 、[Select](/vue/component/Select)、[Table](/vue/component/table)、[Tree](/vue/component/tree) 设置 `virtual-list-props` 开启虚拟列表功能。

虚拟列表元素的渲染分为 **元素高度固定**,**元素高度动态** 两种情况。

|参数名|描述|类型|默认值|版本|
|---|---|---|:---:|:---|
|height|可视区域高度|`number \| string`|`-`||
|fixedSize| 列表内元素是否为固定大小(高度)|`boolean`|`false`|2.34.1|
|estimatedSize| 预估大小(高度)[当 `fixedSize` 为 `true` 时,此值无效],如果它更接近平均大小,则滚动条长度看起来将更准确。建议分配自己计算的平均值。默认动态高度将使用首个 Section 的平均值|`number`|`-`|2.34.1|
|buffer|视口边界外提前挂载的元素数量。(`Section = buffer * 3`)默认值为 `10`(也就是 Section 默认为 30), 建议根据列表视口的高度做调整,此值太大会影响性能。|`number`|`10`|2.34.1|


================================================
FILE: packages/arco-vue-docs/docs/i18n.en-US.md
================================================
```yaml
meta:
  type: Developer Guide
title: Globalization
description: All component texts use Chinese by default, and other languages can be used by setting.
```

_Auto translate by google._

Internationalization is achieved through the [ConfigProvider](/vue/component/config-provider) component.

## Basic usage

```vue
<template>
  <a-config-provider :locale="enUS">
    <a-pagination :total="50" show-total show-jumper show-page-size />
  </a-config-provider>
</template>

<script>
import enUS from '@arco-design/web-vue/es/locale/lang/en-us';

export default {
  data() {
    return {
      enUS,
    };
  },
};
</script>
```

## Supported regional languages

| Language            | Area code |
| ------------------- | --------- |
| Simple Chinese      | zh-CN     |
| English (US)        | en-US     |
| Japanese            | ja-JP     |
| Traditional Chinese | zh-TW     |
| Portuguese          | pt-PT     |
| Spanish             | es-ES     |
| Indonesian          | id-ID     |
| French, France      | fr-FR     |
| German, Germany     | de-DE     |
| Korean              | ko-KR     |
| Italian, Italy      | it-IT     |
| Thai                | th-TH     |
| Melayu (Malaysia)   | ms-MY     |
| Vietnamese          | vi-VN     |
| Khmer (Cambodia)    | km-KH     |
| Arabic (Egypt)      | ar-EG     |
| Russian (Russia)    | ru-RU     |
| Dutch (Netherlands) | nl-NL     |


================================================
FILE: packages/arco-vue-docs/docs/i18n.zh-CN.md
================================================
```yaml
meta:
  type: 开发指南
title: 国际化
description: 所有组件文案默认使用的是中文,通过设置可以使用其它语言。
```

通过 [ConfigProvider](/vue/component/config-provider) 组件实现国际化。

## 基本用法

```vue
<template>
  <a-config-provider :locale="enUS">
    <a-pagination :total="50" show-total show-jumper show-page-size />
  </a-config-provider>
</template>

<script>
import enUS from '@arco-design/web-vue/es/locale/lang/en-us';

export default {
  data() {
    return {
      enUS,
    };
  },
};
</script>
```

## 支持的地区语言

| 语言                 | 地区编码 |
| -------------------- | -------- |
| 简体中文             | zh-CN    |
| 英文                 | en-US    |
| 日文                 | ja-JP    |
| 繁体中文(中国台湾) | zh-TW    |
| 葡萄牙语             | pt-PT    |
| 西班牙语             | es-ES    |
| 印度尼西亚语         | id-ID    |
| 法语(法国)         | fr-FR    |
| 德语(德国)         | de-DE    |
| 韩语                 | ko-KR    |
| 意大利语(意大利)     | it-IT    |
| 马来语(马来西亚)     | ms-MY    |
| 泰语                 | th-TH    |
| 越南语               | vi-VN    |
| 高棉语(柬埔寨)       | km-KH    |
| 阿拉伯语(埃及)       | ar-EG    |
| 俄语(俄罗斯)       | ru-RU    |
| 荷兰语(荷兰)       | nl-NL    |


================================================
FILE: packages/arco-vue-docs/docs/pro/build.en-US.md
================================================
```yaml
meta:
  type: Arco Pro
title: Package build
description: Package code
```

*Auto translate by google.*

## Package and build

When the code is written, execute the following command to package the code

```bash
npm run build
```

This command calls the packaging command provided by vite. After the packaging is completed, a `dist` folder will be generated in the root directory, which is the code that can be used for deployment.

PS: Tips for reducing package size! ! !

Because in the Pro project, the displayed table component requires the vue compile function, so a version with a compiler is introduced.

If you don't need the Vue template compilation function, delete the corresponding business code, configure the specified Vue version, and build and package to reduce the package size.

If you need the ability to compile vue templates, you can configure it in the vite.config.prod.ts file (see below).

 ```ts
// config/vite.config.build.ts
import {defineConfig} from'vite';

export default defineConfig({
  mode:'production',
  ...
  resolve: {
    alias: [
      {
        find:'vue',
        replacement:'vue/dist/vue.esm-bundler.js', // need to compile tmp
      },
    ],
  },
});
```

For more specific configuration details, please refer to [vite](https://vitejs.dev/)[Official Website](https://vitejs.dev/).


================================================
FILE: packages/arco-vue-docs/docs/pro/build.zh-CN.md
================================================
```yaml
meta:
  type: Arco Pro 最佳实践
title: 打包构建
description: 打包代码
```

## 打包构建

当代码书写完成后,执行以下命令即可打包代码

```bash
npm run build
```

该命令调用的是 vite 提供的打包命令,打包完成后,会在根目录生成 `dist` 文件夹,这里面就是可以用于部署的代码。

PS: 打包体积缩减提示!!!

因为在Pro项目中,展示的table组件需要 vue compile 功能,所以引入了带有编译器的版本。

如果不需要vue 模板编译功能,删除对应的业务代码后,配置指定的vue版本,构建打包以缩小打包体积。

如果需要 vue 模板编译 能力,可在 vite.config.prod.ts 文件 中进行配置(如下)。

 ```ts
// config/vite.config.build.ts
import { defineConfig } from 'vite';

export default defineConfig({
  mode: 'production',
  ...
  resolve: {
    alias: [
      {
        find: 'vue',
        replacement: 'vue/dist/vue.esm-bundler.js', // 需要编译tmp
      },
    ],
  },
});
```

更多具体配置详见[vite](https://vitejs.dev/)[官网](https://vitejs.dev/)。


================================================
FILE: packages/arco-vue-docs/docs/pro/directory.en-US.md
================================================
```yaml
meta:
  type: Arco Pro
title: Directory Structure
description: The organizational structure of the project file.
```

*Auto translate by google.*

## Content

```
├── README.md
├── package.json
├── index.html
├── src
│   ├── api # Request interface
│   ├── assets # Static resources
│         └── style # Global style
│   ├── components # General business components
│   ├── config # Global configuration (including echarts theme)
│         └── settings.json # Configuration file
│   ├── directive # Instruction set (if necessary, you can add it yourself)
│   ├── filters # filter (if necessary, you can add it yourself)
│   ├── hooks # global hooks
│   ├── layout # Layout
│   ├── locale # Internationalized language pack
│   ├── mock # Mock data
│   ├── views # Page template
|   |—— router # Routing configuration
│   ├── store # State management center
│   ├── types # Typescript types
│   └── utils # Tool library
│   └── App.vue # View entrance
│   └── main.ts # Entry file
└── tsconfig.json
```

ps: [Filter description](https://v3-migration.vuejs.org/breaking-changes/filters.html)


================================================
FILE: packages/arco-vue-docs/docs/pro/directory.zh-CN.md
================================================
```yaml
meta:
  type: Arco Pro 最佳实践
title: 目录结构
description: 项目文件的组织结构
```

## 目录

```
├── README.md
├── package.json
├── index.html
├── src
│   ├── api  # 请求接口
│   ├── assets  # 静态资源
│          └── style 全局样式
│   ├── components  # 通用业务组件
│   ├── config  # 全局配置(包含echarts主题)
│          └── settings.json  # 配置文件
│   ├── directives # 指令集(如需,可自行补充)
│   ├── filters # 过滤器(如需,可自行补充)
│   ├── hooks # 全局hooks
│   ├── layout  # 布局
│   ├── locale  # 国际化语言包
│   ├── mock  # 模拟数据
│   ├── views  # 页面模板
│   ├── router # 路由配置
│   ├── store  # 状态管理中心
│   ├── types  # Typescript 类型
│   └── utils  # 工具库
│   └── App.vue  # 视图入口
│   └── main.ts  # 入口文件
└── tsconfig.json
```

ps:[过滤器说明](https://v3-migration.vuejs.org/breaking-changes/filters.html)


================================================
FILE: packages/arco-vue-docs/docs/pro/faq.en-US.md
================================================
```yaml
meta:
  type: Arco Pro
title: FAQ
description: Arco Design Pro Vue FAQ Collection
```

*Auto translate by google.*

## Initialization

### 1. Initialization of arco-cli failed

![](https://p3-armor.byteimg.com/tos-cn-i-49unhts6dw/iShot_2022-05-26_16.12.14.png~tplv-49unhts6dw-image.image)

If the dependency installation fails, go to the directory of the initialization project and execute the npm install or yarn install installation operation again.

## Development

### 1. How to set highlight for menu items?
See [Routes and menu](/vue/docs/pro/routes-and-menu) for details

### 2.Menu hides children
See [Routes and menu](/vue/docs/pro/routes-and-menu) for details

### 3.Configure first-level menu items

Due to the architecture, configuring a single first-level menu item requires the cooperation of multiple menu configuration items. See [#85]([/vue/docs/pro/routes-and-menu](https://github.com/arco-design/arco-design-pro-vue/issues/85#issuecomment-1142289501)) for details

### 4.Using jsx in Vue3

详见 [babel-plugin-jsx](https://github.com/vuejs/babel-plugin-jsx)

### 5.Cross-domain proxy
See [vite configuration](https://cn.vitejs.dev/config/#server-open) for details

### 6.Code cannot be pushed

Because of the use of [husky](https://github.com/typicode/husky), the hook [normalizes](https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#heading=h.greljkmo14y0) the uploaded commit information check.

Please follow the documentation for git commit information normalization.

If you do not need this function, you can delete husky related files and corresponding scripts. (**Not recommended**)

## Build

### 1. Rollup failed to resolve import "XXXXXX/node_modules/@arco-design/web-vue/es/xxx-xxx/style/css.js”

The error comes from loading the build plugin (config/plugin/styleImport.ts) on demand. There are several reasons for this problem.

- The new version of the component library has added components.

- The component itself is missing and not added.

- The unplugin-vue-components dependency library version is too low.

Solution please [move](https://github.com/arco-design/arco-design-pro-vue/issues/71).

### 2. Executing build TS type error

![](https://p3-armor.byteimg.com/tos-cn-i-49unhts6dw/iShot_2022-05-26_17.36.59.png~tplv-49unhts6dw-image.image)

Reason for error:

- There is a problem with the spelling itself.

- The new version of the component library has made changes to the type declaration.

Solution:

- Follow the type hints to make changes.

- Turn off vue-tsc checks. (**Not recommended**)

```ts
// package.json

  "build": "vue-tsc --noEmit && vite build --config ./config/vite.config.prod.ts"  // before fixing

  "build": "vite build --config ./config/vite.config.prod.ts" // 修改后
```

### 3. Vue-tsc builds slowly

- Reinstall vue-tsc to the latest version.

```shell
# npm
npm install vue-tsc@latest
# yarn
yarn add vue-tsc@latest
```

- Turn off vue-tsc checks. (**Not recommended**)



### 4. Preview the packaged project

```shell
# npm
npm run preview
# yarn
yarn preview
```
**PS: The preview command will execute the build operation first in Pro.**

## Deployment

### 1. After the page is deployed successfully, refresh the 404 page

[Moving to Vue Router](https://router.vuejs.org/guide/essentials/history-mode.html)

## Other

### 1. Can the developed projects be upgraded to the latest version?

Arco Pro, as a project template, does not have the ability to smoothly upgrade to the latest version.

If you need a new version capability, you can initialize a project and copy your business code into it, and then make the corresponding changes.


================================================
FILE: packages/arco-vue-docs/docs/pro/faq.zh-CN.md
================================================
```yaml
meta:
  type: Arco Pro 最佳实践
title: 常见问题
description: Arco Design Pro Vue 常见问题合集
```

## 初始化

### 一、arco-cli初始化失败

![](https://p3-armor.byteimg.com/tos-cn-i-49unhts6dw/iShot_2022-05-26_16.12.14.png~tplv-49unhts6dw-image.image)

依赖安装失败的问题,进入到初始化项目的目录,重新执行执行npm install 或 yarn install安装操作即可。

## 开发相关

### 一、菜单项如何设置高亮?
详见 [路由和菜单](/vue/docs/pro/routes-and-menu)

### 二、菜单隐藏子项
详见 [路由和菜单](/vue/docs/pro/routes-and-menu)

### 三、配置一级菜单项

因为架构缘故,配置单独的一级菜单项,需要多个菜单配置项进行配合。详见 [#85]([/vue/docs/pro/routes-and-menu](https://github.com/arco-design/arco-design-pro-vue/issues/85#issuecomment-1142289501))

### 四、Vue3 中使用 jsx 写法

详见 [babel-plugin-jsx](https://github.com/vuejs/babel-plugin-jsx)

### 五、跨域代理
详见 [vite配置](https://cn.vitejs.dev/config/#server-open)

### 六、代码无法提交

因为使用了 [husky](https://github.com/typicode/husky) 的缘故,钩子对上传的commit信息进行[规范化](https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#heading=h.greljkmo14y0)校验。

请按照文档进行git commit信息规范化。

如果不需要该功能,可以删除掉husky相关文件和对应脚本。(**不推荐**)


## 构建相关

### 一. Rollup failed to resolve import "XXXXXX/node_modules/@arco-design/web-vue/es/xxx-xxx/style/css.js”

报错源于按需加载构建插件(config/plugin/styleImport.ts),该问题产生分别有以下几个原因

- 新版组件库新增了组件。

- 组件本身遗漏未进行添加。

- unplugin-vue-components 依赖库版本过低。

解决方法请 [移步](https://github.com/arco-design/arco-design-pro-vue/issues/71)。

### 二、执行构建TS类型报错

![](https://p3-armor.byteimg.com/tos-cn-i-49unhts6dw/iShot_2022-05-26_17.36.59.png~tplv-49unhts6dw-image.image)

报错原因:

- 写法本身存在问题。

- 新版组件库对类型声明进行了变更修改。

解决方法:

- 按照类型提示进行修改。

- 关闭vue-tsc检查。(**不推荐**)

```ts
// package.json

  "build": "vue-tsc --noEmit && vite build --config ./config/vite.config.prod.ts"  // 修改前

  "build": "vite build --config ./config/vite.config.prod.ts" // 修改后
```

### 三、vue-tsc构建缓慢

- 重新安装vue-tsc至最新版本。

```shell
# npm
npm install vue-tsc@latest
# yarn
yarn add vue-tsc@latest
```

- 关闭vue-tsc检查。(**不推荐**)


### 四、预览打包项目

```shell
# npm
npm run preview
# yarn
yarn preview
```
**PS: 该预览命令在Pro中会先执行build操作。**

## 部署相关

### 一、页面部署成功后刷新出现404页面

[移步 Vue Router](https://router.vuejs.org/guide/essentials/history-mode.html)

## 其它

### 一、已经开发的项目是否能够升级到最新版?

Arco Pro作为一个项目模板,不具备平滑升级过渡到最新版本的能力。

如需新版本能力,可以初始化一个项目后将自己的业务代码拷贝进去,在进行相应的更改即可。


================================================
FILE: packages/arco-vue-docs/docs/pro/i18n.en-US.md
================================================
```yaml
meta:
  type: Arco Pro
title: Internationalization
description: Multi-language implementation
```

*Auto translate by google.*

## Language Pack

Internationalization is firstly the provision of language packs. In Pro, the language packs are defined in `src/locale`, and then imported into `main` to take effect.

```
├── locale
│ ├── en-US.ts
│ └── zh-CN.ts
├── hooks
│ ├── locale.ts
└── main.ts
```

At the same time, hooks for obtaining the current language and switching the current language are provided in the hooks directory.

 ```ts
import {computed} from'vue';
import {useI18n} from'vue-i18n';

export default function useLocale() {
     const i18 = useI18n();
     const currentLocale = computed(() => {
         return i18.locale.value;
     });
     const changeLocale = (value: string) => {
         i18.locale.value = value;
         localStorage.setItem('arco-locale', value);
     };
     return {
         currentLocale,
         changeLocale,
     };
}
```


================================================
FILE: packages/arco-vue-docs/docs/pro/i18n.zh-CN.md
================================================
```yaml
meta:
  type: Arco Pro 最佳实践
title: 国际化
description: 多语言实现
```

## 语言包

国际化首先是语言包的提供,Pro 里面将语言包定义在 `src/locale` 中,然后导入 `main` 中生效。

```
├── locale
│ ├── en-US.ts
│ └── zh-CN.ts
├── hooks
│ ├── locale.ts
└── main.ts
```

同时在hooks目录中提供获取当前语言以及切换当前语言的hook。

 ```ts
import { computed } from 'vue';
import { useI18n } from 'vue-i18n';

export default function useLocale() {
    const i18 = useI18n();
    const currentLocale = computed(() => {
        return i18.locale.value;
    });
    const changeLocale = (value: string) => {
        i18.locale.value = value;
        localStorage.setItem('arco-locale', value);
    };
    return {
        currentLocale,
        changeLocale,
    };
}
```


================================================
FILE: packages/arco-vue-docs/docs/pro/layout.en-US.md
================================================
```yaml
meta:
  type: Arco Pro
title: Layout
description: General layout of the page
```

*Auto translate by google.*

## Layout

There is only one set of layouts currently provided, which is applied to all routing pages, including side menu bar, top notification bar, footer and content area. The side bar and top notification bar are fixed to facilitate the scrolling process of users Focus on other views.

![](https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/ebd0bd6d4c044c1e945527194384fcaa.png~tplv-uwbnlip3yd-webp.webp)

In addition, the responsive sidebar will automatically shrink as follows when the window width is less than `1200px`:

![](https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/c730fddca82cf8c4cda27cef9ecd6683.png~tplv-uwbnlip3yd-webp.webp)


================================================
FILE: packages/arco-vue-docs/docs/pro/layout.zh-CN.md
================================================
```yaml
meta:
  type: Arco Pro 最佳实践
title: 布局
description: 页面通用布局
```

## 布局

目前提供的布局只有一套,应用到了所有路由页面上,包含侧边菜单栏,顶部通知栏,页脚和内容区域,其中侧边栏和顶部通知栏都是 fixed 的,方便用户在滚动的过程中关注到其他视图。

![](https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/ebd0bd6d4c044c1e945527194384fcaa.png~tplv-uwbnlip3yd-webp.webp)

此外,响应式的侧边栏会在窗口宽度小于 `1200px` 的时候,自动收缩如下:

![](https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/c730fddca82cf8c4cda27cef9ecd6683.png~tplv-uwbnlip3yd-webp.webp)


================================================
FILE: packages/arco-vue-docs/docs/pro/mock.en-US.md
================================================
```yaml
meta:
  type: Arco Pro
title: Interface and Mock
description: Network request, interceptor and simulation data
```

*Auto translate by google.*

## Network request

Use axios to make remote interface requests.

It is recommended to improve the type definition of the returned and requested data.

 ```ts
import axios from'axios';

export interface UserToken {
  token: string;
}

export interface UserStateTypes {
  name: string;
  location: string;
}
export function getUserInfo(data: UserToken) {
  // Get complete type hints by passing generics.
  return axios.post<UserStateTypes>('/api/user/info', data);
}
```

## Interceptor

Multi-layer interceptors can be added according to the needs of your own system.

 ```ts
import axios, {AxiosRequestConfig, AxiosResponse} from'axios';
// Users can modify according to their own background system
export interface HttpResponse<T = unknown> {
  status: number;
  msg: string;
  code: number;
  data: T;
}

axios.interceptors.request.use(
  (config: AxiosRequestConfig) => {
    // Configure the request here
    return config;
  },
  (error) => {
    // What to do with request errors
    return Promise.reject(error);
  }
);
// Add response interceptor
axios.interceptors.response.use(
  (response: AxiosResponse<HttpResponse>) => {
    const res = response.data;
    // if the custom code is not 20000, it is judged as an error.
    if (res.code !== 20000) {
      // remind users

      // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
      if (
        [50008, 50012, 50014].includes(res.code)
      ) {
        // do something
      }
      return Promise.reject(new Error(res.msg ||'Error'));
    }
    return res;
  },
  (error) => {
    return Promise.reject(error);
  }
);
```

Intercept ajax and return simulated data

## mock solution

Parallel development of the front and back ends means that the front end needs to be developed without interface data. In this case, if the function of simulating data requests can be provided, our data request code can be written normally. Pro uses Mock.js to achieve This feature.

Mock.js will intercept the ajax request. If there is a matching mock rule, the ajax will not be sent out, but the mock data will be returned. Mock.js has a wealth of simulation data generation methods, it is recommended to read the document first, the document is very clear and easy to understand [MockJs document](http://mockjs.com/)

 ```ts
import Mock from'mockjs';
import {
  successResponseWrap,
} From'@/utils/setup-mock';

Mock.mock(new RegExp('/api/chatList'), () => {
    const data = Mock.mock(successResponseWrap({
        'data|4-6': [
            {
                'id|+1': 1,
                username:'User 7352772',
                content:'It will start soon, so excited! ',
                time: '13:09:12',
                'isCollect|2': true,
            },
        ],
    }));

    return data.data;
});
```

When the request url sent by the client is matched by `new RegExp('/api/chatList')`, Mock.js will intercept the request, execute the corresponding callback function, and return the data returned in the callback function.

> Note: Requests that are matched and intercepted by Mock.js will not appear in the network panel of the developer tools.

## Close Mock

In order to facilitate the opening and closing of the data simulation function, each `Mock` will be wrapped by `setupMock.setup`, the setupMock is as follows:

 ```ts
import {debug} from'./env';
export default ({ mock, setup }: {mock?: boolean; setup: () => void; }) => {
  if (mock !== false && debug) setup();
};
```

Data simulation is started by default in a non-production environment. When we need to debug the interface, we only need to set the mock parameter of setupMock to false, as follows:

 ```ts
import Mock from'mockjs';
import setupMock from'../utils/setupMock';

setupMock({
  mock: false
  setup() {
  // User Info
    Mock.mock(new RegExp('/api/userInfo'), () => {
        return {
          name:'name',
        };
    });
  },
});
```


================================================
FILE: packages/arco-vue-docs/docs/pro/mock.zh-CN.md
================================================
```yaml
meta:
  type: Arco Pro 最佳实践
title: 接口和数据模拟
description: 网络请求、拦截器及模拟数据
```

## 网络请求

使用axios进行远程接口请求。

建议完善返回及请求数据的类型定义。

 ```ts
import axios from 'axios';

export interface UserToken {
  token: string;
}

export interface UserStateTypes {
  name: string;
  location: string;
}
export function getUserInfo(data: UserToken) {
  // 通过传递泛型,以获得完整的类型提示。
  return axios.post<UserStateTypes>('/api/user/info', data);
}
```

## 拦截器

可以根据自身系统需要增加多层拦截器。

 ```ts
import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';
// 用户可以根据自身后台系统进行修改
export interface HttpResponse<T = unknown> {
  status: number;
  msg: string;
  code: number;
  data: T;
}

axios.interceptors.request.use(
  (config: AxiosRequestConfig) => {
    // 此处对请求进行配置
    return config;
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);
// 添加响应拦截器
axios.interceptors.response.use(
  (response: AxiosResponse<HttpResponse>) => {
    const res = response.data;
    // if the custom code is not 20000, it is judged as an error.
    if (res.code !== 20000) {
      // remind users

      // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
      if (
        [50008, 50012, 50014].includes(res.code)
      ) {
        // do something
      }
      return Promise.reject(new Error(res.msg || 'Error'));
    }
    return res;
  },
  (error) => {
    return Promise.reject(error);
  }
);
```

拦截 ajax 并返回模拟的数据

## mock解决方案

前后端并行开发意味着前端需要在没有接口数据的情况下进行开发,在这种情况下如果能提供模拟数据请求的功能,我们的数据请求代码就能正常书写,Pro 采用了 Mock.js 来实现这个功能。

Mock.js 会拦截 ajax 请求,如果有匹配的 mock 规则,就不会将 ajax 发出去,而是返回 mock 的数据。Mock.js 有着丰富的模拟数据生成方法,建议先读一下文档,文档写的很清晰易懂 [MockJs 文档](http://mockjs.com/)

 ```ts
import Mock from 'mockjs';
import {
  successResponseWrap,
} from '@/utils/setup-mock';

Mock.mock(new RegExp('/api/chatList'), () => {
    const data = Mock.mock(successResponseWrap({
        'data|4-6': [
            {
                'id|+1': 1,
                username: '用户7352772',
                content: '马上就开始了,好激动!',
                time: '13:09:12',
                'isCollect|2': true,
            },
        ],
    }));

    return data.data;
});
```

当客户端发送请求的 url 被 `new RegExp('/api/chatList')` 匹配到,Mock.js 就会拦截这条请求,并执行对应的回调函数,返回回调函数中 return 的数据。

> 注意:被 Mock.js 匹配并拦截的请求,不会出现在开发者工具的 network 面板中。

## 关闭 Mock

为了方便开启和关闭数据模拟功能,每个 `Mock` 都会被 `setupMock.setup` 包裹,setupMock 如下:

```
import { debug } from './env';
export default ({ mock, setup }: { mock?: boolean; setup: () => void; }) => {
  if (mock !== false && debug) setup();
};
```

非生产环境下默认启动数据模拟,当我们需要调试接口的时候只需要将 setupMock 的 mock 参数置为 false 即可,如下:

 ```ts
import Mock from 'mockjs';
import setupMock from '../utils/setupMock';

setupMock({
  mock: false
  setup() {
  // 用户信息
    Mock.mock(new RegExp('/api/userInfo'), () => {
        return {
          name: 'name',
        };
    });
  },
});
```


================================================
FILE: packages/arco-vue-docs/docs/pro/npm-scripts.en-US.md
================================================
```yaml
meta:
  type: Arco Pro
title: Npm Scripts
description: package.json script presets convenient and practical commands
```

*Auto translate by google.*

## Configuration file

```
├── README.md
├── config
│ ├── plugin  # vite plugin
│ ├── vite.config.base.ts  # Basic Environment Configuration
│ ├── vite.config.dev.ts # Development environment configuration
│ ├── vite.config.prod.ts # Production environment configuration
└── package.json
```

## Local development

```bash
npm run dev
```

The command invoked is as follows

```json
{
   "scripts": {
     "dev": "vite --config ./config/vite.config.dev.ts",
   }
}
```

## Build production

```bash
npm run build
```

The commands to be called are as follows. According to actual needs, please refer to [vite](https://vitejs.dev/)[Official Website](https://vitejs.dev/) for output configuration.

```json
{
   "scripts": {
     "build": "vue-tsc --noEmit && vite build --config ./config/vite.config.prod.ts",
   }
}
```


================================================
FILE: packages/arco-vue-docs/docs/pro/npm-scripts.zh-CN.md
================================================
```yaml
meta:
  type: Arco Pro 最佳实践
title: npm 命令
description: package.json script 预置方便实用的命令
```

## 配置文件

```
├── README.md
├── config
│   ├── plugin  # vite插件
│   ├── vite.config.base.ts  # 基础环境配置
│   ├── vite.config.dev.ts  # 开发环境配置
│   ├── vite.config.prod.ts  # 生产环境配置
└── package.json
```

## 本地开发

```bash
npm run dev
```

调用的命令如下

```json
{
  "scripts": {
    "dev": "vite --config ./config/vite.config.dev.ts",
  }
}
```

## 构建生产

```bash
npm run build
```

调用的命令如下,可以根据实际需要,查阅[vite](https://vitejs.dev/)[官网](https://vitejs.dev/),进行输出配置。

```json
{
  "scripts": {
    "build": "vue-tsc --noEmit && vite build --config ./config/vite.config.prod.ts",
  }
}
```


================================================
FILE: packages/arco-vue-docs/docs/pro/permission.en-US.md
================================================
```yaml
meta:
  type: Arco Pro
title: Permission control
description: Permission control is a very common basic function in middle and background scenarios. In v2.2.0, the permission control function was integrated into Arco Design Pro
```
*Auto translate by google.*

## Applicable scene

The common front-end permission control in the middle and background can be roughly summarized as the following scenarios:

1. Menu permission control, manage permissions for a certain menu/page , you can see this page, otherwise it will show no permission.

[//]: # (![]&#40;http://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/116622141d7b228ad2259c81cd32d095.gif~tplv-uwbnlip3yd-3.awebp&#41;)

2. Menu permission control, manage permissions for a certain menu/page , you can see this page, otherwise it will show no permission.


[//]: # (![]&#40;http://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/7b410fa5dad6e47665c264fae910c0c8.gif~tplv-uwbnlip3yd-3.awebp&#41;)


## Usage

### Menu permission management

For menu and routing permission control, you can add `roles` parameters . (If not added, the default is to have permission)

`roles` can be defined according to their own business.


```ts
export default {
  path: 'dashboard',
  name: 'dashboard',
  component: () => import('@/views/dashboard/index.vue'),
  meta: {
    locale: 'menu.dashboard',
    requiresAuth: true,
    icon: 'icon-dashboard',
  },
  children: [
    {
      path: 'workplace',
      name: 'workplace',
      component: () => import('@/views/dashboard/workplace/index.vue'),
      meta: {
        locale: 'menu.dashboard.workplace',
        requiresAuth: true,
        roles: ['*'], // * Indicates wildcard permissions. Tip: In order to write less code, you can also not define this field.
      },
    },
    {
      path: 'monitor',
      name: 'monitor',
      component: () => import('@/views/dashboard/monitor/index.vue'),
      meta: {
        locale: 'menu.dashboard.monitor',
        requiresAuth: true,
        roles: ['admin'],
      },
    },
  ],
};
```

### A button permission management

Arco Design Pro encapsulates the `v-permission` directives . Can be used on components or native elements.
As follows, place the authorized role types in the array.

```vue
<button v-permission="['admin']">Delete</button>

<a-button v-permission="['user']">Delete</a-button>
```

The above is the specific method of using the front-end page for permission control, but it needs to combine the back-end interface to return the specific permissions owned by the user to the front-end.

At the same time, in the middle and back-end systems, it is far from enough to have simple front-end permission control, and the back-end is also required to perform interface permission control. In particular, some interfaces involving write operations need to strictly control permissions.

## Accomplish

### Routing authority management

Pro provides corresponding permission management hooks. The permission requirements of the business can be customized.

```ts
#src/hooks/permission.ts

import { RouteLocationNormalized, RouteRecordRaw } from 'vue-router';
import { useUserStore } from '@/store';

export default function usePermission() {
  const userStore = useUserStore();
  return {
    accessRouter(route: RouteLocationNormalized | RouteRecordRaw) { // Determine whether the current user has permission to the route
      return (
        !route.meta?.requiresAuth ||
        !route.meta?.roles ||
        route.meta?.roles?.includes('*') ||
        route.meta?.roles?.includes(userStore.role)
      );
    },
    // You can add any rules you want
  };
}
```

Set up a route guard, and manage the user's page entry and exit in the route guard. For example, whether the current user has logged in and whether the current user has page permissions.

``` ts
router.beforeEach(async (to, from, next) => {
  const userStore = useUserStore();
  async function crossroads() {
    const Permission = usePermission();
    if (Permission.accessRouter(to)) await next();
    else {
      const destination = Permission.findFirstPermissionRoute(
        appRoutes,
        userStore.role
      ) || {
        name: 'notFound',
      }; // Go to the first authorized page or 404.
      await next(destination);
    }
  }
  if (isLogin()) { // Check if the user is logged in
    if (userStore.role) { // If there is role information, it means that the current user has logged in and obtained user information.
      crossroads();
    } else {
      try {
        await userStore.info(); // Obtain user role information and then perform subsequent jump processing
        crossroads();
      } catch (error) {
        next({
          name: 'login',
          query: {
            redirect: to.name,
            ...to.query,
          } as LocationQueryRaw,
        });
      }
    }
  } else {
    // Redirect to login page if not logged in
    if (to.name === 'login') {
      next();
      return;
    }
    next({
      name: 'login',
      query: {
        redirect: to.name,
        ...to.query,
      } as LocationQueryRaw,
    });
  }
});
```

Custom permission directive

```ts
import { DirectiveBinding } from 'vue';
import { useUserStore } from '@/store';

function checkPermission(el: HTMLElement, binding: DirectiveBinding) {
  const { value } = binding;
  const userStore = useUserStore();
  const { role } = userStore;

  if (Array.isArray(value)) {
    if (value.length > 0) {
      const permissionValues = value;
      // Compare the role permission of the current user with the permission type of the incoming command. If the current user does not have permission, the node deletion operation will be performed.
      const hasPermission = permissionValues.includes(role);
      if (!hasPermission && el.parentNode) {
        el.parentNode.removeChild(el);
      }
    }
  } else {
    throw new Error(`need roles! Like v-permission="['admin','user']"`);
  }
}

export default {
  mounted(el: HTMLElement, binding: DirectiveBinding) {
    checkPermission(el, binding);
  },
  updated(el: HTMLElement, binding: DirectiveBinding) {
    checkPermission(el, binding);
  },
};
```


================================================
FILE: packages/arco-vue-docs/docs/pro/permission.zh-CN.md
================================================
```yaml
meta:
  type: Arco Pro 最佳实践
title: 权限控制
description: 权限控制是中后台场景非常常见的基础功能,在 v2.2.0 将权限控制功能集成至 Arco Design Pro
```

## 适用场景

中后台常见的前端权限控制大概可概括为以下场景:

1. 菜单权限控制,针对**某个菜单/页面**进行权限管理,有则能看到此页面,否则将展示无权限。

[//]: # (![]&#40;http://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/116622141d7b228ad2259c81cd32d095.gif~tplv-uwbnlip3yd-3.awebp&#41;)

2. **针对某页面中的某触发器**进行权限管理,例如对列表页的某一条数据进行删除操作。有权限情况下则展示删除按钮。

[//]: # (![]&#40;http://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/7b410fa5dad6e47665c264fae910c0c8.gif~tplv-uwbnlip3yd-3.awebp&#41;)


## 使用

### 菜单权限管理

针对菜单及路由权限控制,可以在 路由配置项 中,对某项增加 `roles` 参数即可。(如果不加,默认为拥有权限)

`roles` 可以根据自己的业务进行定义。

```ts
export default {
  path: 'dashboard',
  name: 'dashboard',
  component: () => import('@/views/dashboard/index.vue'),
  meta: {
    locale: 'menu.dashboard',
    requiresAuth: true,
    icon: 'icon-dashboard',
  },
  children: [
    {
      path: 'workplace',
      name: 'workplace',
      component: () => import('@/views/dashboard/workplace/index.vue'),
      meta: {
        locale: 'menu.dashboard.workplace',
        requiresAuth: true,
        roles: ['*'], // * 表示通配权限。提示:为了少写点代码,也可以不定义这个字段。
      },
    },
    {
      path: 'monitor',
      name: 'monitor',
      component: () => import('@/views/dashboard/monitor/index.vue'),
      meta: {
        locale: 'menu.dashboard.monitor',
        requiresAuth: true,
        roles: ['admin'],
      },
    },
  ],
};
```

### 某按钮权限管理

Arco Design Pro 封装了 `v-permission` 指令。可在组件或者原生元素上使用。
如下,将有权限的角色类型放置在数组中即可。

```vue
<button v-permission="['admin']">删除</button>

<a-button v-permission="['user']">删除</a-button>
```

以上是前端页面进行权限控制的具体使用方法,但是需要结合后端接口将用户所拥有的具体权限返回至前端。

同时,在中后台系统中,仅仅有简单的前端权限控制是远远不够的,还需要后端进行接口权限控制。特别是涉及到写操作的一些接口,需要严格把控权限。

## 实现

### 路由权限管理

Pro提供对应的权限管理钩子。可以自定义业务的权限需求。

```ts
#src/hooks/permission.ts

import { RouteLocationNormalized, RouteRecordRaw } from 'vue-router';
import { useUserStore } from '@/store';

export default function usePermission() {
  const userStore = useUserStore();
  return {
    accessRouter(route: RouteLocationNormalized | RouteRecordRaw) { // 判断当前用户是否有该路由的权限
      return (
        !route.meta?.requiresAuth ||
        !route.meta?.roles ||
        route.meta?.roles?.includes('*') ||
        route.meta?.roles?.includes(userStore.role)
      );
    },
    // You can add any rules you want
  };
}
```

设置路由守卫,在路由守卫中对用户的页面进出进行管理。例如 当前用户是否已经登录、当前用户是否有页面权限。

``` ts
router.beforeEach(async (to, from, next) => {
  const userStore = useUserStore();
  async function crossroads() {
    const Permission = usePermission();
    if (Permission.accessRouter(to)) await next();
    else {
      const destination = Permission.findFirstPermissionRoute(
        appRoutes,
        userStore.role
      ) || {
        name: 'notFound',
      }; // 前往首个有权限的页面或者404。
      await next(destination);
    }
  }
  if (isLogin()) { // 判读用户是否登录
    if (userStore.role) { // 有角色信息表示当前用户已经登录且获取过用户信息
      crossroads();
    } else {
      try {
        await userStore.info(); // 获取用户角色信息后再进行后续跳转处理
        crossroads();
      } catch (error) {
        next({
          name: 'login',
          query: {
            redirect: to.name,
            ...to.query,
          } as LocationQueryRaw,
        });
      }
    }
  } else {
    // 如果未登录则重定向到登录页面
    if (to.name === 'login') {
      next();
      return;
    }
    next({
      name: 'login',
      query: {
        redirect: to.name,
        ...to.query,
      } as LocationQueryRaw,
    });
  }
});
```

自定义权限指令

```ts
import { DirectiveBinding } from 'vue';
import { useUserStore } from '@/store';

function checkPermission(el: HTMLElement, binding: DirectiveBinding) {
  const { value } = binding;
  const userStore = useUserStore();
  const { role } = userStore;

  if (Array.isArray(value)) {
    if (value.length > 0) {
      const permissionValues = value;
      // 对当前用户的角色权限和传入指令的权限类型进行比对。如果当前用户无权限则会执行节点删除操作。
      const hasPermission = permissionValues.includes(role);
      if (!hasPermission && el.parentNode) {
        el.parentNode.removeChild(el);
      }
    }
  } else {
    throw new Error(`need roles! Like v-permission="['admin','user']"`);
  }
}

export default {
  mounted(el: HTMLElement, binding: DirectiveBinding) {
    checkPermission(el, binding);
  },
  updated(el: HTMLElement, binding: DirectiveBinding) {
    checkPermission(el, binding);
  },
};
```






================================================
FILE: packages/arco-vue-docs/docs/pro/routes-and-menu.en-US.md
================================================
```yaml
meta:
  type: Arco Pro
title: Routes and menu
description: Route and menu generation
```

*Auto translate by google.*

The routing is usually tied to the menu. In order to reduce the amount of maintenance, we directly generate the menu through the routing table.

## Router

First, you need to understand the configuration of the routing table. For basic routing configuration, please refer to the official documentation of [Vue-Router](https://router.vuejs.org/)

 ```ts
// In this example, the final path to the page is /dashboard/workplace
export default {
  path: 'dashboard',
  name: 'dashboard',
  component: () => import('@/views/dashboard/index.vue'),
  meta: {
    locale: 'menu.dashboard',
    requiresAuth: true,
    icon: 'icon-dashboard',
  },
  children: [
    {
      path: 'workplace',
      name: 'workplace',
      component: () => import('@/views/dashboard/workplace/index.vue'),
      meta: {
        locale: 'menu.dashboard.workplace',
        requiresAuth: true,
        roles: ['admin'],
        hideInMenu: false,
      },
    },
  ],
};
```

Route `Meta` meta information

| Key	 | Description | Type | default|
| ------------- | ------------- | -------------- | -------------- |
roles | Configure the role that can access the page. If it does not match, it will be forbidden to access the routing page	 | string[]| - |
requiresAuth | Whether login authentication is required | boolean| false |
icon | Menu configuration icon | string| - |
locale | First-level menu name (language pack key name) | string| - |
hideInMenu | Whether to hide this item in the left menu | boolean| - |
hideChildrenInMenu | Force single item to be displayed in left menu | boolean| - |
activeMenu | If set name, the menu will be highlighted according to the name you set | string| - |
order | Sort routing menu items. If this value is set, the higher the value, the higher the front. | number| - |
noAffix | If set to true, the tabs will not be added to the tab-bar. | boolean| - |
ignoreCache | If set to true the page will not be cached | boolean| - |

## Menu

Front-end menu generation process:

- Through the computed property of [appRoute](https://github.com/arco-design/arco-design-pro-vue/blob/23a21ceb939e1e2334e8c3b0f1f8a8049503ad9d/arco-design-pro-vite/src/components/menu/useMenuTree.ts#L10), a routing tree with routing information is obtained.

- Use the routing information obtained in the previous step to filter permissions to generate a menu [tree for rendering](https://github.com/arco-design/arco-design-pro-vue/blob/23a21ceb939e1e2334e8c3b0f1f8a8049503ad9d/arco-design-pro-vite/src/components/menu/useMenuTree.ts#L23).

- Recursively generate menus by [rendering]((https://github.com/arco-design/arco-design-pro-vue/blob/23a21ceb939e1e2334e8c3b0f1f8a8049503ad9d/arco-design-pro-vite/src/components/menu/index.vue#L48)) the menu tree.

Server menu generation process:

- Add the [action](https://github.com/arco-design/arco-design-pro-vue/blob/23a21ceb939e1e2334e8c3b0f1f8a8049503ad9d/arco-design-pro-vite/src/store/modules/app/index.ts#L47) of the api request to the Store to obtain the routing configuration of the server.
  
- Add the action of the api request to the Store to obtain the routing configuration of the server.

- Through the computed property of [appRoute](https://github.com/arco-design/arco-design-pro-vue/blob/23a21ceb939e1e2334e8c3b0f1f8a8049503ad9d/arco-design-pro-vite/src/components/menu/useMenuTree.ts#L10), a routing tree with routing information is obtained.

- Use the routing information obtained in the previous step to filter permissions to generate a menu [tree for rendering](https://github.com/arco-design/arco-design-pro-vue/blob/23a21ceb939e1e2334e8c3b0f1f8a8049503ad9d/arco-design-pro-vite/src/components/menu/useMenuTree.ts#L23).

- Recursively generate menus by [rendering]((https://github.com/arco-design/arco-design-pro-vue/blob/23a21ceb939e1e2334e8c3b0f1f8a8049503ad9d/arco-design-pro-vite/src/components/menu/index.vue#L48)) the menu tree.

**Note: Compared with the local menu generation process, the server menu only has more interface requests and server routing configuration information storage steps.**
**Individual companies may have corresponding authority management systems to generate corresponding server-side routing configuration information and store them for front-end interface retrieval. However, the overall situation is similar, as long as the routing configuration information returned by the back-end interface conforms to the above routing configuration specifications and can be correctly parsed by the front-end**

## Steps to add a new menu item

After understanding the routing and menu generation, you can configure a new menu item. Take a new monitoring page as an example.

- Add a monitor folder in views/dashboard and add index.vue to it

 ```ts
<script lang="ts" setup><script>
```

- Add the routing configuration of the monitoring page in the routing table

```diff
export default {
  path:'dashboard',
  name:'dashboard',
  component: () => import('@/views/dashboard/index.vue'),
  meta: {
    locale:'menu.dashboard',
    requiresAuth: true,
    icon:'icon-dashboard',
  },
  children: [
    {
      path:'workplace',
      name:'workplace',
      component: () => import('@/views/dashboard/workplace/index.vue'),
      meta: {
        locale:'menu.dashboard.workplace',
        requiresAuth: true,
      },
    },
+   {
+     path:'monitor',
+     name:'monitor',
+     component: () => import('@/views/dashboard/monitor/index.vue'),
+     meta: {
+       locale:'menu.dashboard.monitor',
+       requiresAuth: true,
+       roles: ['admin'],
+     },
+   },
  ],
};
```

- Added menu name in language pack

The following is the Chinese language pack, other language packs will not be repeated.

```diff
// src/locale/zh-CN.ts
export default {
  'menu.dashboard':'Dashboard',
  'menu.dashboard.workplace':'Workbench',
+ 'menu.dashboard.monitor':'Real-time monitoring',
}
```

Above, the configuration of a menu item is completed. Now refresh the page to see the new menu item.

================================================
FILE: packages/arco-vue-docs/docs/pro/routes-and-menu.zh-CN.md
================================================
```yaml
meta:
  type: Arco Pro 最佳实践
title: 路由与菜单
description: 路由和菜单的生成
```

路由通常都和菜单绑定在一起,为了减少维护的量,我们直接通过路由表生成了菜单。

## 路由

首先,需要先了解一下路由表的配置。基本的路由配置请参阅 [Vue-Router](https://router.vuejs.org/) 官方文档

 ```ts
// 在本例子中,页面最终路径为 /dashboard/workplace
export default {
  path: 'dashboard',
  name: 'dashboard', // 路由名称
  component: () => import('@/views/dashboard/index.vue'),
  meta: {
    locale: 'menu.dashboard',
    requiresAuth: true,
    icon: 'icon-dashboard',
  },
  children: [
    {
      path: 'workplace',
      name: 'workplace',
      component: () => import('@/views/dashboard/workplace/index.vue'),
      meta: {
        locale: 'menu.dashboard.workplace',
        requiresAuth: true,
        roles: ['admin'],
        hideInMenu: false,
      },
    },
  ],
};
```

路由 `Meta` 元信息


| 参数名	 | 说明 | 类型 | 默认值|
| ------------- | ------------- | -------------- | -------------- |
roles | 配置能访问该页面的角色,如果不匹配,则会被禁止访问该路由页面	 | string[]| - |
requiresAuth | 是否需要登录鉴权 | boolean| false |
icon | 菜单配置icon | string| - |
locale | 一级菜单名(语言包键名) | string| - |
hideInMenu | 是否在左侧菜单中隐藏该项 | boolean| - |
hideChildrenInMenu | 强制在左侧菜单中显示单项 | boolean| - |
activeMenu | 高亮设置的菜单项 | string| - |
order | 排序路由菜单项。如果设置该值,值越高,越靠前 | number| - |
noAffix | 如果设置为true,标签将不会添加到tab-bar中 | boolean| - |
ignoreCache | 如果设置为true页面将不会被缓存 | boolean| - |

## 菜单

前端菜单生成过程:

- 通过 [appRoute](https://github.com/arco-design/arco-design-pro-vue/blob/23a21ceb939e1e2334e8c3b0f1f8a8049503ad9d/arco-design-pro-vite/src/components/menu/useMenuTree.ts#L10) 计算属性,得到带有路由信息的路由树。

- 使用上一步获取的路由信息进行权限过滤,生成用于渲染的 [菜单树](https://github.com/arco-design/arco-design-pro-vue/blob/23a21ceb939e1e2334e8c3b0f1f8a8049503ad9d/arco-design-pro-vite/src/components/menu/useMenuTree.ts#L23)。

- 通过 [渲染](https://github.com/arco-design/arco-design-pro-vue/blob/23a21ceb939e1e2334e8c3b0f1f8a8049503ad9d/arco-design-pro-vite/src/components/menu/index.vue#L48) 菜单树,递归生成菜单。

服务端菜单生成过程:

- 在Store中增加api请求的 [action](https://github.com/arco-design/arco-design-pro-vue/blob/23a21ceb939e1e2334e8c3b0f1f8a8049503ad9d/arco-design-pro-vite/src/store/modules/app/index.ts#L47),用于获取服务端的路由配置。

- 发起请求,将服务端的路由配置结果存储在Store中。
  
- 通过 [appRoute](https://github.com/arco-design/arco-design-pro-vue/blob/23a21ceb939e1e2334e8c3b0f1f8a8049503ad9d/arco-design-pro-vite/src/components/menu/useMenuTree.ts#L10) 计算属性,得到带有路由信息的路由树。

- 使用上一步获取的路由信息进行权限过滤,生成用于渲染的 [菜单树](https://github.com/arco-design/arco-design-pro-vue/blob/23a21ceb939e1e2334e8c3b0f1f8a8049503ad9d/arco-design-pro-vite/src/components/menu/useMenuTree.ts#L23)。

- 通过 [渲染](https://github.com/arco-design/arco-design-pro-vue/blob/23a21ceb939e1e2334e8c3b0f1f8a8049503ad9d/arco-design-pro-vite/src/components/menu/index.vue#L48) 菜单树,递归生成菜单。

**说明:服务端菜单相对于本地菜单生成过程,仅仅是多了接口请求以及服务端路由配置信息存储的步骤。**
**个别公司可能会有相应的权限管理系统,以生成相应的服务端路由配置信息,并进行储存,以供前端进行接口调取。但总体大同小异,只要后端接口返回的路由配置信息,符合上述路由配置规范,并能被前端正确解析即可**

## 新增一个菜单项的步骤

了解完路由和菜单的生成,就可以上手配置一个新的菜单项了,以新增一个监控页面为例。

- 在 views/dashboard 中新增一个 monitor 文件夹,并在其中新增 index.vue

 ```ts
<script
Download .txt
gitextract_qdd6vk9x/

├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   └── config.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── deploy-site-preview.yml
│       ├── issue-duplicate.yml
│       ├── issue-labeled.yml
│       ├── issue-manager.yml
│       ├── issue-remove-inactive.yml
│       ├── pr_check.yml
│       └── release.yml
├── .gitignore
├── .husky/
│   ├── commit-msg
│   └── pre-commit
├── .npmrc
├── .nvmrc
├── .prettierrc.js
├── .vscode/
│   └── settings.json
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── CONTRIBUTING.zh-CN.md
├── LICENSE
├── README.md
├── README.zh-CN.md
├── commitlint.config.js
├── package.json
├── packages/
│   ├── arco-changelog/
│   │   ├── .eslintignore
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── .prettierrc.js
│   │   ├── README.md
│   │   ├── copy-template.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── .github/
│   │   │   │   └── PULL_REQUEST_TEMPLATE.md
│   │   │   ├── .gitlab/
│   │   │   │   └── merge_request_templates/
│   │   │   │       └── CHANGELOG.md
│   │   │   ├── changelog.ts
│   │   │   ├── cmd.ts
│   │   │   ├── config.ts
│   │   │   ├── copy-github.js
│   │   │   ├── default/
│   │   │   │   ├── emit-files.ts
│   │   │   │   ├── template.en-US.njk
│   │   │   │   └── template.zh-CN.njk
│   │   │   ├── index.ts
│   │   │   ├── interface.ts
│   │   │   ├── test.md
│   │   │   ├── utils/
│   │   │   │   ├── config.ts
│   │   │   │   ├── convert-case.ts
│   │   │   │   ├── invert.ts
│   │   │   │   └── version.ts
│   │   │   └── vue/
│   │   │       ├── emit-files.ts
│   │   │       ├── template.en-US.njk
│   │   │       ├── template.zh-CN.njk
│   │   │       └── vue.config.ts
│   │   └── tsconfig.json
│   ├── arco-vue-docs/
│   │   ├── .eslintignore
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── .prettierrc.js
│   │   ├── .stylelintrc.js
│   │   ├── README.md
│   │   ├── app.vue
│   │   ├── components/
│   │   │   ├── anchor-head/
│   │   │   │   ├── index.vue
│   │   │   │   └── style.less
│   │   │   ├── article/
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.vue
│   │   │   │   └── style.less
│   │   │   ├── aside-anchor/
│   │   │   │   ├── index.vue
│   │   │   │   ├── interface.ts
│   │   │   │   └── style.less
│   │   │   ├── aside-nav/
│   │   │   │   ├── index.vue
│   │   │   │   └── style.less
│   │   │   ├── cell-code/
│   │   │   │   ├── index.vue
│   │   │   │   └── style.less
│   │   │   ├── cell-demo/
│   │   │   │   ├── index.vue
│   │   │   │   └── style.less
│   │   │   ├── changelog-box/
│   │   │   │   └── index.vue
│   │   │   ├── code-block/
│   │   │   │   ├── index.vue
│   │   │   │   └── style.less
│   │   │   ├── footer/
│   │   │   │   ├── index.vue
│   │   │   │   └── style.less
│   │   │   ├── logo/
│   │   │   │   └── index.vue
│   │   │   ├── navbar/
│   │   │   │   ├── index.vue
│   │   │   │   └── style.less
│   │   │   ├── theme-box/
│   │   │   │   ├── index.vue
│   │   │   │   └── interface.ts
│   │   │   └── token-table/
│   │   │       └── token-table.vue
│   │   ├── context.ts
│   │   ├── docs/
│   │   │   ├── dark.en-US.md
│   │   │   ├── dark.zh-CN.md
│   │   │   ├── faq.en-US.md
│   │   │   ├── faq.zh-CN.md
│   │   │   ├── i18n.en-US.md
│   │   │   ├── i18n.zh-CN.md
│   │   │   ├── pro/
│   │   │   │   ├── build.en-US.md
│   │   │   │   ├── build.zh-CN.md
│   │   │   │   ├── directory.en-US.md
│   │   │   │   ├── directory.zh-CN.md
│   │   │   │   ├── faq.en-US.md
│   │   │   │   ├── faq.zh-CN.md
│   │   │   │   ├── i18n.en-US.md
│   │   │   │   ├── i18n.zh-CN.md
│   │   │   │   ├── layout.en-US.md
│   │   │   │   ├── layout.zh-CN.md
│   │   │   │   ├── mock.en-US.md
│   │   │   │   ├── mock.zh-CN.md
│   │   │   │   ├── npm-scripts.en-US.md
│   │   │   │   ├── npm-scripts.zh-CN.md
│   │   │   │   ├── permission.en-US.md
│   │   │   │   ├── permission.zh-CN.md
│   │   │   │   ├── routes-and-menu.en-US.md
│   │   │   │   ├── routes-and-menu.zh-CN.md
│   │   │   │   ├── start.en-US.md
│   │   │   │   ├── start.zh-CN.md
│   │   │   │   ├── state-management-pinia.en-US.md
│   │   │   │   ├── state-management-pinia.zh-CN.md
│   │   │   │   ├── state-management.en-US.md
│   │   │   │   └── state-management.zh-CN.md
│   │   │   ├── start.en-US.md
│   │   │   ├── start.zh-CN.md
│   │   │   ├── theme.en-US.md
│   │   │   └── theme.zh-CN.md
│   │   ├── global.d.ts
│   │   ├── hooks/
│   │   │   ├── useLanguage.ts
│   │   │   └── useTheme.ts
│   │   ├── index.html
│   │   ├── index.ts
│   │   ├── locale/
│   │   │   ├── en-us.js
│   │   │   ├── index.js
│   │   │   └── zh-cn.js
│   │   ├── package.json
│   │   ├── pages/
│   │   │   ├── changelog/
│   │   │   │   ├── changelog.vue
│   │   │   │   └── style/
│   │   │   │       └── index.less
│   │   │   ├── icon/
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── icon-font.md
│   │   │   │   │   ├── spin.md
│   │   │   │   │   └── tree-shaking.md
│   │   │   │   ├── icon-demo.vue
│   │   │   │   ├── icons.json
│   │   │   │   └── style.less
│   │   │   └── token/
│   │   │       ├── token.vue
│   │   │       └── tokens.ts
│   │   ├── router.ts
│   │   ├── style/
│   │   │   ├── demo.less
│   │   │   └── index.less
│   │   ├── tsconfig.json
│   │   └── utils/
│   │       ├── api.ts
│   │       ├── clipboard.ts
│   │       ├── code-sandbox.ts
│   │       ├── code-stackblitz.ts
│   │       ├── code-template.ts
│   │       ├── codepen.ts
│   │       ├── join-chart.ts
│   │       ├── local-storage.ts
│   │       ├── login.ts
│   │       └── strings.ts
│   ├── arco-vue-docs-navbar/
│   │   ├── .eslintignore
│   │   ├── .gitignore
│   │   ├── README.md
│   │   ├── dist/
│   │   │   ├── index.d.ts
│   │   │   ├── index.js
│   │   │   └── style.css
│   │   ├── package.json
│   │   ├── plugins/
│   │   │   └── rollup-plugin-svgr.ts
│   │   ├── src/
│   │   │   ├── index.less
│   │   │   ├── index.tsx
│   │   │   ├── navbar.css
│   │   │   ├── navbar.less
│   │   │   └── style/
│   │   │       ├── history.less
│   │   │       ├── hot.less
│   │   │       └── list.less
│   │   ├── tsconfig.json
│   │   └── vite.config.ts
│   ├── arco-vue-scripts/
│   │   ├── .eslintignore
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── .prettierrc.js
│   │   ├── README.md
│   │   ├── copy-template.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── configs/
│   │   │   │   ├── jest.config.ts
│   │   │   │   ├── vite.dev.ts
│   │   │   │   ├── vite.material.library.ts
│   │   │   │   ├── vite.material.library.umd.ts
│   │   │   │   ├── vite.material.prod.ts
│   │   │   │   ├── vite.material.style.ts
│   │   │   │   ├── vite.prod.style.ts
│   │   │   │   ├── vite.prod.ts
│   │   │   │   ├── vite.prod.umd.ts
│   │   │   │   ├── vite.site.dev.ts
│   │   │   │   └── vite.site.prod.ts
│   │   │   ├── index.ts
│   │   │   ├── plugins/
│   │   │   │   ├── md-vue-jest/
│   │   │   │   │   └── index.js
│   │   │   │   ├── vite-plugin-cssjs/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── vite-plugin-external/
│   │   │   │   │   └── index.ts
│   │   │   │   └── vite-plugin-vue-export-helper/
│   │   │   │       └── index.ts
│   │   │   ├── scripts/
│   │   │   │   ├── build-component/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── build-material/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── build-material-library/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── build-site/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── build-style/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── changelog/
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── template/
│   │   │   │   │   │   ├── main.en-US.njk
│   │   │   │   │   │   └── main.zh-CN.njk
│   │   │   │   │   └── utils.ts
│   │   │   │   ├── dev-component/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── dev-site/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── docgen/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── slot-tag-handler.ts
│   │   │   │   │   ├── templates/
│   │   │   │   │   │   ├── events.ts
│   │   │   │   │   │   ├── index.ts
│   │   │   │   │   │   ├── methods.ts
│   │   │   │   │   │   ├── props.ts
│   │   │   │   │   │   └── slots.ts
│   │   │   │   │   └── utils/
│   │   │   │   │       ├── index.ts
│   │   │   │   │       ├── parse-interface.ts
│   │   │   │   │       ├── parse-material.ts
│   │   │   │   │       └── print.ts
│   │   │   │   ├── dtsgen/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── icongen/
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── svgo.config.ts
│   │   │   │   │   └── vue-template.ts
│   │   │   │   ├── jsongen/
│   │   │   │   │   └── index.ts
│   │   │   │   ├── lessgen/
│   │   │   │   │   └── index.ts
│   │   │   │   └── test/
│   │   │   │       ├── index.ts
│   │   │   │       └── screentshot.ts
│   │   │   └── utils/
│   │   │       ├── config.ts
│   │   │       ├── convert-case.ts
│   │   │       ├── get-package.ts
│   │   │       ├── paths.ts
│   │   │       └── rollup.ts
│   │   └── tsconfig.json
│   ├── vite-plugin-arco-vue-docs/
│   │   ├── .eslintignore
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── .prettierrc.js
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── descriptor.ts
│   │   │   ├── index.ts
│   │   │   ├── interface.ts
│   │   │   ├── markdown.ts
│   │   │   ├── marked.ts
│   │   │   ├── parse-changelog.ts
│   │   │   ├── utils.ts
│   │   │   └── vue-template.ts
│   │   └── tsconfig.json
│   ├── web-vue/
│   │   ├── .eslintignore
│   │   ├── .eslintrc.js
│   │   ├── .gitignore
│   │   ├── .prettierrc.js
│   │   ├── .stylelintrc.js
│   │   ├── CHANGELOG.md
│   │   ├── CHANGELOG.zh-CN.md
│   │   ├── README.md
│   │   ├── README.zh-CN.md
│   │   ├── babel.config.js
│   │   ├── components/
│   │   │   ├── _components/
│   │   │   │   ├── auto-tooltip/
│   │   │   │   │   ├── auto-tooltip.tsx
│   │   │   │   │   └── style/
│   │   │   │   │       ├── index.less
│   │   │   │   │       └── index.ts
│   │   │   │   ├── client-only.tsx
│   │   │   │   ├── feedback-icon.vue
│   │   │   │   ├── icon-hover.vue
│   │   │   │   ├── input-label/
│   │   │   │   │   ├── input-label.tsx
│   │   │   │   │   └── style/
│   │   │   │   │       ├── index.less
│   │   │   │   │       ├── index.ts
│   │   │   │   │       ├── input-label.less
│   │   │   │   │       └── token.less
│   │   │   │   ├── picker/
│   │   │   │   │   ├── input-range.vue
│   │   │   │   │   ├── input.vue
│   │   │   │   │   └── style/
│   │   │   │   │       ├── index.less
│   │   │   │   │       └── token.less
│   │   │   │   ├── render-function.ts
│   │   │   │   ├── resize-observer-v2.ts
│   │   │   │   ├── resize-observer.tsx
│   │   │   │   ├── resize-trigger.vue
│   │   │   │   ├── select-view/
│   │   │   │   │   ├── interface.ts
│   │   │   │   │   ├── select-view.tsx
│   │   │   │   │   └── style/
│   │   │   │   │       ├── index.less
│   │   │   │   │       ├── index.ts
│   │   │   │   │       └── token.less
│   │   │   │   ├── transition/
│   │   │   │   │   └── expand-transition.vue
│   │   │   │   ├── virtual-list/
│   │   │   │   │   ├── filler.vue
│   │   │   │   │   ├── hooks/
│   │   │   │   │   │   ├── use-item-height.ts
│   │   │   │   │   │   ├── use-range-state.ts
│   │   │   │   │   │   ├── use-render-children.tsx
│   │   │   │   │   │   ├── use-scroll-to.ts
│   │   │   │   │   │   └── use-viewport-height.ts
│   │   │   │   │   ├── interface.ts
│   │   │   │   │   ├── utils/
│   │   │   │   │   │   ├── algorithm.ts
│   │   │   │   │   │   └── index.ts
│   │   │   │   │   └── virtual-list.vue
│   │   │   │   └── virtual-list-v2/
│   │   │   │       ├── hooks/
│   │   │   │       │   └── use-size.ts
│   │   │   │       ├── index.ts
│   │   │   │       ├── interface.ts
│   │   │   │       ├── virtual-list-item.tsx
│   │   │   │       └── virtual-list.vue
│   │   │   ├── _hooks/
│   │   │   │   ├── use-children-components.ts
│   │   │   │   ├── use-component-ref.ts
│   │   │   │   ├── use-cursor.ts
│   │   │   │   ├── use-first-element.ts
│   │   │   │   ├── use-form-item.ts
│   │   │   │   ├── use-index.ts
│   │   │   │   ├── use-input.ts
│   │   │   │   ├── use-merge-state.ts
│   │   │   │   ├── use-overflow.ts
│   │   │   │   ├── use-pagination.ts
│   │   │   │   ├── use-pick-slots.ts
│   │   │   │   ├── use-popup-container.ts
│   │   │   │   ├── use-popup-manager.ts
│   │   │   │   ├── use-popup-overflow-hidden.ts
│   │   │   │   ├── use-pure-prop.ts
│   │   │   │   ├── use-resize-observer.ts
│   │   │   │   ├── use-responsive.ts
│   │   │   │   ├── use-scrollbar.ts
│   │   │   │   ├── use-size.ts
│   │   │   │   ├── use-state.ts
│   │   │   │   ├── use-teleport-container.ts
│   │   │   │   └── use-trigger.ts
│   │   │   ├── _utils/
│   │   │   │   ├── array.ts
│   │   │   │   ├── clipboard.ts
│   │   │   │   ├── color.ts
│   │   │   │   ├── constant.ts
│   │   │   │   ├── convert-case.ts
│   │   │   │   ├── date.ts
│   │   │   │   ├── debounce.ts
│   │   │   │   ├── dom.ts
│   │   │   │   ├── get-value-by-path.ts
│   │   │   │   ├── global-config.ts
│   │   │   │   ├── is-equal.ts
│   │   │   │   ├── is.ts
│   │   │   │   ├── keyboard.ts
│   │   │   │   ├── keycode.ts
│   │   │   │   ├── omit.ts
│   │   │   │   ├── pad.ts
│   │   │   │   ├── pick-sub-comp-slots.ts
│   │   │   │   ├── pick.ts
│   │   │   │   ├── raf.ts
│   │   │   │   ├── responsive-observe.ts
│   │   │   │   ├── style.ts
│   │   │   │   ├── throttle-by-raf.ts
│   │   │   │   ├── to-array.ts
│   │   │   │   ├── types.ts
│   │   │   │   ├── use-prop-or-slot.ts
│   │   │   │   └── vue-utils.ts
│   │   │   ├── affix/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── bottom.md
│   │   │   │   │   ├── container.md
│   │   │   │   │   ├── fix-change.md
│   │   │   │   │   └── top.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.tsx
│   │   │   │   ├── affix.vue
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       └── index.ts
│   │   │   ├── alert/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── action.md
│   │   │   │   │   ├── banner.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── closable.md
│   │   │   │   │   ├── close-element.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── title.md
│   │   │   │   │   └── type.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── alert.vue
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── anchor/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── affix.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── boundary.md
│   │   │   │   │   ├── hash.md
│   │   │   │   │   └── line-less.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── anchor-link.vue
│   │   │   │   ├── anchor.vue
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── arco-vue.ts
│   │   │   ├── auto-complete/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── footer.md
│   │   │   │   │   ├── scroll.md
│   │   │   │   │   ├── strict.md
│   │   │   │   │   └── virtual-list.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── auto-complete.tsx
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── avatar/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── fit.md
│   │   │   │   │   ├── group.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── image-url.md
│   │   │   │   │   └── size.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── avatar-group.tsx
│   │   │   │   ├── avatar.vue
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── back-top/
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   └── custom.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── back-top.vue
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── badge/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── alone.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── color.md
│   │   │   │   │   ├── dot.md
│   │   │   │   │   ├── max.md
│   │   │   │   │   ├── status.md
│   │   │   │   │   └── text.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── badge.tsx
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── breadcrumb/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── dropdown.md
│   │   │   │   │   ├── ellipsis.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── routes.md
│   │   │   │   │   ├── separator.md
│   │   │   │   │   └── size.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── breadcrumb-item.tsx
│   │   │   │   ├── breadcrumb.tsx
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── button/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── group.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── loading.md
│   │   │   │   │   ├── long.md
│   │   │   │   │   ├── shape.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── status.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── button-group.vue
│   │   │   │   ├── button.vue
│   │   │   │   ├── constants.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── calendar/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   └── basic.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── calendar.tsx
│   │   │   │   ├── header.tsx
│   │   │   │   ├── hooks/
│   │   │   │   │   └── useCellClassName.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── month.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── week.tsx
│   │   │   │   └── year.tsx
│   │   │   ├── card/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── actions.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── bordered.md
│   │   │   │   │   ├── content.md
│   │   │   │   │   ├── grid.md
│   │   │   │   │   ├── hoverable.md
│   │   │   │   │   ├── inner.md
│   │   │   │   │   ├── meta.md
│   │   │   │   │   └── row.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── card-grid.vue
│   │   │   │   ├── card-meta.tsx
│   │   │   │   ├── card.tsx
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── carousel/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── auto.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── card.md
│   │   │   │   │   ├── direction.md
│   │   │   │   │   ├── fade.md
│   │   │   │   │   └── indicator.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── carousel-arrow.vue
│   │   │   │   ├── carousel-indicator.vue
│   │   │   │   ├── carousel-item.vue
│   │   │   │   ├── carousel.tsx
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       ├── slide.less
│   │   │   │       └── token.less
│   │   │   ├── cascader/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── check-strictly.md
│   │   │   │   │   ├── clear.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── expand.md
│   │   │   │   │   ├── fallback.md
│   │   │   │   │   ├── field-names.md
│   │   │   │   │   ├── format.md
│   │   │   │   │   ├── lazy-load.md
│   │   │   │   │   ├── loading.md
│   │   │   │   │   ├── multiple.md
│   │   │   │   │   ├── panel.md
│   │   │   │   │   ├── path.md
│   │   │   │   │   ├── search.md
│   │   │   │   │   └── virtual.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── base-cascader-panel.tsx
│   │   │   │   ├── cascader-column.tsx
│   │   │   │   ├── cascader-option.tsx
│   │   │   │   ├── cascader-panel.vue
│   │   │   │   ├── cascader-search-panel.tsx
│   │   │   │   ├── cascader.vue
│   │   │   │   ├── context.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   └── use-selected-path.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── checkbox/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── all.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── control.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── group.md
│   │   │   │   │   ├── layout.md
│   │   │   │   │   ├── limit.md
│   │   │   │   │   └── options.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── checkbox-group.tsx
│   │   │   │   ├── checkbox.tsx
│   │   │   │   ├── context.ts
│   │   │   │   ├── icon-check.tsx
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── collapse/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── accordion.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── border-less.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── destroy.md
│   │   │   │   │   ├── expand-icon.md
│   │   │   │   │   ├── extra.md
│   │   │   │   │   ├── icon-position.md
│   │   │   │   │   └── nested.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── collapse-item.tsx
│   │   │   │   ├── collapse.vue
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── color-picker/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── colors.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── format.md
│   │   │   │   │   ├── only-panel.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   ├── trigger-element.md
│   │   │   │   │   └── trigger.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── color-picker.tsx
│   │   │   │   ├── colors.ts
│   │   │   │   ├── control-bar.tsx
│   │   │   │   ├── hooks/
│   │   │   │   │   └── use-control-block.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── input-alpha.tsx
│   │   │   │   ├── input-hex.tsx
│   │   │   │   ├── input-rgb.tsx
│   │   │   │   ├── interface.ts
│   │   │   │   ├── palette.tsx
│   │   │   │   ├── panel.tsx
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── comment/
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── align.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── editor.md
│   │   │   │   │   └── nest.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── comment.vue
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── components.ts
│   │   │   ├── config-provider/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── empty.md
│   │   │   │   │   └── rtl.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── config-provider.vue
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       └── index.ts
│   │   │   ├── date-picker/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── control.md
│   │   │   │   │   ├── date-render.md
│   │   │   │   │   ├── default-value.md
│   │   │   │   │   ├── disabled-date-advance.md
│   │   │   │   │   ├── disabled-date.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── extra.md
│   │   │   │   │   ├── month.md
│   │   │   │   │   ├── panel-only.md
│   │   │   │   │   ├── prefix.md
│   │   │   │   │   ├── quarter.md
│   │   │   │   │   ├── range.md
│   │   │   │   │   ├── shortcuts-position.md
│   │   │   │   │   ├── shortcuts.md
│   │   │   │   │   ├── showtime.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   ├── trigger-element.md
│   │   │   │   │   ├── week.md
│   │   │   │   │   └── year.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   ├── use-cell-class-name.ts
│   │   │   │   │   ├── use-format.ts
│   │   │   │   │   ├── use-header-value.ts
│   │   │   │   │   ├── use-inject-datepicker-transform.ts
│   │   │   │   │   ├── use-is-disabled-date.ts
│   │   │   │   │   ├── use-panel-span.ts
│   │   │   │   │   ├── use-picker-state.ts
│   │   │   │   │   ├── use-provide-datepicker-transform.ts
│   │   │   │   │   ├── use-range-header-value.ts
│   │   │   │   │   ├── use-range-picker-state.ts
│   │   │   │   │   ├── use-range-time-picker-value.ts
│   │   │   │   │   ├── use-time-picker-value.ts
│   │   │   │   │   └── use-value-format.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── panels/
│   │   │   │   │   ├── body.vue
│   │   │   │   │   ├── date/
│   │   │   │   │   │   └── index.vue
│   │   │   │   │   ├── footer.vue
│   │   │   │   │   ├── header.vue
│   │   │   │   │   ├── month/
│   │   │   │   │   │   └── index.vue
│   │   │   │   │   ├── quarter/
│   │   │   │   │   │   └── index.vue
│   │   │   │   │   ├── shortcuts.vue
│   │   │   │   │   ├── week/
│   │   │   │   │   │   └── index.vue
│   │   │   │   │   ├── week-list.vue
│   │   │   │   │   └── year/
│   │   │   │   │       └── index.vue
│   │   │   │   ├── picker-panel.vue
│   │   │   │   ├── picker.vue
│   │   │   │   ├── pickers/
│   │   │   │   │   ├── date-picker.tsx
│   │   │   │   │   ├── month-picker.tsx
│   │   │   │   │   ├── quarter-picker.tsx
│   │   │   │   │   ├── week-picker.tsx
│   │   │   │   │   └── year-picker.tsx
│   │   │   │   ├── range-picker-panel.vue
│   │   │   │   ├── range-picker.vue
│   │   │   │   ├── style/
│   │   │   │   │   ├── date.less
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── month.less
│   │   │   │   │   ├── quarter.less
│   │   │   │   │   ├── range.less
│   │   │   │   │   ├── shortcuts.less
│   │   │   │   │   ├── token.less
│   │   │   │   │   ├── week.less
│   │   │   │   │   └── year.less
│   │   │   │   └── utils/
│   │   │   │       └── index.ts
│   │   │   ├── descriptions/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── align.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── bordered.md
│   │   │   │   │   ├── example.md
│   │   │   │   │   ├── layout.md
│   │   │   │   │   └── single.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── descriptions-item.vue
│   │   │   │   ├── descriptions.tsx
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── divider/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── vertical.md
│   │   │   │   │   └── with-text.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── divider.tsx
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── drawer/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── async.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── function.md
│   │   │   │   │   ├── nested.md
│   │   │   │   │   ├── popup-container.md
│   │   │   │   │   └── position.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── drawer.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── dropdown/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── button.md
│   │   │   │   │   ├── context-menu.md
│   │   │   │   │   ├── group.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── position.md
│   │   │   │   │   ├── submenu.md
│   │   │   │   │   └── trigger.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── dropdown-button.vue
│   │   │   │   ├── dropdown-group.vue
│   │   │   │   ├── dropdown-option.vue
│   │   │   │   ├── dropdown-panel.vue
│   │   │   │   ├── dropdown-submenu.vue
│   │   │   │   ├── dropdown.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── empty/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   └── custom.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── empty.tsx
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── form/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── async.md
│   │   │   │   │   ├── auto-width.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── dynamic.md
│   │   │   │   │   ├── extra.md
│   │   │   │   │   ├── grid.md
│   │   │   │   │   ├── layout.md
│   │   │   │   │   ├── nest.md
│   │   │   │   │   ├── scroll.md
│   │   │   │   │   ├── status.md
│   │   │   │   │   ├── validation.md
│   │   │   │   │   └── validation2.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   ├── demo.vue
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── form-item-label.vue
│   │   │   │   ├── form-item-message.vue
│   │   │   │   ├── form-item.vue
│   │   │   │   ├── form.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── status.less
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── grid/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── adaptation-object.md
│   │   │   │   │   ├── adaptation.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── flex-align.md
│   │   │   │   │   ├── flex-justify.md
│   │   │   │   │   ├── flex.md
│   │   │   │   │   ├── grid-responsive.md
│   │   │   │   │   ├── grid.md
│   │   │   │   │   ├── gutter.md
│   │   │   │   │   ├── offset.md
│   │   │   │   │   └── order.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── grid-col.vue
│   │   │   │   ├── grid-item.vue
│   │   │   │   ├── grid-row.vue
│   │   │   │   ├── grid.vue
│   │   │   │   ├── hook/
│   │   │   │   │   ├── use-responsive-state.ts
│   │   │   │   │   └── use-responsive-value.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── col.less
│   │   │   │   │   ├── grid.less
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── row.less
│   │   │   │   └── utils/
│   │   │   │       └── index.ts
│   │   │   ├── icon-component/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── add-from-icon-font-cn.tsx
│   │   │   │   ├── icon.vue
│   │   │   │   ├── index.ts
│   │   │   │   └── style/
│   │   │   │       └── index.ts
│   │   │   ├── image/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── caption.md
│   │   │   │   │   ├── component-preview-group.md
│   │   │   │   │   ├── component-preview.md
│   │   │   │   │   ├── custom-preview-actions.md
│   │   │   │   │   ├── error.md
│   │   │   │   │   ├── extra.md
│   │   │   │   │   ├── loader.md
│   │   │   │   │   ├── preview-group.md
│   │   │   │   │   ├── preview-popup-container.md
│   │   │   │   │   └── progressive-loader.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   ├── use-image-drag.ts
│   │   │   │   │   └── use-image-load-status.ts
│   │   │   │   ├── image-footer.vue
│   │   │   │   ├── image.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── preview-action.tsx
│   │   │   │   ├── preview-arrow.vue
│   │   │   │   ├── preview-group.vue
│   │   │   │   ├── preview-toolbar.vue
│   │   │   │   ├── preview.vue
│   │   │   │   ├── style/
│   │   │   │   │   ├── image.less
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── preview.less
│   │   │   │   │   ├── token.less
│   │   │   │   │   └── trigger.less
│   │   │   │   └── utils/
│   │   │   │       ├── get-fix-translate.ts
│   │   │   │       ├── get-scale.ts
│   │   │   │       └── index.ts
│   │   │   ├── index.less
│   │   │   ├── index.ts
│   │   │   ├── input/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── group.md
│   │   │   │   │   ├── password.md
│   │   │   │   │   ├── prefix.md
│   │   │   │   │   ├── prepend.md
│   │   │   │   │   ├── search-button.md
│   │   │   │   │   ├── search-loading.md
│   │   │   │   │   ├── search.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   ├── status.md
│   │   │   │   │   └── word-limit.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── input-group.vue
│   │   │   │   ├── input-password.vue
│   │   │   │   ├── input-search.tsx
│   │   │   │   ├── input.tsx
│   │   │   │   └── style/
│   │   │   │       ├── group.less
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       ├── input.less
│   │   │   │       ├── password.less
│   │   │   │       ├── search.less
│   │   │   │       ├── size.less
│   │   │   │       ├── textarea.less
│   │   │   │       └── token.less
│   │   │   ├── input-number/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── format.md
│   │   │   │   │   ├── mode.md
│   │   │   │   │   ├── model.md
│   │   │   │   │   ├── precision.md
│   │   │   │   │   ├── prefix.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── step-icon.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── input-number.tsx
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── input-tag/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── max.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── status.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── input-tag.tsx
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── input-tag.less
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── layout/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── breakpoint.md
│   │   │   │   │   ├── collapsed.md
│   │   │   │   │   ├── custom-icon.md
│   │   │   │   │   └── resize.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── content.vue
│   │   │   │   ├── context.ts
│   │   │   │   ├── footer.vue
│   │   │   │   ├── header.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── layout.vue
│   │   │   │   ├── sider.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── link/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── hoverable.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── loading.md
│   │   │   │   │   └── status.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── link.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── list/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── actions-layout.md
│   │   │   │   │   ├── actions.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── grid.md
│   │   │   │   │   ├── meta.md
│   │   │   │   │   ├── responsive-grid.md
│   │   │   │   │   ├── scroll.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── virtual-list.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── list-item-meta.vue
│   │   │   │   ├── list-item.tsx
│   │   │   │   ├── list.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── use-pagination.ts
│   │   │   ├── locale/
│   │   │   │   ├── __test__/
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   └── lang/
│   │   │   │       ├── ar-eg.ts
│   │   │   │       ├── de-de.ts
│   │   │   │       ├── en-us.ts
│   │   │   │       ├── es-es.ts
│   │   │   │       ├── fr-fr.ts
│   │   │   │       ├── id-id.ts
│   │   │   │       ├── it-it.ts
│   │   │   │       ├── ja-jp.ts
│   │   │   │       ├── km-kh.ts
│   │   │   │       ├── ko-kr.ts
│   │   │   │       ├── ms-my.ts
│   │   │   │       ├── nl-nl.ts
│   │   │   │       ├── pt-pt.ts
│   │   │   │       ├── ru-ru.ts
│   │   │   │       ├── th-th.ts
│   │   │   │       ├── vi-vn.ts
│   │   │   │       ├── zh-cn.ts
│   │   │   │       └── zh-tw.ts
│   │   │   ├── mention/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   └── prefix.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── mention.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── menu/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── breakpoint.md
│   │   │   │   │   ├── collapse-control.md
│   │   │   │   │   ├── dark-horizontal.md
│   │   │   │   │   ├── horizontal.md
│   │   │   │   │   ├── pop-button.md
│   │   │   │   │   ├── pop.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── sub-menu.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── base-menu.vue
│   │   │   │   ├── context.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   ├── use-level.ts
│   │   │   │   │   ├── use-menu-context.ts
│   │   │   │   │   ├── use-menu-data-collector.ts
│   │   │   │   │   ├── use-menu-open-state.ts
│   │   │   │   │   └── use-menu.ts
│   │   │   │   ├── indent.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── item-group.vue
│   │   │   │   ├── item.tsx
│   │   │   │   ├── menu.tsx
│   │   │   │   ├── overflow-wrap.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── sub-menu-inline.vue
│   │   │   │   ├── sub-menu-pop.vue
│   │   │   │   ├── sub-menu.tsx
│   │   │   │   └── utils/
│   │   │   │       └── index.ts
│   │   │   ├── message/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── closeable.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── position.md
│   │   │   │   │   ├── type.md
│   │   │   │   │   └── update.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── message-list.tsx
│   │   │   │   ├── message.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── modal/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── async.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── confirm.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── draggable.md
│   │   │   │   │   ├── form.md
│   │   │   │   │   ├── fullscreen.md
│   │   │   │   │   ├── function.md
│   │   │   │   │   ├── notice.md
│   │   │   │   │   └── width.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   └── use-draggable.ts
│   │   │   │   ├── index.tsx
│   │   │   │   ├── interface.ts
│   │   │   │   ├── modal.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── notification/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── btn.md
│   │   │   │   │   ├── custom-close.md
│   │   │   │   │   ├── position.md
│   │   │   │   │   ├── style.md
│   │   │   │   │   ├── type.md
│   │   │   │   │   ├── update_duration.md
│   │   │   │   │   └── update_notification.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── notification-list.tsx
│   │   │   │   ├── notification.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── overflow-list/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   └── from.md
│   │   │   │   ├── index.ts
│   │   │   │   ├── overflow-list.tsx
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       └── index.ts
│   │   │   ├── page-header/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── breadcrumb.md
│   │   │   │   │   ├── content.md
│   │   │   │   │   └── transparent.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── page-header.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── pagination/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── all.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── ellipsis.md
│   │   │   │   │   ├── jumper.md
│   │   │   │   │   ├── page-size.md
│   │   │   │   │   ├── simple.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── total.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.tsx
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── page-item-ellipsis.vue
│   │   │   │   ├── page-item-step.vue
│   │   │   │   ├── page-item.vue
│   │   │   │   ├── page-jumper.vue
│   │   │   │   ├── page-options.vue
│   │   │   │   ├── pagination.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── popconfirm/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── async.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── position.md
│   │   │   │   │   └── type.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── popconfirm.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── popover/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── position.md
│   │   │   │   │   └── trigger.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── popover.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── progress/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── circle.md
│   │   │   │   │   ├── linear.md
│   │   │   │   │   ├── mini.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   ├── status.md
│   │   │   │   │   ├── steps.md
│   │   │   │   │   └── trackColor.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── circle.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── line.vue
│   │   │   │   ├── progress.vue
│   │   │   │   ├── steps.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── radio/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── button.md
│   │   │   │   │   ├── control.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── direction.md
│   │   │   │   │   ├── group.md
│   │   │   │   │   ├── layout.md
│   │   │   │   │   ├── options.md
│   │   │   │   │   └── size.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── radio-group.tsx
│   │   │   │   ├── radio.tsx
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── rate/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── character.md
│   │   │   │   │   ├── clear.md
│   │   │   │   │   ├── color.md
│   │   │   │   │   ├── count.md
│   │   │   │   │   ├── grading.md
│   │   │   │   │   ├── half.md
│   │   │   │   │   └── readonly.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── rate.tsx
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── resize-box/
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── controlled.md
│   │   │   │   │   ├── custom-triggers.md
│   │   │   │   │   └── layout.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.tsx
│   │   │   │   ├── index.ts
│   │   │   │   ├── resize-box.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── result/
│   │   │   │   ├── 403.tsx
│   │   │   │   ├── 404.tsx
│   │   │   │   ├── 500.tsx
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── 403.md
│   │   │   │   │   ├── 404.md
│   │   │   │   │   ├── 500.md
│   │   │   │   │   ├── all.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── error.md
│   │   │   │   │   ├── success.md
│   │   │   │   │   └── warning.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── result.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── scrollbar/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   └── type.md
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── scrollbar.vue
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── thumb.vue
│   │   │   ├── select/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── border.md
│   │   │   │   │   ├── clear.md
│   │   │   │   │   ├── create.md
│   │   │   │   │   ├── fallback.md
│   │   │   │   │   ├── field-names.md
│   │   │   │   │   ├── footer.md
│   │   │   │   │   ├── group.md
│   │   │   │   │   ├── header.md
│   │   │   │   │   ├── label.md
│   │   │   │   │   ├── linkage.md
│   │   │   │   │   ├── loading.md
│   │   │   │   │   ├── multiple.md
│   │   │   │   │   ├── remote.md
│   │   │   │   │   ├── scroll.md
│   │   │   │   │   ├── search.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── virtual-list.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   ├── use-options.ts
│   │   │   │   │   └── use-select.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── optgroup.vue
│   │   │   │   ├── option.vue
│   │   │   │   ├── select-dropdown.vue
│   │   │   │   ├── select.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── skeleton/
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── animation.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   └── type.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── line.vue
│   │   │   │   ├── shape.vue
│   │   │   │   ├── skeleton.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── slider/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── input.md
│   │   │   │   │   ├── marks.md
│   │   │   │   │   ├── range.md
│   │   │   │   │   ├── step.md
│   │   │   │   │   ├── tooltip.md
│   │   │   │   │   └── vertical.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── slider-button.vue
│   │   │   │   ├── slider-dots.vue
│   │   │   │   ├── slider-input.vue
│   │   │   │   ├── slider-marks.vue
│   │   │   │   ├── slider-ticks.vue
│   │   │   │   ├── slider.vue
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── space/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── align.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   ├── split.md
│   │   │   │   │   ├── vertical.md
│   │   │   │   │   └── wrap.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── space.tsx
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       └── index.ts
│   │   │   ├── spin/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── container.md
│   │   │   │   │   ├── dot.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── tip.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── dot-loading.tsx
│   │   │   │   ├── index.ts
│   │   │   │   ├── spin.tsx
│   │   │   │   └── style/
│   │   │   │       ├── dot-loading.less
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── split/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   └── nested.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── split.vue
│   │   │   │   └── style/
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       └── token.less
│   │   │   ├── statistic/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── animation.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── countdown.md
│   │   │   │   │   └── prefix.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── countdown.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── statistic.vue
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── utils.ts
│   │   │   ├── steps/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── arrow.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── changeable.md
│   │   │   │   │   ├── custom-node.md
│   │   │   │   │   ├── description.md
│   │   │   │   │   ├── dot.md
│   │   │   │   │   ├── error.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── label-placement.md
│   │   │   │   │   ├── line-less.md
│   │   │   │   │   ├── navigation.md
│   │   │   │   │   ├── small-arrow.md
│   │   │   │   │   ├── small.md
│   │   │   │   │   └── vertical.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── step.vue
│   │   │   │   ├── steps.vue
│   │   │   │   └── style/
│   │   │   │       ├── arrow.less
│   │   │   │       ├── circle.less
│   │   │   │       ├── dot.less
│   │   │   │       ├── index.less
│   │   │   │       ├── index.ts
│   │   │   │       ├── navigation.less
│   │   │   │       └── token.less
│   │   │   ├── style/
│   │   │   │   ├── animation/
│   │   │   │   │   ├── fade.less
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── slide.less
│   │   │   │   │   └── zoom.less
│   │   │   │   ├── color/
│   │   │   │   │   ├── colors.less
│   │   │   │   │   ├── css-variables.less
│   │   │   │   │   ├── get-rgb-str.js
│   │   │   │   │   ├── palette-dark.js
│   │   │   │   │   └── palette.js
│   │   │   │   ├── icon.less
│   │   │   │   ├── index.less
│   │   │   │   ├── mixins/
│   │   │   │   │   ├── icon-hover.less
│   │   │   │   │   └── index.less
│   │   │   │   ├── normalize.less
│   │   │   │   └── theme/
│   │   │   │       ├── component.less
│   │   │   │       ├── css-variables.less
│   │   │   │       ├── global.less
│   │   │   │       └── index.less
│   │   │   ├── switch/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── change-intercept.md
│   │   │   │   │   ├── color.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── loading.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   ├── text.md
│   │   │   │   │   ├── type.md
│   │   │   │   │   └── value.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── switch.vue
│   │   │   ├── table/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── custom-dom.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── drag-handle.md
│   │   │   │   │   ├── drag-row.md
│   │   │   │   │   ├── editable.md
│   │   │   │   │   ├── ellipsis.md
│   │   │   │   │   ├── expand.md
│   │   │   │   │   ├── filter.md
│   │   │   │   │   ├── fixed-group.md
│   │   │   │   │   ├── fixed.md
│   │   │   │   │   ├── group.md
│   │   │   │   │   ├── lazy-load.md
│   │   │   │   │   ├── props.md
│   │   │   │   │   ├── radio.md
│   │   │   │   │   ├── resize.md
│   │   │   │   │   ├── row-selection.md
│   │   │   │   │   ├── scroll.md
│   │   │   │   │   ├── sort.md
│   │   │   │   │   ├── span.md
│   │   │   │   │   ├── sticky.md
│   │   │   │   │   ├── subtree.md
│   │   │   │   │   ├── summary.md
│   │   │   │   │   └── virtual-list.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   ├── use-column-filter.ts
│   │   │   │   │   ├── use-column-resize.ts
│   │   │   │   │   ├── use-column-sorter.ts
│   │   │   │   │   ├── use-drag.ts
│   │   │   │   │   ├── use-expand.ts
│   │   │   │   │   ├── use-filter.ts
│   │   │   │   │   ├── use-pagination.ts
│   │   │   │   │   ├── use-row-selection.ts
│   │   │   │   │   ├── use-sorter.ts
│   │   │   │   │   └── use-span.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── filters-popup.less
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── table-col-group.vue
│   │   │   │   ├── table-column.tsx
│   │   │   │   ├── table-operation-td.tsx
│   │   │   │   ├── table-operation-th.tsx
│   │   │   │   ├── table-tbody.tsx
│   │   │   │   ├── table-td.tsx
│   │   │   │   ├── table-th.tsx
│   │   │   │   ├── table-thead.tsx
│   │   │   │   ├── table-tr.tsx
│   │   │   │   ├── table.tsx
│   │   │   │   └── utils.ts
│   │   │   ├── tabs/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── editable.md
│   │   │   │   │   ├── extra.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── lazy.md
│   │   │   │   │   ├── position.md
│   │   │   │   │   ├── scroll.md
│   │   │   │   │   ├── trigger.md
│   │   │   │   │   └── type.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   ├── rtl.less
│   │   │   │   │   ├── token.less
│   │   │   │   │   └── vertical.less
│   │   │   │   ├── tab-pane.vue
│   │   │   │   ├── tabs-button.tsx
│   │   │   │   ├── tabs-nav-ink.vue
│   │   │   │   ├── tabs-nav.tsx
│   │   │   │   ├── tabs-tab.vue
│   │   │   │   ├── tabs.tsx
│   │   │   │   └── utils.ts
│   │   │   ├── tag/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── bordered.md
│   │   │   │   │   ├── checkable.md
│   │   │   │   │   ├── closeable.md
│   │   │   │   │   ├── color.md
│   │   │   │   │   ├── dynamically.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── loading.md
│   │   │   │   │   └── size.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── tag.vue
│   │   │   ├── textarea/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── auto-size.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── status.md
│   │   │   │   │   └── word-limit.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   └── index.ts
│   │   │   │   ├── textarea.vue
│   │   │   │   └── utils.ts
│   │   │   ├── time-picker/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── control.md
│   │   │   │   │   ├── default-value.md
│   │   │   │   │   ├── disable-confirm.md
│   │   │   │   │   ├── disabled-time.md
│   │   │   │   │   ├── disabled.md
│   │   │   │   │   ├── extra.md
│   │   │   │   │   ├── format.md
│   │   │   │   │   ├── prefix.md
│   │   │   │   │   ├── rangepicker.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   ├── step.md
│   │   │   │   │   └── use-12-hours.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   ├── use-is-disabled-time.ts
│   │   │   │   │   ├── use-time-format.ts
│   │   │   │   │   ├── use-time-list.ts
│   │   │   │   │   └── use-time-state.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── panel.vue
│   │   │   │   ├── range-panel.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── time-column.vue
│   │   │   │   ├── time-picker.vue
│   │   │   │   └── utils/
│   │   │   │       └── index.ts
│   │   │   ├── timeline/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── direction.md
│   │   │   │   │   ├── dot.md
│   │   │   │   │   ├── icon.md
│   │   │   │   │   ├── label.md
│   │   │   │   │   ├── mode.md
│   │   │   │   │   ├── pending.md
│   │   │   │   │   ├── type.md
│   │   │   │   │   └── vertical.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── item.vue
│   │   │   │   ├── style/
│   │   │   │   │   ├── horizontal.less
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── timeline.tsx
│   │   │   ├── tooltip/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── color.md
│   │   │   │   │   ├── mini.md
│   │   │   │   │   └── position.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   ├── demo.test.ts.snap
│   │   │   │   │   │   └── index.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── tooltip.vue
│   │   │   ├── transfer/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── custom-header.md
│   │   │   │   │   ├── custom.md
│   │   │   │   │   ├── one-way.md
│   │   │   │   │   ├── pagination.md
│   │   │   │   │   ├── search.md
│   │   │   │   │   ├── simple.md
│   │   │   │   │   └── tree.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── transfer-list-item.tsx
│   │   │   │   ├── transfer-view.vue
│   │   │   │   └── transfer.vue
│   │   │   ├── tree/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── block-node.md
│   │   │   │   │   ├── checkable.md
│   │   │   │   │   ├── checked-strategy.md
│   │   │   │   │   ├── control.md
│   │   │   │   │   ├── draggable.md
│   │   │   │   │   ├── field-names.md
│   │   │   │   │   ├── icons.md
│   │   │   │   │   ├── load-more.md
│   │   │   │   │   ├── multiple.md
│   │   │   │   │   ├── node-icon.md
│   │   │   │   │   ├── render-extra.md
│   │   │   │   │   ├── search.md
│   │   │   │   │   ├── show-line.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   └── virtual.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── check-utils.test.ts
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── tree-data.ts
│   │   │   │   ├── base-node.vue
│   │   │   │   ├── context.ts
│   │   │   │   ├── expand-transition.vue
│   │   │   │   ├── hooks/
│   │   │   │   │   ├── use-checked-state.ts
│   │   │   │   │   ├── use-draggable.ts
│   │   │   │   │   ├── use-node-key.ts
│   │   │   │   │   ├── use-tree-context.ts
│   │   │   │   │   └── use-tree-data.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── node-switcher.vue
│   │   │   │   ├── node.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── transition-node-list.vue
│   │   │   │   ├── tree.vue
│   │   │   │   └── utils/
│   │   │   │       ├── check-utils.ts
│   │   │   │       ├── index.ts
│   │   │   │       └── tree-data.ts
│   │   │   ├── tree-select/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── checkable.md
│   │   │   │   │   ├── checked-strategy.md
│   │   │   │   │   ├── control.md
│   │   │   │   │   ├── dropdown-slots.md
│   │   │   │   │   ├── fallback.md
│   │   │   │   │   ├── field-names.md
│   │   │   │   │   ├── label-in-value.md
│   │   │   │   │   ├── load-more.md
│   │   │   │   │   ├── multiple.md
│   │   │   │   │   ├── popup-visible.md
│   │   │   │   │   ├── search-remote.md
│   │   │   │   │   ├── search.md
│   │   │   │   │   ├── size.md
│   │   │   │   │   ├── trigger-element.md
│   │   │   │   │   └── virtual.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── hooks/
│   │   │   │   │   ├── use-filter-tree-node.ts
│   │   │   │   │   └── use-selected-state.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── panel.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── tree-select.vue
│   │   │   ├── trigger/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── align-point.md
│   │   │   │   │   ├── arrow.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── nest.md
│   │   │   │   │   ├── scroll.md
│   │   │   │   │   ├── translate.md
│   │   │   │   │   └── triggers.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── trigger.tsx
│   │   │   │   └── utils.ts
│   │   │   ├── typography/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── ellipsis.md
│   │   │   │   │   ├── operations.md
│   │   │   │   │   ├── paragraph.md
│   │   │   │   │   ├── text.md
│   │   │   │   │   └── title.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   ├── demo.test.ts
│   │   │   │   │   └── index.test.ts
│   │   │   │   ├── base.tsx
│   │   │   │   ├── edit-content.vue
│   │   │   │   ├── index.ts
│   │   │   │   ├── interface.ts
│   │   │   │   ├── operations.vue
│   │   │   │   ├── paragraph.tsx
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── text.tsx
│   │   │   │   ├── title.tsx
│   │   │   │   ├── typography.vue
│   │   │   │   └── utils/
│   │   │   │       ├── getInnerText.tsx
│   │   │   │       └── measure.tsx
│   │   │   ├── upload/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── avatar.md
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── before-remove.md
│   │   │   │   │   ├── before-upload.md
│   │   │   │   │   ├── custom-button.md
│   │   │   │   │   ├── custom-icon.md
│   │   │   │   │   ├── directory.md
│   │   │   │   │   ├── draggable.md
│   │   │   │   │   ├── limit.md
│   │   │   │   │   ├── picture-card.md
│   │   │   │   │   ├── picture-list.md
│   │   │   │   │   ├── request.md
│   │   │   │   │   ├── submit.md
│   │   │   │   │   └── upload-list.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── context.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── interfaces.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   ├── upload-button.tsx
│   │   │   │   ├── upload-list-item.tsx
│   │   │   │   ├── upload-list.tsx
│   │   │   │   ├── upload-picture-item.tsx
│   │   │   │   ├── upload-progress.tsx
│   │   │   │   ├── upload.tsx
│   │   │   │   └── utils.ts
│   │   │   ├── verification-code/
│   │   │   │   ├── CHANGELOG.md
│   │   │   │   ├── CHANGELOG.zh-CN.md
│   │   │   │   ├── README.en-US.md
│   │   │   │   ├── README.zh-CN.md
│   │   │   │   ├── TEMPLATE.md
│   │   │   │   ├── __demo__/
│   │   │   │   │   ├── basic.md
│   │   │   │   │   ├── form.md
│   │   │   │   │   ├── formatter.md
│   │   │   │   │   ├── masked.md
│   │   │   │   │   ├── separator.md
│   │   │   │   │   └── status.md
│   │   │   │   ├── __test__/
│   │   │   │   │   ├── __snapshots__/
│   │   │   │   │   │   └── demo.test.ts.snap
│   │   │   │   │   └── demo.test.ts
│   │   │   │   ├── index.ts
│   │   │   │   ├── style/
│   │   │   │   │   ├── index.less
│   │   │   │   │   ├── index.ts
│   │   │   │   │   └── token.less
│   │   │   │   └── verification-code.tsx
│   │   │   └── watermark/
│   │   │       ├── CHANGELOG.md
│   │   │       ├── CHANGELOG.zh-CN.md
│   │   │       ├── README.en-US.md
│   │   │       ├── README.zh-CN.md
│   │   │       ├── TEMPLATE.md
│   │   │       ├── __demo__/
│   │   │       │   ├── basic.md
│   │   │       │   ├── custom.md
│   │   │       │   ├── image.md
│   │   │       │   └── multiline.md
│   │   │       ├── __test__/
│   │   │       │   ├── __snapshots__/
│   │   │       │   │   └── demo.test.ts.snap
│   │   │       │   └── demo.test.ts
│   │   │       ├── hooks/
│   │   │       │   ├── use-mutation-observer.ts
│   │   │       │   └── use-theme.ts
│   │   │       ├── index.ts
│   │   │       ├── interface.ts
│   │   │       ├── style/
│   │   │       │   └── index.ts
│   │   │       ├── utils/
│   │   │       │   └── index.ts
│   │   │       └── watermark.tsx
│   │   ├── global.d.ts
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── scripts/
│   │   │   └── demo-test.ts
│   │   └── tsconfig.json
│   └── web-vue-storybook/
│       ├── .eslintignore
│       ├── .eslintrc.js
│       ├── .gitignore
│       ├── .prettierrc.js
│       ├── .storybook/
│       │   ├── babel.config.js
│       │   ├── main.js
│       │   └── preview.js
│       ├── README.md
│       ├── global.d.ts
│       ├── package.json
│       ├── stories/
│       │   ├── components/
│       │   │   ├── button.vue
│       │   │   ├── custom-menu.vue
│       │   │   ├── custom-sub-menu.vue
│       │   │   ├── date-picker.vue
│       │   │   ├── dropdown.tsx
│       │   │   ├── form.vue
│       │   │   ├── json.ts
│       │   │   ├── menu.vue
│       │   │   ├── number-input.vue
│       │   │   ├── select.tsx
│       │   │   ├── space.vue
│       │   │   ├── tree-draggable.vue
│       │   │   ├── tree-select.vue
│       │   │   ├── tree.vue
│       │   │   ├── typography.vue
│       │   │   └── virtual-list.vue
│       │   └── index.stories.ts
│       └── tsconfig.json
└── pnpm-workspace.yaml
Download .txt
SYMBOL INDEX (2046 symbols across 392 files)

FILE: packages/arco-changelog/src/index.ts
  method validate (line 59) | validate(input: any) {

FILE: packages/arco-changelog/src/interface.ts
  type ChangelogConfig (line 3) | interface ChangelogConfig {
  type PullRequest (line 19) | interface PullRequest {
  type ChangelogData (line 24) | interface ChangelogData {
  type Changelog (line 32) | interface Changelog {
  type EmitFile (line 38) | interface EmitFile {

FILE: packages/arco-vue-docs-navbar/dist/index.d.ts
  type NavBarOptions (line 3) | interface NavBarOptions {

FILE: packages/arco-vue-docs-navbar/dist/index.js
  function toObject (line 43) | function toObject(val) {
  function shouldUseNative (line 49) | function shouldUseNative() {
  function y$1 (line 133) | function y$1(a) {
  function z (line 139) | function z(a) {
  function C (line 150) | function C(a, b, c) {
  function D$1 (line 165) | function D$1() {
  function E$1 (line 168) | function E$1(a, b, c) {
  function J (line 179) | function J(a, b, c) {
  function K (line 197) | function K(a, b) {
  function L (line 200) | function L(a) {
  function escape (line 203) | function escape(a) {
  function N$1 (line 210) | function N$1(a, b) {
  function O$1 (line 213) | function O$1(a, b, c, e, d) {
  function P$1 (line 252) | function P$1(a, b, c) {
  function Q (line 261) | function Q(a) {
  function S$1 (line 278) | function S$1() {
  function H2 (line 489) | function H2(a, b) {
  function J2 (line 501) | function J2(a) {
  function K2 (line 505) | function K2(a) {
  function I2 (line 526) | function I2(a, b) {
  function T2 (line 531) | function T2(a) {
  function U2 (line 542) | function U2(a) {
  function V2 (line 553) | function V2(a, b) {
  function y (line 693) | function y(a) {
  function da (line 701) | function da(a, b) {
  function ea (line 705) | function ea(a, b) {
  function la (line 711) | function la(a) {
  function ma (line 721) | function ma(a, b, c, d) {
  function na (line 739) | function na(a, b, c, d) {
  function B (line 757) | function B(a, b, c, d, e, f, g) {
  function pa (line 797) | function pa(a) {
  function qa (line 819) | function qa(a, b, c, d) {
  function La (line 847) | function La(a) {
  function Na (line 854) | function Na(a) {
  function Pa (line 865) | function Pa(a, b) {
  function Qa (line 920) | function Qa(a) {
  function Ra (line 944) | function Ra(a) {
  function Sa (line 989) | function Sa(a) {
  function Ta (line 1001) | function Ta(a) {
  function Ua (line 1005) | function Ua(a) {
  function Va (line 1026) | function Va(a) {
  function Wa (line 1029) | function Wa(a) {
  function Xa (line 1041) | function Xa(a) {
  function Ya (line 1051) | function Ya(a, b) {
  function Za (line 1055) | function Za(a, b) {
  function $a (line 1060) | function $a(a, b) {
  function ab (line 1064) | function ab(a, b) {
  function cb (line 1080) | function cb(a, b, c) {
  function bb (line 1094) | function bb(a, b, c) {
  function db (line 1098) | function db(a) {
  function eb (line 1105) | function eb(a, b) {
  function fb (line 1111) | function fb(a, b, c, d) {
  function gb (line 1133) | function gb(a, b) {
  function hb (line 1138) | function hb(a, b) {
  function ib (line 1158) | function ib(a, b) {
  function jb (line 1163) | function jb(a) {
  function lb (line 1168) | function lb(a) {
  function mb (line 1178) | function mb(a, b) {
  function pb (line 1199) | function pb(a, b) {
  function sb (line 1259) | function sb(a, b, c) {
  function tb (line 1262) | function tb(a, b) {
  function vb (line 1272) | function vb(a, b) {
  function wb (line 1286) | function wb(a, b) {
  function xb (line 1303) | function xb(a) {
  function Bb (line 1309) | function Bb(a) {
  function Eb (line 1317) | function Eb(a) {
  function Fb (line 1320) | function Fb() {
  function Gb (line 1330) | function Gb(a, b) {
  function Hb (line 1333) | function Hb(a, b, c, d, e) {
  function Ib (line 1336) | function Ib() {
  function Mb (line 1339) | function Mb() {
  function Nb (line 1343) | function Nb(a, b, c) {
  function Ob (line 1353) | function Ob(a, b) {
  function Rb (line 1398) | function Rb(a, b, c, d, e, f, g, h, k) {
  function Xb (line 1410) | function Xb(a, b, c, d, e, f, g, h, k) {
  function Yb (line 1415) | function Yb(a, b, c, d, e, f, g, h, k) {
  function Zb (line 1427) | function Zb(a) {
  function $b (line 1440) | function $b(a) {
  function ac (line 1449) | function ac(a) {
  function bc (line 1453) | function bc(a) {
  function cc (line 1529) | function cc(a) {
  function dc (line 1552) | function dc(a, b) {
  function rc (line 1561) | function rc(a, b, c, d, e) {
  function sc (line 1564) | function sc(a, b) {
  function tc (line 1587) | function tc(a, b, c, d, e, f) {
  function uc (line 1595) | function uc(a, b, c, d, e) {
  function vc (line 1612) | function vc(a) {
  function xc (line 1635) | function xc(a) {
  function zc (line 1646) | function zc(a, b, c) {
  function Ac (line 1649) | function Ac() {
  function Bc (line 1673) | function Bc(a, b) {
  function Cc (line 1676) | function Cc(a) {
  function Dc (line 1697) | function Dc(a, b) {
  function Hc (line 1706) | function Hc(a) {
  function Pc (line 1769) | function Pc(a, b) {
  function Rc (line 1781) | function Rc(a) {
  function Sc (line 1821) | function Sc(a) {
  function Tc (line 1836) | function Tc(a) {
  function Uc (line 1863) | function Uc(a, b) {
  function Wc (line 1891) | function Wc(a) {
  function Xc (line 1895) | function Xc(a, b) {
  function Yc (line 1912) | function Yc(a) {
  function Zc (line 1915) | function Zc(a) {
  function $c (line 1920) | function $c(a, b, c) {
  function ad (line 1930) | function ad(a) {
  function gd (line 1934) | function gd(a, b, c, d) {
  function id (line 1944) | function id(a, b, c, d) {
  function hd (line 1947) | function hd(a, b, c, d) {
  function yc (line 1972) | function yc(a, b, c, d) {
  function nd (line 1998) | function nd() {
  function od (line 2009) | function od(a) {
  function pd (line 2015) | function pd() {
  function qd (line 2018) | function qd() {
  function rd (line 2021) | function rd(a) {
  function Pd (line 2110) | function Pd(a) {
  function zd (line 2114) | function zd() {
  function ge (line 2142) | function ge(a, b) {
  function he (line 2156) | function he(a) {
  function je (line 2161) | function je(a, b) {
  function ke (line 2176) | function ke(a, b) {
  function me (line 2197) | function me(a) {
  function ne (line 2201) | function ne(a, b, c, d) {
  function re (line 2207) | function re(a) {
  function te (line 2210) | function te(a) {
  function ve (line 2215) | function ve(a, b) {
  function Ae (line 2234) | function Ae() {
  function Be (line 2237) | function Be(a) {
  function Ce (line 2254) | function Ce(a, b, c) {
  function De (line 2257) | function De(a) {
  function Ee (line 2261) | function Ee(a, b) {
  function Fe (line 2265) | function Fe(a, b) {
  function Ge (line 2269) | function Ge(a, b) {
  function Je (line 2273) | function Je(a, b) {
  function Ke (line 2286) | function Ke(a) {
  function Le (line 2291) | function Le(a, b) {
  function Me (line 2314) | function Me(a, b) {
  function Ne (line 2317) | function Ne() {
  function Oe (line 2332) | function Oe(a) {
  function Ue (line 2337) | function Ue(a, b, c) {
  function Ze (line 2357) | function Ze(a, b, c) {
  function se (line 2363) | function se(a, b) {
  function G (line 2395) | function G(a, b) {
  function cf (line 2400) | function cf(a) {
  function df (line 2406) | function df(a, b, c, d) {
  function af (line 2418) | function af(a, b, c, d) {
  function jd (line 2435) | function jd(a, b, c, d, e) {
  function ef (line 2695) | function ef(a, b, c) {
  function oe (line 2698) | function oe(a, b) {
  function gf (line 2706) | function gf(a) {
  function hf (line 2714) | function hf(a, b, c, d, e) {
  function jf (line 2724) | function jf() {
  function mf (line 2727) | function mf(a, b) {
  function nf (line 2737) | function nf(a, b) {
  function qf (line 2741) | function qf(a) {
  function rf (line 2744) | function rf(a) {
  function sf (line 2752) | function sf(a) {
  function uf (line 2769) | function uf(a) {
  function wc (line 2773) | function wc(a) {
  function Cb (line 2793) | function Cb(a) {
  function ue (line 2797) | function ue(a) {
  function Db (line 2802) | function Db(a) {
  function $e (line 2805) | function $e(a) {
  function Bf (line 2811) | function Bf(a) {
  function H (line 2814) | function H(a) {
  function I (line 2817) | function I(a, b) {
  function Ef (line 2823) | function Ef(a, b) {
  function Ff (line 2836) | function Ff(a) {
  function Gf (line 2840) | function Gf() {
  function Hf (line 2844) | function Hf(a, b, c) {
  function If (line 2850) | function If(a, b, c) {
  function Jf (line 2861) | function Jf(a) {
  function Kf (line 2868) | function Kf(a, b, c) {
  function eg (line 2879) | function eg() {
  function fg (line 2895) | function fg(a) {
  function gg (line 2911) | function gg(a, b) {
  function hg (line 2915) | function hg(a, b, c) {
  function ig (line 2919) | function ig() {
  function jg (line 2927) | function jg() {
  function lg (line 2950) | function lg(a, b) {
  function qg (line 2961) | function qg() {
  function rg (line 2964) | function rg(a) {
  function sg (line 2969) | function sg(a, b) {
  function tg (line 2982) | function tg(a, b) {
  function vg (line 2988) | function vg(a, b) {
  function xg (line 3004) | function xg(a) {
  function yg (line 3007) | function yg(a, b) {
  function zg (line 3011) | function zg(a, b) {
  function Ag (line 3014) | function Ag(a, b) {
  function Bg (line 3023) | function Bg(a, b) {
  function Cg (line 3045) | function Cg(a, b, c, d) {
  function Eg (line 3123) | function Eg(a, b, c) {
  function Gg (line 3139) | function Gg(a, b, c, d) {
  function Lg (line 3171) | function Lg(a, b, c, d, e, f, g) {
  function Mg (line 3175) | function Mg(a, b, c) {
  function Ng (line 3187) | function Ng(a, b, c, d) {
  function Og (line 3193) | function Og(a, b, c, d) {
  function Qg (line 3209) | function Qg(a, b, c) {
  function Rg (line 3239) | function Rg(a, b) {
  function Sg (line 3243) | function Sg(a) {
  function dh (line 3508) | function dh(a) {
  function eh (line 3513) | function eh(a, b) {
  function fh (line 3529) | function fh() {
  function gh (line 3534) | function gh(a) {
  function hh (line 3540) | function hh(a) {
  function ih (line 3544) | function ih(a) {
  function mh (line 3571) | function mh(a, b) {
  function oh (line 3580) | function oh(a, b) {
  function ph (line 3594) | function ph(a) {
  function qh (line 3615) | function qh(a) {
  function rh (line 3620) | function rh(a) {
  function sh (line 3657) | function sh() {
  function uh (line 3662) | function uh() {
  function Ah (line 3668) | function Ah() {
  function Bh (line 3671) | function Bh(a, b) {
  function Ch (line 3679) | function Ch(a, b, c, d, e, f) {
  function Hh (line 3709) | function Hh() {
  function Ih (line 3714) | function Ih() {
  function Jh (line 3732) | function Jh(a, b) {
  function Kh (line 3735) | function Kh(a) {
  function Lh (line 3781) | function Lh(a) {
  function Mh (line 3800) | function Mh(a, b, c) {
  function Nh (line 3813) | function Nh(a, b, c, d) {
  function Ph (line 3858) | function Ph(a, b, c) {
  function Qh (line 3862) | function Qh(a) {
  function Rh (line 3870) | function Rh(a, b, c, d) {
  function Sh (line 3876) | function Sh(a) {
  function Th (line 3881) | function Th() {
  function Uh (line 3884) | function Uh(a, b, c, d) {
  function Vh (line 3889) | function Vh(a, b, c, d) {
  function Wh (line 3904) | function Wh(a, b) {
  function Xh (line 3907) | function Xh(a, b) {
  function Yh (line 3910) | function Yh(a, b) {
  function Zh (line 3913) | function Zh(a, b) {
  function $h (line 3923) | function $h(a, b, c) {
  function ai (line 3927) | function ai() {
  function bi (line 3929) | function bi(a, b) {
  function ci (line 3938) | function ci(a, b) {
  function di (line 3948) | function di(a, b) {
  function Oh (line 3963) | function Oh(a, b, c) {
  function fi (line 4085) | function fi(a, b, c, d) {
  function gi (line 4088) | function gi(a, b, c, d, e) {
  function ii (line 4099) | function ii(a, b, c, d, e, f) {
  function ki (line 4118) | function ki(a, b, c, d, e, f) {
  function mi (line 4126) | function mi(a, b, c) {
  function oi (line 4140) | function oi(a, b) {
  function li (line 4145) | function li(a, b, c, d, e) {
  function pi (line 4156) | function pi(a, b, c, d, e) {
  function qi (line 4199) | function qi(a, b, c, d, e, f) {
  function ri (line 4213) | function ri(a) {
  function ti (line 4219) | function ti(a, b, c) {
  function ui (line 4249) | function ui(a, b, c, d) {
  function xi (line 4260) | function xi(a, b, c, d) {
  function wi (line 4270) | function wi(a, b, c, d, e) {
  function yi (line 4282) | function yi(a, b) {
  function zi (line 4288) | function zi(a, b, c, d, e, f) {
  function Ai (line 4292) | function Ai(a, b, c) {
  function hi (line 4360) | function hi(a, b, c) {
  function Fi (line 4466) | function Fi(a, b) {
  function Gi (line 4482) | function Gi(a, b, c) {
  function Li (line 4766) | function Li(a) {
  function Mi (line 4799) | function Mi(a, b) {
  function Ni (line 4811) | function Ni(a, b) {
  function Pi (line 4821) | function Pi(a, b, c) {
  function Si (line 4832) | function Si(a, b, c) {
  function Vi (line 4852) | function Vi(a) {
  function Xi (line 4864) | function Xi(a, b) {
  function Yi (line 4890) | function Yi(a, b, c) {
  function aj (line 4965) | function aj(a, b) {
  function bj (line 4995) | function bj(a, b) {
  function dj (line 5045) | function dj(a) {
  function ej (line 5057) | function ej(a) {
  function fj (line 5060) | function fj(a) {
  function gj (line 5113) | function gj(a, b, c) {
  function hj (line 5121) | function hj(a, b, c) {
  function cj (line 5129) | function cj(a, b) {
  function ij (line 5197) | function ij(a, b) {
  function kj (line 5272) | function kj(a) {
  function mj (line 5284) | function mj(a, b) {
  function wj (line 5288) | function wj() {
  function Hg (line 5292) | function Hg() {
  function Ig (line 5295) | function Ig(a) {
  function Jg (line 5314) | function Jg(a, b, c) {
  function Kj (line 5326) | function Kj(a, b) {
  function Mj (line 5335) | function Mj(a, b) {
  function Nj (line 5364) | function Nj(a) {
  function Ii (line 5455) | function Ii(a, b) {
  function Lj (line 5466) | function Lj(a) {
  function Vj (line 5485) | function Vj() {
  function Wj (line 5496) | function Wj(a, b) {
  function Xj (line 5505) | function Xj(a, b) {
  function ni (line 5515) | function ni(a, b) {
  function Ki (line 5520) | function Ki() {
  function Qj (line 5524) | function Qj(a, b) {
  function Sj (line 5571) | function Sj(a, b) {
  function Pj (line 5695) | function Pj() {
  function Tj (line 5700) | function Tj(a, b) {
  function ak (line 5722) | function ak() {
  function Rj (line 5726) | function Rj() {
  function bk (line 5730) | function bk(a) {
  function Zj (line 5736) | function Zj(a) {
  function Uj (line 5772) | function Uj(a) {
  function dk (line 5777) | function dk(a, b) {
  function ek (line 5999) | function ek() {
  function Oj (line 6012) | function Oj() {
  function $i (line 6020) | function $i(a, b) {
  function Zi (line 6027) | function Zi(a, b) {
  function fk (line 6034) | function fk() {
  function gk (line 6077) | function gk(a, b, c) {
  function Wi (line 6085) | function Wi(a, b) {
  function Yj (line 6114) | function Yj(a, b, c) {
  function lj (line 6122) | function lj(a, b) {
  function ik (line 6374) | function ik(a, b, c, d) {
  function nh (line 6388) | function nh(a, b, c, d) {
  function ji (line 6391) | function ji(a) {
  function hk (line 6395) | function hk(a) {
  function Tg (line 6407) | function Tg(a, b) {
  function Vg (line 6423) | function Vg(a, b, c, d, e, f) {
  function Xg (line 6484) | function Xg(a, b, c, d) {
  function vi (line 6489) | function vi(a, b, c, d) {
  function Ug (line 6495) | function Ug(a, b, c) {
  function Wg (line 6500) | function Wg(a, b, c) {
  function jk (line 6506) | function jk(a, b, c) {
  function kk (line 6521) | function kk(a, b, c) {
  function lk (line 6525) | function lk(a, b, c, d) {
  function mk (line 6568) | function mk(a) {
  function nk (line 6579) | function nk(a, b) {
  function ok (line 6586) | function ok(a, b) {
  function pk (line 6590) | function pk() {
  function qk (line 6593) | function qk(a, b, c) {
  function rk (line 6620) | function rk(a) {
  function sk (line 6623) | function sk(a, b) {
  function tk (line 6630) | function tk(a, b, c, d, e) {
  function uk (line 6732) | function uk(a, b) {
  function checkDCE (line 6812) | function checkDCE() {
  function _extends (line 6827) | function _extends() {
  function _objectWithoutPropertiesLoose (line 6841) | function _objectWithoutPropertiesLoose(source2, excluded) {
  function _setPrototypeOf (line 6855) | function _setPrototypeOf(o, p2) {
  function _inheritsLoose (line 6862) | function _inheritsLoose(subClass, superClass) {
  function emptyFunction (line 6870) | function emptyFunction() {
  function emptyFunctionWithReset (line 6872) | function emptyFunctionWithReset() {
  function shim (line 6876) | function shim(props, propName, componentName, location2, propFullName, s...
  function getShim (line 6885) | function getShim() {
  function hasClass (line 6916) | function hasClass(element, className) {
  function addClass (line 6921) | function addClass(element, className) {
  function replaceClassName (line 6930) | function replaceClassName(origClass, classToRemove) {
  function removeClass$2 (line 6933) | function removeClass$2(element, className) {
  function Transition2 (line 6953) | function Transition2(props, context) {
  function noop$1 (line 7171) | function noop$1() {
  function CSSTransition2 (line 7205) | function CSSTransition2() {
  function _assertThisInitialized (line 7331) | function _assertThisInitialized(self2) {
  function getChildMapping (line 7337) | function getChildMapping(children, mapFn) {
  function mergeChildMappings (line 7350) | function mergeChildMappings(prev, next) {
  function getProp (line 7384) | function getProp(child, prop, props) {
  function getInitialChildMapping (line 7387) | function getInitialChildMapping(props, onExited) {
  function getNextChildMapping (line 7398) | function getNextChildMapping(nextProps, prevChildMapping, onExited) {
  function TransitionGroup2 (line 7444) | function TransitionGroup2(props, context) {
  function _defineProperty (line 7514) | function _defineProperty(obj, key, value) {
  function ownKeys$v (line 7530) | function ownKeys$v(object, enumerableOnly) {
  function _objectSpread$v (line 7543) | function _objectSpread$v(target2) {
  function IconCheckCircleFillComponent (line 7560) | function IconCheckCircleFillComponent(iconProps, ref) {
  function ownKeys$u (line 7594) | function ownKeys$u(object, enumerableOnly) {
  function _objectSpread$u (line 7607) | function _objectSpread$u(target2) {
  function IconCloseCircleFillComponent (line 7624) | function IconCloseCircleFillComponent(iconProps, ref) {
  function ownKeys$t (line 7658) | function ownKeys$t(object, enumerableOnly) {
  function _objectSpread$t (line 7671) | function _objectSpread$t(target2) {
  function IconInfoCircleFillComponent (line 7688) | function IconInfoCircleFillComponent(iconProps, ref) {
  function ownKeys$s (line 7722) | function ownKeys$s(object, enumerableOnly) {
  function _objectSpread$s (line 7735) | function _objectSpread$s(target2) {
  function IconExclamationCircleFillComponent (line 7752) | function IconExclamationCircleFillComponent(iconProps, ref) {
  function ownKeys$r (line 7786) | function ownKeys$r(object, enumerableOnly) {
  function _objectSpread$r (line 7799) | function _objectSpread$r(target2) {
  function IconCloseComponent (line 7816) | function IconCloseComponent(iconProps, ref) {
  function isArray$5 (line 7847) | function isArray$5(obj) {
  function isObject$6 (line 7850) | function isObject$6(obj) {
  function isString$1 (line 7853) | function isString$1(obj) {
  function isNumber$1 (line 7856) | function isNumber$1(obj) {
  function isUndefined$1 (line 7859) | function isUndefined$1(obj) {
  function isFunction$3 (line 7862) | function isFunction$3(obj) {
  function cs$1 (line 7897) | function cs$1() {
  function hexToRgb (line 8083) | function hexToRgb(hex) {
  function getRgb (line 8099) | function getRgb(color) {
  function getHsl (line 8103) | function getHsl(color) {
  function rgbToHsl (line 8108) | function rgbToHsl(r2, g, b) {
  function lighten (line 8143) | function lighten(color, percent) {
  function hsltorgb (line 8151) | function hsltorgb(hsl) {
  function __ (line 8205) | function __() {
  function getId (line 8223) | function getId(noticeProps) {
  function BaseNotice2 (line 8231) | function BaseNotice2(props) {
  function ownKeys$q (line 8292) | function ownKeys$q(object, enumerableOnly) {
  function _objectSpread$q (line 8305) | function _objectSpread$q(target2) {
  function IconLoadingComponent (line 8322) | function IconLoadingComponent(iconProps, ref) {
  function IconHover (line 8376) | function IconHover(props) {
  function __ (line 8398) | function __() {
  function Notice2 (line 8406) | function Notice2() {
  function __ (line 8513) | function __() {
  function addInstance (line 8537) | function addInstance(noticeProps) {
  function Message2 (line 8568) | function Message2() {
  function __ (line 8654) | function __() {
  function Notification2 (line 8680) | function Notification2() {
  function ownKeys$p (line 8783) | function ownKeys$p(object, enumerableOnly) {
  function _objectSpread$p (line 8796) | function _objectSpread$p(target2) {
  function IconEmptyComponent (line 8813) | function IconEmptyComponent(iconProps, ref) {
  function useMergeProps (line 8855) | function useMergeProps(componentProps, defaultProps2, globalComponentCon...
  function Empty (line 8870) | function Empty(baseProps, ref) {
  function setConfigProviderProps (line 8896) | function setConfigProviderProps(configProviderProps) {
  function getConfigProviderProps (line 8899) | function getConfigProviderProps() {
  function omit (line 8924) | function omit(obj, keys) {
  function setTheme (line 8972) | function setTheme(theme) {
  function renderEmpty (line 8988) | function renderEmpty(componentName) {
  function ConfigProvider (line 9011) | function ConfigProvider(baseProps) {
  function Alert (line 9062) | function Alert(baseProps, ref) {
  function isObject$5 (line 9099) | function isObject$5(value) {
  function trimmedEndIndex$1 (line 9116) | function trimmedEndIndex$1(string) {
  function baseTrim$1 (line 9125) | function baseTrim$1(string) {
  function getRawTag$1 (line 9137) | function getRawTag$1(value) {
  function objectToString$1 (line 9157) | function objectToString$1(value) {
  function baseGetTag$2 (line 9164) | function baseGetTag$2(value) {
  function isObjectLike$1 (line 9171) | function isObjectLike$1(value) {
  function isSymbol$4 (line 9177) | function isSymbol$4(value) {
  function toNumber$1 (line 9187) | function toNumber$1(value) {
  function debounce (line 9209) | function debounce(func, wait, options) {
  function isElement (line 9291) | function isElement(el) {
  function canOverflow (line 9294) | function canOverflow(overflow, skipOverflowHiddenElements) {
  function isScrollable (line 9300) | function isScrollable(el, skipOverflowHiddenElements) {
  function alignNearest (line 9307) | function alignNearest(scrollingEdgeStart, scrollingEdgeEnd, scrollingSiz...
  function isOptionsObject (line 9420) | function isOptionsObject(options) {
  function defaultBehavior (line 9423) | function defaultBehavior(actions, behavior) {
  function getOptions (line 9442) | function getOptions(options) {
  function scrollIntoView (line 9457) | function scrollIntoView(target2, options) {
  function pick (line 9468) | function pick(obj, keys) {
  function pickTriggerPropsFromRest (line 9480) | function pickTriggerPropsFromRest(rest) {
  function useIsFirstRender (line 9525) | function useIsFirstRender() {
  function throttleByRaf (line 9592) | function throttleByRaf(cb2) {
  function getIndex (line 9615) | function getIndex(arr, key) {
  function class_1 (line 9627) | function class_1() {
  function throttle (line 9699) | function throttle(callback, delay) {
  function ResizeObserverController2 (line 9733) | function ResizeObserverController2() {
  function toFloat (line 9845) | function toFloat(value) {
  function getBordersSize (line 9848) | function getBordersSize(styles) {
  function getPaddings (line 9858) | function getPaddings(styles) {
  function getSVGContentRect (line 9868) | function getSVGContentRect(target2) {
  function getHTMLElementContentRect (line 9872) | function getHTMLElementContentRect(target2) {
  function isDocumentElement (line 9912) | function isDocumentElement(target2) {
  function getContentRect (line 9915) | function getContentRect(target2) {
  function createReadOnlyRect (line 9924) | function createReadOnlyRect(_a) {
  function createRectInit (line 9940) | function createRectInit(x2, y2, width, height) {
  function ResizeObservation2 (line 9944) | function ResizeObservation2(target2) {
  function ResizeObserverEntry2 (line 9964) | function ResizeObserverEntry2(target2, rectInit) {
  function ResizeObserverSPI2 (line 9971) | function ResizeObserverSPI2(callback, controller, callbackCtx) {
  function ResizeObserver2 (line 10053) | function ResizeObserver2(callback) {
  function __ (line 10097) | function __() {
  function ResizeObserverComponent2 (line 10105) | function ResizeObserverComponent2() {
  function useStateWithPromise (line 10162) | function useStateWithPromise(defaultVal) {
  function Group$5 (line 10189) | function Group$5(props, ref) {
  function processChildren (line 10245) | function processChildren(children) {
  function Button (line 10268) | function Button(baseProps, ref) {
  function ownKeys$o (line 10316) | function ownKeys$o(object, enumerableOnly) {
  function _objectSpread$o (line 10329) | function _objectSpread$o(target2) {
  function IconSearchComponent (line 10346) | function IconSearchComponent(iconProps, ref) {
  function useMergeValue (line 10397) | function useMergeValue(defaultStateValue, props) {
  function setMirrorTextArea (line 10523) | function setMirrorTextArea(originTextArea) {
  function autoSizeTextAreaHeight (line 10542) | function autoSizeTextAreaHeight(autoSize, node) {
  function ownKeys$n (line 10751) | function ownKeys$n(object, enumerableOnly) {
  function _objectSpread$n (line 10764) | function _objectSpread$n(target2) {
  function IconEyeComponent (line 10781) | function IconEyeComponent(iconProps, ref) {
  function ownKeys$m (line 10814) | function ownKeys$m(object, enumerableOnly) {
  function _objectSpread$m (line 10827) | function _objectSpread$m(target2) {
  function IconEyeInvisibleComponent (line 10844) | function IconEyeInvisibleComponent(iconProps, ref) {
  function formatValue$1 (line 11194) | function formatValue$1(value, maxLength) {
  function Input (line 11201) | function Input(baseProps, ref) {
  function getElementPosition (line 11299) | function getElementPosition(element, elementRect, root2) {
  function mergeProps (line 11576) | function mergeProps(componentProps, defaultProps2, globalComponentConfig) {
  function __ (line 11601) | function __() {
  function getDOMPos (line 11619) | function getDOMPos(dom) {
  function splitChildrenStyle (line 11641) | function splitChildrenStyle(obj, keys) {
  function Trigger2 (line 11675) | function Trigger2(props, context) {
  function OptGroup (line 12328) | function OptGroup(props, ref) {
  function Group$2 (line 12379) | function Group$2(props) {
  function IconCheck$2 (line 12535) | function IconCheck$2(_a) {
  function Checkbox (line 12584) | function Checkbox(baseProps, ref) {
  function Option (line 12657) | function Option(props, ref) {
  function getHotkeyHandler (line 12690) | function getHotkeyHandler(hotkeyMap) {
  function ownKeys$l (line 12713) | function ownKeys$l(object, enumerableOnly) {
  function _objectSpread$l (line 12726) | function _objectSpread$l(target2) {
  function IconDownComponent (line 12743) | function IconDownComponent(iconProps, ref) {
  function ownKeys$k (line 12773) | function ownKeys$k(object, enumerableOnly) {
  function _objectSpread$k (line 12786) | function _objectSpread$k(target2) {
  function IconExpandComponent (line 12803) | function IconExpandComponent(iconProps, ref) {
  function Tag (line 12896) | function Tag(baseProps, ref) {
  function Item (line 12966) | function Item(props) {
  function Draggable (line 13053) | function Draggable(props) {
  function adopt (line 13088) | function adopt(value) {
  function fulfilled (line 13094) | function fulfilled(value) {
  function rejected (line 13101) | function rejected(value) {
  function step (line 13108) | function step(result) {
  function verb (line 13123) | function verb(n2) {
  function step (line 13128) | function step(op) {
  function InputTag (line 13262) | function InputTag(baseProps, ref) {
  function include (line 13452) | function include(obj, keys) {
  function useForceUpdate (line 13482) | function useForceUpdate() {
  function getStringLength (line 13732) | function getStringLength(str) {
  function getLocationItem (line 13756) | function getLocationItem(scrollPtg, total) {
  function getNodeHeight (line 13765) | function getNodeHeight(node) {
  function getValidScrollTop (line 13769) | function getValidScrollTop(scrollTop, scrollRange) {
  function getScrollPercentage (line 13772) | function getScrollPercentage(_a) {
  function getRangeIndex (line 13777) | function getRangeIndex(scrollPtg, itemCount, visibleCount) {
  function getItemRelativeTop (line 13788) | function getItemRelativeTop(_a) {
  function getItemAbsoluteTop (line 13792) | function getItemAbsoluteTop(_a) {
  function getCompareItemRelativeTop (line 13796) | function getCompareItemRelativeTop(_a) {
  function getLongestItemIndex (line 13820) | function getLongestItemIndex(data2) {
  function usePrevious (line 13836) | function usePrevious(value) {
  function getIndexByStartLoc (line 13843) | function getIndexByStartLoc(min, max, start, index2) {
  function findListDiffIndex (line 13859) | function findListDiffIndex(originList, targetList, getKey) {
  function isKey$1 (line 14338) | function isKey$1(value, object) {
  function isFunction$2 (line 14351) | function isFunction$2(value) {
  function isMasked$1 (line 14367) | function isMasked$1(func) {
  function toSource$1 (line 14373) | function toSource$1(func) {
  function baseIsNative$1 (line 14394) | function baseIsNative$1(value) {
  function getValue$1 (line 14402) | function getValue$1(object, key) {
  function getNative$2 (line 14407) | function getNative$2(object, key) {
  function hashClear$1 (line 14416) | function hashClear$1() {
  function hashDelete$1 (line 14421) | function hashDelete$1(key) {
  function hashGet$1 (line 14431) | function hashGet$1(key) {
  function hashHas$1 (line 14443) | function hashHas$1(key) {
  function hashSet$1 (line 14450) | function hashSet$1(key, value) {
  function Hash$1 (line 14458) | function Hash$1(entries) {
  function listCacheClear$1 (line 14472) | function listCacheClear$1() {
  function eq$1 (line 14477) | function eq$1(value, other) {
  function assocIndexOf$4 (line 14482) | function assocIndexOf$4(array, key) {
  function listCacheDelete$1 (line 14495) | function listCacheDelete$1(key) {
  function listCacheGet$1 (line 14511) | function listCacheGet$1(key) {
  function listCacheHas$1 (line 14517) | function listCacheHas$1(key) {
  function listCacheSet$1 (line 14522) | function listCacheSet$1(key, value) {
  function ListCache$1 (line 14534) | function ListCache$1(entries) {
  function mapCacheClear$1 (line 14552) | function mapCacheClear$1() {
  function isKeyable$1 (line 14561) | function isKeyable$1(value) {
  function getMapData$4 (line 14567) | function getMapData$4(map, key) {
  function mapCacheDelete$1 (line 14573) | function mapCacheDelete$1(key) {
  function mapCacheGet$1 (line 14580) | function mapCacheGet$1(key) {
  function mapCacheHas$1 (line 14585) | function mapCacheHas$1(key) {
  function mapCacheSet$1 (line 14590) | function mapCacheSet$1(key, value) {
  function MapCache$1 (line 14598) | function MapCache$1(entries) {
  function memoize$1 (line 14614) | function memoize$1(func, resolver) {
  function memoizeCapped$1 (line 14634) | function memoizeCapped$1(func) {
  function arrayMap$1 (line 14659) | function arrayMap$1(array, iteratee) {
  function baseToString$1 (line 14670) | function baseToString$1(value) {
  function toString$2 (line 14685) | function toString$2(value) {
  function castPath$1 (line 14690) | function castPath$1(value, object) {
  function toKey$1 (line 14699) | function toKey$1(value) {
  function baseGet$1 (line 14708) | function baseGet$1(object, path) {
  function get (line 14718) | function get(object, path, defaultValue) {
  function getHighlightText (line 14723) | function getHighlightText(_a) {
  function preventDefaultEvent (line 14771) | function preventDefaultEvent(e) {
  function isEmptyValue (line 14774) | function isEmptyValue(value, isMultiple) {
  function getValidValue (line 14777) | function getValidValue(value, isMultiple, labelInValue) {
  function isSelectOption (line 14789) | function isSelectOption(child) {
  function isSelectOptGroup (line 14792) | function isSelectOptGroup(child) {
  function flatChildren (line 14795) | function flatChildren(_a, _b, _c) {
  function Select (line 14964) | function Select(baseProps, ref) {
  function autoFixFontSizeHandler (line 15464) | function autoFixFontSizeHandler() {
  function Tooltip (line 15516) | function Tooltip(baseProps, ref) {
  function Popover (line 15600) | function Popover(baseProps, ref) {
  function Group (line 15638) | function Group(baseProps, ref) {
  function Count (line 15687) | function Count(_a) {
  function Badge (line 15760) | function Badge(baseProps, ref) {
  function ownKeys$j (line 15796) | function ownKeys$j(object, enumerableOnly) {
  function _objectSpread$j (line 15809) | function _objectSpread$j(target2) {
  function IconRightComponent (line 15826) | function IconRightComponent(iconProps, ref) {
  function DotLoading (line 15974) | function DotLoading(props) {
  function Spin (line 16010) | function Spin(baseProps, ref) {
  function ownKeys$i (line 16036) | function ownKeys$i(object, enumerableOnly) {
  function _objectSpread$i (line 16049) | function _objectSpread$i(target2) {
  function IconCheckComponent (line 16066) | function IconCheckComponent(iconProps, ref) {
  function useUpdate (line 16128) | function useUpdate(fn, deps) {
  function ownKeys$h (line 16141) | function ownKeys$h(object, enumerableOnly) {
  function _objectSpread$h (line 16154) | function _objectSpread$h(target2) {
  function IconLinkComponent (line 16171) | function IconLinkComponent(iconProps, ref) {
  function Link (line 16228) | function Link(baseProps, ref) {
  function Descriptions (line 16290) | function Descriptions(baseProps) {
  function assignRef (line 16379) | function assignRef(ref, value) {
  function useCallbackRef (line 16387) | function useCallbackRef(initialValue, callback) {
  function useMergeRefs (line 16409) | function useMergeRefs(refs, defaultValue) {
  function ItoI (line 16451) | function ItoI(a) {
  function innerCreateMedium (line 16454) | function innerCreateMedium(defaults2, middleware) {
  function createMedium (line 16527) | function createMedium(defaults2, middleware) {
  function createSidecarMedium (line 16533) | function createSidecarMedium(options) {
  function withSideEffect (line 16665) | function withSideEffect(reducePropsToState2, handleStateChangeOnClient2) {
  function deferAction (line 17112) | function deferAction(action) {
  function autoGuard (line 17145) | function autoGuard(startIndex, end, step, allNodes) {
  function reducePropsToState (line 17259) | function reducePropsToState(propsList) {
  function handleStateChangeOnClient (line 17265) | function handleStateChangeOnClient(traps) {
  function __ (line 17329) | function __() {
  function Portal2 (line 17337) | function Portal2() {
  function __ (line 17384) | function __() {
  function PortalWrapper2 (line 17404) | function PortalWrapper2() {
  function useOverflowHidden (line 17426) | function useOverflowHidden(getContainer, _a) {
  function Drawer (line 17512) | function Drawer(baseProps, ref) {
  function getFlexString (line 17628) | function getFlexString(flex) {
  function Col (line 17634) | function Col(baseProps, ref) {
  function Row (line 17733) | function Row(baseProps, ref) {
  function ownKeys$g (line 17798) | function ownKeys$g(object, enumerableOnly) {
  function _objectSpread$g (line 17811) | function _objectSpread$g(target2) {
  function IconPlusComponent (line 17828) | function IconPlusComponent(iconProps, ref) {
  function ConfirmModal (line 17870) | function ConfirmModal(props) {
  function confirm (line 17900) | function confirm(config2, renderFunc) {
  function addInstance2 (line 18009) | function addInstance2(ins) {
  function removeInstance (line 18014) | function removeInstance(ins) {
  function HookModal (line 18063) | function HookModal(props, ref) {
  function useModal (line 18108) | function useModal() {
  function Modal (line 18213) | function Modal(baseProps, ref) {
  function Popconfirm (line 18449) | function Popconfirm(baseProps, ref) {
  function Space (line 18539) | function Space(baseProps, ref) {
  function Typography$2 (line 18601) | function Typography$2(props, ref) {
  function adopt (line 18612) | function adopt(value) {
  function fulfilled (line 18618) | function fulfilled(value) {
  function rejected (line 18625) | function rejected(value) {
  function step (line 18632) | function step(result) {
  function verb (line 18647) | function verb(n2) {
  function step (line 18652) | function step(op) {
  function clipboard (line 18714) | function clipboard(text) {
  function ownKeys$f (line 18756) | function ownKeys$f(object, enumerableOnly) {
  function _objectSpread$f (line 18769) | function _objectSpread$f(target2) {
  function IconCopyComponent (line 18786) | function IconCopyComponent(iconProps, ref) {
  function ownKeys$e (line 18816) | function ownKeys$e(object, enumerableOnly) {
  function _objectSpread$e (line 18829) | function _objectSpread$e(target2) {
  function IconEditComponent (line 18846) | function IconEditComponent(iconProps, ref) {
  function mergedToString (line 18879) | function mergedToString(children) {
  function Operations (line 18913) | function Operations(props) {
  function EditContent (line 18949) | function EditContent(props) {
  function useResizeObserver (line 18973) | function useResizeObserver(onResize) {
  function styleToString (line 19017) | function styleToString(style, extraStyle) {
  function pxToNumber (line 19031) | function pxToNumber(value) {
  function measure (line 19038) | function measure(originElement, ellipsisConfig, operations, children, si...
  function getClassNameAndComponentName (line 19167) | function getClassNameAndComponentName(props, prefixCls2) {
  function wrap (line 19197) | function wrap(content, component, props) {
  function Base (line 19205) | function Base(props) {
  function Title (line 19382) | function Title(props) {
  function Text$3 (line 19399) | function Text$3(props) {
  function Paragraph$1 (line 19415) | function Paragraph$1(props) {
  function classNames (line 19454) | function classNames() {
  function kindOfTest (line 19511) | function kindOfTest(type) {
  function isArray (line 19517) | function isArray(val) {
  function isUndefined (line 19520) | function isUndefined(val) {
  function isBuffer (line 19523) | function isBuffer(val) {
  function isArrayBufferView (line 19527) | function isArrayBufferView(val) {
  function isString (line 19536) | function isString(val) {
  function isNumber (line 19539) | function isNumber(val) {
  function isObject (line 19542) | function isObject(val) {
  function isPlainObject (line 19545) | function isPlainObject(val) {
  function isFunction (line 19556) | function isFunction(val) {
  function isStream (line 19559) | function isStream(val) {
  function isFormData (line 19562) | function isFormData(thing) {
  function trim (line 19567) | function trim(str) {
  function isStandardBrowserEnv (line 19570) | function isStandardBrowserEnv() {
  function forEach (line 19576) | function forEach(obj, fn) {
  function merge (line 19595) | function merge() {
  function extend (line 19613) | function extend(a, b, thisArg) {
  function stripBOM (line 19623) | function stripBOM(content) {
  function inherits (line 19629) | function inherits(constructor, superConstructor, props, descriptors2) {
  function toFlatObject (line 19634) | function toFlatObject(sourceObj, destObj, filter) {
  function endsWith (line 19654) | function endsWith(str, searchString, position) {
  function toArray$1 (line 19663) | function toArray$1(thing) {
  function encode$1 (line 19713) | function encode$1(val) {
  function InterceptorManager$1 (line 19757) | function InterceptorManager$1() {
  function AxiosError$5 (line 19792) | function AxiosError$5(message, code, config2, request2, response) {
  function toFormData$1 (line 19853) | function toFormData$1(obj, formData) {
  function resolveURL (line 20011) | function resolveURL(url) {
  function CanceledError$3 (line 20041) | function CanceledError$3(message) {
  function done (line 20070) | function done() {
  function onloadend (line 20090) | function onloadend() {
  function setContentTypeIfUnset (line 20207) | function setContentTypeIfUnset(headers, value) {
  function getDefaultAdapter (line 20212) | function getDefaultAdapter() {
  function stringifySafely (line 20221) | function stringifySafely(rawValue, parser, encoder) {
  function throwIfCancellationRequested (line 20322) | function throwIfCancellationRequested(config2) {
  function getMergedValue (line 20357) | function getMergedValue(target2, source2) {
  function mergeDeepProperties (line 20367) | function mergeDeepProperties(prop) {
  function valueFromConfig2 (line 20374) | function valueFromConfig2(prop) {
  function defaultToConfig2 (line 20379) | function defaultToConfig2(prop) {
  function mergeDirectKeys (line 20386) | function mergeDirectKeys(prop) {
  function formatMessage (line 20442) | function formatMessage(opt2, desc) {
  function assertOptions (line 20456) | function assertOptions(options, schema, allowUnknown) {
  function Axios$1 (line 20490) | function Axios$1(instanceConfig) {
  function generateHTTPMethod (line 20580) | function generateHTTPMethod(isForm) {
  function CancelToken (line 20597) | function CancelToken(executor) {
  function createInstance (line 20685) | function createInstance(defaultConfig) {
  function Transition2 (line 20726) | function Transition2(props, context) {
  function noop (line 20949) | function noop() {
  function CSSTransition2 (line 20983) | function CSSTransition2() {
  function ownKeys$d (line 21111) | function ownKeys$d(object, enumerableOnly) {
  function _objectSpread$d (line 21124) | function _objectSpread$d(target2) {
  function IconArrowRightComponent (line 21141) | function IconArrowRightComponent(iconProps, ref) {
  function ownKeys$c (line 21171) | function ownKeys$c(object, enumerableOnly) {
  function _objectSpread$c (line 21184) | function _objectSpread$c(target2) {
  function IconCustomerServiceComponent (line 21201) | function IconCustomerServiceComponent(iconProps, ref) {
  function ownKeys$b (line 21231) | function ownKeys$b(object, enumerableOnly) {
  function _objectSpread$b (line 21244) | function _objectSpread$b(target2) {
  function IconExportComponent (line 21261) | function IconExportComponent(iconProps, ref) {
  function ownKeys$a (line 21291) | function ownKeys$a(object, enumerableOnly) {
  function _objectSpread$a (line 21304) | function _objectSpread$a(target2) {
  function IconHistoryComponent (line 21321) | function IconHistoryComponent(iconProps, ref) {
  function ownKeys$9 (line 21351) | function ownKeys$9(object, enumerableOnly) {
  function _objectSpread$9 (line 21364) | function _objectSpread$9(target2) {
  function IconImportComponent (line 21381) | function IconImportComponent(iconProps, ref) {
  function ownKeys$8 (line 21411) | function ownKeys$8(object, enumerableOnly) {
  function _objectSpread$8 (line 21424) | function _objectSpread$8(target2) {
  function IconLaunchComponent (line 21441) | function IconLaunchComponent(iconProps, ref) {
  function ownKeys$7 (line 21471) | function ownKeys$7(object, enumerableOnly) {
  function _objectSpread$7 (line 21484) | function _objectSpread$7(target2) {
  function IconGithubComponent (line 21501) | function IconGithubComponent(iconProps, ref) {
  function ownKeys$6 (line 21533) | function ownKeys$6(object, enumerableOnly) {
  function _objectSpread$6 (line 21546) | function _objectSpread$6(target2) {
  function IconMoonFillComponent (line 21563) | function IconMoonFillComponent(iconProps, ref) {
  function ownKeys$5 (line 21595) | function ownKeys$5(object, enumerableOnly) {
  function _objectSpread$5 (line 21608) | function _objectSpread$5(target2) {
  function IconSunFillComponent (line 21625) | function IconSunFillComponent(iconProps, ref) {
  function ownKeys$4 (line 21663) | function ownKeys$4(object, enumerableOnly) {
  function _objectSpread$4 (line 21676) | function _objectSpread$4(target2) {
  function IconDesktopComponent (line 21693) | function IconDesktopComponent(iconProps, ref) {
  function ownKeys$3 (line 21723) | function ownKeys$3(object, enumerableOnly) {
  function _objectSpread$3 (line 21736) | function _objectSpread$3(target2) {
  function IconMenuComponent (line 21753) | function IconMenuComponent(iconProps, ref) {
  function ownKeys$2 (line 21783) | function ownKeys$2(object, enumerableOnly) {
  function _objectSpread$2 (line 21796) | function _objectSpread$2(target2) {
  function IconNotificationComponent (line 21813) | function IconNotificationComponent(iconProps, ref) {
  function ownKeys$1 (line 21843) | function ownKeys$1(object, enumerableOnly) {
  function _objectSpread$1 (line 21856) | function _objectSpread$1(target2) {
  function IconTagsComponent (line 21873) | function IconTagsComponent(iconProps, ref) {
  function ownKeys (line 21907) | function ownKeys(object, enumerableOnly) {
  function _objectSpread (line 21920) | function _objectSpread(target2) {
  function IconUserComponent (line 21937) | function IconUserComponent(iconProps, ref) {
  function minMax (line 21997) | function minMax(val, min, max) {
  function stringContains (line 22000) | function stringContains(str, text) {
  function applyArguments (line 22003) | function applyArguments(func, args) {
  function parseEasingParameters (line 22053) | function parseEasingParameters(string) {
  function spring (line 22059) | function spring(string, duration2) {
  function steps (line 22107) | function steps(steps2) {
  function A2 (line 22117) | function A2(aA1, aA2) {
  function B2 (line 22120) | function B2(aA1, aA2) {
  function C2 (line 22123) | function C2(aA1) {
  function calcBezier (line 22126) | function calcBezier(aT, aA1, aA2) {
  function getSlope (line 22129) | function getSlope(aT, aA1, aA2) {
  function binarySubdivide (line 22132) | function binarySubdivide(aX, aA, aB, mX1, mX2) {
  function newtonRaphsonIterate (line 22145) | function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
  function bezier2 (line 22156) | function bezier2(mX1, mY1, mX2, mY2) {
  function parseEasings (line 22268) | function parseEasings(easing, duration2) {
  function selectString (line 22286) | function selectString(str) {
  function filterArray (line 22294) | function filterArray(arr, callback) {
  function flattenArray (line 22308) | function flattenArray(arr) {
  function toArray (line 22313) | function toArray(o) {
  function arrayContains (line 22325) | function arrayContains(arr, val) {
  function cloneObject (line 22330) | function cloneObject(o) {
  function replaceObjectProps (line 22337) | function replaceObjectProps(o1, o2) {
  function mergeObjects (line 22344) | function mergeObjects(o1, o2) {
  function rgbToRgba (line 22351) | function rgbToRgba(rgbValue) {
  function hexToRgba (line 22355) | function hexToRgba(hexValue) {
  function hslToRgba (line 22366) | function hslToRgba(hslValue) {
  function colorToRgb (line 22402) | function colorToRgb(val) {
  function getUnit (line 22413) | function getUnit(val) {
  function getTransformUnit (line 22419) | function getTransformUnit(propName) {
  function getFunctionValue (line 22427) | function getFunctionValue(val, animatable) {
  function getAttribute (line 22433) | function getAttribute(el, prop) {
  function convertPxToUnit (line 22436) | function convertPxToUnit(el, value, unit) {
  function getCSSValue (line 22457) | function getCSSValue(el, prop, unit) {
  function getAnimationType (line 22464) | function getAnimationType(el, prop) {
  function getElementTransforms (line 22478) | function getElementTransforms(el) {
  function getTransformValue (line 22491) | function getTransformValue(el, propName, animatable, unit) {
  function getOriginalTargetValue (line 22500) | function getOriginalTargetValue(target2, propName, unit, animatable) {
  function getRelativeValue (line 22512) | function getRelativeValue(to, from) {
  function validateValue (line 22529) | function validateValue(val, unit) {
  function getDistance (line 22543) | function getDistance(p1, p2) {
  function getCircleLength (line 22546) | function getCircleLength(el) {
  function getRectLength (line 22549) | function getRectLength(el) {
  function getLineLength (line 22552) | function getLineLength(el) {
  function getPolylineLength (line 22555) | function getPolylineLength(el) {
  function getPolygonLength (line 22568) | function getPolygonLength(el) {
  function getTotalLength (line 22572) | function getTotalLength(el) {
  function setDashoffset (line 22589) | function setDashoffset(el) {
  function getParentSvgEl (line 22594) | function getParentSvgEl(el) {
  function getParentSvg (line 22604) | function getParentSvg(pathEl, svgData) {
  function getPath (line 22623) | function getPath(path, percent) {
  function getPathProgress (line 22635) | function getPathProgress(path, progress, isPathTargetInsideSVG) {
  function decomposeValue (line 22657) | function decomposeValue(val, unit) {
  function parseTargets (line 22666) | function parseTargets(targets) {
  function getAnimatables (line 22672) | function getAnimatables(targets) {
  function normalizePropertyTweens (line 22678) | function normalizePropertyTweens(prop, tweenSettings) {
  function flattenKeyframes (line 22708) | function flattenKeyframes(keyframes) {
  function getProperties (line 22740) | function getProperties(tweenSettings, params) {
  function normalizeTweenValues (line 22756) | function normalizeTweenValues(tween, animatable) {
  function normalizeTweens (line 22774) | function normalizeTweens(prop, animatable) {
  function setTargetsValue (line 22825) | function setTargetsValue(targets, properties) {
  function createAnimation (line 22840) | function createAnimation(animatable, prop) {
  function getAnimations (line 22856) | function getAnimations(animatables, properties) {
  function getInstanceTimings (line 22865) | function getInstanceTimings(animations, tweenSettings) {
  function createNewInstance (line 22883) | function createNewInstance(params) {
  function play (line 22905) | function play() {
  function step (line 22910) | function step(t2) {
  function handleVisibilityChange (line 22925) | function handleVisibilityChange() {
  function isDocumentHidden (line 22943) | function isDocumentHidden() {
  function anime (line 22946) | function anime(params) {
  function removeTargetsFromAnimations (line 23206) | function removeTargetsFromAnimations(targetsArray, animations) {
  function removeTargetsFromInstance (line 23213) | function removeTargetsFromInstance(targetsArray, instance) {
  function removeTargetsFromActiveInstances (line 23229) | function removeTargetsFromActiveInstances(targets) {
  function stagger (line 23236) | function stagger(val, params) {
  function timeline (line 23301) | function timeline(params) {
  function SvgComponent$2f (line 23592) | function SvgComponent$2f(props) {
  function SvgComponent$2e (line 23641) | function SvgComponent$2e(props) {
  function SvgComponent$2d (line 23659) | function SvgComponent$2d(props) {
  function SvgComponent$2c (line 23677) | function SvgComponent$2c(props) {
  function LeftPanel (line 23724) | function LeftPanel(props) {
  function useThemeDetector (line 23794) | function useThemeDetector() {
  function NavbarThemeProvider (line 23834) | function NavbarThemeProvider(props) {
  function DesignContent (line 23887) | function DesignContent(props) {
  function adopt (line 23935) | function adopt(value) {
  function fulfilled (line 23941) | function fulfilled(value) {
  function rejected (line 23948) | function rejected(value) {
  function step (line 23955) | function step(result) {
  function verb (line 23970) | function verb(n2) {
  function step (line 23975) | function step(op) {
  function DevelopContent (line 24058) | function DevelopContent(props) {
  function EcosystemContent (line 24169) | function EcosystemContent(props) {
  function NavTabs (line 24226) | function NavTabs(_a) {
  function adopt (line 24307) | function adopt(value) {
  function fulfilled (line 24313) | function fulfilled(value) {
  function rejected (line 24320) | function rejected(value) {
  function step (line 24327) | function step(result) {
  function verb (line 24342) | function verb(n2) {
  function step (line 24347) | function step(op) {
  function MessageBox (line 24440) | function MessageBox() {
  function getThemeIcon (line 24514) | function getThemeIcon(theme) {
  function ThemeSelect (line 24526) | function ThemeSelect(props) {
  function LanguageSelect (line 24561) | function LanguageSelect(props) {
  function RtlSelect (line 24581) | function RtlSelect(props) {
  function joinChat (line 24597) | function joinChat(chatId, email) {
  function ChatSelect (line 24617) | function ChatSelect(props) {
  function GithubBtn (line 24648) | function GithubBtn() {
  function RightOperation (line 24652) | function RightOperation(props) {
  function adopt (line 24658) | function adopt(value) {
  function fulfilled (line 24664) | function fulfilled(value) {
  function rejected (line 24671) | function rejected(value) {
  function step (line 24678) | function step(result) {
  function verb (line 24693) | function verb(n2) {
  function step (line 24698) | function step(op) {
  function UserSetting (line 24822) | function UserSetting(props) {
  function UserDrawer (line 24931) | function UserDrawer(props) {
  function Profile (line 24977) | function Profile(props) {
  function AlgoliaLogo (line 25049) | function AlgoliaLogo(_ref2) {
  function createBrowserLocalStorageCache (line 25067) | function createBrowserLocalStorageCache(options) {
  function createFallbackableCache (line 25113) | function createFallbackableCache(options) {
  function createNullCache (line 25144) | function createNullCache() {
  function createInMemoryCache (line 25163) | function createInMemoryCache(options = { serializable: true }) {
  function createAuth (line 25191) | function createAuth(authMode, appId, apiKey) {
  function shuffle (line 25205) | function shuffle(array) {
  function addMethods (line 25215) | function addMethods(base, methods) {
  function encode (line 25224) | function encode(format, ...args) {
  function createMappedRequestOptions (line 25233) | function createMappedRequestOptions(requestOptions, timeout) {
  constant EXPIRATION_DELAY (line 25259) | const EXPIRATION_DELAY = 2 * 60 * 1e3;
  function createStatefulHost (line 25260) | function createStatefulHost(host, status = HostStatusEnum.Up) {
  function isStatefulHostUp (line 25266) | function isStatefulHostUp(host) {
  function isStatefulHostTimeouted (line 25269) | function isStatefulHostTimeouted(host) {
  function createStatelessHost (line 25272) | function createStatelessHost(options) {
  function createRetryableOptions (line 25292) | function createRetryableOptions(hostsCache, statelessHosts) {
  function retryableRequest (line 25331) | function retryableRequest(transporter, statelessHosts, request2, request...
  function createTransporter (line 25389) | function createTransporter(options) {
  function createUserAgent (line 25433) | function createUserAgent(version2) {
  function deserializeSuccess (line 25446) | function deserializeSuccess(response) {
  function deserializeFailure (line 25453) | function deserializeFailure({ content, status }, stackFrame) {
  function serializeUrl (line 25461) | function serializeUrl(host, path, queryParameters) {
  function serializeQueryParameters (line 25469) | function serializeQueryParameters(parameters) {
  function serializeData (line 25473) | function serializeData(request2, requestOptions) {
  function serializeHeaders (line 25480) | function serializeHeaders(transporter, requestOptions) {
  function stackTraceWithoutCredentials (line 25489) | function stackTraceWithoutCredentials(stackTrace) {
  function stackFrameWithoutCredentials (line 25492) | function stackFrameWithoutCredentials(stackFrame) {
  function createApiError (line 25500) | function createApiError(message, status, transporterStackTrace) {
  function createDeserializationError (line 25508) | function createDeserializationError(message, response) {
  function createRetryError (line 25515) | function createRetryError(transporterStackTrace) {
  method addAlgoliaAgent (line 25541) | addAlgoliaAgent(segment, version2) {
  method clearCache (line 25544) | clearCache() {
  function createConsoleLogger (line 25640) | function createConsoleLogger(logLevel) {
  function createBrowserXhrRequester (line 25660) | function createBrowserXhrRequester() {
  function algoliasearch (line 25710) | function algoliasearch(appId, apiKey, options) {
  function useSearchClient (line 25752) | function useSearchClient(appId, apiKey, transformSearchClient) {
  function SvgComponent$2b (line 25763) | function SvgComponent$2b(props) {
  function SvgComponent$2a (line 25789) | function SvgComponent$2a(props) {
  function SvgComponent$29 (line 25801) | function SvgComponent$29(props) {
  function SvgComponent$28 (line 25837) | function SvgComponent$28(props) {
  function SvgComponent$27 (line 25874) | function SvgComponent$27(props) {
  function SvgComponent$26 (line 25913) | function SvgComponent$26(props) {
  function SvgComponent$25 (line 25954) | function SvgComponent$25(props) {
  function SvgComponent$24 (line 26004) | function SvgComponent$24(props) {
  function SvgComponent$23 (line 26057) | function SvgComponent$23(props) {
  function SvgComponent$22 (line 26127) | function SvgComponent$22(props) {
  function SvgComponent$21 (line 26199) | function SvgComponent$21(props) {
  function SvgComponent$20 (line 26231) | function SvgComponent$20(props) {
  function SvgComponent$1$ (line 26272) | function SvgComponent$1$(props) {
  function SvgComponent$1_ (line 26304) | function SvgComponent$1_(props) {
  function SvgComponent$1Z (line 26345) | function SvgComponent$1Z(props) {
  function SvgComponent$1Y (line 26385) | function SvgComponent$1Y(props) {
  function SvgComponent$1X (line 26426) | function SvgComponent$1X(props) {
  function SvgComponent$1W (line 26463) | function SvgComponent$1W(props) {
  function SvgComponent$1V (line 26501) | function SvgComponent$1V(props) {
  function SvgComponent$1U (line 26546) | function SvgComponent$1U(props) {
  function SvgComponent$1T (line 26591) | function SvgComponent$1T(props) {
  function SvgComponent$1S (line 26641) | function SvgComponent$1S(props) {
  function SvgComponent$1R (line 26692) | function SvgComponent$1R(props) {
  function SvgComponent$1Q (line 26724) | function SvgComponent$1Q(props) {
  function SvgComponent$1P (line 26757) | function SvgComponent$1P(props) {
  function SvgComponent$1O (line 26797) | function SvgComponent$1O(props) {
  function SvgComponent$1N (line 26839) | function SvgComponent$1N(props) {
  function SvgComponent$1M (line 26910) | function SvgComponent$1M(props) {
  function SvgComponent$1L (line 26986) | function SvgComponent$1L(props) {
  function SvgComponent$1K (line 27007) | function SvgComponent$1K(props) {
  function SvgComponent$1J (line 27028) | function SvgComponent$1J(props) {
  function SvgComponent$1I (line 27095) | function SvgComponent$1I(props) {
  function SvgComponent$1H (line 27162) | function SvgComponent$1H(props) {
  function SvgComponent$1G (line 27203) | function SvgComponent$1G(props) {
  function SvgComponent$1F (line 27245) | function SvgComponent$1F(props) {
  function SvgComponent$1E (line 27276) | function SvgComponent$1E(props) {
  function SvgComponent$1D (line 27308) | function SvgComponent$1D(props) {
  function SvgComponent$1C (line 27373) | function SvgComponent$1C(props) {
  function SvgComponent$1B (line 27439) | function SvgComponent$1B(props) {
  function SvgComponent$1A (line 27515) | function SvgComponent$1A(props) {
  function SvgComponent$1z (line 27595) | function SvgComponent$1z(props) {
  function SvgComponent$1y (line 27633) | function SvgComponent$1y(props) {
  function SvgComponent$1x (line 27672) | function SvgComponent$1x(props) {
  function SvgComponent$1w (line 27701) | function SvgComponent$1w(props) {
  function SvgComponent$1v (line 27731) | function SvgComponent$1v(props) {
  function SvgComponent$1u (line 27780) | function SvgComponent$1u(props) {
  function SvgComponent$1t (line 27830) | function SvgComponent$1t(props) {
  function SvgComponent$1s (line 27860) | function SvgComponent$1s(props) {
  function SvgComponent$1r (line 27891) | function SvgComponent$1r(props) {
  function SvgComponent$1q (line 27943) | function SvgComponent$1q(props) {
  function SvgComponent$1p (line 27997) | function SvgComponent$1p(props) {
  function SvgComponent$1o (line 28021) | function SvgComponent$1o(props) {
  function SvgComponent$1n (line 28048) | function SvgComponent$1n(props) {
  function SvgComponent$1m (line 28080) | function SvgComponent$1m(props) {
  function SvgComponent$1l (line 28112) | function SvgComponent$1l(props) {
  function SvgComponent$1k (line 28148) | function SvgComponent$1k(props) {
  function SvgComponent$1j (line 28185) | function SvgComponent$1j(props) {
  function SvgComponent$1i (line 28246) | function SvgComponent$1i(props) {
  function SvgComponent$1h (line 28308) | function SvgComponent$1h(props) {
  function SvgComponent$1g (line 28357) | function SvgComponent$1g(props) {
  function SvgComponent$1f (line 28406) | function SvgComponent$1f(props) {
  function SvgComponent$1e (line 28460) | function SvgComponent$1e(props) {
  function SvgComponent$1d (line 28515) | function SvgComponent$1d(props) {
  function SvgComponent$1c (line 28550) | function SvgComponent$1c(props) {
  function SvgComponent$1b (line 28586) | function SvgComponent$1b(props) {
  function SvgComponent$1a (line 28624) | function SvgComponent$1a(props) {
  function SvgComponent$19 (line 28662) | function SvgComponent$19(props) {
  function SvgComponent$18 (line 28717) | function SvgComponent$18(props) {
  function SvgComponent$17 (line 28774) | function SvgComponent$17(props) {
  function SvgComponent$16 (line 28804) | function SvgComponent$16(props) {
  function SvgComponent$15 (line 28834) | function SvgComponent$15(props) {
  function SvgComponent$14 (line 28900) | function SvgComponent$14(props) {
  function SvgComponent$13 (line 28969) | function SvgComponent$13(props) {
  function SvgComponent$12 (line 29014) | function SvgComponent$12(props) {
  function SvgComponent$11 (line 29060) | function SvgComponent$11(props) {
  function SvgComponent$10 (line 29120) | function SvgComponent$10(props) {
  function SvgComponent$$ (line 29195) | function SvgComponent$$(props) {
  function SvgComponent$_ (line 29248) | function SvgComponent$_(props) {
  function SvgComponent$Z (line 29303) | function SvgComponent$Z(props) {
  function SvgComponent$Y (line 29359) | function SvgComponent$Y(props) {
  function SvgComponent$X (line 29416) | function SvgComponent$X(props) {
  function SvgComponent$W (line 29456) | function SvgComponent$W(props) {
  function SvgComponent$V (line 29497) | function SvgComponent$V(props) {
  function SvgComponent$U (line 29554) | function SvgComponent$U(props) {
  function SvgComponent$T (line 29614) | function SvgComponent$T(props) {
  function SvgComponent$S (line 29664) | function SvgComponent$S(props) {
  function SvgComponent$R (line 29716) | function SvgComponent$R(props) {
  function SvgComponent$Q (line 29746) | function SvgComponent$Q(props) {
  function SvgComponent$P (line 29777) | function SvgComponent$P(props) {
  function SvgComponent$O (line 29800) | function SvgComponent$O(props) {
  function SvgComponent$N (line 29823) | function SvgComponent$N(props) {
  function SvgComponent$M (line 29852) | function SvgComponent$M(props) {
  function SvgComponent$L (line 29882) | function SvgComponent$L(props) {
  function SvgComponent$K (line 29922) | function SvgComponent$K(props) {
  function SvgComponent$J (line 29962) | function SvgComponent$J(props) {
  function SvgComponent$I (line 30008) | function SvgComponent$I(props) {
  function SvgComponent$H (line 30065) | function SvgComponent$H(props) {
  function SvgComponent$G (line 30105) | function SvgComponent$G(props) {
  function SvgComponent$F (line 30146) | function SvgComponent$F(props) {
  function SvgComponent$E (line 30176) | function SvgComponent$E(props) {
  function SvgComponent$D (line 30209) | function SvgComponent$D(props) {
  function SvgComponent$C (line 30268) | function SvgComponent$C(props) {
  function SvgComponent$B (line 30329) | function SvgComponent$B(props) {
  function SvgComponent$A (line 30371) | function SvgComponent$A(props) {
  function SvgComponent$z (line 30414) | function SvgComponent$z(props) {
  function SvgComponent$y (line 30464) | function SvgComponent$y(props) {
  function SvgComponent$x (line 30520) | function SvgComponent$x(props) {
  function SvgComponent$w (line 30570) | function SvgComponent$w(props) {
  function SvgComponent$v (line 30620) | function SvgComponent$v(props) {
  function SvgComponent$u (line 30674) | function SvgComponent$u(props) {
  function SvgComponent$t (line 30730) | function SvgComponent$t(props) {
  function SvgComponent$s (line 30751) | function SvgComponent$s(props) {
  function SvgComponent$r (line 30772) | function SvgComponent$r(props) {
  function SvgComponent$q (line 30852) | function SvgComponent$q(props) {
  function SvgComponent$p (line 30936) | function SvgComponent$p(props) {
  function SvgComponent$o (line 30977) | function SvgComponent$o(props) {
  function SvgComponent$n (line 31019) | function SvgComponent$n(props) {
  function SvgComponent$m (line 31073) | function SvgComponent$m(props) {
  function SvgComponent$l (line 31128) | function SvgComponent$l(props) {
  function SvgComponent$k (line 31187) | function SvgComponent$k(props) {
  function SvgComponent$j (line 31247) | function SvgComponent$j(props) {
  function SvgComponent$i (line 31303) | function SvgComponent$i(props) {
  function SvgComponent$h (line 31362) | function SvgComponent$h(props) {
  function SvgComponent$g (line 31393) | function SvgComponent$g(props) {
  function SvgComponent$f (line 31425) | function SvgComponent$f(props) {
  function SvgComponent$e (line 31523) | function SvgComponent$e(props) {
  function SvgComponent$d (line 31625) | function SvgComponent$d(props) {
  function SvgComponent$c (line 31679) | function SvgComponent$c(props) {
  function SvgComponent$b (line 31727) | function SvgComponent$b(props) {
  function SvgComponent$a (line 31774) | function SvgComponent$a(props) {
  function SvgComponent$9 (line 31824) | function SvgComponent$9(props) {
  function SvgComponent$8 (line 31857) | function SvgComponent$8(props) {
  function SvgComponent$7 (line 31891) | function SvgComponent$7(props) {
  function SvgComponent$6 (line 31945) | function SvgComponent$6(props) {
  function SvgComponent$5 (line 31998) | function SvgComponent$5(props) {
  function SvgComponent$4 (line 32030) | function SvgComponent$4(props) {
  function SvgComponent$3 (line 32200) | function SvgComponent$3(props) {
  function SvgComponent$2 (line 32214) | function SvgComponent$2(props) {
  function SvgComponent$1 (line 32228) | function SvgComponent$1(props) {
  function SvgComponent (line 32242) | function SvgComponent(props) {
  function List (line 32303) | function List(_a) {
  function underscored (line 32526) | function underscored(str) {
  function decodeHTMLEntities (line 32529) | function decodeHTMLEntities(text) {
  function getBackgroundColor (line 32582) | function getBackgroundColor(svg) {
  function getComponentUrl (line 32596) | function getComponentUrl(component, lang, type) {
  function getQueryList (line 32607) | function getQueryList(inputValue2) {
  function useDebounce (line 32765) | function useDebounce(value, delay) {
  function adopt (line 32793) | function adopt(value) {
  function fulfilled (line 32799) | function fulfilled(value) {
  function rejected (line 32806) | function rejected(value) {
  function step (line 32813) | function step(result) {
  function verb (line 32828) | function verb(n2) {
  function step (line 32833) | function step(op) {
  function SearchModal (line 32986) | function SearchModal(_a) {
  function SearchInput (line 33210) | function SearchInput(props) {
  function NavbarLogo (line 33237) | function NavbarLogo(props) {
  function adopt (line 33244) | function adopt(value) {
  function fulfilled (line 33250) | function fulfilled(value) {
  function rejected (line 33257) | function rejected(value) {
  function step (line 33264) | function step(result) {
  function verb (line 33279) | function verb(n2) {
  function step (line 33284) | function step(op) {
  function GlobalNotice (line 33375) | function GlobalNotice(props) {
  function MobileMenu (line 33451) | function MobileMenu() {
  function MobileNavbar (line 33484) | function MobileNavbar(props) {
  function adopt (line 33500) | function adopt(value) {
  function fulfilled (line 33506) | function fulfilled(value) {
  function rejected (line 33513) | function rejected(value) {
  function step (line 33520) | function step(result) {
  function verb (line 33535) | function verb(n2) {
  function step (line 33540) | function step(op) {
  function getTccConfig (line 33650) | function getTccConfig() {
  function updateScreen (line 33673) | function updateScreen() {

FILE: packages/arco-vue-docs-navbar/plugins/rollup-plugin-svgr.ts
  function svgrPlugin (line 6) | function svgrPlugin(): Plugin {

FILE: packages/arco-vue-docs-navbar/src/index.tsx
  type NavBarOptions (line 10) | interface NavBarOptions {

FILE: packages/arco-vue-docs/components/article/context.ts
  type ArticleContext (line 4) | interface ArticleContext {

FILE: packages/arco-vue-docs/components/aside-anchor/interface.ts
  type AnchorData (line 1) | interface AnchorData {

FILE: packages/arco-vue-docs/components/theme-box/interface.ts
  type ThemeData (line 1) | interface ThemeData {

FILE: packages/arco-vue-docs/context.ts
  type CollapseContext (line 3) | interface CollapseContext {

FILE: packages/arco-vue-docs/global.d.ts
  type Window (line 14) | interface Window {

FILE: packages/arco-vue-docs/router.ts
  function toKebabCase (line 705) | function toKebabCase(string: string) {
  type ComponentMenuGroup (line 711) | interface ComponentMenuGroup {
  method scrollBehavior (line 794) | scrollBehavior(to, from, savedPosition) {

FILE: packages/arco-vue-docs/utils/clipboard.ts
  function clipboard (line 3) | function clipboard(text: string) {

FILE: packages/arco-vue-docs/utils/codepen.ts
  constant CSS_EXTERNAL (line 1) | const CSS_EXTERNAL = [
  constant JS_EXTERNAL (line 4) | const JS_EXTERNAL = [

FILE: packages/arco-vue-docs/utils/join-chart.ts
  function joinChat (line 4) | function joinChat() {

FILE: packages/arco-vue-docs/utils/login.ts
  function checkLogin (line 6) | async function checkLogin() {

FILE: packages/arco-vue-scripts/src/plugins/md-vue-jest/index.js
  method process (line 17) | process(source, sourcePath, config) {

FILE: packages/arco-vue-scripts/src/plugins/vite-plugin-cssjs/index.ts
  function cssjsPlugin (line 3) | function cssjsPlugin(): Plugin {

FILE: packages/arco-vue-scripts/src/plugins/vite-plugin-external/index.ts
  function externalPlugin (line 3) | function externalPlugin(): Plugin {

FILE: packages/arco-vue-scripts/src/plugins/vite-plugin-vue-export-helper/index.ts
  constant EXPORT_HELPER_ID (line 3) | const EXPORT_HELPER_ID = 'plugin-vue:export-helper';
  function virtualPlugin (line 13) | function virtualPlugin(): Plugin {

FILE: packages/arco-vue-scripts/src/scripts/build-component/index.ts
  function run (line 7) | async function run({ umd = false }) {

FILE: packages/arco-vue-scripts/src/scripts/build-material-library/index.ts
  function run (line 8) | async function run() {

FILE: packages/arco-vue-scripts/src/scripts/build-material/index.ts
  function buildLess (line 11) | async function buildLess() {
  function buildStyle (line 34) | async function buildStyle() {
  function run (line 47) | async function run(buildInput: string) {

FILE: packages/arco-vue-scripts/src/scripts/build-site/index.ts
  function run (line 4) | async function run() {

FILE: packages/arco-vue-scripts/src/scripts/changelog/index.ts
  type Changelog (line 15) | interface Changelog {
  type EmitInfo (line 21) | interface EmitInfo {
  method validate (line 157) | validate(input: any) {
  method validate (line 295) | validate(input: any) {
  method validate (line 313) | validate(input: any) {

FILE: packages/arco-vue-scripts/src/scripts/dev-site/index.ts
  function run (line 4) | async function run() {

FILE: packages/arco-vue-scripts/src/scripts/docgen/index.ts
  constant MD_TEMPLATE (line 14) | const MD_TEMPLATE = 'TEMPLATE.md';
  constant MD_TARGET (line 15) | const MD_TARGET = 'README.zh-CN.md';
  constant MD_TARGET_EN (line 16) | const MD_TARGET_EN = 'README.en-US.md';
  constant MD_MATERIAL_README (line 17) | const MD_MATERIAL_README = 'docs/README.md';
  constant MD_MATERIAL_README_EN (line 18) | const MD_MATERIAL_README_EN = 'docs/README.en-US.md';
  constant TEMPLATE_GLOB (line 19) | const TEMPLATE_GLOB = `components/*/${MD_TEMPLATE}`;
  type ComponentDocType (line 21) | type ComponentDocType = ComponentDoc | ComponentDoc[];
  type ApiType (line 22) | type ApiType = 'component' | 'interface';

FILE: packages/arco-vue-scripts/src/scripts/docgen/slot-tag-handler.ts
  function slotTagHandler (line 7) | function slotTagHandler(documentation: Documentation, path: any) {

FILE: packages/arco-vue-scripts/src/scripts/docgen/utils/index.ts
  function isBoolean (line 20) | function isBoolean(obj: unknown): obj is boolean {
  function unquote (line 29) | function unquote(str: string) {
  function trimStr (line 38) | function trimStr(str: string) {
  function cleanStr (line 47) | function cleanStr(str: string) {

FILE: packages/arco-vue-scripts/src/scripts/docgen/utils/parse-material.ts
  function getMaterialData (line 6) | function getMaterialData(content: string) {
  function getDemoMdContent (line 46) | async function getDemoMdContent(filename: string) {
  function parseMaterial (line 51) | async function parseMaterial(

FILE: packages/arco-vue-scripts/src/scripts/docgen/utils/print.ts
  type LogLevelType (line 3) | type LogLevelType = 'info' | 'warn' | 'success' | 'error';
  function log (line 5) | function log(...args: unknown[]) {
  function print (line 9) | function print(color: string, ...args: any) {

FILE: packages/arco-vue-scripts/src/scripts/dtsgen/index.ts
  function build (line 12) | async function build(input: string, options?: { outDir?: string }) {

FILE: packages/arco-vue-scripts/src/scripts/icongen/index.ts
  type IconData (line 17) | interface IconData {
  function getSVGData (line 39) | function getSVGData(): IconData[] {
  function buildIconComponent (line 65) | async function buildIconComponent(data: IconData[]) {
  function buildIndex (line 118) | function buildIndex(data: IconData[]) {
  function buildType (line 173) | function buildType(data: IconData[]) {

FILE: packages/arco-vue-scripts/src/scripts/jsongen/index.ts
  type ComponentData (line 33) | interface ComponentData {

FILE: packages/arco-vue-scripts/src/utils/config.ts
  constant CONFIG_DIR (line 4) | const CONFIG_DIR = '.config';

FILE: packages/arco-vue-scripts/src/utils/paths.ts
  function resolvePath (line 5) | function resolvePath(...relativePath: any[]) {

FILE: packages/vite-plugin-arco-vue-docs/src/index.ts
  function vueMdPlugin (line 12) | function vueMdPlugin(): Plugin {

FILE: packages/vite-plugin-arco-vue-docs/src/interface.ts
  type Options (line 1) | interface Options {
  type I18nData (line 5) | interface I18nData {
  type FrontMatterToken (line 10) | interface FrontMatterToken {
  type FileImportToken (line 17) | interface FileImportToken {
  type I18nDescriptionToken (line 24) | interface I18nDescriptionToken {

FILE: packages/vite-plugin-arco-vue-docs/src/marked.ts
  method tokenizer (line 17) | tokenizer(src: string) {
  method renderer (line 33) | renderer() {
  method tokenizer (line 42) | tokenizer(src: string) {
  method renderer (line 58) | renderer(token: FileImportToken) {
  method tokenizer (line 66) | tokenizer(src: string) {
  method renderer (line 83) | renderer(token: I18nDescriptionToken) {
  method highlight (line 89) | highlight(
  method heading (line 151) | heading(text: string, level: number, raw: string) {
  method link (line 158) | link(this: any, href, title, text) {
  method code (line 178) | code(this: any, code, infostring) {
  method table (line 200) | table(header: string, body: string) {
  method tablerow (line 208) | tablerow(content: string): string {
  method tablecell (line 211) | tablecell(content: string, { header, align }): string {

FILE: packages/vite-plugin-arco-vue-docs/src/utils.ts
  function isParagraph (line 5) | function isParagraph(token: Token): token is Tokens.Paragraph {
  function isCode (line 9) | function isCode(token: Token): token is Tokens.Code {
  function isHeading (line 13) | function isHeading(token: Token): token is Tokens.Heading {
  function isSpace (line 27) | function isSpace(token: Token): token is Tokens.Space {

FILE: packages/web-vue-storybook/.storybook/main.js
  function getLoaderForStyle (line 6) | function getLoaderForStyle(cssOptions) {

FILE: packages/web-vue-storybook/stories/components/dropdown.tsx
  method setup (line 5) | setup() {

FILE: packages/web-vue-storybook/stories/components/select.tsx
  method setup (line 5) | setup() {

FILE: packages/web-vue/components/_components/auto-tooltip/auto-tooltip.tsx
  method setup (line 14) | setup(props, { attrs, slots }) {

FILE: packages/web-vue/components/_components/client-only.tsx
  method setup (line 5) | setup(_, { slots }) {

FILE: packages/web-vue/components/_components/input-label/input-label.tsx
  method setup (line 33) | setup(props, { attrs, emit, slots }) {
  method focus (line 161) | focus() {
  method blur (line 164) | blur() {
  method render (line 168) | render() {

FILE: packages/web-vue/components/_components/render-function.ts
  type RenderFunc (line 3) | type RenderFunc = (props: Record<string, unknown>) => VNodeTypes;
  method render (line 13) | render() {

FILE: packages/web-vue/components/_components/resize-observer-v2.ts
  method setup (line 17) | setup(props, { emit, slots }) {

FILE: packages/web-vue/components/_components/resize-observer.tsx
  method setup (line 24) | setup(props, { emit, slots }) {

FILE: packages/web-vue/components/_components/select-view/interface.ts
  type SelectViewValue (line 3) | interface SelectViewValue extends TagData {

FILE: packages/web-vue/components/_components/select-view/select-view.tsx
  method setup (line 81) | setup(props, { emit, slots }) {
  method focus (line 239) | focus() {
  method blur (line 244) | blur() {
  method render (line 250) | render() {

FILE: packages/web-vue/components/_components/virtual-list-v2/interface.ts
  type VirtualItemKey (line 3) | type VirtualItemKey = string | number;
  type InternalDataItem (line 5) | interface InternalDataItem {
  type ItemSlot (line 11) | type ItemSlot = (props: { item: unknown; index: number }) => VNode[];
  type ScrollIntoViewOptions (line 13) | interface ScrollIntoViewOptions {
  type VirtualListProps (line 19) | interface VirtualListProps {
  type ScrollOptions (line 59) | type ScrollOptions =
  type VirtualListRef (line 63) | interface VirtualListRef {

FILE: packages/web-vue/components/_components/virtual-list-v2/virtual-list-item.tsx
  method setup (line 24) | setup(props, { slots }) {

FILE: packages/web-vue/components/_components/virtual-list/hooks/use-item-height.ts
  constant DEFAULT_ITEM_HEIGHT (line 5) | const DEFAULT_ITEM_HEIGHT = 32;
  function useItemHeight (line 7) | function useItemHeight(props: {

FILE: packages/web-vue/components/_components/virtual-list/hooks/use-range-state.ts
  function useRangeState (line 5) | function useRangeState(props: {

FILE: packages/web-vue/components/_components/virtual-list/hooks/use-render-children.tsx
  function useRenderChildren (line 12) | function useRenderChildren(

FILE: packages/web-vue/components/_components/virtual-list/hooks/use-scroll-to.ts
  type RelativeScroll (line 11) | interface RelativeScroll {
  function useScrollTo (line 16) | function useScrollTo(props: {

FILE: packages/web-vue/components/_components/virtual-list/hooks/use-viewport-height.ts
  constant DEFAULT_HEIGHT (line 4) | const DEFAULT_HEIGHT = 200;
  function useViewportHeight (line 6) | function useViewportHeight(props: { height: number | string }) {

FILE: packages/web-vue/components/_components/virtual-list/interface.ts
  type VirtualItemKey (line 3) | type VirtualItemKey = string | number;
  type InternalDataItem (line 5) | interface InternalDataItem {
  type ItemSlot (line 11) | type ItemSlot = (props: { item: unknown; index: number }) => VNode[];
  type ScrollIntoViewOptions (line 13) | interface ScrollIntoViewOptions {
  type VirtualListProps (line 19) | interface VirtualListProps {
  type ScrollOptions (line 41) | type ScrollOptions =
  type VirtualListRef (line 45) | interface VirtualListRef {

FILE: packages/web-vue/components/_components/virtual-list/utils/algorithm.ts
  function getIndexByStartLoc (line 18) | function getIndexByStartLoc(
  function findListDiffIndex (line 48) | function findListDiffIndex<T>(

FILE: packages/web-vue/components/_components/virtual-list/utils/index.ts
  function getValidScrollTop (line 7) | function getValidScrollTop(scrollTop: number, scrollRange: number) {
  function getScrollPercentage (line 15) | function getScrollPercentage({
  function getLocationItem (line 34) | function getLocationItem(scrollPtg: number, itemCount: number) {
  function getRangeIndex (line 50) | function getRangeIndex(
  type ItemTopConfig (line 68) | interface ItemTopConfig {
  function getItemRelativeTop (line 79) | function getItemRelativeTop({
  function getItemAbsoluteTop (line 92) | function getItemAbsoluteTop({ scrollTop, ...rest }: ItemTopConfig) {
  type CompareItemConfig (line 96) | interface CompareItemConfig {
  function getCompareItemRelativeTop (line 109) | function getCompareItemRelativeTop({

FILE: packages/web-vue/components/_hooks/use-cursor.ts
  function useCursor (line 4) | function useCursor(

FILE: packages/web-vue/components/_hooks/use-merge-state.ts
  function useMergeState (line 5) | function useMergeState<T, E = T | undefined>(

FILE: packages/web-vue/components/_hooks/use-pick-slots.ts
  function usePickSlots (line 3) | function usePickSlots(slots: Slots, slotName: string) {

FILE: packages/web-vue/components/_hooks/use-popup-container.ts
  type PopupContainerProps (line 5) | interface PopupContainerProps {
  function usePopupContainer (line 8) | function usePopupContainer(

FILE: packages/web-vue/components/_hooks/use-popup-manager.ts
  type PopupType (line 3) | type PopupType = 'popup' | 'dialog' | 'message';
  constant POPUP_BASE_Z_INDEX (line 5) | const POPUP_BASE_Z_INDEX = 1000;
  constant MESSAGE_BASE_Z_INDEX (line 6) | const MESSAGE_BASE_Z_INDEX = 5000;
  constant Z_INDEX_STEP (line 7) | const Z_INDEX_STEP = 1;
  class PopupManager (line 9) | class PopupManager {
  function usePopupManager (line 50) | function usePopupManager(

FILE: packages/web-vue/components/_hooks/use-popup-overflow-hidden.ts
  type PopupOverflowHiddenProps (line 3) | interface PopupOverflowHiddenProps {
  function usePopupOverflowHidden (line 8) | function usePopupOverflowHidden(

FILE: packages/web-vue/components/_hooks/use-responsive.ts
  function useResponsive (line 4) | function useResponsive(

FILE: packages/web-vue/components/_hooks/use-state.ts
  function useState (line 3) | function useState<T>(

FILE: packages/web-vue/components/_utils/color.ts
  constant CSS_INTEGER (line 56) | const CSS_INTEGER = '[-\\+]?\\d+%?';
  constant CSS_NUMBER (line 59) | const CSS_NUMBER = '[-\\+]?\\d*\\.\\d+%?';
  constant CSS_UNIT (line 62) | const CSS_UNIT = `(?:${CSS_NUMBER})|(?:${CSS_INTEGER})`;
  constant PERMISSIVE_MATCH3 (line 67) | const PERMISSIVE_MATCH3 = `[\\s|\\(]+(${CSS_UNIT})[,|\\s]+(${CSS_UNIT})[...
  constant PERMISSIVE_MATCH4 (line 68) | const PERMISSIVE_MATCH4 = `[\\s|\\(]+(${CSS_UNIT})[,|\\s]+(${CSS_UNIT})[...

FILE: packages/web-vue/components/_utils/constant.ts
  constant SIZES (line 1) | const SIZES = ['mini', 'small', 'medium', 'large'] as const;
  type Size (line 2) | type Size = typeof SIZES[number];
  constant BORDER_SHAPES (line 3) | const BORDER_SHAPES = ['square', 'round', 'circle'] as const;
  type BorderShape (line 4) | type BorderShape = typeof BORDER_SHAPES[number];
  constant STATUSES (line 5) | const STATUSES = ['normal', 'success', 'warning', 'danger'] as const;
  type Status (line 6) | type Status = typeof STATUSES[number];
  constant MESSAGE_TYPES (line 7) | const MESSAGE_TYPES = ['info', 'success', 'warning', 'error'] as const;
  type MessageType (line 8) | type MessageType = typeof MESSAGE_TYPES[number];
  constant TRIGGER_POSITIONS (line 9) | const TRIGGER_POSITIONS = [
  type TriggerPosition (line 23) | type TriggerPosition = typeof TRIGGER_POSITIONS[number];
  constant TRIGGER_EVENTS (line 24) | const TRIGGER_EVENTS = [
  type TriggerEvent (line 30) | type TriggerEvent = typeof TRIGGER_EVENTS[number];
  constant DIRECTIONS (line 31) | const DIRECTIONS = ['horizontal', 'vertical'] as const;
  type Direction (line 32) | type Direction = typeof DIRECTIONS[number];
  constant INPUT_EVENTS (line 33) | const INPUT_EVENTS = [
  constant TEXT_ALIGNS (line 70) | const TEXT_ALIGNS = ['left', 'center', 'right'] as const;
  type TextAlign (line 71) | type TextAlign = typeof TEXT_ALIGNS[number];

FILE: packages/web-vue/components/_utils/date.ts
  method add (line 45) | add(time: Dayjs, value: number, unit: UnitType) {
  method subtract (line 48) | subtract(time: Dayjs, value: number, unit: UnitType) {
  method startOf (line 51) | startOf(time: Dayjs, unit: OpUnitType) {
  method startOfWeek (line 60) | startOfWeek(time: Dayjs, weekStart: number) {
  method endOf (line 68) | endOf(time: Dayjs, unit: OpUnitType) {
  method set (line 71) | set(time: Dayjs, unit: UnitType, value: number) {
  method isSameWeek (line 74) | isSameWeek(date1: Dayjs, date2: Dayjs, weekStart: number) {
  function getNow (line 85) | function getNow() {
  function getSortedDayjsArray (line 89) | function getSortedDayjsArray(values: Dayjs[]) {
  function isValueChange (line 93) | function isValueChange(
  type DateValue (line 130) | type DateValue = Date | string | number;
  function getDayjsValue (line 154) | function getDayjsValue(
  function getDateValue (line 207) | function getDateValue(
  function initializeDateLocale (line 219) | function initializeDateLocale(localeName: string, weekStart: number) {
  function pickDataAttributes (line 223) | function pickDataAttributes<

FILE: packages/web-vue/components/_utils/debounce.ts
  function debounce (line 3) | function debounce(callback: (...args: any[]) => void, delay: number) {

FILE: packages/web-vue/components/_utils/dom.ts
  type Size (line 7) | interface Size {
  constant OVERLAY_TYPES (line 107) | const OVERLAY_TYPES = [

FILE: packages/web-vue/components/_utils/global-config.ts
  constant COMPONENT_PREFIX (line 6) | const COMPONENT_PREFIX = 'A';
  constant CLASS_PREFIX (line 7) | const CLASS_PREFIX = 'arco';
  constant GLOBAL_CONFIG_NAME (line 8) | const GLOBAL_CONFIG_NAME = '$arco';

FILE: packages/web-vue/components/_utils/is.ts
  function isArray (line 7) | function isArray(obj: any): obj is any[] {
  function isNull (line 11) | function isNull(obj: any): obj is null {
  function isBoolean (line 15) | function isBoolean(obj: unknown): obj is boolean {
  function isObject (line 19) | function isObject<T extends unknown>(
  function isString (line 29) | function isString(obj: any): obj is string {
  function isNumber (line 33) | function isNumber(obj: any): obj is number {
  function isRegExp (line 37) | function isRegExp(obj: any) {
  function isDate (line 41) | function isDate(obj: any) {
  function isHex (line 45) | function isHex(color: any) {
  function isRgb (line 49) | function isRgb(color: any) {
  function isRgba (line 53) | function isRgba(color: any) {
  function isColor (line 57) | function isColor(color: any): boolean {
  function isUndefined (line 61) | function isUndefined(obj: any): obj is undefined {
  function isFunction (line 65) | function isFunction(obj: any): obj is (...args: any[]) => any {
  function isEmptyObject (line 69) | function isEmptyObject(obj: any): boolean {
  function isExist (line 73) | function isExist(obj: any): boolean {
  function isWindow (line 77) | function isWindow(el: any): el is Window {
  function isDayjs (line 97) | function isDayjs(time: any): time is Dayjs {

FILE: packages/web-vue/components/_utils/keyboard.ts
  constant KEYBOARD_KEY (line 3) | const KEYBOARD_KEY = {
  type CodeKey (line 15) | interface CodeKey {

FILE: packages/web-vue/components/_utils/pad.ts
  function padStart (line 1) | function padStart(
  function padEnd (line 16) | function padEnd(

FILE: packages/web-vue/components/_utils/pick-sub-comp-slots.ts
  function pickSubCompSlots (line 3) | function pickSubCompSlots(slots: Slots, subCompName: string) {

FILE: packages/web-vue/components/_utils/pick.ts
  function pick (line 3) | function pick<T extends object, K extends keyof T>(

FILE: packages/web-vue/components/_utils/responsive-observe.ts
  type Breakpoint (line 3) | type Breakpoint = 'xxl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs';
  type BreakpointMap (line 4) | type BreakpointMap = Partial<Record<Breakpoint, string>>;
  type ScreenMap (line 5) | type ScreenMap = Partial<Record<Breakpoint, boolean>>;
  type SubscribeFunc (line 25) | type SubscribeFunc = (
  type MediaQueryResult (line 30) | type MediaQueryResult = { matches: boolean };
  type MediaQueryListener (line 32) | type MediaQueryListener = (matches: MediaQueryResult) => void;
  method dispatch (line 55) | dispatch(pointMap: ScreenMap, breakpointChecked: Breakpoint) {
  method subscribe (line 67) | subscribe(func: SubscribeFunc) {
  method unsubscribe (line 79) | unsubscribe(token: string) {
  method unregister (line 85) | unregister() {
  method register (line 101) | register() {

FILE: packages/web-vue/components/_utils/style.ts
  function fixedWidth (line 9) | function fixedWidth(width: number): Record<string, unknown> {
  function setTransformStyle (line 17) | function setTransformStyle(value: string): Record<string, unknown> {
  function getStyle (line 25) | function getStyle(element: HTMLElement | null, prop: string | null) {

FILE: packages/web-vue/components/_utils/throttle-by-raf.ts
  function throttleByRaf (line 3) | function throttleByRaf(cb: (...args: any[]) => void) {

FILE: packages/web-vue/components/_utils/to-array.ts
  function toArray (line 3) | function toArray<T>(val: T | T[]): T[] {

FILE: packages/web-vue/components/_utils/types.ts
  type ArcoOptions (line 4) | interface ArcoOptions {
  type ArcoIconOptions (line 9) | interface ArcoIconOptions {
  type ArcoGlobalConfig (line 13) | interface ArcoGlobalConfig {
  type UnionToIntersection (line 17) | type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) e...
  type BaseType (line 23) | type BaseType = string | number;
  type UnionType (line 24) | type UnionType = BaseType | Record<string, any>;
  type Data (line 25) | type Data = Record<string, any>;
  type RenderContent (line 26) | type RenderContent = string | RenderFunction;
  type EmitFn (line 28) | type EmitFn<T> = (event: T, ...args: any[]) => void;
  type EmitFn2 (line 30) | type EmitFn2<
  type EmitType (line 41) | type EmitType<T> = T | T[];
  type SFCWithInstall (line 43) | type SFCWithInstall<T, D = Record<string, never>> = T &
  type ClassName (line 48) | type ClassName =
  type FieldString (line 53) | type FieldString<T> = {
  type SlotChildren (line 57) | interface SlotChildren {
  type ValueData (line 61) | interface ValueData {
  type AnimationDuration (line 69) | type AnimationDuration =

FILE: packages/web-vue/components/_utils/use-prop-or-slot.ts
  function usePropOrSlot (line 3) | function usePropOrSlot<T = { [key: string]: any }>(
  function hasPropOrSlot (line 13) | function hasPropOrSlot<T = { [key: string]: any }>(

FILE: packages/web-vue/components/_utils/vue-utils.ts
  type ShapeFlags (line 18) | enum ShapeFlags {
  type PatchFlags (line 34) | enum PatchFlags {
  function unFragment (line 412) | function unFragment(nodeList: VNode[]) {

FILE: packages/web-vue/components/affix/index.ts
  type AffixInstance (line 15) | type AffixInstance = InstanceType<typeof _Affix>;

FILE: packages/web-vue/components/alert/index.ts
  type AlertInstance (line 15) | type AlertInstance = InstanceType<typeof _Alert>;

FILE: packages/web-vue/components/anchor/context.ts
  type AnchorContext (line 3) | interface AnchorContext {

FILE: packages/web-vue/components/anchor/index.ts
  type AnchorInstance (line 18) | type AnchorInstance = InstanceType<typeof _Anchor>;
  type AnchorLinkInstance (line 19) | type AnchorLinkInstance = InstanceType<typeof _AnchorLink>;

FILE: packages/web-vue/components/anchor/utils.ts
  function slide (line 5) | function slide(el: HTMLElement, top: number, cb: () => void): void {

FILE: packages/web-vue/components/auto-complete/auto-complete.tsx
  method setup (line 174) | setup(props, { emit, attrs, slots }) {
  method focus (line 382) | focus() {
  method blur (line 391) | blur() {
  method render (line 395) | render() {

FILE: packages/web-vue/components/auto-complete/index.ts
  type AutoCompleteInstance (line 15) | type AutoCompleteInstance = InstanceType<typeof _AutoComplete>;

FILE: packages/web-vue/components/avatar/avatar-group.tsx
  method setup (line 79) | setup(props, { slots }) {

FILE: packages/web-vue/components/avatar/context.ts
  type AvatarGroupContext (line 4) | interface AvatarGroupContext {

FILE: packages/web-vue/components/avatar/index.ts
  type AvatarInstance (line 18) | type AvatarInstance = InstanceType<typeof _Avatar>;
  type AvatarGroupInstance (line 19) | type AvatarGroupInstance = InstanceType<typeof _AvatarGroup>;

FILE: packages/web-vue/components/avatar/interface.ts
  type AvatarShape (line 1) | type AvatarShape = 'circle' | 'square';
  type AvatarTriggerType (line 3) | type AvatarTriggerType = 'button' | 'mask';
  type ObjectFit (line 5) | type ObjectFit = 'fill' | 'contain' | 'cover' | 'none' | 'scale-down';

FILE: packages/web-vue/components/back-top/index.ts
  type BackTopInstance (line 15) | type BackTopInstance = InstanceType<typeof _BackTop>;

FILE: packages/web-vue/components/badge/badge.tsx
  constant COLORS (line 14) | const COLORS = [
  type ColorType (line 29) | type ColorType = (typeof COLORS)[number];
  constant BADGE_STATUSES (line 31) | const BADGE_STATUSES = [
  type BadgeStatus (line 38) | type BadgeStatus = (typeof BADGE_STATUSES)[number];
  method setup (line 106) | setup(props, { slots }) {

FILE: packages/web-vue/components/badge/index.ts
  type BadgeInstance (line 15) | type BadgeInstance = InstanceType<typeof _Badge>;

FILE: packages/web-vue/components/breadcrumb/breadcrumb-item.tsx
  method setup (line 56) | setup(props, { slots, attrs }) {

FILE: packages/web-vue/components/breadcrumb/breadcrumb.tsx
  method setup (line 73) | setup(props, { slots }) {

FILE: packages/web-vue/components/breadcrumb/context.ts
  type BreadcrumbContext (line 3) | interface BreadcrumbContext {

FILE: packages/web-vue/components/breadcrumb/index.ts
  type BreadcrumbInstance (line 18) | type BreadcrumbInstance = InstanceType<typeof _Breadcrumb>;
  type BreadcrumbItemInstance (line 19) | type BreadcrumbItemInstance = InstanceType<typeof _BreadcrumbItem>;

FILE: packages/web-vue/components/breadcrumb/interface.ts
  type BreadcrumbRoute (line 1) | interface BreadcrumbRoute {

FILE: packages/web-vue/components/button/constants.ts
  constant BUTTON_TYPES (line 1) | const BUTTON_TYPES = [
  type ButtonTypes (line 8) | type ButtonTypes = typeof BUTTON_TYPES[number];

FILE: packages/web-vue/components/button/context.ts
  type ButtonGroupContext (line 5) | interface ButtonGroupContext {

FILE: packages/web-vue/components/button/index.ts
  type ButtonInstance (line 18) | type ButtonInstance = InstanceType<typeof _Button>;
  type ButtonGroupInstance (line 19) | type ButtonGroupInstance = InstanceType<typeof _ButtonGroup>;

FILE: packages/web-vue/components/button/interface.ts
  type ButtonProps (line 4) | interface ButtonProps {

FILE: packages/web-vue/components/calendar/calendar.tsx
  function getFormat (line 15) | function getFormat(mode: 'day' | 'week' | 'month' | 'year', panel?: bool...
  method setup (line 126) | setup(props, { emit, slots }) {

FILE: packages/web-vue/components/calendar/header.tsx
  method setup (line 64) | setup(props, { slots }) {

FILE: packages/web-vue/components/calendar/hooks/useCellClassName.ts
  function getDateValue (line 5) | function getDateValue(date?: Dayjs[], index?: number) {
  function useClassName (line 15) | function useClassName({

FILE: packages/web-vue/components/calendar/index.ts
  type CalendarInstance (line 15) | type CalendarInstance = InstanceType<typeof _Calendar>;

FILE: packages/web-vue/components/calendar/month.tsx
  function getAllDaysByTime (line 29) | function getAllDaysByTime(
  method setup (line 120) | setup(props, { slots }) {

FILE: packages/web-vue/components/calendar/week.tsx
  method setup (line 36) | setup(props) {

FILE: packages/web-vue/components/calendar/year.tsx
  constant MONTHS (line 10) | const MONTHS = [
  method setup (line 73) | setup(props) {

FILE: packages/web-vue/components/card/card-meta.tsx
  constant SIZES (line 5) | const SIZES = ['default', 'small'] as const;
  type SizeType (line 6) | type SizeType = typeof SIZES[number];
  method setup (line 41) | setup(props, { slots }) {

FILE: packages/web-vue/components/card/card.tsx
  method setup (line 107) | setup(props, { slots }) {

FILE: packages/web-vue/components/card/context.ts
  type CardContext (line 3) | interface CardContext {

FILE: packages/web-vue/components/card/index.ts
  type CardInstance (line 21) | type CardInstance = InstanceType<typeof _Card>;
  type CardMetaInstance (line 22) | type CardMetaInstance = InstanceType<typeof _CardMeta>;
  type CardGridInstance (line 23) | type CardGridInstance = InstanceType<typeof _CardGrid>;

FILE: packages/web-vue/components/carousel/carousel.tsx
  constant DEFAULT_AUTO_PLAY (line 27) | const DEFAULT_AUTO_PLAY = {
  function getValidIndex (line 32) | function getValidIndex(i: number, length: number): number {
  method setup (line 165) | setup(props, { emit, slots }) {

FILE: packages/web-vue/components/carousel/context.ts
  type CarouselContext (line 3) | interface CarouselContext {

FILE: packages/web-vue/components/carousel/index.ts
  type CarouselInstance (line 18) | type CarouselInstance = InstanceType<typeof _Carousel>;
  type CarouselItemInstance (line 19) | type CarouselItemInstance = InstanceType<typeof _CarouselItem>;

FILE: packages/web-vue/components/carousel/interface.ts
  type CarouselTriggerEvent (line 1) | type CarouselTriggerEvent = 'click' | 'hover';
  type CarouselArrowType (line 3) | type CarouselArrowType = 'always' | 'hover' | 'never';
  type CarouselIndicatorType (line 5) | type CarouselIndicatorType = 'line' | 'dot' | 'slider' | 'never';
  type CarouselIndicatorPosition (line 7) | type CarouselIndicatorPosition =
  type CarouselAutoPlayConfig (line 14) | type CarouselAutoPlayConfig = {

FILE: packages/web-vue/components/cascader/base-cascader-panel.tsx
  method setup (line 34) | setup(props, { slots }) {

FILE: packages/web-vue/components/cascader/cascader-column.tsx
  method setup (line 37) | setup(props, { slots }) {

FILE: packages/web-vue/components/cascader/cascader-option.tsx
  method setup (line 26) | setup(props) {

FILE: packages/web-vue/components/cascader/cascader-search-panel.tsx
  method setup (line 23) | setup(props, { slots }) {

FILE: packages/web-vue/components/cascader/context.ts
  type CascaderContext (line 5) | interface CascaderContext {

FILE: packages/web-vue/components/cascader/index.ts
  type CascaderInstance (line 18) | type CascaderInstance = InstanceType<typeof _Cascader>;
  type CascaderPanelInstance (line 19) | type CascaderPanelInstance = InstanceType<typeof _CascaderPanel>;

FILE: packages/web-vue/components/cascader/interface.ts
  type CascaderBaseValue (line 5) | type CascaderBaseValue =
  type CascaderOption (line 10) | interface CascaderOption {
  type CascaderFieldNames (line 51) | type CascaderFieldNames = FieldString<CascaderOption>;
  type CascaderOptionWithTotal (line 53) | interface CascaderOptionWithTotal extends CascaderOption {
  type CascaderNode (line 58) | interface CascaderNode extends CascaderOption {
  type CascaderOptionInfo (line 72) | interface CascaderOptionInfo extends CascaderOptionWithTotal {

FILE: packages/web-vue/components/checkbox/checkbox-group.tsx
  method setup (line 97) | setup(props, { emit, slots }) {

FILE: packages/web-vue/components/checkbox/checkbox.tsx
  method setup (line 93) | setup(props, { emit, slots }) {

FILE: packages/web-vue/components/checkbox/context.ts
  type CheckboxGroupContext (line 3) | interface CheckboxGroupContext {

FILE: packages/web-vue/components/checkbox/icon-check.tsx
  method render (line 5) | render() {

FILE: packages/web-vue/components/checkbox/index.ts
  type CheckboxInstance (line 18) | type CheckboxInstance = InstanceType<typeof _Checkbox>;
  type CheckboxGroupInstance (line 19) | type CheckboxGroupInstance = InstanceType<typeof _CheckboxGroup>;

FILE: packages/web-vue/components/checkbox/interface.ts
  type CheckboxOption (line 3) | interface CheckboxOption {

FILE: packages/web-vue/components/collapse/collapse-item.tsx
  method setup (line 72) | setup(props, { slots }) {

FILE: packages/web-vue/components/collapse/context.ts
  type CollapseContext (line 3) | interface CollapseContext {

FILE: packages/web-vue/components/collapse/index.ts
  type CollapseInstance (line 18) | type CollapseInstance = InstanceType<typeof _Collapse>;
  type CollapseItemInstance (line 19) | type CollapseItemInstance = InstanceType<typeof _CollapseItem>;

FILE: packages/web-vue/components/color-picker/color-picker.tsx
  method setup (line 133) | setup(props, { emit, slots }) {

FILE: packages/web-vue/components/color-picker/control-bar.tsx
  method setup (line 21) | setup(props) {

FILE: packages/web-vue/components/color-picker/hooks/use-control-block.ts
  type ControlBlockParams (line 3) | interface ControlBlockParams {
  function onMouseMove (line 47) | function onMouseMove(ev: MouseEvent) {

FILE: packages/web-vue/components/color-picker/index.ts
  type ColorPickerInstance (line 16) | type ColorPickerInstance = InstanceType<typeof _ColorPicker>;

FILE: packages/web-vue/components/color-picker/input-alpha.tsx
  method setup (line 15) | setup(props) {

FILE: packages/web-vue/components/color-picker/input-hex.tsx
  method setup (line 25) | setup(props) {

FILE: packages/web-vue/components/color-picker/input-rgb.tsx
  method setup (line 25) | setup(props) {

FILE: packages/web-vue/components/color-picker/interface.ts
  type RGB (line 1) | interface RGB {
  type HSV (line 7) | interface HSV {
  type Color (line 13) | interface Color {

FILE: packages/web-vue/components/color-picker/palette.tsx
  method setup (line 16) | setup(props) {

FILE: packages/web-vue/components/color-picker/panel.tsx
  method setup (line 35) | setup(props) {

FILE: packages/web-vue/components/comment/index.ts
  type CommentInstance (line 15) | type CommentInstance = InstanceType<typeof _Comment>;

FILE: packages/web-vue/components/components.ts
  type GlobalComponents (line 8) | interface GlobalComponents {
  type ComponentCustomProperties (line 136) | interface ComponentCustomProperties {

FILE: packages/web-vue/components/config-provider/context.ts
  type ConfigProvider (line 5) | interface ConfigProvider {

FILE: packages/web-vue/components/config-provider/index.ts
  type ConfigProviderInstance (line 15) | type ConfigProviderInstance = InstanceType<typeof _ConfigProvider>;

FILE: packages/web-vue/components/date-picker/context.ts
  type PickerContext (line 6) | type PickerContext = Readonly<{

FILE: packages/web-vue/components/date-picker/hooks/use-cell-class-name.ts
  type CellClassNameProps (line 7) | interface CellClassNameProps {
  function useCellClassName (line 15) | function useCellClassName(props: CellClassNameProps) {

FILE: packages/web-vue/components/date-picker/hooks/use-format.ts
  type FormatProps (line 5) | interface FormatProps {
  function getDefaultFormat (line 12) | function getDefaultFormat(mode: Mode = 'date', showTime = false) {
  function getDefaultValueFormat (line 29) | function getDefaultValueFormat(mode: Mode = 'date', showTime = false) {
  function useFormat (line 46) | function useFormat(props: FormatProps) {

FILE: packages/web-vue/components/date-picker/hooks/use-header-value.ts
  type HeaderValueProps (line 7) | interface HeaderValueProps {
  function useHeaderValue (line 16) | function useHeaderValue(props: HeaderValueProps): {

FILE: packages/web-vue/components/date-picker/hooks/use-inject-datepicker-transform.ts
  function useDatePickerTransform (line 4) | function useDatePickerTransform() {

FILE: packages/web-vue/components/date-picker/hooks/use-is-disabled-date.ts
  type IsDisabledProps (line 11) | interface IsDisabledProps {
  function useIsDisabledDate (line 19) | function useIsDisabledDate(props: IsDisabledProps) {

FILE: packages/web-vue/components/date-picker/hooks/use-panel-span.ts
  type PanelSpanProps (line 4) | interface PanelSpanProps {
  function usePanelSpan (line 8) | function usePanelSpan(props: PanelSpanProps) {

FILE: packages/web-vue/components/date-picker/hooks/use-picker-state.ts
  type PickerStateProps (line 8) | interface PickerStateProps {
  function usePickerState (line 14) | function usePickerState(props: PickerStateProps) {

FILE: packages/web-vue/components/date-picker/hooks/use-provide-datepicker-transform.ts
  type DatePickerTransform (line 8) | interface DatePickerTransform {
  function useDatePickerTransform (line 12) | function useDatePickerTransform(props: DatePickerTransform) {

FILE: packages/web-vue/components/date-picker/hooks/use-range-header-value.ts
  type RangeHeaderValueProps (line 9) | interface RangeHeaderValueProps {
  function useRangeHeaderValue (line 20) | function useRangeHeaderValue(props: RangeHeaderValueProps) {

FILE: packages/web-vue/components/date-picker/hooks/use-range-picker-state.ts
  type PickerStateProps (line 9) | interface PickerStateProps {
  function useRangePickerState (line 15) | function useRangePickerState(props: PickerStateProps) {

FILE: packages/web-vue/components/date-picker/hooks/use-range-time-picker-value.ts
  type RangeTimePickerValueProps (line 7) | interface RangeTimePickerValueProps {
  function useRangeTimePickerValue (line 11) | function useRangeTimePickerValue(

FILE: packages/web-vue/components/date-picker/hooks/use-time-picker-value.ts
  type TimePickerValueProps (line 7) | interface TimePickerValueProps {
  function useTimePickerValue (line 11) | function useTimePickerValue(

FILE: packages/web-vue/components/date-picker/hooks/use-value-format.ts
  function getReturnValue (line 5) | function getReturnValue(date: Dayjs, format: ValueFormat) {
  function useReturnValue (line 15) | function useReturnValue(props: { format: ValueFormat }) {
  function getReturnRangeValue (line 29) | function getReturnRangeValue(

FILE: packages/web-vue/components/date-picker/index.ts
  type DatePickerInstance (line 32) | type DatePickerInstance = InstanceType<typeof _DatePicker>;
  type WeekPickerInstance (line 33) | type WeekPickerInstance = InstanceType<typeof _WeekPicker>;
  type MonthPickerInstance (line 34) | type MonthPickerInstance = InstanceType<typeof _MonthPicker>;
  type YearPickerInstance (line 35) | type YearPickerInstance = InstanceType<typeof _YearPicker>;
  type QuarterPickerInstance (line 36) | type QuarterPickerInstance = InstanceType<typeof _QuarterPicker>;
  type RangePickerInstance (line 37) | type RangePickerInstance = InstanceType<typeof _RangePicker>;

FILE: packages/web-vue/components/date-picker/interface.ts
  type CalendarValue (line 5) | type CalendarValue = Date | string | number;
  type ValueFormat (line 6) | type ValueFormat = 'timestamp' | 'Date' | string;
  type ShortcutType (line 8) | interface ShortcutType {
  type DisabledTimeProps (line 29) | interface DisabledTimeProps {
  type FormatFunc (line 35) | type FormatFunc = (current: Date) => string;
  type IsSameTime (line 36) | type IsSameTime = (current: Dayjs, target: Dayjs) => boolean;
  type DisabledDate (line 37) | type DisabledDate = (current: Date) => boolean;
  type DisabledTime (line 38) | type DisabledTime = (current: Date) => DisabledTimeProps;
  type RangeDisabledDate (line 39) | type RangeDisabledDate = (
  type RangeDisabledTime (line 43) | type RangeDisabledTime = (
  type Mode (line 48) | type Mode = 'date' | 'year' | 'quarter' | 'month' | 'week';
  type WeekStart (line 50) | type WeekStart = 0 | 1 | 2 | 3 | 4 | 5 | 6;
  type DatePickerProps (line 52) | interface DatePickerProps {
  type WeekPickerProps (line 63) | interface WeekPickerProps {
  type MonthPickerProps (line 70) | interface MonthPickerProps {
  type YearPickerProps (line 77) | interface YearPickerProps {
  type QuarterPickerProps (line 83) | interface QuarterPickerProps {
  type BasePickerProps (line 89) | interface BasePickerProps {
  type PickerProps (line 108) | type PickerProps = BasePickerProps &
  type RangePickerProps (line 118) | interface RangePickerProps extends BasePickerProps {
  type Cell (line 136) | interface Cell {
  type HeaderOperations (line 148) | interface HeaderOperations {
  type HeaderIcons (line 155) | interface HeaderIcons {
  type StartHeaderProps (line 162) | interface StartHeaderProps {

FILE: packages/web-vue/components/date-picker/pickers/date-picker.tsx
  method setup (line 86) | setup(props, { attrs, slots }) {

FILE: packages/web-vue/components/date-picker/pickers/month-picker.tsx
  method setup (line 30) | setup(props, { attrs, slots }) {

FILE: packages/web-vue/components/date-picker/pickers/quarter-picker.tsx
  method setup (line 39) | setup(props, { attrs, slots }) {

FILE: packages/web-vue/components/date-picker/pickers/week-picker.tsx
  method setup (line 50) | setup(props, { attrs, slots }) {

FILE: packages/web-vue/components/date-picker/pickers/year-picker.tsx
  method setup (line 30) | setup(props, { attrs, slots }) {

FILE: packages/web-vue/components/date-picker/utils/index.ts
  function newArray (line 5) | function newArray<T>(length: number) {
  function normalizeRangeValue (line 9) | function normalizeRangeValue(
  function isCompleteRangeValue (line 18) | function isCompleteRangeValue(
  function isValidRangeValue (line 24) | function isValidRangeValue(
  function mergeValueWithTime (line 32) | function mergeValueWithTime(
  function isDisabledDate (line 45) | function isDisabledDate(

FILE: packages/web-vue/components/descriptions/descriptions.tsx
  method setup (line 118) | setup(props, { slots }) {

FILE: packages/web-vue/components/descriptions/index.ts
  type DescriptionsInstance (line 18) | type DescriptionsInstance = InstanceType<typeof _Descriptions>;
  type DescriptionsItemInstance (line 19) | type DescriptionsItemInstance = InstanceType<typeof _DescriptionsItem>;

FILE: packages/web-vue/components/descriptions/interface.ts
  type DescData (line 3) | interface DescData {
  type DescLayout (line 22) | type DescLayout =
  type DescItemData (line 28) | interface DescItemData {
  type RenderData (line 33) | interface RenderData {

FILE: packages/web-vue/components/divider/divider.tsx
  method setup (line 51) | setup(props, { slots }) {

FILE: packages/web-vue/components/divider/index.ts
  type DividerInstance (line 15) | type DividerInstance = InstanceType<typeof _Divider>;

FILE: packages/web-vue/components/drawer/index.ts
  type DrawerInstance (line 141) | type DrawerInstance = InstanceType<typeof _Drawer>;

FILE: packages/web-vue/components/drawer/interface.ts
  type DrawerConfig (line 5) | interface DrawerConfig {
  type DrawerUpdateConfig (line 166) | type DrawerUpdateConfig = Omit<
  type DrawerReturn (line 182) | interface DrawerReturn {
  type DrawerMethod (line 196) | interface DrawerMethod {

FILE: packages/web-vue/components/dropdown/context.ts
  type DropdownContext (line 3) | interface DropdownContext {

FILE: packages/web-vue/components/dropdown/index.ts
  type DropdownInstance (line 27) | type DropdownInstance = InstanceType<typeof _Dropdown>;
  type DropdownOptionInstance (line 28) | type DropdownOptionInstance = InstanceType<typeof _DropdownOption>;
  type DropdownGroupInstance (line 29) | type DropdownGroupInstance = InstanceType<typeof _DropdownGroup>;
  type DropdownSubmenuInstance (line 30) | type DropdownSubmenuInstance = InstanceType<typeof _DropdownSubmenu>;
  type DropdownButtonInstance (line 31) | type DropdownButtonInstance = InstanceType<typeof _DropdownButton>;

FILE: packages/web-vue/components/dropdown/interface.ts
  type DropdownPosition (line 4) | type DropdownPosition = 'top' | 'tl' | 'tr' | 'bottom' | 'bl' | 'br';
  type DropDownProps (line 6) | interface DropDownProps {
  type DOption (line 15) | interface DOption {
  type DGroup (line 23) | interface DGroup {
  type DSubmenu (line 32) | interface DSubmenu extends DOption {
  type DropdownOption (line 41) | type DropdownOption = DOption | DGroup | DSubmenu;

FILE: packages/web-vue/components/empty/empty.tsx
  method setup (line 36) | setup(props, { slots, attrs }) {

FILE: packages/web-vue/components/empty/index.ts
  type EmptyInstance (line 15) | type EmptyInstance = InstanceType<typeof _Empty>;

FILE: packages/web-vue/components/form/context.ts
  type FormContext (line 12) | interface FormContext {
  type FormItemContext (line 38) | interface FormItemContext {
  type FormItemInfo (line 50) | interface FormItemInfo {

FILE: packages/web-vue/components/form/index.ts
  type FormInstance (line 18) | type FormInstance = InstanceType<typeof _Form>;
  type FormItemInstance (line 19) | type FormItemInstance = InstanceType<typeof _FormItem>;

FILE: packages/web-vue/components/form/interface.ts
  constant VALIDATE_STATUSES (line 4) | const VALIDATE_STATUSES = [
  type ValidateStatus (line 10) | type ValidateStatus = typeof VALIDATE_STATUSES[number];
  constant VALIDATE_TRIGGERS (line 12) | const VALIDATE_TRIGGERS = ['change', 'input', 'focus', 'blur'] as const;
  type ValidateTrigger (line 13) | type ValidateTrigger = typeof VALIDATE_TRIGGERS[number];
  type FieldRule (line 15) | interface FieldRule<FieldValue = any> {
  type FieldData (line 136) | interface FieldData {
  type ValidatedError (line 154) | interface ValidatedError {
  type FormItemEventHandler (line 188) | interface FormItemEventHandler {

FILE: packages/web-vue/components/form/utils.ts
  function getValueByPath (line 3) | function getValueByPath(

FILE: packages/web-vue/components/grid/context.ts
  type RowContextContext (line 4) | type RowContextContext = Readonly<{
  type GridContext (line 13) | type GridContext = Readonly<{
  type GridDataCollector (line 24) | type GridDataCollector = Readonly<{

FILE: packages/web-vue/components/grid/hook/use-responsive-state.ts
  function isResponsiveValue (line 9) | function isResponsiveValue(
  function useResponsiveState (line 15) | function useResponsiveState(

FILE: packages/web-vue/components/grid/hook/use-responsive-value.ts
  function useResponsiveValue (line 6) | function useResponsiveValue(

FILE: packages/web-vue/components/grid/index.ts
  type GridRowInstance (line 24) | type GridRowInstance = InstanceType<typeof _GridRow>;
  type GridColInstance (line 25) | type GridColInstance = InstanceType<typeof _GridCol>;
  type GridInstance (line 26) | type GridInstance = InstanceType<typeof _Grid>;
  type GridItemInstance (line 27) | type GridItemInstance = InstanceType<typeof _GridItem>;

FILE: packages/web-vue/components/grid/interface.ts
  type ResponsiveValue (line 1) | interface ResponsiveValue {
  type FlexType (line 34) | type FlexType = number | string | 'initial' | 'auto' | 'none';
  type RowProps (line 36) | interface RowProps {
  type ColProps (line 44) | interface ColProps {
  type GridProps (line 57) | interface GridProps {
  type GridItemProps (line 65) | interface GridItemProps {
  type GridItemData (line 71) | interface GridItemData extends GridItemProps {

FILE: packages/web-vue/components/grid/utils/index.ts
  function resolveItemData (line 3) | function resolveItemData(
  function setItemVisible (line 21) | function setItemVisible({

FILE: packages/web-vue/components/icon-component/add-from-icon-font-cn.tsx
  type IconFontOptions (line 7) | interface IconFontOptions {
  method setup (line 31) | setup(props, { slots }) {

FILE: packages/web-vue/components/icon-component/index.ts
  type IconInstance (line 17) | type IconInstance = InstanceType<typeof _Icon>;
  type IconProps (line 18) | type IconProps = IconInstance['$props'];

FILE: packages/web-vue/components/image/__test__/index.test.ts
  function getPreviewInstance (line 9) | async function getPreviewInstance() {

FILE: packages/web-vue/components/image/context.ts
  type PreviewGroupContext (line 3) | type PreviewGroupContext = Readonly<{

FILE: packages/web-vue/components/image/hooks/use-image-drag.ts
  type ImageDragProps (line 5) | interface ImageDragProps {
  function useImageDrag (line 11) | function useImageDrag(props: ImageDragProps) {

FILE: packages/web-vue/components/image/hooks/use-image-load-status.ts
  type ImageLoadStatusType (line 3) | type ImageLoadStatusType = 'beforeLoad' | 'loading' | 'error' | 'loaded';
  function useImageLoadStatus (line 5) | function useImageLoadStatus(defaultValue?: ImageLoadStatusType) {

FILE: packages/web-vue/components/image/index.ts
  type ImageInstance (line 29) | type ImageInstance = InstanceType<typeof _Image>;
  type ImagePreviewInstance (line 30) | type ImagePreviewInstance = InstanceType<typeof _ImagePreview>;
  type ImagePreviewGroupInstance (line 31) | type ImagePreviewGroupInstance = InstanceType<typeof _ImagePreviewGroup>;
  type ImagePreviewActionInstance (line 32) | type ImagePreviewActionInstance = InstanceType<

FILE: packages/web-vue/components/image/interface.ts
  type ImageProps (line 3) | interface ImageProps {
  type ImagePreviewProps (line 24) | interface ImagePreviewProps {
  type ImagePreviewGroupProps (line 41) | interface ImagePreviewGroupProps

FILE: packages/web-vue/components/image/preview-action.tsx
  method setup (line 30) | setup(props, { slots, attrs }) {

FILE: packages/web-vue/components/image/utils/get-fix-translate.ts
  function getFixTranslate (line 1) | function getFixTranslate(

FILE: packages/web-vue/components/image/utils/get-scale.ts
  type ZoomType (line 5) | type ZoomType = 'zoomIn' | 'zoomOut';
  function getScale (line 11) | function getScale(cur = 1, type: ZoomType = 'zoomIn') {
  function getScaleByRate (line 22) | function getScaleByRate(
  function findClosestIndex (line 32) | function findClosestIndex(scale: number) {

FILE: packages/web-vue/components/image/utils/index.ts
  function normalizeImageSizeProp (line 3) | function normalizeImageSizeProp(size?: string | number) {

FILE: packages/web-vue/components/input-number/index.ts
  type InputNumberInstance (line 15) | type InputNumberInstance = InstanceType<typeof _InputNumber>;

FILE: packages/web-vue/components/input-number/input-number.tsx
  type StepMethods (line 16) | type StepMethods = 'minus' | 'plus';
  constant FIRST_DELAY (line 18) | const FIRST_DELAY = 800;
  constant SPEED (line 19) | const SPEED = 150;
  method setup (line 235) | setup(props, { emit, slots }) {
  method focus (line 622) | focus() {
  method blur (line 630) | blur() {
  method render (line 634) | render() {

FILE: packages/web-vue/components/input-tag/index.ts
  type InputTagInstance (line 15) | type InputTagInstance = InstanceType<typeof _InputTag>;

FILE: packages/web-vue/components/input-tag/input-tag.tsx
  constant DEFAULT_FIELD_NAMES (line 29) | const DEFAULT_FIELD_NAMES = {
  method setup (line 239) | setup(props, { emit, slots, attrs }) {
  method focus (line 617) | focus() {
  method blur (line 625) | blur() {
  method render (line 629) | render() {

FILE: packages/web-vue/components/input-tag/interface.ts
  type TagData (line 4) | interface TagData {
  type InputTagFieldNames (line 29) | type InputTagFieldNames = FieldString<TagData>;
  type TagDataInfo (line 31) | interface TagDataInfo extends TagData {

FILE: packages/web-vue/components/input/index.ts
  type InputInstance (line 24) | type InputInstance = InstanceType<typeof _Input>;
  type InputSearchInstance (line 25) | type InputSearchInstance = InstanceType<typeof _InputSearch>;
  type InputPasswordInstance (line 26) | type InputPasswordInstance = InstanceType<typeof _InputPassword>;
  type InputGroupInstance (line 27) | type InputGroupInstance = InstanceType<typeof _InputGroup>;

FILE: packages/web-vue/components/input/input-search.tsx
  method setup (line 72) | setup(props, { emit, slots }) {
  method focus (line 153) | focus() {
  method blur (line 156) | blur() {
  method render (line 160) | render() {

FILE: packages/web-vue/components/input/input.tsx
  method setup (line 199) | setup(props, { emit, slots, attrs }) {
  method focus (line 522) | focus() {
  method blur (line 530) | blur() {
  method render (line 534) | render() {

FILE: packages/web-vue/components/layout/context.ts
  type LayoutSiderContext (line 3) | interface LayoutSiderContext {
  type SiderContext (line 12) | interface SiderContext {

FILE: packages/web-vue/components/layout/index.ts
  type LayoutInstance (line 27) | type LayoutInstance = InstanceType<typeof _Layout>;
  type LayoutHeaderInstance (line 28) | type LayoutHeaderInstance = InstanceType<typeof _LayoutHeader>;
  type LayoutContentInstance (line 29) | type LayoutContentInstance = InstanceType<typeof _LayoutContent>;
  type LayoutFooterInstance (line 30) | type LayoutFooterInstance = InstanceType<typeof _LayoutFooter>;
  type LayoutSiderInstance (line 31) | type LayoutSiderInstance = InstanceType<typeof _LayoutSider>;

FILE: packages/web-vue/components/layout/interface.ts
  type LayoutProps (line 4) | interface LayoutProps {
  type SiderProps (line 18) | interface SiderProps {

FILE: packages/web-vue/components/link/index.ts
  type LinkInstance (line 15) | type LinkInstance = InstanceType<typeof _Link>;

FILE: packages/web-vue/components/list/index.ts
  type ListInstance (line 22) | type ListInstance = InstanceType<typeof _List>;
  type ListItemInstance (line 23) | type ListItemInstance = InstanceType<typeof _ListItem>;
  type ListItemMetaInstance (line 24) | type ListItemMetaInstance = InstanceType<typeof _ListItemMeta>;

FILE: packages/web-vue/components/list/list-item.tsx
  method setup (line 32) | setup(props, { slots }) {

FILE: packages/web-vue/components/list/list.tsx
  method setup (line 179) | setup(props, { emit, slots }) {
  method scrollIntoView (line 433) | scrollIntoView(options: ScrollIntoViewOptions) {
  method render (line 439) | render() {

FILE: packages/web-vue/components/locale/__test__/index.test.ts
  function hasEqualStructure (line 5) | function hasEqualStructure(
  function toMatchStructure (line 24) | function toMatchStructure(actual, expected) {

FILE: packages/web-vue/components/locale/index.ts
  constant LOCALE (line 7) | const LOCALE = ref('zh-CN');
  constant I18N_MESSAGES (line 8) | const I18N_MESSAGES = reactive<ArcoI18nMessages>({

FILE: packages/web-vue/components/locale/interface.ts
  type ArcoCalendarLang (line 1) | interface ArcoCalendarLang {
  type ValidateMessage (line 65) | interface ValidateMessage {
  type ArcoLang (line 112) | interface ArcoLang {
  type ArcoI18nMessages (line 205) | type ArcoI18nMessages = Record<string, ArcoLang>;

FILE: packages/web-vue/components/mention/index.ts
  type MentionInstance (line 15) | type MentionInstance = InstanceType<typeof _Mention>;

FILE: packages/web-vue/components/mention/interface.ts
  type MeasureInfo (line 1) | interface MeasureInfo {

FILE: packages/web-vue/components/mention/mention.tsx
  method setup (line 157) | setup(props, { emit, attrs, slots }) {
  method focus (line 461) | focus() {
  method blur (line 470) | blur() {
  method render (line 474) | render() {

FILE: packages/web-vue/components/menu/context.ts
  type MenuContext (line 7) | type MenuContext = Readonly<
  type LevelContext (line 34) | type LevelContext = Readonly<{
  type MenuMapType (line 38) | type MenuMapType = Map<string, string[]>;
  type DataCollectorContext (line 43) | type DataCollectorContext = Readonly<{

FILE: packages/web-vue/components/menu/hooks/use-level.ts
  function provideLevel (line 4) | function provideLevel(level: Ref<number> | number) {
  function useLevel (line 14) | function useLevel(props?: { provideNextLevel?: boolean }) {

FILE: packages/web-vue/components/menu/hooks/use-menu-context.ts
  function useMenuContext (line 4) | function useMenuContext(): Partial<MenuContext> {

FILE: packages/web-vue/components/menu/hooks/use-menu-data-collector.ts
  function getKeys (line 6) | function getKeys(data: MenuData, condition: (item: MenuDataItem) => bool...
  function useMenuDataCollectorContext (line 25) | function useMenuDataCollectorContext(isRoot = false) {
  function useMenuDataCollector (line 30) | function useMenuDataCollector(props: {

FILE: packages/web-vue/components/menu/hooks/use-menu-open-state.ts
  type MenuOpenStateProps (line 5) | interface MenuOpenStateProps {
  function getPath (line 16) | function getPath(data: MenuData, key: string) {
  function isSameKeys (line 41) | function isSameKeys(keys1: string[], keys2: string[]) {
  function useMenuOpenState (line 46) | function useMenuOpenState(props: MenuOpenStateProps) {

FILE: packages/web-vue/components/menu/hooks/use-menu.ts
  function useMenu (line 11) | function useMenu(): {

FILE: packages/web-vue/components/menu/index.ts
  type MenuInstance (line 24) | type MenuInstance = InstanceType<typeof _Menu>;
  type MenuItemInstance (line 25) | type MenuItemInstance = InstanceType<typeof _MenuItem>;
  type MenuItemGroupInstance (line 26) | type MenuItemGroupInstance = InstanceType<typeof _MenuItemGroup>;
  type MenuSubMenuInstance (line 27) | type MenuSubMenuInstance = InstanceType<typeof _MenuSubMenu>;

FILE: packages/web-vue/components/menu/interface.ts
  type MenuTheme (line 6) | type MenuTheme = 'light' | 'dark';
  type MenuMode (line 8) | type MenuMode = 'vertical' | 'horizontal' | 'pop' | 'popButton';
  type SubMenuChildDataType (line 10) | interface SubMenuChildDataType {
  type PopupMenuMaxHeightType (line 15) | type PopupMenuMaxHeightType = boolean | number;
  type MenuProps (line 17) | interface MenuProps {
  type InternalMenuProps (line 41) | interface InternalMenuProps extends MenuProps {
  type SubMenuProps (line 48) | interface SubMenuProps {
  type MenuItemGroupProps (line 56) | interface MenuItemGroupProps {
  type MenuItemProps (line 60) | interface MenuItemProps {
  type SubMenuInlineProps (line 65) | interface SubMenuInlineProps {
  type SubMenuPopProps (line 70) | interface SubMenuPopProps {
  type MenuDataItem (line 77) | interface MenuDataItem {
  type MenuData (line 82) | type MenuData = MenuDataItem[];

FILE: packages/web-vue/components/menu/item.tsx
  method setup (line 38) | setup(props, { emit }) {
  method render (line 98) | render() {

FILE: packages/web-vue/components/menu/menu.tsx
  method setup (line 30) | setup(props, { attrs, slots }) {

FILE: packages/web-vue/components/menu/overflow-wrap.tsx
  constant OVERFLOW_THRESHOLD (line 17) | const OVERFLOW_THRESHOLD = 10;
  function getNodeWidth (line 19) | function getNodeWidth(el: HTMLElement) {
  function translatePxToNumber (line 23) | function translatePxToNumber(str: string): number {
  method setup (line 30) | setup(_, { slots }) {

FILE: packages/web-vue/components/menu/sub-menu.tsx
  method setup (line 70) | setup(props, { attrs }) {
  method render (line 117) | render() {

FILE: packages/web-vue/components/menu/utils/index.ts
  function isFragmentChildren (line 5) | function isFragmentChildren(children: VNode[]) {
  function isVNodeComponent (line 11) | function isVNodeComponent(vNode: VNode) {
  function isArrayChildren (line 15) | function isArrayChildren(vNode: VNode) {
  function isSlotChildren (line 19) | function isSlotChildren(vNode: VNode) {
  function isChildrenSelected (line 23) | function isChildrenSelected(

FILE: packages/web-vue/components/message/__test__/index.test.ts
  method handleAdd (line 43) | handleAdd() {
  method handleClear (line 49) | handleClear() {
  method handleClick (line 90) | handleClick() {

FILE: packages/web-vue/components/message/index.ts
  type _MessageConfig (line 14) | type _MessageConfig = MessageConfig & {
  class MessageManger (line 18) | class MessageManger {
    method constructor (line 29) | constructor(config: _MessageConfig, appContext?: AppContext) {

FILE: packages/web-vue/components/message/interface.ts
  constant MESSAGE_POSITION (line 5) | const MESSAGE_POSITION = ['top', 'bottom'] as const;
  type MessagePosition (line 7) | type MessagePosition = typeof MESSAGE_POSITION[number];
  type MessageMethod (line 9) | interface MessageMethod {
  type MessageConfig (line 66) | interface MessageConfig {
  type MessageReturn (line 117) | interface MessageReturn {
  type MessageItem (line 125) | interface MessageItem {

FILE: packages/web-vue/components/message/message-list.tsx
  method setup (line 22) | setup(props, context) {

FILE: packages/web-vue/components/modal/__test__/index.test.ts
  method handleClick (line 36) | handleClick() {

FILE: packages/web-vue/components/modal/context.ts
  type ZIndexContext (line 3) | interface ZIndexContext {

FILE: packages/web-vue/components/modal/interface.ts
  type ModalConfig (line 5) | interface ModalConfig {
  type ModalUpdateConfig (line 223) | type ModalUpdateConfig = Omit<
  type ModalReturn (line 238) | interface ModalReturn {
  type ModalMethod (line 252) | interface ModalMethod {

FILE: packages/web-vue/components/notification/__test__/index.test.ts
  method handleAdd (line 43) | handleAdd() {
  method handleClear (line 49) | handleClear() {
  method handleClick (line 92) | handleClick() {

FILE: packages/web-vue/components/notification/index.ts
  type _NotificationConfig (line 14) | type _NotificationConfig = NotificationConfig & {
  class NotificationManger (line 18) | class NotificationManger {
    method constructor (line 29) | constructor(config: _NotificationConfig, appContext?: AppContext) {

FILE: packages/web-vue/components/notification/interface.ts
  constant NOTIFICATION_POSITION (line 5) | const NOTIFICATION_POSITION = [
  type NotificationPosition (line 12) | type NotificationPosition = typeof NOTIFICATION_POSITION[number];
  type NotificationMethod (line 14) | interface NotificationMethod {
  type NotificationConfig (line 59) | interface NotificationConfig {
  type NotificationReturn (line 138) | interface NotificationReturn {
  type NotificationItem (line 146) | interface NotificationItem {

FILE: packages/web-vue/components/notification/notification-list.tsx
  method setup (line 30) | setup(props, context) {

FILE: packages/web-vue/components/overflow-list/index.ts
  type OverflowListInstance (line 15) | type OverflowListInstance = InstanceType<typeof _OverflowList>;

FILE: packages/web-vue/components/overflow-list/overflow-list.tsx
  method setup (line 58) | setup(props, { emit, slots }) {

FILE: packages/web-vue/components/page-header/index.ts
  type PageHeaderInstance (line 15) | type PageHeaderInstance = InstanceType<typeof _PageHeader>;

FILE: packages/web-vue/components/pagination/index.ts
  type PaginationInstance (line 15) | type PaginationInstance = InstanceType<typeof _Pagination>;

FILE: packages/web-vue/components/pagination/interface.ts
  constant PAGE_ITEM_TYPES (line 5) | const PAGE_ITEM_TYPES = ['page', 'more', 'previous', 'next'] as const;
  type PageItemType (line 7) | type PageItemType = typeof PAGE_ITEM_TYPES[number];
  type PaginationProps (line 9) | interface PaginationProps {

FILE: packages/web-vue/components/pagination/pagination.tsx
  method setup (line 219) | setup(props, { emit, slots }) {

FILE: packages/web-vue/components/popconfirm/index.ts
  type PopconfirmInstance (line 15) | type PopconfirmInstance = InstanceType<typeof _Popconfirm>;

FILE: packages/web-vue/components/popover/index.ts
  type PopoverInstance (line 15) | type PopoverInstance = InstanceType<typeof _Popover>;

FILE: packages/web-vue/components/progress/index.ts
  type ProgressInstance (line 15) | type ProgressInstance = InstanceType<typeof _Progress>;

FILE: packages/web-vue/components/radio/context.ts
  constant RADIO_TYPES (line 4) | const RADIO_TYPES = ['radio', 'button'] as const;
  type RadioType (line 5) | type RadioType = typeof RADIO_TYPES[number];
  type RadioGroupContext (line 7) | interface RadioGroupContext {

FILE: packages/web-vue/components/radio/index.ts
  type RadioInstance (line 18) | type RadioInstance = InstanceType<typeof _Radio>;
  type RadioGroupInstance (line 19) | type RadioGroupInstance = InstanceType<typeof _RadioGroup>;

FILE: packages/web-vue/components/radio/interface.ts
  type RadioOption (line 3) | interface RadioOption {

FILE: packages/web-vue/components/radio/radio-group.tsx
  method setup (line 113) | setup(props, { emit, slots }) {

FILE: packages/web-vue/components/radio/radio.tsx
  method setup (line 91) | setup(props, { emit, slots }) {

FILE: packages/web-vue/components/rate/index.ts
  type RateInstance (line 15) | type RateInstance = InstanceType<typeof _Rate>;

FILE: packages/web-vue/components/rate/rate.tsx
  method setup (line 117) | setup(props, { emit, slots }) {

FILE: packages/web-vue/components/resize-box/index.ts
  type ResizeBoxInstance (line 15) | type ResizeBoxInstance = InstanceType<typeof _ResizeBox>;

FILE: packages/web-vue/components/result/403.tsx
  method render (line 5) | render() {

FILE: packages/web-vue/components/result/404.tsx
  method render (line 5) | render() {

FILE: packages/web-vue/components/result/500.tsx
  method render (line 5) | render() {

FILE: packages/web-vue/components/result/index.ts
  type ResultInstance (line 15) | type ResultInstance = InstanceType<typeof _Result>;

FILE: packages/web-vue/components/scrollbar/index.ts
  type ScrollbarInstance (line 15) | type ScrollbarInstance = InstanceType<typeof _Scrollbar>;

FILE: packages/web-vue/components/scrollbar/interface.ts
  type ThumbData (line 3) | interface ThumbData {
  type ThumbMap (line 9) | interface ThumbMap {
  type ScrollbarProps (line 16) | interface ScrollbarProps {

FILE: packages/web-vue/components/select/context.ts
  type SelectContext (line 4) | interface SelectContext {

FILE: packages/web-vue/components/select/hooks/use-options.ts
  constant DEFAULT_FIELD_NAMES (line 12) | const DEFAULT_FIELD_NAMES = {

FILE: packages/web-vue/components/select/index.ts
  type SelectInstance (line 21) | type SelectInstance = InstanceType<typeof _Select>;
  type SelectOptionInstance (line 22) | type SelectOptionInstance = InstanceType<typeof _Option>;
  type SelectOptGroupInstance (line 23) | type SelectOptGroupInstance = InstanceType<typeof _Optgroup>;

FILE: packages/web-vue/components/select/interface.ts
  type SelectProps (line 7) | interface SelectProps {
  type SelectOptionValue (line 64) | type SelectOptionValue =
  type OptionValueWithKey (line 70) | interface OptionValueWithKey {
  type SelectFieldNames (line 75) | type SelectFieldNames = FieldString<SelectOptionData>;
  type SelectOptionData (line 77) | interface SelectOptionData {
  type SelectOptionGroup (line 107) | interface SelectOptionGroup {
  type SelectOption (line 131) | type SelectOption =
  type SelectOptionInfo (line 138) | interface SelectOptionInfo extends SelectOptionData {
  type SelectOptionGroupInfo (line 147) | interface SelectOptionGroupInfo extends SelectOptionGroup {
  type FilterOption (line 156) | type FilterOption =

FILE: packages/web-vue/components/select/select.tsx
  constant DEFAULT_FIELD_NAMES (line 54) | const DEFAULT_FIELD_NAMES = {
  method setup (line 516) | setup(props, { slots, emit, attrs }) {

FILE: packages/web-vue/components/skeleton/index.ts
  type SkeletonInstance (line 21) | type SkeletonInstance = InstanceType<typeof _Skeleton>;
  type SkeletonLineInstance (line 22) | type SkeletonLineInstance = InstanceType<typeof _SkeletonLine>;
  type SkeletonShapeInstance (line 23) | type SkeletonShapeInstance = InstanceType<typeof _SkeletonShape>;

FILE: packages/web-vue/components/slider/index.ts
  type SliderInstance (line 15) | type SliderInstance = InstanceType<typeof _Slider>;

FILE: packages/web-vue/components/space/index.ts
  type SpaceInstance (line 15) | type SpaceInstance = InstanceType<typeof _Space>;

FILE: packages/web-vue/components/space/space.tsx
  type SpaceSize (line 15) | type SpaceSize = number | 'mini' | 'small' | 'medium' | 'large';
  method setup (line 67) | setup(props, { slots }) {

FILE: packages/web-vue/components/spin/dot-loading.tsx
  constant DOT_NUMBER (line 4) | const DOT_NUMBER = 5;
  method setup (line 13) | setup(props) {

FILE: packages/web-vue/components/spin/index.ts
  type SpinInstance (line 15) | type SpinInstance = InstanceType<typeof _Spin>;

FILE: packages/web-vue/components/spin/spin.tsx
  method setup (line 57) | setup(props, { slots }) {

FILE: packages/web-vue/components/split/index.ts
  type SplitInstance (line 15) | type SplitInstance = InstanceType<typeof _Split>;

FILE: packages/web-vue/components/split/interface.ts
  type SplitProps (line 1) | interface SplitProps {

FILE: packages/web-vue/components/statistic/index.ts
  type StatisticInstance (line 18) | type StatisticInstance = InstanceType<typeof _Statistic>;
  type CountdownInstance (line 19) | type CountdownInstance = InstanceType<typeof _Countdown>;

FILE: packages/web-vue/components/statistic/utils.ts
  function getDateString (line 11) | function getDateString(millisecond: number, format: string) {

FILE: packages/web-vue/components/steps/context.ts
  type StepsContext (line 5) | interface StepsContext {

FILE: packages/web-vue/components/steps/index.ts
  type StepsInstance (line 18) | type StepsInstance = InstanceType<typeof _Steps>;
  type StepsStepInstance (line 19) | type StepsStepInstance = InstanceType<typeof _StepsStep>;

FILE: packages/web-vue/components/steps/interface.ts
  constant STEPS_TYPES (line 1) | const STEPS_TYPES = ['default', 'arrow', 'dot', 'navigation'] as const;
  type StepsType (line 2) | type StepsType = typeof STEPS_TYPES[number];
  constant STEP_STATUSES (line 4) | const STEP_STATUSES = ['wait', 'process', 'finish', 'error'] as const;
  type StepStatus (line 5) | type StepStatus = typeof STEP_STATUSES[number];
  type StepData (line 7) | interface StepData {

FILE: packages/web-vue/components/style/color/get-rgb-str.js
  method install (line 5) | install(_, __, functions) {

FILE: packages/web-vue/components/style/color/palette-dark.js
  method install (line 5) | install(_, __, functions) {

FILE: packages/web-vue/components/style/color/palette.js
  method install (line 5) | install(_, __, functions) {

FILE: packages/web-vue/components/switch/index.ts
  type SwitchInstance (line 15) | type SwitchInstance = InstanceType<typeof _Switch>;

FILE: packages/web-vue/components/table/context.ts
  type TableContext (line 11) | interface TableContext {
  type TableColumnContext (line 47) | interface TableColumnContext {

FILE: packages/web-vue/components/table/index.ts
  type TableInstance (line 33) | type TableInstance = InstanceType<typeof _Table>;
  type TheadInstance (line 34) | type TheadInstance = InstanceType<typeof _Thead>;
  type TbodyInstance (line 35) | type TbodyInstance = InstanceType<typeof _Tbody>;
  type TrInstance (line 36) | type TrInstance = InstanceType<typeof _Tr>;
  type ThInstance (line 37) | type ThInstance = InstanceType<typeof _Th>;
  type TdInstance (line 38) | type TdInstance = InstanceType<typeof _Td>;
  type TableColumnInstance (line 39) | type TableColumnInstance = InstanceType<typeof _Column>;

FILE: packages/web-vue/components/table/interface.ts
  constant TABLE_PAGE_POSITION (line 5) | const TABLE_PAGE_POSITION = [
  type TablePagePosition (line 13) | type TablePagePosition = typeof TABLE_PAGE_POSITION[number];
  type TableData (line 15) | interface TableData {
  type TableDataWithRaw (line 46) | interface TableDataWithRaw {
  type TableSortable (line 56) | interface TableSortable {
  type TableFilterData (line 85) | interface TableFilterData {
  type TableFilterable (line 98) | interface TableFilterable {
  type TableColumnData (line 154) | interface TableColumnData {
  type TableBorder (line 292) | interface TableBorder {
  type TableRowSelection (line 315) | interface TableRowSelection {
  type TableExpandable (line 367) | interface TableExpandable {
  type TableDraggable (line 410) | interface TableDraggable {
  type OperationName (line 433) | type OperationName =
  type TableOperationColumn (line 439) | interface TableOperationColumn {
  type TableComponents (line 448) | interface TableComponents {
  type TableChangeExtra (line 456) | interface TableChangeExtra {
  type TableProps (line 489) | interface TableProps {
  type Sorter (line 499) | type Sorter = { field: string; direction: 'ascend' | 'descend' };
  type Filters (line 501) | type Filters = Record<string, string[]>;

FILE: packages/web-vue/components/table/table-column.tsx
  method setup (line 210) | setup(props, { slots }) {

FILE: packages/web-vue/components/table/table-operation-td.tsx
  method setup (line 65) | setup(props, { emit, slots }) {

FILE: packages/web-vue/components/table/table-operation-th.tsx
  method setup (line 30) | setup(props) {

FILE: packages/web-vue/components/table/table-tbody.tsx
  method setup (line 5) | setup(_, { slots }) {

FILE: packages/web-vue/components/table/table-td.tsx
  constant TD_TYPES (line 24) | const TD_TYPES = [
  type TdTypes (line 31) | type TdTypes = typeof TD_TYPES[number];
  method setup (line 90) | setup(props, { slots }) {

FILE: packages/web-vue/components/table/table-th.tsx
  method setup (line 44) | setup(props, { slots }) {

FILE: packages/web-vue/components/table/table-thead.tsx
  method setup (line 5) | setup(_, { slots }) {

FILE: packages/web-vue/components/table/table-tr.tsx
  method setup (line 23) | setup(props, { slots }) {

FILE: packages/web-vue/components/table/table.tsx
  constant DEFAULT_BORDERED (line 84) | const DEFAULT_BORDERED = {
  method setup (line 685) | setup(props, { emit, slots }) {
  method selectAll (line 2330) | selectAll(checked?: boolean) {
  method select (line 2341) | select(rowKey: string | number | (string | number)[], checked?: boolean) {
  method expandAll (line 2351) | expandAll(checked?: boolean) {
  method expand (line 2362) | expand(rowKey: string | number | (string | number)[], checked?: boolean) {
  method resetFilters (line 2372) | resetFilters(dataIndex?: string | string[]) {
  method clearFilters (line 2382) | clearFilters(dataIndex?: string | string[]) {
  method resetSorters (line 2391) | resetSorters() {
  method clearSorters (line 2400) | clearSorters() {
  method render (line 2404) | render() {

FILE: packages/web-vue/components/table/utils.ts
  function mapArrayWithChildren (line 345) | function mapArrayWithChildren<
  function mapRawTableData (line 357) | function mapRawTableData<T extends TableDataWithRaw[]>(

FILE: packages/web-vue/components/tabs/context.ts
  type TabsContext (line 4) | interface TabsContext {

FILE: packages/web-vue/components/tabs/index.ts
  type TabsInstance (line 18) | type TabsInstance = InstanceType<typeof _Tabs>;
  type TabPaneInstance (line 19) | type TabPaneInstance = InstanceType<typeof _TabPane>;

FILE: packages/web-vue/components/tabs/interface.ts
  type TabsPosition (line 3) | type TabsPosition = 'left' | 'right' | 'top' | 'bottom';
  type TabsType (line 5) | type TabsType =
  type TabData (line 13) | interface TabData {
  type TabTriggerEvent (line 21) | type TabTriggerEvent = 'click' | 'hover';
  type ScrollPosition (line 23) | type ScrollPosition = 'start' | 'end' | 'center' | 'auto' | number;

FILE: packages/web-vue/components/tabs/tabs-button.tsx
  type ButtonTypes (line 11) | type ButtonTypes = 'previous' | 'next';
  method setup (line 33) | setup(props, { emit }) {

FILE: packages/web-vue/components/tabs/tabs-nav.tsx
  method setup (line 79) | setup(props, { emit, slots }) {

FILE: packages/web-vue/components/tabs/tabs.tsx
  method setup (line 211) | setup(props, { emit, slots }) {

FILE: packages/web-vue/components/tag/index.ts
  type TagInstance (line 15) | type TagInstance = InstanceType<typeof _Tag>;

FILE: packages/web-vue/components/tag/interface.ts
  constant TAG_COLORS (line 1) | const TAG_COLORS = [
  type TagColor (line 17) | type TagColor = typeof TAG_COLORS[number];
  type TagProps (line 19) | interface TagProps {

FILE: packages/web-vue/components/textarea/index.ts
  type TextareaInstance (line 15) | type TextareaInstance = InstanceType<typeof _Textarea>;

FILE: packages/web-vue/components/time-picker/hooks/use-is-disabled-time.ts
  function useIsDisabledTime (line 6) | function useIsDisabledTime(props: {

FILE: packages/web-vue/components/time-picker/hooks/use-time-format.ts
  type FormatProps (line 9) | interface FormatProps {
  function useTimeFormat (line 15) | function useTimeFormat(props: FormatProps) {

FILE: packages/web-vue/components/time-picker/hooks/use-time-list.ts
  type TimeListProps (line 8) | interface TimeListProps
  function useTimeList (line 26) | function useTimeList(props: TimeListProps): {

FILE: packages/web-vue/components/time-picker/hooks/use-time-state.ts
  function useTimeState (line 8) | function useTimeState(props: {

FILE: packages/web-vue/components/time-picker/index.ts
  type TimePickerInstance (line 15) | type TimePickerInstance = InstanceType<typeof _TimePicker>;

FILE: packages/web-vue/components/time-picker/interface.ts
  type TimeValue (line 4) | type TimeValue = Date | string | number;
  type BasePanelProps (line 6) | interface BasePanelProps {
  type PanelProps (line 19) | interface PanelProps extends Omit<BasePanelProps, 'disableConfirm'> {
  type RangePanelProps (line 29) | interface RangePanelProps extends Omit<PanelProps, 'value'> {
  type TimePickerProps (line 33) | interface TimePickerProps extends BasePanelProps {
  type TimeListItem (line 51) | interface TimeListItem {
  type TimeList (line 58) | type TimeList = TimeListItem[];

FILE: packages/web-vue/components/time-picker/range-panel.tsx
  method setup (line 23) | setup(props, { emit }) {
  method render (line 59) | render() {

FILE: packages/web-vue/components/time-picker/utils/index.ts
  function getColumnsFromFormat (line 7) | function getColumnsFromFormat(format: string) {
  function scrollTo (line 27) | function scrollTo(element: HTMLElement, to: number, duration: number) {
  function getFormattedValue (line 62) | function getFormattedValue(
  function isValidRangeValue (line 79) | function isValidRangeValue(value: any): value is undefined | Dayjs[] {
  function isValidInputValue (line 88) | function isValidInputValue(time: string, format: string): boolean {
  function isDisabledTime (line 96) | function isDisabledTime(

FILE: packages/web-vue/components/timeline/context.ts
  type TimelineContext (line 5) | interface TimelineContext {

FILE: packages/web-vue/components/timeline/index.ts
  type TimelineInstance (line 18) | type TimelineInstance = InstanceType<typeof _Timeline>;
  type TimelineItemInstance (line 19) | type TimelineItemInstance = InstanceType<typeof _TimelineItem>;

FILE: packages/web-vue/components/timeline/interface.ts
  type ModeType (line 1) | type ModeType = 'left' | 'right' | 'top' | 'bottom' | 'alternate';
  type LabelPositionType (line 3) | type LabelPositionType = 'relative' | 'same';
  type DotType (line 5) | type DotType = 'hollow' | 'solid';
  type LineType (line 7) | type LineType = 'solid' | 'dashed' | 'dotted';
  type PositionType (line 9) | type PositionType = 'left' | 'right' | 'top' | 'bottom';

FILE: packages/web-vue/components/timeline/timeline.tsx
  method setup (line 71) | setup(props, { slots }) {

FILE: packages/web-vue/components/tooltip/index.ts
  type TooltipInstance (line 15) | type TooltipInstance = InstanceType<typeof _Tooltip>;

FILE: packages/web-vue/components/transfer/context.ts
  type TransferContext (line 3) | interface TransferContext {

FILE: packages/web-vue/components/transfer/index.ts
  type TransferInstance (line 15) | type TransferInstance = InstanceType<typeof _Transfer>;

FILE: packages/web-vue/components/transfer/interface.ts
  type TransferItem (line 1) | interface TransferItem {
  type DataInfo (line 19) | interface DataInfo {

FILE: packages/web-vue/components/transfer/transfer-list-item.tsx
  method setup (line 30) | setup(props) {

FILE: packages/web-vue/components/tree-select/hooks/use-filter-tree-node.ts
  function useFilterTreeNode (line 12) | function useFilterTreeNode(props: {

FILE: packages/web-vue/components/tree-select/hooks/use-selected-state.ts
  function isLabelValue (line 11) | function isLabelValue(value: TreeNodeKey | LabelValue): value is LabelVa...
  function isValidKey (line 15) | function isValidKey(key: TreeNodeKey) {
  function getKey (line 19) | function getKey(value: TreeNodeKey | LabelValue) {
  function getLabel (line 23) | function getLabel(value: TreeNodeKey | LabelValue) {
  function isValidValue (line 27) | function isValidValue(value: TreeNodeKey | LabelValue) {
  function getKeys (line 32) | function getKeys(value: (TreeNodeKey | LabelValue)[]) {
  function useSelectedState (line 36) | function useSelectedState(props: {

FILE: packages/web-vue/components/tree-select/index.ts
  type TreeSelectInstance (line 15) | type TreeSelectInstance = InstanceType<typeof _TreeSelect>;

FILE: packages/web-vue/components/tree-select/interface.ts
  type LabelValue (line 13) | interface LabelValue {
  type TreeSelectValue (line 18) | type TreeSelectValue =
  type FilterTreeNode (line 24) | type FilterTreeNode = (
  type FallbackOption (line 29) | type FallbackOption =
  type ChangeHandler (line 33) | type ChangeHandler = (
  type PopupVisibleChangeHandler (line 37) | type PopupVisibleChangeHandler = (popupVisible: boolean) => void;
  type SearchHandler (line 39) | type SearchHandler = (searchKey: string) => void;
  type ClearHandler (line 41) | type ClearHandler = () => void;
  type TreeSelectProps (line 43) | interface TreeSelectProps {

FILE: packages/web-vue/components/tree-select/panel.tsx
  method setup (line 35) | setup(props, { emit }) {

FILE: packages/web-vue/components/tree/context.ts
  type TreeContext (line 14) | type TreeContext = Readonly<{

FILE: packages/web-vue/components/tree/hooks/use-checked-state.ts
  function useCheckedState (line 5) | function useCheckedState(props: {

FILE: packages/web-vue/components/tree/hooks/use-draggable.ts
  function useDraggable (line 6) | function useDraggable(props: {

FILE: packages/web-vue/components/tree/hooks/use-node-key.ts
  function useNodeKey (line 5) | function useNodeKey(): Ref<TreeNodeKey> {

FILE: packages/web-vue/components/tree/hooks/use-tree-context.ts
  function useTreeContext (line 4) | function useTreeContext(): Partial<TreeContext> {

FILE: packages/web-vue/components/tree/hooks/use-tree-data.ts
  function useTreeData (line 13) | function useTreeData(props: {

FILE: packages/web-vue/components/tree/index.ts
  type TreeInstance (line 17) | type TreeInstance = InstanceType<typeof _Tree>;

FILE: packages/web-vue/components/tree/interface.ts
  type TreeNodeKey (line 5) | type TreeNodeKey = number | string;
  type TreeNodeData (line 7) | interface TreeNodeData {
  type TreeNodeProps (line 75) | interface TreeNodeProps extends Omit<TreeNodeData, 'children'> {
  type Node (line 89) | interface Node extends TreeNodeProps {
  type FilterTreeNode (line 99) | type FilterTreeNode = (node: TreeNodeData) => boolean;
  type TreeFieldNames (line 101) | interface TreeFieldNames {
  type LoadMore (line 152) | type LoadMore = (node: TreeNodeData) => Promise<void>;
  type DropPosition (line 153) | type DropPosition = -1 | 0 | 1;
  type CheckedStrategy (line 154) | type CheckedStrategy = 'all' | 'parent' | 'child';
  type CheckableType (line 155) | type CheckableType =
  type SelectableType (line 164) | type SelectableType = CheckableType;
  type TreeProps (line 166) | interface TreeProps {
  type Key2TreeNode (line 246) | type Key2TreeNode = Map<TreeNodeKey, Node>;

FILE: packages/web-vue/components/tree/node.tsx
  method setup (line 13) | setup(props, { slots, attrs }) {

FILE: packages/web-vue/components/tree/utils/check-utils.ts
  function SetAdd (line 3) | function SetAdd<T>(set: Set<T>): (value: T) => Set<T> {
  function SetDelete (line 7) | function SetDelete<T>(set: Set<T>): (value: T) => boolean {
  function isNodeCheckable (line 11) | function isNodeCheckable(node: Node) {
  function getChildrenKeys (line 16) | function getChildrenKeys(node: Node) {
  function updateParent (line 26) | function updateParent(options: {
  function getCheckedStateByCheck (line 65) | function getCheckedStateByCheck(options: {
  function getCheckedStateByInitKeys (line 105) | function getCheckedStateByInitKeys(options: {

FILE: packages/web-vue/components/tree/utils/index.ts
  function getFlattenTreeData (line 4) | function getFlattenTreeData(tree: Node[]) {
  function getKey2TreeNode (line 20) | function getKey2TreeNode(flattenTreeData: Node[]) {
  function isNodeSelectable (line 28) | function isNodeSelectable(node: Node) {
  function isNodeExpandable (line 32) | function isNodeExpandable(node: Node) {
  function isLeafNode (line 36) | function isLeafNode(node: Node) {

FILE: packages/web-vue/components/tree/utils/tree-data.ts
  type TreeProps (line 12) | interface TreeProps {
  type NodeOptions (line 22) | interface NodeOptions {
  function getBoolean (line 38) | function getBoolean(val1: boolean | undefined, val2: boolean | undefined) {
  function mapObject (line 42) | function mapObject<K, T = any>(
  function getEnableResult (line 63) | function getEnableResult({
  function generateNode (line 83) | function generateNode(options: NodeOptions): Node {
  function generateTreeData (line 137) | function generateTreeData(

FILE: packages/web-vue/components/trigger/context.ts
  type TriggerContext (line 3) | interface TriggerContext {

FILE: packages/web-vue/components/trigger/index.ts
  type TriggerInstance (line 15) | type TriggerInstance = InstanceType<typeof _Trigger>;

FILE: packages/web-vue/components/trigger/interface.ts
  type TriggerPopupTranslate (line 4) | type TriggerPopupTranslate =
  type TriggerProps (line 8) | interface TriggerProps {

FILE: packages/web-vue/components/trigger/trigger.tsx
  constant TRIGGER_EVENTS (line 43) | const TRIGGER_EVENTS = [
  method setup (line 370) | setup(props, { emit, slots, attrs }) {

FILE: packages/web-vue/components/trigger/utils.ts
  type ElementRect (line 16) | interface ElementRect {
  type ScrollRect (line 25) | interface ScrollRect {
  type BasePosition (line 58) | type BasePosition = 'top' | 'left' | 'bottom' | 'right';
  type PositionOffset (line 60) | interface PositionOffset {

FILE: packages/web-vue/components/typography/__test__/index.test.ts
  constant LINE_STR_COUNT (line 6) | const LINE_STR_COUNT = 20;
  constant LINE_HEIGHT (line 7) | const LINE_HEIGHT = 16;
  method get (line 24) | get() {
  method get (line 33) | get() {

FILE: packages/web-vue/components/typography/base.tsx
  type BaseInternalProps (line 30) | interface BaseInternalProps extends BaseProps {
  function getComponentTags (line 34) | function getComponentTags<K extends keyof HTMLElementTagNameMap>(
  function Wrap (line 59) | function Wrap(props: BaseInternalProps, children: VNodeTypes) {
  function normalizeEllipsisConfig (line 71) | function normalizeEllipsisConfig(
  method setup (line 294) | setup(props, { slots, emit, attrs }) {

FILE: packages/web-vue/components/typography/index.ts
  type TypographyInstance (line 29) | type TypographyInstance = InstanceType<typeof _Typography>;
  type TypographyParagraphInstance (line 30) | type TypographyParagraphInstance = InstanceType<
  type TypographyTitleInstance (line 33) | type TypographyTitleInstance = InstanceType<typeof _TypographyTitle>;
  type TypographyTextInstance (line 34) | type TypographyTextInstance = InstanceType<typeof _TypographyText>;

FILE: packages/web-vue/components/typography/interface.ts
  type EllipsisConfig (line 3) | interface EllipsisConfig {
  type EllipsisInternalConfig (line 43) | interface EllipsisInternalConfig extends Required<EllipsisConfig> {
  type EllipsisProps (line 49) | interface EllipsisProps {
  type CopyProps (line 53) | interface CopyProps {
  type EditProps (line 59) | interface EditProps {
  type OperationsProps (line 66) | type OperationsProps = CopyProps & EditProps & EllipsisProps;
  type BaseProps (line 68) | interface BaseProps extends OperationsProps {
  type TitleProps (line 78) | interface TitleProps extends BaseProps {
  type ParagraphProps (line 82) | interface ParagraphProps extends BaseProps {
  type TextProps (line 87) | interface TextProps extends BaseProps {

FILE: packages/web-vue/components/typography/paragraph.tsx
  method setup (line 25) | setup(props) {
  method render (line 42) | render() {

FILE: packages/web-vue/components/typography/text.tsx
  method setup (line 14) | setup(props) {
  method render (line 22) | render() {

FILE: packages/web-vue/components/typography/title.tsx
  method setup (line 17) | setup(props) {
  method render (line 27) | render() {

FILE: packages/web-vue/components/typography/utils/getInnerText.tsx
  function getInnerText (line 5) | function getInnerText(

FILE: packages/web-vue/components/typography/utils/measure.tsx
  function styleToString (line 6) | function styleToString(style: CSSStyleDeclaration) {
  function pxToNumber (line 13) | function pxToNumber(value: string | null): number {
  method render (line 57) | render() {
  function inRange (line 84) | function inRange() {
  function measureText (line 96) | function measureText(

FILE: packages/web-vue/components/upload/context.ts
  type UploadContext (line 4) | interface UploadContext {

FILE: packages/web-vue/components/upload/index.ts
  type UploadInstance (line 15) | type UploadInstance = InstanceType<typeof _Upload>;

FILE: packages/web-vue/components/upload/interfaces.ts
  type ListType (line 3) | type ListType = 'text' | 'picture' | 'picture-card';
  type FileStatus (line 5) | type FileStatus = 'init' | 'uploading' | 'done' | 'error';
  type FileItem (line 7) | interface FileItem {
  type CustomIcon (line 45) | interface CustomIcon {
  type RequestOption (line 96) | interface RequestOption {
  type UploadRequest (line 146) | interface UploadRequest extends Record<string, unknown> {

FILE: packages/web-vue/components/upload/upload-button.tsx
  method setup (line 43) | setup(props, { slots }) {

FILE: packages/web-vue/components/upload/upload-list-item.tsx
  method setup (line 29) | setup(props) {

FILE: packages/web-vue/components/upload/upload-list.tsx
  method setup (line 24) | setup(props, { slots }) {

FILE: packages/web-vue/components/upload/upload-picture-item.tsx
  method setup (line 23) | setup(props) {

FILE: packages/web-vue/components/upload/upload-progress.tsx
  method setup (line 26) | setup(props) {

FILE: packages/web-vue/components/upload/upload.tsx
  method setup (line 411) | setup(props, { emit, slots }) {
  method submit (line 809) | submit(fileItem?: FileItem) {
  method abort (line 818) | abort(fileItem: FileItem) {
  method updateFile (line 828) | updateFile(id: string, file: File) {
  method upload (line 838) | upload(files: File[]) {
  method render (line 842) | render() {

FILE: packages/web-vue/components/upload/utils.ts
  method abort (line 117) | abort() {

FILE: packages/web-vue/components/verification-code/index.ts
  type VerificationCodeInstance (line 15) | type VerificationCodeInstance = InstanceType<typeof _VerificationCode>;

FILE: packages/web-vue/components/verification-code/verification-code.tsx
  method setup (line 104) | setup(props, { emit }) {

FILE: packages/web-vue/components/watermark/hooks/use-mutation-observer.ts
  type MutationObserverOptions (line 12) | interface MutationObserverOptions extends MutationObserverInit {
  type MaybeRef (line 16) | type MaybeRef<T> = T | Ref<T>;
  type MaybeElement (line 17) | type MaybeElement =
  type UnRefElementReturn (line 23) | type UnRefElementReturn<T extends MaybeElement = MaybeElement> =
  type Fn (line 28) | type Fn = () => void;
  function unrefElement (line 30) | function unrefElement<T extends MaybeElement>(
  function tryOnScopeDispose (line 37) | function tryOnScopeDispose(fn: Fn): boolean {
  function useMutationObserver (line 45) | function useMutationObserver(
  type UseMutationObserverReturn (line 87) | type UseMutationObserverReturn = ReturnType<typeof useMutationObserver>;

FILE: packages/web-vue/components/watermark/hooks/use-theme.ts
  constant THEME_TOKEN (line 4) | const THEME_TOKEN = 'arco-theme';

FILE: packages/web-vue/components/watermark/index.ts
  type WatermarkInstance (line 15) | type WatermarkInstance = InstanceType<typeof _Watermark>;

FILE: packages/web-vue/components/watermark/interface.ts
  type WatermarkFont (line 1) | interface WatermarkFont {

FILE: packages/web-vue/components/watermark/utils/index.ts
  function camelToKebab (line 3) | function camelToKebab(camelCase: string): string {
  function styleToString (line 7) | function styleToString(style: CSSProperties): string {
  function canvasToGray (line 13) | function canvasToGray(canvas: HTMLCanvasElement): void {

FILE: packages/web-vue/components/watermark/watermark.tsx
  method setup (line 130) | setup(props, { slots, attrs }) {

FILE: packages/web-vue/global.d.ts
  type Element (line 12) | type Element = VNode;
  type ElementClass (line 13) | interface ElementClass {
  type ElementAttributesProperty (line 17) | interface ElementAttributesProperty {
  type IntrinsicElements (line 21) | interface IntrinsicElements extends NativeElements {
  type IntrinsicAttributes (line 24) | type IntrinsicAttributes = ReservedProps;

FILE: packages/web-vue/scripts/demo-test.ts
  function demoTest (line 34) | function demoTest(component: string) {
Copy disabled (too large) Download .json
Condensed preview — 2232 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (11,085K chars).
[
  {
    "path": ".editorconfig",
    "chars": 147,
    "preview": "root = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\nend_of_line = lf\ninsert_final_newline = true\ntrim_"
  },
  {
    "path": ".eslintignore",
    "chars": 14,
    "preview": "/*.json\n/*.js\n"
  },
  {
    "path": ".eslintrc.js",
    "chars": 188,
    "preview": "// Adapt to vscode.\n// This file will be found in the root directory of vscode.\n// If it cannot be found, it will report"
  },
  {
    "path": ".gitattributes",
    "chars": 5321,
    "preview": "# This file is inspired by https://github.com/alexkaratarakis/gitattributes\n#\n# Auto detect text files and perform LF no"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 196,
    "preview": "blank_issues_enabled: true\ncontact_links:\n  - name: Create new issue\n    url: https://arco.design/issue-helper?repo=arco"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 1989,
    "preview": "<!--\n  Thanks so much for your PR and contribution.\n\n  Before submitting, please make sure to follow the Pull Request Gu"
  },
  {
    "path": ".github/workflows/deploy-site-preview.yml",
    "chars": 3557,
    "preview": "name: deploy-site-preview\non:\n  pull_request:\n    types: [opened, synchronize, reopened]\n  workflow_dispatch:\n\njobs:\n  d"
  },
  {
    "path": ".github/workflows/issue-duplicate.yml",
    "chars": 379,
    "preview": "name: Issue Mark Duplicate\n\non:\n  issue_comment:\n    types: [created, edited]\n\njobs:\n  mark-duplicate:\n    runs-on: ubun"
  },
  {
    "path": ".github/workflows/issue-labeled.yml",
    "chars": 2868,
    "preview": "name: Issue Labeled\n\non:\n  issues:\n    types: [labeled]\n\npermissions:\n  contents: read\n\njobs:\n  issue-labeled:\n    permi"
  },
  {
    "path": ".github/workflows/issue-manager.yml",
    "chars": 1527,
    "preview": "name: Issue Manager\n\non:\n  schedule:\n    - cron: \"0 0 * * *\"\n\npermissions:\n  contents: read\n\njobs:\n  issue-close:\n    pe"
  },
  {
    "path": ".github/workflows/issue-remove-inactive.yml",
    "chars": 599,
    "preview": "name: Issue Remove Inactive\n\non:\n  issues:\n    types: [edited]\n  issue_comment:\n    types: [created, edited]\n\npermission"
  },
  {
    "path": ".github/workflows/pr_check.yml",
    "chars": 1125,
    "preview": "name: pr_check\non:\n  pull_request:\n    types: [ opened, synchronize, reopened ]\n\njobs:\n  check:\n    runs-on: ubuntu-late"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 605,
    "preview": "name: auto-release\non: create\njobs:\n  release:\n    runs-on: ubuntu-latest\n    steps:\n      - name: checkout\n        uses"
  },
  {
    "path": ".gitignore",
    "chars": 157,
    "preview": ".idea/\n# .vscode/\n\nnode_modules/\nstorybook-static/\n**/.DS_Store\n\npackage-lock.json\nlerna-debug.log\nnpm-debug.log\npnpm-de"
  },
  {
    "path": ".husky/commit-msg",
    "chars": 73,
    "preview": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\npnpm exec commitlint --edit $1\n"
  },
  {
    "path": ".husky/pre-commit",
    "chars": 66,
    "preview": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\npnpm -r run lint-staged\n"
  },
  {
    "path": ".npmrc",
    "chars": 50,
    "preview": "shell-emulator=true\n# 提升依赖项\nshamefully-hoist=true\n"
  },
  {
    "path": ".nvmrc",
    "chars": 4,
    "preview": "v18\n"
  },
  {
    "path": ".prettierrc.js",
    "chars": 178,
    "preview": "module.exports = {\n  tabWidth: 2,\n  semi: true,\n  printWidth: 80,\n  singleQuote: true,\n  quoteProps: 'consistent',\n  end"
  },
  {
    "path": ".vscode/settings.json",
    "chars": 74,
    "preview": "{\n  \"eslint.workingDirectories\": [{\n    \"pattern\": \"./packages/*/\"\n  }]\n}\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 3347,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 5565,
    "preview": "\n> English | [简体中文](./CONTRIBUTING.zh-CN.md)\n# Contributing\n\nThank you for taking your time to contribute and make this "
  },
  {
    "path": "CONTRIBUTING.zh-CN.md",
    "chars": 2896,
    "preview": "\n> [English](./CONTRIBUTING.md) | 简体中文\n\n# 贡献指南\n\n感谢你的宝贵时间。你的贡献将使这个项目变得更好!在提交贡献之前,请务必花点时间阅读下面的入门指南。\n\n## 行为准则\n\n该项目有一份 [行为准则"
  },
  {
    "path": "LICENSE",
    "chars": 1091,
    "preview": "MIT License\n\nCopyright (c) 2021 Bytedance, Inc. and its affiliates.\n\nPermission is hereby granted, free of charge, to an"
  },
  {
    "path": "README.md",
    "chars": 3191,
    "preview": "<div align=\"center\">\n  <a href=\"https://arco.design\" target=\"_blank\">\n    <img alt=\"Arco Design Logo\" width=\"200\" src=\"h"
  },
  {
    "path": "README.zh-CN.md",
    "chars": 2393,
    "preview": "<div align=\"center\">\n  <a href=\"https://arco.design\" target=\"_blank\">\n    <img alt=\"Arco Design Logo\" width=\"200\" src=\"h"
  },
  {
    "path": "commitlint.config.js",
    "chars": 364,
    "preview": "module.exports = {\n  extends: ['@commitlint/config-conventional'],\n  rules: {\n    'subject-case': [0],\n    'type-enum': "
  },
  {
    "path": "package.json",
    "chars": 1938,
    "preview": "{\n  \"name\": \"arco-design-vue-monorepo\",\n  \"description\": \"Arco Design Vue 2.0 Monorepo\",\n  \"private\": true,\n  \"scripts\":"
  },
  {
    "path": "packages/arco-changelog/.eslintignore",
    "chars": 36,
    "preview": "node_modules/*\ndist/*\n/*.json\n/*.js\n"
  },
  {
    "path": "packages/arco-changelog/.eslintrc.js",
    "chars": 1551,
    "preview": "module.exports = {\n  parser: '@typescript-eslint/parser',\n  parserOptions: {\n    sourceType: 'module',\n    ecmaVersion: "
  },
  {
    "path": "packages/arco-changelog/.gitignore",
    "chars": 50,
    "preview": ".idea/\n.vscode/\n\ndist/\nnode_modules/\n**/.DS_Store\n"
  },
  {
    "path": "packages/arco-changelog/.prettierrc.js",
    "chars": 178,
    "preview": "module.exports = {\n  tabWidth: 2,\n  semi: true,\n  printWidth: 80,\n  singleQuote: true,\n  quoteProps: 'consistent',\n  end"
  },
  {
    "path": "packages/arco-changelog/README.md",
    "chars": 2342,
    "preview": "# Arco Changelog\n\nA simple github changelog generator\n\n## Installation\n\n```\nnpm install @arco-design/arco-changelog\n```\n"
  },
  {
    "path": "packages/arco-changelog/copy-template.js",
    "chars": 622,
    "preview": "#!/usr/bin/env node\n\nconst fs = require('fs-extra');\n\nfs.copySync('src/vue/template.en-US.njk', 'dist/vue/template.en-US"
  },
  {
    "path": "packages/arco-changelog/package.json",
    "chars": 1419,
    "preview": "{\n  \"name\": \"@arco-design/arco-changelog\",\n  \"version\": \"0.3.2\",\n  \"description\": \"Arco Changelog\",\n  \"author\": \"ArcoDes"
  },
  {
    "path": "packages/arco-changelog/src/.github/PULL_REQUEST_TEMPLATE.md",
    "chars": 1987,
    "preview": "<!--\n  Thanks so much for your PR and contribution.\n\n  Before submitting, please make sure to follow the Pull Request Gu"
  },
  {
    "path": "packages/arco-changelog/src/.gitlab/merge_request_templates/CHANGELOG.md",
    "chars": 1987,
    "preview": "<!--\n  Thanks so much for your PR and contribution.\n\n  Before submitting, please make sure to follow the Pull Request Gu"
  },
  {
    "path": "packages/arco-changelog/src/changelog.ts",
    "chars": 1735,
    "preview": "import marked, { Tokens } from 'marked';\nimport { invertKeyValues } from './utils/invert';\nimport { ChangelogData } from"
  },
  {
    "path": "packages/arco-changelog/src/cmd.ts",
    "chars": 651,
    "preview": "#!/usr/bin/env node\n\nimport { Command } from 'commander';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport { c"
  },
  {
    "path": "packages/arco-changelog/src/config.ts",
    "chars": 1439,
    "preview": "import path from 'path';\nimport fs from 'fs-extra';\nimport { ChangelogConfig } from './interface';\nimport { getEmitFiles"
  },
  {
    "path": "packages/arco-changelog/src/copy-github.js",
    "chars": 430,
    "preview": "import path from 'path';\nimport fs from 'fs-extra';\n\nexport const run = ({ gitlab }) => {\n  if (gitlab) {\n    fs.copySyn"
  },
  {
    "path": "packages/arco-changelog/src/default/emit-files.ts",
    "chars": 1351,
    "preview": "import path from 'path';\nimport { Changelog, EmitFile } from '../interface';\n\nexport const getEmitFiles = (config?: any)"
  },
  {
    "path": "packages/arco-changelog/src/default/template.en-US.njk",
    "chars": 751,
    "preview": "## {{ version }}\n\n`{{ date }}`\n\n{% if attention -%}\n  ### ⚠️ Important Attention\n\n  {% for content in attention -%}\n    "
  },
  {
    "path": "packages/arco-changelog/src/default/template.zh-CN.njk",
    "chars": 717,
    "preview": "## {{ version }}\n\n`{{ date }}`\n\n{% if attention -%}\n  ### ⚠️ 重点注意\n\n  {% for content in attention -%}\n    - {{ content }}"
  },
  {
    "path": "packages/arco-changelog/src/index.ts",
    "chars": 3313,
    "preview": "import fs from 'fs-extra';\nimport inquirer from 'inquirer';\nimport axios from 'axios';\nimport moment from 'moment';\nimpo"
  },
  {
    "path": "packages/arco-changelog/src/interface.ts",
    "chars": 832,
    "preview": "import { AxiosRequestConfig } from 'axios';\n\nexport interface ChangelogConfig {\n  repo: string;\n  merged?: boolean;\n  re"
  },
  {
    "path": "packages/arco-changelog/src/test.md",
    "chars": 2052,
    "preview": "<!--\n  Thanks so much for your PR and contribution.\n\n  Before submitting, please make sure to follow the Pull Request Gu"
  },
  {
    "path": "packages/arco-changelog/src/utils/config.ts",
    "chars": 612,
    "preview": "import path from 'path';\nimport fs from 'fs-extra';\n\nexport const getConfig = async () => {\n  const filename = path.reso"
  },
  {
    "path": "packages/arco-changelog/src/utils/convert-case.ts",
    "chars": 416,
    "preview": "export const toKebabCase = (string: string): string => {\n  return string.replace(/[A-Z]+/g, (match, offset) => {\n    ret"
  },
  {
    "path": "packages/arco-changelog/src/utils/invert.ts",
    "chars": 195,
    "preview": "export const invertKeyValues = (obj: Record<string, string>) => {\n  return Object.keys(obj).reduce((acc, key) => {\n    a"
  },
  {
    "path": "packages/arco-changelog/src/utils/version.ts",
    "chars": 1594,
    "preview": "const getLastVersion = (content: string) => {\n  const match = content.match(/## (\\d+\\.\\d+\\.\\d+(-beta\\.\\d+)?)/);\n  return"
  },
  {
    "path": "packages/arco-changelog/src/vue/emit-files.ts",
    "chars": 2596,
    "preview": "import path from 'path';\nimport { Changelog, EmitFile } from '../interface';\n\nexport const emitFiles = (changelog: Chang"
  },
  {
    "path": "packages/arco-changelog/src/vue/template.en-US.njk",
    "chars": 751,
    "preview": "## {{ version }}\n\n`{{ date }}`\n\n{% if attention -%}\n  ### ⚠️ Important Attention\n\n  {% for content in attention -%}\n    "
  },
  {
    "path": "packages/arco-changelog/src/vue/template.zh-CN.njk",
    "chars": 717,
    "preview": "## {{ version }}\n\n`{{ date }}`\n\n{% if attention -%}\n  ### ⚠️ 重点注意\n\n  {% for content in attention -%}\n    - {{ content }}"
  },
  {
    "path": "packages/arco-changelog/src/vue/vue.config.ts",
    "chars": 131,
    "preview": "import { emitFiles } from './emit-files';\n\nexport default {\n  repo: 'arco-design/arco-design-vue',\n  merged: true,\n  emi"
  },
  {
    "path": "packages/arco-changelog/tsconfig.json",
    "chars": 382,
    "preview": "{\n  \"compilerOptions\": {\n    \"sourceMap\": true,\n    \"outDir\": \"dist\",\n    \"module\": \"CommonJS\",\n    \"target\": \"ES2015\",\n"
  },
  {
    "path": "packages/arco-vue-docs/.eslintignore",
    "chars": 14,
    "preview": "/*.json\n/*.js\n"
  },
  {
    "path": "packages/arco-vue-docs/.eslintrc.js",
    "chars": 1980,
    "preview": "module.exports = {\n  parser: 'vue-eslint-parser',\n  parserOptions: {\n    // Parser that checks the content of the <scrip"
  },
  {
    "path": "packages/arco-vue-docs/.gitignore",
    "chars": 62,
    "preview": ".idea/\n.vscode/\n\nnode_modules/\n**/.DS_Store\n\ndist/\n\nindex.zip\n"
  },
  {
    "path": "packages/arco-vue-docs/.prettierrc.js",
    "chars": 178,
    "preview": "module.exports = {\n  tabWidth: 2,\n  semi: true,\n  printWidth: 80,\n  singleQuote: true,\n  quoteProps: 'consistent',\n  end"
  },
  {
    "path": "packages/arco-vue-docs/.stylelintrc.js",
    "chars": 579,
    "preview": "module.exports = {\n  extends: [\n    'stylelint-config-standard',\n    'stylelint-config-rational-order',\n    'stylelint-c"
  },
  {
    "path": "packages/arco-vue-docs/README.md",
    "chars": 245,
    "preview": "# Arco Design Vue Document Station\n\nThe site for Arco Design Vue.\n\n[Official website](https://arco.design/vue)\n\n## Devel"
  },
  {
    "path": "packages/arco-vue-docs/app.vue",
    "chars": 3282,
    "preview": "<template>\n  <div class=\"arco-vue-site\">\n    <div\n      :class=\"[\n        'arco-vue-body',\n        { 'arco-vue-body-has-"
  },
  {
    "path": "packages/arco-vue-docs/components/anchor-head/index.vue",
    "chars": 980,
    "preview": "<template>\n  <component :is=\"`h${level}`\" :id=\"href\" class=\"anchor-head\">\n    <a class=\"anchor-link\" :href=\"`#${href}`\" "
  },
  {
    "path": "packages/arco-vue-docs/components/anchor-head/style.less",
    "chars": 386,
    "preview": ".anchor-head {\n  position: relative;\n\n  &:hover {\n    .anchor-link {\n      opacity: 1;\n    }\n  }\n\n  .anchor-link {\n    p"
  },
  {
    "path": "packages/arco-vue-docs/components/article/context.ts",
    "chars": 319,
    "preview": "import { InjectionKey } from 'vue';\nimport { AnchorData } from '../aside-anchor/interface';\n\ninterface ArticleContext {\n"
  },
  {
    "path": "packages/arco-vue-docs/components/article/index.vue",
    "chars": 2563,
    "preview": "<template>\n  <aside-anchor\n    v-if=\"anchors && anchors.length > 0\"\n    :show=\"collapseCtx.showAnchor\"\n    :anchors=\"anc"
  },
  {
    "path": "packages/arco-vue-docs/components/article/style.less",
    "chars": 2116,
    "preview": "@import '../../../web-vue/components/style/theme/css-variables.less';\n\n.arco-vue-main {\n  margin-left: 13px;\n  transitio"
  },
  {
    "path": "packages/arco-vue-docs/components/aside-anchor/index.vue",
    "chars": 1752,
    "preview": "<template>\n  <aside :class=\"cls\">\n    <div class=\"aside-top\">\n      <a-button\n        :class=\"buttonCls\"\n        shape=\""
  },
  {
    "path": "packages/arco-vue-docs/components/aside-anchor/interface.ts",
    "chars": 106,
    "preview": "export interface AnchorData {\n  href: string;\n  title: {\n    'zh-CN': string;\n    'en-US': string;\n  };\n}\n"
  },
  {
    "path": "packages/arco-vue-docs/components/aside-anchor/style.less",
    "chars": 933,
    "preview": ".arco-vue-aside {\n  position: fixed;\n  top: 61px;\n  right: 0;\n  bottom: 0;\n  display: flex;\n  flex-direction: column;\n  "
  },
  {
    "path": "packages/arco-vue-docs/components/aside-nav/index.vue",
    "chars": 4355,
    "preview": "<template>\n  <aside\n    :class=\"cls\"\n    @transitionstart=\"handleTranslationStart\"\n    @transitionend=\"handleTranslation"
  },
  {
    "path": "packages/arco-vue-docs/components/aside-nav/style.less",
    "chars": 3041,
    "preview": ".arco-vue-aside-left {\n  position: fixed;\n  top: 61px;\n  bottom: 0;\n  left: 0;\n  z-index: 100;\n  margin-left: 0;\n  borde"
  },
  {
    "path": "packages/arco-vue-docs/components/cell-code/index.vue",
    "chars": 3473,
    "preview": "<template>\n  <div :class=\"cls\">\n    <div class=\"cell-code-operation\">\n      <a-tooltip\n        :content=\"showCode ? t('t"
  },
  {
    "path": "packages/arco-vue-docs/components/cell-code/style.less",
    "chars": 905,
    "preview": "@import '../web-vue/components/style/theme/css-variables.less';\n\n.cell-code {\n  margin-top: 12px;\n  //&&-collapse {\n  //"
  },
  {
    "path": "packages/arco-vue-docs/components/cell-demo/index.vue",
    "chars": 237,
    "preview": "<template>\n  <div class=\"cell-demo\">\n    <slot />\n  </div>\n</template>\n\n<script>\nimport { defineComponent } from 'vue';\n"
  },
  {
    "path": "packages/arco-vue-docs/components/cell-demo/style.less",
    "chars": 123,
    "preview": ".cell-demo {\n  margin-top: 24px;\n  padding: 48px;\n  border: 1px solid var(--color-border);\n  border-radius: 2px 2px 0 0;"
  },
  {
    "path": "packages/arco-vue-docs/components/changelog-box/index.vue",
    "chars": 6425,
    "preview": "<template>\n  <Button class=\"changelog-box-button\" @click=\"drawerVisible = true\">\n    {{ t('changelogBox.changelog') }}\n "
  },
  {
    "path": "packages/arco-vue-docs/components/code-block/index.vue",
    "chars": 726,
    "preview": "<template>\n  <section class=\"code-block\">\n    <anchor-head :level=\"2\" :href=\"$attrs.id\">{{ title }}</anchor-head>\n    <s"
  },
  {
    "path": "packages/arco-vue-docs/components/code-block/style.less",
    "chars": 167,
    "preview": ".code-block {\n  h2 {\n    margin: 48px 0 12px;\n    color: var(--color-text-1);\n    font-weight: 500;\n    font-size: 20px;"
  },
  {
    "path": "packages/arco-vue-docs/components/footer/index.vue",
    "chars": 4368,
    "preview": "<template>\n  <footer class=\"arco-site-footer\">\n    <div class=\"arco-site-footer-main\">\n      <div class=\"arco-site-foote"
  },
  {
    "path": "packages/arco-vue-docs/components/footer/style.less",
    "chars": 3024,
    "preview": ".arco-site-footer {\n  display: flex;\n  justify-content: center;\n  box-sizing: border-box;\n  width: 100%;\n  padding: 80px"
  },
  {
    "path": "packages/arco-vue-docs/components/logo/index.vue",
    "chars": 7537,
    "preview": "<template>\n  <svg width=\"120px\" height=\"24px\" viewBox=\"0 0 120 24\" version=\"1.1\">\n    <g stroke=\"none\" stroke-width=\"1\" "
  },
  {
    "path": "packages/arco-vue-docs/components/navbar/index.vue",
    "chars": 1480,
    "preview": "<template>\n  <nav class=\"arco-nav\">\n    <div class=\"arco-nav-logo\">\n      <logo-arco v-if=\"theme === 'light'\" />\n      <"
  },
  {
    "path": "packages/arco-vue-docs/components/navbar/style.less",
    "chars": 393,
    "preview": ".arco-nav {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 100;\n  display: flex;\n  align-items: center;\n"
  },
  {
    "path": "packages/arco-vue-docs/components/theme-box/index.vue",
    "chars": 9071,
    "preview": "<template>\n  <Badge class=\"theme-badge\" :count=\"theme ? 1 : 0\" dot>\n    <Button\n      class=\"theme-badge-button\"\n      :"
  },
  {
    "path": "packages/arco-vue-docs/components/theme-box/interface.ts",
    "chars": 132,
    "preview": "export interface ThemeData {\n  themeId: number;\n  themeName: string;\n  cover: string;\n  packageName: string;\n  unpkgHost"
  },
  {
    "path": "packages/arco-vue-docs/components/token-table/token-table.vue",
    "chars": 2690,
    "preview": "<template>\n  <a-table :columns=\"columns\" :data=\"data\" :pagination=\"false\">\n    <template #name=\"{ record }\">\n      <div "
  },
  {
    "path": "packages/arco-vue-docs/context.ts",
    "chars": 267,
    "preview": "import { InjectionKey } from 'vue';\n\nexport interface CollapseContext {\n  showNav: boolean;\n  showAnchor: boolean;\n  tog"
  },
  {
    "path": "packages/arco-vue-docs/docs/dark.en-US.md",
    "chars": 680,
    "preview": "```yaml\nmeta:\n  type: Developer Guide\ntitle: Dark mode\ndescription: The dark theme is built in the component library, an"
  },
  {
    "path": "packages/arco-vue-docs/docs/dark.zh-CN.md",
    "chars": 392,
    "preview": "```yaml\nmeta:\n  type: 开发指南\ntitle: 暗黑模式\ndescription: 组件库内置暗色的主题,你可以轻易的切换到暗色。\n```\n\n## 切换到暗黑模式\n\n组件库通过 body 标签上的 arco-theme "
  },
  {
    "path": "packages/arco-vue-docs/docs/faq.en-US.md",
    "chars": 3109,
    "preview": "```yaml\nmeta:\n  type: Developer Guide\ntitle: FAQ\ndescription: Frequently Asked Questions in the Use of the Component Lib"
  },
  {
    "path": "packages/arco-vue-docs/docs/faq.zh-CN.md",
    "chars": 1296,
    "preview": "```yaml\nmeta:\n  type: 开发指南\ntitle: 常见问题\ndescription: 组件库使用中的常见问题解答\n```\n\n## 受控与非受控\n\nArco Design Vue 组件库中使用了 `受控` 的概念,正如其名,"
  },
  {
    "path": "packages/arco-vue-docs/docs/i18n.en-US.md",
    "chars": 1386,
    "preview": "```yaml\nmeta:\n  type: Developer Guide\ntitle: Globalization\ndescription: All component texts use Chinese by default, and "
  },
  {
    "path": "packages/arco-vue-docs/docs/i18n.zh-CN.md",
    "chars": 1108,
    "preview": "```yaml\nmeta:\n  type: 开发指南\ntitle: 国际化\ndescription: 所有组件文案默认使用的是中文,通过设置可以使用其它语言。\n```\n\n通过 [ConfigProvider](/vue/component/"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/build.en-US.md",
    "chars": 1334,
    "preview": "```yaml\nmeta:\n  type: Arco Pro\ntitle: Package build\ndescription: Package code\n```\n\n*Auto translate by google.*\n\n## Packa"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/build.zh-CN.md",
    "chars": 715,
    "preview": "```yaml\nmeta:\n  type: Arco Pro 最佳实践\ntitle: 打包构建\ndescription: 打包代码\n```\n\n## 打包构建\n\n当代码书写完成后,执行以下命令即可打包代码\n\n```bash\nnpm run b"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/directory.en-US.md",
    "chars": 1098,
    "preview": "```yaml\nmeta:\n  type: Arco Pro\ntitle: Directory Structure\ndescription: The organizational structure of the project file."
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/directory.zh-CN.md",
    "chars": 734,
    "preview": "```yaml\nmeta:\n  type: Arco Pro 最佳实践\ntitle: 目录结构\ndescription: 项目文件的组织结构\n```\n\n## 目录\n\n```\n├── README.md\n├── package.json\n├─"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/faq.en-US.md",
    "chars": 3647,
    "preview": "```yaml\nmeta:\n  type: Arco Pro\ntitle: FAQ\ndescription: Arco Design Pro Vue FAQ Collection\n```\n\n*Auto translate by google"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/faq.zh-CN.md",
    "chars": 2217,
    "preview": "```yaml\nmeta:\n  type: Arco Pro 最佳实践\ntitle: 常见问题\ndescription: Arco Design Pro Vue 常见问题合集\n```\n\n## 初始化\n\n### 一、arco-cli初始化失败"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/i18n.en-US.md",
    "chars": 983,
    "preview": "```yaml\nmeta:\n  type: Arco Pro\ntitle: Internationalization\ndescription: Multi-language implementation\n```\n\n*Auto transla"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/i18n.zh-CN.md",
    "chars": 697,
    "preview": "```yaml\nmeta:\n  type: Arco Pro 最佳实践\ntitle: 国际化\ndescription: 多语言实现\n```\n\n## 语言包\n\n国际化首先是语言包的提供,Pro 里面将语言包定义在 `src/locale` 中"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/layout.en-US.md",
    "chars": 762,
    "preview": "```yaml\nmeta:\n  type: Arco Pro\ntitle: Layout\ndescription: General layout of the page\n```\n\n*Auto translate by google.*\n\n#"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/layout.zh-CN.md",
    "chars": 441,
    "preview": "```yaml\nmeta:\n  type: Arco Pro 最佳实践\ntitle: 布局\ndescription: 页面通用布局\n```\n\n## 布局\n\n目前提供的布局只有一套,应用到了所有路由页面上,包含侧边菜单栏,顶部通知栏,页脚和内"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/mock.en-US.md",
    "chars": 4064,
    "preview": "```yaml\nmeta:\n  type: Arco Pro\ntitle: Interface and Mock\ndescription: Network request, interceptor and simulation data\n`"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/mock.zh-CN.md",
    "chars": 2852,
    "preview": "```yaml\nmeta:\n  type: Arco Pro 最佳实践\ntitle: 接口和数据模拟\ndescription: 网络请求、拦截器及模拟数据\n```\n\n## 网络请求\n\n使用axios进行远程接口请求。\n\n建议完善返回及请求数"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/npm-scripts.en-US.md",
    "chars": 979,
    "preview": "```yaml\nmeta:\n  type: Arco Pro\ntitle: Npm Scripts\ndescription: package.json script presets convenient and practical comm"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/npm-scripts.zh-CN.md",
    "chars": 668,
    "preview": "```yaml\nmeta:\n  type: Arco Pro 最佳实践\ntitle: npm 命令\ndescription: package.json script 预置方便实用的命令\n```\n\n## 配置文件\n\n```\n├── READM"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/permission.en-US.md",
    "chars": 6141,
    "preview": "```yaml\nmeta:\n  type: Arco Pro\ntitle: Permission control\ndescription: Permission control is a very common basic function"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/permission.zh-CN.md",
    "chars": 4361,
    "preview": "```yaml\nmeta:\n  type: Arco Pro 最佳实践\ntitle: 权限控制\ndescription: 权限控制是中后台场景非常常见的基础功能,在 v2.2.0 将权限控制功能集成至 Arco Design Pro\n```"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/routes-and-menu.en-US.md",
    "chars": 6089,
    "preview": "```yaml\nmeta:\n  type: Arco Pro\ntitle: Routes and menu\ndescription: Route and menu generation\n```\n\n*Auto translate by goo"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/routes-and-menu.zh-CN.md",
    "chars": 3993,
    "preview": "```yaml\nmeta:\n  type: Arco Pro 最佳实践\ntitle: 路由与菜单\ndescription: 路由和菜单的生成\n```\n\n路由通常都和菜单绑定在一起,为了减少维护的量,我们直接通过路由表生成了菜单。\n\n## 路"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/start.en-US.md",
    "chars": 1670,
    "preview": "```yaml\nmeta:\n  type: Arco Pro\ntitle: Quick start\ndescription: Please follow the steps below to create Arco Design Pro\n`"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/start.zh-CN.md",
    "chars": 979,
    "preview": "```yaml\nmeta:\n  type: Arco Pro 最佳实践\ntitle: 快速开始\ndescription: 请跟随以下步骤创建 Arco Design Pro\n```\n\n## 环境\n\n开始开发之前,请确认本地环境中安装好了 `"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/state-management-pinia.en-US.md",
    "chars": 2663,
    "preview": "```yaml\nmeta:\n  type: Arco Pro\ntitle: State management - Pinia\ndescription: Site-wide status management\n```\n*Auto transl"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/state-management-pinia.zh-CN.md",
    "chars": 1921,
    "preview": "```yaml\nmeta:\n  type: Arco Pro 最佳实践\ntitle: 状态管理 - Pinia\ndescription: 全站状态管理\n```\n\n## Arco Pro Version\n\nArco Pro >= 2.1.0\n"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/state-management.en-US.md",
    "chars": 8531,
    "preview": "```yaml\nmeta:\n  type: Arco Pro\ntitle: State management - Vuex\ndescription: Site-wide status management\n```\n\n*Auto transl"
  },
  {
    "path": "packages/arco-vue-docs/docs/pro/state-management.zh-CN.md",
    "chars": 6597,
    "preview": "```yaml\nmeta:\n  type: Arco Pro 最佳实践\ntitle: 状态管理 - Vuex\ndescription: 全站状态管理\n```\n\n## Arco Pro Version\n\nArco Pro < 2.1.0\n\n*"
  },
  {
    "path": "packages/arco-vue-docs/docs/start.en-US.md",
    "chars": 6796,
    "preview": "```yaml\nmeta:\n  type: Developer Guide\ntitle: Getting Started\ndescription: Follow the steps below to quickly get started "
  },
  {
    "path": "packages/arco-vue-docs/docs/start.zh-CN.md",
    "chars": 5733,
    "preview": "```yaml\nmeta:\n  type: 开发指南\ntitle: 快速上手\ndescription: 跟随以下的步骤,快速上手组件库的使用。\n```\n\n## Vue 版本\n\nvue >= 3.2.0\n\n**注意**:由于 `Vue3` 不"
  },
  {
    "path": "packages/arco-vue-docs/docs/theme.en-US.md",
    "chars": 2663,
    "preview": "```yaml\nmeta:\n  type: Developer Guide\ntitle: Custom theme\ndescription: ArcoVue provides a set of blue themes (ArcoBlue),"
  },
  {
    "path": "packages/arco-vue-docs/docs/theme.zh-CN.md",
    "chars": 1663,
    "preview": "```yaml\nmeta:\n  type: 开发指南\ntitle: 定制主题\ndescription: ArcoVue提供了一套蓝色主题(ArcoBlue),用户可以根据自己的需求定制新主题,以满足业务和品牌上的多样化需求。\n```\n\nAr"
  },
  {
    "path": "packages/arco-vue-docs/global.d.ts",
    "chars": 391,
    "preview": "declare module '*.vue' {\n  import { DefineComponent } from 'vue';\n  // eslint-disable-next-line @typescript-eslint/no-ex"
  },
  {
    "path": "packages/arco-vue-docs/hooks/useLanguage.ts",
    "chars": 821,
    "preview": "import { ref } from 'vue';\n// import Locale from '@arco-design/web-vue/es/locale';\nimport { getLocalStorage, setLocalSto"
  },
  {
    "path": "packages/arco-vue-docs/hooks/useTheme.ts",
    "chars": 629,
    "preview": "import { ref } from 'vue';\nimport { getLocalStorage, setLocalStorage } from '../utils/local-storage';\n\nexport const useT"
  },
  {
    "path": "packages/arco-vue-docs/index.html",
    "chars": 903,
    "preview": "<!DOCTYPE html>\n<html lang=\"zh\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Arco Design Vue</title>\n  <link\n    rel=\"short"
  },
  {
    "path": "packages/arco-vue-docs/index.ts",
    "chars": 2610,
    "preview": "import { createApp } from 'vue';\nimport { createI18n } from 'vue-i18n';\nimport ArcoVue, { addI18nMessages, useLocale } f"
  },
  {
    "path": "packages/arco-vue-docs/locale/en-us.js",
    "chars": 5595,
    "preview": "export default {\n  docs: {\n    name: 'Developer Guide',\n    start: 'Quick Start',\n    dark: 'Dark Mode',\n    theme: 'Cus"
  },
  {
    "path": "packages/arco-vue-docs/locale/index.js",
    "chars": 111,
    "preview": "import zhCN from './zh-cn';\nimport enUS from './en-us';\n\nexport default {\n  'zh-CN': zhCN,\n  'en-US': enUS,\n};\n"
  },
  {
    "path": "packages/arco-vue-docs/locale/zh-cn.js",
    "chars": 5038,
    "preview": "export default {\n  docs: {\n    name: '开发指南',\n    start: '快速上手',\n    dark: '暗黑模式',\n    theme: '定制主题',\n    token: '设计变量',\n"
  },
  {
    "path": "packages/arco-vue-docs/package.json",
    "chars": 1698,
    "preview": "{\n  \"name\": \"@arco-design/arco-vue-docs\",\n  \"version\": \"1.0.0\",\n  \"private\": true,\n  \"description\": \"Arco Design Vue 2.0"
  },
  {
    "path": "packages/arco-vue-docs/pages/changelog/changelog.vue",
    "chars": 2480,
    "preview": "<template>\n  <arco-article v-bind=\"data\">\n    <a-timeline class=\"arco-changelog\">\n      <a-timeline-item v-for=\"item of "
  },
  {
    "path": "packages/arco-vue-docs/pages/changelog/style/index.less",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "packages/arco-vue-docs/pages/icon/__demo__/basic.md",
    "chars": 2173,
    "preview": "```yaml\ntitle:\n  zh-CN: 基础使用\n  en-US: Basic Usage\n```\n\n## zh-CN\n\nArco图标是一个独立的库,需要额外引入并注册使用。\n\n```ts\nimport { createApp } "
  },
  {
    "path": "packages/arco-vue-docs/pages/icon/__demo__/icon-font.md",
    "chars": 2820,
    "preview": "```yaml\ntitle:\n  zh-CN: 使用 iconfont.cn 项目\n  en-US: Using the iconfont.cn project\n```\n\n## zh-CN\n\n可以把 iconfont.cn 中的项目添加到 "
  },
  {
    "path": "packages/arco-vue-docs/pages/icon/__demo__/spin.md",
    "chars": 495,
    "preview": "```yaml\ntitle:\n  zh-CN: 旋转状态\n  en-US: Spin Icon\n```\n\n## zh-CN\n\n通过设置 `spin`,可以将图标设置为旋转状态。也可以使用 `rotate` 自定义旋转角度。\n\n---\n\n##"
  },
  {
    "path": "packages/arco-vue-docs/pages/icon/__demo__/tree-shaking.md",
    "chars": 507,
    "preview": "```yaml\ntitle:\n  zh-CN: 按需加载\n  en-US: Tree shaking\n```\n\n## zh-CN\n\n可以通过单独引入图标的方式实现按需加载。\n\n---\n\n## en-US\n\nThe on-demand imp"
  },
  {
    "path": "packages/arco-vue-docs/pages/icon/icon-demo.vue",
    "chars": 6892,
    "preview": "<template>\n  <arco-article v-bind=\"data\">\n    <div class=\"arco-vue-icon-header\">\n      <div class=\"icon-list-bar\">\n     "
  },
  {
    "path": "packages/arco-vue-docs/pages/icon/icons.json",
    "chars": 26541,
    "preview": "[\n  {\n    \"title\": \"方向指示类图标\",\n    \"type\": \"direction\",\n    \"list\": [\n      {\n        \"name\": \"icon-arrow-down\",\n        "
  },
  {
    "path": "packages/arco-vue-docs/pages/icon/style.less",
    "chars": 1993,
    "preview": "@import '../../../web-vue/components/style/theme/css-variables.less';\n\n.arco-vue-icon-header {\n  margin-top: 48px;\n\n  .i"
  },
  {
    "path": "packages/arco-vue-docs/pages/token/token.vue",
    "chars": 2145,
    "preview": "<template>\n  <arco-article v-bind=\"data\">\n    <div class=\"theme-button\">\n      <a-radio-group\n        :model-value=\"them"
  },
  {
    "path": "packages/arco-vue-docs/pages/token/tokens.ts",
    "chars": 16207,
    "preview": "export const tokens = [\n  {\n    name: '主色',\n    nameEN: 'Primary',\n    type: 'color',\n    tokens: [\n      {\n        name"
  },
  {
    "path": "packages/arco-vue-docs/router.ts",
    "chars": 25158,
    "preview": "import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';\nimport nProgress from 'nprogress';\n\nconst S"
  },
  {
    "path": "packages/arco-vue-docs/style/demo.less",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "packages/arco-vue-docs/style/index.less",
    "chars": 1906,
    "preview": "@import '../../web-vue/components/style/index.less';\n@import './demo.less';\n\n.arco-vue-site {\n  color: var(--color-text-"
  },
  {
    "path": "packages/arco-vue-docs/tsconfig.json",
    "chars": 334,
    "preview": "{\n  \"compilerOptions\": {\n    \"module\": \"ES2020\",\n    \"moduleResolution\": \"node\",\n    \"allowJs\": true,\n    \"strict\": true"
  },
  {
    "path": "packages/arco-vue-docs/utils/api.ts",
    "chars": 424,
    "preview": "// @ts-ignore\nconst arcoConfig = window.arcoConfig || {};\n\nexport const hostname =\n  window.location.hostname !== arcoCo"
  },
  {
    "path": "packages/arco-vue-docs/utils/clipboard.ts",
    "chars": 1091,
    "preview": "// https://github.com/feross/clipboard-copy/blob/master/index.js\n\nexport default function clipboard(text: string) {\n  if"
  },
  {
    "path": "packages/arco-vue-docs/utils/code-sandbox.ts",
    "chars": 1735,
    "preview": "import { getParameters } from 'codesandbox/lib/api/define';\nimport { mainContent, styleContent } from './code-template';"
  },
  {
    "path": "packages/arco-vue-docs/utils/code-stackblitz.ts",
    "chars": 1586,
    "preview": "import stackblitz from '@stackblitz/sdk';\nimport { mainContent, styleContent } from './code-template';\n\nexport const htm"
  },
  {
    "path": "packages/arco-vue-docs/utils/code-template.ts",
    "chars": 325,
    "preview": "export const mainContent = `import { createApp } from 'vue';\nimport ArcoVue from '@arco-design/web-vue';\nimport App from"
  },
  {
    "path": "packages/arco-vue-docs/utils/codepen.ts",
    "chars": 2331,
    "preview": "const CSS_EXTERNAL = [\n  'https://unpkg.com/@arco-design/web-vue@2.x/dist/arco.css',\n];\nconst JS_EXTERNAL = [\n  'https:/"
  },
  {
    "path": "packages/arco-vue-docs/utils/join-chart.ts",
    "chars": 584,
    "preview": "import axios from 'axios';\nimport { Message } from '@web-vue/components/index';\n\nexport default function joinChat() {\n  "
  },
  {
    "path": "packages/arco-vue-docs/utils/local-storage.ts",
    "chars": 611,
    "preview": "export const getLocalStorage = <T = string>(\n  name: string,\n  isJson?: boolean\n): T | string | null => {\n  try {\n    co"
  },
  {
    "path": "packages/arco-vue-docs/utils/login.ts",
    "chars": 1071,
    "preview": "import axios from 'axios';\n\n// @ts-ignore\nconst isProduction = import.meta.env.PROD;\n\nexport async function checkLogin()"
  },
  {
    "path": "packages/arco-vue-docs/utils/strings.ts",
    "chars": 327,
    "preview": "export const strEndsWith = (str: string, search: string) => {\n  return str.substring(str.length - search.length, str.len"
  },
  {
    "path": "packages/arco-vue-docs-navbar/.eslintignore",
    "chars": 27,
    "preview": "dist/*\n/*.json\n/*.js\n/*.ts\n"
  },
  {
    "path": "packages/arco-vue-docs-navbar/.gitignore",
    "chars": 44,
    "preview": ".idea/\n.vscode/\n\nnode_modules/\n**/.DS_Store\n"
  },
  {
    "path": "packages/arco-vue-docs-navbar/README.md",
    "chars": 122,
    "preview": "# `@arco-design/arco-vue-site-nav`\n\nWIP: Will be removed in the future\n\nArco Design Vue Docs Navbar (from React Material"
  },
  {
    "path": "packages/arco-vue-docs-navbar/dist/index.d.ts",
    "chars": 270,
    "preview": "import './index.less';\nimport './navbar.css';\ninterface NavBarOptions {\n    version?: string;\n    lang?: string;\n    han"
  },
  {
    "path": "packages/arco-vue-docs-navbar/dist/index.js",
    "chars": 1306705,
    "preview": "var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPr"
  },
  {
    "path": "packages/arco-vue-docs-navbar/dist/style.css",
    "chars": 513892,
    "preview": ".arco-react-left-panel{background:var(--color-bg-3);border:1px solid var(--color-border);box-shadow:0 8px 20px #0000001a"
  },
  {
    "path": "packages/arco-vue-docs-navbar/package.json",
    "chars": 1130,
    "preview": "{\n  \"name\": \"@arco-design/arco-vue-docs-navbar\",\n  \"private\": true,\n  \"version\": \"0.2.0\",\n  \"description\": \"Arco Vue 2.0"
  },
  {
    "path": "packages/arco-vue-docs-navbar/plugins/rollup-plugin-svgr.ts",
    "chars": 684,
    "preview": "import fs from 'fs';\nimport type { Plugin } from 'vite';\nimport svgr from '@svgr/core';\nimport esbuild from 'esbuild';\n\n"
  },
  {
    "path": "packages/arco-vue-docs-navbar/src/index.less",
    "chars": 118,
    "preview": "@import '@arco-design/web-react/dist/css/index.less';\n\n//@arco-vars-prefix: arco-react;\n@arco-theme-tag: #react-root;\n"
  },
  {
    "path": "packages/arco-vue-docs-navbar/src/index.tsx",
    "chars": 1445,
    "preview": "// @ts-ignore\nimport React from 'react';\n// @ts-ignore\nimport ReactDOM from 'react-dom';\nimport Navbar from '@arco-mater"
  },
  {
    "path": "packages/arco-vue-docs-navbar/src/navbar.css",
    "chars": 28325,
    "preview": ".ac-navbar-search-history-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n}\n.ac-navba"
  },
  {
    "path": "packages/arco-vue-docs-navbar/src/navbar.less",
    "chars": 173,
    "preview": "@prefix: ac-navbar;\n\n@import './style/history.less';\n@import './style/hot.less';\n@import './style/list.less';\n@import '@"
  },
  {
    "path": "packages/arco-vue-docs-navbar/src/style/history.less",
    "chars": 1116,
    "preview": "@hi-prefixCls: ~'@{prefix}-search-history';\n\n.@{hi-prefixCls} {\n  &-header {\n    display: flex;\n    align-items: center;"
  },
  {
    "path": "packages/arco-vue-docs-navbar/src/style/hot.less",
    "chars": 2181,
    "preview": "@ho-prefixCls: ~'@{prefix}-search-hot';\n\n.@{ho-prefixCls} {\n  display: flex;\n\n  &-half {\n    width: 50%;\n  }\n\n  &-title "
  },
  {
    "path": "packages/arco-vue-docs-navbar/src/style/list.less",
    "chars": 3945,
    "preview": "\n@li-prefixCls: ~'@{prefix}-search-modal-container';\n@doc-item-content-height: 48px;\n\n.@{li-prefixCls} {\n  height: 460px"
  },
  {
    "path": "packages/arco-vue-docs-navbar/tsconfig.json",
    "chars": 317,
    "preview": "{\n  \"compilerOptions\": {\n    \"outDir\": \"dist\",\n    \"declaration\": true,\n    \"emitDeclarationOnly\": true,\n    \"moduleReso"
  },
  {
    "path": "packages/arco-vue-docs-navbar/vite.config.ts",
    "chars": 544,
    "preview": "import { defineConfig } from 'vite';\nimport svgr from './plugins/rollup-plugin-svgr';\n\nexport default defineConfig({\n  m"
  },
  {
    "path": "packages/arco-vue-scripts/.eslintignore",
    "chars": 36,
    "preview": "node_modules/*\ndist/*\n/*.json\n/*.js\n"
  },
  {
    "path": "packages/arco-vue-scripts/.eslintrc.js",
    "chars": 1551,
    "preview": "module.exports = {\n  parser: '@typescript-eslint/parser',\n  parserOptions: {\n    sourceType: 'module',\n    ecmaVersion: "
  },
  {
    "path": "packages/arco-vue-scripts/.gitignore",
    "chars": 50,
    "preview": ".idea/\n.vscode/\n\ndist/\nnode_modules/\n**/.DS_Store\n"
  },
  {
    "path": "packages/arco-vue-scripts/.prettierrc.js",
    "chars": 178,
    "preview": "module.exports = {\n  tabWidth: 2,\n  semi: true,\n  printWidth: 80,\n  singleQuote: true,\n  quoteProps: 'consistent',\n  end"
  },
  {
    "path": "packages/arco-vue-scripts/README.md",
    "chars": 1016,
    "preview": "# Arco Vue Scripts\n\nA collection of commands used in the Arco Design Vue component library\n\n## Installation\n\n```\nnpm ins"
  },
  {
    "path": "packages/arco-vue-scripts/copy-template.js",
    "chars": 172,
    "preview": "#!/usr/bin/env node\n\nconst fs = require('fs-extra');\n\nfs.copySync(\n  'src/scripts/changelog/template',\n  'dist/scripts/c"
  },
  {
    "path": "packages/arco-vue-scripts/package.json",
    "chars": 2439,
    "preview": "{\n  \"name\": \"@arco-design/arco-vue-scripts\",\n  \"version\": \"0.2.10\",\n  \"description\": \"Arco Vue Scripts\",\n  \"author\": \"Ar"
  },
  {
    "path": "packages/arco-vue-scripts/src/configs/jest.config.ts",
    "chars": 558,
    "preview": "import { Config } from '@jest/types';\nimport path from 'path';\n\nconst jestConfig = (collectCoverageFrom: string[]): Conf"
  },
  {
    "path": "packages/arco-vue-scripts/src/configs/vite.dev.ts",
    "chars": 939,
    "preview": "import { defineConfig, InlineConfig } from 'vite';\nimport vue from '@vitejs/plugin-vue';\nimport vueJsx from '@vitejs/plu"
  },
  {
    "path": "packages/arco-vue-scripts/src/configs/vite.material.library.ts",
    "chars": 1164,
    "preview": "import { InlineConfig } from 'vite';\nimport vue from '@vitejs/plugin-vue';\nimport vueJsx from '@vitejs/plugin-vue-jsx';\n"
  },
  {
    "path": "packages/arco-vue-scripts/src/configs/vite.material.library.umd.ts",
    "chars": 1515,
    "preview": "import { InlineConfig } from 'vite';\nimport vue from '@vitejs/plugin-vue';\nimport vueJsx from '@vitejs/plugin-vue-jsx';\n"
  },
  {
    "path": "packages/arco-vue-scripts/src/configs/vite.material.prod.ts",
    "chars": 1367,
    "preview": "import { InlineConfig } from 'vite';\nimport vue from '@vitejs/plugin-vue';\nimport vueJsx from '@vitejs/plugin-vue-jsx';\n"
  },
  {
    "path": "packages/arco-vue-scripts/src/configs/vite.material.style.ts",
    "chars": 512,
    "preview": "import { InlineConfig } from 'vite';\n\nconst config: InlineConfig = {\n  mode: 'production',\n  build: {\n    target: 'modul"
  },
  {
    "path": "packages/arco-vue-scripts/src/configs/vite.prod.style.ts",
    "chars": 697,
    "preview": "import { InlineConfig } from 'vite';\nimport cssjs from '../plugins/vite-plugin-cssjs';\n\nconst config: InlineConfig = {\n "
  },
  {
    "path": "packages/arco-vue-scripts/src/configs/vite.prod.ts",
    "chars": 1240,
    "preview": "import { InlineConfig } from 'vite';\nimport glob from 'glob';\nimport vue from '@vitejs/plugin-vue';\nimport vueJsx from '"
  },
  {
    "path": "packages/arco-vue-scripts/src/configs/vite.prod.umd.ts",
    "chars": 1335,
    "preview": "import { InlineConfig } from 'vite';\nimport vue from '@vitejs/plugin-vue';\nimport vueJsx from '@vitejs/plugin-vue-jsx';\n"
  },
  {
    "path": "packages/arco-vue-scripts/src/configs/vite.site.dev.ts",
    "chars": 1108,
    "preview": "import path from 'path';\nimport { defineConfig, InlineConfig } from 'vite';\nimport vue from '@vitejs/plugin-vue';\nimport"
  },
  {
    "path": "packages/arco-vue-scripts/src/configs/vite.site.prod.ts",
    "chars": 900,
    "preview": "import path from 'path';\nimport { defineConfig, InlineConfig } from 'vite';\nimport vue from '@vitejs/plugin-vue';\nimport"
  },
  {
    "path": "packages/arco-vue-scripts/src/index.ts",
    "chars": 4185,
    "preview": "#!/usr/bin/env node\n\nimport path from 'path';\nimport fs from 'fs-extra';\nimport { Command } from 'commander';\nimport ico"
  },
  {
    "path": "packages/arco-vue-scripts/src/plugins/md-vue-jest/index.js",
    "chars": 565,
    "preview": "// eslint-disable-next-line\nconst marked = require('marked');\n// eslint-disable-next-line\nconst vueTransformer = require"
  },
  {
    "path": "packages/arco-vue-scripts/src/plugins/vite-plugin-cssjs/index.ts",
    "chars": 486,
    "preview": "import type { Plugin } from 'vite';\n\nexport default function cssjsPlugin(): Plugin {\n  return {\n    name: 'vite:cssjs',\n"
  },
  {
    "path": "packages/arco-vue-scripts/src/plugins/vite-plugin-external/index.ts",
    "chars": 460,
    "preview": "import type { Plugin } from 'vite';\n\nexport default function externalPlugin(): Plugin {\n  return {\n    name: 'vite:exter"
  },
  {
    "path": "packages/arco-vue-scripts/src/plugins/vite-plugin-vue-export-helper/index.ts",
    "chars": 623,
    "preview": "import type { Plugin } from 'vite';\n\nconst EXPORT_HELPER_ID = 'plugin-vue:export-helper';\nconst helperCode = `\nexport de"
  },
  {
    "path": "packages/arco-vue-scripts/src/scripts/build-component/index.ts",
    "chars": 708,
    "preview": "import fs from 'fs-extra';\nimport path from 'path';\nimport { build } from 'vite';\nimport config from '../../configs/vite"
  },
  {
    "path": "packages/arco-vue-scripts/src/scripts/build-material/index.ts",
    "chars": 1736,
    "preview": "import path from 'path';\nimport fs from 'fs-extra';\nimport glob from 'glob';\nimport less from 'less';\nimport { build } f"
  },
  {
    "path": "packages/arco-vue-scripts/src/scripts/build-material-library/index.ts",
    "chars": 646,
    "preview": "import fs from 'fs-extra';\nimport path from 'path';\nimport { build } from 'vite';\nimport config from '../../configs/vite"
  }
]

// ... and 2032 more files (download for full content)

About this extraction

This page contains the full source code of the arco-design/arco-design-vue GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2232 files (9.7 MB), approximately 2.7M tokens, and a symbol index with 2046 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!