@veltra/mobile 1.0.0 → 1.1.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.
Files changed (245) hide show
  1. package/package.json +32 -6
  2. package/src/components/_internal/bottom-sheet/bottom-sheet.vue +81 -0
  3. package/src/components/_internal/bottom-sheet/index.ts +1 -0
  4. package/src/components/_internal/bottom-sheet/style.scss +116 -0
  5. package/src/components/_internal/bottom-sheet/style.ts +1 -0
  6. package/src/components/_internal/overlay-container.ts +34 -0
  7. package/src/components/avatar/avatar.vue +44 -0
  8. package/src/components/avatar/index.ts +1 -0
  9. package/src/components/avatar/style.scss +53 -0
  10. package/src/components/avatar/style.ts +1 -0
  11. package/src/components/badge/badge.vue +59 -0
  12. package/src/components/badge/index.ts +1 -0
  13. package/src/components/badge/style.scss +62 -0
  14. package/src/components/badge/style.ts +1 -0
  15. package/src/components/button/button.vue +76 -0
  16. package/src/components/button/index.ts +1 -0
  17. package/src/components/button/style.scss +207 -0
  18. package/src/components/button/style.ts +1 -0
  19. package/src/components/card/card.vue +24 -0
  20. package/src/components/card/index.ts +1 -0
  21. package/src/components/card/style.scss +35 -0
  22. package/src/components/card/style.ts +1 -0
  23. package/src/components/cascade/cascade.vue +595 -0
  24. package/src/components/cascade/index.ts +1 -0
  25. package/src/components/cascade/node.ts +29 -0
  26. package/src/components/cascade/style.scss +424 -0
  27. package/src/components/cascade/style.ts +2 -0
  28. package/src/components/check-tag/check-tag.vue +35 -0
  29. package/src/components/check-tag/index.ts +1 -0
  30. package/src/components/check-tag/style.scss +46 -0
  31. package/src/components/check-tag/style.ts +1 -0
  32. package/src/components/checkbox/checkbox.vue +67 -0
  33. package/src/components/checkbox/index.ts +1 -0
  34. package/src/components/checkbox/style.scss +132 -0
  35. package/src/components/checkbox/style.ts +2 -0
  36. package/src/components/checkbox-group/checkbox-group.vue +94 -0
  37. package/src/components/checkbox-group/index.ts +1 -0
  38. package/src/components/checkbox-group/style.scss +57 -0
  39. package/src/components/checkbox-group/style.ts +2 -0
  40. package/src/components/collapse/collapse-item.vue +134 -0
  41. package/src/components/collapse/collapse.vue +117 -0
  42. package/src/components/collapse/di.ts +18 -0
  43. package/src/components/collapse/index.ts +3 -0
  44. package/src/components/collapse/style.scss +157 -0
  45. package/src/components/collapse/style.ts +1 -0
  46. package/src/components/date-picker/date-picker.vue +326 -0
  47. package/src/components/date-picker/index.ts +1 -0
  48. package/src/components/date-picker/style.scss +236 -0
  49. package/src/components/date-picker/style.ts +2 -0
  50. package/src/components/descriptions/descriptions-item.vue +12 -0
  51. package/src/components/descriptions/descriptions.vue +50 -0
  52. package/src/components/descriptions/index.ts +2 -0
  53. package/src/components/descriptions/style.scss +120 -0
  54. package/src/components/descriptions/style.ts +1 -0
  55. package/src/components/dialog/dialog.vue +143 -0
  56. package/src/components/dialog/index.ts +1 -0
  57. package/src/components/dialog/style.scss +163 -0
  58. package/src/components/dialog/style.ts +4 -0
  59. package/src/components/divider/divider.vue +29 -0
  60. package/src/components/divider/index.ts +1 -0
  61. package/src/components/divider/style.scss +91 -0
  62. package/src/components/divider/style.ts +1 -0
  63. package/src/components/drawer/drawer.vue +168 -0
  64. package/src/components/drawer/index.ts +1 -0
  65. package/src/components/drawer/style.scss +240 -0
  66. package/src/components/drawer/style.ts +2 -0
  67. package/src/components/empty/empty.vue +22 -0
  68. package/src/components/empty/index.ts +1 -0
  69. package/src/components/empty/style.scss +36 -0
  70. package/src/components/empty/style.ts +1 -0
  71. package/src/components/form/form.vue +119 -0
  72. package/src/components/form/index.ts +1 -0
  73. package/src/components/form/is-field-modified.ts +16 -0
  74. package/src/components/form/style.scss +58 -0
  75. package/src/components/form/style.ts +2 -0
  76. package/src/components/form/use-form-fields.ts +115 -0
  77. package/src/components/form/use-node-interceptor.ts +101 -0
  78. package/src/components/form-item/form-item.vue +171 -0
  79. package/src/components/form-item/helper.ts +9 -0
  80. package/src/components/form-item/index.ts +1 -0
  81. package/src/components/form-item/style.scss +121 -0
  82. package/src/components/form-item/style.ts +1 -0
  83. package/src/components/form-item/validate.ts +131 -0
  84. package/src/components/icon/icon.vue +23 -0
  85. package/src/components/icon/index.ts +1 -0
  86. package/src/components/icon/style.scss +37 -0
  87. package/src/components/icon/style.ts +1 -0
  88. package/src/components/input/index.ts +1 -0
  89. package/src/components/input/input.vue +187 -0
  90. package/src/components/input/style.scss +121 -0
  91. package/src/components/input/style.ts +1 -0
  92. package/src/components/list/index.ts +3 -0
  93. package/src/components/list/list-item.vue +20 -0
  94. package/src/components/list/list.vue +20 -0
  95. package/src/components/list/style.scss +50 -0
  96. package/src/components/list/style.ts +1 -0
  97. package/src/components/loading/directive.ts +34 -0
  98. package/src/components/loading/index.ts +3 -0
  99. package/src/components/loading/loading.vue +25 -0
  100. package/src/components/loading/style.scss +179 -0
  101. package/src/components/loading/style.ts +2 -0
  102. package/src/components/message/helper.ts +28 -0
  103. package/src/components/message/index.ts +3 -0
  104. package/src/components/message/message-box.vue +31 -0
  105. package/src/components/message/message.ts +122 -0
  106. package/src/components/message/message.vue +54 -0
  107. package/src/components/message/style.scss +130 -0
  108. package/src/components/message/style.ts +1 -0
  109. package/src/components/message-confirm/index.ts +3 -0
  110. package/src/components/message-confirm/message-confirm-box.vue +36 -0
  111. package/src/components/message-confirm/message-confirm.ts +139 -0
  112. package/src/components/message-confirm/message-confirm.vue +53 -0
  113. package/src/components/message-confirm/style.scss +138 -0
  114. package/src/components/message-confirm/style.ts +1 -0
  115. package/src/components/multi-select/index.ts +1 -0
  116. package/src/components/multi-select/multi-select.vue +410 -0
  117. package/src/components/multi-select/style.scss +376 -0
  118. package/src/components/multi-select/style.ts +2 -0
  119. package/src/components/number-input/index.ts +1 -0
  120. package/src/components/number-input/number-input.vue +407 -0
  121. package/src/components/number-input/style.scss +118 -0
  122. package/src/components/number-input/style.ts +2 -0
  123. package/src/components/password-input/index.ts +1 -0
  124. package/src/components/password-input/password-input.vue +134 -0
  125. package/src/components/password-input/style.scss +40 -0
  126. package/src/components/password-input/style.ts +2 -0
  127. package/src/components/progress/index.ts +1 -0
  128. package/src/components/progress/progress.vue +90 -0
  129. package/src/components/progress/style.scss +73 -0
  130. package/src/components/progress/style.ts +1 -0
  131. package/src/components/radio/index.ts +1 -0
  132. package/src/components/radio/radio.vue +57 -0
  133. package/src/components/radio/style.scss +113 -0
  134. package/src/components/radio/style.ts +1 -0
  135. package/src/components/radio-group/index.ts +1 -0
  136. package/src/components/radio-group/radio-group.vue +60 -0
  137. package/src/components/radio-group/style.scss +29 -0
  138. package/src/components/radio-group/style.ts +2 -0
  139. package/src/components/segment/index.ts +1 -0
  140. package/src/components/segment/segment.vue +121 -0
  141. package/src/components/segment/style.scss +118 -0
  142. package/src/components/segment/style.ts +1 -0
  143. package/src/components/select/index.ts +1 -0
  144. package/src/components/select/select.vue +278 -0
  145. package/src/components/select/style.scss +237 -0
  146. package/src/components/select/style.ts +2 -0
  147. package/src/components/select/use-options.ts +195 -0
  148. package/src/components/skeleton/index.ts +1 -0
  149. package/src/components/skeleton/skeleton.vue +37 -0
  150. package/src/components/skeleton/style.scss +95 -0
  151. package/src/components/skeleton/style.ts +1 -0
  152. package/src/components/space/index.ts +1 -0
  153. package/src/components/space/space.vue +45 -0
  154. package/src/components/space/style.scss +41 -0
  155. package/src/components/space/style.ts +1 -0
  156. package/src/components/steps/index.ts +1 -0
  157. package/src/components/steps/steps.vue +114 -0
  158. package/src/components/steps/style.scss +231 -0
  159. package/src/components/steps/style.ts +1 -0
  160. package/src/components/switch/index.ts +1 -0
  161. package/src/components/switch/style.scss +137 -0
  162. package/src/components/switch/style.ts +1 -0
  163. package/src/components/switch/switch.vue +63 -0
  164. package/src/components/tabs/index.ts +1 -0
  165. package/src/components/tabs/style.scss +285 -0
  166. package/src/components/tabs/style.ts +1 -0
  167. package/src/components/tabs/tabs.vue +127 -0
  168. package/src/components/tag/index.ts +1 -0
  169. package/src/components/tag/style.scss +114 -0
  170. package/src/components/tag/style.ts +1 -0
  171. package/src/components/tag/tag.vue +49 -0
  172. package/src/components/text/index.ts +1 -0
  173. package/src/components/text/style.scss +63 -0
  174. package/src/components/text/style.ts +1 -0
  175. package/src/components/text/text.vue +63 -0
  176. package/src/components/textarea/index.ts +1 -0
  177. package/src/components/textarea/style.scss +124 -0
  178. package/src/components/textarea/style.ts +1 -0
  179. package/src/components/textarea/textarea.vue +121 -0
  180. package/src/components/textarea/utils.ts +11 -0
  181. package/src/components/time-picker/index.ts +1 -0
  182. package/src/components/time-picker/style.scss +216 -0
  183. package/src/components/time-picker/style.ts +2 -0
  184. package/src/components/time-picker/time-picker.vue +263 -0
  185. package/src/components/timeline/index.ts +2 -0
  186. package/src/components/timeline/style.scss +107 -0
  187. package/src/components/timeline/style.ts +1 -0
  188. package/src/components/timeline/timeline-item.vue +43 -0
  189. package/src/components/timeline/timeline.vue +16 -0
  190. package/src/components/uploader/index.ts +1 -0
  191. package/src/components/uploader/style.scss +220 -0
  192. package/src/components/uploader/style.ts +1 -0
  193. package/src/components/uploader/uploader.vue +306 -0
  194. package/src/env.d.ts +7 -0
  195. package/src/index.ts +99 -1
  196. package/src/shared/bem.ts +12 -0
  197. package/src/shared/use-scroll-lock.ts +111 -0
  198. package/src/shared/use-touch-gesture.ts +150 -0
  199. package/src/styles/_tokens.scss +129 -0
  200. package/src/types/avatar.ts +31 -0
  201. package/src/types/badge.ts +28 -0
  202. package/src/types/button.ts +48 -0
  203. package/src/types/card.ts +16 -0
  204. package/src/types/cascade.ts +87 -0
  205. package/src/types/check-tag.ts +24 -0
  206. package/src/types/checkbox-group.ts +20 -0
  207. package/src/types/checkbox.ts +15 -0
  208. package/src/types/collapse.ts +79 -0
  209. package/src/types/date-picker.ts +39 -0
  210. package/src/types/descriptions.ts +22 -0
  211. package/src/types/dialog.ts +54 -0
  212. package/src/types/divider.ts +14 -0
  213. package/src/types/drawer.ts +38 -0
  214. package/src/types/empty.ts +19 -0
  215. package/src/types/form-item.ts +22 -0
  216. package/src/types/form.ts +54 -0
  217. package/src/types/icon.ts +10 -0
  218. package/src/types/input.ts +51 -0
  219. package/src/types/list.ts +13 -0
  220. package/src/types/loading.ts +20 -0
  221. package/src/types/message-confirm.ts +72 -0
  222. package/src/types/message.ts +71 -0
  223. package/src/types/multi-select.ts +38 -0
  224. package/src/types/number-input.ts +32 -0
  225. package/src/types/password-input.ts +19 -0
  226. package/src/types/progress.ts +22 -0
  227. package/src/types/radio-group.ts +33 -0
  228. package/src/types/radio.ts +18 -0
  229. package/src/types/segment.ts +42 -0
  230. package/src/types/select.ts +63 -0
  231. package/src/types/skeleton.ts +29 -0
  232. package/src/types/space.ts +22 -0
  233. package/src/types/steps.ts +67 -0
  234. package/src/types/switch.ts +17 -0
  235. package/src/types/tabs.ts +63 -0
  236. package/src/types/tag.ts +19 -0
  237. package/src/types/text.ts +28 -0
  238. package/src/types/textarea.ts +76 -0
  239. package/src/types/time-picker.ts +40 -0
  240. package/src/types/timeline.ts +15 -0
  241. package/src/types/uploader.ts +50 -0
  242. package/.turbo/turbo-build.log +0 -2
  243. package/.turbo/turbo-check-types.log +0 -1
  244. package/tsconfig.json +0 -12
  245. package/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,376 @@
