@uxda/appkit 4.0.2 → 4.0.12

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 (114) hide show
  1. package/.eslintrc.mjs +7 -7
  2. package/README.md +187 -187
  3. package/babel.config.js +12 -12
  4. package/dist/appkit.css +144 -5
  5. package/dist/index.js +731 -249
  6. package/package.json +75 -80
  7. package/project.config.json +15 -15
  8. package/project.tt.json +13 -13
  9. package/rollup.config.mjs +56 -56
  10. package/src/Appkit.ts +65 -65
  11. package/src/balance/api/endpoints.ts +126 -126
  12. package/src/balance/api/index.ts +82 -82
  13. package/src/balance/components/AccountView.vue +748 -748
  14. package/src/balance/components/BalanceCard.vue +205 -209
  15. package/src/balance/components/BalanceReminder.vue +85 -85
  16. package/src/balance/components/ConsumptionFilter.vue +218 -218
  17. package/src/balance/components/ConsumptionRules.vue +68 -68
  18. package/src/balance/components/DateFilter.vue +226 -226
  19. package/src/balance/components/DateRange.vue +62 -0
  20. package/src/balance/components/ListFilter.vue +40 -0
  21. package/src/balance/components/ListFilterPicker.vue +195 -0
  22. package/src/balance/components/SecondBalance.vue +71 -71
  23. package/src/balance/components/Tip.vue +45 -45
  24. package/src/balance/components/index.ts +13 -9
  25. package/src/balance/types.ts +91 -90
  26. package/src/components/bt-cropper/index.vue +774 -774
  27. package/src/components/bt-cropper/utils/calcCropper.js +42 -42
  28. package/src/components/bt-cropper/utils/calcImagePosition.js +23 -23
  29. package/src/components/bt-cropper/utils/calcImageSize.js +37 -37
  30. package/src/components/bt-cropper/utils/calcPointDistance.js +12 -12
  31. package/src/components/bt-cropper/utils/calcRightAndBottom.js +7 -7
  32. package/src/components/bt-cropper/utils/ratio.js +3 -3
  33. package/src/components/bt-cropper/utils/tools.js +25 -25
  34. package/src/components/dd-area/index.vue +225 -225
  35. package/src/components/dd-icon/doc.md +21 -21
  36. package/src/components/dd-icon/index.vue +23 -23
  37. package/src/components/dd-notice-bar/index.vue +78 -78
  38. package/src/components/dd-search/doc.md +34 -34
  39. package/src/components/dd-search/index.vue +168 -168
  40. package/src/components/dd-selector/index.vue +124 -124
  41. package/src/components/dd-skeleton/doc.md +19 -19
  42. package/src/components/dd-skeleton/index.vue +36 -36
  43. package/src/components/ocr-id/index.vue +114 -114
  44. package/src/components/ocr-id/types.d.ts +12 -12
  45. package/src/global.ts +6 -6
  46. package/src/index.ts +89 -89
  47. package/src/main.scss +1 -1
  48. package/src/notice/api/endpoints.ts +17 -17
  49. package/src/notice/api/index.ts +82 -82
  50. package/src/notice/components/NoticeBanner.vue +243 -243
  51. package/src/notice/components/NoticeEntry.vue +99 -99
  52. package/src/notice/components/NoticeList.vue +315 -315
  53. package/src/notice/components/NoticePopup.vue +161 -161
  54. package/src/notice/components/index.ts +5 -5
  55. package/src/notice/components/useCommonList.ts +86 -86
  56. package/src/notice/components/useNotice.ts +35 -35
  57. package/src/notice/index.ts +1 -1
  58. package/src/notice/types.ts +25 -25
  59. package/src/payment/api/config.ts +7 -7
  60. package/src/payment/api/endpoints.ts +103 -103
  61. package/src/payment/api/index.ts +71 -71
  62. package/src/payment/components/AmountPicker.vue +93 -93
  63. package/src/payment/components/RechargeResult.vue +69 -69
  64. package/src/payment/components/RechargeView.vue +154 -154
  65. package/src/payment/components/RightsPicker.vue +105 -105
  66. package/src/payment/components/TradeView.vue +298 -298
  67. package/src/payment/components/UserAgreement.vue +234 -234
  68. package/src/payment/components/index.ts +22 -22
  69. package/src/payment/index.ts +5 -5
  70. package/src/payment/services/index.ts +16 -16
  71. package/src/payment/services/invoke-recharge.ts +25 -25
  72. package/src/payment/services/request-payment.ts +58 -58
  73. package/src/payment/types.ts +28 -28
  74. package/src/register/components/SelfRegistration.vue +254 -254
  75. package/src/register/components/index.ts +2 -2
  76. package/src/shared/components/AppDrawer.vue +58 -58
  77. package/src/shared/components/AppVerify.vue +84 -0
  78. package/src/shared/components/DeviceVersion.vue +68 -68
  79. package/src/shared/components/EmptyView.vue +33 -33
  80. package/src/shared/components/OcrIcon.vue +119 -0
  81. package/src/shared/components/PageHeader.vue +79 -79
  82. package/src/shared/components/index.ts +7 -5
  83. package/src/shared/composables/index.ts +6 -5
  84. package/src/shared/composables/useCountdown.ts +46 -46
  85. package/src/shared/composables/useDragBox.ts +97 -97
  86. package/src/shared/composables/useEncode.ts +43 -43
  87. package/src/shared/composables/useSafeArea.ts +46 -46
  88. package/src/shared/composables/useTabbar.ts +24 -24
  89. package/src/shared/composables/useUpload.ts +55 -0
  90. package/src/shared/composables/useValidator.ts +31 -31
  91. package/src/shared/http/Http.ts +136 -136
  92. package/src/shared/http/index.ts +1 -1
  93. package/src/shared/http/types.ts +157 -157
  94. package/src/shared/index.ts +3 -3
  95. package/src/shared/weixin/payment.ts +38 -38
  96. package/src/styles/fonts.scss +2 -2
  97. package/src/styles/vars.scss +3 -3
  98. package/src/user/api/endpoints.ts +17 -17
  99. package/src/user/api/index.ts +87 -87
  100. package/src/user/components/LoginSetting.vue +114 -114
  101. package/src/user/components/UserBinding.vue +307 -307
  102. package/src/user/components/UserBindingSuccess.vue +80 -80
  103. package/src/user/components/UserEntry.vue +142 -142
  104. package/src/user/components/UserFeedback.vue +440 -440
  105. package/src/user/components/UserFeedbackEntry.vue +192 -192
  106. package/src/user/components/UserHeadCrop.vue +65 -65
  107. package/src/user/components/UserInfo.vue +632 -632
  108. package/src/user/components/UserResourceEmpty.vue +75 -75
  109. package/src/user/components/index.ts +21 -21
  110. package/src/user/index.ts +1 -1
  111. package/tsconfig.json +30 -30
  112. package/types/global.d.ts +21 -21
  113. package/types/vue.d.ts +10 -10
  114. package/dist/assets/asset-3B_CoPto +0 -1
