commit 64f3ba5864d8050fd628a1f5c7884aa7424e0fce
Author: 张文涛 <1909118034@qq.com>
Date: Fri Feb 28 11:46:16 2025 +0800
第一个版本
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..b58b603
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/liPay-employee-terminal.iml b/.idea/liPay-employee-terminal.iml
new file mode 100644
index 0000000..24643cc
--- /dev/null
+++ b/.idea/liPay-employee-terminal.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..28a804d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..b95a2c2
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/App.vue b/App.vue
new file mode 100644
index 0000000..2e68e7e
--- /dev/null
+++ b/App.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/README.en.md b/README.en.md
new file mode 100644
index 0000000..cc4462f
--- /dev/null
+++ b/README.en.md
@@ -0,0 +1,36 @@
+# 里派员工端
+
+#### Description
+物业员工端
+
+#### Software Architecture
+Software architecture description
+
+#### Installation
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### Instructions
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### Contribution
+
+1. Fork the repository
+2. Create Feat_xxx branch
+3. Commit your code
+4. Create Pull Request
+
+
+#### Gitee Feature
+
+1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
+2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
+3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
+4. The most valuable open source project [GVP](https://gitee.com/gvp)
+5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
+6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..b19475c
--- /dev/null
+++ b/README.md
@@ -0,0 +1,37 @@
+# 里派员工端
+
+#### 介绍
+物业员工端
+
+#### 软件架构
+软件架构说明
+
+
+#### 安装教程
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### 使用说明
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### 参与贡献
+
+1. Fork 本仓库
+2. 新建 Feat_xxx 分支
+3. 提交代码
+4. 新建 Pull Request
+
+
+#### 特技
+
+1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
+2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
+3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
+4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
+5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
+6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
diff --git a/api/banner.ts b/api/banner.ts
new file mode 100644
index 0000000..7f9b0f1
--- /dev/null
+++ b/api/banner.ts
@@ -0,0 +1,10 @@
+
+import { get, post, put, del } from '../utils/request';
+
+export const bannerList = (data : any) => get('/user/v1/banner.list', data);
+
+export const register = (data : any) => post('/power/drv', data);
+
+export const updateUser = (data : any) => put('/power/drv', data);
+
+export const deleteUser = (data : any) => del('/power/drv', data);
\ No newline at end of file
diff --git a/api/login.ts b/api/login.ts
new file mode 100644
index 0000000..906b68d
--- /dev/null
+++ b/api/login.ts
@@ -0,0 +1,10 @@
+
+import { get, post, put, del } from '../utils/request';
+
+export const userInfo = (data : any) => get('/power/drv', data);
+
+export const register = (data : any) => post('/power/drv', data);
+
+export const updateUser = (data : any) => put('/power/drv', data);
+
+export const deleteUser = (data : any) => del('/power/drv', data);
\ No newline at end of file
diff --git a/components/SafeAreaBottom/index.vue b/components/SafeAreaBottom/index.vue
new file mode 100644
index 0000000..1ffa077
--- /dev/null
+++ b/components/SafeAreaBottom/index.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/components/SafeAreaTop/index.vue b/components/SafeAreaTop/index.vue
new file mode 100644
index 0000000..9d3e46a
--- /dev/null
+++ b/components/SafeAreaTop/index.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..c3ff205
--- /dev/null
+++ b/index.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/main.js b/main.js
new file mode 100644
index 0000000..c261bd7
--- /dev/null
+++ b/main.js
@@ -0,0 +1,29 @@
+import App from './App'
+import * as Pinia from 'pinia';
+
+// #ifndef VUE3
+import Vue from 'vue'
+import './uni.promisify.adaptor'
+Vue.config.productionTip = false
+App.mpType = 'app'
+const app = new Vue({
+ ...App
+})
+app.$mount()
+// #endif
+
+// #ifdef VUE3
+import {
+ createSSRApp
+} from 'vue'
+
+export function createApp() {
+ const app = createSSRApp(App)
+ app.use(Pinia.createPinia());
+
+ return {
+ app,
+ Pinia
+ }
+}
+// #endif
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
new file mode 100644
index 0000000..0b26e81
--- /dev/null
+++ b/manifest.json
@@ -0,0 +1,83 @@
+{
+ "name" : "saaff",
+ "appid" : "__UNI__8B0C3F7",
+ "description" : "",
+ "versionName" : "1.0.0",
+ "versionCode" : "100",
+ "transformPx" : false,
+ /* 5+App特有相关 */
+ "app-plus" : {
+ "usingComponents" : true,
+ "nvueStyleCompiler" : "uni-app",
+ "compilerVersion" : 3,
+ "splashscreen" : {
+ "alwaysShowBeforeRender" : true,
+ "waiting" : true,
+ "autoclose" : true,
+ "delay" : 0
+ },
+ /* 模块配置 */
+ "modules" : {},
+ /* 应用发布信息 */
+ "distribute" : {
+ /* android打包配置 */
+ "android" : {
+ "permissions" : [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "minSdkVersion" : 21
+ },
+ /* ios打包配置 */
+ "ios" : {
+ "dSYMs" : false
+ },
+ /* SDK配置 */
+ "sdkConfigs" : {}
+ }
+ },
+ /* 快应用特有相关 */
+ "quickapp" : {},
+ /* 小程序特有相关 */
+ "mp-weixin" : {
+ "appid" : "wx2cec08446ce214ee",
+ "setting" : {
+ "urlCheck" : false,
+ "es6" : true,
+ "postcss" : true,
+ "minified" : true
+ },
+ "usingComponents" : true,
+ "permission" : {
+ "scope.userLocation" : {
+ "desc" : "获取用户经纬度"
+ }
+ }
+ },
+ "mp-alipay" : {
+ "usingComponents" : true
+ },
+ "mp-baidu" : {
+ "usingComponents" : true
+ },
+ "mp-toutiao" : {
+ "usingComponents" : true
+ },
+ "uniStatistics" : {
+ "enable" : false
+ },
+ "vueVersion" : "3"
+}
diff --git a/pages.json b/pages.json
new file mode 100644
index 0000000..0d23aab
--- /dev/null
+++ b/pages.json
@@ -0,0 +1,110 @@
+{
+ "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+ {
+ "path": "pages/login/index",
+ "style": {
+ "enablePullDownRefresh": false,
+ "navigationBarTextStyle": "black",
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "登录页"
+ }
+ },
+ {
+ "path": "pages/index/index",
+ "style": {
+ "enablePullDownRefresh": true,
+ "navigationBarTextStyle": "black",
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "首页"
+ }
+ },
+ {
+ "path": "pages/message/index",
+ "style": {
+ "enablePullDownRefresh": true,
+ "navigationBarTextStyle": "black",
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "消息页"
+ }
+ },
+ {
+ "path": "pages/mine/index",
+ "style": {
+ "enablePullDownRefresh": false,
+ "navigationBarTextStyle": "black",
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "我的"
+ }
+ }
+ ],
+ "globalStyle": {
+ "navigationBarTextStyle": "black",
+ "navigationBarTitleText": "",
+ "navigationBarBackgroundColor": "#F8F8F8",
+ "backgroundColor": "#F8F8F8"
+ },
+ "tabBar": {
+ "borderStyle": "black",
+ "backgroundColor": "#fff",
+ "color": "#989898",
+ "selectedColor": "#37A5FF",
+ "list": [{
+ "pagePath": "pages/index/index",
+ "iconPath": "static/tabbar/home.png",
+ "selectedIconPath": "static/tabbar/home_select.png",
+ "text": "首页"
+ },
+ {
+ "pagePath": "pages/message/index",
+ "iconPath": "static/tabbar/message.png",
+ "selectedIconPath": "static/tabbar/message_select.png",
+ "text": "消息"
+ },
+ {
+ "pagePath": "pages/mine/index",
+ "iconPath": "static/tabbar/mine.png",
+ "selectedIconPath": "static/tabbar/mine_select.png",
+ "text": "我的"
+ }
+ ]
+ },
+ "uniIdRouter": {},
+ "subPackages": [{
+ "root": "pagesA",
+ "pages": [{
+ "path": "task_hall/list",
+ "style": {
+ "enablePullDownRefresh": true,
+ "navigationBarTextStyle": "black",
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "工单大厅"
+ }
+ }, {
+ "path": "my_order/list",
+ "style": {
+ "enablePullDownRefresh": true,
+ "navigationBarTextStyle": "black",
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "我的工单"
+ }
+ },
+ {
+ "path": "my_order/detail",
+ "style": {
+ "enablePullDownRefresh": true,
+ "navigationBarTextStyle": "black",
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "工单详情"
+ }
+ }
+ ]
+ }],
+ "condition": {
+ "current": 0, // 当前激活的条件,默认为 0
+ "list": [{
+ "name": "登录页", // 条件名称
+ "path": "pages/login/index", // 要打开的页面路径
+ "query": "" // 可选的页面参数
+ }]
+ }
+}
\ No newline at end of file
diff --git a/pages/index/index.vue b/pages/index/index.vue
new file mode 100644
index 0000000..74f6648
--- /dev/null
+++ b/pages/index/index.vue
@@ -0,0 +1,303 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.title}}
+ {{item.desc}}
+
+
+
+
+
+
+
+
+
+
+
+ {{item.title}}
+
+
+
+
+
+
+ 代处理事项
+
+
+ {{item.num}}
+ {{item.desc}}
+
+
+
+
+
+ 常见问题解答
+
+
+
+ {{item.title}}
+
+ {{item.time}}
+
+
+ {{item.viewCount}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/login/index.vue b/pages/login/index.vue
new file mode 100644
index 0000000..1d850c6
--- /dev/null
+++ b/pages/login/index.vue
@@ -0,0 +1,126 @@
+
+
+
+
+ 物业综合管理平台
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 登录
+
+
+
+
+ 阅读并同意
+
+ 《用户协议》
+
+ 和
+
+ 《隐私政策》
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/message/index.vue b/pages/message/index.vue
new file mode 100644
index 0000000..525538f
--- /dev/null
+++ b/pages/message/index.vue
@@ -0,0 +1,132 @@
+
+
+
+
+
+ 消息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 向左滑动可删除消息,删除后无法恢复。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 订单提醒
+ 2025/12/12
+
+
+ 1.15新版出炉,足迹"随笔功能"上线,记录线,记录线,记录1.15新版出炉,足迹"随笔功能"上线,记录线,记录线,记录
+
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/mine/index.vue b/pages/mine/index.vue
new file mode 100644
index 0000000..115a208
--- /dev/null
+++ b/pages/mine/index.vue
@@ -0,0 +1,178 @@
+
+
+
+
+
+
+
+
+
+
+ 刘烨烨
+ 辽宁中金物业集团有限公司
+
+
+
+
+
+
+ {{item.title}}
+ {{item.number}}
+
+
+
+
+
+ 账户余额
+
+ 1120.00
+ 元
+
+
+
+ 提现
+
+
+
+
+
+ 待处理工单
+ 查看更多
+
+
+
+
+
+
+ {{item.title}}
+
+
+
+
+
+
+ 常用功能
+
+
+
+
+
+
+
+
+
+ {{item.title}}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pagesA/my_order/detail.vue b/pagesA/my_order/detail.vue
new file mode 100644
index 0000000..87ae5d6
--- /dev/null
+++ b/pagesA/my_order/detail.vue
@@ -0,0 +1,246 @@
+
+
+
+
+
+
+
+ 工单详情
+
+
+
+
+
+
+
+
+
+
+
+ JD2424234324325
+
+
+ 创建时间: 2025-07-09
+
+
+ {{getStatusText(2)}}
+
+
+
+
+
+
+ {{getStatusText(2)}}
+ 工单已完成,干得漂亮!请确认完成状态
+
+
+
+
+
+ 业主信息
+
+
+ 业主姓名
+ 邓大仙儿
+
+
+ 联系方式
+
+
+
+
+
+
+ 177****4485
+
+
+
+
+ 配送地址
+ 中金北区17号楼一单元201室号
+
+
+ 商品备注
+ 放在门口即可
+
+
+ 商品信息
+
+ 燕京 8度U8 500ML*12瓶/箱*2 送燕京9度菊花听500ML*12听
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 员工信息
+
+
+ 员工姓名
+ 张三丰
+
+
+ 联系方式
+ 135****6645
+
+
+ 工单描述
+ 敲门未应答,已按照业主要求放在门口
+
+
+ 附件上传
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消工单
+
+
+ 确认送达
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pagesA/my_order/list.vue b/pagesA/my_order/list.vue
new file mode 100644
index 0000000..f63659a
--- /dev/null
+++ b/pagesA/my_order/list.vue
@@ -0,0 +1,377 @@
+
+
+
+
+
+
+
+ 我的工单
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.title}}
+
+
+
+
+
+
+
+
+
+
+
+ {{item.number}}
+
+
+
+ {{getStatusText(item.status)}}
+
+
+
+
+ 配送地址
+ {{item.address}}
+
+
+ 收货人
+ {{item.name}}
+
+
+ 联系方式
+ {{item.phone}}
+
+
+ {{item.remarks}}
+
+
+
+ {{item.time}}
+ 开始配送
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pagesA/task_hall/list.vue b/pagesA/task_hall/list.vue
new file mode 100644
index 0000000..f3f6e75
--- /dev/null
+++ b/pagesA/task_hall/list.vue
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+ 工单大厅
+
+
+
+
+
+
+
+
+
+
+ 工单编号: {{item.number}}
+
+
+ {{item.type==1?'商城':(item.type==2?'维修':'量房')}}
+
+
+
+
+ 上门地址
+ {{item.address}}
+
+
+ 业主姓名
+ {{item.name}}
+
+
+ 联系方式
+ {{item.phone}}
+
+
+ 维修类型
+ 公共维修
+ 房屋维修
+
+
+ {{item.remarks}}
+
+
+
+
+ {{item.commission}}
+ 元/可得佣金
+
+ 接单
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/static/code.jpg b/static/code.jpg
new file mode 100644
index 0000000..6995611
Binary files /dev/null and b/static/code.jpg differ
diff --git a/static/css/remixicon.css b/static/css/remixicon.css
new file mode 100644
index 0000000..2346224
--- /dev/null
+++ b/static/css/remixicon.css
@@ -0,0 +1,2190 @@
+/*
+* Remix Icon v2.4.0
+* https://remixicon.com
+* https://github.com/Remix-Design/RemixIcon
+*
+* Copyright RemixIcon.com
+* Released under the Apache License Version 2.0
+*
+* Date: 2020-04-20
+*/
+@font-face {
+ font-family: "remixicon";
+ src: url('data:application/font-woff2;charset=utf-8;base64,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') format('woff2');
+ font-display: swap;
+}
+
+[class^="ri-"], [class*=" ri-"] {
+ font-family: 'remixicon' !important;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.ri-lg { font-size: 1.3333em; line-height: 0.75em; vertical-align: -.0667em; }
+.ri-xl { font-size: 1.5em; line-height: 0.6666em; vertical-align: -.075em; }
+.ri-xxs { font-size: .5em; }
+.ri-xs { font-size: .75em; }
+.ri-sm { font-size: .875em }
+.ri-1x { font-size: 1em; }
+.ri-2x { font-size: 2em; }
+.ri-3x { font-size: 3em; }
+.ri-4x { font-size: 4em; }
+.ri-5x { font-size: 5em; }
+.ri-6x { font-size: 6em; }
+.ri-7x { font-size: 7em; }
+.ri-8x { font-size: 8em; }
+.ri-9x { font-size: 9em; }
+.ri-10x { font-size: 10em; }
+.ri-fw { text-align: center; width: 1.25em; }
+
+.ri-4k-fill:before { content: "\ea01"; }
+.ri-4k-line:before { content: "\ea02"; }
+.ri-a-b:before { content: "\ea03"; }
+.ri-account-box-fill:before { content: "\ea04"; }
+.ri-account-box-line:before { content: "\ea05"; }
+.ri-account-circle-fill:before { content: "\ea06"; }
+.ri-account-circle-line:before { content: "\ea07"; }
+.ri-account-pin-box-fill:before { content: "\ea08"; }
+.ri-account-pin-box-line:before { content: "\ea09"; }
+.ri-account-pin-circle-fill:before { content: "\ea0a"; }
+.ri-account-pin-circle-line:before { content: "\ea0b"; }
+.ri-add-box-fill:before { content: "\ea0c"; }
+.ri-add-box-line:before { content: "\ea0d"; }
+.ri-add-circle-fill:before { content: "\ea0e"; }
+.ri-add-circle-line:before { content: "\ea0f"; }
+.ri-add-fill:before { content: "\ea10"; }
+.ri-add-line:before { content: "\ea11"; }
+.ri-admin-fill:before { content: "\ea12"; }
+.ri-admin-line:before { content: "\ea13"; }
+.ri-advertisement-fill:before { content: "\ea14"; }
+.ri-advertisement-line:before { content: "\ea15"; }
+.ri-airplay-fill:before { content: "\ea16"; }
+.ri-airplay-line:before { content: "\ea17"; }
+.ri-alarm-fill:before { content: "\ea18"; }
+.ri-alarm-line:before { content: "\ea19"; }
+.ri-alarm-warning-fill:before { content: "\ea1a"; }
+.ri-alarm-warning-line:before { content: "\ea1b"; }
+.ri-album-fill:before { content: "\ea1c"; }
+.ri-album-line:before { content: "\ea1d"; }
+.ri-alert-fill:before { content: "\ea1e"; }
+.ri-alert-line:before { content: "\ea1f"; }
+.ri-aliens-fill:before { content: "\ea20"; }
+.ri-aliens-line:before { content: "\ea21"; }
+.ri-align-bottom:before { content: "\ea22"; }
+.ri-align-center:before { content: "\ea23"; }
+.ri-align-justify:before { content: "\ea24"; }
+.ri-align-left:before { content: "\ea25"; }
+.ri-align-right:before { content: "\ea26"; }
+.ri-align-top:before { content: "\ea27"; }
+.ri-align-vertically:before { content: "\ea28"; }
+.ri-alipay-fill:before { content: "\ea29"; }
+.ri-alipay-line:before { content: "\ea2a"; }
+.ri-amazon-fill:before { content: "\ea2b"; }
+.ri-amazon-line:before { content: "\ea2c"; }
+.ri-anchor-fill:before { content: "\ea2d"; }
+.ri-anchor-line:before { content: "\ea2e"; }
+.ri-ancient-gate-fill:before { content: "\ea2f"; }
+.ri-ancient-gate-line:before { content: "\ea30"; }
+.ri-ancient-pavilion-fill:before { content: "\ea31"; }
+.ri-ancient-pavilion-line:before { content: "\ea32"; }
+.ri-android-fill:before { content: "\ea33"; }
+.ri-android-line:before { content: "\ea34"; }
+.ri-angularjs-fill:before { content: "\ea35"; }
+.ri-angularjs-line:before { content: "\ea36"; }
+.ri-anticlockwise-2-fill:before { content: "\ea37"; }
+.ri-anticlockwise-2-line:before { content: "\ea38"; }
+.ri-anticlockwise-fill:before { content: "\ea39"; }
+.ri-anticlockwise-line:before { content: "\ea3a"; }
+.ri-app-store-fill:before { content: "\ea3b"; }
+.ri-app-store-line:before { content: "\ea3c"; }
+.ri-apple-fill:before { content: "\ea3d"; }
+.ri-apple-line:before { content: "\ea3e"; }
+.ri-apps-2-fill:before { content: "\ea3f"; }
+.ri-apps-2-line:before { content: "\ea40"; }
+.ri-apps-fill:before { content: "\ea41"; }
+.ri-apps-line:before { content: "\ea42"; }
+.ri-archive-drawer-fill:before { content: "\ea43"; }
+.ri-archive-drawer-line:before { content: "\ea44"; }
+.ri-archive-fill:before { content: "\ea45"; }
+.ri-archive-line:before { content: "\ea46"; }
+.ri-arrow-down-circle-fill:before { content: "\ea47"; }
+.ri-arrow-down-circle-line:before { content: "\ea48"; }
+.ri-arrow-down-fill:before { content: "\ea49"; }
+.ri-arrow-down-line:before { content: "\ea4a"; }
+.ri-arrow-down-s-fill:before { content: "\ea4b"; }
+.ri-arrow-down-s-line:before { content: "\ea4c"; }
+.ri-arrow-drop-down-fill:before { content: "\ea4d"; }
+.ri-arrow-drop-down-line:before { content: "\ea4e"; }
+.ri-arrow-drop-left-fill:before { content: "\ea4f"; }
+.ri-arrow-drop-left-line:before { content: "\ea50"; }
+.ri-arrow-drop-right-fill:before { content: "\ea51"; }
+.ri-arrow-drop-right-line:before { content: "\ea52"; }
+.ri-arrow-drop-up-fill:before { content: "\ea53"; }
+.ri-arrow-drop-up-line:before { content: "\ea54"; }
+.ri-arrow-go-back-fill:before { content: "\ea55"; }
+.ri-arrow-go-back-line:before { content: "\ea56"; }
+.ri-arrow-go-forward-fill:before { content: "\ea57"; }
+.ri-arrow-go-forward-line:before { content: "\ea58"; }
+.ri-arrow-left-circle-fill:before { content: "\ea59"; }
+.ri-arrow-left-circle-line:before { content: "\ea5a"; }
+.ri-arrow-left-down-fill:before { content: "\ea5b"; }
+.ri-arrow-left-down-line:before { content: "\ea5c"; }
+.ri-arrow-left-fill:before { content: "\ea5d"; }
+.ri-arrow-left-line:before { content: "\ea5e"; }
+.ri-arrow-left-right-fill:before { content: "\ea5f"; }
+.ri-arrow-left-right-line:before { content: "\ea60"; }
+.ri-arrow-left-s-fill:before { content: "\ea61"; }
+.ri-arrow-left-s-line:before { content: "\ea62"; }
+.ri-arrow-left-up-fill:before { content: "\ea63"; }
+.ri-arrow-left-up-line:before { content: "\ea64"; }
+.ri-arrow-right-circle-fill:before { content: "\ea65"; }
+.ri-arrow-right-circle-line:before { content: "\ea66"; }
+.ri-arrow-right-down-fill:before { content: "\ea67"; }
+.ri-arrow-right-down-line:before { content: "\ea68"; }
+.ri-arrow-right-fill:before { content: "\ea69"; }
+.ri-arrow-right-line:before { content: "\ea6a"; }
+.ri-arrow-right-s-fill:before { content: "\ea6b"; }
+.ri-arrow-right-s-line:before { content: "\ea6c"; }
+.ri-arrow-right-up-fill:before { content: "\ea6d"; }
+.ri-arrow-right-up-line:before { content: "\ea6e"; }
+.ri-arrow-up-circle-fill:before { content: "\ea6f"; }
+.ri-arrow-up-circle-line:before { content: "\ea70"; }
+.ri-arrow-up-down-fill:before { content: "\ea71"; }
+.ri-arrow-up-down-line:before { content: "\ea72"; }
+.ri-arrow-up-fill:before { content: "\ea73"; }
+.ri-arrow-up-line:before { content: "\ea74"; }
+.ri-arrow-up-s-fill:before { content: "\ea75"; }
+.ri-arrow-up-s-line:before { content: "\ea76"; }
+.ri-artboard-2-fill:before { content: "\ea77"; }
+.ri-artboard-2-line:before { content: "\ea78"; }
+.ri-artboard-fill:before { content: "\ea79"; }
+.ri-artboard-line:before { content: "\ea7a"; }
+.ri-article-fill:before { content: "\ea7b"; }
+.ri-article-line:before { content: "\ea7c"; }
+.ri-aspect-ratio-fill:before { content: "\ea7d"; }
+.ri-aspect-ratio-line:before { content: "\ea7e"; }
+.ri-asterisk:before { content: "\ea7f"; }
+.ri-at-fill:before { content: "\ea80"; }
+.ri-at-line:before { content: "\ea81"; }
+.ri-attachment-2:before { content: "\ea82"; }
+.ri-attachment-fill:before { content: "\ea83"; }
+.ri-attachment-line:before { content: "\ea84"; }
+.ri-auction-fill:before { content: "\ea85"; }
+.ri-auction-line:before { content: "\ea86"; }
+.ri-award-fill:before { content: "\ea87"; }
+.ri-award-line:before { content: "\ea88"; }
+.ri-baidu-fill:before { content: "\ea89"; }
+.ri-baidu-line:before { content: "\ea8a"; }
+.ri-ball-pen-fill:before { content: "\ea8b"; }
+.ri-ball-pen-line:before { content: "\ea8c"; }
+.ri-bank-card-2-fill:before { content: "\ea8d"; }
+.ri-bank-card-2-line:before { content: "\ea8e"; }
+.ri-bank-card-fill:before { content: "\ea8f"; }
+.ri-bank-card-line:before { content: "\ea90"; }
+.ri-bank-fill:before { content: "\ea91"; }
+.ri-bank-line:before { content: "\ea92"; }
+.ri-bar-chart-2-fill:before { content: "\ea93"; }
+.ri-bar-chart-2-line:before { content: "\ea94"; }
+.ri-bar-chart-box-fill:before { content: "\ea95"; }
+.ri-bar-chart-box-line:before { content: "\ea96"; }
+.ri-bar-chart-fill:before { content: "\ea97"; }
+.ri-bar-chart-grouped-fill:before { content: "\ea98"; }
+.ri-bar-chart-grouped-line:before { content: "\ea99"; }
+.ri-bar-chart-horizontal-fill:before { content: "\ea9a"; }
+.ri-bar-chart-horizontal-line:before { content: "\ea9b"; }
+.ri-bar-chart-line:before { content: "\ea9c"; }
+.ri-barcode-box-fill:before { content: "\ea9d"; }
+.ri-barcode-box-line:before { content: "\ea9e"; }
+.ri-barcode-fill:before { content: "\ea9f"; }
+.ri-barcode-line:before { content: "\eaa0"; }
+.ri-barricade-fill:before { content: "\eaa1"; }
+.ri-barricade-line:before { content: "\eaa2"; }
+.ri-base-station-fill:before { content: "\eaa3"; }
+.ri-base-station-line:before { content: "\eaa4"; }
+.ri-basketball-fill:before { content: "\eaa5"; }
+.ri-basketball-line:before { content: "\eaa6"; }
+.ri-battery-2-charge-fill:before { content: "\eaa7"; }
+.ri-battery-2-charge-line:before { content: "\eaa8"; }
+.ri-battery-2-fill:before { content: "\eaa9"; }
+.ri-battery-2-line:before { content: "\eaaa"; }
+.ri-battery-charge-fill:before { content: "\eaab"; }
+.ri-battery-charge-line:before { content: "\eaac"; }
+.ri-battery-fill:before { content: "\eaad"; }
+.ri-battery-line:before { content: "\eaae"; }
+.ri-battery-low-fill:before { content: "\eaaf"; }
+.ri-battery-low-line:before { content: "\eab0"; }
+.ri-battery-saver-fill:before { content: "\eab1"; }
+.ri-battery-saver-line:before { content: "\eab2"; }
+.ri-battery-share-fill:before { content: "\eab3"; }
+.ri-battery-share-line:before { content: "\eab4"; }
+.ri-bear-smile-fill:before { content: "\eab5"; }
+.ri-bear-smile-line:before { content: "\eab6"; }
+.ri-behance-fill:before { content: "\eab7"; }
+.ri-behance-line:before { content: "\eab8"; }
+.ri-bell-fill:before { content: "\eab9"; }
+.ri-bell-line:before { content: "\eaba"; }
+.ri-bike-fill:before { content: "\eabb"; }
+.ri-bike-line:before { content: "\eabc"; }
+.ri-bilibili-fill:before { content: "\eabd"; }
+.ri-bilibili-line:before { content: "\eabe"; }
+.ri-bill-fill:before { content: "\eabf"; }
+.ri-bill-line:before { content: "\eac0"; }
+.ri-billiards-fill:before { content: "\eac1"; }
+.ri-billiards-line:before { content: "\eac2"; }
+.ri-bit-coin-fill:before { content: "\eac3"; }
+.ri-bit-coin-line:before { content: "\eac4"; }
+.ri-blaze-fill:before { content: "\eac5"; }
+.ri-blaze-line:before { content: "\eac6"; }
+.ri-bluetooth-connect-fill:before { content: "\eac7"; }
+.ri-bluetooth-connect-line:before { content: "\eac8"; }
+.ri-bluetooth-fill:before { content: "\eac9"; }
+.ri-bluetooth-line:before { content: "\eaca"; }
+.ri-blur-off-fill:before { content: "\eacb"; }
+.ri-blur-off-line:before { content: "\eacc"; }
+.ri-body-scan-fill:before { content: "\eacd"; }
+.ri-body-scan-line:before { content: "\eace"; }
+.ri-bold:before { content: "\eacf"; }
+.ri-book-2-fill:before { content: "\ead0"; }
+.ri-book-2-line:before { content: "\ead1"; }
+.ri-book-3-fill:before { content: "\ead2"; }
+.ri-book-3-line:before { content: "\ead3"; }
+.ri-book-fill:before { content: "\ead4"; }
+.ri-book-line:before { content: "\ead5"; }
+.ri-book-mark-fill:before { content: "\ead6"; }
+.ri-book-mark-line:before { content: "\ead7"; }
+.ri-book-open-fill:before { content: "\ead8"; }
+.ri-book-open-line:before { content: "\ead9"; }
+.ri-book-read-fill:before { content: "\eada"; }
+.ri-book-read-line:before { content: "\eadb"; }
+.ri-booklet-fill:before { content: "\eadc"; }
+.ri-booklet-line:before { content: "\eadd"; }
+.ri-bookmark-2-fill:before { content: "\eade"; }
+.ri-bookmark-2-line:before { content: "\eadf"; }
+.ri-bookmark-3-fill:before { content: "\eae0"; }
+.ri-bookmark-3-line:before { content: "\eae1"; }
+.ri-bookmark-fill:before { content: "\eae2"; }
+.ri-bookmark-line:before { content: "\eae3"; }
+.ri-boxing-fill:before { content: "\eae4"; }
+.ri-boxing-line:before { content: "\eae5"; }
+.ri-braces-fill:before { content: "\eae6"; }
+.ri-braces-line:before { content: "\eae7"; }
+.ri-brackets-fill:before { content: "\eae8"; }
+.ri-brackets-line:before { content: "\eae9"; }
+.ri-briefcase-2-fill:before { content: "\eaea"; }
+.ri-briefcase-2-line:before { content: "\eaeb"; }
+.ri-briefcase-3-fill:before { content: "\eaec"; }
+.ri-briefcase-3-line:before { content: "\eaed"; }
+.ri-briefcase-4-fill:before { content: "\eaee"; }
+.ri-briefcase-4-line:before { content: "\eaef"; }
+.ri-briefcase-5-fill:before { content: "\eaf0"; }
+.ri-briefcase-5-line:before { content: "\eaf1"; }
+.ri-briefcase-fill:before { content: "\eaf2"; }
+.ri-briefcase-line:before { content: "\eaf3"; }
+.ri-bring-forward:before { content: "\eaf4"; }
+.ri-bring-to-front:before { content: "\eaf5"; }
+.ri-broadcast-fill:before { content: "\eaf6"; }
+.ri-broadcast-line:before { content: "\eaf7"; }
+.ri-brush-2-fill:before { content: "\eaf8"; }
+.ri-brush-2-line:before { content: "\eaf9"; }
+.ri-brush-3-fill:before { content: "\eafa"; }
+.ri-brush-3-line:before { content: "\eafb"; }
+.ri-brush-4-fill:before { content: "\eafc"; }
+.ri-brush-4-line:before { content: "\eafd"; }
+.ri-brush-fill:before { content: "\eafe"; }
+.ri-brush-line:before { content: "\eaff"; }
+.ri-bubble-chart-fill:before { content: "\eb00"; }
+.ri-bubble-chart-line:before { content: "\eb01"; }
+.ri-bug-2-fill:before { content: "\eb02"; }
+.ri-bug-2-line:before { content: "\eb03"; }
+.ri-bug-fill:before { content: "\eb04"; }
+.ri-bug-line:before { content: "\eb05"; }
+.ri-building-2-fill:before { content: "\eb06"; }
+.ri-building-2-line:before { content: "\eb07"; }
+.ri-building-3-fill:before { content: "\eb08"; }
+.ri-building-3-line:before { content: "\eb09"; }
+.ri-building-4-fill:before { content: "\eb0a"; }
+.ri-building-4-line:before { content: "\eb0b"; }
+.ri-building-fill:before { content: "\eb0c"; }
+.ri-building-line:before { content: "\eb0d"; }
+.ri-bus-2-fill:before { content: "\eb0e"; }
+.ri-bus-2-line:before { content: "\eb0f"; }
+.ri-bus-fill:before { content: "\eb10"; }
+.ri-bus-line:before { content: "\eb11"; }
+.ri-bus-wifi-fill:before { content: "\eb12"; }
+.ri-bus-wifi-line:before { content: "\eb13"; }
+.ri-cake-2-fill:before { content: "\eb14"; }
+.ri-cake-2-line:before { content: "\eb15"; }
+.ri-cake-3-fill:before { content: "\eb16"; }
+.ri-cake-3-line:before { content: "\eb17"; }
+.ri-cake-fill:before { content: "\eb18"; }
+.ri-cake-line:before { content: "\eb19"; }
+.ri-calculator-fill:before { content: "\eb1a"; }
+.ri-calculator-line:before { content: "\eb1b"; }
+.ri-calendar-2-fill:before { content: "\eb1c"; }
+.ri-calendar-2-line:before { content: "\eb1d"; }
+.ri-calendar-check-fill:before { content: "\eb1e"; }
+.ri-calendar-check-line:before { content: "\eb1f"; }
+.ri-calendar-event-fill:before { content: "\eb20"; }
+.ri-calendar-event-line:before { content: "\eb21"; }
+.ri-calendar-fill:before { content: "\eb22"; }
+.ri-calendar-line:before { content: "\eb23"; }
+.ri-calendar-todo-fill:before { content: "\eb24"; }
+.ri-calendar-todo-line:before { content: "\eb25"; }
+.ri-camera-2-fill:before { content: "\eb26"; }
+.ri-camera-2-line:before { content: "\eb27"; }
+.ri-camera-3-fill:before { content: "\eb28"; }
+.ri-camera-3-line:before { content: "\eb29"; }
+.ri-camera-fill:before { content: "\eb2a"; }
+.ri-camera-lens-fill:before { content: "\eb2b"; }
+.ri-camera-lens-line:before { content: "\eb2c"; }
+.ri-camera-line:before { content: "\eb2d"; }
+.ri-camera-off-fill:before { content: "\eb2e"; }
+.ri-camera-off-line:before { content: "\eb2f"; }
+.ri-camera-switch-fill:before { content: "\eb30"; }
+.ri-camera-switch-line:before { content: "\eb31"; }
+.ri-car-fill:before { content: "\eb32"; }
+.ri-car-line:before { content: "\eb33"; }
+.ri-car-washing-fill:before { content: "\eb34"; }
+.ri-car-washing-line:before { content: "\eb35"; }
+.ri-caravan-fill:before { content: "\eb36"; }
+.ri-caravan-line:before { content: "\eb37"; }
+.ri-cast-fill:before { content: "\eb38"; }
+.ri-cast-line:before { content: "\eb39"; }
+.ri-cellphone-fill:before { content: "\eb3a"; }
+.ri-cellphone-line:before { content: "\eb3b"; }
+.ri-celsius-fill:before { content: "\eb3c"; }
+.ri-celsius-line:before { content: "\eb3d"; }
+.ri-centos-fill:before { content: "\eb3e"; }
+.ri-centos-line:before { content: "\eb3f"; }
+.ri-character-recognition-fill:before { content: "\eb40"; }
+.ri-character-recognition-line:before { content: "\eb41"; }
+.ri-charging-pile-2-fill:before { content: "\eb42"; }
+.ri-charging-pile-2-line:before { content: "\eb43"; }
+.ri-charging-pile-fill:before { content: "\eb44"; }
+.ri-charging-pile-line:before { content: "\eb45"; }
+.ri-chat-1-fill:before { content: "\eb46"; }
+.ri-chat-1-line:before { content: "\eb47"; }
+.ri-chat-2-fill:before { content: "\eb48"; }
+.ri-chat-2-line:before { content: "\eb49"; }
+.ri-chat-3-fill:before { content: "\eb4a"; }
+.ri-chat-3-line:before { content: "\eb4b"; }
+.ri-chat-4-fill:before { content: "\eb4c"; }
+.ri-chat-4-line:before { content: "\eb4d"; }
+.ri-chat-check-fill:before { content: "\eb4e"; }
+.ri-chat-check-line:before { content: "\eb4f"; }
+.ri-chat-delete-fill:before { content: "\eb50"; }
+.ri-chat-delete-line:before { content: "\eb51"; }
+.ri-chat-download-fill:before { content: "\eb52"; }
+.ri-chat-download-line:before { content: "\eb53"; }
+.ri-chat-follow-up-fill:before { content: "\eb54"; }
+.ri-chat-follow-up-line:before { content: "\eb55"; }
+.ri-chat-forward-fill:before { content: "\eb56"; }
+.ri-chat-forward-line:before { content: "\eb57"; }
+.ri-chat-heart-fill:before { content: "\eb58"; }
+.ri-chat-heart-line:before { content: "\eb59"; }
+.ri-chat-history-fill:before { content: "\eb5a"; }
+.ri-chat-history-line:before { content: "\eb5b"; }
+.ri-chat-new-fill:before { content: "\eb5c"; }
+.ri-chat-new-line:before { content: "\eb5d"; }
+.ri-chat-off-fill:before { content: "\eb5e"; }
+.ri-chat-off-line:before { content: "\eb5f"; }
+.ri-chat-poll-fill:before { content: "\eb60"; }
+.ri-chat-poll-line:before { content: "\eb61"; }
+.ri-chat-private-fill:before { content: "\eb62"; }
+.ri-chat-private-line:before { content: "\eb63"; }
+.ri-chat-quote-fill:before { content: "\eb64"; }
+.ri-chat-quote-line:before { content: "\eb65"; }
+.ri-chat-settings-fill:before { content: "\eb66"; }
+.ri-chat-settings-line:before { content: "\eb67"; }
+.ri-chat-smile-2-fill:before { content: "\eb68"; }
+.ri-chat-smile-2-line:before { content: "\eb69"; }
+.ri-chat-smile-3-fill:before { content: "\eb6a"; }
+.ri-chat-smile-3-line:before { content: "\eb6b"; }
+.ri-chat-smile-fill:before { content: "\eb6c"; }
+.ri-chat-smile-line:before { content: "\eb6d"; }
+.ri-chat-upload-fill:before { content: "\eb6e"; }
+.ri-chat-upload-line:before { content: "\eb6f"; }
+.ri-chat-voice-fill:before { content: "\eb70"; }
+.ri-chat-voice-line:before { content: "\eb71"; }
+.ri-check-double-fill:before { content: "\eb72"; }
+.ri-check-double-line:before { content: "\eb73"; }
+.ri-check-fill:before { content: "\eb74"; }
+.ri-check-line:before { content: "\eb75"; }
+.ri-checkbox-blank-circle-fill:before { content: "\eb76"; }
+.ri-checkbox-blank-circle-line:before { content: "\eb77"; }
+.ri-checkbox-blank-fill:before { content: "\eb78"; }
+.ri-checkbox-blank-line:before { content: "\eb79"; }
+.ri-checkbox-circle-fill:before { content: "\eb7a"; }
+.ri-checkbox-circle-line:before { content: "\eb7b"; }
+.ri-checkbox-fill:before { content: "\eb7c"; }
+.ri-checkbox-indeterminate-fill:before { content: "\eb7d"; }
+.ri-checkbox-indeterminate-line:before { content: "\eb7e"; }
+.ri-checkbox-line:before { content: "\eb7f"; }
+.ri-checkbox-multiple-blank-fill:before { content: "\eb80"; }
+.ri-checkbox-multiple-blank-line:before { content: "\eb81"; }
+.ri-checkbox-multiple-fill:before { content: "\eb82"; }
+.ri-checkbox-multiple-line:before { content: "\eb83"; }
+.ri-china-railway-fill:before { content: "\eb84"; }
+.ri-china-railway-line:before { content: "\eb85"; }
+.ri-chrome-fill:before { content: "\eb86"; }
+.ri-chrome-line:before { content: "\eb87"; }
+.ri-clapperboard-fill:before { content: "\eb88"; }
+.ri-clapperboard-line:before { content: "\eb89"; }
+.ri-clipboard-fill:before { content: "\eb8a"; }
+.ri-clipboard-line:before { content: "\eb8b"; }
+.ri-clockwise-2-fill:before { content: "\eb8c"; }
+.ri-clockwise-2-line:before { content: "\eb8d"; }
+.ri-clockwise-fill:before { content: "\eb8e"; }
+.ri-clockwise-line:before { content: "\eb8f"; }
+.ri-close-circle-fill:before { content: "\eb90"; }
+.ri-close-circle-line:before { content: "\eb91"; }
+.ri-close-fill:before { content: "\eb92"; }
+.ri-close-line:before { content: "\eb93"; }
+.ri-cloud-fill:before { content: "\eb94"; }
+.ri-cloud-line:before { content: "\eb95"; }
+.ri-cloud-off-fill:before { content: "\eb96"; }
+.ri-cloud-off-line:before { content: "\eb97"; }
+.ri-cloud-windy-fill:before { content: "\eb98"; }
+.ri-cloud-windy-line:before { content: "\eb99"; }
+.ri-cloudy-2-fill:before { content: "\eb9a"; }
+.ri-cloudy-2-line:before { content: "\eb9b"; }
+.ri-cloudy-fill:before { content: "\eb9c"; }
+.ri-cloudy-line:before { content: "\eb9d"; }
+.ri-code-box-fill:before { content: "\eb9e"; }
+.ri-code-box-line:before { content: "\eb9f"; }
+.ri-code-fill:before { content: "\eba0"; }
+.ri-code-line:before { content: "\eba1"; }
+.ri-code-s-fill:before { content: "\eba2"; }
+.ri-code-s-line:before { content: "\eba3"; }
+.ri-code-s-slash-fill:before { content: "\eba4"; }
+.ri-code-s-slash-line:before { content: "\eba5"; }
+.ri-code-view:before { content: "\eba6"; }
+.ri-codepen-fill:before { content: "\eba7"; }
+.ri-codepen-line:before { content: "\eba8"; }
+.ri-coin-fill:before { content: "\eba9"; }
+.ri-coin-line:before { content: "\ebaa"; }
+.ri-coins-fill:before { content: "\ebab"; }
+.ri-coins-line:before { content: "\ebac"; }
+.ri-command-fill:before { content: "\ebad"; }
+.ri-command-line:before { content: "\ebae"; }
+.ri-community-fill:before { content: "\ebaf"; }
+.ri-community-line:before { content: "\ebb0"; }
+.ri-compass-2-fill:before { content: "\ebb1"; }
+.ri-compass-2-line:before { content: "\ebb2"; }
+.ri-compass-3-fill:before { content: "\ebb3"; }
+.ri-compass-3-line:before { content: "\ebb4"; }
+.ri-compass-4-fill:before { content: "\ebb5"; }
+.ri-compass-4-line:before { content: "\ebb6"; }
+.ri-compass-discover-fill:before { content: "\ebb7"; }
+.ri-compass-discover-line:before { content: "\ebb8"; }
+.ri-compass-fill:before { content: "\ebb9"; }
+.ri-compass-line:before { content: "\ebba"; }
+.ri-compasses-2-fill:before { content: "\ebbb"; }
+.ri-compasses-2-line:before { content: "\ebbc"; }
+.ri-compasses-fill:before { content: "\ebbd"; }
+.ri-compasses-line:before { content: "\ebbe"; }
+.ri-computer-fill:before { content: "\ebbf"; }
+.ri-computer-line:before { content: "\ebc0"; }
+.ri-contacts-book-2-fill:before { content: "\ebc1"; }
+.ri-contacts-book-2-line:before { content: "\ebc2"; }
+.ri-contacts-book-fill:before { content: "\ebc3"; }
+.ri-contacts-book-line:before { content: "\ebc4"; }
+.ri-contacts-book-upload-fill:before { content: "\ebc5"; }
+.ri-contacts-book-upload-line:before { content: "\ebc6"; }
+.ri-contacts-fill:before { content: "\ebc7"; }
+.ri-contacts-line:before { content: "\ebc8"; }
+.ri-contrast-2-fill:before { content: "\ebc9"; }
+.ri-contrast-2-line:before { content: "\ebca"; }
+.ri-contrast-drop-2-fill:before { content: "\ebcb"; }
+.ri-contrast-drop-2-line:before { content: "\ebcc"; }
+.ri-contrast-drop-fill:before { content: "\ebcd"; }
+.ri-contrast-drop-line:before { content: "\ebce"; }
+.ri-contrast-fill:before { content: "\ebcf"; }
+.ri-contrast-line:before { content: "\ebd0"; }
+.ri-copper-coin-fill:before { content: "\ebd1"; }
+.ri-copper-coin-line:before { content: "\ebd2"; }
+.ri-copper-diamond-fill:before { content: "\ebd3"; }
+.ri-copper-diamond-line:before { content: "\ebd4"; }
+.ri-copyright-fill:before { content: "\ebd5"; }
+.ri-copyright-line:before { content: "\ebd6"; }
+.ri-coreos-fill:before { content: "\ebd7"; }
+.ri-coreos-line:before { content: "\ebd8"; }
+.ri-coupon-2-fill:before { content: "\ebd9"; }
+.ri-coupon-2-line:before { content: "\ebda"; }
+.ri-coupon-3-fill:before { content: "\ebdb"; }
+.ri-coupon-3-line:before { content: "\ebdc"; }
+.ri-coupon-4-fill:before { content: "\ebdd"; }
+.ri-coupon-4-line:before { content: "\ebde"; }
+.ri-coupon-5-fill:before { content: "\ebdf"; }
+.ri-coupon-5-line:before { content: "\ebe0"; }
+.ri-coupon-fill:before { content: "\ebe1"; }
+.ri-coupon-line:before { content: "\ebe2"; }
+.ri-cpu-fill:before { content: "\ebe3"; }
+.ri-cpu-line:before { content: "\ebe4"; }
+.ri-creative-commons-by-fill:before { content: "\ebe5"; }
+.ri-creative-commons-by-line:before { content: "\ebe6"; }
+.ri-creative-commons-fill:before { content: "\ebe7"; }
+.ri-creative-commons-line:before { content: "\ebe8"; }
+.ri-creative-commons-nc-fill:before { content: "\ebe9"; }
+.ri-creative-commons-nc-line:before { content: "\ebea"; }
+.ri-creative-commons-nd-fill:before { content: "\ebeb"; }
+.ri-creative-commons-nd-line:before { content: "\ebec"; }
+.ri-creative-commons-sa-fill:before { content: "\ebed"; }
+.ri-creative-commons-sa-line:before { content: "\ebee"; }
+.ri-creative-commons-zero-fill:before { content: "\ebef"; }
+.ri-creative-commons-zero-line:before { content: "\ebf0"; }
+.ri-criminal-fill:before { content: "\ebf1"; }
+.ri-criminal-line:before { content: "\ebf2"; }
+.ri-crop-2-fill:before { content: "\ebf3"; }
+.ri-crop-2-line:before { content: "\ebf4"; }
+.ri-crop-fill:before { content: "\ebf5"; }
+.ri-crop-line:before { content: "\ebf6"; }
+.ri-css3-fill:before { content: "\ebf7"; }
+.ri-css3-line:before { content: "\ebf8"; }
+.ri-cup-fill:before { content: "\ebf9"; }
+.ri-cup-line:before { content: "\ebfa"; }
+.ri-currency-fill:before { content: "\ebfb"; }
+.ri-currency-line:before { content: "\ebfc"; }
+.ri-cursor-fill:before { content: "\ebfd"; }
+.ri-cursor-line:before { content: "\ebfe"; }
+.ri-customer-service-2-fill:before { content: "\ebff"; }
+.ri-customer-service-2-line:before { content: "\ec00"; }
+.ri-customer-service-fill:before { content: "\ec01"; }
+.ri-customer-service-line:before { content: "\ec02"; }
+.ri-dashboard-fill:before { content: "\ec03"; }
+.ri-dashboard-line:before { content: "\ec04"; }
+.ri-database-2-fill:before { content: "\ec05"; }
+.ri-database-2-line:before { content: "\ec06"; }
+.ri-database-fill:before { content: "\ec07"; }
+.ri-database-line:before { content: "\ec08"; }
+.ri-delete-back-2-fill:before { content: "\ec09"; }
+.ri-delete-back-2-line:before { content: "\ec0a"; }
+.ri-delete-back-fill:before { content: "\ec0b"; }
+.ri-delete-back-line:before { content: "\ec0c"; }
+.ri-delete-bin-2-fill:before { content: "\ec0d"; }
+.ri-delete-bin-2-line:before { content: "\ec0e"; }
+.ri-delete-bin-3-fill:before { content: "\ec0f"; }
+.ri-delete-bin-3-line:before { content: "\ec10"; }
+.ri-delete-bin-4-fill:before { content: "\ec11"; }
+.ri-delete-bin-4-line:before { content: "\ec12"; }
+.ri-delete-bin-5-fill:before { content: "\ec13"; }
+.ri-delete-bin-5-line:before { content: "\ec14"; }
+.ri-delete-bin-6-fill:before { content: "\ec15"; }
+.ri-delete-bin-6-line:before { content: "\ec16"; }
+.ri-delete-bin-7-fill:before { content: "\ec17"; }
+.ri-delete-bin-7-line:before { content: "\ec18"; }
+.ri-delete-bin-fill:before { content: "\ec19"; }
+.ri-delete-bin-line:before { content: "\ec1a"; }
+.ri-device-fill:before { content: "\ec1b"; }
+.ri-device-line:before { content: "\ec1c"; }
+.ri-device-recover-fill:before { content: "\ec1d"; }
+.ri-device-recover-line:before { content: "\ec1e"; }
+.ri-dingding-fill:before { content: "\ec1f"; }
+.ri-dingding-line:before { content: "\ec20"; }
+.ri-direction-fill:before { content: "\ec21"; }
+.ri-direction-line:before { content: "\ec22"; }
+.ri-disc-fill:before { content: "\ec23"; }
+.ri-disc-line:before { content: "\ec24"; }
+.ri-discord-fill:before { content: "\ec25"; }
+.ri-discord-line:before { content: "\ec26"; }
+.ri-discuss-fill:before { content: "\ec27"; }
+.ri-discuss-line:before { content: "\ec28"; }
+.ri-disqus-fill:before { content: "\ec29"; }
+.ri-disqus-line:before { content: "\ec2a"; }
+.ri-divide-fill:before { content: "\ec2b"; }
+.ri-divide-line:before { content: "\ec2c"; }
+.ri-donut-chart-fill:before { content: "\ec2d"; }
+.ri-donut-chart-line:before { content: "\ec2e"; }
+.ri-door-lock-box-fill:before { content: "\ec2f"; }
+.ri-door-lock-box-line:before { content: "\ec30"; }
+.ri-door-lock-fill:before { content: "\ec31"; }
+.ri-door-lock-line:before { content: "\ec32"; }
+.ri-douban-fill:before { content: "\ec33"; }
+.ri-douban-line:before { content: "\ec34"; }
+.ri-double-quotes-l:before { content: "\ec35"; }
+.ri-double-quotes-r:before { content: "\ec36"; }
+.ri-download-2-fill:before { content: "\ec37"; }
+.ri-download-2-line:before { content: "\ec38"; }
+.ri-download-cloud-2-fill:before { content: "\ec39"; }
+.ri-download-cloud-2-line:before { content: "\ec3a"; }
+.ri-download-cloud-fill:before { content: "\ec3b"; }
+.ri-download-cloud-line:before { content: "\ec3c"; }
+.ri-download-fill:before { content: "\ec3d"; }
+.ri-download-line:before { content: "\ec3e"; }
+.ri-drag-drop-fill:before { content: "\ec3f"; }
+.ri-drag-drop-line:before { content: "\ec40"; }
+.ri-drag-move-2-fill:before { content: "\ec41"; }
+.ri-drag-move-2-line:before { content: "\ec42"; }
+.ri-drag-move-fill:before { content: "\ec43"; }
+.ri-drag-move-line:before { content: "\ec44"; }
+.ri-dribbble-fill:before { content: "\ec45"; }
+.ri-dribbble-line:before { content: "\ec46"; }
+.ri-drive-fill:before { content: "\ec47"; }
+.ri-drive-line:before { content: "\ec48"; }
+.ri-drizzle-fill:before { content: "\ec49"; }
+.ri-drizzle-line:before { content: "\ec4a"; }
+.ri-drop-fill:before { content: "\ec4b"; }
+.ri-drop-line:before { content: "\ec4c"; }
+.ri-dropbox-fill:before { content: "\ec4d"; }
+.ri-dropbox-line:before { content: "\ec4e"; }
+.ri-dual-sim-1-fill:before { content: "\ec4f"; }
+.ri-dual-sim-1-line:before { content: "\ec50"; }
+.ri-dual-sim-2-fill:before { content: "\ec51"; }
+.ri-dual-sim-2-line:before { content: "\ec52"; }
+.ri-dv-fill:before { content: "\ec53"; }
+.ri-dv-line:before { content: "\ec54"; }
+.ri-dvd-fill:before { content: "\ec55"; }
+.ri-dvd-line:before { content: "\ec56"; }
+.ri-e-bike-2-fill:before { content: "\ec57"; }
+.ri-e-bike-2-line:before { content: "\ec58"; }
+.ri-e-bike-fill:before { content: "\ec59"; }
+.ri-e-bike-line:before { content: "\ec5a"; }
+.ri-earth-fill:before { content: "\ec5b"; }
+.ri-earth-line:before { content: "\ec5c"; }
+.ri-earthquake-fill:before { content: "\ec5d"; }
+.ri-earthquake-line:before { content: "\ec5e"; }
+.ri-edge-fill:before { content: "\ec5f"; }
+.ri-edge-line:before { content: "\ec60"; }
+.ri-edit-2-fill:before { content: "\ec61"; }
+.ri-edit-2-line:before { content: "\ec62"; }
+.ri-edit-box-fill:before { content: "\ec63"; }
+.ri-edit-box-line:before { content: "\ec64"; }
+.ri-edit-circle-fill:before { content: "\ec65"; }
+.ri-edit-circle-line:before { content: "\ec66"; }
+.ri-edit-fill:before { content: "\ec67"; }
+.ri-edit-line:before { content: "\ec68"; }
+.ri-eject-fill:before { content: "\ec69"; }
+.ri-eject-line:before { content: "\ec6a"; }
+.ri-emotion-2-fill:before { content: "\ec6b"; }
+.ri-emotion-2-line:before { content: "\ec6c"; }
+.ri-emotion-fill:before { content: "\ec6d"; }
+.ri-emotion-happy-fill:before { content: "\ec6e"; }
+.ri-emotion-happy-line:before { content: "\ec6f"; }
+.ri-emotion-laugh-fill:before { content: "\ec70"; }
+.ri-emotion-laugh-line:before { content: "\ec71"; }
+.ri-emotion-line:before { content: "\ec72"; }
+.ri-emotion-normal-fill:before { content: "\ec73"; }
+.ri-emotion-normal-line:before { content: "\ec74"; }
+.ri-emotion-sad-fill:before { content: "\ec75"; }
+.ri-emotion-sad-line:before { content: "\ec76"; }
+.ri-emotion-unhappy-fill:before { content: "\ec77"; }
+.ri-emotion-unhappy-line:before { content: "\ec78"; }
+.ri-emphasis-cn:before { content: "\ec79"; }
+.ri-emphasis:before { content: "\ec7a"; }
+.ri-english-input:before { content: "\ec7b"; }
+.ri-equalizer-fill:before { content: "\ec7c"; }
+.ri-equalizer-line:before { content: "\ec7d"; }
+.ri-eraser-fill:before { content: "\ec7e"; }
+.ri-eraser-line:before { content: "\ec7f"; }
+.ri-error-warning-fill:before { content: "\ec80"; }
+.ri-error-warning-line:before { content: "\ec81"; }
+.ri-evernote-fill:before { content: "\ec82"; }
+.ri-evernote-line:before { content: "\ec83"; }
+.ri-exchange-box-fill:before { content: "\ec84"; }
+.ri-exchange-box-line:before { content: "\ec85"; }
+.ri-exchange-cny-fill:before { content: "\ec86"; }
+.ri-exchange-cny-line:before { content: "\ec87"; }
+.ri-exchange-dollar-fill:before { content: "\ec88"; }
+.ri-exchange-dollar-line:before { content: "\ec89"; }
+.ri-exchange-fill:before { content: "\ec8a"; }
+.ri-exchange-funds-fill:before { content: "\ec8b"; }
+.ri-exchange-funds-line:before { content: "\ec8c"; }
+.ri-exchange-line:before { content: "\ec8d"; }
+.ri-external-link-fill:before { content: "\ec8e"; }
+.ri-external-link-line:before { content: "\ec8f"; }
+.ri-eye-2-fill:before { content: "\ec90"; }
+.ri-eye-2-line:before { content: "\ec91"; }
+.ri-eye-close-fill:before { content: "\ec92"; }
+.ri-eye-close-line:before { content: "\ec93"; }
+.ri-eye-fill:before { content: "\ec94"; }
+.ri-eye-line:before { content: "\ec95"; }
+.ri-eye-off-fill:before { content: "\ec96"; }
+.ri-eye-off-line:before { content: "\ec97"; }
+.ri-facebook-box-fill:before { content: "\ec98"; }
+.ri-facebook-box-line:before { content: "\ec99"; }
+.ri-facebook-circle-fill:before { content: "\ec9a"; }
+.ri-facebook-circle-line:before { content: "\ec9b"; }
+.ri-facebook-fill:before { content: "\ec9c"; }
+.ri-facebook-line:before { content: "\ec9d"; }
+.ri-fahrenheit-fill:before { content: "\ec9e"; }
+.ri-fahrenheit-line:before { content: "\ec9f"; }
+.ri-feedback-fill:before { content: "\eca0"; }
+.ri-feedback-line:before { content: "\eca1"; }
+.ri-file-2-fill:before { content: "\eca2"; }
+.ri-file-2-line:before { content: "\eca3"; }
+.ri-file-3-fill:before { content: "\eca4"; }
+.ri-file-3-line:before { content: "\eca5"; }
+.ri-file-4-fill:before { content: "\eca6"; }
+.ri-file-4-line:before { content: "\eca7"; }
+.ri-file-add-fill:before { content: "\eca8"; }
+.ri-file-add-line:before { content: "\eca9"; }
+.ri-file-chart-2-fill:before { content: "\ecaa"; }
+.ri-file-chart-2-line:before { content: "\ecab"; }
+.ri-file-chart-fill:before { content: "\ecac"; }
+.ri-file-chart-line:before { content: "\ecad"; }
+.ri-file-cloud-fill:before { content: "\ecae"; }
+.ri-file-cloud-line:before { content: "\ecaf"; }
+.ri-file-code-fill:before { content: "\ecb0"; }
+.ri-file-code-line:before { content: "\ecb1"; }
+.ri-file-copy-2-fill:before { content: "\ecb2"; }
+.ri-file-copy-2-line:before { content: "\ecb3"; }
+.ri-file-copy-fill:before { content: "\ecb4"; }
+.ri-file-copy-line:before { content: "\ecb5"; }
+.ri-file-damage-fill:before { content: "\ecb6"; }
+.ri-file-damage-line:before { content: "\ecb7"; }
+.ri-file-download-fill:before { content: "\ecb8"; }
+.ri-file-download-line:before { content: "\ecb9"; }
+.ri-file-edit-fill:before { content: "\ecba"; }
+.ri-file-edit-line:before { content: "\ecbb"; }
+.ri-file-excel-2-fill:before { content: "\ecbc"; }
+.ri-file-excel-2-line:before { content: "\ecbd"; }
+.ri-file-excel-fill:before { content: "\ecbe"; }
+.ri-file-excel-line:before { content: "\ecbf"; }
+.ri-file-fill:before { content: "\ecc0"; }
+.ri-file-forbid-fill:before { content: "\ecc1"; }
+.ri-file-forbid-line:before { content: "\ecc2"; }
+.ri-file-gif-fill:before { content: "\ecc3"; }
+.ri-file-gif-line:before { content: "\ecc4"; }
+.ri-file-history-fill:before { content: "\ecc5"; }
+.ri-file-history-line:before { content: "\ecc6"; }
+.ri-file-hwp-fill:before { content: "\ecc7"; }
+.ri-file-hwp-line:before { content: "\ecc8"; }
+.ri-file-info-fill:before { content: "\ecc9"; }
+.ri-file-info-line:before { content: "\ecca"; }
+.ri-file-line:before { content: "\eccb"; }
+.ri-file-list-2-fill:before { content: "\eccc"; }
+.ri-file-list-2-line:before { content: "\eccd"; }
+.ri-file-list-3-fill:before { content: "\ecce"; }
+.ri-file-list-3-line:before { content: "\eccf"; }
+.ri-file-list-fill:before { content: "\ecd0"; }
+.ri-file-list-line:before { content: "\ecd1"; }
+.ri-file-lock-fill:before { content: "\ecd2"; }
+.ri-file-lock-line:before { content: "\ecd3"; }
+.ri-file-mark-fill:before { content: "\ecd4"; }
+.ri-file-mark-line:before { content: "\ecd5"; }
+.ri-file-music-fill:before { content: "\ecd6"; }
+.ri-file-music-line:before { content: "\ecd7"; }
+.ri-file-paper-2-fill:before { content: "\ecd8"; }
+.ri-file-paper-2-line:before { content: "\ecd9"; }
+.ri-file-paper-fill:before { content: "\ecda"; }
+.ri-file-paper-line:before { content: "\ecdb"; }
+.ri-file-pdf-fill:before { content: "\ecdc"; }
+.ri-file-pdf-line:before { content: "\ecdd"; }
+.ri-file-ppt-2-fill:before { content: "\ecde"; }
+.ri-file-ppt-2-line:before { content: "\ecdf"; }
+.ri-file-ppt-fill:before { content: "\ece0"; }
+.ri-file-ppt-line:before { content: "\ece1"; }
+.ri-file-reduce-fill:before { content: "\ece2"; }
+.ri-file-reduce-line:before { content: "\ece3"; }
+.ri-file-search-fill:before { content: "\ece4"; }
+.ri-file-search-line:before { content: "\ece5"; }
+.ri-file-settings-fill:before { content: "\ece6"; }
+.ri-file-settings-line:before { content: "\ece7"; }
+.ri-file-shield-2-fill:before { content: "\ece8"; }
+.ri-file-shield-2-line:before { content: "\ece9"; }
+.ri-file-shield-fill:before { content: "\ecea"; }
+.ri-file-shield-line:before { content: "\eceb"; }
+.ri-file-shred-fill:before { content: "\ecec"; }
+.ri-file-shred-line:before { content: "\eced"; }
+.ri-file-text-fill:before { content: "\ecee"; }
+.ri-file-text-line:before { content: "\ecef"; }
+.ri-file-transfer-fill:before { content: "\ecf0"; }
+.ri-file-transfer-line:before { content: "\ecf1"; }
+.ri-file-unknow-fill:before { content: "\ecf2"; }
+.ri-file-unknow-line:before { content: "\ecf3"; }
+.ri-file-upload-fill:before { content: "\ecf4"; }
+.ri-file-upload-line:before { content: "\ecf5"; }
+.ri-file-user-fill:before { content: "\ecf6"; }
+.ri-file-user-line:before { content: "\ecf7"; }
+.ri-file-warning-fill:before { content: "\ecf8"; }
+.ri-file-warning-line:before { content: "\ecf9"; }
+.ri-file-word-2-fill:before { content: "\ecfa"; }
+.ri-file-word-2-line:before { content: "\ecfb"; }
+.ri-file-word-fill:before { content: "\ecfc"; }
+.ri-file-word-line:before { content: "\ecfd"; }
+.ri-file-zip-fill:before { content: "\ecfe"; }
+.ri-file-zip-line:before { content: "\ecff"; }
+.ri-film-fill:before { content: "\ed00"; }
+.ri-film-line:before { content: "\ed01"; }
+.ri-filter-2-fill:before { content: "\ed02"; }
+.ri-filter-2-line:before { content: "\ed03"; }
+.ri-filter-3-fill:before { content: "\ed04"; }
+.ri-filter-3-line:before { content: "\ed05"; }
+.ri-filter-fill:before { content: "\ed06"; }
+.ri-filter-line:before { content: "\ed07"; }
+.ri-find-replace-fill:before { content: "\ed08"; }
+.ri-find-replace-line:before { content: "\ed09"; }
+.ri-fingerprint-2-fill:before { content: "\ed0a"; }
+.ri-fingerprint-2-line:before { content: "\ed0b"; }
+.ri-fingerprint-fill:before { content: "\ed0c"; }
+.ri-fingerprint-line:before { content: "\ed0d"; }
+.ri-fire-fill:before { content: "\ed0e"; }
+.ri-fire-line:before { content: "\ed0f"; }
+.ri-firefox-fill:before { content: "\ed10"; }
+.ri-firefox-line:before { content: "\ed11"; }
+.ri-flag-2-fill:before { content: "\ed12"; }
+.ri-flag-2-line:before { content: "\ed13"; }
+.ri-flag-fill:before { content: "\ed14"; }
+.ri-flag-line:before { content: "\ed15"; }
+.ri-flashlight-fill:before { content: "\ed16"; }
+.ri-flashlight-line:before { content: "\ed17"; }
+.ri-flask-fill:before { content: "\ed18"; }
+.ri-flask-line:before { content: "\ed19"; }
+.ri-flight-land-fill:before { content: "\ed1a"; }
+.ri-flight-land-line:before { content: "\ed1b"; }
+.ri-flight-takeoff-fill:before { content: "\ed1c"; }
+.ri-flight-takeoff-line:before { content: "\ed1d"; }
+.ri-flood-fill:before { content: "\ed1e"; }
+.ri-flood-line:before { content: "\ed1f"; }
+.ri-flutter-fill:before { content: "\ed20"; }
+.ri-flutter-line:before { content: "\ed21"; }
+.ri-focus-2-fill:before { content: "\ed22"; }
+.ri-focus-2-line:before { content: "\ed23"; }
+.ri-focus-3-fill:before { content: "\ed24"; }
+.ri-focus-3-line:before { content: "\ed25"; }
+.ri-focus-fill:before { content: "\ed26"; }
+.ri-focus-line:before { content: "\ed27"; }
+.ri-foggy-fill:before { content: "\ed28"; }
+.ri-foggy-line:before { content: "\ed29"; }
+.ri-folder-2-fill:before { content: "\ed2a"; }
+.ri-folder-2-line:before { content: "\ed2b"; }
+.ri-folder-3-fill:before { content: "\ed2c"; }
+.ri-folder-3-line:before { content: "\ed2d"; }
+.ri-folder-4-fill:before { content: "\ed2e"; }
+.ri-folder-4-line:before { content: "\ed2f"; }
+.ri-folder-5-fill:before { content: "\ed30"; }
+.ri-folder-5-line:before { content: "\ed31"; }
+.ri-folder-add-fill:before { content: "\ed32"; }
+.ri-folder-add-line:before { content: "\ed33"; }
+.ri-folder-chart-2-fill:before { content: "\ed34"; }
+.ri-folder-chart-2-line:before { content: "\ed35"; }
+.ri-folder-chart-fill:before { content: "\ed36"; }
+.ri-folder-chart-line:before { content: "\ed37"; }
+.ri-folder-download-fill:before { content: "\ed38"; }
+.ri-folder-download-line:before { content: "\ed39"; }
+.ri-folder-fill:before { content: "\ed3a"; }
+.ri-folder-forbid-fill:before { content: "\ed3b"; }
+.ri-folder-forbid-line:before { content: "\ed3c"; }
+.ri-folder-history-fill:before { content: "\ed3d"; }
+.ri-folder-history-line:before { content: "\ed3e"; }
+.ri-folder-info-fill:before { content: "\ed3f"; }
+.ri-folder-info-line:before { content: "\ed40"; }
+.ri-folder-keyhole-fill:before { content: "\ed41"; }
+.ri-folder-keyhole-line:before { content: "\ed42"; }
+.ri-folder-line:before { content: "\ed43"; }
+.ri-folder-lock-fill:before { content: "\ed44"; }
+.ri-folder-lock-line:before { content: "\ed45"; }
+.ri-folder-music-fill:before { content: "\ed46"; }
+.ri-folder-music-line:before { content: "\ed47"; }
+.ri-folder-open-fill:before { content: "\ed48"; }
+.ri-folder-open-line:before { content: "\ed49"; }
+.ri-folder-received-fill:before { content: "\ed4a"; }
+.ri-folder-received-line:before { content: "\ed4b"; }
+.ri-folder-reduce-fill:before { content: "\ed4c"; }
+.ri-folder-reduce-line:before { content: "\ed4d"; }
+.ri-folder-settings-fill:before { content: "\ed4e"; }
+.ri-folder-settings-line:before { content: "\ed4f"; }
+.ri-folder-shared-fill:before { content: "\ed50"; }
+.ri-folder-shared-line:before { content: "\ed51"; }
+.ri-folder-shield-2-fill:before { content: "\ed52"; }
+.ri-folder-shield-2-line:before { content: "\ed53"; }
+.ri-folder-shield-fill:before { content: "\ed54"; }
+.ri-folder-shield-line:before { content: "\ed55"; }
+.ri-folder-transfer-fill:before { content: "\ed56"; }
+.ri-folder-transfer-line:before { content: "\ed57"; }
+.ri-folder-unknow-fill:before { content: "\ed58"; }
+.ri-folder-unknow-line:before { content: "\ed59"; }
+.ri-folder-upload-fill:before { content: "\ed5a"; }
+.ri-folder-upload-line:before { content: "\ed5b"; }
+.ri-folder-user-fill:before { content: "\ed5c"; }
+.ri-folder-user-line:before { content: "\ed5d"; }
+.ri-folder-warning-fill:before { content: "\ed5e"; }
+.ri-folder-warning-line:before { content: "\ed5f"; }
+.ri-folder-zip-fill:before { content: "\ed60"; }
+.ri-folder-zip-line:before { content: "\ed61"; }
+.ri-folders-fill:before { content: "\ed62"; }
+.ri-folders-line:before { content: "\ed63"; }
+.ri-font-color:before { content: "\ed64"; }
+.ri-font-size-2:before { content: "\ed65"; }
+.ri-font-size:before { content: "\ed66"; }
+.ri-football-fill:before { content: "\ed67"; }
+.ri-football-line:before { content: "\ed68"; }
+.ri-footprint-fill:before { content: "\ed69"; }
+.ri-footprint-line:before { content: "\ed6a"; }
+.ri-forbid-2-fill:before { content: "\ed6b"; }
+.ri-forbid-2-line:before { content: "\ed6c"; }
+.ri-forbid-fill:before { content: "\ed6d"; }
+.ri-forbid-line:before { content: "\ed6e"; }
+.ri-format-clear:before { content: "\ed6f"; }
+.ri-fridge-fill:before { content: "\ed70"; }
+.ri-fridge-line:before { content: "\ed71"; }
+.ri-fullscreen-exit-fill:before { content: "\ed72"; }
+.ri-fullscreen-exit-line:before { content: "\ed73"; }
+.ri-fullscreen-fill:before { content: "\ed74"; }
+.ri-fullscreen-line:before { content: "\ed75"; }
+.ri-function-fill:before { content: "\ed76"; }
+.ri-function-line:before { content: "\ed77"; }
+.ri-functions:before { content: "\ed78"; }
+.ri-funds-box-fill:before { content: "\ed79"; }
+.ri-funds-box-line:before { content: "\ed7a"; }
+.ri-funds-fill:before { content: "\ed7b"; }
+.ri-funds-line:before { content: "\ed7c"; }
+.ri-gallery-fill:before { content: "\ed7d"; }
+.ri-gallery-line:before { content: "\ed7e"; }
+.ri-gallery-upload-fill:before { content: "\ed7f"; }
+.ri-gallery-upload-line:before { content: "\ed80"; }
+.ri-game-fill:before { content: "\ed81"; }
+.ri-game-line:before { content: "\ed82"; }
+.ri-gamepad-fill:before { content: "\ed83"; }
+.ri-gamepad-line:before { content: "\ed84"; }
+.ri-gas-station-fill:before { content: "\ed85"; }
+.ri-gas-station-line:before { content: "\ed86"; }
+.ri-gatsby-fill:before { content: "\ed87"; }
+.ri-gatsby-line:before { content: "\ed88"; }
+.ri-genderless-fill:before { content: "\ed89"; }
+.ri-genderless-line:before { content: "\ed8a"; }
+.ri-ghost-2-fill:before { content: "\ed8b"; }
+.ri-ghost-2-line:before { content: "\ed8c"; }
+.ri-ghost-fill:before { content: "\ed8d"; }
+.ri-ghost-line:before { content: "\ed8e"; }
+.ri-ghost-smile-fill:before { content: "\ed8f"; }
+.ri-ghost-smile-line:before { content: "\ed90"; }
+.ri-gift-2-fill:before { content: "\ed91"; }
+.ri-gift-2-line:before { content: "\ed92"; }
+.ri-gift-fill:before { content: "\ed93"; }
+.ri-gift-line:before { content: "\ed94"; }
+.ri-git-branch-fill:before { content: "\ed95"; }
+.ri-git-branch-line:before { content: "\ed96"; }
+.ri-git-commit-fill:before { content: "\ed97"; }
+.ri-git-commit-line:before { content: "\ed98"; }
+.ri-git-merge-fill:before { content: "\ed99"; }
+.ri-git-merge-line:before { content: "\ed9a"; }
+.ri-git-pull-request-fill:before { content: "\ed9b"; }
+.ri-git-pull-request-line:before { content: "\ed9c"; }
+.ri-git-repository-commits-fill:before { content: "\ed9d"; }
+.ri-git-repository-commits-line:before { content: "\ed9e"; }
+.ri-git-repository-fill:before { content: "\ed9f"; }
+.ri-git-repository-line:before { content: "\eda0"; }
+.ri-git-repository-private-fill:before { content: "\eda1"; }
+.ri-git-repository-private-line:before { content: "\eda2"; }
+.ri-github-fill:before { content: "\eda3"; }
+.ri-github-line:before { content: "\eda4"; }
+.ri-gitlab-fill:before { content: "\eda5"; }
+.ri-gitlab-line:before { content: "\eda6"; }
+.ri-global-fill:before { content: "\eda7"; }
+.ri-global-line:before { content: "\eda8"; }
+.ri-globe-fill:before { content: "\eda9"; }
+.ri-globe-line:before { content: "\edaa"; }
+.ri-goblet-fill:before { content: "\edab"; }
+.ri-goblet-line:before { content: "\edac"; }
+.ri-google-fill:before { content: "\edad"; }
+.ri-google-line:before { content: "\edae"; }
+.ri-google-play-fill:before { content: "\edaf"; }
+.ri-google-play-line:before { content: "\edb0"; }
+.ri-government-fill:before { content: "\edb1"; }
+.ri-government-line:before { content: "\edb2"; }
+.ri-gps-fill:before { content: "\edb3"; }
+.ri-gps-line:before { content: "\edb4"; }
+.ri-gradienter-fill:before { content: "\edb5"; }
+.ri-gradienter-line:before { content: "\edb6"; }
+.ri-grid-fill:before { content: "\edb7"; }
+.ri-grid-line:before { content: "\edb8"; }
+.ri-group-2-fill:before { content: "\edb9"; }
+.ri-group-2-line:before { content: "\edba"; }
+.ri-group-fill:before { content: "\edbb"; }
+.ri-group-line:before { content: "\edbc"; }
+.ri-guide-fill:before { content: "\edbd"; }
+.ri-guide-line:before { content: "\edbe"; }
+.ri-hail-fill:before { content: "\edbf"; }
+.ri-hail-line:before { content: "\edc0"; }
+.ri-hammer-fill:before { content: "\edc1"; }
+.ri-hammer-line:before { content: "\edc2"; }
+.ri-hand-coin-fill:before { content: "\edc3"; }
+.ri-hand-coin-line:before { content: "\edc4"; }
+.ri-hand-heart-fill:before { content: "\edc5"; }
+.ri-hand-heart-line:before { content: "\edc6"; }
+.ri-handbag-fill:before { content: "\edc7"; }
+.ri-handbag-line:before { content: "\edc8"; }
+.ri-hard-drive-2-fill:before { content: "\edc9"; }
+.ri-hard-drive-2-line:before { content: "\edca"; }
+.ri-hard-drive-fill:before { content: "\edcb"; }
+.ri-hard-drive-line:before { content: "\edcc"; }
+.ri-hashtag:before { content: "\edcd"; }
+.ri-haze-2-fill:before { content: "\edce"; }
+.ri-haze-2-line:before { content: "\edcf"; }
+.ri-haze-fill:before { content: "\edd0"; }
+.ri-haze-line:before { content: "\edd1"; }
+.ri-hd-fill:before { content: "\edd2"; }
+.ri-hd-line:before { content: "\edd3"; }
+.ri-heading:before { content: "\edd4"; }
+.ri-headphone-fill:before { content: "\edd5"; }
+.ri-headphone-line:before { content: "\edd6"; }
+.ri-heart-2-fill:before { content: "\edd7"; }
+.ri-heart-2-line:before { content: "\edd8"; }
+.ri-heart-add-fill:before { content: "\edd9"; }
+.ri-heart-add-line:before { content: "\edda"; }
+.ri-heart-fill:before { content: "\eddb"; }
+.ri-heart-line:before { content: "\eddc"; }
+.ri-hearts-fill:before { content: "\eddd"; }
+.ri-hearts-line:before { content: "\edde"; }
+.ri-heavy-showers-fill:before { content: "\eddf"; }
+.ri-heavy-showers-line:before { content: "\ede0"; }
+.ri-history-fill:before { content: "\ede1"; }
+.ri-history-line:before { content: "\ede2"; }
+.ri-home-2-fill:before { content: "\ede3"; }
+.ri-home-2-line:before { content: "\ede4"; }
+.ri-home-3-fill:before { content: "\ede5"; }
+.ri-home-3-line:before { content: "\ede6"; }
+.ri-home-4-fill:before { content: "\ede7"; }
+.ri-home-4-line:before { content: "\ede8"; }
+.ri-home-5-fill:before { content: "\ede9"; }
+.ri-home-5-line:before { content: "\edea"; }
+.ri-home-6-fill:before { content: "\edeb"; }
+.ri-home-6-line:before { content: "\edec"; }
+.ri-home-7-fill:before { content: "\eded"; }
+.ri-home-7-line:before { content: "\edee"; }
+.ri-home-8-fill:before { content: "\edef"; }
+.ri-home-8-line:before { content: "\edf0"; }
+.ri-home-fill:before { content: "\edf1"; }
+.ri-home-gear-fill:before { content: "\edf2"; }
+.ri-home-gear-line:before { content: "\edf3"; }
+.ri-home-heart-fill:before { content: "\edf4"; }
+.ri-home-heart-line:before { content: "\edf5"; }
+.ri-home-line:before { content: "\edf6"; }
+.ri-home-smile-2-fill:before { content: "\edf7"; }
+.ri-home-smile-2-line:before { content: "\edf8"; }
+.ri-home-smile-fill:before { content: "\edf9"; }
+.ri-home-smile-line:before { content: "\edfa"; }
+.ri-home-wifi-fill:before { content: "\edfb"; }
+.ri-home-wifi-line:before { content: "\edfc"; }
+.ri-honor-of-kings-fill:before { content: "\edfd"; }
+.ri-honor-of-kings-line:before { content: "\edfe"; }
+.ri-honour-fill:before { content: "\edff"; }
+.ri-honour-line:before { content: "\ee00"; }
+.ri-hospital-fill:before { content: "\ee01"; }
+.ri-hospital-line:before { content: "\ee02"; }
+.ri-hotel-bed-fill:before { content: "\ee03"; }
+.ri-hotel-bed-line:before { content: "\ee04"; }
+.ri-hotel-fill:before { content: "\ee05"; }
+.ri-hotel-line:before { content: "\ee06"; }
+.ri-hotspot-fill:before { content: "\ee07"; }
+.ri-hotspot-line:before { content: "\ee08"; }
+.ri-hq-fill:before { content: "\ee09"; }
+.ri-hq-line:before { content: "\ee0a"; }
+.ri-html5-fill:before { content: "\ee0b"; }
+.ri-html5-line:before { content: "\ee0c"; }
+.ri-ie-fill:before { content: "\ee0d"; }
+.ri-ie-line:before { content: "\ee0e"; }
+.ri-image-2-fill:before { content: "\ee0f"; }
+.ri-image-2-line:before { content: "\ee10"; }
+.ri-image-add-fill:before { content: "\ee11"; }
+.ri-image-add-line:before { content: "\ee12"; }
+.ri-image-fill:before { content: "\ee13"; }
+.ri-image-line:before { content: "\ee14"; }
+.ri-inbox-archive-fill:before { content: "\ee15"; }
+.ri-inbox-archive-line:before { content: "\ee16"; }
+.ri-inbox-fill:before { content: "\ee17"; }
+.ri-inbox-line:before { content: "\ee18"; }
+.ri-inbox-unarchive-fill:before { content: "\ee19"; }
+.ri-inbox-unarchive-line:before { content: "\ee1a"; }
+.ri-increase-decrease-fill:before { content: "\ee1b"; }
+.ri-increase-decrease-line:before { content: "\ee1c"; }
+.ri-indent-decrease:before { content: "\ee1d"; }
+.ri-indent-increase:before { content: "\ee1e"; }
+.ri-indeterminate-circle-fill:before { content: "\ee1f"; }
+.ri-indeterminate-circle-line:before { content: "\ee20"; }
+.ri-information-fill:before { content: "\ee21"; }
+.ri-information-line:before { content: "\ee22"; }
+.ri-input-cursor-move:before { content: "\ee23"; }
+.ri-input-method-fill:before { content: "\ee24"; }
+.ri-input-method-line:before { content: "\ee25"; }
+.ri-instagram-fill:before { content: "\ee26"; }
+.ri-instagram-line:before { content: "\ee27"; }
+.ri-install-fill:before { content: "\ee28"; }
+.ri-install-line:before { content: "\ee29"; }
+.ri-invision-fill:before { content: "\ee2a"; }
+.ri-invision-line:before { content: "\ee2b"; }
+.ri-italic:before { content: "\ee2c"; }
+.ri-kakao-talk-fill:before { content: "\ee2d"; }
+.ri-kakao-talk-line:before { content: "\ee2e"; }
+.ri-key-2-fill:before { content: "\ee2f"; }
+.ri-key-2-line:before { content: "\ee30"; }
+.ri-key-fill:before { content: "\ee31"; }
+.ri-key-line:before { content: "\ee32"; }
+.ri-keyboard-box-fill:before { content: "\ee33"; }
+.ri-keyboard-box-line:before { content: "\ee34"; }
+.ri-keyboard-fill:before { content: "\ee35"; }
+.ri-keyboard-line:before { content: "\ee36"; }
+.ri-keynote-fill:before { content: "\ee37"; }
+.ri-keynote-line:before { content: "\ee38"; }
+.ri-knife-blood-fill:before { content: "\ee39"; }
+.ri-knife-blood-line:before { content: "\ee3a"; }
+.ri-knife-fill:before { content: "\ee3b"; }
+.ri-knife-line:before { content: "\ee3c"; }
+.ri-landscape-fill:before { content: "\ee3d"; }
+.ri-landscape-line:before { content: "\ee3e"; }
+.ri-layout-2-fill:before { content: "\ee3f"; }
+.ri-layout-2-line:before { content: "\ee40"; }
+.ri-layout-3-fill:before { content: "\ee41"; }
+.ri-layout-3-line:before { content: "\ee42"; }
+.ri-layout-4-fill:before { content: "\ee43"; }
+.ri-layout-4-line:before { content: "\ee44"; }
+.ri-layout-5-fill:before { content: "\ee45"; }
+.ri-layout-5-line:before { content: "\ee46"; }
+.ri-layout-6-fill:before { content: "\ee47"; }
+.ri-layout-6-line:before { content: "\ee48"; }
+.ri-layout-bottom-2-fill:before { content: "\ee49"; }
+.ri-layout-bottom-2-line:before { content: "\ee4a"; }
+.ri-layout-bottom-fill:before { content: "\ee4b"; }
+.ri-layout-bottom-line:before { content: "\ee4c"; }
+.ri-layout-column-fill:before { content: "\ee4d"; }
+.ri-layout-column-line:before { content: "\ee4e"; }
+.ri-layout-fill:before { content: "\ee4f"; }
+.ri-layout-grid-fill:before { content: "\ee50"; }
+.ri-layout-grid-line:before { content: "\ee51"; }
+.ri-layout-left-2-fill:before { content: "\ee52"; }
+.ri-layout-left-2-line:before { content: "\ee53"; }
+.ri-layout-left-fill:before { content: "\ee54"; }
+.ri-layout-left-line:before { content: "\ee55"; }
+.ri-layout-line:before { content: "\ee56"; }
+.ri-layout-masonry-fill:before { content: "\ee57"; }
+.ri-layout-masonry-line:before { content: "\ee58"; }
+.ri-layout-right-2-fill:before { content: "\ee59"; }
+.ri-layout-right-2-line:before { content: "\ee5a"; }
+.ri-layout-right-fill:before { content: "\ee5b"; }
+.ri-layout-right-line:before { content: "\ee5c"; }
+.ri-layout-row-fill:before { content: "\ee5d"; }
+.ri-layout-row-line:before { content: "\ee5e"; }
+.ri-layout-top-2-fill:before { content: "\ee5f"; }
+.ri-layout-top-2-line:before { content: "\ee60"; }
+.ri-layout-top-fill:before { content: "\ee61"; }
+.ri-layout-top-line:before { content: "\ee62"; }
+.ri-leaf-fill:before { content: "\ee63"; }
+.ri-leaf-line:before { content: "\ee64"; }
+.ri-lifebuoy-fill:before { content: "\ee65"; }
+.ri-lifebuoy-line:before { content: "\ee66"; }
+.ri-lightbulb-fill:before { content: "\ee67"; }
+.ri-lightbulb-flash-fill:before { content: "\ee68"; }
+.ri-lightbulb-flash-line:before { content: "\ee69"; }
+.ri-lightbulb-line:before { content: "\ee6a"; }
+.ri-line-chart-fill:before { content: "\ee6b"; }
+.ri-line-chart-line:before { content: "\ee6c"; }
+.ri-line-fill:before { content: "\ee6d"; }
+.ri-line-height:before { content: "\ee6e"; }
+.ri-line-line:before { content: "\ee6f"; }
+.ri-link-m:before { content: "\ee70"; }
+.ri-link-unlink-m:before { content: "\ee71"; }
+.ri-link-unlink:before { content: "\ee72"; }
+.ri-link:before { content: "\ee73"; }
+.ri-linkedin-box-fill:before { content: "\ee74"; }
+.ri-linkedin-box-line:before { content: "\ee75"; }
+.ri-linkedin-fill:before { content: "\ee76"; }
+.ri-linkedin-line:before { content: "\ee77"; }
+.ri-links-fill:before { content: "\ee78"; }
+.ri-links-line:before { content: "\ee79"; }
+.ri-list-check-2:before { content: "\ee7a"; }
+.ri-list-check:before { content: "\ee7b"; }
+.ri-list-ordered:before { content: "\ee7c"; }
+.ri-list-settings-fill:before { content: "\ee7d"; }
+.ri-list-settings-line:before { content: "\ee7e"; }
+.ri-list-unordered:before { content: "\ee7f"; }
+.ri-live-fill:before { content: "\ee80"; }
+.ri-live-line:before { content: "\ee81"; }
+.ri-loader-2-fill:before { content: "\ee82"; }
+.ri-loader-2-line:before { content: "\ee83"; }
+.ri-loader-3-fill:before { content: "\ee84"; }
+.ri-loader-3-line:before { content: "\ee85"; }
+.ri-loader-4-fill:before { content: "\ee86"; }
+.ri-loader-4-line:before { content: "\ee87"; }
+.ri-loader-5-fill:before { content: "\ee88"; }
+.ri-loader-5-line:before { content: "\ee89"; }
+.ri-loader-fill:before { content: "\ee8a"; }
+.ri-loader-line:before { content: "\ee8b"; }
+.ri-lock-2-fill:before { content: "\ee8c"; }
+.ri-lock-2-line:before { content: "\ee8d"; }
+.ri-lock-fill:before { content: "\ee8e"; }
+.ri-lock-line:before { content: "\ee8f"; }
+.ri-lock-password-fill:before { content: "\ee90"; }
+.ri-lock-password-line:before { content: "\ee91"; }
+.ri-lock-unlock-fill:before { content: "\ee92"; }
+.ri-lock-unlock-line:before { content: "\ee93"; }
+.ri-login-box-fill:before { content: "\ee94"; }
+.ri-login-box-line:before { content: "\ee95"; }
+.ri-login-circle-fill:before { content: "\ee96"; }
+.ri-login-circle-line:before { content: "\ee97"; }
+.ri-logout-box-fill:before { content: "\ee98"; }
+.ri-logout-box-line:before { content: "\ee99"; }
+.ri-logout-box-r-fill:before { content: "\ee9a"; }
+.ri-logout-box-r-line:before { content: "\ee9b"; }
+.ri-logout-circle-fill:before { content: "\ee9c"; }
+.ri-logout-circle-line:before { content: "\ee9d"; }
+.ri-logout-circle-r-fill:before { content: "\ee9e"; }
+.ri-logout-circle-r-line:before { content: "\ee9f"; }
+.ri-luggage-cart-fill:before { content: "\eea0"; }
+.ri-luggage-cart-line:before { content: "\eea1"; }
+.ri-luggage-deposit-fill:before { content: "\eea2"; }
+.ri-luggage-deposit-line:before { content: "\eea3"; }
+.ri-mac-fill:before { content: "\eea4"; }
+.ri-mac-line:before { content: "\eea5"; }
+.ri-macbook-fill:before { content: "\eea6"; }
+.ri-macbook-line:before { content: "\eea7"; }
+.ri-magic-fill:before { content: "\eea8"; }
+.ri-magic-line:before { content: "\eea9"; }
+.ri-mail-add-fill:before { content: "\eeaa"; }
+.ri-mail-add-line:before { content: "\eeab"; }
+.ri-mail-check-fill:before { content: "\eeac"; }
+.ri-mail-check-line:before { content: "\eead"; }
+.ri-mail-close-fill:before { content: "\eeae"; }
+.ri-mail-close-line:before { content: "\eeaf"; }
+.ri-mail-download-fill:before { content: "\eeb0"; }
+.ri-mail-download-line:before { content: "\eeb1"; }
+.ri-mail-fill:before { content: "\eeb2"; }
+.ri-mail-forbid-fill:before { content: "\eeb3"; }
+.ri-mail-forbid-line:before { content: "\eeb4"; }
+.ri-mail-line:before { content: "\eeb5"; }
+.ri-mail-lock-fill:before { content: "\eeb6"; }
+.ri-mail-lock-line:before { content: "\eeb7"; }
+.ri-mail-open-fill:before { content: "\eeb8"; }
+.ri-mail-open-line:before { content: "\eeb9"; }
+.ri-mail-send-fill:before { content: "\eeba"; }
+.ri-mail-send-line:before { content: "\eebb"; }
+.ri-mail-settings-fill:before { content: "\eebc"; }
+.ri-mail-settings-line:before { content: "\eebd"; }
+.ri-mail-star-fill:before { content: "\eebe"; }
+.ri-mail-star-line:before { content: "\eebf"; }
+.ri-mail-unread-fill:before { content: "\eec0"; }
+.ri-mail-unread-line:before { content: "\eec1"; }
+.ri-mail-volume-fill:before { content: "\eec2"; }
+.ri-mail-volume-line:before { content: "\eec3"; }
+.ri-map-2-fill:before { content: "\eec4"; }
+.ri-map-2-line:before { content: "\eec5"; }
+.ri-map-fill:before { content: "\eec6"; }
+.ri-map-line:before { content: "\eec7"; }
+.ri-map-pin-2-fill:before { content: "\eec8"; }
+.ri-map-pin-2-line:before { content: "\eec9"; }
+.ri-map-pin-3-fill:before { content: "\eeca"; }
+.ri-map-pin-3-line:before { content: "\eecb"; }
+.ri-map-pin-4-fill:before { content: "\eecc"; }
+.ri-map-pin-4-line:before { content: "\eecd"; }
+.ri-map-pin-5-fill:before { content: "\eece"; }
+.ri-map-pin-5-line:before { content: "\eecf"; }
+.ri-map-pin-add-fill:before { content: "\eed0"; }
+.ri-map-pin-add-line:before { content: "\eed1"; }
+.ri-map-pin-fill:before { content: "\eed2"; }
+.ri-map-pin-line:before { content: "\eed3"; }
+.ri-map-pin-range-fill:before { content: "\eed4"; }
+.ri-map-pin-range-line:before { content: "\eed5"; }
+.ri-map-pin-time-fill:before { content: "\eed6"; }
+.ri-map-pin-time-line:before { content: "\eed7"; }
+.ri-map-pin-user-fill:before { content: "\eed8"; }
+.ri-map-pin-user-line:before { content: "\eed9"; }
+.ri-mark-pen-fill:before { content: "\eeda"; }
+.ri-mark-pen-line:before { content: "\eedb"; }
+.ri-markdown-fill:before { content: "\eedc"; }
+.ri-markdown-line:before { content: "\eedd"; }
+.ri-markup-fill:before { content: "\eede"; }
+.ri-markup-line:before { content: "\eedf"; }
+.ri-mastercard-fill:before { content: "\eee0"; }
+.ri-mastercard-line:before { content: "\eee1"; }
+.ri-mastodon-fill:before { content: "\eee2"; }
+.ri-mastodon-line:before { content: "\eee3"; }
+.ri-medal-2-fill:before { content: "\eee4"; }
+.ri-medal-2-line:before { content: "\eee5"; }
+.ri-medal-fill:before { content: "\eee6"; }
+.ri-medal-line:before { content: "\eee7"; }
+.ri-medium-fill:before { content: "\eee8"; }
+.ri-medium-line:before { content: "\eee9"; }
+.ri-men-fill:before { content: "\eeea"; }
+.ri-men-line:before { content: "\eeeb"; }
+.ri-menu-2-fill:before { content: "\eeec"; }
+.ri-menu-2-line:before { content: "\eeed"; }
+.ri-menu-3-fill:before { content: "\eeee"; }
+.ri-menu-3-line:before { content: "\eeef"; }
+.ri-menu-4-fill:before { content: "\eef0"; }
+.ri-menu-4-line:before { content: "\eef1"; }
+.ri-menu-5-fill:before { content: "\eef2"; }
+.ri-menu-5-line:before { content: "\eef3"; }
+.ri-menu-add-fill:before { content: "\eef4"; }
+.ri-menu-add-line:before { content: "\eef5"; }
+.ri-menu-fill:before { content: "\eef6"; }
+.ri-menu-line:before { content: "\eef7"; }
+.ri-message-2-fill:before { content: "\eef8"; }
+.ri-message-2-line:before { content: "\eef9"; }
+.ri-message-3-fill:before { content: "\eefa"; }
+.ri-message-3-line:before { content: "\eefb"; }
+.ri-message-fill:before { content: "\eefc"; }
+.ri-message-line:before { content: "\eefd"; }
+.ri-messenger-fill:before { content: "\eefe"; }
+.ri-messenger-line:before { content: "\eeff"; }
+.ri-meteor-fill:before { content: "\ef00"; }
+.ri-meteor-line:before { content: "\ef01"; }
+.ri-mic-2-fill:before { content: "\ef02"; }
+.ri-mic-2-line:before { content: "\ef03"; }
+.ri-mic-fill:before { content: "\ef04"; }
+.ri-mic-line:before { content: "\ef05"; }
+.ri-mic-off-fill:before { content: "\ef06"; }
+.ri-mic-off-line:before { content: "\ef07"; }
+.ri-mickey-fill:before { content: "\ef08"; }
+.ri-mickey-line:before { content: "\ef09"; }
+.ri-mini-program-fill:before { content: "\ef0a"; }
+.ri-mini-program-line:before { content: "\ef0b"; }
+.ri-mist-fill:before { content: "\ef0c"; }
+.ri-mist-line:before { content: "\ef0d"; }
+.ri-money-cny-box-fill:before { content: "\ef0e"; }
+.ri-money-cny-box-line:before { content: "\ef0f"; }
+.ri-money-cny-circle-fill:before { content: "\ef10"; }
+.ri-money-cny-circle-line:before { content: "\ef11"; }
+.ri-money-dollar-box-fill:before { content: "\ef12"; }
+.ri-money-dollar-box-line:before { content: "\ef13"; }
+.ri-money-dollar-circle-fill:before { content: "\ef14"; }
+.ri-money-dollar-circle-line:before { content: "\ef15"; }
+.ri-money-euro-box-fill:before { content: "\ef16"; }
+.ri-money-euro-box-line:before { content: "\ef17"; }
+.ri-money-euro-circle-fill:before { content: "\ef18"; }
+.ri-money-euro-circle-line:before { content: "\ef19"; }
+.ri-money-pound-box-fill:before { content: "\ef1a"; }
+.ri-money-pound-box-line:before { content: "\ef1b"; }
+.ri-money-pound-circle-fill:before { content: "\ef1c"; }
+.ri-money-pound-circle-line:before { content: "\ef1d"; }
+.ri-moon-clear-fill:before { content: "\ef1e"; }
+.ri-moon-clear-line:before { content: "\ef1f"; }
+.ri-moon-cloudy-fill:before { content: "\ef20"; }
+.ri-moon-cloudy-line:before { content: "\ef21"; }
+.ri-moon-fill:before { content: "\ef22"; }
+.ri-moon-foggy-fill:before { content: "\ef23"; }
+.ri-moon-foggy-line:before { content: "\ef24"; }
+.ri-moon-line:before { content: "\ef25"; }
+.ri-more-2-fill:before { content: "\ef26"; }
+.ri-more-2-line:before { content: "\ef27"; }
+.ri-more-fill:before { content: "\ef28"; }
+.ri-more-line:before { content: "\ef29"; }
+.ri-motorbike-fill:before { content: "\ef2a"; }
+.ri-motorbike-line:before { content: "\ef2b"; }
+.ri-mouse-fill:before { content: "\ef2c"; }
+.ri-mouse-line:before { content: "\ef2d"; }
+.ri-movie-2-fill:before { content: "\ef2e"; }
+.ri-movie-2-line:before { content: "\ef2f"; }
+.ri-movie-fill:before { content: "\ef30"; }
+.ri-movie-line:before { content: "\ef31"; }
+.ri-music-2-fill:before { content: "\ef32"; }
+.ri-music-2-line:before { content: "\ef33"; }
+.ri-music-fill:before { content: "\ef34"; }
+.ri-music-line:before { content: "\ef35"; }
+.ri-mv-fill:before { content: "\ef36"; }
+.ri-mv-line:before { content: "\ef37"; }
+.ri-navigation-fill:before { content: "\ef38"; }
+.ri-navigation-line:before { content: "\ef39"; }
+.ri-netease-cloud-music-fill:before { content: "\ef3a"; }
+.ri-netease-cloud-music-line:before { content: "\ef3b"; }
+.ri-netflix-fill:before { content: "\ef3c"; }
+.ri-netflix-line:before { content: "\ef3d"; }
+.ri-newspaper-fill:before { content: "\ef3e"; }
+.ri-newspaper-line:before { content: "\ef3f"; }
+.ri-notification-2-fill:before { content: "\ef40"; }
+.ri-notification-2-line:before { content: "\ef41"; }
+.ri-notification-3-fill:before { content: "\ef42"; }
+.ri-notification-3-line:before { content: "\ef43"; }
+.ri-notification-4-fill:before { content: "\ef44"; }
+.ri-notification-4-line:before { content: "\ef45"; }
+.ri-notification-badge-fill:before { content: "\ef46"; }
+.ri-notification-badge-line:before { content: "\ef47"; }
+.ri-notification-fill:before { content: "\ef48"; }
+.ri-notification-line:before { content: "\ef49"; }
+.ri-notification-off-fill:before { content: "\ef4a"; }
+.ri-notification-off-line:before { content: "\ef4b"; }
+.ri-npmjs-fill:before { content: "\ef4c"; }
+.ri-npmjs-line:before { content: "\ef4d"; }
+.ri-number-0:before { content: "\ef4e"; }
+.ri-number-1:before { content: "\ef4f"; }
+.ri-number-2:before { content: "\ef50"; }
+.ri-number-3:before { content: "\ef51"; }
+.ri-number-4:before { content: "\ef52"; }
+.ri-number-5:before { content: "\ef53"; }
+.ri-number-6:before { content: "\ef54"; }
+.ri-number-7:before { content: "\ef55"; }
+.ri-number-8:before { content: "\ef56"; }
+.ri-number-9:before { content: "\ef57"; }
+.ri-numbers-fill:before { content: "\ef58"; }
+.ri-numbers-line:before { content: "\ef59"; }
+.ri-oil-fill:before { content: "\ef5a"; }
+.ri-oil-line:before { content: "\ef5b"; }
+.ri-omega:before { content: "\ef5c"; }
+.ri-open-arm-fill:before { content: "\ef5d"; }
+.ri-open-arm-line:before { content: "\ef5e"; }
+.ri-open-source-fill:before { content: "\ef5f"; }
+.ri-open-source-line:before { content: "\ef60"; }
+.ri-opera-fill:before { content: "\ef61"; }
+.ri-opera-line:before { content: "\ef62"; }
+.ri-order-play-fill:before { content: "\ef63"; }
+.ri-order-play-line:before { content: "\ef64"; }
+.ri-outlet-2-fill:before { content: "\ef65"; }
+.ri-outlet-2-line:before { content: "\ef66"; }
+.ri-outlet-fill:before { content: "\ef67"; }
+.ri-outlet-line:before { content: "\ef68"; }
+.ri-page-separator:before { content: "\ef69"; }
+.ri-pages-fill:before { content: "\ef6a"; }
+.ri-pages-line:before { content: "\ef6b"; }
+.ri-paint-brush-fill:before { content: "\ef6c"; }
+.ri-paint-brush-line:before { content: "\ef6d"; }
+.ri-paint-fill:before { content: "\ef6e"; }
+.ri-paint-line:before { content: "\ef6f"; }
+.ri-palette-fill:before { content: "\ef70"; }
+.ri-palette-line:before { content: "\ef71"; }
+.ri-pantone-fill:before { content: "\ef72"; }
+.ri-pantone-line:before { content: "\ef73"; }
+.ri-paragraph:before { content: "\ef74"; }
+.ri-parent-fill:before { content: "\ef75"; }
+.ri-parent-line:before { content: "\ef76"; }
+.ri-parentheses-fill:before { content: "\ef77"; }
+.ri-parentheses-line:before { content: "\ef78"; }
+.ri-parking-box-fill:before { content: "\ef79"; }
+.ri-parking-box-line:before { content: "\ef7a"; }
+.ri-parking-fill:before { content: "\ef7b"; }
+.ri-parking-line:before { content: "\ef7c"; }
+.ri-passport-fill:before { content: "\ef7d"; }
+.ri-passport-line:before { content: "\ef7e"; }
+.ri-patreon-fill:before { content: "\ef7f"; }
+.ri-patreon-line:before { content: "\ef80"; }
+.ri-pause-circle-fill:before { content: "\ef81"; }
+.ri-pause-circle-line:before { content: "\ef82"; }
+.ri-pause-fill:before { content: "\ef83"; }
+.ri-pause-line:before { content: "\ef84"; }
+.ri-pause-mini-fill:before { content: "\ef85"; }
+.ri-pause-mini-line:before { content: "\ef86"; }
+.ri-paypal-fill:before { content: "\ef87"; }
+.ri-paypal-line:before { content: "\ef88"; }
+.ri-pen-nib-fill:before { content: "\ef89"; }
+.ri-pen-nib-line:before { content: "\ef8a"; }
+.ri-pencil-fill:before { content: "\ef8b"; }
+.ri-pencil-line:before { content: "\ef8c"; }
+.ri-pencil-ruler-2-fill:before { content: "\ef8d"; }
+.ri-pencil-ruler-2-line:before { content: "\ef8e"; }
+.ri-pencil-ruler-fill:before { content: "\ef8f"; }
+.ri-pencil-ruler-line:before { content: "\ef90"; }
+.ri-percent-fill:before { content: "\ef91"; }
+.ri-percent-line:before { content: "\ef92"; }
+.ri-phone-camera-fill:before { content: "\ef93"; }
+.ri-phone-camera-line:before { content: "\ef94"; }
+.ri-phone-fill:before { content: "\ef95"; }
+.ri-phone-find-fill:before { content: "\ef96"; }
+.ri-phone-find-line:before { content: "\ef97"; }
+.ri-phone-line:before { content: "\ef98"; }
+.ri-phone-lock-fill:before { content: "\ef99"; }
+.ri-phone-lock-line:before { content: "\ef9a"; }
+.ri-picture-in-picture-2-fill:before { content: "\ef9b"; }
+.ri-picture-in-picture-2-line:before { content: "\ef9c"; }
+.ri-picture-in-picture-exit-fill:before { content: "\ef9d"; }
+.ri-picture-in-picture-exit-line:before { content: "\ef9e"; }
+.ri-picture-in-picture-fill:before { content: "\ef9f"; }
+.ri-picture-in-picture-line:before { content: "\efa0"; }
+.ri-pie-chart-2-fill:before { content: "\efa1"; }
+.ri-pie-chart-2-line:before { content: "\efa2"; }
+.ri-pie-chart-box-fill:before { content: "\efa3"; }
+.ri-pie-chart-box-line:before { content: "\efa4"; }
+.ri-pie-chart-fill:before { content: "\efa5"; }
+.ri-pie-chart-line:before { content: "\efa6"; }
+.ri-pin-distance-fill:before { content: "\efa7"; }
+.ri-pin-distance-line:before { content: "\efa8"; }
+.ri-ping-pong-fill:before { content: "\efa9"; }
+.ri-ping-pong-line:before { content: "\efaa"; }
+.ri-pinterest-fill:before { content: "\efab"; }
+.ri-pinterest-line:before { content: "\efac"; }
+.ri-pinyin-input:before { content: "\efad"; }
+.ri-pixelfed-fill:before { content: "\efae"; }
+.ri-pixelfed-line:before { content: "\efaf"; }
+.ri-plane-fill:before { content: "\efb0"; }
+.ri-plane-line:before { content: "\efb1"; }
+.ri-plant-fill:before { content: "\efb2"; }
+.ri-plant-line:before { content: "\efb3"; }
+.ri-play-circle-fill:before { content: "\efb4"; }
+.ri-play-circle-line:before { content: "\efb5"; }
+.ri-play-fill:before { content: "\efb6"; }
+.ri-play-line:before { content: "\efb7"; }
+.ri-play-list-add-fill:before { content: "\efb8"; }
+.ri-play-list-add-line:before { content: "\efb9"; }
+.ri-play-list-fill:before { content: "\efba"; }
+.ri-play-list-line:before { content: "\efbb"; }
+.ri-play-mini-fill:before { content: "\efbc"; }
+.ri-play-mini-line:before { content: "\efbd"; }
+.ri-playstation-fill:before { content: "\efbe"; }
+.ri-playstation-line:before { content: "\efbf"; }
+.ri-plug-2-fill:before { content: "\efc0"; }
+.ri-plug-2-line:before { content: "\efc1"; }
+.ri-plug-fill:before { content: "\efc2"; }
+.ri-plug-line:before { content: "\efc3"; }
+.ri-polaroid-2-fill:before { content: "\efc4"; }
+.ri-polaroid-2-line:before { content: "\efc5"; }
+.ri-polaroid-fill:before { content: "\efc6"; }
+.ri-polaroid-line:before { content: "\efc7"; }
+.ri-police-car-fill:before { content: "\efc8"; }
+.ri-police-car-line:before { content: "\efc9"; }
+.ri-price-tag-2-fill:before { content: "\efca"; }
+.ri-price-tag-2-line:before { content: "\efcb"; }
+.ri-price-tag-3-fill:before { content: "\efcc"; }
+.ri-price-tag-3-line:before { content: "\efcd"; }
+.ri-price-tag-fill:before { content: "\efce"; }
+.ri-price-tag-line:before { content: "\efcf"; }
+.ri-printer-cloud-fill:before { content: "\efd0"; }
+.ri-printer-cloud-line:before { content: "\efd1"; }
+.ri-printer-fill:before { content: "\efd2"; }
+.ri-printer-line:before { content: "\efd3"; }
+.ri-product-hunt-fill:before { content: "\efd4"; }
+.ri-product-hunt-line:before { content: "\efd5"; }
+.ri-profile-fill:before { content: "\efd6"; }
+.ri-profile-line:before { content: "\efd7"; }
+.ri-projector-2-fill:before { content: "\efd8"; }
+.ri-projector-2-line:before { content: "\efd9"; }
+.ri-projector-fill:before { content: "\efda"; }
+.ri-projector-line:before { content: "\efdb"; }
+.ri-pushpin-2-fill:before { content: "\efdc"; }
+.ri-pushpin-2-line:before { content: "\efdd"; }
+.ri-pushpin-fill:before { content: "\efde"; }
+.ri-pushpin-line:before { content: "\efdf"; }
+.ri-qq-fill:before { content: "\efe0"; }
+.ri-qq-line:before { content: "\efe1"; }
+.ri-qr-code-fill:before { content: "\efe2"; }
+.ri-qr-code-line:before { content: "\efe3"; }
+.ri-qr-scan-2-fill:before { content: "\efe4"; }
+.ri-qr-scan-2-line:before { content: "\efe5"; }
+.ri-qr-scan-fill:before { content: "\efe6"; }
+.ri-qr-scan-line:before { content: "\efe7"; }
+.ri-question-answer-fill:before { content: "\efe8"; }
+.ri-question-answer-line:before { content: "\efe9"; }
+.ri-question-fill:before { content: "\efea"; }
+.ri-question-line:before { content: "\efeb"; }
+.ri-questionnaire-fill:before { content: "\efec"; }
+.ri-questionnaire-line:before { content: "\efed"; }
+.ri-quill-pen-fill:before { content: "\efee"; }
+.ri-quill-pen-line:before { content: "\efef"; }
+.ri-radar-fill:before { content: "\eff0"; }
+.ri-radar-line:before { content: "\eff1"; }
+.ri-radio-2-fill:before { content: "\eff2"; }
+.ri-radio-2-line:before { content: "\eff3"; }
+.ri-radio-button-fill:before { content: "\eff4"; }
+.ri-radio-button-line:before { content: "\eff5"; }
+.ri-radio-fill:before { content: "\eff6"; }
+.ri-radio-line:before { content: "\eff7"; }
+.ri-rainbow-fill:before { content: "\eff8"; }
+.ri-rainbow-line:before { content: "\eff9"; }
+.ri-rainy-fill:before { content: "\effa"; }
+.ri-rainy-line:before { content: "\effb"; }
+.ri-reactjs-fill:before { content: "\effc"; }
+.ri-reactjs-line:before { content: "\effd"; }
+.ri-record-circle-fill:before { content: "\effe"; }
+.ri-record-circle-line:before { content: "\efff"; }
+.ri-record-mail-fill:before { content: "\f000"; }
+.ri-record-mail-line:before { content: "\f001"; }
+.ri-recycle-fill:before { content: "\f002"; }
+.ri-recycle-line:before { content: "\f003"; }
+.ri-red-packet-fill:before { content: "\f004"; }
+.ri-red-packet-line:before { content: "\f005"; }
+.ri-reddit-fill:before { content: "\f006"; }
+.ri-reddit-line:before { content: "\f007"; }
+.ri-refresh-fill:before { content: "\f008"; }
+.ri-refresh-line:before { content: "\f009"; }
+.ri-refund-2-fill:before { content: "\f00a"; }
+.ri-refund-2-line:before { content: "\f00b"; }
+.ri-refund-fill:before { content: "\f00c"; }
+.ri-refund-line:before { content: "\f00d"; }
+.ri-registered-fill:before { content: "\f00e"; }
+.ri-registered-line:before { content: "\f00f"; }
+.ri-remixicon-fill:before { content: "\f010"; }
+.ri-remixicon-line:before { content: "\f011"; }
+.ri-remote-control-2-fill:before { content: "\f012"; }
+.ri-remote-control-2-line:before { content: "\f013"; }
+.ri-remote-control-fill:before { content: "\f014"; }
+.ri-remote-control-line:before { content: "\f015"; }
+.ri-repeat-2-fill:before { content: "\f016"; }
+.ri-repeat-2-line:before { content: "\f017"; }
+.ri-repeat-fill:before { content: "\f018"; }
+.ri-repeat-line:before { content: "\f019"; }
+.ri-repeat-one-fill:before { content: "\f01a"; }
+.ri-repeat-one-line:before { content: "\f01b"; }
+.ri-reply-fill:before { content: "\f01c"; }
+.ri-reply-line:before { content: "\f01d"; }
+.ri-reserved-fill:before { content: "\f01e"; }
+.ri-reserved-line:before { content: "\f01f"; }
+.ri-restart-fill:before { content: "\f020"; }
+.ri-restart-line:before { content: "\f021"; }
+.ri-restaurant-2-fill:before { content: "\f022"; }
+.ri-restaurant-2-line:before { content: "\f023"; }
+.ri-restaurant-fill:before { content: "\f024"; }
+.ri-restaurant-line:before { content: "\f025"; }
+.ri-rewind-fill:before { content: "\f026"; }
+.ri-rewind-line:before { content: "\f027"; }
+.ri-rewind-mini-fill:before { content: "\f028"; }
+.ri-rewind-mini-line:before { content: "\f029"; }
+.ri-rhythm-fill:before { content: "\f02a"; }
+.ri-rhythm-line:before { content: "\f02b"; }
+.ri-riding-fill:before { content: "\f02c"; }
+.ri-riding-line:before { content: "\f02d"; }
+.ri-road-map-fill:before { content: "\f02e"; }
+.ri-road-map-line:before { content: "\f02f"; }
+.ri-roadster-fill:before { content: "\f030"; }
+.ri-roadster-line:before { content: "\f031"; }
+.ri-robot-fill:before { content: "\f032"; }
+.ri-robot-line:before { content: "\f033"; }
+.ri-rocket-2-fill:before { content: "\f034"; }
+.ri-rocket-2-line:before { content: "\f035"; }
+.ri-rocket-fill:before { content: "\f036"; }
+.ri-rocket-line:before { content: "\f037"; }
+.ri-rotate-lock-fill:before { content: "\f038"; }
+.ri-rotate-lock-line:before { content: "\f039"; }
+.ri-route-fill:before { content: "\f03a"; }
+.ri-route-line:before { content: "\f03b"; }
+.ri-router-fill:before { content: "\f03c"; }
+.ri-router-line:before { content: "\f03d"; }
+.ri-rss-fill:before { content: "\f03e"; }
+.ri-rss-line:before { content: "\f03f"; }
+.ri-ruler-2-fill:before { content: "\f040"; }
+.ri-ruler-2-line:before { content: "\f041"; }
+.ri-ruler-fill:before { content: "\f042"; }
+.ri-ruler-line:before { content: "\f043"; }
+.ri-run-fill:before { content: "\f044"; }
+.ri-run-line:before { content: "\f045"; }
+.ri-safari-fill:before { content: "\f046"; }
+.ri-safari-line:before { content: "\f047"; }
+.ri-safe-2-fill:before { content: "\f048"; }
+.ri-safe-2-line:before { content: "\f049"; }
+.ri-safe-fill:before { content: "\f04a"; }
+.ri-safe-line:before { content: "\f04b"; }
+.ri-sailboat-fill:before { content: "\f04c"; }
+.ri-sailboat-line:before { content: "\f04d"; }
+.ri-save-2-fill:before { content: "\f04e"; }
+.ri-save-2-line:before { content: "\f04f"; }
+.ri-save-3-fill:before { content: "\f050"; }
+.ri-save-3-line:before { content: "\f051"; }
+.ri-save-fill:before { content: "\f052"; }
+.ri-save-line:before { content: "\f053"; }
+.ri-scales-2-fill:before { content: "\f054"; }
+.ri-scales-2-line:before { content: "\f055"; }
+.ri-scales-fill:before { content: "\f056"; }
+.ri-scales-line:before { content: "\f057"; }
+.ri-scan-2-fill:before { content: "\f058"; }
+.ri-scan-2-line:before { content: "\f059"; }
+.ri-scan-fill:before { content: "\f05a"; }
+.ri-scan-line:before { content: "\f05b"; }
+.ri-scissors-2-fill:before { content: "\f05c"; }
+.ri-scissors-2-line:before { content: "\f05d"; }
+.ri-scissors-cut-fill:before { content: "\f05e"; }
+.ri-scissors-cut-line:before { content: "\f05f"; }
+.ri-scissors-fill:before { content: "\f060"; }
+.ri-scissors-line:before { content: "\f061"; }
+.ri-screenshot-2-fill:before { content: "\f062"; }
+.ri-screenshot-2-line:before { content: "\f063"; }
+.ri-screenshot-fill:before { content: "\f064"; }
+.ri-screenshot-line:before { content: "\f065"; }
+.ri-sd-card-fill:before { content: "\f066"; }
+.ri-sd-card-line:before { content: "\f067"; }
+.ri-sd-card-mini-fill:before { content: "\f068"; }
+.ri-sd-card-mini-line:before { content: "\f069"; }
+.ri-search-2-fill:before { content: "\f06a"; }
+.ri-search-2-line:before { content: "\f06b"; }
+.ri-search-eye-fill:before { content: "\f06c"; }
+.ri-search-eye-line:before { content: "\f06d"; }
+.ri-search-fill:before { content: "\f06e"; }
+.ri-search-line:before { content: "\f06f"; }
+.ri-secure-payment-fill:before { content: "\f070"; }
+.ri-secure-payment-line:before { content: "\f071"; }
+.ri-send-backward:before { content: "\f072"; }
+.ri-send-plane-2-fill:before { content: "\f073"; }
+.ri-send-plane-2-line:before { content: "\f074"; }
+.ri-send-plane-fill:before { content: "\f075"; }
+.ri-send-plane-line:before { content: "\f076"; }
+.ri-send-to-back:before { content: "\f077"; }
+.ri-sensor-fill:before { content: "\f078"; }
+.ri-sensor-line:before { content: "\f079"; }
+.ri-separator:before { content: "\f07a"; }
+.ri-server-fill:before { content: "\f07b"; }
+.ri-server-line:before { content: "\f07c"; }
+.ri-service-fill:before { content: "\f07d"; }
+.ri-service-line:before { content: "\f07e"; }
+.ri-settings-2-fill:before { content: "\f07f"; }
+.ri-settings-2-line:before { content: "\f080"; }
+.ri-settings-3-fill:before { content: "\f081"; }
+.ri-settings-3-line:before { content: "\f082"; }
+.ri-settings-4-fill:before { content: "\f083"; }
+.ri-settings-4-line:before { content: "\f084"; }
+.ri-settings-5-fill:before { content: "\f085"; }
+.ri-settings-5-line:before { content: "\f086"; }
+.ri-settings-6-fill:before { content: "\f087"; }
+.ri-settings-6-line:before { content: "\f088"; }
+.ri-settings-fill:before { content: "\f089"; }
+.ri-settings-line:before { content: "\f08a"; }
+.ri-shape-2-fill:before { content: "\f08b"; }
+.ri-shape-2-line:before { content: "\f08c"; }
+.ri-shape-fill:before { content: "\f08d"; }
+.ri-shape-line:before { content: "\f08e"; }
+.ri-share-box-fill:before { content: "\f08f"; }
+.ri-share-box-line:before { content: "\f090"; }
+.ri-share-circle-fill:before { content: "\f091"; }
+.ri-share-circle-line:before { content: "\f092"; }
+.ri-share-fill:before { content: "\f093"; }
+.ri-share-forward-2-fill:before { content: "\f094"; }
+.ri-share-forward-2-line:before { content: "\f095"; }
+.ri-share-forward-box-fill:before { content: "\f096"; }
+.ri-share-forward-box-line:before { content: "\f097"; }
+.ri-share-forward-fill:before { content: "\f098"; }
+.ri-share-forward-line:before { content: "\f099"; }
+.ri-share-line:before { content: "\f09a"; }
+.ri-shield-cross-fill:before { content: "\f09b"; }
+.ri-shield-cross-line:before { content: "\f09c"; }
+.ri-shield-fill:before { content: "\f09d"; }
+.ri-shield-flash-fill:before { content: "\f09e"; }
+.ri-shield-flash-line:before { content: "\f09f"; }
+.ri-shield-keyhole-fill:before { content: "\f0a0"; }
+.ri-shield-keyhole-line:before { content: "\f0a1"; }
+.ri-shield-line:before { content: "\f0a2"; }
+.ri-shield-star-fill:before { content: "\f0a3"; }
+.ri-shield-star-line:before { content: "\f0a4"; }
+.ri-shield-user-fill:before { content: "\f0a5"; }
+.ri-shield-user-line:before { content: "\f0a6"; }
+.ri-ship-2-fill:before { content: "\f0a7"; }
+.ri-ship-2-line:before { content: "\f0a8"; }
+.ri-ship-fill:before { content: "\f0a9"; }
+.ri-ship-line:before { content: "\f0aa"; }
+.ri-shirt-fill:before { content: "\f0ab"; }
+.ri-shirt-line:before { content: "\f0ac"; }
+.ri-shopping-bag-2-fill:before { content: "\f0ad"; }
+.ri-shopping-bag-2-line:before { content: "\f0ae"; }
+.ri-shopping-bag-3-fill:before { content: "\f0af"; }
+.ri-shopping-bag-3-line:before { content: "\f0b0"; }
+.ri-shopping-bag-fill:before { content: "\f0b1"; }
+.ri-shopping-bag-line:before { content: "\f0b2"; }
+.ri-shopping-basket-2-fill:before { content: "\f0b3"; }
+.ri-shopping-basket-2-line:before { content: "\f0b4"; }
+.ri-shopping-basket-fill:before { content: "\f0b5"; }
+.ri-shopping-basket-line:before { content: "\f0b6"; }
+.ri-shopping-cart-2-fill:before { content: "\f0b7"; }
+.ri-shopping-cart-2-line:before { content: "\f0b8"; }
+.ri-shopping-cart-fill:before { content: "\f0b9"; }
+.ri-shopping-cart-line:before { content: "\f0ba"; }
+.ri-showers-fill:before { content: "\f0bb"; }
+.ri-showers-line:before { content: "\f0bc"; }
+.ri-shuffle-fill:before { content: "\f0bd"; }
+.ri-shuffle-line:before { content: "\f0be"; }
+.ri-shut-down-fill:before { content: "\f0bf"; }
+.ri-shut-down-line:before { content: "\f0c0"; }
+.ri-side-bar-fill:before { content: "\f0c1"; }
+.ri-side-bar-line:before { content: "\f0c2"; }
+.ri-signal-tower-fill:before { content: "\f0c3"; }
+.ri-signal-tower-line:before { content: "\f0c4"; }
+.ri-signal-wifi-1-fill:before { content: "\f0c5"; }
+.ri-signal-wifi-1-line:before { content: "\f0c6"; }
+.ri-signal-wifi-2-fill:before { content: "\f0c7"; }
+.ri-signal-wifi-2-line:before { content: "\f0c8"; }
+.ri-signal-wifi-3-fill:before { content: "\f0c9"; }
+.ri-signal-wifi-3-line:before { content: "\f0ca"; }
+.ri-signal-wifi-error-fill:before { content: "\f0cb"; }
+.ri-signal-wifi-error-line:before { content: "\f0cc"; }
+.ri-signal-wifi-fill:before { content: "\f0cd"; }
+.ri-signal-wifi-line:before { content: "\f0ce"; }
+.ri-signal-wifi-off-fill:before { content: "\f0cf"; }
+.ri-signal-wifi-off-line:before { content: "\f0d0"; }
+.ri-sim-card-2-fill:before { content: "\f0d1"; }
+.ri-sim-card-2-line:before { content: "\f0d2"; }
+.ri-sim-card-fill:before { content: "\f0d3"; }
+.ri-sim-card-line:before { content: "\f0d4"; }
+.ri-single-quotes-l:before { content: "\f0d5"; }
+.ri-single-quotes-r:before { content: "\f0d6"; }
+.ri-sip-fill:before { content: "\f0d7"; }
+.ri-sip-line:before { content: "\f0d8"; }
+.ri-skip-back-fill:before { content: "\f0d9"; }
+.ri-skip-back-line:before { content: "\f0da"; }
+.ri-skip-back-mini-fill:before { content: "\f0db"; }
+.ri-skip-back-mini-line:before { content: "\f0dc"; }
+.ri-skip-forward-fill:before { content: "\f0dd"; }
+.ri-skip-forward-line:before { content: "\f0de"; }
+.ri-skip-forward-mini-fill:before { content: "\f0df"; }
+.ri-skip-forward-mini-line:before { content: "\f0e0"; }
+.ri-skull-2-fill:before { content: "\f0e1"; }
+.ri-skull-2-line:before { content: "\f0e2"; }
+.ri-skull-fill:before { content: "\f0e3"; }
+.ri-skull-line:before { content: "\f0e4"; }
+.ri-skype-fill:before { content: "\f0e5"; }
+.ri-skype-line:before { content: "\f0e6"; }
+.ri-slack-fill:before { content: "\f0e7"; }
+.ri-slack-line:before { content: "\f0e8"; }
+.ri-slice-fill:before { content: "\f0e9"; }
+.ri-slice-line:before { content: "\f0ea"; }
+.ri-slideshow-2-fill:before { content: "\f0eb"; }
+.ri-slideshow-2-line:before { content: "\f0ec"; }
+.ri-slideshow-3-fill:before { content: "\f0ed"; }
+.ri-slideshow-3-line:before { content: "\f0ee"; }
+.ri-slideshow-4-fill:before { content: "\f0ef"; }
+.ri-slideshow-4-line:before { content: "\f0f0"; }
+.ri-slideshow-fill:before { content: "\f0f1"; }
+.ri-slideshow-line:before { content: "\f0f2"; }
+.ri-smartphone-fill:before { content: "\f0f3"; }
+.ri-smartphone-line:before { content: "\f0f4"; }
+.ri-snapchat-fill:before { content: "\f0f5"; }
+.ri-snapchat-line:before { content: "\f0f6"; }
+.ri-snowy-fill:before { content: "\f0f7"; }
+.ri-snowy-line:before { content: "\f0f8"; }
+.ri-sort-asc:before { content: "\f0f9"; }
+.ri-sort-desc:before { content: "\f0fa"; }
+.ri-sound-module-fill:before { content: "\f0fb"; }
+.ri-sound-module-line:before { content: "\f0fc"; }
+.ri-soundcloud-fill:before { content: "\f0fd"; }
+.ri-soundcloud-line:before { content: "\f0fe"; }
+.ri-space-ship-fill:before { content: "\f0ff"; }
+.ri-space-ship-line:before { content: "\f100"; }
+.ri-space:before { content: "\f101"; }
+.ri-spam-2-fill:before { content: "\f102"; }
+.ri-spam-2-line:before { content: "\f103"; }
+.ri-spam-3-fill:before { content: "\f104"; }
+.ri-spam-3-line:before { content: "\f105"; }
+.ri-spam-fill:before { content: "\f106"; }
+.ri-spam-line:before { content: "\f107"; }
+.ri-speaker-2-fill:before { content: "\f108"; }
+.ri-speaker-2-line:before { content: "\f109"; }
+.ri-speaker-3-fill:before { content: "\f10a"; }
+.ri-speaker-3-line:before { content: "\f10b"; }
+.ri-speaker-fill:before { content: "\f10c"; }
+.ri-speaker-line:before { content: "\f10d"; }
+.ri-spectrum-fill:before { content: "\f10e"; }
+.ri-spectrum-line:before { content: "\f10f"; }
+.ri-speed-fill:before { content: "\f110"; }
+.ri-speed-line:before { content: "\f111"; }
+.ri-speed-mini-fill:before { content: "\f112"; }
+.ri-speed-mini-line:before { content: "\f113"; }
+.ri-spotify-fill:before { content: "\f114"; }
+.ri-spotify-line:before { content: "\f115"; }
+.ri-spy-fill:before { content: "\f116"; }
+.ri-spy-line:before { content: "\f117"; }
+.ri-stack-fill:before { content: "\f118"; }
+.ri-stack-line:before { content: "\f119"; }
+.ri-stack-overflow-fill:before { content: "\f11a"; }
+.ri-stack-overflow-line:before { content: "\f11b"; }
+.ri-stackshare-fill:before { content: "\f11c"; }
+.ri-stackshare-line:before { content: "\f11d"; }
+.ri-star-fill:before { content: "\f11e"; }
+.ri-star-half-fill:before { content: "\f11f"; }
+.ri-star-half-line:before { content: "\f120"; }
+.ri-star-half-s-fill:before { content: "\f121"; }
+.ri-star-half-s-line:before { content: "\f122"; }
+.ri-star-line:before { content: "\f123"; }
+.ri-star-s-fill:before { content: "\f124"; }
+.ri-star-s-line:before { content: "\f125"; }
+.ri-star-smile-fill:before { content: "\f126"; }
+.ri-star-smile-line:before { content: "\f127"; }
+.ri-steam-fill:before { content: "\f128"; }
+.ri-steam-line:before { content: "\f129"; }
+.ri-steering-2-fill:before { content: "\f12a"; }
+.ri-steering-2-line:before { content: "\f12b"; }
+.ri-steering-fill:before { content: "\f12c"; }
+.ri-steering-line:before { content: "\f12d"; }
+.ri-sticky-note-2-fill:before { content: "\f12e"; }
+.ri-sticky-note-2-line:before { content: "\f12f"; }
+.ri-sticky-note-fill:before { content: "\f130"; }
+.ri-sticky-note-line:before { content: "\f131"; }
+.ri-stock-fill:before { content: "\f132"; }
+.ri-stock-line:before { content: "\f133"; }
+.ri-stop-circle-fill:before { content: "\f134"; }
+.ri-stop-circle-line:before { content: "\f135"; }
+.ri-stop-fill:before { content: "\f136"; }
+.ri-stop-line:before { content: "\f137"; }
+.ri-stop-mini-fill:before { content: "\f138"; }
+.ri-stop-mini-line:before { content: "\f139"; }
+.ri-store-2-fill:before { content: "\f13a"; }
+.ri-store-2-line:before { content: "\f13b"; }
+.ri-store-3-fill:before { content: "\f13c"; }
+.ri-store-3-line:before { content: "\f13d"; }
+.ri-store-fill:before { content: "\f13e"; }
+.ri-store-line:before { content: "\f13f"; }
+.ri-strikethrough-2:before { content: "\f140"; }
+.ri-strikethrough:before { content: "\f141"; }
+.ri-subscript-2:before { content: "\f142"; }
+.ri-subscript:before { content: "\f143"; }
+.ri-subtract-fill:before { content: "\f144"; }
+.ri-subtract-line:before { content: "\f145"; }
+.ri-subway-fill:before { content: "\f146"; }
+.ri-subway-line:before { content: "\f147"; }
+.ri-subway-wifi-fill:before { content: "\f148"; }
+.ri-subway-wifi-line:before { content: "\f149"; }
+.ri-suitcase-2-fill:before { content: "\f14a"; }
+.ri-suitcase-2-line:before { content: "\f14b"; }
+.ri-suitcase-3-fill:before { content: "\f14c"; }
+.ri-suitcase-3-line:before { content: "\f14d"; }
+.ri-suitcase-fill:before { content: "\f14e"; }
+.ri-suitcase-line:before { content: "\f14f"; }
+.ri-sun-cloudy-fill:before { content: "\f150"; }
+.ri-sun-cloudy-line:before { content: "\f151"; }
+.ri-sun-fill:before { content: "\f152"; }
+.ri-sun-foggy-fill:before { content: "\f153"; }
+.ri-sun-foggy-line:before { content: "\f154"; }
+.ri-sun-line:before { content: "\f155"; }
+.ri-superscript-2:before { content: "\f156"; }
+.ri-superscript:before { content: "\f157"; }
+.ri-surround-sound-fill:before { content: "\f158"; }
+.ri-surround-sound-line:before { content: "\f159"; }
+.ri-survey-fill:before { content: "\f15a"; }
+.ri-survey-line:before { content: "\f15b"; }
+.ri-swap-box-fill:before { content: "\f15c"; }
+.ri-swap-box-line:before { content: "\f15d"; }
+.ri-swap-fill:before { content: "\f15e"; }
+.ri-swap-line:before { content: "\f15f"; }
+.ri-switch-fill:before { content: "\f160"; }
+.ri-switch-line:before { content: "\f161"; }
+.ri-sword-fill:before { content: "\f162"; }
+.ri-sword-line:before { content: "\f163"; }
+.ri-t-box-fill:before { content: "\f164"; }
+.ri-t-box-line:before { content: "\f165"; }
+.ri-t-shirt-2-fill:before { content: "\f166"; }
+.ri-t-shirt-2-line:before { content: "\f167"; }
+.ri-t-shirt-air-fill:before { content: "\f168"; }
+.ri-t-shirt-air-line:before { content: "\f169"; }
+.ri-t-shirt-fill:before { content: "\f16a"; }
+.ri-t-shirt-line:before { content: "\f16b"; }
+.ri-table-2:before { content: "\f16c"; }
+.ri-table-alt-fill:before { content: "\f16d"; }
+.ri-table-alt-line:before { content: "\f16e"; }
+.ri-table-fill:before { content: "\f16f"; }
+.ri-table-line:before { content: "\f170"; }
+.ri-tablet-fill:before { content: "\f171"; }
+.ri-tablet-line:before { content: "\f172"; }
+.ri-takeaway-fill:before { content: "\f173"; }
+.ri-takeaway-line:before { content: "\f174"; }
+.ri-taobao-fill:before { content: "\f175"; }
+.ri-taobao-line:before { content: "\f176"; }
+.ri-tape-fill:before { content: "\f177"; }
+.ri-tape-line:before { content: "\f178"; }
+.ri-task-fill:before { content: "\f179"; }
+.ri-task-line:before { content: "\f17a"; }
+.ri-taxi-fill:before { content: "\f17b"; }
+.ri-taxi-line:before { content: "\f17c"; }
+.ri-taxi-wifi-fill:before { content: "\f17d"; }
+.ri-taxi-wifi-line:before { content: "\f17e"; }
+.ri-team-fill:before { content: "\f17f"; }
+.ri-team-line:before { content: "\f180"; }
+.ri-telegram-fill:before { content: "\f181"; }
+.ri-telegram-line:before { content: "\f182"; }
+.ri-temp-cold-fill:before { content: "\f183"; }
+.ri-temp-cold-line:before { content: "\f184"; }
+.ri-temp-hot-fill:before { content: "\f185"; }
+.ri-temp-hot-line:before { content: "\f186"; }
+.ri-terminal-box-fill:before { content: "\f187"; }
+.ri-terminal-box-line:before { content: "\f188"; }
+.ri-terminal-fill:before { content: "\f189"; }
+.ri-terminal-line:before { content: "\f18a"; }
+.ri-terminal-window-fill:before { content: "\f18b"; }
+.ri-terminal-window-line:before { content: "\f18c"; }
+.ri-text-direction-l:before { content: "\f18d"; }
+.ri-text-direction-r:before { content: "\f18e"; }
+.ri-text-spacing:before { content: "\f18f"; }
+.ri-text-wrap:before { content: "\f190"; }
+.ri-text:before { content: "\f191"; }
+.ri-thumb-down-fill:before { content: "\f192"; }
+.ri-thumb-down-line:before { content: "\f193"; }
+.ri-thumb-up-fill:before { content: "\f194"; }
+.ri-thumb-up-line:before { content: "\f195"; }
+.ri-thunderstorms-fill:before { content: "\f196"; }
+.ri-thunderstorms-line:before { content: "\f197"; }
+.ri-ticket-2-fill:before { content: "\f198"; }
+.ri-ticket-2-line:before { content: "\f199"; }
+.ri-ticket-fill:before { content: "\f19a"; }
+.ri-ticket-line:before { content: "\f19b"; }
+.ri-time-fill:before { content: "\f19c"; }
+.ri-time-line:before { content: "\f19d"; }
+.ri-timer-2-fill:before { content: "\f19e"; }
+.ri-timer-2-line:before { content: "\f19f"; }
+.ri-timer-fill:before { content: "\f1a0"; }
+.ri-timer-flash-fill:before { content: "\f1a1"; }
+.ri-timer-flash-line:before { content: "\f1a2"; }
+.ri-timer-line:before { content: "\f1a3"; }
+.ri-todo-fill:before { content: "\f1a4"; }
+.ri-todo-line:before { content: "\f1a5"; }
+.ri-toggle-fill:before { content: "\f1a6"; }
+.ri-toggle-line:before { content: "\f1a7"; }
+.ri-tools-fill:before { content: "\f1a8"; }
+.ri-tools-line:before { content: "\f1a9"; }
+.ri-tornado-fill:before { content: "\f1aa"; }
+.ri-tornado-line:before { content: "\f1ab"; }
+.ri-trademark-fill:before { content: "\f1ac"; }
+.ri-trademark-line:before { content: "\f1ad"; }
+.ri-traffic-light-fill:before { content: "\f1ae"; }
+.ri-traffic-light-line:before { content: "\f1af"; }
+.ri-train-fill:before { content: "\f1b0"; }
+.ri-train-line:before { content: "\f1b1"; }
+.ri-train-wifi-fill:before { content: "\f1b2"; }
+.ri-train-wifi-line:before { content: "\f1b3"; }
+.ri-translate-2:before { content: "\f1b4"; }
+.ri-translate:before { content: "\f1b5"; }
+.ri-travesti-fill:before { content: "\f1b6"; }
+.ri-travesti-line:before { content: "\f1b7"; }
+.ri-treasure-map-fill:before { content: "\f1b8"; }
+.ri-treasure-map-line:before { content: "\f1b9"; }
+.ri-trello-fill:before { content: "\f1ba"; }
+.ri-trello-line:before { content: "\f1bb"; }
+.ri-trophy-fill:before { content: "\f1bc"; }
+.ri-trophy-line:before { content: "\f1bd"; }
+.ri-truck-fill:before { content: "\f1be"; }
+.ri-truck-line:before { content: "\f1bf"; }
+.ri-tumblr-fill:before { content: "\f1c0"; }
+.ri-tumblr-line:before { content: "\f1c1"; }
+.ri-tv-2-fill:before { content: "\f1c2"; }
+.ri-tv-2-line:before { content: "\f1c3"; }
+.ri-tv-fill:before { content: "\f1c4"; }
+.ri-tv-line:before { content: "\f1c5"; }
+.ri-twitch-fill:before { content: "\f1c6"; }
+.ri-twitch-line:before { content: "\f1c7"; }
+.ri-twitter-fill:before { content: "\f1c8"; }
+.ri-twitter-line:before { content: "\f1c9"; }
+.ri-typhoon-fill:before { content: "\f1ca"; }
+.ri-typhoon-line:before { content: "\f1cb"; }
+.ri-u-disk-fill:before { content: "\f1cc"; }
+.ri-u-disk-line:before { content: "\f1cd"; }
+.ri-ubuntu-fill:before { content: "\f1ce"; }
+.ri-ubuntu-line:before { content: "\f1cf"; }
+.ri-umbrella-fill:before { content: "\f1d0"; }
+.ri-umbrella-line:before { content: "\f1d1"; }
+.ri-underline:before { content: "\f1d2"; }
+.ri-uninstall-fill:before { content: "\f1d3"; }
+.ri-uninstall-line:before { content: "\f1d4"; }
+.ri-unsplash-fill:before { content: "\f1d5"; }
+.ri-unsplash-line:before { content: "\f1d6"; }
+.ri-upload-2-fill:before { content: "\f1d7"; }
+.ri-upload-2-line:before { content: "\f1d8"; }
+.ri-upload-cloud-2-fill:before { content: "\f1d9"; }
+.ri-upload-cloud-2-line:before { content: "\f1da"; }
+.ri-upload-cloud-fill:before { content: "\f1db"; }
+.ri-upload-cloud-line:before { content: "\f1dc"; }
+.ri-upload-fill:before { content: "\f1dd"; }
+.ri-upload-line:before { content: "\f1de"; }
+.ri-user-2-fill:before { content: "\f1df"; }
+.ri-user-2-line:before { content: "\f1e0"; }
+.ri-user-3-fill:before { content: "\f1e1"; }
+.ri-user-3-line:before { content: "\f1e2"; }
+.ri-user-4-fill:before { content: "\f1e3"; }
+.ri-user-4-line:before { content: "\f1e4"; }
+.ri-user-5-fill:before { content: "\f1e5"; }
+.ri-user-5-line:before { content: "\f1e6"; }
+.ri-user-6-fill:before { content: "\f1e7"; }
+.ri-user-6-line:before { content: "\f1e8"; }
+.ri-user-add-fill:before { content: "\f1e9"; }
+.ri-user-add-line:before { content: "\f1ea"; }
+.ri-user-fill:before { content: "\f1eb"; }
+.ri-user-follow-fill:before { content: "\f1ec"; }
+.ri-user-follow-line:before { content: "\f1ed"; }
+.ri-user-heart-fill:before { content: "\f1ee"; }
+.ri-user-heart-line:before { content: "\f1ef"; }
+.ri-user-line:before { content: "\f1f0"; }
+.ri-user-location-fill:before { content: "\f1f1"; }
+.ri-user-location-line:before { content: "\f1f2"; }
+.ri-user-received-2-fill:before { content: "\f1f3"; }
+.ri-user-received-2-line:before { content: "\f1f4"; }
+.ri-user-received-fill:before { content: "\f1f5"; }
+.ri-user-received-line:before { content: "\f1f6"; }
+.ri-user-search-fill:before { content: "\f1f7"; }
+.ri-user-search-line:before { content: "\f1f8"; }
+.ri-user-settings-fill:before { content: "\f1f9"; }
+.ri-user-settings-line:before { content: "\f1fa"; }
+.ri-user-shared-2-fill:before { content: "\f1fb"; }
+.ri-user-shared-2-line:before { content: "\f1fc"; }
+.ri-user-shared-fill:before { content: "\f1fd"; }
+.ri-user-shared-line:before { content: "\f1fe"; }
+.ri-user-smile-fill:before { content: "\f1ff"; }
+.ri-user-smile-line:before { content: "\f200"; }
+.ri-user-star-fill:before { content: "\f201"; }
+.ri-user-star-line:before { content: "\f202"; }
+.ri-user-unfollow-fill:before { content: "\f203"; }
+.ri-user-unfollow-line:before { content: "\f204"; }
+.ri-user-voice-fill:before { content: "\f205"; }
+.ri-user-voice-line:before { content: "\f206"; }
+.ri-video-add-fill:before { content: "\f207"; }
+.ri-video-add-line:before { content: "\f208"; }
+.ri-video-chat-fill:before { content: "\f209"; }
+.ri-video-chat-line:before { content: "\f20a"; }
+.ri-video-download-fill:before { content: "\f20b"; }
+.ri-video-download-line:before { content: "\f20c"; }
+.ri-video-fill:before { content: "\f20d"; }
+.ri-video-line:before { content: "\f20e"; }
+.ri-video-upload-fill:before { content: "\f20f"; }
+.ri-video-upload-line:before { content: "\f210"; }
+.ri-vidicon-2-fill:before { content: "\f211"; }
+.ri-vidicon-2-line:before { content: "\f212"; }
+.ri-vidicon-fill:before { content: "\f213"; }
+.ri-vidicon-line:before { content: "\f214"; }
+.ri-vip-crown-2-fill:before { content: "\f215"; }
+.ri-vip-crown-2-line:before { content: "\f216"; }
+.ri-vip-crown-fill:before { content: "\f217"; }
+.ri-vip-crown-line:before { content: "\f218"; }
+.ri-vip-diamond-fill:before { content: "\f219"; }
+.ri-vip-diamond-line:before { content: "\f21a"; }
+.ri-vip-fill:before { content: "\f21b"; }
+.ri-vip-line:before { content: "\f21c"; }
+.ri-visa-fill:before { content: "\f21d"; }
+.ri-visa-line:before { content: "\f21e"; }
+.ri-voice-recognition-fill:before { content: "\f21f"; }
+.ri-voice-recognition-line:before { content: "\f220"; }
+.ri-voiceprint-fill:before { content: "\f221"; }
+.ri-voiceprint-line:before { content: "\f222"; }
+.ri-volume-down-fill:before { content: "\f223"; }
+.ri-volume-down-line:before { content: "\f224"; }
+.ri-volume-mute-fill:before { content: "\f225"; }
+.ri-volume-mute-line:before { content: "\f226"; }
+.ri-volume-off-vibrate-fill:before { content: "\f227"; }
+.ri-volume-off-vibrate-line:before { content: "\f228"; }
+.ri-volume-up-fill:before { content: "\f229"; }
+.ri-volume-up-line:before { content: "\f22a"; }
+.ri-volume-vibrate-fill:before { content: "\f22b"; }
+.ri-volume-vibrate-line:before { content: "\f22c"; }
+.ri-vuejs-fill:before { content: "\f22d"; }
+.ri-vuejs-line:before { content: "\f22e"; }
+.ri-walk-fill:before { content: "\f22f"; }
+.ri-walk-line:before { content: "\f230"; }
+.ri-wallet-2-fill:before { content: "\f231"; }
+.ri-wallet-2-line:before { content: "\f232"; }
+.ri-wallet-3-fill:before { content: "\f233"; }
+.ri-wallet-3-line:before { content: "\f234"; }
+.ri-wallet-fill:before { content: "\f235"; }
+.ri-wallet-line:before { content: "\f236"; }
+.ri-water-flash-fill:before { content: "\f237"; }
+.ri-water-flash-line:before { content: "\f238"; }
+.ri-webcam-fill:before { content: "\f239"; }
+.ri-webcam-line:before { content: "\f23a"; }
+.ri-wechat-2-fill:before { content: "\f23b"; }
+.ri-wechat-2-line:before { content: "\f23c"; }
+.ri-wechat-fill:before { content: "\f23d"; }
+.ri-wechat-line:before { content: "\f23e"; }
+.ri-wechat-pay-fill:before { content: "\f23f"; }
+.ri-wechat-pay-line:before { content: "\f240"; }
+.ri-weibo-fill:before { content: "\f241"; }
+.ri-weibo-line:before { content: "\f242"; }
+.ri-whatsapp-fill:before { content: "\f243"; }
+.ri-whatsapp-line:before { content: "\f244"; }
+.ri-wheelchair-fill:before { content: "\f245"; }
+.ri-wheelchair-line:before { content: "\f246"; }
+.ri-wifi-fill:before { content: "\f247"; }
+.ri-wifi-line:before { content: "\f248"; }
+.ri-wifi-off-fill:before { content: "\f249"; }
+.ri-wifi-off-line:before { content: "\f24a"; }
+.ri-window-2-fill:before { content: "\f24b"; }
+.ri-window-2-line:before { content: "\f24c"; }
+.ri-window-fill:before { content: "\f24d"; }
+.ri-window-line:before { content: "\f24e"; }
+.ri-windows-fill:before { content: "\f24f"; }
+.ri-windows-line:before { content: "\f250"; }
+.ri-windy-fill:before { content: "\f251"; }
+.ri-windy-line:before { content: "\f252"; }
+.ri-wireless-charging-fill:before { content: "\f253"; }
+.ri-wireless-charging-line:before { content: "\f254"; }
+.ri-women-fill:before { content: "\f255"; }
+.ri-women-line:before { content: "\f256"; }
+.ri-wubi-input:before { content: "\f257"; }
+.ri-xbox-fill:before { content: "\f258"; }
+.ri-xbox-line:before { content: "\f259"; }
+.ri-xing-fill:before { content: "\f25a"; }
+.ri-xing-line:before { content: "\f25b"; }
+.ri-youtube-fill:before { content: "\f25c"; }
+.ri-youtube-line:before { content: "\f25d"; }
+.ri-zcool-fill:before { content: "\f25e"; }
+.ri-zcool-line:before { content: "\f25f"; }
+.ri-zhihu-fill:before { content: "\f260"; }
+.ri-zhihu-line:before { content: "\f261"; }
+.ri-zoom-in-fill:before { content: "\f262"; }
+.ri-zoom-in-line:before { content: "\f263"; }
+.ri-zoom-out-fill:before { content: "\f264"; }
+.ri-zoom-out-line:before { content: "\f265"; }
+
diff --git a/static/logo.png b/static/logo.png
new file mode 100644
index 0000000..773d879
Binary files /dev/null and b/static/logo.png differ
diff --git a/static/m_avatar.png b/static/m_avatar.png
new file mode 100644
index 0000000..d75bb92
Binary files /dev/null and b/static/m_avatar.png differ
diff --git a/static/swiper/1.png b/static/swiper/1.png
new file mode 100644
index 0000000..3fbdf1a
Binary files /dev/null and b/static/swiper/1.png differ
diff --git a/static/tabbar/home.png b/static/tabbar/home.png
new file mode 100644
index 0000000..b877168
Binary files /dev/null and b/static/tabbar/home.png differ
diff --git a/static/tabbar/home_select.png b/static/tabbar/home_select.png
new file mode 100644
index 0000000..4c43f7c
Binary files /dev/null and b/static/tabbar/home_select.png differ
diff --git a/static/tabbar/message.png b/static/tabbar/message.png
new file mode 100644
index 0000000..6fc3264
Binary files /dev/null and b/static/tabbar/message.png differ
diff --git a/static/tabbar/message_select.png b/static/tabbar/message_select.png
new file mode 100644
index 0000000..66b0121
Binary files /dev/null and b/static/tabbar/message_select.png differ
diff --git a/static/tabbar/mine.png b/static/tabbar/mine.png
new file mode 100644
index 0000000..25dde4b
Binary files /dev/null and b/static/tabbar/mine.png differ
diff --git a/static/tabbar/mine_select.png b/static/tabbar/mine_select.png
new file mode 100644
index 0000000..f4691f7
Binary files /dev/null and b/static/tabbar/mine_select.png differ
diff --git a/static/w_avatar.png b/static/w_avatar.png
new file mode 100644
index 0000000..2fa8261
Binary files /dev/null and b/static/w_avatar.png differ
diff --git a/uni.promisify.adaptor.js b/uni.promisify.adaptor.js
new file mode 100644
index 0000000..5fec4f3
--- /dev/null
+++ b/uni.promisify.adaptor.js
@@ -0,0 +1,13 @@
+uni.addInterceptor({
+ returnValue (res) {
+ if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) {
+ return res;
+ }
+ return new Promise((resolve, reject) => {
+ res.then((res) => {
+ if (!res) return resolve(res)
+ return res[0] ? reject(res[0]) : resolve(res[1])
+ });
+ });
+ },
+});
\ No newline at end of file
diff --git a/uni.scss b/uni.scss
new file mode 100644
index 0000000..b9249e9
--- /dev/null
+++ b/uni.scss
@@ -0,0 +1,76 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 颜色变量 */
+
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color:#333;//基本色
+$uni-text-color-inverse:#fff;//反色
+$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable:#c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color:#ffffff;
+$uni-bg-color-grey:#f8f8f8;
+$uni-bg-color-hover:#f1f1f1;//点击状态颜色
+$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color:#c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm:12px;
+$uni-font-size-base:14px;
+$uni-font-size-lg:16px;
+
+/* 图片尺寸 */
+$uni-img-size-sm:20px;
+$uni-img-size-base:26px;
+$uni-img-size-lg:40px;
+
+/* Border Radius */
+$uni-border-radius-sm: 2px;
+$uni-border-radius-base: 3px;
+$uni-border-radius-lg: 6px;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 5px;
+$uni-spacing-row-base: 10px;
+$uni-spacing-row-lg: 15px;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 4px;
+$uni-spacing-col-base: 8px;
+$uni-spacing-col-lg: 12px;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2C405A; // 文章标题颜色
+$uni-font-size-title:20px;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle:26px;
+$uni-color-paragraph: #3F536E; // 文章段落颜色
+$uni-font-size-paragraph:15px;
diff --git a/uni_modules/wot-design-uni/changelog.md b/uni_modules/wot-design-uni/changelog.md
new file mode 100644
index 0000000..ab49a61
--- /dev/null
+++ b/uni_modules/wot-design-uni/changelog.md
@@ -0,0 +1,1950 @@
+## 1.6.1(2025-01-20)
+### [1.6.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.6.0...v1.6.1) (2025-01-20)
+
+
+### Documentation | 文档
+
+* 更新文档小程序二维码 ([a5f862b](https://github.com/Moonofweisheng/wot-design-uni/commit/a5f862bdbea6a84df7ad2e3bef4456baae040ae8))
+
+
+### Bug Fixes | Bug 修复
+
+* 修复 Search placeholder 样式丢失的问题 ([#857](https://github.com/Moonofweisheng/wot-design-uni/issues/857)) ([40565d1](https://github.com/Moonofweisheng/wot-design-uni/commit/40565d19688f6776cdb4ea4b9fc3f6cbaeb4dc66)), closes [#856](https://github.com/Moonofweisheng/wot-design-uni/issues/856)
+
+# 更新日志
+
+
+### [1.6.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.6.0...v1.6.1) (2025-01-20)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 更新文档小程序二维码 ([a5f862b](https://github.com/Moonofweisheng/wot-design-uni/commit/a5f862bdbea6a84df7ad2e3bef4456baae040ae8))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Search placeholder 样式丢失的问题 ([#857](https://github.com/Moonofweisheng/wot-design-uni/issues/857)) ([40565d1](https://github.com/Moonofweisheng/wot-design-uni/commit/40565d19688f6776cdb4ea4b9fc3f6cbaeb4dc66)), closes [#856](https://github.com/Moonofweisheng/wot-design-uni/issues/856)
+
+## [1.6.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.5.1...v1.6.0) (2025-01-18)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 常见问题添加Vue 3.3+使用defineOptions设置styleIsolation规则的介绍 ([f3bee13](https://github.com/Moonofweisheng/wot-design-uni/commit/f3bee13b46ccbb8856b9051a99ed2b5356dc0d8e)), closes [#784](https://github.com/Moonofweisheng/wot-design-uni/issues/784)
+* ✏️ 更新组件库互助群二维码 ([9b50d6c](https://github.com/Moonofweisheng/wot-design-uni/commit/9b50d6c6922e34c964621cff926565cb9fb723ab))
+* ✏️ 添加互助交流QQ群3群二维码 ([1d0b11b](https://github.com/Moonofweisheng/wot-design-uni/commit/1d0b11b25621b7b585fe1e047093d07861c88a30))
+* ✏️ 微信小程序演示demo提供激励视频广告页面 ([#783](https://github.com/Moonofweisheng/wot-design-uni/issues/783)) ([7ed7dd3](https://github.com/Moonofweisheng/wot-design-uni/commit/7ed7dd3495c84f91ed5e77870da7e5845fc28a94))
+* ✏️ 修复 Tooltip 文档显示异常的问题 ([c89eb92](https://github.com/Moonofweisheng/wot-design-uni/commit/c89eb927a21e0f4e10d317346c31ab45d322720d))
+* ✏️ 演示demo小程序支持分享 ([583acc2](https://github.com/Moonofweisheng/wot-design-uni/commit/583acc2fa942422469abcab5f805a54c72614d69))
+* ✏️ 优化演示demo支持在顶部显示对应页面微信小程序的二维码 ([b1f42af](https://github.com/Moonofweisheng/wot-design-uni/commit/b1f42af640a32d8c9119331a19fe0495a908b16c))
+* ✏️修改自定义样式描述 [#772](https://github.com/Moonofweisheng/wot-design-uni/issues/772) ([1ac352d](https://github.com/Moonofweisheng/wot-design-uni/commit/1ac352da9539e60ac79bd1ec10768e08e4d49ff3))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Calendar 为周选择时跨年周的单元格值显示错误的问题 ([#854](https://github.com/Moonofweisheng/wot-design-uni/issues/854)) ([c0d48b2](https://github.com/Moonofweisheng/wot-design-uni/commit/c0d48b25c11af87629e7feedc6cd0cc3a70b37e4))
+* 🐛 修复 Divider 分割线组件 CustomClass 未生效的问题 ([#790](https://github.com/Moonofweisheng/wot-design-uni/issues/790)) ([44df081](https://github.com/Moonofweisheng/wot-design-uni/commit/44df081dbd80771a9df122be4e3953034194308f)), closes [#789](https://github.com/Moonofweisheng/wot-design-uni/issues/789)
+* 🐛 修复 Form 表单 validator 校验不通过且未指定错误信息时无法显示校验信息的问题 ([#791](https://github.com/Moonofweisheng/wot-design-uni/issues/791)) ([bdb5653](https://github.com/Moonofweisheng/wot-design-uni/commit/bdb56537db7fbec59224ebf5aecd3e7a6354424c))
+* 🐛 修复Button初始化margin的问题 ([#831](https://github.com/Moonofweisheng/wot-design-uni/issues/831)) ([3836309](https://github.com/Moonofweisheng/wot-design-uni/commit/38363097a5fbf4c0c7116abd536f90936d2fa86d))
+* 🐛 修复Card footer或者header没写的时候,不会自动隐藏占位 ([8d528cb](https://github.com/Moonofweisheng/wot-design-uni/commit/8d528cb9c06c48456016e0a4cce1cf0699b7311b))
+* 🐛 修复Form组件rules属性,没有按照顺序执行问题 ([#808](https://github.com/Moonofweisheng/wot-design-uni/issues/808)) ([834cd8e](https://github.com/Moonofweisheng/wot-design-uni/commit/834cd8e3f08919800189c1d2710267d4aa99a8d5)), closes [#799](https://github.com/Moonofweisheng/wot-design-uni/issues/799) [#799](https://github.com/Moonofweisheng/wot-design-uni/issues/799) [#799](https://github.com/Moonofweisheng/wot-design-uni/issues/799)
+* 🐛 修复Input初始化修改失败的问题 ([#814](https://github.com/Moonofweisheng/wot-design-uni/issues/814)) ([04e9a50](https://github.com/Moonofweisheng/wot-design-uni/commit/04e9a50ede30337c35e9f28b7f7985f3e717a91f))
+* 🐛 修复Picker文档初始选项code错误的问题 ([67f675d](https://github.com/Moonofweisheng/wot-design-uni/commit/67f675d1cc4764e25d357b91c17ad276612340a1))
+* 🐛 修复popover tooltip组件visibleArrow=false时弹出框距离元素间距过远的问题 ([#792](https://github.com/Moonofweisheng/wot-design-uni/issues/792)) ([3b6d10d](https://github.com/Moonofweisheng/wot-design-uni/commit/3b6d10dbb93188adb3aea3fc9f7d1b763b4d5ec9)), closes [#788](https://github.com/Moonofweisheng/wot-design-uni/issues/788)
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增Signature签名组件 ([0ad8fcc](https://github.com/Moonofweisheng/wot-design-uni/commit/0ad8fcce28f5692572aeae79f0cc7315aa6e5b54)), closes [#505](https://github.com/Moonofweisheng/wot-design-uni/issues/505)
+* ✨ 修复 InputNumber 在设置为 allow-null 时被赋值为空时未触发更新的问题并支持异步更新 ([#812](https://github.com/Moonofweisheng/wot-design-uni/issues/812)) ([0fc90dd](https://github.com/Moonofweisheng/wot-design-uni/commit/0fc90ddcc9b5d478fe3e5bf84e2e780c48a8a341))
+* ✨ 修复Img组件在错误状态下可以预览的问题 ([dbd2c85](https://github.com/Moonofweisheng/wot-design-uni/commit/dbd2c85b83b0992e791c0b828a12f182d4923b81))
+* ✨ Calendar 确认事件 confirm 增加 `type` 参数 ([e0fca91](https://github.com/Moonofweisheng/wot-design-uni/commit/e0fca9161e8282871b2126ecc82999bc9530eb6b))
+* ✨ Form 表单 validate 方法支持传入数组 ([#829](https://github.com/Moonofweisheng/wot-design-uni/issues/829)) ([8e6096a](https://github.com/Moonofweisheng/wot-design-uni/commit/8e6096ab7459b9164ef1ec9b366becf9acc7ab83)), closes [#797](https://github.com/Moonofweisheng/wot-design-uni/issues/797)
+* ✨ Search新增customInputClass,placeholderClass等属性 ([#845](https://github.com/Moonofweisheng/wot-design-uni/issues/845)) ([03623f4](https://github.com/Moonofweisheng/wot-design-uni/commit/03623f4989b6bfbf53588058c632eb2f2e830bfd)), closes [#299](https://github.com/Moonofweisheng/wot-design-uni/issues/299)
+* ✨ Swiper 轮播视频支持控制静音播放和循环播放 ([#855](https://github.com/Moonofweisheng/wot-design-uni/issues/855)) ([7a0d5ce](https://github.com/Moonofweisheng/wot-design-uni/commit/7a0d5ce9720020e3f0fb148f7b65db129ceb82af)), closes [#846](https://github.com/Moonofweisheng/wot-design-uni/issues/846)
+* ✨ Swiper 轮播项type字段的处理逻辑限制在可选值范围内 ([#785](https://github.com/Moonofweisheng/wot-design-uni/issues/785)) ([1fd0a27](https://github.com/Moonofweisheng/wot-design-uni/commit/1fd0a27788db2b467bc53e83a6a4953e5d134c53))
+
+### [1.5.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.5.0...v1.5.1) (2024-12-10)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 调整 Upload 的覆盖上传参数 reupload 默认值为 false ([d9ce000](https://github.com/Moonofweisheng/wot-design-uni/commit/d9ce00010a15ae8e168e082a2c4f3a50cf61fa13))
+
+## [1.5.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.4.0...v1.5.0) (2024-12-09)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Button 按钮设置为 block 无效的问题 ([#762](https://github.com/Moonofweisheng/wot-design-uni/issues/762)) ([ea8bc66](https://github.com/Moonofweisheng/wot-design-uni/commit/ea8bc6671012a811f49027062e6e7f8f1359a175))
+* 🐛 修复 Cell 设置 label 过长时影响页面结构的问题 ([70058f2](https://github.com/Moonofweisheng/wot-design-uni/commit/70058f2270788fb9d7edd56eff35bd2cbebcd99e))
+* 🐛 修复 Collapse v-model绑定数据变化时未更新折叠面板状态的问题 ([#744](https://github.com/Moonofweisheng/wot-design-uni/issues/744)) ([09f7f9c](https://github.com/Moonofweisheng/wot-design-uni/commit/09f7f9caf5e381ef44fb9a31965f8d2d70d4e271)), closes [#741](https://github.com/Moonofweisheng/wot-design-uni/issues/741)
+* 🐛 修复 GridItem 徽标属性类型标注错误的问题 ([c018560](https://github.com/Moonofweisheng/wot-design-uni/commit/c018560b7d3087b89b759b3c83aff91c74354021)), closes [#766](https://github.com/Moonofweisheng/wot-design-uni/issues/766)
+* 🐛 修复 Progress 无法设置进度为 0 的问题 ([#748](https://github.com/Moonofweisheng/wot-design-uni/issues/748)) ([c136f54](https://github.com/Moonofweisheng/wot-design-uni/commit/c136f54cda6164ab3653d47342d7c88c5f515efc)), closes [#747](https://github.com/Moonofweisheng/wot-design-uni/issues/747)
+* 🐛 修复 Swiper 在支付宝小程序平台点击事件无效的问题 ([f63bf10](https://github.com/Moonofweisheng/wot-design-uni/commit/f63bf101338d7f9d2f72c5941d3405950544a1d7))
+* 🐛 修复 Tab 未渲染项高度会影响整体高度的问题 ([5e06378](https://github.com/Moonofweisheng/wot-design-uni/commit/5e063781a3b58f94f107816473600ce95f3761e9))
+* 🐛 修复 vue-tsc 校验不通过的问题 ([#753](https://github.com/Moonofweisheng/wot-design-uni/issues/753)) ([a90f4ad](https://github.com/Moonofweisheng/wot-design-uni/commit/a90f4ad2f2b68bb79f30a2e6973a4e149b7ba66e)), closes [#752](https://github.com/Moonofweisheng/wot-design-uni/issues/752)
+* 🐛 修复微信小程序在iOS设备上处于后台一段时间后抖动的问题 ([6091566](https://github.com/Moonofweisheng/wot-design-uni/commit/6091566380c7c129fca284eb4e5a2ba6e447a7ab)), closes [#694](https://github.com/Moonofweisheng/wot-design-uni/issues/694)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 调整文档结构增加文档内容可用宽度,支持收起演示demo ([#765](https://github.com/Moonofweisheng/wot-design-uni/issues/765)) ([402f73f](https://github.com/Moonofweisheng/wot-design-uni/commit/402f73f6ee8aa7d022b640333e6bfef4311fdc6f))
+* ✏️ 添加 MessageBox 自定义按钮样式的文档 ([46b1c39](https://github.com/Moonofweisheng/wot-design-uni/commit/46b1c394a024c293fb07c7788691e2ac572a2fa1))
+* ✏️ 添加关于Sass的介绍 ([995a65f](https://github.com/Moonofweisheng/wot-design-uni/commit/995a65f8451801062ae83f0f71470d0c428dba7f))
+* ✏️ 优化 Cell 关于 clickable 和 is-link 的介绍 ([6f58e72](https://github.com/Moonofweisheng/wot-design-uni/commit/6f58e72b1d5436326052a79da19e21d071ab9b3c))
+* ✏️ 增加 ConfigProvider 组件设定全局共享示例 ([#758](https://github.com/Moonofweisheng/wot-design-uni/issues/758)) ([356cb4a](https://github.com/Moonofweisheng/wot-design-uni/commit/356cb4ad11791366138002233754b2d2e79d5d18))
+* ✏️ Table 表格组件提供结合分页器使用的demo ([#738](https://github.com/Moonofweisheng/wot-design-uni/issues/738)) ([fb7580d](https://github.com/Moonofweisheng/wot-design-uni/commit/fb7580df7eee7d81d3826c399e565975cef81625))
+
+
+### ✨ Features | 新功能
+
+* ✨ 优化 Divider 分割线功能支持虚线、垂直等功能 ([#737](https://github.com/Moonofweisheng/wot-design-uni/issues/737)) ([1b9d7e6](https://github.com/Moonofweisheng/wot-design-uni/commit/1b9d7e625256b365a381b30e902bb54692d636cf))
+* ✨ Calendar 优化选中样式和滚动位置处理并支持屏蔽内置cell ([#768](https://github.com/Moonofweisheng/wot-design-uni/issues/768)) ([97c4004](https://github.com/Moonofweisheng/wot-design-uni/commit/97c40047e8ed46af31d4c1647056d90c2edf4842))
+* ✨ Curtain 幕帘新增 close 插槽和自定义关闭插槽样式类 ([#746](https://github.com/Moonofweisheng/wot-design-uni/issues/746)) ([7bc3592](https://github.com/Moonofweisheng/wot-design-uni/commit/7bc359205deb99899baf01c733af9690b12703fa)), closes [#648](https://github.com/Moonofweisheng/wot-design-uni/issues/648)
+* ✨ DropMenuItem 增加自定 Popup 样式参数 ([28ad03b](https://github.com/Moonofweisheng/wot-design-uni/commit/28ad03b7afdd38a86f168d15a7c0f3564d122101))
+* ✨ Input、Textarea在APP-VUE和H5端支持inputmode ([#771](https://github.com/Moonofweisheng/wot-design-uni/issues/771)) ([9ceb2e8](https://github.com/Moonofweisheng/wot-design-uni/commit/9ceb2e807e33edd3937db5f57a4306f1ce719cff)), closes [#743](https://github.com/Moonofweisheng/wot-design-uni/issues/743)
+* ✨ MessageBox 新增确认、取消按钮的 ButtonProps 属性 ([#761](https://github.com/Moonofweisheng/wot-design-uni/issues/761)) ([80682ba](https://github.com/Moonofweisheng/wot-design-uni/commit/80682ba933427fac7bfefc6c692cd058a14163c5)), closes [#740](https://github.com/Moonofweisheng/wot-design-uni/issues/740)
+* ✨ Radio添加icon-placement属性用于控制图标方向 ([#763](https://github.com/Moonofweisheng/wot-design-uni/issues/763)) ([b06a7a7](https://github.com/Moonofweisheng/wot-design-uni/commit/b06a7a751b3115c8e3909af4cbe595684ed9d00f)), closes [#371](https://github.com/Moonofweisheng/wot-design-uni/issues/371)
+* ✨ Segmented 提供 updateActiveStyle 方法设置激活样式 ([529e57f](https://github.com/Moonofweisheng/wot-design-uni/commit/529e57fc83b00482f101e84cf0437627e140a59f))
+* ✨ Table 支持设置不固定表头 ([#769](https://github.com/Moonofweisheng/wot-design-uni/issues/769)) ([b0a2461](https://github.com/Moonofweisheng/wot-design-uni/commit/b0a2461a1a6f9691502a1f4a1a06ec4103fabd4b))
+* ✨ Upload 支持文件重传 ([3cd5137](https://github.com/Moonofweisheng/wot-design-uni/commit/3cd5137129ae13f90744a5d0038686cef5602d8c))
+
+## [1.4.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.14...v1.4.0) (2024-11-24)
+
+
+### ✨ Features | 新功能
+
+* ✨ Curtain 幕帘组件支持设置 z-index ([a1e20af](https://github.com/Moonofweisheng/wot-design-uni/commit/a1e20afef34704e518a96d4b4cb248cab3b7a8b6))
+* ✨ Siderbar 侧边栏添加before-change属性支持异步更新 ([#721](https://github.com/Moonofweisheng/wot-design-uni/issues/721)) ([1f5801d](https://github.com/Moonofweisheng/wot-design-uni/commit/1f5801d3f4c2cfc1b3990d74077e18ea88e8d7f8)), closes [#711](https://github.com/Moonofweisheng/wot-design-uni/issues/711)
+* ✨ Swiper 支持指定轮播项的文件类型 ([#720](https://github.com/Moonofweisheng/wot-design-uni/issues/720)) ([1e039cb](https://github.com/Moonofweisheng/wot-design-uni/commit/1e039cb7073d57bd19f59d4ffbb95c74b5cdc42f)), closes [#712](https://github.com/Moonofweisheng/wot-design-uni/issues/712)
+* ✨ Tab 添加 lazy 属性支持配置是否开启懒加载 ([bb5b193](https://github.com/Moonofweisheng/wot-design-uni/commit/bb5b19325fc2a0f4d13d353ee9bc8cfbf8605daa)), closes [#641](https://github.com/Moonofweisheng/wot-design-uni/issues/641)
+* ✨ Tabs 新增 `autoLineWidth` 设置底部条宽度自动同步文本内容' ([#679](https://github.com/Moonofweisheng/wot-design-uni/issues/679)) ([cb7cbf3](https://github.com/Moonofweisheng/wot-design-uni/commit/cb7cbf33250e3711d631271b1bbcb5f6829e75fa))
+* ✨ Tabs 新增map-title属性支持修改导航地图标题 ([0b7605f](https://github.com/Moonofweisheng/wot-design-uni/commit/0b7605f3ef2ca11cedc2cc61a3eb93e0757e6b86)), closes [#670](https://github.com/Moonofweisheng/wot-design-uni/issues/670)
+* ✨ Tabs 支持设置徽标 ([#724](https://github.com/Moonofweisheng/wot-design-uni/issues/724)) ([cd20581](https://github.com/Moonofweisheng/wot-design-uni/commit/cd20581ca6f75a67995a0cf562f524d82e357bbc)), closes [#689](https://github.com/Moonofweisheng/wot-design-uni/issues/689) [#672](https://github.com/Moonofweisheng/wot-design-uni/issues/672)
+* ✨ tabs支持左对齐 ([#718](https://github.com/Moonofweisheng/wot-design-uni/issues/718)) ([314c2e8](https://github.com/Moonofweisheng/wot-design-uni/commit/314c2e8c9d08e806dd0ec78fd4b2aa5e536af8f8)), closes [#380](https://github.com/Moonofweisheng/wot-design-uni/issues/380)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Collapse 使用 toggleAall 方法时不会触发 before-expand 钩子的问题 ([#727](https://github.com/Moonofweisheng/wot-design-uni/issues/727)) ([02aa5ce](https://github.com/Moonofweisheng/wot-design-uni/commit/02aa5ceb78713f210d97ecc29f18618084b93096))
+* 🐛 修复 CollapseItem 在微信小程序平台使用 title 插槽时宽度无法撑满的问题 ([4f1d945](https://github.com/Moonofweisheng/wot-design-uni/commit/4f1d9452ecd5054a636fb51871369ee1f183e1f1))
+* 🐛 修复 DateTimePicker 设置为 time 类型时绑定值无法设置为空数组的问题 ([443ac92](https://github.com/Moonofweisheng/wot-design-uni/commit/443ac929820327339062a608ef94db43bdaafb27)), closes [#706](https://github.com/Moonofweisheng/wot-design-uni/issues/706)
+* 🐛 修复 FloadingPanel 设置 height 不生效的问题 ([#725](https://github.com/Moonofweisheng/wot-design-uni/issues/725)) ([3cc1805](https://github.com/Moonofweisheng/wot-design-uni/commit/3cc18058aee83ed0abbf804595e38d7934490f4a)), closes [#703](https://github.com/Moonofweisheng/wot-design-uni/issues/703)
+* 🐛 修复 Slider 滑块处于极值时会遮挡max和min的问题 ([aa8834d](https://github.com/Moonofweisheng/wot-design-uni/commit/aa8834df630286882425778263ea9ff68811c928)), closes [#714](https://github.com/Moonofweisheng/wot-design-uni/issues/714)
+* 🐛 修复 wd-select-picker 组件单选搜索高亮 class 错误 ([7d461a5](https://github.com/Moonofweisheng/wot-design-uni/commit/7d461a54d09b14273fd18ff37310ecf754cf5138))
+* 🐛 修复Collapse折叠面板组件内容溢出问题 ([#710](https://github.com/Moonofweisheng/wot-design-uni/issues/710)) ([4bf8d1e](https://github.com/Moonofweisheng/wot-design-uni/commit/4bf8d1e300c28f405402582dd32fde4245d9ed47))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 调整文档中gitee镜像仓库的地址 ([a40dd9f](https://github.com/Moonofweisheng/wot-design-uni/commit/a40dd9f63e52cf178be2fd9a93904cdf26e23f14))
+* ✏️ 调整join-group页面加群的问题 ([9a70d89](https://github.com/Moonofweisheng/wot-design-uni/commit/9a70d89be1e369dc2ea2a4babd3b3fdb326fcecc))
+* ✏️ 添加 Cell 单元格 border 属性的文档 ([fad777d](https://github.com/Moonofweisheng/wot-design-uni/commit/fad777dfa8cf8dcf26288a9f975927dc3de2e80d)), closes [#653](https://github.com/Moonofweisheng/wot-design-uni/issues/653)
+* ✏️ 添加关于 Button 自定义样式设置阴影的文档 ([c38321f](https://github.com/Moonofweisheng/wot-design-uni/commit/c38321f69c8f4fcb572cb40c8eef38cf4fa20eae)), closes [#731](https://github.com/Moonofweisheng/wot-design-uni/issues/731)
+* ✏️ 文档新增演示页面源码和组件源码链接 ([330e8c7](https://github.com/Moonofweisheng/wot-design-uni/commit/330e8c7bbfc792f4a29cdaa08dec8b35c75b2a30))
+* ✏️ 优化 NoticeBar 垂直滚动示例 ([ff1d377](https://github.com/Moonofweisheng/wot-design-uni/commit/ff1d37723b38169fc1a1f75676a8464343b42bec))
+* ✏️ 增加 Input 字数限制的示例 ([5aa1c00](https://github.com/Moonofweisheng/wot-design-uni/commit/5aa1c00acd72f17cea108ffccecc427711e2cbdb))
+* ✏️ 增加关于Tabs属性autoLineWidth的介绍和最低版本要求 ([08e7d77](https://github.com/Moonofweisheng/wot-design-uni/commit/08e7d774c6b6886fe3f79431b4728176e267144f))
+
+### [1.3.14](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.13...v1.3.14) (2024-11-09)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Curtain 幕帘组件在某些情况下关闭按钮不显示的问题 ([8c0e978](https://github.com/Moonofweisheng/wot-design-uni/commit/8c0e97831445183662ce0af79210117eb77e63e9)), closes [#690](https://github.com/Moonofweisheng/wot-design-uni/issues/690)
+* 🐛 修复Picker和SelectPicker清空按钮颜色与Input不统一的问题 ([#700](https://github.com/Moonofweisheng/wot-design-uni/issues/700)) ([8fdbfa3](https://github.com/Moonofweisheng/wot-design-uni/commit/8fdbfa319a5c0c5895a3162b56cd3225c54a24d2))
+* 🐛 修复upload组件header默认值错误的问题 ([4cfd1e5](https://github.com/Moonofweisheng/wot-design-uni/commit/4cfd1e568d55eed9efe9cc1dadcc30dd571d3b36)), closes [#691](https://github.com/Moonofweisheng/wot-design-uni/issues/691)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 文档添加生活小工具 ([6f44a63](https://github.com/Moonofweisheng/wot-design-uni/commit/6f44a631ac067a7321ff0cb6ea8ebaabbc64bd9b))
+* ✏️ 文档中添加wot-demo的介绍 ([66fff60](https://github.com/Moonofweisheng/wot-design-uni/commit/66fff6009b261a62be96d4c279d83833c70a8a0f))
+* ✏️ 增加create-uni创建快速上手项目的介绍 ([92aa1ef](https://github.com/Moonofweisheng/wot-design-uni/commit/92aa1efe68f4a9bd52942122b2f063384eb885fc))
+
+
+### ✨ Features | 新功能
+
+* ✨ 使用Transition重构Popup为center类型的Popup添加zoom-in动画 ([#699](https://github.com/Moonofweisheng/wot-design-uni/issues/699)) ([0dd34d0](https://github.com/Moonofweisheng/wot-design-uni/commit/0dd34d06492f9d071ce6c11aa82789fbcc5cd442)), closes [#687](https://github.com/Moonofweisheng/wot-design-uni/issues/687)
+* ✨ 移除Switch默认的size支持在不指定size的情况下使用css变量设置组件尺寸 ([5e55da4](https://github.com/Moonofweisheng/wot-design-uni/commit/5e55da4839677c63534148d4664dbde1c9f950b2)), closes [#516](https://github.com/Moonofweisheng/wot-design-uni/issues/516)
+* ✨ 优化Toast、Message和Notify组件的函数式调用方案 ([#696](https://github.com/Moonofweisheng/wot-design-uni/issues/696)) ([9f318bd](https://github.com/Moonofweisheng/wot-design-uni/commit/9f318bdeb37bea643276d3e7f8be51bfc1b19d27))
+* ✨ 支持Button在支付宝小程序平台opentype设为getAuthorize用于获取手机号和用户信息 ([deeb45d](https://github.com/Moonofweisheng/wot-design-uni/commit/deeb45d8cb47284c1a557b50c3fcd95f80f93c22))
+* ✨ Form 校验规则validator支持传入Error作为校验提示 ([db32ef9](https://github.com/Moonofweisheng/wot-design-uni/commit/db32ef962140333a13e2a04ba4642e7423bc4bef)), closes [#667](https://github.com/Moonofweisheng/wot-design-uni/issues/667)
+* ✨ Loadmore提供loadingProps属性用于自定义loading样式 ([178e056](https://github.com/Moonofweisheng/wot-design-uni/commit/178e056035511de4123d2bd9ce575948154874b4))
+* ✨ Table 行高支持Number和String类型 ([#682](https://github.com/Moonofweisheng/wot-design-uni/issues/682)) ([21f0b17](https://github.com/Moonofweisheng/wot-design-uni/commit/21f0b178b6e3221a69609dd1603960fc866cb534))
+
+### [1.3.13](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.12...v1.3.13) (2024-10-25)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 快速上手增加vue和uni-app的快速上手链接 ([20148a7](https://github.com/Moonofweisheng/wot-design-uni/commit/20148a7800d12376adedadb32bf29239f02baef3))
+* ✏️ 添加关于深度选择的介绍 ([63428f2](https://github.com/Moonofweisheng/wot-design-uni/commit/63428f244ae84574027ea89e19598c3600716f7b))
+* ✏️ 文档新增展示优秀案例 ([47c1764](https://github.com/Moonofweisheng/wot-design-uni/commit/47c176490dabda1937abea8342d02cc6cbbcfc02))
+* ✏️ 优化文档快速上手章节 ([4e9a9da](https://github.com/Moonofweisheng/wot-design-uni/commit/4e9a9da914a372f1b0f31cfcc7fbc2f96650ef58))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Notice在Tabbar页面时跳转至其他页面导致播放异常的问题并提供reset方法 ([#680](https://github.com/Moonofweisheng/wot-design-uni/issues/680)) ([7584ac2](https://github.com/Moonofweisheng/wot-design-uni/commit/7584ac2a1249b6bee79669ae57c80da08a17d912)), closes [#358](https://github.com/Moonofweisheng/wot-design-uni/issues/358) [#650](https://github.com/Moonofweisheng/wot-design-uni/issues/650)
+
+
+### ✨ Features | 新功能
+
+* ✨ 为Picker和SelectPicker补充clear事件 ([8fffaa6](https://github.com/Moonofweisheng/wot-design-uni/commit/8fffaa646aad195b33c56719ffb28b2529f3f627))
+* ✨ 移除 Navbar 点击热区的激活态样式 ([60b07e5](https://github.com/Moonofweisheng/wot-design-uni/commit/60b07e514b836c55305536e2ba29ec5239b62de3)), closes [#511](https://github.com/Moonofweisheng/wot-design-uni/issues/511)
+* ✨ cell组件border属性以props为最高优先级 ([#656](https://github.com/Moonofweisheng/wot-design-uni/issues/656)) ([31353ce](https://github.com/Moonofweisheng/wot-design-uni/commit/31353ceafa3bcae01202c40918e579d141957c0a))
+* ✨ picker和selectPicker添加clearable属性 ([b0d60a0](https://github.com/Moonofweisheng/wot-design-uni/commit/b0d60a0b750e8ed2cbae0b55309145c6963e498a))
+* ✨ Swiper 轮播组件支持展示视频和设置轮播项标题 ([#663](https://github.com/Moonofweisheng/wot-design-uni/issues/663)) ([a50c0be](https://github.com/Moonofweisheng/wot-design-uni/commit/a50c0be38465342e5b688b8e10b377d69ba998a6))
+
+### [1.3.12](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.11...v1.3.12) (2024-10-08)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Upload文件小程序找不到文件,显示的问题 ([c13e605](https://github.com/Moonofweisheng/wot-design-uni/commit/c13e6058a2c665c174806aebd353294113c4007e))
+* 🐛 Radio修复在cell里面高度的问题 ([f9deacf](https://github.com/Moonofweisheng/wot-design-uni/commit/f9deacf40eed17a37558ca96319880822ca897d5))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 优化捐赠榜单中捐赠人链接的展示效果 ([898f079](https://github.com/Moonofweisheng/wot-design-uni/commit/898f07985e602ad18a84c06b5bd6183dd61142cd))
+* ✏️ Upload添加preview-cover最低版本 ([52f9bf6](https://github.com/Moonofweisheng/wot-design-uni/commit/52f9bf654b26a09c20b7118efb331f7e6228ea79))
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增 FloatingPanel 浮动面板组件 ([#616](https://github.com/Moonofweisheng/wot-design-uni/issues/616)) ([e2966fd](https://github.com/Moonofweisheng/wot-design-uni/commit/e2966fdd01d6c91ab9499fbc95e4f7160a83deb5)), closes [#509](https://github.com/Moonofweisheng/wot-design-uni/issues/509)
+* ✨ 新增支持法语、日语等9 种语言 ([#637](https://github.com/Moonofweisheng/wot-design-uni/issues/637)) ([691a7b5](https://github.com/Moonofweisheng/wot-design-uni/commit/691a7b57727af45f3c2f99437740be72e8be0f86))
+* ✨ StatusTip缺省提示组件提供图片内容插槽([#538](https://github.com/Moonofweisheng/wot-design-uni/issues/538)) ([#615](https://github.com/Moonofweisheng/wot-design-uni/issues/615)) ([c6b2cf8](https://github.com/Moonofweisheng/wot-design-uni/commit/c6b2cf84db1cb5536516606999c1fa3d6bd1dbe3))
+* ✨ ToolTip 组件 offset 属性支持数组和对象写法 ([#625](https://github.com/Moonofweisheng/wot-design-uni/issues/625)) ([5092c5a](https://github.com/Moonofweisheng/wot-design-uni/commit/5092c5a6548fe7222e0d6e2614020f15ce95c5df)), closes [#560](https://github.com/Moonofweisheng/wot-design-uni/issues/560)
+* ✨ Upload新增preview-cover插槽 ([ef6433d](https://github.com/Moonofweisheng/wot-design-uni/commit/ef6433d81c576db8b55715a14a574a6d392478df))
+* ✨Calendar日历添加open事件 ([#627](https://github.com/Moonofweisheng/wot-design-uni/issues/627)) ([43a5da6](https://github.com/Moonofweisheng/wot-design-uni/commit/43a5da631d4402319d4e3f0739f2ab7e960e497f)), closes [#624](https://github.com/Moonofweisheng/wot-design-uni/issues/624)
+
+### [1.3.11](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.10...v1.3.11) (2024-09-23)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 移除文档中CountTo不支持的type ([cae2e56](https://github.com/Moonofweisheng/wot-design-uni/commit/cae2e56aba98427b1b6c7a2c3f6a2f9ed8acf96f))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复[#598](https://github.com/Moonofweisheng/wot-design-uni/issues/598)产生的使用未定义变量的问题 ([ce64daf](https://github.com/Moonofweisheng/wot-design-uni/commit/ce64daf77d119df509873226c9209cae406e0330))
+* 🐛 修复与@uni-helper/uni-typed搭配使用时tsc报类型错误的问题并更新依赖 ([f9ca2e4](https://github.com/Moonofweisheng/wot-design-uni/commit/f9ca2e4d4ed2ef88a073f7f80ce64df811144b3a)), closes [#586](https://github.com/Moonofweisheng/wot-design-uni/issues/586)
+* 🐛 修复Button设置为hairline时圆角显示异常的问题 ([10ebf5c](https://github.com/Moonofweisheng/wot-design-uni/commit/10ebf5c3959099389f1f1349e32ad755740ce0d5)), closes [#486](https://github.com/Moonofweisheng/wot-design-uni/issues/486)
+* 🐛 修复Input、Textarea未设置labelWidth时通过CSS变量设置label宽度无效的问题 ([#591](https://github.com/Moonofweisheng/wot-design-uni/issues/591)) ([2f12ac6](https://github.com/Moonofweisheng/wot-design-uni/commit/2f12ac6d2b598c7fa545009a82acd1c07bf21779)), closes [#573](https://github.com/Moonofweisheng/wot-design-uni/issues/573)
+* 🐛 修复loadmore组件属性errorText存在默认值导致国际化失效的问题 ([#594](https://github.com/Moonofweisheng/wot-design-uni/issues/594)) ([0bcc3c4](https://github.com/Moonofweisheng/wot-design-uni/commit/0bcc3c498ed9206bea45522f58889ec3f3a5f673))
+* 🐛 修复Radio点击失效的问题 ([5cce125](https://github.com/Moonofweisheng/wot-design-uni/commit/5cce125c737989e1e447394223129e2e585b91f4)), closes [#596](https://github.com/Moonofweisheng/wot-design-uni/issues/596)
+* 🐛确保inputNumber输入值在设定的最小值和最大值之间 ([#610](https://github.com/Moonofweisheng/wot-design-uni/issues/610)) ([344b1ac](https://github.com/Moonofweisheng/wot-design-uni/commit/344b1ac9168701bc408f82268f68ef8453527ef9)), closes [#602](https://github.com/Moonofweisheng/wot-design-uni/issues/602)
+
+
+### ✨ Features | 新功能
+
+* ✨ 迁移StatusTip组件的图片资源 ([f54ff30](https://github.com/Moonofweisheng/wot-design-uni/commit/f54ff306e7dafcfaead671120d100c4d9482daf9))
+* ✨ count-to组件添加type属性 ([#556](https://github.com/Moonofweisheng/wot-design-uni/issues/556)) ([60c92f2](https://github.com/Moonofweisheng/wot-design-uni/commit/60c92f2f38b563968f88f94267b8d805c28109d1))
+* ✨ Fab 悬浮按钮组件支持自定义触发器和控制能否展开 ([#612](https://github.com/Moonofweisheng/wot-design-uni/issues/612)) ([8e68ef3](https://github.com/Moonofweisheng/wot-design-uni/commit/8e68ef3bf807b5ec3c935daa6ce68f58962a188d)), closes [#512](https://github.com/Moonofweisheng/wot-design-uni/issues/512)
+* ✨ Img组件新增属性 show-menu-by-longpress 支持微信小程序长按弹出菜单栏 ([#613](https://github.com/Moonofweisheng/wot-design-uni/issues/613)) ([a7fc229](https://github.com/Moonofweisheng/wot-design-uni/commit/a7fc22964823af1ee1e513a268fb783bbea77ee4)), closes [#611](https://github.com/Moonofweisheng/wot-design-uni/issues/611)
+* ✨ Input、Textarea增加ignoreCompositionEvent属性 ([#592](https://github.com/Moonofweisheng/wot-design-uni/issues/592)) ([efcd4bb](https://github.com/Moonofweisheng/wot-design-uni/commit/efcd4bbb38b5bf53a26f0a8834f0cbd9fa26f5e5)), closes [#574](https://github.com/Moonofweisheng/wot-design-uni/issues/574)
+* ✨ InputNumber 步进器新增支持adjustPosition属性 ([f8a5240](https://github.com/Moonofweisheng/wot-design-uni/commit/f8a524010a2945941fbefa745756f2e6efbeb88b)), closes [#599](https://github.com/Moonofweisheng/wot-design-uni/issues/599)
+
+### [1.3.10](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.9...v1.3.10) (2024-09-08)
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增Keyboard虚拟键盘支持车牌号输入 ([#567](https://github.com/Moonofweisheng/wot-design-uni/issues/567)) ([59df1b7](https://github.com/Moonofweisheng/wot-design-uni/commit/59df1b7ce56e9253ad046a7898651a866b8c99d7)), closes [#351](https://github.com/Moonofweisheng/wot-design-uni/issues/351)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 col-picker 点击遮罩关闭执行两次问题 ([#584](https://github.com/Moonofweisheng/wot-design-uni/issues/584)) ([8fc5380](https://github.com/Moonofweisheng/wot-design-uni/commit/8fc5380ad1f9a34998aedf1de2a9b05011bd8267))
+* 🐛 修复wd-upload 关闭按钮受项目行高影响的问题 ([#576](https://github.com/Moonofweisheng/wot-design-uni/issues/576)) ([feb64ea](https://github.com/Moonofweisheng/wot-design-uni/commit/feb64ea7be1eada01782bb1fa0d5b848acb4fa64))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 文档中添加KeyBoard的版本要求 ([715c054](https://github.com/Moonofweisheng/wot-design-uni/commit/715c054f4c723de73e2d57b940390cc7bcc89273))
+* ✏️ 优化多列选择器组件文档 ([#572](https://github.com/Moonofweisheng/wot-design-uni/issues/572)) ([93e0736](https://github.com/Moonofweisheng/wot-design-uni/commit/93e0736a24aa77d60376b5dd4d073180b88a6411))
+
+### [1.3.9](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.8...v1.3.9) (2024-09-01)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复某些场景下wd-textarea属性maxlength无效的问题 ([#558](https://github.com/Moonofweisheng/wot-design-uni/issues/558)) ([4b1b237](https://github.com/Moonofweisheng/wot-design-uni/commit/4b1b2370db4a34716ceedfde3a49d2ae7e20f919))
+* 🐛 修复IndexBar组件更新数据时显示异常的问题 ([f4c751d](https://github.com/Moonofweisheng/wot-design-uni/commit/f4c751dfae3724118c2d842489a5c7d1003996f1)), closes [#545](https://github.com/Moonofweisheng/wot-design-uni/issues/545)
+* 🐛 修复Input和Textarea设置为readonly时在部分iOS手机可以点击聚焦的问题 ([ff59403](https://github.com/Moonofweisheng/wot-design-uni/commit/ff594031546a25f4b2831749312171d260a76044)), closes [#533](https://github.com/Moonofweisheng/wot-design-uni/issues/533)
+* 🐛 修复Picker多级联动未应用picker选择值时取消后打开展示列数据错误的问题 ([90e86de](https://github.com/Moonofweisheng/wot-design-uni/commit/90e86def95ae458208f8aa50427b845db61d05b4)), closes [#562](https://github.com/Moonofweisheng/wot-design-uni/issues/562)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 调整数字滚动组件文档路径 ([636a2c5](https://github.com/Moonofweisheng/wot-design-uni/commit/636a2c5e8a8906166947312f085e5fabba5c47df))
+* ✏️ 更正form demo 方法名不一致 ([#534](https://github.com/Moonofweisheng/wot-design-uni/issues/534)) ([59fb1ea](https://github.com/Moonofweisheng/wot-design-uni/commit/59fb1eaabd7fea5428dc860af5ad734c9eebb496))
+* ✏️ 优化MessageBox示例demo ([a827b79](https://github.com/Moonofweisheng/wot-design-uni/commit/a827b79498a48272eb71fd9c0e70a9dae889375b))
+* ✏️ 增加安卓演示demo下载二维码 ([8680e77](https://github.com/Moonofweisheng/wot-design-uni/commit/8680e776e229d96b995de402e12ab423930a27ba))
+* ✏️ 更正text组件doc的type属性默认值 ([#557](https://github.com/Moonofweisheng/wot-design-uni/issues/557)) ([3e51f76](https://github.com/Moonofweisheng/wot-design-uni/commit/3e51f763cf394cd5214bc5c0c3e6e23c9ee974b7))
+
+
+### ✨ Features | 新功能
+
+* ✨ config-provider 支持customClass 与 customeStyle ([#535](https://github.com/Moonofweisheng/wot-design-uni/issues/535)) ([febe730](https://github.com/Moonofweisheng/wot-design-uni/commit/febe73079eceeb2cf0eec9fc5712321fa3434bd2))
+* ✨ Form设置提示模式为toast时优先显示顺序靠前的表单项的错误提示 ([f25409f](https://github.com/Moonofweisheng/wot-design-uni/commit/f25409f5a83df50ecbbf0a21bb2d5199021b9cc1)), closes [#548](https://github.com/Moonofweisheng/wot-design-uni/issues/548)
+* ✨ img 图片组件click事件增加mouseEvent参数 ([#539](https://github.com/Moonofweisheng/wot-design-uni/issues/539)) ([4983f48](https://github.com/Moonofweisheng/wot-design-uni/commit/4983f4832a194d399aeb919b8d2c02564789d9ab))
+* ✨ Text支持传入number类型的text ([e1f9ff6](https://github.com/Moonofweisheng/wot-design-uni/commit/e1f9ff60e35c7b6bbb4b5e7b84b2d570471056f6)), closes [#553](https://github.com/Moonofweisheng/wot-design-uni/issues/553)
+
+### [1.3.8](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.7...v1.3.8) (2024-08-18)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 补充Form设置error-type的示例 ([0e6ea3e](https://github.com/Moonofweisheng/wot-design-uni/commit/0e6ea3ead02c7b51fac7c5776c92044abeaa4dc3))
+* ✏️ 修复常见问题中useToast入参错误的问题 ([3cd0905](https://github.com/Moonofweisheng/wot-design-uni/commit/3cd0905bab2b0dfc3d05257e01aa16afe61c0002))
+* ✏️ 修复textarea组件的maxlength属性类型标注错误 ([#502](https://github.com/Moonofweisheng/wot-design-uni/issues/502)) ([3698e30](https://github.com/Moonofweisheng/wot-design-uni/commit/3698e30301c6c482135671b0a3f150388421ffae))
+* ✏️ 优化MessageBox和Toast文档中selector的介绍 ([f092838](https://github.com/Moonofweisheng/wot-design-uni/commit/f092838756144677c97155dfb700b1ae2cf56f47))
+* ✏️ Toast 文档增加唯一标识selector的介绍 ([#494](https://github.com/Moonofweisheng/wot-design-uni/issues/494)) ([3f99e1b](https://github.com/Moonofweisheng/wot-design-uni/commit/3f99e1bfc7e78c0359e593a2862d1d885c914858))
+
+
+### ✨ Features | 新功能
+
+* ✨ 调整Statistic为CountTo组件并使用useCountDown重构 ([a01baaf](https://github.com/Moonofweisheng/wot-design-uni/commit/a01baafe327e4feeba0de9735901dfc32e014f6a))
+* ✨ 新增statistic 数值显示 ([#489](https://github.com/Moonofweisheng/wot-design-uni/issues/489)) ([592c37b](https://github.com/Moonofweisheng/wot-design-uni/commit/592c37b15e54049faefd14cb480451895bb34d90))
+* ✨ Collapse 折叠面板组件支持嵌套使用 ([#521](https://github.com/Moonofweisheng/wot-design-uni/issues/521)) ([a5ce5dd](https://github.com/Moonofweisheng/wot-design-uni/commit/a5ce5dd8825e520f8e676a9f400efda1eb27546a)), closes [#503](https://github.com/Moonofweisheng/wot-design-uni/issues/503)
+* ✨ datetime-picker 增加自定义 Cell 样式属性 ([#491](https://github.com/Moonofweisheng/wot-design-uni/issues/491)) ([2cc7d7f](https://github.com/Moonofweisheng/wot-design-uni/commit/2cc7d7fb106ec0a13104bf8bea964ba375bd7ad5))
+* ✨ form表单新增errorType错误提示类型 ([#487](https://github.com/Moonofweisheng/wot-design-uni/issues/487)) ([5915922](https://github.com/Moonofweisheng/wot-design-uni/commit/5915922b0b4970424e2dc97ef7f922a918fedfce))
+* ✨Upload 组件支持手动上传并增加自定义上传函数 ([3def17e](https://github.com/Moonofweisheng/wot-design-uni/commit/3def17eb16b1355ee0a9a950788ef6299b0179a3)), closes [#481](https://github.com/Moonofweisheng/wot-design-uni/issues/481)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复checkbox-group的shape无法作用到子组件的问题 ([cd96d25](https://github.com/Moonofweisheng/wot-design-uni/commit/cd96d258f618d4a93584307b4100eee448a58884)), closes [#519](https://github.com/Moonofweisheng/wot-design-uni/issues/519)
+* 🐛 修复DropDown传入正确direction出现错误警告的问题 ([#499](https://github.com/Moonofweisheng/wot-design-uni/issues/499)) ([35507a1](https://github.com/Moonofweisheng/wot-design-uni/commit/35507a1b24dbdee27eefb960ffa637e842b04f9c))
+* 🐛 修复picker-view动态设置columns时获取选中值异常的问题 ([#518](https://github.com/Moonofweisheng/wot-design-uni/issues/518)) ([8530440](https://github.com/Moonofweisheng/wot-design-uni/commit/8530440e81cb8244d7e6288a2c7a8fda41bc7a11)), closes [#492](https://github.com/Moonofweisheng/wot-design-uni/issues/492)
+* 🐛 修复Textarea组件暗黑模式下清空按钮样式不正确的问题 ([8e83a11](https://github.com/Moonofweisheng/wot-design-uni/commit/8e83a117f2acf8b17b021ec833b43d9b2b940d9a))
+
+### [1.3.7](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.6...v1.3.7) (2024-08-06)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 更新爱发电地址和示例demo二维码 ([0ecc4c1](https://github.com/Moonofweisheng/wot-design-uni/commit/0ecc4c194d753a11dfa461d74df1a00d75be0e4e))
+* ✏️ 更新README ([0c33dd4](https://github.com/Moonofweisheng/wot-design-uni/commit/0c33dd48ad8528b4b080125272375bae9fedf352))
+* ✏️ 允许文档组件列表折叠收起 ([#468](https://github.com/Moonofweisheng/wot-design-uni/issues/468)) ([b0e4d23](https://github.com/Moonofweisheng/wot-design-uni/commit/b0e4d235b27a729024951a7b31950e83bd43d3de))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复addUnit工具方法为string类型的参数时未添加单位导致swiper高度丢失的问题 ([3d7775c](https://github.com/Moonofweisheng/wot-design-uni/commit/3d7775c5a93668cb7ac6b50563869d13bbd39bfa))
+* 🐛 修复Input设置为number类型时绑定值重设为0时显示异常的问题 ([df6a6a0](https://github.com/Moonofweisheng/wot-design-uni/commit/df6a6a0ab1f911296002e39299a93bbee5546715)), closes [#470](https://github.com/Moonofweisheng/wot-design-uni/issues/470)
+* 🐛 修复LockScroll后切换页面无法滚动 ([#478](https://github.com/Moonofweisheng/wot-design-uni/issues/478)) ([197d61a](https://github.com/Moonofweisheng/wot-design-uni/commit/197d61a678738bda608588d660263e0d5657f940)), closes [#473](https://github.com/Moonofweisheng/wot-design-uni/issues/473)
+* 🐛 修复Textarea的placeholder无法设置空字符串问题 ([#472](https://github.com/Moonofweisheng/wot-design-uni/issues/472)) ([bb3d329](https://github.com/Moonofweisheng/wot-design-uni/commit/bb3d3292af56016ad21d7bf49024a0338d93ec3d)), closes [#471](https://github.com/Moonofweisheng/wot-design-uni/issues/471)
+* **type:** 🐛 修复vue>=2.7版本的GlobalComponents类型声明问题 ([#464](https://github.com/Moonofweisheng/wot-design-uni/issues/464)) ([a175f05](https://github.com/Moonofweisheng/wot-design-uni/commit/a175f05e01eff86678dd08bd226bd401192b0c0b))
+
+
+### ✨ Features | 新功能
+
+* ✨ 修复Text组件设置color属性后lines失效的问题 ([84826f8](https://github.com/Moonofweisheng/wot-design-uni/commit/84826f8057ba29f65b26ee8f292073edb2f441f0)), closes [#477](https://github.com/Moonofweisheng/wot-design-uni/issues/477)
+* ✨ Input 组件新增clear-triger属性 ([#476](https://github.com/Moonofweisheng/wot-design-uni/issues/476)) ([364cfbf](https://github.com/Moonofweisheng/wot-design-uni/commit/364cfbf1af7a9109be9af59b543b4ccef9c32916)), closes [#462](https://github.com/Moonofweisheng/wot-design-uni/issues/462)
+* ✨ Swiper 轮播组件增加value-key用于自定义目标字段属性名 ([#485](https://github.com/Moonofweisheng/wot-design-uni/issues/485)) ([f207876](https://github.com/Moonofweisheng/wot-design-uni/commit/f20787690368e341850c2fd51cf725b26b192ec9)), closes [#410](https://github.com/Moonofweisheng/wot-design-uni/issues/410)
+* ✨ Textarea 组件新增clear-triger属性 ([1c13f2e](https://github.com/Moonofweisheng/wot-design-uni/commit/1c13f2e629fc259e282d7d859097f8905ef1053e)), closes [#462](https://github.com/Moonofweisheng/wot-design-uni/issues/462)
+* 组件text新增金额类型,前后插槽,下划线等功能 ([#452](https://github.com/Moonofweisheng/wot-design-uni/issues/452)) ([95735be](https://github.com/Moonofweisheng/wot-design-uni/commit/95735be75e276b8679a5a76c9cbe49ea29a9b18d))
+* **drop-menu:** 支持自定义图标以及before-toggle ([#479](https://github.com/Moonofweisheng/wot-design-uni/issues/479)) ([108e1b3](https://github.com/Moonofweisheng/wot-design-uni/commit/108e1b36c69cdb28b59f8742d82bb78540a0e043))
+
+### [1.3.6](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.5...v1.3.6) (2024-07-26)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Button为disabled状态时仍能触发open-type指定事件的问题 ([a64a570](https://github.com/Moonofweisheng/wot-design-uni/commit/a64a5707d2573c042cd9bb16d6f7fecba9a38291)), closes [#458](https://github.com/Moonofweisheng/wot-design-uni/issues/458)
+* 🐛 修复MessageBox设置为prompt时输入框绑定值异常的问题 ([140d960](https://github.com/Moonofweisheng/wot-design-uni/commit/140d96019d91a51f2af2efbd91a279d203a8408b))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 文档地址更新并增加QQ2群二维码 ([ef1ad01](https://github.com/Moonofweisheng/wot-design-uni/commit/ef1ad011f205612d6d2a8f5fc8cbf7d05dfffc7d))
+* ✏️ 修复Toast组件文档中关于提示方法描述的错误 ([8ed19a2](https://github.com/Moonofweisheng/wot-design-uni/commit/8ed19a2949064ec93cc281aadae4710d4d24a25f))
+* ✏️ 修正DateTimePicker文档中关于minDate和maxDate类型标注错误的问题 ([b322264](https://github.com/Moonofweisheng/wot-design-uni/commit/b322264c9a84d9acb82276ecacf5f12f1fd25f6e))
+
+### [1.3.5](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.4...v1.3.5) (2024-07-20)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Text组件使用日期工具方法路径错误的问题 ([c4071c3](https://github.com/Moonofweisheng/wot-design-uni/commit/c4071c3759d8328f5dd6a6a374bb91dda5af1029)), closes [#453](https://github.com/Moonofweisheng/wot-design-uni/issues/453)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 文档中全局引入ElTag用于显示组件上线版本 ([1d05654](https://github.com/Moonofweisheng/wot-design-uni/commit/1d056547c89f4b6f39e9f2b503d55790abc02b52))
+* ✏️ 修复RadioBox文档中关于表单模式表述错误的问题 ([1da6c34](https://github.com/Moonofweisheng/wot-design-uni/commit/1da6c34565d20c7fdb0970cfc93dada208b1f82e))
+* ✏️ 优化Segmented分段器关于绑定激活项的文档 ([5caf3b9](https://github.com/Moonofweisheng/wot-design-uni/commit/5caf3b95073c9bf28f280cbe88431a40f937e994))
+
+### [1.3.4](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.3...v1.3.4) (2024-07-19)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复双向滑块响应式丢失 ([#436](https://github.com/Moonofweisheng/wot-design-uni/issues/436)) ([825ea9b](https://github.com/Moonofweisheng/wot-design-uni/commit/825ea9b5b81981ae2a8cb497b412bf950caf6aaf))
+* 🐛 修复Input组件[@input](https://github.com/input)事件参数错误的问题 ([82357f9](https://github.com/Moonofweisheng/wot-design-uni/commit/82357f916def6283003aef64ef522a5bb155c307))
+* 🐛 修复Table组件异步填充数据源无效的问题 ([c795c00](https://github.com/Moonofweisheng/wot-design-uni/commit/c795c00560a267de41d8ef3f976fe16c6ad8ba00)), closes [#445](https://github.com/Moonofweisheng/wot-design-uni/issues/445)
+* 🐛 修复Upload组件accept为media时图片预览顺序混乱的问题 ([f8c1053](https://github.com/Moonofweisheng/wot-design-uni/commit/f8c1053abd2b0ce3f3bee89fbd0e9adcdf1961d2)), closes [#442](https://github.com/Moonofweisheng/wot-design-uni/issues/442)
+* 🐛 Button按钮click事件直接透传event ([017aeda](https://github.com/Moonofweisheng/wot-design-uni/commit/017aeda89d7950024baddc40a4a1e83a36010be3)), closes [#443](https://github.com/Moonofweisheng/wot-design-uni/issues/443)
+* 修复 textarea 组件同时使用 auto-height 和 no-border 属性时,no-border 属性不生效 ([#448](https://github.com/Moonofweisheng/wot-design-uni/issues/448)) ([a2f4b32](https://github.com/Moonofweisheng/wot-design-uni/commit/a2f4b322f5b9bd01a36a46b904684d531d5e6730))
+
+
+### ✨ Features | 新功能
+
+* ✨ Button按钮组件支持使用自定义组件 ([517b583](https://github.com/Moonofweisheng/wot-design-uni/commit/517b583f262e374154111d635644dfb225a473c9)), closes [#310](https://github.com/Moonofweisheng/wot-design-uni/issues/310)
+* ✨ Toast 轻提示组件支持使用组件库内置和自定义图标 ([723c51b](https://github.com/Moonofweisheng/wot-design-uni/commit/723c51bac98bb751af44f13737fba12deb298dd4)), closes [#444](https://github.com/Moonofweisheng/wot-design-uni/issues/444)
+* ✨ Upload上传组件新增支持successStatus属性 ([99eab74](https://github.com/Moonofweisheng/wot-design-uni/commit/99eab74260e1e3c43f9f4b147edb4a5a3147d086))
+* 新增Text 文本组件 ([#403](https://github.com/Moonofweisheng/wot-design-uni/issues/403)) ([14f5f44](https://github.com/Moonofweisheng/wot-design-uni/commit/14f5f4430a7cd599149adf16f7bc704dc42f4d90))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 调整QQ群与提问相关文档 ([cb11e98](https://github.com/Moonofweisheng/wot-design-uni/commit/cb11e9822ff714d3c1e03ad5f2b01b0a07e8fcec))
+* ✏️ 移除示例demo中手机号等字样方便过审 ([7488a7f](https://github.com/Moonofweisheng/wot-design-uni/commit/7488a7f708035b5f59c60078190c880cc8d11800))
+
+### [1.3.3](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.2...v1.3.3) (2024-07-14)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复IndexBar索引值显示错误的问题 ([#433](https://github.com/Moonofweisheng/wot-design-uni/issues/433)) ([19dc35b](https://github.com/Moonofweisheng/wot-design-uni/commit/19dc35bf40eecc263ed19e9f54d05c004b1d3425)), closes [#408](https://github.com/Moonofweisheng/wot-design-uni/issues/408)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 调整演示demo中图片到npmmirror上 ([93ff5f9](https://github.com/Moonofweisheng/wot-design-uni/commit/93ff5f938fdb1ced622080bce9168bfe0e7ed771))
+* ✏️ 新增关于messageBox弹出多个的常见问题解答 ([a362928](https://github.com/Moonofweisheng/wot-design-uni/commit/a3629283aa3838803df900512afc990f920b3e0b))
+* ✏️ 修复SelectPicker文档中存在的拼写错误 ([9e28b57](https://github.com/Moonofweisheng/wot-design-uni/commit/9e28b5771a30fa0bf8aad60e8e494e0bc976d9a1)), closes [#426](https://github.com/Moonofweisheng/wot-design-uni/issues/426)
+* ✏️ Upload文档增加微信隐私协议的介绍 ([c7f3a4a](https://github.com/Moonofweisheng/wot-design-uni/commit/c7f3a4adc2907bab30f5e075417f34541cba7a5e))
+
+### [1.3.2](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.1...v1.3.2) (2024-07-08)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复ActionSheet样式调整导致微信编译错误的问题 ([a9189d2](https://github.com/Moonofweisheng/wot-design-uni/commit/a9189d2c263459a33cdbb68bec3dd0dd0213b5c0))
+
+### [1.3.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.3.0...v1.3.1) (2024-07-08)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复暗黑模式下Grid和ActionSheet组件部分样式异常的问题 ([a28938c](https://github.com/Moonofweisheng/wot-design-uni/commit/a28938c91d4b437e6b583793e32f8373cec102ae)), closes [#409](https://github.com/Moonofweisheng/wot-design-uni/issues/409)
+
+## [1.3.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.28...v1.3.0) (2024-07-07)
+
+
+### ✨ Features | 新功能
+
+* ✨ Upload上传组件新增支持上传视频和文件 ([#412](https://github.com/Moonofweisheng/wot-design-uni/issues/412)) ([e07dbdd](https://github.com/Moonofweisheng/wot-design-uni/commit/e07dbdd5305c112fe3648ce988a45b2cc36ae143)), closes [#186](https://github.com/Moonofweisheng/wot-design-uni/issues/186) [#336](https://github.com/Moonofweisheng/wot-design-uni/issues/336)
+* ✨select-picker组件增加open、close事件 ([#395](https://github.com/Moonofweisheng/wot-design-uni/issues/395)) ([9237a04](https://github.com/Moonofweisheng/wot-design-uni/commit/9237a04bcbde9960864b9a7b09a64fc2b6c27595))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 调整ColPicker多列选择器文档中省市区数据源及演示demo ([d09bd03](https://github.com/Moonofweisheng/wot-design-uni/commit/d09bd037e735b02264074c2a251c59c01b8ff571))
+* ✏️ DropDownItem文档增加closed和opened介绍 ([401bd28](https://github.com/Moonofweisheng/wot-design-uni/commit/401bd284ceaafe957a0f4184d0a009bed70e9377))
+* ✏️ PasswordInput 修复示例代码错误的问题 ([#391](https://github.com/Moonofweisheng/wot-design-uni/issues/391)) ([519d172](https://github.com/Moonofweisheng/wot-design-uni/commit/519d17235b7c61acf2048104a495690bff0b9804))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Calendar等组件暗黑模式部分样式异常的问题 ([281e20f](https://github.com/Moonofweisheng/wot-design-uni/commit/281e20f2a922d98c00321d1316efc96b985c620d)), closes [#388](https://github.com/Moonofweisheng/wot-design-uni/issues/388)
+* 🐛 修复IndexBar点击索引序号时未显示预期索引值的问题 ([c33991e](https://github.com/Moonofweisheng/wot-design-uni/commit/c33991ee14b8108bcd084b5d7b59f35cb79b2b35)), closes [#408](https://github.com/Moonofweisheng/wot-design-uni/issues/408)
+* 🐛 修复Swiper在微信端长时间处于后台出现抖动的问题 ([#413](https://github.com/Moonofweisheng/wot-design-uni/issues/413)) ([4741439](https://github.com/Moonofweisheng/wot-design-uni/commit/4741439277f1a2668634a4e5e3649236ed95a627)), closes [#411](https://github.com/Moonofweisheng/wot-design-uni/issues/411)
+
+### [1.2.28](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.27...v1.2.28) (2024-06-24)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复omitBy工具方法实现错误导致Tabbar等组件徽标显示异常的问题 ([1491fe4](https://github.com/Moonofweisheng/wot-design-uni/commit/1491fe44616a0db1c165e2bed29637f8c46fbc7e))
+
+### [1.2.27](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.26...v1.2.27) (2024-06-21)
+
+
+### ✨ Features | 新功能
+
+* ✨ add title slot for wd-collapse-item ([#372](https://github.com/Moonofweisheng/wot-design-uni/issues/372)) ([0252bd9](https://github.com/Moonofweisheng/wot-design-uni/commit/0252bd98254f8e108e545651127a744640b39692)), closes [#356](https://github.com/Moonofweisheng/wot-design-uni/issues/356)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 调整文档中关于类型声明文件的配置 ([0c38e98](https://github.com/Moonofweisheng/wot-design-uni/commit/0c38e986f0151b8aa2e17ab1770d1f39b178d354))
+* ✏️ Input 密码输入框示例移除disabled属性 ([3026c78](https://github.com/Moonofweisheng/wot-design-uni/commit/3026c78d237217b08e2fa3cdf64260c294a61b2b))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复ActionSheet禁用和加载状态时仍有点击效果的问题 ([c6baf45](https://github.com/Moonofweisheng/wot-design-uni/commit/c6baf452f0b626dea378148131d624589bb0c47e)), closes [#379](https://github.com/Moonofweisheng/wot-design-uni/issues/379)
+* 🐛 修复Sidebar等组件css变量前缀错误的问题 ([0c31e16](https://github.com/Moonofweisheng/wot-design-uni/commit/0c31e16699e0b70b91384da0a5c0537b791e6bcf))
+
+### [1.2.26](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.25...v1.2.26) (2024-06-14)
+
+
+### ✨ Features | 新功能
+
+* ✨ fab组件添加gap属性 ([#366](https://github.com/Moonofweisheng/wot-design-uni/issues/366)) ([7b44765](https://github.com/Moonofweisheng/wot-design-uni/commit/7b44765adc08fd16e055fbd326698a8f6b708426))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Fab初始化时存在初始位置闪现的问题 ([74c90be](https://github.com/Moonofweisheng/wot-design-uni/commit/74c90beb402e519fee1057870b0631673945cb73))
+* 🐛 修复Transition被打断时出现显示异常的问题 ([#368](https://github.com/Moonofweisheng/wot-design-uni/issues/368)) ([9c21b95](https://github.com/Moonofweisheng/wot-design-uni/commit/9c21b9512076cc95098a36ee7a7283f70386c94b))
+
+### [1.2.25](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.24...v1.2.25) (2024-06-09)
+
+
+### ✨ Features | 新功能
+
+* ✨ Pickerview选择器新增immediate-change属性,目前微信和支付宝小程序支持。 ([3428ae1](https://github.com/Moonofweisheng/wot-design-uni/commit/3428ae17889a36552010e3f7cc4a9bebb7a94461))
+* ✨ Slider暴露initSlider方法用于外部初始化slider宽度信息 ([fc3e4ef](https://github.com/Moonofweisheng/wot-design-uni/commit/fc3e4ef3bb108e6bb6a660ffead40f4658c119e7)), closes [#344](https://github.com/Moonofweisheng/wot-design-uni/issues/344)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 常见问题中增加关于交流群的内容 ([9ddaeec](https://github.com/Moonofweisheng/wot-design-uni/commit/9ddaeec32299463406ae2f60406cf39daff575cf))
+* ✏️ 更新文档中组件数量 ([10d2ba9](https://github.com/Moonofweisheng/wot-design-uni/commit/10d2ba9035970c5627fc731219ec529e634d2578))
+* ✏️ 增加关于微信小程序v-if和slot执行顺序异常问题的介绍 ([6a14879](https://github.com/Moonofweisheng/wot-design-uni/commit/6a1487900b214d071fdbda52034f220b8b046eec))
+* ✏️ 修正upload组件文档中change事件的dmeo错误 ([#360](https://github.com/Moonofweisheng/wot-design-uni/issues/360)) ([61004d3](https://github.com/Moonofweisheng/wot-design-uni/commit/61004d30ed3e79b439ef8a3c5d2e78723d7fa017))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复时间选择器设置minDate之后选择器显示值和实际选择值不一致的问题 ([3c0284f](https://github.com/Moonofweisheng/wot-design-uni/commit/3c0284f1f27b743ea3bdb7eeac5c489939057e13)), closes [#339](https://github.com/Moonofweisheng/wot-design-uni/issues/339)
+* 🐛 修复ImgCropper未暴露resetImg和setRoate方法的问题 ([e58f111](https://github.com/Moonofweisheng/wot-design-uni/commit/e58f1111f2ae8e2da23e60c0ed60130373117970)), closes [#354](https://github.com/Moonofweisheng/wot-design-uni/issues/354)
+* 🐛 修复Tag在钉钉小程序平台close方法不执行的问题 ([242d2f2](https://github.com/Moonofweisheng/wot-design-uni/commit/242d2f25c6ac829b5d20d63d520b1f8c8ae921a8)), closes [#359](https://github.com/Moonofweisheng/wot-design-uni/issues/359)
+
+### [1.2.24](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.23...v1.2.24) (2024-06-03)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Input支付宝小程序number/digit类型使用maxlength=-1时v-model失效的问题 ([7aa21b0](https://github.com/Moonofweisheng/wot-design-uni/commit/7aa21b0baadeccf4f0eb179f74332013acec6a10))
+
+### [1.2.23](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.22...v1.2.23) (2024-06-02)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 更新LICENSE文件地址 ([dae3ffc](https://github.com/Moonofweisheng/wot-design-uni/commit/dae3ffcc7b488dd6d87bc1c5e8ae16a78b794f85))
+* ✏️ 修复loading组件示例代码中文标点符号、img-cropper组件示例代码标签缺失的问题 ([#347](https://github.com/Moonofweisheng/wot-design-uni/issues/347)) ([d171255](https://github.com/Moonofweisheng/wot-design-uni/commit/d171255899d232f141c84aa1251c03cc1d0a0b75))
+* update select-picker doc ([#346](https://github.com/Moonofweisheng/wot-design-uni/issues/346)) ([7454452](https://github.com/Moonofweisheng/wot-design-uni/commit/7454452ad44331f329408cead9b483cf774cce5f))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Cell的value为0时无法渲染的问题 ([dc64c09](https://github.com/Moonofweisheng/wot-design-uni/commit/dc64c09e6c6f991fe6f8f9fcfa309392e233ce21))
+* 🐛 修复Sticky在h5和App端缓慢拖动时存在几率始终固定在顶部的问题 ([#350](https://github.com/Moonofweisheng/wot-design-uni/issues/350)) ([c5b3c5f](https://github.com/Moonofweisheng/wot-design-uni/commit/c5b3c5f68e1bb376249ed5f2c30b1898cc375abe))
+
+
+### ✨ Features | 新功能
+
+* ✨ 调整Circle环形进度条在微信小程序端使用canvas2d支持同层渲染 ([#351](https://github.com/Moonofweisheng/wot-design-uni/issues/351)) ([4489517](https://github.com/Moonofweisheng/wot-design-uni/commit/44895179e4688ceb995ea1968d23df4f0bf9cdc2))
+
+### [1.2.22](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.21...v1.2.22) (2024-05-23)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 组件库介绍组件数量调整至70+ ([efd55ca](https://github.com/Moonofweisheng/wot-design-uni/commit/efd55ca8afc07368b8d9f348d73c9a25cf186c47))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Form指定prop为`a.b`时校验失败的问题 ([#329](https://github.com/Moonofweisheng/wot-design-uni/issues/329)) ([ab600b9](https://github.com/Moonofweisheng/wot-design-uni/commit/ab600b915a647ff089d5cfbb0ac955e3baa581c3))
+
+### [1.2.21](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.20...v1.2.21) (2024-05-20)
+
+
+### ✨ Features | 新功能
+
+* ✨ 添加索引栏组件 ([#321](https://github.com/Moonofweisheng/wot-design-uni/issues/321)) ([f84e9af](https://github.com/Moonofweisheng/wot-design-uni/commit/f84e9affb1a044a37661c5d1dc118d834b49239c))
+* ✨ img组件添加loading、error插槽 ([#323](https://github.com/Moonofweisheng/wot-design-uni/issues/323)) ([00ffa9f](https://github.com/Moonofweisheng/wot-design-uni/commit/00ffa9f3e54f3ba9eec967887e195c0266ef0a41))
+* ✨ skeleton添加默认内容插槽 ([#322](https://github.com/Moonofweisheng/wot-design-uni/issues/322)) ([9a68c47](https://github.com/Moonofweisheng/wot-design-uni/commit/9a68c477dbf5e0f30f74882df92251eac707fdde))
+* add backtop ([#314](https://github.com/Moonofweisheng/wot-design-uni/issues/314)) ([bf9e55a](https://github.com/Moonofweisheng/wot-design-uni/commit/bf9e55a24e676a764b1e035ca86bd6fe26b87420))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Cell组件单独使用时设置border无效的问题 ([19b9f19](https://github.com/Moonofweisheng/wot-design-uni/commit/19b9f196466b88456e8b3e7221afd710da3df99b))
+* 🐛 修复Picker选择器多列选择模式绑定值为空数组时将列第一项作为显示值的问题 ([c3b96ce](https://github.com/Moonofweisheng/wot-design-uni/commit/c3b96ce912bfc13d30c09393dd57cbcbf2d0b80a))
+* 🐛 修复Sticky吸顶组件在微信小程序中放置在页面顶部时吸顶失效的问题 ([4ca3ebe](https://github.com/Moonofweisheng/wot-design-uni/commit/4ca3ebe7202f118a1bf6a462b27dc76ab6c720f9)), closes [#325](https://github.com/Moonofweisheng/wot-design-uni/issues/325)
+* 修复wd-button在自定义样式时激活态样式问题 ([#312](https://github.com/Moonofweisheng/wot-design-uni/issues/312)) ([7544d69](https://github.com/Moonofweisheng/wot-design-uni/commit/7544d690f176b44a8e016688723af70d2a77388a))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 常见问题增加关于useToast等hooks的答疑以及自定义编译平台的内容 ([65597c7](https://github.com/Moonofweisheng/wot-design-uni/commit/65597c76b812e5e61be17879de320989d0873df4))
+* ✏️ 文档中增加解释导入方式的faq ([83fa0b0](https://github.com/Moonofweisheng/wot-design-uni/commit/83fa0b06927fddabd1021ee02c3c7f8377704786))
+
+### [1.2.20](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.19...v1.2.20) (2024-05-12)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 调整捐赠榜单和友情链接的数据到cloudflare上 ([1314373](https://github.com/Moonofweisheng/wot-design-uni/commit/1314373af1dff95aee4cd3cddefebcb3a6a5c5d2))
+* ✏️ 推荐文档地址调整至cloudflare ([9119f30](https://github.com/Moonofweisheng/wot-design-uni/commit/9119f30b23676ad1b9a3869e362a3840ba288dc3))
+* ✏️ Curtain组件width属性标记为number类型 ([d172ce7](https://github.com/Moonofweisheng/wot-design-uni/commit/d172ce7ffcfebf29b184b57a7f74a25acad1f967)), closes [#303](https://github.com/Moonofweisheng/wot-design-uni/issues/303)
+
+
+### ✨ Features | 新功能
+
+* Segmented组件添加click事件 ([#301](https://github.com/Moonofweisheng/wot-design-uni/issues/301)) ([225ce22](https://github.com/Moonofweisheng/wot-design-uni/commit/225ce225ac7faedffd4686b908076c47ba111695))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复MessageBox中使用TextArea字数统计样式错误的问题 ([b186ac0](https://github.com/Moonofweisheng/wot-design-uni/commit/b186ac09294a4fede16c514cd96ff94f661fcbc9)), closes [#290](https://github.com/Moonofweisheng/wot-design-uni/issues/290)
+* 🐛 修复PickerView可以滚动到禁用选项的问题 ([edd44ed](https://github.com/Moonofweisheng/wot-design-uni/commit/edd44eda3fc9879dc980b02d1885d77530a3d2e8)), closes [#302](https://github.com/Moonofweisheng/wot-design-uni/issues/302)
+* 🐛 修复Popover指定placement后箭头显示异常的问题([#306](https://github.com/Moonofweisheng/wot-design-uni/issues/306)) ([a9b108d](https://github.com/Moonofweisheng/wot-design-uni/commit/a9b108d231a8e537aab4ba49781590bcafb9354d))
+* 🐛 修复release脚本处理最低版本号问题 ([c8077c9](https://github.com/Moonofweisheng/wot-design-uni/commit/c8077c9f3790e7844c902528d43596c4bc4025af))
+* 🐛 修复Sticky组件获取节点错误的问题 ([5483ea6](https://github.com/Moonofweisheng/wot-design-uni/commit/5483ea6c447f85229af66b950e34c1dc690fadb1))
+* 修复wd-calendar未抛出事件 ([c1203c9](https://github.com/Moonofweisheng/wot-design-uni/commit/c1203c91841c3d5bcd407923a577711e462207a3))
+
+### [1.2.19](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.18...v1.2.19) (2024-05-01)
+
+
+### ✨ Features | 新功能
+
+* ✨ `Slider`组件`min`值允许负数 ([9e7c8d3](https://github.com/Moonofweisheng/wot-design-uni/commit/9e7c8d33eb2c0fccc44f465ed3b28d2cd81efa2d)), closes [#266](https://github.com/Moonofweisheng/wot-design-uni/issues/266)
+* ✨ fab添加draggable属性 ([#259](https://github.com/Moonofweisheng/wot-design-uni/issues/259)) ([5e0cd6c](https://github.com/Moonofweisheng/wot-design-uni/commit/5e0cd6caa2296a44a3dc1b3d33033d4cc91d01b9))
+* ✨ table组件添加index参数 ([2161705](https://github.com/Moonofweisheng/wot-design-uni/commit/2161705a2f868f874b89ee28b6029677854a7741))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复`slider`组件`step`属性无效问题 ([50133b9](https://github.com/Moonofweisheng/wot-design-uni/commit/50133b9e5e2a18aace8cbf9eb7570579cc563f1d)), closes [#269](https://github.com/Moonofweisheng/wot-design-uni/issues/269)
+* 🐛 修复Cell组件title文字对齐方式受外部影响的问题 ([caf66b6](https://github.com/Moonofweisheng/wot-design-uni/commit/caf66b6beeb236a9295cf0d8ec250557dc19e54e)), closes [#282](https://github.com/Moonofweisheng/wot-design-uni/issues/282)
+* 🐛 修复SelectPicker无默认值时仍会查找选择项节点的问题 ([130c438](https://github.com/Moonofweisheng/wot-design-uni/commit/130c4383dc862e190b96bc3670a852a4cce3e629)), closes [#281](https://github.com/Moonofweisheng/wot-design-uni/issues/281)
+* 🐛 修复Slider组件max和min变化时滑块和进度条未更新的问题 ([#276](https://github.com/Moonofweisheng/wot-design-uni/issues/276)) ([69303b5](https://github.com/Moonofweisheng/wot-design-uni/commit/69303b52077bd268e3563fa9096e91530bb978c5))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 补充Table组件关于Events的介绍 ([6760317](https://github.com/Moonofweisheng/wot-design-uni/commit/676031781b189a3a89dba9e57cb989c06999091a)), closes [#260](https://github.com/Moonofweisheng/wot-design-uni/issues/260)
+
+### [1.2.18](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.17...v1.2.18) (2024-04-23)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复InputNumber步进器组件在初始化时未发生变化仍触发change的问题 ([6ac20fd](https://github.com/Moonofweisheng/wot-design-uni/commit/6ac20fd60728e9056282466571c64ff747af4c9f))
+* 🐛 修复InputNumber的change事件无法取到当前绑定值的更新的问题 ([45980c5](https://github.com/Moonofweisheng/wot-design-uni/commit/45980c526a0b47fb1cb2c95ad50ab9f226464d7c))
+
+### [1.2.17](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.16...v1.2.17) (2024-04-18)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复debounce调整后导致tabs无法切换的问题 ([bd594a7](https://github.com/Moonofweisheng/wot-design-uni/commit/bd594a7202d3cd4e641f23a0b98d468227370d6f))
+
+### [1.2.16](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.15...v1.2.16) (2024-04-17)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Gap组件文档中safeAreaBottom属性名错误的问题 ([b03e39f](https://github.com/Moonofweisheng/wot-design-uni/commit/b03e39f601a68ff5f7e72aa3605279683e5e5b74))
+* 🐛 修复PickerView在绑定值为0时无法生效的问题 ([742b4d6](https://github.com/Moonofweisheng/wot-design-uni/commit/742b4d65255926a0e8c3899ae3ee2eb9d7b7e5e5))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 补充Img图片支持图片预览的最低支持版本 ([82d8e49](https://github.com/Moonofweisheng/wot-design-uni/commit/82d8e493c0723da9e3ba88981a45ea31ae8ef9d5)), closes [#244](https://github.com/Moonofweisheng/wot-design-uni/issues/244)
+
+
+### ✨ Features | 新功能
+
+* ✨ 阻止tag的关闭和新增事件冒泡 ([4c22cf5](https://github.com/Moonofweisheng/wot-design-uni/commit/4c22cf515e2e121b3bbe7d9fd64c5777ce72df32))
+* ✨ Checkbox 新增toggle方法 ([6ec0397](https://github.com/Moonofweisheng/wot-design-uni/commit/6ec0397bc9a5e80780b22245c29c6f05f1b25313)), closes [#239](https://github.com/Moonofweisheng/wot-design-uni/issues/239)
+* ✨ date-time-picker-view 添加年选择 ([#241](https://github.com/Moonofweisheng/wot-design-uni/issues/241)) ([0073b32](https://github.com/Moonofweisheng/wot-design-uni/commit/0073b323967fe859ed15284607f4117243614d5e))
+* ✨ Noticebar 通知栏新增支持click点击事件 ([6fc786d](https://github.com/Moonofweisheng/wot-design-uni/commit/6fc786d9be63c2f021c10e0c48c466e0114f5c24))
+* ✨ TableColumn组件value插槽新增index参数 ([b8b03c3](https://github.com/Moonofweisheng/wot-design-uni/commit/b8b03c352b62e31a584faa41ced65d72bc427d89))
+
+### [1.2.15](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.14...v1.2.15) (2024-04-11)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 优化文档及演示demo访问速度 ([#232](https://github.com/Moonofweisheng/wot-design-uni/issues/232)) ([8d3f617](https://github.com/Moonofweisheng/wot-design-uni/commit/8d3f617e403fdbf53a29ca0d48624dc5da74fc94))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Button不同尺寸显示固定尺寸icon样式不协调的问题 ([2a73992](https://github.com/Moonofweisheng/wot-design-uni/commit/2a73992d9c551c51f4f3672167b972d0d0cca881)), closes [#235](https://github.com/Moonofweisheng/wot-design-uni/issues/235)
+* 🐛 修复Upload自定义上传样式时未应用limit数量限制和customEvokeClass的问题 ([50baac8](https://github.com/Moonofweisheng/wot-design-uni/commit/50baac876279029214062a23072bb7c309110c0c))
+
+
+### ✨ Features | 新功能
+
+* ✨ MessageBox支持确认前置处理钩子beforeConfirm ([78bed6a](https://github.com/Moonofweisheng/wot-design-uni/commit/78bed6a212a12639cd8831e3a1ad4542d6fbf518)), closes [#229](https://github.com/Moonofweisheng/wot-design-uni/issues/229)
+* ✨ Toast轻提示增加opened、closed两个钩子 ([ead218b](https://github.com/Moonofweisheng/wot-design-uni/commit/ead218b87b6b0bd53c8c541c38561fdb45396c72))
+
+### [1.2.14](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.13...v1.2.14) (2024-04-09)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复NoticeBar通知栏在小程序端垂直滚动无效的问题 ([eaeb935](https://github.com/Moonofweisheng/wot-design-uni/commit/eaeb935a299dee3c5e54dee6b926d625a7ef66a8))
+
+### [1.2.13](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.12...v1.2.13) (2024-04-08)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ demo首页使用Cell组件重构显示样式 ([9ae8a20](https://github.com/Moonofweisheng/wot-design-uni/commit/9ae8a207f3ee8c765e6269b7ef5cb42ff1cd10fd))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复升级vue到3.4.2.之后defineEmits位置不规范导致访问'emit'报错的问题 ([ef574cf](https://github.com/Moonofweisheng/wot-design-uni/commit/ef574cfcb8f805ec308d8364cb887b65394e6108)), closes [#226](https://github.com/Moonofweisheng/wot-design-uni/issues/226)
+* 🐛 修复NumberKeyboard暗黑模式无效的问题 ([b0cc958](https://github.com/Moonofweisheng/wot-design-uni/commit/b0cc958e0fd762915fe427275288a87d0c58ed38))
+* 🐛 修复Upload组件sourceType属性丢失默认值导致在iOS系统微信小程序报错的问题 ([b70991a](https://github.com/Moonofweisheng/wot-design-uni/commit/b70991a1133be77439fc139df9019527ded9b71d)), closes [#227](https://github.com/Moonofweisheng/wot-design-uni/issues/227)
+
+### [1.2.12](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.11...v1.2.12) (2024-04-07)
+
+
+### ✨ Features | 新功能
+
+* ✨ 增强`notice-bar`组件`vertical`模式下插槽的功能 ([e3daed5](https://github.com/Moonofweisheng/wot-design-uni/commit/e3daed516c958dbb5bff0d4a51d7d16cf9971da1))
+* ✨ NumberKeyboard数字键盘增加名为title的插槽 ([7edc746](https://github.com/Moonofweisheng/wot-design-uni/commit/7edc7462aa43ea800536ac0a464bb6e6c131a20c)), closes [#213](https://github.com/Moonofweisheng/wot-design-uni/issues/213)
+* ✨ StatusTip缺省提示组件新增支持图片mode和自定义图片宽高 ([171c2bb](https://github.com/Moonofweisheng/wot-design-uni/commit/171c2bbdaf9e5ec62fa13fad1079b86daca85d54))
+* ✨ Swiper轮播为image-mode增加ts类型标注 ([9a4ceb2](https://github.com/Moonofweisheng/wot-design-uni/commit/9a4ceb21160dab06a08b39c35e50f69c7c49d023))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 修复 step 的 description 插槽不显示的bug ([f979ccc](https://github.com/Moonofweisheng/wot-design-uni/commit/f979cccc05b9956fe0df121fc2e8cbbb24544766))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 调整演示demo iframe加载完成后再同步当前是否暗黑模式 ([9ab370e](https://github.com/Moonofweisheng/wot-design-uni/commit/9ab370e19395aaef013da8a386dd310c7deec59e)), closes [#210](https://github.com/Moonofweisheng/wot-design-uni/issues/210)
+* ✏️ Steps步骤条增加控制进度的示例 ([8025174](https://github.com/Moonofweisheng/wot-design-uni/commit/80251742f6f5d560d546bd7cd812c35433158a91))
+
+### [1.2.11](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.10...v1.2.11) (2024-04-06)
+
+
+### ⚡ Performance Improvements | 性能优化
+
+* ⚡ 优化Calendar日历选择器打开关闭时的动画效果 ([5fb9542](https://github.com/Moonofweisheng/wot-design-uni/commit/5fb9542087c62b8cf6974d2e5f4b5f455b456495))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ `notice-bar`组件补充`event`事件 ([8f11c8a](https://github.com/Moonofweisheng/wot-design-uni/commit/8f11c8a0fe02f3bb0a2e7a67e105f2e33d658477))
+* ✏️ 优化文档与演示demo同步暗黑模式的逻辑 ([d057607](https://github.com/Moonofweisheng/wot-design-uni/commit/d0576071ebaeb69828b8c5e789471c3324dabb1f)), closes [#210](https://github.com/Moonofweisheng/wot-design-uni/issues/210)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复ActionSheet丢失props默认值的问题 ([e50cccc](https://github.com/Moonofweisheng/wot-design-uni/commit/e50cccceeccebeb99ca69712b9f64e8a9e5fd23f))
+* 🐛 修复Calendar部分文字运行时切换国际化未应用国际化文字的问题 ([857c922](https://github.com/Moonofweisheng/wot-design-uni/commit/857c922d4f3542cb543b8b99600bf9c48ffa24b9))
+* 🐛 修复Calendar的type为datetime且无默认值时无法在首次选择日期后选择时间的问题 ([3746ba3](https://github.com/Moonofweisheng/wot-design-uni/commit/3746ba304021c56e14414dfaed225c465869a473)), closes [#214](https://github.com/Moonofweisheng/wot-design-uni/issues/214)
+* 🐛 修复search组件suffix插槽无法使用的问题 ([6a4af41](https://github.com/Moonofweisheng/wot-design-uni/commit/6a4af41b93e8edd92e297eaea7c1bc566bfb4d6d))
+
+
+### ✨ Features | 新功能
+
+* ✨ `notice-bar`增加垂直滚动功能 ([93d048b](https://github.com/Moonofweisheng/wot-design-uni/commit/93d048b219d66718880609d6ec9086ce058121fa)), closes [#122](https://github.com/Moonofweisheng/wot-design-uni/issues/122)
+* ✨ `notice-bar`增加多文本轮播功能 ([c2e5e9b](https://github.com/Moonofweisheng/wot-design-uni/commit/c2e5e9bbd86093a5795d93aa23c2bd03d8416767))
+* ✨ `upload`组件增加`mode`属性传递给预览`image` ([acf3f99](https://github.com/Moonofweisheng/wot-design-uni/commit/acf3f999033df7b2925040ff83ad1088d0e59a44)), closes [#203](https://github.com/Moonofweisheng/wot-design-uni/issues/203)
+* ✨ img组件的mode属性增加类型`ImageMode` ([1398982](https://github.com/Moonofweisheng/wot-design-uni/commit/139898209fea4559a69cbaffed2e7b45b91aa107))
+* ✨ img组件增加enable-preview属性来支持点击预览功能 ([e6a3b73](https://github.com/Moonofweisheng/wot-design-uni/commit/e6a3b73142e37547e60b8f1dd1845fc3e9d5d17e)), closes [#193](https://github.com/Moonofweisheng/wot-design-uni/issues/193)
+* ✨ swiper组件增加current属性控制轮播项功能 ([443fd8a](https://github.com/Moonofweisheng/wot-design-uni/commit/443fd8a19e3b73ee61ae6a1692c5409e3d0c0b84)), closes [#211](https://github.com/Moonofweisheng/wot-design-uni/issues/211)
+
+### [1.2.10](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.9...v1.2.10) (2024-04-02)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Step组件description插槽无法使用的问题 ([e431294](https://github.com/Moonofweisheng/wot-design-uni/commit/e431294ea2b97858f93513c112f1a7574654a87d))
+* 🐛 修复Toast、MessageBox二次打开时部分参数未重置的问题 ([e2e7d37](https://github.com/Moonofweisheng/wot-design-uni/commit/e2e7d378e577d3d1f5582464bdd9e6c4e6d82e3d))
+
+
+### ✨ Features | 新功能
+
+* ✨ 为所有组件补充customStyle属性 ([964240e](https://github.com/Moonofweisheng/wot-design-uni/commit/964240e2e7f640586a18bec1c11b0359afcf99e2)), closes [#212](https://github.com/Moonofweisheng/wot-design-uni/issues/212)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 更新vitepress至1.0.1 ([da7684f](https://github.com/Moonofweisheng/wot-design-uni/commit/da7684f33ada867a9ba2f22bb1489c804a7d840e))
+* ✏️ 修复更新vitepress至1.0.1后友情链接丢失logo的问题 ([1e36c39](https://github.com/Moonofweisheng/wot-design-uni/commit/1e36c39ff7ab814741792ee91a2ee7d9085862f9))
+* ✏️ Steps文档标题调整为步骤条 ([1ea7996](https://github.com/Moonofweisheng/wot-design-uni/commit/1ea79960fd9facef7aa5ef17f0f9bde03daa0d7c))
+
+### [1.2.9](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.8...v1.2.9) (2024-04-01)
+
+
+### ✨ Features | 新功能
+
+* ✨ Segmented分段器change事件参数类型扩充为SegmentedOption ([5592bc4](https://github.com/Moonofweisheng/wot-design-uni/commit/5592bc49b9439ef34306741f16c4b5c702d562b2)), closes [#204](https://github.com/Moonofweisheng/wot-design-uni/issues/204)
+
+### [1.2.8](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.7...v1.2.8) (2024-03-30)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 修复useLocale 不传 message 会丢失原有语言配置的问题 ([#209](https://github.com/Moonofweisheng/wot-design-uni/issues/209)) ([e854d0e](https://github.com/Moonofweisheng/wot-design-uni/commit/e854d0e758e44cba9213992794974b7ae5985abf))
+
+
+### ✨ Features | 新功能
+
+* ✨ SelectPicker单选模式支持自动完成 ([#207](https://github.com/Moonofweisheng/wot-design-uni/issues/207)) ([11aa887](https://github.com/Moonofweisheng/wot-design-uni/commit/11aa887ae36153c0a6a0cd9053fc94c70acbcb0d)), closes [#206](https://github.com/Moonofweisheng/wot-design-uni/issues/206)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 文档中增加@uni-helper/vite-plugin-uni-components的使用提示 ([37d9d46](https://github.com/Moonofweisheng/wot-design-uni/commit/37d9d4631e434792b1e97dccac8a52a6d253d616))
+
+### [1.2.7](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.6...v1.2.7) (2024-03-29)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复DatePicker占位符展示缺失的问题 ([8fbca94](https://github.com/Moonofweisheng/wot-design-uni/commit/8fbca94e3690e8b86ce59fbe668805839c50192b))
+* 🐛 修复DateTimePicker区域选择极值计算错误的问题 ([a1e9530](https://github.com/Moonofweisheng/wot-design-uni/commit/a1e9530a917981ca4cf96dde1aa268eaf3da059f))
+* 🐛 修复picker-view初始化报错的问题 ([2102f38](https://github.com/Moonofweisheng/wot-design-uni/commit/2102f38a107a7cc8a316cb7fdc5a9738a5bb7499)), closes [#205](https://github.com/Moonofweisheng/wot-design-uni/issues/205)
+* 🐛 修复picker选择器在APP端包装二维数组逻辑错误导致无法实现多列选择器的问题 ([ed5d7ac](https://github.com/Moonofweisheng/wot-design-uni/commit/ed5d7ace2050f5ae7541c8fd2ec395de56fa73cc))
+* 🐛 移除文件移动时volar变更文件路径错误导致.vue文件中多出的无用路径字符串 ([1f8f8ae](https://github.com/Moonofweisheng/wot-design-uni/commit/1f8f8ae2bfb2b13a6b6fcd6435a2d75f47d0e775))
+
+### [1.2.6](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.5...v1.2.6) (2024-03-27)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Picker 未选择时显示第一列值的问题 ([21839e0](https://github.com/Moonofweisheng/wot-design-uni/commit/21839e0caf170248f454d80645bc3aa2f3ae2cdb))
+* 🐛 修复DatetimePicker区间模式未选值时显示占位符错误的问题 ([37350ee](https://github.com/Moonofweisheng/wot-design-uni/commit/37350ee5234a0f30debd22d33fb168415ec4e72d))
+
+### [1.2.5](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.4...v1.2.5) (2024-03-24)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复textarea在支付宝小程序上清除按钮点击热区失效的问题 ([84662f2](https://github.com/Moonofweisheng/wot-design-uni/commit/84662f254b85d3b554113c9ba4f73ca695596fe9))
+
+### [1.2.4](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.3...v1.2.4) (2024-03-23)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复textarea、input的label存在icon时高度异常的问题 ([e487ced](https://github.com/Moonofweisheng/wot-design-uni/commit/e487ced1624ce9ba35b29537481302e07050612c))
+* 🐛 修复textarea无法换行的问题 ([25bd564](https://github.com/Moonofweisheng/wot-design-uni/commit/25bd56485508ae8b3dfffd13d47c306fbf42d65e))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 调整组件库基于vite配置自动引入组件的介绍 ([2d23607](https://github.com/Moonofweisheng/wot-design-uni/commit/2d2360706fbe2a5d4024ceebd82720014c6b1ea2))
+* ✏️ 文档推荐用户从wot-design-uni.cn迁移至wot-design-uni.gitee.io ([72a567c](https://github.com/Moonofweisheng/wot-design-uni/commit/72a567c44867f049c1526f5d682e46155047516a))
+* ✏️ 增加steps设置激活项的介绍 ([7c0d36c](https://github.com/Moonofweisheng/wot-design-uni/commit/7c0d36c36214517d959aa27e284aacf59d2b074b))
+
+### [1.2.3](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.2...v1.2.3) (2024-03-20)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 修复部分外部链接不可用的问题 ([e2fb515](https://github.com/Moonofweisheng/wot-design-uni/commit/e2fb5155c40e58e44920329cdfb4f2391bb81970))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 修复 checkbox 单独使用时无法切换选中状态的问题 ([#198](https://github.com/Moonofweisheng/wot-design-uni/issues/198)) ([4a20219](https://github.com/Moonofweisheng/wot-design-uni/commit/4a2021908f0d63ca398660950609bd5f4a7ca9b9))
+
+### [1.2.2](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.1...v1.2.2) (2024-03-19)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复picker选择器绑定值value值为0时无法生效的问题 ([d4de4ba](https://github.com/Moonofweisheng/wot-design-uni/commit/d4de4ba93824905840adc49e2d85d7168c9fd48e)), closes [#195](https://github.com/Moonofweisheng/wot-design-uni/issues/195)
+
+### [1.2.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.2.0...v1.2.1) (2024-03-19)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复部分可为null的props丢失null类型的问题 ([604e9f3](https://github.com/Moonofweisheng/wot-design-uni/commit/604e9f3810f38637ee1a7640e642790719cd9d3f))
+
+## [1.2.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.10...v1.2.0) (2024-03-19)
+
+
+### ✨ Features | 新功能
+
+* ✨ typescript类型支持增强 ([#192](https://github.com/Moonofweisheng/wot-design-uni/issues/192)) ([201e7a1](https://github.com/Moonofweisheng/wot-design-uni/commit/201e7a12b9c4023e35ff9540f5da09794ea3c6f7))
+
+### [1.1.10](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.9...v1.1.10) (2024-03-15)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复tabbar默认shape固定底部安全区无遮挡的问题 ([03048bb](https://github.com/Moonofweisheng/wot-design-uni/commit/03048bba17966e13e864c4a3d29047986778d586))
+
+### [1.1.9](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.8...v1.1.9) (2024-03-11)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 推荐使用托管在gitee上的文档地址 ([24ae6ca](https://github.com/Moonofweisheng/wot-design-uni/commit/24ae6cac05b150ff8da3ab47cc4bb3eeac48a369))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复textarea在微信小程序平台下部分安卓手机maxlength不生效的问题 ([512e63b](https://github.com/Moonofweisheng/wot-design-uni/commit/512e63b0ad30ff7acb14fffbb124dba59e34d450))
+
+### [1.1.8](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.7...v1.1.8) (2024-03-10)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复transitiont打开后立即关闭时无法关闭的问题 ([c1cebf6](https://github.com/Moonofweisheng/wot-design-uni/commit/c1cebf6de0b1c6a2f8a32aa4815adc8c0466eeca))
+
+### [1.1.7](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.6...v1.1.7) (2024-03-09)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复badge组件多出一个script标签的问题 ([e1819b4](https://github.com/Moonofweisheng/wot-design-uni/commit/e1819b4dbcb3dc1244bbe5641cdb538d0ad9c5e7)), closes [#188](https://github.com/Moonofweisheng/wot-design-uni/issues/188)
+
+### [1.1.6](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.5...v1.1.6) (2024-03-06)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Tabar为round类型时开启safeAreaInsetBottom是样式异常的问题 ([aa9ae88](https://github.com/Moonofweisheng/wot-design-uni/commit/aa9ae88f35236dec15635bd8e4fd0c7023e5fb70))
+
+### [1.1.5](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.4...v1.1.5) (2024-03-05)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Search、Input等组件clear事件在value变更前触发的问题 ([8d113a2](https://github.com/Moonofweisheng/wot-design-uni/commit/8d113a285dbffa705e44a31ad05e48f36978c46c)), closes [#185](https://github.com/Moonofweisheng/wot-design-uni/issues/185)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 首页增加常见问题的入口 ([fd7a7dd](https://github.com/Moonofweisheng/wot-design-uni/commit/fd7a7dd287226f670cf02db9cf2856c9ebe52498))
+
+### [1.1.4](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.3...v1.1.4) (2024-03-04)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Navbar显示下边框时fixed不生效的问题 ([18c09d8](https://github.com/Moonofweisheng/wot-design-uni/commit/18c09d87384699c044a9f84838b17f74eaff77b3))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 增加支付宝小程序styleIsolation配置的文档 ([68d1262](https://github.com/Moonofweisheng/wot-design-uni/commit/68d1262ed5ac6ccf8c078ba089e045739c2275e8))
+
+### [1.1.3](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.2...v1.1.3) (2024-03-03)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 文档中增加提问的智慧和toast、message组件的常见问题 ([2fdd4b1](https://github.com/Moonofweisheng/wot-design-uni/commit/2fdd4b1c050ed8805637ec0b082ca4d20c3c17b6))
+
+### [1.1.2](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.1...v1.1.2) (2024-03-01)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Button会存在一个默认border的问题 ([#182](https://github.com/Moonofweisheng/wot-design-uni/issues/182)) ([3714ffb](https://github.com/Moonofweisheng/wot-design-uni/commit/3714ffb0f1de55f3eae5a36b9235bdbc518b0738))
+
+### [1.1.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.1.0...v1.1.1) (2024-02-29)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 ImgCropper 在钉钉小程序平台无法展示所选图片的问题 ([db8d029](https://github.com/Moonofweisheng/wot-design-uni/commit/db8d029db3a227cd062c6e9d7c14eb9d0f3dae87))
+* 🐛 修复微信小程序css使用标签选择器抛出警告的问题(wd-img) ([#181](https://github.com/Moonofweisheng/wot-design-uni/issues/181)) ([ee3da01](https://github.com/Moonofweisheng/wot-design-uni/commit/ee3da016439d68f1d9d061bb1b1cbd10f2863aa4))
+
+## [1.1.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v1.0.0...v1.1.0) (2024-02-27)
+
+
+### ✨ Features | 新功能
+
+* ✨ Button 支持微信小程序chooseavatar和agreeprivacyauthorization事件 ([177c726](https://github.com/Moonofweisheng/wot-design-uni/commit/177c726e0d0f9bc435f815af2e4fc8e917ef144d))
+* ✨ DropDown组件支持钉钉小程序 ([924c65b](https://github.com/Moonofweisheng/wot-design-uni/commit/924c65b4f66e7d1ff75aa2bcb5c6cbe4e045fb92))
+* ✨ Slider 支持钉钉小程序 ([bea7a49](https://github.com/Moonofweisheng/wot-design-uni/commit/bea7a499edc3e0681ec11dd26333d8a969dd9b0e))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 新增支持钉钉小程序平台 ([9525f23](https://github.com/Moonofweisheng/wot-design-uni/commit/9525f23f207af47c10c37614279b8318500e3ede))
+* ✏️ 修复Segment演示demo在钉钉小程序平台展示异常的问题 ([4fbe556](https://github.com/Moonofweisheng/wot-design-uni/commit/4fbe5569b3cb1761c2ef7847a4abc1721d3ed220))
+* ✏️ 支持平台的介绍中新增支付宝小程序 ([320e4dd](https://github.com/Moonofweisheng/wot-design-uni/commit/320e4dd2e102146b8a466d378c8356286faeb28c))
+
+## [1.0.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.3.1...v1.0.0) (2024-02-26)
+
+
+### ✨ Features | 新功能
+
+* ✨ 支持支付宝小程序并提供ConfigProvider的便利性优化 ([e1baca3](https://github.com/Moonofweisheng/wot-design-uni/commit/e1baca3ce5201c38e6b0aee5e6cb7099ecba9772))
+* ✨ sticky组件支持支付宝平台 ([3805882](https://github.com/Moonofweisheng/wot-design-uni/commit/3805882b8b1f8ad165d8cda528fa0b5cf3f96c27))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 演示demo增加组件库版本号的显示 ([19a00e3](https://github.com/Moonofweisheng/wot-design-uni/commit/19a00e34652bf672f7fdfd28899625dac977a1b6))
+
+### [0.3.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.3.0...v0.3.1) (2024-02-26)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复大尺寸checkbox选中样式异常的问题 ([413cf3b](https://github.com/Moonofweisheng/wot-design-uni/commit/413cf3b6a04358bca5284704d750cfd224c1d277))
+
+## [0.3.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.23...v0.3.0) (2024-02-21)
+
+
+### ✨ Features | 新功能
+
+* ✨ 调整Button 按钮样式受主色控制并优化幽灵按钮显示效果 ([5f0d1f5](https://github.com/Moonofweisheng/wot-design-uni/commit/5f0d1f5f8bac81435d248348ec5823e82d35f7a4))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 修复select-picker组件绑定值描述错误的问题 ([b287111](https://github.com/Moonofweisheng/wot-design-uni/commit/b2871114311656580ade25c25f0775d9246f32b7)), closes [#178](https://github.com/Moonofweisheng/wot-design-uni/issues/178)
+* ✏️ 增加Button细边框幽灵按钮的使用说明 ([366c34b](https://github.com/Moonofweisheng/wot-design-uni/commit/366c34b69faedee4874221c604d1a6d5c8c1a8e0))
+
+### [0.2.23](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.22...v0.2.23) (2024-02-07)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 文档支持显示友情链接 ([adac43f](https://github.com/Moonofweisheng/wot-design-uni/commit/adac43f2a1b300d4169249e108389b3a24ac9ffa))
+* ✏️ 友情链接支持来自线上配置 ([50896bb](https://github.com/Moonofweisheng/wot-design-uni/commit/50896bb475c5e1c5be42bdc22a56a47db9a51481))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 MessageBox 国际化不生效的问题 ([48404a1](https://github.com/Moonofweisheng/wot-design-uni/commit/48404a1ccccf9081cf3e9f9918e20cb58a6bb12f)), closes [#177](https://github.com/Moonofweisheng/wot-design-uni/issues/177)
+
+### [0.2.22](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.21...v0.2.22) (2024-01-30)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 修正 Popover 组件文档中menuclick示例错误的问题 ([9df96e7](https://github.com/Moonofweisheng/wot-design-uni/commit/9df96e7629296bfba2b7f951b83508cc9e4a3935))
+
+### [0.2.21](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.19...v0.2.21) (2024-01-28)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Dropdown 组件点击已展开项时无法关闭的问题 ([3846590](https://github.com/Moonofweisheng/wot-design-uni/commit/38465905e76b929a4d4af93dfe4ad9f31503b2ad))
+
+
+### ✨ Features | 新功能
+
+* ✨ 支持国际化 ([#168](https://github.com/Moonofweisheng/wot-design-uni/issues/168)) ([ce9f192](https://github.com/Moonofweisheng/wot-design-uni/commit/ce9f19244e4d376c5104be2b89d57426bf722aee))
+
+### [0.2.19](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.18...v0.2.19) (2024-01-25)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Input 绑定值无法为null的问题 ([f745e14](https://github.com/Moonofweisheng/wot-design-uni/commit/f745e14d10d64b643aa2f9c0170f72db3a99bb3e))
+* 🐛 修复多列、单复选选择器列更新时显示值未更新的问题 ([5ba45b9](https://github.com/Moonofweisheng/wot-design-uni/commit/5ba45b94b711e1129873fa29b243a616087ddc2a)), closes [#167](https://github.com/Moonofweisheng/wot-design-uni/issues/167)
+
+### [0.2.18](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.17...v0.2.18) (2024-01-24)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 CheckBox 组件的选中色无法应用到css变量的问题 ([febfb61](https://github.com/Moonofweisheng/wot-design-uni/commit/febfb61cab3b55a9f78920ed4715f05a232fb9f6))
+* 🐛 修复 Radio 组件的选中色无法应用到css变量的问题 ([b7e8631](https://github.com/Moonofweisheng/wot-design-uni/commit/b7e86314139cc6291e851c350219fce837f0f26e))
+
+### [0.2.17](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.16...v0.2.17) (2024-01-23)
+
+
+### ✨ Features | 新功能
+
+* ✨ Form 表单组件提供开关控制是否model变化时重置提示信息 ([b9f46ba](https://github.com/Moonofweisheng/wot-design-uni/commit/b9f46ba0da85acd7312753a34dd0ad3f2f7379a2)), closes [#166](https://github.com/Moonofweisheng/wot-design-uni/issues/166)
+
+### [0.2.16](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.15...v0.2.16) (2024-01-21)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 修复文档中关于日期选择器最大日期描述错误的问题 ([bb76ce3](https://github.com/Moonofweisheng/wot-design-uni/commit/bb76ce332c6977cbae981790aa356bc27c0d9efa))
+
+### [0.2.15](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.14...v0.2.15) (2024-01-15)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Tab class类名属性错误的问题 ([dc87df7](https://github.com/Moonofweisheng/wot-design-uni/commit/dc87df70c7920d7cfabc571ace8beb2ce0dc2a7c))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 修复 Upload 文档中before-upload钩子参数描述错误的问题 ([3ec7299](https://github.com/Moonofweisheng/wot-design-uni/commit/3ec7299ce724fce771b782f6110ba6ec29376291))
+
+### [0.2.14](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.13...v0.2.14) (2024-01-14)
+
+
+### ✨ Features | 新功能
+
+* ✨ InputNumber步进器支持禁用输入框 ([933bce3](https://github.com/Moonofweisheng/wot-design-uni/commit/933bce314618956ff922daacef5b3594f36baf9b))
+
+### [0.2.13](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.12...v0.2.13) (2024-01-12)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复演示文档刷新后指向localhost的问题 ([4cd8b16](https://github.com/Moonofweisheng/wot-design-uni/commit/4cd8b16bdf5ea8e93cff85396025844e9ebd031c))
+
+### [0.2.12](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.11...v0.2.12) (2024-01-11)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Tabbar 错误地抛出提示信息的问题 ([1c89ed0](https://github.com/Moonofweisheng/wot-design-uni/commit/1c89ed0a7158e79556e83c6aeb89bd1e93e4ea0d))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 增加 Circle 组件使用插槽的示例 ([6341594](https://github.com/Moonofweisheng/wot-design-uni/commit/6341594295732dac951c465d95537f36addbbf9c))
+* ✏️ 增加展示gitee的star徽标 ([1abf962](https://github.com/Moonofweisheng/wot-design-uni/commit/1abf962e37e27c1c1688bed2026c66022e63ce9b))
+
+### [0.2.11](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.10...v0.2.11) (2024-01-09)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Overlay 类型声明错误的问题 ([930e59a](https://github.com/Moonofweisheng/wot-design-uni/commit/930e59a9b09aee535ec4c316e44ed3c0e31be628))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 提供托管在Giteee上的文档网站 ([6d62e9e](https://github.com/Moonofweisheng/wot-design-uni/commit/6d62e9e7ddda0bd9f51f2ad9e2893f1ed3709c63))
+
+### [0.2.10](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.9...v0.2.10) (2024-01-08)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 col-picker 暗黑模式下标题文字颜色不清楚的问题 ([217ffb7](https://github.com/Moonofweisheng/wot-design-uni/commit/217ffb7dacb66b2017145c6e43fc8c873a6e9dd2))
+* 🐛 修复 steps 组件自定义图标显示异常的问题 ([0300f63](https://github.com/Moonofweisheng/wot-design-uni/commit/0300f63f35a5afcd278aba3b4ab721f498716d94))
+* 🐛 修复支付宝小程序暗黑模式下 Input、Textarea 组件显示异常的问题 ([8a9c344](https://github.com/Moonofweisheng/wot-design-uni/commit/8a9c344872bfcd81a73f71520f51b6b849f516d5))
+
+### [0.2.9](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.8...v0.2.9) (2024-01-07)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 col-picker 组件首次打开指示线位置异常的问题 ([323fb00](https://github.com/Moonofweisheng/wot-design-uni/commit/323fb00942b7032b678d92ab03360dc7bb8faae8))
+
+### [0.2.8](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.7...v0.2.8) (2024-01-06)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 展示netlify支持 ([410b180](https://github.com/Moonofweisheng/wot-design-uni/commit/410b180ec9c660ab9c49d6eb203d53c35919c512))
+
+### [0.2.7](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.5...v0.2.7) (2024-01-06)
+
+
+### ✨ Features | 新功能
+
+* ✨ 优化provide/inject的使用方式 ([892f467](https://github.com/Moonofweisheng/wot-design-uni/commit/892f4675a848ee3d4c965c36d5c4034aa5806b6d))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 文档网站增加自定义footer ([dd8bc00](https://github.com/Moonofweisheng/wot-design-uni/commit/dd8bc003eedcdc43cdd60bb896c897d108dd4a51))
+* ✏️ 修复vitepress自定义footer展示错误的问题 ([c0701d5](https://github.com/Moonofweisheng/wot-design-uni/commit/c0701d584e5d9b84e6d913dd23666b80d803407b))
+
+### [0.2.6](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.5...v0.2.6) (2024-01-06)
+
+
+### ✨ Features | 新功能
+
+* ✨ 优化provide/inject的使用方式 ([892f467](https://github.com/Moonofweisheng/wot-design-uni/commit/892f4675a848ee3d4c965c36d5c4034aa5806b6d))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 文档网站增加自定义footer ([dd8bc00](https://github.com/Moonofweisheng/wot-design-uni/commit/dd8bc003eedcdc43cdd60bb896c897d108dd4a51))
+
+### [0.2.5](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.4...v0.2.5) (2023-12-28)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Form 导入FormRules、ErrorMessage时未指定为type的问题 ([c88c84e](https://github.com/Moonofweisheng/wot-design-uni/commit/c88c84e8b71fc2404643a623c28f4953ffe36e71))
+* 🐛 修复 SwipeAction 组件在H5端导致页面无法上下滚动的问题 ([1f68ce1](https://github.com/Moonofweisheng/wot-design-uni/commit/1f68ce13c8109dd92ca4bf055f66aa8dff24c83d)), closes [#149](https://github.com/Moonofweisheng/wot-design-uni/issues/149)
+
+### [0.2.4](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.3...v0.2.4) (2023-12-27)
+
+### [0.2.3](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.2...v0.2.3) (2023-12-27)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 修复动态表单演示页面标题错误的问题 ([7c65359](https://github.com/Moonofweisheng/wot-design-uni/commit/7c65359c88614ae53c4800d0946d8e09ef547a26))
+
+### [0.2.2](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.1...v0.2.2) (2023-12-26)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 移除 Swiper 的list中不必填的属性 ([672f680](https://github.com/Moonofweisheng/wot-design-uni/commit/672f680051009edd23a67d4e32722839f519d9ba))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 修复 Textarea 文档示例错误的问题 ([7da3a4c](https://github.com/Moonofweisheng/wot-design-uni/commit/7da3a4cdfe35f87193f57139de0819130424d6ea))
+* ✏️ 优化 Form 相关组件的文档介绍 ([6a0a7a7](https://github.com/Moonofweisheng/wot-design-uni/commit/6a0a7a730fcd8904609f8a48339e1079baf3e9be))
+
+### [0.2.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.2.0...v0.2.1) (2023-12-25)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ PassowrdInput 密码输入框组件增加文档标题 ([cccc4cc](https://github.com/Moonofweisheng/wot-design-uni/commit/cccc4cc0d4952f594e5387bad32a7248009ebd9e))
+
+## [0.2.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.70...v0.2.0) (2023-12-24)
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增 Form 表单组件 ([c8086d6](https://github.com/Moonofweisheng/wot-design-uni/commit/c8086d624c01bfbae3b9dfc324d33d6bfe46e041))
+* ✨ 新增 PasswordInput 密码输入框 ([b8c68f9](https://github.com/Moonofweisheng/wot-design-uni/commit/b8c68f92f7ddbf3ae2a58bf36593a0cd0340f225))
+* ✨ 新增 textarea 文本域组件 ([ed56bcd](https://github.com/Moonofweisheng/wot-design-uni/commit/ed56bcdb0337c198e8834182d47d1cd83513091d))
+* ✨ 增加父子组件 Provide/Inject 的hooks ([eb971d4](https://github.com/Moonofweisheng/wot-design-uni/commit/eb971d4e86733b0337de0c63f26b373424a842f0))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Input 组件在支付宝平台存在一个默认padding的问题 ([921c906](https://github.com/Moonofweisheng/wot-design-uni/commit/921c90606e05ea1b29cdee39cde7858907b2cd4d))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 调整主题定制相关文档 ([2d5b1af](https://github.com/Moonofweisheng/wot-design-uni/commit/2d5b1af2787d33ec24eb6e6ab9db6ff941d80c2b))
+* ✏️ 增加 textarea 文本域组件功能的迁移说明 ([61ebc7d](https://github.com/Moonofweisheng/wot-design-uni/commit/61ebc7db1e1db3e8634a87c24fae0869f4b6f17b))
+* ✏️ PasswordInput 密码输入框文档增加版本介绍 ([56ccf60](https://github.com/Moonofweisheng/wot-design-uni/commit/56ccf6005e502237e1ff45b5b52e852b402a10c9))
+
+### [0.1.70](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.69...v0.1.70) (2023-12-23)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 picker 的列value为0时回显异常的问题 ([2ba93c3](https://github.com/Moonofweisheng/wot-design-uni/commit/2ba93c328c54c41b6e1e9ead946e9c46e278ebb9)), closes [#155](https://github.com/Moonofweisheng/wot-design-uni/issues/155)
+
+### [0.1.69](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.68...v0.1.69) (2023-12-13)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Notify 使用文档错误的问题 ([3fe6423](https://github.com/Moonofweisheng/wot-design-uni/commit/3fe6423c9c6727eaa3655029bf862b9be182b70b)), closes [#148](https://github.com/Moonofweisheng/wot-design-uni/issues/148)
+
+### [0.1.68](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.67...v0.1.68) (2023-12-07)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 增加 Gap 组件的文档 ([9e3a8c1](https://github.com/Moonofweisheng/wot-design-uni/commit/9e3a8c1506f9ef93f9f0155ac948c8bc4d215ea8))
+
+### [0.1.67](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.66...v0.1.67) (2023-12-06)
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增 Gap 间隔槽组件 ([#147](https://github.com/Moonofweisheng/wot-design-uni/issues/147)) ([fa7cd16](https://github.com/Moonofweisheng/wot-design-uni/commit/fa7cd163810cbcd63fc2a99a6a92ccd8a803b2f1))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Picker组件v-model数据不更新的问题 ([e60f475](https://github.com/Moonofweisheng/wot-design-uni/commit/e60f47538130625a8c8f93e3a6795b7e71588002)), closes [#146](https://github.com/Moonofweisheng/wot-design-uni/issues/146)
+
+### [0.1.66](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.65...v0.1.66) (2023-12-01)
+
+
+### ✨ Features | 新功能
+
+* ✨ Tag 组件type增加属性值default ([#143](https://github.com/Moonofweisheng/wot-design-uni/issues/143)) ([48f0e4b](https://github.com/Moonofweisheng/wot-design-uni/commit/48f0e4b3c484755a0da4eb11fa814c6b52be74b1))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 ActionSheet 组件设置custom-class无效的问题 ([1e5bcf7](https://github.com/Moonofweisheng/wot-design-uni/commit/1e5bcf7d0a8be66b80de81a0359d3fb429fdf52d))
+
+### [0.1.65](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.64...v0.1.65) (2023-11-29)
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增 NumberKeyboard 数字键盘组件 ([#139](https://github.com/Moonofweisheng/wot-design-uni/issues/139)) ([7bb4455](https://github.com/Moonofweisheng/wot-design-uni/commit/7bb4455c6d9eca179ba174b8ad0da6ae8a09defc))
+* Tag新增类型标签添加slot ([7977dbb](https://github.com/Moonofweisheng/wot-design-uni/commit/7977dbbe3565eb06b700f2c55a31803647760fa9))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 新增关于 Tag 组件的add插槽的介绍 ([537fa5e](https://github.com/Moonofweisheng/wot-design-uni/commit/537fa5ebf8dcdc14ee12fc1f1e5a5f829653a14a))
+
+### [0.1.64](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.63...v0.1.64) (2023-11-25)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复DateTimePicker标题展示和模式为区间时before-confirm参数错误的问题 ([7bcd12b](https://github.com/Moonofweisheng/wot-design-uni/commit/7bcd12ba633224dd42b160f0b43fadc99ac76707))
+
+### [0.1.63](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.62...v0.1.63) (2023-11-23)
+
+
+### ✨ Features | 新功能
+
+* ✨ CountDown 倒计时组件支持custom-class和custom-style ([dd60d6d](https://github.com/Moonofweisheng/wot-design-uni/commit/dd60d6df855cc49eba36beb7bcfb9eeb96ed0c82))
+* ✨ Search 搜索组件支持自动聚焦和清空后自动聚焦 ([2e3ab63](https://github.com/Moonofweisheng/wot-design-uni/commit/2e3ab63d3dad582c44d9d9f8d2b57e21ee22f380))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 修复文档中config-provider等页面的错误 ([f71e641](https://github.com/Moonofweisheng/wot-design-uni/commit/f71e6412e770f2043e4cb9a35950a68aacf0e542))
+
+### [0.1.62](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.61...v0.1.62) (2023-11-22)
+
+
+### ✨ Features | 新功能
+
+* ✨ Badge 徽标组件支持控制是否显示0值 ([65cfb2c](https://github.com/Moonofweisheng/wot-design-uni/commit/65cfb2ca15c29783f6de48de0bda4ddc3d43664a))
+* ✨ Upload 上传组件支持h5端获取文件后缀名 ([59fe70c](https://github.com/Moonofweisheng/wot-design-uni/commit/59fe70c0d0c55c7ecca26902b41599be94e34fe3))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 优化 Upload 文档中关于云存储内容的样式 ([607ce05](https://github.com/Moonofweisheng/wot-design-uni/commit/607ce05100ffef9c5c98b503e580a718551f5552))
+
+### [0.1.61](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.60...v0.1.61) (2023-11-20)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 修复 Tag 标签组件文档错乱的问题 ([502203b](https://github.com/Moonofweisheng/wot-design-uni/commit/502203bebf08d7e6851b8dd2f94768f6c620da26))
+* ✏️ ImgCropper 组件演示页面增加微信小程序隐私协议弹框 ([3af9246](https://github.com/Moonofweisheng/wot-design-uni/commit/3af9246d1f1876ba3c83f6829a9716ad37ae5829))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Calendar 日历组件存在未定义属性导致警告的问题 ([d0d3152](https://github.com/Moonofweisheng/wot-design-uni/commit/d0d3152a5ca1a3e06135b12f4565211258619d1f))
+* 🐛 修复 CountDown 倒计时组件文档手动控制示例错误的问题 ([3c373fb](https://github.com/Moonofweisheng/wot-design-uni/commit/3c373fbf3af02c8a73ddd3a4063f9408ec4f33ff))
+* 🐛 修复 SelectPicker 组件loading状态仍可以滚动的问题 ([c5a1bff](https://github.com/Moonofweisheng/wot-design-uni/commit/c5a1bfff576aad8a6f03288a6a12a8ed24f776f2))
+
+
+### ✨ Features | 新功能
+
+* ✨ Upload 上传组件支持上传至云存储 ([523a6be](https://github.com/Moonofweisheng/wot-design-uni/commit/523a6be40b065c4cc28cfe81fdcb200142d9a455))
+
+### [0.1.60](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.59...v0.1.60) (2023-11-20)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 修复 CountDown 倒计时组件默认slot用法的介绍错误的问题 ([2fbb88f](https://github.com/Moonofweisheng/wot-design-uni/commit/2fbb88fcd9fe21de09637d48149278d9aef5e1d9))
+
+### [0.1.59](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.58...v0.1.59) (2023-11-19)
+
+### [0.1.58](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.57...v0.1.58) (2023-11-19)
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增 CountDown 倒计时组件 ([a805d04](https://github.com/Moonofweisheng/wot-design-uni/commit/a805d04827600525c08fbc1848cb3a524b48e81a))
+* ✨ CountDown 倒计时组件支持小程序 ([22f249a](https://github.com/Moonofweisheng/wot-design-uni/commit/22f249ae5bdedea1ecebfe31350c7b5a1e394f2e))
+
+### [0.1.57](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.56...v0.1.57) (2023-11-17)
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增 Fab 悬浮动作按钮组件 ([3c526fe](https://github.com/Moonofweisheng/wot-design-uni/commit/3c526feb102ccf17da0678a6e1c004bb82d57f0f))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 修复 Cell 组件点击反馈的介绍错误的问题 ([9096d81](https://github.com/Moonofweisheng/wot-design-uni/commit/9096d81f514348d6103f33590387d0406b217198))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Table 表格组件数字英文换行失效的问题 ([47ac339](https://github.com/Moonofweisheng/wot-design-uni/commit/47ac3390cb58d250129a9db6ade8d90f980855a1))
+
+### [0.1.56](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.55...v0.1.56) (2023-11-12)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Tabbar 标签栏组件 bordered 属性无效的问题 ([69c2656](https://github.com/Moonofweisheng/wot-design-uni/commit/69c265638c6fc36a1479a37c052a572da333006f))
+
+### [0.1.55](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.54...v0.1.55) (2023-11-12)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 修正README.md 中[贡献指南]链接错误,跳转失败的问题。 ([071de88](https://github.com/Moonofweisheng/wot-design-uni/commit/071de88f98fa90492032193606941fbcdfe9283d))
+
+
+### ✨ Features | 新功能
+
+* ✨ Swiper 轮播图组件增加imageMode属性支持自定义图片裁剪缩放模式 ([4205c01](https://github.com/Moonofweisheng/wot-design-uni/commit/4205c0149d3224e318ef21563e96f0a843ad13bc))
+
+### [0.1.54](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.53...v0.1.54) (2023-11-10)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 修正ColPicker多列选择器v-model类型提示使用Record[]实际上的数据是单维数组的问题 ([c490ac6](https://github.com/Moonofweisheng/wot-design-uni/commit/c490ac607e6f9eb7207b90943b83ce1696a30fd4))
+
+### [0.1.53](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.52...v0.1.53) (2023-11-09)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Input 输入框组件包含无用显示内容的问题 ([13a3106](https://github.com/Moonofweisheng/wot-design-uni/commit/13a3106055d66083d640912bfff67f2e08781f03))
+
+### [0.1.52](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.51...v0.1.52) (2023-11-09)
+
+
+### ✨ Features | 新功能
+
+* ✨ Input绑定值为null时的警告从error改为warn ([70f1407](https://github.com/Moonofweisheng/wot-design-uni/commit/70f1407eec057668da0117c9861b523ab667da70))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Badge 徽标组件暗黑模式下边框颜色未兼容的问题 ([c0a0b5a](https://github.com/Moonofweisheng/wot-design-uni/commit/c0a0b5aaea238f144978a3a9b2ab6db202dfdc21)), closes [#115](https://github.com/Moonofweisheng/wot-design-uni/issues/115)
+
+### [0.1.51](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.50...v0.1.51) (2023-11-06)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复引入错误依赖的问题 ([15bc876](https://github.com/Moonofweisheng/wot-design-uni/commit/15bc876a3026319c88ce4b757593243f9869ce39))
+
+### [0.1.50](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.49...v0.1.50) (2023-11-06)
+
+
+### ✨ Features | 新功能
+
+* ✨ SidebarItem、TabbarItem、GridItem组件增加徽标自定义属性badge-props ([7143098](https://github.com/Moonofweisheng/wot-design-uni/commit/71430989bff81a137fc5199eeeefe0a4da3ce31d))
+
+### [0.1.49](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.48...v0.1.49) (2023-11-05)
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增 Sidebar 侧边栏组件 ([#113](https://github.com/Moonofweisheng/wot-design-uni/issues/113)) ([d189378](https://github.com/Moonofweisheng/wot-design-uni/commit/d189378a02aeb36c275218358849a187e88ce687))
+
+### [0.1.48](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.47...v0.1.48) (2023-11-04)
+
+
+### ✨ Features | 新功能
+
+* ✨ Input 输入框增加支持微信小程序原生属性always-embed ([57d00ec](https://github.com/Moonofweisheng/wot-design-uni/commit/57d00ececd9849a2d21f59fc863b6ad8933419d8))
+
+### [0.1.47](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.46...v0.1.47) (2023-11-02)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 修复 Image 图片组件演示demo样式不友好的问题 ([cbdab19](https://github.com/Moonofweisheng/wot-design-uni/commit/cbdab1959efff642a60a351ffd6454dcd173b9a4))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Input 组件为textarea类型时show-confirm-bar不生效的问题 ([eebec8a](https://github.com/Moonofweisheng/wot-design-uni/commit/eebec8a74fa9399bfd305cadb1a9b6a526e88568))
+* 🐛 img 预览demo布局错位 ([0397809](https://github.com/Moonofweisheng/wot-design-uni/commit/0397809d81010e109c238eefea56c82bd06a50cb))
+
+
+### ✨ Features | 新功能
+
+* ✨ 图片添加圆角大小设置 ([98edaed](https://github.com/Moonofweisheng/wot-design-uni/commit/98edaed6cb1c81b9ed6e05561814aaa51b31b2b3))
+* ✨ Badge 徽标组件增加customStyle自定义样式 ([d194106](https://github.com/Moonofweisheng/wot-design-uni/commit/d194106f07fb46f6a979967ba327dee1b41ca70e))
+
+### [0.1.46](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.45...v0.1.46) (2023-11-02)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Tabs 组件在微信小程序端有概率不绘制下划线的问题 ([d70ec65](https://github.com/Moonofweisheng/wot-design-uni/commit/d70ec65998d1ca1fbdbd3b4ef1af4a292a597f55))
+
+### [0.1.45](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.44...v0.1.45) (2023-11-01)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Switch 开关组件自定义大小无效的问题 ([15ffa1f](https://github.com/Moonofweisheng/wot-design-uni/commit/15ffa1f9172d3c11722c71ca370c1016e25f2b41))
+
+### [0.1.44](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.43...v0.1.44) (2023-11-01)
+
+
+### ✨ Features | 新功能
+
+* ✨ 使用 useQueue hook替换clickOut实现关闭多个气泡等组件的功能 ([3a24999](https://github.com/Moonofweisheng/wot-design-uni/commit/3a24999c1e28414b12806cad3c3bc6f7a445593f))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 优化演示项目首页样式 ([e98f30e](https://github.com/Moonofweisheng/wot-design-uni/commit/e98f30e0125e287d2bc5cdbcfff69a35cb7436d8))
+
+### [0.1.43](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.42...v0.1.43) (2023-10-31)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Tooltip 文字提示组件微信端关闭按钮样式错误的问题 ([ec1b949](https://github.com/Moonofweisheng/wot-design-uni/commit/ec1b9490b9517d0e4ebe4a5130a418a684b1a589))
+
+### [0.1.42](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.41...v0.1.42) (2023-10-31)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Popover、Tooltip 组件展开过程中无法遮盖图片的问题 ([db009c1](https://github.com/Moonofweisheng/wot-design-uni/commit/db009c1229413f7ecc446e3e3a1db4d7678268b3))
+
+### [0.1.41](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.40...v0.1.41) (2023-10-31)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Popover、Tooltip 组件展开切换动画不流畅的问题 ([c765b08](https://github.com/Moonofweisheng/wot-design-uni/commit/c765b085a6018433bb95fd7647c091393e2e6e7c)), closes [#101](https://github.com/Moonofweisheng/wot-design-uni/issues/101)
+
+### [0.1.40](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.39...v0.1.40) (2023-10-30)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 移除文档中 Search 组件未支持的插槽 ([325e140](https://github.com/Moonofweisheng/wot-design-uni/commit/325e14046de38eb7c4e792a64a290c9997af5cba))
+
+### [0.1.39](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.38...v0.1.39) (2023-10-29)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 DateTimePicker 日期选择器组件双向绑定错误的问题 ([1b13873](https://github.com/Moonofweisheng/wot-design-uni/commit/1b13873cef4b7c760698abce7dca500cd548c660))
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增 Table 表格组件 ([#98](https://github.com/Moonofweisheng/wot-design-uni/issues/98)) ([c8395f8](https://github.com/Moonofweisheng/wot-design-uni/commit/c8395f8a7e1ad041b003672081b715a7c755adc1))
+* ✨ Collapse 折叠面板组件增加分割线 ([adc6633](https://github.com/Moonofweisheng/wot-design-uni/commit/adc6633ad80b74e801a48a50917c9a2d378de9e0)), closes [#97](https://github.com/Moonofweisheng/wot-design-uni/issues/97)
+
+### [0.1.38](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.37...v0.1.38) (2023-10-25)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Upload 组件showLimitNum属性名拼写错误的问题 ([301cbff](https://github.com/Moonofweisheng/wot-design-uni/commit/301cbff20facf60b5645108972f22c8c14235f87))
+
+### [0.1.37](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.36...v0.1.37) (2023-10-25)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 修复Tabbar组件类型警告的问题并优化文档相关链接 ([28c3cef](https://github.com/Moonofweisheng/wot-design-uni/commit/28c3cefdfc24f3f6f2669de5f93456a0db281f72))
+* ✏️ issues 模板更新 ([e34c5cd](https://github.com/Moonofweisheng/wot-design-uni/commit/e34c5cded1c850d22165c544a3c6a351701479ec))
+
+### [0.1.36](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.35...v0.1.36) (2023-10-21)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Tabs 指定name时双向绑定值仍为index的问题 ([756cad8](https://github.com/Moonofweisheng/wot-design-uni/commit/756cad8d6fcaefb0bf73f1cd2b9f4a24f5827b37)), closes [#91](https://github.com/Moonofweisheng/wot-design-uni/issues/91)
+
+### [0.1.35](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.34...v0.1.35) (2023-10-21)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Tabs 组件通过name匹配时抛出异常的问题 ([b36fb1f](https://github.com/Moonofweisheng/wot-design-uni/commit/b36fb1f9def0aa99c521ffc20c6cae8074b56838)), closes [#91](https://github.com/Moonofweisheng/wot-design-uni/issues/91)
+
+### [0.1.34](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.33...v0.1.34) (2023-10-18)
+
+
+### ✨ Features | 新功能
+
+* ✨ SelectPicker 单复选选择器增加 scroll-into-view 属性支持定位到选中值 ([00b27c1](https://github.com/Moonofweisheng/wot-design-uni/commit/00b27c187438426471dab2ea15bc39d627773ab2)), closes [#68](https://github.com/Moonofweisheng/wot-design-uni/issues/68)
+
+### [0.1.33](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.32...v0.1.33) (2023-10-17)
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增 Navbar 导航栏组件 ([#86](https://github.com/Moonofweisheng/wot-design-uni/issues/86)) ([5f66f71](https://github.com/Moonofweisheng/wot-design-uni/commit/5f66f713fae9e693fda4a472bc3e0767a1a6d3e8))
+
+### [0.1.32](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.31...v0.1.32) (2023-10-16)
+
+
+### ✨ Features | 新功能
+
+* ✨ Tabs 组件调整为受控组件 ([b2a70bc](https://github.com/Moonofweisheng/wot-design-uni/commit/b2a70bc8f32800119924b29283db760af8a3ddb1)), closes [#82](https://github.com/Moonofweisheng/wot-design-uni/issues/82)
+
+### [0.1.31](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.30...v0.1.31) (2023-10-16)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复wd-popup组件的click-modal方法错误调用的问题 ([224e3e5](https://github.com/Moonofweisheng/wot-design-uni/commit/224e3e53f912a236e8e24f8afef64fa09f6a89aa))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 更新文档中关于组件数量的介绍 ([4fa7355](https://github.com/Moonofweisheng/wot-design-uni/commit/4fa7355e69a8bb32d1c9924cfc717caaf3345ee5))
+* ✏️ 增加 Overlay 遮罩层组件的文档 ([3bca4b6](https://github.com/Moonofweisheng/wot-design-uni/commit/3bca4b65c2bc7cd7f90e8b9513c619799f9a438b))
+
+### [0.1.30](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.29...v0.1.30) (2023-10-14)
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增 Overlay 遮罩层组件 ([41b2c4f](https://github.com/Moonofweisheng/wot-design-uni/commit/41b2c4f3677dcce9c3e18875b7a1ec32d02b3d6a))
+* ✨ Popup 弹出层组件增加 lock-scroll 属性 ([a6987e6](https://github.com/Moonofweisheng/wot-design-uni/commit/a6987e65da2f121d4e95c1b5cb271ed8f9a06e58))
+
+### [0.1.29](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.28...v0.1.29) (2023-10-13)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Tabbar 标签栏组件固定底部时不设置placeholder情况下仍占据相应空间的问题 ([b58f9df](https://github.com/Moonofweisheng/wot-design-uni/commit/b58f9dfc8230e9427f2af658c8315c5b022b232c))
+
+### [0.1.28](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.27...v0.1.28) (2023-10-12)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 文档样式优化 ([f21ecb9](https://github.com/Moonofweisheng/wot-design-uni/commit/f21ecb9dfbfbf0afe49a760d24ebdc08e4799717))
+
+### [0.1.27](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.26...v0.1.27) (2023-10-12)
+
+
+### ⚡ Performance Improvements | 性能优化
+
+* ⚡ Segmented 分段器组件兼容支付宝小程序 ([3fd57a6](https://github.com/Moonofweisheng/wot-design-uni/commit/3fd57a600b537b945a8224bb97344baa9b0929e0))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 调整文档中图片的CDN地址 ([f704568](https://github.com/Moonofweisheng/wot-design-uni/commit/f704568f0299acbd3cc2d88934bfa1641b6cc792))
+* ✏️ 修复文档中根节点错写为根结点的问题 ([6da4145](https://github.com/Moonofweisheng/wot-design-uni/commit/6da414503ceb8b6de680b10332af45dbbbe7229d))
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增 Tabbar 标签栏组件 ([aa0bf19](https://github.com/Moonofweisheng/wot-design-uni/commit/aa0bf194865e381af41f7afa18e46105e0c812a9))
+* ✨ Icon 组件新增图标并支持第三方iconfont ([bc241ac](https://github.com/Moonofweisheng/wot-design-uni/commit/bc241acfc103309f196f4c04e08288526a056073))
+
+### [0.1.26](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.25...v0.1.26) (2023-10-10)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Slider 滑块组件双向滑动时右边滑块百分比计算错误的问题 ([92db0f2](https://github.com/Moonofweisheng/wot-design-uni/commit/92db0f2c7fb60b04e1562c55f6296b1b2b456144))
+
+### [0.1.25](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.24...v0.1.25) (2023-10-10)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Silder 滑块组件双向滑动时自定义最大值小于100无法滚动到最大值的问题 ([a70afa4](https://github.com/Moonofweisheng/wot-design-uni/commit/a70afa43239bc233ee0250e26227dbacd5c7021b)), closes [#69](https://github.com/Moonofweisheng/wot-design-uni/issues/69)
+
+### [0.1.24](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.23...v0.1.24) (2023-10-10)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 优化 Badge 徽标组件超出max的显示并修复分段器组件错误依赖的问题 ([a48adc8](https://github.com/Moonofweisheng/wot-design-uni/commit/a48adc8395ab167bb88a7a647420b467d7e4c46d))
+
+### [0.1.23](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.22...v0.1.23) (2023-09-28)
+
+
+### ✨ Features | 新功能
+
+* ✨ 增加 segmented 分段器组件 ([00f52c8](https://github.com/Moonofweisheng/wot-design-uni/commit/00f52c89e0aebc86f70aa8a7391ce1f17412333d))
+
+### [0.1.22](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.21...v0.1.22) (2023-09-25)
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增 Swiper 轮播图组件 ([cf9fe98](https://github.com/Moonofweisheng/wot-design-uni/commit/cf9fe9807efe863e786bc56eedf506647ac143d2))
+
+### [0.1.21](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.20...v0.1.21) (2023-09-22)
+
+### [0.1.20](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.19...v0.1.20) (2023-09-20)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 恢复展示 Circle 组件的演示Demo ([c2cba05](https://github.com/Moonofweisheng/wot-design-uni/commit/c2cba056578593172998f03592652ab63ed23aef))
+* ✏️ 文档演示项目 Circle 页面文件调整为大写 ([fff8de8](https://github.com/Moonofweisheng/wot-design-uni/commit/fff8de8f8d5f829c5b054d863905a7bb116f45f4))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Circle 组件重复创建canvas导致警告的问题 ([6917201](https://github.com/Moonofweisheng/wot-design-uni/commit/69172016ba840458dd40755050929a8231fd4cd5))
+* 🐛 修复 Skeleton 骨架屏组件编译到APP端异常的问题([#52](https://github.com/Moonofweisheng/wot-design-uni/issues/52)) ([7a9a31b](https://github.com/Moonofweisheng/wot-design-uni/commit/7a9a31bd5db76419408a114fbed02c108b972049))
+* 🐛 修复 Tag 组件编译到微信小程序平台样式错误的问题([#53](https://github.com/Moonofweisheng/wot-design-uni/issues/53)) ([6aec241](https://github.com/Moonofweisheng/wot-design-uni/commit/6aec2414a384c68e7b4b09f57d028173be942f7b))
+
+### [0.1.19](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.18...v0.1.19) (2023-09-20)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Cell、Grid 组件跳转方法在编译到H5端失效的问题([#49](https://github.com/Moonofweisheng/wot-design-uni/issues/49)) ([51425b1](https://github.com/Moonofweisheng/wot-design-uni/commit/51425b107a8b262bf9c1f0c7ee41bb8d56a12837))
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增 Circle 环形进度条组件,支持进度渐变动画 ([7c38a6f](https://github.com/Moonofweisheng/wot-design-uni/commit/7c38a6f03e76d91d82a80d2a4cdd875acfb7290b))
+
+### [0.1.18](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.17...v0.1.18) (2023-09-19)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ README中增加展示 star-history ([e7cd794](https://github.com/Moonofweisheng/wot-design-uni/commit/e7cd794201435ae8109b562daf70def74ab4ac98))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 PickerView 组件选中框被遮盖的问题([#46](https://github.com/Moonofweisheng/wot-design-uni/issues/46)) ([a60440b](https://github.com/Moonofweisheng/wot-design-uni/commit/a60440b8c52723e4c194b103e9b1b236a7cb29fe))
+
+### [0.1.17](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.16...v0.1.17) (2023-09-19)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复 Slider 滑块组件最大值和最小值不生效的问题([#43](https://github.com/Moonofweisheng/wot-design-uni/issues/43)) ([0fa7f46](https://github.com/Moonofweisheng/wot-design-uni/commit/0fa7f46718e918007491a3d9494292a003924243))
+
+### [0.1.16](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.15...v0.1.16) (2023-09-18)
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增 WaterMark 水印组件 ([70d8c25](https://github.com/Moonofweisheng/wot-design-uni/commit/70d8c2546135fce1709edb0e1ba0c3b66c1e9e2e))
+
+### [0.1.15](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.14...v0.1.15) (2023-09-18)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 优化DateTimePicker组件关于time类型选择器绑定值格式的介绍 ([9e958c7](https://github.com/Moonofweisheng/wot-design-uni/commit/9e958c73f1d09ee0e02097e3ca8eeabfcc1bc59b))
+
+### [0.1.14](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.13...v0.1.14) (2023-09-14)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 增加QQ群沟通渠道 ([80efad9](https://github.com/Moonofweisheng/wot-design-uni/commit/80efad950613d65e7e65d305ad6efe7cd0e201d8))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复SelectPicker 单复选选择器单选可搜索状态搜索报错的问题([#38](https://github.com/Moonofweisheng/wot-design-uni/issues/38)) ([01cf01d](https://github.com/Moonofweisheng/wot-design-uni/commit/01cf01d46fbc4ac35f0c09e3db6f6d18b2d3455e))
+
+### [0.1.13](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.12...v0.1.13) (2023-09-12)
+
+
+### ✨ Features | 新功能
+
+* ✨ Tabs组件增加animated属性支持切换动画 ([2572ea4](https://github.com/Moonofweisheng/wot-design-uni/commit/2572ea4c31f834bb9c8776322c24148ca2bda4e2))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Popover组件content属性必填警告的问题 ([4d8f8e6](https://github.com/Moonofweisheng/wot-design-uni/commit/4d8f8e640742b0588b91b0a5b82a062b976f8306))
+
+### [0.1.12](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.11...v0.1.12) (2023-09-12)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 修复文档中定制主题和反馈组件404的问题 ([c0302ad](https://github.com/Moonofweisheng/wot-design-uni/commit/c0302ada89ea15039ef516f4a425b5e18512c2d5))
+* ✏️ 修复Button组件文档中loading属性重复的问题 ([b26da5a](https://github.com/Moonofweisheng/wot-design-uni/commit/b26da5aba7d698adc75c3e1d143660a698ce5de8))
+
+### [0.1.11](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.10...v0.1.11) (2023-09-08)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复文档中部分页面存在死链问题 ([b3e5cbe](https://github.com/Moonofweisheng/wot-design-uni/commit/b3e5cbef1116d9a356f7c9c18dffc1caec20ea22))
+
+### [0.1.10](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.9...v0.1.10) (2023-09-08)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 将驼峰命名的文档文件改为短横线命名便于爬虫爬取及搜索 ([497e991](https://github.com/Moonofweisheng/wot-design-uni/commit/497e991903559c9d62dcb1b00842ee377d70b445))
+* ✏️ 优化icon组件文档的体验,支持点击图标复制使用示例 ([ce0526b](https://github.com/Moonofweisheng/wot-design-uni/commit/ce0526b99dcd203d3f1081a8fd6a0551da88b9b8))
+
+### [0.1.9](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.8...v0.1.9) (2023-09-08)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复npm包未配置主入口导致在使用Hbx创建的项目中通过npm安装编译警告的问题 ([fa95a0d](https://github.com/Moonofweisheng/wot-design-uni/commit/fa95a0d19b6e13157154405ddaa2525545bd9f7e))
+
+### [0.1.8](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.7...v0.1.8) (2023-09-07)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复ActionSheet等组件在H5端隐藏导航栏或在tabbar页面高度计算错误的问题 ([39201cb](https://github.com/Moonofweisheng/wot-design-uni/commit/39201cbeddde1c7ea883ad331c0607bced755475))
+* 🐛 修复pmpm安装时ts导入类型信息在H5平台报错的问题 ([237c03c](https://github.com/Moonofweisheng/wot-design-uni/commit/237c03c6ae8d041c565ca6bb984765be4418f9e1))
+
+### [0.1.7](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.6...v0.1.7) (2023-09-06)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复tabs组件change事件执行两次的问题 ([819059a](https://github.com/Moonofweisheng/wot-design-uni/commit/819059abe19fcf8f9646703fcc7a472b6ae62d4e))
+
+### [0.1.6](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.5...v0.1.6) (2023-09-06)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Input组件内置变量showClear和showWordCount定义为props的问题 ([8021a35](https://github.com/Moonofweisheng/wot-design-uni/commit/8021a35ac9d05d549909531ff4f1c7325127833e))
+* 🐛 修复pnpm安装时运行到h5平台Ref导入报错的问题 ([39c68bf](https://github.com/Moonofweisheng/wot-design-uni/commit/39c68bf57720c1a12b99412c96e46b341cf536b5))
+
+### [0.1.5](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.4...v0.1.5) (2023-09-05)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 增加Stickty和Tabs组件关于H5端自定义导航栏的offset-top的处理方案 ([8a03c4d](https://github.com/Moonofweisheng/wot-design-uni/commit/8a03c4da64296e88a7b3aff5efed4ac04cd039b6))
+
+### [0.1.4](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.3...v0.1.4) (2023-09-05)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复CollapseItem组件在微信小程序中展开/收起时指向图标未跟随转动的问题 ([7d0eeae](https://github.com/Moonofweisheng/wot-design-uni/commit/7d0eeae92f2f7b7664a23f7d548187ed8075d5b0))
+
+### [0.1.3](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.2...v0.1.3) (2023-09-03)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复通过npm安装时配置自动导入Notify、Toast、Message组件无法打开的问题 ([f45b739](https://github.com/Moonofweisheng/wot-design-uni/commit/f45b73907227c25d9c2fd7b7f0018cc2ab5c47d1))
+
+### [0.1.2](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.1...v0.1.2) (2023-09-03)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复部分js引入路径问题 ([67cdfae](https://github.com/Moonofweisheng/wot-design-uni/commit/67cdfaebf9478e286758b2ef851e1a44dc8565a6))
+
+### [0.1.1](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.1.0...v0.1.1) (2023-09-02)
+
+## [0.1.0](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.14...v0.1.0) (2023-09-02)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ ConfigProvider组件演示页面增加手动切换暗黑模式 ([e5f55c7](https://github.com/Moonofweisheng/wot-design-uni/commit/e5f55c72fc1ed6e603f22e501d6cff9d8212a976))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Grid组件不展示border的问题 ([819bbbc](https://github.com/Moonofweisheng/wot-design-uni/commit/819bbbca6ab1c999096936da5e9d2dd664e480ce))
+* 🐛 修复MessageBox组件取消按钮不展示的问题 ([d8563d8](https://github.com/Moonofweisheng/wot-design-uni/commit/d8563d833d75b27d0c497c6c945fae8c00ef8dc7))
+
+### [0.0.14](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.13...v0.0.14) (2023-09-02)
+
+
+### ✨ Features | 新功能
+
+* ✨ 优化缺省状态组件StautsTip,增加支持自定义url和图片大小 ([f463d32](https://github.com/Moonofweisheng/wot-design-uni/commit/f463d3258a954e64352df36004d34b0f12be9a8f))
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复util中addUnit无法处理有单位的字符串的问题 ([8967540](https://github.com/Moonofweisheng/wot-design-uni/commit/8967540ad0f3f0ad7426ee79571cfc4dee6c4d0c))
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 完善和修复文档中不详细不正确的内容 ([d1b118e](https://github.com/Moonofweisheng/wot-design-uni/commit/d1b118ea78a797499f465269d3a838c0770d993a))
+
+### [0.0.13](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.12...v0.0.13) (2023-09-01)
+
+
+### ✏️ Documentation | 文档
+
+* ✏️ 官网地址迁移至阿里云oss ([a98868a](https://github.com/Moonofweisheng/wot-design-uni/commit/a98868ae6213c7d7002e5a88893aabe1d0f5d11b))
+
+### [0.0.12](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.11...v0.0.12) (2023-08-30)
+
+### [0.0.11](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.10...v0.0.11) (2023-08-30)
+
+
+### ✨ Features | 新功能
+
+* ✨ util工具类提供更好的类型提示 ([4fed439](https://github.com/Moonofweisheng/wot-design-uni/commit/4fed43926f49be6a86ebab54bb36a1a086df4ac6))
+
+### [0.0.10](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.9...v0.0.10) (2023-08-27)
+
+
+### ✨ Features | 新功能
+
+* ✨ 新增Notify组件、演示demo、文档 ([#9](https://github.com/Moonofweisheng/wot-design-uni/issues/9)) ([996fc39](https://github.com/Moonofweisheng/wot-design-uni/commit/996fc39d708699214faf2e54224b8d38a8a706f7))
+* ✨ 新增Skeleton组件、演示demo、文档 ([#12](https://github.com/Moonofweisheng/wot-design-uni/issues/12)) ([a49e22c](https://github.com/Moonofweisheng/wot-design-uni/commit/a49e22c370163ec3c93bbeb360cc89b3b3c0abc0))
+
+### [0.0.9](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.8...v0.0.9) (2023-08-25)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复Cell 单格组件 is-link 不触发 click ([ece5568](https://github.com/Moonofweisheng/wot-design-uni/commit/ece5568ecc03fd8470c2c02120b94c1ee27d55e7))
+
+### [0.0.8](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.7...v0.0.8) (2023-08-24)
+
+
+### ✨ Features | 新功能
+
+* ✨ 演示项目新增用户隐私保护指引的处理 ([4dd7efe](https://github.com/Moonofweisheng/wot-design-uni/commit/4dd7efe4049c4c815ea1bc57a7fd1819055f10bc))
+* ✨ ActionSheet组件调整为使用v-model设置显示与隐藏 ([aa92332](https://github.com/Moonofweisheng/wot-design-uni/commit/aa92332f3913be000d1aef36a8aed7f34b736ad6))
+
+### [0.0.7](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.6...v0.0.7) (2023-08-23)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复部分组件某些属性必填警告的问题 ([1b866c0](https://github.com/Moonofweisheng/wot-design-uni/commit/1b866c062eb7a4ab894d5b2ecd7b7b3fd50ef864))
+
+### [0.0.6](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.5...v0.0.6) (2023-08-22)
+
+### [0.0.5](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.4...v0.0.5) (2023-08-22)
+
+### [0.0.4](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.3...v0.0.4) (2023-08-21)
+
+
+### ✨ Features | 新功能
+
+* ✨ Picker组件优化性能 ([24dd43f](https://github.com/Moonofweisheng/wot-design-uni/commit/24dd43f3a05b7b4ce6bb897219a215f8198e64ac))
+
+### [0.0.3](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.2...v0.0.3) (2023-08-18)
+
+### [0.0.2](https://github.com/Moonofweisheng/wot-design-uni/compare/v0.0.1...v0.0.2) (2023-08-18)
+
+
+### 🐛 Bug Fixes | Bug 修复
+
+* 🐛 修复CheckBoxGroup组件的disabled属性作用在子组件上失效的问题 ([1bab820](https://github.com/Moonofweisheng/wot-design-uni/commit/1bab820c0335c89e099c597caa47af16bb998d83))
+
+### 0.0.1 (2023-08-16)
+
+
+### ✨ Features | 新功能
+
+* ✨ 适配暗黑模式 ([f5946a4](https://github.com/Moonofweisheng/wot-design-uni/commit/f5946a4b7134fed161bc123d66485e7bc91cdc68))
+* ✨ 新增 50+ 组件
diff --git a/uni_modules/wot-design-uni/components/common/AbortablePromise.ts b/uni_modules/wot-design-uni/components/common/AbortablePromise.ts
new file mode 100644
index 0000000..efe5167
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/common/AbortablePromise.ts
@@ -0,0 +1,28 @@
+export class AbortablePromise {
+ promise: Promise
+ private _reject: ((res?: any) => void) | null = null
+
+ constructor(executor: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void) {
+ this.promise = new Promise((resolve, reject) => {
+ executor(resolve, reject)
+ this._reject = reject // 保存reject方法的引用,以便在abort时调用
+ })
+ }
+ // 提供abort方法来中止Promise
+ abort(error?: any) {
+ if (this._reject) {
+ this._reject(error) // 调用reject方法来中止Promise
+ }
+ }
+
+ then(
+ onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null,
+ onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null
+ ): Promise {
+ return this.promise.then(onfulfilled, onrejected)
+ }
+
+ catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise {
+ return this.promise.catch(onrejected)
+ }
+}
diff --git a/uni_modules/wot-design-uni/components/common/abstracts/_config.scss b/uni_modules/wot-design-uni/components/common/abstracts/_config.scss
new file mode 100644
index 0000000..fe65cb4
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/common/abstracts/_config.scss
@@ -0,0 +1,7 @@
+/**
+ * SCSS 配置项:命名空间以及BEM
+ */
+$namespace: 'wd';
+$elementSeparator: '__';
+$modifierSeparator: '--';
+$state-prefix: 'is-';
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/common/abstracts/_function.scss b/uni_modules/wot-design-uni/components/common/abstracts/_function.scss
new file mode 100644
index 0000000..24c0ca0
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/common/abstracts/_function.scss
@@ -0,0 +1,89 @@
+/**
+ * 辅助函数
+ */
+@import 'config';
+$default-theme: #4d80f0 !default; // 正常色
+
+/* 转换成字符串 */
+@function selectorToString($selector) {
+ $selector: inspect($selector);
+ $selector: str-slice($selector, 2, -2);
+
+ @return $selector;
+}
+
+/* 判断是否存在 Modifier */
+@function containsModifier($selector) {
+ $selector: selectorToString($selector);
+
+ @if str-index($selector, $modifierSeparator) {
+ @return true;
+ }
+
+ @else {
+ @return false;
+ }
+}
+
+/* 判断是否存在伪类 */
+@function containsPseudo($selector) {
+ $selector: selectorToString($selector);
+
+ @if str-index($selector, ':') {
+ @return true;
+ }
+
+ @else {
+ @return false;
+ }
+}
+
+
+/**
+ * 主题色切换
+ * @params $theme-color 主题色
+ * @params $type 变暗’dark‘ 变亮 'light'
+ * @params $mix-color 自己设置的混色
+ */
+@function themeColor($theme-color, $type: "", $mix-color: "") {
+ @if $default-theme !=#4d80f0 {
+ @if $type=="dark" {
+ @return darken($theme-color, 10%);
+ }
+
+ @else if $type=="light" {
+ @return lighten($theme-color, 10%);
+ }
+
+ @else {
+ @return $theme-color;
+ }
+ }
+
+ @else {
+ @return $mix-color;
+ }
+}
+
+/**
+ * 颜色结果切换, 如果开启线性渐变色 使用渐变色,如果没有开启,那么使用主题色
+ * @params $open-linear 是否开启线性渐变色
+ * @params $deg 渐变色角度
+ * @params $theme-color 当前配色
+ * @params [Array] $set 主题色明暗设置,与 $color-list 数量对应
+ * @params [Array] $color-list 渐变色顺序, $color-list 和 $per-list 数量相同
+ * @params [Array] $per-list 渐变色比例
+ */
+@function resultColor($deg, $theme-color, $set, $color-list, $per-list) {
+ // 开启渐变
+
+ $len: length($color-list);
+ $arg: $deg;
+
+ @for $i from 1 through $len {
+ $arg: $arg + ","+ themeColor($theme-color, nth($set, $i), nth($color-list, $i)) + " "+ nth($per-list, $i);
+ }
+
+ @return linear-gradient(unquote($arg));
+
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/common/abstracts/_mixin.scss b/uni_modules/wot-design-uni/components/common/abstracts/_mixin.scss
new file mode 100644
index 0000000..3d1cd94
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/common/abstracts/_mixin.scss
@@ -0,0 +1,385 @@
+/**
+ * 混合宏
+ */
+@import "config";
+@import "function";
+
+/**
+ * BEM,定义块(b)
+ */
+@mixin b($block) {
+ $B: $namespace + "-"+ $block !global;
+
+ .#{$B} {
+ @content;
+ }
+}
+
+/* 定义元素(e),对于伪类,会自动将 e 嵌套在 伪类 底下 */
+@mixin e($element...) {
+ $selector: &;
+ $selectors: "";
+
+ @if containsPseudo($selector) {
+ @each $item in $element {
+ $selectors: #{$selectors + "." + $B + $elementSeparator + $item + ","};
+ }
+
+ @at-root {
+ #{$selector} {
+ #{$selectors} {
+ @content;
+ }
+ }
+ }
+ }
+
+ @else {
+ @each $item in $element {
+ $selectors: #{$selectors + $selector + $elementSeparator + $item + ","};
+ }
+
+ @at-root {
+ #{$selectors} {
+ @content;
+ }
+ }
+ }
+}
+
+
+
+/* 此方法用于生成穿透样式 */
+
+/* 定义元素(e),对于伪类,会自动将 e 嵌套在 伪类 底下 */
+@mixin edeep($element...) {
+ $selector: &;
+ $selectors: "";
+
+ @if containsPseudo($selector) {
+ @each $item in $element {
+ $selectors: #{$selectors + "." + $B + $elementSeparator + $item + ","};
+ }
+
+ @at-root {
+ #{$selector} {
+ :deep() {
+ #{$selectors} {
+ @content;
+ }
+ }
+ }
+ }
+ }
+
+ @else {
+ @each $item in $element {
+ $selectors: #{$selectors + $selector + $elementSeparator + $item + ","};
+ }
+
+ @at-root {
+ :deep() {
+ #{$selectors} {
+ @content;
+ }
+ }
+ }
+ }
+}
+
+
+/* 定义状态(m) */
+@mixin m($modifier...) {
+ $selectors: "";
+
+ @each $item in $modifier {
+ $selectors: #{$selectors + & + $modifierSeparator + $item + ","};
+ }
+
+ @at-root {
+ #{$selectors} {
+ @content;
+ }
+ }
+}
+
+/* 定义状态(m) */
+@mixin mdeep($modifier...) {
+ $selectors: "";
+
+ @each $item in $modifier {
+ $selectors: #{$selectors + & + $modifierSeparator + $item + ","};
+ }
+
+ @at-root {
+ :deep() {
+ #{$selectors} {
+ @content;
+ }
+ }
+ }
+}
+
+/* 对于需要需要嵌套在 m 底下的 e,调用这个混合宏,一般在切换整个组件的状态,如切换颜色的时候 */
+@mixin me($element...) {
+ $selector: &;
+ $selectors: "";
+
+ @if containsModifier($selector) {
+ @each $item in $element {
+ $selectors: #{$selectors + "." + $B + $elementSeparator + $item + ","};
+ }
+
+ @at-root {
+ #{$selector} {
+ #{$selectors} {
+ @content;
+ }
+ }
+ }
+ }
+
+ @else {
+ @each $item in $element {
+ $selectors: #{$selectors + $selector + $elementSeparator + $item + ","};
+ }
+
+ @at-root {
+ #{$selectors} {
+ @content;
+ }
+ }
+ }
+}
+
+/* 状态,生成 is-$state 类名 */
+@mixin when($states...) {
+ @at-root {
+ @each $state in $states {
+ &.#{$state-prefix + $state} {
+ @content;
+ }
+ }
+ }
+}
+
+/**
+ * 常用混合宏
+ */
+
+/* 单行超出隐藏 */
+@mixin lineEllipsis {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+/* 多行超出隐藏 */
+@mixin multiEllipsis($lineNumber: 3) {
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: $lineNumber;
+ overflow: hidden;
+}
+
+/* 清除浮动 */
+@mixin clearFloat {
+ &::after {
+ display: block;
+ content: "";
+ height: 0;
+ clear: both;
+ overflow: hidden;
+ visibility: hidden;
+ }
+}
+
+/* 0.5px 边框 指定方向*/
+@mixin halfPixelBorder($direction: "bottom", $left: 0, $color: $-color-border-light) {
+ position: relative;
+
+ &::after {
+ position: absolute;
+ display: block;
+ content: "";
+
+ @if ($left==0) {
+ width: 100%;
+ }
+
+ @else {
+ width: calc(100% - #{$left});
+ }
+
+ height: 1px;
+ left: $left;
+
+ @if ($direction=="bottom") {
+ bottom: 0;
+ }
+
+ @else {
+ top: 0;
+ }
+
+ transform: scaleY(0.5);
+ background: $color;
+ }
+}
+
+
+/* 0.5px 边框 环绕 */
+@mixin halfPixelBorderSurround($color: $-color-border-light) {
+ position: relative;
+
+ &::after {
+ position: absolute;
+ display: block;
+ content: ' ';
+ pointer-events: none;
+ width: 200%;
+ height: 200%;
+ left: 0;
+ top: 0;
+ border: 1px solid $color;
+ transform: scale(0.5);
+ box-sizing: border-box;
+ transform-origin: left top;
+ }
+}
+
+@mixin buttonClear {
+ outline: none;
+ -webkit-appearance: none;
+ -webkit-tap-highlight-color: transparent;
+ background: transparent;
+}
+
+/**
+ * 三角形实现尖角样式,适用于背景透明情况
+ * @param $size 三角形高,底边为 $size * 2
+ * @param $bg 三角形背景颜色
+ */
+@mixin triangleArrow($size, $bg) {
+ @include e(arrow) {
+ position: absolute;
+ width: 0;
+ height: 0;
+ }
+
+ @include e(arrow-down) {
+ border-left: $size solid transparent;
+ border-right: $size solid transparent;
+ border-top: $size solid $bg;
+ transform: translateX(-50%);
+ bottom: calc(-1 * $size)
+ }
+
+ @include e(arrow-up) {
+ border-left: $size solid transparent;
+ border-right: $size solid transparent;
+ border-bottom: $size solid $bg;
+ transform: translateX(-50%);
+ top: calc(-1 * $size)
+ }
+
+ @include e(arrow-left) {
+ border-top: $size solid transparent;
+ border-bottom: $size solid transparent;
+ border-right: $size solid $bg;
+ transform: translateY(-50%);
+ left: calc(-1 * $size)
+ }
+
+ @include e(arrow-right) {
+ border-top: $size solid transparent;
+ border-bottom: $size solid transparent;
+ border-left: $size solid $bg;
+ transform: translateY(-50%);
+ right: calc(-1 * $size)
+ }
+}
+
+/**
+ * 正方形实现尖角样式,适用于背景不透明情况
+ * @param $size 正方形边长
+ * @param $bg 正方形背景颜色
+ * @param $z-index z-index属性值,不得大于外部包裹器
+ * @param $box-shadow 阴影
+*/
+@mixin squareArrow($size, $bg, $z-index, $box-shadow) {
+ @include e(arrow) {
+ position: absolute;
+ width: $size;
+ height: $size;
+ z-index: $z-index;
+ }
+
+ @include e(arrow-down) {
+ transform: translateX(-50%);
+ bottom: 0;
+
+ &:after {
+ content: "";
+ width: $size;
+ height: $size;
+ background-color: $bg;
+ position: absolute;
+ left: 0;
+ bottom: calc(-1 * $size / 2);
+ transform: rotateZ(45deg);
+ box-shadow: $box-shadow;
+ }
+ }
+
+ @include e(arrow-up) {
+ transform: translateX(-50%);
+ top: 0;
+
+ &:after {
+ content: "";
+ width: $size;
+ height: $size;
+ background-color: $bg;
+ position: absolute;
+ left: 0;
+ top: calc(-1 * $size / 2);
+ transform: rotateZ(45deg);
+ box-shadow: $box-shadow;
+ }
+ }
+
+ @include e(arrow-left) {
+ transform: translateY(-50%);
+ left: 0;
+
+ &:after {
+ content: "";
+ width: $size;
+ height: $size;
+ background-color: $bg;
+ position: absolute;
+ left: calc(-1 * $size / 2);
+ top: 0;
+ transform: rotateZ(45deg);
+ box-shadow: $box-shadow;
+ }
+ }
+
+ @include e(arrow-right) {
+ transform: translateY(-50%);
+ right: 0;
+
+ &:after {
+ content: "";
+ width: $size;
+ height: $size;
+ background-color: $bg;
+ position: absolute;
+ right: calc(-1 * $size / 2);
+ top: 0;
+ transform: rotateZ(45deg);
+ box-shadow: $box-shadow;
+ }
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/common/abstracts/variable.scss b/uni_modules/wot-design-uni/components/common/abstracts/variable.scss
new file mode 100644
index 0000000..e74eafd
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/common/abstracts/variable.scss
@@ -0,0 +1,965 @@
+@import './function';
+
+/**
+ * UI规范基础变量
+ */
+/*----------------------------------------- Theme color. start ----------------------------------------*/
+/* 主题颜色 */
+$-color-theme: var(--wot-color-theme, $default-theme) !default; // 主题色
+$-color-white: var(--wot-color-white, rgb(255, 255, 255)) !default; // 用于mix的白色
+$-color-black: var(--wot-color-black, rgb(0, 0, 0)) !default; // 用于mix的黑色
+
+/* 辅助色 */
+$-color-success: var(--wot-color-success, #34d19d) !default; // 成功色
+$-color-warning: var(--wot-color-warning, #f0883a) !default; // 警告色
+$-color-danger: var(--wot-color-danger, #fa4350) !default; // 危险出错色
+$-color-purple: var(--wot-color-purple, #8268de) !default; // 紫色
+$-color-yellow: var(--wot-color-yellow, #f0cd1d) !default; // 黄色
+$-color-blue: var(--wot-color-blue, #2bb3ed) !default; // 蓝色
+$-color-info: var(--wot-color-info, #909399) !default;
+
+$-color-gray-1: var(--wot-color-gray-1, #f7f8fa) !default;
+$-color-gray-2: var(--wot-color-gray-2, #f2f3f5) !default;
+$-color-gray-3: var(--wot-color-gray-3, #ebedf0) !default;
+$-color-gray-4: var(--wot-color-gray-4, #dcdee0) !default;
+$-color-gray-5: var(--wot-color-gray-5, #c8c9cc) !default;
+$-color-gray-6: var(--wot-color-gray-6, #969799) !default;
+$-color-gray-7: var(--wot-color-gray-7, #646566) !default;
+$-color-gray-8: var(--wot-color-gray-8, #323233) !default;
+
+$-font-gray-1: var(--wot-font-gray-1, rgba(0, 0, 0, 0.9));
+$-font-gray-2: var(--wot-font-gray-2, rgba(0, 0, 0, 0.6));
+$-font-gray-3: var(--wot-font-gray-3, rgba(0, 0, 0, 0.4));
+$-font-gray-4: var(--wot-font-gray-4, rgba(0, 0, 0, 0.26));
+
+$-font-white-1: var(--wot-font-white-1, rgba(255, 255, 255, 1));
+$-font-white-2: var(--wot-font-white-2, rgba(255, 255, 255, 0.55));
+$-font-white-3: var(--wot-font-white-3, rgba(255, 255, 255, 0.35));
+$-font-white-4: var(--wot-font-white-4, rgba(255, 255, 255, 0.22));
+
+/* 文字颜色(默认浅色背景下 */
+$-color-title: var(--wot-color-title, $-color-black) !default; // 模块标题/重要正文 000
+$-color-content: var(--wot-color-content, #262626) !default; // 普通正文 262626
+$-color-secondary: var(--wot-color-secondary, #595959) !default; // 次要信息,注释/补充/正文 595959
+$-color-aid: var(--wot-color-aid, #8c8c8c) !default; // 辅助文字字号,弱化信息,引导性/不可点文字 8c8c8c
+$-color-tip: var(--wot-color-tip, #bfbfbf) !default; // 失效、默认提示文字 bfbfbf
+$-color-border: var(--wot-color-border, #d9d9d9) !default; // 控件边框线 d9d9d9
+$-color-border-light: var(--wot-color-border-light, #e8e8e8) !default; // 分割线颜色 e8e8e8
+$-color-bg: var(--wot-color-bg, #f5f5f5) !default; // 背景色、禁用填充色 f5f5f5
+
+/* 暗黑模式 */
+$-dark-background: var(--wot-dark-background, #131313) !default;
+$-dark-background2: var(--wot-dark-background2, #1b1b1b) !default;
+$-dark-background3: var(--wot-dark-background3, #141414) !default;
+$-dark-background4: var(--wot-dark-background4, #323233) !default;
+$-dark-background5: var(--wot-dark-background5, #646566) !default;
+$-dark-background6: var(--wot-dark-background6, #380e08) !default;
+$-dark-background7: var(--wot-dark-background7, #707070) !default;
+$-dark-color: var(--wot-dark-color, $-color-white) !default;
+$-dark-color2: var(--wot-dark-color2, #f2270c) !default;
+$-dark-color3: var(--wot-dark-color3, rgba(232, 230, 227, 0.8)) !default;
+$-dark-color-gray: var(--wot-dark-color-gray, $-color-secondary) !default;
+$-dark-border-color: var(--wot-dark-border-color, #3a3a3c) !default;
+
+/* 图形颜色 */
+$-color-icon: var(--wot-color-icon, #d9d9d9) !default; // icon颜色
+$-color-icon-active: var(--wot-color-icon-active, #eee) !default; // icon颜色hover
+$-color-icon-disabled: var(--wot-color-icon-disabled, #a7a7a7) !default; // icon颜色disabled
+
+/*----------------------------------------- Theme color. end -------------------------------------------*/
+
+/*-------------------------------- Theme color application size. start --------------------------------*/
+
+/* 文字字号 */
+$-fs-big: var(--wot-fs-big, 24px) !default; // 大型标题
+$-fs-important: var(--wot-fs-important, 19px) !default; // 重要数据
+$-fs-title: var(--wot-fs-title, 16px) !default; // 标题字号/重要正文字号
+$-fs-content: var(--wot-fs-content, 14px) !default; // 普通正文
+$-fs-secondary: var(--wot-fs-secondary, 12px) !default; // 次要信息,注释/补充/正文
+$-fs-aid: var(--wot-fs-aid, 10px) !default; // 辅助文字字号,弱化信息,引导性/不可点文字
+
+/* 文字字重 */
+$-fw-medium: var(--wot-fw-medium, 500) !default; // PingFangSC-Medium
+$-fw-semibold: var(--wot-fw-semibold, 600) !default; // PingFangSC-Semibold
+
+/* 尺寸 */
+$-size-side-padding: var(--wot-size-side-padding, 15px) !default; // 屏幕两边留白
+
+/*-------------------------------- Theme color application size. end --------------------------------*/
+
+/* component var */
+
+/* action-sheet */
+$-action-sheet-weight: var(--wot-action-sheet-weight, 500) !default; // 面板字重
+$-action-sheet-radius: var(--wot-action-sheet-radius, 16px) !default; // 面板圆角大小
+$-action-sheet-loading-size: var(--wot-action-sheet-loading-size, 20px) !default; // loading动画尺寸
+$-action-sheet-action-height: var(--wot-action-sheet-action-height, 48px) !default; // 单条菜单高度
+$-action-sheet-color: var(--wot-action-sheet-color, rgba(0, 0, 0, 0.85)) !default; // 选项名称颜色
+$-action-sheet-fs: var(--wot-action-sheet-fs, $-fs-title) !default; // 选项名称字号
+$-action-sheet-active-color: var(--wot-action-sheet-active-color, $-color-bg) !default; // 点击高亮颜色
+$-action-sheet-subname-fs: var(--wot-action-sheet-subname-fs, $-fs-secondary) !default; // 描述信息字号
+$-action-sheet-subname-color: var(--wot-action-sheet-subname-color, rgba(0, 0, 0, 0.45)) !default; // 描述信息颜色
+$-action-sheet-disabled-color: var(--wot-action-sheet-disabled-color, rgba(0, 0, 0, 0.25)) !default; // 禁用颜色
+$-action-sheet-bg: var(--wot-action-sheet-bg, $-color-white) !default; // 菜单容器颜色(取消按钮上方的颜色)
+$-action-sheet-title-height: var(--wot-action-sheet-title-height, 64px) !default; // 标题高度
+$-action-sheet-title-fs: var(--wot-action-sheet-title-fs, $-fs-title) !default; // 标题字号
+$-action-sheet-close-fs: var(--wot-action-sheet-close-fs, $-fs-title) !default; // 关闭按钮大小
+$-action-sheet-close-color: var(--wot-action-sheet-close-color, rgba(0, 0, 0, 0.65)) !default; // 关闭按钮颜色
+$-action-sheet-close-top: var(--wot-action-sheet-close-top, 25px) !default; // 关闭按钮距离标题顶部距离
+$-action-sheet-close-right: var(--wot-action-sheet-close-right, 15px) !default; // 关闭按钮距离标题右侧距离
+$-action-sheet-cancel-color: var(--wot-action-sheet-cancel-color, #131415) !default; // 取消按钮颜色
+$-action-sheet-cancel-height: var(--wot-action-sheet-cancel-height, 44px) !default; // 取消按钮高度
+$-action-sheet-cancel-bg: var(--wot-action-sheet-cancel-bg, rgba(240, 240, 240, 1)) !default; // 取消按钮背景色
+$-action-sheet-cancel-radius: var(--wot-action-sheet-cancel-radius, 22px) !default; // 取消按钮圆角大小
+$-action-sheet-panel-padding: var(--wot-action-sheet-panel-padding, 12px 0 11px) !default; // 自定义面板内边距大小
+$-action-sheet-panel-img-fs: var(--wot-action-sheet-panel-img-fs, 40px) !default; // 自定义面板图片大小
+$-action-sheet-panel-img-radius: var(--wot-action-sheet-panel-img-radius, 4px) !default; // 自定义面板图片圆角大小
+
+/* badge */
+$-badge-bg: var(--wot-badge-bg, $-color-danger) !default; // 背景填充颜色
+$-badge-color: var(--wot-badge-color, #fff) !default; // 文字颜色
+$-badge-fs: var(--wot-badge-fs, 12px) !default; // 文字字号
+$-badge-padding: var(--wot-badge-padding, 0 5px) !default; // padding
+$-badge-height: var(--wot-badge-height, 16px) !default; // 高度
+$-badge-primary: var(--wot-badge-primary, $-color-theme) !default;
+$-badge-success: var(--wot-badge-success, $-color-success) !default;
+$-badge-warning: var(--wot-badge-warning, $-color-warning) !default;
+$-badge-danger: var(--wot-badge-danger, $-color-danger) !default;
+$-badge-info: var(--wot-badge-info, $-color-info) !default;
+$-badge-dot-size: var(--wot-badge-dot-size, 6px) !default; // dot 类型大小
+$-badge-border: var(--wot-badge-border, 2px solid $-badge-color) !default; // 边框样式
+
+/* button */
+$-button-disabled-opacity: var(--wot-button-disabled-opacity, 0.6) !default; // button禁用透明度
+$-button-small-height: var(--wot-button-small-height, 28px) !default; // 小型按钮高度
+$-button-small-padding: var(--wot-button-small-padding, 0 12px) !default; // 小型按钮padding
+$-button-small-fs: var(--wot-button-small-fs, $-fs-secondary) !default; // 小型按钮字号
+$-button-small-radius: var(--wot-button-small-radius, 2px) !default; // 小型按钮圆角大小
+$-button-small-loading: var(--wot-button-small-loading, 14px) !default; // 小型按钮loading图标大小
+$-button-medium-height: var(--wot-button-medium-height, 36px) !default; // 中型按钮高度
+$-button-medium-padding: var(--wot-button-medium-padding, 0 16px) !default; // 中型按钮padding
+$-button-medium-fs: var(--wot-button-medium-fs, $-fs-content) !default; // 中型按钮字号
+$-button-medium-radius: var(--wot-button-medium-radius, 4px) !default; // 中型按钮圆角大小
+$-button-medium-loading: var(--wot-button-medium-loading, 18px) !default; // 中型按钮loading图标大小
+$-button-medium-box-shadow-size: var(--wot-button-medium-box-shadow-size, 0px 2px 4px 0px) !default; // 中尺寸阴影尺寸
+$-button-large-height: var(--wot-button-large-height, 44px) !default; // 大型按钮高度
+$-button-large-padding: var(--wot-button-large-padding, 0 36px) !default; // 大型按钮padding
+$-button-large-fs: var(--wot-button-large-fs, $-fs-title) !default; // 大型按钮字号
+$-button-large-radius: var(--wot-button-large-radius, 8px) !default; // 大型按钮圆角大小
+$-button-large-loading: var(--wot-button-large-loading, 24px) !default; // 大小按钮loading图标大小
+$-button-large-box-shadow-size: var(--wot-button-large-box-shadow-size, 0px 4px 8px 0px) !default; // 大尺寸阴影尺寸
+$-button-icon-fs: var(--wot-button-icon-fs, 1.18em) !default; // 带图标的按钮的图标大小
+$-button-icon-size: var(--wot-button-icon-size, 40px) !default; // icon 类型按钮尺寸
+$-button-icon-color: var(--wot-button-icon-color, rgba(0, 0, 0, 0.65)) !default; // icon 类型按钮颜色
+$-button-icon-disabled-color: var(--wot-button-icon-disabled-color, $-color-icon-disabled) !default; // icon 类型按钮禁用颜色
+$-button-normal-color: var(--wot-button-normal-color, $-color-title) !default; // 文字颜色
+$-button-normal-disabled-color: var(--wot-button-normal-disabled-color, rgba(0, 0, 0, 0.25)) !default; // 默认按钮禁用文字色
+$-button-plain-bg-color: var(--wot-button-plain-bg-color, $-color-white) !default; // 幽灵按钮背景色
+$-button-primary-color: var(--wot-button-primary-color, $-color-white) !default; // 主要按钮颜色
+$-button-primary-bg-color: var(--wot-button-primary-bg-color, $-color-theme) !default; // 主要按钮背景颜色
+$-button-success-color: var(--wot-button-success-color, $-color-white) !default; // 成功按钮文字颜色
+$-button-success-bg-color: var(--wot-button-success-bg-color, $-color-success) !default; // 成功按钮颜色
+$-button-info-color: var(--wot-button-info-color, $-color-title) !default; // 信息按钮颜色
+$-button-info-bg-color: var(--wot-button-info-bg-color, #f0f0f0) !default; // 信息按钮背景颜色
+$-button-info-plain-border-color: var(--wot-button-info-plain-border-color, rgba(0, 0, 0, 0.45)) !default; // 信息按钮禁用颜色
+$-button-info-plain-normal-color: var(--wot-button-info-plain-normal-color, rgba(0, 0, 0, 0.85)) !default; // 信息幽灵按钮默认颜色
+$-button-warning-color: var(--wot-button-warning-color, $-color-white) !default; // 警告按钮字体颜色
+$-button-warning-bg-color: var(--wot-button-warning-bg-color, $-color-warning) !default; // 警告按钮背景颜色
+$-button-error-color: var(--wot-button-error-color, $-color-white) !default; // 错误按钮颜色
+$-button-error-bg-color: var(--wot-button-error-bg-color, $-color-danger) !default; // 错误按钮背景颜色
+$-button-text-hover-opacity: var(--wot-button-text-hover-opacity, 0.7) !default; // 文字button激活时透明度
+
+/* cell */
+$-cell-padding: var(--wot-cell-padding, $-size-side-padding) !default; // cell 左右padding距离
+$-cell-line-height: var(--wot-cell-line-height, 24px) !default; // 行高
+
+$-cell-group-title-fs: var(--wot-cell-group-title-fs, $-fs-title) !default; // 组标题字号
+$-cell-group-padding: var(--wot-cell-group-padding, 13px $-cell-padding) !default; // 组padding
+$-cell-group-title-color: var(--wot-cell-group-title-color, rgba(0, 0, 0, 0.85)) !default; // 组标题文字颜色
+$-cell-group-value-fs: var(--wot-cell-group-value-fs, $-fs-content) !default; // 组值字号
+$-cell-group-value-color: var(--wot-cell-group-value-color, $-color-content) !default; // 组值文字颜色
+
+$-cell-wrapper-padding: var(--wot-cell-wrapper-padding, 10px) !default; // cell 容器padding
+$-cell-wrapper-padding-large: var(--wot-cell-wrapper-padding-large, 12px) !default; // large类型cell容器padding
+
+$-cell-wrapper-padding-with-label: var(--wot-cell-wrapper-padding-with-label, 16px) !default; // cell 容器上下padding(有label情况下)
+$-cell-icon-right: var(--wot-cell-icon-right, 4px) !default; // 图标距离右边缘
+$-cell-icon-size: var(--wot-cell-icon-size, 16px) !default; // 图标大小
+$-cell-title-fs: var(--wot-cell-title-fs, 14px) !default; // 标题字号
+$-cell-title-color: var(--wot-cell-title-color, rgba(0, 0, 0, 0.85)) !default; // 标题文字颜色
+$-cell-label-fs: var(--wot-cell-label-fs, 12px) !default; // 描述信息字号
+$-cell-label-color: var(--wot-cell-label-color, rgba(0, 0, 0, 0.45)) !default; // 描述信息文字颜色
+$-cell-value-fs: var(--wot-cell-value-fs, 14px) !default; // 右侧内容字号
+$-cell-value-color: var(--wot-cell-value-color, rgba(0, 0, 0, 0.85)) !default; // 右侧内容文字颜色
+$-cell-arrow-size: var(--wot-cell-arrow-size, 18px) !default; // 右箭头大小
+$-cell-arrow-color: var(--wot-cell-arrow-color, rgba(0, 0, 0, 0.25)) !default; // 右箭头颜色
+$-cell-clear-color: var(--wot-cell-clear-color, #585858) !default; // 清空按钮颜色
+$-cell-tap-bg: var(--wot-cell-tap-bg, rgba(0, 0, 0, 0.06)) !default; // 点击态背景色
+
+$-cell-title-fs-large: var(--wot-cell-title-fs-large, 16px) !default; // 大尺寸标题字号
+$-cell-label-fs-large: var(--wot-cell-label-fs-large, 14px) !default; // 描述信息字号
+$-cell-icon-size-large: var(--wot-cell-icon-size-large, 18px) !default; // 图标大小
+
+$-cell-required-color: var(--wot-cell-required-color, $-color-danger) !default; // 要求必填*颜色
+$-cell-required-size: var(--wot-cell-required-size, 18px) !default; // 必填*字号
+$-cell-vertical-top: var(--wot-cell-vertical-top, 16px) !default; // 表单类型-上下结构的间距
+
+/* calendar */
+$-calendar-fs: var(--wot-calendar-fs, 16px) !default;
+$-calendar-panel-padding: var(--wot-calendar-panel-padding, 0 12px) !default;
+$-calendar-panel-title-fs: var(--wot-calendar-panel-title-fs, 14px) !default;
+$-calendar-panel-title-color: var(--wot-calendar-panel-title-color, rgba(0, 0, 0, 0.85)) !default;
+$-calendar-week-color: var(--wot-calendar-week-color, rgba(0, 0, 0, 0.85)) !default;
+$-calendar-week-height: var(--wot-calendar-week-height, 36px) !default;
+$-calendar-week-fs: var(--wot-calendar-week-fs, 12px) !default;
+$-calendar-day-fs: var(--wot-calendar-day-fs, 16px) !default;
+$-calendar-day-color: var(--wot-calendar-day-color, rgba(0, 0, 0, 0.85)) !default;
+$-calendar-day-fw: var(--wot-calendar-day-fw, 500) !default;
+$-calendar-day-height: var(--wot-calendar-day-height, 64px) !default;
+$-calendar-month-width: var(--wot-calendar-month-width, 50px) !default;
+$-calendar-active-color: var(--wot-calendar-active-color, $-color-theme) !default;
+$-calendar-selected-color: var(--wot-calendar-selected-color, $-color-white) !default;
+$-calendar-disabled-color: var(--wot-calendar-disabled-color, rgba(0, 0, 0, 0.25)) !default;
+$-calendar-range-color: var(--wot-calendar-range-color, rgba(#4d80f0, 0.09)) !default;
+$-calendar-active-border: var(--wot-calendar-active-border, 8px) !default;
+$-calendar-info-fs: var(--wot-calendar-info-fs, 10px) !default;
+$-calendar-item-margin-bottom: var(--wot-calendar-item-margin-bottom, 4px) !default;
+
+
+/* checkbox */
+$-checkbox-margin: var(--wot-checkbox-margin, 10px) !default; // 多个复选框距离
+$-checkbox-bg: var(--wot-checkbox-bg, $-color-white) !default; // 多个复选框距离
+$-checkbox-label-margin: var(--wot-checkbox-label-margin, 9px) !default; // 右侧文字与左侧图标距离
+$-checkbox-size: var(--wot-checkbox-size, 16px) !default; // 左侧图标尺寸
+$-checkbox-icon-size: var(--wot-checkbox-icon-size, 14px) !default; // 左侧图标尺寸
+$-checkbox-border-color: var(--wot-checkbox-border-color, #dcdcdc) !default; // 左侧图标边框颜色
+$-checkbox-check-color: var(--wot-checkbox-check-color, $-color-white) !default; // 左侧图标边框颜色
+$-checkbox-label-fs: var(--wot-checkbox-label-fs, 14px) !default; // 右侧文字字号
+$-checkbox-label-color: var(--wot-checkbox-label-color, rgba(0, 0, 0, 0.85)) !default; // 右侧文字颜色
+$-checkbox-checked-color: var(--wot-checkbox-checked-color, $-color-theme) !default; // 选中颜色
+
+$-checkbox-disabled-color: var(--wot-checkbox-disabled-color, rgba(0, 0, 0, 0.04)) !default; // 禁用背景颜色
+$-checkbox-disabled-label-color: var(--wot-checkbox-disabled-label-color, rgba(0, 0, 0, 0.25)) !default; // 禁用文字颜色
+$-checkbox-disabled-check-color: var(--wot-checkbox-disabled-check-color, rgba(0, 0, 0, 0.15)) !default; // 禁用图标颜色
+$-checkbox-disabled-check-bg: var(--wot-checkbox-disabled-check-bg, rgba(0, 0, 0, 0.15)) !default; // 禁用边框背景颜色
+$-checkbox-square-radius: var(--wot-checkbox-square-radius, 4px) !default; // 方型圆角大小
+
+$-checkbox-large-size: var(--wot-checkbox-large-size, 18px) !default; // 左侧图标尺寸
+$-checkbox-large-label-fs: var(--wot-checkbox-large-label-fs, 16px) !default; // 右侧文字字号
+
+$-checkbox-button-height: var(--wot-checkbox-button-height, 32px) !default; // 按钮模式复选框高
+$-checkbox-button-min-width: var(--wot-checkbox-button-min-width, 78px) !default; // 按钮模式最小宽
+$-checkbox-button-radius: var(--wot-checkbox-button-radius, 16px) !default; // 按钮圆角大小
+$-checkbox-button-bg: var(--wot-checkbox-button-bg, rgba(0, 0, 0, 0.04)) !default; // 按钮模式背景颜色
+$-checkbox-button-font-size: var(--wot-checkbox-button-font-size, 14px) !default; // 按钮模式字号
+$-checkbox-button-border: var(--wot-checkbox-button-border, #f5f5f5) !default; // 按钮边框颜色
+$-checkbox-button-disabled-border: var(--wot-checkbox-button-disabled-border, rgba(0, 0, 0, 0.15)) !default; // 按钮禁用边框颜色
+
+/* collapse */
+$-collapse-side-padding: var(--wot-collapse-side-padding, $-size-side-padding) !default; // 左右间距
+$-collapse-body-padding: var(--wot-collapse-body-padding, 14px $-size-side-padding) !default; // body padding
+$-collapse-header-padding: var(--wot-collapse-header-padding, 13px $-size-side-padding) !default; // 头部padding
+$-collapse-title-color: var(--wot-collapse-title-color, rgba(0, 0, 0, 0.85)) !default; // 标题颜色
+$-collapse-title-fs: var(--wot-collapse-title-fs, 16px) !default; // 标题字号
+$-collapse-arrow-size: var(--wot-collapse-arrow-size, 18px) !default; // 箭头大小
+$-collapse-arrow-color: var(--wot-collapse-arrow-color, #d8d8d8) !default; // 箭头颜色
+$-collapse-body-fs: var(--wot-collapse-body-fs, 14px) !default; // 内容字号
+$-collapse-body-color: var(--wot-collapse-body-color, rgba(0, 0, 0, 0.65)) !default; // 内容颜色
+$-collapse-disabled-color: var(--wot-collapse-disabled-color, rgba(0, 0, 0, 0.15)) !default; // 禁用颜色
+$-collapse-retract-fs: var(--wot-collapse-retract-fs, 14px) !default; // 更多 字号
+$-collapse-more-color: var(--wot-collapse-more-color, $-color-theme) !default; // 更多 颜色
+
+/* divider */
+$-divider-padding: var(--wot-divider-padding, 0 $-size-side-padding) !default; // 两边间距
+$-divider-margin: var(--wot-divider-margin, 16px 0) !default; // 上下间距
+$-divider-color: var(--wot-divider-color, rgba(0, 0, 0, 0.45)) !default; // 字体颜色
+$-divider-line-color: var(--wot-divider-line-color, currentColor) !default; // 线条颜色
+$-divider-line-height: var(--wot-divider-line-height, 1px) !default; // 线条高度
+$-divider-fs: var(--wot-divider-fs, 14px) !default; // 字体大小
+$-divider-content-left-width: var(--wot-divider-content-left-width, 10%) !default; // 左侧内容宽度
+$-divider-content-left-margin: var(--wot-divider-content-left-margin, 12px) !default; // 左侧内容距离线距离
+$-divider-content-right-margin: var(--wot-divider-content-right-margin, 12px) !default; // 右侧内容距离线距离
+$-divider-content-right-width: var(--wot-divider-content-right-width, 10%) !default; // 右侧内容宽度
+$-divider-vertical-height: var(--wot-divider-vertical-height, 16px) !default; // 垂直分割线高度
+$-divider-vertical-content-margin: var(--wot-divider-vertical-content-margin, 0 8px) !default; // 垂直分割线内容间距
+$-divider-vertical-line-width: var(--wot-divider-vertical-line-width, 1px) !default; // 线条高度
+
+
+
+
+/* drop-menu */
+$-drop-menu-height: var(--wot-drop-menu-height, 48px) !default; // 展示选中项的高度
+$-drop-menu-color: var(--wot-drop-menu-color, $-color-content) !default; // 展示选中项的颜色
+$-drop-menu-fs: var(--wot-drop-menu-fs, $-fs-content) !default; // 展示选中项的字号
+$-drop-menu-arrow-fs: var(--wot-drop-menu-arrow-fs, $-fs-content) !default; // 箭头图标大小
+
+$-drop-menu-side-padding: var(--wot-drop-menu-side-padding, $-size-side-padding) !default; // 两边留白间距
+$-drop-menu-disabled-color: var(--wot-drop-menu-disabled-color, rgba(0, 0, 0, 0.25)) !default; // 禁用颜色
+$-drop-menu-item-height: var(--wot-drop-menu-item-height, 48px) !default; // 选项高度
+$-drop-menu-item-color: var(--wot-drop-menu-item-color, $-color-content) !default; // 选项颜色
+$-drop-menu-item-fs: var(--wot-drop-menu-item-fs, $-fs-content) !default; // 选项字号
+$-drop-menu-item-color-active: var(--wot-drop-menu-item-color-active, $-color-theme) !default; // 选中颜色
+$-drop-menu-item-color-tip: var(--wot-drop-menu-item-color-tip, rgba(0, 0, 0, 0.45)) !default; // 提示文字颜色
+$-drop-menu-item-fs-tip: var(--wot-drop-menu-item-fs-tip, $-fs-secondary) !default; // 提示文字字号
+$-drop-menu-option-check-size: var(--wot-drop-menu-option-check-size, 20px) !default; // check 图标大小
+$-drop-menu-line-color: var(--wot-drop-menu-line-color, $-color-theme) !default; // 下划线颜色
+$-drop-menu-line-height: var(--wot-drop-menu-line-height, 3px) !default; // 下划线高度
+
+/* input-number */
+$-input-number-color: var(--wot-input-number-color, #262626) !default; // 文字颜色
+$-input-number-border-color: var(--wot-input-number-border-color, #e8e8e8) !default; // 边框颜色
+$-input-number-disabled-color: var(--wot-input-number-disabled-color, rgba(0, 0, 0, 0.25)) !default; // 禁用颜色
+$-input-number-height: var(--wot-input-number-height, 24px) !default; // 加减号按钮高度
+$-input-number-btn-width: var(--wot-input-number-btn-width, 26px) !default; // 加减号按钮宽度
+$-input-number-input-width: var(--wot-input-number-input-width, 36px) !default; // 输入框宽度
+$-input-number-radius: var(--wot-input-number-radius, 4px) !default; // 加减号按钮圆角大小
+$-input-number-fs: var(--wot-input-number-fs, 12px) !default; // 输入框字号
+$-input-number-icon-size: var(--wot-input-number-icon-size, 14px) !default; // 加减号图标大小
+$-input-number-icon-color: var(--wot-input-number-icon-color, rgba(0, 0, 0, 0.65)) !default; // icon颜色
+
+/* input */
+$-input-padding: var(--wot-input-padding, $-size-side-padding) !default; // input 左右padding距离
+$-input-border-color: var(--wot-input-border-color, #dadada) !default; // 无label边框颜色
+$-input-not-empty-border-color: var(--wot-input-not-empty-border-color, #262626) !default; // 输入框有值时 无label边框颜色
+$-input-fs: var(--wot-input-fs, $-cell-title-fs) !default; // 字号
+$-input-fs-large: var(--wot-input-fs-large, $-cell-title-fs-large) !default; // 大尺寸字号
+$-input-icon-margin: var(--wot-input-icon-margin, 8px) !default; // 图标距离
+$-input-color: var(--wot-input-color, #262626) !default; // 文字颜色
+$-input-placeholder-color: var(--wot-input-placeholder-color, #bfbfbf) !default; // 占位符颜色
+$-input-disabled-color: var(--wot-input-disabled-color, #d9d9d9) !default; // 输入框禁用颜色
+$-input-error-color: var(--wot-input-error-color, $-color-danger) !default; // 输入框错误颜色
+$-input-icon-color: var(--wot-input-icon-color, #bfbfbf) !default; // 图标颜色
+$-input-clear-color: var(--wot-input-clear-color, #585858) !default; // 关闭按钮颜色
+$-input-count-color: var(--wot-input-count-color, #bfbfbf) !default; // 计数文字颜色
+$-input-count-current-color: var(--wot-input-count-current-color, #262626) !default; // 当前长度颜色
+$-input-bg: var(--wot-input-bg, $-color-white) !default; // 默认背景颜色
+
+$-input-cell-bg: var(--wot-input-cell-bg, $-color-white) !default; // cell 类型背景色
+$-input-cell-border-color: var(--wot-input-cell-border-color, $-color-border-light) !default; // cell 类型边框颜色
+$-input-cell-padding: var(--wot-input-cell-padding, 10px) !default; // cell 容器padding
+$-input-cell-padding-large: var(--wot-input-cell-padding-large, 12px) !default; // large类型cell容器padding
+$-input-cell-height: var(--wot-input-cell-height, 24px) !default; // cell 高度
+$-input-cell-label-width: var(--wot-input-cell-label-width, 33%) !default; // cell 下 label 的宽度
+$-input-inner-height: var(--wot-input-inner-height, 34px) !default; // 非cell和textarea下的高度
+$-input-inner-height-no-border: var(--wot-input-inner-height-no-border, 24px) !default; // 无边框下的高度
+$-input-count-fs: var(--wot-input-count-fs, 14px) !default; // 计数字号
+$-input-count-fs-large: var(--wot-input-count-fs-large, 14px) !default; // 大尺寸计数字号
+$-input-icon-size: var(--wot-input-icon-size, 16px) !default; // 图标大小
+$-input-icon-size-large: var(--wot-input-icon-size-large, 18px) !default; // 大尺寸图标大小
+
+/* textarea */
+$-textarea-padding: var(--wot-textarea-padding, $-size-side-padding) !default; // textarea 左右padding距离
+$-textarea-border-color: var(--wot-textarea-border-color, #dadada) !default; // 无label边框颜色
+$-textarea-not-empty-border-color: var(--wot-textarea-not-empty-border-color, #262626) !default; // 输入框有值时 无label边框颜色
+$-textarea-fs: var(--wot-textarea-fs, $-cell-title-fs) !default; // 字号
+$-textarea-fs-large: var(--wot-textarea-fs-large, $-cell-title-fs-large) !default; // 大尺寸字号
+$-textarea-icon-margin: var(--wot-textarea-icon-margin, 8px) !default; // 图标距离
+$-textarea-color: var(--wot-textarea-color, #262626) !default; // 文字颜色
+$-textarea-icon-color: var(--wot-textarea-icon-color, #bfbfbf) !default; // 图标颜色
+$-textarea-clear-color: var(--wot-textarea-clear-color, #585858) !default; // 关闭按钮颜色
+$-textarea-count-color: var(--wot-textarea-count-color, #bfbfbf) !default; // 计数文字颜色
+$-textarea-count-current-color: var(--wot-textarea-count-current-color, #262626) !default; // 当前长度颜色
+$-textarea-bg: var(--wot-textarea-bg, $-color-white) !default; // 默认背景颜色
+$-textarea-cell-border-color: var(--wot-textarea-cell-border-color, $-color-border-light) !default; // cell 类型边框颜色
+$-textarea-cell-padding: var(--wot-textarea-cell-padding, 10px) !default; // cell 容器padding
+$-textarea-cell-padding-large: var(--wot-textarea-cell-padding-large, 12px) !default; // large类型cell容器padding
+$-textarea-cell-height: var(--wot-textarea-cell-height, 24px) !default; // cell 高度
+$-textarea-count-fs: var(--wot-textarea-count-fs, 14px) !default; // 计数字号
+$-textarea-count-fs-large: var(--wot-textarea-count-fs-large, 14px) !default; // 大尺寸计数字号
+$-textarea-icon-size: var(--wot-textarea-icon-size, 16px) !default; // 图标大小
+$-textarea-icon-size-large: var(--wot-textarea-icon-size-large, 18px) !default; // 大尺寸图标大小
+
+/* loadmore */
+$-loadmore-height: var(--wot-loadmore-height, 48px) !default; // 高度
+$-loadmore-color: var(--wot-loadmore-color, rgba(0, 0, 0, 0.45)) !default; // 颜色
+$-loadmore-fs: var(--wot-loadmore-fs, 14px) !default; // 字号
+$-loadmore-error-color: var(--wot-loadmore-error-color, $-color-theme) !default; // 点击重试颜色
+$-loadmore-refresh-fs: var(--wot-loadmore-refresh-fs, $-fs-title) !default; // refresh图标字号
+$-loadmore-loading-size: var(--wot-loadmore-loading-size, $-fs-title) !default; // loading尺寸
+
+/* message-box */
+$-message-box-width: var(--wot-message-box-width, 300px) !default; // 宽度
+$-message-box-bg: var(--wot-message-box-bg, $-color-white) !default; // 默认背景颜色
+$-message-box-radius: var(--wot-message-box-radius, 16px) !default; // 圆角大小
+$-message-box-padding: var(--wot-message-box-padding, 25px 24px 0) !default; // 主体内容padding
+$-message-box-title-fs: var(--wot-message-box-title-fs, 16px) !default; // 标题字号
+$-message-box-title-color: var(--wot-message-box-title-color, rgba(0, 0, 0, 0.85)) !default; // 标题颜色
+$-message-box-content-fs: var(--wot-message-box-content-fs, 14px) !default; // 内容字号
+$-message-box-content-color: var(--wot-message-box-content-color, #666666) !default; // 内容颜色
+$-message-box-content-max-height: var(--wot-message-box-content-max-height, 264px) !default; // 内容最大高度
+$-message-box-content-scrollbar-width: var(--wot-message-box-content-scrollbar-width, 4px) !default; // 内容滚动条宽度
+$-message-box-content-scrollbar-color: var(--wot-message-box-content-scrollbar-color, rgba(0, 0, 0, 0.1)) !default; // 内容滚动条颜色
+$-message-box-input-error-color: var(--wot-message-box-input-error-color, $-input-error-color) !default; // 输入框错误颜色
+
+/* notice-bar */
+$-notice-bar-fs: var(--wot-notice-bar-fs, 12px) !default; // 字号
+$-notice-bar-line-height: var(--wot-notice-bar-line-height, 18px) !default; // 行高
+$-notice-bar-border-radius: var(--wot-notice-bar-border-radius, 8px) !default; // 圆角
+$-notice-bar-padding: var(--wot-notice-bar-padding, 9px 20px 9px 15px) !default; // 非换行下的padding
+$-notice-bar-warning-bg: var(--wot-notice-bar-warning-bg, #fff6c8) !default; // 背景色
+$-notice-bar-info-bg: var(--wot-notice-bar-info-bg, #f4f9ff) !default; // 背景色
+$-notice-bar-danger-bg: var(--wot-notice-bar-danger-bg, #feeced) !default; // 背景色
+$-notice-bar-warning-color: var(--wot-notice-bar-warning-color, $-color-warning) !default; // 文字和图标颜色
+$-notice-bar-info-color: var(--wot-notice-bar-info-color, $-color-theme) !default; // 文字和图标颜色
+$-notice-bar-danger-color: var(--wot-notice-bar-danger-color, $-color-danger) !default; // 文字和图标颜色
+$-notice-bar-prefix-size: var(--wot-notice-bar-prefix-size, 18px) !default; // 图标大小
+$-notice-bar-close-bg: var(--wot-notice-bar-close-bg, rgba(0, 0, 0, 0.15)) !default; // 右侧关闭按钮背景颜色
+$-notice-bar-close-size: var(--wot-notice-bar-close-size, 18px) !default; // 右侧关闭按钮背景颜色
+$-notice-bar-close-color: var(--wot-notice-bar-close-color, $-color-white) !default; // 右侧关闭按钮颜色
+$-notice-bar-wrap-padding: var(--wot-notice-bar-wrap-padding, 14px $-size-side-padding) !default; // 换行下的padding
+
+/* pagination */
+$-pagination-content-padding: var(--wot-pagination-content-padding, 10px 15px) !default;
+$-pagination-message-padding: var(--wot-pagination-message-padding, 1px 0 16px 0) !default;
+$-pagination-message-fs: var(--wot-pagination-message-fs, 12px) !default;
+$-pagination-message-color: var(--wot-pagination-message-color, rgba(0, 0, 0, 0.69)) !default;
+$-pagination-nav-border: var(--wot-pagination-nav-border, 1px solid rgba(0, 0, 0, 0.45)) !default;
+$-pagination-nav-border-radius: var(--wot-pagination-nav-border-radius, 16px) !default;
+$-pagination-nav-fs: var(--wot-pagination-nav-fs, 12px) !default;
+$-pagination-nav-width: var(--wot-pagination-nav-width, 60px) !default;
+$-pagination-nav-color: var(--wot-pagination-nav-color, rgba(0, 0, 0, 0.85)) !default;
+$-pagination-nav-content-fs: var(--wot-pagination-nav-content-fs, 12px) !default;
+$-pagination-nav-sepatator-padding: var(--wot-pagination-nav-sepatator-padding, 0 4px) !default;
+$-pagination-nav-current-color: var(--wot-pagination-nav-current-color, $-color-theme) !default;
+$-pagination-icon-size: var(--wot-pagination-icon-size, $-fs-content) !default;
+
+/* picker */
+$-picker-toolbar-height: var(--wot-picker-toolbar-height, 54px) !default; // toolbar 操作条的高度
+$-picker-action-height: var(--wot-picker-action-height, 16px) !default; // toolbar 操作条的高度
+$-picker-toolbar-finish-color: var(--wot-picker-toolbar-finish-color, $-color-theme) !default; // toolbar 操作条完成按钮的颜色
+$-picker-toolbar-cancel-color: var(--wot-picker-toolbar-cancel-color, #666666) !default; // toolbar 操作条的边框颜色
+$-picker-toolbar-fs: var(--wot-picker-toolbar-fs, $-fs-title) !default; // toolbar 操作条的字号
+$-picker-toolbar-title-color: var(--wot-picker-toolbar-title-color, rgba(0, 0, 0, 0.85)) !default; // toolbar 操作台的标题颜色
+$-picker-column-fs: var(--wot-picker-column-fs, 16px) !default; // 选择器选项的字号
+$-picker-bg: var(--wot-picker-bg, $-color-white) !default; // 选择器选项的字号
+$-picker-column-active-fs: var(--wot-picker-column-active-fs, 18px) !default; // 选择器选项被选中的字号
+$-picker-column-color: var(--wot-picker-column-color, rgba(0, 0, 0, 0.85)) !default; // 选择器选项的颜色
+$-picker-column-height: var(--wot-picker-column-height, 210px) !default; // 列高 滚筒外部的高度
+$-picker-column-item-height: var(--wot-picker-column-item-height, 35px) !default; // 列高 滚筒外部的高度
+$-picker-column-select-bg: var(--wot-picker-column-select-bg, #f5f5f5) !default;
+$-picker-loading-button-color: var(--wot-picker-loading-button-color, rgba(0, 0, 0, 0.25)) !default; // loading 背景颜色
+$-picker-column-padding: var(--wot-picker-column-padding, 0 $-size-side-padding) !default; // 选项内间距
+
+$-picker-column-disabled-color: var(--wot-picker-column-disabled-color, rgba(0, 0, 0, 0.25)) !default; // 选择器选项禁用的颜色
+$-picker-mask: var(--wot-picker-mask, linear-gradient(180deg, hsla(0, 0%, 100%, 0.9), hsla(0, 0%, 100%, 0.25)))
+ linear-gradient(0deg, hsla(0, 0%, 100%, 0.9), hsla(0, 0%, 100%, 0.25)) !default; // 上下阴影
+$-picker-loading-bg: var(--wot-picker-loading-bg, rgba($-color-white, 0.8)) !default; // loading 背景颜色
+$-picker-region-separator-color: var(--wot-picker-region-separator-color, rgba(0, 0, 0, 0.65)) !default; // 区域选择文字颜色
+$-picker-cell-arrow-size-large: var(--wot-picker-cell-arrow-size-large, $-cell-icon-size) !default; // cell 类型的大尺寸 右侧icon尺寸
+
+$-picker-region-color: var(--wot-picker-region-color, rgba(0, 0, 0, 0.45)) !default; // 区域选择文字颜色
+$-picker-region-bg-active-color: var(--wot-picker-region-bg-active-color, $-color-theme) !default; // 区域选择激活选中背景颜色
+
+$-picker-region-fs: var(--wot-picker-region-fs, 14px) !default; // 区域选择文字字号
+
+/* col-picker */
+$-col-picker-selected-height: var(--wot-col-picker-selected-height, 44px) !default; // 弹框顶部值高度
+$-col-picker-selected-padding: var(--wot-col-picker-selected-padding, 0 16px) !default; // 弹框顶部值左右间距
+$-col-picker-selected-fs: var(--wot-col-picker-selected-fs, 14px) !default; // 弹框顶部值字号
+$-col-picker-selected-color: var(--wot-col-picker-selected-color, rgba(0, 0, 0, 0.85)) !default; // 弹框顶部值文字颜色
+$-col-picker-selected-fw: var(--wot-col-picker-selected-fw, 700) !default; // 弹框顶部值高亮字重
+$-col-picker-line-width: var(--wot-col-picker-line-width, 16px) !default; // 弹框顶部值高亮线条宽度
+$-col-picker-line-height: var(--wot-col-picker-line-height, 3px) !default; // 弹框顶部值高亮线条高度
+$-col-picker-line-color: var(
+ --wot-col-picker-line-color,
+ linear-gradient(315deg, rgba(81, 124, 240, 1), rgba(118, 158, 245, 1))
+) !default; // 弹框顶部值高亮线条颜色
+$-col-picker-line-box-shadow: var(--wot-col-picker-line-box-shadow, 0px 1px 2px 0px rgba(1, 87, 255, 0.2)) !default; // 弹框顶部值高亮线条阴影
+$-col-picker-list-height: var(--wot-col-picker-list-height, 53vh) !default; // 弹框列表高度
+$-col-picker-list-padding-bottom: var(--wot-col-picker-list-padding-bottom, 30px) !default; // 弹框列表底部间距
+$-col-picker-list-color: var(--wot-col-picker-list-color, rgba(0, 0, 0, 0.85)) !default; // 弹框列表文字颜色
+$-col-picker-list-color-disabled: var(--wot-col-picker-list-color-disabled, rgba(0, 0, 0, 0.15)) !default; // 弹框列表文字禁用颜色
+$-col-picker-list-color-tip: var(--wot-col-picker-list-color-tip, rgba(0, 0, 0, 0.45)) !default; // 弹框列表提示文字颜色
+$-col-picker-list-fs: var(--wot-col-picker-list-fs, 14px) !default; // 弹框列表文字字号
+$-col-picker-list-fs-tip: var(--wot-col-picker-list-fs-tip, 12px) !default; // 弹框列表提示文字字号
+$-col-picker-list-item-padding: var(--wot-col-picker-list-item-padding, 12px 15px) !default; // 弹框列表选项间距
+$-col-picker-list-checked-icon-size: var(--wot-col-picker-list-checked-icon-size, 18px) !default; // 弹框列表选中箭头大小
+$-col-picker-list-color-checked: var(--wot-col-picker-list-color-checked, $-color-theme) !default; // 弹框列表选中选项颜色
+
+/* overlay */
+$-overlay-bg: var(--wot-overlay-bg, rgba(0, 0, 0, 0.65)) !default;
+$-overlay-bg-dark: var(--wot-overlay-bg-dark, rgba(0, 0, 0, 0.75)) !default;
+
+/* popup */
+$-popup-close-size: var(--wot-popup-close-size, 24px) !default; // 关闭按钮尺寸
+$-popup-close-color: var(--wot-popup-close-color, #666) !default; // 关闭按钮颜色
+
+/* progress */
+$-progress-padding: var(--wot-progress-padding, 9px 0 8px) !default; // 进度条内边距
+$-progress-bg: var(--wot-progress-bg, rgba(229, 229, 229, 1)) !default; // 进度条底色
+$-progress-danger-color: var(--wot-progress-danger-color, $-color-danger) !default; // 进度条danger颜色
+$-progress-success-color: var(--wot-progress-success-color, $-color-success) !default; // 进度条success进度条颜色
+$-progress-warning-color: var(--wot-progress-warning-color, $-color-warning) !default; // 进度条warning进度条颜色
+
+$-progress-color: var(--wot-progress-color, $-color-theme) !default; // 进度条颜色
+$-progress-height: var(--wot-progress-height, 3px) !default; // 进度条高度
+$-progress-label-color: var(--wot-progress-label-color, #333) !default; // 文字颜色
+$-progress-label-fs: var(--wot-progress-label-fs, 14px) !default; // 文字字号
+$-progress-icon-fs: var(--wot-progress-icon-fs, 18px) !default; // 图标字号
+
+/* radio */
+$-radio-margin: var(--wot-radio-margin, $-checkbox-margin) !default; // 多个单选框距离
+$-radio-label-margin: var(--wot-radio-label-margin, $-checkbox-label-margin) !default; // 右侧文字与左侧图标距离
+$-radio-size: var(--wot-radio-size, 16px) !default; // 左侧图标尺寸
+$-radio-bg: var(--wot-radio-bg, $-color-white) !default; // 左侧图标尺寸
+$-radio-label-fs: var(--wot-radio-label-fs, $-checkbox-label-fs) !default; // 右侧文字字号
+$-radio-label-color: var(--wot-radio-label-color, $-checkbox-label-color) !default; // 右侧文字颜色
+$-radio-checked-color: var(--wot-radio-checked-color, $-checkbox-checked-color) !default; // 选中颜色
+$-radio-disabled-color: var(--wot-radio-disabled-color, $-checkbox-disabled-color) !default; // 禁用颜色
+$-radio-disabled-label-color: var(--wot-radio-disabled-label-color, $-checkbox-disabled-label-color) !default; // 禁用文字颜色
+
+$-radio-large-size: var(--wot-radio-large-size, $-checkbox-large-size) !default; // 左侧图标尺寸
+$-radio-large-label-fs: var(--wot-radio-large-label-fs, $-checkbox-large-label-fs) !default; // 右侧文字字号
+
+$-radio-button-height: var(--wot-radio-button-height, $-checkbox-button-height) !default; // 按钮模式复选框高
+$-radio-button-min-width: var(--wot-radio-button-min-width, 60px) !default; // 按钮模式最小宽
+$-radio-button-max-width: var(--wot-radio-button-max-width, 144px) !default; // 按钮模式最大宽
+$-radio-button-radius: var(--wot-radio-button-radius, $-checkbox-button-radius) !default; // 按钮圆角大小
+$-radio-button-bg: var(--wot-radio-button-bg, $-checkbox-button-bg) !default; // 按钮模式背景颜色
+$-radio-button-fs: var(--wot-radio-button-fs, $-checkbox-button-font-size) !default; // 按钮模式字号
+$-radio-button-border: var(--wot-radio-button-border, $-checkbox-button-border) !default; // 按钮边框颜色
+$-radio-button-disabled-border: var(--wot-radio-button-disabled-border, $-checkbox-button-disabled-border) !default; // 按钮禁用边框颜色
+
+$-radio-dot-size: var(--wot-radio-dot-size, 8px) !default; // 单选dot模式圆点尺寸
+$-radio-dot-large-size: var(--wot-radio-dot-large-size, 10px) !default; // 单选dot模式大尺寸圆点尺寸
+$-radio-dot-checked-bg: var(--wot-radio-dot-checked-bg, $-color-theme) !default; // 单选dot模式选中背景色
+$-radio-dot-checked-border-color: var(--wot-radio-dot-checked-border-color, $-color-theme) !default; // 单选dot模式选中边框色
+$-radio-dot-border-color: var(--wot-radio-dot-border-color, #dcdcdc) !default; // 单选dot模式边框色
+$-radio-dot-disabled-border: var(--wot-radio-dot-disabled-border, #d9d9d9) !default; // 单选dot模式禁用边框颜色
+$-radio-dot-disabled-bg: var(--wot-radio-dot-disabled-bg, #d9d9d9) !default; // 单选dot模式禁用背景颜色
+
+/* search */
+$-search-side-padding: var(--wot-search-side-padding, $-size-side-padding) !default; // 左右间距
+$-search-padding: var(--wot-search-padding, 10px 0 10px $-search-side-padding) !default; // 不包含取消按钮的间距
+$-search-input-radius: var(--wot-search-input-radius, 15px) !default; // 输入框圆角大小
+$-search-input-bg: var(--wot-search-input-bg, $-color-bg) !default; // 输入框背景色
+$-search-input-height: var(--wot-search-input-height, 30px) !default; // 输入框高度
+$-search-input-padding: var(--wot-search-input-padding, 0 32px 0 42px) !default; // 输入框间距
+$-search-input-fs: var(--wot-search-input-fs, $-fs-content) !default; // 输入框字号
+$-search-input-color: var(--wot-search-input-color, #262626) !default; // 输入框文字颜色
+$-search-icon-color: var(--wot-search-icon-color, $-color-icon) !default; // 图标颜色
+$-search-icon-size: var(--wot-search-icon-size, 18px) !default; // 图标大小
+$-search-clear-icon-size: var(--wot-search-clear-icon-size, $-fs-title) !default; // 清除图标大小
+$-search-placeholder-color: var(--wot-search-placeholder-color, #bfbfbf) !default; // placeholder 颜色
+$-search-cancel-padding: var(--wot-search-cancel-padding, 0 $-search-side-padding 0 10px) !default; // 取消按钮间距
+$-search-cancel-fs: var(--wot-search-cancel-fs, $-fs-title) !default; // 取消按钮字号
+$-search-cancel-color: var(--wot-search-cancel-color, rgba(0, 0, 0, 0.65)) !default; // 取消按钮颜色
+$-search-light-bg: var(--wot-search-light-bg, $-color-bg) !default; // light 类型的容器背景色
+
+/* slider */
+$-slider-fs: var(--wot-slider-fs, $-fs-content) !default; // 字体大小
+$-slider-handle-radius: var(--wot-slider-handle-radius, 12px) !default; // 滑块半径
+$-slider-handle-bg: var(--wot-slider-handle-bg, resultColor(139deg, $-color-theme, 'dark' 'light', #ffffff #f7f7f7, 0% 100%)) !default; // 滑块背景
+$-slider-axie-height: var(--wot-slider-axie-height, 3px) !default; // 滑轴高度
+$-slider-color: var(--wot-slider-color, #333) !default; // 字体颜色
+$-slider-axie-bg: var(--wot-slider-axie-bg, #e5e5e5) !default; // 滑轴的默认背景色
+$-slider-line-color: var(
+ --wot-slider-line-color,
+ resultColor(315deg, $-color-theme, 'dark' 'light', #517cf0 #769ef5, 0% 100%)
+) !default; // 进度条颜色
+$-slider-disabled-color: var(--wot-slider-disabled-color, rgba(0, 0, 0, 0.25)) !default; // 禁用状态下字体颜色
+
+/* sort-button */
+$-sort-button-fs: var(--wot-sort-button-fs, $-fs-content) !default; // 字号
+$-sort-button-color: var(--wot-sort-button-color, $-color-content) !default; // 颜色
+$-sort-button-height: var(--wot-sort-button-height, 48px) !default; // 高度
+$-sort-button-line-height: var(--wot-sort-button-line-height, 3px) !default; // 下划线高度
+$-sort-button-line-color: var(--wot-sort-button-line-color, $-color-theme) !default; // 下划线颜色
+
+/* steps */
+$-steps-icon-size: var(--wot-steps-icon-size, 22px) !default; // 图标尺寸
+$-steps-inactive-color: var(--wot-steps-inactive-color, rgba(0, 0, 0, 0.25)) !default; // 等待状态文字颜色
+$-steps-finished-color: var(--wot-steps-finished-color, $-color-theme) !default; // 完成文字颜色
+$-steps-icon-text-fs: var(--wot-steps-icon-text-fs, $-fs-content) !default; // 数字图标文字字号
+$-steps-error-color: var(--wot-steps-error-color, $-color-danger) !default; // 异常颜色
+$-steps-title-fs: var(--wot-steps-title-fs, $-fs-content) !default; // 标题字号
+$-steps-title-fw: var(--wot-steps-title-fw, $-fw-medium) !default; // 标题字重
+$-steps-label-fs: var(--wot-steps-label-fs, $-fs-secondary) !default; // 描述信息字号
+$-steps-description-color: var(--wot-steps-description-color, rgba(0, 0, 0, 0.45)) !default; // 描述信息颜色
+$-steps-is-icon-width: var(--wot-steps-is-icon-width, 30px) !default; // 自定义图标的宽度,给左右留白
+$-steps-line-color: var(--wot-steps-line-color, rgba(0, 0, 0, 0.15)) !default; // 线条颜色
+$-steps-dot-size: var(--wot-steps-dot-size, 7px) !default; // 点状大小
+$-steps-dot-active-size: var(--wot-steps-dot-active-size, 9px) !default; // 点状高亮大小
+
+/* switch */
+$-switch-size: var(--wot-switch-size, 28px) !default; // switch大小
+$-switch-width: var(--wot-switch-width, calc(1.8em + 4px)) !default; // 宽度
+$-switch-height: var(--wot-switch-height, calc(1em + 4px)) !default; // 高度
+$-switch-circle-size: var(--wot-switch-circle-size, 1em) !default; // 圆点大小
+$-switch-border-color: var(--wot-switch-border-color, #e5e5e5) !default; // 边框颜色选中状态背景颜色
+$-switch-active-color: var(--wot-switch-active-color, $-color-theme) !default; // 选中状态背景
+$-switch-active-shadow-color: var(--wot-switch-active-shadow-color, rgba(0, 83, 162, 0.5)) !default; // 选中状态shadow颜色
+$-switch-inactive-color: var(--wot-switch-inactive-color, #eaeaea) !default; // 非选中背景颜色
+$-switch-inactive-shadow-color: var(--wot-switch-inactive-shadow-color, rgba(155, 155, 155, 0.5)) !default; // 非选中状态shadow颜色
+
+/* tabs */
+$-tabs-nav-arrow-fs: var(--wot-tabs-nav-arrow-fs, 18px) !default; // 全部Icon字号
+$-tabs-nav-arrow-open-fs: var(--wot-tabs-nav-arrow-open-fs, 14px) !default; // 展开Icon字号
+$-tabs-nav-width: var(--wot-tabs-nav-width, 100vw) !default; // tabs 头部切换宽度
+$-tabs-nav-height: var(--wot-tabs-nav-height, 42px) !default; // 头部切换高度
+$-tabs-nav-fs: var(--wot-tabs-nav-fs, $-fs-content) !default; // 头部切换文字大小
+$-tabs-nav-color: var(--wot-tabs-nav-color, rgba(0, 0, 0, 0.85)) !default; // 头部切换文字颜色
+$-tabs-nav-bg: var(--wot-tabs-nav-bg, $-color-white) !default; // 背景颜色
+$-tabs-nav-active-color: var(--wot-tabs-nav-active-color, $-color-theme) !default; // 头部高亮颜色
+$-tabs-nav-disabled-color: var(--wot-tabs-nav-disabled-color, rgba(0, 0, 0, 0.25)) !default; // 头部禁用颜色
+$-tabs-nav-line-height: var(--wot-tabs-nav-line-height, 3px) !default; // 高亮边框高度
+$-tabs-nav-line-width: var(--wot-tabs-nav-line-width, 19px) !default; // 高亮边框宽度
+$-tabs-nav-line-bg-color: var(--wot-tabs-nav-line-bg-color, $-color-theme) !default; // 底部条颜色
+$-tabs-nav-map-fs: var(--wot-tabs-nav-map-fs, $-fs-content) !default; // map 类型按钮字号
+$-tabs-nav-map-color: var(--wot-tabs-nav-map-color, rgba(0, 0, 0, 0.85)) !default; // map 类型按钮文字颜色
+$-tabs-nav-map-arrow-color: var(--wot-tabs-nav-map-arrow-color, rgba(0, 0, 0, 0.65)) !default; // map 类型箭头颜色
+$-tabs-nav-map-btn-before-bg: var(
+ --wot-tabs-nav-map-btn-before-bg,
+ linear-gradient(270deg, rgba(255, 255, 255, 1) 1%, rgba(255, 255, 255, 0) 100%)
+) !default; // 左侧map遮罩阴影
+$-tabs-nav-map-button-back-color: var(--wot-tabs-nav-map-button-back-color, rgba(0, 0, 0, 0.04)) !default; // map 类型按钮边框颜色
+$-tabs-nav-map-button-radius: var(--wot-tabs-nav-map-button-radius, 16px) !default; // map 类型按钮圆角大小
+$-tabs-nav-map-modal-bg: var(--wot-tabs-nav-map-modal-bg, $-overlay-bg) !default; // map 类型蒙层背景色
+
+/* tag */
+$-tag-fs: var(--wot-tag-fs, $-fs-secondary) !default; // 字号
+$-tag-color: var(--wot-tag-color, $-color-white) !default; // 字体颜色
+$-tag-small-fs: var(--wot-tag-small-fs, $-fs-aid) !default; // 小尺寸字号
+$-tag-info-color: var(--wot-tag-info-color, #585858) !default; // info 颜色
+$-tag-primary-color: var(--wot-tag-primary-color, $-color-theme) !default; // 主颜色
+$-tag-danger-color: var(--wot-tag-danger-color, $-color-danger) !default; // danger 颜色
+$-tag-warning-color: var(--wot-tag-warning-color, $-color-warning) !default; // warning 颜色
+$-tag-success-color: var(--wot-tag-success-color, $-color-success) !default; // success 颜色
+$-tag-info-bg: var(--wot-tag-info-bg, resultColor(49deg, $-color-black, 'dark' 'light', #808080 #999999, 0% 100%)) !default; // info 背景颜色
+$-tag-primary-bg: var(--wot-tag-primary-bg, $-color-theme) !default; // 主背景颜色
+$-tag-danger-bg: var(--wot-tag-danger-bg, $-color-danger) !default; // danger 背景颜色
+$-tag-warning-bg: var(--wot-tag-warning-bg, $-color-warning) !default; // warning 背景颜色
+$-tag-success-bg: var(--wot-tag-success-bg, $-color-success) !default; // success 背景颜色
+$-tag-round-color: var(--wot-tag-round-color, rgba(102, 102, 102, 1)) !default; // round 字体颜色
+$-tag-round-border-color: var(--wot-tag-round-border-color, rgba(225, 225, 225, 1)) !default; // round 边框颜色
+$-tag-round-radius: var(--wot-tag-round-radius, 12px) !default; // round 圆角大小
+$-tag-mark-radius: var(--wot-tag-mark-radius, 6px 2px 6px 2px) !default; // mark 圆角大小
+$-tag-close-size: var(--wot-tag-close-size, 14px) !default; // 关闭按钮字号
+$-tag-close-color: var(--wot-tag-close-color, $-tag-info-color) !default; // 关闭按钮颜色
+$-tag-close-active-color: var(--wot-tag-close-active-color, rgba(0, 0, 0, 0.45)) !default; // 关闭按钮 active 颜色
+
+/* toast */
+$-toast-padding: var(--wot-toast-padding, 16px 24px) !default; // padding
+$-toast-max-width: var(--wot-toast-max-width, 300px) !default; // 最大宽度
+$-toast-radius: var(--wot-toast-radius, 8px) !default; // 圆角大小
+$-toast-bg: var(--wot-toast-bg, $-overlay-bg) !default; // 背景色
+$-toast-fs: var(--wot-toast-fs, $-fs-content) !default; // 字号
+$-toast-with-icon-min-width: var(--wot-toast-with-icon-min-width, 150px) !default; // 有图标的情况下最小宽度
+$-toast-icon-size: var(--wot-toast-icon-size, 32px) !default; // 图标大小
+$-toast-icon-margin-right: var(--wot-toast-icon-margin-right, 12px) !default; // 图标右边距
+$-toast-loading-padding: var(--wot-toast-loading-padding, 10px) !default; // loading 下的padding
+$-toast-box-shadow: var(--wot-toast-box-shadow, 0px 6px 16px 0px rgba(0, 0, 0, 0.08)) !default; // 外部阴影
+
+/* loading */
+$-loading-size: var(--wot-loading-size, 32px) !default; // loading 大小
+
+/* tooltip */
+$-tooltip-bg: var(--wot-tooltip-bg, rgba(38, 39, 40, 0.8)) !default; // 背景色
+$-tooltip-color: var(--wot-tooltip-color, $-color-white) !default; // 文字颜色
+$-tooltip-radius: var(--wot-tooltip-radius, 8px) !default; // 圆角大小
+$-tooltip-arrow-size: var(--wot-tooltip-arrow-size, 5px) !default; // 箭头大小
+$-tooltip-fs: var(--wot-tooltip-fs, $-fs-content) !default; // 字号
+$-tooltip-blur: var(--wot-tooltip-blur, 10px) !default; // 背景高斯模糊效果
+$-tooltip-padding: var(--wot-tooltip-padding, 9px 20px) !default; // 间距
+$-tooltip-close-size: var(--wot-tooltip-close-size, 6px) !default; // 背景高斯模糊效果
+$-tooltip-z-index: var(--wot-tooltip-z-index, 500) !default;
+$-tooltip-line-height: var(--wot-tooltip-line-height, 18px) !default; // 行高
+
+/* popover */
+$-popover-bg: var(--wot-popover-bg, $-color-white) !default; // 背景色
+$-popover-color: var(--wot-popover-color, rgba(0, 0, 0, 0.85)) !default; // 文字颜色
+$-popover-box-shadow: var(--wot-popover-box-shadow, 0px 2px 10px 0px rgba(0, 0, 0, 0.1)) !default; // 阴影颜色
+$-popover-arrow-box-shadow: var(--wot-popover-arrow-box-shadow, 0px 2px 10px 0px rgba(0, 0, 0, 0.2)) !default; // 阴影颜色
+$-popover-border-color: var(--wot-popover-border-color, rgba(0, 0, 0, 0.09)) !default; // 阴影颜色
+$-popover-radius: var(--wot-popover-radius, 4px) !default; // 圆角大小
+$-popover-arrow-size: var(--wot-popover-arrow-size, 6px) !default; // 箭头大小
+$-popover-fs: var(--wot-popover-fs, $-fs-content) !default; // 字号
+$-popover-padding: var(--wot-popover-padding, 15px) !default; // 间距
+$-popover-line-height: var(--wot-popover-line-height, 18px) !default; // 行高
+$-popover-z-index: var(--wot-popover-z-index, $-tooltip-z-index) !default;
+
+/* grid-item */
+$-grid-item-fs: var(--wot-grid-item-fs, 12px) !default; // 字号
+$-grid-item-bg: var(--wot-grid-item-bg, $-color-white) !default; // 字号
+$-grid-item-padding: var(--wot-grid-item-padding, 14px 0px) !default; // 内容的 padding
+$-grid-item-border-color: var(--wot-grid-item-border-color, $-color-border-light) !default; // 边框颜色
+
+/* statustip */
+$-statustip-fs: var(--wot-statustip-fs, $-fs-content) !default; // 字号
+$-statustip-color: var(--wot-statustip-color, rgba(0, 0, 0, 0.45)) !default; // 文字颜色
+$-statustip-line-height: var(--wot-statustip-line-height, 16px) !default; // 文字行高
+$-statustip-padding: var(--wot-statustip-padding, 5px 10px) !default; // 间距
+
+/* card */
+$-card-bg: var(--wot-card-bg, $-color-white) !default; // 背景色
+$-card-fs: var(--wot-card-fs, $-fs-content) !default; // 卡片字号
+$-card-padding: var(--wot-card-padding, 0 $-size-side-padding) !default; // 内边距
+$-card-footer-padding: var(--wot-card-footer-padding, 12px 0 16px) !default; // 底部内边距
+$-card-shadow-color: var(--wot-card-shadow-color, 0px 4px 8px 0px rgba(0, 0, 0, 0.02)) !default; // 阴影
+$-card-radius: var(--wot-card-radius, 8px) !default; // 圆角大小
+$-card-line-height: var(--wot-card-line-height, 1.1) !default; // 行高
+$-card-margin: var(--wot-card-margin, 0 $-size-side-padding) !default; // 外边距
+$-card-title-color: var(--wot-card-title-color, rgba(0, 0, 0, 0.85)) !default; // 标题颜色
+$-card-title-fs: var(--wot-card-title-fs, $-fs-title) !default; // 矩形卡片标题字号
+$-card-content-border-color: var(--wot-card-content-border-color, rgba(0, 0, 0, 0.09)) !default; // 内容边框
+$-card-rectangle-title-padding: var(--wot-card-rectangle-title-padding, 15px 15px 12px) !default; // 矩形卡片头部内边距
+$-card-rectangle-content-padding: var(--wot-card-rectangle-content-padding, 16px 0) !default; // 矩形卡片内容内边距
+$-card-rectangle-footer-padding: var(--wot-card-rectangle-footer-padding, 12px 0) !default; // 矩形卡片底部内边距
+$-card-content-color: var(--wot-card-content-color, rgba(0, 0, 0, 0.45)) !default; // 文本内容颜色
+$-card-content-line-height: var(--wot-card-content-line-height, 1.428) !default; // 文本内容行高
+$-card-content-margin: var(--wot-card-content-margin, 13px 0 12px) !default; // 内容外边距
+$-card-content-rectangle-margin: var(--wot-card-content-rectangle-margin, 14px 0 12px) !default; // 矩形卡片内容外边距
+
+/* upload */
+$-upload-size: var(--wot-upload-size, 80px) !default; // upload的外边框默认尺寸
+$-upload-evoke-icon-size: var(--wot-upload-evoke-icon-size, 32px) !default; // 唤起项的图标大小
+$-upload-evoke-bg: var(--wot-upload-evoke-bg, rgba(0, 0, 0, 0.04)) !default; // 唤起项的背景色
+$-upload-evoke-color: var(--wot-upload-evoke-color, rgba(0, 0, 0, 0.25)) !default; // 唤起项的图标颜色
+$-upload-evoke-disabled-color: var(--wot-upload-evoke-disabled-color, rgba(0, 0, 0, 0.09)) !default; // 唤起项禁用颜色
+$-upload-close-icon-size: var(--wot-upload-close-icon-size, 16px) !default; // 移除按钮尺寸
+$-upload-close-icon-color: var(--wot-upload-close-icon-color, rgba(0, 0, 0, 0.65)) !default; // 移除按钮颜色
+$-upload-progress-fs: var(--wot-upload-progress-fs, 14px) !default; // 进度文字字号
+$-upload-file-fs: var(--wot-upload-file-fs, 12px) !default; // 文件名字号
+$-upload-file-color: var(--wot-upload-file-color, $-color-secondary) !default; // 文件名字颜色
+$-upload-preview-name-fs: var(--wot-upload-preview-name-fs, 12px) !default; // 预览图片名字号
+$-upload-preview-icon-size: var(--wot-upload-preview-icon-size, 24px) !default; // 预览内部图标尺寸
+$-upload-preview-name-bg: var(--wot-upload-preview-name-bg, rgba(0, 0, 0, 0.6)) !default; // 预览文件名背景色
+$-upload-preview-name-height: var(--wot-upload-preview-name-height, 22px) !default; // 预览文件名背景高度
+$-upload-cover-icon-size: var(--wot-upload-cover-icon-size, 22px) !default; // 视频/文件图标尺寸
+
+/* curtain */
+$-curtain-content-radius: var(--wot-curtain-content-radius, 24px) !default; // 内容圆角
+$-curtain-content-close-color: var(--wot-curtain-content-close-color, $-color-white) !default; // 关闭按钮颜色
+$-curtain-content-close-fs: var(--wot-curtain-content-close-fs, $-fs-big) !default; // 关闭按钮大小
+
+/* notify */
+$-notify-text-color: var(--wot-notify-text-color, $-color-white) !default;
+$-notify-padding: var(--wot-notify-padding, 8px 16px) !default;
+$-notify-font-size: var(--wot-notify-font-size, $-fs-content) !default;
+$-notify-line-height: var(--wot-notify-line-height, 20px) !default;
+$-notify-primary-background: var(--wot-notify-primary-background, $-color-theme) !default;
+$-notify-success-background: var(--wot-notify-success-background, $-color-success) !default;
+$-notify-danger-background: var(--wot-notify-danger-background, $-color-danger) !default;
+$-notify-warning-background: var(--wot-notify-warning-background, $-color-warning) !default;
+
+/* skeleton */
+$-skeleton-background-color: var(--wot-skeleton-background-color, #eee) !default;
+$-skeleton-animation-gradient: var(--wot-skeleton-animation-gradient, rgba(0, 0, 0, 0.04)) !default;
+$-skeleton-animation-flashed: var(--wot-skeleton-animation-flashed, rgba(230, 230, 230, 0.3)) !default;
+$-skeleton-text-height-default: var(--wot-skeleton-text-height-default, 16px) !default;
+$-skeleton-rect-height-default: var(--wot-skeleton-rect-height-default, 16px) !default;
+$-skeleton-circle-height-default: var(--wot-skeleton-circle-height-default, 48px) !default;
+$-skeleton-row-margin-bottom: var(--wot-skeleton-row-margin-bottom, 16px) !default;
+$-skeleton-border-radius-text: var(--wot-skeleton-border-radius-text, 2px) !default;
+$-skeleton-border-radius-rect: var(--wot-skeleton-border-radius-rect, 4px) !default;
+$-skeleton-border-radius-circle: var(--wot-skeleton-border-radius-circle, 50%) !default;
+
+/* circle */
+$-circle-text-color: var(--wot-circle-text-color, $-color-content) !default; // circle文字颜色
+
+/* swiper */
+$-swiper-radius: var(--wot-swiper-radius, 8px);
+$-swiper-item-padding: var(--wot-swiper-item-padding, 0);
+$-swiper-item-text-color: var(--wot-swiper-item-text-color, #ffffff);
+$-swiper-item-text-fs: var(--wot-swiper-item-text-fs, $-fs-title);
+
+
+/* swiper-nav */
+// dot & dots-bar
+$-swiper-nav-dot-color: var(--wot-swiper-nav-dot-color, $-font-white-2) !default;
+$-swiper-nav-dot-active-color: var(--wot-swiper-nav-dot-active-color, $-font-white-1) !default;
+$-swiper-nav-dot-size: var(--wot-swiper-nav-dot-size, 12rpx) !default;
+$-swiper-nav-dots-bar-active-width: var(--wot-swiper-nav-dots-bar-active-width, 40rpx) !default;
+// fraction
+$-swiper-nav-fraction-color: var(--wot-swiper-nav-fraction-color, $-font-white-1) !default;
+$-swiper-nav-fraction-bg-color: var(--wot-swiper-nav-fraction-bg-color, $-font-gray-3) !default;
+$-swiper-nav-fraction-height: var(--wot-swiper-nav-fraction-height, 48rpx) !default;
+$-swiper-nav-fraction-font-size: var(--wot-swiper-nav-fraction-font-size, 24rpx) !default;
+// button
+$-swiper-nav-btn-color: var(--wot-swiper-nav-btn-color, $-font-white-1) !default;
+$-swiper-nav-btn-bg-color: var(--wot-swiper-nav-btn-bg-color, $-font-gray-3) !default;
+$-swiper-nav-btn-size: var(--wot-swiper-nav-btn-size, 48rpx) !default;
+
+/* segmented */
+$-segmented-padding: var(--wot-segmented-padding, 4px) !default; // 分段器padding
+$-segmented-item-bg-color: var(--wot-segmented-item-bg-color, #eeeeee) !default;
+$-segmented-item-color: var(--wot-segmented-item-color, rgba(0, 0, 0, 0.85)) !default; // 标题文字颜色
+$-segmented-item-acitve-bg: var(--wot-segmented-item-acitve-bg, #ffffff) !default; // 标题文字颜色
+$-segmented-item-disabled-color: var(--wot-segmented-item-disabled-color, rgba(0, 0, 0, 0.25)) !default; // 标题文字禁用颜色
+
+/* tabbar */
+$-tabbar-height: var(--wot-tabbar-height, 50px) !default;
+$-tabbar-box-shadow: var(
+ --wot-tabbar-box-shadow,
+ 0 6px 30px 5px rgba(0, 0, 0, 0.05),
+ 0 16px 24px 2px rgba(0, 0, 0, 0.04),
+ 0 8px 10px -5px rgba(0, 0, 0, 0.08)
+) !default; // round类型tabbar阴影
+
+/* tabbar-item */
+$-tabbar-item-title-font-size: var(--wot-tabbar-item-title-font-size, 10px) !default; // tabbar选项文字大小
+$-tabbar-item-title-line-height: var(--wot-tabbar-item-title-line-height, initial) !default; // tabbar选项标题文字行高
+$-tabbar-inactive-color: var(--wot-tabbar-inactive-color, $-color-title) !default; // 标题文字和图标颜色
+$-tabbar-active-color: var(--wot-tabbar-active-color, $-color-theme) !default; // 选中文字和图标颜色
+$-tabbar-item-icon-size: var(--wot-tabbar-item-icon-size, 20px) !default; // tabbar选项图标大小
+
+/* navbar */
+$-navbar-height: var(--wot-navbar-height, 44px) !default; // navbar高度
+$-navbar-color: var(--wot-navbar-color, $-font-gray-1) !default; // navbar字体颜色
+$-navbar-background: var(--wot-navbar-background, $-color-white) !default; // navbar背景颜色
+$-navbar-arrow-size: var(--wot-navbar-arrow-size, 24px) !default; // navbar左箭头图标大小
+$-navbar-desc-font-size: var(--wot-navbar-desc-font-size, 16px); // navbar 左箭头字体大小
+$-navbar-desc-font-color: var(--wot-navbar-desc-font-color, $-font-gray-1) !default; // navbar左右两侧字体颜色
+$-navbar-title-font-size: var(--wot-navbar-title-font-size, 18px); // navbar title字体大小
+$-navbar-title-font-weight: var(--wot-navbar-title-font-weight, 600); // navbar title字重
+$-navbar-disabled-opacity: var(--wot-navbar-disabled-opacity, 0.6) !default; // navbar左右两侧字体禁用
+$-navbar-hover-color: var(--wot-navbar-hover-color, #eee) !default; // navbar hover样式
+
+/* navbar-capsule */
+$-navbar-capsule-border-color: var(--wot-navbar-capsule-border-color, #e7e7e7) !default;
+$-navbar-capsule-border-radius: var(--wot-navbar-capsule-border-radius, 16px) !default;
+$-navbar-capsule-width: var(--wot-navbar-capsule-width, 88px) !default;
+$-navbar-capsule-height: var(--wot-navbar-capsule-height, 32px) !default;
+$-navbar-capsule-icon-size: var(--wot-navbar-capsule-icon-size, 20px) !default; // navbar capsule图标大小
+
+/* table */
+$-table-color: var(--wot-table-color, $-font-gray-1) !default; // 表格字体颜色
+$-table-bg: var(--wot-table-bg, #ffffff) !default; // 表格背景颜色
+$-table-stripe-bg: var(--wot-table-stripe-bg, #f3f3f3) !default; // 表格背景颜色
+$-table-border-color: var(--wot-table-border-color, #ececec) !default; // 表格边框颜色
+$-table-font-size: var(--wot-table-font-size, 13px) !default; // 表格字体大小
+
+/* sidebar */
+$-sidebar-bg: var(--wot-sidebar-bg, $-color-gray-1) !default; // 侧边栏背景色
+$-sidebar-width: var(--wot-sidebar-width, 104px) !default; // 侧边栏宽度
+$-sidebar-height: var(--wot-sidebar-height, 100%) !default; // 侧边栏高度
+
+/* sidebar-item */
+$-sidebar-color: var(--wot-sidebar-color, $-font-gray-1) !default;
+$-sidebar-item-height: var(--wot-sidebar-item-height, 56px) !default;
+$-sidebar-item-line-height: var(--wot-sidebar-item-line-height, 24px) !default;
+$-sidebar-disabled-color: var(--wot-side-bar-disabled-color, $-font-gray-4) !default;
+$-sidebar-active-color: var(--wot-sidebar-active-color, $-color-theme) !default; // 激活项字体颜色
+$-sidebar-active-bg: var(--wot-sidebar-active-bg, $-color-white) !default; // 激活项背景颜色
+$-sidebar-hover-bg: var(--wot-sidebar-hover-bg, $-color-gray-2) !default; // 激活项点击背景颜色
+$-sidebar-border-radius: var(--wot-sidebar-border-radius, 8px) !default;
+$-sidebar-font-size: var(--wot-sidebar-font-size, 16px) !default;
+$-sidebar-icon-size: var(--wot-sidebar-icon-size, 20px) !default;
+$-sidebar-active-border-width: var(--wot-sidebar-active-border-width, 4px) !default;
+$-sidebar-active-border-height: var(--wot-sidebar-active-border-height, 16px) !default;
+
+/* fab */
+$-fab-trigger-height: var(--wot-fab-trigger-height, 56px) !default;
+$-fab-trigger-width: var(--wot-fab-trigger-width, 56px) !default;
+$-fab-actions-padding: var(--wot-actions-padding, 12px) !default;
+$-fab-icon-fs: var(--wot-fab-icon-fs, 20px) !default;
+
+/* count-down */
+$-count-down-text-color: var(--wot-count-down-text-color, $-color-gray-8) !default;
+$-count-down-font-size: var(--wot-count-down-font-size, $-fs-content) !default;
+$-count-down-line-height: var(--wot-count-down-line-height, 20px) !default;
+
+/* keyboard */
+$-keyboard-key-height: var(--wot-keyboard-key-height, 48px) !default;
+$-keyboard-key-font-size: var(--wot-keyboard-key-font-size, 28px) !default;
+$-keyboard-key-background: var(--wot-keyboard-key-background, $-color-white) !default;
+$-keyboard-key-border-radius: var(--wot-keyboard-key-border-radius, 8px) !default;
+$-keyboard-delete-font-size: var(--wot-keyboard-delete-font-size, 16px) !default;
+$-keyboard-key-active-color: var(--wot-keyboard-key-active-color, $-color-gray-3) !default;
+$-keyboard-button-text-color: var(--wot-keyboard-button-text-color, $-color-white) !default;
+$-keyboard-button-background: var(--wot-keyboard--button-background, $-color-theme) !default;
+$-keyboard-button-active-opacity: var(--wot-keyboard-button-active-opacity, 0.6) !default;
+$-keyboard-background: var(--wot-keyboard-background, $-color-gray-2) !default;
+$-keyboard-title-height: var(--wot-keyboard-title-height, 34px) !default;
+$-keyboard-title-color: var(--wot-keyboard-title-color, $-color-gray-7) !default;
+$-keyboard-title-font-size: var(--wot-keyboard-title-font-size, 16px) !default;
+$-keyboard-close-padding: var(--wot-keyboard-title-font-size, 0 16px) !default;
+$-keyboard-close-color: var(--wot-keyboard-close-color, $-color-theme) !default;
+$-keyboard-close-font-size: var(--wot-keyboard-close-font-size, 14px) !default;
+$-keyboard-icon-size: var(--wot-keyboard-icon-size, 22px) !default;
+
+/* number-keyboard */
+$-number-keyboard-key-height: var(--wot-number-keyboard-key-height, 48px) !default;
+$-number-keyboard-key-font-size: var(--wot-number-keyboard-key-font-size, 28px) !default;
+$-number-keyboard-key-background: var(--wot-number-keyboard-key-background, $-color-white) !default;
+$-number-keyboard-key-border-radius: var(--wot-number-keyboard-key-border-radius, 8px) !default;
+$-number-keyboard-delete-font-size: var(--wot-number-keyboard-delete-font-size, 16px) !default;
+$-number-keyboard-key-active-color: var(--wot-number-keyboard-key-active-color, $-color-gray-3) !default;
+$-number-keyboard-button-text-color: var(--wot-number-keyboard-button-text-color, $-color-white) !default;
+$-number-keyboard-button-background: var(--wot-number-keyboard--button-background, $-color-theme) !default;
+$-number-keyboard-button-active-opacity: var(--wot-number-keyboard-button-active-opacity, 0.6) !default;
+$-number-keyboard-background: var(--wot-number-keyboard-background, $-color-gray-2) !default;
+$-number-keyboard-title-height: var(--wot-number-keyboard-title-height, 34px) !default;
+$-number-keyboard-title-color: var(--wot-number-keyboard-title-color, $-color-gray-7) !default;
+$-number-keyboard-title-font-size: var(--wot-number-keyboard-title-font-size, 16px) !default;
+$-number-keyboard-close-padding: var(--wot-number-keyboard-title-font-size, 0 16px) !default;
+$-number-keyboard-close-color: var(--wot-number-keyboard-close-color, $-color-theme) !default;
+$-number-keyboard-close-font-size: var(--wot-number-keyboard-close-font-size, 14px) !default;
+$-number-keyboard-icon-size: var(--wot-number-keyboard-icon-size, 22px) !default;
+
+/* passwod-input */
+$-password-input-height: var(--wot-password-input-height, 50px);
+$-password-input-margin: var(--wot-password-input-margin, 16px);
+$-password-input-font-size: var(--wot-password-input-margin, 20px);
+$-password-input-radius: var(--wot-password-input-radius, 6px);
+$-password-input-background: var(--wot-password-input-background, #fff);
+$-password-input-info-color: var(--wot-password-input-info-color, $-color-info);
+$-password-input-info-font-size: var(--wot-password-input-info-font-size, $-fs-content);
+$-password-input-border-color: var(--wot-password-border-color, #ebedf0);
+$-password-input-error-info-color: var(--wot-password-input-error-info-color, $-color-danger);
+$-password-input-dot-size: var(--wot-password-input-dot-size, 10px);
+$-password-input-dot-color: var(--wot-password-input-dot-color, $-color-gray-8);
+$-password-input-text-color: var(--wot-password-input-text-color, $-color-gray-8);
+$-password-input-cursor-color: var(--wot-password-input-cursor-color, $-color-gray-8);
+$-password-input-cursor-width: var(--wot-password-input-cursor-width, 1px);
+$-password-input-cursor-height: var(--wot-password-input-cursor-height, 40%);
+$-password-input-cursor-duration: var(--wot-password-input-cursor-duration, 1s);
+
+/* form-item */
+$-form-item-error-message-color: var(--wot-form-item-error-message-color, $-color-danger) !default;
+$-form-item-error-message-font-size: var(--wot-form-item-error-message-font-size, $-fs-secondary) !default;
+$-form-item-error-message-line-height: var(--wot-form-item-error-message-line-height, 24px) !default;
+
+/* backtop */
+$-backtop-bg: var(--wot-backtop-bg, #e1e1e1) !default;
+$-backtop-icon-size: var(--wot-backtop-icon-size, 20px) !default;
+
+/* index-bar */
+$-index-bar-index-font-size: var(--wot-index-bar-index-font-size, $-fs-aid) !default;
+
+/* text */
+$-text-info-color: var(--wot-text-info-color, $-color-info) !default;
+$-text-primary-color: var(--wot-text-primary-color, $-color-theme) !default;
+$-text-error-color: var(--wot-text-error-color, $-color-danger) !default;
+$-text-warning-color: var(--wot-text-warning-color, $-color-warning) !default;
+$-text-success-color: var(--wot-text-success-color, $-color-success) !default;
+
+/* video-preview */
+$-video-preview-bg: var(--wot-video-preview-bg, rgba(0, 0, 0, 0.8)) !default; // 背景色
+$-video-preview-close-color: var(--wot-video-preview-close-color, #fff) !default; // 图标颜色
+$-video-preview-close-font-size: var(--wot-video-preview-close-font-size, 20px) !default; // 图标大小
+
+/* img-cropper */
+$-img-cropper-icon-size: var(--wot-img-cropper-icon-size, $-fs-big) !default; // 图标大小
+$-img-cropper-icon-color: var(--wot-img-cropper-icon-color, #fff) !default; // 图标颜色
+
+/* floating-panel */
+$-floating-panel-bg: var(--wot-floating-panel-bg, $-color-white) !default; // 背景色
+$-floating-panel-radius: var(--wot-floating-panel-radius, 16px) !default; // 圆角
+$-floating-panel-z-index: var(--wot-floating-panel-z-index, 99) !default; // 层级
+$-floating-panel-header-height: var(--wot-floating-panel-header-height, 30px) !default; // 头部高度
+$-floating-panel-bar-width: var(--wot-floating-panel-bar-width, 20px) !default; // bar 宽度
+$-floating-panel-bar-height: var(--wot-floating-panel-bar-height, 3px) !default; // bar 高度
+$-floating-panel-bar-bg: var(--wot-floating-panel-bar-bg, $-color-gray-5) !default; // bar 背景色
+$-floating-panel-bar-radius: var(--wot-floating-panel-bar-radius, 4px) !default; // bar 圆角
+$-floating-panel-content-bg: var(--wot-floating-panel-content-bg, $-color-white) !default; // 内容背景色
+
+/* signature */
+$-signature-bg: var(--wot-signature-bg, $-color-white) !default; // 背景色
+$-signature-radius: var(--wot-signature-radius, 4px) !default; // 圆角
+$-signature-border: var(--wot-signature-border, 1px solid $-color-gray-5) !default; // 边框圆角
+$-signature-footer-margin-top: var(--wot-signature-footer-margin-top, 8px) !default; // 底部按钮上边距
+$-signature-button-margin-left: var(--wot-signature-button-margin-left, 8px) !default; // 底部按钮左边距
+
+
+
diff --git a/uni_modules/wot-design-uni/components/common/base64.ts b/uni_modules/wot-design-uni/components/common/base64.ts
new file mode 100644
index 0000000..65aa2e8
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/common/base64.ts
@@ -0,0 +1,29 @@
+const _b64chars: string[] = [...'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/']
+const _mkUriSafe = (src: string): string => src.replace(/[+/]/g, (m0: string) => (m0 === '+' ? '-' : '_')).replace(/=+\$/m, '')
+const fromUint8Array = (src: Uint8Array, rfc4648 = false): string => {
+ let b64 = ''
+ for (let i = 0, l = src.length; i < l; i += 3) {
+ const [a0, a1, a2] = [src[i], src[i + 1], src[i + 2]]
+ const ord = (a0 << 16) | (a1 << 8) | a2
+ b64 += _b64chars[ord >>> 18]
+ b64 += _b64chars[(ord >>> 12) & 63]
+ b64 += typeof a1 !== 'undefined' ? _b64chars[(ord >>> 6) & 63] : '='
+ b64 += typeof a2 !== 'undefined' ? _b64chars[ord & 63] : '='
+ }
+ return rfc4648 ? _mkUriSafe(b64) : b64
+}
+const _btoa: (s: string) => string =
+ typeof btoa === 'function'
+ ? (s: string) => btoa(s)
+ : (s: string) => {
+ if (s.charCodeAt(0) > 255) {
+ throw new RangeError('The string contains invalid characters.')
+ }
+ return fromUint8Array(Uint8Array.from(s, (c: string) => c.charCodeAt(0)))
+ }
+const utob = (src: string): string => unescape(encodeURIComponent(src))
+
+export default function encode(src: string, rfc4648 = false): string {
+ const b64 = _btoa(utob(src))
+ return rfc4648 ? _mkUriSafe(b64) : b64
+}
diff --git a/uni_modules/wot-design-uni/components/common/canvasHelper.ts b/uni_modules/wot-design-uni/components/common/canvasHelper.ts
new file mode 100644
index 0000000..ee17e14
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/common/canvasHelper.ts
@@ -0,0 +1,49 @@
+/**
+ * 适配 canvas 2d 上下文
+ * @param ctx canvas 2d 上下文
+ * @returns
+ */
+export function canvas2dAdapter(ctx: CanvasRenderingContext2D): UniApp.CanvasContext {
+ return Object.assign(ctx, {
+ setFillStyle(color: string | CanvasGradient) {
+ ctx.fillStyle = color
+ },
+ setStrokeStyle(color: string | CanvasGradient | CanvasPattern) {
+ ctx.strokeStyle = color
+ },
+ setLineWidth(lineWidth: number) {
+ ctx.lineWidth = lineWidth
+ },
+ setLineCap(lineCap: 'butt' | 'round' | 'square') {
+ ctx.lineCap = lineCap
+ },
+
+ setFontSize(font: string) {
+ ctx.font = font
+ },
+ setGlobalAlpha(alpha: number) {
+ ctx.globalAlpha = alpha
+ },
+ setLineJoin(lineJoin: 'bevel' | 'round' | 'miter') {
+ ctx.lineJoin = lineJoin
+ },
+ setTextAlign(align: 'left' | 'center' | 'right') {
+ ctx.textAlign = align
+ },
+ setMiterLimit(miterLimit: number) {
+ ctx.miterLimit = miterLimit
+ },
+ setShadow(offsetX: number, offsetY: number, blur: number, color: string) {
+ ctx.shadowOffsetX = offsetX
+ ctx.shadowOffsetY = offsetY
+ ctx.shadowBlur = blur
+ ctx.shadowColor = color
+ },
+ setTextBaseline(textBaseline: 'top' | 'bottom' | 'middle') {
+ ctx.textBaseline = textBaseline
+ },
+ createCircularGradient() {},
+ draw() {},
+ addColorStop() {}
+ }) as unknown as UniApp.CanvasContext
+}
diff --git a/uni_modules/wot-design-uni/components/common/clickoutside.ts b/uni_modules/wot-design-uni/components/common/clickoutside.ts
new file mode 100644
index 0000000..0800afd
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/common/clickoutside.ts
@@ -0,0 +1,34 @@
+/*
+ * @Author: weisheng
+ * @Date: 2023-07-02 22:51:06
+ * @LastEditTime: 2024-03-16 19:59:07
+ * @LastEditors: weisheng
+ * @Description:
+ * @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/common/clickoutside.ts
+ * 记得注释
+ */
+let queue: any[] = []
+
+export function pushToQueue(comp: any) {
+ queue.push(comp)
+}
+
+export function removeFromQueue(comp: any) {
+ queue = queue.filter((item) => {
+ return item.$.uid !== comp.$.uid
+ })
+}
+
+export function closeOther(comp: any) {
+ queue.forEach((item) => {
+ if (item.$.uid !== comp.$.uid) {
+ item.$.exposed.close()
+ }
+ })
+}
+
+export function closeOutside() {
+ queue.forEach((item) => {
+ item.$.exposed.close()
+ })
+}
diff --git a/uni_modules/wot-design-uni/components/common/dayjs.ts b/uni_modules/wot-design-uni/components/common/dayjs.ts
new file mode 100644
index 0000000..bc3277a
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/common/dayjs.ts
@@ -0,0 +1,148 @@
+import { isDate } from './util'
+
+/* eslint-disable */
+class Dayjs {
+ utc: boolean
+ date: Date
+ timeZone: number
+ timeZoneString: any
+ mYear: any
+ mMonth: any
+ mDay: any
+ mWeek: any
+ mHour: any
+ mMinute: any
+ mSecond: any
+ constructor(dateStr?: string | number | Date) {
+ this.utc = false
+ const parsedDate = this.parseConfig(dateStr)
+ this.date = new Date(parsedDate)
+ this.timeZone = this.date.getTimezoneOffset() / 60
+ this.timeZoneString = this.padNumber(String(-1 * this.timeZone).replace(/^(.)?(\d)/, '$10$200'), 5, '+')
+ this.mYear = this.date.getFullYear()
+ this.mMonth = this.date.getMonth()
+ this.mDay = this.date.getDate()
+ this.mWeek = this.date.getDay()
+ this.mHour = this.date.getHours()
+ this.mMinute = this.date.getMinutes()
+ this.mSecond = this.date.getSeconds()
+ }
+
+ parseConfig(dateStr?:string | number | Date) {
+ if (!dateStr) return new Date()
+ if (isDate(dateStr)) return dateStr
+ if (/^(\d){8}$/.test(dateStr as string)) {
+ this.utc = true
+ return `${(dateStr as string).substr(0, 4)}-${(dateStr as string).substr(4, 2)}-${(dateStr as string).substr(6, 2)}`
+ }
+ return dateStr
+ }
+
+ padNumber(num:string, length:number, padChar:string) {
+ return !num || num.length >= length ? num : `${Array(length + 1 - num.length).join(padChar)}${num}`
+ }
+
+ year() {
+ return this.mYear
+ }
+
+ month() {
+ return this.mMonth
+ }
+
+ unix() {
+ const timeZoneOffset = this.utc ? 60 * this.timeZone * 60 * 1000 : 0
+ return Math.floor((this.date.getTime() + timeZoneOffset) / 1000)
+ }
+
+ toString() {
+ return this.date.toUTCString()
+ }
+
+ startOf(unit:string) {
+ switch (unit) {
+ case 'year':
+ return new Dayjs(new Date(this.year(), 0, 1))
+ case 'month':
+ return new Dayjs(new Date(this.year(), this.month(), 1))
+ default:
+ return this
+ }
+ }
+
+ add(amount:number, unit:string) {
+ let interval
+ switch (unit) {
+ case 'm':
+ case 'minutes':
+ interval = 60
+ break
+ case 'h':
+ case 'hours':
+ interval = 60 * 60
+ break
+ case 'd':
+ case 'days':
+ interval = 24 * 60 * 60
+ break
+ case 'w':
+ case 'weeks':
+ interval = 7 * 24 * 60 * 60
+ break
+ default:
+ interval = 1
+ }
+ const newUnixTime = this.unix() + amount * interval
+ return new Dayjs(1000 * newUnixTime)
+ }
+
+ subtract(amount:number, unit:string) {
+ return this.add(-1 * amount, unit)
+ }
+
+ format(formatStr = 'YYYY-MM-DDTHH:mm:ssZ') {
+ const weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
+ return formatStr.replace(/Y{2,4}|M{1,2}|D{1,2}|d{1,4}|H{1,2}|m{1,2}|s{1,2}|Z{1,2}/g, (match) => {
+ switch (match) {
+ case 'YY':
+ return String(this.mYear).slice(-2)
+ case 'YYYY':
+ return String(this.mYear)
+ case 'M':
+ return String(this.mMonth + 1)
+ case 'MM':
+ return this.padNumber(String(this.mMonth + 1), 2, '0')
+ case 'D':
+ return String(this.mDay)
+ case 'DD':
+ return this.padNumber(String(this.mDay), 2, '0')
+ case 'd':
+ return String(this.mWeek)
+ case 'dddd':
+ return weekdays[this.mWeek]
+ case 'H':
+ return String(this.mHour)
+ case 'HH':
+ return this.padNumber(String(this.mHour), 2, '0')
+ case 'm':
+ return String(this.mMinute)
+ case 'mm':
+ return this.padNumber(String(this.mMinute), 2, '0')
+ case 's':
+ return String(this.mSecond)
+ case 'ss':
+ return this.padNumber(String(this.mSecond), 2, '0')
+ case 'Z':
+ return `${this.timeZoneString.slice(0, -2)}:00`
+ case 'ZZ':
+ return this.timeZoneString
+ default:
+ return match
+ }
+ })
+ }
+}
+
+export function dayjs(dateStr?: string | number | Date) {
+ return new Dayjs(dateStr)
+}
diff --git a/uni_modules/wot-design-uni/components/common/event.ts b/uni_modules/wot-design-uni/components/common/event.ts
new file mode 100644
index 0000000..44a00e4
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/common/event.ts
@@ -0,0 +1,8 @@
+export const UPDATE_MODEL_EVENT = 'update:modelValue'
+export const CHANGE_EVENT = 'change'
+export const INPUT_EVENT = 'input'
+export const CLICK_EVENT = 'click'
+export const CLOSE_EVENT = 'close'
+export const OPEN_EVENT = 'open'
+export const CONFIRM_EVENT = 'confirm'
+export const CANCEL_EVENT = 'cancel'
diff --git a/uni_modules/wot-design-uni/components/common/interceptor.ts b/uni_modules/wot-design-uni/components/common/interceptor.ts
new file mode 100644
index 0000000..d573491
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/common/interceptor.ts
@@ -0,0 +1,43 @@
+import { isPromise } from './util'
+
+function noop() {}
+
+export type Interceptor = (...args: any[]) => Promise | boolean | undefined | void
+
+export function callInterceptor(
+ interceptor: Interceptor | undefined,
+ {
+ args = [],
+ done,
+ canceled,
+ error
+ }: {
+ args?: unknown[]
+ done: () => void
+ canceled?: () => void
+ error?: () => void
+ }
+) {
+ if (interceptor) {
+ // eslint-disable-next-line prefer-spread
+ const returnVal = interceptor.apply(null, args)
+
+ if (isPromise(returnVal)) {
+ returnVal
+ .then((value) => {
+ if (value) {
+ done()
+ } else if (canceled) {
+ canceled()
+ }
+ })
+ .catch(error || noop)
+ } else if (returnVal) {
+ done()
+ } else if (canceled) {
+ canceled()
+ }
+ } else {
+ done()
+ }
+}
diff --git a/uni_modules/wot-design-uni/components/common/props.ts b/uni_modules/wot-design-uni/components/common/props.ts
new file mode 100644
index 0000000..ebb9dc0
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/common/props.ts
@@ -0,0 +1,51 @@
+import type { PropType } from 'vue'
+
+export const unknownProp = null as unknown as PropType
+
+export const numericProp = [Number, String]
+
+export const truthProp = {
+ type: Boolean,
+ default: true as const
+}
+
+export const makeRequiredProp = (type: T) => ({
+ type,
+ required: true as const
+})
+
+export const makeArrayProp = () => ({
+ type: Array as PropType,
+ default: () => []
+})
+
+export const makeBooleanProp = (defaultVal: T) => ({
+ type: Boolean,
+ default: defaultVal
+})
+
+export const makeNumberProp = (defaultVal: T) => ({
+ type: Number,
+ default: defaultVal
+})
+
+export const makeNumericProp = (defaultVal: T) => ({
+ type: numericProp,
+ default: defaultVal
+})
+
+export const makeStringProp = (defaultVal: T) => ({
+ type: String as unknown as PropType,
+ default: defaultVal
+})
+
+export const baseProps = {
+ /**
+ * 自定义根节点样式
+ */
+ customStyle: makeStringProp(''),
+ /**
+ * 自定义根节点样式类
+ */
+ customClass: makeStringProp('')
+}
diff --git a/uni_modules/wot-design-uni/components/common/util.ts b/uni_modules/wot-design-uni/components/common/util.ts
new file mode 100644
index 0000000..0c070a7
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/common/util.ts
@@ -0,0 +1,747 @@
+import { AbortablePromise } from './AbortablePromise'
+
+type NotUndefined = T extends undefined ? never : T
+
+/**
+ * 生成uuid
+ * @returns string
+ */
+export function uuid() {
+ return s4() + s4() + s4() + s4() + s4() + s4() + s4() + s4()
+}
+
+function s4() {
+ return Math.floor((1 + Math.random()) * 0x10000)
+ .toString(16)
+ .substring(1)
+}
+
+/**
+ * @description 对num自动填充px
+ * @param {Number} num
+ * @return {string} num+px
+ */
+export function addUnit(num: number | string) {
+ return Number.isNaN(Number(num)) ? `${num}` : `${num}px`
+}
+
+/**
+ * @description 判断target是否对象
+ * @param value
+ * @return {boolean}
+ */
+export function isObj(value: any): value is object {
+ return Object.prototype.toString.call(value) === '[object Object]' || typeof value === 'object'
+}
+
+/**
+ * 获取目标原始类型
+ * @param target 任意类型
+ * @returns {string} type 数据类型
+ */
+export function getType(target: unknown): string {
+ // 得到原生类型
+ const typeStr = Object.prototype.toString.call(target)
+ // 拿到类型值
+ const match = typeStr.match(/\[object (\w+)\]/)
+ const type = match && match.length ? match[1].toLowerCase() : ''
+ // 类型值转小写并返回
+ return type
+}
+
+/**
+ * @description 默认的外部格式化函数 - picker 组件
+ * @param items - 要格式化的数据项数组或单个数据项
+ * @param kv - 配置对象,包含 labelKey 作为键值
+ * @returns 格式化后的字符串
+ */
+export const defaultDisplayFormat = function (items: any[] | Record, kv?: { labelKey?: string }): string {
+ const labelKey: string = kv?.labelKey || 'value'
+
+ if (Array.isArray(items)) {
+ return items.map((item) => item[labelKey]).join(', ')
+ } else {
+ return items[labelKey]
+ }
+}
+
+/**
+ * @description 默认函数占位符 - pickerView组件
+ * @param value 值
+ * @return value
+ */
+export const defaultFunction = (value: T): T => value
+
+/**
+ * @description 检查值是否不为空
+ * @param value 值
+ * @return {Boolean} 是否不为空
+ */
+export const isDef = (value: T): value is NonNullable => value !== undefined && value !== null
+
+/**
+ * @description 防止数字小于零
+ * @param {number} num
+ * @param {string} label 标签
+ */
+export const checkNumRange = (num: number, label: string = 'value'): void => {
+ if (num < 0) {
+ throw new Error(`${label} shouldn't be less than zero`)
+ }
+}
+
+/**
+ * @description 防止 pixel 无意义
+ * @param {number} num
+ * @param {string} label 标签
+ */
+export const checkPixelRange = (num: number, label: string = 'value'): void => {
+ if (num <= 0) {
+ throw new Error(`${label} should be greater than zero`)
+ }
+}
+
+/**
+ * 将 RGB 值转换为十六进制颜色代码。
+ * @param {number} r - 红色分量 (0-255)。
+ * @param {number} g - 绿色分量 (0-255)。
+ * @param {number} b - 蓝色分量 (0-255)。
+ * @returns {string} 十六进制颜色代码 (#RRGGBB)。
+ */
+export function rgbToHex(r: number, g: number, b: number): string {
+ // 将 RGB 分量组合成一个十六进制数。
+ const hex = ((r << 16) | (g << 8) | b).toString(16)
+
+ // 使用零填充十六进制数,确保它有 6 位数字(RGB 范围)。
+ const paddedHex = '#' + '0'.repeat(Math.max(0, 6 - hex.length)) + hex
+
+ return paddedHex
+}
+
+/**
+ * 将十六进制颜色代码转换为 RGB 颜色数组。
+ * @param hex 十六进制颜色代码(例如:'#RRGGBB')
+ * @returns 包含红、绿、蓝三个颜色分量的数组
+ */
+function hexToRgb(hex: string): number[] {
+ const rgb: number[] = []
+
+ // 从第一个字符开始,每两个字符代表一个颜色分量
+ for (let i = 1; i < 7; i += 2) {
+ // 将两个字符的十六进制转换为十进制,并添加到 rgb 数组中
+ rgb.push(parseInt('0x' + hex.slice(i, i + 2), 16))
+ }
+
+ return rgb
+}
+
+/**
+ * 计算渐变色的中间变量数组。
+ * @param {string} startColor 开始颜色
+ * @param {string} endColor 结束颜色
+ * @param {number} step 获取渲染位置,默认为中间位置
+ * @returns {string[]} 渐变色中间颜色变量数组
+ */
+export const gradient = (startColor: string, endColor: string, step: number = 2): string[] => {
+ // 将hex转换为rgb
+ const sColor: number[] = hexToRgb(startColor)
+ const eColor: number[] = hexToRgb(endColor)
+
+ // 计算R\G\B每一步的差值
+ const rStep: number = (eColor[0] - sColor[0]) / step
+ const gStep: number = (eColor[1] - sColor[1]) / step
+ const bStep: number = (eColor[2] - sColor[2]) / step
+
+ const gradientColorArr: string[] = []
+ for (let i = 0; i < step; i++) {
+ // 计算每一步的hex值
+ gradientColorArr.push(
+ rgbToHex(parseInt(String(rStep * i + sColor[0])), parseInt(String(gStep * i + sColor[1])), parseInt(String(bStep * i + sColor[2])))
+ )
+ }
+ return gradientColorArr
+}
+
+/**
+ * 确保数值不超出指定范围。
+ * @param {number} num 要限制范围的数值
+ * @param {number} min 最小范围
+ * @param {number} max 最大范围
+ * @returns {number} 在指定范围内的数值
+ */
+export const range = (num: number, min: number, max: number): number => {
+ // 使用 Math.min 和 Math.max 保证 num 不会超出指定范围
+ return Math.min(Math.max(num, min), max)
+}
+
+/**
+ * 比较两个值是否相等。
+ * @param {any} value1 第一个值
+ * @param {any} value2 第二个值
+ * @returns {boolean} 如果值相等则为 true,否则为 false
+ */
+export const isEqual = (value1: any, value2: any): boolean => {
+ // 使用严格相等运算符比较值是否相等
+ if (value1 === value2) {
+ return true
+ }
+
+ // 如果其中一个值不是数组,则认为值不相等
+ if (!Array.isArray(value1) || !Array.isArray(value2)) {
+ return false
+ }
+
+ // 如果数组长度不相等,则认为值不相等
+ if (value1.length !== value2.length) {
+ return false
+ }
+
+ // 逐个比较数组元素是否相等
+ for (let i = 0; i < value1.length; ++i) {
+ if (value1[i] !== value2[i]) {
+ return false
+ }
+ }
+
+ // 所有比较均通过,则认为值相等
+ return true
+}
+
+/**
+ * 在数字前补零,使其达到指定长度。
+ * @param {number | string} number 要补零的数字
+ * @param {number} length 目标长度,默认为 2
+ * @returns {string} 补零后的结果
+ */
+export const padZero = (number: number | string, length: number = 2): string => {
+ // 将输入转换为字符串
+ let numStr: string = number.toString()
+
+ // 在数字前补零,直到达到指定长度
+ while (numStr.length < length) {
+ numStr = '0' + numStr
+ }
+
+ return numStr
+}
+
+/** @description 全局变量id */
+export const context = {
+ id: 1000
+}
+
+export type RectResultType = T extends true ? UniApp.NodeInfo[] : UniApp.NodeInfo
+
+/**
+ * 获取节点信息
+ * @param selector 节点选择器 #id,.class
+ * @param all 是否返回所有 selector 对应的节点
+ * @param scope 作用域(支付宝小程序无效)
+ * @param useFields 是否使用 fields 方法获取节点信息
+ * @returns 节点信息或节点信息数组
+ */
+export function getRect(selector: string, all: T, scope?: any, useFields?: boolean): Promise> {
+ return new Promise>((resolve, reject) => {
+ let query: UniNamespace.SelectorQuery | null = null
+ if (scope) {
+ query = uni.createSelectorQuery().in(scope)
+ } else {
+ query = uni.createSelectorQuery()
+ }
+
+ const method = all ? 'selectAll' : 'select'
+
+ const callback = (rect: UniApp.NodeInfo | UniApp.NodeInfo[]) => {
+ if (all && isArray(rect) && rect.length > 0) {
+ resolve(rect as RectResultType)
+ } else if (!all && rect) {
+ resolve(rect as RectResultType)
+ } else {
+ reject(new Error('No nodes found'))
+ }
+ }
+
+ if (useFields) {
+ query[method](selector).fields({ size: true, node: true }, callback).exec()
+ } else {
+ query[method](selector).boundingClientRect(callback).exec()
+ }
+ })
+}
+
+/**
+ * 将驼峰命名转换为短横线命名。
+ * @param {string} word 待转换的词条
+ * @returns {string} 转换后的结果
+ */
+export function kebabCase(word: string): string {
+ // 使用正则表达式匹配所有大写字母,并在前面加上短横线,然后转换为小写
+ const newWord: string = word
+ .replace(/[A-Z]/g, function (match) {
+ return '-' + match
+ })
+ .toLowerCase()
+
+ return newWord
+}
+
+/**
+ * 将短横线链接转换为驼峰命名
+ * @param word 需要转换的短横线链接
+ * @returns 转换后的驼峰命名字符串
+ */
+export function camelCase(word: string): string {
+ return word.replace(/-(\w)/g, (_, c) => c.toUpperCase())
+}
+
+/**
+ * 检查给定值是否为数组。
+ * @param {any} value 要检查的值
+ * @returns {boolean} 如果是数组则返回 true,否则返回 false
+ */
+export function isArray(value: any): value is Array {
+ // 如果 Array.isArray 函数可用,直接使用该函数检查
+ if (typeof Array.isArray === 'function') {
+ return Array.isArray(value)
+ }
+ // 否则,使用对象原型的 toString 方法进行检查
+ return Object.prototype.toString.call(value) === '[object Array]'
+}
+
+/**
+ * 检查给定值是否为函数。
+ * @param {any} value 要检查的值
+ * @returns {boolean} 如果是函数则返回 true,否则返回 false
+ */
+// eslint-disable-next-line @typescript-eslint/ban-types
+export function isFunction(value: any): value is T {
+ return getType(value) === 'function'
+}
+
+/**
+ * 检查给定值是否为字符串。
+ * @param {unknown} value 要检查的值
+ * @returns {value is string} 如果是字符串则返回 true,否则返回 false
+ */
+export function isString(value: unknown): value is string {
+ return getType(value) === 'string'
+}
+
+/**
+ * 否是数值
+ * @param {*} value
+ */
+export function isNumber(value: any): value is number {
+ return getType(value) === 'number'
+}
+
+/**
+ * 检查给定值是否为 Promise 对象。
+ * @param {unknown} value 要检查的值
+ * @returns {value is Promise} 如果是 Promise 对象则返回 true,否则返回 false
+ */
+export function isPromise(value: unknown): value is Promise {
+ // 先将 value 断言为 object 类型
+ if (isObj(value) && isDef(value)) {
+ // 然后进一步检查 value 是否具有 then 和 catch 方法,并且它们是函数类型
+ return isFunction((value as Promise).then) && isFunction((value as Promise).catch)
+ }
+ return false // 如果 value 不是对象类型,则肯定不是 Promise
+}
+
+/**
+ * 检查给定的值是否为布尔类型
+ * @param value 要检查的值
+ * @returns 如果值为布尔类型,则返回true,否则返回false
+ */
+export function isBoolean(value: any): value is boolean {
+ return typeof value === 'boolean'
+}
+
+export function isUndefined(value: any): value is undefined {
+ return typeof value === 'undefined'
+}
+
+export function isNotUndefined(value: T): value is NotUndefined {
+ return !isUndefined(value)
+}
+
+/**
+ * 检查给定的值是否为奇数
+ * @param value 要检查的值
+ * @returns
+ */
+export function isOdd(value: number): boolean {
+ if (typeof value !== 'number') {
+ throw new Error('输入必须为数字')
+ }
+
+ // 使用取模运算符来判断是否为奇数
+ // 如果 number 除以 2 的余数为 1,就是奇数
+ // 否则是偶数
+ return value % 2 === 1
+}
+
+/**
+ * 是否为base64图片
+ * @param {string} url
+ * @return
+ */
+export function isBase64Image(url: string) {
+ // 使用正则表达式检查URL是否以"data:image"开头,这是Base64图片的常见前缀
+ return /^data:image\/(png|jpg|jpeg|gif|bmp);base64,/.test(url)
+}
+
+/**
+ * 将外部传入的样式格式化为可读的 CSS 样式。
+ * @param {object | object[]} styles 外部传入的样式对象或数组
+ * @returns {string} 格式化后的 CSS 样式字符串
+ */
+export function objToStyle(styles: Record | Record[]): string {
+ // 如果 styles 是数组类型
+ if (isArray(styles)) {
+ // 使用过滤函数去除空值和 null 值的元素
+ // 对每个非空元素递归调用 objToStyle,然后通过分号连接
+ return styles
+ .filter(function (item) {
+ return item != null && item !== ''
+ })
+ .map(function (item) {
+ return objToStyle(item)
+ })
+ .join(';')
+ }
+
+ if (isString(styles)) {
+ return styles
+ }
+
+ // 如果 styles 是对象类型
+ if (isObj(styles)) {
+ // 使用 Object.keys 获取所有属性名
+ // 使用过滤函数去除值为 null 或空字符串的属性
+ // 对每个属性名和属性值进行格式化,通过分号连接
+ return Object.keys(styles)
+ .filter(function (key) {
+ return styles[key] != null && styles[key] !== ''
+ })
+ .map(function (key) {
+ // 使用 kebabCase 函数将属性名转换为 kebab-case 格式
+ // 将属性名和属性值格式化为 CSS 样式的键值对
+ return [kebabCase(key), styles[key]].join(':')
+ })
+ .join(';')
+ }
+ // 如果 styles 不是对象也不是数组,则直接返回
+ return ''
+}
+
+export const requestAnimationFrame = (cb = () => {}) => {
+ return new AbortablePromise((resolve) => {
+ const timer = setInterval(() => {
+ clearInterval(timer)
+ resolve(true)
+ cb()
+ }, 1000 / 30)
+ })
+}
+
+/**
+ * 暂停指定时间函数
+ * @param ms 延迟时间
+ * @returns
+ */
+export const pause = (ms: number = 1000 / 30) => {
+ return new AbortablePromise((resolve) => {
+ const timer = setTimeout(() => {
+ clearTimeout(timer)
+ resolve(true)
+ }, ms)
+ })
+}
+
+/**
+ * 深拷贝函数,用于将对象进行完整复制。
+ * @param obj 要深拷贝的对象
+ * @param cache 用于缓存已复制的对象,防止循环引用
+ * @returns 深拷贝后的对象副本
+ */
+export function deepClone(obj: T, cache: Map = new Map()): T {
+ // 如果对象为 null 或或者不是对象类型,则直接返回该对象
+ if (obj === null || typeof obj !== 'object') {
+ return obj
+ }
+
+ // 处理特殊对象类型:日期、正则表达式、错误对象
+ if (isDate(obj)) {
+ return new Date(obj.getTime()) as any
+ }
+ if (obj instanceof RegExp) {
+ return new RegExp(obj.source, obj.flags) as any
+ }
+ if (obj instanceof Error) {
+ const errorCopy = new Error(obj.message) as any
+ errorCopy.stack = obj.stack
+ return errorCopy
+ }
+
+ // 检查缓存中是否已存在该对象的复制
+ if (cache.has(obj)) {
+ return cache.get(obj)
+ }
+
+ // 根据原始对象的类型创建对应的空对象或数组
+ const copy: any = Array.isArray(obj) ? [] : {}
+
+ // 将当前对象添加到缓存中
+ cache.set(obj, copy)
+
+ // 递归地深拷贝对象的每个属性
+ for (const key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
+ copy[key] = deepClone(obj[key], cache)
+ }
+ }
+
+ return copy as T
+}
+
+/**
+ * 深度合并两个对象。
+ * @param target 目标对象,将合并的结果存放在此对象中
+ * @param source 源对象,要合并到目标对象的对象
+ * @returns 合并后的目标对象
+ */
+export function deepMerge>(target: T, source: Record): T {
+ // 深拷贝目标对象,避免修改原始对象
+ target = deepClone(target)
+
+ // 检查目标和源是否都是对象类型
+ if (typeof target !== 'object' || typeof source !== 'object') {
+ throw new Error('Both target and source must be objects.')
+ }
+
+ // 遍历源对象的属性
+ for (const prop in source) {
+ // eslint-disable-next-line no-prototype-builtins
+ if (!source.hasOwnProperty(prop))
+ continue
+ // 使用类型断言,告诉 TypeScript 这是有效的属性
+ ;(target as Record)[prop] = source[prop]
+ }
+
+ return target
+}
+
+/**
+ * 深度合并两个对象。
+ * @param target
+ * @param source
+ * @returns
+ */
+export function deepAssign(target: Record, source: Record): Record {
+ Object.keys(source).forEach((key) => {
+ const targetValue = target[key]
+ const newObjValue = source[key]
+ if (isObj(targetValue) && isObj(newObjValue)) {
+ deepAssign(targetValue, newObjValue)
+ } else {
+ target[key] = newObjValue
+ }
+ })
+ return target
+}
+
+/**
+ * 构建带参数的URL
+ * @param baseUrl 基础URL
+ * @param params 参数对象,键值对表示要添加到URL的参数
+ * @returns 返回带有参数的URL
+ */
+export function buildUrlWithParams(baseUrl: string, params: Record) {
+ // 将参数对象转换为查询字符串
+ const queryString = Object.entries(params)
+ .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)
+ .join('&')
+
+ // 检查基础URL是否已包含查询字符串,并选择适当的分隔符
+ const separator = baseUrl.includes('?') ? '&' : '?'
+
+ // 返回带有参数的URL
+ return `${baseUrl}${separator}${queryString}`
+}
+
+type DebounceOptions = {
+ leading?: boolean // 是否在延迟时间开始时调用函数
+ trailing?: boolean // 是否在延迟时间结束时调用函数
+}
+
+export function debounce any>(func: T, wait: number, options: DebounceOptions = {}): T {
+ let timeoutId: ReturnType | null = null
+ let lastArgs: any[] | undefined
+ let lastThis: any
+ let result: ReturnType | undefined
+ const leading = isDef(options.leading) ? options.leading : false
+ const trailing = isDef(options.trailing) ? options.trailing : true
+
+ function invokeFunc() {
+ if (lastArgs !== undefined) {
+ result = func.apply(lastThis, lastArgs)
+ lastArgs = undefined
+ }
+ }
+
+ function startTimer() {
+ timeoutId = setTimeout(() => {
+ timeoutId = null
+ if (trailing) {
+ invokeFunc()
+ }
+ }, wait)
+ }
+
+ function cancelTimer() {
+ if (timeoutId !== null) {
+ clearTimeout(timeoutId)
+ timeoutId = null
+ }
+ }
+
+ function debounced(this: any, ...args: Parameters): ReturnType | undefined {
+ lastArgs = args
+ lastThis = this
+
+ if (timeoutId === null) {
+ if (leading) {
+ invokeFunc()
+ }
+ startTimer()
+ } else if (trailing) {
+ cancelTimer()
+ startTimer()
+ }
+
+ return result
+ }
+
+ return debounced as T
+}
+
+// eslint-disable-next-line @typescript-eslint/ban-types
+export function throttle(func: Function, wait: number): Function {
+ let timeout: ReturnType | null = null
+ let previous: number = 0
+
+ const throttled = function (this: any, ...args: any[]) {
+ const now = Date.now()
+ const remaining = wait - (now - previous)
+
+ if (remaining <= 0) {
+ if (timeout) {
+ clearTimeout(timeout)
+ timeout = null
+ }
+ previous = now
+ func.apply(this, args)
+ } else if (!timeout) {
+ timeout = setTimeout(() => {
+ previous = Date.now()
+ timeout = null
+ func.apply(this, args)
+ }, remaining)
+ }
+ }
+
+ return throttled
+}
+
+/**
+ * 根据属性路径获取对象中的属性值
+ * @param obj 目标对象
+ * @param path 属性路径,可以是字符串或字符串数组
+ * @returns 属性值,如果属性不存在或中间的属性为 null 或 undefined,则返回 undefined
+ */
+export const getPropByPath = (obj: any, path: string): any => {
+ const keys: string[] = path.split('.')
+
+ try {
+ return keys.reduce((acc: any, key: string) => (acc !== undefined && acc !== null ? acc[key] : undefined), obj)
+ } catch (error) {
+ return undefined
+ }
+}
+
+/**
+ * 检查一个值是否为Date类型
+ * @param val 要检查的值
+ * @returns 如果值是Date类型,则返回true,否则返回false
+ */
+export const isDate = (val: unknown): val is Date => Object.prototype.toString.call(val) === '[object Date]' && !Number.isNaN((val as Date).getTime())
+
+/**
+ * 检查提供的URL是否为视频链接。
+ * @param url 需要检查的URL字符串。
+ * @returns 返回一个布尔值,如果URL是视频链接则为true,否则为false。
+ */
+export function isVideoUrl(url: string): boolean {
+ // 使用正则表达式匹配视频文件类型的URL
+ const videoRegex = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv|video)/i
+ return videoRegex.test(url)
+}
+
+/**
+ * 检查提供的URL是否为图片URL。
+ * @param url 待检查的URL字符串。
+ * @returns 返回一个布尔值,如果URL是图片格式,则为true;否则为false。
+ */
+export function isImageUrl(url: string): boolean {
+ // 使用正则表达式匹配图片URL
+ const imageRegex = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg|image)/i
+ return imageRegex.test(url)
+}
+
+/**
+ * 判断环境是否是H5
+ */
+export const isH5 = (() => {
+ let isH5 = false
+ // #ifdef H5
+ isH5 = true
+ // #endif
+ return isH5
+})()
+
+/**
+ * 剔除对象中的某些属性
+ * @param obj
+ * @param predicate
+ * @returns
+ */
+export function omitBy>(obj: O, predicate: (value: any, key: keyof O) => boolean): Partial {
+ const newObj = deepClone(obj)
+ Object.keys(newObj).forEach((key) => predicate(newObj[key], key) && delete newObj[key]) // 遍历对象的键,删除值为不满足predicate的字段
+ return newObj
+}
+
+/**
+ * 缓动函数,用于在动画或过渡效果中根据时间参数计算当前值
+ * @param t 当前时间,通常是从动画开始经过的时间
+ * @param b 初始值,动画属性的初始值
+ * @param c 变化量,动画属性的目标值与初始值的差值
+ * @param d 持续时间,动画持续的总时间长度
+ * @returns 计算出的当前值
+ */
+export function easingFn(t: number = 0, b: number = 0, c: number = 0, d: number = 0): number {
+ return (c * (-Math.pow(2, (-10 * t) / d) + 1) * 1024) / 1023 + b
+}
+
+/**
+ * 从数组中寻找最接近目标值的元素
+ *
+ * @param arr 数组
+ * @param target 目标值
+ * @returns 最接近目标值的元素
+ */
+export function closest(arr: number[], target: number) {
+ return arr.reduce((prev, curr) => (Math.abs(curr - target) < Math.abs(prev - target) ? curr : prev))
+}
diff --git a/uni_modules/wot-design-uni/components/composables/useCell.ts b/uni_modules/wot-design-uni/components/composables/useCell.ts
new file mode 100644
index 0000000..d245312
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/composables/useCell.ts
@@ -0,0 +1,13 @@
+import { computed } from 'vue'
+import { useParent } from './useParent'
+import { CELL_GROUP_KEY } from '../wd-cell-group/types'
+
+export function useCell() {
+ const { parent: cellGroup, index } = useParent(CELL_GROUP_KEY)
+
+ const border = computed(() => {
+ return cellGroup && cellGroup.props.border && index.value
+ })
+
+ return { border }
+}
diff --git a/uni_modules/wot-design-uni/components/composables/useChildren.ts b/uni_modules/wot-design-uni/components/composables/useChildren.ts
new file mode 100644
index 0000000..b52ac9b
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/composables/useChildren.ts
@@ -0,0 +1,113 @@
+import {
+ provide,
+ reactive,
+ getCurrentInstance,
+ type VNode,
+ type InjectionKey,
+ type VNodeNormalizedChildren,
+ type ComponentPublicInstance,
+ type ComponentInternalInstance
+} from 'vue'
+
+// 小程序端不支持从vue导出的isVNode方法,参考uni-mp-vue的实现
+function isVNode(value: any): value is VNode {
+ return value ? value.__v_isVNode === true : false
+}
+
+export function flattenVNodes(children: VNodeNormalizedChildren) {
+ const result: VNode[] = []
+
+ const traverse = (children: VNodeNormalizedChildren) => {
+ if (Array.isArray(children)) {
+ children.forEach((child) => {
+ if (isVNode(child)) {
+ result.push(child)
+
+ if (child.component?.subTree) {
+ result.push(child.component.subTree)
+ traverse(child.component.subTree.children)
+ }
+
+ if (child.children) {
+ traverse(child.children)
+ }
+ }
+ })
+ }
+ }
+
+ traverse(children)
+
+ return result
+}
+
+const findVNodeIndex = (vnodes: VNode[], vnode: VNode) => {
+ const index = vnodes.indexOf(vnode)
+ if (index === -1) {
+ return vnodes.findIndex((item) => vnode.key !== undefined && vnode.key !== null && item.type === vnode.type && item.key === vnode.key)
+ }
+ return index
+}
+
+// sort children instances by vnodes order
+export function sortChildren(
+ parent: ComponentInternalInstance,
+ publicChildren: ComponentPublicInstance[],
+ internalChildren: ComponentInternalInstance[]
+) {
+ const vnodes = parent && parent.subTree && parent.subTree.children ? flattenVNodes(parent.subTree.children) : []
+
+ internalChildren.sort((a, b) => findVNodeIndex(vnodes, a.vnode) - findVNodeIndex(vnodes, b.vnode))
+
+ const orderedPublicChildren = internalChildren.map((item) => item.proxy!)
+
+ publicChildren.sort((a, b) => {
+ const indexA = orderedPublicChildren.indexOf(a)
+ const indexB = orderedPublicChildren.indexOf(b)
+ return indexA - indexB
+ })
+}
+
+export function useChildren<
+ // eslint-disable-next-line
+ Child extends ComponentPublicInstance = ComponentPublicInstance<{}, any>,
+ ProvideValue = never
+>(key: InjectionKey) {
+ const publicChildren: Child[] = reactive([])
+ const internalChildren: ComponentInternalInstance[] = reactive([])
+ const parent = getCurrentInstance()!
+
+ const linkChildren = (value?: ProvideValue) => {
+ const link = (child: ComponentInternalInstance) => {
+ if (child.proxy) {
+ internalChildren.push(child)
+ publicChildren.push(child.proxy as Child)
+ sortChildren(parent, publicChildren, internalChildren)
+ }
+ }
+
+ const unlink = (child: ComponentInternalInstance) => {
+ const index = internalChildren.indexOf(child)
+ publicChildren.splice(index, 1)
+ internalChildren.splice(index, 1)
+ }
+
+ provide(
+ key,
+ Object.assign(
+ {
+ link,
+ unlink,
+ children: publicChildren,
+ internalChildren
+ },
+ value
+ )
+ )
+ }
+
+ return {
+ children: publicChildren,
+ linkChildren
+ }
+}
diff --git a/uni_modules/wot-design-uni/components/composables/useCountDown.ts b/uni_modules/wot-design-uni/components/composables/useCountDown.ts
new file mode 100644
index 0000000..50746e4
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/composables/useCountDown.ts
@@ -0,0 +1,138 @@
+import { ref, computed, onBeforeUnmount } from 'vue'
+import { isDef } from '../common/util'
+import { useRaf } from './useRaf'
+
+// 定义倒计时时间的数据结构
+export type CurrentTime = {
+ days: number
+ hours: number
+ total: number
+ minutes: number
+ seconds: number
+ milliseconds: number
+}
+
+// 定义倒计时的配置项
+export type UseCountDownOptions = {
+ time: number // 倒计时总时间,单位为毫秒
+ millisecond?: boolean // 是否开启毫秒级倒计时,默认为 false
+ onChange?: (current: CurrentTime) => void // 倒计时每次变化时的回调函数
+ onFinish?: () => void // 倒计时结束时的回调函数
+}
+
+// 定义常量
+const SECOND = 1000
+const MINUTE = 60 * SECOND
+const HOUR = 60 * MINUTE
+const DAY = 24 * HOUR
+
+// 将时间转换为倒计时数据结构
+function parseTime(time: number): CurrentTime {
+ const days = Math.floor(time / DAY)
+ const hours = Math.floor((time % DAY) / HOUR)
+ const minutes = Math.floor((time % HOUR) / MINUTE)
+ const seconds = Math.floor((time % MINUTE) / SECOND)
+ const milliseconds = Math.floor(time % SECOND)
+
+ return {
+ total: time,
+ days,
+ hours,
+ minutes,
+ seconds,
+ milliseconds
+ }
+}
+
+// 判断两个时间是否在同一秒内
+function isSameSecond(time1: number, time2: number): boolean {
+ return Math.floor(time1 / 1000) === Math.floor(time2 / 1000)
+}
+
+// 定义 useCountDown 函数
+export function useCountDown(options: UseCountDownOptions) {
+ let endTime: number // 结束时间
+ let counting: boolean // 是否计时中
+
+ const { start: startRaf, cancel: cancelRaf } = useRaf(tick)
+
+ const remain = ref(options.time) // 剩余时间
+ const current = computed(() => parseTime(remain.value)) // 当前倒计时数据
+
+ // 暂停倒计时
+ const pause = () => {
+ counting = false
+ cancelRaf()
+ }
+
+ // 获取当前剩余时间
+ const getCurrentRemain = () => Math.max(endTime - Date.now(), 0)
+
+ // 设置剩余时间
+ const setRemain = (value: number) => {
+ remain.value = value
+ isDef(options.onChange) && options.onChange(current.value)
+ if (value === 0) {
+ pause()
+ isDef(options.onFinish) && options.onFinish()
+ }
+ }
+
+ // 每毫秒更新一次倒计时
+ const microTick = () => {
+ if (counting) {
+ setRemain(getCurrentRemain())
+ if (remain.value > 0) {
+ startRaf()
+ }
+ }
+ }
+
+ // 每秒更新一次倒计时
+ const macroTick = () => {
+ if (counting) {
+ const remainRemain = getCurrentRemain()
+ if (!isSameSecond(remainRemain, remain.value) || remainRemain === 0) {
+ setRemain(remainRemain)
+ }
+
+ if (remain.value > 0) {
+ startRaf()
+ }
+ }
+ }
+
+ // 根据配置项选择更新方式
+ function tick() {
+ if (options.millisecond) {
+ microTick()
+ } else {
+ macroTick()
+ }
+ }
+
+ // 开始倒计时
+ const start = () => {
+ if (!counting) {
+ endTime = Date.now() + remain.value
+ counting = true
+ startRaf()
+ }
+ }
+
+ // 重置倒计时
+ const reset = (totalTime: number = options.time) => {
+ pause()
+ remain.value = totalTime
+ }
+
+ // 在组件卸载前暂停倒计时
+ onBeforeUnmount(pause)
+
+ return {
+ start,
+ pause,
+ reset,
+ current
+ }
+}
diff --git a/uni_modules/wot-design-uni/components/composables/useLockScroll.ts b/uni_modules/wot-design-uni/components/composables/useLockScroll.ts
new file mode 100644
index 0000000..4f45468
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/composables/useLockScroll.ts
@@ -0,0 +1,39 @@
+import { onBeforeUnmount, onDeactivated, ref, watch } from 'vue'
+
+function useLockScroll(shouldLock: () => boolean) {
+ const scrollLockCount = ref(0)
+
+ const lock = () => {
+ if (scrollLockCount.value === 0) {
+ document.getElementsByTagName('body')[0].style.overflow = 'hidden'
+ }
+ scrollLockCount.value++
+ }
+
+ const unlock = () => {
+ if (scrollLockCount.value > 0) {
+ scrollLockCount.value--
+ if (scrollLockCount.value === 0) {
+ document.getElementsByTagName('body')[0].style.overflow = ''
+ }
+ }
+ }
+
+ const destroy = () => {
+ shouldLock() && unlock()
+ }
+
+ watch(shouldLock, (value) => {
+ value ? lock() : unlock()
+ })
+
+ onDeactivated(destroy)
+ onBeforeUnmount(destroy)
+
+ return {
+ lock,
+ unlock
+ }
+}
+
+export default useLockScroll
diff --git a/uni_modules/wot-design-uni/components/composables/useParent.ts b/uni_modules/wot-design-uni/components/composables/useParent.ts
new file mode 100644
index 0000000..f48fea9
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/composables/useParent.ts
@@ -0,0 +1,41 @@
+import {
+ ref,
+ inject,
+ computed,
+ onUnmounted,
+ type InjectionKey,
+ getCurrentInstance,
+ type ComponentPublicInstance,
+ type ComponentInternalInstance
+} from 'vue'
+
+type ParentProvide = T & {
+ link(child: ComponentInternalInstance): void
+ unlink(child: ComponentInternalInstance): void
+ children: ComponentPublicInstance[]
+ internalChildren: ComponentInternalInstance[]
+}
+
+export function useParent(key: InjectionKey>) {
+ const parent = inject(key, null)
+
+ if (parent) {
+ const instance = getCurrentInstance()!
+ const { link, unlink, internalChildren } = parent
+
+ link(instance)
+ onUnmounted(() => unlink(instance))
+
+ const index = computed(() => internalChildren.indexOf(instance))
+
+ return {
+ parent,
+ index
+ }
+ }
+
+ return {
+ parent: null,
+ index: ref(-1)
+ }
+}
diff --git a/uni_modules/wot-design-uni/components/composables/usePopover.ts b/uni_modules/wot-design-uni/components/composables/usePopover.ts
new file mode 100644
index 0000000..1c61641
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/composables/usePopover.ts
@@ -0,0 +1,176 @@
+import { getCurrentInstance, ref } from 'vue'
+import { getRect, isObj } from '../common/util'
+
+export function usePopover(visibleArrow = true) {
+ const { proxy } = getCurrentInstance() as any
+ const popStyle = ref('')
+ const arrowStyle = ref('')
+ const showStyle = ref('')
+ const arrowClass = ref('')
+ const popWidth = ref(0)
+ const popHeight = ref(0)
+ const left = ref(0)
+ const bottom = ref(0)
+ const width = ref(0)
+ const height = ref(0)
+ const top = ref(0)
+
+ function noop() {}
+
+ function init(
+ placement:
+ | 'top'
+ | 'top-start'
+ | 'top-end'
+ | 'bottom'
+ | 'bottom-start'
+ | 'bottom-end'
+ | 'left'
+ | 'left-start'
+ | 'left-end'
+ | 'right'
+ | 'right-start'
+ | 'right-end',
+ visibleArrow: boolean,
+ selector: string
+ ) {
+ // 初始化 class
+ if (visibleArrow) {
+ const arrowClassArr = [
+ `wd-${selector}__arrow`,
+ placement === 'bottom' || placement === 'bottom-start' || placement === 'bottom-end' ? `wd-${selector}__arrow-up` : '',
+ placement === 'left' || placement === 'left-start' || placement === 'left-end' ? `wd-${selector}__arrow-right` : '',
+ placement === 'right' || placement === 'right-start' || placement === 'right-end' ? `wd-${selector}__arrow-left` : '',
+ placement === 'top' || placement === 'top-start' || placement === 'top-end' ? `wd-${selector}__arrow-down` : ''
+ ]
+ arrowClass.value = arrowClassArr.join(' ')
+ }
+
+ // 初始化数据获取
+ getRect('#target', false, proxy).then((rect) => {
+ if (!rect) return
+ left.value = rect.left as number
+ bottom.value = rect.bottom as number
+ width.value = rect.width as number
+ height.value = rect.height as number
+ top.value = rect.top as number
+ })
+ // 用透明度可在初始化时获取到pop尺寸
+ getRect('#pos', false, proxy).then((rect) => {
+ if (!rect) return
+ popWidth.value = rect.width as number
+ popHeight.value = rect.height as number
+ })
+ }
+
+ function control(
+ placement:
+ | 'top'
+ | 'top-start'
+ | 'top-end'
+ | 'bottom'
+ | 'bottom-start'
+ | 'bottom-end'
+ | 'left'
+ | 'left-start'
+ | 'left-end'
+ | 'right'
+ | 'right-start'
+ | 'right-end',
+ offset: number | number[] | Record<'x' | 'y', number>
+ ) {
+ // arrow size
+ const arrowSize = visibleArrow ? 9 : 0
+ // 上下位(纵轴)对应的距离左边的距离
+ const verticalX = width.value / 2
+ // 上下位(纵轴)对应的距离底部的距离
+ const verticalY = arrowSize + height.value + 5
+ // 左右位(横轴)对应的距离左边的距离
+ const horizontalX = width.value + arrowSize + 5
+ // 左右位(横轴)对应的距离底部的距离
+ const horizontalY = height.value / 2
+
+ let offsetX = 0
+ let offsetY = 0
+ if (Array.isArray(offset)) {
+ offsetX = (verticalX - 17 > 0 ? 0 : verticalX - 25) + offset[0]
+ offsetY = (horizontalY - 17 > 0 ? 0 : horizontalY - 25) + (offset[1] ? offset[1] : offset[0])
+ } else if (isObj(offset)) {
+ offsetX = (verticalX - 17 > 0 ? 0 : verticalX - 25) + offset.x
+ offsetY = (horizontalY - 17 > 0 ? 0 : horizontalY - 25) + offset.y
+ } else {
+ offsetX = (verticalX - 17 > 0 ? 0 : verticalX - 25) + offset
+ offsetY = (horizontalY - 17 > 0 ? 0 : horizontalY - 25) + offset
+ }
+ // const offsetX = (verticalX - 17 > 0 ? 0 : verticalX - 25) + offset
+ // const offsetY = (horizontalY - 17 > 0 ? 0 : horizontalY - 25) + offset
+
+ const placements = new Map([
+ // 上
+ ['top', [`left: ${verticalX}px; bottom: ${verticalY}px; transform: translateX(-50%);`, 'left: 50%;']],
+ [
+ 'top-start',
+ [
+ `left: ${offsetX}px; bottom: ${verticalY}px;`,
+ `left: ${(popWidth.value >= width.value ? width.value / 2 : popWidth.value - 25) - offsetX}px;`
+ ]
+ ],
+ [
+ 'top-end',
+ [
+ `right: ${offsetX}px; bottom: ${verticalY}px;`,
+ `right: ${(popWidth.value >= width.value ? width.value / 2 : popWidth.value - 25) - offsetX}px; transform: translateX(50%);`
+ ]
+ ],
+ // 下
+ ['bottom', [`left: ${verticalX}px; top: ${verticalY}px; transform: translateX(-50%);`, 'left: 50%;']],
+ [
+ 'bottom-start',
+ [`left: ${offsetX}px; top: ${verticalY}px;`, `left: ${(popWidth.value >= width.value ? width.value / 2 : popWidth.value - 25) - offsetX}px;`]
+ ],
+ [
+ 'bottom-end',
+ [
+ `right: ${offsetX}px; top: ${verticalY}px;`,
+ `right: ${(popWidth.value >= width.value ? width.value / 2 : popWidth.value - 25) - offsetX}px; transform: translateX(50%);`
+ ]
+ ],
+ // 左
+ ['left', [`right: ${horizontalX}px; top: ${horizontalY}px; transform: translateY(-50%);`, 'top: 50%']],
+ [
+ 'left-start',
+ [
+ `right: ${horizontalX}px; top: ${offsetY}px;`,
+ `top: ${(popHeight.value >= height.value ? height.value / 2 : popHeight.value - 20) - offsetY}px;`
+ ]
+ ],
+ [
+ 'left-end',
+ [
+ `right: ${horizontalX}px; bottom: ${offsetY}px;`,
+ `bottom: ${(popHeight.value >= height.value ? height.value / 2 : popHeight.value - 20) - offsetY}px; transform: translateY(50%);`
+ ]
+ ],
+ // 右
+ ['right', [`left: ${horizontalX}px; top: ${horizontalY}px; transform: translateY(-50%);`, 'top: 50%']],
+ [
+ 'right-start',
+ [
+ `left: ${horizontalX}px; top: ${offsetY}px;`,
+ `top: ${(popHeight.value >= height.value ? height.value / 2 : popHeight.value - 20) - offsetY}px;`
+ ]
+ ],
+ [
+ 'right-end',
+ [
+ `left: ${horizontalX}px; bottom: ${offsetY}px;`,
+ `bottom: ${(popHeight.value >= height.value ? height.value / 2 : popHeight.value - 20) - offsetY}px; transform: translateY(50%);`
+ ]
+ ]
+ ])
+ popStyle.value = placements.get(placement)![0]
+ arrowStyle.value = placements.get(placement)![1]
+ }
+
+ return { popStyle, arrowStyle, showStyle, arrowClass, init, control, noop }
+}
diff --git a/uni_modules/wot-design-uni/components/composables/useQueue.ts b/uni_modules/wot-design-uni/components/composables/useQueue.ts
new file mode 100644
index 0000000..80021b3
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/composables/useQueue.ts
@@ -0,0 +1,52 @@
+import { type Ref, provide, ref } from 'vue'
+
+export const queueKey = '__QUEUE_KEY__'
+
+export interface Queue {
+ queue: Ref
+ pushToQueue: (comp: any) => void
+ removeFromQueue: (comp: any) => void
+ closeOther: (comp: any) => void
+ closeOutside: () => void
+}
+
+export function useQueue() {
+ const queue = ref([])
+
+ function pushToQueue(comp: any) {
+ queue.value.push(comp)
+ }
+
+ function removeFromQueue(comp: any) {
+ queue.value = queue.value.filter((item) => {
+ return item.$.uid !== comp.$.uid
+ })
+ }
+
+ function closeOther(comp: any) {
+ queue.value.forEach((item) => {
+ if (item.$.uid !== comp.$.uid) {
+ item.$.exposed.close()
+ }
+ })
+ }
+
+ function closeOutside() {
+ queue.value.forEach((item) => {
+ item.$.exposed.close()
+ })
+ }
+
+ provide(queueKey, {
+ queue,
+ pushToQueue,
+ removeFromQueue,
+ closeOther,
+ closeOutside
+ })
+
+ return {
+ closeOther,
+ closeOutside
+ }
+}
diff --git a/uni_modules/wot-design-uni/components/composables/useRaf.ts b/uni_modules/wot-design-uni/components/composables/useRaf.ts
new file mode 100644
index 0000000..b52c4d8
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/composables/useRaf.ts
@@ -0,0 +1,37 @@
+import { ref, onUnmounted } from 'vue'
+import { isDef, isH5, isNumber } from '../common/util'
+
+// 定义回调函数类型
+type RafCallback = (time: number) => void
+
+export function useRaf(callback: RafCallback) {
+ const requestRef = ref>(null)
+
+ // 启动动画帧
+ const start = () => {
+ const handle = (time: number) => {
+ callback(time)
+ }
+
+ if (isH5) {
+ requestRef.value = requestAnimationFrame(handle)
+ } else {
+ requestRef.value = setTimeout(() => handle(Date.now()), 1000 / 30)
+ }
+ }
+
+ // 取消动画帧
+ const cancel = () => {
+ if (isH5 && isNumber(requestRef.value)) {
+ cancelAnimationFrame(requestRef.value!)
+ } else if (isDef(requestRef.value)) {
+ clearTimeout(requestRef.value)
+ }
+ }
+
+ onUnmounted(() => {
+ cancel()
+ })
+
+ return { start, cancel }
+}
diff --git a/uni_modules/wot-design-uni/components/composables/useTouch.ts b/uni_modules/wot-design-uni/components/composables/useTouch.ts
new file mode 100644
index 0000000..c3e9b37
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/composables/useTouch.ts
@@ -0,0 +1,43 @@
+import { ref } from 'vue'
+
+export function useTouch() {
+ const direction = ref('')
+ const deltaX = ref(0)
+ const deltaY = ref(0)
+ const offsetX = ref(0)
+ const offsetY = ref(0)
+ const startX = ref(0)
+ const startY = ref(0)
+
+ function touchStart(event: any) {
+ const touch = event.touches[0]
+ direction.value = ''
+ deltaX.value = 0
+ deltaY.value = 0
+ offsetX.value = 0
+ offsetY.value = 0
+ startX.value = touch.clientX
+ startY.value = touch.clientY
+ }
+
+ function touchMove(event: any) {
+ const touch = event.touches[0]
+ deltaX.value = touch.clientX - startX.value
+ deltaY.value = touch.clientY - startY.value
+ offsetX.value = Math.abs(deltaX.value)
+ offsetY.value = Math.abs(deltaY.value)
+ direction.value = offsetX.value > offsetY.value ? 'horizontal' : offsetX.value < offsetY.value ? 'vertical' : ''
+ }
+
+ return {
+ touchStart,
+ touchMove,
+ direction,
+ deltaX,
+ deltaY,
+ offsetX,
+ offsetY,
+ startX,
+ startY
+ }
+}
diff --git a/uni_modules/wot-design-uni/components/composables/useTranslate.ts b/uni_modules/wot-design-uni/components/composables/useTranslate.ts
new file mode 100644
index 0000000..6205dec
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/composables/useTranslate.ts
@@ -0,0 +1,22 @@
+/*
+ * @Author: weisheng
+ * @Date: 2024-01-25 23:06:48
+ * @LastEditTime: 2025-01-16 21:30:14
+ * @LastEditors: weisheng
+ * @Description:
+ * @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/composables/useTranslate.ts
+ * 记得注释
+ */
+import { camelCase, getPropByPath, isFunction } from '../common/util'
+import Locale from '../../locale'
+
+export const useTranslate = (name?: string) => {
+ const prefix = name ? camelCase(name) + '.' : ''
+ const translate = (key: string, ...args: unknown[]) => {
+ const currentMessages = Locale.messages()
+ const message = getPropByPath(currentMessages, prefix + key)
+ return isFunction(message) ? message(...args) : message
+ }
+
+ return { translate }
+}
diff --git a/uni_modules/wot-design-uni/components/wd-action-sheet/index.scss b/uni_modules/wot-design-uni/components/wd-action-sheet/index.scss
new file mode 100644
index 0000000..8831de3
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-action-sheet/index.scss
@@ -0,0 +1,204 @@
+@import '../common/abstracts/variable';
+@import '../common/abstracts/mixin';
+
+.wot-theme-dark {
+ @include b(action-sheet) {
+ background-color: $-dark-background2;
+ color: $-dark-color;
+
+ @include e(action) {
+ color: $-dark-color;
+ background: $-dark-background2;
+
+ &:not(.wd-action-sheet__action--disabled):not(.wd-action-sheet__action--loading):active {
+ background: $-dark-background4;
+ }
+
+ @include m(disabled) {
+ color: $-dark-color-gray;
+ }
+ }
+
+ @include e(subname) {
+ color: $-dark-color3;
+ }
+
+ @include e(cancel) {
+ color: $-dark-color;
+ background: $-dark-background4;
+
+ &:active {
+ background: $-dark-background5;
+ }
+ }
+
+ :deep(.wd-action-sheet__close) {
+ color: $-dark-color3;
+ }
+
+ @include e(panel-title) {
+ color: $-dark-color;
+ }
+
+ @include e(header) {
+ color: $-dark-color;
+ }
+ }
+}
+
+:deep(.wd-action-sheet__popup) {
+ border-radius: $-action-sheet-radius $-action-sheet-radius 0 0;
+}
+
+@include b(action-sheet) {
+ background-color: $-color-white;
+ padding-bottom: 1px;
+
+ @include edeep(popup) {
+ border-radius: $-action-sheet-radius $-action-sheet-radius 0 0;
+ }
+
+ @include e(actions) {
+ padding: 8px 0;
+ max-height: 50vh;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+
+ @include e(action) {
+ position: relative;
+ display: block;
+ width: 100%;
+ height: $-action-sheet-action-height;
+ line-height: $-action-sheet-action-height;
+ color: $-action-sheet-color;
+ font-size: $-action-sheet-fs;
+ text-align: center;
+ border: none;
+ background: $-action-sheet-bg;
+ outline: none;
+
+ &:after {
+ display: none;
+ }
+
+ &:not(&--disabled):not(&--loading):active {
+ background: $-action-sheet-active-color;
+ }
+
+ @include m(disabled) {
+ color: $-action-sheet-disabled-color;
+ cursor: not-allowed;
+ }
+
+ @include m(loading) {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ line-height: initial;
+ }
+ }
+
+ @include edeep(action-loading){
+ width: $-action-sheet-loading-size;
+ height: $-action-sheet-loading-size;
+ }
+
+ @include e(name) {
+ display: inline-block;
+ }
+
+ @include e(subname) {
+ display: inline-block;
+ margin-left: 4px;
+ font-size: $-action-sheet-subname-fs;
+ color: $-action-sheet-subname-color;
+ }
+
+ @include e(cancel) {
+ display: block;
+ width: calc(100% - 48px);
+ line-height: $-action-sheet-cancel-height;
+ padding: 0;
+ color: $-action-sheet-cancel-color;
+ font-size: $-action-sheet-fs;
+ text-align: center;
+ border-radius: $-action-sheet-cancel-radius;
+ border: none;
+ background: $-action-sheet-cancel-bg;
+ outline: none;
+ margin: 0 auto 24px;
+ font-weight: $-action-sheet-weight;
+
+ &:active {
+ background: $-action-sheet-active-color;
+ }
+
+ &:after {
+ display: none;
+ }
+ }
+
+ @include e(header) {
+ color: $-action-sheet-color;
+ position: relative;
+ height: $-action-sheet-title-height;
+ line-height: $-action-sheet-title-height;
+ text-align: center;
+ font-size: $-action-sheet-title-fs;
+ font-weight: $-action-sheet-weight;
+ }
+
+ @include edeep(close) {
+ position: absolute;
+ top: $-action-sheet-close-top;
+ right: $-action-sheet-close-right;
+ color: $-action-sheet-close-color;
+ font-size: $-action-sheet-close-fs;
+ transform: rotate(-45deg);
+ line-height: 1.1;
+ }
+
+ @include e(panels) {
+ height: 84px;
+ overflow-y: hidden;
+
+ &:first-of-type {
+ margin-top: 20px;
+ }
+
+ &:last-of-type {
+ margin-bottom: 12px;
+ }
+ }
+
+ @include e(panels-content) {
+ display: flex;
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+
+ @include e(panel) {
+ width: 88px;
+ flex: 0 0 auto;
+ display: inline-block;
+ padding: $-action-sheet-panel-padding;
+ }
+
+ @include e(panel-img) {
+ display: block;
+ width: $-action-sheet-panel-img-fs;
+ height: $-action-sheet-panel-img-fs;
+ margin: 0 auto;
+ margin-bottom: 7px;
+ border-radius: $-action-sheet-panel-img-radius;
+ }
+
+ @include e(panel-title) {
+ font-size: $-action-sheet-subname-fs;
+ line-height: 1.2;
+ text-align: center;
+ color: $-action-sheet-color;
+ @include lineEllipsis;
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-action-sheet/types.ts b/uni_modules/wot-design-uni/components/wd-action-sheet/types.ts
new file mode 100644
index 0000000..c13a9e1
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-action-sheet/types.ts
@@ -0,0 +1,121 @@
+/*
+ * @Author: weisheng
+ * @Date: 2024-03-18 11:22:03
+ * @LastEditTime: 2024-04-04 22:35:25
+ * @LastEditors: weisheng
+ * @Description:
+ * @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-action-sheet/types.ts
+ * 记得注释
+ */
+import type { ExtractPropTypes } from 'vue'
+import { baseProps, makeArrayProp, makeBooleanProp, makeNumberProp, makeRequiredProp, makeStringProp } from '../common/props'
+
+export type Action = {
+ /**
+ * 选项名称
+ */
+ name: string
+ /**
+ * 描述信息
+ */
+ subname?: string
+ /**
+ * 颜色
+ */
+ color?: string
+ /**
+ * 禁用
+ */
+ disabled?: boolean
+ /**
+ * 加载中状态
+ */
+ loading?: boolean
+}
+
+export type Panel = {
+ /**
+ * 图片地址
+ */
+ iconUrl: string
+ /**
+ * 标题内容
+ */
+ title: string
+}
+
+export const actionSheetProps = {
+ ...baseProps,
+ /**
+ * header 头部样式
+ * @default ''
+ * @type {string}
+ */
+ customHeaderClass: makeStringProp(''),
+ /**
+ * 设置菜单显示隐藏
+ * @default false
+ * @type {boolean}
+ */
+ modelValue: { ...makeBooleanProp(false), ...makeRequiredProp(Boolean) },
+ /**
+ * 菜单选项
+ * @default []
+ * @type {Action[]}
+ */
+ actions: makeArrayProp(),
+ /**
+ * 自定义面板项,可以为字符串数组,也可以为对象数组,如果为二维数组,则为多行展示
+ * @default []
+ * @type {Array}
+ */
+ panels: makeArrayProp(),
+ /**
+ * 标题
+ * @type {string}
+ */
+ title: String,
+ /**
+ * 取消按钮文案
+ * @type {string}
+ */
+ cancelText: String,
+ /**
+ * 点击选项后是否关闭菜单
+ * @default true
+ * @type {boolean}
+ */
+ closeOnClickAction: makeBooleanProp(true),
+ /**
+ * 点击遮罩是否关闭
+ * @default true
+ * @type {boolean}
+ */
+ closeOnClickModal: makeBooleanProp(true),
+ /**
+ * 弹框动画持续时间
+ * @default 200
+ * @type {number}
+ */
+ duration: makeNumberProp(200),
+ /**
+ * 菜单层级
+ * @default 10
+ * @type {number}
+ */
+ zIndex: makeNumberProp(10),
+ /**
+ * 弹层内容懒渲染,触发展示时才渲染内容
+ * @default true
+ * @type {boolean}
+ */
+ lazyRender: makeBooleanProp(true),
+ /**
+ * 弹出面板是否设置底部安全距离(iphone X 类型的机型)
+ * @default true
+ * @type {boolean}
+ */
+ safeAreaInsetBottom: makeBooleanProp(true)
+}
+
+export type ActionSheetProps = ExtractPropTypes
diff --git a/uni_modules/wot-design-uni/components/wd-action-sheet/wd-action-sheet.vue b/uni_modules/wot-design-uni/components/wd-action-sheet/wd-action-sheet.vue
new file mode 100644
index 0000000..459442a
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-action-sheet/wd-action-sheet.vue
@@ -0,0 +1,155 @@
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+ {{ (col as any).title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-backtop/index.scss b/uni_modules/wot-design-uni/components/wd-backtop/index.scss
new file mode 100644
index 0000000..a9dc001
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-backtop/index.scss
@@ -0,0 +1,25 @@
+@import '../common/abstracts/variable';
+@import '../common/abstracts/mixin';
+
+@include b(backtop) {
+ position: fixed;
+ background-color: $-backtop-bg;
+ width: 40px;
+ height: 40px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ color: $-color-gray-8;
+
+ @include edeep(backicon) {
+ font-size: $-backtop-icon-size;
+ }
+
+ @include when(circle) {
+ border-radius: 50%;
+ }
+
+ @include when(square) {
+ border-radius: 4px;
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-backtop/types.ts b/uni_modules/wot-design-uni/components/wd-backtop/types.ts
new file mode 100644
index 0000000..209c67a
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-backtop/types.ts
@@ -0,0 +1,37 @@
+import { baseProps, makeNumberProp, makeRequiredProp, makeStringProp } from '../common/props'
+
+export const backtopProps = {
+ ...baseProps,
+ /**
+ * 页面滚动距离
+ */
+ scrollTop: makeRequiredProp(Number),
+ /**
+ * 距离顶部多少距离时显示
+ */
+ top: makeNumberProp(300),
+ /**
+ * 返回顶部滚动时间
+ */
+ duration: makeNumberProp(100),
+ /**
+ * 层级
+ */
+ zIndex: makeNumberProp(10),
+ /**
+ * icon样式
+ */
+ iconStyle: makeStringProp(''),
+ /**
+ * 形状
+ */
+ shape: makeStringProp('circle'),
+ /**
+ * 距离屏幕底部距离
+ */
+ bottom: makeNumberProp(100),
+ /**
+ * 距离屏幕右边距离
+ */
+ right: makeNumberProp(20)
+}
diff --git a/uni_modules/wot-design-uni/components/wd-backtop/wd-backtop.vue b/uni_modules/wot-design-uni/components/wd-backtop/wd-backtop.vue
new file mode 100644
index 0000000..12df252
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-backtop/wd-backtop.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-badge/index.scss b/uni_modules/wot-design-uni/components/wd-badge/index.scss
new file mode 100644
index 0000000..584c71e
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-badge/index.scss
@@ -0,0 +1,62 @@
+@import './../common/abstracts/_mixin.scss';
+@import './../common/abstracts/variable.scss';
+
+.wot-theme-dark {
+ @include b(badge) {
+ @include e(content) {
+ border-color: $-dark-background2;
+ }
+ }
+}
+
+
+@include b(badge) {
+ position: relative;
+ vertical-align: middle;
+ display: inline-block;
+
+ @include e(content) {
+ display: inline-block;
+ height: $-badge-height;
+ line-height: $-badge-height;
+ padding: $-badge-padding;
+ background-color: $-badge-bg;
+ border-radius: calc($-badge-height / 2 + 2px);
+ color: $-badge-color;
+ font-size: $-badge-fs;
+ text-align: center;
+ white-space: nowrap;
+ border: $-badge-border;
+ font-weight: 500;
+
+ @include when(fixed) {
+ position: absolute;
+ top: 0px;
+ right: 0px;
+ transform: translateY(-50%) translateX(50%);
+ }
+
+ @include when(dot) {
+ height: $-badge-dot-size;
+ width: $-badge-dot-size;
+ padding: 0;
+ border-radius: 50%;
+ }
+
+ @each $type in (primary, success, warning, info, danger) {
+ @include m($type) {
+ @if $type == primary {
+ background-color: $-badge-primary;
+ } @else if $type == success {
+ background-color: $-badge-success;
+ } @else if $type == warning {
+ background-color: $-badge-warning;
+ } @else if $type == info {
+ background-color: $-badge-info;
+ } @else {
+ background-color: $-badge-danger;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-badge/types.ts b/uni_modules/wot-design-uni/components/wd-badge/types.ts
new file mode 100644
index 0000000..49cffa5
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-badge/types.ts
@@ -0,0 +1,50 @@
+/*
+ * @Author: weisheng
+ * @Date: 2024-03-15 11:36:12
+ * @LastEditTime: 2024-11-20 20:29:03
+ * @LastEditors: weisheng
+ * @Description:
+ * @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-badge/types.ts
+ * 记得注释
+ */
+import type { ExtractPropTypes, PropType } from 'vue'
+import { baseProps, makeBooleanProp, makeStringProp, numericProp } from '../common/props'
+
+export type BadgeType = 'primary' | 'success' | 'warning' | 'danger' | 'info'
+
+export const badgeProps = {
+ ...baseProps,
+ /**
+ * 显示值
+ */
+ modelValue: numericProp,
+ /** 当数值为 0 时,是否展示徽标 */
+ showZero: makeBooleanProp(false),
+ bgColor: String,
+ /**
+ * 最大值,超过最大值会显示 '{max}+',要求 value 是 Number 类型
+ */
+ max: Number,
+ /**
+ * 是否为红色点状标注
+ */
+ isDot: Boolean,
+ /**
+ * 是否隐藏 badge
+ */
+ hidden: Boolean,
+ /**
+ * badge类型,可选值primary / success / warning / danger / info
+ */
+ type: makeStringProp(undefined),
+ /**
+ * 为正时,角标向下偏移对应的像素
+ */
+ top: numericProp,
+ /**
+ * 为正时,角标向左偏移对应的像素
+ */
+ right: numericProp
+}
+
+export type BadgeProps = ExtractPropTypes
diff --git a/uni_modules/wot-design-uni/components/wd-badge/wd-badge.vue b/uni_modules/wot-design-uni/components/wd-badge/wd-badge.vue
new file mode 100644
index 0000000..a47b1ac
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-badge/wd-badge.vue
@@ -0,0 +1,61 @@
+
+
+
+
+ {{ content }}
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-button/index.scss b/uni_modules/wot-design-uni/components/wd-button/index.scss
new file mode 100644
index 0000000..d8ebba2
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-button/index.scss
@@ -0,0 +1,336 @@
+@import './../common/abstracts/_mixin.scss';
+@import './../common/abstracts/variable.scss';
+
+
+.wot-theme-dark {
+ @include b(button) {
+ @include when(info) {
+ background: $-dark-background4;
+ color: $-dark-color3;
+ }
+
+ @include when(plain) {
+ background: transparent;
+
+ @include when(info) {
+ color: $-dark-color;
+
+ &::after {
+ border-color: $-dark-background5;
+ }
+ }
+ }
+
+ @include when(text) {
+ @include when(disabled) {
+ color: $-dark-color-gray;
+ background: transparent;
+ }
+ }
+
+ @include when(icon) {
+ color: $-dark-color;
+
+ @include when(disabled) {
+ color: $-dark-color-gray;
+ background: transparent;
+ }
+
+ }
+ }
+}
+
+@include b(button) {
+ margin-left: initial;
+ margin-right: initial;
+ position: relative;
+ display: inline-block;
+ outline: none;
+ -webkit-appearance: none;
+ outline: none;
+ background: transparent;
+ box-sizing: border-box;
+ border: none;
+ border-radius: 0;
+ color: $-button-normal-color;
+ transition: opacity 0.2s;
+ user-select: none;
+ font-weight: normal;
+
+
+ &::before {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ width: 100%;
+ height: 100%;
+ background: $-color-black;
+ border: inherit;
+ border-color: $-color-black;
+ border-radius: inherit;
+ transform: translate(-50%, -50%);
+ opacity: 0;
+ content: ' ';
+ }
+
+
+ &::after {
+ border: none;
+ border-radius: 0;
+ }
+
+ @include e(content) {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 100%;
+ }
+
+ @include m(active) {
+ &:active::before {
+ opacity: 0.15;
+ }
+ }
+
+ @include when(disabled) {
+ opacity: $-button-disabled-opacity;
+ }
+
+ @include e(loading) {
+ margin-right: 5px;
+ animation: wd-rotate 0.8s linear infinite;
+ animation-duration: 2s;
+ }
+
+ @include e(loading-svg) {
+ width: 100%;
+ height: 100%;
+ background-size: cover;
+ background-repeat: no-repeat;
+ }
+
+ @include when(loading) {}
+
+ @include when(primary) {
+ background: $-button-primary-bg-color;
+ color: $-button-primary-color;
+ }
+
+ @include when(success) {
+ background: $-button-success-bg-color;
+ color: $-button-success-color;
+ }
+
+ @include when(info) {
+ background: $-button-info-bg-color;
+ color: $-button-info-color;
+ }
+
+ @include when(warning) {
+ background: $-button-warning-bg-color;
+ color: $-button-warning-color;
+ }
+
+ @include when(error) {
+ background: $-button-error-bg-color;
+ color: $-button-error-color;
+ }
+
+ @include when(small) {
+ height: $-button-small-height;
+ padding: $-button-small-padding;
+ border-radius: $-button-small-radius;
+ font-size: $-button-small-fs;
+ font-weight: normal;
+
+ .wd-button__loading {
+ width: $-button-small-loading;
+ height: $-button-small-loading;
+ }
+ }
+
+ @include when(medium) {
+ height: $-button-medium-height;
+ padding: $-button-medium-padding;
+ border-radius: $-button-medium-radius;
+ font-size: $-button-medium-fs;
+ min-width: 120px;
+
+
+ @include when(round) {
+
+ @include when(icon) {
+ min-width: 0;
+ border-radius: 50%;
+ }
+
+ @include when(text) {
+ border-radius: 0;
+ min-width: 0;
+ }
+ }
+
+ .wd-button__loading {
+ width: $-button-medium-loading;
+ height: $-button-medium-loading;
+ }
+ }
+
+ @include when(large) {
+ height: $-button-large-height;
+ padding: $-button-large-padding;
+ border-radius: $-button-large-radius;
+ font-size: $-button-large-fs;
+
+ &::after {
+ border-radius: $-button-large-radius;
+ }
+
+ .wd-button__loading {
+ width: $-button-large-loading;
+ height: $-button-large-loading;
+ }
+ }
+
+
+ @include when(round) {
+ border-radius: 999px;
+ }
+
+ @include when(text) {
+ color: $-button-primary-bg-color;
+ min-width: 0;
+ padding: 4px 0;
+
+ &::after {
+ display: none;
+ }
+
+ &.wd-button--active {
+ opacity: $-button-text-hover-opacity;
+
+ &:active::before {
+ display: none;
+ }
+
+ }
+
+ @include when(disabled) {
+ color: $-button-normal-disabled-color;
+ background: transparent;
+ }
+ }
+
+ @include when(plain) {
+ background: $-button-plain-bg-color;
+ border: 1px solid currentColor;
+
+ @include when(primary) {
+ color: $-button-primary-bg-color;
+ }
+
+ @include when(success) {
+ color: $-button-success-bg-color;
+ }
+
+ @include when(info) {
+ color: $-button-info-plain-normal-color;
+ border-color: $-button-info-plain-border-color;
+ }
+
+ @include when(warning) {
+ color: $-button-warning-bg-color;
+ }
+
+ @include when(error) {
+ color: $-button-error-bg-color;
+ }
+ }
+
+ @include when(hairline) {
+ border-width: 0;
+
+ &.is-plain {
+ @include halfPixelBorderSurround();
+
+ &::before {
+ border-radius: inherit;
+ }
+
+ &::after {
+ border-color: inherit;
+ }
+
+ &.is-round {
+ &::after {
+ border-radius: inherit !important;
+ }
+ }
+
+ &.is-large {
+ &::after {
+ border-radius: calc(2 * $-button-large-radius);
+ }
+ }
+
+ &.is-medium {
+ &::after {
+ border-radius: calc(2 * $-button-medium-radius);
+ }
+ }
+
+ &.is-small {
+ &::after {
+ border-radius: calc(2 * $-button-small-radius);
+ }
+ }
+ }
+ }
+
+ @include when(block) {
+ display: block;
+ }
+
+ @include when(icon) {
+ width: $-button-icon-size;
+ height: $-button-icon-size;
+ padding: 0;
+ border-radius: 50%;
+ color: $-button-icon-color;
+
+ &::after {
+ display: none;
+ }
+
+ :deep(.wd-button__icon) {
+ margin-right: 0;
+ }
+
+ @include when(disabled) {
+ color: $-button-icon-disabled-color;
+ background: transparent;
+ }
+ }
+
+ @include edeep(icon) {
+ display: block;
+ margin-right: 6px;
+ font-size: $-button-icon-fs;
+ vertical-align: middle;
+ }
+
+ @include e(text) {
+ user-select: none;
+ white-space: nowrap;
+ }
+}
+
+@keyframes wd-rotate {
+ from {
+ transform: rotate(0deg);
+ }
+
+ to {
+ transform: rotate(360deg);
+ }
+}
diff --git a/uni_modules/wot-design-uni/components/wd-button/types.ts b/uni_modules/wot-design-uni/components/wd-button/types.ts
new file mode 100644
index 0000000..c117bf4
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-button/types.ts
@@ -0,0 +1,141 @@
+/*
+ * @Author: weisheng
+ * @Date: 2024-03-15 11:36:12
+ * @LastEditTime: 2024-11-04 21:33:52
+ * @LastEditors: weisheng
+ * @Description:
+ * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-button\types.ts
+ * 记得注释
+ */
+import type { ExtractPropTypes, PropType } from 'vue'
+import { baseProps, makeBooleanProp, makeStringProp } from '../common/props'
+
+export type ButtonType = 'primary' | 'success' | 'info' | 'warning' | 'error' | 'default' | 'text' | 'icon'
+export type ButtonSize = 'small' | 'medium' | 'large'
+export type ButtonLang = 'zh_CN' | 'zh_TW' | 'en'
+
+export type ButtonOpenType =
+ | 'feedback'
+ | 'share'
+ | 'getUserInfo'
+ | 'contact'
+ | 'getPhoneNumber'
+ | 'launchApp'
+ | 'openSetting'
+ | 'chooseAvatar'
+ | 'getAuthorize'
+ | 'lifestyle'
+ | 'contactShare'
+ | 'openGroupProfile'
+ | 'openGuildProfile'
+ | 'openPublicProfile'
+ | 'shareMessageToFriend'
+ | 'addFriend'
+ | 'addColorSign'
+ | 'addGroupApp'
+ | 'addToFavorites'
+ | 'chooseAddress'
+ | 'chooseInvoiceTitle'
+ | 'login'
+ | 'subscribe'
+ | 'favorite'
+ | 'watchLater'
+ | 'openProfile'
+ | 'agreePrivacyAuthorization'
+
+export type ButtonScope = 'phoneNumber' | 'userInfo'
+
+export const buttonProps = {
+ ...baseProps,
+ /**
+ * 幽灵按钮
+ */
+ plain: makeBooleanProp(false),
+ /**
+ * 圆角按钮
+ */
+ round: makeBooleanProp(true),
+ /**
+ * 禁用按钮
+ */
+ disabled: makeBooleanProp(false),
+ /**
+ * 是否细边框
+ */
+ hairline: makeBooleanProp(false),
+ /**
+ * 块状按钮
+ */
+ block: makeBooleanProp(false),
+ /**
+ * 按钮类型,可选值:primary / success / info / warning / error / text / icon
+ */
+ type: makeStringProp('primary'),
+ /**
+ * 按钮尺寸,可选值:small / medium / large
+ */
+ size: makeStringProp('medium'),
+ /**
+ * 图标类名
+ */
+ icon: String,
+ /**
+ * 类名前缀,用于使用自定义图标,用法参考Icon组件
+ */
+ classPrefix: makeStringProp('wd-icon'),
+ /**
+ * 加载中按钮
+ */
+ loading: makeBooleanProp(false),
+ /**
+ * 加载图标颜色
+ */
+ loadingColor: String,
+ /**
+ * 开放能力
+ */
+ openType: String as PropType,
+ /**
+ * 指定是否阻止本节点的祖先节点出现点击态
+ */
+ hoverStopPropagation: Boolean,
+ /**
+ * 指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文
+ */
+ lang: String as PropType,
+ /**
+ * 会话来源,open-type="contact"时有效
+ */
+ sessionFrom: String,
+ /**
+ * 会话内消息卡片标题,open-type="contact"时有效
+ */
+ sendMessageTitle: String,
+ /**
+ * 会话内消息卡片点击跳转小程序路径,open-type="contact"时有效
+ */
+ sendMessagePath: String,
+ /**
+ * 会话内消息卡片图片,open-type="contact"时有效
+ */
+ sendMessageImg: String,
+ /**
+ * 打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效
+ */
+ appParameter: String,
+ /**
+ * 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示,用户点击后可以快速发送小程序消息,open-type="contact"时有效
+ */
+ showMessageCard: Boolean,
+ /**
+ * 按钮的唯一标识,可用于设置隐私同意授权按钮的id
+ */
+ buttonId: String,
+ /**
+ * 支付宝小程序,当 open-type 为 getAuthorize 时有效。
+ * 可选值:'phoneNumber' | 'userInfo'
+ */
+ scope: String as PropType
+}
+
+export type ButtonProps = ExtractPropTypes
diff --git a/uni_modules/wot-design-uni/components/wd-button/wd-button.vue b/uni_modules/wot-design-uni/components/wd-button/wd-button.vue
new file mode 100644
index 0000000..27317a6
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-button/wd-button.vue
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-calendar-view/index.scss b/uni_modules/wot-design-uni/components/wd-calendar-view/index.scss
new file mode 100644
index 0000000..abec32d
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar-view/index.scss
@@ -0,0 +1,9 @@
+/*
+ * @Author: weisheng
+ * @Date: 2023-06-12 10:04:19
+ * @LastEditTime: 2023-07-15 16:16:34
+ * @LastEditors: weisheng
+ * @Description:
+ * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-calendar-view\index.scss
+ * 记得注释
+ */
diff --git a/uni_modules/wot-design-uni/components/wd-calendar-view/month/index.scss b/uni_modules/wot-design-uni/components/wd-calendar-view/month/index.scss
new file mode 100644
index 0000000..a60250a
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar-view/month/index.scss
@@ -0,0 +1,162 @@
+@import '../../common/abstracts/variable';
+@import '../../common/abstracts/mixin';
+
+.wot-theme-dark {
+ @include b(month) {
+ @include e(title) {
+ color: $-dark-color;
+ }
+
+ @include e(days) {
+ color: $-dark-color;
+ }
+
+ @include e(day) {
+ @include when(disabled) {
+ .wd-month__day-text {
+ color: $-dark-color-gray;
+ }
+ }
+ }
+ }
+}
+
+@include b(month) {
+ @include e(title) {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 45px;
+ font-size: $-calendar-panel-title-fs;
+ color: $-calendar-panel-title-color;
+ }
+
+ @include e(days) {
+ display: flex;
+ flex-wrap: wrap;
+ font-size: $-calendar-day-fs;
+ color: $-calendar-day-color;
+ }
+
+ @include e(day) {
+ position: relative;
+ width: 14.285%;
+ height: $-calendar-day-height;
+ line-height: $-calendar-day-height;
+ text-align: center;
+ margin-bottom: $-calendar-item-margin-bottom;
+
+ @include when(disabled) {
+ .wd-month__day-text {
+ color: $-calendar-disabled-color;
+ }
+ }
+
+ @include when(current) {
+ color: $-calendar-active-color;
+ }
+
+ @include when(selected, multiple-selected) {
+ .wd-month__day-container {
+ border-radius: $-calendar-active-border;
+ background: $-calendar-active-color;
+ color: $-calendar-selected-color;
+ }
+ }
+
+ @include when(middle) {
+ .wd-month__day-container {
+ background: $-calendar-range-color;
+ }
+ }
+ @include when(multiple-middle) {
+ .wd-month__day-container {
+ background: $-calendar-active-color;
+ color: $-calendar-selected-color;
+ }
+ }
+
+ @include when(start) {
+ &::after {
+ position: absolute;
+ content: '';
+ height: $-calendar-day-height;
+ top: 0;
+ right: 0;
+ left: 50%;
+ background: $-calendar-range-color;
+ z-index: 1;
+ }
+
+ &.is-without-end::after {
+ display: none;
+ }
+
+ .wd-month__day-container {
+ background: $-calendar-active-color;
+ color: $-calendar-selected-color;
+ border-radius: $-calendar-active-border 0 0 $-calendar-active-border;
+ }
+ }
+
+ @include when(end) {
+ &::after {
+ position: absolute;
+ content: '';
+ height: $-calendar-day-height;
+ top: 0;
+ left: 0;
+ right: 50%;
+ background: $-calendar-range-color;
+ z-index: 1;
+ }
+
+ .wd-month__day-container {
+ background: $-calendar-active-color;
+ color: $-calendar-selected-color;
+ border-radius: 0 $-calendar-active-border $-calendar-active-border 0;
+ }
+ }
+
+ @include when(same) {
+ .wd-month__day-container {
+ background: $-calendar-active-color;
+ color: $-calendar-selected-color;
+ border-radius: $-calendar-active-border;
+ }
+ }
+
+ @include when(last-row){
+ margin-bottom: 0;
+ }
+ }
+
+ @include e(day-container) {
+ position: relative;
+ z-index: 2;
+ }
+
+ @include e(day-text) {
+ font-weight: $-calendar-day-fw;
+ }
+
+ @include e(day-top) {
+ position: absolute;
+ top: 10px;
+ left: 0;
+ right: 0;
+ line-height: 1.1;
+ font-size: $-calendar-info-fs;
+ text-align: center;
+ }
+
+ @include e(day-bottom) {
+ position: absolute;
+ bottom: 10px;
+ left: 0;
+ right: 0;
+ line-height: 1.1;
+ font-size: $-calendar-info-fs;
+ text-align: center;
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-calendar-view/month/month.vue b/uni_modules/wot-design-uni/components/wd-calendar-view/month/month.vue
new file mode 100644
index 0000000..64442eb
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar-view/month/month.vue
@@ -0,0 +1,389 @@
+
+
+
+
+
+ {{ monthTitle(date) }}
+
+
+
+ {{ item.topInfo }}
+
+ {{ item.text }}
+
+ {{ item.bottomInfo }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-calendar-view/month/types.ts b/uni_modules/wot-design-uni/components/wd-calendar-view/month/types.ts
new file mode 100644
index 0000000..f25263c
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar-view/month/types.ts
@@ -0,0 +1,20 @@
+import type { PropType } from 'vue'
+import { makeBooleanProp, makeRequiredProp } from '../../common/props'
+import type { CalendarFormatter, CalendarType } from '../types'
+
+export const monthProps = {
+ type: makeRequiredProp(String as PropType),
+ date: makeRequiredProp(Number),
+ value: makeRequiredProp([Number, Array, null] as PropType),
+ minDate: makeRequiredProp(Number),
+ maxDate: makeRequiredProp(Number),
+ firstDayOfWeek: makeRequiredProp(Number),
+ formatter: Function as PropType,
+ maxRange: Number,
+ rangePrompt: String,
+ allowSameDay: makeBooleanProp(false),
+ defaultTime: {
+ type: [Array] as PropType>
+ },
+ showTitle: makeBooleanProp(true)
+}
diff --git a/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/index.scss b/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/index.scss
new file mode 100644
index 0000000..f8b9fe5
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/index.scss
@@ -0,0 +1,89 @@
+@import '../../common/abstracts/variable';
+@import '../../common/abstracts/mixin';
+
+.wot-theme-dark {
+ @include b(month-panel) {
+ @include e(title) {
+ color: $-dark-color;
+ }
+
+ @include e(weeks) {
+ box-shadow: 0px 4px 8px 0 rgba(255, 255, 255, 0.02);
+ color: $-dark-color;
+ }
+
+ @include e(time-label) {
+ color: $-dark-color;
+ &::after{
+ background: $-dark-background4;
+ }
+ }
+ }
+}
+
+@include b(month-panel) {
+ font-size: $-calendar-fs;
+
+ @include e(title) {
+ padding: 5px 0;
+ text-align: center;
+ font-size: $-calendar-panel-title-fs;
+ color: $-calendar-panel-title-color;
+ padding: $-calendar-panel-padding;
+ }
+
+ @include e(weeks) {
+ display: flex;
+ height: $-calendar-week-height;
+ line-height: $-calendar-week-height;
+ box-shadow: 0px 4px 8px 0 rgba(0, 0, 0, 0.02);
+ color: $-calendar-week-color;
+ font-size: $-calendar-week-fs;
+ padding: $-calendar-panel-padding;
+ }
+
+ @include e(week) {
+ flex: 1;
+ text-align: center;
+ }
+
+ @include e(container) {
+ padding: $-calendar-panel-padding;
+ box-sizing: border-box;
+ }
+
+ @include e(time) {
+ display: flex;
+ box-shadow: 0px -4px 8px 0px rgba(0, 0, 0, 0.02);
+ }
+
+ @include e(time-label) {
+ position: relative;
+ flex: 1;
+ font-size: $-picker-column-fs;
+ text-align: center;
+ line-height: 125px;
+ color: $-picker-column-color;
+
+ &::after {
+ position: absolute;
+ content: '';
+ height: 35px;
+ top: 50%;
+ left: 0;
+ right: 0;
+ transform: translateY(-50%);
+ background: $-picker-column-select-bg;
+ z-index: 0;
+ }
+ }
+
+ @include e(time-text) {
+ position: relative;
+ z-index: 1;
+ }
+
+ @include e(time-picker) {
+ flex: 3;
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/month-panel.vue b/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/month-panel.vue
new file mode 100644
index 0000000..86725c8
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/month-panel.vue
@@ -0,0 +1,374 @@
+
+
+
+ {{ title }}
+
+
+ {{ weekLabel(item + firstDayOfWeek) }}
+
+
+
+
+
+
+
+
+ {{ timeType === 'start' ? translate('startTime') : translate('endTime') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/types.ts b/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/types.ts
new file mode 100644
index 0000000..bd27a85
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar-view/monthPanel/types.ts
@@ -0,0 +1,48 @@
+import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
+import { makeBooleanProp, makeRequiredProp } from '../../common/props'
+import type { CalendarFormatter, CalendarTimeFilter, CalendarType } from '../types'
+
+/**
+ * 月份信息
+ */
+export interface MonthInfo {
+ date: number
+ height: number
+}
+
+export const monthPanelProps = {
+ type: makeRequiredProp(String as PropType),
+ value: makeRequiredProp([Number, Array, null] as PropType),
+ minDate: makeRequiredProp(Number),
+ maxDate: makeRequiredProp(Number),
+ firstDayOfWeek: makeRequiredProp(Number),
+ formatter: Function as PropType,
+ maxRange: Number,
+ rangePrompt: String,
+ allowSameDay: makeBooleanProp(false),
+ showPanelTitle: makeBooleanProp(false),
+ defaultTime: {
+ type: [Array] as PropType>
+ },
+ panelHeight: makeRequiredProp(Number),
+ // type 为 'datetime' 或 'datetimerange' 时有效,用于过滤时间选择器的数据
+ timeFilter: Function as PropType,
+ hideSecond: makeBooleanProp(false),
+ /**
+ * 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。
+ */
+ immediateChange: makeBooleanProp(false)
+}
+
+export type MonthPanelProps = ExtractPropTypes
+
+export type MonthPanelTimeType = 'start' | 'end' | ''
+
+export type MonthPanelExpose = {
+ /**
+ * 使当前日期或者选中日期滚动到可视区域
+ */
+ scrollIntoView: () => void
+}
+
+export type MonthPanelInstance = ComponentPublicInstance
diff --git a/uni_modules/wot-design-uni/components/wd-calendar-view/types.ts b/uni_modules/wot-design-uni/components/wd-calendar-view/types.ts
new file mode 100644
index 0000000..cadbf1b
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar-view/types.ts
@@ -0,0 +1,109 @@
+import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
+import { baseProps, makeBooleanProp, makeNumberProp, makeRequiredProp, makeStringProp } from '../common/props'
+
+export type CalendarType = 'date' | 'dates' | 'datetime' | 'week' | 'month' | 'daterange' | 'datetimerange' | 'weekrange' | 'monthrange'
+
+export const calendarViewProps = {
+ ...baseProps,
+ /**
+ * 选中值,为 13 位时间戳或时间戳数组
+ */
+ modelValue: makeRequiredProp([Number, Array, null] as PropType),
+ /**
+ * 日期类型
+ */
+ type: makeStringProp('date'),
+ /**
+ * 最小日期,为 13 位时间戳
+ */
+ minDate: makeNumberProp(new Date(new Date().getFullYear(), new Date().getMonth() - 6, new Date().getDate()).getTime()),
+ /**
+ * 最大日期,为 13 位时间戳
+ */
+ maxDate: makeNumberProp(new Date(new Date().getFullYear(), new Date().getMonth() + 6, new Date().getDate(), 23, 59, 59).getTime()),
+ /**
+ * 周起始天
+ */
+ firstDayOfWeek: makeNumberProp(0),
+ /**
+ * 日期格式化函数
+ */
+ formatter: Function as PropType,
+ /**
+ * type 为范围选择时有效,最大日期范围
+ */
+ maxRange: Number,
+ /**
+ * type 为范围选择时有效,选择超出最大日期范围时的错误提示文案
+ */
+ rangePrompt: String,
+ /**
+ * type 为范围选择时有效,是否允许选择同一天
+ */
+ allowSameDay: makeBooleanProp(false),
+ // 是否展示面板标题,自动计算当前滚动的日期月份
+ showPanelTitle: makeBooleanProp(true),
+ /**
+ * 选中日期所使用的当日内具体时刻
+ */
+ defaultTime: {
+ type: [String, Array] as PropType,
+ default: '00:00:00'
+ },
+ /**
+ * 可滚动面板的高度
+ */
+ panelHeight: makeNumberProp(378),
+ /**
+ * type 为 'datetime' 或 'datetimerange' 时有效,用于过滤时间选择器的数据
+ */
+ timeFilter: Function as PropType,
+ /**
+ * type 为 'datetime' 或 'datetimerange' 时有效,是否不展示秒修改
+ */
+ hideSecond: makeBooleanProp(false),
+ /**
+ * 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。
+ */
+ immediateChange: makeBooleanProp(false)
+}
+
+export type CalendarViewProps = ExtractPropTypes
+
+export type CalendarDayType = '' | 'start' | 'middle' | 'end' | 'selected' | 'same' | 'current' | 'multiple-middle' | 'multiple-selected'
+
+export type CalendarDayItem = {
+ date: number
+ text?: number | string
+ topInfo?: string
+ bottomInfo?: string
+ type?: CalendarDayType
+ disabled?: boolean
+ isLastRow?: boolean
+}
+
+export type CalendarFormatter = (day: CalendarDayItem) => CalendarDayItem
+
+export type CalendarTimeFilterOptionType = 'hour' | 'minute' | 'second'
+
+export type CalendarTimeFilterOption = {
+ type: CalendarTimeFilterOptionType
+ values: CalendarItem[]
+}
+
+export type CalendarTimeFilter = (option: CalendarTimeFilterOption) => CalendarItem[]
+
+export type CalendarItem = {
+ label: string
+ value: number
+ disabled: boolean
+}
+
+export type CalendarViewExpose = {
+ /**
+ * 使当前日期或者选中日期滚动到可视区域
+ */
+ scrollIntoView: () => void
+}
+
+export type CalendarViewInstance = ComponentPublicInstance
diff --git a/uni_modules/wot-design-uni/components/wd-calendar-view/utils.ts b/uni_modules/wot-design-uni/components/wd-calendar-view/utils.ts
new file mode 100644
index 0000000..0491b9d
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar-view/utils.ts
@@ -0,0 +1,429 @@
+import { computed } from 'vue'
+import { dayjs } from '../common/dayjs'
+import { isArray, isFunction, padZero } from '../common/util'
+import { useTranslate } from '../composables/useTranslate'
+import type { CalendarDayType, CalendarItem, CalendarTimeFilter, CalendarType } from './types'
+const { translate } = useTranslate('calendar-view')
+
+const weeks = computed(() => {
+ return [
+ translate('weeks.sun'),
+ translate('weeks.mon'),
+ translate('weeks.tue'),
+ translate('weeks.wed'),
+ translate('weeks.thu'),
+ translate('weeks.fri'),
+ translate('weeks.sat')
+ ]
+})
+
+/**
+ * 比较两个时间的日期是否相等
+ * @param {timestamp} date1
+ * @param {timestamp} date2
+ */
+export function compareDate(date1: number, date2: number | null) {
+ const dateValue1 = new Date(date1)
+ const dateValue2 = new Date(date2 || '')
+
+ const year1 = dateValue1.getFullYear()
+ const year2 = dateValue2.getFullYear()
+ const month1 = dateValue1.getMonth()
+ const month2 = dateValue2.getMonth()
+ const day1 = dateValue1.getDate()
+ const day2 = dateValue2.getDate()
+
+ if (year1 === year2) {
+ if (month1 === month2) {
+ return day1 === day2 ? 0 : day1 > day2 ? 1 : -1
+ }
+ return month1 === month2 ? 0 : month1 > month2 ? 1 : -1
+ }
+
+ return year1 > year2 ? 1 : -1
+}
+
+/**
+ * 判断是否是范围选择
+ * @param {string} type
+ */
+export function isRange(type: CalendarType) {
+ return type.indexOf('range') > -1
+}
+
+/**
+ * 比较两个日期的月份是否相等
+ * @param {timestamp} date1
+ * @param {timestamp} date2
+ */
+export function compareMonth(date1: number, date2: number) {
+ const dateValue1 = new Date(date1)
+ const dateValue2 = new Date(date2)
+
+ const year1 = dateValue1.getFullYear()
+ const year2 = dateValue2.getFullYear()
+ const month1 = dateValue1.getMonth()
+ const month2 = dateValue2.getMonth()
+
+ if (year1 === year2) {
+ return month1 === month2 ? 0 : month1 > month2 ? 1 : -1
+ }
+
+ return year1 > year2 ? 1 : -1
+}
+
+/**
+ * 比较两个日期的年份是否一致
+ * @param {timestamp} date1
+ * @param {timestamp} date2
+ */
+export function compareYear(date1: number, date2: number) {
+ const dateValue1 = new Date(date1)
+ const dateValue2 = new Date(date2)
+
+ const year1 = dateValue1.getFullYear()
+ const year2 = dateValue2.getFullYear()
+
+ return year1 === year2 ? 0 : year1 > year2 ? 1 : -1
+}
+
+/**
+ * 获取一个月的最后一天
+ * @param {number} year
+ * @param {number} month
+ */
+export function getMonthEndDay(year: number, month: number) {
+ return 32 - new Date(year, month - 1, 32).getDate()
+}
+
+/**
+ * 格式化年月
+ * @param {timestamp} date
+ */
+export function formatMonthTitle(date: number) {
+ return dayjs(date).format(translate('monthTitle'))
+}
+
+/**
+ * 根据下标获取星期
+ * @param {number} index
+ */
+export function getWeekLabel(index: number) {
+ if (index >= 7) {
+ index = index % 7
+ }
+
+ return weeks.value[index]
+}
+
+/**
+ * 格式化年份
+ * @param {timestamp} date
+ */
+export function formatYearTitle(date: number) {
+ return dayjs(date).format(translate('yearTitle'))
+}
+
+/**
+ * 根据最小日期和最大日期获取这之间总共有几个月份
+ * @param {timestamp} minDate
+ * @param {timestamp} maxDate
+ */
+export function getMonths(minDate: number, maxDate: number) {
+ const months: number[] = []
+ const month = new Date(minDate)
+ month.setDate(1)
+
+ while (compareMonth(month.getTime(), maxDate) < 1) {
+ months.push(month.getTime())
+ month.setMonth(month.getMonth() + 1)
+ }
+
+ return months
+}
+
+/**
+ * 根据最小日期和最大日期获取这之间总共有几年
+ * @param {timestamp} minDate
+ * @param {timestamp} maxDate
+ */
+export function getYears(minDate: number, maxDate: number) {
+ const years: number[] = []
+ const year = new Date(minDate)
+ year.setMonth(0)
+ year.setDate(1)
+
+ while (compareYear(year.getTime(), maxDate) < 1) {
+ years.push(year.getTime())
+ year.setFullYear(year.getFullYear() + 1)
+ }
+
+ return years
+}
+
+/**
+ * 获取一个日期所在周的第一天和最后一天
+ * @param {timestamp} date
+ */
+export function getWeekRange(date: number, firstDayOfWeek: number) {
+ if (firstDayOfWeek >= 7) {
+ firstDayOfWeek = firstDayOfWeek % 7
+ }
+
+ const dateValue = new Date(date)
+ dateValue.setHours(0, 0, 0, 0)
+ const year = dateValue.getFullYear()
+ const month = dateValue.getMonth()
+ const day = dateValue.getDate()
+ const week = dateValue.getDay()
+
+ const weekStart = new Date(year, month, day - ((7 + week - firstDayOfWeek) % 7))
+ const weekEnd = new Date(year, month, day + 6 - ((7 + week - firstDayOfWeek) % 7))
+
+ return [weekStart.getTime(), weekEnd.getTime()]
+}
+
+/**
+ * 获取日期偏移量
+ * @param {timestamp} date1
+ * @param {timestamp} date2
+ */
+export function getDayOffset(date1: number, date2: number) {
+ return (date1 - date2) / (24 * 60 * 60 * 1000) + 1
+}
+
+/**
+ * 获取偏移日期
+ * @param {timestamp} date
+ * @param {number} offset
+ */
+export function getDayByOffset(date: number, offset: number) {
+ const dateValue = new Date(date)
+ dateValue.setDate(dateValue.getDate() + offset)
+
+ return dateValue.getTime()
+}
+
+export const getPrevDay = (date: number) => getDayByOffset(date, -1)
+export const getNextDay = (date: number) => getDayByOffset(date, 1)
+
+/**
+ * 获取月份偏移量
+ * @param {timestamp} date1
+ * @param {timestamp} date2
+ */
+export function getMonthOffset(date1: number, date2: number) {
+ const dateValue1 = new Date(date1)
+ const dateValue2 = new Date(date2)
+
+ const year1 = dateValue1.getFullYear()
+ const year2 = dateValue2.getFullYear()
+ let month1 = dateValue1.getMonth()
+ const month2 = dateValue2.getMonth()
+
+ month1 = (year1 - year2) * 12 + month1
+
+ return month1 - month2 + 1
+}
+
+/**
+ * 获取偏移月份
+ * @param {timestamp} date
+ * @param {number} offset
+ */
+export function getMonthByOffset(date: number, offset: number) {
+ const dateValue = new Date(date)
+ dateValue.setMonth(dateValue.getMonth() + offset)
+
+ return dateValue.getTime()
+}
+
+/**
+ * 获取默认时间,格式化为数组
+ * @param {array|string|null} defaultTime
+ */
+export function getDefaultTime(defaultTime: string[] | string | null) {
+ if (isArray(defaultTime)) {
+ const startTime = (defaultTime[0] || '00:00:00').split(':').map((item: string) => {
+ return parseInt(item)
+ })
+ const endTime = (defaultTime[1] || '00:00:00').split(':').map((item) => {
+ return parseInt(item)
+ })
+ return [startTime, endTime]
+ } else {
+ const time = (defaultTime || '00:00:00').split(':').map((item) => {
+ return parseInt(item)
+ })
+
+ return [time, time]
+ }
+}
+
+/**
+ * 根据默认时间获取日期
+ * @param {timestamp} date
+ * @param {array} defaultTime
+ */
+export function getDateByDefaultTime(date: number, defaultTime: number[]) {
+ const dateValue = new Date(date)
+ dateValue.setHours(defaultTime[0])
+ dateValue.setMinutes(defaultTime[1])
+ dateValue.setSeconds(defaultTime[2])
+
+ return dateValue.getTime()
+}
+
+/**
+ * 获取经过 iteratee 格式化后的长度为 n 的数组
+ * @param {number} n
+ * @param {function} iteratee
+ */
+const times = (n: number, iteratee: (index: number) => CalendarItem) => {
+ let index: number = -1
+ const result: CalendarItem[] = Array(n < 0 ? 0 : n)
+ while (++index < n) {
+ result[index] = iteratee(index)
+ }
+ return result
+}
+
+/**
+ * 获取时分秒
+ * @param {timestamp}} date
+ */
+const getTime = (date: number) => {
+ const dateValue = new Date(date)
+ return [dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds()]
+}
+
+/**
+ * 根据最小最大日期获取时间数据,用于填入picker
+ * @param {*} param0
+ */
+export function getTimeData({
+ date,
+ minDate,
+ maxDate,
+ isHideSecond,
+ filter
+}: {
+ date: number
+ minDate: number
+ maxDate: number
+ isHideSecond: boolean
+ filter?: CalendarTimeFilter
+}) {
+ const compareMin = compareDate(date, minDate)
+ const compareMax = compareDate(date, maxDate)
+
+ let minHour = 0
+ let maxHour = 23
+ let minMinute = 0
+ let maxMinute = 59
+ let minSecond = 0
+ let maxSecond = 59
+
+ if (compareMin === 0) {
+ const minTime = getTime(minDate)
+ const currentTime = getTime(date)
+
+ minHour = minTime[0]
+ if (minTime[0] === currentTime[0]) {
+ minMinute = minTime[1]
+
+ if (minTime[1] === currentTime[1]) {
+ minSecond = minTime[2]
+ }
+ }
+ }
+
+ if (compareMax === 0) {
+ const maxTime = getTime(maxDate)
+ const currentTime = getTime(date)
+
+ maxHour = maxTime[0]
+ if (maxTime[0] === currentTime[0]) {
+ maxMinute = maxTime[1]
+
+ if (maxTime[1] === currentTime[1]) {
+ maxSecond = maxTime[2]
+ }
+ }
+ }
+
+ let columns: CalendarItem[][] = []
+ let hours = times(24, (index) => {
+ return {
+ label: translate('hour', padZero(index)),
+ value: index,
+ disabled: index < minHour || index > maxHour
+ }
+ })
+ let minutes = times(60, (index) => {
+ return {
+ label: translate('minute', padZero(index)),
+ value: index,
+ disabled: index < minMinute || index > maxMinute
+ }
+ })
+ let seconds: CalendarItem[] = []
+ if (filter && isFunction(filter)) {
+ hours = filter({
+ type: 'hour',
+ values: hours
+ })
+ minutes = filter({
+ type: 'minute',
+ values: minutes
+ })
+ }
+
+ if (!isHideSecond) {
+ seconds = times(60, (index) => {
+ return {
+ label: translate('second', padZero(index)),
+ value: index,
+ disabled: index < minSecond || index > maxSecond
+ }
+ })
+ if (filter && isFunction(filter)) {
+ seconds = filter({
+ type: 'second',
+ values: seconds
+ })
+ }
+ }
+
+ columns = isHideSecond ? [hours, minutes] : [hours, minutes, seconds]
+
+ return columns
+}
+
+/**
+ * 获取当前是第几周
+ * @param {timestamp} date
+ */
+export function getWeekNumber(date: number | Date) {
+ date = new Date(date)
+ date.setHours(0, 0, 0, 0)
+ // Thursday in current week decides the year.
+ date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7))
+ // January 4 is always in week 1.
+ const week = new Date(date.getFullYear(), 0, 4)
+ // Adjust to Thursday in week 1 and count number of weeks from date to week 1.
+ // Rounding should be fine for Daylight Saving Time. Its shift should never be more than 12 hours.
+ return 1 + Math.round(((date.getTime() - week.getTime()) / 86400000 - 3 + ((week.getDay() + 6) % 7)) / 7)
+}
+
+export function getItemClass(monthType: CalendarDayType, value: number | null | (number | null)[], type: CalendarType) {
+ const classList = ['is-' + monthType]
+
+ if (type.indexOf('range') > -1 && isArray(value)) {
+ if (!value || !value[1]) {
+ classList.push('is-without-end')
+ }
+ }
+
+ return classList.join(' ')
+}
diff --git a/uni_modules/wot-design-uni/components/wd-calendar-view/wd-calendar-view.vue b/uni_modules/wot-design-uni/components/wd-calendar-view/wd-calendar-view.vue
new file mode 100644
index 0000000..42512d2
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar-view/wd-calendar-view.vue
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-calendar-view/year/index.scss b/uni_modules/wot-design-uni/components/wd-calendar-view/year/index.scss
new file mode 100644
index 0000000..efb9874
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar-view/year/index.scss
@@ -0,0 +1,153 @@
+@import '../../common/abstracts/variable';
+@import '../../common/abstracts/mixin';
+
+.wot-theme-dark {
+ @include b(year) {
+ @include e(title) {
+ color: $-dark-color;
+ }
+
+ @include e(months) {
+ color: $-dark-color;
+ }
+
+ @include e(month) {
+
+ @include when(disabled) {
+ .wd-year__month-text {
+ color: $-dark-color-gray;
+ }
+ }
+ }
+ }
+}
+
+@include b(year) {
+ @include e(title) {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 45px;
+ font-size: $-calendar-panel-title-fs;
+ color: $-calendar-panel-title-color;
+ }
+
+ @include e(months) {
+ display: flex;
+ flex-wrap: wrap;
+ font-size: $-calendar-day-fs;
+ color: $-calendar-day-color;
+ }
+
+ @include e(month) {
+ position: relative;
+ width: 25%;
+ height: $-calendar-day-height;
+ line-height: $-calendar-day-height;
+ text-align: center;
+ margin-bottom: $-calendar-item-margin-bottom;
+
+ @include when(disabled) {
+ .wd-year__month-text {
+ color: $-calendar-disabled-color;
+ }
+ }
+
+ @include when(current) {
+ color: $-calendar-active-color;
+ }
+
+ @include when(selected) {
+ color: #fff;
+
+ .wd-year__month-text {
+ border-radius: $-calendar-active-border;
+ background: $-calendar-active-color;
+ }
+ }
+
+ @include when(middle) {
+ background: $-calendar-range-color;
+ }
+
+ @include when(start) {
+ color: $-calendar-selected-color;
+
+ &::after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ left: 50%;
+ bottom: 0;
+ content: '';
+ background: $-calendar-range-color;
+ }
+
+ .wd-year__month-text {
+ background: $-calendar-active-color;
+ border-radius: $-calendar-active-border 0 0 $-calendar-active-border;
+ }
+
+ &.is-without-end::after {
+ display: none;
+ }
+ }
+
+ @include when(end) {
+ color: $-calendar-selected-color;
+
+ &::after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 50%;
+ bottom: 0;
+ content: '';
+ background: $-calendar-range-color;
+ }
+
+ .wd-year__month-text {
+ background: $-calendar-active-color;
+ border-radius: 0 $-calendar-active-border $-calendar-active-border 0;
+ }
+ }
+
+ @include when(same) {
+ color: $-calendar-selected-color;
+
+ .wd-year__month-text {
+ background: $-calendar-active-color;
+ border-radius: $-calendar-active-border;
+ }
+ }
+ @include when(last-row){
+ margin-bottom: 0;
+ }
+ }
+
+ @include e(month-text) {
+ width: $-calendar-month-width;
+ margin: 0 auto;
+ text-align: center;
+ }
+
+ @include e(month-top) {
+ position: absolute;
+ top: 10px;
+ left: 0;
+ right: 0;
+ line-height: 1.1;
+ font-size: $-calendar-info-fs;
+ text-align: center;
+ }
+
+ @include e(month-bottom) {
+ position: absolute;
+ bottom: 10px;
+ left: 0;
+ right: 0;
+ line-height: 1.1;
+ font-size: $-calendar-info-fs;
+ text-align: center;
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-calendar-view/year/types.ts b/uni_modules/wot-design-uni/components/wd-calendar-view/year/types.ts
new file mode 100644
index 0000000..0df05ac
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar-view/year/types.ts
@@ -0,0 +1,20 @@
+import type { PropType } from 'vue'
+import { makeBooleanProp, makeRequiredProp } from '../../common/props'
+import type { CalendarFormatter, CalendarType } from '../types'
+
+export const yearProps = {
+ type: makeRequiredProp(String as PropType),
+ date: makeRequiredProp(Number),
+ value: makeRequiredProp([Number, Array] as PropType),
+ minDate: makeRequiredProp(Number),
+ maxDate: makeRequiredProp(Number),
+ // 日期格式化函数
+ formatter: Function as PropType,
+ maxRange: Number,
+ rangePrompt: String,
+ allowSameDay: makeBooleanProp(false),
+ defaultTime: {
+ type: [Array] as PropType>
+ },
+ showTitle: makeBooleanProp(true)
+}
diff --git a/uni_modules/wot-design-uni/components/wd-calendar-view/year/year.vue b/uni_modules/wot-design-uni/components/wd-calendar-view/year/year.vue
new file mode 100644
index 0000000..5657dce
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar-view/year/year.vue
@@ -0,0 +1,202 @@
+
+
+
+
+ {{ yearTitle(date) }}
+
+
+ {{ item.topInfo }}
+ {{ getMonthLabel(item.date) }}
+ {{ item.bottomInfo }}
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/index.scss b/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/index.scss
new file mode 100644
index 0000000..920778a
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/index.scss
@@ -0,0 +1,24 @@
+@import '../../common/abstracts/variable';
+@import '../../common/abstracts/mixin';
+
+.wot-theme-dark {
+ @include b(year-panel) {
+ @include e(title) {
+ color: $-dark-color;
+ box-shadow: 0px 4px 8px 0 rgba(255, 255,255, 0.02);
+ }
+ }
+}
+
+@include b(year-panel) {
+ font-size: $-calendar-fs;
+ padding: $-calendar-panel-padding;
+
+ @include e(title) {
+ padding: 5px 0;
+ text-align: center;
+ font-size: $-calendar-panel-title-fs;
+ color: $-calendar-panel-title-color;
+ box-shadow: 0px 4px 8px 0 rgba(0, 0, 0, 0.02);
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/types.ts b/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/types.ts
new file mode 100644
index 0000000..6e60b01
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/types.ts
@@ -0,0 +1,38 @@
+import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
+import { makeBooleanProp, makeRequiredProp } from '../../common/props'
+import type { CalendarFormatter, CalendarType } from '../types'
+
+/**
+ * 月份信息
+ */
+export interface YearInfo {
+ date: number
+ height: number
+}
+
+export const yearPanelProps = {
+ type: makeRequiredProp(String as PropType),
+ value: makeRequiredProp([Number, Array] as PropType),
+ minDate: makeRequiredProp(Number),
+ maxDate: makeRequiredProp(Number),
+ formatter: Function as PropType,
+ maxRange: Number,
+ rangePrompt: String,
+ allowSameDay: makeBooleanProp(false),
+ showPanelTitle: makeBooleanProp(false),
+ defaultTime: {
+ type: [Array] as PropType>
+ },
+ panelHeight: makeRequiredProp(Number)
+}
+
+export type YearPanelProps = ExtractPropTypes
+
+export type YearPanelExpose = {
+ /**
+ * 使当前日期或者选中日期滚动到可视区域
+ */
+ scrollIntoView: () => void
+}
+
+export type YearPanelInstance = ComponentPublicInstance
diff --git a/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/year-panel.vue b/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/year-panel.vue
new file mode 100644
index 0000000..8c48c89
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar-view/yearPanel/year-panel.vue
@@ -0,0 +1,135 @@
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-calendar/index.scss b/uni_modules/wot-design-uni/components/wd-calendar/index.scss
new file mode 100644
index 0000000..f6476bc
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar/index.scss
@@ -0,0 +1,245 @@
+@import '../common/abstracts/variable';
+@import '../common/abstracts/mixin';
+
+.wot-theme-dark {
+ @include b(calendar) {
+ @include e(cell) {
+ background-color: $-dark-background2;
+ color: $-dark-color;
+ }
+
+ @include e(label) {
+ color: $-dark-color;
+ }
+
+ @include e(value) {
+ color: $-dark-color;
+ }
+
+ @include e(title) {
+ color: $-dark-color;
+ }
+
+ :deep(.wd-calendar__arrow),
+ :deep(.wd-calendar__close) {
+ color: $-dark-color;
+ }
+
+
+ @include when(border) {
+ .wd-calendar__cell {
+ @include halfPixelBorder('top', $-cell-padding, $-dark-border-color);
+ }
+ }
+
+ @include e(range-label-item) {
+ color: $-dark-color;
+
+ @include when(placeholder) {
+ color: $-dark-color-gray;
+ }
+ }
+
+ @include e(range-sperator) {
+ color: $-dark-color-gray;
+ }
+ }
+}
+
+@include b(calendar) {
+ @include when(border) {
+ .wd-calendar__cell {
+ @include halfPixelBorder('top', $-cell-padding);
+ }
+ }
+
+ @include e(cell) {
+ position: relative;
+ display: flex;
+ padding: $-cell-wrapper-padding $-cell-padding;
+ align-items: flex-start;
+ background-color: $-color-white;
+ text-decoration: none;
+ color: $-cell-title-color;
+ font-size: $-cell-title-fs;
+ overflow: hidden;
+ line-height: $-cell-line-height;
+ }
+
+ @include e(cell) {
+ @include when(disabled) {
+ .wd-calendar__value {
+ color: $-input-disabled-color;
+ }
+ }
+
+ @include when(align-right) {
+ .wd-calendar__value {
+ text-align: right;
+ }
+ }
+
+ @include when(error) {
+ .wd-calendar__value {
+ color: $-input-error-color;
+ }
+
+ :deep(.wd-calendar__arrow) {
+ color: $-input-error-color;
+ }
+ }
+
+ @include when(large) {
+ font-size: $-cell-title-fs-large;
+
+ :deep(.wd-calendar__arrow) {
+ font-size: $-cell-icon-size-large;
+ }
+ }
+
+ @include when(center) {
+ align-items: center;
+
+ :deep(.wd-calendar__arrow) {
+ margin-top: 0;
+ }
+ }
+ }
+
+ @include e(error-message){
+ color: $-form-item-error-message-color;
+ font-size: $-form-item-error-message-font-size;
+ line-height: $-form-item-error-message-line-height;
+ text-align: left;
+ vertical-align: middle;
+ }
+
+ @include e(label) {
+ position: relative;
+ width: $-input-cell-label-width;
+ margin-right: $-cell-padding;
+ color: $-cell-title-color;
+ box-sizing: border-box;
+
+ @include when(required) {
+ padding-left: 12px;
+
+ &::after {
+ position: absolute;
+ left: 0;
+ top: 2px;
+ content: '*';
+ font-size: $-cell-required-size;
+ line-height: 1.1;
+ color: $-cell-required-color;
+ }
+ }
+ }
+
+ @include e(value-wraper) {
+ display: flex;
+ }
+
+ @include e(value) {
+ flex: 1;
+ margin-right: 10px;
+ color: $-cell-value-color;
+
+ @include when(ellipsis) {
+ @include lineEllipsis;
+ }
+
+ @include m(placeholder) {
+ color: $-input-placeholder-color;
+ }
+ }
+
+ @include e(body) {
+ flex: 1;
+ }
+
+ @include edeep(arrow) {
+ display: block;
+ font-size: $-cell-icon-size;
+ color: $-cell-arrow-color;
+ line-height: $-cell-line-height;
+ }
+
+ @include e(header) {
+ position: relative;
+ overflow: hidden;
+ }
+
+ @include e(title) {
+ color: $-action-sheet-color;
+ height: $-action-sheet-title-height;
+ line-height: $-action-sheet-title-height;
+ text-align: center;
+ font-size: $-action-sheet-title-fs;
+ font-weight: $-action-sheet-weight;
+ }
+
+ @include edeep(close) {
+ position: absolute;
+ top: $-action-sheet-close-top;
+ right: $-action-sheet-close-right;
+ color: $-action-sheet-close-color;
+ font-size: $-action-sheet-close-fs;
+ transform: rotate(-45deg);
+ line-height: 1.1;
+ }
+
+ @include e(tabs) {
+ width: 222px;
+ margin: 10px auto 12px;
+ }
+
+ @include e(shortcuts) {
+ padding: 20px 0;
+ text-align: center;
+ }
+
+ @include edeep(tag) {
+ margin-right: 8px;
+ }
+
+ @include e(view) {
+ @include when(show-confirm) {
+ height: 394px;
+
+ @include when(range) {
+ height: 384px;
+ }
+ }
+ }
+
+ @include e(range-label) {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 14px;
+
+ @include when(monthrange) {
+ padding-bottom: 10px;
+ box-shadow: 0px 4px 8px 0 rgba(0, 0, 0, 0.02);
+ }
+ }
+
+ @include e(range-label-item) {
+ flex: 1;
+ color: rgba(0, 0, 0, 0.85);
+
+ @include when(placeholder) {
+ color: rgba(0, 0, 0, 0.25);
+ }
+ }
+
+ @include e(range-sperator) {
+ margin: 0 24px;
+ color: rgba(0, 0, 0, 0.25);
+ }
+
+ @include e(confirm) {
+ padding: 12px 25px 14px;
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-calendar/types.ts b/uni_modules/wot-design-uni/components/wd-calendar/types.ts
new file mode 100644
index 0000000..4ff17ad
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar/types.ts
@@ -0,0 +1,214 @@
+/*
+ * @Author: weisheng
+ * @Date: 2024-03-15 20:40:34
+ * @LastEditTime: 2024-12-08 19:13:33
+ * @LastEditors: weisheng
+ * @Description:
+ * @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-calendar/types.ts
+ * 记得注释
+ */
+import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
+import { baseProps, makeArrayProp, makeBooleanProp, makeNumberProp, makeRequiredProp, makeStringProp } from '../common/props'
+import type { CalendarFormatter, CalendarTimeFilter, CalendarType } from '../wd-calendar-view/types'
+import type { FormItemRule } from '../wd-form/types'
+
+export const calendarProps = {
+ ...baseProps,
+ /**
+ * 选中值,为 13 位时间戳或时间戳数组
+ */
+ modelValue: makeRequiredProp([Number, Array, null] as PropType),
+ /**
+ * 日期类型,可选值:date / dates / datetime / week / month / daterange / datetimerange / weekrange / monthrange
+ */
+ type: makeStringProp('date'),
+ /**
+ * 最小日期,为 13 位时间戳
+ */
+ minDate: makeNumberProp(new Date(new Date().getFullYear(), new Date().getMonth() - 6, new Date().getDate()).getTime()),
+ /**
+ * 最大日期,为 13 位时间戳
+ */
+ maxDate: makeNumberProp(new Date(new Date().getFullYear(), new Date().getMonth() + 6, new Date().getDate(), 23, 59, 59).getTime()),
+ /**
+ * 周起始天
+ */
+ firstDayOfWeek: makeNumberProp(0),
+ /**
+ * 日期格式化函数
+ */
+ formatter: Function as PropType,
+ /**
+ * type 为范围选择时有效,最大日期范围
+ */
+ maxRange: Number,
+ /**
+ * type 为范围选择时有效,选择超出最大日期范围时的错误提示文案
+ */
+ rangePrompt: String,
+ /**
+ * type 为范围选择时有效,是否允许选择同一天
+ */
+ allowSameDay: makeBooleanProp(false),
+ /**
+ * 选中日期所使用的当日内具体时刻
+ */
+ defaultTime: {
+ type: [String, Array] as PropType
+ },
+ /**
+ * type 为 'datetime' 或 'datetimerange' 时有效,用于过滤时间选择器的数据
+ */
+ timeFilter: Function as PropType,
+ /**
+ * type 为 'datetime' 或 'datetimerange' 时有效,是否不展示秒修改
+ */
+ hideSecond: makeBooleanProp(false),
+ /**
+ * 选择器左侧文案
+ */
+ label: String,
+ /**
+ * 设置左侧标题宽度
+ */
+ labelWidth: String,
+ /**
+ * 禁用
+ */
+ disabled: makeBooleanProp(false),
+ /**
+ * 只读
+ */
+ readonly: makeBooleanProp(false),
+ /**
+ * 选择器占位符
+ */
+ placeholder: String,
+ /**
+ * 弹出层标题
+ */
+ title: String,
+ /**
+ * 选择器的值靠右展示
+ */
+ alignRight: makeBooleanProp(false),
+ /**
+ * 是否为错误状态,错误状态时右侧内容为红色
+ */
+ error: makeBooleanProp(false),
+ /**
+ * 是否必填
+ */
+ required: makeBooleanProp(false),
+ /**
+ * 设置选择器大小,可选值:large
+ */
+ size: String,
+ /**
+ * 是否垂直居中
+ */
+ center: makeBooleanProp(false),
+ /**
+ * 点击遮罩是否关闭
+ */
+ closeOnClickModal: makeBooleanProp(true),
+ /**
+ * 弹框层级
+ */
+ zIndex: makeNumberProp(15),
+ /**
+ * 是否显示确定按钮
+ */
+ showConfirm: makeBooleanProp(true),
+ /**
+ * 确定按钮文字
+ */
+ confirmText: String,
+ /**
+ * 自定义展示文案的格式化函数,返回一个字符串
+ */
+ displayFormat: Function as PropType,
+ /**
+ * 自定义范围选择类型的面板内部回显,返回一个字符串
+ */
+ innerDisplayFormat: Function as PropType,
+ /**
+ * 是否超出隐藏
+ */
+ ellipsis: makeBooleanProp(false),
+ /**
+ * 是否显示类型切换功能
+ */
+ showTypeSwitch: makeBooleanProp(false),
+ /**
+ * 快捷选项,为对象数组,其中对象的 text 必传
+ */
+ shortcuts: makeArrayProp>(),
+ /**
+ * 快捷操作点击回调
+ */
+ onShortcutsClick: Function as PropType,
+ /**
+ * 弹出面板是否设置底部安全距离(iphone X 类型的机型)
+ */
+ safeAreaInsetBottom: makeBooleanProp(true),
+ /**
+ * 确定前校验函数,接收 { value, resolve } 参数,通过 resolve 继续执行,resolve 接收 1 个 boolean 参数
+ */
+ beforeConfirm: Function as PropType,
+ /**
+ * 表单域 model 字段名,在使用表单校验功能的情况下,该属性是必填的
+ */
+ prop: String,
+ /**
+ * 表单验证规则,结合wd-form组件使用
+ */
+ rules: makeArrayProp(),
+ customViewClass: makeStringProp(''),
+ /**
+ * label 外部自定义样式
+ */
+ customLabelClass: makeStringProp(''),
+ /**
+ * value 外部自定义样式
+ */
+ customValueClass: makeStringProp(''),
+ /**
+ * 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。
+ */
+ immediateChange: makeBooleanProp(false),
+ /**
+ * 是否使用内置单元格
+ * 默认为 true,使用内置单元格
+ */
+ withCell: makeBooleanProp(true)
+}
+
+export type CalendarDisplayFormat = (value: number | number[], type: CalendarType) => string
+
+export type CalendarInnerDisplayFormat = (value: number, rangeType: 'start' | 'end', type: CalendarType) => string
+
+export type CalendarBeforeConfirmOption = {
+ value: number | number[] | null
+ resolve: (isPass: boolean) => void
+}
+
+export type CalendarBeforeConfirm = (option: CalendarBeforeConfirmOption) => void
+
+export type CalendarOnShortcutsClickOption = {
+ item: Record
+ index: number
+}
+
+export type CalendarOnShortcutsClick = (option: CalendarOnShortcutsClickOption) => number | number[]
+
+export type CalendarExpose = {
+ /** 关闭时间选择器弹窗 */
+ close: () => void
+ /** 打开时间选择器弹窗 */
+ open: () => void
+}
+
+export type CalendarProps = ExtractPropTypes
+
+export type CalendarInstance = ComponentPublicInstance
diff --git a/uni_modules/wot-design-uni/components/wd-calendar/wd-calendar.vue b/uni_modules/wot-design-uni/components/wd-calendar/wd-calendar.vue
new file mode 100644
index 0000000..865ebe5
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-calendar/wd-calendar.vue
@@ -0,0 +1,443 @@
+
+
+
+
+
+
+ {{ label }}
+
+
+
+
+ {{ showValue || placeholder || translate('placeholder') }}
+
+
+
+ {{ errorMessage }}
+
+
+
+
+
+
+
+
+ {{ rangeLabel[0] }}
+
+ /
+
+ {{ rangeLabel[1] }}
+
+
+
+
+
+ {{ confirmText || translate('confirm') }}
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-card/index.scss b/uni_modules/wot-design-uni/components/wd-card/index.scss
new file mode 100644
index 0000000..ee6562c
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-card/index.scss
@@ -0,0 +1,71 @@
+@import "../common/abstracts/variable.scss";
+@import "../common/abstracts/_mixin.scss";
+.wot-theme-dark {
+ @include b(card) {
+ background-color: $-dark-background2;
+
+ @include when(rectangle) {
+
+ .wd-card__content {
+ @include halfPixelBorder('top', 0, $-dark-border-color);
+ }
+ .wd-card__footer {
+ @include halfPixelBorder('top', 0, $-dark-border-color);
+ }
+ }
+
+ @include e(title-content) {
+ color: $-dark-color;
+ }
+ @include e(content) {
+ color: $-dark-color3;
+ }
+ }
+}
+
+@include b(card) {
+ padding: $-card-padding;
+ background-color: $-card-bg;
+ line-height: $-card-line-height;
+ margin: $-card-margin;
+ border-radius: $-card-radius;
+ box-shadow: $-card-shadow-color;
+ font-size: $-card-fs;
+ margin-bottom: 12px;
+
+ @include when(rectangle) {
+ margin-left: 0;
+ margin-right: 0;
+ border-radius: 0;
+ box-shadow: none;
+
+ .wd-card__title-content {
+ font-size: $-card-fs;
+ }
+ .wd-card__content {
+ position: relative;
+ padding: $-card-rectangle-content-padding;
+
+ @include halfPixelBorder('top', 0, $-card-content-border-color);
+ }
+ .wd-card__footer {
+ position: relative;
+ padding: $-card-rectangle-footer-padding;
+
+ @include halfPixelBorder('top', 0, $-card-content-border-color);
+ }
+ }
+ @include e(title-content) {
+ padding: 16px 0;
+ color: $-card-title-color;
+ font-size: $-card-title-fs;
+ }
+ @include e(content) {
+ color: $-card-content-color;
+ line-height: $-card-content-line-height;
+ }
+ @include e(footer) {
+ padding: $-card-footer-padding;
+ text-align: right;
+ }
+}
diff --git a/uni_modules/wot-design-uni/components/wd-card/types.ts b/uni_modules/wot-design-uni/components/wd-card/types.ts
new file mode 100644
index 0000000..8ee91f2
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-card/types.ts
@@ -0,0 +1,30 @@
+import type { ExtractPropTypes, PropType } from 'vue'
+import { baseProps, makeStringProp } from '../common/props'
+
+export type CardType = 'rectangle'
+
+export const cardProps = {
+ ...baseProps,
+ /**
+ * 卡片类型
+ */
+ type: String as PropType,
+ /**
+ * 卡片标题
+ */
+ title: String,
+ /**
+ * 标题自定义样式
+ */
+ customTitleClass: makeStringProp(''),
+ /**
+ * 内容自定义样式
+ */
+ customContentClass: makeStringProp(''),
+ /**
+ * 底部自定义样式
+ */
+ customFooterClass: makeStringProp('')
+}
+
+export type CardProps = ExtractPropTypes
diff --git a/uni_modules/wot-design-uni/components/wd-card/wd-card.vue b/uni_modules/wot-design-uni/components/wd-card/wd-card.vue
new file mode 100644
index 0000000..01ba71e
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-card/wd-card.vue
@@ -0,0 +1,37 @@
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-cell-group/index.scss b/uni_modules/wot-design-uni/components/wd-cell-group/index.scss
new file mode 100644
index 0000000..983f8ff
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-cell-group/index.scss
@@ -0,0 +1,56 @@
+@import '../common/abstracts/variable.scss';
+@import '../common/abstracts/_mixin.scss';
+
+.wot-theme-dark {
+ @include b(cell-group) {
+ background-color: $-dark-background2;
+
+ @include when(border) {
+ .wd-cell-group__title {
+ @include halfPixelBorder('bottom', 0, $-dark-border-color);
+ }
+ }
+
+ @include e(title) {
+ background: $-dark-background2;
+ color: $-dark-color;
+ }
+
+ @include e(right) {
+ color: $-dark-color3;
+ }
+
+ @include e(body) {
+ background: $-dark-background2;
+ }
+
+ }
+}
+
+@include b(cell-group) {
+ background-color: $-color-white;
+
+ @include when(border) {
+ .wd-cell-group__title {
+ @include halfPixelBorder;
+ }
+ }
+ @include e(title) {
+ position: relative;
+ display: flex;
+ justify-content: space-between;
+ padding: $-cell-group-padding;
+ background: $-color-white;
+ font-size: $-cell-group-title-fs;
+ color: $-cell-group-title-color;
+ font-weight: $-fw-medium;
+ line-height: 1.43;
+ }
+ @include e(right) {
+ color: $-cell-group-value-color;
+ font-size: $-cell-group-value-fs;
+ }
+ @include e(body) {
+ background: $-color-white;
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-cell-group/types.ts b/uni_modules/wot-design-uni/components/wd-cell-group/types.ts
new file mode 100644
index 0000000..f24a773
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-cell-group/types.ts
@@ -0,0 +1,41 @@
+/*
+ * @Author: weisheng
+ * @Date: 2023-12-14 11:21:58
+ * @LastEditTime: 2024-03-18 13:57:14
+ * @LastEditors: weisheng
+ * @Description:
+ * @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-cell-group\types.ts
+ * 记得注释
+ */
+import { type ExtractPropTypes, type InjectionKey } from 'vue'
+import { baseProps, makeBooleanProp } from '../common/props'
+
+export type CelllGroupProvide = {
+ props: {
+ border?: boolean
+ }
+}
+
+export const CELL_GROUP_KEY: InjectionKey = Symbol('wd-cell-group')
+
+export const cellGroupProps = {
+ ...baseProps,
+ /**
+ * 分组标题
+ */
+ title: String,
+ /**
+ * 分组右侧内容
+ */
+ value: String,
+ /**
+ * 分组启用插槽
+ */
+ useSlot: makeBooleanProp(false),
+ /**
+ * 是否展示边框线
+ */
+ border: makeBooleanProp(false)
+}
+
+export type CellGroupProps = ExtractPropTypes
diff --git a/uni_modules/wot-design-uni/components/wd-cell-group/wd-cell-group.vue b/uni_modules/wot-design-uni/components/wd-cell-group/wd-cell-group.vue
new file mode 100644
index 0000000..71aa7fe
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-cell-group/wd-cell-group.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+ {{ title }}
+
+
+
+
+ {{ value }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-cell/index.scss b/uni_modules/wot-design-uni/components/wd-cell/index.scss
new file mode 100644
index 0000000..f8e7987
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-cell/index.scss
@@ -0,0 +1,188 @@
+@import '../common/abstracts/variable.scss';
+@import '../common/abstracts/_mixin.scss';
+
+.wot-theme-dark {
+ @include b(cell) {
+ background-color: $-dark-background2;
+ color: $-dark-color;
+
+ @include e(value) {
+ color: $-dark-color3;
+ }
+
+ @include e(label) {
+ color: $-dark-color3;
+ }
+
+ @include when(hover) {
+ background-color: $-dark-background4;
+ }
+
+ @include when(border) {
+ .wd-cell__wrapper {
+ @include halfPixelBorder('top', 0, $-dark-border-color);
+ }
+ }
+
+ :deep(.wd-cell__arrow-right) {
+ color: $-dark-color;
+ }
+ }
+}
+
+@include b(cell) {
+ position: relative;
+ padding-left: $-cell-padding;
+ background-color: $-color-white;
+ text-decoration: none;
+ color: $-cell-title-color;
+ line-height: $-cell-line-height;
+ -webkit-tap-highlight-color: transparent;
+
+ @include when(border) {
+ .wd-cell__wrapper {
+ @include halfPixelBorder('top');
+ }
+ }
+
+ @include e(wrapper) {
+ position: relative;
+ display: flex;
+ padding: $-cell-wrapper-padding $-cell-padding $-cell-wrapper-padding 0;
+ justify-content: space-between;
+ align-items: flex-start;
+
+ @include when(vertical) {
+ display: block;
+
+ .wd-cell__right {
+ margin-top: $-cell-vertical-top;
+ }
+
+ .wd-cell__value {
+ text-align: left;
+ }
+
+ .wd-cell__left {
+ margin-right: 0;
+ }
+ }
+
+ @include when(label) {
+ padding: $-cell-wrapper-padding-with-label $-cell-padding $-cell-wrapper-padding-with-label 0;
+ }
+ }
+
+ @include e(left) {
+ position: relative;
+ flex: 1;
+ display: flex;
+ text-align: left;
+ font-size: $-cell-title-fs;
+ box-sizing: border-box;
+ margin-right: $-cell-padding;
+
+ @include when(required) {
+ padding-left: 12px;
+
+ &::after {
+ position: absolute;
+ content: '*';
+ top: 0;
+ left: 0;
+ font-size: $-cell-required-size;
+ color: $-cell-required-color;
+ }
+ }
+ }
+
+ @include e(right) {
+ position: relative;
+ flex: 1;
+ }
+
+ @include e(title) {
+ flex: 1;
+ width: 100%;
+ font-size: $-cell-title-fs;
+ }
+
+ @include e(label) {
+ margin-top: 2px;
+ font-size: $-cell-label-fs;
+ color: $-cell-label-color;
+ }
+
+ @include edeep(icon) {
+ display: block;
+ position: relative;
+ margin-right: $-cell-icon-right;
+ font-size: $-cell-icon-size;
+ height: $-cell-line-height;
+ line-height: $-cell-line-height;
+ }
+
+ @include e(body){
+ display: flex;
+ }
+
+ @include e(value) {
+ position: relative;
+ flex: 1;
+ font-size: $-cell-value-fs;
+ color: $-cell-value-color;
+ text-align: right;
+ vertical-align: middle;
+ }
+
+ @include edeep(arrow-right) {
+ display: block;
+ margin-left: 8px;
+ width: $-cell-arrow-size;
+ font-size: $-cell-arrow-size;
+ color: $-cell-arrow-color;
+ height: $-cell-line-height;
+ line-height: $-cell-line-height;
+ }
+
+ @include e(error-message){
+ color: $-form-item-error-message-color;
+ font-size: $-form-item-error-message-font-size;
+ line-height: $-form-item-error-message-line-height;
+ text-align: left;
+ vertical-align: middle;
+ }
+
+ @include when(link) {
+ -webkit-tap-highlight-color: $-cell-tap-bg;
+ }
+
+ @include when(hover) {
+ background-color: $-cell-tap-bg;
+ }
+
+ @include when(large) {
+ .wd-cell__title {
+ font-size: $-cell-title-fs-large;
+ }
+
+ .wd-cell__wrapper {
+ padding-top: $-cell-wrapper-padding-large;
+ padding-bottom: $-cell-wrapper-padding-large;
+ }
+
+ .wd-cell__label {
+ font-size: $-cell-label-fs-large;
+ }
+
+ :deep(.wd-cell__icon) {
+ font-size: $-cell-icon-size-large;
+ }
+ }
+
+ @include when(center) {
+ .wd-cell__wrapper {
+ align-items: center;
+ }
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-cell/types.ts b/uni_modules/wot-design-uni/components/wd-cell/types.ts
new file mode 100644
index 0000000..7b9e6e0
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-cell/types.ts
@@ -0,0 +1,90 @@
+import type { ExtractPropTypes } from 'vue'
+import { baseProps, makeArrayProp, makeBooleanProp, makeStringProp, makeNumericProp } from '../common/props'
+
+import { type FormItemRule } from '../wd-form/types'
+
+export const cellProps = {
+ ...baseProps,
+ /**
+ * 标题
+ */
+ title: String,
+ /**
+ * 右侧内容
+ */
+ value: makeNumericProp(''),
+ /**
+ * 图标类名
+ */
+ icon: String,
+ /**
+ * 描述信息
+ */
+ label: String,
+ /**
+ * 是否为跳转链接
+ */
+ isLink: makeBooleanProp(false),
+ /**
+ * 跳转地址
+ */
+ to: String,
+ /**
+ * 跳转时是否替换栈顶页面
+ */
+ replace: makeBooleanProp(false),
+ /**
+ * 开启点击反馈,is-link 默认开启
+ */
+ clickable: makeBooleanProp(false),
+ /**
+ * 设置单元格大小,可选值:large
+ */
+ size: String,
+ /**
+ * 是否展示边框线
+ */
+ border: makeBooleanProp(void 0),
+ /**
+ * 设置左侧标题宽度
+ */
+ titleWidth: String,
+ /**
+ * 是否垂直居中,默认顶部居中
+ */
+ center: makeBooleanProp(false),
+ /**
+ * 是否必填
+ */
+ required: makeBooleanProp(false),
+ /**
+ * 表单属性,上下结构
+ */
+ vertical: makeBooleanProp(false),
+ /**
+ * 表单域 model 字段名,在使用表单校验功能的情况下,该属性是必填的
+ */
+ prop: String,
+ /**
+ * 表单验证规则,结合wd-form组件使用
+ */
+ rules: makeArrayProp(),
+ /**
+ * icon 使用 slot 时的自定义样式
+ */
+ customIconClass: makeStringProp(''),
+ /**
+ * label 使用 slot 时的自定义样式
+ */
+ customLabelClass: makeStringProp(''),
+ /**
+ * value 使用 slot 时的自定义样式
+ */
+ customValueClass: makeStringProp(''),
+ /**
+ * title 使用 slot 时的自定义样式
+ */
+ customTitleClass: makeStringProp('')
+}
+
+export type CellProps = ExtractPropTypes
diff --git a/uni_modules/wot-design-uni/components/wd-cell/wd-cell.vue b/uni_modules/wot-design-uni/components/wd-cell/wd-cell.vue
new file mode 100644
index 0000000..5b59ce3
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-cell/wd-cell.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
+
+
+ {{ value }}
+
+
+
+
+
+ {{ errorMessage }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-checkbox-group/index.scss b/uni_modules/wot-design-uni/components/wd-checkbox-group/index.scss
new file mode 100644
index 0000000..09d22aa
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-checkbox-group/index.scss
@@ -0,0 +1,20 @@
+@import "./../common/abstracts/_mixin.scss";
+@import "./../common/abstracts/variable.scss";
+
+.wot-theme-dark {
+ @include b(checkbox-group) {
+ background-color: $-dark-background2;
+ }
+}
+@include b(checkbox-group) {
+ background-color: $-checkbox-bg;
+
+ // 上下20px 左右15px 内部间隔12px
+ @include when(button) {
+ width: 100%;
+ padding: 8px 3px 20px 15px;
+ box-sizing: border-box;
+ overflow: hidden;
+ height: auto;
+ }
+}
diff --git a/uni_modules/wot-design-uni/components/wd-checkbox-group/types.ts b/uni_modules/wot-design-uni/components/wd-checkbox-group/types.ts
new file mode 100644
index 0000000..e1785df
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-checkbox-group/types.ts
@@ -0,0 +1,59 @@
+import { type ExtractPropTypes, type InjectionKey, type PropType } from 'vue'
+import type { CheckShape } from '../wd-checkbox/types'
+import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props'
+
+export type RequiredModelValue = {
+ modelValue: Array
+}
+
+export type checkboxGroupProvide = {
+ props: Partial> & RequiredModelValue
+ changeSelectState: (value: string | number | boolean) => void
+}
+
+export const CHECKBOX_GROUP_KEY: InjectionKey = Symbol('wd-checkbox-group')
+
+export const checkboxGroupProps = {
+ ...baseProps,
+ /**
+ * 绑定值
+ */
+ modelValue: {
+ type: Array as PropType>,
+ default: () => []
+ },
+ /**
+ * 表单模式
+ */
+ cell: makeBooleanProp(false),
+ /**
+ * 单选框形状,可选值:circle / square / button
+ */
+ shape: makeStringProp('circle'),
+ /**
+ * 选中的颜色
+ */
+ checkedColor: String,
+ /**
+ * 禁用
+ */
+ disabled: makeBooleanProp(false),
+ /**
+ * 最小选中的数量
+ */
+ min: makeNumberProp(0),
+ /**
+ * 最大选中的数量,0 为无限数量,默认为 0
+ */
+ max: makeNumberProp(0),
+ /**
+ * 同行展示
+ */
+ inline: makeBooleanProp(false),
+ /**
+ * 设置大小,可选值:large
+ */
+ size: String
+}
+
+export type CheckboxGroupProps = ExtractPropTypes
diff --git a/uni_modules/wot-design-uni/components/wd-checkbox-group/wd-checkbox-group.vue b/uni_modules/wot-design-uni/components/wd-checkbox-group/wd-checkbox-group.vue
new file mode 100644
index 0000000..c6fef2c
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-checkbox-group/wd-checkbox-group.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-checkbox/index.scss b/uni_modules/wot-design-uni/components/wd-checkbox/index.scss
new file mode 100644
index 0000000..e188d32
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-checkbox/index.scss
@@ -0,0 +1,285 @@
+@import "./../common/abstracts/_mixin.scss";
+@import "./../common/abstracts/variable.scss";
+
+.wot-theme-dark {
+ @include b(checkbox) {
+ @include e(shape) {
+ background: transparent;
+ border-color: $-checkbox-border-color;
+ color: $-checkbox-check-color;
+ }
+
+ @include e(label) {
+ color: $-dark-color;
+ }
+
+ @include when(disabled) {
+ .wd-checkbox__shape {
+ border-color: $-dark-color-gray;
+ background: $-dark-background4;
+ }
+
+ .wd-checkbox__label {
+ color: $-dark-color-gray;
+ }
+
+ :deep(.wd-checkbox__check) {
+ color: $-dark-color-gray;
+ }
+
+ @include when(checked) {
+ .wd-checkbox__shape {
+ color: $-dark-color-gray;
+ }
+
+ .wd-checkbox__label {
+ color: $-dark-color-gray;
+ }
+ }
+
+ @include when(button) {
+
+ .wd-checkbox__label {
+ border-color: #c8c9cc;
+ background: #3a3a3c;
+ color: $-dark-color-gray;
+ }
+
+ @include when(checked) {
+ .wd-checkbox__label {
+ border-color: #c8c9cc;
+ background: #3a3a3c;
+ color: #c8c9cc;
+ }
+ }
+ }
+ }
+
+ @include when(button) {
+ .wd-checkbox__label {
+ background-color: $-dark-background;
+ }
+
+ @include when(checked) {
+ .wd-checkbox__label {
+ background-color: $-dark-background2;
+ }
+ }
+ }
+
+ }
+}
+
+@include b(checkbox) {
+ display: block;
+ margin-bottom: $-checkbox-margin;
+ font-size: 0;
+ -webkit-tap-highlight-color: transparent;
+ line-height: 1.2;
+
+ @include when(last-child) {
+ margin-bottom: 0;
+ }
+
+ @include e(shape) {
+ position: relative;
+ display: inline-block;
+ width: $-checkbox-size;
+ height: $-checkbox-size;
+ border: 2px solid $-checkbox-border-color;
+ border-radius: 50%;
+ color: $-checkbox-check-color;
+ background: $-checkbox-bg;
+ vertical-align: middle;
+ transition: background 0.2s;
+ box-sizing: border-box;
+
+ @include when(square) {
+ border-radius: $-checkbox-square-radius;
+ }
+ }
+
+ @include e(input) {
+ position: absolute;
+ width: 0;
+ height: 0;
+ margin: 0;
+ opacity: 0;
+ }
+
+ @include edeep(btn-check) {
+ display: inline-block;
+ font-size: $-checkbox-icon-size;
+ margin-right: 4px;
+ vertical-align: middle;
+ }
+
+ @include e(txt) {
+ display: inline-block;
+ vertical-align: middle;
+ line-height: 20px;
+ @include lineEllipsis;
+ }
+
+ @include e(label) {
+ position: relative;
+ display: inline-block;
+ margin-left: $-checkbox-label-margin;
+ vertical-align: middle;
+ font-size: $-checkbox-label-fs;
+ color: $-checkbox-label-color;
+ }
+
+ @include edeep(check) {
+ color: $-checkbox-check-color;
+ font-size: $-checkbox-icon-size;
+ opacity: 0;
+ transition: opacity 0.2s;
+ }
+
+ @include when(checked) {
+ .wd-checkbox__shape {
+ color: $-checkbox-checked-color;
+ background: currentColor;
+ border-color: currentColor;
+ }
+
+ :deep(.wd-checkbox__check) {
+ opacity: 1;
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ }
+ }
+
+ @include when(button) {
+ display: inline-block;
+ margin-bottom: 0;
+ margin-right: $-checkbox-margin;
+ vertical-align: top;
+ font-size: $-checkbox-button-font-size;
+
+ @include when(last-child) {
+ margin-right: 0;
+ }
+
+ .wd-checkbox__shape {
+ width: 0;
+ height: 0;
+ overflow: hidden;
+ opacity: 0;
+ border: none;
+ }
+
+ .wd-checkbox__label {
+ display: inline-flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ min-width: $-checkbox-button-min-width;
+ height: $-checkbox-button-height;
+ font-size: $-checkbox-button-font-size;
+ margin-left: 0;
+ padding: 5px 15px;
+ border: 1px solid $-checkbox-button-border;
+ background-color: $-checkbox-button-bg;
+ border-radius: $-checkbox-button-radius;
+ transition: color 0.2s, border 0.2s;
+ box-sizing: border-box;
+ }
+
+ @include when(checked) {
+ .wd-checkbox__label {
+ color: $-checkbox-checked-color;
+ background-color: $-checkbox-bg;
+ border-color: $-checkbox-checked-color;
+ border-color: currentColor;
+ }
+ }
+ }
+
+ @include when(inline) {
+ display: inline-block;
+ margin-bottom: 0;
+ margin-right: $-checkbox-margin;
+
+ @include when(last-child) {
+ margin-right: 0;
+ }
+ }
+
+ @include when(disabled) {
+ .wd-checkbox__shape {
+ border-color: $-checkbox-border-color;
+ background: $-checkbox-disabled-check-bg;
+ }
+
+ .wd-checkbox__label {
+ color: $-checkbox-disabled-label-color;
+ }
+
+ @include when(checked) {
+ .wd-checkbox__shape {
+ color: $-checkbox-disabled-check-color;
+ }
+
+ .wd-checkbox__label {
+ color: $-checkbox-disabled-label-color;
+ }
+ }
+
+ @include when(button) {
+ .wd-checkbox__label {
+ background: $-checkbox-disabled-color;
+ border-color: $-checkbox-button-border;
+ color: $-checkbox-disabled-label-color;
+ }
+
+ @include when(checked) {
+ .wd-checkbox__label {
+ border-color: $-checkbox-button-disabled-border;
+ }
+ }
+ }
+ }
+
+ // 以下内容用于解决父子组件样式隔离的问题 —— START
+ @include when(cell-box) {
+ padding: 13px 15px;
+ margin: 0;
+
+ @include when(large) {
+ padding: 14px 15px;
+ }
+ }
+
+ @include when(button-box) {
+ display: inline-flex;
+ width: 33.3333%;
+ padding: 12px 12px 0 0;
+ box-sizing: border-box;
+
+ .wd-checkbox__label {
+ width: 100%;
+ }
+
+ &:last-child::after {
+ content: "";
+ display: table;
+ clear: both;
+ }
+ }
+
+ @include when(large) {
+ .wd-checkbox__shape {
+ width: $-checkbox-large-size;
+ height: $-checkbox-large-size;
+ font-size: $-checkbox-large-size;
+ }
+
+ .wd-checkbox__label {
+ font-size: $-checkbox-large-label-fs;
+ }
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-checkbox/types.ts b/uni_modules/wot-design-uni/components/wd-checkbox/types.ts
new file mode 100644
index 0000000..86bafc7
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-checkbox/types.ts
@@ -0,0 +1,68 @@
+import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
+import { baseProps, makeStringProp } from '../common/props'
+
+export type CheckShape = 'circle' | 'square' | 'button'
+
+export const checkboxProps = {
+ ...baseProps,
+ customLabelClass: makeStringProp(''),
+ customShapeClass: makeStringProp(''),
+ /**
+ * 单选框选中时的值
+ */
+ modelValue: {
+ type: [String, Number, Boolean],
+ required: true,
+ default: false
+ },
+ /**
+ * 单选框形状,可选值:circle / square / button
+ */
+ shape: {
+ type: String as PropType
+ },
+ /**
+ * 选中的颜色
+ */
+ checkedColor: String,
+ /**
+ * 禁用
+ */
+ disabled: {
+ type: [Boolean, null] as PropType,
+ default: null
+ },
+ /**
+ * 选中值,在 checkbox-group 中使用无效,需同 false-value 一块使用
+ */
+ trueValue: {
+ type: [String, Number, Boolean],
+ default: true
+ },
+ /**
+ * 非选中时的值,在 checkbox-group 中使用无效,需同 true-value 一块使用
+ */
+ falseValue: {
+ type: [String, Number, Boolean],
+ default: false
+ },
+ /**
+ * 设置大小,可选值:large
+ */
+ size: String,
+ /**
+ * 文字位置最大宽度
+ */
+ maxWidth: String
+}
+
+export type CheckboxProps = ExtractPropTypes
+
+export type CheckboxExpose = {
+ /**
+ * 切换当前选中状态
+ */
+ toggle: () => void
+}
+
+export type CheckboxInstance = ComponentPublicInstance
diff --git a/uni_modules/wot-design-uni/components/wd-checkbox/wd-checkbox.vue b/uni_modules/wot-design-uni/components/wd-checkbox/wd-checkbox.vue
new file mode 100644
index 0000000..d46c8fe
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-checkbox/wd-checkbox.vue
@@ -0,0 +1,177 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-circle/index.scss b/uni_modules/wot-design-uni/components/wd-circle/index.scss
new file mode 100644
index 0000000..dc7d13e
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-circle/index.scss
@@ -0,0 +1,18 @@
+@import "../common/abstracts/variable.scss";
+@import "../common/abstracts/_mixin.scss";
+
+@include b(circle) {
+ position: relative;
+ display: inline-block;
+ text-align: center;
+
+ @include e(text) {
+ position: absolute;
+ z-index: 1;
+ top: 50%;
+ left: 0;
+ width: 100%;
+ transform: translateY(-50%);
+ color: $-circle-text-color;
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-circle/types.ts b/uni_modules/wot-design-uni/components/wd-circle/types.ts
new file mode 100644
index 0000000..881ef73
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-circle/types.ts
@@ -0,0 +1,54 @@
+import type { ExtractPropTypes, PropType } from 'vue'
+import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props'
+
+// 进度条端点的形状,可选值为 "butt" | "round" | "square"
+export type StrokeLinecapType = 'butt' | 'round' | 'square'
+
+export const circleProps = {
+ ...baseProps,
+ /**
+ * 当前进度
+ */
+ modelValue: makeNumberProp(0),
+ /**
+ * 圆环直径,默认单位为 px
+ */
+ size: makeNumberProp(100),
+ /**
+ * 进度条颜色,传入对象格式可以定义渐变色
+ */
+ color: {
+ type: [String, Object] as PropType>,
+ default: '#4d80f0'
+ },
+ /**
+ * 轨道颜色
+ */
+ layerColor: makeStringProp('#EBEEF5'),
+ /**
+ * 填充颜色
+ */
+ fill: String,
+ /**
+ * 动画速度(单位为 rate/s)
+ */
+ speed: makeNumberProp(50),
+ /**
+ * 文字
+ */
+ text: String,
+ /**
+ * 进度条宽度 单位px
+ */
+ strokeWidth: makeNumberProp(10),
+ /**
+ * 进度条端点的形状,可选值为 "butt" | "round" | "square"
+ */
+ strokeLinecap: makeStringProp('round'),
+ /**
+ * 是否顺时针增加
+ */
+ clockwise: makeBooleanProp(true)
+}
+
+export type CircleProps = ExtractPropTypes
diff --git a/uni_modules/wot-design-uni/components/wd-circle/wd-circle.vue b/uni_modules/wot-design-uni/components/wd-circle/wd-circle.vue
new file mode 100644
index 0000000..f810752
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-circle/wd-circle.vue
@@ -0,0 +1,296 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ text }}
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-col-picker/index.scss b/uni_modules/wot-design-uni/components/wd-col-picker/index.scss
new file mode 100644
index 0000000..9c16527
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-col-picker/index.scss
@@ -0,0 +1,243 @@
+@import '../common/abstracts/variable';
+@import '../common/abstracts/mixin';
+
+.wot-theme-dark {
+ @include b(col-picker) {
+
+ @include when(border) {
+ .wd-col-picker__cell {
+ @include halfPixelBorder('top', $-cell-padding, $-dark-border-color);
+ }
+ }
+
+ @include e(label) {
+ color: $-dark-color;
+ }
+
+ @include e(cell) {
+ background-color: $-dark-background2;
+ color: $-dark-color;
+
+ @include when(disabled) {
+ .wd-col-picker__value {
+ color: $-dark-color3;
+ }
+ }
+ }
+
+ @include e(list-item) {
+
+ @include when(disabled) {
+ color: $-dark-color3;
+ }
+ }
+
+ @include e(list-item-tip) {
+ color: $-dark-color-gray;
+ }
+
+ @include e(value) {
+ color: $-dark-color;
+
+ @include m(placeholder) {
+ color: $-dark-color-gray;
+ }
+ }
+
+ :deep(.wd-col-picker__arrow) {
+ color: $-dark-color;
+ }
+
+ @include e(list) {
+ color: $-dark-color;
+ }
+
+ @include e(selected) {
+ color: $-dark-color;
+ }
+ }
+}
+
+@include b(col-picker) {
+ @include when(border) {
+ .wd-col-picker__cell {
+ @include halfPixelBorder('top', $-cell-padding);
+ }
+ }
+ @include e(cell) {
+ position: relative;
+ display: flex;
+ padding: $-cell-wrapper-padding $-cell-padding;
+ align-items: flex-start;
+ background-color: $-color-white;
+ text-decoration: none;
+ color: $-cell-title-color;
+ font-size: $-cell-title-fs;
+ overflow: hidden;
+ line-height: $-cell-line-height;
+ }
+ @include e(cell) {
+ @include when(disabled) {
+ .wd-col-picker__value {
+ color: $-input-disabled-color;
+ }
+ }
+ @include when(align-right) {
+ .wd-col-picker__value {
+ text-align: right;
+ }
+ }
+ @include when(error) {
+ .wd-col-picker__value {
+ color: $-input-error-color;
+ }
+ :deep(.wd-col-picker__arrow) {
+ color: $-input-error-color;
+ }
+ }
+ @include when(large) {
+ font-size: $-cell-title-fs-large;
+
+ :deep(.wd-col-picker__arrow) {
+ font-size: $-cell-icon-size-large;
+ }
+ }
+ }
+ @include e(error-message){
+ color: $-form-item-error-message-color;
+ font-size: $-form-item-error-message-font-size;
+ line-height: $-form-item-error-message-line-height;
+ text-align: left;
+ vertical-align: middle;
+ }
+ @include e(label) {
+ position: relative;
+ width: $-input-cell-label-width;
+ margin-right: $-cell-padding;
+ color: $-cell-title-color;
+ box-sizing: border-box;
+
+ @include when(required) {
+ padding-left: 12px;
+
+ &::after {
+ position: absolute;
+ left: 0;
+ top: 2px;
+ content: '*';
+ font-size: $-cell-required-size;
+ line-height: 1.1;
+ color: $-cell-required-color;
+ }
+ }
+ }
+ @include e(value-wraper) {
+ display: flex;
+ }
+ @include e(value) {
+ flex: 1;
+ margin-right: 10px;
+ color: $-cell-value-color;
+
+ @include when(ellipsis) {
+ @include lineEllipsis;
+ }
+ @include m(placeholder) {
+ color: $-input-placeholder-color;
+ }
+ }
+ @include e(body) {
+ flex: 1;
+ }
+ @include edeep(arrow) {
+ display: block;
+ font-size: $-cell-icon-size;
+ color: $-cell-arrow-color;
+ line-height: $-cell-line-height;
+ }
+ @include e(selected) {
+ height: $-col-picker-selected-height;
+ font-size: $-col-picker-selected-fs;
+ color: $-col-picker-selected-color;
+ overflow: hidden;
+ }
+ @include e(selected-container){
+ position: relative;
+ display: flex;
+ user-select: none;
+ }
+ @include e(selected-item) {
+ flex: 0 0 auto;
+ height: $-col-picker-selected-height;
+ line-height: $-col-picker-selected-height;
+ padding: $-col-picker-selected-padding;
+
+ @include when(selected) {
+ font-weight: $-col-picker-selected-fw;
+ }
+ }
+ @include e(selected-line) {
+ position: absolute;
+ bottom: 5px;
+ width: $-col-picker-line-width;
+ left: 0;
+ height: $-col-picker-line-height;
+ background: $-col-picker-line-color;
+ z-index: 1;
+ border-radius: calc($-col-picker-line-height / 2);
+ box-shadow: $-col-picker-line-box-shadow;
+ }
+ @include e(list-container){
+ position: relative;
+ }
+ @include e(list) {
+ height: $-col-picker-list-height;
+ padding-bottom: $-col-picker-list-padding-bottom;
+ box-sizing: border-box;
+ overflow: auto;
+ color: $-col-picker-list-color;
+ font-size: $-col-picker-list-fs;
+ -webkit-overflow-scrolling: touch;
+ }
+ @include e(list-item) {
+ display: flex;
+ padding: $-col-picker-list-item-padding;
+ align-items: flex-start;
+
+ @include when(selected) {
+ color: $-col-picker-list-color-checked;
+
+ :deep(.wd-col-picker__checked) {
+ opacity: 1;
+ }
+ }
+ @include when(disabled) {
+ color: $-col-picker-list-color-disabled;
+ }
+ }
+ @include e(list-item-label) {
+ line-height: 1.285;
+ }
+ @include e(list-item-tip) {
+ margin-top: 2px;
+ font-size: $-col-picker-list-fs-tip;
+ color: $-col-picker-list-color-tip;
+ }
+ @include edeep(checked) {
+ display: block;
+ margin-left: 4px;
+ font-size: $-col-picker-list-checked-icon-size;
+ color: $-col-picker-list-color-checked;
+ opacity: 0;
+ }
+ @include e(loading) {
+ display: flex;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ align-items: center;
+ justify-content: center;
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-col-picker/types.ts b/uni_modules/wot-design-uni/components/wd-col-picker/types.ts
new file mode 100644
index 0000000..ceceda6
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-col-picker/types.ts
@@ -0,0 +1,158 @@
+import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
+import { baseProps, makeArrayProp, makeBooleanProp, makeNumberProp, makeRequiredProp, makeStringProp, numericProp } from '../common/props'
+import type { FormItemRule } from '../wd-form/types'
+
+export const colPickerProps = {
+ ...baseProps,
+ /**
+ * 选中项
+ */
+ modelValue: makeRequiredProp(Array as PropType>),
+ /**
+ * 选择器数据,二维数组
+ */
+ columns: makeArrayProp[]>(),
+ /**
+ * 选择器左侧文案
+ */
+ label: String,
+ /**
+ * 设置左侧标题宽度
+ */
+ labelWidth: makeStringProp('33%'),
+ /**
+ * 使用 label 插槽时设置该选项
+ */
+ useLabelSlot: makeBooleanProp(false),
+ /**
+ * 使用默认插槽时设置该选项
+ */
+ useDefaultSlot: makeBooleanProp(false),
+ /**
+ * 禁用
+ */
+ disabled: makeBooleanProp(false),
+ /**
+ * 只读
+ */
+ readonly: makeBooleanProp(false),
+ /**
+ * 选择器占位符
+ */
+ placeholder: String,
+ /**
+ * 弹出层标题
+ */
+ title: String,
+ /**
+ * 接收当前列的选中项 item、当前列下标、当前列选中项下标下一列数据处理函数 resolve、结束选择 finish
+ */
+ columnChange: Function as PropType,
+ /**
+ * 自定义展示文案的格式化函数,返回一个字符串
+ */
+ displayFormat: Function as PropType,
+ /**
+ * 确定前校验函数,接收 (value, resolve) 参数,通过 resolve 继续执行 picker,resolve 接收 1 个 boolean 参数
+ */
+ beforeConfirm: Function as PropType,
+ /**
+ * 选择器的值靠右展示
+ */
+ alignRight: makeBooleanProp(false),
+ /**
+ * 是否为错误状态,错误状态时右侧内容为红色
+ */
+ error: makeBooleanProp(false),
+ /**
+ * 是否必填
+ */
+ required: makeBooleanProp(false),
+ /**
+ * 设置选择器大小,可选值:large
+ */
+ size: String,
+ /**
+ * 选项对象中,value 对应的 key
+ */
+ valueKey: makeStringProp('value'),
+ /**
+ * 选项对象中,展示的文本对应的 key
+ */
+ labelKey: makeStringProp('label'),
+ /**
+ * 选项对象中,提示文案对应的 key
+ */
+ tipKey: makeStringProp('tip'),
+ /**
+ * loading 图标的颜色
+ */
+ loadingColor: makeStringProp('#4D80F0'),
+ /**
+ * 点击遮罩是否关闭
+ */
+ closeOnClickModal: makeBooleanProp(true),
+ /**
+ * 自动触发 column-change 事件来补全数据,当 columns 为空数组或者 columns 数组长度小于 value 数组长度时,会自动触发 column-change
+ */
+ autoComplete: makeBooleanProp(false),
+ /**
+ * 弹窗层级
+ */
+ zIndex: makeNumberProp(15),
+ /**
+ * 弹出面板是否设置底部安全距离(iphone X 类型的机型)
+ */
+ safeAreaInsetBottom: makeBooleanProp(true),
+ /**
+ * 是否超出隐藏
+ */
+ ellipsis: makeBooleanProp(false),
+ /**
+ * 表单域 model 字段名,在使用表单校验功能的情况下,该属性是必填的
+ */
+ prop: String,
+ /**
+ * 表单验证规则,结合wd-form组件使用
+ */
+ rules: makeArrayProp(),
+ /**
+ * 底部条宽度,单位像素
+ */
+ lineWidth: numericProp,
+ /**
+ * 底部条高度,单位像素
+ */
+ lineHeight: numericProp,
+ /**
+ * label 外部自定义样式
+ */
+ customViewClass: makeStringProp(''),
+ /**
+ * value 外部自定义样式
+ */
+ customLabelClass: makeStringProp(''),
+ customValueClass: makeStringProp('')
+}
+
+export type ColPickerProps = ExtractPropTypes
+
+export type ColPickerColumnChangeOption = {
+ selectedItem: Record
+ index: number
+ rowIndex: number
+ resolve: (nextColumn: Record[]) => void
+ finish: (isOk?: boolean) => void
+}
+export type ColPickerColumnChange = (option: ColPickerColumnChangeOption) => void
+export type ColPickerDisplayFormat = (selectedItems: Record[]) => string
+export type ColPickerBeforeConfirm = (value: (string | number)[], selectedItems: Record[], resolve: (isPass: boolean) => void) => void
+
+export type ColPickerExpose = {
+ // 关闭picker弹框
+ close: () => void
+ // 打开picker弹框
+ open: () => void
+}
+
+export type ColPickerInstance = ComponentPublicInstance
diff --git a/uni_modules/wot-design-uni/components/wd-col-picker/wd-col-picker.vue b/uni_modules/wot-design-uni/components/wd-col-picker/wd-col-picker.vue
new file mode 100644
index 0000000..8da41e4
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-col-picker/wd-col-picker.vue
@@ -0,0 +1,511 @@
+
+
+
+
+
+
+ {{ label }}
+
+
+
+
+
+ {{ showValue || placeholder || translate('placeholder') }}
+
+
+
+ {{ errorMessage }}
+
+
+
+
+
+
+
+
+ {{ selectShowList[colIndex] || translate('select') }}
+
+
+
+
+
+
+
+
+
+ {{ item[labelKey] }}
+ {{ item[tipKey] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-col/index.scss b/uni_modules/wot-design-uni/components/wd-col/index.scss
new file mode 100644
index 0000000..160b919
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-col/index.scss
@@ -0,0 +1,19 @@
+@import '../common/abstracts/variable';
+@import '../common/abstracts/mixin';
+
+$i: 1;
+
+@include b(col) {
+ float: left;
+ box-sizing: border-box;
+}
+
+@while $i <= 24 {
+ .wd-col__#{$i} {
+ width: calc(100% / 24 * $i);
+ }
+ .wd-col__offset-#{$i} {
+ margin-left: calc(100% / 24 * $i);
+ }
+ $i: $i + 1;
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-col/types.ts b/uni_modules/wot-design-uni/components/wd-col/types.ts
new file mode 100644
index 0000000..78c6a8a
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-col/types.ts
@@ -0,0 +1,15 @@
+import type { ExtractPropTypes } from 'vue'
+import { baseProps, makeNumberProp } from '../common/props'
+
+export const colProps = {
+ ...baseProps,
+ /**
+ * 列元素宽度
+ */
+ span: makeNumberProp(24),
+ /**
+ * 列元素偏移距离
+ */
+ offset: makeNumberProp(0)
+}
+export type ColProps = ExtractPropTypes
diff --git a/uni_modules/wot-design-uni/components/wd-col/wd-col.vue b/uni_modules/wot-design-uni/components/wd-col/wd-col.vue
new file mode 100644
index 0000000..c1eec23
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-col/wd-col.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-collapse-item/index.scss b/uni_modules/wot-design-uni/components/wd-collapse-item/index.scss
new file mode 100644
index 0000000..97f4655
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-collapse-item/index.scss
@@ -0,0 +1,90 @@
+@import '../common/abstracts/variable';
+@import '../common/abstracts/mixin';
+
+.wot-theme-dark {
+ @include b(collapse-item) {
+ @include halfPixelBorder('top', 0, $-dark-border-color);
+
+
+ @include e(title) {
+ color: $-dark-color;
+ }
+
+ @include e(body) {
+ color: $-dark-color3;
+ }
+
+ @include when(disabled) {
+ .wd-collapse-item__title {
+ color: $-dark-color-gray;
+ }
+ .wd-collapse-item__arrow {
+ color: $-dark-color-gray;
+ }
+ }
+ }
+}
+
+
+@include b(collapse-item) {
+ position: relative;
+ @include halfPixelBorder('top');
+
+
+ @include e(header) {
+ position: relative;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: $-collapse-header-padding;
+ overflow: hidden;
+ user-select: none;
+
+ @include when(expanded) {
+ @include halfPixelBorder('bottom');
+ }
+
+ @include when(custom) {
+ display: block;
+ }
+ }
+
+ @include e(title) {
+ color: $-collapse-title-color;
+ font-weight: $-fw-medium;
+ font-size: $-collapse-title-fs;
+ }
+
+ @include edeep(arrow) {
+ display: block;
+ font-size: $-collapse-arrow-size;
+ color: $-collapse-arrow-color;
+ transition: transform 0.3s;
+
+ @include when(retract) {
+ transform: rotate(-180deg);
+ }
+ }
+
+ @include e(wrapper) {
+ position: relative;
+ overflow: hidden;
+ will-change: height;
+ }
+
+ @include e(body) {
+ color: $-collapse-body-color;
+ font-size: $-collapse-body-fs;
+ padding: $-collapse-body-padding;
+ line-height: 1.43;
+ }
+
+ @include when(disabled) {
+ .wd-collapse-item__title {
+ color: $-collapse-disabled-color;
+ }
+ .wd-collapse-item__arrow {
+ color: $-collapse-disabled-color;
+ }
+ }
+}
diff --git a/uni_modules/wot-design-uni/components/wd-collapse-item/types.ts b/uni_modules/wot-design-uni/components/wd-collapse-item/types.ts
new file mode 100644
index 0000000..07b28f6
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-collapse-item/types.ts
@@ -0,0 +1,48 @@
+import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
+import { baseProps, makeBooleanProp, makeRequiredProp, makeStringProp } from '../common/props'
+
+export type CollapseItemBeforeExpand = (name: string) => boolean | Promise
+
+export const collapseItemProps = {
+ ...baseProps,
+ /**
+ * 自定义折叠栏内容容器样式类名
+ */
+ customBodyClass: makeStringProp(''),
+ /**
+ * 自定义折叠栏内容容器样式
+ */
+ customBodyStyle: makeStringProp(''),
+ /**
+ * 折叠栏的标题, 可通过 slot 传递自定义内容
+ */
+ title: makeStringProp(''),
+ /**
+ * 禁用折叠栏
+ */
+ disabled: makeBooleanProp(false),
+ /**
+ * 折叠栏的标识符
+ */
+ name: makeRequiredProp(String),
+ /**
+ * 打开前的回调函数,返回 false 可以阻止打开,支持返回 Promise
+ */
+ beforeExpend: Function as PropType
+}
+
+export type CollapseItemProps = ExtractPropTypes
+
+export type CollapseItemExpose = {
+ /**
+ * 获取展开状态
+ * @returns boolean
+ */
+ getExpanded: () => boolean
+ /**
+ * 更新展开状态
+ */
+ updateExpand: () => Promise
+}
+
+export type CollapseItemInstance = ComponentPublicInstance
diff --git a/uni_modules/wot-design-uni/components/wd-collapse-item/wd-collapse-item.vue b/uni_modules/wot-design-uni/components/wd-collapse-item/wd-collapse-item.vue
new file mode 100644
index 0000000..2f1d123
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-collapse-item/wd-collapse-item.vue
@@ -0,0 +1,171 @@
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-collapse/index.scss b/uni_modules/wot-design-uni/components/wd-collapse/index.scss
new file mode 100644
index 0000000..552dc97
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-collapse/index.scss
@@ -0,0 +1,55 @@
+@import "../common/abstracts/variable";
+@import "../common/abstracts/mixin";
+
+.wot-theme-dark {
+ @include b(collapse) {
+ background: $-dark-background2;
+
+ @include e(content) {
+ color: $-dark-color3;
+ }
+ }
+}
+
+@include b(collapse) {
+ background: $-color-white;
+
+ @include when(viewmore) {
+ padding: $-collapse-side-padding;
+ }
+ @include e(content) {
+ font-size: $-collapse-body-fs;
+ color: $-collapse-body-color;
+
+ @include when(retract) {
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ font-size: $-collapse-retract-fs;
+ }
+ }
+ @include e(more) {
+ display: inline-block;
+ font-size: $-collapse-retract-fs;
+ margin-top: 8px;
+ color: $-collapse-more-color;
+ user-select: none;
+ }
+ @include e(more-txt) {
+ display: inline-block;
+ vertical-align: middle;
+ margin-right: 4px;
+ }
+ @include e(arrow) {
+ display: inline-block;
+ vertical-align: middle;
+ transition: transform 0.1s;
+ font-size: $-collapse-arrow-size;
+ height: $-collapse-arrow-size;
+ line-height: $-collapse-arrow-size;
+
+ @include when(retract) {
+ transform: rotate(-180deg);
+ }
+ }
+}
diff --git a/uni_modules/wot-design-uni/components/wd-collapse/types.ts b/uni_modules/wot-design-uni/components/wd-collapse/types.ts
new file mode 100644
index 0000000..e2057f8
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-collapse/types.ts
@@ -0,0 +1,58 @@
+import { type ComponentPublicInstance, type ExtractPropTypes, type InjectionKey, type PropType } from 'vue'
+import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props'
+
+export type CollapseToggleAllOptions =
+ | boolean
+ | {
+ expanded?: boolean
+ skipDisabled?: boolean
+ }
+
+export type CollapseProvide = {
+ props: Partial
+ toggle: (name: string, expanded: boolean) => void
+}
+
+export const COLLAPSE_KEY: InjectionKey = Symbol('wd-collapse')
+
+export const collapseProps = {
+ ...baseProps,
+ /**
+ * 查看更多模式下的插槽外部自定义样式
+ */
+ customMoreSlotClass: makeStringProp(''),
+ /**
+ * 绑定值
+ */
+ modelValue: {
+ type: [String, Array, Boolean] as PropType | boolean>
+ },
+ /**
+ * 手风琴模式
+ */
+ accordion: makeBooleanProp(false),
+ /**
+ * 查看更多的折叠面板
+ */
+ viewmore: makeBooleanProp(false),
+ /**
+ * 查看更多的自定义插槽使用标志
+ */
+ useMoreSlot: makeBooleanProp(false),
+ /**
+ * 查看更多的折叠面板,收起时的显示行数
+ */
+ lineNum: makeNumberProp(2)
+}
+
+export type CollapseProps = ExtractPropTypes
+
+export type CollapseExpose = {
+ /**
+ * 切换所有面板展开状态,传 true 为全部展开,false 为全部收起,不传参为全部切换
+ * @param options 面板状态
+ */
+ toggleAll: (options?: CollapseToggleAllOptions) => void
+}
+
+export type CollapseInstance = ComponentPublicInstance
diff --git a/uni_modules/wot-design-uni/components/wd-collapse/wd-collapse.vue b/uni_modules/wot-design-uni/components/wd-collapse/wd-collapse.vue
new file mode 100644
index 0000000..d39130d
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-collapse/wd-collapse.vue
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ !modelValue ? translate('expand') : translate('retract') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-config-provider/types.ts b/uni_modules/wot-design-uni/components/wd-config-provider/types.ts
new file mode 100644
index 0000000..8eb22e7
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-config-provider/types.ts
@@ -0,0 +1,1044 @@
+import type { ExtractPropTypes, PropType } from 'vue'
+import { makeStringProp, baseProps } from '../common/props'
+
+export type ConfigProviderTheme = 'light' | 'dark'
+
+export const configProviderProps = {
+ ...baseProps,
+ /**
+ * 主题风格,设置为 dark 来开启深色模式,全局生效
+ */
+ theme: makeStringProp('light'),
+ /**
+ * 自定义主题变量
+ */
+ themeVars: {
+ type: Object as PropType,
+ default: () => ({})
+ }
+}
+
+export type ConfigProviderProps = ExtractPropTypes
+
+export type baseThemeVars = {
+ colorTheme?: string // 主题色
+ colorWhite?: string // 用于mix的白色
+ colorBlack?: string // 用于mix的黑色
+ colorSuccess?: string // 成功色
+ colorWarning?: string // 警告色
+ colorDanger?: string // 危险出错色
+ colorPurple?: string // 紫色
+ colorYellow?: string // 黄色
+ colorBlue?: string // 蓝色
+ colorInfo?: string // 信息色
+ colorGray1?: string // 灰色1
+ colorGray2?: string // 灰色2
+ colorGray3?: string // 灰色3
+ colorGray4?: string // 灰色4
+ colorGray5?: string // 灰色5
+ colorGray6?: string // 灰色6
+ colorGray7?: string // 灰色7
+ colorGray8?: string // 灰色8
+ fontGray1?: string // 字体灰色1
+ fontGray2?: string // 字体灰色2
+ fontGray3?: string // 字体灰色3
+ fontGray4?: string // 字体灰色4
+ fontWhite1?: string // 字体白色1
+ fontWhite2?: string // 字体白色2
+ fontWhite3?: string // 字体白色3
+ fontWhite4?: string // 字体白色4
+ colorTitle?: string // 模块标题/重要正文
+ colorContent?: string // 普通正文
+ colorSecondary?: string // 次要信息,注释/补充/正文
+ colorAid?: string // 辅助文字字号,弱化信息,引导性/不可点文字
+ colorTip?: string // 失效、默认提示文字
+ colorBorder?: string // 控件边框线
+ colorBorderLight?: string // 分割线颜色
+ colorBg?: string // 背景色、禁用填充色
+ darkBackground?: string // 深色背景1
+ darkBackground2?: string // 深色背景2
+ darkBackground3?: string // 深色背景3
+ darkBackground4?: string // 深色背景4
+ darkBackground5?: string // 深色背景5
+ darkBackground6?: string // 深色背景6
+ darkBackground7?: string // 深色背景7
+ darkColor?: string // 深色字体1
+ darkColor2?: string // 深色字体2
+ darkColor3?: string // 深色字体3
+ darkColorGray?: string // 深色灰色
+ darkBorderColor?: string // 深色边框颜色
+ colorIcon?: string // icon颜色
+ colorIconActive?: string // icon颜色hover
+ colorIconDisabled?: string // icon颜色disabled
+ fsBig?: string // 大型标题字号
+ fsImportant?: string // 重要数据字号
+ fsTitle?: string // 标题字号/重要正文字号
+ fsContent?: string // 普通正文字号
+ fsSecondary?: string // 次要信息字号
+ fsAid?: string // 辅助文字字号
+ fwMedium?: string // 字重500
+ fwSemibold?: string // 字重600
+ sizeSidePadding?: string // 屏幕两边留白padding
+}
+
+export type actionSheetThemeVars = {
+ actionSheetWeight?: string
+ actionSheetRadius?: string
+ actionSheetLoadingSize?: string
+ actionSheetActionHeight?: string
+ actionSheetColor?: string
+ actionSheetFs?: string
+ actionSheetActiveColor?: string
+ actionSheetSubnameFs?: string
+ actionSheetSubnameColor?: string
+ actionSheetDisabledColor?: string
+ actionSheetBg?: string
+ actionSheetTitleHeight?: string
+ actionSheetTitleFs?: string
+ actionSheetCloseFs?: string
+ actionSheetCloseColor?: string
+ actionSheetCloseTop?: string
+ actionSheetCloseRight?: string
+ actionSheetCancelColor?: string
+ actionSheetCancelHeight?: string
+ actionSheetCancelBg?: string
+ actionSheetCancelRadius?: string
+ actionSheetPanelPadding?: string
+ actionSheetPanelImgFs?: string
+ actionSheetPanelImgRadius?: string
+}
+
+export type badgeThemeVars = {
+ badgeBg?: string
+ badgeColor?: string
+ badgeFs?: string
+ badgePadding?: string
+ badgeHeight?: string
+ badgePrimary?: string
+ badgeSuccess?: string
+ badgeWarning?: string
+ badgeDanger?: string
+ badgeInfo?: string
+ badgeDotSize?: string
+ badgeBorder?: string
+}
+
+export type buttonThemeVars = {
+ buttonDisabledOpacity?: string
+ buttonSmallHeight?: string
+ buttonSmallPadding?: string
+ buttonSmallFs?: string
+ buttonSmallRadius?: string
+ buttonSmallLoading?: string
+ buttonMediumHeight?: string
+ buttonMediumPadding?: string
+ buttonMediumFs?: string
+ buttonMediumRadius?: string
+ buttonMediumLoading?: string
+ buttonMediumBoxShadowSize?: string
+ buttonLargeHeight?: string
+ buttonLargePadding?: string
+ buttonLargeFs?: string
+ buttonLargeRadius?: string
+ buttonLargeLoading?: string
+ buttonLargeBoxShadowSize?: string
+ buttonIconFs?: string
+ buttonIconSize?: string
+ buttonIconColor?: string
+ buttonIconDisabledColor?: string
+ buttonNormalColor?: string
+ buttonNormalDisabledColor?: string
+ buttonPlainBgColor?: string
+ buttonPrimaryColor?: string
+ buttonPrimaryBgColor?: string
+ buttonSuccessColor?: string
+ buttonSuccessBgColor?: string
+ buttonInfoColor?: string
+ buttonInfoBgColor?: string
+ buttonInfoPlainBorderColor?: string
+ buttonInfoPlainNormalColor?: string
+ buttonWarningColor?: string
+ buttonWarningBgColor?: string
+ buttonErrorColor?: string
+ buttonErrorBgColor?: string
+ buttonTextHoverOpacity?: string
+}
+
+export type cellThemeVars = {
+ cellPadding?: string
+ cellLineHeight?: string
+ cellGroupTitleFs?: string
+ cellGroupPadding?: string
+ cellGroupTitleColor?: string
+ cellGroupValueFs?: string
+ cellGroupValueColor?: string
+ cellWrapperPadding?: string
+ cellWrapperPaddingLarge?: string
+ cellWrapperPaddingWithLabel?: string
+ cellIconRight?: string
+ cellIconSize?: string
+ cellTitleFs?: string
+ cellTitleColor?: string
+ cellLabelFs?: string
+ cellLabelColor?: string
+ cellValueFs?: string
+ cellValueColor?: string
+ cellArrowSize?: string
+ cellArrowColor?: string
+ cellClearColor?: string
+ cellTapBg?: string
+ cellTitleFsLarge?: string
+ cellLabelFsLarge?: string
+ cellIconSizeLarge?: string
+ cellRequiredColor?: string
+ cellRequiredSize?: string
+ cellVerticalTop?: string
+}
+
+export type calendarThemeVars = {
+ calendarFs?: string
+ calendarPanelPadding?: string
+ calendarPanelTitleFs?: string
+ calendarPanelTitleColor?: string
+ calendarWeekColor?: string
+ calendarWeekHeight?: string
+ calendarWeekFs?: string
+ calendarDayFs?: string
+ calendarDayColor?: string
+ calendarDayFw?: string
+ calendarDayHeight?: string
+ calendarMonthWidth?: string
+ calendarActiveColor?: string
+ calendarSelectedColor?: string
+ calendarDisabledColor?: string
+ calendarRangeColor?: string
+ calendarActiveBorder?: string
+ calendarInfoFs?: string
+ calendarItemMarginBottom?: string
+}
+
+export type checkboxThemeVars = {
+ checkboxMargin?: string
+ checkboxBg?: string
+ checkboxLabelMargin?: string
+ checkboxSize?: string
+ checkboxIconSize?: string
+ checkboxBorderColor?: string
+ checkboxCheckColor?: string
+ checkboxLabelFs?: string
+ checkboxLabelColor?: string
+ checkboxCheckedColor?: string
+ checkboxDisabledColor?: string
+ checkboxDisabledLabelColor?: string
+ checkboxDisabledCheckColor?: string
+ checkboxDisabledCheckBg?: string
+ checkboxSquareRadius?: string
+ checkboxLargeSize?: string
+ checkboxLargeLabelFs?: string
+ checkboxButtonHeight?: string
+ checkboxButtonMinWidth?: string
+ checkboxButtonRadius?: string
+ checkboxButtonBg?: string
+ checkboxButtonFontSize?: string
+ checkboxButtonBorder?: string
+ checkboxButtonDisabledBorder?: string
+}
+
+export type collapseThemeVars = {
+ collapseSidePadding?: string
+ collapseBodyPadding?: string
+ collapseHeaderPadding?: string
+ collapseTitleColor?: string
+ collapseTitleFs?: string
+ collapseArrowSize?: string
+ collapseArrowColor?: string
+ collapseBodyFs?: string
+ collapseBodyColor?: string
+ collapseDisabledColor?: string
+ collapseRetractFs?: string
+ collapseMoreColor?: string
+}
+
+export type dividerThemeVars = {
+ dividerPadding?: string
+ dividerMargin?: string
+ dividerColor?: string
+ dividerLineColor?: string
+ dividerLineHeight?: string
+ dividerFs?: string
+ dividerContentLeftWidth?: string
+ dividerContentLeftMargin?: string
+ dividerContentRightMargin?: string
+ dividerContentRightWidth?: string
+ dividerVerticalHeight?: string
+ dividerVerticalContentMargin?: string
+ dividerVerticalLineWidth?: string
+}
+
+export type dropMenuThemeVars = {
+ dropMenuHeight?: string
+ dropMenuColor?: string
+ dropMenuFs?: string
+ dropMenuArrowFs?: string
+ dropMenuSidePadding?: string
+ dropMenuDisabledColor?: string
+ dropMenuItemHeight?: string
+ dropMenuItemColor?: string
+ dropMenuItemFs?: string
+ dropMenuItemColorActive?: string
+ dropMenuItemColorTip?: string
+ dropMenuItemFsTip?: string
+ dropMenuOptionCheckSize?: string
+ dropMenuLineColor?: string
+ dropMenuLineHeight?: string
+}
+
+export type inputNumberThemeVars = {
+ inputNumberColor?: string
+ inputNumberBorderColor?: string
+ inputNumberDisabledColor?: string
+ inputNumberHeight?: string
+ inputNumberBtnWidth?: string
+ inputNumberInputWidth?: string
+ inputNumberRadius?: string
+ inputNumberFs?: string
+ inputNumberIconSize?: string
+ inputNumberIconColor?: string
+}
+
+export type inputThemeVars = {
+ inputPadding?: string
+ inputBorderColor?: string
+ inputNotEmptyBorderColor?: string
+ inputFs?: string
+ inputFsLarge?: string
+ inputIconMargin?: string
+ inputColor?: string
+ inputPlaceholderColor?: string
+ inputDisabledColor?: string
+ inputErrorColor?: string
+ inputIconColor?: string
+ inputClearColor?: string
+ inputCountColor?: string
+ inputCountCurrentColor?: string
+ inputBg?: string
+ inputCellBg?: string
+ inputCellBorderColor?: string
+ inputCellPadding?: string
+ inputCellPaddingLarge?: string
+ inputCellHeight?: string
+ inputCellLabelWidth?: string
+ inputInnerHeight?: string
+ inputInnerHeightNoBorder?: string
+ inputCountFs?: string
+ inputCountFsLarge?: string
+ inputIconSize?: string
+ inputIconSizeLarge?: string
+}
+
+export type textareaThemeVars = {
+ textareaPadding?: string
+ textareaBorderColor?: string
+ textareaNotEmptyBorderColor?: string
+ textareaFs?: string
+ textareaFsLarge?: string
+ textareaIconMargin?: string
+ textareaColor?: string
+ textareaIconColor?: string
+ textareaClearColor?: string
+ textareaCountColor?: string
+ textareaCountCurrentColor?: string
+ textareaBg?: string
+ textareaCellBorderColor?: string
+ textareaCellPadding?: string
+ textareaCellPaddingLarge?: string
+ textareaCellHeight?: string
+ textareaCountFs?: string
+ textareaCountFsLarge?: string
+ textareaIconSize?: string
+ textareaIconSizeLarge?: string
+}
+
+export type loadmoreThemeVars = {
+ loadmoreHeight?: string
+ loadmoreColor?: string
+ loadmoreFs?: string
+ loadmoreErrorColor?: string
+ loadmoreRefreshFs?: string
+ loadmoreLoadingSize?: string
+}
+
+export type messageBoxThemeVars = {
+ messageBoxWidth?: string
+ messageBoxBg?: string
+ messageBoxRadius?: string
+ messageBoxPadding?: string
+ messageBoxTitleFs?: string
+ messageBoxTitleColor?: string
+ messageBoxContentFs?: string
+ messageBoxContentColor?: string
+ messageBoxContentMaxHeight?: string
+ messageBoxContentScrollbarWidth?: string
+ messageBoxContentScrollbarColor?: string
+ messageBoxInputErrorColor?: string
+}
+
+export type noticeBarThemeVars = {
+ noticeBarFs?: string
+ noticeBarLineHeight?: string
+ noticeBarBorderRadius?: string
+ noticeBarPadding?: string
+ noticeBarWarningBg?: string
+ noticeBarInfoBg?: string
+ noticeBarDangerBg?: string
+ noticeBarWarningColor?: string
+ noticeBarInfoColor?: string
+ noticeBarDangerColor?: string
+ noticeBarPrefixSize?: string
+ noticeBarCloseBg?: string
+ noticeBarCloseSize?: string
+ noticeBarCloseColor?: string
+ noticeBarWrapPadding?: string
+}
+
+export type paginationThemeVars = {
+ paginationContentPadding?: string
+ paginationMessagePadding?: string
+ paginationMessageFs?: string
+ paginationMessageColor?: string
+ paginationNavBorder?: string
+ paginationNavBorderRadius?: string
+ paginationNavFs?: string
+ paginationNavWidth?: string
+ paginationNavColor?: string
+ paginationNavContentFs?: string
+ paginationNavSepatatorPadding?: string
+ paginationNavCurrentColor?: string
+ paginationIconSize?: string
+}
+
+export type pickerThemeVars = {
+ pickerToolbarHeight?: string
+ pickerActionHeight?: string
+ pickerToolbarFinishColor?: string
+ pickerToolbarCancelColor?: string
+ pickerToolbarFs?: string
+ pickerToolbarTitleColor?: string
+ pickerColumnFs?: string
+ pickerBg?: string
+ pickerColumnActiveFs?: string
+ pickerColumnColor?: string
+ pickerColumnHeight?: string
+ pickerColumnItemHeight?: string
+ pickerColumnSelectBg?: string
+ pickerLoadingButtonColor?: string
+ pickerColumnPadding?: string
+ pickerColumnDisabledColor?: string
+ pickerMask?: string
+ pickerLoadingBg?: string
+ pickerRegionSeparatorColor?: string
+ pickerCellArrowSizeLarge?: string
+ pickerRegionColor?: string
+ pickerRegionBgActiveColor?: string
+ pickerRegionFs?: string
+}
+
+export type colPickerThemeVars = {
+ colPickerSelectedHeight?: string
+ colPickerSelectedPadding?: string
+ colPickerSelectedFs?: string
+ colPickerSelectedColor?: string
+ colPickerSelectedFw?: string
+ colPickerLineWidth?: string
+ colPickerLineHeight?: string
+ colPickerLineColor?: string
+ colPickerLineBoxShadow?: string
+ colPickerListHeight?: string
+ colPickerListPaddingBottom?: string
+ colPickerListColor?: string
+ colPickerListColorDisabled?: string
+ colPickerListColorTip?: string
+ colPickerListFs?: string
+ colPickerListFsTip?: string
+ colPickerListItemPadding?: string
+ colPickerListCheckedIconSize?: string
+ colPickerListColorChecked?: string
+}
+
+export type overlayThemeVars = {
+ overlayBg?: string
+ overlayBgDark?: string
+}
+
+export type popupThemeVars = {
+ popupCloseSize?: string
+ popupCloseColor?: string
+}
+
+export type progressThemeVars = {
+ progressPadding?: string
+ progressBg?: string
+ progressDangerColor?: string
+ progressSuccessColor?: string
+ progressWarningColor?: string
+ progressColor?: string
+ progressHeight?: string
+ progressLabelColor?: string
+ progressLabelFs?: string
+ progressIconFs?: string
+}
+
+export type radioThemeVars = {
+ radioMargin?: string
+ radioLabelMargin?: string
+ radioSize?: string
+ radioBg?: string
+ radioLabelFs?: string
+ radioLabelColor?: string
+ radioCheckedColor?: string
+ radioDisabledColor?: string
+ radioDisabledLabelColor?: string
+ radioLargeSize?: string
+ radioLargeLabelFs?: string
+ radioButtonHeight?: string
+ radioButtonMinWidth?: string
+ radioButtonMaxWidth?: string
+ radioButtonRadius?: string
+ radioButtonBg?: string
+ radioButtonFs?: string
+ radioButtonBorder?: string
+ radioButtonDisabledBorder?: string
+ radioDotSize?: string
+ radioDotLargeSize?: string
+ radioDotCheckedBg?: string
+ radioDotCheckedBorderColor?: string
+ radioDotBorderColor?: string
+ radioDotDisabledBorder?: string
+ radioDotDisabledBg?: string
+}
+
+export type searchThemeVars = {
+ searchSidePadding?: string
+ searchPadding?: string
+ searchInputRadius?: string
+ searchInputBg?: string
+ searchInputHeight?: string
+ searchInputPadding?: string
+ searchInputFs?: string
+ searchInputColor?: string
+ searchIconColor?: string
+ searchIconSize?: string
+ searchClearIconSize?: string
+ searchPlaceholderColor?: string
+ searchCancelPadding?: string
+ searchCancelFs?: string
+ searchCancelColor?: string
+ searchLightBg?: string
+}
+
+export type sliderThemeVars = {
+ sliderFs?: string
+ sliderHandleRadius?: string
+ sliderHandleBg?: string
+ sliderAxieHeight?: string
+ sliderColor?: string
+ sliderAxieBg?: string
+ sliderLineColor?: string
+ sliderDisabledColor?: string
+}
+
+export type sortButtonThemeVars = {
+ sortButtonFs?: string
+ sortButtonColor?: string
+ sortButtonHeight?: string
+ sortButtonLineHeight?: string
+ sortButtonLineColor?: string
+}
+
+export type stepsThemeVars = {
+ stepsIconSize?: string
+ stepsInactiveColor?: string
+ stepsFinishedColor?: string
+ stepsIconTextFs?: string
+ stepsErrorColor?: string
+ stepsTitleFs?: string
+ stepsTitleFw?: string
+ stepsLabelFs?: string
+ stepsDescriptionColor?: string
+ stepsIsIconWidth?: string
+ stepsLineColor?: string
+ stepsDotSize?: string
+ stepsDotActiveSize?: string
+}
+
+export type switchThemeVars = {
+ switchSize?: string
+ switchWidth?: string
+ switchHeight?: string
+ switchCircleSize?: string
+ switchBorderColor?: string
+ switchActiveColor?: string
+ switchActiveShadowColor?: string
+ switchInactiveColor?: string
+ switchInactiveShadowColor?: string
+}
+
+export type tabsThemeVars = {
+ tabsNavArrowFs?: string
+ tabsNavArrowOpenFs?: string
+ tabsNavWidth?: string
+ tabsNavHeight?: string
+ tabsNavFs?: string
+ tabsNavColor?: string
+ tabsNavBg?: string
+ tabsNavActiveColor?: string
+ tabsNavDisabledColor?: string
+ tabsNavLineHeight?: string
+ tabsNavLineWidth?: string
+ tabsNavLineBgColor?: string
+ tabsNavMapFs?: string
+ tabsNavMapColor?: string
+ tabsNavMapArrowColor?: string
+ tabsNavMapBtnBeforeBg?: string
+ tabsNavMapButtonBackColor?: string
+ tabsNavMapButtonRadius?: string
+ tabsNavMapModalBg?: string
+}
+
+export type tagThemeVars = {
+ tagFs?: string
+ tagColor?: string
+ tagSmallFs?: string
+ tagInfoColor?: string
+ tagPrimaryColor?: string
+ tagDangerColor?: string
+ tagWarningColor?: string
+ tagSuccessColor?: string
+ tagInfoBg?: string
+ tagPrimaryBg?: string
+ tagDangerBg?: string
+ tagWarningBg?: string
+ tagSuccessBg?: string
+ tagRoundColor?: string
+ tagRoundBorderColor?: string
+ tagRoundRadius?: string
+ tagMarkRadius?: string
+ tagCloseSize?: string
+ tagCloseColor?: string
+ tagCloseActiveColor?: string
+}
+
+export type toastThemeVars = {
+ toastPadding?: string
+ toastMaxWidth?: string
+ toastRadius?: string
+ toastBg?: string
+ toastFs?: string
+ toastWithIconMinWidth?: string
+ toastIconSize?: string
+ toastIconMarginRight?: string
+ toastLoadingPadding?: string
+ toastBoxShadow?: string
+}
+
+export type loadingThemeVars = {
+ loadingSize?: string
+}
+
+export type tooltipThemeVars = {
+ tooltipBg?: string
+ tooltipColor?: string
+ tooltipRadius?: string
+ tooltipArrowSize?: string
+ tooltipFs?: string
+ tooltipBlur?: string
+ tooltipPadding?: string
+ tooltipCloseSize?: string
+ tooltipZIndex?: string
+ tooltipLineHeight?: string
+}
+
+export type popoverThemeVars = {
+ popoverBg?: string
+ popoverColor?: string
+ popoverBoxShadow?: string
+ popoverArrowBoxShadow?: string
+ popoverBorderColor?: string
+ popoverRadius?: string
+ popoverArrowSize?: string
+ popoverFs?: string
+ popoverPadding?: string
+ popoverLineHeight?: string
+ popoverZIndex?: string
+}
+
+export type gridItemThemeVars = {
+ gridItemFs?: string
+ gridItemBg?: string
+ gridItemPadding?: string
+ gridItemBorderColor?: string
+}
+
+export type statustipThemeVars = {
+ statustipFs?: string
+ statustipColor?: string
+ statustipLineHeight?: string
+ statustipPadding?: string
+}
+
+export type cardThemeVars = {
+ cardBg?: string
+ cardFs?: string
+ cardPadding?: string
+ cardFooterPadding?: string
+ cardShadowColor?: string
+ cardRadius?: string
+ cardLineHeight?: string
+ cardMargin?: string
+ cardTitleColor?: string
+ cardTitleFs?: string
+ cardContentBorderColor?: string
+ cardRectangleTitlePadding?: string
+ cardRectangleContentPadding?: string
+ cardRectangleFooterPadding?: string
+ cardContentColor?: string
+ cardContentLineHeight?: string
+ cardContentMargin?: string
+ cardContentRectangleMargin?: string
+}
+
+export type uploadThemeVars = {
+ uploadSize?: string
+ uploadEvokeIconSize?: string
+ uploadEvokeBg?: string
+ uploadEvokeColor?: string
+ uploadEvokeDisabledColor?: string
+ uploadCloseIconSize?: string
+ uploadCloseIconColor?: string
+ uploadProgressFs?: string
+ uploadFileFs?: string
+ uploadFileColor?: string
+ uploadPreviewNameFs?: string
+ uploadPreviewIconSize?: string
+ uploadPreviewNameBg?: string
+ uploadPreviewNameHeight?: string
+ uploadCoverIconSize?: string
+}
+
+export type curtainThemeVars = {
+ curtainContentRadius?: string
+ curtainContentCloseColor?: string
+ curtainContentCloseFs?: string
+}
+
+export type notifyThemeVars = {
+ notifyTextColor?: string
+ notifyPadding?: string
+ notifyFontSize?: string
+ notifyLineHeight?: string
+ notifyPrimaryBackground?: string
+ notifySuccessBackground?: string
+ notifyDangerBackground?: string
+ notifyWarningBackground?: string
+}
+
+export type skeletonThemeVars = {
+ skeletonBackgroundColor?: string
+ skeletonAnimationGradient?: string
+ skeletonAnimationFlashed?: string
+ skeletonTextHeightDefault?: string
+ skeletonRectHeightDefault?: string
+ skeletonCircleHeightDefault?: string
+ skeletonRowMarginBottom?: string
+ skeletonBorderRadiusText?: string
+ skeletonBorderRadiusRect?: string
+ skeletonBorderRadiusCircle?: string
+}
+
+export type circleThemeVars = {
+ circleTextColor?: string
+}
+
+export type swiperThemeVars = {
+ swiperRadius?: string
+ swiperItemPadding?: string
+ swiperItemTextColor?: string
+ swiperItemTextFs?: string
+}
+
+export type swiperNavThemeVars = {
+ swiperNavDotColor?: string
+ swiperNavDotActiveColor?: string
+ swiperNavDotSize?: string
+ swiperNavDotsBarActiveWidth?: string
+ swiperNavFractionColor?: string
+ swiperNavFractionBgColor?: string
+ swiperNavFractionHeight?: string
+ swiperNavFractionFontSize?: string
+ swiperNavBtnColor?: string
+ swiperNavBtnBgColor?: string
+ swiperNavBtnSize?: string
+}
+
+export type segmentedThemeVars = {
+ segmentedPadding?: string
+ segmentedItemBgColor?: string
+ segmentedItemColor?: string
+ segmentedItemAcitveBg?: string
+ segmentedItemDisabledColor?: string
+}
+
+export type tabbarThemeVars = {
+ tabbarHeight?: string
+ tabbarBoxShadow?: string
+}
+
+export type tabbarItemThemeVars = {
+ tabbarItemTitleFontSize?: string
+ tabbarItemTitleLineHeight?: string
+ tabbarInactiveColor?: string
+ tabbarActiveColor?: string
+ tabbarItemIconSize?: string
+}
+
+export type navbarThemeVars = {
+ navbarHeight?: string
+ navbarColor?: string
+ navbarBackground?: string
+ navbarArrowSize?: string
+ navbarDescFontSize?: string
+ navbarDescFontColor?: string
+ navbarTitleFontSize?: string
+ navbarTitleFontWeight?: string
+ navbarDisabledOpacity?: string
+ navbarHoverColor?: string
+}
+
+export type navbarCapsuleThemeVars = {
+ navbarCapsuleBorderColor?: string
+ navbarCapsuleBorderRadius?: string
+ navbarCapsuleWidth?: string
+ navbarCapsuleHeight?: string
+ navbarCapsuleIconSize?: string
+}
+
+export type tableThemeVars = {
+ tableColor?: string
+ tableBg?: string
+ tableStripeBg?: string
+ tableBorderColor?: string
+ tableFontSize?: string
+}
+
+export type sidebarThemeVars = {
+ sidebarBg?: string
+ sidebarWidth?: string
+ sidebarHeight?: string
+}
+
+export type sidebarItemThemeVars = {
+ sidebarColor?: string
+ sidebarItemHeight?: string
+ sidebarItemLineHeight?: string
+ sidebarDisabledColor?: string
+ sidebarActiveColor?: string
+ sidebarActiveBg?: string
+ sidebarHoverBg?: string
+ sidebarBorderRadius?: string
+ sidebarFontSize?: string
+ sidebarIconSize?: string
+ sidebarActiveBorderWidth?: string
+ sidebarActiveBorderHeight?: string
+}
+
+export type fabThemeVars = {
+ fabTriggerHeight?: string
+ fabTriggerWidth?: string
+ fabActionsPadding?: string
+ fabIconFs?: string
+}
+
+export type countDownThemeVars = {
+ countDownTextColor?: string
+ countDownFontSize?: string
+ countDownLineHeight?: string
+}
+
+export type keyboardThemeVars = {
+ keyboardKeyHeight?: string
+ keyboardKeyFontSize?: string
+ keyboardKeyBackground?: string
+ keyboardKeyBorderRadius?: string
+ keyboardDeleteFontSize?: string
+ keyboardKeyActiveColor?: string
+ keyboardButtonTextColor?: string
+ keyboardButtonBackground?: string
+ keyboardButtonActiveOpacity?: string
+ keyboardBackground?: string
+ keyboardTitleHeight?: string
+ keyboardTitleColor?: string
+ keyboardTitleFontSize?: string
+ keyboardClosePadding?: string
+ keyboardCloseColor?: string
+ keyboardCloseFontSize?: string
+ keyboardIconSize?: string
+}
+
+export type numberKeyboardThemeVars = {
+ numberKeyboardKeyHeight?: string
+ numberKeyboardKeyFontSize?: string
+ numberKeyboardKeyBackground?: string
+ numberKeyboardKeyBorderRadius?: string
+ numberKeyboardDeleteFontSize?: string
+ numberKeyboardKeyActiveColor?: string
+ numberKeyboardButtonTextColor?: string
+ numberKeyboardButtonBackground?: string
+ numberKeyboardButtonActiveOpacity?: string
+ numberKeyboardBackground?: string
+ numberKeyboardTitleHeight?: string
+ numberKeyboardTitleColor?: string
+ numberKeyboardTitleFontSize?: string
+ numberKeyboardClosePadding?: string
+ numberKeyboardCloseColor?: string
+ numberKeyboardCloseFontSize?: string
+ numberKeyboardIconSize?: string
+}
+
+export type passwodInputThemeVars = {
+ passwordInputHeight?: string
+ passwordInputMargin?: string
+ passwordInputFontSize?: string
+ passwordInputRadius?: string
+ passwordInputBackground?: string
+ passwordInputInfoColor?: string
+ passwordInputInfoFontSize?: string
+ passwordInputBorderColor?: string
+ passwordInputErrorInfoColor?: string
+ passwordInputDotSize?: string
+ passwordInputDotColor?: string
+ passwordInputTextColor?: string
+ passwordInputCursorColor?: string
+ passwordInputCursorWidth?: string
+ passwordInputCursorHeight?: string
+ passwordInputCursorDuration?: string
+}
+
+export type formItemThemeVars = {
+ formItemErrorMessageColor?: string
+ formItemErrorMessageFontSize?: string
+ formItemErrorMessageLineHeight?: string
+}
+
+export type backtopThemeVars = {
+ backtopBg?: string
+ backtopIconSize?: string
+}
+
+export type indexBarThemeVars = {
+ indexBarIndexFontSize?: string
+}
+
+export type textThemeVars = {
+ textInfoColor?: string
+ textPrimaryColor?: string
+ textErrorColor?: string
+ textWarningColor?: string
+ textSuccessColor?: string
+}
+
+export type videoPreviewThemeVars = {
+ videoPreviewBg?: string
+ videoPreviewCloseColor?: string
+ videoPreviewCloseFontSize?: string
+}
+
+export type imgCropperThemeVars = {
+ imgCropperIconSize?: string
+ imgCropperIconColor?: string
+}
+
+export type floatingPanelThemeVars = {
+ floatingPanelBg?: string
+ floatingPanelRadius?: string
+ floatingPanelZIndex?: string
+ floatingPanelHeaderHeight?: string
+ floatingPanelBarWidth?: string
+ floatingPanelBarHeight?: string
+ floatingPanelBarBg?: string
+ floatingPanelBarRadius?: string
+ floatingPanelContentBg?: string
+}
+
+export type signatureThemeVars = {
+ signatureBg?: string
+ signatureRadius?: string
+ signatureBorder?: string
+ signatureFooterMarginTop?: string
+ signatureButtonMarginLeft?: string
+}
+
+export type ConfigProviderThemeVars = baseThemeVars &
+ actionSheetThemeVars &
+ badgeThemeVars &
+ buttonThemeVars &
+ cellThemeVars &
+ calendarThemeVars &
+ checkboxThemeVars &
+ collapseThemeVars &
+ dividerThemeVars &
+ dropMenuThemeVars &
+ inputNumberThemeVars &
+ inputThemeVars &
+ textareaThemeVars &
+ loadmoreThemeVars &
+ messageBoxThemeVars &
+ noticeBarThemeVars &
+ paginationThemeVars &
+ pickerThemeVars &
+ colPickerThemeVars &
+ overlayThemeVars &
+ popupThemeVars &
+ progressThemeVars &
+ radioThemeVars &
+ searchThemeVars &
+ sliderThemeVars &
+ sortButtonThemeVars &
+ stepsThemeVars &
+ switchThemeVars &
+ tabsThemeVars &
+ tagThemeVars &
+ toastThemeVars &
+ loadingThemeVars &
+ tooltipThemeVars &
+ popoverThemeVars &
+ gridItemThemeVars &
+ statustipThemeVars &
+ cardThemeVars &
+ uploadThemeVars &
+ curtainThemeVars &
+ notifyThemeVars &
+ skeletonThemeVars &
+ circleThemeVars &
+ swiperThemeVars &
+ swiperNavThemeVars &
+ segmentedThemeVars &
+ tabbarThemeVars &
+ tabbarItemThemeVars &
+ navbarThemeVars &
+ navbarCapsuleThemeVars &
+ tableThemeVars &
+ sidebarThemeVars &
+ sidebarItemThemeVars &
+ fabThemeVars &
+ countDownThemeVars &
+ keyboardThemeVars &
+ numberKeyboardThemeVars &
+ passwodInputThemeVars &
+ formItemThemeVars &
+ backtopThemeVars &
+ indexBarThemeVars &
+ textThemeVars &
+ videoPreviewThemeVars &
+ imgCropperThemeVars &
+ floatingPanelThemeVars &
+ signatureThemeVars
diff --git a/uni_modules/wot-design-uni/components/wd-config-provider/wd-config-provider.vue b/uni_modules/wot-design-uni/components/wd-config-provider/wd-config-provider.vue
new file mode 100644
index 0000000..e53774c
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-config-provider/wd-config-provider.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-count-down/index.scss b/uni_modules/wot-design-uni/components/wd-count-down/index.scss
new file mode 100644
index 0000000..c9b93f1
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-count-down/index.scss
@@ -0,0 +1,15 @@
+@import '../common/abstracts/variable';
+@import '../common/abstracts/mixin';
+
+.wot-theme-dark {
+ @include b(count-down) {
+ color: $-dark-color;
+ }
+}
+
+
+@include b(count-down) {
+ color: $-count-down-text-color;
+ font-size: $-count-down-font-size;
+ line-height: $-count-down-line-height;
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-count-down/types.ts b/uni_modules/wot-design-uni/components/wd-count-down/types.ts
new file mode 100644
index 0000000..7f1bdd7
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-count-down/types.ts
@@ -0,0 +1,41 @@
+import type { ComponentPublicInstance, ExtractPropTypes } from 'vue'
+import { baseProps, makeBooleanProp, makeRequiredProp, makeStringProp } from '../common/props'
+
+export const countDownProps = {
+ ...baseProps,
+ /**
+ * 倒计时时长,单位毫秒
+ */
+ time: makeRequiredProp(Number),
+ /**
+ * 是否开启毫秒
+ */
+ millisecond: makeBooleanProp(false),
+ /**
+ * 格式化时间
+ */
+ format: makeStringProp('HH:mm:ss'),
+ /**
+ * 是否自动开始
+ */
+ autoStart: makeBooleanProp(true)
+}
+
+export type CountDownProps = ExtractPropTypes
+
+export type CountDownExpose = {
+ /**
+ * 开始倒计时
+ */
+ start: () => void
+ /**
+ * 暂停倒计时
+ */
+ pause: () => void
+ /**
+ * 重设倒计时,若 auto-start 为 true,重设后会自动开始倒计时
+ */
+ reset: () => void
+}
+
+export type CountDownInstance = ComponentPublicInstance
diff --git a/uni_modules/wot-design-uni/components/wd-count-down/utils.ts b/uni_modules/wot-design-uni/components/wd-count-down/utils.ts
new file mode 100644
index 0000000..efa6200
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-count-down/utils.ts
@@ -0,0 +1,52 @@
+import { padZero } from '../common/util'
+
+export type TimeData = {
+ days: number
+ hours: number
+ minutes: number
+ seconds: number
+ milliseconds: number
+}
+
+export function parseFormat(format: string, timeData: TimeData): string {
+ const { days } = timeData
+ let { hours, minutes, seconds, milliseconds } = timeData
+
+ if (format.includes('DD')) {
+ format = format.replace('DD', padZero(days))
+ } else {
+ hours += days * 24
+ }
+
+ if (format.includes('HH')) {
+ format = format.replace('HH', padZero(hours))
+ } else {
+ minutes += hours * 60
+ }
+
+ if (format.includes('mm')) {
+ format = format.replace('mm', padZero(minutes))
+ } else {
+ seconds += minutes * 60
+ }
+
+ if (format.includes('ss')) {
+ format = format.replace('ss', padZero(seconds))
+ } else {
+ milliseconds += seconds * 1000
+ }
+
+ if (format.includes('S')) {
+ const ms = padZero(milliseconds, 3)
+
+ if (format.includes('SSS')) {
+ format = format.replace('SSS', ms)
+ } else if (format.includes('SS')) {
+ format = format.replace('SS', ms.slice(0, 2))
+ } else {
+ format = format.replace('S', ms.charAt(0))
+ }
+ }
+
+ return format
+}
diff --git a/uni_modules/wot-design-uni/components/wd-count-down/wd-count-down.vue b/uni_modules/wot-design-uni/components/wd-count-down/wd-count-down.vue
new file mode 100644
index 0000000..04c10f4
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-count-down/wd-count-down.vue
@@ -0,0 +1,60 @@
+
+
+
+ {{ timeText }}
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-count-to/index.scss b/uni_modules/wot-design-uni/components/wd-count-to/index.scss
new file mode 100644
index 0000000..0a96178
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-count-to/index.scss
@@ -0,0 +1,7 @@
+@import '../common/abstracts/variable';
+@import '../common/abstracts/mixin';
+
+
+.wd-count-to{
+ vertical-align: bottom;
+}
diff --git a/uni_modules/wot-design-uni/components/wd-count-to/types.ts b/uni_modules/wot-design-uni/components/wd-count-to/types.ts
new file mode 100644
index 0000000..5cd17ee
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-count-to/types.ts
@@ -0,0 +1,117 @@
+import type { ComponentPublicInstance, ExtractPropTypes } from 'vue'
+import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props'
+import type { TextType } from '../wd-text/types'
+
+export const countToProps = {
+ ...baseProps,
+
+ // 字体大小
+ fontSize: makeNumberProp(16),
+
+ // 文本颜色
+ color: makeStringProp(''),
+ /**
+ * 主题类型
+ * 类型:string
+ * 可选值:'default' /'primary' / 'error' / 'warning' / 'success'
+ * 默认值:'default'
+ */
+ type: makeStringProp('default'),
+ /**
+ * 起始值
+ * 类型:number
+ * 默认值:0
+ */
+ startVal: makeNumberProp(0),
+
+ /**
+ * 最终值
+ * 类型:number
+ * 默认值:2021
+ */
+ endVal: makeNumberProp(2024),
+
+ /**
+ * 从起始值到结束值数字变动的时间,单位毫秒
+ * 类型:number
+ * 默认值:3000
+ */
+ duration: makeNumberProp(3000),
+ /**
+ * 是否自动开始
+ * 类型:boolean
+ * 默认值:true
+ */
+ autoStart: makeBooleanProp(true),
+ /**
+ * 保留的小数位数
+ * 类型:number
+ * 默认值:0
+ * 校验:大于等于0
+ */
+ decimals: {
+ type: Number,
+ required: false,
+ default: 0,
+ validator(value: number) {
+ return value >= 0
+ }
+ },
+
+ // 小数点
+ decimal: makeStringProp('.'),
+
+ // 三位三位的隔开效果
+ separator: makeStringProp(','),
+
+ /**
+ * 前缀
+ * 类型:string
+ * 默认值:''
+ * @example '¥' 人民币前缀
+ */
+ prefix: makeStringProp(''),
+
+ /**
+ * 后缀
+ * 类型:string
+ * 默认值:''
+ */
+ suffix: makeStringProp(''),
+
+ /**
+ * 是否具有连贯性
+ * 类型:boolean
+ * 默认值:true
+ */
+ useEasing: makeBooleanProp(true),
+
+ /**
+ * 自定义根节点样式
+ */
+ customStyle: makeStringProp(''),
+
+ /**
+ * 自定义根节点样式类
+ */
+ customClass: makeStringProp('')
+}
+
+export type CountDownProps = ExtractPropTypes
+
+export type CountUpExpose = {
+ /**
+ * 开始倒计时
+ */
+ start: () => void
+ /**
+ * 暂停倒计时
+ */
+ pause: () => void
+ /**
+ * 重设倒计时,若 auto-start 为 true,重设后会自动开始倒计时
+ */
+ reset: () => void
+}
+
+export type CountToInstance = ComponentPublicInstance
diff --git a/uni_modules/wot-design-uni/components/wd-count-to/wd-count-to.vue b/uni_modules/wot-design-uni/components/wd-count-to/wd-count-to.vue
new file mode 100644
index 0000000..b72f601
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-count-to/wd-count-to.vue
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-curtain/index.scss b/uni_modules/wot-design-uni/components/wd-curtain/index.scss
new file mode 100644
index 0000000..4f7c10a
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-curtain/index.scss
@@ -0,0 +1,85 @@
+@import "./../common/abstracts/_mixin.scss";
+@import "./../common/abstracts/variable.scss";
+
+@include b(curtain-wrapper){
+ :deep(.wd-curtain){
+ display: inline-block;
+ border-radius: $-curtain-content-radius;
+ overflow-y: visible !important;
+ background: transparent;
+ font-size: 0;
+ }
+}
+
+
+@include b(curtain) {
+
+ @include e(content) {
+ position: relative;
+ display: inline-block;
+ background: transparent;
+ border-radius: $-curtain-content-radius;
+ }
+ @include e(content-link) {
+ display: block;
+ border-radius: $-curtain-content-radius;
+ }
+ @include e(content-img) {
+ display: block;
+ width: auto;
+ height: auto;
+ border-radius: $-curtain-content-radius;
+ }
+ @include edeep(content-close) {
+ position: absolute;
+ margin: 0;
+ padding: 6px;
+ top: 10px;
+ right: 10px;
+ color: $-curtain-content-close-color;
+ font-size: $-curtain-content-close-fs;
+ -webkit-tap-highlight-color: transparent;
+ &.top {
+ margin: 0 0 0 -18px;
+ top: -62px;
+ right: unset;
+ left: 50%;
+ bottom: unset;
+ }
+ &.top-left {
+ margin: 0;
+ top: -62px;
+ right: unset;
+ left: -6px;
+ bottom: unset;
+ }
+ &.top-right {
+ margin: 0;
+ top: -62px;
+ right: -6px;
+ left: unset;
+ bottom: unset;
+ }
+ &.bottom {
+ margin: 0 0 0 -18px;
+ top: unset;
+ right: unset;
+ left: 50%;
+ bottom: -62px;
+ }
+ &.bottom-left {
+ margin: 0;
+ top: unset;
+ right: unset;
+ left: -6px;
+ bottom: -62px;
+ }
+ &.bottom-right {
+ margin: 0;
+ top: unset;
+ right: -6px;
+ left: unset;
+ bottom: -62px;
+ }
+ }
+}
diff --git a/uni_modules/wot-design-uni/components/wd-curtain/types.ts b/uni_modules/wot-design-uni/components/wd-curtain/types.ts
new file mode 100644
index 0000000..63af942
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-curtain/types.ts
@@ -0,0 +1,56 @@
+import type { ExtractPropTypes } from 'vue'
+import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props'
+
+export type ClosePosition = 'inset' | 'top' | 'bottom' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'
+
+export const curtainProps = {
+ ...baseProps,
+ /**
+ * 绑定值,展示/关闭幕帘
+ */
+ value: makeBooleanProp(false),
+ /**
+ * 关闭按钮位置,可选值:inset / top / bottom / top-left / top-right / bottom-left / bottom-right
+ */
+ closePosition: makeStringProp('inset'),
+ /**
+ * 幕帘图片地址,必须使用网络地址
+ */
+ src: String,
+ /**
+ * 幕帘图片点击链接
+ */
+ to: String,
+ /**
+ * 幕帘图片宽度
+ */
+ width: Number,
+ /**
+ * 点击遮罩是否关闭
+ */
+ closeOnClickModal: makeBooleanProp(false),
+ /**
+ * 是否当关闭时将弹出层隐藏(display: none)
+ */
+ hideWhenClose: makeBooleanProp(true),
+ /**
+ * 设置层级
+ * 类型:number
+ * 默认值:10
+ */
+ zIndex: makeNumberProp(10),
+ /**
+ * 自定义关闭按钮的类名
+ * 类型:string
+ * 默认值:''
+ */
+ customCloseClass: makeStringProp(''),
+ /**
+ * 自定义关闭按钮的样式
+ * 类型:string
+ * 默认值:''
+ */
+ customCloseStyle: makeStringProp('')
+}
+
+export type CurtainProps = ExtractPropTypes
diff --git a/uni_modules/wot-design-uni/components/wd-curtain/wd-curtain.vue b/uni_modules/wot-design-uni/components/wd-curtain/wd-curtain.vue
new file mode 100644
index 0000000..c7a388b
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-curtain/wd-curtain.vue
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-datetime-picker-view/index.scss b/uni_modules/wot-design-uni/components/wd-datetime-picker-view/index.scss
new file mode 100644
index 0000000..e69de29
diff --git a/uni_modules/wot-design-uni/components/wd-datetime-picker-view/types.ts b/uni_modules/wot-design-uni/components/wd-datetime-picker-view/types.ts
new file mode 100644
index 0000000..4cd324c
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-datetime-picker-view/types.ts
@@ -0,0 +1,123 @@
+import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
+import { baseProps, makeBooleanProp, makeNumberProp, makeRequiredProp, makeStringProp } from '../common/props'
+
+export type DateTimeType = 'date' | 'year-month' | 'time' | 'datetime' | 'year'
+
+/**
+ * @description 根据传入的值和类型,获取当前的选项数组,便于传入 pickerView
+ * @param value
+ * @param type picker类型
+ * @return {Array} pickerValue
+ */
+export function getPickerValue(value: string | number, type: DateTimeType) {
+ const values: number[] = []
+ const date = new Date(value)
+ if (type === 'time') {
+ const pair = String(value).split(':')
+ values.push(parseInt(pair[0]), parseInt(pair[1]))
+ } else {
+ values.push(date.getFullYear(), date.getMonth() + 1)
+ if (type === 'date') {
+ values.push(date.getDate())
+ } else if (type === 'datetime') {
+ values.push(date.getDate(), date.getHours(), date.getMinutes())
+ }
+ }
+ return values
+}
+
+export const datetimePickerViewProps = {
+ ...baseProps,
+ /**
+ * 选中项,当 type 为 time 时,类型为字符串,否则为 时间戳
+ */
+ modelValue: makeRequiredProp([String, Number]),
+ /**
+ * 加载中
+ */
+ loading: makeBooleanProp(false),
+ /**
+ * 加载的颜色,只能使用十六进制的色值写法,且不能使用缩写
+ */
+ loadingColor: makeStringProp('#4D80F0'),
+ /**
+ * picker内部滚筒高
+ */
+ columnsHeight: makeNumberProp(217),
+ valueKey: makeStringProp('value'),
+ labelKey: makeStringProp('label'),
+ /**
+ * 选择器类型,可选值:date / year-month / time
+ */
+ type: makeStringProp('datetime'),
+ /**
+ * 自定义过滤选项的函数,返回列的选项数组
+ */
+ filter: Function as PropType,
+ /**
+ * 自定义弹出层选项文案的格式化函数,返回一个字符串
+ */
+ formatter: Function as PropType,
+ /**
+ * 自定义列的格式化函数
+ */
+ columnFormatter: Function as PropType,
+ /**
+ * 最小日期
+ */
+ minDate: makeNumberProp(new Date(new Date().getFullYear() - 10, 0, 1).getTime()),
+ /**
+ * 最大日期
+ */
+ maxDate: makeNumberProp(new Date(new Date().getFullYear() + 10, 11, 31).getTime()),
+ /**
+ * 最小小时,time类型时生效
+ */
+ minHour: makeNumberProp(0),
+ /**
+ * 最大小时,time类型时生效
+ */
+ maxHour: makeNumberProp(23),
+ /**
+ * 最小分钟,time类型时生效
+ */
+ minMinute: makeNumberProp(0),
+ /**
+ * 最大分钟,time类型时生效
+ */
+ maxMinute: makeNumberProp(59),
+ /**
+ * 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。
+ */
+ immediateChange: makeBooleanProp(false),
+ startSymbol: makeBooleanProp(false)
+}
+
+export type DatetimePickerViewColumnType = 'year' | 'month' | 'date' | 'hour' | 'minute'
+
+export type DatetimePickerViewOption = {
+ label: string
+ value: number
+}
+
+export type DatetimePickerViewFilter = (type: DatetimePickerViewColumnType, values: number[]) => number[]
+
+export type DatetimePickerViewFormatter = (type: string, value: string) => string
+
+export type DatetimePickerViewColumnFormatter = (picker: DatetimePickerViewInstance) => DatetimePickerViewOption[][]
+
+export type DatetimePickerViewProps = ExtractPropTypes
+
+export type DatetimePickerViewExpose = {
+ updateColumns: () => DatetimePickerViewOption[][]
+ setColumns: (columnList: DatetimePickerViewOption[][]) => void
+ getSelects: () => Record | Record[] | undefined
+ correctValue: (value: string | number) => string | number
+ getPickerValue: (value: string | number, type: DateTimeType) => number[]
+ getOriginColumns: () => {
+ type: DatetimePickerViewColumnType
+ values: number[]
+ }[]
+}
+
+export type DatetimePickerViewInstance = ComponentPublicInstance
diff --git a/uni_modules/wot-design-uni/components/wd-datetime-picker-view/wd-datetime-picker-view.vue b/uni_modules/wot-design-uni/components/wd-datetime-picker-view/wd-datetime-picker-view.vue
new file mode 100644
index 0000000..4d55a1f
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-datetime-picker-view/wd-datetime-picker-view.vue
@@ -0,0 +1,504 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-datetime-picker/index.scss b/uni_modules/wot-design-uni/components/wd-datetime-picker/index.scss
new file mode 100644
index 0000000..1597a30
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-datetime-picker/index.scss
@@ -0,0 +1,245 @@
+@import "./../common/abstracts/_mixin.scss";
+@import "./../common/abstracts/variable.scss";
+
+.wot-theme-dark {
+ @include b(picker) {
+ @include e(cell) {
+ background-color: $-dark-background2;
+ color: $-dark-color;
+ }
+
+ @include e(title) {
+ color: $-dark-color;
+ }
+
+ @include e(label) {
+ color: $-dark-color;
+ }
+ @include e(value) {
+ color: $-dark-color;
+ }
+
+ @include e(placeholder) {
+ color: $-dark-color-gray;
+ }
+
+
+ @include when(border) {
+ .wd-picker__cell {
+ @include halfPixelBorder('top', $-cell-padding, $-dark-border-color);
+ }
+ }
+
+ :deep(.wd-picker__arrow){
+ color: $-dark-color;
+ }
+
+ @include e(action) {
+ @include m(cancel) {
+ color: $-dark-color;
+ }
+ }
+
+ @include e(region) {
+ color: $-dark-color;
+
+ @include when(active) {
+ background: $-picker-region-bg-active-color;
+ color: $-dark-color;
+ }
+ }
+
+ }
+}
+
+@include b(picker) {
+ @include edeep(popup) {
+ border-radius: 16px 16px 0px 0px;
+ }
+
+ @include e(wraper) {
+ padding-bottom: var(--window-bottom);
+ }
+
+ @include when(border) {
+ .wd-picker__cell {
+ @include halfPixelBorder("top", $-cell-padding);
+ }
+ }
+ @include when(large) {
+ .wd-picker__cell {
+ font-size: $-cell-title-fs-large;
+ }
+ :deep(.wd-picker__arrow) {
+ font-size: $-cell-icon-size-large;
+ }
+ }
+ @include when(error) {
+ .wd-picker__value,
+ .wd-picker__placeholder {
+ color: $-input-error-color;
+ }
+
+ :deep(.wd-picker__arrow){
+ color: $-input-error-color;
+ }
+ }
+ @include when(align-right) {
+ .wd-picker__value {
+ text-align: right;
+ }
+ }
+ @include e(cell) {
+ position: relative;
+ display: flex;
+ padding: $-cell-wrapper-padding $-cell-padding;
+ align-items: flex-start;
+ background-color: $-color-white;
+ text-decoration: none;
+ color: $-cell-title-color;
+ font-size: $-cell-title-fs;
+ overflow: hidden;
+ line-height: $-cell-line-height;
+
+ @include when(disabled) {
+ .wd-picker__value {
+ color: $-input-disabled-color;
+ }
+ }
+ }
+
+ @include when(disabled) {
+ .wd-picker__value {
+ color: $-picker-column-disabled-color;
+ }
+ }
+
+ @include e(error-message){
+ color: $-form-item-error-message-color;
+ font-size: $-form-item-error-message-font-size;
+ line-height: $-form-item-error-message-line-height;
+ text-align: left;
+ vertical-align: middle;
+ }
+
+ @include e(label) {
+ position: relative;
+ width: $-input-cell-label-width;
+ margin-right: $-cell-padding;
+ color: $-cell-title-color;
+ box-sizing: border-box;
+
+ @include when(required) {
+ padding-left: 12px;
+
+ &::after {
+ position: absolute;
+ left: 0;
+ top: 2px;
+ content: "*";
+ font-size: $-cell-required-size;
+ line-height: 1.1;
+ color: $-cell-required-color;
+ }
+ }
+ }
+
+ @include e(value-wraper) {
+ display: flex;
+ }
+
+ @include e(value) {
+ flex: 1;
+ margin-right: 10px;
+ color: $-cell-value-color;
+
+ @include when(ellipsis) {
+ @include lineEllipsis;
+ }
+ }
+
+ @include e(body) {
+ flex: 1;
+ }
+
+ @include e(placeholder) {
+ color: $-input-placeholder-color;
+ }
+
+ @include edeep(arrow) {
+ display: block;
+ font-size: $-cell-icon-size;
+ color: $-cell-arrow-color;
+ line-height: $-cell-line-height;
+ }
+
+ @include e(toolbar) {
+ position: relative;
+ display: flex;
+ font-size: $-picker-toolbar-fs;
+ height: $-picker-toolbar-height;
+ line-height: $-picker-action-height;
+ justify-content: space-between;
+ align-items: center;
+ box-sizing: border-box;
+ }
+
+ @include e(action) {
+ display: block;
+ border: none;
+ outline: none;
+ font-size: $-picker-toolbar-fs;
+ color: $-picker-toolbar-finish-color;
+ background: transparent;
+ padding: 24px 15px 14px 15px;
+
+ @include m(cancel) {
+ color: $-picker-toolbar-cancel-color;
+ }
+
+ @include when(loading) {
+ color: $-picker-loading-button-color;
+ }
+ }
+ @include e(title) {
+ display: block;
+ float: 1;
+ color: $-picker-toolbar-title-color;
+ }
+
+ @include e(region-tabs) {
+ display: flex;
+ }
+
+ @include e(region) {
+ width: 50%;
+ display: inline-block;
+ color: $-picker-region-color;
+ text-align: center;
+ padding: 14px 0;
+ font-size: $-picker-region-fs;
+ line-height: 16px;
+ transition: all 0.15s ease-out;
+
+ @include when(active) {
+ background: $-picker-region-bg-active-color;
+ color: $-color-white;
+ }
+ }
+
+ @include e(region-time) {
+ font-size: 16px;
+ margin-top: 2px;
+ }
+
+ @include e(hidden) {
+ visibility: hidden;
+ overflow: hidden;
+ height: 0;
+ }
+
+ @include e(show) {
+ visibility: visible;
+ height: auto;
+ }
+}
diff --git a/uni_modules/wot-design-uni/components/wd-datetime-picker/types.ts b/uni_modules/wot-design-uni/components/wd-datetime-picker/types.ts
new file mode 100644
index 0000000..eab760d
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-datetime-picker/types.ts
@@ -0,0 +1,209 @@
+import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
+import { baseProps, makeArrayProp, makeBooleanProp, makeNumberProp, makeRequiredProp, makeStringProp } from '../common/props'
+import type { DateTimeType, DatetimePickerViewFilter, DatetimePickerViewFormatter } from '../wd-datetime-picker-view/types'
+import type { FormItemRule } from '../wd-form/types'
+
+export const datetimePickerProps = {
+ ...baseProps,
+ /**
+ * 选择器左侧文案,label可以不传
+ */
+ label: String,
+ /**
+ * 选择器占位符
+ */
+ placeholder: String,
+ /**
+ * 禁用
+ */
+ disabled: makeBooleanProp(false),
+ /**
+ * 只读
+ */
+ readonly: makeBooleanProp(false),
+ /**
+ * 加载中
+ */
+ loading: makeBooleanProp(false),
+ /**
+ * 加载的颜色,只能使用十六进制的色值写法,且不能使用缩写
+ */
+ loadingColor: makeStringProp('#4D80F0'),
+ /**
+ * 弹出层标题
+ */
+ title: String,
+ /**
+ * 取消按钮文案
+ */
+ cancelButtonText: String,
+ /**
+ * 确认按钮文案
+ */
+ confirmButtonText: String,
+ /**
+ * 是否必填
+ */
+ required: makeBooleanProp(false),
+ /**
+ * 设置选择器大小,可选值:large
+ */
+ size: String,
+ /**
+ * 设置左侧标题宽度
+ */
+ labelWidth: makeStringProp('33%'),
+ /**
+ * 使用默认插槽
+ */
+ useDefaultSlot: makeBooleanProp(false),
+ /**
+ * label 使用插槽
+ */
+ useLabelSlot: makeBooleanProp(false),
+ /**
+ * 是否为错误状态,错误状态时右侧内容为红色
+ */
+ error: makeBooleanProp(false),
+ /**
+ * 选择器的值靠右展示
+ */
+ alignRight: makeBooleanProp(false),
+ /**
+ * 点击遮罩是否关闭
+ */
+ closeOnClickModal: makeBooleanProp(true),
+ /**
+ * 弹出面板是否设置底部安全距离(iphone X 类型的机型)
+ */
+ safeAreaInsetBottom: makeBooleanProp(true),
+ /**
+ * 是否超出隐藏
+ */
+ ellipsis: makeBooleanProp(false),
+ /**
+ * picker内部滚筒高
+ */
+ columnsHeight: makeNumberProp(217),
+ valueKey: makeStringProp('value'),
+ labelKey: makeStringProp('label'),
+ /**
+ * 选中项,当 type 为 time 时,类型为字符串;当 type 为 Array 时,类型为范围选择;否则为 时间戳
+ */
+ modelValue: makeRequiredProp([String, Number, Array] as PropType>),
+ /**
+ * 选择器类型,可选值为:date / year-month / time
+ */
+ type: makeStringProp('datetime'),
+ /**
+ * 最小日期
+ */
+ minDate: makeNumberProp(new Date(new Date().getFullYear() - 10, 0, 1).getTime()),
+ /**
+ * 最大日期
+ */
+ maxDate: makeNumberProp(new Date(new Date().getFullYear() + 10, 11, 31, 23, 59, 59).getTime()),
+ /**
+ * 最小小时,time类型时生效
+ */
+ minHour: makeNumberProp(0),
+ /**
+ * 最大小时,time类型时生效
+ */
+ maxHour: makeNumberProp(23),
+ /**
+ * 最小分钟,time类型时生效
+ */
+ minMinute: makeNumberProp(0),
+ /**
+ * 最大分钟,time类型时生效
+ */
+ maxMinute: makeNumberProp(59),
+ /**
+ * 自定义过滤选项的函数,返回列的选项数组
+ */
+ filter: Function as PropType,
+ /**
+ * 自定义弹出层选项文案的格式化函数,返回一个字符串
+ */
+ formatter: Function as PropType,
+ /**
+ * 自定义展示文案的格式化函数,返回一个字符串
+ */
+ displayFormat: Function as PropType,
+ /**
+ * 确定前校验函数,接收 (value, resolve, picker) 参数,通过 resolve 继续执行 picker,resolve 接收1个boolean参数
+ */
+ beforeConfirm: Function as PropType,
+ /**
+ * 在区域选择模式下,自定义展示tab标签文案的格式化函数,返回一个字符串
+ */
+ displayFormatTabLabel: Function as PropType,
+ /**
+ * 默认日期,类型保持与 value 一致,打开面板时面板自动选到默认日期
+ */
+ defaultValue: [String, Number, Array] as PropType>,
+ /**
+ * 弹窗层级
+ */
+ zIndex: makeNumberProp(15),
+ /**
+ * 表单域 model 字段名,在使用表单校验功能的情况下,该属性是必填的
+ */
+ prop: String,
+ /**
+ * 表单验证规则,结合wd-form组件使用
+ */
+ rules: makeArrayProp(),
+ /**
+ * picker cell 外部自定义样式
+ */
+ customCellClass: makeStringProp(''),
+ /**
+ * pickerView 外部自定义样式
+ */
+ customViewClass: makeStringProp(''),
+ /**
+ * label 外部自定义样式
+ */
+ customLabelClass: makeStringProp(''),
+ /**
+ * value 外部自定义样式
+ */
+ customValueClass: makeStringProp(''),
+ /**
+ * 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件,1.2.25版本起提供,仅微信小程序和支付宝小程序支持。
+ */
+ immediateChange: makeBooleanProp(false)
+}
+
+export type DatetimePickerDisplayFormat = (items: Record[]) => string
+
+export type DatetimePickerBeforeConfirm = (
+ value: number | string | (number | string)[],
+ resolve: (isPass: boolean) => void,
+ picker: DatetimePickerInstance
+) => void
+
+export type DatetimePickerDisplayFormatTabLabel = (items: Record[]) => string
+
+export type DatetimePickerExpose = {
+ /**
+ * 打开picker弹框
+ */
+ open: () => void
+ /**
+ * 关闭picker弹框
+ */
+ close: () => void
+ /**
+ * 设置加载状态
+ * @param loading 加载状态
+ * @returns
+ */
+ setLoading: (loading: boolean) => void
+}
+
+export type DatetimePickerProps = ExtractPropTypes
+
+export type DatetimePickerInstance = ComponentPublicInstance
diff --git a/uni_modules/wot-design-uni/components/wd-datetime-picker/wd-datetime-picker.vue b/uni_modules/wot-design-uni/components/wd-datetime-picker/wd-datetime-picker.vue
new file mode 100644
index 0000000..f92e310
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-datetime-picker/wd-datetime-picker.vue
@@ -0,0 +1,763 @@
+
+
+
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
+
+ {{ showValue[0] ? showValue[0] : placeholder || translate('placeholder') }}
+
+ {{ translate('to') }}
+
+ {{ showValue[1] ? showValue[1] : placeholder || translate('placeholder') }}
+
+
+
+ {{ placeholder || translate('placeholder') }}
+
+
+
+ {{ showValue ? showValue : placeholder || translate('placeholder') }}
+
+
+
+
+ {{ errorMessage }}
+
+
+
+
+
+
+
+
+
+
+ {{ cancelButtonText || translate('cancel') }}
+
+
+ {{ title }}
+
+
+ {{ confirmButtonText || translate('confirm') }}
+
+
+
+
+
+ {{ translate('start') }}
+ {{ showTabLabel[0] }}
+
+
+ {{ translate('end') }}
+ {{ showTabLabel[1] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-divider/index.scss b/uni_modules/wot-design-uni/components/wd-divider/index.scss
new file mode 100644
index 0000000..c67d106
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-divider/index.scss
@@ -0,0 +1,100 @@
+@import '../common/abstracts/variable';
+@import '../common/abstracts/mixin';
+
+.wot-theme-dark {
+ @include b(divider) {
+ color: $-dark-color3;
+
+ @include e(line) {
+ background: $-dark-color-gray;
+ }
+ }
+}
+
+@include b(divider) {
+ position: relative;
+ display: flex;
+ padding: $-divider-padding;
+ margin: $-divider-margin;
+ align-items: center;
+ color: $-divider-color;
+ font-size: $-divider-fs;
+
+ &::after,
+ &::before {
+ flex: 1;
+ display: block;
+ box-sizing: border-box;
+ border-style: solid;
+ border-color: $-divider-line-color;
+ border-width: $-divider-line-height 0 0;
+ }
+
+ &::before {
+ content: '';
+ }
+
+ @include m(center, left, right) {
+ &::after {
+ content: '';
+ margin-left: $-divider-content-left-margin;
+ }
+
+ &::before {
+ margin-right: $-divider-content-right-margin;
+ }
+ }
+
+ @include m(left) {
+ &::before {
+ max-width: $-divider-content-left-width;
+ }
+ }
+
+ @include m(right) {
+ &::after {
+ max-width: $-divider-content-right-width;
+ }
+ }
+
+ @include when(hairline) {
+
+ &::before,
+ &::after {
+ transform: scaleY(0.5);
+ }
+ }
+
+ @include when(dashed) {
+
+ &::before,
+ &::after {
+ border-style: dashed;
+ }
+ }
+
+ @include m(vertical) {
+ display: inline-block;
+ width: $-divider-vertical-line-width;
+ height: $-divider-vertical-height;
+ margin: $-divider-vertical-content-margin;
+ padding: 0;
+ vertical-align: middle;
+
+ &::before {
+ height: 100%;
+ border-width: 0 0 0 $-divider-vertical-line-width;
+ }
+
+ &::after {
+ display: none;
+ }
+
+ @include when(hairline) {
+ &::before {
+ transform: scaleX(0.5);
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-divider/types.ts b/uni_modules/wot-design-uni/components/wd-divider/types.ts
new file mode 100644
index 0000000..12d6726
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-divider/types.ts
@@ -0,0 +1,35 @@
+import type { ExtractPropTypes } from 'vue'
+import { baseProps, makeBooleanProp, makeStringProp } from '../common/props'
+
+export type DividerPosition = 'center' | 'left' | 'right'
+export type DividerDirection = 'horizontal' | 'vertical'
+
+export const dividerProps = {
+ ...baseProps,
+ /**
+ * 自定义颜色
+ */
+ color: String,
+ /**
+ * 内容位置,可选值为 `left` `right` `center`
+ * 默认值:`center`
+ */
+ contentPosition: makeStringProp('center'),
+ /**
+ * 是否显示为虚线
+ * 默认值:`false`
+ */
+ dashed: Boolean,
+ /**
+ * 是否为垂直分割线
+ * 默认值:`false`
+ */
+ vertical: makeBooleanProp(false),
+ /**
+ * 是否显示为 0.5px 的线
+ * 默认值:`true`
+ */
+ hairline: makeBooleanProp(true)
+}
+
+export type DividerProps = ExtractPropTypes
diff --git a/uni_modules/wot-design-uni/components/wd-divider/wd-divider.vue b/uni_modules/wot-design-uni/components/wd-divider/wd-divider.vue
new file mode 100644
index 0000000..0227a1c
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-divider/wd-divider.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-drop-menu-item/index.scss b/uni_modules/wot-design-uni/components/wd-drop-menu-item/index.scss
new file mode 100644
index 0000000..13546eb
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-drop-menu-item/index.scss
@@ -0,0 +1,66 @@
+@import '../common/abstracts/variable';
+@import '../common/abstracts/mixin';
+
+.wot-theme-dark {
+ @include b(drop-item) {
+ color: $-dark-color;
+
+ @include e(tip) {
+ color: $-dark-color3;
+ }
+ }
+}
+
+@include b(drop-item) {
+ position: fixed;
+ right: 0;
+ left: 0;
+ overflow: hidden;
+ font-size: $-drop-menu-item-fs;
+ color: $-drop-menu-item-color;
+ width: 100%;
+ z-index: 101;
+
+ .wd-drop-item__popup {
+ position: absolute;
+ max-height: 80%;
+ }
+
+ @include e(option) {
+ display: flex;
+ height: $-drop-menu-item-height;
+ line-height: $-drop-menu-item-height;
+ padding: 0 $-drop-menu-side-padding;
+ justify-content: space-between;
+ align-items: center;
+ transition: color .2s;
+
+ @include when(active) {
+ color: $-drop-menu-item-color-active;
+ }
+ }
+
+ @include e(title){
+ display: block;
+ }
+
+ @include e(tip) {
+ display: inline-block;
+ color: $-drop-menu-item-color-tip;
+ font-size: $-drop-menu-item-fs-tip;
+ margin-left: 2px;
+ }
+
+ @include edeep(icon){
+ display: block;
+ font-size: $-drop-menu-option-check-size;
+ }
+
+ @include e(modal) {
+ position: fixed;
+ left: 0;
+ right: 0;
+ background: rgba(0, 0, 0, 0.7);
+ height: 100%;
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-drop-menu-item/types.ts b/uni_modules/wot-design-uni/components/wd-drop-menu-item/types.ts
new file mode 100644
index 0000000..ebbd9bf
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-drop-menu-item/types.ts
@@ -0,0 +1,86 @@
+import type { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue'
+import { baseProps, makeArrayProp, makeBooleanProp, makeStringProp } from '../common/props'
+
+export type DropMenuItemBeforeToggleOption = {
+ // 操作状态:true 打开下拉菜单,false 关闭下拉菜单
+ status: boolean
+ // 回调函数,用于控制是否允许打开或关闭下拉菜单,true 允许打开或关闭,false 不允许打开或关闭
+ resolve: (isPass: boolean) => void
+}
+
+export type DropMenuItemBeforeToggle = (option: DropMenuItemBeforeToggleOption) => void
+
+export const dorpMenuItemProps = {
+ ...baseProps,
+ /**
+ * DropMenuItem 左侧文字样式
+ */
+ customTitle: makeStringProp(''),
+ /**
+ * DropMenuItem 右侧 icon 样式
+ */
+ customIcon: makeStringProp(''),
+ /**
+ * 当前选中项对应选中的 value
+ */
+ modelValue: [String, Number],
+ /**
+ * 列表数据,对应数据结构 [{text: '标题', value: '0', tip: '提示文字'}]
+ */
+ options: makeArrayProp>(),
+ /**
+ * 禁用菜单
+ */
+ disabled: makeBooleanProp(false),
+ /**
+ * 选中的图标名称(可选名称在 wd-icon 组件中)
+ */
+ iconName: makeStringProp('check'),
+ /**
+ * 菜单标题
+ */
+ title: String,
+ /**
+ * 菜单图标
+ */
+ icon: makeStringProp('arrow-down'),
+ /**
+ * 菜单图标大小
+ */
+ iconSize: makeStringProp('14px'),
+ /**
+ * 自定义点击事件
+ */
+ beforeToggle: Function as PropType,
+ /**
+ * 选项对象中,value 对应的 key
+ */
+ valueKey: makeStringProp('value'),
+ /**
+ * 选项对象中,展示的文本对应的 key
+ */
+ labelKey: makeStringProp('label'),
+ /**
+ * 选项对象中,选项说明对应的 key
+ */
+ tipKey: makeStringProp('tip'),
+ /**
+ * 自定义下拉菜单popup样式类
+ */
+ customPopupClass: makeStringProp(''),
+ /**
+ * 自定义下拉菜单popup样式
+ */
+ customPopupStyle: makeStringProp('')
+}
+
+export type DropMenuItemProps = ExtractPropTypes
+
+export type DropMenuItemExpose = {
+ getShowPop: () => boolean
+ open: () => void
+ close: () => void
+ toggle: () => void
+}
+
+export type DropMenuItemInstance = ComponentPublicInstance
diff --git a/uni_modules/wot-design-uni/components/wd-drop-menu-item/wd-drop-menu-item.vue b/uni_modules/wot-design-uni/components/wd-drop-menu-item/wd-drop-menu-item.vue
new file mode 100644
index 0000000..cb103f6
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-drop-menu-item/wd-drop-menu-item.vue
@@ -0,0 +1,216 @@
+
+
+
+
+
+
+ {{ item[labelKey] ? item[labelKey] : item }}
+ {{ item[tipKey] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-drop-menu/index.scss b/uni_modules/wot-design-uni/components/wd-drop-menu/index.scss
new file mode 100644
index 0000000..eb78d6e
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-drop-menu/index.scss
@@ -0,0 +1,89 @@
+@import '../common/abstracts/variable';
+@import '../common/abstracts/mixin';
+
+.wot-theme-dark {
+ @include b(drop-menu) {
+ color: $-dark-color;
+ @include e(list) {
+ background-color: $-dark-background2;
+ }
+
+ @include e(item) {
+ @include when(disabled) {
+ color: $-dark-color-gray;
+ }
+ }
+ }
+}
+
+@include b(drop-menu) {
+ box-sizing: border-box;
+ color: $-drop-menu-color;
+ font-size: $-drop-menu-fs;
+ position: relative;
+
+ @include e(list) {
+ display: flex;
+ text-align: center;
+ background-color: #fff;
+ }
+ @include e(item) {
+ flex: 1;
+ min-width: 0;
+ height: $-drop-menu-height;
+ line-height: $-drop-menu-height;
+ text-align: center;
+
+ @include when(active) {
+ font-weight: $-fw-medium;
+
+ .wd-drop-menu__item-title::after {
+ opacity: 1;
+ }
+ :deep(.wd-drop-menu__arrow) {
+ transform: scale(0.6) rotate(-180deg);
+ transform-origin: center center;
+ }
+ }
+ @include when(disabled) {
+ color: $-drop-menu-disabled-color;
+ }
+ }
+
+ @include e(item-title) {
+ position: relative;
+ display: inline-block;
+ max-width: 100%;
+ padding: 0 $-drop-menu-side-padding;
+ box-sizing: border-box;
+
+ &::after {
+ position: absolute;
+ content: '';
+ width: 19px;
+ height: $-drop-menu-line-height;
+ bottom: 6px;
+ left: 50%;
+ transform: translate(-50%, 0);
+ background: $-drop-menu-line-color;
+ border-radius: $-drop-menu-line-height;
+ transition: opacity .15s;
+ opacity: 0;
+ }
+ }
+
+ @include e(item-title-text) {
+ position: relative;
+ @include lineEllipsis;
+ }
+
+ @include edeep(arrow) {
+ position: absolute;
+ display: inline-block;
+ top: 0;
+ right: -4px;
+ transition: transform 0.3s;
+ transform: scale(0.6);
+ font-size: $-drop-menu-arrow-fs;
+ }
+}
\ No newline at end of file
diff --git a/uni_modules/wot-design-uni/components/wd-drop-menu/types.ts b/uni_modules/wot-design-uni/components/wd-drop-menu/types.ts
new file mode 100644
index 0000000..339e7bb
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-drop-menu/types.ts
@@ -0,0 +1,38 @@
+import { type ExtractPropTypes, type InjectionKey, type Ref } from 'vue'
+import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props'
+
+export type DropDirction = 'up' | 'down'
+
+export type DropMenuProvide = {
+ props: Partial
+ fold: (child?: any) => void
+ offset: Ref
+}
+
+export const DROP_MENU_KEY: InjectionKey = Symbol('wd-drop-menu')
+
+export const dropMenuProps = {
+ ...baseProps,
+ /**
+ * 弹框层级
+ */
+ zIndex: makeNumberProp(12),
+ /**
+ * 菜单展开方向,可选值为up 或 down
+ */
+ direction: makeStringProp('down'),
+ /**
+ * 是否展示蒙层
+ */
+ modal: makeBooleanProp(true),
+ /**
+ * 是否点击蒙层时关闭
+ */
+ closeOnClickModal: makeBooleanProp(true),
+ /**
+ * 菜单展开收起动画时间,单位 ms
+ */
+ duration: makeNumberProp(200)
+}
+
+export type DropMenuProps = ExtractPropTypes
diff --git a/uni_modules/wot-design-uni/components/wd-drop-menu/wd-drop-menu.vue b/uni_modules/wot-design-uni/components/wd-drop-menu/wd-drop-menu.vue
new file mode 100644
index 0000000..7d35da6
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-drop-menu/wd-drop-menu.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-fab/index.scss b/uni_modules/wot-design-uni/components/wd-fab/index.scss
new file mode 100644
index 0000000..16addbf
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-fab/index.scss
@@ -0,0 +1,116 @@
+@import "../common/abstracts/variable";
+@import "../common/abstracts/mixin";
+
+.wot-theme-dark {
+ @include b(fab) {}
+}
+
+@include b(fab) {
+ position: fixed;
+ z-index: 99;
+
+ @include edeep(trigger) {
+ min-width: auto !important;
+ box-sizing: border-box;
+ width: $-fab-trigger-width !important;
+ height: $-fab-trigger-height !important;
+ border-radius: calc($-fab-trigger-height / 2) !important;
+ }
+
+ :deep() {
+ @include e(actions) {
+ position: absolute;
+ z-index: 0;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: $-fab-actions-padding 0;
+
+ @include m(left, right) {
+ height: 100%;
+ top: 0;
+ padding: 0 $-fab-actions-padding;
+ }
+
+ @include m(left) {
+ flex-direction: row-reverse;
+ right: 100%;
+ }
+
+ @include m(right) {
+ flex-direction: row;
+ left: 100%;
+ }
+
+ @include m(top, bottom) {
+ width: 100%;
+ left: 0;
+ }
+
+ @include m(top) {
+ flex-direction: column-reverse;
+ bottom: 100%;
+ }
+
+ @include m(bottom) {
+ flex-direction: column;
+ top: 100%;
+ }
+ }
+
+ // 动画
+ @include e(transition-enter-active, transition-leave-active) {
+ transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
+ }
+
+
+ @include e(transition-enter) {
+ @include m(top) {
+ opacity: 0;
+ transform: translateY(40px);
+ }
+
+ @include m(bottom) {
+ opacity: 0;
+ transform: translateY(-40px);
+ }
+
+ @include m(left) {
+ opacity: 0;
+ transform: translateX(40px);
+ }
+
+ @include m(right) {
+ opacity: 0;
+ transform: translateX(-40px);
+ }
+ }
+
+ @include e(transition-leave-to) {
+ @include m(top) {
+ opacity: 0;
+ transform: translateY(40px);
+ }
+
+ @include m(bottom) {
+ opacity: 0;
+ transform: translateY(-40px);
+ }
+
+ @include m(left) {
+ opacity: 0;
+ transform: translateX(40px);
+ }
+
+ @include m(right) {
+ opacity: 0;
+ transform: translateX(-40px);
+ }
+ }
+
+ }
+
+ @include edeep(icon) {
+ font-size: $-fab-icon-fs;
+ }
+}
diff --git a/uni_modules/wot-design-uni/components/wd-fab/types.ts b/uni_modules/wot-design-uni/components/wd-fab/types.ts
new file mode 100644
index 0000000..a2d47aa
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-fab/types.ts
@@ -0,0 +1,66 @@
+import type { ComponentPublicInstance, ExtractPropTypes } from 'vue'
+import { baseProps, makeBooleanProp, makeNumberProp, makeStringProp } from '../common/props'
+import type { PropType } from 'vue'
+
+export type FabType = 'primary' | 'success' | 'info' | 'warning' | 'error' | 'default'
+export type FabPosition = 'left-top' | 'right-top' | 'left-bottom' | 'right-bottom'
+export type FabDirection = 'top' | 'right' | 'bottom' | 'left'
+export type FabGap = Partial>
+export const fabProps = {
+ ...baseProps,
+ /**
+ * 是否激活
+ */
+ active: makeBooleanProp(false),
+ /**
+ * 类型,可选值为 default primary info success warning error
+ */
+ type: makeStringProp('primary'),
+ /**
+ * 悬浮按钮位置,可选值为 left-top right-top left-bottom right-bottom
+ */
+ position: makeStringProp('right-bottom'),
+ /**
+ * 悬浮按钮菜单弹出方向,可选值为 top bottom left right
+ */
+ direction: makeStringProp('top'),
+ /**
+ * 是否禁用
+ */
+ disabled: makeBooleanProp(false),
+ /**
+ * 悬浮按钮未展开时的图标
+ */
+ inactiveIcon: makeStringProp('add'),
+ /**
+ * 悬浮按钮展开时的图标
+ */
+ activeIcon: makeStringProp('close'),
+ /**
+ * 自定义悬浮按钮层级
+ */
+ zIndex: makeNumberProp(99),
+ /**
+ * 是否可拖动
+ */
+ draggable: makeBooleanProp(false),
+ gap: {
+ type: Object as PropType,
+ default: () => ({})
+ },
+ /**
+ * 用于控制点击时是否展开菜单
+ */
+ expandable: makeBooleanProp(true)
+}
+
+export type FabProps = ExtractPropTypes
+
+export type FabExpose = {
+ // 展开菜单
+ open: () => void
+ // 收起菜单
+ close: () => void
+}
+
+export type FabInstance = ComponentPublicInstance
diff --git a/uni_modules/wot-design-uni/components/wd-fab/wd-fab.vue b/uni_modules/wot-design-uni/components/wd-fab/wd-fab.vue
new file mode 100644
index 0000000..8012894
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-fab/wd-fab.vue
@@ -0,0 +1,252 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-floating-panel/index.scss b/uni_modules/wot-design-uni/components/wd-floating-panel/index.scss
new file mode 100644
index 0000000..8fdaaa6
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-floating-panel/index.scss
@@ -0,0 +1,64 @@
+@import '../common/abstracts/variable';
+@import '../common/abstracts/mixin';
+
+.wot-theme-dark {
+ @include b(floating-panel) {
+ background: $-dark-background2;
+
+ @include e(content) {
+ background: $-dark-background2;
+ }
+ }
+}
+
+@include b(floating-panel) {
+ position: fixed;
+ bottom: 0;
+ left: 0;
+ z-index: $-floating-panel-z-index;
+ display: flex;
+ flex-direction: column;
+ box-sizing: border-box;
+ width: 100vw;
+ border-top-left-radius: $-floating-panel-radius;
+ border-top-right-radius: $-floating-panel-radius;
+ background-color: $-floating-panel-bg;
+ touch-action: none;
+ will-change: transform;
+ @include when(safe) {
+ padding-bottom: constant(safe-area-inset-bottom);
+ padding-bottom: env(safe-area-inset-bottom);
+ }
+
+ &::after {
+ position: absolute;
+ bottom: -100vh;
+ display: block;
+ width: 100vw;
+ height: 100vh;
+ content: '';
+ background-color: inherit;
+ }
+
+ @include e(header) {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: $-floating-panel-header-height;
+ cursor: grab;
+ user-select: none;
+ &-bar {
+ width: $-floating-panel-bar-width;
+ height: $-floating-panel-bar-height;
+ background-color: $-floating-panel-bar-bg;
+ border-radius: $-floating-panel-bar-radius;
+ }
+ }
+
+ @include e(content) {
+ flex: 1;
+ min-width: 0;
+ min-height: 0;
+ background-color: $-floating-panel-content-bg;
+ }
+}
diff --git a/uni_modules/wot-design-uni/components/wd-floating-panel/type.ts b/uni_modules/wot-design-uni/components/wd-floating-panel/type.ts
new file mode 100644
index 0000000..af0bc9d
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-floating-panel/type.ts
@@ -0,0 +1,32 @@
+import type { ExtractPropTypes } from 'vue'
+import { baseProps, makeArrayProp, makeBooleanProp, makeNumberProp, makeNumericProp, truthProp } from '../common/props'
+
+export const floatingPanelProps = {
+ ...baseProps,
+ /**
+ * 面板的显示高度
+ */
+ height: makeNumberProp(0),
+ /**
+ * 设置自定义锚点,默认值 [100, windowHeight * 0.6]
+ */
+ anchors: makeArrayProp(),
+ /**
+ * 弹出面板是否设置底部安全距离(iphone X 类型的机型)
+ */
+ safeAreaInsetBottom: makeBooleanProp(false),
+ /**
+ * 是否显示滚动条,默认值为 true
+ */
+ showScrollbar: truthProp,
+ /**
+ * 动画时长,单位毫秒,默认值为 300ms
+ */
+ duration: makeNumericProp(300),
+ /**
+ * 是否允许内容区容器拖拽,默认值为 true
+ */
+ contentDraggable: truthProp
+}
+
+export type FloatingPanelProps = ExtractPropTypes
diff --git a/uni_modules/wot-design-uni/components/wd-floating-panel/wd-floating-panel.vue b/uni_modules/wot-design-uni/components/wd-floating-panel/wd-floating-panel.vue
new file mode 100644
index 0000000..ae65c7a
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-floating-panel/wd-floating-panel.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-form-item/index.scss b/uni_modules/wot-design-uni/components/wd-form-item/index.scss
new file mode 100644
index 0000000..9bf9400
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-form-item/index.scss
@@ -0,0 +1,18 @@
+@import '../common/abstracts/variable';
+@import '../common/abstracts/mixin';
+
+.wot-theme-dark {
+ @include b(form-item) {
+ }
+}
+
+
+@include b(form-item) {
+ @include e(error-message){
+ color: $-form-item-error-message-color;
+ font-size: $-form-item-error-message-font-size;
+ line-height: $-form-item-error-message-line-height;
+ text-align: left;
+ vertical-align: middle;
+ }
+}
diff --git a/uni_modules/wot-design-uni/components/wd-form-item/types.ts b/uni_modules/wot-design-uni/components/wd-form-item/types.ts
new file mode 100644
index 0000000..ed1a4e2
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-form-item/types.ts
@@ -0,0 +1,16 @@
+import type { ExtractPropTypes } from 'vue'
+import { baseProps, makeArrayProp, makeBooleanProp, makeRequiredProp, makeStringProp } from '../common/props'
+import type { FormItemRule } from '../wd-form/types'
+
+export const formItemProps = {
+ ...baseProps,
+ prop: makeRequiredProp(String),
+ rules: makeArrayProp(),
+ required: Boolean,
+ center: makeBooleanProp(false),
+ label: String,
+ labelWidth: makeStringProp('100px'),
+ isLink: Boolean
+}
+
+export type FormItemProps = ExtractPropTypes
diff --git a/uni_modules/wot-design-uni/components/wd-form-item/wd-form-item.vue b/uni_modules/wot-design-uni/components/wd-form-item/wd-form-item.vue
new file mode 100644
index 0000000..c3a36d3
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-form-item/wd-form-item.vue
@@ -0,0 +1,65 @@
+
+
+
+
+ {{ errorMessage }}
+
+
+
+
+
+
+
diff --git a/uni_modules/wot-design-uni/components/wd-form/index.scss b/uni_modules/wot-design-uni/components/wd-form/index.scss
new file mode 100644
index 0000000..44acaeb
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-form/index.scss
@@ -0,0 +1,10 @@
+@import "../common/abstracts/variable";
+@import "../common/abstracts/mixin";
+
+.wot-theme-dark {
+ @include b(form) {
+ }
+}
+
+@include b(form) {
+}
diff --git a/uni_modules/wot-design-uni/components/wd-form/types.ts b/uni_modules/wot-design-uni/components/wd-form/types.ts
new file mode 100644
index 0000000..87c1044
--- /dev/null
+++ b/uni_modules/wot-design-uni/components/wd-form/types.ts
@@ -0,0 +1,85 @@
+/*
+ * @Author: weisheng
+ * @Date: 2023-12-14 11:21:58
+ * @LastEditTime: 2025-01-11 13:31:20
+ * @LastEditors: weisheng
+ * @Description:
+ * @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-form/types.ts
+ * 记得注释
+ */
+import { type ComponentPublicInstance, type ExtractPropTypes, type InjectionKey, type PropType } from 'vue'
+import { baseProps, makeBooleanProp, makeRequiredProp } from '../common/props'
+
+export type FormProvide = {
+ props: {
+ model: Record
+ rules?: FormRules
+ border?: boolean
+ }
+ errorMessages?: Record
+}
+
+export const FORM_KEY: InjectionKey = Symbol('wd-form')
+
+export type FormRules = {
+ [key: string]: FormItemRule[]
+}
+
+export type ErrorMessage = {
+ prop: string
+ message: string
+}
+
+export interface FormItemRule {
+ [key: string]: any
+ required: boolean
+ message: string
+ pattern?: RegExp
+ validator?: (value: any, rule: FormItemRuleWithoutValidator) => boolean | Promise | Promise