├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── bug_report.yml
│ ├── bug_report.zh-CN.yml
│ ├── config.yml
│ ├── feature_request.yml
│ └── feature_request.zh-CN.yml
├── dependabot.yml
├── pull_request_template.md
└── workflows
│ └── node.js.yml
├── .gitignore
├── .husky
└── pre-commit
├── .npmrc
├── .pnpmfile.cjs
├── .prettierignore
├── .prettierrc
├── CHANGELOG.en-US.md
├── CHANGELOG.zh-CN.md
├── CONTRIBUTING.md
├── CONTRIBUTING.zh-CN.md
├── LICENSE
├── README.md
├── README.zh-CN.md
├── babel.config.js
├── build
├── loaders
│ ├── ComponentDemoTemplate.vue
│ ├── convert-md-to-demo.js
│ ├── convert-md-to-doc.js
│ ├── convert-vue-to-demo.js
│ ├── md-renderer.js
│ ├── naive-ui-demo-loader.js
│ ├── naive-ui-doc-loader.js
│ ├── project-path.js
│ └── test
│ │ ├── basic.test.md
│ │ ├── component.test.md
│ │ ├── test.md
│ │ ├── testDemoLoader.js
│ │ └── testMdLoader.js
├── utils
│ ├── get-demo-by-path.js
│ ├── handle-merge-code.js
│ ├── terse-cssr.js
│ └── tsToJs.js
├── vite-plugin-css-render.js
├── vite-plugin-demo.js
└── vite-plugin-index-tranform.js
├── demo
├── Caveat.md
├── Site.vue
├── SiteHeader.vue
├── SiteRoot.vue
├── assets
│ └── images
│ │ ├── naivelogo.png
│ │ └── naivelogo.svg
├── index.dev.js
├── index.prod.js
├── pages
│ ├── Layout.vue
│ ├── docs
│ │ ├── changelog
│ │ │ ├── enUS
│ │ │ │ └── index.vue
│ │ │ └── zhCN
│ │ │ │ └── index.vue
│ │ ├── common-issues
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── community
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── controlled-uncontrolled
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── customize-theme
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── experimental-features
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── fonts
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── i18n
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── import-on-demand
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── installation
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── introduction
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── jsx
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── nuxtjs
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── ssr
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── style-conflict
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── supported-platforms
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── theme
│ │ │ ├── enUS
│ │ │ │ ├── element.demo.md
│ │ │ │ ├── index.demo-entry.md
│ │ │ │ ├── provide-theme.demo.md
│ │ │ │ └── use-theme-vars.demo.md
│ │ │ └── zhCN
│ │ │ │ ├── element.demo.md
│ │ │ │ ├── index.demo-entry.md
│ │ │ │ ├── provide-theme.demo.md
│ │ │ │ └── use-theme-vars.demo.md
│ │ ├── umd
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── usage-sfc
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── vite-ssge
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ ├── vitepress
│ │ │ ├── enUS
│ │ │ │ └── index.md
│ │ │ └── zhCN
│ │ │ │ └── index.md
│ │ └── vue3
│ │ │ ├── enUS
│ │ │ └── index.vue
│ │ │ └── zhCN
│ │ │ └── index.vue
│ └── home
│ │ ├── Footer.vue
│ │ ├── Left.vue
│ │ ├── Right.vue
│ │ └── index.vue
├── routes
│ ├── router.js
│ └── routes.js
├── setup.js
├── store
│ ├── hljs.js
│ ├── index.js
│ └── menu-options.js
├── styles
│ ├── Metropolis-Bold.woff2
│ ├── Metropolis.css
│ └── demo.css
└── utils
│ ├── ComponentDemo.vue
│ ├── ComponentDemos.tsx
│ ├── CopyCodeButton.vue
│ ├── EditInCodeSandboxButton.vue
│ ├── EditOnGithubButton.vue
│ ├── EditOnGithubHeader.vue
│ ├── codesandbox.js
│ ├── composables.js
│ ├── github-url.js
│ └── route.js
├── design-notes
├── design-token-status.md
├── how-to-name-a-style-var.md
├── maintaining.md
├── think.md
└── todo.md
├── eslint.config.mjs
├── esm-test
└── index.spec.js
├── index.html
├── jest.config.js
├── package.json
├── playground
├── collect-vars.js
├── ssr
│ ├── app.js
│ ├── build.sh
│ ├── client.js
│ ├── pre-build.sh
│ ├── readme.md
│ ├── server.js
│ └── webpack.config.server.js
├── testAsyncValidator.js
├── testColor.js
└── uploadServer.js
├── postcss.config.js
├── rollup.config.js
├── scripts
├── gen-component-declaration.js
├── gen-css-vars-dts.js
├── gen-version.js
├── md-to-vue.js
├── post-build-site
│ └── post-build-site.sh
├── post-build
│ ├── complete-path.js
│ ├── gen-web-types.js
│ ├── index.js
│ └── terse-cssr.js
├── pre-build-site
│ └── pre-build-site.sh
├── pre-build
│ └── pre-cjs-build.js
├── release-changelog.mjs
└── utils
│ ├── collect-vars.js
│ ├── index.js
│ ├── loader.js
│ └── replace-define.js
├── src
├── _internal
│ ├── README.md
│ ├── clear
│ │ ├── index.ts
│ │ └── src
│ │ │ ├── Clear.tsx
│ │ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── close
│ │ ├── index.ts
│ │ └── src
│ │ │ ├── Close.tsx
│ │ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── fade-in-expand-transition
│ │ ├── index.ts
│ │ └── src
│ │ │ └── FadeInExpandTransition.ts
│ ├── focus-detector
│ │ ├── index.tsx
│ │ └── src
│ │ │ └── FocusDetector.tsx
│ ├── icon-switch-transition
│ │ ├── index.ts
│ │ └── src
│ │ │ └── IconSwitchTransition.tsx
│ ├── icon
│ │ ├── index.ts
│ │ └── src
│ │ │ ├── Icon.tsx
│ │ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── icons
│ │ ├── Add.tsx
│ │ ├── ArrowBack.tsx
│ │ ├── ArrowDown.tsx
│ │ ├── ArrowUp.tsx
│ │ ├── Attach.tsx
│ │ ├── Backward.tsx
│ │ ├── Cancel.tsx
│ │ ├── Checkmark.tsx
│ │ ├── ChevronDown.tsx
│ │ ├── ChevronDownFilled.tsx
│ │ ├── ChevronLeft.tsx
│ │ ├── ChevronRight.tsx
│ │ ├── Clear.tsx
│ │ ├── Close.tsx
│ │ ├── Date.tsx
│ │ ├── Download.tsx
│ │ ├── Empty.tsx
│ │ ├── Error.tsx
│ │ ├── Eye.tsx
│ │ ├── EyeOff.tsx
│ │ ├── FastBackward.tsx
│ │ ├── FastForward.tsx
│ │ ├── File.tsx
│ │ ├── Filter.tsx
│ │ ├── Forward.tsx
│ │ ├── Info.tsx
│ │ ├── More.tsx
│ │ ├── Photo.tsx
│ │ ├── Remove.tsx
│ │ ├── ResizeSmall.tsx
│ │ ├── Retry.tsx
│ │ ├── RotateClockwise.tsx
│ │ ├── RotateCounterclockwise.tsx
│ │ ├── Search.tsx
│ │ ├── Success.tsx
│ │ ├── Switcher.tsx
│ │ ├── Time.tsx
│ │ ├── To.tsx
│ │ ├── Trash.tsx
│ │ ├── Warning.tsx
│ │ ├── ZoomIn.tsx
│ │ ├── ZoomOut.tsx
│ │ ├── index.ts
│ │ └── replaceable.tsx
│ ├── index.ts
│ ├── loading
│ │ ├── index.ts
│ │ └── src
│ │ │ ├── Loading.tsx
│ │ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── menu-mask
│ │ ├── index.ts
│ │ └── src
│ │ │ ├── MenuMask.tsx
│ │ │ ├── interface.ts
│ │ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── scrollbar
│ │ ├── index.ts
│ │ ├── src
│ │ │ ├── Scrollbar.tsx
│ │ │ └── styles
│ │ │ │ ├── index.cssr.ts
│ │ │ │ └── rtl.cssr.ts
│ │ ├── styles
│ │ │ ├── common.ts
│ │ │ ├── dark.ts
│ │ │ ├── index.ts
│ │ │ ├── light.ts
│ │ │ └── rtl.ts
│ │ └── tests
│ │ │ ├── Scrollbar.spec.ts
│ │ │ └── server.spec.tsx
│ ├── select-menu
│ │ ├── index.ts
│ │ ├── src
│ │ │ ├── SelectGroupHeader.tsx
│ │ │ ├── SelectMenu.tsx
│ │ │ ├── SelectOption.tsx
│ │ │ ├── interface.ts
│ │ │ └── styles
│ │ │ │ ├── index.cssr.ts
│ │ │ │ └── rtl.cssr.ts
│ │ └── styles
│ │ │ ├── _common.ts
│ │ │ ├── dark.ts
│ │ │ ├── index.ts
│ │ │ ├── light.ts
│ │ │ └── rtl.ts
│ ├── selection
│ │ ├── index.ts
│ │ ├── src
│ │ │ ├── Selection.tsx
│ │ │ ├── interface.ts
│ │ │ └── styles
│ │ │ │ ├── index.cssr.ts
│ │ │ │ └── rtl.cssr.ts
│ │ └── styles
│ │ │ ├── _common.ts
│ │ │ ├── dark.ts
│ │ │ ├── index.ts
│ │ │ ├── light.ts
│ │ │ └── rtl.ts
│ ├── slot-machine
│ │ ├── index.ts
│ │ └── src
│ │ │ ├── SlotMachine.tsx
│ │ │ ├── SlotMachineNumber.tsx
│ │ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── suffix
│ │ ├── index.ts
│ │ └── src
│ │ │ └── Suffix.tsx
│ └── wave
│ │ ├── index.ts
│ │ └── src
│ │ ├── Wave.tsx
│ │ └── styles
│ │ └── index.cssr.ts
├── _mixins
│ ├── common.ts
│ ├── index.ts
│ ├── use-config.ts
│ ├── use-css-vars-class.ts
│ ├── use-form-item.ts
│ ├── use-hljs.ts
│ ├── use-locale.ts
│ ├── use-rtl.ts
│ ├── use-style.ts
│ └── use-theme.ts
├── _styles
│ ├── common
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ ├── global
│ │ └── index.cssr.ts
│ └── transitions
│ │ ├── fade-down.cssr.ts
│ │ ├── fade-in-height-expand.cssr.ts
│ │ ├── fade-in-scale-up.cssr.ts
│ │ ├── fade-in-width-expand.cssr.ts
│ │ ├── fade-in.cssr.ts
│ │ ├── fade-up-width-expand.cssr.ts
│ │ ├── icon-switch.cssr.ts
│ │ ├── slide-in-from-bottom.ts
│ │ ├── slide-in-from-left.ts
│ │ ├── slide-in-from-right.ts
│ │ └── slide-in-from-top.ts
├── _utils
│ ├── color
│ │ └── index.ts
│ ├── composable
│ │ ├── index.ts
│ │ ├── use-adjusted-to.ts
│ │ ├── use-browser-location.ts
│ │ ├── use-collection.ts
│ │ ├── use-deferred-true.ts
│ │ ├── use-houdini.ts
│ │ ├── use-is-composing.ts
│ │ ├── use-lock-html-scroll.ts
│ │ ├── use-reactivated.ts
│ │ └── use-resize.ts
│ ├── css
│ │ ├── color-to-class.ts
│ │ ├── format-length.ts
│ │ ├── index.ts
│ │ └── rtl-inset.ts
│ ├── cssr
│ │ └── index.ts
│ ├── dom
│ │ ├── download.ts
│ │ ├── index.ts
│ │ └── is-document.ts
│ ├── env
│ │ ├── browser.ts
│ │ ├── is-browser.ts
│ │ ├── is-jsdom.ts
│ │ └── is-native-lazy-load.ts
│ ├── event
│ │ └── index.ts
│ ├── index.ts
│ ├── naive
│ │ ├── attribute.ts
│ │ ├── extract-public-props.ts
│ │ ├── index.ts
│ │ ├── mutable.ts
│ │ ├── prop.ts
│ │ └── warn.ts
│ ├── tests
│ │ └── index.spec.ts
│ └── vue
│ │ ├── call.ts
│ │ ├── create-data-key.ts
│ │ ├── create-injection-key.ts
│ │ ├── create-ref-setter.ts
│ │ ├── flatten.ts
│ │ ├── get-first-slot-vnode.ts
│ │ ├── get-slot.ts
│ │ ├── get-v-node-children.ts
│ │ ├── index.ts
│ │ ├── is-node-v-show-false.ts
│ │ ├── keep.ts
│ │ ├── keysOf.ts
│ │ ├── merge-handlers.ts
│ │ ├── omit.ts
│ │ ├── render.ts
│ │ ├── resolve-slot.ts
│ │ └── wrapper.tsx
├── affix
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── position.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── position.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Affix.tsx
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── utils.ts
│ └── tests
│ │ ├── Affix.spec.ts
│ │ └── server.spec.tsx
├── alert
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── bordered.demo.vue
│ │ │ ├── closable.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── marquee.demo.vue
│ │ │ └── no-icon.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── bordered.demo.vue
│ │ │ ├── closable.demo.vue
│ │ │ ├── empty-debug.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── marquee.demo.vue
│ │ │ ├── no-icon.demo.vue
│ │ │ └── rtl-debug.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Alert.tsx
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Alert.spec.ts
│ │ ├── __snapshots__
│ │ └── Alert.spec.ts.snap
│ │ └── server.spec.tsx
├── anchor
│ ├── demos
│ │ ├── enUS
│ │ │ ├── affix.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── ignore-gap.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── scrollto.demo.vue
│ │ └── zhCN
│ │ │ ├── affix.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── ignore-gap.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── max-height-debug.demo.vue
│ │ │ └── scrollto.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── AnchorAdapter.tsx
│ │ ├── BaseAnchor.tsx
│ │ ├── Link.tsx
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Anchor.spec.ts
│ │ └── server.spec.tsx
├── auto-complete
│ ├── demos
│ │ ├── enUS
│ │ │ ├── after-select.demo.vue
│ │ │ ├── append.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom-input.demo.vue
│ │ │ ├── customized-rendering.demo.vue
│ │ │ ├── group.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── show-options-by-value.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── status.demo.vue
│ │ └── zhCN
│ │ │ ├── after-select.demo.vue
│ │ │ ├── append.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom-input.demo.vue
│ │ │ ├── customized-rendering.demo.vue
│ │ │ ├── group.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── show-options-by-value.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── status.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── AutoComplete.tsx
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── AutoComplete.spec.ts
│ │ ├── __snapshots__
│ │ └── AutoComplete.spec.ts.snap
│ │ └── server.spec.tsx
├── avatar-group
│ ├── index.ts
│ ├── src
│ │ ├── AvatarGroup.tsx
│ │ ├── interface.ts
│ │ └── styles
│ │ │ ├── avatar-group-rtl.cssr.ts
│ │ │ └── avatar-group.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Avatar.spec.tsx
│ │ └── server.spec.tsx
├── avatar
│ ├── demos
│ │ ├── enUS
│ │ │ ├── badge.demo.vue
│ │ │ ├── color.demo.vue
│ │ │ ├── fallback.demo.vue
│ │ │ ├── group.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── lazy.demo.vue
│ │ │ ├── name-size.demo.vue
│ │ │ ├── shape.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── v-show-debug.demo.vue
│ │ └── zhCN
│ │ │ ├── badge.demo.vue
│ │ │ ├── color.demo.vue
│ │ │ ├── error-placeholder-debug.demo.vue
│ │ │ ├── fallback.demo.vue
│ │ │ ├── group.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── lazy.demo.vue
│ │ │ ├── name-size.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── shape.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── v-show-debug.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Avatar.tsx
│ │ ├── context.ts
│ │ ├── interface.ts
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Avatar.spec.tsx
│ │ ├── __snapshots__
│ │ └── Avatar.spec.tsx.snap
│ │ └── server.spec.tsx
├── back-top
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── change-position.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── target-container-selector.demo.vue
│ │ │ └── visibility-height.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── change-position.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── target-container-selector.demo.vue
│ │ │ └── visibility-height.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── BackTop.tsx
│ │ ├── BackTopIcon.tsx
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── BackTop.spec.ts
│ │ └── server.spec.tsx
├── badge
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── color.demo.vue
│ │ │ ├── custom-content.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── manual.demo.vue
│ │ │ ├── offset.demo.vue
│ │ │ ├── overflow.demo.vue
│ │ │ ├── processing.demo.vue
│ │ │ ├── raw.demo.vue
│ │ │ ├── show-zero.demo.vue
│ │ │ └── type.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── color.demo.vue
│ │ │ ├── custom-content.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── manual.demo.vue
│ │ │ ├── offset.demo.vue
│ │ │ ├── overflow.demo.vue
│ │ │ ├── processing.demo.vue
│ │ │ ├── raw.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── show-zero.demo.vue
│ │ │ └── type.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Badge.tsx
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Badge.spec.ts
│ │ └── server.spec.tsx
├── breadcrumb
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── separator-per-item.demo.vue
│ │ │ └── separator.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── separator-per-item.demo.vue
│ │ │ └── separator.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Breadcrumb.tsx
│ │ ├── BreadcrumbItem.tsx
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Breadcrumb.spec.ts
│ │ └── server.spec.tsx
├── button-group
│ ├── index.ts
│ ├── src
│ │ ├── ButtonGroup.tsx
│ │ ├── context.ts
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── ButtonGroup.spec.tsx
│ │ └── server.spec.tsx
├── button
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── color.demo.vue
│ │ │ ├── dashed.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── events.demo.vue
│ │ │ ├── ghost.demo.vue
│ │ │ ├── group.demo.vue
│ │ │ ├── icon-button.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── loading.demo.vue
│ │ │ ├── popover.demo.vue
│ │ │ ├── quaternary.demo.vue
│ │ │ ├── secondary.demo.vue
│ │ │ ├── shape.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── tag.demo.vue
│ │ │ ├── tertiary.demo.vue
│ │ │ └── text.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── color.demo.vue
│ │ │ ├── dashed.demo.vue
│ │ │ ├── debug.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── events.demo.vue
│ │ │ ├── ghost.demo.vue
│ │ │ ├── group.demo.vue
│ │ │ ├── icon-button.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── loading.demo.vue
│ │ │ ├── popover.demo.vue
│ │ │ ├── quaternary.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── secondary.demo.vue
│ │ │ ├── shape.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── tag.demo.vue
│ │ │ ├── tertiary.demo.vue
│ │ │ └── text.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Button.tsx
│ │ ├── interface.ts
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Button.spec.tsx
│ │ ├── __snapshots__
│ │ └── Button.spec.tsx.snap
│ │ └── server.spec.tsx
├── calendar
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ └── index.demo-entry.md
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ └── index.demo-entry.md
│ ├── index.ts
│ ├── src
│ │ ├── Calendar.tsx
│ │ ├── interface.ts
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Calendar.spec.tsx
│ │ └── server.spec.tsx
├── card
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── border.demo.vue
│ │ │ ├── closable.demo.vue
│ │ │ ├── cover.demo.vue
│ │ │ ├── custom-style.demo.vue
│ │ │ ├── embedded.demo.vue
│ │ │ ├── hoverable.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── loading.demo.vue
│ │ │ ├── no-title.demo.vue
│ │ │ ├── segment.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── slots.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── border.demo.vue
│ │ │ ├── closable.demo.vue
│ │ │ ├── cover.demo.vue
│ │ │ ├── custom-style.demo.vue
│ │ │ ├── embedded-debug.demo.vue
│ │ │ ├── embedded.demo.vue
│ │ │ ├── hoverable.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── loading.demo.vue
│ │ │ ├── no-title.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── segment.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── slots.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Card.tsx
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Card.spec.ts
│ │ ├── __snapshots__
│ │ └── Card.spec.ts.snap
│ │ └── server.spec.tsx
├── carousel
│ ├── demos
│ │ ├── enUS
│ │ │ ├── arrow.demo.vue
│ │ │ ├── autoplay.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── centered.demo.vue
│ │ │ ├── custom-arrow-and-dots.demo.vue
│ │ │ ├── custom-card.demo.vue
│ │ │ ├── custom-dots.demo.vue
│ │ │ ├── dots.demo.vue
│ │ │ ├── effect.demo.vue
│ │ │ ├── hover.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── keyboard.demo.vue
│ │ │ ├── mousewheel.demo.vue
│ │ │ ├── simulate-drag.demo.vue
│ │ │ ├── slides-per-view-auto.demo.vue
│ │ │ ├── slides-per-view.demo.vue
│ │ │ ├── space-between.demo.vue
│ │ │ ├── transition-name.demo.vue
│ │ │ └── vertical.demo.vue
│ │ └── zhCN
│ │ │ ├── arrow.demo.vue
│ │ │ ├── autoplay.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── centered.demo.vue
│ │ │ ├── custom-arrow-and-dots.demo.vue
│ │ │ ├── custom-card.demo.vue
│ │ │ ├── dots.demo.vue
│ │ │ ├── effect.demo.vue
│ │ │ ├── hover.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── keyboard.demo.vue
│ │ │ ├── mousewheel.demo.vue
│ │ │ ├── simulate-drag.demo.vue
│ │ │ ├── slides-per-view-auto.demo.vue
│ │ │ ├── slides-per-view.demo.vue
│ │ │ ├── space-between.demo.vue
│ │ │ ├── transition-name.demo.vue
│ │ │ └── vertical.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Carousel.tsx
│ │ ├── CarouselArrow.tsx
│ │ ├── CarouselContext.ts
│ │ ├── CarouselDots.tsx
│ │ ├── CarouselItem.tsx
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── utils
│ │ │ ├── duplicatedLogic.ts
│ │ │ ├── event.ts
│ │ │ └── index.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Carousel.spec.tsx
│ │ └── server.spec.tsx
├── cascader
│ ├── demos
│ │ ├── enUS
│ │ │ ├── action.demo.vue
│ │ │ ├── check-strategy.demo.vue
│ │ │ ├── custom-field.demo.vue
│ │ │ ├── custom-render.demo.vue
│ │ │ ├── focus.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── multiple-lazy.demo.vue
│ │ │ ├── multiple.demo.vue
│ │ │ ├── single-lazy.demo.vue
│ │ │ ├── single.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── status.demo.vue
│ │ │ └── virtual.demo.vue
│ │ └── zhCN
│ │ │ ├── action.demo.vue
│ │ │ ├── check-strategy.demo.vue
│ │ │ ├── custom-field.demo.vue
│ │ │ ├── custom-render.demo.vue
│ │ │ ├── default-value-debug.demo.vue
│ │ │ ├── focus.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── multiple-lazy.demo.vue
│ │ │ ├── multiple.demo.vue
│ │ │ ├── single-lazy.demo.vue
│ │ │ ├── single.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── status.demo.vue
│ │ │ └── virtual.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Cascader.tsx
│ │ ├── CascaderMenu.tsx
│ │ ├── CascaderOption.tsx
│ │ ├── CascaderSelectMenu.tsx
│ │ ├── CascaderSubmenu.tsx
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Cascader.spec.ts
│ │ ├── __snapshots__
│ │ └── Cascader.spec.ts.snap
│ │ └── server.spec.tsx
├── checkbox
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── controlled.demo.vue
│ │ │ ├── customize-value.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── focus.demo.vue
│ │ │ ├── grid.demo.vue
│ │ │ ├── group.demo.vue
│ │ │ ├── indeterminate.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── size.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── controlled.demo.vue
│ │ │ ├── customize-value.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── focus.demo.vue
│ │ │ ├── grid.demo.vue
│ │ │ ├── group.demo.vue
│ │ │ ├── indeterminate.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── rtl-debug.demo.vue
│ │ │ └── size.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── CheckMark.tsx
│ │ ├── Checkbox.tsx
│ │ ├── CheckboxGroup.tsx
│ │ ├── LineMark.tsx
│ │ ├── interface.ts
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Checkbox.spec.tsx
│ │ ├── __snapshots__
│ │ └── Checkbox.spec.tsx.snap
│ │ └── server.spec.tsx
├── code
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── inline.demo.vue
│ │ │ ├── line-numbers.demo.vue
│ │ │ └── softwrap.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── inline.demo.vue
│ │ │ ├── line-numbers.demo.vue
│ │ │ ├── loop-debug.demo.vue
│ │ │ └── softwrap.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Code.tsx
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Code.spec.tsx
│ │ └── server.spec.tsx
├── collapse-transition
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ └── index.demo-entry.md
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── rtl-debug.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── CollapseTransition.tsx
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── CollapseTransition.spec.tsx
│ │ └── server.spec.tsx
├── collapse
│ ├── demos
│ │ ├── enUS
│ │ │ ├── accordion.demo.vue
│ │ │ ├── arrow-placement.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── customize-icon.demo.vue
│ │ │ ├── default-expanded.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── display-directive.demo.vue
│ │ │ ├── header-extra.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── item-header-click.demo.vue
│ │ │ ├── nested.demo.vue
│ │ │ └── trigger-areas.demo.vue
│ │ └── zhCN
│ │ │ ├── accordion.demo.vue
│ │ │ ├── arrow-placement.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── customize-icon.demo.vue
│ │ │ ├── default-expanded.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── display-directive.demo.vue
│ │ │ ├── header-extra.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── item-header-click.demo.vue
│ │ │ ├── nested.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ └── trigger-areas.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Collapse.tsx
│ │ ├── CollapseItem.tsx
│ │ ├── CollapseItemContent.tsx
│ │ ├── interface.ts
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Collapse.spec.tsx
│ │ └── server.spec.tsx
├── color-picker
│ ├── demos
│ │ ├── enUS
│ │ │ ├── actions.demo.vue
│ │ │ ├── alpha.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── form.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── modes.demo.vue
│ │ │ ├── native.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── swatches.demo.vue
│ │ └── zhCN
│ │ │ ├── actions.demo.vue
│ │ │ ├── alpha.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── close-debug.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── form.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── modes.demo.vue
│ │ │ ├── native.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── swatches.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── AlphaSlider.tsx
│ │ ├── ColorInput.tsx
│ │ ├── ColorInputUnit.tsx
│ │ ├── ColorPicker.tsx
│ │ ├── ColorPickerSwatches.tsx
│ │ ├── ColorPickerTrigger.tsx
│ │ ├── ColorPreview.tsx
│ │ ├── HueSlider.tsx
│ │ ├── Pallete.tsx
│ │ ├── context.ts
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── ColorPicker.spec.tsx
│ │ └── server.spec.tsx
├── components.ts
├── composables
│ ├── index.ts
│ └── use-theme-vars.ts
├── config-consumer
│ └── demos
│ │ ├── enUS
│ │ └── index.demo-entry.md
│ │ └── zhCN
│ │ └── index.demo-entry.md
├── config-provider
│ ├── demos
│ │ ├── enUS
│ │ │ ├── index.demo-entry.md
│ │ │ ├── inherit-theme.demo.vue
│ │ │ ├── inline-theme-disabled.demo.vue
│ │ │ ├── language.demo.vue
│ │ │ ├── namespace.demo.vue
│ │ │ ├── os-theme.demo.vue
│ │ │ ├── theme.demo.vue
│ │ │ └── transparent.demo.vue
│ │ └── zhCN
│ │ │ ├── index.demo-entry.md
│ │ │ ├── inherit-theme.demo.vue
│ │ │ ├── inline-theme-disabled.demo.vue
│ │ │ ├── language.demo.vue
│ │ │ ├── namespace.demo.vue
│ │ │ ├── os-theme.demo.vue
│ │ │ ├── overrides-inherit-debug.demo.vue
│ │ │ ├── theme.demo.vue
│ │ │ └── transparent.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── ConfigProvider.ts
│ │ ├── config.ts
│ │ ├── context.ts
│ │ ├── interface.ts
│ │ ├── internal-interface.ts
│ │ └── katex.ts
│ └── tests
│ │ ├── ConfigProvider.spec.ts
│ │ └── server.spec.tsx
├── countdown
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── precision.demo.vue
│ │ │ ├── render.demo.vue
│ │ │ └── reset.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── finish-debug.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── precision.demo.vue
│ │ │ ├── render.demo.vue
│ │ │ └── reset.demo.vue
│ ├── index.ts
│ ├── src
│ │ └── Countdown.tsx
│ └── tests
│ │ ├── Countdown.spec.ts
│ │ └── server.spec.tsx
├── create.ts
├── data-table
│ ├── demos
│ │ ├── enUS
│ │ │ ├── ajax-usage.demo.md
│ │ │ ├── async-expand.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── border.demo.vue
│ │ │ ├── column-draggable.demo.vue
│ │ │ ├── context-menu.demo.vue
│ │ │ ├── controlled-filter.demo.vue
│ │ │ ├── controlled-multiple-sorter.demo.md
│ │ │ ├── controlled-page.demo.vue
│ │ │ ├── controlled-sorter.demo.vue
│ │ │ ├── custom-filter-menu.demo.vue
│ │ │ ├── custom-select.demo.vue
│ │ │ ├── custom-style.demo.vue
│ │ │ ├── ellipsis-tooltip.demo.vue
│ │ │ ├── ellipsis.demo.vue
│ │ │ ├── empty.demo.vue
│ │ │ ├── expand.demo.vue
│ │ │ ├── export-csv.demo.vue
│ │ │ ├── filter-and-sorter.demo.md
│ │ │ ├── fixed-header-column.demo.vue
│ │ │ ├── fixed-header.demo.vue
│ │ │ ├── flex-height.demo.vue
│ │ │ ├── group-header.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── merge-cell.demo.md
│ │ │ ├── multiple-sorter.demo.md
│ │ │ ├── pagination-behavior-on-filter.demo.vue
│ │ │ ├── render-cell.demo.vue
│ │ │ ├── render-header.demo.md
│ │ │ ├── row-props.demo.vue
│ │ │ ├── select-single.demo.vue
│ │ │ ├── select.demo.vue
│ │ │ ├── simple-editable.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── striped.demo.vue
│ │ │ ├── summary.demo.vue
│ │ │ ├── switchable-editable.demo.md
│ │ │ ├── tree.demo.vue
│ │ │ ├── virtual-x.demo.vue
│ │ │ └── virtual.demo.vue
│ │ └── zhCN
│ │ │ ├── ajax-usage.demo.md
│ │ │ ├── async-expand.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── border.demo.vue
│ │ │ ├── column-draggable.demo.vue
│ │ │ ├── context-menu.demo.vue
│ │ │ ├── controlled-filter.demo.vue
│ │ │ ├── controlled-multiple-sorter.demo.md
│ │ │ ├── controlled-page.demo.vue
│ │ │ ├── controlled-sorter.demo.vue
│ │ │ ├── custom-expand-icon-debug.demo.vue
│ │ │ ├── custom-filter-menu.demo.vue
│ │ │ ├── custom-select.demo.vue
│ │ │ ├── custom-style.demo.vue
│ │ │ ├── debug.demo.vue
│ │ │ ├── ellipsis-debug.demo.vue
│ │ │ ├── ellipsis-tooltip.demo.vue
│ │ │ ├── ellipsis.demo.vue
│ │ │ ├── empty.demo.vue
│ │ │ ├── expand.demo.vue
│ │ │ ├── expandable-debug.demo.vue
│ │ │ ├── export-csv.demo.vue
│ │ │ ├── filter-and-sorter.demo.md
│ │ │ ├── filter-and-sortor.demo.md
│ │ │ ├── fixed-column-debug.demo.md
│ │ │ ├── fixed-column2-debug.demo.md
│ │ │ ├── fixed-header-column.demo.vue
│ │ │ ├── fixed-header.demo.vue
│ │ │ ├── flex-height.demo.vue
│ │ │ ├── group-header.demo.vue
│ │ │ ├── height-debug.demo.md
│ │ │ ├── index.demo-entry.md
│ │ │ ├── keep-alive-debug.demo.vue
│ │ │ ├── merge-cell.demo.md
│ │ │ ├── multiple-sorter.demo.md
│ │ │ ├── pagination-behavior-on-filter.demo.vue
│ │ │ ├── render-cell.demo.vue
│ │ │ ├── render-header.demo.md
│ │ │ ├── row-props.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── scroll-debug.demo.md
│ │ │ ├── select-single.demo.vue
│ │ │ ├── select.demo.vue
│ │ │ ├── simple-editable.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── striped.demo.vue
│ │ │ ├── summary-debug.demo.vue
│ │ │ ├── summary.demo.vue
│ │ │ ├── switchable-editable.demo.md
│ │ │ ├── tree.demo.vue
│ │ │ ├── virtual-x.demo.vue
│ │ │ └── virtual.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── DataTable.tsx
│ │ ├── HeaderButton
│ │ │ ├── FilterButton.tsx
│ │ │ ├── FilterMenu.tsx
│ │ │ ├── RenderFilter.ts
│ │ │ ├── RenderSorter.ts
│ │ │ ├── ResizeButton.tsx
│ │ │ └── SortButton.tsx
│ │ ├── MainTable.tsx
│ │ ├── TableParts
│ │ │ ├── Body.tsx
│ │ │ ├── BodyCheckbox.tsx
│ │ │ ├── BodyRadio.tsx
│ │ │ ├── Cell.tsx
│ │ │ ├── ExpandTrigger.tsx
│ │ │ ├── Header.tsx
│ │ │ └── SelectionMenu.tsx
│ │ ├── interface.ts
│ │ ├── publicTypes.ts
│ │ ├── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ │ ├── use-check.ts
│ │ ├── use-expand.ts
│ │ ├── use-group-header.ts
│ │ ├── use-resizable.ts
│ │ ├── use-scroll.ts
│ │ ├── use-sorter.ts
│ │ ├── use-table-data.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── DataTable.spec.tsx
│ │ ├── __snapshots__
│ │ └── DataTable.spec.tsx.snap
│ │ └── server.spec.tsx
├── date-picker
│ ├── demos
│ │ ├── enUS
│ │ │ ├── actions.demo.vue
│ │ │ ├── date.demo.vue
│ │ │ ├── daterange.demo.vue
│ │ │ ├── datetime.demo.vue
│ │ │ ├── datetimeformat.demo.vue
│ │ │ ├── datetimerange.demo.vue
│ │ │ ├── default-time.demo.vue
│ │ │ ├── disabled-time.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── events.demo.vue
│ │ │ ├── focus.demo.vue
│ │ │ ├── footerslot.demo.vue
│ │ │ ├── format.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── month.demo.vue
│ │ │ ├── monthrange.demo.vue
│ │ │ ├── panel.demo.vue
│ │ │ ├── quarter.demo.vue
│ │ │ ├── quarterrange.demo.vue
│ │ │ ├── shortcuts.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── status.demo.vue
│ │ │ ├── update-on-close.demo.vue
│ │ │ ├── week.demo.vue
│ │ │ ├── year.demo.vue
│ │ │ └── yearrange.demo.vue
│ │ └── zhCN
│ │ │ ├── actions.demo.vue
│ │ │ ├── date.demo.vue
│ │ │ ├── daterange.demo.vue
│ │ │ ├── datetime.demo.vue
│ │ │ ├── datetimeformat.demo.vue
│ │ │ ├── datetimerange.demo.vue
│ │ │ ├── default-time.demo.vue
│ │ │ ├── disabled-time.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── events.demo.vue
│ │ │ ├── focus.demo.vue
│ │ │ ├── footerslot.demo.vue
│ │ │ ├── form-debug.demo.vue
│ │ │ ├── format.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── month.demo.vue
│ │ │ ├── monthrange.demo.vue
│ │ │ ├── panel-debug.demo.vue
│ │ │ ├── panel.demo.vue
│ │ │ ├── quarter.demo.vue
│ │ │ ├── quarterrange.demo.vue
│ │ │ ├── shortcuts.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── status.demo.vue
│ │ │ ├── update-on-close.demo.vue
│ │ │ ├── week.demo.vue
│ │ │ ├── year.demo.vue
│ │ │ └── yearrange.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── DatePicker.tsx
│ │ ├── config.ts
│ │ ├── interface.ts
│ │ ├── panel
│ │ │ ├── date.tsx
│ │ │ ├── daterange.tsx
│ │ │ ├── datetime.tsx
│ │ │ ├── datetimerange.tsx
│ │ │ ├── month.tsx
│ │ │ ├── monthrange.tsx
│ │ │ ├── panelHeader.tsx
│ │ │ ├── use-calendar.ts
│ │ │ ├── use-dual-calendar.ts
│ │ │ └── use-panel-common.ts
│ │ ├── props.ts
│ │ ├── public-types.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ ├── utils.ts
│ │ └── validation-utils.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── DatePicker.spec.tsx
│ │ ├── __snapshots__
│ │ └── DatePicker.spec.tsx.snap
│ │ └── server.spec.tsx
├── descriptions
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── bordered.demo.vue
│ │ │ ├── columns.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── placement.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── span.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── bordered.demo.vue
│ │ │ ├── columns.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── placement.demo.vue
│ │ │ ├── single-line-debug.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── span.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Descriptions.tsx
│ │ ├── DescriptionsItem.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Descriptions.spec.ts
│ │ └── server.spec.tsx
├── dialog
│ ├── demos
│ │ ├── enUS
│ │ │ ├── action.demo.vue
│ │ │ ├── async.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── mask.demo.vue
│ │ │ ├── use-component.demo.vue
│ │ │ └── use-dialog-reactive-list.demo.vue
│ │ └── zhCN
│ │ │ ├── action.demo.vue
│ │ │ ├── async.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── focus-debug.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── mask.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── use-component.demo.vue
│ │ │ └── use-dialog-reactive-list.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Dialog.tsx
│ │ ├── DialogEnvironment.tsx
│ │ ├── DialogProvider.ts
│ │ ├── composables.ts
│ │ ├── context.ts
│ │ ├── dialogProps.ts
│ │ ├── interface.ts
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Dialog.spec.tsx
│ │ └── server.spec.tsx
├── discrete
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ └── index.demo-entry.md
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ └── index.demo-entry.md
│ ├── index.ts
│ └── src
│ │ ├── InjectionExtractor.tsx
│ │ ├── discrete.ts
│ │ ├── discreteApp.ts
│ │ └── interface.ts
├── divider
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── content.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── vertical.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── content.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── vertical.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Divider.tsx
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Divider.spec.ts
│ │ └── server.spec.tsx
├── drawer
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── closable.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── multiple.demo.vue
│ │ │ ├── resizable.demo.vue
│ │ │ ├── scroll.demo.vue
│ │ │ ├── slot.demo.vue
│ │ │ └── target.demo.vue
│ │ └── zhCN
│ │ │ ├── a11y-debug.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── closable.demo.vue
│ │ │ ├── custom-style-debug.demo.vue
│ │ │ ├── dark-1-debug.demo.vue
│ │ │ ├── dark-2-debug.demo.vue
│ │ │ ├── dark-3-debug.demo.vue
│ │ │ ├── dark-4-debug.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── multiple.demo.vue
│ │ │ ├── resizable.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── scroll.demo.vue
│ │ │ ├── slot.demo.vue
│ │ │ └── target.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Drawer.tsx
│ │ ├── DrawerBodyWrapper.tsx
│ │ ├── DrawerContent.tsx
│ │ ├── interface.ts
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Drawer.spec.tsx
│ │ └── server.spec.tsx
├── dropdown
│ ├── demos
│ │ ├── enUS
│ │ │ ├── arrow.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── batch-render.demo.vue
│ │ │ ├── cascade.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── manual-position.demo.vue
│ │ │ ├── option-props.demo.vue
│ │ │ ├── placement.demo.vue
│ │ │ ├── render-option.demo.vue
│ │ │ ├── render.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── trigger.demo.vue
│ │ └── zhCN
│ │ │ ├── arrow.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── batch-render.demo.vue
│ │ │ ├── cascade.demo.vue
│ │ │ ├── group-debug.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── manual-position.demo.vue
│ │ │ ├── option-props.demo.vue
│ │ │ ├── placement.demo.vue
│ │ │ ├── render-option.demo.vue
│ │ │ ├── render.demo.vue
│ │ │ ├── scrollable-debug.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── trigger.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Dropdown.tsx
│ │ ├── DropdownDivider.tsx
│ │ ├── DropdownGroup.tsx
│ │ ├── DropdownGroupHeader.tsx
│ │ ├── DropdownMenu.tsx
│ │ ├── DropdownOption.tsx
│ │ ├── DropdownRenderOption.tsx
│ │ ├── context.ts
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Dropdown.spec.tsx
│ │ ├── __snapshots__
│ │ └── Dropdown.spec.tsx.snap
│ │ └── server.spec.tsx
├── dynamic-input
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom-action.demo.vue
│ │ │ ├── custom.demo.vue
│ │ │ ├── form.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── move.demo.vue
│ │ │ └── pair.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── create-debug.demo.vue
│ │ │ ├── custom-action.demo.vue
│ │ │ ├── custom.demo.vue
│ │ │ ├── form.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── move.demo.vue
│ │ │ ├── pair.demo.vue
│ │ │ └── rtl-debug.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── DynamicInput.tsx
│ │ ├── InputPreset.tsx
│ │ ├── PairPreset.tsx
│ │ ├── interface.ts
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── DynamicInput.spec.ts
│ │ └── server.spec.tsx
├── dynamic-tags
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── form.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── max.demo.vue
│ │ │ ├── on-create.demo.vue
│ │ │ ├── option-format.demo.vue
│ │ │ ├── render-tag.demo.vue
│ │ │ └── slot.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── form.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── max.demo.vue
│ │ │ ├── on-create.demo.vue
│ │ │ ├── option-format.demo.vue
│ │ │ ├── render-tag.demo.vue
│ │ │ └── slot.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── DynamicTags.tsx
│ │ ├── interface.ts
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── DynamicTags.spec.ts
│ │ ├── __snapshots__
│ │ └── DynamicTags.spec.ts.snap
│ │ └── server.spec.tsx
├── element
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ └── index.demo-entry.md
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ └── index.demo-entry.md
│ ├── index.ts
│ ├── src
│ │ └── Element.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Element.spec.ts
│ │ └── server.spec.tsx
├── ellipsis
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom-tooltip.demo.vue
│ │ │ ├── expand-trigger.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── line-clamp.demo.vue
│ │ │ └── performant-ellipsis.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom-tooltip.demo.vue
│ │ │ ├── dynamic-debug.demo.vue
│ │ │ ├── expand-trigger.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── line-clamp.demo.vue
│ │ │ ├── performant-ellipsis.demo.vue
│ │ │ └── width-debug.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Ellipsis.tsx
│ │ ├── PerformantEllipsis.tsx
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Ellipsis.spec.tsx
│ │ └── server.spec.tsx
├── empty
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── locale-debug.demo.vue
│ │ │ └── size.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── locale-debug.demo.vue
│ │ │ └── size.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Empty.tsx
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Empty.spec.ts
│ │ ├── __snapshots__
│ │ └── Empty.spec.ts.snap
│ │ └── server.spec.tsx
├── equation
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── katex-options.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── katex-options.demo.vue
│ ├── index.ts
│ ├── src
│ │ └── Equation.tsx
│ └── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
├── flex
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── center.demo.vue
│ │ │ ├── from-end.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── space-around.demo.vue
│ │ │ ├── space-between.demo.vue
│ │ │ └── vertical.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── center.demo.vue
│ │ │ ├── from-end.demo.vue
│ │ │ ├── grid-debug.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── space-around.demo.vue
│ │ │ ├── space-between.demo.vue
│ │ │ └── vertical.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Flex.tsx
│ │ ├── styles
│ │ │ └── rtl.cssr.ts
│ │ └── type.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Flex.spec.tsx
│ │ ├── __snapshots__
│ │ └── Flex.spec.tsx.snap
│ │ └── server.spec.tsx
├── float-button-group
│ ├── index.ts
│ ├── src
│ │ ├── FloatButtonGroup.tsx
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── NFloatButtonGroup.spec.tsx
│ │ ├── __snapshots__
│ │ └── NFloatButtonGroup.spec.tsx.snap
│ │ └── server.spec.tsx
├── float-button
│ ├── demos
│ │ ├── enUS
│ │ │ ├── badge.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom.demo.vue
│ │ │ ├── group.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── menu.demo.vue
│ │ │ └── tooltip.demo.vue
│ │ └── zhCN
│ │ │ ├── badge.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom.demo.vue
│ │ │ ├── group.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── menu.demo.vue
│ │ │ └── tooltip.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── FloatButton.tsx
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── FloatButton.spec.tsx
│ │ ├── __snapshots__
│ │ └── FloatButton.spec.tsx.snap
│ │ └── server.spec.tsx
├── form
│ ├── demos
│ │ ├── enUS
│ │ │ ├── abnormal-warning.demo.vue
│ │ │ ├── async.demo.vue
│ │ │ ├── custom-messages.demo.vue
│ │ │ ├── custom-rule.demo.vue
│ │ │ ├── custom-validation.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── dynamic.demo.vue
│ │ │ ├── feedback-style.demo.vue
│ │ │ ├── i18n.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── inline.demo.vue
│ │ │ ├── item-only.demo.vue
│ │ │ ├── left.demo.vue
│ │ │ ├── partially-apply-rules.demo.vue
│ │ │ ├── show-label.demo.vue
│ │ │ └── top.demo.vue
│ │ └── zhCN
│ │ │ ├── abnormal-warning.demo.vue
│ │ │ ├── async.demo.vue
│ │ │ ├── custom-messages.demo.vue
│ │ │ ├── custom-rule.demo.vue
│ │ │ ├── custom-validation.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── dynamic.demo.vue
│ │ │ ├── feedback-style.demo.vue
│ │ │ ├── i18n.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── inline.demo.vue
│ │ │ ├── item-only.demo.vue
│ │ │ ├── left.demo.vue
│ │ │ ├── partially-apply-rules.demo.vue
│ │ │ ├── render-feedback.demo.vue
│ │ │ ├── show-label.demo.vue
│ │ │ └── top.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Form.tsx
│ │ ├── FormItem.tsx
│ │ ├── FormItemCol.ts
│ │ ├── FormItemGridItem.ts
│ │ ├── FormItemRow.ts
│ │ ├── context.ts
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ ├── form-item.cssr.ts
│ │ │ └── form.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Form.spec.tsx
│ │ └── server.spec.tsx
├── global-style
│ ├── demos
│ │ ├── enUS
│ │ │ └── index.demo-entry.md
│ │ └── zhCN
│ │ │ └── index.demo-entry.md
│ ├── index.ts
│ ├── src
│ │ └── GlobalStyle.ts
│ └── tests
│ │ └── server.spec.tsx
├── global.d.ts
├── gradient-text
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── size.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── size.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── GradientText.tsx
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── GradientText.spec.ts
│ │ ├── __snapshots__
│ │ └── GradientText.spec.ts.snap
│ │ └── server.spec.tsx
├── grid
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── collapse.demo.vue
│ │ │ ├── gap.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── layout-shift-disabled.demo.vue
│ │ │ ├── offset.demo.vue
│ │ │ ├── responsive-item.demo.vue
│ │ │ └── responsive.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── collapse.demo.vue
│ │ │ ├── gap.demo.vue
│ │ │ ├── grid-basic-debug.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── layout-shift-disabled.demo.vue
│ │ │ ├── offset.demo.vue
│ │ │ ├── responsive-item.demo.vue
│ │ │ ├── responsive.demo.vue
│ │ │ └── vshow-debug.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Grid.tsx
│ │ ├── GridItem.tsx
│ │ └── config.ts
│ └── tests
│ │ ├── Grid.spec.tsx
│ │ └── server.spec.tsx
├── highlight
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── case-sensitive.demo.vue
│ │ │ ├── component.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── style.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── case-sensitive.demo.vue
│ │ │ ├── component.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── style.demo.vue
│ ├── index.ts
│ └── src
│ │ ├── Highlight.tsx
│ │ ├── public-types.ts
│ │ └── utils.ts
├── icon-wrapper
│ ├── index.ts
│ ├── src
│ │ ├── IconWrapper.tsx
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── IconWrapper.spec.ts
│ │ └── server.spec.tsx
├── icon
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom-icon.demo.vue
│ │ │ ├── depth.demo.vue
│ │ │ ├── icon-wrapper.demo.vue
│ │ │ └── index.demo-entry.md
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom-icon.demo.vue
│ │ │ ├── depth.demo.vue
│ │ │ ├── icon-wrapper.demo.vue
│ │ │ └── index.demo-entry.md
│ ├── index.ts
│ ├── src
│ │ ├── Icon.ts
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Icon.spec.ts
│ │ ├── __snapshots__
│ │ └── Icon.spec.ts.snap
│ │ └── server.spec.tsx
├── image
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom-error.demo.vue
│ │ │ ├── custom-toolbar.demo.vue
│ │ │ ├── custom.demo.vue
│ │ │ ├── error.demo.vue
│ │ │ ├── group.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── lazy.demo.vue
│ │ │ ├── preview-disabled.demo.vue
│ │ │ ├── previewed-img-props.demo.vue
│ │ │ └── tooltip.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom-error.demo.vue
│ │ │ ├── custom-toolbar.demo.vue
│ │ │ ├── custom.demo.vue
│ │ │ ├── error.demo.vue
│ │ │ ├── full-debug.demo.vue
│ │ │ ├── group.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── lazy.demo.vue
│ │ │ ├── preview-disabled.demo.vue
│ │ │ ├── previewed-img-props.demo.vue
│ │ │ └── tooltip.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Image.tsx
│ │ ├── ImageGroup.tsx
│ │ ├── ImagePreview.tsx
│ │ ├── icons.tsx
│ │ ├── interface.ts
│ │ ├── public-types.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Image.spec.tsx
│ │ └── server.spec.tsx
├── index.ts
├── infinite-scroll
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── chat.demo.vue
│ │ │ └── index.demo-entry.md
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── chat.demo.vue
│ │ │ └── index.demo-entry.md
│ ├── index.ts
│ └── src
│ │ └── InfiniteScroll.tsx
├── input-number
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── button-placement.demo.vue
│ │ │ ├── change-timing.demo.vue
│ │ │ ├── custom-icon.demo.vue
│ │ │ ├── disable-keyboard.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── loading.demo.vue
│ │ │ ├── min-max.demo.vue
│ │ │ ├── parse.demo.vue
│ │ │ ├── precision.demo.vue
│ │ │ ├── show-button.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── status.demo.vue
│ │ │ ├── step.demo.vue
│ │ │ └── validator.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── button-placement.demo.vue
│ │ │ ├── change-timing.demo.vue
│ │ │ ├── custom-icon.demo.vue
│ │ │ ├── debug.demo.vue
│ │ │ ├── disable-keyboard.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── loading.demo.vue
│ │ │ ├── min-max.demo.vue
│ │ │ ├── parse.demo.vue
│ │ │ ├── precision-debug.demo.vue
│ │ │ ├── precision.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── show-button.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── status.demo.vue
│ │ │ ├── step.demo.vue
│ │ │ ├── theme-debug.demo.vue
│ │ │ └── validator.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── InputNumber.tsx
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ ├── input-number.cssr.ts
│ │ │ └── rtl.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── InputNumber.spec.tsx
│ │ └── server.spec.tsx
├── input-opt
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── form.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── mask.demo.vue
│ │ │ ├── pattern.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── status.demo.vue
│ │ │ └── template.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── form.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── mask.demo.vue
│ │ │ ├── pattern.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── status.demo.vue
│ │ │ └── template.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── input-opt.tsx
│ │ ├── interface.ts
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── input-opt-rtl.cssr.ts
│ └── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
├── input
│ ├── demos
│ │ ├── enUS
│ │ │ ├── autosize.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── clearable.demo.vue
│ │ │ ├── count.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── focus.demo.vue
│ │ │ ├── graphemes.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── input-group.demo.vue
│ │ │ ├── input-props.demo.vue
│ │ │ ├── loading.demo.vue
│ │ │ ├── pair.demo.vue
│ │ │ ├── passively-activated.demo.vue
│ │ │ ├── password.demo.vue
│ │ │ ├── pattern.demo.vue
│ │ │ ├── round.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── status.demo.vue
│ │ │ └── trim.demo.vue
│ │ └── zhCN
│ │ │ ├── autosize.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── clearable.demo.vue
│ │ │ ├── count.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── focus.demo.vue
│ │ │ ├── graphemes.demo.vue
│ │ │ ├── icon-debug.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── input-group.demo.vue
│ │ │ ├── input-props.demo.vue
│ │ │ ├── loading.demo.vue
│ │ │ ├── modal-debug.demo.vue
│ │ │ ├── pair.demo.vue
│ │ │ ├── passively-activated.demo.vue
│ │ │ ├── password.demo.vue
│ │ │ ├── pattern.demo.vue
│ │ │ ├── prefix-debug.demo.vue
│ │ │ ├── round.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── status.demo.vue
│ │ │ └── textarea-resize-debug.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Input.tsx
│ │ ├── InputGroup.tsx
│ │ ├── InputGroupLabel.tsx
│ │ ├── WordCount.tsx
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ ├── input-group-label.cssr.ts
│ │ │ ├── input-group.cssr.ts
│ │ │ ├── input.cssr.ts
│ │ │ └── rtl.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Input.spec.tsx
│ │ ├── __snapshots__
│ │ └── Input.spec.tsx.snap
│ │ └── server.spec.tsx
├── jest-setup.ts
├── layout
│ ├── demos
│ │ ├── enUS
│ │ │ ├── absolute.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── border.demo.vue
│ │ │ ├── collapse-right.demo.vue
│ │ │ ├── collapse.demo.vue
│ │ │ ├── embedded.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── inverted.demo.vue
│ │ │ ├── scroll-to.demo.vue
│ │ │ ├── scrollbar.demo.vue
│ │ │ ├── set-padding.demo.vue
│ │ │ └── show-sider-content.demo.vue
│ │ └── zhCN
│ │ │ ├── absolute.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── border.demo.vue
│ │ │ ├── collapse-right.demo.vue
│ │ │ ├── collapse.demo.vue
│ │ │ ├── embedded.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── inverted.demo.vue
│ │ │ ├── keep-alive-debug.demo.vue
│ │ │ ├── scroll-to.demo.vue
│ │ │ ├── scrollbar.demo.vue
│ │ │ ├── set-padding.demo.vue
│ │ │ └── show-sider-content.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Layout.tsx
│ │ ├── LayoutContent.tsx
│ │ ├── LayoutFooter.tsx
│ │ ├── LayoutHeader.tsx
│ │ ├── LayoutSider.tsx
│ │ ├── ToggleBar.tsx
│ │ ├── ToggleButton.tsx
│ │ ├── interface.ts
│ │ └── styles
│ │ │ ├── layout-footer.cssr.ts
│ │ │ ├── layout-header.cssr.ts
│ │ │ ├── layout-sider.cssr.ts
│ │ │ └── layout.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Layout.spec.ts
│ │ ├── __snapshots__
│ │ └── Layout.spec.ts.snap
│ │ └── server.spec.tsx
├── legacy-grid
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── gutter.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── offset.demo.vue
│ │ │ └── push-pull.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── gutter.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── offset.demo.vue
│ │ │ ├── push-pull.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ └── wrap-debug.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Col.tsx
│ │ ├── Row.tsx
│ │ ├── interface.ts
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Grid.spec.tsx
│ │ └── server.spec.tsx
├── legacy-transfer
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── filterable.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── large-data.demo.vue
│ │ │ └── size.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── filterable.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── large-data.demo.vue
│ │ │ └── size.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Transfer.tsx
│ │ ├── TransferFilter.tsx
│ │ ├── TransferHeader.tsx
│ │ ├── TransferList.tsx
│ │ ├── TransferListItem.tsx
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── use-transfer-data.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Transfer.spec.ts
│ │ ├── __snapshots__
│ │ └── Transfer.spec.ts.snap
│ │ └── server.spec.tsx
├── list
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── border.demo.vue
│ │ │ ├── hoverable.demo.vue
│ │ │ └── index.demo-entry.md
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── border.demo.vue
│ │ │ ├── hoverable.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── rtl-debug.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── List.tsx
│ │ ├── ListItem.tsx
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── List.spec.ts
│ │ └── server.spec.tsx
├── loading-bar
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── container.demo.vue
│ │ │ └── index.demo-entry.md
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── container.demo.vue
│ │ │ └── index.demo-entry.md
│ ├── index.ts
│ ├── src
│ │ ├── LoadingBar.tsx
│ │ ├── LoadingBarProvider.tsx
│ │ ├── context.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── use-loading-bar.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ └── LoadingBar.spec.tsx
├── locales
│ ├── __snapshots__
│ │ └── index.spec.tsx.snap
│ ├── common
│ │ ├── arDZ.ts
│ │ ├── azAZ.ts
│ │ ├── csCZ.ts
│ │ ├── deDE.ts
│ │ ├── enGB.ts
│ │ ├── enUS.ts
│ │ ├── eo.ts
│ │ ├── esAR.ts
│ │ ├── etEE.ts
│ │ ├── faIR.ts
│ │ ├── frFR.ts
│ │ ├── idID.ts
│ │ ├── itIT.ts
│ │ ├── jaJP.ts
│ │ ├── kmKH.ts
│ │ ├── koKR.ts
│ │ ├── nbNO.ts
│ │ ├── nlNL.ts
│ │ ├── plPL.ts
│ │ ├── ptBR.ts
│ │ ├── ruRU.ts
│ │ ├── skSK.ts
│ │ ├── svSE.ts
│ │ ├── thTH.ts
│ │ ├── trTR.ts
│ │ ├── ugCN.ts
│ │ ├── ukUA.ts
│ │ ├── uzUZ.ts
│ │ ├── viVN.ts
│ │ ├── zhCN.ts
│ │ └── zhTW.ts
│ ├── date
│ │ ├── arDZ.ts
│ │ ├── azAZ.ts
│ │ ├── csCZ.ts
│ │ ├── deDE.ts
│ │ ├── enGB.ts
│ │ ├── enUS.ts
│ │ ├── eo.ts
│ │ ├── esAR.ts
│ │ ├── etEE.ts
│ │ ├── faIR.ts
│ │ ├── frFR.ts
│ │ ├── idID.ts
│ │ ├── itIT.ts
│ │ ├── jaJP.ts
│ │ ├── kmKH.ts
│ │ ├── koKR.ts
│ │ ├── nbNO.ts
│ │ ├── nlNL.ts
│ │ ├── plPL.ts
│ │ ├── ptBR.ts
│ │ ├── ruRU.ts
│ │ ├── skSK.ts
│ │ ├── svSE.ts
│ │ ├── thTH.ts
│ │ ├── trTR.ts
│ │ ├── ugCN.ts
│ │ ├── ukUA.ts
│ │ ├── uzUZ.ts
│ │ ├── viVN.ts
│ │ ├── zhCN.ts
│ │ └── zhTW.ts
│ ├── index.spec.tsx
│ ├── index.ts
│ └── utils
│ │ └── index.ts
├── log
│ ├── demos
│ │ ├── enUS
│ │ │ ├── auto-bottom.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── highlight.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── loading.demo.vue
│ │ │ ├── scroll.demo.vue
│ │ │ └── size.demo.vue
│ │ └── zhCN
│ │ │ ├── auto-bottom.demo.vue
│ │ │ ├── debug.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── highlight.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── loading.demo.vue
│ │ │ ├── scroll.demo.vue
│ │ │ └── size.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Log.tsx
│ │ ├── LogLine.tsx
│ │ ├── LogLoader.tsx
│ │ ├── context.ts
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Log.spec.tsx
│ │ └── server.spec.tsx
├── marquee
│ ├── demos
│ │ ├── enUS
│ │ │ ├── auto-fill.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── image.demo.vue
│ │ │ └── index.demo-entry.md
│ │ └── zhCN
│ │ │ ├── auto-fill.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── image.demo.vue
│ │ │ └── index.demo-entry.md
│ ├── index.ts
│ ├── src
│ │ ├── Marquee.tsx
│ │ ├── props.ts
│ │ ├── public-types.ts
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Marquee.spec.ts
│ │ └── server.spec.tsx
├── mention
│ ├── demos
│ │ ├── enUS
│ │ │ ├── async.demo.vue
│ │ │ ├── autosize.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom-prefix.demo.vue
│ │ │ ├── form.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── manual-trigger.demo.vue
│ │ │ ├── render-label.demo.vue
│ │ │ ├── status.demo.vue
│ │ │ └── textarea.demo.vue
│ │ └── zhCN
│ │ │ ├── async.demo.vue
│ │ │ ├── autosize.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom-prefix.demo.vue
│ │ │ ├── form.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── manual-trigger.demo.vue
│ │ │ ├── render-label.demo.vue
│ │ │ ├── status.demo.vue
│ │ │ └── textarea.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Mention.tsx
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Mention.spec.ts
│ │ └── server.spec.tsx
├── menu
│ ├── demos
│ │ ├── enUS
│ │ │ ├── accordion.demo.vue
│ │ │ ├── collapse.demo.vue
│ │ │ ├── customize-field.demo.vue
│ │ │ ├── default-expanded-keys.demo.vue
│ │ │ ├── expand-selected-option.demo.vue
│ │ │ ├── horizontal.demo.vue
│ │ │ ├── indent.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── inverted.demo.vue
│ │ │ ├── long-label.demo.vue
│ │ │ ├── render-label.demo.vue
│ │ │ ├── router-link.demo.vue
│ │ │ ├── select.demo.vue
│ │ │ └── show.demo.vue
│ │ └── zhCN
│ │ │ ├── accordion.demo.vue
│ │ │ ├── collapse.demo.vue
│ │ │ ├── customize-field.demo.vue
│ │ │ ├── debug.demo.vue
│ │ │ ├── default-expanded-keys.demo.vue
│ │ │ ├── expand-selected-option.demo.vue
│ │ │ ├── horizontal.demo.vue
│ │ │ ├── indent.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── inverted.demo.vue
│ │ │ ├── long-label.demo.vue
│ │ │ ├── render-label.demo.vue
│ │ │ ├── router-link.demo.vue
│ │ │ ├── select.demo.vue
│ │ │ ├── show-debug.demo.vue
│ │ │ └── show.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Menu.tsx
│ │ ├── MenuDivider.tsx
│ │ ├── MenuOption.tsx
│ │ ├── MenuOptionContent.tsx
│ │ ├── MenuOptionGroup.tsx
│ │ ├── Submenu.tsx
│ │ ├── context.ts
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ ├── use-menu-child-props.ts
│ │ ├── use-menu-child.ts
│ │ ├── useCheckDeprecated.ts
│ │ └── utils.tsx
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Menu.spec.tsx
│ │ └── server.spec.tsx
├── message
│ ├── demos
│ │ ├── enUS
│ │ │ ├── about-theme.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── closable.demo.vue
│ │ │ ├── customize-message.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── manually-close.demo.vue
│ │ │ ├── modify-content.demo.vue
│ │ │ ├── multiple-line.demo.vue
│ │ │ ├── no-icon.demo.vue
│ │ │ ├── placement.demo.vue
│ │ │ └── timing.demo.vue
│ │ └── zhCN
│ │ │ ├── about-theme.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── closable.demo.vue
│ │ │ ├── customize-message.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── manually-close.demo.vue
│ │ │ ├── modify-content.demo.vue
│ │ │ ├── multiple-line.demo.vue
│ │ │ ├── no-icon.demo.vue
│ │ │ ├── placement.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ └── timing.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Message.tsx
│ │ ├── MessageEnvironment.tsx
│ │ ├── MessageProvider.tsx
│ │ ├── context.ts
│ │ ├── message-props.ts
│ │ ├── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ │ ├── types.ts
│ │ └── use-message.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Message.spec.tsx
│ │ └── server.spec.tsx
├── modal
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── controlled.demo.vue
│ │ │ ├── custom-position.demo.vue
│ │ │ ├── draggable.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── mask-closable.demo.vue
│ │ │ ├── preset-card.demo.vue
│ │ │ ├── preset-confirm-slot.demo.vue
│ │ │ ├── preset-confirm.demo.vue
│ │ │ ├── reactive.demo.vue
│ │ │ └── transform-origin.demo.vue
│ │ └── zhCN
│ │ │ ├── a11y-debug.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── controlled.demo.vue
│ │ │ ├── custom-position.demo.vue
│ │ │ ├── dark-1-debug.demo.vue
│ │ │ ├── dark-10-debug.demo.vue
│ │ │ ├── dark-2-debug.demo.vue
│ │ │ ├── dark-3-debug.demo.vue
│ │ │ ├── dark-4-debug.demo.vue
│ │ │ ├── dark-5-debug.demo.vue
│ │ │ ├── dark-6-debug.demo.vue
│ │ │ ├── dark-7-debug.demo.vue
│ │ │ ├── dark-8-debug.demo.vue
│ │ │ ├── dark-9-debug.demo.vue
│ │ │ ├── draggable.demo.vue
│ │ │ ├── drawer-debug.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── mask-click-debug.demo.vue
│ │ │ ├── mask-closable.demo.vue
│ │ │ ├── nested-debug.demo.vue
│ │ │ ├── preset-card.demo.vue
│ │ │ ├── preset-confirm-slot.demo.vue
│ │ │ ├── preset-confirm.demo.vue
│ │ │ ├── raw-debug.demo.vue
│ │ │ ├── reactive.demo.vue
│ │ │ └── transform-origin.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── BodyWrapper.tsx
│ │ ├── Modal.tsx
│ │ ├── ModalEnvironment.tsx
│ │ ├── ModalProvider.ts
│ │ ├── composables.ts
│ │ ├── context.ts
│ │ ├── interface.ts
│ │ ├── presetProps.ts
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Modal.spec.tsx
│ │ └── server.spec.tsx
├── notification
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── change-content.demo.vue
│ │ │ ├── closable.demo.vue
│ │ │ ├── duration.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── max.demo.vue
│ │ │ ├── placement.demo.vue
│ │ │ ├── scrollable.demo.vue
│ │ │ └── type.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── change-content.demo.vue
│ │ │ ├── closable.demo.vue
│ │ │ ├── duration.demo.vue
│ │ │ ├── error-debug.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── max.demo.vue
│ │ │ ├── placement.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── scrollable.demo.vue
│ │ │ └── type.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Notification.tsx
│ │ ├── NotificationContainer.tsx
│ │ ├── NotificationEnvironment.tsx
│ │ ├── NotificationProvider.tsx
│ │ ├── context.ts
│ │ ├── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ │ └── use-notification.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ └── Notification.spec.tsx
├── number-animation
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── finish.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── intl.demo.vue
│ │ │ ├── precision.demo.vue
│ │ │ └── separator.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── finish.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── intl.demo.vue
│ │ │ ├── precision.demo.vue
│ │ │ └── separator.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── NumberAnimation.tsx
│ │ └── utils.ts
│ └── tests
│ │ ├── NumericAnimation.spec.ts
│ │ └── server.spec.tsx
├── page-header
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ └── index.demo-entry.md
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── rtl-debug.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── PageHeader.tsx
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── PageHeader.spec.tsx
│ │ └── server.spec.tsx
├── pagination
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── item-count.demo.vue
│ │ │ ├── page-size-option.demo.vue
│ │ │ ├── prefix.demo.vue
│ │ │ ├── prev.demo.vue
│ │ │ ├── quick-jumper.demo.vue
│ │ │ ├── simple.demo.vue
│ │ │ ├── size-picker.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── slot.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── display-order.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── item-count.demo.vue
│ │ │ ├── page-size-option.demo.vue
│ │ │ ├── prefix.demo.vue
│ │ │ ├── prev.demo.vue
│ │ │ ├── quick-jumper.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── simple.demo.vue
│ │ │ ├── size-picker.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── slot.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Pagination.tsx
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Pagination.spec.tsx
│ │ ├── server.spec.tsx
│ │ └── utils.spec.ts
├── popconfirm
│ ├── demos
│ │ ├── enUS
│ │ │ ├── actions.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom-action.demo.vue
│ │ │ ├── custom-icon.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── no-icon.demo.vue
│ │ └── zhCN
│ │ │ ├── actions.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom-action.demo.vue
│ │ │ ├── custom-icon.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── no-icon.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Popconfirm.ts
│ │ ├── PopconfirmPanel.tsx
│ │ ├── interface.ts
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Popconfirm.spec.ts
│ │ └── server.spec.tsx
├── popover
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── delay.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── flip.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── manual-position.demo.vue
│ │ │ ├── no-arrow.demo.vue
│ │ │ ├── placement.demo.vue
│ │ │ ├── raw-content.demo.vue
│ │ │ ├── slots.demo.vue
│ │ │ ├── style.demo.vue
│ │ │ ├── trigger-width.demo.vue
│ │ │ └── trigger.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── center-arrow-debug.demo.vue
│ │ │ ├── delay.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── flip.demo.vue
│ │ │ ├── hoist-debug.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── manual-position.demo.vue
│ │ │ ├── nested-debug.demo.vue
│ │ │ ├── nested2-debug.demo.vue
│ │ │ ├── nested3-debug.demo.vue
│ │ │ ├── no-arrow.demo.vue
│ │ │ ├── placement.demo.vue
│ │ │ ├── raw-content.demo.vue
│ │ │ ├── slots.demo.vue
│ │ │ ├── style.demo.vue
│ │ │ ├── trigger-width.demo.vue
│ │ │ ├── trigger.demo.vue
│ │ │ ├── width-debug.demo.vue
│ │ │ └── zindex-debug.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Popover.tsx
│ │ ├── PopoverBody.tsx
│ │ ├── interface.ts
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Popover.spec.tsx
│ │ └── server.spec.tsx
├── popselect
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── cancelable.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── multiple.demo.vue
│ │ │ ├── scrollable.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── slot.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── cancelable.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── multiple.demo.vue
│ │ │ ├── scrollable.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── slot.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Popselect.tsx
│ │ ├── PopselectPanel.tsx
│ │ ├── interface.ts
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Popselect.spec.ts
│ │ └── server.spec.tsx
├── preset.ts
├── progress
│ ├── demos
│ │ ├── enUS
│ │ │ ├── circle-offset.demo.vue
│ │ │ ├── circle.demo.vue
│ │ │ ├── color.demo.vue
│ │ │ ├── custom-indicator.demo.vue
│ │ │ ├── dashboard.demo.vue
│ │ │ ├── gradient.demo.vue
│ │ │ ├── height.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── line.demo.vue
│ │ │ ├── multiple-circle.demo.vue
│ │ │ ├── no-indicator.demo.vue
│ │ │ └── processing.demo.vue
│ │ └── zhCN
│ │ │ ├── circle-offset.demo.vue
│ │ │ ├── circle.demo.vue
│ │ │ ├── color.demo.vue
│ │ │ ├── custom-indicator.demo.vue
│ │ │ ├── dashboard.demo.vue
│ │ │ ├── gradient.demo.vue
│ │ │ ├── height.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── line.demo.vue
│ │ │ ├── multiple-circle.demo.vue
│ │ │ ├── no-indicator.demo.vue
│ │ │ └── processing.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Circle.tsx
│ │ ├── Line.tsx
│ │ ├── MultipleCircle.tsx
│ │ ├── Progress.tsx
│ │ ├── public-types.ts
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Progress.spec.ts
│ │ └── server.spec.tsx
├── qr-code
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── color.demo.vue
│ │ │ ├── download.demo.vue
│ │ │ ├── error-correction.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── size.demo.vue
│ │ │ └── type.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── color.demo.vue
│ │ │ ├── download.demo.vue
│ │ │ ├── error-correction.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── size.demo.vue
│ │ │ └── type.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── QrCode.tsx
│ │ ├── qrcodegen.ts
│ │ └── styles
│ │ │ └── index.cssr.ts
│ └── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
├── radio
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── button-group.demo.vue
│ │ │ ├── group.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── size.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── button-group.demo.vue
│ │ │ ├── group.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── radio-focus-debug.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── uncontrolled-debug.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Radio.tsx
│ │ ├── RadioButton.tsx
│ │ ├── RadioGroup.tsx
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ ├── radio-group.cssr.ts
│ │ │ ├── radio.cssr.ts
│ │ │ └── rtl.cssr.ts
│ │ └── use-radio.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Radio.spec.ts
│ │ ├── __snapshots__
│ │ └── Radio.spec.ts.snap
│ │ └── server.spec.tsx
├── rate
│ ├── demos
│ │ ├── enUS
│ │ │ ├── allow-half.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── clearable.demo.vue
│ │ │ ├── color.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── readonly.demo.vue
│ │ │ └── size.demo.vue
│ │ └── zhCN
│ │ │ ├── allow-half.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── clearable.demo.vue
│ │ │ ├── color.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── readonly.demo.vue
│ │ │ └── size.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Rate.tsx
│ │ ├── StarIcon.tsx
│ │ ├── interface.ts
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Rate.spec.ts
│ │ ├── __snapshots__
│ │ └── Rate.spec.ts.snap
│ │ └── server.spec.tsx
├── result
│ ├── demos
│ │ ├── enUS
│ │ │ ├── custom.demo.vue
│ │ │ ├── error.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── info.demo.vue
│ │ │ ├── s-403.demo.vue
│ │ │ ├── s-404.demo.vue
│ │ │ ├── s-418.demo.vue
│ │ │ ├── s-500.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── success.demo.vue
│ │ │ └── warning.demo.vue
│ │ └── zhCN
│ │ │ ├── custom.demo.vue
│ │ │ ├── error.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── info.demo.vue
│ │ │ ├── s-403.demo.vue
│ │ │ ├── s-404.demo.vue
│ │ │ ├── s-418.demo.vue
│ │ │ ├── s-500.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── success.demo.vue
│ │ │ └── warning.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── 403.tsx
│ │ ├── 404.tsx
│ │ ├── 418.tsx
│ │ ├── 500.tsx
│ │ ├── Result.tsx
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Result.spec.ts
│ │ ├── __snapshots__
│ │ └── Result.spec.ts.snap
│ │ └── server.spec.tsx
├── scrollbar
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── no-sync.demo.vue
│ │ │ ├── placement.demo.vue
│ │ │ ├── trigger.demo.vue
│ │ │ └── x.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── no-sync.demo.vue
│ │ │ ├── placement.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── trigger.demo.vue
│ │ │ └── x.demo.vue
│ ├── index.ts
│ ├── src
│ │ └── Scrollbar.tsx
│ └── tests
│ │ ├── Scrollbar.spec.ts
│ │ └── server.spec.tsx
├── select
│ ├── demos
│ │ ├── enUS
│ │ │ ├── action.demo.vue
│ │ │ ├── add-tooltip.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── clearable.demo.vue
│ │ │ ├── custom-field.demo.vue
│ │ │ ├── custom-option.demo.vue
│ │ │ ├── custom-suffix.demo.vue
│ │ │ ├── events.demo.vue
│ │ │ ├── fallback-option.demo.vue
│ │ │ ├── filterable.demo.vue
│ │ │ ├── focus.demo.vue
│ │ │ ├── group.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── many-options.demo.vue
│ │ │ ├── max-tag-count.demo.vue
│ │ │ ├── menu-width.demo.vue
│ │ │ ├── multiple.demo.vue
│ │ │ ├── remote-multiple.demo.vue
│ │ │ ├── remote.demo.vue
│ │ │ ├── render-person.demo.vue
│ │ │ ├── render-tag.demo.vue
│ │ │ ├── scroll-event.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── status.demo.vue
│ │ │ ├── tag-input.demo.vue
│ │ │ └── tag.demo.vue
│ │ └── zhCN
│ │ │ ├── action.demo.vue
│ │ │ ├── add-tooltip.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── clearable.demo.vue
│ │ │ ├── create-debug.demo.vue
│ │ │ ├── custom-field.demo.vue
│ │ │ ├── custom-option.demo.vue
│ │ │ ├── custom-suffix.demo.vue
│ │ │ ├── empty-debug.demo.vue
│ │ │ ├── events.demo.vue
│ │ │ ├── fallback-option.demo.vue
│ │ │ ├── filterable-debug.demo.vue
│ │ │ ├── filterable.demo.vue
│ │ │ ├── focus.demo.vue
│ │ │ ├── fullscreen-debug.demo.vue
│ │ │ ├── group.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── many-options.demo.vue
│ │ │ ├── max-tag-count.demo.vue
│ │ │ ├── menu-debug.demo.vue
│ │ │ ├── menu-width.demo.vue
│ │ │ ├── multiple.demo.vue
│ │ │ ├── options-change-debug.demo.vue
│ │ │ ├── placeholder-debug.demo.vue
│ │ │ ├── remote-multiple.demo.vue
│ │ │ ├── remote.demo.vue
│ │ │ ├── render-debug.demo.vue
│ │ │ ├── render-person.demo.vue
│ │ │ ├── render-tag.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── scroll-event.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── spin-debug.demo.vue
│ │ │ ├── status.demo.vue
│ │ │ ├── tag-input.demo.vue
│ │ │ └── tag.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Select.tsx
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Select.spec.tsx
│ │ ├── __snapshots__
│ │ └── Select.spec.tsx.snap
│ │ └── server.spec.tsx
├── shims-vue.d.ts
├── skeleton
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── box.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── size.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── box.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── size.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Skeleton.tsx
│ │ ├── bug.md
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Skeleton.spec.tsx
│ │ ├── __snapshots__
│ │ └── Skeleton.spec.tsx.snap
│ │ └── server.spec.tsx
├── slider
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom-marks.demo.vue
│ │ │ ├── custom-thumb.demo.vue
│ │ │ ├── disable-tooltip.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── format.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── mark.demo.vue
│ │ │ ├── multiple-debug.demo.vue
│ │ │ ├── range.demo.vue
│ │ │ ├── restrict-selectable-values.demo.vue
│ │ │ ├── reverse.demo.vue
│ │ │ ├── show-tooltip.demo.vue
│ │ │ └── vertical.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── custom-marks.demo.vue
│ │ │ ├── custom-thumb.demo.vue
│ │ │ ├── disable-tooltip.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── format.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── keyboard-debug.demo.vue
│ │ │ ├── mark.demo.vue
│ │ │ ├── multiple-debug.demo.vue
│ │ │ ├── range.demo.vue
│ │ │ ├── restrict-selectable-values.demo.vue
│ │ │ ├── reverse.demo.vue
│ │ │ ├── show-tooltip.demo.vue
│ │ │ └── vertical.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Slider.tsx
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Slider.spec.ts
│ │ └── server.spec.tsx
├── space
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── center.demo.vue
│ │ │ ├── from-end.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── reverse.demo.vue
│ │ │ ├── space-around.demo.vue
│ │ │ ├── space-between.demo.vue
│ │ │ └── vertical.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── center.demo.vue
│ │ │ ├── from-end.demo.vue
│ │ │ ├── grid-debug.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── reverse.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── space-around.demo.vue
│ │ │ ├── space-between.demo.vue
│ │ │ └── vertical.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Space.tsx
│ │ ├── styles
│ │ │ └── rtl.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Space.spec.tsx
│ │ ├── __snapshots__
│ │ └── Space.spec.tsx.snap
│ │ └── server.spec.tsx
├── spin
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── customize-icon.demo.vue
│ │ │ ├── delay.demo.vue
│ │ │ ├── description.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── wrap.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── blocking-debug.demo.vue
│ │ │ ├── customize-icon.demo.vue
│ │ │ ├── delay.demo.vue
│ │ │ ├── description.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── wrap.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Spin.tsx
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Spin.spec.ts
│ │ ├── __snapshots__
│ │ └── Spin.spec.ts.snap
│ │ └── server.spec.tsx
├── split
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── controlled.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── nest.demo.vue
│ │ │ ├── slot.demo.vue
│ │ │ └── vertical.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── controlled.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── nest.demo.vue
│ │ │ ├── pixel-value.demo.vue
│ │ │ ├── slot.demo.vue
│ │ │ └── vertical.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Split.tsx
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── types.ts
│ └── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
├── statistic
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ └── index.demo-entry.md
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── rtl-debug.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Statistic.tsx
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Statistic.spec.ts
│ │ └── server.spec.tsx
├── steps
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── click.demo.vue
│ │ │ ├── content.demo.vue
│ │ │ ├── custom-icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── size.demo.vue
│ │ │ └── vertical.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── click.demo.vue
│ │ │ ├── content.demo.vue
│ │ │ ├── custom-icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── vertical-debug.demo.vue
│ │ │ └── vertical.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Step.tsx
│ │ ├── Steps.tsx
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Steps.spec.ts
│ │ └── server.spec.tsx
├── styles.ts
├── switch
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── color.demo.vue
│ │ │ ├── content.demo.vue
│ │ │ ├── customize-value.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── loading.demo.vue
│ │ │ ├── shape.demo.vue
│ │ │ └── size.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── color.demo.vue
│ │ │ ├── content.demo.vue
│ │ │ ├── customize-value.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── loading.demo.vue
│ │ │ ├── shape.demo.vue
│ │ │ └── size.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Switch.tsx
│ │ ├── interface.ts
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Switch.spec.tsx
│ │ ├── __snapshots__
│ │ └── Switch.spec.tsx.snap
│ │ └── server.spec.tsx
├── table
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── bordered.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── single-column.demo.vue
│ │ │ ├── single-line.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── striped.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── bordered.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── single-column.demo.vue
│ │ │ ├── single-line.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── striped.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Table.tsx
│ │ ├── Tbody.tsx
│ │ ├── Td.tsx
│ │ ├── Th.tsx
│ │ ├── Thead.tsx
│ │ ├── Tr.tsx
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Table.spec.ts
│ │ ├── __snapshots__
│ │ └── Table.spec.ts.snap
│ │ └── server.spec.tsx
├── tabs
│ ├── demos
│ │ ├── enUS
│ │ │ ├── addable.demo.vue
│ │ │ ├── bar-width.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── before-leave.demo.vue
│ │ │ ├── card.demo.vue
│ │ │ ├── display-directive.demo.vue
│ │ │ ├── flex-label.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── no-pane.demo.vue
│ │ │ ├── placement.demo.vue
│ │ │ ├── prefix.demo.vue
│ │ │ ├── segment.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── trigger.demo.vue
│ │ │ └── update-bar-manually.demo.vue
│ │ └── zhCN
│ │ │ ├── addable-debug.demo.vue
│ │ │ ├── addable.demo.vue
│ │ │ ├── animation-debug.demo.vue
│ │ │ ├── animationx-debug.demo.vue
│ │ │ ├── bar-width.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── before-leave.demo.vue
│ │ │ ├── card.demo.vue
│ │ │ ├── display-directive.demo.vue
│ │ │ ├── flex-label.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── line-debug.demo.vue
│ │ │ ├── modal-debug.demo.vue
│ │ │ ├── no-pane.demo.vue
│ │ │ ├── none-debug.demo.vue
│ │ │ ├── placement.demo.vue
│ │ │ ├── prefix.demo.vue
│ │ │ ├── segment.demo.vue
│ │ │ ├── shadow-debug.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ ├── style-inherit-debug.demo.vue
│ │ │ ├── trigger.demo.vue
│ │ │ ├── unkeyed-debug.demo.vue
│ │ │ └── update-bar-manually.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Tab.tsx
│ │ ├── TabPane.tsx
│ │ ├── Tabs.tsx
│ │ ├── interface.ts
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Tabs.spec.tsx
│ │ ├── __snapshots__
│ │ └── Tabs.spec.tsx.snap
│ │ └── server.spec.tsx
├── tag
│ ├── demos
│ │ ├── enUS
│ │ │ ├── avatar.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── bordered.demo.vue
│ │ │ ├── checkable.demo.vue
│ │ │ ├── closable.demo.vue
│ │ │ ├── color.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── shape.demo.vue
│ │ │ └── size.demo.vue
│ │ └── zhCN
│ │ │ ├── avatar.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── bordered.demo.vue
│ │ │ ├── checkable.demo.vue
│ │ │ ├── closable.demo.vue
│ │ │ ├── color.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── icon.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── shape.demo.vue
│ │ │ └── size.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Tag.tsx
│ │ ├── common-props.ts
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Tag.spec.ts
│ │ ├── __snapshots__
│ │ └── Tag.spec.ts.snap
│ │ └── server.spec.tsx
├── theme-editor
│ ├── index.ts
│ └── src
│ │ ├── MaximizeIcon.tsx
│ │ ├── MinimizeIcon.tsx
│ │ └── ThemeEditor.tsx
├── themes
│ ├── dark.ts
│ ├── index.ts
│ ├── interface.ts
│ ├── light.ts
│ └── utils.ts
├── thing
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── indent.demo.vue
│ │ │ └── index.demo-entry.md
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── indent.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ └── rtl-debug.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Thing.tsx
│ │ └── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Thing.spec.ts
│ │ └── server.spec.tsx
├── time-picker
│ ├── demos
│ │ ├── enUS
│ │ │ ├── actions.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── confirm.demo.vue
│ │ │ ├── disabled-time.demo.vue
│ │ │ ├── focus.demo.vue
│ │ │ ├── format.demo.vue
│ │ │ ├── formatted.demo.vue
│ │ │ ├── hours12.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── size.demo.vue
│ │ │ ├── status.demo.vue
│ │ │ ├── step-time.demo.vue
│ │ │ └── timezone.demo.vue
│ │ └── zhCN
│ │ │ ├── actions.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── confirm.demo.vue
│ │ │ ├── disabled-time.demo.vue
│ │ │ ├── focus.demo.vue
│ │ │ ├── format.demo.vue
│ │ │ ├── formatted.demo.vue
│ │ │ ├── hours12.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── size.demo.vue
│ │ │ ├── status.demo.vue
│ │ │ ├── step-time.demo.vue
│ │ │ ├── timezone-debug.demo.vue
│ │ │ └── timezone.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Panel.tsx
│ │ ├── PanelCol.tsx
│ │ ├── TimePicker.tsx
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── TimePicker.spec.ts
│ │ ├── __snapshots__
│ │ └── TimePicker.spec.ts.snap
│ │ └── server.spec.tsx
├── time
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── format.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── relative.demo.vue
│ │ │ ├── timezone.demo.vue
│ │ │ ├── type.demo.vue
│ │ │ └── unix.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── format.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── relative.demo.vue
│ │ │ ├── timezone-debug.demo.vue
│ │ │ ├── timezone.demo.vue
│ │ │ ├── type.demo.vue
│ │ │ └── unix.demo.vue
│ ├── index.ts
│ ├── src
│ │ └── Time.ts
│ └── tests
│ │ ├── Time.spec.ts
│ │ └── server.spec.tsx
├── timeline
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── customize-icon.demo.vue
│ │ │ ├── horizontal.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── item-placement.demo.vue
│ │ │ └── size.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── customize-icon.demo.vue
│ │ │ ├── horizontal.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── item-placement.demo.vue
│ │ │ ├── nested-debug.demo.vue
│ │ │ └── size.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Timeline.tsx
│ │ ├── TimelineItem.tsx
│ │ └── styles
│ │ │ └── index.cssr.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Timeline.spec.ts
│ │ └── server.spec.tsx
├── tooltip
│ ├── demos
│ │ ├── enUS
│ │ │ ├── arrow.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── body-style.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── placement.demo.vue
│ │ │ └── trigger.demo.vue
│ │ └── zhCN
│ │ │ ├── arrow.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── body-style.demo.vue
│ │ │ ├── event.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── placement.demo.vue
│ │ │ └── trigger.demo.vue
│ ├── index.ts
│ ├── src
│ │ └── Tooltip.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Tooltip.spec.ts
│ │ └── server.spec.tsx
├── transfer
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── filterable.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── large-data.demo.vue
│ │ │ ├── render-label.demo.vue
│ │ │ ├── render-source-list.demo.vue
│ │ │ └── size.demo.vue
│ │ └── zhCN
│ │ │ ├── asynchronous-options-debug.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── filterable.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── large-data.demo.vue
│ │ │ ├── render-label.demo.vue
│ │ │ ├── render-source-list.demo.vue
│ │ │ ├── size.demo.vue
│ │ │ └── value-debug.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Transfer.tsx
│ │ ├── TransferFilter.tsx
│ │ ├── TransferHeader.tsx
│ │ ├── TransferList.tsx
│ │ ├── TransferListItem.tsx
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── use-transfer-data.ts
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Transfer.spec.ts
│ │ ├── __snapshots__
│ │ └── Transfer.spec.ts.snap
│ │ └── server.spec.tsx
├── tree-select
│ ├── demos
│ │ ├── enUS
│ │ │ ├── action.demo.vue
│ │ │ ├── async.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── check-strategy.demo.vue
│ │ │ ├── checkbox.demo.vue
│ │ │ ├── custom-field.demo.vue
│ │ │ ├── debug.demo.vue
│ │ │ ├── file-picker.demo.vue
│ │ │ ├── filterable.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── multiple.demo.vue
│ │ │ └── status.demo.vue
│ │ └── zhCN
│ │ │ ├── action.demo.vue
│ │ │ ├── async.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── check-strategy-debug.demo.vue
│ │ │ ├── check-strategy.demo.vue
│ │ │ ├── checkbox.demo.vue
│ │ │ ├── custom-field.demo.vue
│ │ │ ├── debug.demo.vue
│ │ │ ├── field-search-debug.demo.vue
│ │ │ ├── file-picker.demo.vue
│ │ │ ├── filterable.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── multiple.demo.vue
│ │ │ ├── render-debug.demo.vue
│ │ │ └── status.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── TreeSelect.tsx
│ │ ├── interface.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── TreeSelect.spec.ts
│ │ └── server.spec.tsx
├── tree
│ ├── demos
│ │ ├── enUS
│ │ │ ├── async.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── batch-render.demo.vue
│ │ │ ├── cascade.demo.vue
│ │ │ ├── checkbox-placement.demo.vue
│ │ │ ├── custom-field.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── drag-drop.demo.vue
│ │ │ ├── file-tree.demo.vue
│ │ │ ├── filter.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── multiple.demo.vue
│ │ │ ├── node-props.demo.vue
│ │ │ ├── override-click-behavior.demo.vue
│ │ │ ├── prefix-and-suffix.demo.vue
│ │ │ ├── show-line.demo.vue
│ │ │ ├── switcher-icon.demo.vue
│ │ │ └── virtual.demo.vue
│ │ └── zhCN
│ │ │ ├── async.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── batch-render.demo.vue
│ │ │ ├── cascade.demo.vue
│ │ │ ├── change-debug.demo.vue
│ │ │ ├── check-strategy-debug.demo.vue
│ │ │ ├── checkbox-placement.demo.vue
│ │ │ ├── custom-field.demo.vue
│ │ │ ├── disabled.demo.vue
│ │ │ ├── drag-drop.demo.vue
│ │ │ ├── expand-debug.demo.vue
│ │ │ ├── file-tree.demo.vue
│ │ │ ├── filter.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── multiple.demo.vue
│ │ │ ├── node-props.demo.vue
│ │ │ ├── override-click-behavior.demo.vue
│ │ │ ├── prefix-and-suffix.demo.vue
│ │ │ ├── rtl-debug.demo.vue
│ │ │ ├── scroll-debug.demo.vue
│ │ │ ├── scrollbar-debug.demo.vue
│ │ │ ├── show-line.demo.vue
│ │ │ ├── switcher-icon.demo.vue
│ │ │ └── virtual.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── MotionWrapper.tsx
│ │ ├── Tree.tsx
│ │ ├── TreeNode.tsx
│ │ ├── TreeNodeCheckbox.tsx
│ │ ├── TreeNodeContent.tsx
│ │ ├── TreeNodeSwitcher.tsx
│ │ ├── dnd.tsx
│ │ ├── interface.ts
│ │ ├── keyboard.tsx
│ │ ├── styles
│ │ │ ├── index.cssr.ts
│ │ │ └── rtl.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ ├── light.ts
│ │ └── rtl.ts
│ └── tests
│ │ ├── Tree.spec.ts
│ │ └── server.spec.tsx
├── tsconfig.cjs.json
├── tsconfig.demo.json
├── tsconfig.esm.json
├── typography
│ ├── demos
│ │ ├── enUS
│ │ │ ├── header.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── router-link.demo.vue
│ │ │ ├── tags.demo.vue
│ │ │ └── text.demo.vue
│ │ └── zhCN
│ │ │ ├── header.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── router-link.demo.vue
│ │ │ ├── tags.demo.vue
│ │ │ └── text.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── a.tsx
│ │ ├── blockquote.tsx
│ │ ├── create-header.ts
│ │ ├── headers.ts
│ │ ├── hr.tsx
│ │ ├── li.tsx
│ │ ├── ol.tsx
│ │ ├── p.tsx
│ │ ├── styles
│ │ │ ├── a.cssr.ts
│ │ │ ├── blockquote.cssr.ts
│ │ │ ├── header.cssr.ts
│ │ │ ├── hr.cssr.ts
│ │ │ ├── list.cssr.ts
│ │ │ ├── p.cssr.ts
│ │ │ └── text.cssr.ts
│ │ ├── text.tsx
│ │ └── ul.tsx
│ ├── styles
│ │ ├── _common.ts
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Typography.spec.ts
│ │ ├── __snapshots__
│ │ └── Typography.spec.ts.snap
│ │ └── server.spec.tsx
├── upload
│ ├── demos
│ │ ├── enUS
│ │ │ ├── abstract.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── before-upload.demo.vue
│ │ │ ├── controlled.demo.vue
│ │ │ ├── custom-download.demo.vue
│ │ │ ├── custom-request.demo.vue
│ │ │ ├── default-files.demo.vue
│ │ │ ├── download.demo.vue
│ │ │ ├── drag.demo.vue
│ │ │ ├── image-card-style.demo.vue
│ │ │ ├── image-style.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── on-finish.demo.vue
│ │ │ └── submit-manually.demo.vue
│ │ └── zhCN
│ │ │ ├── abstract.demo.vue
│ │ │ ├── basic.demo.vue
│ │ │ ├── before-upload.demo.vue
│ │ │ ├── controlled.demo.vue
│ │ │ ├── custom-download.demo.vue
│ │ │ ├── custom-request.demo.vue
│ │ │ ├── debug.demo.vue
│ │ │ ├── default-files.demo.vue
│ │ │ ├── download.demo.vue
│ │ │ ├── drag.demo.vue
│ │ │ ├── image-card-style.demo.vue
│ │ │ ├── image-style.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── on-finish.demo.vue
│ │ │ └── submit-manually.demo.vue
│ ├── index.ts
│ ├── src
│ │ ├── Upload.tsx
│ │ ├── UploadDragger.tsx
│ │ ├── UploadFile.tsx
│ │ ├── UploadFileList.tsx
│ │ ├── UploadProgress.tsx
│ │ ├── UploadTrigger.tsx
│ │ ├── icons.tsx
│ │ ├── interface.ts
│ │ ├── public-types.ts
│ │ ├── styles
│ │ │ └── index.cssr.ts
│ │ └── utils.ts
│ ├── styles
│ │ ├── dark.ts
│ │ ├── index.ts
│ │ └── light.ts
│ └── tests
│ │ ├── Upload.spec.tsx
│ │ └── server.spec.tsx
├── version.ts
├── virtual-list
│ ├── demos
│ │ ├── enUS
│ │ │ ├── basic.demo.vue
│ │ │ ├── dynamic-size.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── keep-alive.demo.vue
│ │ │ └── scroll.demo.vue
│ │ └── zhCN
│ │ │ ├── basic.demo.vue
│ │ │ ├── dynamic-size.demo.vue
│ │ │ ├── index.demo-entry.md
│ │ │ ├── keep-alive.demo.vue
│ │ │ └── scroll.demo.vue
│ ├── index.ts
│ └── src
│ │ └── VirtualList.tsx
└── watermark
│ ├── demos
│ ├── enUS
│ │ ├── basic.demo.vue
│ │ ├── custom.demo.vue
│ │ ├── fullscreen.demo.vue
│ │ ├── image.demo.vue
│ │ ├── index.demo-entry.md
│ │ └── multiline.demo.vue
│ └── zhCN
│ │ ├── basic.demo.vue
│ │ ├── custom.demo.vue
│ │ ├── fullscreen.demo.vue
│ │ ├── image.demo.vue
│ │ ├── index.demo-entry.md
│ │ └── multiline.demo.vue
│ ├── index.ts
│ ├── src
│ ├── Watermark.tsx
│ └── styles
│ │ └── index.cssr.ts
│ ├── styles
│ ├── dark.ts
│ ├── index.ts
│ └── light.ts
│ └── tests
│ ├── Watermark.spec.ts
│ └── server.spec.tsx
├── test.html
├── themes
└── tusimple
│ ├── .npmignore
│ ├── README.md
│ ├── package.json
│ ├── src
│ ├── TsConfigProvider.tsx
│ ├── data-table.tsx
│ ├── icons.tsx
│ ├── index.ts
│ ├── theme-overrides-dark.ts
│ ├── theme-overrides-light.ts
│ ├── unconfigurable-style-dark.ts
│ ├── unconfigurable-style-light.ts
│ ├── use-ts-dialog.ts
│ ├── use-ts-message.ts
│ └── vars.ts
│ ├── tsconfig.cjs.json
│ └── tsconfig.esm.json
├── tsconfig.cjs.json
├── tsconfig.esbuild.json
├── tsconfig.esm.json
├── tsconfig.json
├── tsconfig.test.json
├── umd-test
├── index.spec.js
└── setupVue.js
├── vercel.json
├── vite.config.js
├── volar.d.ts
└── vue3.md
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | npx lint-staged
2 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | shell-emulator=true
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | *.cssr.js
2 | *.cssr.ts
3 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "semi": false,
3 | "singleQuote": true,
4 | "printWidth": 80,
5 | "trailingComma": "none",
6 | "proseWrap": "never"
7 | }
8 |
--------------------------------------------------------------------------------
/build/loaders/project-path.js:
--------------------------------------------------------------------------------
1 | const path = require('node:path')
2 |
3 | module.exports = path.resolve(__dirname, '..', '..')
4 |
--------------------------------------------------------------------------------
/build/loaders/test/component.test.md:
--------------------------------------------------------------------------------
1 | # 按钮
2 |
3 | 按钮需要一些说明
4 |
5 | ## 演示
6 |
7 | ```demo
8 | demo1
9 | ```
10 |
11 | ## API
12 |
13 | | 属性 | 说明 | 类型 | 默认值 | 版本 |
14 | | ---- | -------- | ------ | ----------- | ---- |
15 | | type | 按钮类型 | string | `'default'` | |
16 |
--------------------------------------------------------------------------------
/build/vite-plugin-css-render.js:
--------------------------------------------------------------------------------
1 | const terseCssr = require('./utils/terse-cssr')
2 |
3 | module.exports = () => {
4 | return {
5 | name: 'css-render-vite',
6 | transform(src, id) {
7 | if (id.endsWith('.cssr.ts') || id.endsWith('.cssr.js')) {
8 | return terseCssr(src)
9 | }
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/demo/Caveat.md:
--------------------------------------------------------------------------------
1 | # Caveat
2 |
3 | Code is messy here because I've no time to refactor it.
4 |
5 | It works matter.
6 |
--------------------------------------------------------------------------------
/demo/assets/images/naivelogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tusen-ai/naive-ui/5ab9e8e0d763df1efede824599d86428dfff7253/demo/assets/images/naivelogo.png
--------------------------------------------------------------------------------
/demo/pages/docs/changelog/enUS/index.vue:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/demo/pages/docs/changelog/zhCN/index.vue:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/demo/pages/docs/theme/zhCN/index.demo-entry.md:
--------------------------------------------------------------------------------
1 | # 创建适配主题的组件
2 |
3 | 你可能觉得只用内置的组件不够爽,想自己也写适配主题的组件。
4 |
5 | Naive UI 提供一些工具帮助开发者简单的创建支持主题的组件。
6 |
7 | ## 演示
8 |
9 | ```demo
10 | provide-theme
11 | element
12 | use-theme-vars
13 | ```
14 |
--------------------------------------------------------------------------------
/demo/pages/docs/vue3/enUS/index.vue:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/demo/pages/docs/vue3/zhCN/index.vue:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/demo/styles/Metropolis-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tusen-ai/naive-ui/5ab9e8e0d763df1efede824599d86428dfff7253/demo/styles/Metropolis-Bold.woff2
--------------------------------------------------------------------------------
/demo/styles/Metropolis.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'Metropolis';
3 | font-weight: 600;
4 | src: url('./Metropolis-Bold.woff2');
5 | }
--------------------------------------------------------------------------------
/demo/utils/github-url.js:
--------------------------------------------------------------------------------
1 | export const repoUrl = 'https://github.com/tusen-ai/naive-ui'
2 | export const blobUrl = `${repoUrl}/blob/main/`
3 |
--------------------------------------------------------------------------------
/playground/collect-vars.js:
--------------------------------------------------------------------------------
1 | const varRegex = /var\(--([^)]+)\)/g
2 |
3 | function getVars (input) {
4 | console.log(
5 | Array.from(
6 | new Set(Array.from(input.matchAll(varRegex)).map((v) => '// --' + v[1]))
7 | )
8 | .sort()
9 | .join('\n')
10 | )
11 | }
12 |
13 | getVars(document.body.textContent)
14 |
--------------------------------------------------------------------------------
/playground/ssr/build.sh:
--------------------------------------------------------------------------------
1 | webpack ./client.js --mode=development --output-filename=client.js
2 | webpack --config ./webpack.config.server.js
--------------------------------------------------------------------------------
/playground/ssr/client.js:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import App from './app'
3 |
4 | createApp(App).mount('#app')
5 |
--------------------------------------------------------------------------------
/playground/ssr/pre-build.sh:
--------------------------------------------------------------------------------
1 | # make sure cwd is the sh's dir
2 |
3 | cd ./../../
4 |
5 | ./scripts/pre-build-site/pre-build-site.sh
6 |
--------------------------------------------------------------------------------
/playground/ssr/readme.md:
--------------------------------------------------------------------------------
1 | You need to install `webpack` & `webpack-cli` globally.
2 |
3 | ```
4 | ./pre-build.sh
5 | ./build.sh
6 |
7 | node dist/server.js
8 |
9 | # browse localhost:8086
10 | ```
11 |
--------------------------------------------------------------------------------
/playground/ssr/webpack.config.server.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | mode: 'development',
3 | externalsPresets: { node: true },
4 | externals: [/^[@/a-z\-0-9]+$/],
5 | target: 'node',
6 | entry: './server.js',
7 | output: {
8 | filename: 'server.js',
9 | library: {
10 | type: 'commonjs2'
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/playground/testColor.js:
--------------------------------------------------------------------------------
1 | const tinyColor = require('tinycolor2')
2 |
3 | const red = tinyColor('#ce347c').getBrightness()
4 | const green = tinyColor('#00c060').getBrightness()
5 | const orange = tinyColor('#EF8745').getBrightness()
6 | const blue = tinyColor('#2090f0').getBrightness()
7 | console.log(red, green, orange, blue)
8 |
--------------------------------------------------------------------------------
/scripts/gen-version.js:
--------------------------------------------------------------------------------
1 | const version = require('../package.json').version
2 |
3 | require('node:fs').writeFileSync(
4 | require('node:path').resolve(__dirname, '..', 'src', 'version.ts'),
5 | `export default '${version}'\n`
6 | )
7 |
--------------------------------------------------------------------------------
/scripts/md-to-vue.js:
--------------------------------------------------------------------------------
1 | const { convertFilesByComponentName } = require('./utils/loader')
2 |
3 | async function translateMdToVue() {
4 | const componentName = require('node:process').argv[2]
5 | await convertFilesByComponentName(componentName)
6 | }
7 |
8 | translateMdToVue()
9 |
--------------------------------------------------------------------------------
/scripts/post-build-site/post-build-site.sh:
--------------------------------------------------------------------------------
1 | cp site/index.html site/404.html
2 |
3 | rm -rf node_modules/naive-ui
4 |
--------------------------------------------------------------------------------
/scripts/pre-build/pre-cjs-build.js:
--------------------------------------------------------------------------------
1 | // replace lodash-es
2 | const { replaceDefine, srcDir } = require('../utils')
3 |
4 | ;
5 |
6 | (async () => {
7 | await replaceDefine([srcDir], {
8 | '\'lodash-es\'': '\'lodash\''
9 | })
10 | })()
11 |
--------------------------------------------------------------------------------
/src/_internal/README.md:
--------------------------------------------------------------------------------
1 | Themeable components:
2 |
3 | - selection
4 | - select-menu
5 | - clear
6 |
--------------------------------------------------------------------------------
/src/_internal/clear/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from './src/Clear'
2 |
--------------------------------------------------------------------------------
/src/_internal/close/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NBaseClose } from './src/Close'
2 |
--------------------------------------------------------------------------------
/src/_internal/fade-in-expand-transition/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from './src/FadeInExpandTransition'
2 |
--------------------------------------------------------------------------------
/src/_internal/focus-detector/index.tsx:
--------------------------------------------------------------------------------
1 | import FocusDetector from './src/FocusDetector'
2 |
3 | export default FocusDetector
4 |
--------------------------------------------------------------------------------
/src/_internal/icon-switch-transition/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from './src/IconSwitchTransition'
2 |
--------------------------------------------------------------------------------
/src/_internal/icon/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NBaseIcon } from './src/Icon'
2 |
--------------------------------------------------------------------------------
/src/_internal/icons/Switcher.tsx:
--------------------------------------------------------------------------------
1 | import { defineComponent, h } from 'vue'
2 |
3 | export default defineComponent({
4 | name: 'Switcher',
5 | render() {
6 | return (
7 |
10 | )
11 | }
12 | })
13 |
--------------------------------------------------------------------------------
/src/_internal/loading/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from './src/Loading'
2 | export type { BaseLoadingExposedProps } from './src/Loading'
3 |
--------------------------------------------------------------------------------
/src/_internal/menu-mask/index.ts:
--------------------------------------------------------------------------------
1 | export type { MenuMaskRef } from './src/interface'
2 | export { default } from './src/MenuMask'
3 |
--------------------------------------------------------------------------------
/src/_internal/menu-mask/src/interface.ts:
--------------------------------------------------------------------------------
1 | export interface MenuMaskRef {
2 | showOnce: (message: string, duration?: number) => void
3 | }
4 |
--------------------------------------------------------------------------------
/src/_internal/scrollbar/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as NScrollbar,
3 | XScrollbar as NxScrollbar
4 | } from './src/Scrollbar'
5 | export type { ScrollbarInst, ScrollbarProps } from './src/Scrollbar'
6 |
--------------------------------------------------------------------------------
/src/_internal/scrollbar/styles/common.ts:
--------------------------------------------------------------------------------
1 | export const commonVars = {
2 | railInsetHorizontalBottom: 'auto 2px 4px 2px',
3 | railInsetHorizontalTop: '4px 2px auto 2px',
4 | railInsetVerticalRight: '2px 4px 2px auto',
5 | railInsetVerticalLeft: '2px auto 2px 4px',
6 | railColor: 'transparent'
7 | }
8 |
--------------------------------------------------------------------------------
/src/_internal/scrollbar/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { ScrollbarTheme } from './light'
2 | import { commonDark } from '../../../_styles/common'
3 | import { self } from './light'
4 |
5 | const scrollbarDark: ScrollbarTheme = {
6 | name: 'Scrollbar',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default scrollbarDark
12 |
--------------------------------------------------------------------------------
/src/_internal/scrollbar/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as scrollbarDark } from './dark'
2 | export { default as scrollbarLight } from './light'
3 | export type { ScrollbarTheme, ScrollbarThemeVars } from './light'
4 | export { default as scrollbarRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/_internal/scrollbar/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const scrollbarRtl: RtlItem = {
5 | name: 'Scrollbar',
6 | style: rtlStyle
7 | }
8 |
9 | export default scrollbarRtl
10 |
--------------------------------------------------------------------------------
/src/_internal/scrollbar/tests/Scrollbar.spec.ts:
--------------------------------------------------------------------------------
1 | import { mount } from '@vue/test-utils'
2 | import { NScrollbar } from '../index'
3 |
4 | describe('n-scrollbar', () => {
5 | it('should work with import on demand', () => {
6 | mount(NScrollbar)
7 | })
8 | })
9 |
--------------------------------------------------------------------------------
/src/_internal/select-menu/index.ts:
--------------------------------------------------------------------------------
1 | export type { InternalSelectMenuRef } from './src/interface'
2 | export { default } from './src/SelectMenu'
3 |
--------------------------------------------------------------------------------
/src/_internal/select-menu/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as internalSelectMenuDark } from './dark'
2 | export { default as internalSelectMenuLight } from './light'
3 | export type {
4 | InternalSelectMenuTheme,
5 | InternalSelectMenuThemeVars
6 | } from './light'
7 | export { internalSelectMenuRtl } from './rtl'
8 |
--------------------------------------------------------------------------------
/src/_internal/select-menu/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const internalSelectMenuRtl: RtlItem = {
5 | name: 'InternalSelectMenu',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/_internal/selection/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from './src/Selection'
2 | export type { InternalSelectionInst } from './src/Selection'
3 |
--------------------------------------------------------------------------------
/src/_internal/selection/src/interface.ts:
--------------------------------------------------------------------------------
1 | import type { VNodeChild } from 'vue'
2 | import type { SelectOption } from '../../../select/src/interface'
3 |
4 | export type RenderTag = (props: {
5 | option: SelectOption
6 | handleClose: () => void
7 | }) => VNodeChild
8 |
--------------------------------------------------------------------------------
/src/_internal/selection/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | paddingSingle: '0 26px 0 12px',
3 | paddingMultiple: '3px 26px 0 12px',
4 | clearSize: '16px',
5 | arrowSize: '16px'
6 | }
7 |
--------------------------------------------------------------------------------
/src/_internal/selection/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as internalSelectionDark } from './dark'
2 | export { default as internalSelectionLight } from './light'
3 | export type {
4 | InternalSelectionTheme,
5 | InternalSelectionThemeVars
6 | } from './light'
7 | export { internalSelectionRtl } from './rtl'
8 |
--------------------------------------------------------------------------------
/src/_internal/selection/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const internalSelectionRtl: RtlItem = {
5 | name: 'InternalSelection',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/_internal/slot-machine/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from './src/SlotMachine'
2 |
--------------------------------------------------------------------------------
/src/_internal/suffix/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from './src/Suffix'
2 |
--------------------------------------------------------------------------------
/src/_internal/wave/index.ts:
--------------------------------------------------------------------------------
1 | export { default } from './src/Wave'
2 | export type { BaseWaveRef } from './src/Wave'
3 |
--------------------------------------------------------------------------------
/src/_internal/wave/src/styles/index.cssr.ts:
--------------------------------------------------------------------------------
1 | import { cB } from '../../../../_utils/cssr/index'
2 |
3 | export default cB('base-wave', `
4 | position: absolute;
5 | left: 0;
6 | right: 0;
7 | top: 0;
8 | bottom: 0;
9 | border-radius: inherit;
10 | `)
11 |
--------------------------------------------------------------------------------
/src/_mixins/common.ts:
--------------------------------------------------------------------------------
1 | export const cssrAnchorMetaName = 'naive-ui-style'
2 |
--------------------------------------------------------------------------------
/src/_styles/common/index.ts:
--------------------------------------------------------------------------------
1 | export { default as commonDark } from './dark'
2 | export { default as commonLight } from './light'
3 | export type { ThemeCommonVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/_utils/color/index.ts:
--------------------------------------------------------------------------------
1 | import { composite } from 'seemly'
2 |
3 | export function createHoverColor(rgb: string): string {
4 | return composite(rgb, [255, 255, 255, 0.16])
5 | }
6 |
7 | export function createPressedColor(rgb: string): string {
8 | return composite(rgb, [0, 0, 0, 0.12])
9 | }
10 |
--------------------------------------------------------------------------------
/src/_utils/css/color-to-class.ts:
--------------------------------------------------------------------------------
1 | export function color2Class(color: string): string {
2 | return color.replace(/#|\(|\)|,|\s|\./g, '_')
3 | }
4 |
--------------------------------------------------------------------------------
/src/_utils/css/index.ts:
--------------------------------------------------------------------------------
1 | export { color2Class } from './color-to-class'
2 | export { formatLength } from './format-length'
3 | export { rtlInset } from './rtl-inset'
4 |
--------------------------------------------------------------------------------
/src/_utils/css/rtl-inset.ts:
--------------------------------------------------------------------------------
1 | import { getPadding } from 'seemly'
2 |
3 | export function rtlInset(inset: string): string {
4 | const { left, right, top, bottom } = getPadding(inset)
5 | return `${top} ${left} ${bottom} ${right}`
6 | }
7 |
--------------------------------------------------------------------------------
/src/_utils/dom/index.ts:
--------------------------------------------------------------------------------
1 | export { download } from './download'
2 | export { isDocument } from './is-document'
3 |
--------------------------------------------------------------------------------
/src/_utils/dom/is-document.ts:
--------------------------------------------------------------------------------
1 | export function isDocument(node: Node): node is Document {
2 | return node.nodeName === '#document'
3 | }
4 |
--------------------------------------------------------------------------------
/src/_utils/env/browser.ts:
--------------------------------------------------------------------------------
1 | import { isBrowser } from './is-browser'
2 |
3 | export const isChrome = isBrowser && 'chrome' in window
4 | export const isFirefox = isBrowser && navigator.userAgent.includes('Firefox')
5 | export const isSafari
6 | = isBrowser && navigator.userAgent.includes('Safari') && !isChrome
7 |
--------------------------------------------------------------------------------
/src/_utils/env/is-browser.ts:
--------------------------------------------------------------------------------
1 | export const isBrowser
2 | = typeof document !== 'undefined' && typeof window !== 'undefined'
3 |
--------------------------------------------------------------------------------
/src/_utils/env/is-jsdom.ts:
--------------------------------------------------------------------------------
1 | let _isJsdom: boolean | undefined
2 |
3 | export function isJsdom(): boolean {
4 | if (_isJsdom === undefined) {
5 | _isJsdom
6 | = navigator.userAgent.includes('Node.js')
7 | || navigator.userAgent.includes('jsdom')
8 | }
9 | return _isJsdom
10 | }
11 |
--------------------------------------------------------------------------------
/src/_utils/env/is-native-lazy-load.ts:
--------------------------------------------------------------------------------
1 | import { isBrowser } from './is-browser'
2 |
3 | export const isImageSupportNativeLazy
4 | = isBrowser && 'loading' in document.createElement('img')
5 |
--------------------------------------------------------------------------------
/src/_utils/event/index.ts:
--------------------------------------------------------------------------------
1 | const eventSet = new WeakSet()
2 |
3 | export function markEventEffectPerformed(event: Event): void {
4 | eventSet.add(event)
5 | }
6 |
7 | export function eventEffectNotPerformed(event: Event): boolean {
8 | return !eventSet.has(event)
9 | }
10 |
--------------------------------------------------------------------------------
/src/_utils/naive/index.ts:
--------------------------------------------------------------------------------
1 | export { getTitleAttribute } from './attribute'
2 | export type {
3 | ExtractInternalPropTypes,
4 | ExtractPublicPropTypes
5 | } from './extract-public-props'
6 | export type { Mutable } from './mutable'
7 | export { largerSize, smallerSize } from './prop'
8 | export { throwError, warn, warnOnce } from './warn'
9 |
--------------------------------------------------------------------------------
/src/_utils/naive/mutable.ts:
--------------------------------------------------------------------------------
1 | export type Mutable = T extends Record
2 | ? {
3 | -readonly [P in keyof T]: T[P] extends ReadonlyArray
4 | ? Array>
5 | : Mutable
6 | }
7 | : T
8 |
--------------------------------------------------------------------------------
/src/_utils/vue/create-data-key.ts:
--------------------------------------------------------------------------------
1 | export function createDataKey(key: string | number): string {
2 | return typeof key === 'string' ? `s-${key}` : `n-${key}`
3 | }
4 |
--------------------------------------------------------------------------------
/src/_utils/vue/create-injection-key.ts:
--------------------------------------------------------------------------------
1 | import type { InjectionKey } from 'vue'
2 |
3 | export function createInjectionKey(key: string): InjectionKey {
4 | return key as any
5 | }
6 |
--------------------------------------------------------------------------------
/src/_utils/vue/create-ref-setter.ts:
--------------------------------------------------------------------------------
1 | import type { Ref } from 'vue'
2 |
3 | export function createRefSetter(ref: Ref): any {
4 | return (inst: { $el: HTMLElement | null } | null) => {
5 | if (inst) {
6 | ref.value = inst.$el
7 | }
8 | else {
9 | ref.value = null
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/_utils/vue/is-node-v-show-false.ts:
--------------------------------------------------------------------------------
1 | import { type VNode, vShow } from 'vue'
2 |
3 | export function isNodeVShowFalse(vNode: VNode): boolean {
4 | const showDir = vNode.dirs?.find(({ dir }) => dir === vShow)
5 | return !!(showDir && showDir.value === false)
6 | }
7 |
--------------------------------------------------------------------------------
/src/_utils/vue/keep.ts:
--------------------------------------------------------------------------------
1 | export function keep(
2 | object: T,
3 | keys: K[] = [],
4 | rest?: R
5 | ): Pick & R {
6 | const keepedObject: any = {}
7 | keys.forEach((key) => {
8 | keepedObject[key] = (object as any)[key]
9 | })
10 | return Object.assign(keepedObject, rest)
11 | }
12 |
--------------------------------------------------------------------------------
/src/_utils/vue/keysOf.ts:
--------------------------------------------------------------------------------
1 | export function keysOf>(
2 | obj: T
3 | ): Array {
4 | return Object.keys(obj) as any
5 | }
6 |
--------------------------------------------------------------------------------
/src/_utils/vue/wrapper.tsx:
--------------------------------------------------------------------------------
1 | import { defineComponent } from 'vue'
2 |
3 | export const Wrapper = defineComponent({
4 | render() {
5 | return this.$slots.default?.()
6 | }
7 | })
8 |
--------------------------------------------------------------------------------
/src/affix/index.ts:
--------------------------------------------------------------------------------
1 | export { affixProps, default as NAffix } from './src/Affix'
2 | export type { AffixProps } from './src/Affix'
3 |
--------------------------------------------------------------------------------
/src/affix/src/styles/index.cssr.ts:
--------------------------------------------------------------------------------
1 | import { cB, cM } from '../../../_utils/cssr'
2 |
3 | export default cB('affix', [
4 | cM('affixed', {
5 | position: 'fixed'
6 | }, [
7 | cM('absolute-positioned', {
8 | position: 'absolute'
9 | })
10 | ])
11 | ])
12 |
--------------------------------------------------------------------------------
/src/alert/demos/enUS/no-icon.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # No icon
3 |
4 |
5 |
6 |
7 | Yeah I'm back in the U.S.S.R.
8 | You don't know how lucky you are boys
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/alert/demos/zhCN/marquee.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 跑马灯
3 |
4 | 你可以配合 `n-marquee` 实现轮播的效果。
5 |
6 |
7 |
8 |
9 |
10 |
11 | 测试环境又挂了。
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/alert/demos/zhCN/no-icon.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 没有图标
3 |
4 |
5 |
6 |
7 | Yeah I'm back in the U.S.S.R.
8 | You don't know how lucky you are boys
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/alert/index.ts:
--------------------------------------------------------------------------------
1 | export { alertProps, default as NAlert } from './src/Alert'
2 | export type { AlertProps, AlertSlots } from './src/Alert'
3 |
--------------------------------------------------------------------------------
/src/alert/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | iconMargin: '11px 8px 0 12px',
3 | iconMarginRtl: '11px 12px 0 8px',
4 | iconSize: '24px',
5 | closeIconSize: '16px',
6 | closeSize: '20px',
7 | closeMargin: '13px 14px 0 0',
8 | closeMarginRtl: '13px 0 0 14px',
9 | padding: '13px'
10 | }
11 |
--------------------------------------------------------------------------------
/src/alert/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as alertDark } from './dark'
2 | export { default as alertLight } from './light'
3 | export type { AlertTheme, AlertThemeVars } from './light'
4 | export { alertRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/alert/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const alertRtl: RtlItem = {
5 | name: 'Alert',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/anchor/index.ts:
--------------------------------------------------------------------------------
1 | export { anchorProps, default as NAnchor } from './src/AnchorAdapter'
2 | export type { AnchorInst, AnchorProps } from './src/AnchorAdapter'
3 | export { anchorLinkProps, default as NAnchorLink } from './src/Link'
4 | export type { AnchorLinkProps } from './src/Link'
5 |
--------------------------------------------------------------------------------
/src/anchor/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | linkFontSize: '13px',
3 | linkPadding: '0 0 0 16px',
4 | railWidth: '4px'
5 | }
6 |
--------------------------------------------------------------------------------
/src/anchor/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { AnchorTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const anchorDark: AnchorTheme = {
6 | name: 'Anchor',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default anchorDark
12 |
--------------------------------------------------------------------------------
/src/anchor/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as anchorDark } from './dark'
2 | export { default as anchorLight } from './light'
3 | export type { AnchorTheme, AnchorThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/auto-complete/demos/zhCN/status.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 验证状态
3 |
4 | 输入的验证状态可以脱离表单使用。
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/auto-complete/index.ts:
--------------------------------------------------------------------------------
1 | export { autoCompleteProps, default as NAutoComplete } from './src/AutoComplete'
2 | export type { AutoCompleteProps, AutoCompleteSlots } from './src/AutoComplete'
3 | export type {
4 | AutoCompleteDefaultSlotProps,
5 | AutoCompleteGroupOption,
6 | AutoCompleteInst,
7 | AutoCompleteOption
8 | } from './src/interface'
9 |
--------------------------------------------------------------------------------
/src/auto-complete/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as autoCompleteDark } from './dark'
2 | export { default as autoCompleteLight } from './light'
3 | export type { AutoCompleteTheme, AutoCompleteThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/avatar-group/index.ts:
--------------------------------------------------------------------------------
1 | export { avatarGroupProps, default as NAvatarGroup } from './src/AvatarGroup'
2 | export type {
3 | AvatarGroupOption,
4 | AvatarGroupProps,
5 | AvatarGroupSlots
6 | } from './src/AvatarGroup'
7 | export type {
8 | AvatarGroupAvatarSlotProps,
9 | AvatarGroupRestSlotProps
10 | } from './src/interface'
11 |
--------------------------------------------------------------------------------
/src/avatar-group/src/interface.ts:
--------------------------------------------------------------------------------
1 | import type { AvatarGroupOption } from './AvatarGroup'
2 |
3 | export interface AvatarGroupAvatarSlotProps {
4 | option: AvatarGroupOption
5 | }
6 |
7 | export interface AvatarGroupRestSlotProps {
8 | options: Array
9 | rest: number
10 | }
11 |
--------------------------------------------------------------------------------
/src/avatar-group/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as avatarGroupDark } from './dark'
2 | export { default as avatarGroupLight } from './light'
3 | export type { AvatarGroupTheme, AvatarGroupThemeVars } from './light'
4 | export { avatarGroupRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/avatar-group/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/avatar-group-rtl.cssr'
3 |
4 | export const avatarGroupRtl: RtlItem = {
5 | name: 'AvatarGroup',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/avatar/demos/enUS/badge.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Badge
3 |
4 | Using it with `badge` would be nice (if you like tons of notifications).
5 |
6 |
7 |
8 |
9 | App
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/avatar/demos/enUS/color.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Color
3 |
4 | You can set colors related to things you want to eat.
5 |
6 |
7 |
8 |
14 | M
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/avatar/demos/enUS/fallback.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Fallback
3 |
4 | Show 07akioni if loading fails.
5 |
6 |
7 |
8 |
14 |
15 |
--------------------------------------------------------------------------------
/src/avatar/demos/zhCN/badge.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 标记
3 |
4 | 和 `Badge` 一起用也挺好的 (如果你喜欢看到一堆一堆的推送)。
5 |
6 |
7 |
8 |
9 | App
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/avatar/demos/zhCN/color.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 颜色
3 |
4 | 你可以把它设成某种和你爱吃的东西有关的颜色。
5 |
6 |
7 |
8 |
14 | M
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/avatar/demos/zhCN/fallback.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 加载失败时显示的图像
3 |
4 | 下面的头像加载失败时会展示 07akioni。
5 |
6 |
7 |
8 |
14 |
15 |
--------------------------------------------------------------------------------
/src/avatar/demos/zhCN/icon.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 图标
3 |
4 | 我喜欢用图标当头像。
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/avatar/index.ts:
--------------------------------------------------------------------------------
1 | export { avatarProps, default as NAvatar } from './src/Avatar'
2 | export type { AvatarProps, AvatarSlots } from './src/Avatar'
3 |
--------------------------------------------------------------------------------
/src/avatar/src/context.ts:
--------------------------------------------------------------------------------
1 | import type { AvatarGroupInjection } from '../../avatar-group/src/AvatarGroup'
2 | import { createInjectionKey } from '../../_utils'
3 |
4 | export const avatarGroupInjectionKey
5 | = createInjectionKey('n-avatar-group')
6 |
--------------------------------------------------------------------------------
/src/avatar/src/interface.ts:
--------------------------------------------------------------------------------
1 | export type Size = number | 'small' | 'medium' | 'large'
2 | export type ObjectFit = 'fill' | 'contain' | 'cover' | 'none' | 'scale-down'
3 |
--------------------------------------------------------------------------------
/src/avatar/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { AvatarTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const avatarDark: AvatarTheme = {
6 | name: 'Avatar',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default avatarDark
12 |
--------------------------------------------------------------------------------
/src/avatar/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as avatarDark } from './dark'
2 | export { default as avatarLight } from './light'
3 | export type { AvatarTheme, AvatarThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/back-top/demos/enUS/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Basic
3 |
4 | BackTop will find its first scrollable ascendant element and listen scroll event on it.
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/back-top/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础用法
3 |
4 | BackTop 会找到首个可滚动的祖先元素并且监听它的滚动事件。
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/back-top/index.ts:
--------------------------------------------------------------------------------
1 | export { backTopProps, default as NBackTop } from './src/BackTop'
2 | export type { BackTopProps } from './src/BackTop'
3 |
--------------------------------------------------------------------------------
/src/back-top/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | width: '44px',
3 | height: '44px',
4 | borderRadius: '22px',
5 | iconSize: '26px'
6 | }
7 |
--------------------------------------------------------------------------------
/src/back-top/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as backTopDark } from './dark'
2 | export { default as backTopLight } from './light'
3 | export type { BackTopTheme, BackTopThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/badge/demos/enUS/color.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Customizing color
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/badge/demos/zhCN/color.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 自定义颜色
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/badge/index.ts:
--------------------------------------------------------------------------------
1 | export { badgeProps, default as NBadge } from './src/Badge'
2 | export type { BadgeProps } from './src/Badge'
3 |
--------------------------------------------------------------------------------
/src/badge/src/styles/rtl.cssr.ts:
--------------------------------------------------------------------------------
1 | import { cB, cM } from '../../../_utils/cssr'
2 |
3 | export default cB('badge', [
4 | cM('rtl', `
5 | direction: rtl;
6 | `, [
7 | cB('badge-sup', `
8 | right: 100%;
9 | left: unset;
10 | transform: translateX(50%);
11 | direction: initial;
12 | `)
13 | ])
14 | ])
15 |
--------------------------------------------------------------------------------
/src/badge/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as badgeDark } from './dark'
2 | export { default as badgeLight } from './light'
3 | export type { BadgeTheme, BadgeThemeVars } from './light'
4 | export { badgeRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/badge/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const badgeRtl: RtlItem = {
5 | name: 'Badge',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/breadcrumb/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | fontWeightActive: '400'
3 | }
4 |
--------------------------------------------------------------------------------
/src/breadcrumb/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { BreadcrumbTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const breadcrumbDark: BreadcrumbTheme = {
6 | name: 'Breadcrumb',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default breadcrumbDark
12 |
--------------------------------------------------------------------------------
/src/breadcrumb/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as breadcrumbDark } from './dark'
2 | export { default as breadcrumbLight } from './light'
3 | export type { BreadcrumbTheme, BreadcrumbThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/button-group/index.ts:
--------------------------------------------------------------------------------
1 | export { buttonGroupProps, default as NButtonGroup } from './src/ButtonGroup'
2 | export type { ButtonGroupProps } from './src/ButtonGroup'
3 |
--------------------------------------------------------------------------------
/src/button-group/src/context.ts:
--------------------------------------------------------------------------------
1 | import type { ButtonGroupInjection } from './ButtonGroup'
2 | import { createInjectionKey } from '../../_utils'
3 |
4 | export const buttonGroupInjectionKey
5 | = createInjectionKey('n-button-group')
6 |
--------------------------------------------------------------------------------
/src/button-group/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { ButtonGroupTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 |
4 | const buttonGroupDark: ButtonGroupTheme = {
5 | name: 'ButtonGroup',
6 | common: commonDark
7 | }
8 |
9 | export default buttonGroupDark
10 |
--------------------------------------------------------------------------------
/src/button-group/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as buttonGroupDark } from './dark'
2 | export { default as buttonGroupLight } from './light'
3 | export { buttonGroupRtl } from './rtl'
4 |
--------------------------------------------------------------------------------
/src/button-group/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const buttonGroupRtl: RtlItem = {
5 | name: 'ButtonGroup',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/button/demos/enUS/disabled.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Disabled
3 |
4 | Buttons can be disabled.
5 |
6 |
7 |
8 |
9 | Disabled
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/button/demos/zhCN/disabled.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 禁用
3 |
4 | 按钮可以被禁用。
5 |
6 |
7 |
8 |
9 | 不许点
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/button/demos/zhCN/tag.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 标签
3 |
4 | 你可以把按钮渲染成不同的标签,比如 ``。
5 |
6 |
7 |
8 |
15 | 安妮薇时报
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/button/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | buttonProps,
3 | default as NButton,
4 | XButton as NxButton
5 | } from './src/Button'
6 | export type { ButtonProps, ButtonSlots } from './src/Button'
7 |
--------------------------------------------------------------------------------
/src/button/src/interface.ts:
--------------------------------------------------------------------------------
1 | export type Size = 'tiny' | 'small' | 'medium' | 'large'
2 |
3 | export type Type =
4 | | 'default'
5 | | 'tertiary'
6 | | 'primary'
7 | | 'info'
8 | | 'success'
9 | | 'warning'
10 | | 'error'
11 |
--------------------------------------------------------------------------------
/src/button/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as buttonDark } from './dark'
2 | export { default as buttonLight } from './light'
3 | export type { ButtonTheme, ButtonThemeVars } from './light'
4 | export { buttonRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/button/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const buttonRtl: RtlItem = {
5 | name: 'Button',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/calendar/index.ts:
--------------------------------------------------------------------------------
1 | export { calendarProps, default as NCalendar } from './src/Calendar'
2 | export type { CalendarProps } from './src/Calendar'
3 |
--------------------------------------------------------------------------------
/src/calendar/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | titleFontSize: '22px'
3 | }
4 |
--------------------------------------------------------------------------------
/src/calendar/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as calendarDark } from './dark'
2 | export { default as calendarLight } from './light'
3 | export type { CalendarTheme, CalendarThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/card/demos/enUS/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Basic
3 |
4 | A basic card.
5 |
6 |
7 |
8 |
9 | Card Content
10 |
11 |
12 |
13 |
18 |
--------------------------------------------------------------------------------
/src/card/demos/enUS/border.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Border
3 |
4 | Card can be used without border.
5 |
6 |
7 |
8 |
9 | Card Content
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/card/demos/enUS/hoverable.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Hoverable
3 |
4 |
5 |
6 |
7 | Card Content
8 |
9 |
10 |
11 |
16 |
--------------------------------------------------------------------------------
/src/card/demos/enUS/no-title.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # No title
3 |
4 | Nobody said a card must have a title.
5 |
6 |
7 |
8 | No title
9 |
10 |
--------------------------------------------------------------------------------
/src/card/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础用法
3 |
4 | 基础卡片
5 |
6 |
7 |
8 |
9 | 卡片内容
10 |
11 |
12 |
13 |
18 |
--------------------------------------------------------------------------------
/src/card/demos/zhCN/border.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 边框
3 |
4 | 卡片可以没有边框。
5 |
6 |
7 |
8 |
9 | 卡片内容
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/card/demos/zhCN/hoverable.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 可悬浮
3 |
4 |
5 |
6 |
7 | 卡片内容
8 |
9 |
10 |
11 |
16 |
--------------------------------------------------------------------------------
/src/card/demos/zhCN/no-title.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 没有标题
3 |
4 | 谁说卡片一定要有标题呢。
5 |
6 |
7 |
8 | 没有标题
9 |
10 |
--------------------------------------------------------------------------------
/src/card/index.ts:
--------------------------------------------------------------------------------
1 | export { cardProps, default as NCard } from './src/Card'
2 | export type { CardProps, CardSegmented, CardSlots } from './src/Card'
3 |
--------------------------------------------------------------------------------
/src/card/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as cardDark } from './dark'
2 | export { default as cardLight } from './light'
3 | export type { CardTheme, CardThemeVars } from './light'
4 | export { cardRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/card/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const cardRtl: RtlItem = {
5 | name: 'Card',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/carousel/src/utils/event.ts:
--------------------------------------------------------------------------------
1 | export function isTouchEvent(e: MouseEvent | TouchEvent): e is TouchEvent {
2 | return window.TouchEvent && e instanceof window.TouchEvent
3 | }
4 |
--------------------------------------------------------------------------------
/src/carousel/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { CarouselTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const carouselDark: CarouselTheme = {
6 | name: 'Carousel',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default carouselDark
12 |
--------------------------------------------------------------------------------
/src/carousel/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as carouselDark } from './dark'
2 | export { default as carouselLight } from './light'
3 | export type { CarouselTheme, CarouselThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/cascader/demos/enUS/status.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Validation status
3 |
4 | Validation status can be applied outside form.
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/cascader/demos/zhCN/status.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 验证状态
3 |
4 | 输入的验证状态可以脱离表单使用。
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/cascader/index.ts:
--------------------------------------------------------------------------------
1 | export { cascaderProps, default as NCascader } from './src/Cascader'
2 | export type { CascaderProps, CascaderSlots } from './src/Cascader'
3 | export type { CascaderInst, CascaderOption } from './src/interface'
4 |
--------------------------------------------------------------------------------
/src/cascader/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as cascaderDark } from './dark'
2 | export { default as cascaderLight } from './light'
3 | export type { CascaderTheme, CascaderThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/checkbox/demos/zhCN/size.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 尺寸
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/checkbox/src/LineMark.tsx:
--------------------------------------------------------------------------------
1 | import type { VNode } from 'vue'
2 | import { h } from 'vue'
3 |
4 | export default (): VNode => (
5 |
8 | )
9 |
--------------------------------------------------------------------------------
/src/checkbox/src/styles/rtl.cssr.ts:
--------------------------------------------------------------------------------
1 | import { cB, cM } from '../../../_utils/cssr'
2 |
3 | export default cB('checkbox', [
4 | cM('rtl', `
5 | direction: rtl;
6 | `)
7 | ])
8 |
--------------------------------------------------------------------------------
/src/checkbox/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | sizeSmall: '14px',
3 | sizeMedium: '16px',
4 | sizeLarge: '18px',
5 | labelPadding: '0 8px',
6 | labelFontWeight: '400'
7 | }
8 |
--------------------------------------------------------------------------------
/src/checkbox/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as checkboxDark } from './dark'
2 | export { default as checkboxLight } from './light'
3 | export type { CheckboxTheme, CheckboxThemeVars } from './light'
4 | export { checkboxRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/checkbox/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const checkboxRtl: RtlItem = {
5 | name: 'Checkbox',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/code/index.ts:
--------------------------------------------------------------------------------
1 | export { codeProps, default as NCode } from './src/Code'
2 | export type { CodeProps } from './src/Code'
3 |
--------------------------------------------------------------------------------
/src/code/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as codeDark } from './dark'
2 | export { default as codeLight } from './light'
3 | export type { CodeTheme, CodeThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/collapse-transition/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | collapseTransitionProps,
3 | default as NCollapseTransition
4 | } from './src/CollapseTransition'
5 | export type { CollapseTransitionProps } from './src/CollapseTransition'
6 |
--------------------------------------------------------------------------------
/src/collapse-transition/src/styles/index.cssr.ts:
--------------------------------------------------------------------------------
1 | import { fadeInHeightExpandTransition } from '../../../_styles/transitions/fade-in-height-expand.cssr'
2 | import { cB } from '../../../_utils/cssr'
3 |
4 | export default cB('collapse-transition', {
5 | width: '100%'
6 | }, [
7 | fadeInHeightExpandTransition()
8 | ])
9 |
--------------------------------------------------------------------------------
/src/collapse-transition/src/styles/rtl.cssr.ts:
--------------------------------------------------------------------------------
1 | import { cB, cM } from '../../../_utils/cssr'
2 |
3 | export default cB('collapse-transition', [
4 | cM('rtl', `
5 | direction: rtl;
6 | text-align: right;
7 | `)
8 | ])
9 |
--------------------------------------------------------------------------------
/src/collapse-transition/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as collapseTransitionDark } from './dark'
2 | export { default as collapseTransitionLight } from './light'
3 | export type {
4 | CollapseTransitionTheme,
5 | CollapseTransitionThemeVars
6 | } from './light'
7 | export { collapseTransitionRtl } from './rtl'
8 |
--------------------------------------------------------------------------------
/src/collapse-transition/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const collapseTransitionRtl: RtlItem = {
5 | name: 'CollapseTransition',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/collapse/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { CollapseTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const collapseDark: CollapseTheme = {
6 | name: 'Collapse',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default collapseDark
12 |
--------------------------------------------------------------------------------
/src/collapse/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as collapseDark } from './dark'
2 | export { default as collapseLight } from './light'
3 | export type { CollapseTheme, CollapseThemeVars } from './light'
4 | export { collapseRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/collapse/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const collapseRtl: RtlItem = {
5 | name: 'Collapse',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/color-picker/demos/enUS/actions.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Clearable
3 |
4 | If you want the color picker to be clearable, you can add `'clear'` in `'actions'` prop.
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/color-picker/demos/enUS/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Basic
3 |
4 | A basic color picker. Note: when choosing a color in a particular mode, that's the mode that will be used.
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/color-picker/demos/enUS/disabled.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Disabled
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/color-picker/demos/enUS/modes.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Set mode
3 |
4 | Use `modes` to set restrict the available modes.
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/color-picker/demos/enUS/size.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Size
3 |
4 | `small`, `medium`, `large`.
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/color-picker/demos/zhCN/actions.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 可清除
3 |
4 | 如果你希望颜色选择器可以清空,你可以在 `'actions'` 属性中添加 `'clear'`。
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/color-picker/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础用法
3 |
4 | 一个基本的颜色选择器。注意如果你在某个模式下选择了值,那么颜色选择器的值的格式会跟随模式。
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/color-picker/demos/zhCN/close-debug.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Close debug
3 |
4 |
5 |
6 |
7 |
8 | Stop mousedown
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/color-picker/demos/zhCN/disabled.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 禁用
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/color-picker/demos/zhCN/modes.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 设定模式
3 |
4 | 使用 `modes` 设定可选模式。
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/color-picker/demos/zhCN/native.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 原生
3 |
4 | 我们提供了一种通过点击颜色预览块来触发浏览器原生的颜色选择器的方式,因为浏览器厂商在原生的颜色选择器上实现了一些很棒的功能,你可能会需要。
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/color-picker/demos/zhCN/size.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 尺寸
3 |
4 | `small`、`medium`、`large`。
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/color-picker/demos/zhCN/swatches.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 色板
3 |
4 | 你也可以预设一个色板供用户选择。
5 |
6 |
7 |
8 |
17 |
18 |
--------------------------------------------------------------------------------
/src/color-picker/index.ts:
--------------------------------------------------------------------------------
1 | export { colorPickerProps, default as NColorPicker } from './src/ColorPicker'
2 | export type { ColorPickerProps, ColorPickerSlots } from './src/ColorPicker'
3 |
--------------------------------------------------------------------------------
/src/color-picker/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as colorPickerDark } from './dark'
2 | export { default as colorPickerLight } from './light'
3 | export type { ColorPickerTheme, ColorPickerThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/composables/index.ts:
--------------------------------------------------------------------------------
1 | export { useThemeVars } from './use-theme-vars'
2 |
--------------------------------------------------------------------------------
/src/config-provider/demos/enUS/inherit-theme.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Inherit theme
3 |
4 | If you don't set theme of `n-config-provider`, the theme of `n-config-provider` is inherited by default.
5 |
6 |
7 |
8 |
9 | Oops
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/config-provider/demos/enUS/transparent.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # No wrapper DOM
3 |
4 | If you don't need wrapper DOM, set `abstract` on it.
5 |
6 |
7 |
8 |
9 |
10 | No Wrapper DOM
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/config-provider/demos/zhCN/inherit-theme.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 继承主题
3 |
4 | 如果不设置 `n-config-provider` 的主题,则 `n-config-provider` 主题默认继承外面的主题。
5 |
6 |
7 |
8 |
9 | 噢
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/config-provider/demos/zhCN/transparent.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 不需要包裹 DOM
3 |
4 | 如果不需要包裹 DOM,设置 `abstract`。
5 |
6 |
7 |
8 |
9 |
10 | 无包裹 DOM
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/config-provider/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | configProviderProps,
3 | default as NConfigProvider
4 | } from './src/ConfigProvider'
5 | export type { ConfigProviderProps } from './src/ConfigProvider'
6 | export * from './src/interface'
7 |
--------------------------------------------------------------------------------
/src/config-provider/src/config.ts:
--------------------------------------------------------------------------------
1 | export const defaultBreakpoints = {
2 | xs: 0, // mobile
3 | s: 640, // tablet
4 | m: 1024, // laptop s
5 | l: 1280, // laptop
6 | xl: 1536, // laptop l
7 | xxl: 1920 // normal desktop display
8 | } as const
9 |
--------------------------------------------------------------------------------
/src/config-provider/src/context.ts:
--------------------------------------------------------------------------------
1 | import type { ConfigProviderInjection } from './internal-interface'
2 | import { createInjectionKey } from '../../_utils'
3 |
4 | export const configProviderInjectionKey
5 | = createInjectionKey('n-config-provider')
6 |
--------------------------------------------------------------------------------
/src/config-provider/src/katex.ts:
--------------------------------------------------------------------------------
1 | import type katex from 'katex'
2 |
3 | export type Katex = typeof katex
4 |
--------------------------------------------------------------------------------
/src/config-provider/tests/ConfigProvider.spec.ts:
--------------------------------------------------------------------------------
1 | import { mount } from '@vue/test-utils'
2 | import { NConfigProvider } from '../index'
3 |
4 | describe('n-config-provider', () => {
5 | it('should work with import on demand', () => {
6 | mount(NConfigProvider)
7 | })
8 | })
9 |
--------------------------------------------------------------------------------
/src/countdown/index.ts:
--------------------------------------------------------------------------------
1 | export { countdownProps, default as NCountdown } from './src/Countdown'
2 | export type {
3 | CountdownInst,
4 | CountdownProps,
5 | CountdownTimeInfo
6 | } from './src/Countdown'
7 |
--------------------------------------------------------------------------------
/src/data-table/src/publicTypes.ts:
--------------------------------------------------------------------------------
1 | import type { TableBaseColumn } from './interface'
2 |
3 | export type DataTableGetCsvCell = (
4 | value: any,
5 | rowData: object,
6 | column: TableBaseColumn
7 | ) => string
8 | export type DataTableGetCsvHeader = (column: TableBaseColumn) => string
9 |
--------------------------------------------------------------------------------
/src/data-table/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as dataTableDark } from './dark'
2 | export { default as dataTableLight } from './light'
3 | export type { DataTableTheme, DataTableThemeVars } from './light'
4 | export { DataTableRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/date-picker/demos/enUS/panel.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Use panel only
3 |
4 | It may be useful sometimes.
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/date-picker/demos/enUS/status.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Validation status
3 |
4 | Validation status can be applied outside form.
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/date-picker/demos/zhCN/panel.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 只使用面板
3 |
4 | 这个功能或许有的时候能管点用,我实在不忍心看大家强行调样式。
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/date-picker/demos/zhCN/status.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 验证状态
3 |
4 | 输入的验证状态可以脱离表单使用。
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/date-picker/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NDatePicker } from './src/DatePicker'
2 | export type { DatePickerSlots } from './src/DatePicker'
3 | export { datePickerProps } from './src/props'
4 | export type * from './src/public-types'
5 |
--------------------------------------------------------------------------------
/src/date-picker/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as datePickerDark } from './dark'
2 | export { default as datePickerLight } from './light'
3 | export type { DatePickerTheme, DatePickerThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/descriptions/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { DescriptionsTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const descriptionsDark: DescriptionsTheme = {
6 | name: 'Descriptions',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default descriptionsDark
12 |
--------------------------------------------------------------------------------
/src/descriptions/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as descriptionsDark } from './dark'
2 | export { default as descriptionsLight } from './light'
3 | export type { DescriptionsTheme, DescriptionsThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/dialog/src/interface.ts:
--------------------------------------------------------------------------------
1 | export type IconPlacement = 'left' | 'top'
2 |
--------------------------------------------------------------------------------
/src/dialog/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as dialogDark } from './dark'
2 | export { default as dialogLight } from './light'
3 | export type { DialogTheme, DialogThemeVars } from './light'
4 | export { dialogRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/dialog/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const dialogRtl: RtlItem = {
5 | name: 'Dialog',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/discrete/index.ts:
--------------------------------------------------------------------------------
1 | export { createDiscreteApi } from './src/discrete'
2 | export type { DiscreteApi, DiscreteApiOptions } from './src/interface'
3 |
--------------------------------------------------------------------------------
/src/divider/demos/enUS/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Basic
3 |
4 |
5 |
6 | Oops
7 |
8 | Oops
9 |
10 |
--------------------------------------------------------------------------------
/src/divider/demos/enUS/vertical.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Vertical
3 |
4 |
5 |
6 | It isnot clearto see, emmm...
7 |
8 |
--------------------------------------------------------------------------------
/src/divider/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础
3 |
4 |
5 |
6 | 啊
7 |
8 | 啊
9 |
10 |
--------------------------------------------------------------------------------
/src/divider/demos/zhCN/vertical.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 垂直
3 |
4 |
5 |
6 | 这个看起来好像不是很显眼,额...
7 |
8 |
--------------------------------------------------------------------------------
/src/divider/index.ts:
--------------------------------------------------------------------------------
1 | export { dividerProps, default as NDivider } from './src/Divider'
2 | export type { DividerProps } from './src/Divider'
3 |
--------------------------------------------------------------------------------
/src/divider/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { DividerTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const dividerDark: DividerTheme = {
6 | name: 'Divider',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default dividerDark
12 |
--------------------------------------------------------------------------------
/src/divider/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as dividerDark } from './dark'
2 | export { default as dividerLight } from './light'
3 | export type { DividerTheme, DividerThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/drawer/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as drawerDark } from './dark'
2 | export { default as drawerLight } from './light'
3 | export type { DrawerTheme, DrawerThemeVars } from './light'
4 | export { default as drawerRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/dropdown/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as dropdownDark } from './dark'
2 | export { default as dropdownLight } from './light'
3 | export type { DropdownTheme, DropdownThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/dynamic-input/index.ts:
--------------------------------------------------------------------------------
1 | export { dynamicInputProps, default as NDynamicInput } from './src/DynamicInput'
2 | export type { DynamicInputProps, DynamicInputSlots } from './src/DynamicInput'
3 | export type {
4 | DynamicInputActionSlotProps,
5 | DynamicInputDefaultSlotProps
6 | } from './src/interface'
7 |
--------------------------------------------------------------------------------
/src/dynamic-input/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | actionMargin: '0 0 0 20px',
3 | actionMarginRtl: '0 20px 0 0'
4 | }
5 |
--------------------------------------------------------------------------------
/src/dynamic-input/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as dynamicInputDark } from './dark'
2 | export { default as dynamicInputLight } from './light'
3 | export type { DynamicInputTheme, DynamicInputThemeVars } from './light'
4 | export { dynamicInputRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/dynamic-tags/index.ts:
--------------------------------------------------------------------------------
1 | export { dynamicTagsProps, default as NDynamicTags } from './src/DynamicTags'
2 | export type { DynamicTagsProps, DynamicTagsSlots } from './src/DynamicTags'
3 | export type {
4 | DynamicTagsInputSlotProps,
5 | DynamicTagsOption,
6 | DynamicTagsTriggerSlotProps
7 | } from './src/interface'
8 |
--------------------------------------------------------------------------------
/src/dynamic-tags/src/styles/index.cssr.ts:
--------------------------------------------------------------------------------
1 | import { cB } from '../../../_utils/cssr'
2 |
3 | // vars:
4 | // --input-width
5 | export default cB('dynamic-tags', [
6 | cB('input', {
7 | minWidth: 'var(--n-input-width)'
8 | })
9 | ])
10 |
--------------------------------------------------------------------------------
/src/dynamic-tags/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as dynamicTagsDark } from './dark'
2 | export { default as dynamicTagsLight } from './light'
3 | export type { DynamicTagsTheme, DynamicTagsThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/element/index.ts:
--------------------------------------------------------------------------------
1 | export { elementProps, default as NElement } from './src/Element'
2 | export { default as NEl } from './src/Element'
3 | export type { ElementProps } from './src/Element'
4 |
--------------------------------------------------------------------------------
/src/element/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { ElementTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 |
4 | const elementDark: ElementTheme = {
5 | name: 'Element',
6 | common: commonDark
7 | }
8 |
9 | export default elementDark
10 |
--------------------------------------------------------------------------------
/src/element/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as elementDark } from './dark'
2 | export { default as elementLight } from './light'
3 | export type { ElementTheme } from './light'
4 |
--------------------------------------------------------------------------------
/src/element/styles/light.ts:
--------------------------------------------------------------------------------
1 | import type { Theme } from '../../_mixins'
2 | import { commonLight } from '../../_styles/common'
3 |
4 | const elementLight: Theme<'Element'> = {
5 | name: 'Element',
6 | common: commonLight
7 | }
8 |
9 | export default elementLight
10 | export type ElementTheme = typeof elementLight
11 |
--------------------------------------------------------------------------------
/src/ellipsis/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础
3 |
4 | 带弹出提示基本的单行省略。
5 |
6 |
7 |
8 |
9 | 住在我心里孤独的 孤独的海怪 痛苦之王 开始厌倦 深海的光 停滞的海浪
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/ellipsis/demos/zhCN/width-debug.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Width debug
3 |
4 |
5 |
6 |
7 | 624748504
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/ellipsis/index.ts:
--------------------------------------------------------------------------------
1 | export { ellipsisProps, default as NEllipsis } from './src/Ellipsis'
2 | export type { EllipsisProps, EllipsisSlots } from './src/Ellipsis'
3 | export { NPerformantEllipsis } from './src/PerformantEllipsis'
4 |
--------------------------------------------------------------------------------
/src/ellipsis/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as ellipsisDark } from './dark'
2 | export { default as ellipsisLight } from './light'
3 | export type { EllipsisTheme } from './light'
4 |
--------------------------------------------------------------------------------
/src/empty/demos/enUS/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Basic
3 |
4 |
5 |
6 |
7 |
8 |
9 | Find Something New
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/empty/demos/enUS/locale-debug.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Locale Debug
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/empty/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础用法
3 |
4 |
5 |
6 |
7 |
8 |
9 | 看看别的
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/empty/demos/zhCN/locale-debug.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Locale Debug
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/empty/index.ts:
--------------------------------------------------------------------------------
1 | export { emptyProps, default as NEmpty } from './src/Empty'
2 | export type { EmptyProps, EmptySlots } from './src/Empty'
3 |
--------------------------------------------------------------------------------
/src/empty/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | iconSizeTiny: '28px',
3 | iconSizeSmall: '34px',
4 | iconSizeMedium: '40px',
5 | iconSizeLarge: '46px',
6 | iconSizeHuge: '52px'
7 | }
8 |
--------------------------------------------------------------------------------
/src/empty/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { EmptyTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const emptyDark: EmptyTheme = {
6 | name: 'Empty',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default emptyDark
12 |
--------------------------------------------------------------------------------
/src/empty/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as emptyDark } from './dark'
2 | export { default as emptyLight } from './light'
3 | export type { EmptyTheme, EmptyThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/equation/index.ts:
--------------------------------------------------------------------------------
1 | export { equationProps, Equation as NEquation } from './src/Equation'
2 | export type { EquationProps } from './src/Equation'
3 |
--------------------------------------------------------------------------------
/src/equation/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { EquationTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const equationDark: EquationTheme = {
6 | name: 'Equation',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default equationDark
12 |
--------------------------------------------------------------------------------
/src/equation/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as equationDark } from './dark'
2 | export { default as equationLight } from './light'
3 | export type { EquationTheme, EquationThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/flex/demos/enUS/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Basic
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 | Long! Long! Cross the line!
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/flex/demos/enUS/center.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # From Center
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/flex/demos/enUS/from-end.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # From End
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/flex/demos/enUS/space-around.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Space Around
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/flex/demos/enUS/space-between.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Space Between
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/flex/demos/enUS/vertical.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Vertical
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/flex/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础用法
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 | Long! Long! Cross the line!
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/flex/demos/zhCN/center.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 从中间
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/flex/demos/zhCN/from-end.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 从尾部
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/flex/demos/zhCN/space-around.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 空间围绕
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/flex/demos/zhCN/space-between.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 间隙
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/flex/demos/zhCN/vertical.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 垂直
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/flex/index.ts:
--------------------------------------------------------------------------------
1 | export { flexProps, default as NFlex } from './src/Flex'
2 | export type { FlexProps } from './src/Flex'
3 | export type { FlexAlign, FlexJustify } from './src/type'
4 |
--------------------------------------------------------------------------------
/src/flex/src/styles/rtl.cssr.ts:
--------------------------------------------------------------------------------
1 | import { cB, cM } from '../../../_utils/cssr'
2 |
3 | export default cB('space', [
4 | cM('rtl', `
5 | direction: rtl;
6 | `)
7 | ])
8 |
--------------------------------------------------------------------------------
/src/flex/src/type.ts:
--------------------------------------------------------------------------------
1 | import type { Property } from 'csstype'
2 |
3 | export type FlexAlign = Property.AlignItems
4 |
5 | export type FlexJustify = Property.JustifyContent
6 |
--------------------------------------------------------------------------------
/src/flex/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | gapSmall: '4px 8px',
3 | gapMedium: '8px 12px',
4 | gapLarge: '12px 16px'
5 | }
6 |
--------------------------------------------------------------------------------
/src/flex/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { FlexTheme } from './light'
2 | import commonVars from './_common'
3 |
4 | const flexDark: FlexTheme = {
5 | name: 'Flex',
6 | self() {
7 | return commonVars
8 | }
9 | }
10 |
11 | export default flexDark
12 |
--------------------------------------------------------------------------------
/src/flex/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as flexDark } from './dark'
2 | export { default as flexLight } from './light'
3 | export type { FlexTheme, FlexThemeVars } from './light'
4 | export { flexRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/flex/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const flexRtl: RtlItem = {
5 | name: 'Flex',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/float-button-group/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | floatButtonGroupProps,
3 | default as NFloatButtonGroup
4 | } from './src/FloatButtonGroup'
5 | export type { FloatButtonGroupProps } from './src/FloatButtonGroup'
6 |
--------------------------------------------------------------------------------
/src/float-button-group/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as floatButtonGroupDark } from './dark'
2 | export { default as floatButtonGroupLight } from './light'
3 | export type { FloatButtonGroupTheme } from './light'
4 |
--------------------------------------------------------------------------------
/src/float-button/index.ts:
--------------------------------------------------------------------------------
1 | export { floatButtonProps, default as NFloatButton } from './src/FloatButton'
2 | export type { FloatButtonProps, FloatButtonSlots } from './src/FloatButton'
3 |
--------------------------------------------------------------------------------
/src/float-button/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as floatButtonDark } from './dark'
2 | export { default as floatButtonLight } from './light'
3 | export type { FloatButtonTheme, FloatButtonThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/form/src/context.ts:
--------------------------------------------------------------------------------
1 | import type { FormInjection } from './interface'
2 | import { createInjectionKey } from '../../_utils'
3 |
4 | export const formInjectionKey = createInjectionKey('n-form')
5 | export const formItemInstsInjectionKey
6 | = createInjectionKey('n-form-item-insts')
7 |
--------------------------------------------------------------------------------
/src/form/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { FormTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const formItemDark: FormTheme = {
6 | name: 'Form',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default formItemDark
12 |
--------------------------------------------------------------------------------
/src/form/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as formDark } from './dark'
2 | export { default as formLight } from './light'
3 | export type { FormTheme, FormThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/global-style/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NGlobalStyle } from './src/GlobalStyle'
2 |
--------------------------------------------------------------------------------
/src/global.d.ts:
--------------------------------------------------------------------------------
1 | export {}
2 |
3 | declare global {
4 | const __DEV__: boolean
5 | }
6 |
--------------------------------------------------------------------------------
/src/gradient-text/index.ts:
--------------------------------------------------------------------------------
1 | export { gradientTextProps, default as NGradientText } from './src/GradientText'
2 | export type { GradientTextProps } from './src/GradientText'
3 |
--------------------------------------------------------------------------------
/src/gradient-text/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as gradientTextDark } from './dark'
2 | export { default as gradientTextLight } from './light'
3 | export type { GradientTextTheme, GradientTextThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/grid/index.ts:
--------------------------------------------------------------------------------
1 | export { gridProps, default as NGrid } from './src/Grid'
2 | export type { GridProps } from './src/Grid'
3 | export { gridItemProps, default as NGridItem } from './src/GridItem'
4 | export { gridItemProps as giProps, default as NGi } from './src/GridItem'
5 | export type { GridItemProps } from './src/GridItem'
6 |
--------------------------------------------------------------------------------
/src/grid/src/config.ts:
--------------------------------------------------------------------------------
1 | import type { NGridInjection } from './Grid'
2 | import { createInjectionKey } from '../../_utils'
3 |
4 | export const defaultSpan = 1
5 | export const gridInjectionKey = createInjectionKey('n-grid')
6 |
--------------------------------------------------------------------------------
/src/highlight/index.ts:
--------------------------------------------------------------------------------
1 | export { highlightProps, default as NHighlight } from './src/Highlight'
2 | export type * from './src/public-types'
3 |
--------------------------------------------------------------------------------
/src/highlight/src/public-types.ts:
--------------------------------------------------------------------------------
1 | import type { ExtractPublicPropTypes } from '../../_utils'
2 | import type { highlightProps } from './Highlight'
3 |
4 | export type HighlightProps = ExtractPublicPropTypes
5 |
--------------------------------------------------------------------------------
/src/icon-wrapper/index.ts:
--------------------------------------------------------------------------------
1 | export { iconWrapperProps, NIconWrapper } from './src/IconWrapper'
2 | export type { IconWrapperProps } from './src/IconWrapper'
3 |
--------------------------------------------------------------------------------
/src/icon-wrapper/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { IconWrapperTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const iconDark: IconWrapperTheme = {
6 | name: 'IconWrapper',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default iconDark
12 |
--------------------------------------------------------------------------------
/src/icon-wrapper/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as iconWrapperDark } from './dark'
2 | export { default as iconWrapperLight } from './light'
3 | export type { IconWrapperTheme, IconWrapperThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/icon/index.ts:
--------------------------------------------------------------------------------
1 | export { iconProps, NIcon } from './src/Icon'
2 | export type { IconProps } from './src/Icon'
3 |
--------------------------------------------------------------------------------
/src/icon/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { IconTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const iconDark: IconTheme = {
6 | name: 'Icon',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default iconDark
12 |
--------------------------------------------------------------------------------
/src/icon/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as iconDark } from './dark'
2 | export { default as iconLight } from './light'
3 | export type { IconTheme, IconThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/icon/tests/__snapshots__/Icon.spec.ts.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`n-icon should work with \`depth\` prop 1`] = `"--n-bezier: cubic-bezier(.4, 0, .2, 1); --n-color: #000; --n-opacity: 0.18;"`;
4 |
--------------------------------------------------------------------------------
/src/image/demos/enUS/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Basic
3 |
4 |
5 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/src/image/demos/enUS/preview-disabled.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Disable preview
3 |
4 | You can use `preview-disabled` to disable preview.
5 |
6 |
7 |
8 |
13 |
14 |
--------------------------------------------------------------------------------
/src/image/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础用法
3 |
4 |
5 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/src/image/demos/zhCN/error.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 加载失败
3 |
4 | 使用 `fallback-src` 设定失败时的图像。或者你可以使用下一个例子里的 `error` slot。
5 |
6 |
7 |
8 |
13 |
14 |
--------------------------------------------------------------------------------
/src/image/demos/zhCN/full-debug.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 原始尺寸展示图片
3 |
4 |
5 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/src/image/demos/zhCN/preview-disabled.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 禁止预览
3 |
4 | 你可以使用 `preview-disabled` 来禁止预览。
5 |
6 |
7 |
8 |
13 |
14 |
--------------------------------------------------------------------------------
/src/image/index.ts:
--------------------------------------------------------------------------------
1 | export { imageProps, default as NImage } from './src/Image'
2 | export type { ImageProps, ImageSlots } from './src/Image'
3 | export { imageGroupProps, default as NImageGroup } from './src/ImageGroup'
4 | export type { ImageGroupProps } from './src/ImageGroup'
5 | export type * from './src/public-types'
6 |
--------------------------------------------------------------------------------
/src/image/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { imageDark } from './dark'
2 | export { imageLight } from './light'
3 | export type { ImageTheme, ImageThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/infinite-scroll/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | infiniteScrollProps,
3 | default as NInfiniteScroll
4 | } from './src/InfiniteScroll'
5 | export type { InfiniteScrollProps } from './src/InfiniteScroll'
6 |
--------------------------------------------------------------------------------
/src/input-number/demos/enUS/disable-keyboard.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Disable keyboard arrow up & down
3 |
4 | Set `:keyboard="{ ArrowUp: false, ArrowDown: false }"` to disabled keyboard arrow up & down.
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/input-number/demos/zhCN/disable-keyboard.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 禁用键盘上下
3 |
4 | 设定 `:keyboard="{ ArrowUp: false, ArrowDown: false }"` 来禁用键盘上下键。
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/input-number/demos/zhCN/status.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 验证状态
3 |
4 | 输入的验证状态可以脱离表单使用。
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/input-number/demos/zhCN/theme-debug.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Theme debug
3 |
4 |
5 |
6 |
15 |
16 |
--------------------------------------------------------------------------------
/src/input-number/index.ts:
--------------------------------------------------------------------------------
1 | export { inputNumberProps, default as NInputNumber } from './src/InputNumber'
2 | export type { InputNumberProps, InputNumberSlots } from './src/InputNumber'
3 | export type { InputNumberInst } from './src/interface'
4 |
--------------------------------------------------------------------------------
/src/input-number/src/interface.ts:
--------------------------------------------------------------------------------
1 | export type OnUpdateValue = (value: number | null) => void
2 | export type Size = 'tiny' | 'small' | 'medium' | 'large'
3 |
4 | export interface InputNumberInst {
5 | focus: () => void
6 | blur: () => void
7 | select: () => void
8 | }
9 |
--------------------------------------------------------------------------------
/src/input-number/src/styles/input-number.cssr.ts:
--------------------------------------------------------------------------------
1 | import { c, cB } from '../../../_utils/cssr'
2 |
3 | export default c([
4 | cB('input-number-suffix', `
5 | display: inline-block;
6 | margin-right: 10px;
7 | `),
8 | cB('input-number-prefix', `
9 | display: inline-block;
10 | margin-left: 10px;
11 | `)
12 | ])
13 |
--------------------------------------------------------------------------------
/src/input-number/src/styles/rtl.cssr.ts:
--------------------------------------------------------------------------------
1 | import { cB, cM } from '../../../_utils/cssr'
2 |
3 | export default cB('input-number', [
4 | cM('rtl', `
5 | direction: rtl;
6 | `)
7 | ])
8 |
--------------------------------------------------------------------------------
/src/input-number/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as inputNumberDark } from './dark'
2 | export { default as inputNumberLight } from './light'
3 | export type { InputNumberTheme, InputNumberThemeVars } from './light'
4 | export { inputNumberRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/input-opt/demos/enUS/mask.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # mask
3 |
4 | Use mask = true to turn on password mode
5 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/input-opt/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础用法
3 |
4 | 字符数由 length 选项定义,默认情况下设置为 6。
5 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/input-opt/demos/zhCN/mask.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 密码模式
3 |
4 | 指定 mask = true,可开启密码模式
5 |
6 |
7 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/input-opt/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NInputOpt } from './src/input-opt'
2 |
--------------------------------------------------------------------------------
/src/input-opt/src/interface.ts:
--------------------------------------------------------------------------------
1 | export type Size = 'small' | 'medium' | 'large'
2 | export type FormValidationStatus = 'success' | 'error' | 'warning'
3 |
4 | export type OnUpdateValue = (value: string & (string | null)) => void
5 |
--------------------------------------------------------------------------------
/src/input-opt/src/styles/input-opt-rtl.cssr.ts:
--------------------------------------------------------------------------------
1 | import { cB, cM } from '../../../_utils/cssr'
2 |
3 | // --n-gap
4 | export default cB('input-opt', [
5 | cM('rtl', `
6 | direction: rtl;
7 | `)
8 | ])
9 |
--------------------------------------------------------------------------------
/src/input-opt/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as inputOptDark } from './dark'
2 | export { default as inputOptLight } from './light'
3 | export type { InputOptTheme } from './light'
4 | export { inputOptRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/input-opt/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/input-opt-rtl.cssr'
3 |
4 | export const inputOptRtl: RtlItem = {
5 | name: 'InputOpt',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/input/demos/enUS/status.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Validation status
3 |
4 | Validation status can be applied outside form.
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/input/demos/zhCN/round.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 圆角
3 |
4 | 文本输入可以是圆角的。
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/input/demos/zhCN/status.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 验证状态
3 |
4 | 输入的验证状态可以脱离表单使用。
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/input/demos/zhCN/textarea-resize-debug.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # textarea-resize-debug
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/input/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | paddingTiny: '0 8px',
3 | paddingSmall: '0 10px',
4 | paddingMedium: '0 12px',
5 | paddingLarge: '0 14px',
6 | clearSize: '16px'
7 | }
8 |
--------------------------------------------------------------------------------
/src/input/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as inputDark } from './dark'
2 | export { default as inputLight } from './light'
3 | export type { InputTheme, InputThemeVars } from './light'
4 | export { inputRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/input/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const inputRtl: RtlItem = {
5 | name: 'Input',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/jest-setup.ts:
--------------------------------------------------------------------------------
1 | import { isBrowser } from './_utils'
2 |
3 | // https://github.com/jsdom/jsdom/issues/1422
4 | if (isBrowser) {
5 | HTMLDivElement.prototype.scrollTo = () => {}
6 | }
7 |
--------------------------------------------------------------------------------
/src/layout/demos/zhCN/embedded.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 嵌入效果
3 |
4 | 有的时候你希望背景色暗一点,来突出上面显示的内容(尤其是卡片)。
5 |
6 |
7 |
8 |
9 |
10 | 只要是 看到天边云一朵
11 | 逐天拢有好心情
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/layout/src/LayoutContent.tsx:
--------------------------------------------------------------------------------
1 | import { createLayoutComponent } from './Layout'
2 |
3 | export default createLayoutComponent(true)
4 |
--------------------------------------------------------------------------------
/src/layout/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as layoutDark } from './dark'
2 | export { default as layoutLight } from './light'
3 | export type { LayoutTheme, LayoutThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/legacy-grid/index.ts:
--------------------------------------------------------------------------------
1 | export { colProps, default as NCol } from './src/Col'
2 | export type { ColProps } from './src/Col'
3 | export { default as NRow, rowProps } from './src/Row'
4 | export type { RowProps } from './src/Row'
5 |
--------------------------------------------------------------------------------
/src/legacy-grid/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { Theme } from '../../_mixins'
2 | import { commonDark } from '../../_styles/common'
3 |
4 | const rowDark: Theme<'Row'> = {
5 | name: 'Row',
6 | common: commonDark
7 | }
8 |
9 | export default rowDark
10 | export type RowTheme = typeof rowDark
11 |
--------------------------------------------------------------------------------
/src/legacy-grid/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as rowDark } from './dark'
2 | export { default as rowLight } from './light'
3 | export type { RowTheme } from './light'
4 | export { rowRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/legacy-grid/styles/light.ts:
--------------------------------------------------------------------------------
1 | import type { Theme } from '../../_mixins'
2 | import { commonLight } from '../../_styles/common'
3 |
4 | const rowLight: Theme<'Row'> = {
5 | name: 'Row',
6 | common: commonLight
7 | }
8 |
9 | export default rowLight
10 | export type RowTheme = typeof rowLight
11 |
--------------------------------------------------------------------------------
/src/legacy-grid/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const rowRtl: RtlItem = {
5 | name: 'Row',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/legacy-transfer/index.ts:
--------------------------------------------------------------------------------
1 | export type { Option as LegacyTransferOption } from './src/interface'
2 | export {
3 | transferProps as legacyTransferProps,
4 | default as NLegacyTransfer
5 | } from './src/Transfer'
6 | export type { transferProps as LegacyTransferProps } from './src/Transfer'
7 |
--------------------------------------------------------------------------------
/src/legacy-transfer/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | extraFontSize: '12px',
3 | width: '440px'
4 | }
5 |
--------------------------------------------------------------------------------
/src/legacy-transfer/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as legacyTransferDark } from './dark'
2 | export { default as legacyTransferLight } from './light'
3 | export type {
4 | TransferTheme as LegacyTransferTheme,
5 | TransferThemeVars as LegacyTransferThemeVars
6 | } from './light'
7 |
--------------------------------------------------------------------------------
/src/list/index.ts:
--------------------------------------------------------------------------------
1 | export { listProps, default as NList } from './src/List'
2 | export type { ListProps, ListSlots } from './src/List'
3 | export { default as NListItem } from './src/ListItem'
4 | export type { ListItemSlots } from './src/ListItem'
5 |
--------------------------------------------------------------------------------
/src/list/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { ListTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const listDark: ListTheme = {
6 | name: 'List',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default listDark
12 |
--------------------------------------------------------------------------------
/src/list/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as listDark } from './dark'
2 | export { default as listLight } from './light'
3 | export type { ListTheme, ListThemeVars } from './light'
4 | export { listRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/list/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const listRtl: RtlItem = {
5 | name: 'List',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/loading-bar/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as loadingBarDark } from './dark'
2 | export { default as loadingBarLight } from './light'
3 | export type { LoadingBarTheme, LoadingBarThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/locales/date/arDZ.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { arDZ } from 'date-fns/locale'
3 |
4 | const dateArDZ: NDateLocale = {
5 | name: 'ar-DZ',
6 | locale: arDZ
7 | }
8 |
9 | export default dateArDZ
10 |
--------------------------------------------------------------------------------
/src/locales/date/azAZ.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { az } from 'date-fns/locale'
3 |
4 | const dateAzAZ: NDateLocale = {
5 | name: 'az-AZ',
6 | locale: az
7 | }
8 |
9 | export default dateAzAZ
10 |
--------------------------------------------------------------------------------
/src/locales/date/csCZ.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { cs } from 'date-fns/locale'
3 |
4 | const dateCsCZ: NDateLocale = {
5 | name: 'cs-CZ',
6 | locale: cs
7 | }
8 |
9 | export default dateCsCZ
10 |
--------------------------------------------------------------------------------
/src/locales/date/deDE.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { de } from 'date-fns/locale'
3 |
4 | const dateDeDE: NDateLocale = {
5 | name: 'de-DE',
6 | locale: de
7 | }
8 |
9 | export default dateDeDE
10 |
--------------------------------------------------------------------------------
/src/locales/date/enGB.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { enGB } from 'date-fns/locale'
3 |
4 | const dateEnGB: NDateLocale = {
5 | name: 'en-GB',
6 | locale: enGB
7 | }
8 |
9 | export default dateEnGB
10 |
--------------------------------------------------------------------------------
/src/locales/date/eo.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { eo } from 'date-fns/locale'
3 |
4 | const dateEo: NDateLocale = {
5 | name: 'eo',
6 | locale: eo
7 | }
8 |
9 | export default dateEo
10 |
--------------------------------------------------------------------------------
/src/locales/date/esAR.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { es } from 'date-fns/locale'
3 |
4 | const dateEsAR: NDateLocale = {
5 | name: 'es-AR',
6 | locale: es
7 | }
8 |
9 | export default dateEsAR
10 |
--------------------------------------------------------------------------------
/src/locales/date/etEE.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { et } from 'date-fns/locale'
3 |
4 | const dateEtEE: NDateLocale = {
5 | name: 'et-EE',
6 | locale: et
7 | }
8 |
9 | export default dateEtEE
10 |
--------------------------------------------------------------------------------
/src/locales/date/faIR.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { faIR } from 'date-fns/locale'
3 |
4 | const dateFaIR: NDateLocale = {
5 | name: 'fa-IR',
6 | locale: faIR
7 | }
8 |
9 | export default dateFaIR
10 |
--------------------------------------------------------------------------------
/src/locales/date/frFR.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { fr } from 'date-fns/locale'
3 |
4 | const dateFrFR: NDateLocale = {
5 | name: 'fr-FR',
6 | locale: fr
7 | }
8 |
9 | export default dateFrFR
10 |
--------------------------------------------------------------------------------
/src/locales/date/idID.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { id } from 'date-fns/locale'
3 |
4 | const dateIdID: NDateLocale = {
5 | name: 'id-ID',
6 | locale: id
7 | }
8 |
9 | export default dateIdID
10 |
--------------------------------------------------------------------------------
/src/locales/date/itIT.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { it } from 'date-fns/locale'
3 |
4 | const dateItIT: NDateLocale = {
5 | name: 'it-IT',
6 | locale: it
7 | }
8 |
9 | export default dateItIT
10 |
--------------------------------------------------------------------------------
/src/locales/date/jaJP.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { ja } from 'date-fns/locale'
3 |
4 | const dateJaJP: NDateLocale = {
5 | name: 'ja-JP',
6 | locale: ja
7 | }
8 |
9 | export default dateJaJP
10 |
--------------------------------------------------------------------------------
/src/locales/date/kmKH.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { km } from 'date-fns/locale'
3 |
4 | const dateKmKH: NDateLocale = {
5 | name: 'km-KH',
6 | locale: km
7 | }
8 |
9 | export default dateKmKH
10 |
--------------------------------------------------------------------------------
/src/locales/date/koKR.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { ko } from 'date-fns/locale'
3 |
4 | const dateKoKR: NDateLocale = {
5 | name: 'ko-KR',
6 | locale: ko
7 | }
8 |
9 | export default dateKoKR
10 |
--------------------------------------------------------------------------------
/src/locales/date/nbNO.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { nb } from 'date-fns/locale'
3 |
4 | const dateNbNO: NDateLocale = {
5 | name: 'nb-NO',
6 | locale: nb
7 | }
8 |
9 | export default dateNbNO
10 |
--------------------------------------------------------------------------------
/src/locales/date/nlNL.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { nl } from 'date-fns/locale'
3 |
4 | const dateNlNL: NDateLocale = {
5 | name: 'nl-NL',
6 | locale: nl
7 | }
8 |
9 | export default dateNlNL
10 |
--------------------------------------------------------------------------------
/src/locales/date/plPL.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { pl } from 'date-fns/locale'
3 |
4 | const datePlPL: NDateLocale = {
5 | name: 'pl-PL',
6 | locale: pl
7 | }
8 |
9 | export default datePlPL
10 |
--------------------------------------------------------------------------------
/src/locales/date/ptBR.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { ptBR } from 'date-fns/locale'
3 |
4 | const datePtBr: NDateLocale = {
5 | name: 'pt-BR',
6 | locale: ptBR
7 | }
8 |
9 | export default datePtBr
10 |
--------------------------------------------------------------------------------
/src/locales/date/ruRU.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { ru } from 'date-fns/locale'
3 |
4 | const dateRuRU: NDateLocale = {
5 | name: 'ru-RU',
6 | locale: ru
7 | }
8 |
9 | export default dateRuRU
10 |
--------------------------------------------------------------------------------
/src/locales/date/skSK.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { sk } from 'date-fns/locale'
3 |
4 | const dateSkSK: NDateLocale = {
5 | name: 'sk-SK',
6 | locale: sk
7 | }
8 |
9 | export default dateSkSK
10 |
--------------------------------------------------------------------------------
/src/locales/date/svSE.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { sv } from 'date-fns/locale'
3 |
4 | const dateSvSE: NDateLocale = {
5 | name: 'sv-SE',
6 | locale: sv
7 | }
8 |
9 | export default dateSvSE
10 |
--------------------------------------------------------------------------------
/src/locales/date/thTH.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { th } from 'date-fns/locale'
3 |
4 | const dateThTH: NDateLocale = {
5 | name: 'th-TH',
6 | locale: th
7 | }
8 |
9 | export default dateThTH
10 |
--------------------------------------------------------------------------------
/src/locales/date/trTR.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { tr } from 'date-fns/locale'
3 |
4 | const dateTrTR: NDateLocale = {
5 | name: 'tr-TR',
6 | locale: tr
7 | }
8 |
9 | export default dateTrTR
10 |
--------------------------------------------------------------------------------
/src/locales/date/ugCN.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { ug } from 'date-fns/locale'
3 |
4 | const dateUgCN: NDateLocale = {
5 | name: 'ug-CN',
6 | locale: ug
7 | }
8 |
9 | export default dateUgCN
10 |
--------------------------------------------------------------------------------
/src/locales/date/ukUA.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { uk } from 'date-fns/locale'
3 |
4 | const dateUkUA: NDateLocale = {
5 | name: 'uk-UA',
6 | locale: uk
7 | }
8 |
9 | export default dateUkUA
10 |
--------------------------------------------------------------------------------
/src/locales/date/uzUZ.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { uz } from 'date-fns/locale'
3 |
4 | const dateUzUZ: NDateLocale = {
5 | name: 'uz-UZ',
6 | locale: uz
7 | }
8 |
9 | export default dateUzUZ
10 |
--------------------------------------------------------------------------------
/src/locales/date/viVN.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { vi } from 'date-fns/locale'
3 |
4 | const dateVi: NDateLocale = {
5 | name: 'vi-VN',
6 | locale: vi
7 | }
8 |
9 | export default dateVi
10 |
--------------------------------------------------------------------------------
/src/locales/date/zhCN.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { zhCN } from 'date-fns/locale'
3 |
4 | const dateZhCN: NDateLocale = {
5 | name: 'zh-CN',
6 | locale: zhCN
7 | }
8 |
9 | export default dateZhCN
10 |
--------------------------------------------------------------------------------
/src/locales/date/zhTW.ts:
--------------------------------------------------------------------------------
1 | import type { NDateLocale } from './enUS'
2 | import { zhTW } from 'date-fns/locale'
3 |
4 | const datezhTW: NDateLocale = {
5 | name: 'zh-TW',
6 | locale: zhTW
7 | }
8 |
9 | export default datezhTW
10 |
--------------------------------------------------------------------------------
/src/log/demos/enUS/size.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Rows
3 |
4 | Use `rows` to change the size of log.
5 |
6 |
7 |
8 |
17 |
18 |
--------------------------------------------------------------------------------
/src/log/demos/zhCN/size.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 行数
3 |
4 | 使用 `rows` 来设定 Log 的尺寸。
5 |
6 |
7 |
8 |
17 |
18 |
--------------------------------------------------------------------------------
/src/log/index.ts:
--------------------------------------------------------------------------------
1 | export { logProps, default as NLog } from './src/Log'
2 | export type { LogInst, LogProps } from './src/Log'
3 |
--------------------------------------------------------------------------------
/src/log/src/context.ts:
--------------------------------------------------------------------------------
1 | import type { LogInjection } from './Log'
2 | import { createInjectionKey } from '../../_utils'
3 |
4 | export const logInjectionKey = createInjectionKey('n-log')
5 |
--------------------------------------------------------------------------------
/src/log/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as logDark } from './dark'
2 | export { default as logLight } from './light'
3 | export type { LogTheme, LogThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/marquee/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础用法
3 |
4 | 在跑马灯中输入文字:
5 |
6 |
7 |
8 |
9 | 谁用运气换呼吸 谁用灵魂换稻米 谁用运气换呼吸 谁用灵魂换稻米
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/marquee/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NMarquee } from './src/Marquee'
2 | export type * from './src/public-types'
3 |
--------------------------------------------------------------------------------
/src/marquee/src/public-types.ts:
--------------------------------------------------------------------------------
1 | export type { MarqueeProps } from './props'
2 |
--------------------------------------------------------------------------------
/src/marquee/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { MarqueeTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const marqueeDark: MarqueeTheme = {
6 | name: 'Marquee',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default marqueeDark
12 |
--------------------------------------------------------------------------------
/src/marquee/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as marqueeDark } from './dark'
2 | export { default as marqueeLight } from './light'
3 | export type { MarqueeTheme, MarqueeThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/marquee/tests/Marquee.spec.ts:
--------------------------------------------------------------------------------
1 | import { mount } from '@vue/test-utils'
2 | import { NMarquee } from '../index'
3 |
4 | describe('n-marquee', () => {
5 | it('should work with import on demand', () => {
6 | mount(NMarquee)
7 | })
8 | })
9 |
--------------------------------------------------------------------------------
/src/mention/demos/enUS/status.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Validation status
3 |
4 | Validation status can be applied outside form.
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/mention/demos/zhCN/status.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 验证状态
3 |
4 | 输入的验证状态可以脱离表单使用。
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/mention/index.ts:
--------------------------------------------------------------------------------
1 | export type { MentionInst, MentionOption } from './src/interface'
2 | export { mentionProps, default as NMention } from './src/Mention'
3 | export type { MentionProps, MentionSlots } from './src/Mention'
4 |
--------------------------------------------------------------------------------
/src/mention/src/interface.ts:
--------------------------------------------------------------------------------
1 | import type { SelectBaseOption } from '../../select/src/interface'
2 |
3 | export type MentionOption = SelectBaseOption
4 |
5 | export interface MentionInst {
6 | focus: () => void
7 | blur: () => void
8 | }
9 |
--------------------------------------------------------------------------------
/src/mention/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as mentionDark } from './dark'
2 | export { default as mentionLight } from './light'
3 | export type { MentionTheme, MentionThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/menu/index.ts:
--------------------------------------------------------------------------------
1 | export type {
2 | MenuDividerOption,
3 | MenuGroupOption,
4 | MenuInst,
5 | MenuNodeProps,
6 | MenuOption
7 | } from './src/interface'
8 | export { menuProps, default as NMenu } from './src/Menu'
9 | export type { MenuProps } from './src/Menu'
10 |
--------------------------------------------------------------------------------
/src/menu/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as menuDark } from './dark'
2 | export { default as menuLight } from './light'
3 | export type { MenuTheme, MenuThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/message/src/styles/rtl.cssr.ts:
--------------------------------------------------------------------------------
1 | import { cB, cE, cM } from '../../../_utils/cssr'
2 |
3 | export default cB('message', [
4 | cM('rtl', `
5 | direction: rtl;
6 | `, [
7 | cE('close', `
8 | margin: 0 10px 0 0;
9 | `),
10 | cE('icon', `
11 | margin: 0 0 0 10px;
12 | `)
13 | ])
14 | ])
15 |
--------------------------------------------------------------------------------
/src/message/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | margin: '0 0 8px 0',
3 | padding: '10px 20px',
4 | maxWidth: '720px',
5 | minWidth: '420px',
6 | iconMargin: '0 10px 0 0',
7 | closeMargin: '0 0 0 10px',
8 | closeSize: '20px',
9 | closeIconSize: '16px',
10 | iconSize: '20px',
11 | fontSize: '14px'
12 | }
13 |
--------------------------------------------------------------------------------
/src/message/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { MessageTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const messageDark: MessageTheme = {
6 | name: 'Message',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default messageDark
12 |
--------------------------------------------------------------------------------
/src/message/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as messageDark } from './dark'
2 | export { default as messageLight } from './light'
3 | export type { MessageTheme, MessageThemeVars } from './light'
4 | export { messageRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/message/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const messageRtl: RtlItem = {
5 | name: 'Message',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/modal/demos/zhCN/dark-7-debug.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # pop debug 2
3 |
4 |
5 |
6 |
7 |
8 | Toggle
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/modal/demos/zhCN/dark-8-debug.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # pop debug 3
3 |
4 |
5 |
6 |
7 |
8 | Toggle
9 |
10 | Go gogo
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/modal/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as modalDark } from './dark'
2 | export { default as modalLight } from './light'
3 | export type { ModalTheme, ModalThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/notification/src/context.ts:
--------------------------------------------------------------------------------
1 | import type { NotificationProviderInjection } from './NotificationProvider'
2 | import { createInjectionKey } from '../../_utils'
3 |
4 | export const notificationProviderInjectionKey
5 | = createInjectionKey('n-notification-provider')
6 |
--------------------------------------------------------------------------------
/src/notification/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | closeMargin: '16px 12px',
3 | closeSize: '20px',
4 | closeIconSize: '16px',
5 | width: '365px',
6 | padding: '16px',
7 | titleFontSize: '16px',
8 | metaFontSize: '12px',
9 | descriptionFontSize: '12px'
10 | }
11 |
--------------------------------------------------------------------------------
/src/notification/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as notificationDark } from './dark'
2 | export { default as notificationLight } from './light'
3 | export type { NotificationTheme, NotificationThemeVars } from './light'
4 | export { notificationRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/notification/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const notificationRtl: RtlItem = {
5 | name: 'Notification',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/number-animation/index.ts:
--------------------------------------------------------------------------------
1 | export {
2 | default as NNumberAnimation,
3 | numberAnimationProps
4 | } from './src/NumberAnimation'
5 | export type { NumberAnimationProps } from './src/NumberAnimation'
6 | export type { NumberAnimationInst } from './src/NumberAnimation'
7 |
--------------------------------------------------------------------------------
/src/page-header/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NPageHeader, pageHeaderProps } from './src/PageHeader'
2 | export type { PageHeaderProps, PageHeaderSlots } from './src/PageHeader'
3 |
--------------------------------------------------------------------------------
/src/page-header/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | titleFontSize: '18px',
3 | backSize: '22px'
4 | }
5 |
--------------------------------------------------------------------------------
/src/page-header/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { PageHeaderTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | export const pageHeaderDark: PageHeaderTheme = {
6 | name: 'PageHeader',
7 | common: commonDark,
8 | self
9 | }
10 |
--------------------------------------------------------------------------------
/src/page-header/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { pageHeaderDark } from './dark'
2 | export { pageHeaderLight } from './light'
3 | export type { PageHeaderTheme, PageHeaderThemeVars } from './light'
4 | export { default as pageHeaderRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/page-header/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import rtlStyle from '../src/styles/rtl.cssr'
2 |
3 | export default {
4 | name: 'PageHeader',
5 | style: rtlStyle
6 | }
7 |
--------------------------------------------------------------------------------
/src/pagination/demos/enUS/prev.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Customize the previous and next button
3 |
4 |
5 |
6 |
7 |
8 | Go Prev
9 |
10 |
11 | Go Next
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/pagination/demos/zhCN/display-order.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 展示顺序
3 |
4 | 你可以通过 `display-order` 来调整展示顺序。
5 |
6 |
7 |
8 |
14 |
15 |
--------------------------------------------------------------------------------
/src/pagination/demos/zhCN/item-count.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 使用元素个数控制分页
3 |
4 | 有的时候你不想传递 `page-count`,这个时候你可以设定 `item-count` 和 `page-size`。
5 |
6 |
7 |
8 |
13 |
14 |
--------------------------------------------------------------------------------
/src/pagination/demos/zhCN/prev.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 自定义上一步和下一步
3 |
4 |
5 |
6 |
7 |
8 | 往回走
9 |
10 |
11 | 继续走
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/pagination/index.ts:
--------------------------------------------------------------------------------
1 | export type {
2 | PaginationInfo,
3 | PaginationRenderLabel,
4 | PaginationSizeOption
5 | } from './src/interface'
6 | export { default as NPagination, paginationProps } from './src/Pagination'
7 | export type { PaginationProps, PaginationSlots } from './src/Pagination'
8 |
--------------------------------------------------------------------------------
/src/pagination/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as paginationDark } from './dark'
2 | export { default as paginationLight } from './light'
3 | export type { PaginationTheme, PaginationThemeVars } from './light'
4 | export { paginationRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/popconfirm/demos/enUS/no-icon.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # No icon
3 |
4 |
5 |
6 |
7 |
8 | No icon
9 |
10 | As is
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/popconfirm/demos/zhCN/no-icon.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 没有图标
3 |
4 |
5 |
6 |
7 |
8 | 没图标
9 |
10 | 就是这样
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/popconfirm/index.ts:
--------------------------------------------------------------------------------
1 | export type { PopconfirmInst } from './src/interface'
2 | export { default as NPopconfirm, popconfirmProps } from './src/Popconfirm'
3 | export type { PopconfirmProps, PopconfirmSlots } from './src/Popconfirm'
4 |
--------------------------------------------------------------------------------
/src/popconfirm/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | iconSize: '22px'
3 | }
4 |
--------------------------------------------------------------------------------
/src/popconfirm/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as popconfirmDark } from './dark'
2 | export { default as popconfirmLight } from './light'
3 | export type { PopconfirmTheme, PopconfirmThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/popover/demos/enUS/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Basic
3 |
4 |
5 |
6 |
7 |
8 | Hover
9 |
10 | Maybe I don't really want to know how your garden grows
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/popover/demos/enUS/no-arrow.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # No arrow
3 |
4 |
5 |
6 |
7 |
8 | Hover
9 |
10 | Like a rect
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/popover/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础用法
3 |
4 |
5 |
6 |
7 |
8 | 悬浮
9 |
10 | 或许不想知道你的花园长得咋样
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/popover/demos/zhCN/no-arrow.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 不要箭头
3 |
4 |
5 |
6 |
7 |
8 | 悬浮
9 |
10 | 没有箭头就是矩形了
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/popover/index.ts:
--------------------------------------------------------------------------------
1 | export type { PopoverInst, PopoverTrigger } from './src/interface'
2 | export { default as NPopover, popoverProps } from './src/Popover'
3 | export type { PopoverProps, PopoverSlots } from './src/Popover'
4 | export type { FollowerPlacement as PopoverPlacement } from 'vueuc'
5 |
--------------------------------------------------------------------------------
/src/popover/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | space: '6px',
3 | spaceArrow: '10px',
4 | arrowOffset: '10px',
5 | arrowOffsetVertical: '10px',
6 | arrowHeight: '6px',
7 | padding: '8px 14px'
8 | }
9 |
--------------------------------------------------------------------------------
/src/popover/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { PopoverTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const popoverDark: PopoverTheme = {
6 | name: 'Popover',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default popoverDark
12 |
--------------------------------------------------------------------------------
/src/popover/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as popoverDark } from './dark'
2 | export { default as popoverLight } from './light'
3 | export type { PopoverTheme, PopoverThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/popselect/index.ts:
--------------------------------------------------------------------------------
1 | export type { PopselectInst } from './src/interface'
2 | export { default as NPopselect, popselectProps } from './src/Popselect'
3 | export type { PopselectProps, PopselectSlots } from './src/Popselect'
4 |
--------------------------------------------------------------------------------
/src/popselect/src/styles/index.cssr.ts:
--------------------------------------------------------------------------------
1 | import { cB } from '../../../_utils/cssr'
2 |
3 | // --n-menu-box-shadow
4 | export default cB('popselect-menu', `
5 | box-shadow: var(--n-menu-box-shadow);
6 | `)
7 |
--------------------------------------------------------------------------------
/src/popselect/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as popselectDark } from './dark'
2 | export { default as popselectLight } from './light'
3 | export type { PopselectTheme, PopselectThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/preset.ts:
--------------------------------------------------------------------------------
1 | import * as components from './components'
2 | import create from './create'
3 |
4 | const naive = create({
5 | components: Object.keys(components).map(
6 | key => components[key as keyof typeof components]
7 | )
8 | })
9 |
10 | export default naive
11 | export const install = naive.install
12 |
--------------------------------------------------------------------------------
/src/progress/demos/enUS/circle-offset.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Offset
3 |
4 | Circular progress can have `offset-degree`.
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/progress/demos/enUS/processing.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Processing
3 |
4 |
5 |
6 |
12 |
13 |
--------------------------------------------------------------------------------
/src/progress/demos/zhCN/circle-offset.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 偏移
3 |
4 | 环状的进度可以偏移。
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/progress/demos/zhCN/processing.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 进行时
3 |
4 |
5 |
6 |
12 |
13 |
--------------------------------------------------------------------------------
/src/progress/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NProgress, progressProps } from './src/Progress'
2 | export type { ProgressProps } from './src/Progress'
3 | export type * from './src/public-types'
4 |
--------------------------------------------------------------------------------
/src/progress/src/public-types.ts:
--------------------------------------------------------------------------------
1 | export type ProgressStatus =
2 | | 'success'
3 | | 'error'
4 | | 'warning'
5 | | 'info'
6 | | 'default'
7 | export interface ProgressGradient {
8 | stops: string[]
9 | }
10 |
--------------------------------------------------------------------------------
/src/progress/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as progressDark } from './dark'
2 | export { default as progressLight } from './light'
3 | export type { ProgressTheme, ProgressThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/qr-code/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NQrCode, qrCodeProps } from './src/QrCode'
2 | export type { QrCodeProps } from './src/QrCode'
3 |
--------------------------------------------------------------------------------
/src/qr-code/src/styles/index.cssr.ts:
--------------------------------------------------------------------------------
1 | import { c, cB } from '../../../_utils/cssr'
2 |
3 | // vars:
4 | // --n-border-radius
5 | export default c([
6 | cB('qr-code', `
7 | background: #fff;
8 | border-radius: var(--n-border-radius);
9 | display: inline-flex;
10 | `)
11 | ])
12 |
--------------------------------------------------------------------------------
/src/qr-code/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as qrcodeDark } from './dark'
2 | export { default as qrcodeLight } from './light'
3 | export type { QrCodeTheme, QrCodeThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/radio/src/interface.ts:
--------------------------------------------------------------------------------
1 | export type OnUpdateValue = (value: string & number & boolean) => void
2 |
3 | export type OnUpdateValueImpl = (value: string | number | boolean) => void
4 |
--------------------------------------------------------------------------------
/src/radio/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | radioSizeSmall: '14px',
3 | radioSizeMedium: '16px',
4 | radioSizeLarge: '18px',
5 | labelPadding: '0 8px',
6 | labelFontWeight: '400'
7 | }
8 |
--------------------------------------------------------------------------------
/src/radio/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as radioDark } from './dark'
2 | export { default as radioLight } from './light'
3 | export type { RadioTheme, RadioThemeVars } from './light'
4 | export { radioRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/radio/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const radioRtl: RtlItem = {
5 | name: 'Radio',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/rate/demos/enUS/allow-half.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Allow Selecting Half Star
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/rate/demos/enUS/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Basic
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/rate/demos/enUS/clearable.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Clearable
3 |
4 | After `clearable` is set, you can click at current value's corresponding value to reset value to `null`.
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/rate/demos/enUS/color.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Color
3 |
4 | This can end in disaster.
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/rate/demos/enUS/readonly.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Readonly
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/rate/demos/zhCN/allow-half.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 允许半颗
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/rate/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础用法
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/rate/demos/zhCN/clearable.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 可清空
3 |
4 | 设定 `clearable` 后 `n-rate` 可清空,在你点击当前值对应的图标后值会被设为 `null`。
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/rate/demos/zhCN/color.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 颜色
3 |
4 | 灾难就是这么发生的。
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/rate/demos/zhCN/readonly.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 只读
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/rate/demos/zhCN/size.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 尺寸
3 |
4 | 有 `small`、`medium` 和 `large` 尺寸。
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/rate/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NRate, rateProps } from './src/Rate'
2 | export type { RateProps } from './src/Rate'
3 |
--------------------------------------------------------------------------------
/src/rate/src/interface.ts:
--------------------------------------------------------------------------------
1 | export type RateOnUpdateValue = (value: number & null) => void
2 | export type RateOnUpdateValueImpl = (value: number | null) => void
3 |
--------------------------------------------------------------------------------
/src/rate/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as rateDark } from './dark'
2 | export { default as rateLight } from './light'
3 | export type { RateTheme, RateThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/result/demos/enUS/error.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Error
3 |
4 |
5 |
6 |
7 |
8 | I Don't Like It
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/result/demos/enUS/success.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Success
3 |
4 |
5 |
6 |
7 |
8 | I like it
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/result/demos/zhCN/error.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 错误
3 |
4 |
5 |
6 |
7 |
8 | 还是离它远点吧
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/result/demos/zhCN/info.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 信息
3 |
4 |
5 |
6 |
11 |
12 | 我需要信息
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/result/demos/zhCN/s-403.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 403
3 |
4 |
5 |
6 |
11 |
12 | 放轻松
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/result/demos/zhCN/s-404.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 404
3 |
4 |
5 |
6 |
7 |
8 | 找点乐子吧
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/result/demos/zhCN/s-418.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 418
3 |
4 |
5 |
6 |
7 |
8 | 接受真相就是这么简单
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/result/demos/zhCN/s-500.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 500
3 |
4 |
5 |
6 |
11 |
12 | 散财消灾
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/result/demos/zhCN/size.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 尺寸
3 |
4 |
5 |
6 |
7 |
8 | 哦
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/result/demos/zhCN/success.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 成功
3 |
4 |
5 |
6 |
7 |
8 | 我喜欢
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/result/demos/zhCN/warning.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 警告
3 |
4 |
5 |
6 |
11 |
12 | 听起来有那么点悲伤,哈哈哈
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/result/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NResult, resultProps } from './src/Result'
2 | export type { ResultProps, ResultSlots } from './src/Result'
3 |
--------------------------------------------------------------------------------
/src/result/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { ResultTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const resultDark: ResultTheme = {
6 | name: 'Result',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default resultDark
12 |
--------------------------------------------------------------------------------
/src/result/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as resultDark } from './dark'
2 | export { default as resultLight } from './light'
3 | export type { ResultTheme, ResultThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/scrollbar/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NScrollbar, scrollbarProps } from './src/Scrollbar'
2 | export type { ScrollbarInst, ScrollbarProps } from './src/Scrollbar'
3 |
--------------------------------------------------------------------------------
/src/select/demos/enUS/status.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Validation status
3 |
4 | Validation status can be applied outside form.
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/select/demos/zhCN/empty-debug.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Empty debug
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/select/demos/zhCN/status.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 验证状态
3 |
4 | 输入的验证状态可以脱离表单使用。
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/select/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as selectDark } from './dark'
2 | export { default as selectLight } from './light'
3 | export type { SelectTheme, SelectThemeVars } from './light'
4 | export { selectRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/shims-vue.d.ts:
--------------------------------------------------------------------------------
1 | // shims-vue.d.ts
2 | declare module '*.vue' {
3 | import type { DefineComponent } from 'vue'
4 |
5 | const component: DefineComponent<
6 | Record,
7 | Record,
8 | any
9 | >
10 | export default component
11 | }
12 |
--------------------------------------------------------------------------------
/src/skeleton/demos/enUS/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Basic usage
3 |
4 | Use `text` to create text skeleton.
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/skeleton/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础用法
3 |
4 | 使用 `text` 设定文本骨架。
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/skeleton/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NSkeleton, skeletonProps } from './src/Skeleton'
2 | export type { SkeletonProps } from './src/Skeleton'
3 |
--------------------------------------------------------------------------------
/src/skeleton/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { skeletonDark } from './dark'
2 | export { skeletonLight } from './light'
3 | export type { SkeletonTheme, SkeletonThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/slider/demos/enUS/disable-tooltip.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Disable tooltip
3 |
4 | Set `:tooltip="false"` to disabled the tooltip.
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/slider/demos/enUS/disabled.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Disabled
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/slider/demos/enUS/show-tooltip.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Always show tooltip
3 |
4 | Set `show-tooltip` to always show tooltip.
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/slider/demos/zhCN/disable-tooltip.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 禁用 Tooltip
3 |
4 | 设定 `:tooltip="false"` 来禁用 tooltip。
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/slider/demos/zhCN/disabled.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 禁用
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/slider/demos/zhCN/show-tooltip.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 始终显示 Tooltip
3 |
4 | 设定 `show-tooltip` 来让 Tooltip 被一直显示。
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/slider/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NSlider, sliderProps } from './src/Slider'
2 | export type { SliderProps, SliderSlots } from './src/Slider'
3 |
--------------------------------------------------------------------------------
/src/slider/src/interface.ts:
--------------------------------------------------------------------------------
1 | export type OnUpdateValueImpl = (value: number | number[]) => void
2 |
--------------------------------------------------------------------------------
/src/slider/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | railHeight: '4px',
3 | railWidthVertical: '4px',
4 | handleSize: '18px',
5 | dotHeight: '8px',
6 | dotWidth: '8px',
7 | dotBorderRadius: '4px'
8 | }
9 |
--------------------------------------------------------------------------------
/src/slider/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as sliderDark } from './dark'
2 | export { default as sliderLight } from './light'
3 | export type { SliderTheme, SliderThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/space/demos/enUS/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Basic
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 | Long! Long! Cross the line!
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/space/demos/enUS/center.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # From Center
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/space/demos/enUS/from-end.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # From End
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/space/demos/enUS/reverse.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Reverse
3 |
4 |
5 |
6 |
7 | 1
8 | 2
9 | 3
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/space/demos/enUS/space-around.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Space Around
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/space/demos/enUS/space-between.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Space Between
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/space/demos/enUS/vertical.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Vertical
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/space/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础用法
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 | Long! Long! Cross the line!
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/space/demos/zhCN/center.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 从中间
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/space/demos/zhCN/from-end.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 从尾部
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/space/demos/zhCN/reverse.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 反向
3 |
4 |
5 |
6 |
7 | 1
8 | 2
9 | 3
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/space/demos/zhCN/space-around.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 空间围绕
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/space/demos/zhCN/space-between.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 间隙
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/space/demos/zhCN/vertical.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 垂直
3 |
4 |
5 |
6 |
7 | Oops!
8 | Oops!
9 | Oops!
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/space/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NSpace, spaceProps } from './src/Space'
2 | export type { SpaceProps } from './src/Space'
3 |
--------------------------------------------------------------------------------
/src/space/src/styles/rtl.cssr.ts:
--------------------------------------------------------------------------------
1 | import { cB, cM } from '../../../_utils/cssr'
2 |
3 | export default cB('space', [
4 | cM('rtl', `
5 | direction: rtl;
6 | `)
7 | ])
8 |
--------------------------------------------------------------------------------
/src/space/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | gapSmall: '4px 8px',
3 | gapMedium: '8px 12px',
4 | gapLarge: '12px 16px'
5 | }
6 |
--------------------------------------------------------------------------------
/src/space/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { SpaceTheme } from './light'
2 | import commonVars from './_common'
3 |
4 | const spaceDark: SpaceTheme = {
5 | name: 'Space',
6 | self() {
7 | return commonVars
8 | }
9 | }
10 |
11 | export default spaceDark
12 |
--------------------------------------------------------------------------------
/src/space/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as spaceDark } from './dark'
2 | export { default as spaceLight } from './light'
3 | export type { SpaceTheme, SpaceThemeVars } from './light'
4 | export { spaceRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/space/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const spaceRtl: RtlItem = {
5 | name: 'Space',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/spin/demos/enUS/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Basic
3 |
4 | Here are `small`, `medium` and `large` spins.
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/spin/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础用法
3 |
4 | 有 `small`、`medium` 和 `large` 的 Spin.
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/spin/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NSpin, spinProps } from './src/Spin'
2 | export type { SpinProps, SpinSlots } from './src/Spin'
3 |
--------------------------------------------------------------------------------
/src/spin/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { SpinTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const spinDark: SpinTheme = {
6 | name: 'Spin',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default spinDark
12 |
--------------------------------------------------------------------------------
/src/spin/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as spinDark } from './dark'
2 | export { default as spinLight } from './light'
3 | export type { SpinTheme, SpinThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/split/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础用法
3 |
4 |
5 |
6 |
7 |
8 | Pane 1
9 |
10 |
11 | Pane 2
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/split/demos/zhCN/vertical.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 垂直布局
3 |
4 |
5 |
6 |
7 |
8 | Pane 1
9 |
10 |
11 | Pane 2
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/split/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NSplit, splitProps } from './src/Split'
2 | export type { SplitProps, SplitSlots } from './src/Split'
3 | export type { SplitOnUpdateSize } from './src/types'
4 |
--------------------------------------------------------------------------------
/src/split/src/types.ts:
--------------------------------------------------------------------------------
1 | export type SplitOnUpdateSize = (size: string & number) => void
2 |
--------------------------------------------------------------------------------
/src/split/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { SplitTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 |
4 | const splitDark: SplitTheme = {
5 | name: 'Split',
6 | common: commonDark
7 | }
8 |
9 | export default splitDark
10 |
--------------------------------------------------------------------------------
/src/split/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as splitDark } from './dark'
2 | export { default as splitLight } from './light'
3 | export type { SplitTheme, SplitThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/statistic/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NStatistic, statisticProps } from './src/Statistic'
2 | export type { StatisticProps, StatisticSlots } from './src/Statistic'
3 |
--------------------------------------------------------------------------------
/src/statistic/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { StatisticTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const statisticDark: StatisticTheme = {
6 | name: 'Statistic',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default statisticDark
12 |
--------------------------------------------------------------------------------
/src/statistic/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as statisticDark } from './dark'
2 | export { default as statisticLight } from './light'
3 | export type { StatisticTheme, StatisticThemeVars } from './light'
4 | export { statisticRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/statistic/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const statisticRtl: RtlItem = {
5 | name: 'Statistic',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/steps/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NStep, stepProps } from './src/Step'
2 | export type { StepProps, StepSlots } from './src/Step'
3 | export { default as NSteps, stepsProps } from './src/Steps'
4 | export type { StepsProps, StepsSlots } from './src/Steps'
5 |
--------------------------------------------------------------------------------
/src/steps/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { StepsTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const stepsDark: StepsTheme = {
6 | name: 'Steps',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default stepsDark
12 |
--------------------------------------------------------------------------------
/src/steps/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as stepsDark } from './dark'
2 | export { default as stepsLight } from './light'
3 | export type { StepsTheme, StepsThemeVars } from './light'
4 | export { stepsRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/steps/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const stepsRtl: RtlItem = {
5 | name: 'Steps',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/switch/demos/enUS/shape.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Shape
3 |
4 | Switch can have square shape.
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/switch/demos/enUS/size.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Size
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/switch/demos/zhCN/content.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 内容
3 |
4 | 向开关中加入内容。
5 |
6 |
7 |
8 |
9 |
10 | 自然赠予你,树冠 微风 肩头的暴雨
11 |
12 |
13 | 片刻后生成,平衡 忠诚 不息的身体
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/src/switch/demos/zhCN/shape.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 形状
3 |
4 | 开关可以设为方形。
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/switch/demos/zhCN/size.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 尺寸
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/switch/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NSwitch, switchProps } from './src/Switch'
2 | export type { SwitchProps, SwitchSlots } from './src/Switch'
3 |
--------------------------------------------------------------------------------
/src/switch/src/interface.ts:
--------------------------------------------------------------------------------
1 | export type OnUpdateValue = (value: string & number & boolean) => void
2 | export type OnUpdateValueImpl = (value: string | number | boolean) => void
3 |
--------------------------------------------------------------------------------
/src/switch/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as switchDark } from './dark'
2 | export { default as switchLight } from './light'
3 | export type { SwitchTheme, SwitchThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/table/src/Tbody.tsx:
--------------------------------------------------------------------------------
1 | import { defineComponent, h } from 'vue'
2 |
3 | export default defineComponent({
4 | name: 'Tbody',
5 | render() {
6 | return {this.$slots}
7 | }
8 | })
9 |
--------------------------------------------------------------------------------
/src/table/src/Td.tsx:
--------------------------------------------------------------------------------
1 | import { defineComponent, h } from 'vue'
2 |
3 | export default defineComponent({
4 | name: 'Td',
5 | render() {
6 | return {this.$slots} |
7 | }
8 | })
9 |
--------------------------------------------------------------------------------
/src/table/src/Th.tsx:
--------------------------------------------------------------------------------
1 | import { defineComponent, h } from 'vue'
2 |
3 | export default defineComponent({
4 | name: 'Th',
5 | render() {
6 | return {this.$slots} |
7 | }
8 | })
9 |
--------------------------------------------------------------------------------
/src/table/src/Thead.tsx:
--------------------------------------------------------------------------------
1 | import { defineComponent, h } from 'vue'
2 |
3 | export default defineComponent({
4 | name: 'Thead',
5 | render() {
6 | return {this.$slots}
7 | }
8 | })
9 |
--------------------------------------------------------------------------------
/src/table/src/Tr.tsx:
--------------------------------------------------------------------------------
1 | import { defineComponent, h } from 'vue'
2 |
3 | export default defineComponent({
4 | name: 'Tr',
5 | render() {
6 | return {this.$slots}
7 | }
8 | })
9 |
--------------------------------------------------------------------------------
/src/table/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | thPaddingSmall: '6px',
3 | thPaddingMedium: '12px',
4 | thPaddingLarge: '12px',
5 | tdPaddingSmall: '6px',
6 | tdPaddingMedium: '12px',
7 | tdPaddingLarge: '12px'
8 | }
9 |
--------------------------------------------------------------------------------
/src/table/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { TableTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const tableDark: TableTheme = {
6 | name: 'Table',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default tableDark
12 |
--------------------------------------------------------------------------------
/src/table/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as tableDark } from './dark'
2 | export { default as tableLight } from './light'
3 | export type { TableTheme, TableThemeVars } from './light'
4 | export { tableRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/table/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const tableRtl: RtlItem = {
5 | name: 'Table',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/tabs/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as tabsDark } from './dark'
2 | export { default as tabsLight } from './light'
3 | export type { TabsTheme, TabsThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/tag/demos/enUS/color.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Color
3 |
4 | Use a color object to customize color.
5 |
6 |
7 |
8 |
9 | Farewell to the night, waiting for dawn
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/tag/demos/zhCN/color.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 颜色
3 |
4 | 使用一个颜色对象定制标签的颜色。
5 |
6 |
7 |
8 |
9 | 告别夜晚 等待天亮
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/tag/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NTag, tagProps } from './src/Tag'
2 | export type { TagProps, TagSlots } from './src/Tag'
3 |
--------------------------------------------------------------------------------
/src/tag/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as tagDark } from './dark'
2 | export { default as tagLight } from './light'
3 | export type { TagTheme, TagThemeVars } from './light'
4 | export { tagRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/tag/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const tagRtl: RtlItem = {
5 | name: 'Tag',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/theme-editor/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NThemeEditor } from './src/ThemeEditor'
2 |
--------------------------------------------------------------------------------
/src/themes/index.ts:
--------------------------------------------------------------------------------
1 | export { darkTheme } from './dark'
2 | export { lightTheme } from './light'
3 | export { createTheme } from './utils'
4 |
--------------------------------------------------------------------------------
/src/themes/interface.ts:
--------------------------------------------------------------------------------
1 | import type { GlobalTheme } from '../config-provider'
2 |
3 | export type BuiltInGlobalTheme = Omit<
4 | Required,
5 | 'InternalSelectMenu' | 'InternalSelection'
6 | >
7 |
--------------------------------------------------------------------------------
/src/thing/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NThing, thingProps } from './src/Thing'
2 | export type { ThingProps, ThingSlots } from './src/Thing'
3 |
--------------------------------------------------------------------------------
/src/thing/src/styles/rtl.cssr.ts:
--------------------------------------------------------------------------------
1 | import { cB, cM } from '../../../_utils/cssr'
2 |
3 | export default cB('thing', [
4 | cM('rtl', `
5 | direction: rtl;
6 | text-align: right;
7 | `, [
8 | cB('thing-avatar', `
9 | margin-left: 12px;
10 | margin-right: 0;
11 | `)
12 | ])
13 | ])
14 |
--------------------------------------------------------------------------------
/src/thing/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { ThingTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const thingDark: ThingTheme = {
6 | name: 'Thing',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default thingDark
12 |
--------------------------------------------------------------------------------
/src/thing/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as thingDark } from './dark'
2 | export { default as thingLight } from './light'
3 | export type { ThingTheme, ThingThemeVars } from './light'
4 | export { thingRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/time-picker/demos/enUS/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Basic
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/time-picker/demos/enUS/hours12.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 12 hours
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/time-picker/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础用法
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/time-picker/demos/zhCN/hours12.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 12 小时
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/src/time-picker/demos/zhCN/status.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 验证状态
3 |
4 | 输入的验证状态可以脱离表单使用。
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/time-picker/index.ts:
--------------------------------------------------------------------------------
1 | export type { TimePickerInst } from './src/interface'
2 | export { default as NTimePicker, timePickerProps } from './src/TimePicker'
3 | export type { TimePickerProps, TimePickerSlots } from './src/TimePicker'
4 |
--------------------------------------------------------------------------------
/src/time-picker/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | itemFontSize: '12px',
3 | itemHeight: '36px',
4 | itemWidth: '52px',
5 | panelActionPadding: '8px 0'
6 | }
7 |
--------------------------------------------------------------------------------
/src/time-picker/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as timePickerDark } from './dark'
2 | export { default as timePickerLight } from './light'
3 | export type { TimePickerTheme, TimePickerThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/time/demos/enUS/timezone.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Time zone
3 |
4 |
5 |
6 | Shanghai
Pittsburgh
7 |
UTC
8 |
9 |
--------------------------------------------------------------------------------
/src/time/demos/zhCN/timezone.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 时区
3 |
4 |
5 |
6 | 上海
匹兹堡
7 |
UTC
8 |
9 |
--------------------------------------------------------------------------------
/src/time/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NTime, timeProps } from './src/Time'
2 | export type { TimeProps } from './src/Time'
3 |
--------------------------------------------------------------------------------
/src/timeline/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NTimeline, timelineProps } from './src/Timeline'
2 | export type { TimelineProps } from './src/Timeline'
3 | export { default as NTimelineItem, timelineItemProps } from './src/TimelineItem'
4 | export type { TimelineItemProps, TimelineItemSlots } from './src/TimelineItem'
5 |
--------------------------------------------------------------------------------
/src/timeline/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | titleMarginMedium: '0 0 6px 0',
3 | titleMarginLarge: '-2px 0 6px 0',
4 | titleFontSizeMedium: '14px',
5 | titleFontSizeLarge: '16px',
6 | iconSizeMedium: '14px',
7 | iconSizeLarge: '14px'
8 | }
9 |
--------------------------------------------------------------------------------
/src/timeline/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as timelineDark } from './dark'
2 | export { default as timelineLight } from './light'
3 | export type { TimelineTheme, TimelineThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/tooltip/demos/enUS/arrow.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # No arrow
3 |
4 |
5 |
6 |
7 |
8 | Show arrow by default
9 |
10 | The same as popover
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/tooltip/demos/enUS/placement.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # Placement
3 |
4 |
5 |
6 |
7 |
8 | Top Start
9 |
10 | Woo, awesome!
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/tooltip/demos/zhCN/arrow.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 不要箭头
3 |
4 |
5 |
6 |
7 |
8 | 默认有箭头
9 |
10 | 和 Popover 一样
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/tooltip/demos/zhCN/basic.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 基础用法
3 |
4 |
5 |
6 |
7 |
8 | 鸭子
9 |
10 | 如果它长得像鸭子,走起来像鸭子,叫起来也像鸭子,那它一定是个鸭子。
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/tooltip/demos/zhCN/placement.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 位置
3 |
4 |
5 |
6 |
7 |
8 | 上边一开始
9 |
10 | 哇哦,Awesome!
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/tooltip/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NTooltip, tooltipProps } from './src/Tooltip'
2 | export type { TooltipInst, TooltipProps, TooltipSlots } from './src/Tooltip'
3 |
--------------------------------------------------------------------------------
/src/tooltip/styles/_common.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | padding: '8px 14px'
3 | }
4 |
--------------------------------------------------------------------------------
/src/tooltip/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as tooltipDark } from './dark'
2 | export { default as tooltipLight } from './light'
3 | export type { TooltipTheme, TooltipThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/transfer/index.ts:
--------------------------------------------------------------------------------
1 | export type {
2 | Option as TransferOption,
3 | TransferRenderSourceLabel,
4 | TransferRenderSourceList,
5 | TransferRenderTargetLabel
6 | } from './src/interface'
7 | export { default as NTransfer, transferProps } from './src/Transfer'
8 | export type { TransferProps } from './src/Transfer'
9 |
--------------------------------------------------------------------------------
/src/transfer/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as transferDark } from './dark'
2 | export { default as transferLight } from './light'
3 | export type { TransferTheme, TransferThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/tree-select/demos/zhCN/status.demo.vue:
--------------------------------------------------------------------------------
1 |
2 | # 验证状态
3 |
4 | 输入的验证状态可以脱离表单使用。
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/tree-select/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as treeSelectDark } from './dark'
2 | export { default as treeSelectLight } from './light'
3 | export type { TreeSelectTheme, TreeSelectThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/tree/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as treeDark } from './dark'
2 | export { default as treeLight } from './light'
3 | export type { TreeTheme, TreeThemeVars } from './light'
4 | export { treeRtl } from './rtl'
5 |
--------------------------------------------------------------------------------
/src/tree/styles/rtl.ts:
--------------------------------------------------------------------------------
1 | import type { RtlItem } from '../../config-provider/src/internal-interface'
2 | import rtlStyle from '../src/styles/rtl.cssr'
3 |
4 | export const treeRtl: RtlItem = {
5 | name: 'Tree',
6 | style: rtlStyle
7 | }
8 |
--------------------------------------------------------------------------------
/src/tsconfig.cjs.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "exclude": ["./**/*.spec.*"],
4 | "compilerOptions": {
5 | "rootDir": ".",
6 | "outDir": "../lib",
7 | "module": "CommonJS",
8 | "target": "ES6",
9 | "jsx": "react"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/tsconfig.esm.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "exclude": ["./**/*.spec.*"],
4 | "compilerOptions": {
5 | "rootDir": ".",
6 | "outDir": "../es",
7 | "module": "ES6",
8 | "target": "ES6",
9 | "jsx": "react"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/typography/src/headers.ts:
--------------------------------------------------------------------------------
1 | import createHeader from './create-header'
2 |
3 | export const NH1 = createHeader('1')
4 | export const NH2 = createHeader('2')
5 | export const NH3 = createHeader('3')
6 | export const NH4 = createHeader('4')
7 | export const NH5 = createHeader('5')
8 | export const NH6 = createHeader('6')
9 |
--------------------------------------------------------------------------------
/src/typography/src/li.tsx:
--------------------------------------------------------------------------------
1 | import { defineComponent, h } from 'vue'
2 |
3 | export default defineComponent({
4 | name: 'Li',
5 | render() {
6 | return {this.$slots}
7 | }
8 | })
9 |
--------------------------------------------------------------------------------
/src/typography/styles/dark.ts:
--------------------------------------------------------------------------------
1 | import type { TypographyTheme } from './light'
2 | import { commonDark } from '../../_styles/common'
3 | import { self } from './light'
4 |
5 | const typographyDark: TypographyTheme = {
6 | name: 'Typography',
7 | common: commonDark,
8 | self
9 | }
10 |
11 | export default typographyDark
12 |
--------------------------------------------------------------------------------
/src/typography/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as typographyDark } from './dark'
2 | export { default as typographyLight } from './light'
3 | export type { TypographyTheme, TypographyThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/upload/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as uploadDark } from './dark'
2 | export { default as uploadLight } from './light'
3 | export type { UploadTheme, UploadThemeVars } from './light'
4 |
--------------------------------------------------------------------------------
/src/version.ts:
--------------------------------------------------------------------------------
1 | export default '2.41.0'
2 |
--------------------------------------------------------------------------------
/src/virtual-list/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NVirtualList, virtualListProps } from './src/VirtualList'
2 | export type { VirtualListInst, VirtualListProps } from './src/VirtualList'
3 |
--------------------------------------------------------------------------------
/src/watermark/index.ts:
--------------------------------------------------------------------------------
1 | export { default as NWatermark, watermarkProps } from './src/Watermark'
2 | export type { WatermarkProps } from './src/Watermark'
3 |
--------------------------------------------------------------------------------
/src/watermark/styles/index.ts:
--------------------------------------------------------------------------------
1 | export { default as watermarkDark } from './dark'
2 | export { default as watermarkLight } from './light'
3 | export type { WatermarkTheme } from './light'
4 |
--------------------------------------------------------------------------------
/themes/tusimple/.npmignore:
--------------------------------------------------------------------------------
1 | ~*
2 | *.tsbuildinfo
--------------------------------------------------------------------------------
/themes/tusimple/src/index.ts:
--------------------------------------------------------------------------------
1 | export { default as TsConfigProvider } from './TsConfigProvider'
2 | export { useDialog } from './use-ts-dialog'
3 | export { useMessage } from './use-ts-message'
4 |
--------------------------------------------------------------------------------
/themes/tusimple/tsconfig.cjs.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "rootDir": "./src",
5 | "outDir": "./lib",
6 | "module": "CommonJS",
7 | "target": "ES6",
8 | "jsx": "react"
9 | },
10 | "references": [{ "path": "../../src/tsconfig.cjs.json" }]
11 | }
12 |
--------------------------------------------------------------------------------
/themes/tusimple/tsconfig.esm.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "rootDir": "./src",
5 | "outDir": "./es",
6 | "module": "ES6",
7 | "target": "ES6",
8 | "jsx": "react"
9 | },
10 | "references": [{ "path": "../../src/tsconfig.esm.json" }]
11 | }
12 |
--------------------------------------------------------------------------------
/tsconfig.cjs.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": [],
3 | "references": [
4 | {
5 | "path": "./src/tsconfig.cjs.json"
6 | },
7 | {
8 | "path": "./themes/tusimple/tsconfig.cjs.json"
9 | }
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/tsconfig.esbuild.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "jsx": "react",
5 | "jsxFactory": "h",
6 | "jsxFragmentFactory": "Fragment"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/tsconfig.esm.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": [],
3 | "references": [
4 | {
5 | "path": "./src/tsconfig.esm.json"
6 | },
7 | {
8 | "path": "./themes/tusimple/tsconfig.esm.json"
9 | }
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/tsconfig.test.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "jsx": "react"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/umd-test/setupVue.js:
--------------------------------------------------------------------------------
1 | import * as Vue from 'vue'
2 |
3 | window.Vue = Vue
4 |
--------------------------------------------------------------------------------
/vercel.json:
--------------------------------------------------------------------------------
1 | {
2 | "rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
3 | }
4 |
--------------------------------------------------------------------------------