package/.eslintrc.mjs CHANGED
@@ -1,8 +1,8 @@
1
- module.exports = {
2
- extends: [
3
- './.eslintrc-auto-import.json'
4
- ],
5
- rules: {
6
- ident: ['error', 2]
7
- }
1
+ module.exports = {
2
+ extends: [
3
+ './.eslintrc-auto-import.json'
4
+ ],
5
+ rules: {
6
+ ident: ['error', 2]
7
+ }
8
8
  }
package/README.md CHANGED
@@ -1,188 +1,188 @@
1
- # AppKit
2
-
3
- 小程序应用开发包
4
-
5
- 向诸小程序提供供用的组件及基础设施
6
-
7
- 模块:
8
- * payment 支付
9
- * balance 账户、代币(云豆)余额
10
- * auth 登录及会话状态 (待定)
11
-
12
- ## 将 AppKit 加入应用项目
13
-
14
- ```bash
15
- git clone git@10.1.108.137:fed/appkit.git
16
- cd appkit
17
- yarn link
18
- ```
19
-
20
- 然后 cd 到(周转)小程序根目录执行:
21
- ```bash
22
- yarn link @uxda/appkit
23
- ```
24
- 完成 npm link
25
-
26
-
27
- ## 用法
28
- ```typescript
29
- import AppKit from '@uxda/appkit'
30
- import '@uxda/appkit/appkit.css'
31
- ```
32
- ## AppKit 初始化
33
-
34
- 在应用入口页调用(示例)
35
- ```typescript
36
- const App = createApp({})
37
- App.use(AppKit, {
38
- app: () => 'cloudkitPro',
39
- tenant: () => '1',
40
- token: () => localStorage.getItem('token'),
41
- baseUrl: () => process.env.TARO_APP_BASE_URL,
42
- 401: () => {
43
- // 登录态丢失时的处理
44
- }
45
- })
46
- ```
47
- 为 AppKit 的运行提供必需的 API 参数
48
- * app: 当前的 app code (嵌入接口调用的 header 参数)
49
- * tenant: 租户ID 需要提供以便调用接口
50
- * token: 用户登录态 token
51
- * baseUrl: 调用 API 的URL域名
52
- * 401: 登录态丢失异常处理 (通常要跳转登录页)
53
-
54
-
55
- ## UI组件
56
- ### 1️⃣ 充值用户界面 <recharge-view>
57
-
58
- ```typescript
59
- import { RechargeView } from '@uxda/appkit'
60
- ```
61
-
62
- ```html
63
- <template>
64
- <recharge-view
65
- app="crm"
66
- tenant="1"
67
- @complete="onRechargeComplete" />
68
- </template>
69
- ```
70
-
71
- #### 属性 props
72
-
73
- #### 事件 emits
74
-
75
- * @complete: 充值完成时发生
76
-
77
- ### 2️⃣ 账户页 &lt;account-view&gt;
78
- ```
79
- import { AccountView } from '@uxda/appkit'
80
- ```
81
- ```html
82
- <template>
83
- <account-view app="crm" @recharge=onAccountViewRecharge />
84
- <template>
85
- ```
86
-
87
- #### 事件 emits
88
- * @recharge 点击充值按钮时发生
89
-
90
- ### 3️⃣ 账户卡片 &lt;balance-card&gt;
91
-
92
- ```typescript
93
- import { BalanceCard } from '@uxda/appkit'
94
- ```
95
-
96
- ```html
97
- <template>
98
- <balance-card app="crm" @drill="onBalanceCardDrill" @recharge="onBalanceCardRecharge" />
99
- <template>
100
- ```
101
-
102
- #### 事件 emits
103
- * app 配置到组件上的 app code
104
- * @drill 点击账户详情时发生
105
- * @recharge 点击充值按钮时发生
106
-
107
- 场景端需定义以上跳转逻辑:
108
-
109
- ```typescript
110
- function onBalanceCardDrill () {
111
- //...
112
- }
113
-
114
- function onBalanceCardRecharge () {
115
- //...
116
- }
117
- ```
118
-
119
- ### 方法 methods
120
- * reload() 刷新数据
121
-
122
-
123
-
124
- ### 4️⃣ 余额不足提示框 &lt;balance-reminder&gt;
125
-
126
- ```typescript
127
- import { BalanceReminder } from '@uxda/appkit'
128
- ```
129
-
130
- ```html
131
- <balance-reminder v-model="balanceReminderOpen"
132
- @recharge="onBalanceReminderRecharge" />
133
- ```
134
-
135
- #### 事件 emits
136
- * @recharge 点击充值按钮时发生
137
-
138
-
139
- ## 公共API
140
- ### 1️⃣ 唤起充值(跳支付中心小程序) $app.invokeRecharge()
141
-
142
- ```typescript
143
- import { useAppKit } from '@uxda/appkit'
144
- const $app = useAppKit()
145
- $app.invokeRecharge({
146
- app: 'crm',
147
- tenant: '1',
148
- })
149
- ```
150
-
151
- ### 2️⃣ 唤起充值(小程序内直接支付、不跳) $app.requestPayment()
152
-
153
- ```typescript
154
- import { useAppKit } from '@uxda/appkit'
155
- const $app = useAppKit()
156
- $app.requestPayment({
157
- app: 'crm',
158
- tenant: '1',
159
- amount: 100,
160
- user: '' // wx.login 之后得到的用户临时凭证
161
- })
162
- ```
163
-
164
- ## Hooks (Vue Composables)
165
-
166
- ### useTabbar
167
- 用于获取或设置 custom tab bar
168
-
169
- ```typescript
170
- import { useTabbar } from '@uxda/appkit-next'
171
-
172
- onMounted(() => {
173
- const { setTab } = useTabbar()
174
- setTab('home')
175
- })
176
- ```
177
- 以上代码用于切换到 /pages/home/index 时, 设置 tab bar 选中项为 'home'
178
- 在 custom-tab-bar/index.vue 需要做以下设置
179
-
180
- ```typescript
181
- import { useSafeArea, useTabbar } from '@uxda/appkit-next'
182
-
183
- const { onTabChange } = useTabbar()
184
- onTabChange((value: string) => {
185
- selected.value = value
186
- })
187
- ```
1
+ # AppKit
2
+
3
+ 小程序应用开发包
4
+
5
+ 向诸小程序提供供用的组件及基础设施
6
+
7
+ 模块:
8
+ * payment 支付
9
+ * balance 账户、代币(云豆)余额
10
+ * auth 登录及会话状态 (待定)
11
+
12
+ ## 将 AppKit 加入应用项目
13
+
14
+ ```bash
15
+ git clone git@10.1.108.137:fed/appkit.git
16
+ cd appkit
17
+ yarn link
18
+ ```
19
+
20
+ 然后 cd 到(周转)小程序根目录执行:
21
+ ```bash
22
+ yarn link @uxda/appkit
23
+ ```
24
+ 完成 npm link
25
+
26
+
27
+ ## 用法
28
+ ```typescript
29
+ import AppKit from '@uxda/appkit'
30
+ import '@uxda/appkit/appkit.css'
31
+ ```
32
+ ## AppKit 初始化
33
+
34
+ 在应用入口页调用(示例)
35
+ ```typescript
36
+ const App = createApp({})
37
+ App.use(AppKit, {
38
+ app: () => 'cloudkitPro',
39
+ tenant: () => '1',
40
+ token: () => localStorage.getItem('token'),
41
+ baseUrl: () => process.env.TARO_APP_BASE_URL,
42
+ 401: () => {
43
+ // 登录态丢失时的处理
44
+ }
45
+ })
46
+ ```
47
+ 为 AppKit 的运行提供必需的 API 参数
48
+ * app: 当前的 app code (嵌入接口调用的 header 参数)
49
+ * tenant: 租户ID 需要提供以便调用接口
50
+ * token: 用户登录态 token
51
+ * baseUrl: 调用 API 的URL域名
52
+ * 401: 登录态丢失异常处理 (通常要跳转登录页)
53
+
54
+
55
+ ## UI组件
56
+ ### 1️⃣ 充值用户界面 &lt;recharge-view&gt;
57
+
58
+ ```typescript
59
+ import { RechargeView } from '@uxda/appkit'
60
+ ```
61
+
62
+ ```html
63
+ <template>
64
+ <recharge-view
65
+ app="crm"
66
+ tenant="1"
67
+ @complete="onRechargeComplete" />
68
+ </template>
69
+ ```
70
+
71
+ #### 属性 props
72
+
73
+ #### 事件 emits
74
+
75
+ * @complete: 充值完成时发生
76
+
77
+ ### 2️⃣ 账户页 &lt;account-view&gt;
78
+ ```
79
+ import { AccountView } from '@uxda/appkit'
80
+ ```
81
+ ```html
82
+ <template>
83
+ <account-view app="crm" @recharge=onAccountViewRecharge />
84
+ <template>
85
+ ```
86
+
87
+ #### 事件 emits
88
+ * @recharge 点击充值按钮时发生
89
+
90
+ ### 3️⃣ 账户卡片 &lt;balance-card&gt;
91
+
92
+ ```typescript
93
+ import { BalanceCard } from '@uxda/appkit'
94
+ ```
95
+
96
+ ```html
97
+ <template>
98
+ <balance-card app="crm" @drill="onBalanceCardDrill" @recharge="onBalanceCardRecharge" />
99
+ <template>
100
+ ```
101
+
102
+ #### 事件 emits
103
+ * app 配置到组件上的 app code
104
+ * @drill 点击账户详情时发生
105
+ * @recharge 点击充值按钮时发生
106
+
107
+ 场景端需定义以上跳转逻辑:
108
+
109
+ ```typescript
110
+ function onBalanceCardDrill () {
111
+ //...
112
+ }
113
+
114
+ function onBalanceCardRecharge () {
115
+ //...
116
+ }
117
+ ```
118
+
119
+ ### 方法 methods
120
+ * reload() 刷新数据
121
+
122
+
123
+
124
+ ### 4️⃣ 余额不足提示框 &lt;balance-reminder&gt;
125
+
126
+ ```typescript
127
+ import { BalanceReminder } from '@uxda/appkit'
128
+ ```
129
+
130
+ ```html
131
+ <balance-reminder v-model="balanceReminderOpen"
132
+ @recharge="onBalanceReminderRecharge" />
133
+ ```
134
+
135
+ #### 事件 emits
136
+ * @recharge 点击充值按钮时发生
137
+
138
+
139
+ ## 公共API
140
+ ### 1️⃣ 唤起充值(跳支付中心小程序) $app.invokeRecharge()
141
+
142
+ ```typescript
143
+ import { useAppKit } from '@uxda/appkit'
144
+ const $app = useAppKit()
145
+ $app.invokeRecharge({
146
+ app: 'crm',
147
+ tenant: '1',
148
+ })
149
+ ```
150
+
151
+ ### 2️⃣ 唤起充值(小程序内直接支付、不跳) $app.requestPayment()
152
+
153
+ ```typescript
154
+ import { useAppKit } from '@uxda/appkit'
155
+ const $app = useAppKit()
156
+ $app.requestPayment({
157
+ app: 'crm',
158
+ tenant: '1',
159
+ amount: 100,
160
+ user: '' // wx.login 之后得到的用户临时凭证
161
+ })
162
+ ```
163
+
164
+ ## Hooks (Vue Composables)
165
+
166
+ ### useTabbar
167
+ 用于获取或设置 custom tab bar
168
+
169
+ ```typescript
170
+ import { useTabbar } from '@uxda/appkit-next'
171
+
172
+ onMounted(() => {
173
+ const { setTab } = useTabbar()
174
+ setTab('home')
175
+ })
176
+ ```
177
+ 以上代码用于切换到 /pages/home/index 时, 设置 tab bar 选中项为 'home'
178
+ 在 custom-tab-bar/index.vue 需要做以下设置
179
+
180
+ ```typescript
181
+ import { useSafeArea, useTabbar } from '@uxda/appkit-next'
182
+
183
+ const { onTabChange } = useTabbar()
184
+ onTabChange((value: string) => {
185
+ selected.value = value
186
+ })
187
+ ```
188
188
  以上代码设置响应页面内的 setTab() 动作
package/babel.config.js CHANGED
@@ -1,12 +1,12 @@
1
- // babel-preset-taro 更多选项和默认值:
2
- // https://github.com/NervJS/taro/blob/next/packages/babel-preset-taro/README.md
3
- module.exports = {
4
- presets: [
5
- ['taro', {
6
- framework: 'vue3',
7
- ts: true
8
- }]
9
- ],
10
- plugins: [
11
- ],
12
- }
1
+ // babel-preset-taro 更多选项和默认值:
2
+ // https://github.com/NervJS/taro/blob/next/packages/babel-preset-taro/README.md
3
+ module.exports = {
4
+ presets: [
5
+ ['taro', {
6
+ framework: 'vue3',
7
+ ts: true
8
+ }]
9
+ ],
10
+ plugins: [
11
+ ],
12
+ }
package/dist/appkit.css CHANGED
@@ -94,6 +94,21 @@
94
94
  flex-grow: 1;
95
95
  overflow: scroll;
96
96
  }
