zan-layer 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,197 @@
1
+ # ZanLayer
2
+
3
+ 一个功能完整的 Vue 3 弹层组件库,基于 layui-vue layer 架构开发。
4
+
5
+ ## ✨ 特性
6
+
7
+ - 🎯 **7种弹窗类型** - Dialog、Page、Iframe、Loading、Drawer、Photos、Notify、Prompt
8
+ - 🎨 **6种动画效果** - 缩放、掉落、飞入、旋转、渐显、抖动
9
+ - 🖱️ **拖拽和调整** - 支持拖拽移动和右下角拉伸调整大小
10
+ - 📐 **最大化/最小化** - 完整的窗口控制功能
11
+ - 🎭 **图标系统** - 7种内置图标(成功、失败、警告、信息等)
12
+ - 🔔 **通知消息** - 4个位置(右上、右下、左上、左下)
13
+ - 🖼️ **图片预览** - 支持单图和相册模式
14
+ - ⌨️ **输入层** - 支持文本、密码、文本域输入
15
+ - 🎛️ **完整API** - open、close、msg、confirm、load、drawer、notify、photos、prompt
16
+
17
+ ## 📦 安装
18
+
19
+ ```bash
20
+ npm install @zan-ui/layer
21
+ ```
22
+
23
+ ## 🚀 快速开始
24
+
25
+ ### 全局注册
26
+
27
+ ```js
28
+ import { createApp } from 'vue'
29
+ import ZanLayer from '@zan-ui/layer'
30
+ import '@zan-ui/layer/dist/style.css'
31
+
32
+ const app = createApp(App)
33
+ app.use(ZanLayer)
34
+ app.mount('#app')
35
+ ```
36
+
37
+ ### 基础使用
38
+
39
+ ```js
40
+ import { zanLayer } from '@zan-ui/layer'
41
+
42
+ // 消息提示
43
+ zanLayer.msg('操作成功', { icon: 1, time: 2000 })
44
+
45
+ // 确认框
46
+ zanLayer.confirm('确定要删除吗?', {
47
+ yes: (id) => {
48
+ console.log('确认')
49
+ zanLayer.close(id)
50
+ }
51
+ })
52
+
53
+ // 加载动画
54
+ const loadId = zanLayer.load(0, { time: 3000 })
55
+
56
+ // 打开弹层
57
+ zanLayer.open({
58
+ type: 1,
59
+ title: '标题',
60
+ content: '内容',
61
+ area: ['500px', '400px']
62
+ })
63
+
64
+ // 抽屉
65
+ zanLayer.drawer({
66
+ title: '抽屉',
67
+ content: '内容',
68
+ offset: 'r' // 右侧
69
+ })
70
+
71
+ // 通知
72
+ zanLayer.notify({
73
+ title: '通知标题',
74
+ content: '通知内容',
75
+ icon: 1,
76
+ offset: 'rt' // 右上角
77
+ })
78
+
79
+ // 图片预览
80
+ zanLayer.photos({
81
+ imgList: [
82
+ { src: 'image1.jpg', alt: '图片1' },
83
+ { src: 'image2.jpg', alt: '图片2' }
84
+ ]
85
+ })
86
+
87
+ // 输入层
88
+ zanLayer.prompt({
89
+ title: '请输入',
90
+ formType: 'text',
91
+ yes: (id, value) => {
92
+ console.log('输入值:', value)
93
+ zanLayer.close(id)
94
+ }
95
+ })
96
+ ```
97
+
98
+ ## 📖 API
99
+
100
+ ### 基础方法
101
+
102
+ | 方法 | 说明 | 参数 |
103
+ |------|------|------|
104
+ | `open(options)` | 打开弹层 | LayerProps |
105
+ | `close(id)` | 关闭指定弹层 | string |
106
+ | `closeAll()` | 关闭所有弹层 | - |
107
+ | `msg(message, options)` | 消息提示 | string, LayerProps |
108
+ | `confirm(message, options)` | 确认框 | string, LayerProps |
109
+ | `load(type, options)` | 加载动画 | number, LayerProps |
110
+ | `drawer(options)` | 抽屉 | LayerProps |
111
+ | `notify(options)` | 通知 | LayerProps |
112
+ | `photos(options)` | 图片预览 | LayerProps |
113
+ | `prompt(options)` | 输入层 | LayerProps |
114
+
115
+ ### 控制方法
116
+
117
+ | 方法 | 说明 | 参数 |
118
+ |------|------|------|
119
+ | `reset(id)` | 重置位置 | string |
120
+ | `min(id)` | 最小化 | string |
121
+ | `full(id)` | 最大化 | string |
122
+ | `revert(id)` | 复原 | string |
123
+
124
+ ### LayerProps
125
+
126
+ | 属性 | 说明 | 类型 | 默认值 |
127
+ |------|------|------|--------|
128
+ | type | 弹层类型 | 0-7 / 'dialog' / 'page' / 'iframe' / 'loading' / 'drawer' / 'photos' / 'notify' / 'prompt' | 1 |
129
+ | title | 标题 | string / VNode / boolean | '标题' |
130
+ | content | 内容 | string / VNode | - |
131
+ | area | 宽高 | string / string[] | 'auto' |
132
+ | offset | 位置 | string / string[] | 'auto' |
133
+ | shade | 显示遮罩 | boolean | true |
134
+ | shadeClose | 点击遮罩关闭 | boolean | true |
135
+ | shadeOpacity | 遮罩透明度 | string | '0.1' |
136
+ | move | 允许拖拽 | boolean | true |
137
+ | resize | 允许调整大小 | boolean | false |
138
+ | maxmin | 显示最大化/最小化按钮 | boolean | false |
139
+ | closeBtn | 显示关闭按钮 | boolean / string | '1' |
140
+ | btn | 自定义按钮 | BtnType[] | - |
141
+ | btnAlign | 按钮对齐 | 'l' / 'c' / 'r' | 'r' |
142
+ | anim | 动画类型 | 0-6 | 0 |
143
+ | icon | 图标 | number / string | - |
144
+ | time | 自动关闭时间(ms) | number | 0 |
145
+ | zIndex | 层级 | number | - |
146
+
147
+ ## 🎨 弹层类型
148
+
149
+ - **0 (dialog)** - 对话框
150
+ - **1 (page)** - 页面层
151
+ - **2 (iframe)** - iframe层
152
+ - **3 (loading)** - 加载层
153
+ - **4 (drawer)** - 抽屉
154
+ - **5 (photos)** - 图片层
155
+ - **6 (notify)** - 通知
156
+ - **7 (prompt)** - 输入层
157
+
158
+ ## 🎭 图标类型
159
+
160
+ - **1** - 成功 ✓
161
+ - **2** - 失败 ✕
162
+ - **3** - 疑问 ?
163
+ - **4** - 信息 ℹ
164
+ - **5** - 哭脸 ☹
165
+ - **6** - 笑脸 ☺
166
+ - **7** - 警告 !
167
+
168
+ ## 🎬 动画效果
169
+
170
+ - **0** - 默认缩放
171
+ - **1** - 从上掉落
172
+ - **2** - 从下飞入
173
+ - **3** - 从左飞入
174
+ - **4** - 旋转飞入
175
+ - **5** - 渐显
176
+ - **6** - 抖动
177
+
178
+ ## 📝 开发
179
+
180
+ ```bash
181
+ # 安装依赖
182
+ npm install
183
+
184
+ # 启动开发服务器
185
+ npm run dev
186
+
187
+ # 构建
188
+ npm run build
189
+ ```
190
+
191
+ ## 📄 License
192
+
193
+ MIT
194
+
195
+ ## 🙏 致谢
196
+
197
+ 本项目基于 [layui-vue](https://github.com/layui-vue/layui-vue) 的 layer 组件架构开发。
package/lib/index.css ADDED
@@ -0,0 +1 @@
1
+ .zan-icon-btn[data-v-8d683fcb]{position:relative;width:20px;height:20px;display:inline-block;cursor:pointer;color:#333;font-style:normal;text-align:center;padding:2px}.zan-icon-btn[data-v-8d683fcb]:hover{color:var(--global-primary-color)}.zan-tooltip[data-v-8d683fcb]{position:absolute;bottom:-32px;left:50%;transform:translate(-50%);padding:4px 8px;background-color:#000000bf;color:#fff;font-size:12px;white-space:nowrap;border-radius:4px;pointer-events:none;opacity:0;transition:opacity .3s;z-index:9999}.zan-tooltip[data-v-8d683fcb]:before{content:"";position:absolute;top:-4px;left:50%;transform:translate(-50%);width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(0,0,0,.75)}.zan-icon-btn:hover .zan-tooltip[data-v-8d683fcb]{opacity:1}.zan-icon-min[data-v-8d683fcb]:before{content:"";position:absolute;bottom:8px;left:0;width:16px;height:2px;text-align:center;background-color:currentColor}.zan-icon-max[data-v-8d683fcb]:before{content:"";position:absolute;top:4px;left:4px;width:12px;height:12px;border:2px solid currentColor}.zan-icon-full[data-v-8d683fcb]:before{content:"";position:absolute;top:4px;left:4px;width:12px;height:12px;border:2px solid currentColor}.zan-icon-restore[data-v-8d683fcb]:before{content:"";position:absolute;top:4px;left:4px;width:10px;height:10px;border:2px solid currentColor}.zan-icon-restore[data-v-8d683fcb]:after{content:"";position:absolute;top:6px;left:6px;width:10px;height:10px;border:2px solid currentColor;background:#fff}.zan-icon-close-btn[data-v-8d683fcb]:before,.zan-icon-close-btn[data-v-8d683fcb]:after{content:"";position:absolute;top:50%;left:50%;width:16px;height:2px;background-color:currentColor}.zan-icon-close-btn[data-v-8d683fcb]:before{transform:translate(-50%,-50%) rotate(45deg)}.zan-icon-close-btn[data-v-8d683fcb]:after{transform:translate(-50%,-50%) rotate(-45deg)}.zan-layer-close2[data-v-8d683fcb]:before,.zan-layer-close2[data-v-8d683fcb]:after{width:16px;height:2px}:root{--global-primary-color: #16baaa;--global-border-radius: 2px}.zan-layer-imgbar,.zan-layer-imgtit a,.zan-layer-tab .zan-layer-title span,.zan-layer-title{text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;user-select:none}.zan-layer,.zan-layer-shade{position:absolute;pointer-events:auto}.zan-layer-shade{top:0;left:0;width:100%;height:100%;background-color:#000}.zan-layer{top:0;left:0;display:flex;flex-direction:column;box-shadow:1px 1px 50px #0000004d;background-color:#fff;border-radius:var(--global-border-radius);padding:0;margin:0;will-change:transform,width,height;transform:translateZ(0);backface-visibility:hidden}.zan-layer-close{position:absolute}.zan-layer-content{position:relative;flex:1 1 auto}.zan-layer-dialog .zan-layer-content,.zan-layer-page .zan-layer-content{min-width:200px;min-height:100px}.zan-layer-border{border:1px solid #eeeeee;box-shadow:1px 1px 5px #0003}.zan-layer-btn a,.zan-layer-dialog .zan-layer-ico,.zan-layer-setwin a{display:inline-block;vertical-align:top}.zan-layer-resize{z-index:999999999;position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.zan-layer-resizing,.zan-layer-resizing *,.zan-layer-moving,.zan-layer-moving *{pointer-events:none}.zan-layer-anim{animation-fill-mode:both;animation-duration:.3s}.zan-layer-drawer-anim{animation-duration:.3s;animation-timing-function:cubic-bezier(.7,.3,.1,1)}@keyframes zan-layer-rl{0%{transform:translate3d(100%,0,0);opacity:1}to{transform:translateZ(0);opacity:1}}.zan-layer-anim-rl{animation-name:zan-layer-rl}@keyframes zan-layer-rl-close{0%{transform:translateZ(0)}to{transform:translate3d(100%,0,0)}}.zan-layer-anim-rl-close{animation-name:zan-layer-rl-close}@keyframes zan-layer-lr{0%{transform:translate3d(-100%,0,0);opacity:1}to{transform:translateZ(0);opacity:1}}.zan-layer-anim-lr{animation-name:zan-layer-lr}@keyframes zan-layer-lr-close{0%{transform:translateZ(0)}to{transform:translate3d(-100%,0,0)}}.zan-layer-anim-lr-close{animation-name:zan-layer-lr-close}@keyframes zan-layer-tb{0%{transform:translate3d(0,-100%,0);opacity:1;animation-timing-function:cubic-bezier(.7,.3,.1,1)}to{transform:translateZ(0);opacity:1;animation-timing-function:cubic-bezier(.7,.3,.1,1)}}.zan-layer-anim-tb{animation-name:zan-layer-tb}@keyframes zan-layer-tb-close{0%{transform:translateZ(0)}to{transform:translate3d(0,-100%,0)}}.zan-layer-anim-tb-close{animation-name:zan-layer-tb-close}@keyframes zan-layer-bt{0%{transform:translate3d(0,100%,0);opacity:1}to{transform:translateZ(0);opacity:1}}.zan-layer-anim-bt{animation-name:zan-layer-bt}@keyframes zan-layer-bt-close{0%{transform:translateZ(0)}to{transform:translate3d(0,100%,0)}}.zan-layer-anim-bt-close{animation-name:zan-layer-bt-close}@keyframes zan-layer-bounceIn{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.zan-layer-anim-00{animation-name:zan-layer-bounceIn}@keyframes zan-layer-zoomInDown{0%{opacity:0;transform:scale(.1) translateY(-2000px);animation-timing-function:ease-in-out}60%{opacity:1;transform:scale(.475) translateY(60px);animation-timing-function:ease-out}}.zan-layer-anim-01{animation-name:zan-layer-zoomInDown}@keyframes zan-layer-fadeInUpBig{0%{opacity:0;transform:translateY(2000px)}to{opacity:1;transform:translateY(0)}}.zan-layer-anim-02{animation-name:zan-layer-fadeInUpBig}@keyframes zan-layer-zoomInLeft{0%{opacity:0;transform:scale(.1) translate(-2000px);animation-timing-function:ease-in-out}60%{opacity:1;transform:scale(.475) translate(48px);animation-timing-function:ease-out}}.zan-layer-anim-03{animation-name:zan-layer-zoomInLeft}@keyframes zan-layer-rollIn{0%{opacity:0;transform:translate(-100%) rotate(-120deg)}to{opacity:1;transform:translate(0) rotate(0)}}.zan-layer-anim-04{animation-name:zan-layer-rollIn}@keyframes zan-layer-fadeIn{0%{opacity:0}to{opacity:1}}.zan-layer-anim-05{animation-name:zan-layer-fadeIn}@keyframes zan-layer-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-10px)}20%,40%,60%,80%{transform:translate(10px)}}.zan-layer-anim-06{animation-name:zan-layer-shake}.zan-layer-title{padding:0 100px 0 5px;height:36px;line-height:36px;border-bottom:1px solid #f0f0f0;font-size:14px;color:#333;overflow:hidden;border-radius:2px 2px 0 0;flex-shrink:0}.zan-layer-setwin{position:absolute;right:5px;top:5px;font-size:0;line-height:initial;display:flex;align-items:center;gap:5px}.zan-layer-setwin a{position:relative;width:16px;height:16px;margin-left:0;font-size:12px}.zan-layer-setwin i{position:relative;width:16px;height:16px;margin-left:0;font-size:16px;color:#333;cursor:pointer;transition:color .3s}.zan-layer-setwin i:hover{color:var(--global-primary-color)}.zan-layer-btn{text-align:right;padding:0 5px 5px;pointer-events:auto}.zan-layer-btn a{height:28px;line-height:28px;padding:0 5px;border-radius:var(--global-border-radius);border:1px solid #dedede;background-color:#fff;cursor:pointer;color:#333;font-weight:400;margin-left:5px}.zan-layer-btn-disabled{border-color:#eee!important;background-color:#fbfbfb!important;color:#d2d2d2!important;cursor:not-allowed!important}.zan-layer-btn .zan-layer-btn0{border-color:var(--global-primary-color);background-color:var(--global-primary-color);color:#fff}.zan-layer-btn-l{text-align:left}.zan-layer-btn-c{text-align:center}.zan-layer-dialog{min-width:300px}.zan-layer-dialog .zan-layer-content{position:relative;padding:5px;line-height:22px;word-break:break-all;overflow:hidden;font-size:13px;overflow-x:hidden;overflow-y:auto;color:#333}.zan-layer-msg{min-width:180px;border:1px solid rgba(220,220,220,.5);box-shadow:2px 0 8px #1d232908}.zan-layer-msg .zan-layer-content{padding:10px;text-align:center;line-height:22px;font-size:13px}.zan-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:#0009;color:#fff;border:none}.zan-layer-hui .zan-layer-content{padding:5px;text-align:center;color:#fff}.zan-layer-dialog .zan-layer-padding{padding:5px 5px 5px 50px;text-align:left}.zan-layer-drawer{border-radius:0}.zan-layer-drawer .zan-layer-content,.zan-layer-page .zan-layer-content{position:relative;overflow:auto;padding:5px;color:#333;font-size:13px;line-height:1.5}.zan-layer-drawer .zan-layer-btn,.zan-layer-iframe .zan-layer-btn,.zan-layer-page .zan-layer-btn{padding-top:5px}.zan-layer-iframe iframe{display:block;width:100%;height:100%}.zan-layer-loading{border-radius:100%;background:#000000b3;box-shadow:none;border:none}.zan-layer-loading .zan-layer-content{background:transparent;display:flex;align-items:center;justify-content:center;position:relative;min-width:auto;min-height:auto}.zan-layer-loading0{padding:15px}.zan-layer-loading0 .zan-layer-content{width:60px;height:24px;padding:0}.zan-layer-loading0 .zan-layer-content:after{content:"";position:absolute;width:60px;height:24px;background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjAiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCA2MCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSIjZmZmIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI0Ij48YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiBkdXI9IjFzIiB2YWx1ZXM9IjA7MTswIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49IjAiLz48L2NpcmNsZT48Y2lyY2xlIGN4PSIzMCIgY3k9IjEyIiByPSI0Ij48YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiBkdXI9IjFzIiB2YWx1ZXM9IjA7MTswIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49IjAuMzMzIi8+PC9jaXJjbGU+PGNpcmNsZSBjeD0iNDgiIGN5PSIxMiIgcj0iNCI+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgZHVyPSIxcyIgdmFsdWVzPSIwOzE7MCIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSIwLjY2NiIvPjwvY2lyY2xlPjwvc3ZnPg==) no-repeat center;background-size:contain}.zan-layer-loading1{padding:20px}.zan-layer-loading1 .zan-layer-content{width:40px;height:40px;padding:0}.zan-layer-loading1 .zan-layer-content:after{content:"";position:absolute;width:32px;height:32px;border:3px solid #fff;border-top-color:transparent;border-radius:50%;animation:zan-spin 1s linear infinite}.zan-layer-loading2{padding:20px}.zan-layer-loading2 .zan-layer-content{width:40px;height:40px;padding:0}.zan-layer-loading2 .zan-layer-content:after{content:"";position:absolute;width:32px;height:32px;border:4px solid;border-color:#fff transparent #fff transparent;border-radius:50%;animation:zan-spin 1.2s linear infinite}@keyframes zan-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.zan-layer-photos{background:#000000e6;box-shadow:none;border:none}.zan-layer-photos .zan-layer-content{overflow:hidden;text-align:center;background:transparent}.zan-layer-photos .zan-layer-phimg img{position:relative;width:100%;height:100%;display:inline-block;vertical-align:top;object-fit:contain}.zan-layer-imgnext,.zan-layer-imgprev{position:fixed;top:50%;width:40px;height:60px;margin-top:-30px;outline:0;font-size:40px;color:#fff;text-align:center;line-height:60px;cursor:pointer;text-decoration:none}.zan-layer-imgprev{left:30px}.zan-layer-imgnext{right:30px}.zan-layer-imgbar{position:fixed;left:0;right:0;bottom:0;width:100%;min-height:40px;height:auto;line-height:40px;background-color:#02000059;color:#fff;overflow:hidden;font-size:0;opacity:0;transition:all 1s ease-in-out;display:flex;flex-wrap:wrap;justify-content:center}.zan-layer-imgtit *{display:inline-block;vertical-align:top;font-size:12px}.zan-layer-imgtit a{max-width:65%;overflow:hidden;color:#fff}.zan-layer-imgtit em{padding-left:5px;font-style:normal}.zan-layer-imgbar .thumb-row{width:100%;display:flex;justify-content:center;align-self:center}.zan-layer-imgbar .thumb-box{width:100px;height:100px;margin:0;display:inline-flex;align-items:center;justify-content:center;position:relative}.zan-layer-imgbar .thumb-box-border{position:absolute;top:0;transition:all .2s ease-in-out;width:100px;height:100px;border:1px solid #5fb878;box-sizing:border-box}.zan-layer-imgbar img{max-width:100%;max-height:100%;object-fit:contain}@keyframes zan-layer-bounceOut{to{opacity:0;transform:scale(.7)}30%{transform:scale(1.05)}0%{transform:scale(1)}}.zan-layer-anim-close{animation-name:zan-layer-bounceOut;animation-fill-mode:both;animation-duration:.2s}.zan-layer-notifiy{border:none;box-shadow:none}.zan-layer-notifiy-wrapper{padding:5px 10px 5px 5px;box-sizing:border-box;background-color:#fff;overflow:hidden;border-radius:4px;border:1px solid #ebeef5;box-shadow:0 2px 8px #0000001a;min-width:280px;max-width:380px;transition:opacity .3s,transform .3s}.zan-layer-notifiy-wrapper .title{font-weight:600;font-size:14px;color:#303133;margin:0;display:flex;align-items:center;gap:8px;line-height:1.4}.zan-layer-notifiy-wrapper .content{font-size:13px;line-height:1.5;margin:8px 0 0;color:#606266;word-break:break-word}.zan-layer-notifiy-wrapper .content img{max-width:100%}.zan-icon-close{cursor:pointer;width:20px;height:20px;position:absolute;top:10px;right:10px;color:#909399;font-style:normal;font-size:16px;line-height:20px;transition:color .3s;display:flex;align-items:center;justify-content:center}.zan-icon-close svg{width:20px;height:20px}.zan-icon-close:hover{color:#333}.zan-layer-notifiy-transition{transition:top .3s ease-in-out,opacity .3s ease-in-out}.zan-layer-notifiy-wrapper .title .zan-icon{display:inline-block;position:inherit;margin:0;transform:scale(1);height:24px!important;width:24px!important;line-height:24px;font-size:16px;flex-shrink:0}.zan-icon{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:50%;text-align:center;line-height:1;font-style:normal;font-size:26px;font-weight:700;flex-shrink:0}.zan-icon-ico1{background-color:#67c23a;color:#fff}.zan-icon-ico1:before{content:"✓"}.zan-icon-ico2{background-color:#f56c6c;color:#fff}.zan-icon-ico2:before{content:"✕"}.zan-icon-ico3{background-color:#e6a23c;color:#fff}.zan-icon-ico3:before{content:"?"}.zan-icon-ico4{background-color:#409eff;color:#fff}.zan-icon-ico4:before{content:"ℹ"}.zan-icon-ico5{background-color:#e6a23c;color:#fff}.zan-icon-ico5:before{content:"☹"}.zan-icon-ico6{background-color:#67c23a;color:#fff}.zan-icon-ico6:before{content:"☺"}.zan-icon-ico7{background-color:#f56c6c;color:#fff}.zan-icon-ico7:before{content:"!"}.zan-icon-ico16{background:transparent}.zan-input,.zan-textarea{width:100%;padding:5px;border:1px solid #ddd;border-radius:var(--global-border-radius);font-size:13px;outline:none;box-sizing:border-box;font-family:inherit}.zan-input:focus,.zan-textarea:focus{border-color:var(--global-primary-color)}.zan-textarea{min-height:80px;resize:vertical;line-height:1.5}.zan-layer-dialog .zan-input,.zan-layer-dialog .zan-textarea{margin-top:8px}.zan-layer-dialog .zan-layer-content>.zan-input,.zan-layer-dialog .zan-layer-content>.zan-textarea{display:block;width:100%}.zan-layer-dialog .zan-layer-content .zan-input,.zan-layer-dialog .zan-layer-content .zan-textarea{width:100%}.zan-layer-msg .zan-icon{margin-right:10px;vertical-align:middle}.zan-layer-msg .zan-layer-content{display:flex;align-items:center;justify-content:center;padding:10px;min-height:48px}.zan-layer-dialog .zan-layer-padding .zan-icon{position:absolute;left:10px;top:10px}.zan-layer.zan-layer-min{z-index:99999}.zan-layer.zan-layer-min .zan-layer-title{cursor:default;-webkit-user-select:none;user-select:none}.zan-layer.zan-layer-min:hover{box-shadow:0 2px 8px #0000004d}.zan-layer.zan-layer-tips{background:transparent!important;box-shadow:none!important;border:none!important;padding:0!important}.zan-layer.zan-layer-tips .zan-layer-content{padding:0!important;min-width:auto!important;min-height:auto!important;background:transparent!important;overflow:visible!important}