├── .git-blame-ignore-revs
├── .github
├── ISSUE_TEMPLATE
│ ├── bug_report_template.yml
│ ├── config.yml
│ └── feature_request_template.yml
├── PULL_REQUEST_TEMPLATE.md
├── renovate.json
└── workflows
│ ├── ci.yml
│ ├── github-repo-stats.yml
│ ├── issue-close.yml
│ ├── issue-reply.yml
│ ├── publish-beta.yml
│ ├── release.yml
│ ├── sync-gitee.yml
│ ├── sync-h5.yml
│ ├── sync-pkg.yml
│ └── sync-taro.yml
├── .gitignore
├── .husky
├── .gitignore
├── commit-msg
└── pre-commit
├── .joycode
└── prompt.json
├── .npmrc
├── .prettierignore
├── .prettierrc
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── README_EN.md
├── awesome.md
├── commitlint.config.cjs
├── demo.html
├── eslint.config.js
├── index.html
├── package.json
├── packages
├── nutui-auto-import-resolver
│ ├── README.md
│ ├── README.zh-CN.md
│ ├── package.json
│ ├── src
│ │ └── index.ts
│ ├── tsconfig.json
│ └── vite.config.ts
├── nutui-eslint-config
│ ├── README.md
│ ├── index.js
│ └── package.json
├── nutui-playground
│ ├── README.md
│ ├── index.html
│ ├── package.json
│ ├── public
│ │ └── style.js
│ ├── src
│ │ ├── App.vue
│ │ ├── Header.vue
│ │ ├── VersionSelect.vue
│ │ ├── download
│ │ │ ├── download.ts
│ │ │ └── template
│ │ │ │ ├── README.md
│ │ │ │ ├── index.html
│ │ │ │ ├── main.js
│ │ │ │ ├── package.json
│ │ │ │ └── vite.config.js
│ │ ├── icons
│ │ │ ├── Download.vue
│ │ │ ├── GitHub.vue
│ │ │ ├── Moon.vue
│ │ │ ├── Share.vue
│ │ │ └── Sun.vue
│ │ ├── main.ts
│ │ ├── store.ts
│ │ └── style.css
│ └── vite.config.ts
├── nutui-taro-demo
│ ├── .editorconfig
│ ├── .eslintrc
│ ├── .gitignore
│ ├── README.md
│ ├── babel.config.cjs
│ ├── config
│ │ ├── dev.ts
│ │ ├── index.ts
│ │ └── prod.ts
│ ├── package.json
│ ├── project.config.json
│ ├── project.tt.json
│ ├── src
│ │ ├── app.scss
│ │ ├── app.ts
│ │ ├── basic
│ │ │ └── pages
│ │ │ │ ├── button
│ │ │ │ ├── block.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── loading.vue
│ │ │ │ ├── plain.vue
│ │ │ │ ├── shape.vue
│ │ │ │ ├── size.vue
│ │ │ │ └── type.vue
│ │ │ │ ├── cell
│ │ │ │ ├── align.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── center.vue
│ │ │ │ ├── desc.vue
│ │ │ │ ├── group.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── link.vue
│ │ │ │ ├── size.vue
│ │ │ │ ├── slot.vue
│ │ │ │ └── title.vue
│ │ │ │ ├── configprovider
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ └── theme.vue
│ │ │ │ ├── icon
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ │ │ ├── image
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ │ │ ├── overlay
│ │ │ │ ├── basic.vue
│ │ │ │ ├── close.vue
│ │ │ │ ├── duration.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── lock.vue
│ │ │ │ ├── mask.vue
│ │ │ │ └── nest.vue
│ │ │ │ └── popup
│ │ │ │ ├── basic.vue
│ │ │ │ ├── close.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── multi.vue
│ │ │ │ ├── position.vue
│ │ │ │ └── round.vue
│ │ ├── business
│ │ │ └── pages
│ │ │ │ ├── address
│ │ │ │ ├── index.config.js
│ │ │ │ └── index.vue
│ │ │ │ ├── addresslist
│ │ │ │ ├── index.config.js
│ │ │ │ └── index.vue
│ │ │ │ ├── avatarcropper
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── shape.vue
│ │ │ │ └── toolbar.vue
│ │ │ │ ├── barrage
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.config.js
│ │ │ │ └── index.vue
│ │ │ │ ├── card
│ │ │ │ ├── basic.vue
│ │ │ │ ├── footer.vue
│ │ │ │ ├── index.config.js
│ │ │ │ ├── index.vue
│ │ │ │ ├── shop.vue
│ │ │ │ └── tag.vue
│ │ │ │ ├── category
│ │ │ │ ├── data.js
│ │ │ │ ├── index.config.js
│ │ │ │ └── index.vue
│ │ │ │ ├── comment
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ │ │ ├── ecard
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ │ │ ├── invoice
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ │ │ ├── signature
│ │ │ │ ├── basic.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ │ │ ├── sku
│ │ │ │ ├── data.js
│ │ │ │ ├── index.config.js
│ │ │ │ └── index.vue
│ │ │ │ └── timeselect
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.config.js
│ │ │ │ ├── index.vue
│ │ │ │ ├── multiple.vue
│ │ │ │ └── title.vue
│ │ ├── components
│ │ │ ├── demo.vue
│ │ │ └── header.vue
│ │ ├── dentry
│ │ │ └── pages
│ │ │ │ ├── calendar
│ │ │ │ ├── custom.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── multiple.vue
│ │ │ │ ├── range-quick.vue
│ │ │ │ ├── range.vue
│ │ │ │ ├── single-quick.vue
│ │ │ │ ├── single.vue
│ │ │ │ ├── tiled.vue
│ │ │ │ └── week.vue
│ │ │ │ ├── calendarcard
│ │ │ │ ├── custom-range.vue
│ │ │ │ ├── disable.vue
│ │ │ │ ├── first.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── info.vue
│ │ │ │ ├── multiple.vue
│ │ │ │ ├── popup.vue
│ │ │ │ ├── range.vue
│ │ │ │ ├── ref.vue
│ │ │ │ ├── single.vue
│ │ │ │ └── week.vue
│ │ │ │ ├── cascader
│ │ │ │ ├── basic.vue
│ │ │ │ ├── convert.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── lazy.vue
│ │ │ │ └── partial.vue
│ │ │ │ ├── checkbox
│ │ │ │ ├── basic.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── event.vue
│ │ │ │ ├── group-disabled.vue
│ │ │ │ ├── group.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── indeterminate.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── max.vue
│ │ │ │ ├── methods.vue
│ │ │ │ ├── methods2.vue
│ │ │ │ ├── shape.vue
│ │ │ │ └── size.vue
│ │ │ │ ├── datepicker
│ │ │ │ ├── basic.vue
│ │ │ │ ├── date-time.vue
│ │ │ │ ├── filter.vue
│ │ │ │ ├── format.vue
│ │ │ │ ├── hour-minute.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── month-day.vue
│ │ │ │ ├── pop.vue
│ │ │ │ ├── step.vue
│ │ │ │ ├── time.vue
│ │ │ │ └── year-month.vue
│ │ │ │ ├── form
│ │ │ │ ├── basic.vue
│ │ │ │ ├── dynamic.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── star.vue
│ │ │ │ ├── type.vue
│ │ │ │ └── validate.vue
│ │ │ │ ├── input
│ │ │ │ ├── align.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── border.vue
│ │ │ │ ├── clear.vue
│ │ │ │ ├── count.vue
│ │ │ │ ├── event.vue
│ │ │ │ ├── form.vue
│ │ │ │ ├── format.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── slot.vue
│ │ │ │ ├── status.vue
│ │ │ │ └── type.vue
│ │ │ │ ├── inputnumber
│ │ │ │ ├── basic.vue
│ │ │ │ ├── decimal.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── limit.vue
│ │ │ │ ├── readonly.vue
│ │ │ │ ├── size.vue
│ │ │ │ └── step.vue
│ │ │ │ ├── numberkeyboard
│ │ │ │ ├── basic.vue
│ │ │ │ ├── idcard.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── random.vue
│ │ │ │ ├── right.vue
│ │ │ │ ├── title.vue
│ │ │ │ └── value.vue
│ │ │ │ ├── picker
│ │ │ │ ├── async.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── cascader.vue
│ │ │ │ ├── columns.vue
│ │ │ │ ├── field.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── popup.vue
│ │ │ │ └── vmodel.vue
│ │ │ │ ├── radio
│ │ │ │ ├── basic.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── event.vue
│ │ │ │ ├── horizontal.vue
│ │ │ │ ├── icon-size.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── position.vue
│ │ │ │ ├── shape.vue
│ │ │ │ └── size.vue
│ │ │ │ ├── range
│ │ │ │ ├── basic.vue
│ │ │ │ ├── button.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── hidden-range.vue
│ │ │ │ ├── hidden-tag.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── limit.vue
│ │ │ │ ├── marks.vue
│ │ │ │ ├── range.vue
│ │ │ │ ├── step.vue
│ │ │ │ └── vertical.vue
│ │ │ │ ├── rate
│ │ │ │ ├── basic.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── count.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── event.vue
│ │ │ │ ├── half.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── read.vue
│ │ │ │ └── size.vue
│ │ │ │ ├── searchbar
│ │ │ │ ├── all.vue
│ │ │ │ ├── background.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── clear.vue
│ │ │ │ ├── focus.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── left.vue
│ │ │ │ ├── right.vue
│ │ │ │ └── shape.vue
│ │ │ │ ├── shortpassword
│ │ │ │ ├── basic.vue
│ │ │ │ ├── error.vue
│ │ │ │ ├── forget.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ └── length.vue
│ │ │ │ ├── textarea
│ │ │ │ ├── basic.vue
│ │ │ │ ├── focus.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── limit.vue
│ │ │ │ ├── row.vue
│ │ │ │ └── status.vue
│ │ │ │ └── uploader
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ ├── exhibition
│ │ │ └── pages
│ │ │ │ ├── animate
│ │ │ │ ├── click.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── loop.vue
│ │ │ │ └── show.vue
│ │ │ │ ├── avatar
│ │ │ │ ├── badge.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── click.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── count.vue
│ │ │ │ ├── group.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── shape.vue
│ │ │ │ ├── size.vue
│ │ │ │ └── zindex.vue
│ │ │ │ ├── badge
│ │ │ │ ├── basic.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── max.vue
│ │ │ │ └── position.vue
│ │ │ │ ├── circleprogress
│ │ │ │ ├── basic.vue
│ │ │ │ ├── change.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── size.vue
│ │ │ │ └── width.vue
│ │ │ │ ├── collapse
│ │ │ │ ├── accordion.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── data.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── extra.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ │ │ ├── countdown
│ │ │ │ ├── basic.vue
│ │ │ │ ├── control.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── format.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── millisecond.vue
│ │ │ │ └── ref.vue
│ │ │ │ ├── countup
│ │ │ │ ├── basic.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ └── scroll.vue
│ │ │ │ ├── ellipsis
│ │ │ │ ├── end.vue
│ │ │ │ ├── expand.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── middle.vue
│ │ │ │ ├── row.vue
│ │ │ │ └── start.vue
│ │ │ │ ├── empty
│ │ │ │ ├── basic.vue
│ │ │ │ ├── bottom.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ └── type.vue
│ │ │ │ ├── imagepreview
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ │ │ ├── list
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ │ │ ├── noticebar
│ │ │ │ ├── basic.vue
│ │ │ │ ├── close.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── right.vue
│ │ │ │ ├── scrollable.vue
│ │ │ │ ├── vertical-content.vue
│ │ │ │ ├── vertical.vue
│ │ │ │ └── wrap.vue
│ │ │ │ ├── popover
│ │ │ │ ├── basic.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── option.vue
│ │ │ │ ├── position.vue
│ │ │ │ └── target.vue
│ │ │ │ ├── price
│ │ │ │ ├── decimal.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── position.vue
│ │ │ │ ├── size.vue
│ │ │ │ ├── symbol.vue
│ │ │ │ ├── thousands.vue
│ │ │ │ └── through.vue
│ │ │ │ ├── progress
│ │ │ │ ├── basic.vue
│ │ │ │ ├── change.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── inside.vue
│ │ │ │ ├── size.vue
│ │ │ │ ├── status.vue
│ │ │ │ └── text.vue
│ │ │ │ ├── skeleton
│ │ │ │ ├── avatar.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── picture.vue
│ │ │ │ ├── round.vue
│ │ │ │ ├── row.vue
│ │ │ │ └── sub.vue
│ │ │ │ ├── steps
│ │ │ │ ├── basic.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── desc.vue
│ │ │ │ ├── dot.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── vertical-dot.vue
│ │ │ │ └── vertical.vue
│ │ │ │ ├── swiper
│ │ │ │ ├── async.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── dynamic.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── methods.vue
│ │ │ │ ├── page.vue
│ │ │ │ ├── vertical.vue
│ │ │ │ └── width.vue
│ │ │ │ ├── table
│ │ │ │ ├── align.vue
│ │ │ │ ├── async.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── border.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── nodata.vue
│ │ │ │ ├── sort.vue
│ │ │ │ ├── striped.vue
│ │ │ │ └── summary.vue
│ │ │ │ ├── tag
│ │ │ │ ├── basic.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ │ │ ├── tour
│ │ │ │ ├── basic.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── position.vue
│ │ │ │ └── step.vue
│ │ │ │ ├── trendarrow
│ │ │ │ ├── basic.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── digits.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── left.vue
│ │ │ │ ├── sign.vue
│ │ │ │ └── zero.vue
│ │ │ │ └── watermark
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── multi.vue
│ │ │ │ └── part.vue
│ │ ├── feedback
│ │ │ └── pages
│ │ │ │ ├── actionsheet
│ │ │ │ ├── basic.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ └── status.vue
│ │ │ │ ├── backtop
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ │ │ ├── dialog
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ │ │ ├── drag
│ │ │ │ ├── basic.vue
│ │ │ │ ├── direction.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ │ │ ├── infiniteloading
│ │ │ │ ├── index.config.js
│ │ │ │ └── index.vue
│ │ │ │ ├── notify
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ │ │ ├── swipe
│ │ │ │ ├── basic.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── direction.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── lock.vue
│ │ │ │ └── methods.vue
│ │ │ │ ├── switch
│ │ │ │ ├── async.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── event.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── loading.vue
│ │ │ │ └── text.vue
│ │ │ │ └── toast
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ ├── index.html
│ │ ├── layout
│ │ │ └── pages
│ │ │ │ ├── divider
│ │ │ │ ├── basic.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── dashed.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── position.vue
│ │ │ │ ├── text.vue
│ │ │ │ └── vertical.vue
│ │ │ │ ├── grid
│ │ │ │ ├── basic.vue
│ │ │ │ ├── column.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── gutter.vue
│ │ │ │ ├── horizontal.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── reverse.vue
│ │ │ │ └── square.vue
│ │ │ │ ├── layout
│ │ │ │ ├── basic.vue
│ │ │ │ ├── flex.vue
│ │ │ │ ├── gap.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ │ │ ├── space
│ │ │ │ ├── basic.vue
│ │ │ │ ├── direction.vue
│ │ │ │ ├── gutter.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ └── wrap.vue
│ │ │ │ └── sticky
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ └── top.vue
│ │ ├── nav
│ │ │ └── pages
│ │ │ │ ├── elevator
│ │ │ │ ├── basic.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ └── sticky.vue
│ │ │ │ ├── fixednav
│ │ │ │ ├── basic.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── left.vue
│ │ │ │ └── overlay.vue
│ │ │ │ ├── indicator
│ │ │ │ ├── basic.vue
│ │ │ │ ├── block.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ └── zero.vue
│ │ │ │ ├── menu
│ │ │ │ ├── basic.vue
│ │ │ │ ├── col.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ └── up.vue
│ │ │ │ ├── navbar
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── left.vue
│ │ │ │ ├── right.vue
│ │ │ │ └── title.vue
│ │ │ │ ├── pagination
│ │ │ │ ├── basic.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── ellipse.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ └── simple.vue
│ │ │ │ ├── sidenavbar
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── nest.vue
│ │ │ │ └── popup.vue
│ │ │ │ ├── tabbar
│ │ │ │ ├── badge.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── before-switch.vue
│ │ │ │ ├── check.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── fixed.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── name.vue
│ │ │ │ └── quantity.vue
│ │ │ │ └── tabs
│ │ │ │ ├── animated-time.vue
│ │ │ │ ├── auto-height.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.config.ts
│ │ │ │ ├── index.vue
│ │ │ │ ├── left-align.vue
│ │ │ │ ├── scroll.vue
│ │ │ │ ├── size.vue
│ │ │ │ ├── smile.vue
│ │ │ │ ├── swipeable.vue
│ │ │ │ ├── vertical-smile.vue
│ │ │ │ └── vertical.vue
│ │ ├── pages
│ │ │ └── index
│ │ │ │ ├── index.config.ts
│ │ │ │ └── index.vue
│ │ └── utils
│ │ │ ├── index.ts
│ │ │ └── useTranslate.ts
│ ├── tsconfig.json
│ └── types
│ │ ├── global.d.ts
│ │ └── vue.d.ts
├── nutui-touch-emulator
│ ├── README.md
│ ├── build.js
│ ├── package.json
│ └── src
│ │ └── index.js
├── nutui-vite-plugins
│ ├── package.json
│ ├── src
│ │ ├── index.ts
│ │ └── markdown.ts
│ └── tsup.config.ts
└── nutui-vscode-extension
│ ├── .gitignore
│ ├── .vscodeignore
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── package.json
│ ├── scripts
│ └── createComponentMap.js
│ ├── src
│ ├── componentDesc.ts
│ ├── componentMap.ts
│ ├── extension.ts
│ ├── nutui.png
│ └── utils.ts
│ ├── tsconfig.json
│ └── webpack.config.js
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── publish
├── nutui-taro
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ └── package.json
└── nutui
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ └── package.json
├── scripts
├── copy-dist.cjs
├── copyh5.cjs
├── copymd.cjs
├── copytaro.cjs
├── createAttributes.cjs
├── generate-changelog.cjs
├── generate-nutui-taro-vue.cjs
├── generate-nutui.cjs
├── generate-script-setup.cjs
├── generate-taro-route.cjs
├── generate-themes.cjs
├── generate-types-taro.cjs
├── generate-types.cjs
├── generate-unplugin-deps.cjs
└── verifymail.js
├── src
├── config.json
├── packages
│ ├── __VUE
│ │ ├── actionsheet
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── index.spec.ts.snap
│ │ │ │ └── index.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.vue
│ │ │ │ └── status.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── address
│ │ │ ├── __tests__
│ │ │ │ └── address.spec.ts
│ │ │ ├── address-list.ts
│ │ │ ├── demo.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── type.ts
│ │ ├── addresslist
│ │ │ ├── components
│ │ │ │ ├── GeneralShell.taro.vue
│ │ │ │ ├── GeneralShell.vue
│ │ │ │ ├── ItemContents.taro.vue
│ │ │ │ └── ItemContents.vue
│ │ │ ├── demo.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── animate
│ │ │ ├── __tests__
│ │ │ │ └── animate.spec.ts
│ │ │ ├── animate.taro.vue
│ │ │ ├── animate.vue
│ │ │ ├── demo
│ │ │ │ ├── click.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── loop.vue
│ │ │ │ └── show.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ └── types.ts
│ │ ├── audio
│ │ │ ├── __tests__
│ │ │ │ └── audio.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── control.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── play.vue
│ │ │ │ └── progress.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.vue
│ │ │ └── types.ts
│ │ ├── audiooperate
│ │ │ ├── doc.md
│ │ │ ├── index.scss
│ │ │ └── index.vue
│ │ ├── avatar
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── avatar.spec.tsx.snap
│ │ │ │ └── avatar.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── badge.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── click.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── count.vue
│ │ │ │ ├── group.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── shape.vue
│ │ │ │ ├── size.vue
│ │ │ │ └── zindex.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── types.ts
│ │ ├── avatarcropper
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── avatarcropper.spec.ts.snap
│ │ │ │ └── avatarcropper.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── shape.vue
│ │ │ │ └── toolbar.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── types.ts
│ │ ├── avatargroup
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── backtop
│ │ │ ├── __tests__
│ │ │ │ └── backtop.spec.ts
│ │ │ ├── backtop.taro.vue
│ │ │ ├── backtop.vue
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── distance.vue
│ │ │ │ └── index.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ └── index.ts
│ │ ├── badge
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── badge.spec.ts.snap
│ │ │ │ └── badge.spec.ts
│ │ │ ├── badge.taro.vue
│ │ │ ├── badge.vue
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── max.vue
│ │ │ │ └── position.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ └── index.ts
│ │ ├── barrage
│ │ │ ├── __tests__
│ │ │ │ └── barrage.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ └── index.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── button
│ │ │ ├── __tests__
│ │ │ │ └── button.spec.ts
│ │ │ ├── button.taro.vue
│ │ │ ├── button.vue
│ │ │ ├── demo
│ │ │ │ ├── block.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── loading.vue
│ │ │ │ ├── plain.vue
│ │ │ │ ├── shape.vue
│ │ │ │ ├── size.vue
│ │ │ │ └── type.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ └── types.ts
│ │ ├── calendar
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── calendar.spec.tsx.snap
│ │ │ │ └── calendar.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── custom.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── multiple.vue
│ │ │ │ ├── range-quick.vue
│ │ │ │ ├── range.vue
│ │ │ │ ├── single-quick.vue
│ │ │ │ ├── single.vue
│ │ │ │ ├── tiled.vue
│ │ │ │ └── week.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── calendarcard
│ │ │ ├── __tests__
│ │ │ │ └── calendarcard.spec.tsx
│ │ │ ├── calendar-card.taro.vue
│ │ │ ├── calendar-card.vue
│ │ │ ├── demo
│ │ │ │ ├── custom-range.vue
│ │ │ │ ├── disable.vue
│ │ │ │ ├── first.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── info.vue
│ │ │ │ ├── multiple.vue
│ │ │ │ ├── popup.vue
│ │ │ │ ├── range.vue
│ │ │ │ ├── ref.vue
│ │ │ │ ├── single.vue
│ │ │ │ └── week.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── icon.taro.ts
│ │ │ ├── icon.ts
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── types.ts
│ │ │ └── utils.ts
│ │ ├── calendaritem
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── type.ts
│ │ ├── card
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── index.spec.ts.snap
│ │ │ │ └── index.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── footer.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── shop.vue
│ │ │ │ └── tag.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── cascader
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── cascader.spec.ts.snap
│ │ │ │ └── cascader.spec.ts
│ │ │ ├── cascader-item.taro.vue
│ │ │ ├── cascader-item.vue
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── convert.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── lazy.vue
│ │ │ │ └── partial.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── helper.ts
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ ├── tree.ts
│ │ │ └── types.ts
│ │ ├── category
│ │ │ ├── demo.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── categorypane
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── cell
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── cell.spec.ts.snap
│ │ │ │ └── cell.spec.ts
│ │ │ ├── cell.taro.vue
│ │ │ ├── cell.vue
│ │ │ ├── demo
│ │ │ │ ├── align.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── center.vue
│ │ │ │ ├── desc.vue
│ │ │ │ ├── group.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── link.vue
│ │ │ │ ├── size.vue
│ │ │ │ ├── slot.vue
│ │ │ │ └── title.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ └── types.ts
│ │ ├── cellgroup
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── index.spec.ts.snap
│ │ │ │ └── index.spec.ts
│ │ │ ├── cell-group.taro.vue
│ │ │ ├── cell-group.vue
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ └── index.ts
│ │ ├── checkbox
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── checkbox.spec.tsx.snap
│ │ │ │ └── checkbox.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── event.vue
│ │ │ │ ├── group-disabled.vue
│ │ │ │ ├── group.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── indeterminate.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── max.vue
│ │ │ │ ├── methods.vue
│ │ │ │ ├── methods2.vue
│ │ │ │ ├── shape.vue
│ │ │ │ └── size.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── types.ts
│ │ ├── checkboxgroup
│ │ │ ├── __tests__
│ │ │ │ └── checkboxgroup.spec.tsx
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── circleprogress
│ │ │ ├── __tests__
│ │ │ │ └── index.spec.ts
│ │ │ ├── circle-progress.taro.vue
│ │ │ ├── circle-progress.vue
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── change.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── size.vue
│ │ │ │ └── width.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ └── types.ts
│ │ ├── col
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── index.spec.ts.snap
│ │ │ │ └── index.spec.ts
│ │ │ ├── col.taro.vue
│ │ │ ├── col.vue
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ └── index.ts
│ │ ├── collapse
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── collapse.spec.tsx.snap
│ │ │ │ └── collapse.spec.tsx
│ │ │ ├── collapse.taro.vue
│ │ │ ├── collapse.vue
│ │ │ ├── demo
│ │ │ │ ├── accordion.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── data.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── extra.vue
│ │ │ │ └── index.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ └── types.ts
│ │ ├── collapseitem
│ │ │ ├── collapse-item.taro.vue
│ │ │ ├── collapse-item.vue
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ └── index.ts
│ │ ├── comment
│ │ │ ├── __tests__
│ │ │ │ └── comment.spec.ts
│ │ │ ├── comment_data.json
│ │ │ ├── components
│ │ │ │ ├── CmtBottom.taro.vue
│ │ │ │ ├── CmtBottom.vue
│ │ │ │ ├── CmtHeader.taro.vue
│ │ │ │ ├── CmtHeader.vue
│ │ │ │ ├── CmtImages.taro.vue
│ │ │ │ └── CmtImages.vue
│ │ │ ├── demo.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── type.ts
│ │ ├── configprovider
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── configprovider.spec.ts.snap
│ │ │ │ └── configprovider.spec.ts
│ │ │ ├── common.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.vue
│ │ │ │ └── theme.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── countdown
│ │ │ ├── __tests__
│ │ │ │ └── countdown.spec.tsx
│ │ │ ├── countdown.taro.vue
│ │ │ ├── countdown.vue
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── control.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── format.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── millisecond.vue
│ │ │ │ └── ref.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ └── util.ts
│ │ ├── countup
│ │ │ ├── __tests__
│ │ │ │ └── countup.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.vue
│ │ │ │ └── scroll.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── datepicker
│ │ │ ├── __tests__
│ │ │ │ └── datepicker.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── date-time.vue
│ │ │ │ ├── filter.vue
│ │ │ │ ├── format.vue
│ │ │ │ ├── hour-minute.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── month-day.vue
│ │ │ │ ├── pop.vue
│ │ │ │ ├── step.vue
│ │ │ │ ├── time.vue
│ │ │ │ └── year-month.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── type.ts
│ │ ├── dialog
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── function.spec.ts.snap
│ │ │ │ ├── dialog.ts
│ │ │ │ ├── function.spec.ts
│ │ │ │ └── index.spec.ts
│ │ │ ├── demo.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── divider
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── divider.spec.ts.snap
│ │ │ │ └── divider.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── dashed.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── position.vue
│ │ │ │ ├── text.vue
│ │ │ │ └── vertical.vue
│ │ │ ├── divider.taro.vue
│ │ │ ├── divider.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ └── types.ts
│ │ ├── drag
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── index.spec.ts.snap
│ │ │ │ └── index.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── attract.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── boundary.vue
│ │ │ │ ├── direction.vue
│ │ │ │ └── index.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── types.ts
│ │ ├── ecard
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── index.spec.ts.snap
│ │ │ │ └── index.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ └── index.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── elevator
│ │ │ ├── __tests__
│ │ │ │ └── index.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.vue
│ │ │ │ └── sticky.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── type.ts
│ │ ├── ellipsis
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── ellipsis.spec.ts.snap
│ │ │ │ └── ellipsis.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── end.vue
│ │ │ │ ├── expand.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── middle.vue
│ │ │ │ ├── row.vue
│ │ │ │ └── start.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── types.ts
│ │ ├── empty
│ │ │ ├── __tests__
│ │ │ │ └── index.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── bottom.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.vue
│ │ │ │ └── type.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── empty.taro.vue
│ │ │ ├── empty.vue
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ └── types.ts
│ │ ├── fixednav
│ │ │ ├── __tests__
│ │ │ │ └── fixednav.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── drag.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── left.vue
│ │ │ │ └── overlay.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── form
│ │ │ ├── __tests__
│ │ │ │ └── index.spec.tsx
│ │ │ ├── common.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── dynamic.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── star.vue
│ │ │ │ ├── type.vue
│ │ │ │ └── validate.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── form.taro.vue
│ │ │ ├── form.vue
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ └── types.ts
│ │ ├── formitem
│ │ │ ├── form-item.taro.vue
│ │ │ ├── form-item.vue
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ └── index.ts
│ │ ├── grid
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── grid.spec.ts.snap
│ │ │ │ └── grid.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── column.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── gutter.vue
│ │ │ │ ├── horizontal.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── reverse.vue
│ │ │ │ └── square.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── grid.taro.vue
│ │ │ ├── grid.vue
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ └── types.ts
│ │ ├── griditem
│ │ │ ├── grid-item.taro.vue
│ │ │ ├── grid-item.vue
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ └── index.ts
│ │ ├── icon
│ │ │ ├── __tests__
│ │ │ │ └── index.spec.tsx
│ │ │ ├── demo.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── image
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ ├── image.spec.ts.snap
│ │ │ │ │ └── image.spec.tsx.snap
│ │ │ │ └── image.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── error.vue
│ │ │ │ ├── fit.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── lazy.vue
│ │ │ │ ├── loading.vue
│ │ │ │ ├── position.vue
│ │ │ │ └── round.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── image.taro.vue
│ │ │ ├── image.vue
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ └── types.ts
│ │ ├── imagepreview
│ │ │ ├── __tests__
│ │ │ │ └── imagepreview.spec.ts
│ │ │ ├── demo.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── imagePreviewItem.vue
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ └── types.ts
│ │ ├── indicator
│ │ │ ├── __tests__
│ │ │ │ └── indicator.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── block.vue
│ │ │ │ ├── index.vue
│ │ │ │ └── zero.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── indicator.taro.vue
│ │ │ ├── indicator.vue
│ │ │ └── types.ts
│ │ ├── infiniteloading
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── infiniteloading.spec.ts.snap
│ │ │ │ └── infiniteloading.spec.ts
│ │ │ ├── demo.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ └── index.vue
│ │ ├── input
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── input.spec.ts.snap
│ │ │ │ └── input.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── align.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── border.vue
│ │ │ │ ├── clear.vue
│ │ │ │ ├── count.vue
│ │ │ │ ├── event.vue
│ │ │ │ ├── form.vue
│ │ │ │ ├── format.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── slot.vue
│ │ │ │ ├── status.vue
│ │ │ │ └── type.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── input.taro.vue
│ │ │ ├── input.vue
│ │ │ ├── types.ts
│ │ │ └── util.ts
│ │ ├── inputnumber
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── index.spec.tsx.snap
│ │ │ │ └── index.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── decimal.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── limit.vue
│ │ │ │ ├── readonly.vue
│ │ │ │ ├── size.vue
│ │ │ │ └── step.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── input-number.taro.vue
│ │ │ └── input-number.vue
│ │ ├── invoice
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── invoice.spec.tsx.snap
│ │ │ │ └── invoice.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ └── index.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── invoice.taro.vue
│ │ │ ├── invoice.vue
│ │ │ └── types.ts
│ │ ├── layout
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── flex.vue
│ │ │ │ ├── gap.vue
│ │ │ │ └── index.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── layout.taro.vue
│ │ │ ├── layout.vue
│ │ │ └── types.ts
│ │ ├── list
│ │ │ ├── __tests__
│ │ │ │ └── list.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ └── index.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── type.ts
│ │ ├── menu
│ │ │ ├── __tests__
│ │ │ │ └── menu.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── col.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.vue
│ │ │ │ └── up.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── types.ts
│ │ ├── menuitem
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── navbar
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── navbar.spec.ts.snap
│ │ │ │ └── navbar.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── left.vue
│ │ │ │ ├── right.vue
│ │ │ │ └── title.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── navbar.taro.vue
│ │ │ └── navbar.vue
│ │ ├── noticebar
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── noticebar.spec.ts.snap
│ │ │ │ └── noticebar.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── close.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── right.vue
│ │ │ │ ├── scrollable.vue
│ │ │ │ ├── vertical-content.vue
│ │ │ │ ├── vertical.vue
│ │ │ │ └── wrap.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── types.ts
│ │ ├── notify
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── notify.spec.ts.snap
│ │ │ │ ├── function.spec.ts
│ │ │ │ ├── notify.spec.ts
│ │ │ │ └── notify.ts
│ │ │ ├── demo.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.ts
│ │ │ ├── index.vue
│ │ │ └── types.ts
│ │ ├── numberkeyboard
│ │ │ ├── __tests__
│ │ │ │ └── index.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── idcard.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── random.vue
│ │ │ │ ├── right.vue
│ │ │ │ ├── title.vue
│ │ │ │ └── value.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── types.ts
│ │ ├── overlay
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── overlay.spec.ts.snap
│ │ │ │ └── overlay.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── close.vue
│ │ │ │ ├── duration.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── lock.vue
│ │ │ │ ├── mask.vue
│ │ │ │ └── nest.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── overlay.taro.vue
│ │ │ └── overlay.vue
│ │ ├── pagination
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── index.spec.ts.snap
│ │ │ │ └── index.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── ellipse.vue
│ │ │ │ ├── index.vue
│ │ │ │ └── simple.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── types.ts
│ │ ├── picker
│ │ │ ├── Column.vue
│ │ │ ├── __tests__
│ │ │ │ └── picker.spec.ts
│ │ │ ├── baseProps.ts
│ │ │ ├── demo
│ │ │ │ ├── async.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── cascader.vue
│ │ │ │ ├── columns.vue
│ │ │ │ ├── field.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── popup.vue
│ │ │ │ ├── three-d.vue
│ │ │ │ └── vmodel.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ ├── types.ts
│ │ │ └── usePicker.ts
│ │ ├── popover
│ │ │ ├── __tests__
│ │ │ │ └── popover.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── option.vue
│ │ │ │ ├── position.vue
│ │ │ │ └── target.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── type.ts
│ │ ├── popup
│ │ │ ├── __tests__
│ │ │ │ └── popup.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── close.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── multi.vue
│ │ │ │ ├── port.vue
│ │ │ │ ├── position.vue
│ │ │ │ └── round.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ ├── props.ts
│ │ │ └── types.ts
│ │ ├── price
│ │ │ ├── __tests__
│ │ │ │ └── price.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── decimal.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── position.vue
│ │ │ │ ├── size.vue
│ │ │ │ ├── symbol.vue
│ │ │ │ ├── thousands.vue
│ │ │ │ └── through.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── price.taro.vue
│ │ │ ├── price.vue
│ │ │ └── types.ts
│ │ ├── progress
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── index.spec.ts.snap
│ │ │ │ └── index.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── change.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── inside.vue
│ │ │ │ ├── size.vue
│ │ │ │ ├── status.vue
│ │ │ │ └── text.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── progress.taro.vue
│ │ │ ├── progress.vue
│ │ │ └── types.ts
│ │ ├── pullrefresh
│ │ │ ├── __tests__
│ │ │ │ └── pullrefresh.spec.ts
│ │ │ ├── demo.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ └── index.vue
│ │ ├── radio
│ │ │ ├── __tests__
│ │ │ │ └── radio.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── event.vue
│ │ │ │ ├── horizontal.vue
│ │ │ │ ├── icon-size.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── position.vue
│ │ │ │ ├── shape.vue
│ │ │ │ └── size.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── radio.taro.vue
│ │ │ ├── radio.vue
│ │ │ └── types.ts
│ │ ├── radiogroup
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── radio-group.taro.vue
│ │ │ └── radio-group.vue
│ │ ├── range
│ │ │ ├── __tests__
│ │ │ │ └── range.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── button.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── hidden-range.vue
│ │ │ │ ├── hidden-tag.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── limit.vue
│ │ │ │ ├── marks.vue
│ │ │ │ ├── range.vue
│ │ │ │ ├── step.vue
│ │ │ │ └── vertical.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── type.ts
│ │ ├── rate
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ ├── rate.spec.ts.snap
│ │ │ │ │ └── rate.spec.tsx.snap
│ │ │ │ └── rate.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── count.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── event.vue
│ │ │ │ ├── half.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── read.vue
│ │ │ │ └── size.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── rate.taro.vue
│ │ │ └── rate.vue
│ │ ├── row
│ │ │ ├── __tests__
│ │ │ │ └── index.spec.ts
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── row.taro.vue
│ │ │ └── row.vue
│ │ ├── scroll-view
│ │ │ └── index.taro.vue
│ │ ├── searchbar
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── searchbar.spec.tsx.snap
│ │ │ │ └── searchbar.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── all.vue
│ │ │ │ ├── background.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── clear.vue
│ │ │ │ ├── focus.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── left.vue
│ │ │ │ ├── right.vue
│ │ │ │ └── shape.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── types.ts
│ │ ├── shortpassword
│ │ │ ├── __tests__
│ │ │ │ └── index.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── error.vue
│ │ │ │ ├── forget.vue
│ │ │ │ ├── index.vue
│ │ │ │ └── length.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── sidenavbar
│ │ │ ├── __tests__
│ │ │ │ └── index.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── nest.vue
│ │ │ │ └── popup.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── sidenavbaritem
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── signature
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── signature.spec.tsx.snap
│ │ │ │ └── signature.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── custom.vue
│ │ │ │ └── index.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── skeleton
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── skeleton.spec.tsx.snap
│ │ │ │ └── skeleton.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── avatar.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── picture.vue
│ │ │ │ ├── round.vue
│ │ │ │ ├── row.vue
│ │ │ │ └── sub.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── skeleton.taro.vue
│ │ │ └── skeleton.vue
│ │ ├── sku
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── sku.spec.ts.snap
│ │ │ │ └── sku.spec.ts
│ │ │ ├── components
│ │ │ │ ├── SkuHeader.taro.vue
│ │ │ │ ├── SkuHeader.vue
│ │ │ │ ├── SkuOperate.vue
│ │ │ │ ├── SkuSelect.vue
│ │ │ │ ├── SkuStepper.taro.vue
│ │ │ │ └── SkuStepper.vue
│ │ │ ├── data.ts
│ │ │ ├── demo.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── type.ts
│ │ ├── space
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── space.spec.ts.snap
│ │ │ │ └── space.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── direction.vue
│ │ │ │ ├── gutter.vue
│ │ │ │ ├── index.vue
│ │ │ │ └── wrap.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── types.ts
│ │ ├── step
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── step.taro.vue
│ │ │ └── step.vue
│ │ ├── steps
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── index.spec.tsx.snap
│ │ │ │ └── index.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── desc.vue
│ │ │ │ ├── dot.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── vertical-dot.vue
│ │ │ │ └── vertical.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── steps.taro.vue
│ │ │ ├── steps.vue
│ │ │ └── types.ts
│ │ ├── sticky
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── index.spec.ts.snap
│ │ │ │ └── index.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── bottom.vue
│ │ │ │ ├── container.vue
│ │ │ │ ├── index.vue
│ │ │ │ └── top.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── subsidenavbar
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── swipe
│ │ │ ├── __tests__
│ │ │ │ └── swipe.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── direction.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── lock.vue
│ │ │ │ └── methods.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── swipe.taro.vue
│ │ │ ├── swipe.vue
│ │ │ └── types.ts
│ │ ├── swipegroup
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── swipe-group.taro.vue
│ │ │ └── swipe-group.vue
│ │ ├── swiper
│ │ │ ├── __tests__
│ │ │ │ └── index.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── async.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── dynamic.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── methods.vue
│ │ │ │ ├── page.vue
│ │ │ │ ├── vertical.vue
│ │ │ │ └── width.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── types.ts
│ │ ├── swiperitem
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── type.ts
│ │ ├── switch
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── switch.spec.ts.snap
│ │ │ │ └── switch.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── async.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── disabled.vue
│ │ │ │ ├── event.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── loading.vue
│ │ │ │ └── text.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── switch.taro.vue
│ │ │ └── switch.vue
│ │ ├── tabbar
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── index.spec.tsx.snap
│ │ │ │ └── index.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── badge.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── before-switch.vue
│ │ │ │ ├── check.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── fixed.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── name.vue
│ │ │ │ └── quantity.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── tabbar.taro.vue
│ │ │ ├── tabbar.vue
│ │ │ └── types.ts
│ │ ├── tabbaritem
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── tabbar-item.taro.vue
│ │ │ └── tabbar-item.vue
│ │ ├── table
│ │ │ ├── __tests__
│ │ │ │ └── index.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── align.vue
│ │ │ │ ├── async.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── border.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── nodata.vue
│ │ │ │ ├── sort.vue
│ │ │ │ ├── striped.vue
│ │ │ │ └── summary.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ ├── renderColumn.ts
│ │ │ └── types.ts
│ │ ├── tabpane
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── tabs
│ │ │ ├── __tests__
│ │ │ │ └── index.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── animated-time.vue
│ │ │ │ ├── auto-height.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── left-align.vue
│ │ │ │ ├── scroll.vue
│ │ │ │ ├── size.vue
│ │ │ │ ├── smile.vue
│ │ │ │ ├── swipeable.vue
│ │ │ │ ├── vertical-smile.vue
│ │ │ │ └── vertical.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── hooks.ts
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── types.ts
│ │ ├── tag
│ │ │ ├── __tests__
│ │ │ │ └── tag.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── custom.vue
│ │ │ │ └── index.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── tag.taro.vue
│ │ │ ├── tag.vue
│ │ │ └── types.ts
│ │ ├── textarea
│ │ │ ├── __tests__
│ │ │ │ └── textarea.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── focus.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── limit.vue
│ │ │ │ ├── row.vue
│ │ │ │ └── status.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── textarea.taro.vue
│ │ │ └── textarea.vue
│ │ ├── timedetail
│ │ │ ├── demo.vue
│ │ │ ├── doc.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── timepannel
│ │ │ ├── demo.vue
│ │ │ ├── doc.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── timeselect
│ │ │ ├── __tests__
│ │ │ │ └── timeselect.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── multiple.vue
│ │ │ │ └── title.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ └── index.vue
│ │ ├── toast
│ │ │ ├── __tests__
│ │ │ │ ├── index.spec.ts
│ │ │ │ └── toast.ts
│ │ │ ├── demo.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.ts
│ │ │ └── index.vue
│ │ ├── tour
│ │ │ ├── __tests__
│ │ │ │ └── tour.spec.tsx
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── content.vue
│ │ │ │ ├── custom.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── position.vue
│ │ │ │ └── step.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ └── type.ts
│ │ ├── trendarrow
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── trendarrow.spec.ts.snap
│ │ │ │ └── trendarrow.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── basic.vue
│ │ │ │ ├── color.vue
│ │ │ │ ├── digits.vue
│ │ │ │ ├── icon.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── left.vue
│ │ │ │ ├── sign.vue
│ │ │ │ └── zero.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── trend-arrow.taro.vue
│ │ │ └── trend-arrow.vue
│ │ ├── uploader
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── index.spec.ts.snap
│ │ │ │ └── index.spec.ts
│ │ │ ├── demo.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.vue
│ │ │ ├── index.vue
│ │ │ ├── type.ts
│ │ │ └── uploader.ts
│ │ ├── video
│ │ │ ├── __tests__
│ │ │ │ ├── __snapshots__
│ │ │ │ │ └── video.spec.ts.snap
│ │ │ │ └── video.spec.ts
│ │ │ ├── demo
│ │ │ │ ├── autoplay.vue
│ │ │ │ ├── background.vue
│ │ │ │ ├── basic.vue
│ │ │ │ ├── index.vue
│ │ │ │ ├── methods.vue
│ │ │ │ ├── playsinline.vue
│ │ │ │ └── poster.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ └── index.vue
│ │ └── watermark
│ │ │ ├── __tests__
│ │ │ └── watermark.spec.tsx
│ │ │ ├── demo
│ │ │ ├── basic.vue
│ │ │ ├── index.vue
│ │ │ ├── multi.vue
│ │ │ └── part.vue
│ │ │ ├── doc.en-US.md
│ │ │ ├── doc.md
│ │ │ ├── doc.taro.md
│ │ │ ├── index.scss
│ │ │ ├── index.taro.ts
│ │ │ ├── index.ts
│ │ │ ├── watermark.taro.vue
│ │ │ └── watermark.vue
│ ├── locale
│ │ ├── README.md
│ │ ├── index.ts
│ │ └── lang
│ │ │ ├── baseLang.ts
│ │ │ ├── en-US.ts
│ │ │ ├── id-ID.ts
│ │ │ ├── zh-CN.ts
│ │ │ └── zh-TW.ts
│ ├── resolver
│ │ ├── index.ts
│ │ └── package.json
│ ├── styles
│ │ ├── animation
│ │ │ ├── drop.scss
│ │ │ ├── ease.scss
│ │ │ ├── fade.scss
│ │ │ ├── index.scss
│ │ │ ├── rotate.scss
│ │ │ └── zoom.scss
│ │ ├── mixins
│ │ │ ├── index.scss
│ │ │ ├── make-animation.scss
│ │ │ └── text-ellipsis.scss
│ │ ├── reset.css
│ │ ├── variables-jdb.scss
│ │ ├── variables-jddkh.scss
│ │ ├── variables-jdt.scss
│ │ └── variables.scss
│ └── utils
│ │ ├── Interceptor.ts
│ │ ├── canvas.ts
│ │ ├── create
│ │ ├── component.ts
│ │ ├── index.ts
│ │ ├── mountComponent.ts
│ │ └── renderIcon.ts
│ │ ├── date.ts
│ │ ├── index.ts
│ │ ├── pxCheck.ts
│ │ ├── raf.ts
│ │ ├── throttle.ts
│ │ ├── touchEmulator.js
│ │ ├── unit.ts
│ │ ├── useExpose
│ │ └── index.ts
│ │ ├── useLocale
│ │ └── index.ts
│ │ ├── useLockScroll
│ │ └── index.ts
│ │ ├── useRect
│ │ └── index.ts
│ │ ├── useRelation
│ │ ├── index.ts
│ │ ├── useChildren.ts
│ │ ├── useInject.ts
│ │ ├── useParent.ts
│ │ ├── useProvide.ts
│ │ └── useRelation.ts
│ │ ├── useRoute
│ │ └── index.ts
│ │ ├── useScrollParent
│ │ └── index.ts
│ │ ├── useTaroRect
│ │ └── index.ts
│ │ ├── useTouch
│ │ └── index.ts
│ │ ├── util.ts
│ │ └── with-install.ts
├── shims-vue.d.ts
└── sites
│ ├── assets
│ ├── images
│ │ ├── bg-article.png
│ │ ├── cat-back.png
│ │ ├── cat-title.png
│ │ ├── header-bg.png
│ │ ├── icon-color.png
│ │ ├── icon-footer-vx.png
│ │ ├── icon-gitee.png
│ │ ├── icon-select-gray-down.png
│ │ ├── icon-select-gray-up.png
│ │ ├── icon-select-white-down.png
│ │ ├── icon-select-white-up.png
│ │ ├── icon-title.png
│ │ ├── icon-user.png
│ │ ├── img-article.jpg
│ │ ├── img-home-features1.png
│ │ ├── img-home-features2.png
│ │ ├── img-home-features3.png
│ │ ├── img-home-features4.png
│ │ ├── img-home-features5.png
│ │ ├── img-joy.png
│ │ ├── img-taro-left-white.png
│ │ ├── img-taro-left.png
│ │ ├── img-taro-right-white.png
│ │ ├── img-taro-right.png
│ │ ├── input-search.png
│ │ ├── iphone-cases.png
│ │ ├── item-active.png
│ │ ├── item-rotate-active.png
│ │ ├── left-arrow.png
│ │ ├── logo-blue.png
│ │ ├── logo-header-red.png
│ │ ├── logo-header-white.png
│ │ ├── logo-red.png
│ │ ├── marketing-back.png
│ │ ├── marketing-title.png
│ │ ├── order.png
│ │ ├── right-arrow.png
│ │ ├── vx-code.png
│ │ └── vx-code1.png
│ ├── styles
│ │ ├── highlight.scss
│ │ ├── md-style.scss
│ │ ├── reset.scss
│ │ └── variables.scss
│ └── util
│ │ ├── helper.ts
│ │ ├── index.ts
│ │ ├── ref.ts
│ │ └── useTranslate.ts
│ ├── config
│ └── env.ts
│ ├── doc
│ ├── App.vue
│ ├── components
│ │ ├── DemoPreview.vue
│ │ ├── DocHeader.vue
│ │ ├── IconDemo.vue
│ │ ├── Nav.vue
│ │ └── demo-block
│ │ │ ├── basedUtil.ts
│ │ │ ├── demoBlock.scss
│ │ │ ├── demoBlock.vue
│ │ │ ├── index.html
│ │ │ ├── index.ts
│ │ │ ├── package.json
│ │ │ └── tsconfig.json
│ ├── directive
│ │ └── hover
│ │ │ └── hover.ts
│ ├── favicon.ico
│ ├── main.ts
│ ├── router.ts
│ └── views
│ │ └── Index.vue
│ ├── mobile
│ ├── App.vue
│ ├── components
│ │ ├── Index.vue
│ │ └── demo.vue
│ ├── favicon.ico
│ ├── main.ts
│ └── router.ts
│ └── utils
│ ├── index.ts
│ └── useTranslate.ts
├── test-setup.ts
├── tsconfig.h5.json
├── tsconfig.json
├── tsconfig.taro.json
├── vite.config.build.css.ts
├── vite.config.build.disperse.ts
├── vite.config.build.locale.ts
├── vite.config.build.resolver.ts
├── vite.config.build.taro.vue.disperse.ts
├── vite.config.build.taro.vue.ts
├── vite.config.build.ts
├── vite.config.jdt.ts
└── vite.config.ts
/.git-blame-ignore-revs:
--------------------------------------------------------------------------------
1 | # Apply with:
2 | # `git config --local blame.ignoreRevsFile .git-blame-ignore-revs`
3 |
4 | # [chore: prettier format](https://github.com/jd-opensource/nutui/pull/2995)
5 | 41772b4225c020af0893516081e57c1389d8b387
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 | contact_links:
3 | - name: 🤖 常见问题 QA
4 | url: https://github.com/jd-opensource/nutui/issues/2461
5 | about: 这里可能会有解决方案。
6 |
--------------------------------------------------------------------------------
/.husky/.gitignore:
--------------------------------------------------------------------------------
1 | _
2 |
--------------------------------------------------------------------------------
/.husky/commit-msg:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | . "$(dirname "$0")/_/husky.sh"
3 |
4 | npx --no-install commitlint --edit "$1"
--------------------------------------------------------------------------------
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | node ./scripts/verifymail.js
2 | npx --no-install nano-staged
3 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | registry=https://registry.npmmirror.com/
2 | engine-strict=true
3 | strict-peer-dependencies=false
4 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "semi": false,
4 | "bracketSpacing": true,
5 | "tabWidth": 2,
6 | "useTabs": false,
7 | "printWidth": 120,
8 | "proseWrap": "preserve",
9 | "htmlWhitespaceSensitivity": "strict",
10 | "trailingComma": "none",
11 | "plugins": ["prettier-markdown-table"]
12 | }
13 |
--------------------------------------------------------------------------------
/eslint.config.js:
--------------------------------------------------------------------------------
1 | import NutUI from '@nutui/eslint-config'
2 | import gitignore from 'eslint-config-flat-gitignore'
3 |
4 | export default [
5 | gitignore(),
6 | ...NutUI
7 | ]
8 |
--------------------------------------------------------------------------------
/packages/nutui-eslint-config/README.md:
--------------------------------------------------------------------------------
1 | # ESLint Config of NutUI Vue
2 |
3 | ## Install
4 |
5 | ```sh
6 | # pnpm
7 | pnpm add @nutui/eslint-config -D
8 | # npm
9 | npm i @nutui/eslint-config -D
10 | # yarn
11 | yarn add @nutui/eslint-config -D
12 | ```
13 |
14 | ## Usage
15 |
16 | ```json
17 | {
18 | "extends": "@nutui/eslint-config"
19 | }
20 | ```
--------------------------------------------------------------------------------
/packages/nutui-playground/README.md:
--------------------------------------------------------------------------------
1 | # NutUI Vue SFC Playground
2 |
3 | ## Run and build
4 |
5 | ```sh
6 | pnpm i
7 | pnpm dev
8 | pnpm build
9 | ```
10 |
11 | > Some codes refer to [Vue SFC Playground](https://github.com/vuejs/core/tree/main/packages/sfc-playground)
--------------------------------------------------------------------------------
/packages/nutui-playground/public/style.js:
--------------------------------------------------------------------------------
1 | // It is empty to be compatible with Functional Component style import
2 |
--------------------------------------------------------------------------------
/packages/nutui-playground/src/download/template/README.md:
--------------------------------------------------------------------------------
1 | # NutUI Template
2 |
3 | This is a project template using [Vite](https://vitejs.dev/). It requires [Node.js](https://nodejs.org) v12+.
4 |
5 | To start:
6 |
7 | ```sh
8 | pnpm i
9 | pnpm dev
10 |
11 | # if using yarn:
12 | yarn
13 | yarn dev
14 |
15 | # if using npm:
16 | npm install
17 | npm run dev
18 | ```
19 |
--------------------------------------------------------------------------------
/packages/nutui-playground/src/download/template/main.js:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import App from './App.vue'
3 | import '@nutui/touch-emulator'
4 |
5 | createApp(App).mount('#app')
6 |
--------------------------------------------------------------------------------
/packages/nutui-playground/src/main.ts:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import App from './App.vue'
3 | import './style.css'
4 |
5 | // @ts-expect-error Custom window property
6 | window.VUE_DEVTOOLS_CONFIG = {
7 | defaultSelectedAppId: 'repl'
8 | }
9 |
10 | createApp(App).mount('#app')
11 |
--------------------------------------------------------------------------------
/packages/nutui-playground/src/style.css:
--------------------------------------------------------------------------------
1 | html {
2 | height: 100vh;
3 | }
4 |
5 | body,
6 | #app {
7 | height: 100%;
8 | }
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = space
6 | indent_size = 2
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 | insert_final_newline = true
10 |
11 | [*.md]
12 | trim_trailing_whitespace = false
13 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["taro/vue3", "@nutui/eslint-config"]
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/.gitignore:
--------------------------------------------------------------------------------
1 | dist/
2 | deploy_versions/
3 | .temp/
4 | .rn_temp/
5 | node_modules/
6 | .DS_Store
7 | .swc
8 | src/app.config.ts
9 | lib
10 | components.d.ts
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/README.md:
--------------------------------------------------------------------------------
1 | # nutui-taro-demo
2 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/babel.config.cjs:
--------------------------------------------------------------------------------
1 | // babel-preset-taro 更多选项和默认值:
2 | // https://github.com/NervJS/taro/blob/next/packages/babel-preset-taro/README.md
3 | module.exports = {
4 | presets: [
5 | [
6 | 'taro',
7 | {
8 | framework: 'vue3',
9 | ts: true
10 | }
11 | ]
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/config/dev.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | env: {
3 | NODE_ENV: '"development"'
4 | },
5 | defineConstants: {},
6 | mini: {},
7 | h5: {}
8 | }
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/config/prod.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | env: {
3 | NODE_ENV: '"production"'
4 | },
5 | defineConstants: {},
6 | mini: {},
7 | h5: {
8 | publicPath: '/taro/vue/4x/demo/'
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/project.tt.json:
--------------------------------------------------------------------------------
1 | {
2 | "miniprogramRoot": "./",
3 | "projectname": "@nutui/nutui-taro-demo",
4 | "appid": "touristappid",
5 | "setting": {
6 | "urlCheck": true,
7 | "es6": false,
8 | "postcss": false,
9 | "minified": false
10 | },
11 | "compileType": "miniprogram"
12 | }
13 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/button/block.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button block type="primary">Block</nut-button>
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/button/color.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button color="#7232dd">Pure</nut-button>
3 | <nut-button color="#7232dd" plain>Pure</nut-button>
4 | <nut-button color="linear-gradient(to right, #ff6034, #ee0a24)"> Gradient </nut-button>
5 | </template>
6 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/button/disabled.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button disabled type="primary">Disabled</nut-button>
3 | <nut-button plain disabled type="info">Disabled</nut-button>
4 | <nut-button plain disabled type="primary">Disabled</nut-button>
5 | </template>
6 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/button/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Button'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/button/plain.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button plain type="primary">Plain</nut-button>
3 | <nut-button plain type="info">Plain</nut-button>
4 | </template>
5 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/button/shape.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button shape="square" type="primary">Square</nut-button>
3 | <nut-button shape="round" type="info">Round</nut-button>
4 | </template>
5 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/button/size.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button size="large" type="primary">Large</nut-button>
3 | <nut-button type="primary">Normal</nut-button>
4 | <nut-button size="small" type="primary">Small</nut-button>
5 | <nut-button size="mini" type="primary">Mini</nut-button>
6 | </template>
7 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/button/type.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button type="primary">Primary</nut-button>
3 | <nut-button type="info">Info</nut-button>
4 | <nut-button type="default">Default</nut-button>
5 | <nut-button type="danger">Danger</nut-button>
6 | <nut-button type="warning">Warning</nut-button>
7 | <nut-button type="success">Success</nut-button>
8 | </template>
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/cell/align.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell desc-text-align="left" desc="Description"></nut-cell>
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/cell/center.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell center title="Title" sub-title="Subtitle" desc="Description"></nut-cell>
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/cell/desc.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell title="Title">
3 | <template #desc>
4 | <span style="color: red">Description Slot</span>
5 | </template>
6 | </nut-cell>
7 | </template>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/cell/group.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell-group title="CellGroup Title" desc="CellGroup Description">
3 | <nut-cell title="Cell"></nut-cell>
4 | <nut-cell title="Link Style" is-link></nut-cell>
5 | </nut-cell-group>
6 | </template>
7 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/cell/icon.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell title="Icon Slot" desc="Description">
3 | <template #icon>
4 | <My />
5 | </template>
6 | </nut-cell>
7 | </template>
8 | <script setup lang="ts">
9 | import { My } from '@nutui/icons-vue-taro'
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/cell/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Cell'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/cell/link.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell title="Switch">
3 | <template #link>
4 | <nut-switch v-model="checked" />
5 | </template>
6 | </nut-cell>
7 | </template>
8 | <script setup lang="ts">
9 | import { ref } from 'vue'
10 | const checked = ref(true)
11 | </script>
12 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/cell/size.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell size="large" title="Title" desc="Description"></nut-cell>
3 | <nut-cell size="large" title="Title" sub-title="Subtitle" desc="Description"></nut-cell>
4 | </template>
5 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/cell/slot.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <div>Content</div>
4 | </nut-cell>
5 | </template>
6 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/cell/title.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell desc="Description">
3 | <template #title>
4 | <span style="color: red">Title</span>
5 | </template>
6 | </nut-cell>
7 | </template>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/configprovider/index.config.ts:
--------------------------------------------------------------------------------
1 | export default { navigationBarTitleText: 'ConfigProvider' }
2 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/icon/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Icon'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/image/index.config.ts:
--------------------------------------------------------------------------------
1 | export default { navigationBarTitleText: 'Image' }
2 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/image/index.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <Demo>
3 | <h2>基础用法</h2>
4 | <nut-cell>
5 | <nut-image></nut-image>
6 | </nut-cell>
7 | </Demo>
8 | </template>
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/overlay/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button type="primary" @click="show = true">open</nut-button>
3 | <nut-overlay v-model:visible="show"></nut-overlay>
4 | </template>
5 | <script setup lang="ts">
6 | import { ref } from 'vue'
7 | const show = ref(false)
8 | </script>
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/overlay/duration.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button type="primary" @click="show = true">duration</nut-button>
3 | <nut-overlay v-model:visible="show" :duration="2.5"></nut-overlay>
4 | </template>
5 | <script setup lang="ts">
6 | import { ref } from 'vue'
7 | const show = ref(false)
8 | </script>
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/overlay/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Overlay'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/overlay/lock.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button type="primary" @click="show = true">lock-scroll</nut-button>
3 | <nut-overlay v-model:visible="show" :lock-scroll="true"></nut-overlay>
4 | </template>
5 | <script setup lang="ts">
6 | import { ref } from 'vue'
7 | const show = ref(false)
8 | </script>
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/overlay/mask.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button type="primary" @click="show = true">style</nut-button>
3 | <nut-overlay
4 | v-model:visible="show"
5 | :overlay-style="{
6 | backgroundColor: 'rgba(0, 0, 0, .2)'
7 | }"
8 | ></nut-overlay>
9 | </template>
10 | <script setup lang="ts">
11 | import { ref } from 'vue'
12 | const show = ref(false)
13 | </script>
14 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/popup/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell title="Center" is-link @click="show = true"></nut-cell>
3 | <nut-popup v-model:visible="show" :style="{ padding: '30px 50px' }"> 正文 </nut-popup>
4 | </template>
5 | <script setup>
6 | import { ref } from 'vue'
7 | const show = ref(false)
8 | </script>
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/popup/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Popup'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/basic/pages/popup/round.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell title="Round" is-link @click="show = true"></nut-cell>
3 | <nut-popup v-model:visible="show" position="bottom" closeable round :style="{ height: '30%' }"></nut-popup>
4 | </template>
5 | <script setup>
6 | import { ref } from 'vue'
7 | const show = ref(false)
8 | </script>
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/business/pages/address/index.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Address'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/business/pages/addresslist/index.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Addresslist'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/business/pages/avatarcropper/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'AvatarCropper'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/business/pages/barrage/index.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Barrage'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/business/pages/card/index.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Card'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/business/pages/category/index.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Category'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/business/pages/comment/index.config.ts:
--------------------------------------------------------------------------------
1 | export default { navigationBarTitleText: 'Comment' }
2 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/business/pages/ecard/index.config.ts:
--------------------------------------------------------------------------------
1 | export default { navigationBarTitleText: 'Ecard' }
2 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/business/pages/invoice/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Invoice'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/business/pages/signature/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Signature'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/business/pages/sku/index.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Sku'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/business/pages/timeselect/index.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'TimeSelect'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/calendar/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Calendar'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/calendarcard/first.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-calendar-card v-model="value" :first-day-of-week="1" @change="onChange"></nut-calendar-card>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(null)
7 | const onChange = (val: Date) => {
8 | console.log(val)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/calendarcard/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'CalendarCard'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/calendarcard/range.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-calendar-card v-model="value" type="range" @change="onChange"></nut-calendar-card>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref([])
7 | const onChange = (val: Date) => {
8 | console.log(val)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/calendarcard/single.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-calendar-card v-model="value" @change="onChange"></nut-calendar-card>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(new Date('2023-01-01'))
7 | const onChange = (val: Date) => {
8 | console.log(val)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/calendarcard/week.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-calendar-card v-model="value" type="week" @change="onChange"></nut-calendar-card>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref([])
7 | const onChange = (val: Date) => {
8 | console.log(val)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/cascader/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Cascader'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/checkbox/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-checkbox v-model="val1"> Right </nut-checkbox>
4 | <nut-checkbox v-model="val2" text-position="left"> Left </nut-checkbox>
5 | </nut-cell>
6 | </template>
7 | <script setup>
8 | import { ref } from 'vue'
9 | const val1 = ref(true)
10 | const val2 = ref(false)
11 | </script>
12 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/checkbox/disabled.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-checkbox v-model="val1" disabled> checked </nut-checkbox>
4 | <nut-checkbox v-model="val2" disabled> unchecked </nut-checkbox>
5 | </nut-cell>
6 | </template>
7 | <script setup>
8 | import { ref } from 'vue'
9 | const val1 = ref(true)
10 | const val2 = ref(false)
11 | </script>
12 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/checkbox/event.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-checkbox v-model="val" @change="change"> Change </nut-checkbox>
4 | </nut-cell>
5 | </template>
6 | <script setup>
7 | import { ref } from 'vue'
8 | const val = ref(false)
9 | const change = (state) => {
10 | console.log(state)
11 | }
12 | </script>
13 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/checkbox/indeterminate.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-checkbox v-model="val" indeterminate> Indeterminate </nut-checkbox>
4 | </nut-cell>
5 | </template>
6 | <script setup>
7 | import { ref } from 'vue'
8 | const val = ref(false)
9 | </script>
10 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/checkbox/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Checkbox'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/checkbox/shape.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-checkbox v-model="val1" shape="button"> Button </nut-checkbox>
4 | <nut-checkbox v-model="val2" shape="button"> Button </nut-checkbox>
5 | </nut-cell>
6 | </template>
7 | <script setup>
8 | import { ref } from 'vue'
9 | const val1 = ref(true)
10 | const val2 = ref(false)
11 | </script>
12 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/checkbox/size.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-checkbox v-model="val1" icon-size="25"> size 25 </nut-checkbox>
4 | <nut-checkbox v-model="val2" icon-size="10"> size 10 </nut-checkbox>
5 | </nut-cell>
6 | </template>
7 | <script setup>
8 | import { ref } from 'vue'
9 | const val1 = ref(false)
10 | const val2 = ref(false)
11 | </script>
12 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/datepicker/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'DatePicker'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/form/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Form'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/input/align.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input v-model="val1" input-align="left" />
3 | <nut-input v-model="val2" input-align="center" />
4 | <nut-input v-model="val3" input-align="right" />
5 | </template>
6 | <script setup>
7 | import { ref } from 'vue'
8 | const val1 = ref('Left')
9 | const val2 = ref('Center')
10 | const val3 = ref('Right')
11 | </script>
12 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/input/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input v-model="val" placeholder="Placeholder" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/input/border.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input v-model="val1" :border="false" />
3 | <nut-input v-model="val2" :border="false" />
4 | </template>
5 | <script setup>
6 | import { ref } from 'vue'
7 | const val1 = ref('12345')
8 | const val2 = ref('12345')
9 | </script>
10 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/input/count.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input v-model="val" show-word-limit :max-length="50" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref('12345')
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/input/event.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input v-model="val" clearable placeholder="Event" @clear="clear" @click-input="click" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | const clear = () => {
8 | console.log('clear')
9 | }
10 | const click = () => {
11 | console.log('click-input')
12 | }
13 | </script>
14 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/input/form.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-form>
3 | <nut-form-item label="Label" label-align="center">
4 | <nut-input v-model="val" />
5 | </nut-form-item>
6 | </nut-form>
7 | </template>
8 | <script setup>
9 | import { ref } from 'vue'
10 | const val = ref('')
11 | </script>
12 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/input/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Input'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/input/status.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input v-model="val1" disabled />
3 | <nut-input v-model="val2" readonly />
4 | </template>
5 | <script setup>
6 | import { ref } from 'vue'
7 | const val1 = ref('Disabled')
8 | const val2 = ref('Readonly')
9 | </script>
10 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/inputnumber/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input-number v-model="val" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(1)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/inputnumber/decimal.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input-number v-model="val" step="0.1" decimal-places="1" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(1)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/inputnumber/disabled.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input-number v-model="val" disabled />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(1)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/inputnumber/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'InputNumber'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/inputnumber/limit.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input-number v-model="val" :min="10" :max="20" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(10)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/inputnumber/readonly.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input-number v-model="val" readonly />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(1)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/inputnumber/size.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input-number v-model="val" :button-size="30" :input-width="50" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(1)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/inputnumber/step.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input-number v-model="val" :step="5" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(1)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/numberkeyboard/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'NumberKeyboard'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/picker/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Picker'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/radio/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-radio-group v-model="val">
3 | <nut-radio label="1">Option 1</nut-radio>
4 | <nut-radio label="2">Option 2</nut-radio>
5 | <nut-radio label="3">Option 3</nut-radio>
6 | </nut-radio-group>
7 | </template>
8 | <script setup lang="ts">
9 | import { ref } from 'vue'
10 | const val = ref('1')
11 | </script>
12 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/radio/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Radio'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/range/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-range v-model="val" @change="change"></nut-range>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(40)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/range/color.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-range v-model="val" inactive-color="red" button-color="blue" active-color="skyblue" @change="change"></nut-range>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(40)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/range/disabled.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-range v-model="val" disabled @change="change"></nut-range>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(40)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/range/hidden-range.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-range v-model="val" hidden-range @change="change"></nut-range>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(40)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/range/hidden-tag.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-range v-model="val" hidden-tag @change="change"></nut-range>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(40)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/range/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Range'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/range/limit.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-range v-model="val" :max="10" :min="-10" @change="change" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(0)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/range/range.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-range v-model="val" range @change="change"></nut-range>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref([20, 80])
7 | const change = (value: number[]) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/range/step.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-range v-model="val" :step="5" @change="change"></nut-range>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(20)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/rate/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(3)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/rate/color.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" active-color="skyblue" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(3)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/rate/count.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" :count="10" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(3)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/rate/disabled.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" disabled />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(3)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/rate/event.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" @change="onChange" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(3)
7 | const onChange = (val: number) => {
8 | console.log(val)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/rate/half.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" allow-half />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(3.5)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/rate/icon.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" :custom-icon="HeartFill" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | import { HeartFill } from '@nutui/icons-vue-taro'
7 | const value = ref(3)
8 | </script>
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/rate/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Rate'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/rate/read.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" readonly />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(3)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/rate/size.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" size="35" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(3)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/searchbar/background.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-searchbar
3 | v-model="val"
4 | background="linear-gradient(to right, #9866F0, #EB4D50)"
5 | input-background="#fff"
6 | ></nut-searchbar>
7 | </template>
8 | <script setup lang="ts">
9 | import { ref } from 'vue'
10 | const val = ref('')
11 | </script>
12 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/searchbar/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-searchbar v-model="val" @search="search"></nut-searchbar>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | const search = (text: string) => {
8 | console.log('search', text)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/searchbar/focus.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-searchbar v-model="val" :focus-style="{ outline: '1px solid red' }"></nut-searchbar>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/searchbar/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Searchbar'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/searchbar/left.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-searchbar v-model="val">
3 | <template #leftout> label </template>
4 | <template #leftin>
5 | <Search2 />
6 | </template>
7 | </nut-searchbar>
8 | </template>
9 | <script setup lang="ts">
10 | import { ref } from 'vue'
11 | import { Search2 } from '@nutui/icons-vue-taro'
12 | const val = ref('')
13 | </script>
14 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/searchbar/right.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-searchbar v-model="val">
3 | <template #rightout> Search </template>
4 | <template #rightin>
5 | <Search2 />
6 | </template>
7 | </nut-searchbar>
8 | </template>
9 | <script setup lang="ts">
10 | import { ref } from 'vue'
11 | import { Search2 } from '@nutui/icons-vue-taro'
12 | const val = ref('')
13 | </script>
14 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/searchbar/shape.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-searchbar v-model="val" shape="square"></nut-searchbar>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/shortpassword/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Shortpassword'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/textarea/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-textarea v-model="val" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/textarea/focus.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-textarea v-model="val" autofocus />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/textarea/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Textarea'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/textarea/limit.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-textarea v-model="val" limit-show :max-length="20" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/textarea/row.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-textarea v-model="val" autosize />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/textarea/status.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-textarea readonly model-value="Textarea Readonly" />
3 | <nut-textarea disabled model-value="Textarea Disabled" />
4 | </template>
5 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/dentry/pages/uploader/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Uploader'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/animate/index.config.ts:
--------------------------------------------------------------------------------
1 | export default { navigationBarTitleText: 'Animate' }
2 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/avatar/click.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-avatar @click="click"><My /></nut-avatar>
3 | </template>
4 | <script setup lang="ts">
5 | import { My } from '@nutui/icons-vue-taro'
6 | const click = () => {
7 | console.log('click')
8 | }
9 | </script>
10 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/avatar/color.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-avatar bg-color="red">
3 | <My color="white" />
4 | </nut-avatar>
5 | <nut-avatar color="white" bg-color="blue">小明</nut-avatar>
6 | </template>
7 | <script setup lang="ts">
8 | import { My } from '@nutui/icons-vue-taro'
9 | </script>
10 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/avatar/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Avatar'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/avatar/shape.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-avatar shape="square"><My /></nut-avatar>
3 | <nut-avatar shape="round"><My /></nut-avatar>
4 | </template>
5 | <script setup lang="ts">
6 | import { My } from '@nutui/icons-vue-taro'
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/badge/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Badge'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/circleprogress/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-circle-progress :progress="20" />
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/circleprogress/color.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-space>
3 | <nut-circle-progress :progress="50" color="skyblue" />
4 | <nut-circle-progress :progress="100" :color="gradientColor" />
5 | </nut-space>
6 | </template>
7 | <script setup lang="ts">
8 | const gradientColor = {
9 | '0%': '#FF5E5E',
10 | '100%': '#FFA062'
11 | }
12 | </script>
13 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/circleprogress/content.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-circle-progress :progress="90"> 90! </nut-circle-progress>
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/circleprogress/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'CricleProgress'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/circleprogress/size.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-space align="baseline">
3 | <nut-circle-progress :progress="80" :radius="80" />
4 | <nut-circle-progress :progress="50" :radius="50" />
5 | <nut-circle-progress :progress="30" :radius="30" />
6 | </nut-space>
7 | </template>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/circleprogress/width.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-circle-progress :progress="50" :stroke-width="10" />
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/collapse/disabled.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-collapse>
3 | <nut-collapse-item name="name1" title="Title 1"> Content 1 </nut-collapse-item>
4 | <nut-collapse-item name="name2" title="Title 2" disabled> Content 2 </nut-collapse-item>
5 | <nut-collapse-item name="name3" title="Title 3" disabled> Content 3 </nut-collapse-item>
6 | </nut-collapse>
7 | </template>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/collapse/extra.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-collapse>
3 | <nut-collapse-item name="name1" title="Title 1">
4 | <template #extra> Extra Content </template>
5 | Content 1
6 | </nut-collapse-item>
7 | <nut-collapse-item name="name2" title="Title 2"> Content 2 </nut-collapse-item>
8 | </nut-collapse>
9 | </template>
10 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/collapse/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Collapse'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/countdown/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-countdown :start-time="start" :end-time="end"></nut-countdown>
3 | </template>
4 |
5 | <script setup>
6 | const start = Date.now()
7 | const end = Date.now() + 60 * 1000
8 | </script>
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/countdown/format.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-countdown :end-time="time" format="DD 天 HH 时 mm 分 ss 秒" />
3 | </template>
4 |
5 | <script setup>
6 | const time = Date.now() + 60 * 1000
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/countdown/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Countdown'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/countdown/millisecond.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-countdown :end-time="time" millisecond format="HH:mm:ss:SS" />
3 | </template>
4 |
5 | <script setup>
6 | const time = Date.now() + 60 * 1000
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/countup/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-countup :init-num="0" :end-num="200"></nut-countup>
3 | <nut-countup :init-num="150" :end-num="0" :speed="2.62" :to-fixed="2"></nut-countup>
4 | <nut-countup :init-num="1000" :end-num="0" :speed="50" :to-fixed="2"></nut-countup>
5 | </template>
6 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/countup/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Countup'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/ellipsis/index.config.ts:
--------------------------------------------------------------------------------
1 | export default { navigationBarTitleText: 'Ellipsis' }
2 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/empty/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-empty description="404"></nut-empty>
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/empty/bottom.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-empty image="error" description="Error">
3 | <div style="margin-top: 10px">
4 | <nut-button type="primary">Refresh</nut-button>
5 | </div>
6 | </nut-empty>
7 | </template>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/empty/custom.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-empty
3 | image="https://static-ftcms.jd.com/p/files/61a9e3313985005b3958672e.png"
4 | description="Description"
5 | ></nut-empty>
6 | </template>
7 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/empty/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Empty'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/imagepreview/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'ImagePreview'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/list/index.config.ts:
--------------------------------------------------------------------------------
1 | export default { navigationBarTitleText: 'List' }
2 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/noticebar/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-noticebar :text="text" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const text = ref(
7 | 'NutUI 是京东风格的移动端组件库,使用 Vue 语言来编写可以在 H5,小程序平台上的应用,帮助研发人员提升开发效率,改善开发体验。'
8 | )
9 | </script>
10 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/noticebar/close.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-noticebar :text="text" close-mode />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const text = ref(
7 | 'NutUI 是京东风格的移动端组件库,使用 Vue 语言来编写可以在 H5,小程序平台上的应用,帮助研发人员提升开发效率,改善开发体验。'
8 | )
9 | </script>
10 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/noticebar/custom.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-noticebar :text="text" background="skyblue" color="rgba(0,0,0,0.8)" :left-icon="false" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const text = ref(
7 | 'NutUI 是京东风格的移动端组件库,使用 Vue 语言来编写可以在 H5,小程序平台上的应用,帮助研发人员提升开发效率,改善开发体验。'
8 | )
9 | </script>
10 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/noticebar/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Noticebar'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/noticebar/wrap.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-noticebar :text="text" wrapable />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const text = ref(
7 | 'NutUI 是京东风格的移动端组件库,使用 Vue 语言来编写可以在 H5,小程序平台上的应用,帮助研发人员提升开发效率,改善开发体验。'
8 | )
9 | </script>
10 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/popover/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Popover'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/price/decimal.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-price :price="8888" :decimal-digits="0" />
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/price/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Price'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/price/position.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-price :price="8888.01" position="after" symbol="RMB" />
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/price/size.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-price :price="0" size="large" />
3 | <nut-price :price="0" size="normal" />
4 | <nut-price :price="0" size="small" />
5 | </template>
6 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/price/symbol.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-price :price="10010.01" symbol="quot; />
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/price/thousands.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-price :price="15213.1221" :decimal-digits="3" thousands />
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/price/through.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-price :price="8888" :decimal-digits="0" strike-through />
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/progress/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-progress :percentage="30" />
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/progress/color.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-progress :percentage="30" stroke-color="skyblue" stroke-width="15" text-color="green" />
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/progress/content.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-progress :percentage="60" text-inside>
3 | <image
4 | src="https://img11.360buyimg.com/imagetools/jfs/t1/137646/13/7132/1648/5f4c748bE43da8ddd/a3f06d51dcae7b60.png"
5 | style="width: 30px; height: 30px"
6 | />
7 | </nut-progress>
8 | </template>
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/progress/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Progress'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/progress/inside.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-progress :percentage="60" text-inside />
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/progress/size.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-progress :percentage="30" text-inside size="small"> </nut-progress>
3 | <nut-progress :percentage="50" text-inside size="base"> </nut-progress>
4 | <nut-progress :percentage="70" text-inside size="large"> </nut-progress>
5 | </template>
6 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/progress/text.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-progress :percentage="50" :show-text="false" />
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/skeleton/avatar.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-skeleton width="250px" height="15px" animated avatar avatar-size="60px" row="3"> </nut-skeleton>
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/skeleton/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-skeleton width="200px" height="15px" animated></nut-skeleton>
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/skeleton/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Skeleton'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/skeleton/round.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-skeleton width="250px" height="15px" animated round></nut-skeleton>
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/skeleton/row.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-skeleton width="250px" height="15px" animated row="3"> </nut-skeleton>
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/steps/desc.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-steps :current="2">
3 | <nut-step title="未开始" content="描述信息">1</nut-step>
4 | <nut-step title="进行中" content="描述信息">2</nut-step>
5 | <nut-step title="已完成" content="描述信息">3</nut-step>
6 | </nut-steps>
7 | </template>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/steps/dot.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-steps :current="2" progress-dot>
3 | <nut-step title="未开始">1</nut-step>
4 | <nut-step title="进行中">2</nut-step>
5 | <nut-step title="已完成">3</nut-step>
6 | </nut-steps>
7 | </template>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/steps/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Steps'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/swiper/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Swiper'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/table/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Table'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/tag/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-space>
3 | <nut-tag> default </nut-tag>
4 | <nut-tag type="primary"> primary </nut-tag>
5 | <nut-tag type="success"> success </nut-tag>
6 | <nut-tag type="danger"> danger </nut-tag>
7 | <nut-tag type="warning"> warning </nut-tag>
8 | </nut-space>
9 | </template>
10 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/tag/color.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-space>
3 | <nut-tag color="#FA685D"> background </nut-tag>
4 | <nut-tag color="#E9E9E9" text-color="#999999"> text </nut-tag>
5 | <nut-tag color="#FA2400" plain> plain </nut-tag>
6 | </nut-space>
7 | </template>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/tag/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Tag'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/tour/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Tour'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/trendarrow/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-trend-arrow :rate="1" />
4 | <nut-trend-arrow :rate="-0.2535" />
5 | </nut-cell>
6 | </template>
7 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/trendarrow/digits.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-trend-arrow :digits="1" :rate="10.2365" />
4 | <nut-trend-arrow :digits="3" :rate="-0.2535" />
5 | </nut-cell>
6 | </template>
7 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/trendarrow/index.config.ts:
--------------------------------------------------------------------------------
1 | export default { navigationBarTitleText: 'TrendArrow' }
2 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/trendarrow/left.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-trend-arrow arrow-left :rate="0.2535" />
4 | <nut-trend-arrow arrow-left :rate="-0.2535" />
5 | </nut-cell>
6 | </template>
7 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/trendarrow/sign.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-trend-arrow show-sign :rate="1" />
4 | <nut-trend-arrow show-sign :rate="-0.2535" />
5 | </nut-cell>
6 | </template>
7 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/trendarrow/zero.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-trend-arrow show-sign :rate="0" />
4 | <nut-trend-arrow show-sign show-zero :rate="0" />
5 | </nut-cell>
6 | </template>
7 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/watermark/index.config.ts:
--------------------------------------------------------------------------------
1 | export default { navigationBarTitleText: 'Watermark' }
2 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/exhibition/pages/watermark/multi.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell style="height: 240px">
3 | <nut-watermark
4 | :full-page="false"
5 | :gap-y="24"
6 | font-color="#fa2c19"
7 | :content="['nutui', 'watermark']"
8 | ></nut-watermark>
9 | </nut-cell>
10 | </template>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/actionsheet/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'ActionSheet'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/backtop/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Backtop'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/backtop/index.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <Demo class="bg-w">
3 | <view style="height: 20px"></view>
4 | <Basic />
5 | </Demo>
6 | </template>
7 |
8 | <script lang="ts" setup>
9 | import Basic from './basic.vue'
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/dialog/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Dialog'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/drag/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-drag>
3 | <nut-button type="primary">move</nut-button>
4 | </nut-drag>
5 | </template>
6 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/drag/direction.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-drag direction="x">
3 | <nut-button type="primary">DirectionX</nut-button>
4 | </nut-drag>
5 | <nut-drag direction="y">
6 | <nut-button type="primary">DirectionY</nut-button>
7 | </nut-drag>
8 | </template>
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/drag/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Drag'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/infiniteloading/index.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'InfiniteLoading'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/notify/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Notify'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/swipe/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-swipe>
3 | <nut-cell round-radius="0" title="Swipe Left" />
4 | <template #right>
5 | <nut-button shape="square" style="height: 100%" type="danger">Button</nut-button>
6 | </template>
7 | </nut-swipe>
8 | </template>
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/swipe/disabled.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-swipe disabled>
3 | <nut-cell round-radius="0" title="Disabled" />
4 | <template #right>
5 | <nut-button shape="square" style="height: 100%" type="danger">Button</nut-button>
6 | </template>
7 | </nut-swipe>
8 | </template>
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/swipe/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Swipe'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/switch/async.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-switch :model-value="val" @change="change" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref(true)
7 | const change = (value) => {
8 | setTimeout(() => {
9 | val.value = value
10 | }, 2000)
11 | }
12 | </script>
13 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/switch/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-switch v-model="val" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref(true)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/switch/color.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-switch v-model="val" active-color="skyblue" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref(true)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/switch/disabled.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-switch v-model="val" disabled />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref(true)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/switch/event.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-switch v-model="val" @change="change" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref(true)
7 | const change = (value) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/switch/icon.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-switch v-model="val" loading>
3 | <template #icon>
4 | <Loading name="loading" />
5 | </template>
6 | </nut-switch>
7 | </template>
8 | <script setup>
9 | import { ref } from 'vue'
10 | import { Loading } from '@nutui/icons-vue-taro'
11 | const val = ref(true)
12 | </script>
13 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/switch/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Switch'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/switch/loading.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-switch v-model="val" loading active-color="red" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref(true)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/switch/text.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-switch v-model="val" active-text="开" inactive-text="关" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref(true)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/feedback/pages/toast/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Toast'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/layout/pages/divider/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-divider />
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/layout/pages/divider/custom.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-divider :style="{ color: '#1989fa', borderColor: '#1989fa', padding: '0 16px' }"> text </nut-divider>
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/layout/pages/divider/dashed.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-divider dashed> text </nut-divider>
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/layout/pages/divider/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Divider'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/layout/pages/divider/position.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-divider content-position="left"> text </nut-divider>
3 | <nut-divider> text </nut-divider>
4 | <nut-divider content-position="right"> text </nut-divider>
5 | </template>
6 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/layout/pages/divider/text.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-divider> text </nut-divider>
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/layout/pages/divider/vertical.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <div :style="{ fontSize: '14px', marginLeft: '27px', color: '#909ca4' }">
3 | text1
4 | <nut-divider direction="vertical" />
5 | link
6 | <nut-divider direction="vertical" />
7 | text2
8 | </div>
9 | </template>
10 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/layout/pages/grid/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Grid'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/layout/pages/layout/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Layout'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/layout/pages/space/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-space>
3 | <nut-button>Button</nut-button>
4 | <nut-button>Button</nut-button>
5 | <nut-button>Button</nut-button>
6 | <nut-button>Button</nut-button>
7 | </nut-space>
8 | </template>
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/layout/pages/space/direction.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-space direction="vertical" fill>
3 | <nut-button block>Button</nut-button>
4 | <nut-button block>Button</nut-button>
5 | <nut-button block>Button</nut-button>
6 | <nut-button block>Button</nut-button>
7 | </nut-space>
8 | </template>
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/layout/pages/space/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Space'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/layout/pages/sticky/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-sticky top="57">
3 | <nut-button type="primary">Top 57px</nut-button>
4 | </nut-sticky>
5 | </template>
6 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/layout/pages/sticky/index.config.ts:
--------------------------------------------------------------------------------
1 | export default { navigationBarTitleText: 'Sticky' }
2 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/layout/pages/sticky/top.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-sticky top="120">
3 | <nut-button type="primary">Top 120px</nut-button>
4 | </nut-sticky>
5 | <div style="height: 200vh"></div>
6 | </template>
7 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/nav/pages/elevator/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Elevator'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/nav/pages/fixednav/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'FixedNav'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/nav/pages/fixednav/index.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <Demo>
3 | <Basic />
4 |
5 | <Left />
6 |
7 | <Overlay />
8 |
9 | <Custom />
10 | </Demo>
11 | </template>
12 |
13 | <script setup lang="ts">
14 | import Basic from './basic.vue'
15 | import Left from './left.vue'
16 | import Overlay from './overlay.vue'
17 | import Custom from './custom.vue'
18 | </script>
19 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/nav/pages/indicator/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-space :gutter="30">
3 | <nut-indicator :size="5" :current="1" />
4 | <nut-indicator :size="5" :current="3" />
5 | <nut-indicator :size="5" :current="5" />
6 | </nut-space>
7 | </template>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/nav/pages/indicator/block.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-indicator block align="left" :size="6" :current="5" />
3 | <nut-indicator block algin="center" :size="6" :current="5" />
4 | <nut-indicator block align="right" :size="6" :current="5" />
5 | </template>
6 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/nav/pages/indicator/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Indicator'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/nav/pages/indicator/zero.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-indicator :fill-zero="false" :size="6" :current="5" />
3 | </template>
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/nav/pages/menu/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Menu'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/nav/pages/navbar/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-navbar title="Title" @click-title="onClick"></nut-navbar>
3 | </template>
4 | <script setup lang="ts">
5 | const onClick = () => {
6 | console.log('[Navbar]: on click title')
7 | }
8 | </script>
9 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/nav/pages/navbar/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Navbar'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/nav/pages/pagination/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-pagination v-model="page" :total-items="25" :items-per-page="5" @change="change" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const page = ref(1)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/nav/pages/pagination/ellipse.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-pagination v-model="page" :total-items="125" :show-page-size="3" force-ellipses />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const page = ref(1)
7 | </script>
8 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/nav/pages/pagination/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Pagination'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/nav/pages/pagination/simple.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-pagination v-model="page" :page-count="12" mode="simple" @change="change" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const page = ref(1)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/nav/pages/sidenavbar/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'SideNavbar'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/nav/pages/tabbar/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Tabbar'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/nav/pages/tabs/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: 'Tabs'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/pages/index/index.config.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | navigationBarTitleText: '首页'
3 | }
4 |
--------------------------------------------------------------------------------
/packages/nutui-taro-demo/src/utils/index.ts:
--------------------------------------------------------------------------------
1 | export * from './useTranslate'
2 |
--------------------------------------------------------------------------------
/packages/nutui-touch-emulator/build.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs')
2 |
3 | if (!fs.existsSync('./dist')) {
4 | fs.mkdirSync('./dist')
5 | }
6 | fs.copyFileSync('./src/index.js', './dist/index.js')
7 |
--------------------------------------------------------------------------------
/packages/nutui-vite-plugins/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './markdown'
2 | export { default as markdown } from './markdown'
3 |
--------------------------------------------------------------------------------
/packages/nutui-vite-plugins/tsup.config.ts:
--------------------------------------------------------------------------------
1 | import type { Options } from 'tsup'
2 |
3 | export default <Options>{
4 | entryPoints: ['src/*.ts'],
5 | clean: true,
6 | format: ['cjs', 'esm'],
7 | dts: true,
8 | shims: true,
9 | silent: true
10 | }
11 |
--------------------------------------------------------------------------------
/packages/nutui-vscode-extension/.gitignore:
--------------------------------------------------------------------------------
1 | out
2 | dist
3 | node_modules
4 | .vscode-test/
5 | *.vsix
6 | yarn.lock
7 |
--------------------------------------------------------------------------------
/packages/nutui-vscode-extension/.vscodeignore:
--------------------------------------------------------------------------------
1 | .vscode/**
2 | .vscode-test/**
3 | out/**
4 | node_modules/**
5 | .gitignore
6 | .yarnrc
7 | vsc-extension-quickstart.md
8 | **/tsconfig.json
9 | **/.eslintrc.json
10 | **/*.map
11 | **/*.ts
12 |
--------------------------------------------------------------------------------
/packages/nutui-vscode-extension/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Change Log
2 |
3 | ## v1.0.2
4 |
5 | * 支持分别跳转 H5 和小程序的组件文档
6 | * 支持在 JSX、TSX 中使用插件功能
7 |
8 | ## v1.0.0 ~ v1.0.1
9 |
10 | * 支持组件库 4.0 升级
11 |
12 | ## v0.0.2
13 |
14 | * 支持新增组件自动补全
15 | * 查看文档链接更新
16 |
17 |
18 | ## v0.0.1
19 |
20 | * 支持快速查看组件文档
21 | * 支持自动补全功能
--------------------------------------------------------------------------------
/packages/nutui-vscode-extension/src/componentDesc.ts:
--------------------------------------------------------------------------------
1 | export interface ComponentDesc {
2 | site: string
3 | props?: string[]
4 | }
5 |
--------------------------------------------------------------------------------
/packages/nutui-vscode-extension/src/nutui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/packages/nutui-vscode-extension/src/nutui.png
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - 'packages/*'
--------------------------------------------------------------------------------
/src/packages/__VUE/animate/types.ts:
--------------------------------------------------------------------------------
1 | export type AnimateType =
2 | | 'shake'
3 | | 'ripple'
4 | | 'breath'
5 | | 'float'
6 | | 'slide-right'
7 | | 'slide-left'
8 | | 'slide-top'
9 | | 'slide-bottom'
10 | | 'jump'
11 | | 'twinkle'
12 | | 'flicker'
13 | export type AnimateAction = 'initial' | 'click' | ''
14 |
--------------------------------------------------------------------------------
/src/packages/__VUE/audio/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-audio :url="url" loop type="icon"></nut-audio>
3 | </template>
4 | <script setup lang="ts">
5 | const url = '//storage.360buyimg.com/jdcdkh/SMB/VCG231024564.wav'
6 | </script>
7 |
--------------------------------------------------------------------------------
/src/packages/__VUE/audio/doc.taro.md:
--------------------------------------------------------------------------------
1 | # Audio 组件
2 |
3 | ### 介绍
4 |
5 | 用于音频播放
6 |
7 | #### 直接使用 Taro 现有的 Taro.createInnerAudioContext 接口开发 [参考文档](https://taro-docs.jd.com/docs/apis/media/audio/createInnerAudioContext)
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/audio/types.ts:
--------------------------------------------------------------------------------
1 | export type AudioType = 'progress' | 'icon' | 'controls' | 'none'
2 | export type AudioOperateType = 'play' | 'back' | 'forward' | 'mute'
3 | export const AUDIO_KEY = Symbol('nut-audio')
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/audiooperate/index.scss:
--------------------------------------------------------------------------------
1 | @import '../button/index.scss';
2 |
3 | .nut-audio-operate-group {
4 | display: flex;
5 | display: flex;
6 | align-items: center;
7 | justify-content: center;
8 | margin-top: 10px;
9 |
10 | .nut-audio-operate {
11 | .nut-audio-operate-item {
12 | margin: 0 5px;
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/packages/__VUE/avatar/demo/badge.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-badge value="8">
3 | <nut-avatar shape="square"><My /></nut-avatar>
4 | </nut-badge>
5 | <span style="margin-right: 10px"></span>
6 | <nut-badge dot>
7 | <nut-avatar shape="square"><My /></nut-avatar>
8 | </nut-badge>
9 | </template>
10 | <script setup lang="ts">
11 | import { My } from '@nutui/icons-vue'
12 | </script>
13 |
--------------------------------------------------------------------------------
/src/packages/__VUE/avatar/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-avatar> <img :src="url" /> </nut-avatar>
3 | <nut-avatar> <My /> </nut-avatar>
4 | <nut-avatar> 王 </nut-avatar>
5 | </template>
6 | <script setup lang="ts">
7 | import { My } from '@nutui/icons-vue'
8 | const url = 'https://img12.360buyimg.com/imagetools/jfs/t1/196430/38/8105/14329/60c806a4Ed506298a/e6de9fb7b8490f38.png'
9 | </script>
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/avatar/demo/click.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-avatar @click="click"><My /></nut-avatar>
3 | </template>
4 | <script setup lang="ts">
5 | import { My } from '@nutui/icons-vue'
6 | const click = () => {
7 | console.log('click')
8 | }
9 | </script>
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/avatar/demo/color.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-avatar bg-color="red">
3 | <My color="white" />
4 | </nut-avatar>
5 | <nut-avatar color="white" bg-color="blue">小明</nut-avatar>
6 | </template>
7 | <script setup lang="ts">
8 | import { My } from '@nutui/icons-vue'
9 | </script>
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/avatar/demo/shape.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-avatar shape="square"><My /></nut-avatar>
3 | <nut-avatar shape="round"><My /></nut-avatar>
4 | </template>
5 | <script setup lang="ts">
6 | import { My } from '@nutui/icons-vue'
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/avatar/types.ts:
--------------------------------------------------------------------------------
1 | export const AVATAR_KEY = Symbol('nut-avatar')
2 |
3 | export type AvatarSize = 'large' | 'normal' | 'small'
4 | export type AvatarShape = 'round' | 'square'
5 | export type AvatarZIndex = 'left' | 'right'
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/avatarcropper/types.ts:
--------------------------------------------------------------------------------
1 | export type AvatarCropperToolbarPosition = 'top' | 'bottom'
2 | export type AvatarCropperSizeType = 'original' | 'compressed'
3 | export type AvatarCropperSourceType = 'album' | 'camera'
4 | export type AvatarCropperShape = 'square' | 'round'
5 |
--------------------------------------------------------------------------------
/src/packages/__VUE/avatargroup/index.scss:
--------------------------------------------------------------------------------
1 | .nut-avatar-group {
2 | background-size: 100% 100%;
3 | background-repeat: no-repeat;
4 | background-position: center center;
5 | display: flex;
6 | position: relative;
7 | flex: 0 0 auto; // 防止被压缩
8 | .nut-avatar {
9 | border: 1px solid #fff;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/backtop/index.ts:
--------------------------------------------------------------------------------
1 | import Backtop from './backtop.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Backtop)
6 |
7 | export type { BacktopProps } from './backtop.vue'
8 |
9 | export type BacktopInstance = ComponentPublicInstance & InstanceType<typeof Backtop>
10 |
11 | export { Backtop, Backtop as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/badge/index.taro.ts:
--------------------------------------------------------------------------------
1 | import Badge from './badge.taro.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Badge)
6 |
7 | export type { BadgeProps } from './badge.taro.vue'
8 |
9 | export type BadgeInstance = ComponentPublicInstance & InstanceType<typeof Badge>
10 |
11 | export { Badge, Badge as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/badge/index.ts:
--------------------------------------------------------------------------------
1 | import Badge from './badge.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Badge)
6 |
7 | export type { BadgeProps } from './badge.vue'
8 |
9 | export type BadgeInstance = ComponentPublicInstance & InstanceType<typeof Badge>
10 |
11 | export { Badge, Badge as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/button/demo/block.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button block type="primary">Block</nut-button>
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/button/demo/color.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button color="#7232dd">Pure</nut-button>
3 | <nut-button color="#7232dd" plain>Pure</nut-button>
4 | <nut-button color="linear-gradient(to right, #ff6034, #ee0a24)"> Gradient </nut-button>
5 | </template>
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/button/demo/disabled.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button disabled type="primary">Disabled</nut-button>
3 | <nut-button plain disabled type="info">Disabled</nut-button>
4 | <nut-button plain disabled type="primary">Disabled</nut-button>
5 | </template>
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/button/demo/plain.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button plain type="primary">Plain</nut-button>
3 | <nut-button plain type="info">Plain</nut-button>
4 | </template>
5 |
--------------------------------------------------------------------------------
/src/packages/__VUE/button/demo/shape.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button shape="square" type="primary">Square</nut-button>
3 | <nut-button shape="round" type="info">Round</nut-button>
4 | </template>
5 |
--------------------------------------------------------------------------------
/src/packages/__VUE/button/demo/size.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button size="large" type="primary">Large</nut-button>
3 | <nut-button type="primary">Normal</nut-button>
4 | <nut-button size="small" type="primary">Small</nut-button>
5 | <nut-button size="mini" type="primary">Mini</nut-button>
6 | </template>
7 |
--------------------------------------------------------------------------------
/src/packages/__VUE/button/demo/type.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button type="primary">Primary</nut-button>
3 | <nut-button type="info">Info</nut-button>
4 | <nut-button type="default">Default</nut-button>
5 | <nut-button type="danger">Danger</nut-button>
6 | <nut-button type="warning">Warning</nut-button>
7 | <nut-button type="success">Success</nut-button>
8 | </template>
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/button/types.ts:
--------------------------------------------------------------------------------
1 | export type ButtonType = 'default' | 'primary' | 'info' | 'success' | 'warning' | 'danger'
2 | export type ButtonSize = 'large' | 'normal' | 'small' | 'mini'
3 | export type ButtonShape = 'square' | 'round'
4 | export type ButtonFormType = 'button' | 'submit' | 'reset'
5 |
--------------------------------------------------------------------------------
/src/packages/__VUE/calendarcard/demo/first.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-calendar-card v-model="value" :first-day-of-week="1" @change="onChange"></nut-calendar-card>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(null)
7 | const onChange = (val: Date) => {
8 | console.log(val)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/calendarcard/demo/range.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-calendar-card v-model="value" type="range" @change="onChange"></nut-calendar-card>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref([])
7 | const onChange = (val: Date) => {
8 | console.log(val)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/calendarcard/demo/single.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-calendar-card v-model="value" @change="onChange"></nut-calendar-card>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(new Date('2023-01-01'))
7 | const onChange = (val: Date) => {
8 | console.log(val)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/calendarcard/demo/week.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-calendar-card v-model="value" type="week" @change="onChange"></nut-calendar-card>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref([])
7 | const onChange = (val: Date) => {
8 | console.log(val)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/cell/demo/align.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell desc-text-align="left" desc="Description"></nut-cell>
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/cell/demo/center.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell center title="Title" sub-title="Subtitle" desc="Description"></nut-cell>
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/cell/demo/desc.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell title="Title">
3 | <template #desc>
4 | <span style="color: red">Description Slot</span>
5 | </template>
6 | </nut-cell>
7 | </template>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/cell/demo/group.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell-group title="CellGroup Title" desc="CellGroup Description">
3 | <nut-cell title="Cell"></nut-cell>
4 | <nut-cell title="Link Style" is-link></nut-cell>
5 | </nut-cell-group>
6 | </template>
7 |
--------------------------------------------------------------------------------
/src/packages/__VUE/cell/demo/icon.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell title="Icon Slot" desc="Description">
3 | <template #icon>
4 | <My />
5 | </template>
6 | </nut-cell>
7 | </template>
8 | <script setup lang="ts">
9 | import { My } from '@nutui/icons-vue'
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/cell/demo/link.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell title="Switch">
3 | <template #link>
4 | <nut-switch v-model="checked" />
5 | </template>
6 | </nut-cell>
7 | </template>
8 | <script setup lang="ts">
9 | import { ref } from 'vue'
10 | const checked = ref(true)
11 | </script>
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/cell/demo/size.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell size="large" title="Title" desc="Description"></nut-cell>
3 | <nut-cell size="large" title="Title" sub-title="Subtitle" desc="Description"></nut-cell>
4 | </template>
5 |
--------------------------------------------------------------------------------
/src/packages/__VUE/cell/demo/slot.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <div>Content</div>
4 | </nut-cell>
5 | </template>
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/cell/demo/title.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell desc="Description">
3 | <template #title>
4 | <span style="color: red">Title</span>
5 | </template>
6 | </nut-cell>
7 | </template>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/cell/types.ts:
--------------------------------------------------------------------------------
1 | export type CellSize = 'normal' | 'large'
2 |
--------------------------------------------------------------------------------
/src/packages/__VUE/cellgroup/__tests__/__snapshots__/index.spec.ts.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`should render title、desc slot correctly 1`] = `
4 | "<view class="nut-cell-group">Custom TitleCustom Desc<view class="nut-cell-group__wrap"></view>
5 | </view>"
6 | `;
7 |
--------------------------------------------------------------------------------
/src/packages/__VUE/cellgroup/__tests__/index.spec.ts:
--------------------------------------------------------------------------------
1 | import { CellGroup } from '@nutui/nutui'
2 | import { mount } from '@vue/test-utils'
3 | test('should render title、desc slot correctly', () => {
4 | const wrapper = mount(CellGroup, {
5 | slots: {
6 | title: () => 'Custom Title',
7 | desc: () => 'Custom Desc'
8 | }
9 | })
10 | expect(wrapper.html()).toMatchSnapshot()
11 | })
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/checkbox/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-checkbox v-model="val1"> Right </nut-checkbox>
4 | <nut-checkbox v-model="val2" text-position="left"> Left </nut-checkbox>
5 | </nut-cell>
6 | </template>
7 | <script setup>
8 | import { ref } from 'vue'
9 | const val1 = ref(true)
10 | const val2 = ref(false)
11 | </script>
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/checkbox/demo/disabled.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-checkbox v-model="val1" disabled> checked </nut-checkbox>
4 | <nut-checkbox v-model="val2" disabled> unchecked </nut-checkbox>
5 | </nut-cell>
6 | </template>
7 | <script setup>
8 | import { ref } from 'vue'
9 | const val1 = ref(true)
10 | const val2 = ref(false)
11 | </script>
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/checkbox/demo/event.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-checkbox v-model="val" @change="change"> Change </nut-checkbox>
4 | </nut-cell>
5 | </template>
6 | <script setup>
7 | import { ref } from 'vue'
8 | const val = ref(false)
9 | const change = (state) => {
10 | console.log(state)
11 | }
12 | </script>
13 |
--------------------------------------------------------------------------------
/src/packages/__VUE/checkbox/demo/indeterminate.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-checkbox v-model="val" indeterminate> Indeterminate </nut-checkbox>
4 | </nut-cell>
5 | </template>
6 | <script setup>
7 | import { ref } from 'vue'
8 | const val = ref(false)
9 | </script>
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/checkbox/demo/shape.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-checkbox v-model="val1" shape="button"> Button </nut-checkbox>
4 | <nut-checkbox v-model="val2" shape="button"> Button </nut-checkbox>
5 | </nut-cell>
6 | </template>
7 | <script setup>
8 | import { ref } from 'vue'
9 | const val1 = ref(true)
10 | const val2 = ref(false)
11 | </script>
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/checkbox/demo/size.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-checkbox v-model="val1" icon-size="25"> size 25 </nut-checkbox>
4 | <nut-checkbox v-model="val2" icon-size="10"> size 10 </nut-checkbox>
5 | </nut-cell>
6 | </template>
7 | <script setup>
8 | import { ref } from 'vue'
9 | const val1 = ref(false)
10 | const val2 = ref(false)
11 | </script>
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/checkbox/types.ts:
--------------------------------------------------------------------------------
1 | export const CHECKBOX_KEY = Symbol('nut-checkbox')
2 | export type CheckboxTextPosition = 'right' | 'left'
3 | export type CheckboxShape = 'round' | 'button'
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/checkboxgroup/index.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/packages/__VUE/checkboxgroup/index.scss
--------------------------------------------------------------------------------
/src/packages/__VUE/circleprogress/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-circle-progress :progress="20" />
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/circleprogress/demo/color.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-space>
3 | <nut-circle-progress :progress="50" color="skyblue" />
4 | <nut-circle-progress :progress="100" :color="gradientColor" />
5 | </nut-space>
6 | </template>
7 | <script setup lang="ts">
8 | const gradientColor = {
9 | '0%': '#FF5E5E',
10 | '100%': '#FFA062'
11 | }
12 | </script>
13 |
--------------------------------------------------------------------------------
/src/packages/__VUE/circleprogress/demo/content.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-circle-progress :progress="90"> 90! </nut-circle-progress>
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/circleprogress/demo/size.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-space align="baseline">
3 | <nut-circle-progress :progress="80" :radius="80" />
4 | <nut-circle-progress :progress="50" :radius="50" />
5 | <nut-circle-progress :progress="30" :radius="30" />
6 | </nut-space>
7 | </template>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/circleprogress/demo/width.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-circle-progress :progress="50" :stroke-width="10" />
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/circleprogress/types.ts:
--------------------------------------------------------------------------------
1 | export type CircleProgressStrokeLinecap = 'butt' | 'round' | 'square'
2 |
--------------------------------------------------------------------------------
/src/packages/__VUE/col/index.taro.ts:
--------------------------------------------------------------------------------
1 | import Col from './col.taro.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Col)
6 |
7 | export type { ColProps } from './col.taro.vue'
8 |
9 | export type ColInstance = ComponentPublicInstance & InstanceType<typeof Col>
10 |
11 | export { Col, Col as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/col/index.ts:
--------------------------------------------------------------------------------
1 | import Col from './col.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Col)
6 |
7 | export type { ColProps } from './col.vue'
8 |
9 | export type ColInstance = ComponentPublicInstance & InstanceType<typeof Col>
10 |
11 | export { Col, Col as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/collapse/demo/disabled.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-collapse>
3 | <nut-collapse-item name="name1" title="Title 1"> Content 1 </nut-collapse-item>
4 | <nut-collapse-item name="name2" title="Title 2" disabled> Content 2 </nut-collapse-item>
5 | <nut-collapse-item name="name3" title="Title 3" disabled> Content 3 </nut-collapse-item>
6 | </nut-collapse>
7 | </template>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/collapse/demo/extra.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-collapse>
3 | <nut-collapse-item name="name1" title="Title 1">
4 | <template #extra> Extra Content </template>
5 | Content 1
6 | </nut-collapse-item>
7 | <nut-collapse-item name="name2" title="Title 2"> Content 2 </nut-collapse-item>
8 | </nut-collapse>
9 | </template>
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/collapse/index.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/packages/__VUE/collapse/index.scss
--------------------------------------------------------------------------------
/src/packages/__VUE/collapse/types.ts:
--------------------------------------------------------------------------------
1 | import type { InjectionKey } from 'vue'
2 |
3 | export const COLLAPSE_KEY = Symbol('nut-collapse') as InjectionKey<{
4 | updateVal: (name: string | number) => void
5 | isExpanded: (name: string | number) => boolean
6 | }>
7 |
8 | export type CollapseValue = string | number | (string | number)[]
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/comment/type.ts:
--------------------------------------------------------------------------------
1 | export interface VideosType {
2 | id?: number | string
3 | mainUrl: string
4 | videoUrl: string
5 | }
6 | export interface ImagesType {
7 | smallImgUrl: string
8 | bigImgUrl: string
9 | imgUrl: string
10 | }
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/configprovider/index.scss:
--------------------------------------------------------------------------------
1 | .nut-configprovider {
2 | }
3 |
--------------------------------------------------------------------------------
/src/packages/__VUE/configprovider/index.taro.vue:
--------------------------------------------------------------------------------
1 | <script lang="ts">
2 | import { createComponent } from '@/packages/utils/create'
3 | import { component } from './common'
4 |
5 | const { create } = createComponent('config-provider')
6 |
7 | export default create(component('view'))
8 | </script>
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/configprovider/index.vue:
--------------------------------------------------------------------------------
1 | <script lang="ts">
2 | import { createComponent } from '@/packages/utils/create'
3 | import { component } from './common'
4 |
5 | const { create } = createComponent('config-provider')
6 |
7 | export default create(component('div'))
8 | </script>
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/countdown/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-countdown :start-time="start" :end-time="end"></nut-countdown>
3 | </template>
4 |
5 | <script setup>
6 | const start = Date.now()
7 | const end = Date.now() + 60 * 1000
8 | </script>
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/countdown/demo/format.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-countdown :end-time="time" format="DD 天 HH 时 mm 分 ss 秒" />
3 | </template>
4 |
5 | <script setup>
6 | const time = Date.now() + 60 * 1000
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/countdown/demo/millisecond.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-countdown :end-time="time" millisecond format="HH:mm:ss:SS" />
3 | </template>
4 |
5 | <script setup>
6 | const time = Date.now() + 60 * 1000
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/countdown/index.scss:
--------------------------------------------------------------------------------
1 | .nut-countdown {
2 | display: $countdown-display;
3 | color: $countdown-color;
4 | font-size: $countdown-font-size;
5 | }
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/countup/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-countup :init-num="0" :end-num="200"></nut-countup>
3 | <nut-countup :init-num="150" :end-num="0" :speed="2.62" :to-fixed="2"></nut-countup>
4 | <nut-countup :init-num="1000" :end-num="0" :speed="50" :to-fixed="2"></nut-countup>
5 | </template>
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/datepicker/index.scss:
--------------------------------------------------------------------------------
1 | @import '../picker/index.scss';
2 |
--------------------------------------------------------------------------------
/src/packages/__VUE/datepicker/type.ts:
--------------------------------------------------------------------------------
1 | export type Formatter = (
2 | type: string,
3 | option: import('../picker/types').PickerOption
4 | ) => import('../picker/types').PickerOption
5 | export type Filter = (
6 | columnType: string,
7 | options: import('../picker/types').PickerOption[]
8 | ) => import('../picker/types').PickerOption[]
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/dialog/__tests__/__snapshots__/function.spec.ts.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`function Dialog > dialog cancelText okText 1`] = `"<!--v-if--><!--v-if--><view class="">取消文案自定义</view>"`;
4 |
5 | exports[`function Dialog > dialog cancelText okText 2`] = `"<view class="nut-button__wrap"><!--v-if--><!--v-if--><view class="">确定文案自定义</view></view>"`;
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/divider/__tests__/__snapshots__/divider.spec.ts.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`Divider: default slot 1`] = `"<view class="nut-divider nut-divider-center nut-divider-hairline">custom text</view>"`;
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/divider/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-divider />
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/divider/demo/custom.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-divider :style="{ color: '#1989fa', borderColor: '#1989fa', padding: '0 16px' }"> text </nut-divider>
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/divider/demo/dashed.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-divider dashed> text </nut-divider>
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/divider/demo/position.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-divider content-position="left"> text </nut-divider>
3 | <nut-divider> text </nut-divider>
4 | <nut-divider content-position="right"> text </nut-divider>
5 | </template>
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/divider/demo/text.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-divider> text </nut-divider>
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/divider/demo/vertical.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <div :style="{ fontSize: '14px', marginLeft: '27px', color: '#909ca4' }">
3 | text1
4 | <nut-divider direction="vertical" />
5 | <a href="#" style="color: #1989fa"> link </a>
6 | <nut-divider direction="vertical" />
7 | text2
8 | </div>
9 | </template>
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/divider/types.ts:
--------------------------------------------------------------------------------
1 | export type DividerPosition = 'center' | 'left' | 'right'
2 | export type DividerDirection = 'horizontal' | 'vertical'
3 |
--------------------------------------------------------------------------------
/src/packages/__VUE/drag/__tests__/__snapshots__/index.spec.ts.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`should render default slot correctly 1`] = `"<view class="nut-drag">Custom Message</view>"`;
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/drag/demo/attract.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-drag direction="x" attract>
3 | <nut-button type="primary">Button</nut-button>
4 | </nut-drag>
5 | </template>
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/drag/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-drag>
3 | <nut-button type="primary">move</nut-button>
4 | </nut-drag>
5 | </template>
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/drag/demo/direction.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-drag direction="x" :style="{ top: '200px', left: '16px' }">
3 | <nut-button type="primary">DirectionX</nut-button>
4 | </nut-drag>
5 | <nut-drag direction="y" :style="{ top: '200px', right: '50px' }">
6 | <nut-button type="primary">DirectionY</nut-button>
7 | </nut-drag>
8 | </template>
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/drag/types.ts:
--------------------------------------------------------------------------------
1 | export type DragDirection = 'all' | 'x' | 'y'
2 |
--------------------------------------------------------------------------------
/src/packages/__VUE/elevator/type.ts:
--------------------------------------------------------------------------------
1 | export interface ElevatorData {
2 | name: string
3 | id: number | string
4 | [key: string]: string | number
5 | }
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/ellipsis/index.scss:
--------------------------------------------------------------------------------
1 | .nut-ellipsis {
2 | display: flex;
3 | .nut-ellipsis__text {
4 | cursor: hand;
5 | color: $ellipsis-expand-collapse-color;
6 | display: inline;
7 | }
8 |
9 | .nut-ellipsis__wordbreak {
10 | word-break: break-all;
11 | }
12 | }
13 |
14 | .nut-ellipsis__copy {
15 | position: absolute;
16 | top: -999999px;
17 | }
18 |
--------------------------------------------------------------------------------
/src/packages/__VUE/ellipsis/types.ts:
--------------------------------------------------------------------------------
1 | export type EllipsisDirection = 'start' | 'end' | 'middle'
2 |
--------------------------------------------------------------------------------
/src/packages/__VUE/empty/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-empty description="404"></nut-empty>
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/empty/demo/bottom.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-empty image="error" description="Error">
3 | <div style="margin-top: 10px">
4 | <nut-button type="primary">Refresh</nut-button>
5 | </div>
6 | </nut-empty>
7 | </template>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/empty/demo/custom.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-empty
3 | image="https://static-ftcms.jd.com/p/files/61a9e3313985005b3958672e.png"
4 | description="Description"
5 | ></nut-empty>
6 | </template>
7 |
--------------------------------------------------------------------------------
/src/packages/__VUE/empty/types.ts:
--------------------------------------------------------------------------------
1 | export type EmptyImage = 'empty' | 'error' | 'network' | string
2 |
--------------------------------------------------------------------------------
/src/packages/__VUE/form/index.scss:
--------------------------------------------------------------------------------
1 | @import '../cellgroup/index.scss';
2 |
--------------------------------------------------------------------------------
/src/packages/__VUE/grid/demo/column.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-grid :column-num="3">
3 | <nut-grid-item text="text"><Dongdong /></nut-grid-item>
4 | <nut-grid-item text="text"><Dongdong /></nut-grid-item>
5 | <nut-grid-item text="text"><Dongdong /></nut-grid-item>
6 | </nut-grid>
7 | </template>
8 | <script setup lang="ts">
9 | import { Dongdong } from '@nutui/icons-vue'
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/grid/demo/content.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-grid :border="false">
3 | <nut-grid-item v-for="i in 4" :key="i">
4 | <nut-avatar size="large">
5 | <img
6 | src="https://img12.360buyimg.com/imagetools/jfs/t1/143702/31/16654/116794/5fc6f541Edebf8a57/4138097748889987.png"
7 | />
8 | </nut-avatar>
9 | </nut-grid-item>
10 | </nut-grid>
11 | </template>
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/grid/demo/square.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-grid :column-num="3" square>
3 | <nut-grid-item text="text"><Dongdong /></nut-grid-item>
4 | <nut-grid-item text="text"><Dongdong /></nut-grid-item>
5 | <nut-grid-item text="text"><Dongdong /></nut-grid-item>
6 | </nut-grid>
7 | </template>
8 | <script setup lang="ts">
9 | import { Dongdong } from '@nutui/icons-vue'
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/grid/index.scss:
--------------------------------------------------------------------------------
1 | .nut-grid {
2 | display: flex;
3 | flex-wrap: wrap;
4 | border: 0 solid $grid-border-color;
5 |
6 | &--border {
7 | border-top-width: 1px;
8 | border-left-width: 1px;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/grid/types.ts:
--------------------------------------------------------------------------------
1 | export const GRID_KEY = Symbol('grid')
2 | export type GridDirection = 'horizontal' | 'vertical'
3 |
--------------------------------------------------------------------------------
/src/packages/__VUE/icon/index.scss:
--------------------------------------------------------------------------------
1 | @import '@nutui/icons-vue/dist/style_iconfont.css';
2 |
--------------------------------------------------------------------------------
/src/packages/__VUE/icon/index.taro.vue:
--------------------------------------------------------------------------------
1 | <script lang="ts">
2 | import { createComponent } from '@/packages/utils/create'
3 | const { create } = createComponent('icon')
4 | export default create({})
5 | </script>
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/icon/index.vue:
--------------------------------------------------------------------------------
1 | <script lang="ts">
2 | import '@nutui/icons-vue/dist/style_iconfont.css'
3 | import { createComponent } from '@/packages/utils/create'
4 | const { create } = createComponent('icon')
5 | export default create({})
6 | </script>
7 |
--------------------------------------------------------------------------------
/src/packages/__VUE/image/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-image :src="url" width="100" height="100" />
3 | </template>
4 | <script setup lang="ts">
5 | const url = 'https://img10.360buyimg.com/ling/jfs/t1/181258/24/10385/53029/60d04978Ef21f2d42/92baeb21f907cd24.jpg'
6 | </script>
7 |
--------------------------------------------------------------------------------
/src/packages/__VUE/image/doc.taro.md:
--------------------------------------------------------------------------------
1 | # Image 图片
2 |
3 | ### 介绍
4 |
5 | 增强版的 img 标签,提供多种图片填充模式,支持图片加载中提示、加载失败提示。
6 |
7 | #### 直接使用 Taro 现有 Image 组件开发 [参考文档](https://taro-docs.jd.com/docs/components/media/image)
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/image/image.taro.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <view> Please use Image in @tarojs/components. </view>
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/image/index.taro.ts:
--------------------------------------------------------------------------------
1 | import Image from './image.taro.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Image)
6 |
7 | export type ImageInstance = ComponentPublicInstance & InstanceType<typeof Image>
8 |
9 | export { Image, Image as default }
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/image/types.ts:
--------------------------------------------------------------------------------
1 | export type ImageFit = 'contain' | 'cover' | 'fill' | 'none' | 'scale-down'
2 | export type ImagePosition = 'center' | 'top' | 'right' | 'bottom' | 'left' | string
3 |
--------------------------------------------------------------------------------
/src/packages/__VUE/indicator/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-space :gutter="30">
3 | <nut-indicator :size="5" :current="1" />
4 | <nut-indicator :size="5" :current="3" />
5 | <nut-indicator :size="5" :current="5" />
6 | </nut-space>
7 | </template>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/indicator/demo/block.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-indicator block align="left" :size="6" :current="5" />
3 | <nut-indicator block algin="center" :size="6" :current="5" />
4 | <nut-indicator block align="right" :size="6" :current="5" />
5 | </template>
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/indicator/demo/zero.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-indicator :fill-zero="false" :size="6" :current="5" />
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/indicator/types.ts:
--------------------------------------------------------------------------------
1 | export type IndicatorAlign = 'left' | 'center' | 'right'
2 |
--------------------------------------------------------------------------------
/src/packages/__VUE/infiniteloading/doc.taro.md:
--------------------------------------------------------------------------------
1 | # InfiniteLoading 滚动加载
2 |
3 | ### 介绍
4 |
5 | 列表滚动到底部自动加载更多数据。
6 |
7 | #### 直接使用 Taro 现有 ScrollView 组件开发 [参考文档](https://docs.taro.zone/docs/components/viewContainer/scroll-view)
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/input/demo/align.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input v-model="val1" input-align="left" />
3 | <nut-input v-model="val2" input-align="center" />
4 | <nut-input v-model="val3" input-align="right" />
5 | </template>
6 | <script setup>
7 | import { ref } from 'vue'
8 | const val1 = ref('Left')
9 | const val2 = ref('Center')
10 | const val3 = ref('Right')
11 | </script>
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/input/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input v-model="val" placeholder="Placeholder" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/input/demo/border.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input v-model="val1" :border="false" />
3 | <nut-input v-model="val2" :border="false" />
4 | </template>
5 | <script setup>
6 | import { ref } from 'vue'
7 | const val1 = ref('12345')
8 | const val2 = ref('12345')
9 | </script>
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/input/demo/count.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input v-model="val" show-word-limit :max-length="50" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref('12345')
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/input/demo/event.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input v-model="val" clearable placeholder="Event" @clear="clear" @click-input="click" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | const clear = () => {
8 | console.log('clear')
9 | }
10 | const click = () => {
11 | console.log('click-input')
12 | }
13 | </script>
14 |
--------------------------------------------------------------------------------
/src/packages/__VUE/input/demo/form.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-form>
3 | <nut-form-item label="Label" label-align="center">
4 | <nut-input v-model="val" />
5 | </nut-form-item>
6 | </nut-form>
7 | </template>
8 | <script setup>
9 | import { ref } from 'vue'
10 | const val = ref('')
11 | </script>
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/input/demo/status.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input v-model="val1" disabled />
3 | <nut-input v-model="val2" readonly />
4 | </template>
5 | <script setup>
6 | import { ref } from 'vue'
7 | const val1 = ref('Disabled')
8 | const val2 = ref('Readonly')
9 | </script>
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/inputnumber/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input-number v-model="val" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(1)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/inputnumber/demo/decimal.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input-number v-model="val" step="0.1" decimal-places="1" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(1)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/inputnumber/demo/disabled.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input-number v-model="val" disabled />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(1)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/inputnumber/demo/limit.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input-number v-model="val" :min="10" :max="20" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(10)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/inputnumber/demo/readonly.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input-number v-model="val" readonly />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(1)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/inputnumber/demo/size.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input-number v-model="val" :button-size="30" :input-width="50" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(1)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/inputnumber/demo/step.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-input-number v-model="val" :step="5" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(1)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/invoice/types.ts:
--------------------------------------------------------------------------------
1 | import type { FormItemRule } from '../form/types'
2 |
3 | export interface InvoiceDataItem {
4 | type?: 'radio'
5 | label?: string
6 | placeholder?: string
7 | radioLabel?: {
8 | label: string
9 | }[]
10 | formItemProp: string
11 | rules?: FormItemRule[]
12 | required?: boolean
13 | }
14 |
--------------------------------------------------------------------------------
/src/packages/__VUE/layout/index.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/packages/__VUE/layout/index.scss
--------------------------------------------------------------------------------
/src/packages/__VUE/layout/index.taro.ts:
--------------------------------------------------------------------------------
1 | import Layout from './layout.taro.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Layout)
6 |
7 | export type LayoutInstance = ComponentPublicInstance & InstanceType<typeof Layout>
8 |
9 | export { Layout, Layout as default }
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/layout/index.ts:
--------------------------------------------------------------------------------
1 | import Layout from './layout.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Layout)
6 |
7 | export type LayoutInstance = ComponentPublicInstance & InstanceType<typeof Layout>
8 |
9 | export { Layout, Layout as default }
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/layout/layout.taro.vue:
--------------------------------------------------------------------------------
1 | <script lang="ts">
2 | import { createComponent } from '@/packages/utils/create'
3 | const { create } = createComponent('layout')
4 | export default create({})
5 | </script>
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/layout/layout.vue:
--------------------------------------------------------------------------------
1 | <script lang="ts">
2 | import { createComponent } from '@/packages/utils/create'
3 | const { create } = createComponent('layout')
4 | export default create({})
5 | </script>
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/layout/types.ts:
--------------------------------------------------------------------------------
1 | export const LAYOUT_KEY = Symbol('nut-layout')
2 |
--------------------------------------------------------------------------------
/src/packages/__VUE/menu/types.ts:
--------------------------------------------------------------------------------
1 | export const MENU_KEY = Symbol('nut-menu')
2 | export type MenuDirection = 'down' | 'up'
3 | export type MenuItemOption = {
4 | text: string
5 | value: number | string
6 | }
7 |
--------------------------------------------------------------------------------
/src/packages/__VUE/navbar/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-navbar title="Title" @click-title="onClick"></nut-navbar>
3 | </template>
4 | <script setup lang="ts">
5 | const onClick = () => {
6 | console.log('[Navbar]: on click title')
7 | }
8 | </script>
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/navbar/demo/title.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-navbar left-show>
3 | <template #content> Content </template>
4 | </nut-navbar>
5 | <nut-navbar left-show title="Title" title-icon>
6 | <template #title-icon>
7 | <Cart2 />
8 | </template>
9 | </nut-navbar>
10 | </template>
11 | <script setup lang="ts">
12 | import { Cart2 } from '@nutui/icons-vue'
13 | </script>
14 |
--------------------------------------------------------------------------------
/src/packages/__VUE/navbar/index.taro.ts:
--------------------------------------------------------------------------------
1 | import Navbar from './navbar.taro.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Navbar)
6 |
7 | export type { NavbarProps } from './navbar.taro.vue'
8 |
9 | export type NavbarInstance = ComponentPublicInstance & InstanceType<typeof Navbar>
10 |
11 | export { Navbar, Navbar as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/navbar/index.ts:
--------------------------------------------------------------------------------
1 | import Navbar from './navbar.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Navbar)
6 |
7 | export type { NavbarProps } from './navbar.vue'
8 |
9 | export type NavbarInstance = ComponentPublicInstance & InstanceType<typeof Navbar>
10 |
11 | export { Navbar, Navbar as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/noticebar/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-noticebar :text="text" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const text = ref(
7 | 'NutUI 是京东风格的移动端组件库,使用 Vue 语言来编写可以在 H5,小程序平台上的应用,帮助研发人员提升开发效率,改善开发体验。'
8 | )
9 | </script>
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/noticebar/demo/close.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-noticebar :text="text" close-mode />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const text = ref(
7 | 'NutUI 是京东风格的移动端组件库,使用 Vue 语言来编写可以在 H5,小程序平台上的应用,帮助研发人员提升开发效率,改善开发体验。'
8 | )
9 | </script>
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/noticebar/demo/custom.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-noticebar :text="text" background="skyblue" color="rgba(0,0,0,0.8)" :left-icon="false" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const text = ref(
7 | 'NutUI 是京东风格的移动端组件库,使用 Vue 语言来编写可以在 H5,小程序平台上的应用,帮助研发人员提升开发效率,改善开发体验。'
8 | )
9 | </script>
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/noticebar/demo/vertical.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-noticebar direction="vertical" :list="list" :speed="10" :stand-time="2000" @click="handleClick" />
3 | </template>
4 |
5 | <script setup>
6 | import { ref } from 'vue'
7 | const list = ref(['Radio 单选框', 'Checkbox 复选框', 'DatePicker 日期选择器', 'CalendarCard 日历卡片'])
8 | const handleClick = (item) => {
9 | console.log(item)
10 | }
11 | </script>
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/noticebar/demo/wrap.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-noticebar :text="text" wrapable />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const text = ref(
7 | 'NutUI 是京东风格的移动端组件库,使用 Vue 语言来编写可以在 H5,小程序平台上的应用,帮助研发人员提升开发效率,改善开发体验。'
8 | )
9 | </script>
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/noticebar/types.ts:
--------------------------------------------------------------------------------
1 | export type NoticebarDirection = 'across' | 'vertical'
2 |
--------------------------------------------------------------------------------
/src/packages/__VUE/notify/types.ts:
--------------------------------------------------------------------------------
1 | import type { PopupPosition } from '../popup/types'
2 |
3 | export type NotifyPosition = PopupPosition
4 | export type NotifyType = 'base' | 'danger' | 'primary' | 'success' | 'warning'
5 |
--------------------------------------------------------------------------------
/src/packages/__VUE/numberkeyboard/types.ts:
--------------------------------------------------------------------------------
1 | export type NumberKeyboardType = 'default' | 'rightColumn'
2 |
--------------------------------------------------------------------------------
/src/packages/__VUE/overlay/__tests__/__snapshots__/overlay.spec.ts.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`slots test 1`] = `
4 | "<transition-stub name="overlay-fade" appear="false" persisted="true" css="true">
5 | <view class="nut-overlay" style="transition-duration: 0.3s; z-index: 2000;">这里是正文</view>
6 | </transition-stub>"
7 | `;
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/overlay/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button type="primary" @click="show = true">open</nut-button>
3 | <nut-overlay v-model:visible="show"></nut-overlay>
4 | </template>
5 | <script setup lang="ts">
6 | import { ref } from 'vue'
7 | const show = ref(false)
8 | </script>
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/overlay/demo/duration.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button type="primary" @click="show = true">duration</nut-button>
3 | <nut-overlay v-model:visible="show" :duration="2.5"></nut-overlay>
4 | </template>
5 | <script setup lang="ts">
6 | import { ref } from 'vue'
7 | const show = ref(false)
8 | </script>
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/overlay/demo/lock.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button type="primary" @click="show = true">lock-scroll</nut-button>
3 | <nut-overlay v-model:visible="show" :lock-scroll="true"></nut-overlay>
4 | </template>
5 | <script setup lang="ts">
6 | import { ref } from 'vue'
7 | const show = ref(false)
8 | </script>
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/overlay/demo/mask.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-button type="primary" @click="show = true">style</nut-button>
3 | <nut-overlay
4 | v-model:visible="show"
5 | :overlay-style="{
6 | backgroundColor: 'rgba(0, 0, 0, .2)'
7 | }"
8 | ></nut-overlay>
9 | </template>
10 | <script setup lang="ts">
11 | import { ref } from 'vue'
12 | const show = ref(false)
13 | </script>
14 |
--------------------------------------------------------------------------------
/src/packages/__VUE/overlay/index.ts:
--------------------------------------------------------------------------------
1 | import Overlay from './overlay.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Overlay)
6 |
7 | export type { OverlayProps } from './overlay.vue'
8 |
9 | export type OverlayInstance = ComponentPublicInstance & InstanceType<typeof Overlay>
10 |
11 | export { Overlay, Overlay as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/pagination/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-pagination v-model="page" :total-items="25" :items-per-page="5" @change="change" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const page = ref(1)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/pagination/demo/ellipse.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-pagination v-model="page" :total-items="125" :show-page-size="3" force-ellipses />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const page = ref(1)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/pagination/demo/simple.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-pagination v-model="page" :page-count="12" mode="simple" @change="change" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const page = ref(1)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/pagination/types.ts:
--------------------------------------------------------------------------------
1 | export type PaginationMode = 'multi' | 'simple'
2 |
--------------------------------------------------------------------------------
/src/packages/__VUE/popup/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell title="Center" is-link @click="show = true"></nut-cell>
3 | <nut-popup v-model:visible="show" :style="{ padding: '30px 50px' }"> 正文 </nut-popup>
4 | </template>
5 | <script setup>
6 | import { ref } from 'vue'
7 | const show = ref(false)
8 | </script>
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/popup/demo/port.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell title="Teleport" is-link @click="show = true"></nut-cell>
3 | <Teleport to="#app">
4 | <nut-popup v-model:visible="show" :style="{ padding: '30px 50px' }"> app </nut-popup>
5 | </Teleport>
6 | </template>
7 | <script setup>
8 | import { ref } from 'vue'
9 | const show = ref(false)
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/popup/demo/round.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell title="Round" is-link @click="show = true"></nut-cell>
3 | <nut-popup v-model:visible="show" position="bottom" closeable round :style="{ height: '30%' }"></nut-popup>
4 | </template>
5 | <script setup>
6 | import { ref } from 'vue'
7 | const show = ref(false)
8 | </script>
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/popup/types.ts:
--------------------------------------------------------------------------------
1 | export type PopupPosition = 'center' | 'left' | 'right' | 'top' | 'bottom' | ''
2 | export type PopupCloseIconPosition = 'top-right' | 'top-left' | 'bottom-left' | 'bottom-right'
3 |
--------------------------------------------------------------------------------
/src/packages/__VUE/price/demo/decimal.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-price :price="8888" :decimal-digits="0" />
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/price/demo/position.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-price :price="8888.01" position="after" symbol="RMB" />
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/price/demo/size.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-price :price="0" size="large" />
3 | <nut-price :price="0" size="normal" />
4 | <nut-price :price="0" size="small" />
5 | </template>
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/price/demo/symbol.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-price :price="10010.01" symbol="quot; />
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/price/demo/thousands.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-price :price="15213.1221" :decimal-digits="3" thousands />
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/price/demo/through.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-price :price="8888" :decimal-digits="0" strike-through />
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/price/types.ts:
--------------------------------------------------------------------------------
1 | export type PriceSize = 'small' | 'normal' | 'large'
2 | export type PricePosition = 'before' | 'after'
3 |
--------------------------------------------------------------------------------
/src/packages/__VUE/progress/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-progress :percentage="30" />
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/progress/demo/color.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-progress :percentage="30" stroke-color="skyblue" stroke-width="15" text-color="green" />
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/progress/demo/content.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-progress :percentage="60" text-inside>
3 | <img
4 | src="https://img11.360buyimg.com/imagetools/jfs/t1/137646/13/7132/1648/5f4c748bE43da8ddd/a3f06d51dcae7b60.png"
5 | width="30"
6 | height="30"
7 | />
8 | </nut-progress>
9 | </template>
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/progress/demo/inside.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-progress :percentage="60" text-inside />
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/progress/demo/size.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-progress :percentage="30" text-inside size="small"> </nut-progress>
3 | <nut-progress :percentage="50" text-inside size="base"> </nut-progress>
4 | <nut-progress :percentage="70" text-inside size="large"> </nut-progress>
5 | </template>
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/progress/demo/text.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-progress :percentage="50" :show-text="false" />
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/progress/types.ts:
--------------------------------------------------------------------------------
1 | export type ProgressSize = 'small' | 'base' | 'large'
2 | export type ProgressStatus = 'text' | 'active' | 'icon'
3 |
--------------------------------------------------------------------------------
/src/packages/__VUE/pullrefresh/doc.taro.md:
--------------------------------------------------------------------------------
1 | # PullRefresh 下拉刷新
2 |
3 | ### 介绍
4 |
5 | 用于提供下拉刷新的交互操作。
6 |
7 | #### 直接使用 Taro 现有 ScrollView 组件开发 [参考文档](https://docs.taro.zone/docs/components/viewContainer/scroll-view)
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/radio/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-radio-group v-model="val">
3 | <nut-radio label="1">Option 1</nut-radio>
4 | <nut-radio label="2">Option 2</nut-radio>
5 | <nut-radio label="3">Option 3</nut-radio>
6 | </nut-radio-group>
7 | </template>
8 | <script setup lang="ts">
9 | import { ref } from 'vue'
10 | const val = ref('1')
11 | </script>
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/radio/demo/disabled.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-radio-group v-model="val">
3 | <nut-radio disabled label="1">Option 1</nut-radio>
4 | <nut-radio disabled label="2">Option 2</nut-radio>
5 | <nut-radio disabled label="3">Option 3</nut-radio>
6 | </nut-radio-group>
7 | </template>
8 | <script setup lang="ts">
9 | import { ref } from 'vue'
10 | const val = ref('1')
11 | </script>
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/radio/demo/event.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-radio-group v-model="val" @change="onChange">
3 | <nut-radio label="1">Option 1</nut-radio>
4 | <nut-radio label="2">Option 2</nut-radio>
5 | </nut-radio-group>
6 | </template>
7 | <script setup lang="ts">
8 | import { ref } from 'vue'
9 | const val = ref('1')
10 | const onChange = (v: string) => {
11 | console.log(v)
12 | }
13 | </script>
14 |
--------------------------------------------------------------------------------
/src/packages/__VUE/radio/demo/horizontal.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-radio-group v-model="val" direction="horizontal">
3 | <nut-radio label="1">Option 1</nut-radio>
4 | <nut-radio label="2">Option 2</nut-radio>
5 | <nut-radio label="3">Option 3</nut-radio>
6 | </nut-radio-group>
7 | </template>
8 | <script setup lang="ts">
9 | import { ref } from 'vue'
10 | const val = ref('1')
11 | </script>
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/radio/demo/position.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-radio-group v-model="val" text-position="left">
3 | <nut-radio label="1">Option 1</nut-radio>
4 | <nut-radio label="2">Option 2</nut-radio>
5 | <nut-radio label="3">Option 3</nut-radio>
6 | </nut-radio-group>
7 | </template>
8 | <script setup lang="ts">
9 | import { ref } from 'vue'
10 | const val = ref('1')
11 | </script>
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/radio/types.ts:
--------------------------------------------------------------------------------
1 | export const RADIO_KEY = Symbol('nut-radio')
2 |
3 | // Radio
4 | export type RadioShape = 'round' | 'button'
5 | export type RadioButtonSize = 'normal' | 'small' | 'mini'
6 |
7 | // RadioGroup
8 | export type RadioGroupTextPosition = 'right' | 'left'
9 | export type RadioGroupDirection = 'vertical' | 'horizontal'
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/radiogroup/index.scss:
--------------------------------------------------------------------------------
1 | .nut-radio-group {
2 | display: inline-block;
3 | .nut-radio {
4 | margin-bottom: 5px;
5 | }
6 | &--horizontal {
7 | .nut-radio {
8 | display: inline-flex;
9 | margin-right: 10px;
10 | &--round {
11 | .nut-radio__label {
12 | margin: 0 6px;
13 | }
14 | }
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/packages/__VUE/range/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-range v-model="val" @change="change"></nut-range>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(40)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/range/demo/color.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-range v-model="val" inactive-color="red" button-color="blue" active-color="skyblue" @change="change"></nut-range>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(40)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/range/demo/disabled.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-range v-model="val" disabled @change="change"></nut-range>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(40)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/range/demo/hidden-range.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-range v-model="val" hidden-range @change="change"></nut-range>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(40)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/range/demo/hidden-tag.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-range v-model="val" hidden-tag @change="change"></nut-range>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(40)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/range/demo/limit.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-range v-model="val" :max="10" :min="-10" @change="change" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(0)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/range/demo/range.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-range v-model="val" range @change="change"></nut-range>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref([20, 80])
7 | const change = (value: number[]) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/range/demo/step.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-range v-model="val" :step="5" @change="change"></nut-range>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref(20)
7 | const change = (value: number) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/range/type.ts:
--------------------------------------------------------------------------------
1 | export type SliderValue = number | number[]
2 |
--------------------------------------------------------------------------------
/src/packages/__VUE/rate/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(3)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/rate/demo/color.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" active-color="skyblue" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(3)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/rate/demo/count.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" :count="10" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(3)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/rate/demo/disabled.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" disabled />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(3)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/rate/demo/event.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" @change="onChange" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(3)
7 | const onChange = (val: number) => {
8 | console.log(val)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/rate/demo/half.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" allow-half />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(3.5)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/rate/demo/icon.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" :custom-icon="HeartFill" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | import { HeartFill } from '@nutui/icons-vue'
7 | const value = ref(3)
8 | </script>
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/rate/demo/read.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" readonly />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(3)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/rate/demo/size.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-rate v-model="value" size="35" />
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const value = ref(3)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/rate/index.taro.ts:
--------------------------------------------------------------------------------
1 | import Rate from './rate.taro.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Rate)
6 |
7 | export type { RateProps } from './rate.taro.vue'
8 |
9 | export type RateInstance = ComponentPublicInstance & InstanceType<typeof Rate>
10 |
11 | export { Rate, Rate as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/rate/index.ts:
--------------------------------------------------------------------------------
1 | import Rate from './rate.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Rate)
6 |
7 | export type { RateProps } from './rate.vue'
8 |
9 | export type RateInstance = ComponentPublicInstance & InstanceType<typeof Rate>
10 |
11 | export { Rate, Rate as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/row/__tests__/index.spec.ts:
--------------------------------------------------------------------------------
1 | import { Row } from '@nutui/nutui'
2 | import { mount } from '@vue/test-utils'
3 |
4 | test('should add "nut-row-flex-nowrap" class when wrap prop is false', () => {
5 | const wrapper = mount(Row, {
6 | props: {
7 | wrap: 'nowrap'
8 | }
9 | })
10 | expect(wrapper.classes()).toContain('nut-row-flex-nowrap')
11 | })
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/row/index.taro.ts:
--------------------------------------------------------------------------------
1 | import Row from './row.taro.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Row)
6 |
7 | export type { RowProps } from './row.taro.vue'
8 |
9 | export type RowInstance = ComponentPublicInstance & InstanceType<typeof Row>
10 |
11 | export { Row, Row as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/row/index.ts:
--------------------------------------------------------------------------------
1 | import Row from './row.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Row)
6 |
7 | export type { RowProps } from './row.vue'
8 |
9 | export type RowInstance = ComponentPublicInstance & InstanceType<typeof Row>
10 |
11 | export { Row, Row as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/searchbar/demo/background.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-searchbar
3 | v-model="val"
4 | background="linear-gradient(to right, #9866F0, #EB4D50)"
5 | input-background="#fff"
6 | ></nut-searchbar>
7 | </template>
8 | <script setup lang="ts">
9 | import { ref } from 'vue'
10 | const val = ref('')
11 | </script>
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/searchbar/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-searchbar v-model="val" @search="search"></nut-searchbar>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | const search = (text: string) => {
8 | console.log('search', text)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/searchbar/demo/focus.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-searchbar v-model="val" :focus-style="{ outline: '1px solid red' }"></nut-searchbar>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/searchbar/demo/left.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-searchbar v-model="val">
3 | <template #leftout> label </template>
4 | <template #leftin>
5 | <Search2 />
6 | </template>
7 | </nut-searchbar>
8 | </template>
9 | <script setup lang="ts">
10 | import { ref } from 'vue'
11 | import { Search2 } from '@nutui/icons-vue'
12 | const val = ref('')
13 | </script>
14 |
--------------------------------------------------------------------------------
/src/packages/__VUE/searchbar/demo/right.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-searchbar v-model="val">
3 | <template #rightout> Search </template>
4 | <template #rightin>
5 | <Search2 />
6 | </template>
7 | </nut-searchbar>
8 | </template>
9 | <script setup lang="ts">
10 | import { ref } from 'vue'
11 | import { Search2 } from '@nutui/icons-vue'
12 | const val = ref('')
13 | </script>
14 |
--------------------------------------------------------------------------------
/src/packages/__VUE/searchbar/demo/shape.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-searchbar v-model="val" shape="square"></nut-searchbar>
3 | </template>
4 | <script setup lang="ts">
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/searchbar/types.ts:
--------------------------------------------------------------------------------
1 | export type SearchbarInputAlign = 'start' | 'end' | 'left' | 'right' | 'center' | 'justify' | 'match-parent'
2 | export type SearchbarConfirmType = 'send' | 'search' | 'next' | 'go' | 'done'
3 | export type SearchbarShape = 'round' | 'square'
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/sidenavbar/index.scss:
--------------------------------------------------------------------------------
1 | .nut-side-navbar {
2 | overflow: auto;
3 | display: block;
4 | &__content {
5 | position: relative;
6 | background-color: $sidenavbar-content-bg-color;
7 | display: block;
8 | &__list {
9 | width: 100%;
10 | display: block;
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/packages/__VUE/signature/__tests__/__snapshots__/signature.spec.tsx.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`props custom-class 1`] = `"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=="`;
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/skeleton/__tests__/__snapshots__/skeleton.spec.tsx.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`Skeleton: should change avatar shape when using avatarShape prop 1`] = `"<view style="width: 50px; height: 50px; background-color: #eee; color: #666;" class="nut-avatar nut-avatar-normal nut-avatar-square avatarClass avatarClass--square"></view>"`;
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/skeleton/demo/avatar.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-skeleton width="250px" height="15px" animated avatar avatar-size="60px" row="3"> </nut-skeleton>
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/skeleton/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-skeleton width="200px" height="15px" animated></nut-skeleton>
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/skeleton/demo/round.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-skeleton width="250px" height="15px" animated round></nut-skeleton>
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/skeleton/demo/row.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-skeleton width="250px" height="15px" animated row="3"> </nut-skeleton>
3 | </template>
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/sku/type.ts:
--------------------------------------------------------------------------------
1 | export interface SkuInfo {
2 | name: string
3 | id: number
4 | active: boolean
5 | disable: boolean
6 | [props: string]: any
7 | }
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/space/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-space>
3 | <nut-button>Button</nut-button>
4 | <nut-button>Button</nut-button>
5 | <nut-button>Button</nut-button>
6 | <nut-button>Button</nut-button>
7 | </nut-space>
8 | </template>
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/space/demo/direction.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-space direction="vertical" fill>
3 | <nut-button block>Button</nut-button>
4 | <nut-button block>Button</nut-button>
5 | <nut-button block>Button</nut-button>
6 | <nut-button block>Button</nut-button>
7 | </nut-space>
8 | </template>
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/space/types.ts:
--------------------------------------------------------------------------------
1 | export type SpaceGutter = number | string
2 | export type SpaceAlign = 'start' | 'end' | 'center' | 'baseline'
3 | export type SpaceJustify = 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly' | 'stretch'
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/step/index.taro.ts:
--------------------------------------------------------------------------------
1 | import Step from './step.taro.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Step)
6 |
7 | export type { StepProps } from './step.taro.vue'
8 |
9 | export type StepInstance = ComponentPublicInstance & InstanceType<typeof Step>
10 |
11 | export { Step, Step as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/step/index.ts:
--------------------------------------------------------------------------------
1 | import Step from './step.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Step)
6 |
7 | export type { StepProps } from './step.vue'
8 |
9 | export type StepInstance = ComponentPublicInstance & InstanceType<typeof Step>
10 |
11 | export { Step, Step as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/steps/__tests__/__snapshots__/index.spec.tsx.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`step props and icon slots 1`] = `"svg"`;
4 |
--------------------------------------------------------------------------------
/src/packages/__VUE/steps/demo/desc.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-steps :current="2">
3 | <nut-step title="未开始" content="描述信息">1</nut-step>
4 | <nut-step title="进行中" content="描述信息">2</nut-step>
5 | <nut-step title="已完成" content="描述信息">3</nut-step>
6 | </nut-steps>
7 | </template>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/steps/demo/dot.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-steps :current="2" progress-dot>
3 | <nut-step title="未开始">1</nut-step>
4 | <nut-step title="进行中">2</nut-step>
5 | <nut-step title="已完成">3</nut-step>
6 | </nut-steps>
7 | </template>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/steps/index.scss:
--------------------------------------------------------------------------------
1 | .nut-steps {
2 | display: flex;
3 | }
4 | .nut-steps-vertical {
5 | height: 100%;
6 | flex-flow: column;
7 | }
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/steps/types.ts:
--------------------------------------------------------------------------------
1 | export const STEPS_KEY = Symbol('nut-steps')
2 | export type StepsDirection = 'horizontal' | 'vertical'
3 |
--------------------------------------------------------------------------------
/src/packages/__VUE/sticky/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-sticky top="57">
3 | <nut-button type="primary">Top 57px</nut-button>
4 | </nut-sticky>
5 | </template>
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/sticky/demo/bottom.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <div style="height: 100vh"></div>
3 | <nut-sticky bottom="50" position="bottom">
4 | <nut-button type="primary">Bottom 50px</nut-button>
5 | </nut-sticky>
6 | <div style="height: 100vh"></div>
7 | </template>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/sticky/demo/top.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-sticky top="120">
3 | <nut-button type="primary">Top 120px</nut-button>
4 | </nut-sticky>
5 | </template>
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/sticky/index.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/packages/__VUE/sticky/index.scss
--------------------------------------------------------------------------------
/src/packages/__VUE/swipe/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-swipe>
3 | <nut-cell round-radius="0" title="Swipe Left" />
4 | <template #right>
5 | <nut-button shape="square" style="height: 100%" type="danger">Button</nut-button>
6 | </template>
7 | </nut-swipe>
8 | </template>
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/swipe/demo/disabled.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-swipe disabled>
3 | <nut-cell round-radius="0" title="Disabled" />
4 | <template #right>
5 | <nut-button shape="square" style="height: 100%" type="danger">Button</nut-button>
6 | </template>
7 | </nut-swipe>
8 | </template>
9 |
--------------------------------------------------------------------------------
/src/packages/__VUE/swipe/types.ts:
--------------------------------------------------------------------------------
1 | export const SWIPE_KEY = Symbol('nut-swipe')
2 | export type SwipePosition = 'left' | 'right' | ''
3 |
--------------------------------------------------------------------------------
/src/packages/__VUE/swipegroup/index.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/packages/__VUE/swipegroup/index.scss
--------------------------------------------------------------------------------
/src/packages/__VUE/swiper/types.ts:
--------------------------------------------------------------------------------
1 | export const SWIPER_KEY = Symbol('nut-swiper')
2 |
--------------------------------------------------------------------------------
/src/packages/__VUE/swiperitem/index.scss:
--------------------------------------------------------------------------------
1 | .nut-swiper-item {
2 | height: 100%;
3 | img {
4 | // pointer-events: none;
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/src/packages/__VUE/swiperitem/type.ts:
--------------------------------------------------------------------------------
1 | export interface IStyle {
2 | width?: string
3 | height?: string
4 | transform?: string
5 | }
6 |
--------------------------------------------------------------------------------
/src/packages/__VUE/switch/__tests__/__snapshots__/switch.spec.ts.snap:
--------------------------------------------------------------------------------
1 | // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2 |
3 | exports[`render ok 1`] = `
4 | "<view class="nut-switch nut-switch-close nut-switch-base">
5 | <view class="nut-switch-button">
6 | <!--v-if-->
7 | <!--v-if-->
8 | </view>
9 | </view>"
10 | `;
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/switch/demo/async.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-switch :model-value="val" @change="change" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref(true)
7 | const change = (value) => {
8 | setTimeout(() => {
9 | val.value = value
10 | }, 2000)
11 | }
12 | </script>
13 |
--------------------------------------------------------------------------------
/src/packages/__VUE/switch/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-switch v-model="val" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref(true)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/switch/demo/color.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-switch v-model="val" active-color="skyblue" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref(true)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/switch/demo/disabled.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-switch v-model="val" disabled />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref(true)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/switch/demo/event.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-switch v-model="val" @change="change" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref(true)
7 | const change = (value) => {
8 | console.log(value)
9 | }
10 | </script>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/switch/demo/icon.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-switch v-model="val" loading>
3 | <template #icon>
4 | <Loading name="loading" />
5 | </template>
6 | </nut-switch>
7 | </template>
8 | <script setup>
9 | import { ref } from 'vue'
10 | import { Loading } from '@nutui/icons-vue'
11 | const val = ref(true)
12 | </script>
13 |
--------------------------------------------------------------------------------
/src/packages/__VUE/switch/demo/loading.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-switch v-model="val" loading active-color="red" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref(true)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/switch/demo/text.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-switch v-model="val" active-text="开" inactive-text="关" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref(true)
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/switch/index.taro.ts:
--------------------------------------------------------------------------------
1 | import Switch from './switch.taro.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Switch)
6 |
7 | export type { SwitchProps } from './switch.taro.vue'
8 |
9 | export type SwitchInstance = ComponentPublicInstance & InstanceType<typeof Switch>
10 |
11 | export { Switch, Switch as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/switch/index.ts:
--------------------------------------------------------------------------------
1 | import Switch from './switch.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Switch)
6 |
7 | export type { SwitchProps } from './switch.vue'
8 |
9 | export type SwitchInstance = ComponentPublicInstance & InstanceType<typeof Switch>
10 |
11 | export { Switch, Switch as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/tabbar/index.taro.ts:
--------------------------------------------------------------------------------
1 | import Tabbar from './tabbar.taro.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Tabbar)
6 |
7 | export type { TabbarProps } from './tabbar.taro.vue'
8 |
9 | export type TabbarInstance = ComponentPublicInstance & InstanceType<typeof Tabbar>
10 |
11 | export { Tabbar, Tabbar as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/tabbar/index.ts:
--------------------------------------------------------------------------------
1 | import Tabbar from './tabbar.vue'
2 | import type { ComponentPublicInstance } from 'vue'
3 | import { withInstall } from '@/packages/utils'
4 |
5 | withInstall(Tabbar)
6 |
7 | export type { TabbarProps } from './tabbar.vue'
8 |
9 | export type TabbarInstance = ComponentPublicInstance & InstanceType<typeof Tabbar>
10 |
11 | export { Tabbar, Tabbar as default }
12 |
--------------------------------------------------------------------------------
/src/packages/__VUE/tabbar/types.ts:
--------------------------------------------------------------------------------
1 | export const TABBAR_KEY = Symbol('nut-tabbar')
2 |
--------------------------------------------------------------------------------
/src/packages/__VUE/tag/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-space>
3 | <nut-tag> default </nut-tag>
4 | <nut-tag type="primary"> primary </nut-tag>
5 | <nut-tag type="success"> success </nut-tag>
6 | <nut-tag type="danger"> danger </nut-tag>
7 | <nut-tag type="warning"> warning </nut-tag>
8 | </nut-space>
9 | </template>
10 |
--------------------------------------------------------------------------------
/src/packages/__VUE/tag/demo/color.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-space>
3 | <nut-tag color="#FA685D"> background </nut-tag>
4 | <nut-tag color="#E9E9E9" text-color="#999999"> text </nut-tag>
5 | <nut-tag color="#FA2400" plain> plain </nut-tag>
6 | </nut-space>
7 | </template>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/tag/types.ts:
--------------------------------------------------------------------------------
1 | export type TagType = 'primary' | 'success' | 'danger' | 'warning' | 'default'
2 |
--------------------------------------------------------------------------------
/src/packages/__VUE/textarea/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-textarea v-model="val" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/textarea/demo/focus.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-textarea v-model="val" autofocus />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/textarea/demo/limit.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-textarea v-model="val" limit-show :max-length="20" />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/textarea/demo/row.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-textarea v-model="val" :rows="3" autosize />
3 | </template>
4 | <script setup>
5 | import { ref } from 'vue'
6 | const val = ref('')
7 | </script>
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/textarea/demo/status.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-textarea readonly model-value="Textarea Readonly" />
3 | <nut-textarea disabled model-value="Textarea Disabled" />
4 | </template>
5 |
--------------------------------------------------------------------------------
/src/packages/__VUE/tour/type.ts:
--------------------------------------------------------------------------------
1 | export type PopoverTheme = 'light' | 'dark'
2 |
3 | export type PopoverLocation =
4 | | 'bottom'
5 | | 'top'
6 | | 'left'
7 | | 'right'
8 | | 'top-start'
9 | | 'top-end'
10 | | 'bottom-start'
11 | | 'bottom-end'
12 | | 'left-start'
13 | | 'left-end'
14 | | 'right-start'
15 | | 'right-end'
16 |
--------------------------------------------------------------------------------
/src/packages/__VUE/trendarrow/demo/basic.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-trend-arrow :rate="1" />
4 | <nut-trend-arrow :rate="-0.2535" />
5 | </nut-cell>
6 | </template>
7 |
--------------------------------------------------------------------------------
/src/packages/__VUE/trendarrow/demo/digits.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-trend-arrow :digits="1" :rate="10.2365" />
4 | <nut-trend-arrow :digits="3" :rate="-0.2535" />
5 | </nut-cell>
6 | </template>
7 |
--------------------------------------------------------------------------------
/src/packages/__VUE/trendarrow/demo/left.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-trend-arrow arrow-left :rate="0.2535" />
4 | <nut-trend-arrow arrow-left :rate="-0.2535" />
5 | </nut-cell>
6 | </template>
7 |
--------------------------------------------------------------------------------
/src/packages/__VUE/trendarrow/demo/sign.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-trend-arrow show-sign :rate="1" />
4 | <nut-trend-arrow show-sign :rate="-0.2535" />
5 | </nut-cell>
6 | </template>
7 |
--------------------------------------------------------------------------------
/src/packages/__VUE/trendarrow/demo/zero.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell>
3 | <nut-trend-arrow show-sign :rate="0" />
4 | <nut-trend-arrow show-sign show-zero :rate="0" />
5 | </nut-cell>
6 | </template>
7 |
--------------------------------------------------------------------------------
/src/packages/__VUE/video/doc.taro.md:
--------------------------------------------------------------------------------
1 | # Video 视频播放器
2 |
3 | ### 介绍
4 |
5 | 原生 video 实现的视频播放器
6 |
7 | #### 直接使用 Taro 现有 video 组件开发 [参考文档](https://docs.taro.zone/docs/components/media/video)
8 |
--------------------------------------------------------------------------------
/src/packages/__VUE/watermark/demo/multi.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <nut-cell style="height: 240px">
3 | <nut-watermark
4 | :full-page="false"
5 | :gap-y="24"
6 | font-color="#fa2c19"
7 | :content="['nutui', 'watermark']"
8 | ></nut-watermark>
9 | </nut-cell>
10 | </template>
11 |
--------------------------------------------------------------------------------
/src/packages/__VUE/watermark/index.scss:
--------------------------------------------------------------------------------
1 | .nut-watermark {
2 | position: absolute;
3 | z-index: $watermark-z-index;
4 | left: 0;
5 | right: 0;
6 | top: 0;
7 | bottom: 0;
8 | pointer-events: none;
9 | background-repeat: repeat;
10 | &-full-page {
11 | position: fixed;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/packages/styles/animation/fade.scss:
--------------------------------------------------------------------------------
1 | @keyframes nutFadeIn {
2 | from {
3 | opacity: 0;
4 | }
5 |
6 | to {
7 | opacity: 1;
8 | }
9 | }
10 |
11 | @keyframes nutFadeOut {
12 | from {
13 | opacity: 1;
14 | }
15 |
16 | to {
17 | opacity: 0;
18 | }
19 | }
20 | @include make-animation(nutFade);
21 |
--------------------------------------------------------------------------------
/src/packages/styles/animation/index.scss:
--------------------------------------------------------------------------------
1 | // Animation
2 | @import 'fade.scss';
3 | @import 'zoom.scss';
4 | @import 'ease.scss';
5 | @import 'drop.scss';
6 | @import 'rotate.scss';
7 |
--------------------------------------------------------------------------------
/src/packages/styles/animation/rotate.scss:
--------------------------------------------------------------------------------
1 | @keyframes rotation {
2 | 0% {
3 | -webkit-transform: rotate(0deg);
4 | }
5 | 100% {
6 | -webkit-transform: rotate(360deg);
7 | }
8 | }
9 |
10 | @include make-animation(nutRotate);
11 |
--------------------------------------------------------------------------------
/src/packages/styles/mixins/index.scss:
--------------------------------------------------------------------------------
1 | @import 'make-animation.scss';
2 | @import 'text-ellipsis.scss';
3 |
--------------------------------------------------------------------------------
/src/packages/styles/reset.css:
--------------------------------------------------------------------------------
1 | html {
2 | -webkit-tap-highlight-color: transparent;
3 | }
4 |
--------------------------------------------------------------------------------
/src/packages/utils/create/index.ts:
--------------------------------------------------------------------------------
1 | import { createComponent } from './component'
2 | import { renderIcon } from './renderIcon'
3 |
4 | export * from './mountComponent'
5 | export { createComponent, renderIcon }
6 |
--------------------------------------------------------------------------------
/src/packages/utils/create/renderIcon.ts:
--------------------------------------------------------------------------------
1 | import { h, Component } from 'vue'
2 |
3 | export const renderIcon = (icon: Component, props?: any) => {
4 | if (icon) return h(icon, props)
5 | return ''
6 | }
7 |
--------------------------------------------------------------------------------
/src/packages/utils/index.ts:
--------------------------------------------------------------------------------
1 | export * from './useRelation'
2 | export * from './with-install'
3 | export * from './util'
4 | export * from './pxCheck'
5 | export * from './useRoute'
6 | export * from './useLockScroll'
7 |
--------------------------------------------------------------------------------
/src/packages/utils/pxCheck.ts:
--------------------------------------------------------------------------------
1 | export const pxCheck = (value?: string | number): string | undefined => {
2 | if (value !== undefined) {
3 | return isNaN(Number(value)) ? String(value) : `${value}px`
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/src/packages/utils/useExpose/index.ts:
--------------------------------------------------------------------------------
1 | import { getCurrentInstance, ComponentPublicInstance } from 'vue'
2 |
3 | export function useExpose(apis: Record<string, any>) {
4 | const instance = getCurrentInstance()
5 | if (instance) {
6 | Object.assign(instance.proxy as ComponentPublicInstance, apis)
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/packages/utils/useRelation/index.ts:
--------------------------------------------------------------------------------
1 | export * from './useChildren'
2 | export * from './useParent'
3 |
--------------------------------------------------------------------------------
/src/packages/utils/useRelation/useRelation.ts:
--------------------------------------------------------------------------------
1 | import { getCurrentInstance, ComponentPublicInstance } from 'vue'
2 | export function useExtend<T>(apis: T) {
3 | const instance = getCurrentInstance()
4 | if (instance) {
5 | Object.assign(instance.proxy as ComponentPublicInstance, apis)
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/packages/utils/useRoute/index.ts:
--------------------------------------------------------------------------------
1 | import { getCurrentInstance } from 'vue'
2 |
3 | export function useRouter() {
4 | const proxy = getCurrentInstance()!.proxy as any
5 | return proxy.$router || null
6 | }
7 |
--------------------------------------------------------------------------------
/src/shims-vue.d.ts:
--------------------------------------------------------------------------------
1 | /// <reference types="vite/client" />
2 | declare module '*.vue' {
3 | import { defineComponent } from 'vue'
4 | const component: ReturnType<typeof defineComponent>
5 | export default component
6 | }
7 |
8 | declare module '*.md' {
9 | import type { ComponentOptions } from 'vue'
10 | const Component: ComponentOptions
11 | export default Component
12 | }
13 |
--------------------------------------------------------------------------------
/src/sites/assets/images/bg-article.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/bg-article.png
--------------------------------------------------------------------------------
/src/sites/assets/images/cat-back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/cat-back.png
--------------------------------------------------------------------------------
/src/sites/assets/images/cat-title.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/cat-title.png
--------------------------------------------------------------------------------
/src/sites/assets/images/header-bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/header-bg.png
--------------------------------------------------------------------------------
/src/sites/assets/images/icon-color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/icon-color.png
--------------------------------------------------------------------------------
/src/sites/assets/images/icon-footer-vx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/icon-footer-vx.png
--------------------------------------------------------------------------------
/src/sites/assets/images/icon-gitee.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/icon-gitee.png
--------------------------------------------------------------------------------
/src/sites/assets/images/icon-select-gray-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/icon-select-gray-down.png
--------------------------------------------------------------------------------
/src/sites/assets/images/icon-select-gray-up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/icon-select-gray-up.png
--------------------------------------------------------------------------------
/src/sites/assets/images/icon-select-white-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/icon-select-white-down.png
--------------------------------------------------------------------------------
/src/sites/assets/images/icon-select-white-up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/icon-select-white-up.png
--------------------------------------------------------------------------------
/src/sites/assets/images/icon-title.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/icon-title.png
--------------------------------------------------------------------------------
/src/sites/assets/images/icon-user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/icon-user.png
--------------------------------------------------------------------------------
/src/sites/assets/images/img-article.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/img-article.jpg
--------------------------------------------------------------------------------
/src/sites/assets/images/img-home-features1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/img-home-features1.png
--------------------------------------------------------------------------------
/src/sites/assets/images/img-home-features2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/img-home-features2.png
--------------------------------------------------------------------------------
/src/sites/assets/images/img-home-features3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/img-home-features3.png
--------------------------------------------------------------------------------
/src/sites/assets/images/img-home-features4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/img-home-features4.png
--------------------------------------------------------------------------------
/src/sites/assets/images/img-home-features5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/img-home-features5.png
--------------------------------------------------------------------------------
/src/sites/assets/images/img-joy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/img-joy.png
--------------------------------------------------------------------------------
/src/sites/assets/images/img-taro-left-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/img-taro-left-white.png
--------------------------------------------------------------------------------
/src/sites/assets/images/img-taro-left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/img-taro-left.png
--------------------------------------------------------------------------------
/src/sites/assets/images/img-taro-right-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/img-taro-right-white.png
--------------------------------------------------------------------------------
/src/sites/assets/images/img-taro-right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/img-taro-right.png
--------------------------------------------------------------------------------
/src/sites/assets/images/input-search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/input-search.png
--------------------------------------------------------------------------------
/src/sites/assets/images/iphone-cases.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/iphone-cases.png
--------------------------------------------------------------------------------
/src/sites/assets/images/item-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/item-active.png
--------------------------------------------------------------------------------
/src/sites/assets/images/item-rotate-active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/item-rotate-active.png
--------------------------------------------------------------------------------
/src/sites/assets/images/left-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/left-arrow.png
--------------------------------------------------------------------------------
/src/sites/assets/images/logo-blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/logo-blue.png
--------------------------------------------------------------------------------
/src/sites/assets/images/logo-header-red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/logo-header-red.png
--------------------------------------------------------------------------------
/src/sites/assets/images/logo-header-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/logo-header-white.png
--------------------------------------------------------------------------------
/src/sites/assets/images/logo-red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/logo-red.png
--------------------------------------------------------------------------------
/src/sites/assets/images/marketing-back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/marketing-back.png
--------------------------------------------------------------------------------
/src/sites/assets/images/marketing-title.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/marketing-title.png
--------------------------------------------------------------------------------
/src/sites/assets/images/order.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/order.png
--------------------------------------------------------------------------------
/src/sites/assets/images/right-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/right-arrow.png
--------------------------------------------------------------------------------
/src/sites/assets/images/vx-code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/vx-code.png
--------------------------------------------------------------------------------
/src/sites/assets/images/vx-code1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/assets/images/vx-code1.png
--------------------------------------------------------------------------------
/src/sites/doc/App.vue:
--------------------------------------------------------------------------------
1 | <template>
2 | <router-view />
3 | </template>
4 |
5 | <style lang="scss">
6 | ::selection {
7 | background: $doc-default-color;
8 | color: #fff;
9 | }
10 | #doc {
11 | background: #fff;
12 | height: 100%;
13 | width: 100%;
14 | display: flex;
15 | flex-direction: column;
16 | }
17 | </style>
18 |
--------------------------------------------------------------------------------
/src/sites/doc/components/demo-block/index.ts:
--------------------------------------------------------------------------------
1 | import DemoBlock from './demoBlock.vue'
2 | import './demoBlock.scss'
3 | export default DemoBlock
4 |
--------------------------------------------------------------------------------
/src/sites/doc/directive/hover/hover.ts:
--------------------------------------------------------------------------------
1 | export const Hover = {
2 | mounted(el: HTMLElement) {
3 | // 绑定事件
4 | el.addEventListener('mouseover', () => {
5 | el.style.color = '#fa2c19'
6 | })
7 | el.addEventListener('mouseleave', () => {
8 | el.style.color = ''
9 | })
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/sites/doc/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/doc/favicon.ico
--------------------------------------------------------------------------------
/src/sites/mobile/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jd-opensource/nutui/fe5c0128e415492fc7d24f8887b721fea5c61b48/src/sites/mobile/favicon.ico
--------------------------------------------------------------------------------
/src/sites/mobile/main.ts:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import App from './App.vue'
3 | import router from './router'
4 | import NutUI from '@nutui/nutui'
5 | import Demo from './components/demo.vue'
6 | import '@nutui/touch-emulator'
7 |
8 | const app = createApp(App)
9 | app.use(router)
10 | app.use(NutUI)
11 | app.component('Demo', Demo)
12 |
13 | app.mount('#app')
14 |
--------------------------------------------------------------------------------
/src/sites/utils/index.ts:
--------------------------------------------------------------------------------
1 | export * from './useTranslate'
2 |
--------------------------------------------------------------------------------
/tsconfig.h5.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "declaration": true,
5 | "declarationDir": "./tsc/type",
6 | "emitDeclarationOnly": true
7 | },
8 | "include": ["src/packages/index.build.ts", "src/packages/locale", "src/packages/utils", "src/packages/resolver"],
9 | "exclude": ["node_modules"]
10 | }
11 |
--------------------------------------------------------------------------------
/tsconfig.taro.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "declaration": true,
5 | "declarationDir": "./tsc/type",
6 | "emitDeclarationOnly": true
7 | },
8 | "include": ["src/packages/taro.build.ts", "src/packages/locale", "src/packages/utils", "src/packages/resolver"],
9 | "exclude": ["node_modules"]
10 | }
11 |
--------------------------------------------------------------------------------