97
+ .app-verify {
98
+ padding: var(--ns-spacing);
99
+ }
100
+ .app-verify h2 {
101
+ font-size: 16px;
102
+ font-weight: bold;
103
+ margin: 10px;
104
+ }
105
+ .app-verify .caption {
106
+ font-size: 14px;
107
+ color: #666;
108
+ }
109
+ .app-verify .buttons .ns-button {
110
+ width: 104px;
111
+ }
97
112
  .dd-notice-bar {
98
113
  position: fixed;
99
114
  top: 0;
@@ -139,6 +154,14 @@
139
154
  display: flex;
140
155
  align-items: center;
141
156
  }
157
+ .ocr-icon {
158
+ width: 24px;
159
+ height: 24px;
160
+ }
161
+ .ocr-icon .ns-icon {
162
+ width: 24px;
163
+ height: 24px;
164
+ }
142
165
  .recharge-view {
143
166
  height: 100%;
144
167
  display: flex;
@@ -373,12 +396,12 @@
373
396
  color: #353535;
374
397
  background: linear-gradient(90deg, #FFEBC1 0%, #FFB875 100%);
375
398
  }
376
- page {
377
- --text-color: #333;
378
- --text-color-dark-mode: #eee;
399
+ page {
400
+ --text-color: #333;
401
+ --text-color-dark-mode: #eee;
379
402
  }
380
- .number {
381
- font-family: 'DIN alternate', 'Barlow Condensed', 'Roboto Condensed', sans-serif-condensed-light;
403
+ .number {
404
+ font-family: 'DIN alternate', 'Barlow Condensed', 'Roboto Condensed', sans-serif-condensed-light;
382
405
  }
383
406
  .account-card .card {
384
407
  background: #2f2f2f;
@@ -1071,6 +1094,122 @@ page {
1071
1094
  color: #fff;
1072
1095
  background: var(--primary-button-background);
1073
1096
  }
1097
+ .date-range {
1098
+ height: 22px;
1099
+ padding-right: 5px;
1100
+ flex: 1;
1101
+ display: flex;
1102
+ align-items: center;
1103
+ }
1104
+ .date-range .text {
1105
+ width: fit-content;
1106
+ white-space: nowrap;
1107
+ }
1108
+ .date-range .time-icon {
1109
+ display: block;
1110
+ font-size: 0;
1111
+ width: 12px;
1112
+ height: 12px;
1113
+ margin-left: 4px;
1114
+ }
1115
+ .consumption-filter {
1116
+ height: 100%;
1117
+ display: flex;
1118
+ flex-direction: column;
1119
+ width: 100%;
1120
+ }
1121
+ .consumption-filter-title {
1122
+ position: relative;
1123
+ height: 44px;
1124
+ line-height: 44px;
1125
+ font-size: 17px;
1126
+ color: #353535;
1127
+ background: #f5f5f5;
1128
+ text-align: center;
1129
+ }
1130
+ .consumption-filter-content {
1131
+ flex: 1;
1132
+ margin: 15px;
1133
+ overflow-y: scroll;
1134
+ color: #353535;
1135
+ font-size: 13px;
1136
+ }
1137
+ .consumption-filter-content .title {
1138
+ opacity: 0.6;
1139
+ line-height: 18px;
1140
+ }
1141
+ .consumption-filter-content .info {
1142
+ display: grid;
1143
+ grid-template-columns: 1fr 1fr 1fr;
1144
+ grid-gap: 10px;
1145
+ margin: 10px 0;
1146
+ }
1147
+ .consumption-filter-content .info-item {
1148
+ height: 30px;
1149
+ line-height: 30px;
1150
+ border: 1px solid #ccc;
1151
+ border-radius: 6px;
1152
+ text-align: center;
1153
+ }
1154
+ .consumption-filter-content .info .current {
1155
+ border-radius: 5px;
1156
+ border: 1px solid #EFD082;
1157
+ background: linear-gradient(180deg, #FFF7E3 0%, #FEFDE6 100%);
1158
+ }
1159
+ .consumption-filter-btn {
1160
+ margin: 0 15px;
1161
+ display: flex;
1162
+ justify-content: space-between;
1163
+ align-items: center;
1164
+ }
1165
+ .consumption-filter-btn .btn {
1166
+ flex: 1;
1167
+ height: 40px;
1168
+ line-height: 40px;
1169
+ text-align: center;
1170
+ border: 1px solid #ccc;
1171
+ box-sizing: border-box;
1172
+ color: #666;
1173
+ font-size: 16px;
1174
+ border-radius: 6px;
1175
+ }
1176
+ .consumption-filter-btn .confirm {
1177
+ margin-left: 11px;
1178
+ color: #000;
1179
+ border: none;
1180
+ background: linear-gradient(90deg, #ffebc1 0%, #ffd7a7 52.29%, #ffb875 100%);
1181
+ }
1182
+ .consumption-filter-bottom {
1183
+ height: 32px;
1184
+ background: #fff;
1185
+ }
1186
+ .consumption-filter .icon {
1187
+ display: block;
1188
+ width: 20px;
1189
+ height: 20px;
1190
+ background-size: 40px;
1191
+ background-repeat: no-repeat;
1192
+ background-position: center center;
1193
+ }
1194
+ .consumption-filter .icon.icon-x {
1195
+ position: absolute;
1196
+ right: 10px;
1197
+ top: 11px;
1198
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDIiIGhlaWdodD0iNDIiIHZpZXdCb3g9IjAgMCA0MiA0MiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggb3BhY2l0eT0iMC4wMSIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MSA0MUgxVjFINDFWNDFaIiBmaWxsPSIjRDhEOEQ4IiBzdHJva2U9ImJsYWNrIiBzdHJva2Utb3BhY2l0eT0iMC4wMSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIzLjM1NjEgMjAuOTk5OUwzMy45NjM3IDMxLjYwNzJDMzQuNjE0NiAzMi4yNTgxIDM0LjYxNDYgMzMuMzEzNCAzMy45NjM3IDMzLjk2NDJDMzMuMzQyNSAzNC41ODU1IDMyLjM1MjcgMzQuNjEzOCAzMS42OTc5IDM0LjA0ODlMMjAuOTk5NCAyMy4zNTY2TDEwLjM5MzUgMzMuOTY0MkM5Ljc0MjY1IDM0LjYxNTEgOC42ODczOCAzNC42MTUxIDguMDM2NSAzMy45NjQyQzcuNDE1MTkgMzMuMzQyOSA3LjM4Njk3IDMyLjM1MzIgNy45NTE3OSAzMS42OTg0TDE4LjY0MjggMjAuOTk5OUw4LjAzNjUgMTAuMzk0QzcuMzg1NjMgOS43NDMxNCA3LjM4NTYzIDguNjg3ODcgOC4wMzY1IDguMDM2OTlDOC42NTc3OSA3LjQxNTY4IDkuNjQ3NTQgNy4zODc0NiAxMC4zMDIzIDcuOTUyMjdMMjAuOTk5NCAxOC42NDMzTDMxLjYwNjcgOC4wMzY5OUMzMi4yNTc2IDcuMzg2MTIgMzMuMzEyOSA3LjM4NjEyIDMzLjk2MzcgOC4wMzY5OUMzNC41ODUgOC42NTgyOCAzNC42MTMzIDkuNjQ4MDMgMzQuMDQ4NSAxMC4zMDI4TDIzLjM1NjEgMjAuOTk5OVoiIGZpbGw9IiMxNzFBMUQiIHN0cm9rZT0iYmxhY2siIHN0cm9rZS1vcGFjaXR5PSIwLjAxIi8+Cjwvc3ZnPgo=");
1199
+ }
1200
+ .list-filter {
1201
+ display: flex;
1202
+ align-items: center;
1203
+ height: 22px;
1204
+ padding-left: 5px;
1205
+ }
1206
+ .list-filter .icon {
1207
+ display: block;
1208
+ font-size: 0;
1209
+ width: 12px;
1210
+ height: 12px;
1211
+ margin-left: 4px;
1212
+ }
1074
1213
  .ocr-id__img {
1075
1214
  width: 20px;
1076
1215
  height: 20px;