@yup/taro-ui 1.0.0 → 1.2.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 CHANGED
@@ -106,8 +106,8 @@ src/components/
106
106
  │ ├── demo2.tsx # 示例2
107
107
  │ └── ...
108
108
  └── style/ # 样式目录
109
- ├── index.ts # 样式入口(用于按需加载)
110
- └── index.less # 组件样式
109
+ ├── index.ts # 样式入口(用于按需加载)导入index.less
110
+ └── index.less # 组件样式入口
111
111
  ```
112
112
 
113
113
  ### 组件编写规范
@@ -152,6 +152,8 @@ export type { ButtonProps } from './components/button';
152
152
  import './index.less';
153
153
  ```
154
154
 
155
+ > **⚠️ 重要提示:** 每新增一个组件时,需要在 `src/style/index.less` 中手动导入组件的 less 文件,这个样式文件用于提供给全局样式导入。
156
+
155
157
  ### Demo 编写规范
156
158
 
157
159
  ```tsx
@@ -225,6 +227,42 @@ toc: content
225
227
 
226
228
  ---
227
229
 
230
+ ## 新增组件流程
231
+
232
+ 1. 在 `src/components` 中新增组件文件夹
233
+ 2. 在新增的组件文件目录中增加 `index.tsx` 出口
234
+ 3. 在新增的组件文件目录中增加 `style` 文件目录
235
+ 4. 在 `style` 文件目录中增加 `index.ts` 样式导出入口
236
+ 5. 在 `style` 目录下增加 `index.less` 入口作为 less 文件的导入入口
237
+ 6. 编写组件
238
+ 7. 编写 demo,在组件目录下增加 `demos` 文件目录,并在其中实现 demo
239
+ 8. 组件编写完成后在 `src/style/index.less` 中导入组件的 less 文件(提供给全局引入样式的方式使用)
240
+ 9. 在根目录 `docs/components` 目录下增加组件文档说明
241
+ 10. 在 `.dumirc.ts` 文件中增加文档的配置
242
+ 11. `yarn start` 启动文档查看
243
+
244
+ ---
245
+
246
+ ## designWidth 适配说明
247
+
248
+ `@yup/taro-ui` 的 designWidth 为 **750**。
249
+
250
+ 如果你的项目 designWidth 为 375,显示效果会是两倍大。可以通过修改 Less 变量 `@hd` 进行适配:
251
+
252
+ ```js
253
+ // config/index.js
254
+ module.exports = {
255
+ // ...
256
+ less: {
257
+ modifyVars: {
258
+ "@hd": "1"
259
+ }
260
+ }
261
+ }
262
+ ```
263
+
264
+ ---
265
+
228
266
  ## License
229
267
 
230
268
  MIT
@@ -0,0 +1,2 @@
1
+ import '../../../global/theme-default.css';
2
+ import './index.css';
@@ -91,8 +91,8 @@ page {
91
91
  margin-left: 0;
92
92
  }
93
93
  .ypmini-dialog-footer-btn {
94
- height: 40px;
95
- line-height: 40px;
94
+ height: 80px;
95
+ line-height: 80px;
96
96
  }
97
97
  .ypmini-dialog-btn {
98
98
  flex: 1;
@@ -1,11 +1,11 @@
1
1
  @font-face {
2
- font-family: "iconfont";
2
+ font-family: "ypiconfont";
3
3
  /* Project id 5088009 */
4
- src: url('iconfont.woff2?t=1767782477263') format('woff2'), url('iconfont.woff?t=1767782477263') format('woff'), url('iconfont.ttf?t=1767782477263') format('truetype');
4
+ src: url('https://at.alicdn.com/t/c/font_5088009_asy85y6kx4o.woff2?t=1768016348526') format('woff2'), url('https://at.alicdn.com/t/c/font_5088009_asy85y6kx4o.woff?t=1768016348526') format('woff'), url('https://at.alicdn.com/t/c/font_5088009_asy85y6kx4o.ttf?t=1768016348526') format('truetype');
5
5
  }
6
6
  .iconfont {
7
- font-family: "iconfont" !important;
8
- font-size: 16px;
7
+ font-family: "ypiconfont" !important;
8
+ font-size: 32px;
9
9
  font-style: normal;
10
10
  -webkit-font-smoothing: antialiased;
11
11
  -moz-osx-font-smoothing: grayscale;
@@ -1,5 +1,5 @@
1
1
  :root,
2
- pgae {
2
+ page {
3
3
  --ypmini-media-uploader-button-width: calc(106px * var(--ypmini-hd));
4
4
  --ypmini-media-uploader-button-height: calc(106px * var(--ypmini-hd));
5
5
  --ypmini-media-uploader-button-border-radius: calc(8px * var(--ypmini-hd));
@@ -13,6 +13,7 @@ page {
13
13
  .ypmini-picker-view-wrapper {
14
14
  position: relative;
15
15
  height: 100%;
16
+ min-height: 400px;
16
17
  }
17
18
  .ypmini-picker-view {
18
19
  height: 100%;
@@ -24,11 +25,11 @@ page {
24
25
  background: var(--ypmini-picker-view-indicator-background-color);
25
26
  z-index: 0;
26
27
  }
27
- .ypmini-picker-view-column::first-child .ypmini-picker-view-indicator {
28
+ .ypmini-picker-view-column:first-child .ypmini-picker-view-indicator {
28
29
  border-top-left-radius: var(--ypmini-picker-view-indicator-border-radius);
29
30
  border-bottom-left-radius: var(--ypmini-picker-view-indicator-border-radius);
30
31
  }
31
- .ypmini-picker-view-column::last-child .ypmini-picker-view-indicator {
32
+ .ypmini-picker-view-column:last-child .ypmini-picker-view-indicator {
32
33
  border-top-right-radius: var(--ypmini-picker-view-indicator-border-radius);
33
34
  border-bottom-right-radius: var(--ypmini-picker-view-indicator-border-radius);
34
35
  }
@@ -41,7 +42,6 @@ page {
41
42
  height: var(--ypmini-picker-view-column-height);
42
43
  background: var(--ypmini-picker-view-indicator-background-color);
43
44
  z-index: 0;
44
- border-radius: 16px;
45
45
  border-bottom: unset;
46
46
  border-top: unset;
47
47
  }
@@ -55,7 +55,7 @@ page {
55
55
  border-radius: var(--ypmini-popup-border-radius) var(--ypmini-popup-border-radius) 0 0;
56
56
  }
57
57
  .ypmini-popup-header {
58
- padding: 16px;
58
+ padding: 32px;
59
59
  display: flex;
60
60
  max-width: 100%;
61
61
  align-items: center;
@@ -65,7 +65,7 @@ page {
65
65
  color: var(--ypmini-popup-cancel-text-font-color);
66
66
  font-weight: 400;
67
67
  font-size: var(--ypmini-popup-cancel-text-fontsize);
68
- flex: 0 0 56px;
68
+ flex: 0 0 60px;
69
69
  white-space: nowrap;
70
70
  text-align: left;
71
71
  }
@@ -85,7 +85,7 @@ page {
85
85
  color: var(--ypmini-popup-confirm-text-font-color);
86
86
  font-weight: 400;
87
87
  font-size: var(--ypmini-popup-confirm-text-fontsize);
88
- flex: 0 0 56px;
88
+ flex: 0 0 60px;
89
89
  white-space: nowrap;
90
90
  text-align: right;
91
91
  }
@@ -0,0 +1,54 @@
1
+ :root,
2
+ page {
3
+ --radio-button-font-size: calc(17px * var(--ypmini-hd));
4
+ --radio-button-border-radius: calc(8px * var(--ypmini-hd));
5
+ --radio-button-background-color: #f5f7fc;
6
+ --radio-button-text-color: #000000d9;
7
+ --radio-button-checked-background-color: #e0f3ff;
8
+ --radio-button-checked-text-color: var(--ypmini-primary-color);
9
+ --radio-button-checked-border-color: var(--ypmini-primary-color);
10
+ --radio-button-height: calc(52px * var(--ypmini-hd));
11
+ --radio-default-size: calc(16px * var(--ypmini-hd));
12
+ }
13
+ .ypmini-taro-radio-default-inner {
14
+ width: var(--radio-default-size);
15
+ height: var(--radio-default-size);
16
+ border-radius: 100%;
17
+ }
18
+ .ypmini-taro-radio-default-inner-checked::before {
19
+ content: "☑️";
20
+ }
21
+ .ypmini-taro-radio-button-inner {
22
+ background-color: var(--radio-button-background-color);
23
+ color: var(--radio-button-text-color);
24
+ font-size: var(--radio-button-font-size);
25
+ text-align: center;
26
+ padding: 0px 32px;
27
+ height: var(--radio-button-height);
28
+ line-height: var(--radio-button-height);
29
+ box-sizing: border-box;
30
+ border-radius: var(--radio-button-border-radius);
31
+ }
32
+ .ypmini-taro-radio-button-inner-checked {
33
+ background-color: var(--radio-button-checked-background-color);
34
+ color: var(--radio-button-checked-text-color);
35
+ border-color: var(--radio-button-checked-border-color);
36
+ border-width: 2px;
37
+ border-style: solid;
38
+ }
39
+ .ypmini-radio-group {
40
+ display: flex;
41
+ width: 100%;
42
+ }
43
+ .ypmini-radio-group-block {
44
+ display: block;
45
+ }
46
+ .ypmini-radio-group-button {
47
+ display: flex;
48
+ }
49
+ .ypmini-radio-group .ypmini-taro-radio-button {
50
+ flex: 1;
51
+ }
52
+ .ypmini-radio-group .ypmini-taro-radio:not(:first-child) {
53
+ margin-left: 24px;
54
+ }
@@ -1,3 +1,2 @@
1
1
  import '../../../global/theme-default.less';
2
- import './radio.less';
3
- import './group.less';
2
+ import './index.less';
@@ -1,3 +1,2 @@
1
1
  import '../../../global/theme-default.css';
2
- import './radio.css';
3
- import './group.css';
2
+ import './index.css';
@@ -1,6 +1,16 @@
1
1
  import React from 'react';
2
- import { SwitchProps as TaroSwitchProps } from '@tarojs/components';
3
- export interface SwitchProps extends TaroSwitchProps {
2
+ import { ViewProps } from '@tarojs/components';
3
+ export interface SwitchProps extends Omit<ViewProps, 'onChange'> {
4
+ /** 是否选中 */
5
+ checked?: boolean;
6
+ /** 默认是否选中 */
7
+ defaultChecked?: boolean;
8
+ /** 是否禁用 */
9
+ disabled?: boolean;
10
+ /** 开关打开时的背景颜色 */
11
+ color?: string;
12
+ /** 状态改变时触发 */
13
+ onChange?: (checked: boolean) => void;
4
14
  }
5
15
  declare const Switch: React.FC<SwitchProps>;
6
16
  export default Switch;
@@ -1 +1 @@
1
- import{objectWithoutProperties as r,objectSpread2 as a}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as o}from"react/jsx-runtime";import s from"classnames";import{Switch as t}from"@tarojs/components";var e=["className"],m=function(m){var i=m.className,c=r(m,e);return o(t,a({className:s("ypmini-switch",i),color:"#0092ff"},c))};export{m as default};
1
+ import{objectWithoutProperties as e,slicedToArray as i,objectSpread2 as o}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a}from"react/jsx-runtime";import{useState as c,useEffect as r}from"react";import s from"classnames";import{View as t}from"@tarojs/components";var l=["className","style","checked","defaultChecked","disabled","color","onChange"],n=function(n){var d=n.className,m=n.style,h=n.checked,p=n.defaultChecked,u=void 0!==p&&p,f=n.disabled,y=void 0!==f&&f,v=n.color,k=n.onChange,b=e(n,l),j=c(u),w=i(j,2),C=w[0],N=w[1],g=void 0!==h,x=g?h:C;r(function(){g||N(u)},[u,g]);var P=o(o({},m),x&&v?{"--ypmini-switch-checked-color":v}:{});return a(t,o(o({className:s("ypmini-switch",d,{"ypmini-switch-checked":x,"ypmini-switch-disabled":y}),style:P,onClick:function(){if(!y){var e=!x;g||N(e),null==k||k(e)}}},b),{},{children:a(t,{className:"ypmini-switch-handle"})}))};export{n as default};
@@ -1,38 +1,45 @@
1
1
  :root,
2
2
  page {
3
- --ypmini-witch-defalt-background-color: #e9edf3;
4
- --ypmini-switch-inner-size: calc(var(--ypmini-hd) * 16px);
5
- --yomini-switch-border-radius: calc(var(--ypmini-hd) * 12px);
6
- --yomini-switch-width: calc(var(--ypmini-hd) * 24px);
7
- --yomini-switch-height: calc(var(--ypmini-hd) * 48px);
3
+ --ypmini-switch-width: calc(var(--ypmini-hd) * 48px);
4
+ --ypmini-switch-height: calc(var(--ypmini-hd) * 24px);
5
+ --ypmini-switch-border-radius: calc(var(--ypmini-hd) * 12px);
6
+ --ypmini-switch-handle-size: calc(var(--ypmini-hd) * 18px);
7
+ --ypmini-switch-handle-margin: calc(var(--ypmini-hd) * 3px);
8
+ --ypmini-switch-background-color: #e9edf3;
9
+ --ypmini-switch-checked-color: var(--ypmini-primary-color);
10
+ --ypmini-switch-handle-color: #fff;
11
+ --ypmini-switch-duration: 200ms;
12
+ --ypmini-switch-disabled-opacity: 0.4;
8
13
  }
9
14
  .ypmini-switch {
10
- height: var(--yomini-switch-width);
11
- width: var(--yomini-switch-height);
12
- border-radius: var(--yomini-switch-border-radius);
13
- }
14
- .ypmini-switch .weui-switch {
15
- height: var(--yomini-switch-width);
16
- width: var(--yomini-switch-height);
17
- border-radius: var(--yomini-switch-border-radius);
18
- }
19
- .ypmini-switch .weui-switch:checked {
20
- background-color: var(--ypmini-primary-color);
21
- }
22
- .ypmini-switch .weui-switch:checked:after {
23
- transform: translate(46px);
24
- }
25
- .ypmini-switch .weui-switch::before,
26
- .ypmini-switch .weui-switch::after {
27
- width: var(--ypmini-switch-inner-size);
28
- height: var(--ypmini-switch-inner-size);
29
- border-radius: var(--ypmini-switch-inner-size);
30
- left: 8px;
31
- }
32
- .ypmini-switch .weui-switch:before {
33
- display: none;
34
- background-color: var(--ypmini-witch-defalt-background-color);
35
- }
36
- .ypmini-switch .weui-switch::after {
37
- top: 6px;
15
+ position: relative;
16
+ display: inline-flex;
17
+ align-items: center;
18
+ box-sizing: border-box;
19
+ width: var(--ypmini-switch-width);
20
+ height: var(--ypmini-switch-height);
21
+ border-radius: var(--ypmini-switch-border-radius);
22
+ background-color: var(--ypmini-switch-background-color);
23
+ transition: background-color var(--ypmini-switch-duration) ease;
24
+ cursor: pointer;
25
+ }
26
+ .ypmini-switch-checked {
27
+ background-color: var(--ypmini-switch-checked-color);
28
+ }
29
+ .ypmini-switch-checked .ypmini-switch-handle {
30
+ transform: translateX(calc(var(--ypmini-switch-width) - var(--ypmini-switch-handle-size) - var(--ypmini-switch-handle-margin) * 2));
31
+ }
32
+ .ypmini-switch-disabled {
33
+ opacity: var(--ypmini-switch-disabled-opacity);
34
+ cursor: not-allowed;
35
+ }
36
+ .ypmini-switch-handle {
37
+ position: absolute;
38
+ left: var(--ypmini-switch-handle-margin);
39
+ width: var(--ypmini-switch-handle-size);
40
+ height: var(--ypmini-switch-handle-size);
41
+ border-radius: 50%;
42
+ background-color: var(--ypmini-switch-handle-color);
43
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
44
+ transition: transform var(--ypmini-switch-duration) ease;
38
45
  }
@@ -19,6 +19,34 @@ page {
19
19
  --ypmini-font-size-mini: calc(13px * var(--ypmini-hd));
20
20
  --ypmini-mask-background: rgba(0, 0, 0, 0.65);
21
21
  }
22
+ page,
23
+ :root {
24
+ --ypmini-avatar-size-default: calc(24px * var(--ypmini-hd));
25
+ --ypmini-avatar-size-middle: calc(48px * var(--ypmini-hd));
26
+ --ypmini-avatar-border-radius: 100%;
27
+ }
28
+ .ypmini-avatar {
29
+ --size: var(--ypmini-avatar-size-default);
30
+ --border-radius: var(--ypmini-avatar-border-radius);
31
+ display: inline-flex;
32
+ align-items: center;
33
+ justify-content: center;
34
+ overflow: hidden;
35
+ width: var(--size);
36
+ height: var(--size);
37
+ border-radius: var(--border-radius);
38
+ }
39
+ .ypmini-avatar-default {
40
+ --size: var(--ypmini-avatar-size-default);
41
+ }
42
+ .ypmini-avatar-middle {
43
+ --size: var(--ypmini-avatar-size-middle);
44
+ }
45
+ .ypmini-avatar-image {
46
+ object-fit: cover;
47
+ height: 100%;
48
+ width: 100%;
49
+ }
22
50
  :root,
23
51
  page {
24
52
  --ypmini-border-radius: calc(8px * var(--ypmini-hd));
@@ -230,6 +258,275 @@ page {
230
258
  margin-top: 0px;
231
259
  }
232
260
  :root,
261
+ page {
262
+ --ypmini-city-selector-column-item-height: calc(48px * var(--ypmini-hd));
263
+ --ypmini-city-selector-column-item-font-size: var(--ypmini-font-size-default);
264
+ }
265
+ .ypmini-city-selector-wrapper {
266
+ position: relative;
267
+ height: 100%;
268
+ border-top: 1px solid var(--ypmini-border-color);
269
+ }
270
+ .ypmini-city-selector {
271
+ display: flex;
272
+ height: 100%;
273
+ }
274
+ .ypmini-city-selector-column {
275
+ flex: 1;
276
+ }
277
+ .ypmini-city-selector-column.ypmini-city-selector-column-secondary {
278
+ flex: 0 0 50%;
279
+ }
280
+ .ypmini-city-selector-column.ypmini-city-selector-column-secondary:first-child {
281
+ flex: 0 0 50%;
282
+ }
283
+ .ypmini-city-selector-column:first-child {
284
+ flex: 0 0 33.33%;
285
+ }
286
+ .ypmini-city-selector-column:not(:first-child):not(:last-child) {
287
+ border-right: 1px solid var(--ypmini-border-color);
288
+ }
289
+ .ypmini-city-selector-column-item-active {
290
+ font-weight: bold;
291
+ color: var(--ypmini-primary-color);
292
+ }
293
+ .ypmini-city-selector-column-1 {
294
+ background: #f5f6fa;
295
+ }
296
+ .ypmini-city-selector-column-1 .ypmini-city-selector-column-item-active {
297
+ position: relative;
298
+ background: #fff;
299
+ }
300
+ .ypmini-city-selector-column-1 .ypmini-city-selector-column-item-active:before {
301
+ position: absolute;
302
+ content: " ";
303
+ left: 0;
304
+ top: 50%;
305
+ transform: translateY(-50%);
306
+ width: 6px;
307
+ height: 40px;
308
+ border-radius: 0px 4px 4px 0px;
309
+ background: var(--ypmini-primary-color);
310
+ }
311
+ .ypmini-city-selector-column-item {
312
+ position: relative;
313
+ height: var(--ypmini-city-selector-column-item-height);
314
+ display: flex;
315
+ align-items: center;
316
+ padding-left: 24px;
317
+ font-size: var(--ypmini-city-selector-column-item-font-size);
318
+ }
319
+ .ypmini-city-selector-count-badge {
320
+ position: absolute;
321
+ right: 24px;
322
+ width: 28px;
323
+ height: 28px;
324
+ background: var(--ypmini-primary-color);
325
+ display: flex;
326
+ align-items: center;
327
+ justify-content: center;
328
+ font-weight: bold;
329
+ font-size: 20px;
330
+ color: #fff;
331
+ border-radius: 100%;
332
+ top: 50%;
333
+ transform: translateY(-50%);
334
+ }
335
+ .ypmini-city-selector-dot-badge {
336
+ position: absolute;
337
+ border-radius: 100%;
338
+ top: 50%;
339
+ right: 24px;
340
+ width: 12px;
341
+ height: 12px;
342
+ transform: translateY(-50%);
343
+ background: var(--ypmini-primary-color);
344
+ }
345
+ .ypmini-city-selector-checked-icon {
346
+ font-size: 32px;
347
+ position: absolute;
348
+ right: 24px;
349
+ color: var(--ypmini-primary-color);
350
+ top: 50%;
351
+ transform: translateY(-50%);
352
+ }
353
+ .ypmini-city-selector-panel {
354
+ position: absolute;
355
+ left: 0;
356
+ right: 0;
357
+ bottom: 0;
358
+ padding: 24px;
359
+ border-radius: 24px 24px 0px 0px;
360
+ background: #ffffff;
361
+ box-shadow: 0px -4px 8px rgba(50, 52, 60, 0.1);
362
+ }
363
+ .ypmini-city-selector-panel-header {
364
+ display: flex;
365
+ justify-content: space-between;
366
+ align-items: center;
367
+ }
368
+ .ypmini-city-selector-panel-title {
369
+ color: var(--ypmini-color-text);
370
+ font-weight: bold;
371
+ font-size: 32px;
372
+ }
373
+ .ypmini-city-selector-panel-count {
374
+ color: rgba(0, 0, 0, 0.45);
375
+ font-weight: 400;
376
+ font-size: 28px;
377
+ }
378
+ .ypmini-city-selector-panel-selected {
379
+ margin-top: 8px;
380
+ margin-left: -16px;
381
+ display: flex;
382
+ flex-wrap: wrap;
383
+ }
384
+ .ypmini-city-selector-panel-selected-item {
385
+ margin-left: 16px;
386
+ margin-top: 16px;
387
+ border-radius: 8px;
388
+ padding: 0px 16px;
389
+ display: inline-flex;
390
+ align-items: center;
391
+ justify-content: center;
392
+ height: 56px;
393
+ background: var(--ypmini-primary-secondary-color);
394
+ color: var(--ypmini-primary-color);
395
+ font-weight: 400;
396
+ font-size: var(--ypmini-font-size-mini);
397
+ white-space: nowrap;
398
+ }
399
+ .ypmini-city-selector-panel-selected-item .ypmini-city-selector-panel-selected-item-close-icon {
400
+ font-size: 24px;
401
+ margin-left: 8px;
402
+ }
403
+ .ypmini-city-selector-panel-footer {
404
+ display: flex;
405
+ margin-top: 24px;
406
+ }
407
+ .ypmini-city-selector-panel-footer .ypmini-city-selector-panel-footer-btn-clear {
408
+ width: 220px;
409
+ }
410
+ .ypmini-city-selector-panel-footer .ypmini-taro-button:not(:first-child) {
411
+ margin-left: 20px;
412
+ }
413
+ .ypmini-datepicker-view {
414
+ height: 100%;
415
+ }
416
+ :root,
417
+ page {
418
+ --ypmini-dialog-background: #fff;
419
+ --ypmini-dialog-border-radius: calc(12px * var(--ypmini-hd));
420
+ --ypmini-dialog-mask-background: var(--ypmini-mask-background);
421
+ --ypmini-dialog-z-index: 1100;
422
+ --ypmini-dialog-duration: 200ms;
423
+ --ypmini-dialog-width: calc(300px * var(--ypmini-hd));
424
+ --ypmini-dialog-title-font-size: var(--ypmini-font-size-large);
425
+ --ypmini-dialog-title-color: rgba(0, 0, 0, 0.85);
426
+ --ypmini-dialog-content-font-size: var(--ypmini-font-size-default);
427
+ --ypmini-dialog-content-color: rgba(0, 0, 0, 0.65);
428
+ --ypmini-dialog-btn-font-size: var(--ypmini-font-size-default);
429
+ --ypmini-dialog-btn-cancel-color: rgba(0, 0, 0, 0.65);
430
+ --ypmini-dialog-btn-confirm-color: var(--ypmini-primary-color);
431
+ }
432
+ .ypmini-dialog-wrapper {
433
+ position: fixed;
434
+ top: 0;
435
+ left: 0;
436
+ right: 0;
437
+ bottom: 0;
438
+ z-index: var(--ypmini-dialog-z-index);
439
+ display: flex;
440
+ align-items: center;
441
+ justify-content: center;
442
+ pointer-events: none;
443
+ }
444
+ .ypmini-dialog-wrapper-visible {
445
+ pointer-events: auto;
446
+ }
447
+ .ypmini-dialog-mask {
448
+ position: absolute;
449
+ top: 0;
450
+ left: 0;
451
+ right: 0;
452
+ bottom: 0;
453
+ background: var(--ypmini-dialog-mask-background);
454
+ opacity: 0;
455
+ transition: opacity var(--ypmini-dialog-duration) ease;
456
+ }
457
+ .ypmini-dialog-mask-visible {
458
+ opacity: 1;
459
+ }
460
+ .ypmini-dialog {
461
+ padding: 48px 32px 32px 32px;
462
+ position: relative;
463
+ width: var(--ypmini-dialog-width);
464
+ background: var(--ypmini-dialog-background);
465
+ border-radius: var(--ypmini-dialog-border-radius);
466
+ overflow: hidden;
467
+ opacity: 0;
468
+ transform: scale(0.9);
469
+ transition: opacity var(--ypmini-dialog-duration) ease, transform var(--ypmini-dialog-duration) ease;
470
+ }
471
+ .ypmini-dialog-visible {
472
+ opacity: 1;
473
+ transform: scale(1);
474
+ }
475
+ .ypmini-dialog-header {
476
+ text-align: center;
477
+ font-size: var(--ypmini-dialog-title-font-size);
478
+ font-weight: bold;
479
+ color: var(--ypmini-dialog-title-color);
480
+ line-height: 48px;
481
+ }
482
+ .ypmini-dialog-close {
483
+ font-size: 48px;
484
+ position: absolute;
485
+ right: 16px;
486
+ top: 16px;
487
+ color: rgba(0, 0, 0, 0.25);
488
+ }
489
+ .ypmini-dialog-body {
490
+ margin-top: 24px;
491
+ margin-bottom: 32px;
492
+ text-align: center;
493
+ font-size: var(--ypmini-dialog-content-font-size);
494
+ color: var(--ypmini-dialog-content-color);
495
+ line-height: 1.6;
496
+ word-break: break-word;
497
+ }
498
+ .ypmini-dialog-footer {
499
+ display: flex;
500
+ }
501
+ .ypmini-dialog-footer.ypmini-dialog-footer-vertical {
502
+ display: block;
503
+ }
504
+ .ypmini-dialog-footer.ypmini-dialog-footer-vertical .ypmini-dialog-btn:not(:first-child) {
505
+ margin-top: 24px;
506
+ margin-left: 0;
507
+ }
508
+ .ypmini-dialog-footer-btn {
509
+ height: 80px;
510
+ line-height: 80px;
511
+ }
512
+ .ypmini-dialog-btn {
513
+ flex: 1;
514
+ display: flex;
515
+ align-items: center;
516
+ justify-content: center;
517
+ font-size: var(--ypmini-dialog-btn-font-size);
518
+ }
519
+ .ypmini-dialog-btn:not(:first-child) {
520
+ margin-left: 22px;
521
+ }
522
+ .ypmini-dialog-btn-cancel {
523
+ color: var(--ypmini-dialog-btn-cancel-color);
524
+ }
525
+ .ypmini-dialog-btn-confirm {
526
+ color: var(--ypmini-dialog-btn-confirm-color);
527
+ font-weight: bold;
528
+ }
529
+ :root,
233
530
  page {
234
531
  --form-item-label-width: calc(60px * var(--ypmini-hd));
235
532
  }
@@ -264,13 +561,13 @@ page {
264
561
  font-size: 38px;
265
562
  }
266
563
  @font-face {
267
- font-family: "iconfont";
564
+ font-family: "ypiconfont";
268
565
  /* Project id 5088009 */
269
- src: url('iconfont.woff2?t=1767782477263') format('woff2'), url('iconfont.woff?t=1767782477263') format('woff'), url('iconfont.ttf?t=1767782477263') format('truetype');
566
+ src: url('https://at.alicdn.com/t/c/font_5088009_asy85y6kx4o.woff2?t=1768016348526') format('woff2'), url('https://at.alicdn.com/t/c/font_5088009_asy85y6kx4o.woff?t=1768016348526') format('woff'), url('https://at.alicdn.com/t/c/font_5088009_asy85y6kx4o.ttf?t=1768016348526') format('truetype');
270
567
  }
271
568
  .iconfont {
272
- font-family: "iconfont" !important;
273
- font-size: 16px;
569
+ font-family: "ypiconfont" !important;
570
+ font-size: 32px;
274
571
  font-style: normal;
275
572
  -webkit-font-smoothing: antialiased;
276
573
  -moz-osx-font-smoothing: grayscale;
@@ -418,6 +715,252 @@ page {
418
715
  font-size: 32px;
419
716
  }
420
717
  :root,
718
+ page {
719
+ --ypmini-media-uploader-button-width: calc(106px * var(--ypmini-hd));
720
+ --ypmini-media-uploader-button-height: calc(106px * var(--ypmini-hd));
721
+ --ypmini-media-uploader-button-border-radius: calc(8px * var(--ypmini-hd));
722
+ --ypmini-media-uploader-button-border-color: #e9edf3;
723
+ --ypmini-media-uploader-horizal-sapce: calc(12px * var(--ypmini-hd));
724
+ --ypmini-media-uploader-vertical-sapce: calc(12px * var(--ypmini-hd));
725
+ }
726
+ .ypmini-media-uploader-list {
727
+ display: flex;
728
+ flex-wrap: wrap;
729
+ margin-top: calc(-1 * var(--ypmini-media-uploader-vertical-sapce));
730
+ margin-left: calc(-1 * var(--ypmini-media-uploader-horizal-sapce));
731
+ }
732
+ .ypmini-media-uploader-cell {
733
+ width: var(--ypmini-media-uploader-button-width);
734
+ height: var(--ypmini-media-uploader-button-height);
735
+ border-radius: var(--ypmini-media-uploader-button-border-radius);
736
+ border: 2px dashed var(--ypmini-media-uploader-button-border-color);
737
+ overflow: hidden;
738
+ margin-top: var(--ypmini-media-uploader-vertical-sapce);
739
+ margin-left: var(--ypmini-media-uploader-horizal-sapce);
740
+ border: unset;
741
+ position: relative;
742
+ }
743
+ .ypmini-media-uploader-cell.ypmini-media-uploader-cell-single {
744
+ margin-top: 0;
745
+ margin-left: 0;
746
+ }
747
+ .ypmini-media-uploader-cell-delete {
748
+ display: flex;
749
+ align-items: center;
750
+ justify-content: center;
751
+ position: absolute;
752
+ right: 0;
753
+ top: 0;
754
+ z-index: 10;
755
+ height: 48px;
756
+ width: 48px;
757
+ border-radius: 0px 16px 0px 16px;
758
+ background: rgba(0, 0, 0, 0.65);
759
+ }
760
+ .ypmini-media-uploader-cell-delete .ypmini-media-uploader-cell-delete-icon {
761
+ font-size: 32px;
762
+ color: #fff;
763
+ }
764
+ .ypmini-media-uploader-image-view {
765
+ height: 100%;
766
+ width: 100%;
767
+ object-fit: contain;
768
+ }
769
+ .ypmini-media-uploader-process-mask {
770
+ position: absolute;
771
+ left: 0;
772
+ right: 0;
773
+ bottom: 0;
774
+ top: 0;
775
+ background: rgba(0, 0, 0, 0.65);
776
+ z-index: 20;
777
+ display: flex;
778
+ align-items: center;
779
+ justify-content: center;
780
+ }
781
+ .ypmini-media-uploader-process-bar {
782
+ width: calc(100% - (34px * var(--ypmini-hd)));
783
+ height: 12px;
784
+ border-radius: 6px;
785
+ background: rgba(255, 255, 255, 0.45);
786
+ }
787
+ .ypmini-media-uploader-process-bar-inner {
788
+ height: 100%;
789
+ width: 30%;
790
+ border-radius: 6px;
791
+ background: #ffffff;
792
+ }
793
+ .ypmini-media-uploader-button {
794
+ display: flex;
795
+ align-items: center;
796
+ justify-content: center;
797
+ width: var(--ypmini-media-uploader-button-width);
798
+ height: var(--ypmini-media-uploader-button-height);
799
+ border-radius: var(--ypmini-media-uploader-button-border-radius);
800
+ border: 2px dashed var(--ypmini-media-uploader-button-border-color);
801
+ }
802
+ .ypmini-media-uploader-button.ypmini-media-uploader-button-single {
803
+ margin-top: 0;
804
+ margin-left: 0;
805
+ }
806
+ .ypmini-media-uploader-button .ypmini-media-uploader-icon {
807
+ font-size: 66px;
808
+ color: #e9edf3;
809
+ }
810
+ :root,
811
+ page {
812
+ --ypmini-picker-view-column-font-size: var(--ypmini-font-size-large);
813
+ --ypmini-picker-view-column-font-color: #00000040;
814
+ --ypmini-picker-view-column-active-fot-color: ##000000a6;
815
+ --ypmini-picker-view-column-active-font-size: var(--ypmini-font-size-max);
816
+ --ypmini-picker-view-column-height: calc(var(--ypmini-hd) * 52px);
817
+ --ypmini-picker-view-indicator-background-color: #f5f7fc;
818
+ --ypmini-picker-view-indicator-border-radius: calc(var(--ypmini-hd) * 8px);
819
+ --ypmini-picker-view-disabled-mask-index: 100;
820
+ --ypmini-picker-view-disabled-mask-background-color: rgba(255, 255, 255, 0.6);
821
+ }
822
+ .ypmini-picker-view-wrapper {
823
+ position: relative;
824
+ height: 100%;
825
+ min-height: 400px;
826
+ }
827
+ .ypmini-picker-view {
828
+ height: 100%;
829
+ }
830
+ .ypmini-picker-view-column {
831
+ z-index: 20;
832
+ }
833
+ .ypmini-picker-view-column .ypmini-picker-view-indicator {
834
+ background: var(--ypmini-picker-view-indicator-background-color);
835
+ z-index: 0;
836
+ }
837
+ .ypmini-picker-view-column:first-child .ypmini-picker-view-indicator {
838
+ border-top-left-radius: var(--ypmini-picker-view-indicator-border-radius);
839
+ border-bottom-left-radius: var(--ypmini-picker-view-indicator-border-radius);
840
+ }
841
+ .ypmini-picker-view-column:last-child .ypmini-picker-view-indicator {
842
+ border-top-right-radius: var(--ypmini-picker-view-indicator-border-radius);
843
+ border-bottom-right-radius: var(--ypmini-picker-view-indicator-border-radius);
844
+ }
845
+ .ypmini-picker-view-column-item {
846
+ height: var(--ypmini-picker-view-column-height);
847
+ line-height: var(--ypmini-picker-view-column-height);
848
+ font-size: var(--ypmini-picker-view-column-font-size);
849
+ }
850
+ .ypmini-picker-view-indicator {
851
+ height: var(--ypmini-picker-view-column-height);
852
+ background: var(--ypmini-picker-view-indicator-background-color);
853
+ z-index: 0;
854
+ border-bottom: unset;
855
+ border-top: unset;
856
+ }
857
+ .ypmini-picker-view-indicator::before {
858
+ display: none;
859
+ }
860
+ .ypmini-picker-view-indicator::after {
861
+ display: none;
862
+ }
863
+ .ypmini-picker-view-mask {
864
+ position: absolute;
865
+ left: 0;
866
+ right: 0;
867
+ bottom: 0;
868
+ top: 0;
869
+ z-index: var(--ypmini-picker-view-disabled-mask-index);
870
+ background-color: var(--ypmini-picker-view-disabled-mask-background-color);
871
+ }
872
+ :root,
873
+ page {
874
+ --ypmini-popup-background: #fff;
875
+ --ypmini-popup-border-radius: calc(12px * var(--ypmini-hd));
876
+ --ypmini-popup-mask-background: rgba(0, 0, 0, 0.5);
877
+ --ypmini-popup-z-index: 1000;
878
+ --ypmini-popup-duration: 300ms;
879
+ --ypmini-popup-title-font-size: var(--ypmini-font-size-large);
880
+ --ypmini-popup-title-font-color: rgba(0, 0, 0, 0.85);
881
+ --ypmini-popup-confirm-text-font-color: var(--ypmini-primary-color);
882
+ --ypmini-popup-cancel-text-font-color: rgba(0, 0, 0, 0.65);
883
+ --ypmini-popup-confirm-text-font-size: var(--ypmini-font-size-default);
884
+ --ypmini-popup-cancel-text-font-size: var(--ypmini-font-size-default);
885
+ }
886
+ .ypmini-popup-wrapper {
887
+ position: fixed;
888
+ top: 0;
889
+ left: 0;
890
+ right: 0;
891
+ bottom: 0;
892
+ z-index: var(--ypmini-popup-z-index);
893
+ pointer-events: none;
894
+ }
895
+ .ypmini-popup-wrapper-visible {
896
+ pointer-events: auto;
897
+ }
898
+ .ypmini-popup-mask {
899
+ position: absolute;
900
+ top: 0;
901
+ left: 0;
902
+ right: 0;
903
+ bottom: 0;
904
+ background: var(--ypmini-popup-mask-background);
905
+ opacity: 0;
906
+ transition: opacity var(--ypmini-popup-duration) ease;
907
+ }
908
+ .ypmini-popup-mask-visible {
909
+ opacity: 1;
910
+ }
911
+ .ypmini-popup {
912
+ position: absolute;
913
+ left: 0;
914
+ right: 0;
915
+ bottom: 0;
916
+ background: var(--ypmini-popup-background);
917
+ transform: translateY(100%);
918
+ transition: transform var(--ypmini-popup-duration) ease;
919
+ max-height: 80vh;
920
+ overflow-y: auto;
921
+ }
922
+ .ypmini-popup-visible {
923
+ transform: translateY(0);
924
+ }
925
+ .ypmini-popup-round {
926
+ border-radius: var(--ypmini-popup-border-radius) var(--ypmini-popup-border-radius) 0 0;
927
+ }
928
+ .ypmini-popup-header {
929
+ padding: 32px;
930
+ display: flex;
931
+ max-width: 100%;
932
+ align-items: center;
933
+ justify-content: space-between;
934
+ }
935
+ .ypmini-popup-header-cancel {
936
+ color: var(--ypmini-popup-cancel-text-font-color);
937
+ font-weight: 400;
938
+ font-size: var(--ypmini-popup-cancel-text-fontsize);
939
+ flex: 0 0 60px;
940
+ white-space: nowrap;
941
+ text-align: left;
942
+ }
943
+ .ypmini-popup-header-title {
944
+ flex: 1;
945
+ text-align: center;
946
+ color: var(--ypmini-popup-title-font-color);
947
+ font-weight: 500;
948
+ font-size: var(--ypmini-font-size-large);
949
+ margin-left: 44px;
950
+ margin-right: 44px;
951
+ white-space: nowrap;
952
+ overflow: hidden;
953
+ text-overflow: ellipsis;
954
+ }
955
+ .ypmini-popup-header-confirm {
956
+ color: var(--ypmini-popup-confirm-text-font-color);
957
+ font-weight: 400;
958
+ font-size: var(--ypmini-popup-confirm-text-fontsize);
959
+ flex: 0 0 60px;
960
+ white-space: nowrap;
961
+ text-align: right;
962
+ }
963
+ :root,
421
964
  page {
422
965
  --radio-button-font-size: calc(17px * var(--ypmini-hd));
423
966
  --radio-button-border-radius: calc(8px * var(--ypmini-hd));
@@ -471,6 +1014,146 @@ page {
471
1014
  .ypmini-radio-group .ypmini-taro-radio:not(:first-child) {
472
1015
  margin-left: 24px;
473
1016
  }
1017
+ .ypmini-safe-area-view {
1018
+ box-sizing: border-box;
1019
+ }
1020
+ :root,
1021
+ page {
1022
+ --ypmini-switch-width: calc(var(--ypmini-hd) * 48px);
1023
+ --ypmini-switch-height: calc(var(--ypmini-hd) * 24px);
1024
+ --ypmini-switch-border-radius: calc(var(--ypmini-hd) * 12px);
1025
+ --ypmini-switch-handle-size: calc(var(--ypmini-hd) * 18px);
1026
+ --ypmini-switch-handle-margin: calc(var(--ypmini-hd) * 3px);
1027
+ --ypmini-switch-background-color: #e9edf3;
1028
+ --ypmini-switch-checked-color: var(--ypmini-primary-color);
1029
+ --ypmini-switch-handle-color: #fff;
1030
+ --ypmini-switch-duration: 200ms;
1031
+ --ypmini-switch-disabled-opacity: 0.4;
1032
+ }
1033
+ .ypmini-switch {
1034
+ position: relative;
1035
+ display: inline-flex;
1036
+ align-items: center;
1037
+ box-sizing: border-box;
1038
+ width: var(--ypmini-switch-width);
1039
+ height: var(--ypmini-switch-height);
1040
+ border-radius: var(--ypmini-switch-border-radius);
1041
+ background-color: var(--ypmini-switch-background-color);
1042
+ transition: background-color var(--ypmini-switch-duration) ease;
1043
+ cursor: pointer;
1044
+ }
1045
+ .ypmini-switch-checked {
1046
+ background-color: var(--ypmini-switch-checked-color);
1047
+ }
1048
+ .ypmini-switch-checked .ypmini-switch-handle {
1049
+ transform: translateX(calc(var(--ypmini-switch-width) - var(--ypmini-switch-handle-size) - var(--ypmini-switch-handle-margin) * 2));
1050
+ }
1051
+ .ypmini-switch-disabled {
1052
+ opacity: var(--ypmini-switch-disabled-opacity);
1053
+ cursor: not-allowed;
1054
+ }
1055
+ .ypmini-switch-handle {
1056
+ position: absolute;
1057
+ left: var(--ypmini-switch-handle-margin);
1058
+ width: var(--ypmini-switch-handle-size);
1059
+ height: var(--ypmini-switch-handle-size);
1060
+ border-radius: 50%;
1061
+ background-color: var(--ypmini-switch-handle-color);
1062
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
1063
+ transition: transform var(--ypmini-switch-duration) ease;
1064
+ }
1065
+ page,
1066
+ :root {
1067
+ --ypmini-tag-size-default-height: calc(var(--ypmini-hd) * 22px);
1068
+ --ypmini-tag-size-default-font-size: calc(var(--ypmini-hd) * 12px);
1069
+ --ypmini-tag-size-small-height: calc(var(--ypmini-hd) * 18px);
1070
+ --ypmini-tag-size-small-font-size: calc(var(--ypmini-hd) * 12px);
1071
+ --ypmini-tag-default-background-color: #f5f7fc;
1072
+ --ypmini-tag-primary-background-color: var(--ypmini-primary-secondary-color);
1073
+ --ypmini-tag-success-background-color: #dff2ec;
1074
+ --ypmini-tag-warning-background-color: #ffebec;
1075
+ --ypmini-tag-default-font-color: rgba(0, 0, 0, 0.65);
1076
+ --ypmini-tag-primary-font-color: var(--ypmini-primary-color);
1077
+ --ypmini-tag-success-font-color: #06b578;
1078
+ --ypmini-tag-warning-font-color: #e8362e;
1079
+ --ypmini-tag-default-font-size: calc(var(--ypmini-hd) * 12px);
1080
+ --ypmini-tag-small-font-size: calc(var(--ypmini-hd) * 10px);
1081
+ }
1082
+ .ypmini-tag {
1083
+ display: inline-flex;
1084
+ align-items: center;
1085
+ justify-content: center;
1086
+ height: var(--ypmini-tag-size-default-height);
1087
+ padding: 0px 12px;
1088
+ font-weight: 400;
1089
+ border-radius: 8px;
1090
+ font-size: var(--ypmini-tag-size-default-font-size);
1091
+ }
1092
+ .ypmini-tag-size-default {
1093
+ padding: 0px 12px;
1094
+ font-size: var(--ypmini-tag-size-default-font-size);
1095
+ height: var(--ypmini-tag-size-default-height);
1096
+ }
1097
+ .ypmini-tag-size-small {
1098
+ padding: 0px 8px;
1099
+ font-size: var(--ypmini-tag-size-small-font-size);
1100
+ height: var(--ypmini-tag-size-small-height);
1101
+ }
1102
+ .ypmini-tag-outlined {
1103
+ box-sizing: border-box;
1104
+ }
1105
+ .ypmini-tag-default {
1106
+ background: var(--ypmini-tag-default-background-color);
1107
+ color: var(--ypmini-tag-default-font-color);
1108
+ }
1109
+ .ypmini-tag-default--outlined {
1110
+ --ypmini-tag-default-outlined-border-color: var(--ypmini-tag-default-font-color);
1111
+ border: 1px solid var(--ypmini-tag-default-outlined-border-color);
1112
+ }
1113
+ .ypmini-tag-default--solid {
1114
+ border: unset;
1115
+ background: var(--ypmini-tag-default-background-color);
1116
+ color: var(--ypmini-tag-default-font-color);
1117
+ }
1118
+ .ypmini-tag-primary {
1119
+ background: var(--ypmini-tag-primary-background-color);
1120
+ color: var(--ypmini-tag-primary-font-color);
1121
+ }
1122
+ .ypmini-tag-primary--outlined {
1123
+ --ypmini-tag-primary-outlined-border-color: var(--ypmini-tag-primary-font-color);
1124
+ border: 1px solid var(--ypmini-tag-primary-outlined-border-color);
1125
+ }
1126
+ .ypmini-tag-primary--solid {
1127
+ border: unset;
1128
+ background: var(--ypmini-tag-primary-background-color);
1129
+ color: var(--ypmini-tag-primary-font-color);
1130
+ }
1131
+ .ypmini-tag-warning {
1132
+ background: var(--ypmini-tag-warning-background-color);
1133
+ color: var(--ypmini-tag-warning-font-color);
1134
+ }
1135
+ .ypmini-tag-warning--outlined {
1136
+ --ypmini-tag-warning-outlined-border-color: var(--ypmini-tag-warning-font-color);
1137
+ border: 1px solid var(--ypmini-tag-warning-outlined-border-color);
1138
+ }
1139
+ .ypmini-tag-warning--solid {
1140
+ border: unset;
1141
+ background: var(--ypmini-tag-warning-background-color);
1142
+ color: var(--ypmini-tag-warning-font-color);
1143
+ }
1144
+ .ypmini-tag-success {
1145
+ background: var(--ypmini-tag-success-background-color);
1146
+ color: var(--ypmini-tag-success-font-color);
1147
+ }
1148
+ .ypmini-tag-success--outlined {
1149
+ --ypmini-tag-success-outlined-border-color: var(--ypmini-tag-success-font-color);
1150
+ border: 1px solid var(--ypmini-tag-success-outlined-border-color);
1151
+ }
1152
+ .ypmini-tag-success--solid {
1153
+ border: unset;
1154
+ background: var(--ypmini-tag-success-background-color);
1155
+ color: var(--ypmini-tag-success-font-color);
1156
+ }
474
1157
  :root,
475
1158
  page {
476
1159
  --toast-z-index: 9999;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yup/taro-ui",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "description": "鱼泡 Taro UI组件库",
5
5
  "type": "module",
6
6
  "main": "es/index.js",
@@ -67,7 +67,6 @@
67
67
  "@tarojs/runtime": "3.6.37",
68
68
  "@tarojs/taro": "3.6.37",
69
69
  "@tarojs/taro-h5": "^4.1.9",
70
- "@types/minimatch": "5.1.2",
71
70
  "@types/node-sass": "^4.11.8",
72
71
  "@yangzw/bruce-std": "^1.3.6",
73
72
  "@yup/taro-checkbox": "^0.17.0",
@@ -100,7 +99,7 @@
100
99
  "less-plugin-autoprefix": "^2.0.0",
101
100
  "lint-staged": "^13.0.3",
102
101
  "prettier": "^2.7.1",
103
- "react-dom": "18.2.0",
102
+ "react-dom": "18.3.1",
104
103
  "rimraf": "^6.1.0",
105
104
  "rollup-plugin-copy": "^3.5.0",
106
105
  "rollup-plugin-ignore": "^1.0.10",
@@ -121,8 +120,8 @@
121
120
  "peerDependencies": {
122
121
  "@tarojs/components": "3.6.37",
123
122
  "@tarojs/taro": "3.6.37",
124
- "react": "^18.2.0",
125
- "react-dom": "^18.2.0"
123
+ "react": "^18.3.1",
124
+ "react-dom": "^18.3.1"
126
125
  },
127
126
  "dependencies": {
128
127
  "classnames": "^2.3.2",
Binary file
Binary file
Binary file