1
+ @use 'pkg:@veltra/styles/mixins' as m with ($namespace: um);
2
+ @use 'pkg:@veltra/styles/functions' as fn;
3
+ @use '../../styles/tokens' as t;
4
+
5
+ $root-name: multi-select;
6
+
7
+ @include m.b($root-name) {
8
+ display: flex;
9
+ align-items: center;
10
+ width: 100%;
11
+ box-sizing: border-box;
12
+ gap: t.use-var('spacing-sm');
13
+ padding: 0 t.use-var('spacing-md');
14
+ border: fn.use-var(border);
15
+ border-radius: t.control-radius(default);
16
+ background-color: fn.use-var(bg-color, top);
17
+ color: fn.use-var(text-color, main);
18
+ font-size: t.use-var('font-size-main');
19
+ cursor: pointer;
20
+ -webkit-tap-highlight-color: transparent;
21
+ transition:
22
+ border-color fn.use-var(transition, fast) fn.use-var(transition, ease),
23
+ box-shadow fn.use-var(transition, fast) fn.use-var(transition, ease);
24
+
25
+ // 触控热区:任何尺寸的可点击区域不小于 44×44,高度走移动端密度 token
26
+ @include m.size using ($size) {
27
+ min-height: max(t.control-height($size), t.use-var('touch-target'));
28
+ }
29
+
30
+ &:active {
31
+ border-color: fn.use-var(color, primary);
32
+ }
33
+
34
+ &:focus-visible {
35
+ box-shadow: fn.use-var(focus-ring);
36
+ }
37
+
38
+ @include m.is(active) {
39
+ border-color: fn.use-var(color, primary);
40
+
41
+ @include m.bem($root-name, arrow) {
42
+ transform: rotate(180deg);
43
+ }
44
+ }
45
+
46
+ @include m.is(disabled) {
47
+ cursor: not-allowed;
48
+ color: fn.use-var(text-color, disabled);
49
+ background-color: fn.use-var(bg-color, middle);
50
+
51
+ @include m.bem($root-name, arrow) {
52
+ color: fn.use-var(text-color, disabled);
53
+ }
54
+ }
55
+
56
+ @include m.e(value) {
57
+ flex: 1;
58
+ min-width: 0;
59
+ @include m.ellipsis;
60
+
61
+ @include m.is(placeholder) {
62
+ color: fn.use-var(text-color, placeholder);
63
+ }
64
+ }
65
+
66
+ // 触发器标签:单行呈现,超出由标签省略与 +N 计数兜底,不撑高表单行
67
+ @include m.e(tags) {
68
+ flex: 1;
69
+ min-width: 0;
70
+ display: flex;
71
+ flex-wrap: nowrap;
72
+ align-items: center;
73
+ gap: t.use-var('spacing-xs');
74
+ overflow: hidden;
75
+ }
76
+
77
+ // 只读态是纯展示(无 +N 计数兜底):恢复换行并补纵向呼吸空间,不裁剪标签
78
+ &.is-readonly {
79
+ padding-block: t.use-var('spacing-xs');
80
+
81
+ @include m.bem($root-name, tags) {
82
+ flex-wrap: wrap;
83
+ overflow: visible;
84
+ }
85
+ }
86
+
87
+ @include m.e(tag) {
88
+ display: inline-flex;
89
+ align-items: center;
90
+ min-width: 0;
91
+ box-sizing: border-box;
92
+ padding: t.use-var('spacing-xs') t.use-var('spacing-sm');
93
+ border-radius: t.control-radius(small);
94
+ background-color: fn.use-var(bg-color, middle);
95
+ color: fn.use-var(text-color, main);
96
+ font-size: t.use-var('font-size-secondary');
97
+
98
+ @include m.is(rest) {
99
+ flex-shrink: 0;
100
+ color: fn.use-var(text-color, second);
101
+ background-color: fn.use-var(bg-color, middle);
102
+ }
103
+ }
104
+
105
+ @include m.e(tag-label) {
106
+ min-width: 0;
107
+ @include m.ellipsis;
108
+ }
109
+
110
+ @include m.e(tag-close) {
111
+ // 关闭热区外扩补足(≥44×44 过大会挤占标签,取折中值并扩大点击域)
112
+ position: relative;
113
+ display: inline-flex;
114
+ align-items: center;
115
+ justify-content: center;
116
+ flex-shrink: 0;
117
+ width: 20px;
118
+ height: 20px;
119
+ margin-left: t.use-var('spacing-xs');
120
+ // 外扩量与 spacing-xs 同源,收回关闭钮在标签内边距中的占位
121
+ margin-right: calc(-1 * #{t.use-var('spacing-xs')});
122
+ border: none;
123
+ background: none;
124
+ padding: 0;
125
+ font-size: t.use-var('font-size-auxiliary');
126
+ color: fn.use-var(text-color, second);
127
+ cursor: pointer;
128
+
129
+ // 扩大点击域,不占据布局空间
130
+ &::before {
131
+ content: '';
132
+ position: absolute;
133
+ inset: -12px;
134
+ }
135
+
136
+ svg {
137
+ width: 1em;
138
+ height: 1em;
139
+ }
140
+
141
+ &:active {
142
+ color: fn.use-var(text-color, title);
143
+ }
144
+ }
145
+
146
+ @include m.e(icons) {
147
+ display: inline-flex;
148
+ align-items: center;
149
+ align-self: stretch;
150
+ flex-shrink: 0;
151
+ }
152
+
153
+ @include m.e(clear) {
154
+ // 清除热区 ≥44×44(高度受行高约束,用外扩补足)
155
+ display: inline-flex;
156
+ align-items: center;
157
+ justify-content: center;
158
+ min-width: t.use-var('touch-target');
159
+ min-height: t.use-var('touch-target');
160
+ // 热区外扩量(spacing-sm):补偿清除钮居中图标的两侧留白,不挤压视觉边距
161
+ margin: calc(-1 * #{t.use-var('spacing-sm')}) calc(-1 * #{t.use-var('spacing-sm')}) calc(-1 * #{t.use-var('spacing-sm')}) 0;
162
+ padding: 0;
163
+ border: none;
164
+ background: none;
165
+ font-size: t.use-var('font-size-main');
166
+ color: fn.use-var(text-color, second);
167
+ cursor: pointer;
168
+
169
+ svg {
170
+ width: 1em;
171
+ height: 1em;
172
+ }
173
+
174
+ &:active {
175
+ color: fn.use-var(text-color, title);
176
+ }
177
+ }
178
+
179
+ @include m.e(arrow) {
180
+ // 箭头热区 ≥44×44:随行高拉伸、宽度不小于触控热区下限
181
+ display: inline-flex;
182
+ align-items: center;
183
+ justify-content: center;
184
+ align-self: stretch;
185
+ min-width: t.use-var('touch-target');
186
+ color: fn.use-var(text-color, second);
187
+ font-size: t.use-var('font-size-secondary');
188
+ transition: transform fn.use-var(transition, fast) fn.use-var(transition, ease);
189
+
190
+ svg {
191
+ width: 1em;
192
+ height: 1em;
193
+ }
194
+ }
195
+
196
+ // 面板头部(取消 / 标题 / 确定):操作钮热区外扩量与 spacing-sm 同源
197
+ @include m.e(cancel, confirm) {
198
+ flex-shrink: 0;
199
+ min-width: t.use-var('touch-target');
200
+ min-height: t.use-var('touch-target');
201
+ margin: calc(-1 * #{t.use-var('spacing-sm')}) 0;
202
+ padding: 0;
203
+ border: none;
204
+ background: none;
205
+ font-size: t.use-var('font-size-main');
206
+ cursor: pointer;
207
+ -webkit-tap-highlight-color: transparent;
208
+ }
209
+
210
+ @include m.e(cancel) {
211
+ margin-left: calc(-1 * #{t.use-var('spacing-sm')});
212
+ color: fn.use-var(text-color, second);
213
+ }
214
+
215
+ @include m.e(confirm) {
216
+ margin-right: calc(-1 * #{t.use-var('spacing-sm')});
217
+ font-weight: 600;
218
+ color: fn.use-var(color, primary);
219
+
220
+ &:disabled {
221
+ color: fn.use-var(text-color, disabled);
222
+ }
223
+ }
224
+
225
+ @include m.e(title) {
226
+ flex: 1;
227
+ min-width: 0;
228
+ font-size: t.use-var('font-size-title');
229
+ font-weight: 600;
230
+ color: fn.use-var(text-color, title);
231
+ text-align: center;
232
+ @include m.ellipsis;
233
+ }
234
+
235
+ // 面板内搜索行
236
+ @include m.e(search) {
237
+ padding: t.use-var('spacing-sm') 0;
238
+ }
239
+
240
+ @include m.e(search-input) {
241
+ // 字号 ≥16px(placeholder 继承同字号):iOS Safari 聚焦不触发页面缩放
242
+ width: 100%;
243
+ box-sizing: border-box;
244
+ min-height: t.use-var('touch-target');
245
+ padding: 0 t.use-var('spacing-md');
246
+ border: fn.use-var(border);
247
+ border-radius: t.control-radius(default);
248
+ background-color: fn.use-var(bg-color, middle);
249
+ color: fn.use-var(text-color, main);
250
+ font-size: t.use-var('font-size-main');
251
+ outline: none;
252
+ -webkit-appearance: none;
253
+
254
+ &::placeholder {
255
+ color: fn.use-var(text-color, placeholder);
256
+ }
257
+
258
+ &:focus {
259
+ border-color: fn.use-var(color, primary);
260
+ }
261
+ }
262
+
263
+ // 全选栏
264
+ @include m.e(content-header) {
265
+ display: flex;
266
+ align-items: center;
267
+ justify-content: space-between;
268
+ padding: t.use-var('spacing-sm') 0;
269
+ }
270
+
271
+ @include m.e(check-all) {
272
+ display: inline-flex;
273
+ align-items: center;
274
+ gap: t.use-var('spacing-sm');
275
+ min-height: t.use-var('touch-target');
276
+ padding: 0;
277
+ border: none;
278
+ background: none;
279
+ color: fn.use-var(text-color, main);
280
+ font-size: t.use-var('font-size-main');
281
+ cursor: pointer;
282
+ -webkit-tap-highlight-color: transparent;
283
+
284
+ @include m.is(disabled) {
285
+ cursor: not-allowed;
286
+ color: fn.use-var(text-color, disabled);
287
+ }
288
+ }
289
+
290
+ @include m.e(count) {
291
+ color: fn.use-var(text-color, second);
292
+ font-size: t.use-var('font-size-auxiliary');
293
+ }
294
+
295
+ // 选项列表
296
+ @include m.e(options) {
297
+ list-style: none;
298
+ margin: 0;
299
+ padding: 0;
300
+ display: flex;
301
+ flex-direction: column;
302
+ gap: t.use-var('spacing-xs');
303
+ }
304
+
305
+ @include m.e(option) {
306
+ // 选项整行热区 ≥44×44
307
+ display: flex;
308
+ align-items: center;
309
+ min-height: t.use-var('touch-target');
310
+ gap: t.use-var('spacing-md');
311
+ padding: 0 t.use-var('spacing-md');
312
+ border-radius: t.control-radius(default);
313
+ color: fn.use-var(text-color, main);
314
+ user-select: none;
315
+ cursor: pointer;
316
+
317
+ &:active {
318
+ background-color: fn.use-var(bg-color, hover);
319
+ }
320
+
321
+ @include m.is(disabled) {
322
+ cursor: not-allowed;
323
+ color: fn.use-var(text-color, disabled);
324
+
325
+ &:active {
326
+ background-color: transparent;
327
+ }
328
+ }
329
+ }
330
+
331
+ @include m.e(option-label) {
332
+ flex: 1;
333
+ min-width: 0;
334
+ @include m.ellipsis;
335
+ }
336
+
337
+ // 勾选框视觉(内部实现,非 checkbox 组件):20px 下限与 checkbox 指示器同规格,
338
+ // 对钩随辅助字号(1em)
339
+ @include m.e(checkbox) {
340
+ display: inline-flex;
341
+ align-items: center;
342
+ justify-content: center;
343
+ flex-shrink: 0;
344
+ width: 20px;
345
+ height: 20px;
346
+ border: 1px solid fn.use-var(border-color);
347
+ border-radius: t.control-radius(small);
348
+ color: fn.use-var(text-color, white);
349
+ font-size: t.use-var('font-size-secondary');
350
+ transition:
351
+ background-color fn.use-var(transition, fast) fn.use-var(transition, ease),
352
+ border-color fn.use-var(transition, fast) fn.use-var(transition, ease);
353
+
354
+ svg {
355
+ width: 1em;
356
+ height: 1em;
357
+ }
358
+
359
+ @include m.is(checked) {
360
+ border-color: fn.use-var(color, primary);
361
+ background-color: fn.use-var(color, primary);
362
+ }
363
+ }
364
+
365
+ @include m.e(empty) {
366
+ padding: t.use-var('spacing-lg') 0;
367
+ text-align: center;
368
+ color: fn.use-var(text-color, second);
369
+ }
370
+
371
+ @include m.e(loading) {
372
+ padding: t.use-var('spacing-lg') 0;
373
+ text-align: center;
374
+ color: fn.use-var(text-color, second);
375
+ }
376
+ }
@@ -0,0 +1,2 @@
1
+ import '../_internal/bottom-sheet/style'
2
+ import './style.scss'
@@ -0,0 +1 @@
1
+ export { default as UNumberInput } from './number-input.vue'