@awes-io/ui 2.87.0 → 2.89.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 (72) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/assets/css/components/_index.css +3 -2
  3. package/assets/css/components/action-button.css +12 -1
  4. package/assets/css/components/alert.css +6 -9
  5. package/assets/css/components/button.css +255 -163
  6. package/assets/css/components/context-menu.css +0 -43
  7. package/assets/css/components/image-upload.css +81 -0
  8. package/assets/css/components/label.css +12 -1
  9. package/assets/css/components/list.css +23 -0
  10. package/assets/css/components/mobile-menu-item.css +1 -1
  11. package/assets/css/components/mobile-menu.css +1 -1
  12. package/assets/css/components/modal-buttons.css +17 -0
  13. package/assets/css/components/modal.css +37 -56
  14. package/assets/css/components/nav.css +1 -0
  15. package/assets/css/components/page-header.css +17 -1
  16. package/assets/css/components/page-headline.css +0 -56
  17. package/assets/css/components/page-menu-buttons.css +16 -17
  18. package/assets/css/components/page-modal.css +1 -1
  19. package/assets/css/components/tab-nav.css +2 -2
  20. package/assets/css/components/table.css +2 -2
  21. package/assets/css/components/tags.css +12 -8
  22. package/assets/css/components/user-menu.css +1 -1
  23. package/assets/css/typography.css +50 -7
  24. package/assets/js/icons/mono.js +94 -2
  25. package/assets/js/icons/multicolor.js +6 -6
  26. package/assets/js/styles.js +26 -20
  27. package/assets/js/url.js +3 -0
  28. package/components/1_atoms/AwActionIcon.vue +1 -1
  29. package/components/1_atoms/AwDock.vue +2 -2
  30. package/components/1_atoms/AwIcon/AwIcon.vue +40 -16
  31. package/components/1_atoms/AwIcon/AwIconSystemMono.vue +12 -6
  32. package/components/1_atoms/AwLabel.vue +23 -37
  33. package/components/1_atoms/AwLink.vue +16 -1
  34. package/components/1_atoms/AwList.vue +27 -0
  35. package/components/1_atoms/AwSwitcher.vue +2 -2
  36. package/components/1_atoms/AwTag.vue +54 -0
  37. package/components/2_molecules/AwActionButton.vue +7 -1
  38. package/components/2_molecules/AwButton.vue +116 -51
  39. package/components/2_molecules/AwSelect.vue +51 -39
  40. package/components/2_molecules/_AwSelectFakeInput.vue +10 -6
  41. package/components/2_molecules/_AwSelectInput.vue +10 -6
  42. package/components/3_organisms/AwAddressBlock.vue +2 -3
  43. package/components/3_organisms/AwCalendar/_AwCalendarNav.vue +6 -2
  44. package/components/3_organisms/AwCodeSnippet.vue +1 -2
  45. package/components/3_organisms/AwContextMenu.vue +8 -10
  46. package/components/3_organisms/AwCropper.vue +13 -11
  47. package/components/3_organisms/AwDate.vue +3 -1
  48. package/components/3_organisms/AwImageUpload.vue +267 -0
  49. package/components/3_organisms/AwModal.vue +7 -6
  50. package/components/3_organisms/AwModalButtons.vue +129 -0
  51. package/components/3_organisms/AwPagination.vue +32 -24
  52. package/components/3_organisms/AwPassword.vue +10 -4
  53. package/components/3_organisms/AwPreviewCard.vue +73 -0
  54. package/components/3_organisms/AwSearch.vue +0 -1
  55. package/components/3_organisms/AwTags.vue +5 -7
  56. package/components/3_organisms/AwTel.vue +1 -1
  57. package/components/3_organisms/AwUploaderFiles.vue +1 -1
  58. package/components/4_pages/AwPageMenuButtons.vue +27 -10
  59. package/components/4_pages/AwPageSingle.vue +8 -4
  60. package/components/4_pages/_AwPageHeader.vue +1 -1
  61. package/components/4_pages/_AwPageHeadline.vue +7 -6
  62. package/components/5_layouts/_AwHeaderNotification.vue +4 -2
  63. package/components/5_layouts/_AwMobileMenu.vue +22 -25
  64. package/components/5_layouts/_AwNoty.vue +12 -23
  65. package/components/5_layouts/_AwUserMenu.vue +20 -9
  66. package/components/_config.js +9 -0
  67. package/nuxt/index.js +10 -1
  68. package/package.json +4 -3
  69. package/assets/css/components/button-fixed.css +0 -84
  70. package/assets/css/components/square-icon-button.css +0 -69
  71. package/components/2_molecules/AwSquareIconButton.vue +0 -52
  72. package/components/4_pages/_AwButtonFixed.vue +0 -58
@@ -0,0 +1,267 @@
1
+ <template>
2
+ <div class="aw-image-upload">
3
+ <AwFile
4
+ v-if="!hasValue"
5
+ :disabled="disabled"
6
+ :accept="accept"
7
+ class="aw-image-upload__file"
8
+ @input="handleImage($event)"
9
+ >
10
+ <AwActionIcon
11
+ icon="awesio/plus"
12
+ :text="$t('Photo')"
13
+ color="mono-900"
14
+ on-color="mono-600"
15
+ icon-color="mono-400"
16
+ size="lg"
17
+ />
18
+ </AwFile>
19
+ <AwActionIcon
20
+ v-else-if="fileIcon"
21
+ :icon="fileIcon"
22
+ color="mono-900"
23
+ icon-color="mono-400"
24
+ size="lg"
25
+ class="aw-image-upload__image"
26
+ />
27
+ <img
28
+ v-else
29
+ :src="value"
30
+ :alt="fileName"
31
+ width="80"
32
+ height="80"
33
+ class="aw-image-upload__image"
34
+ />
35
+
36
+ <div v-if="hasValue" class="aw-image-upload__title">
37
+ <strong class="truncate min-w-0">{{ fileName }}</strong>
38
+ <button
39
+ class="aw-image-upload__delete"
40
+ :disabled="disabled"
41
+ @click="clearImage"
42
+ >
43
+ <AwIcon name="awesio/delete" />
44
+ </button>
45
+ </div>
46
+
47
+ <span class="aw-image-upload__description">
48
+ {{ label || $t('Upload your photo (optional).') }}<br />
49
+ <template v-if="formats">{{
50
+ $t('Supports only {formatString} file formats', {
51
+ formatString: formats
52
+ })
53
+ }}</template
54
+ ><template v-if="maxSize"
55
+ >.{{
56
+ $t('The maximum file size is {maxSize}', {
57
+ maxSize
58
+ })
59
+ }}</template
60
+ >
61
+ </span>
62
+
63
+ <Teleport v-if="crop" to="body">
64
+ <AwModal
65
+ ref="cropModal"
66
+ :param="null"
67
+ :title="$t('Edit photo')"
68
+ @before-close="clearUploadedFileOrBlock"
69
+ >
70
+ <AwCropper
71
+ :src="file"
72
+ :save-width="600"
73
+ :save-height="600"
74
+ class="aw-image-upload__aw-cropper"
75
+ @save="onCropSave"
76
+ >
77
+ <template #buttons="slotAttrs">
78
+ <AwButton
79
+ :text="$t('Save Image')"
80
+ :loading="loading"
81
+ @click="slotAttrs.save"
82
+ />
83
+ </template>
84
+ </AwCropper>
85
+ </AwModal>
86
+ </Teleport>
87
+ </div>
88
+ </template>
89
+
90
+ <script>
91
+ import { path, isType } from 'rambdax'
92
+ import { getFileName } from '@AwUtils/url'
93
+ import { conf } from '@AwUtils/component'
94
+ import { AwImageUpload as _config } from '@AwConfig'
95
+
96
+ const NAME_PROP = 'name'
97
+
98
+ const ICON_PROP = 'icon'
99
+
100
+ export default {
101
+ name: 'AwImageUpload',
102
+
103
+ components: {
104
+ Teleport: () => import('vue2-teleport')
105
+ },
106
+
107
+ _config,
108
+
109
+ props: {
110
+ disabled: Boolean,
111
+
112
+ accept: {
113
+ type: String,
114
+ default: 'image/*'
115
+ },
116
+
117
+ label: {
118
+ type: String,
119
+ default: ''
120
+ },
121
+
122
+ formats: {
123
+ type: String,
124
+ default: 'JPG/JPEG/PNG'
125
+ },
126
+
127
+ maxSize: {
128
+ type: String,
129
+ default: '1Mb'
130
+ },
131
+
132
+ crop: {
133
+ type: Boolean,
134
+ default: true
135
+ },
136
+
137
+ value: {
138
+ type: [String, Object],
139
+ default: null
140
+ },
141
+
142
+ uploadConfig: {
143
+ type: Object,
144
+ default() {
145
+ return conf(this, 'uploadConfig')
146
+ }
147
+ },
148
+
149
+ resultPath: {
150
+ type: [String, Array],
151
+ default() {
152
+ return conf(this, 'resultPath')
153
+ }
154
+ }
155
+ },
156
+
157
+ data() {
158
+ return {
159
+ file: '',
160
+ loading: false
161
+ }
162
+ },
163
+
164
+ computed: {
165
+ isObjectValue() {
166
+ return isType('Object', this.value)
167
+ },
168
+
169
+ hasValue() {
170
+ return !!(this.isObjectValue ? this.value[NAME_PROP] : this.value)
171
+ },
172
+
173
+ fileName() {
174
+ return this.isObjectValue
175
+ ? this.value[NAME_PROP]
176
+ : this.value
177
+ ? getFileName(this.value)
178
+ : ''
179
+ },
180
+
181
+ fileIcon() {
182
+ return this.isObjectValue ? this.value[ICON_PROP] : null
183
+ },
184
+
185
+ getValueFromResult() {
186
+ return this.resultPath ? path(this.resultPath) : (val) => val
187
+ }
188
+ },
189
+
190
+ watch: {
191
+ loading(value) {
192
+ this.$emit('loading', value)
193
+ }
194
+ },
195
+
196
+ methods: {
197
+ handleImage(files) {
198
+ if (!files[0] || !(files[0] instanceof File)) return
199
+
200
+ this.file = URL.createObjectURL(files[0])
201
+
202
+ if (this.crop) {
203
+ this.$refs.cropModal.open()
204
+ } else {
205
+ return this.saveImage()
206
+ }
207
+ },
208
+
209
+ async saveImage() {
210
+ try {
211
+ this.loading = true
212
+
213
+ const result = await this._uploadImage()
214
+
215
+ this.$emit('input', result)
216
+ } catch (error) {
217
+ // eslint-disable-next-line no-console
218
+ console.log('File upload error', error)
219
+
220
+ this.file = ''
221
+ } finally {
222
+ this.loading = false
223
+ }
224
+ },
225
+
226
+ async onCropSave(file) {
227
+ if (file instanceof Blob) {
228
+ this.file = URL.createObjectURL(file)
229
+ }
230
+
231
+ await this.saveImage()
232
+
233
+ this.$refs.cropModal?.close()
234
+ },
235
+
236
+ clearUploadedFileOrBlock(stopper) {
237
+ if (this.loading) {
238
+ stopper.preventClose()
239
+ } else {
240
+ this.file = ''
241
+ }
242
+ },
243
+
244
+ clearImage() {
245
+ this.$emit('input', null)
246
+ },
247
+
248
+ async _uploadImage() {
249
+ const file = await fetch(this.file).then((res) => res.blob())
250
+ const data = new FormData()
251
+
252
+ data.append('image', file)
253
+
254
+ if (isType('Function', this.$listeners.upload)) {
255
+ return this.$listeners.upload(data)
256
+ } else {
257
+ const { data: result } = await this.$axios.request({
258
+ ...this.uploadConfig,
259
+ data
260
+ })
261
+
262
+ return getValueFromResult(result)
263
+ }
264
+ }
265
+ }
266
+ }
267
+ </script>
@@ -27,15 +27,18 @@
27
27
  {{ title }}
28
28
  </div>
29
29
 
30
- <AwSquareIconButton
30
+ <AwButton
31
31
  :class="elClasses.close"
32
32
  :title="$t('Close')"
33
33
  :aria-label="$t('Close')"
34
- @click.prevent="close()"
34
+ color="mono-light"
35
35
  tabindex="0"
36
+ @click.prevent="close()"
36
37
  >
37
- <AwIconSystemMono name="close" size="16" />
38
- </AwSquareIconButton>
38
+ <template #icon>
39
+ <AwIconSystemMono name="close" size="16" />
40
+ </template>
41
+ </AwButton>
39
42
  </div>
40
43
  <!-- / header -->
41
44
 
@@ -85,7 +88,6 @@ import { mergeRouteQuery } from '@AwUtils/router'
85
88
  import { conf } from '@AwUtils/component'
86
89
  import { getBemClasses } from '@AwUtils/css'
87
90
  import { AwModal as _config } from '@AwConfig'
88
- import AwSquareIconButton from '../2_molecules/AwSquareIconButton.vue'
89
91
 
90
92
  const DEFAULT_GET_PARAM = 'modal'
91
93
 
@@ -111,7 +113,6 @@ function getStopper() {
111
113
 
112
114
  export default {
113
115
  name: 'AwModal',
114
- components: { AwSquareIconButton },
115
116
 
116
117
  _config,
117
118
 
@@ -0,0 +1,129 @@
1
+ <template>
2
+ <div class="aw-modal-buttons" :class="{ 'aw-modal-buttons--desktop': isDesktop, 'aw-modal-buttons--mobile': !isDesktop }">
3
+ <!-- visible buttons -->
4
+ <slot name="buttons" :buttons="groupedButtons.buttons">
5
+ <AwButton
6
+ v-for="({ listeners, tooltip, size, cssClass, autoWidth, ...attrs }, i) in groupedButtons.buttons"
7
+ :key="i"
8
+ v-tooltip.prepend="tooltip"
9
+ v-bind="attrs"
10
+ :size="size ? size : 'lg'"
11
+ class="aw-modal-buttons__button"
12
+ :class="[
13
+ cssClass,
14
+ {
15
+ 'aw-modal-buttons__button--equal': !isDesktop && !autoWidth
16
+ }
17
+ ]"
18
+ v-on="listeners"
19
+ />
20
+ </slot>
21
+
22
+ <!-- dropdown buttons -->
23
+ <template v-if="groupedButtons.dropdown.length">
24
+ <slot name="toggler" :v-bind="{ togglerProps, isOpened, open, close }">
25
+ <AwButton v-bind="togglerProps" @click="open" />
26
+ </slot>
27
+ <AwDropdown :show.sync="isOpened" :options="$options.dropdownOptions">
28
+ <slot name="dropdown" :buttons="groupedButtons.dropdown">
29
+ <AwDropdownButton
30
+ v-for="({ listeners, tooltip, ...attrs }, i) in groupedButtons.dropdown"
31
+ :key="i"
32
+ v-tooltip.prepend="tooltip"
33
+ v-bind="attrs"
34
+ v-on="listeners"
35
+ />
36
+ </slot>
37
+ </AwDropdown>
38
+ </template>
39
+ </div>
40
+ </template>
41
+
42
+ <script>
43
+ import { omit } from 'rambdax'
44
+
45
+ export default {
46
+ name: 'AwModalButtons',
47
+
48
+ props: {
49
+ items: {
50
+ type: Array,
51
+ default: () => []
52
+ },
53
+
54
+ options: {
55
+ type: Object,
56
+ default: () => ({})
57
+ },
58
+
59
+ togglerOptions: {
60
+ type: Object,
61
+ default: () => ({ color: 'mono', icon: 'more' })
62
+ },
63
+
64
+ desktopFrom: {
65
+ type: String,
66
+ default: 'md'
67
+ },
68
+
69
+ justify: {
70
+ type: String,
71
+ default: 'end'
72
+ }
73
+ },
74
+
75
+ data() {
76
+ return {
77
+ isOpened: false
78
+ }
79
+ },
80
+
81
+ computed: {
82
+ isDesktop() {
83
+ return this.$screen[this.desktopFrom] || false
84
+ },
85
+
86
+ groupedButtons() {
87
+ return this.items.reduce(
88
+ (acc, item) => {
89
+ const { cta, dropdown, show = true, ...itemProps } = { ...this.options, ...item }
90
+
91
+ // rename class prop
92
+ if (itemProps.class) {
93
+ itemProps.cssClass = itemProps.class
94
+ delete itemProps.class
95
+ }
96
+
97
+ // add button if visible
98
+ if (show !== false) {
99
+ const group = this.isDesktop ? (dropdown ? 'dropdown' : 'buttons') : cta ? 'buttons' : 'dropdown'
100
+ acc[group].push(itemProps)
101
+ }
102
+
103
+ return acc
104
+ },
105
+ { buttons: [], dropdown: [] }
106
+ )
107
+ },
108
+
109
+ togglerProps() {
110
+ return { ...omit(['cta'], this.options || {}), ...this.togglerOptions }
111
+ }
112
+ },
113
+
114
+ methods: {
115
+ open() {
116
+ this.isOpened = true
117
+ },
118
+
119
+ close() {
120
+ this.isOpened = false
121
+ }
122
+ },
123
+
124
+ dropdownOptions: {
125
+ placement: 'top-start',
126
+ modifiers: [{ name: 'offset', options: { offset: [0, 5] } }]
127
+ }
128
+ }
129
+ </script>
@@ -13,23 +13,27 @@
13
13
  class="flex-grow flex justify-between lg:justify-center items-center"
14
14
  @click="_onPageClick"
15
15
  >
16
- <AwSquareIconButton
16
+ <AwButton
17
17
  :data-page="prevPage"
18
18
  :disabled="prevPage === null"
19
19
  class="mr-1 lg:hidden"
20
- color="mono-800"
20
+ color="mono"
21
21
  >
22
- <AwIconSystemMono name="arrow" size="16" />
23
- </AwSquareIconButton>
22
+ <template #icon>
23
+ <AwIconSystemMono name="arrow" size="16" />
24
+ </template>
25
+ </AwButton>
24
26
 
25
- <AwSquareIconButton
27
+ <AwButton
26
28
  :data-page="prevPage"
27
29
  :disabled="prevPage === null"
28
- color="mono-800"
30
+ color="mono"
29
31
  class="aw-button-nav__arrow-btn hidden lg:inline-flex mr-4"
30
32
  >
31
- <AwIconSystemMono name="arrow" size="16" />
32
- </AwSquareIconButton>
33
+ <template #icon>
34
+ <AwIconSystemMono name="arrow" size="16" />
35
+ </template>
36
+ </AwButton>
33
37
 
34
38
  <span class="lg:hidden">
35
39
  {{ $t('Page {page} of {pagesTotal}', { page, pagesTotal }) }}
@@ -55,23 +59,27 @@
55
59
  </Component>
56
60
  </div>
57
61
 
58
- <AwSquareIconButton
62
+ <AwButton
59
63
  :data-page="nextPage"
60
64
  :disabled="nextPage === null"
61
- color="mono-800"
65
+ color="mono"
62
66
  class="aw-button-nav__arrow-btn hidden lg:inline-flex ml-4"
63
67
  >
64
- <AwIconSystemMono name="arrow" rotate="180" size="16" />
65
- </AwSquareIconButton>
68
+ <template #icon>
69
+ <AwIconSystemMono name="arrow" rotate="180" size="16" />
70
+ </template>
71
+ </AwButton>
66
72
 
67
- <AwSquareIconButton
73
+ <AwButton
68
74
  :data-page="nextPage"
69
75
  :disabled="nextPage === null"
70
- color="mono-800"
76
+ color="mono"
71
77
  class="ml-1 lg:hidden"
72
78
  >
73
- <AwIconSystemMono name="arrow" rotate="180" size="16" />
74
- </AwSquareIconButton>
79
+ <template #icon>
80
+ <AwIconSystemMono name="arrow" rotate="180" size="16" />
81
+ </template>
82
+ </AwButton>
75
83
  </div>
76
84
 
77
85
  <!-- limit -->
@@ -83,12 +91,14 @@
83
91
  content-class="p-0"
84
92
  @click="limitsOpened = !limitsOpened"
85
93
  >
86
- {{ limit }}
87
- <AwIconSystemMono
88
- name="triangle"
89
- class="inline transition-200"
90
- :class="{ 'rotate-180': limitsOpened }"
91
- />
94
+ <template #icon-right>
95
+ {{ limit }}
96
+ <AwIconSystemMono
97
+ name="triangle"
98
+ class="inline transition-200"
99
+ :class="{ 'rotate-180': limitsOpened }"
100
+ />
101
+ </template>
92
102
  </AwButton>
93
103
  <AwDropdown
94
104
  ref="limits"
@@ -116,11 +126,9 @@
116
126
 
117
127
  <script>
118
128
  import { isNil, range } from 'rambdax'
119
- import AwSquareIconButton from '../2_molecules/AwSquareIconButton.vue'
120
129
 
121
130
  export default {
122
131
  name: 'AwPagination',
123
- components: { AwSquareIconButton },
124
132
 
125
133
  props: {
126
134
  /**
@@ -7,10 +7,16 @@
7
7
  type="button"
8
8
  @click.stop="type = isShown ? 'password' : 'text'"
9
9
  >
10
- <Transition name="fade-from-bottom" mode="out-in">
11
- <AwIconSystemMono v-if="isShown" key="hide" name="eye-no" />
12
- <AwIconSystemMono v-else key="show" name="eye" />
13
- </Transition>
10
+ <template #icon>
11
+ <Transition name="fade-from-bottom" mode="out-in">
12
+ <AwIconSystemMono
13
+ v-if="isShown"
14
+ key="hide"
15
+ name="eye-no"
16
+ />
17
+ <AwIconSystemMono v-else key="show" name="eye" />
18
+ </Transition>
19
+ </template>
14
20
  </AwButton>
15
21
  </template>
16
22
  </AwInput>
@@ -0,0 +1,73 @@
1
+ <template>
2
+ <AwCard class="grid place-items-center text-center gap-6 relative">
3
+ <AwTag
4
+ v-if="previewText !== false"
5
+ :text="
6
+ typeof previewText === 'string' && previewText ? previewText : $t('Preview')
7
+ "
8
+ color="mono-100"
9
+ class="absolute"
10
+ style="top: var(--card-padding-y); right: var(--card-padding-x)"
11
+ />
12
+
13
+ <slot name="icon" :image="image">
14
+ <AwActionIcon
15
+ :image="image ? { src: image, alt: $t('Preview image') } : null"
16
+ size="lg"
17
+ color="mono-800"
18
+ on-color="mono-500"
19
+ >
20
+ <AwIcon name="awesio/image" :size="48" />
21
+ </AwActionIcon>
22
+ </slot>
23
+
24
+ <slot name="title" :title="title || titlePlaceholder">
25
+ <AwSubHeadline
26
+ v-if="title || titlePlaceholder"
27
+ tag="div"
28
+ class="m-0 text-lg leading-none"
29
+ >
30
+ {{ title || titlePlaceholder }}
31
+ </AwSubHeadline>
32
+ </slot>
33
+
34
+ <slot name="after-title">
35
+ {{ description }}
36
+ </slot>
37
+ </AwCard>
38
+ </template>
39
+
40
+ <script>
41
+ export default {
42
+ name: 'AwPreviewCard',
43
+
44
+ props: {
45
+ image: {
46
+ type: String,
47
+ default: ''
48
+ },
49
+
50
+ title: {
51
+ type: String,
52
+ default: ''
53
+ },
54
+
55
+ titlePlaceholder: {
56
+ type: String,
57
+ default: ''
58
+ },
59
+
60
+ previewText: {
61
+ type: [String, Boolean],
62
+ default: ''
63
+ },
64
+
65
+ description: {
66
+ type: String,
67
+ default: ''
68
+ },
69
+
70
+ loading: Boolean
71
+ }
72
+ }
73
+ </script>
@@ -15,7 +15,6 @@
15
15
  v-if="!$route.query[param]"
16
16
  name="search"
17
17
  class="aw-search__icon-default mr-4"
18
- size="24"
19
18
  />
20
19
  <button
21
20
  v-else
@@ -7,16 +7,14 @@
7
7
  <AwFlow :gap="2" class="aw-tags__wrap">
8
8
  <template v-for="(tag, i) in _tags">
9
9
  <slot v-bind="tag" :index="i" :getColor="getColor">
10
- <Component
11
- :is="tag.tag"
10
+ <AwTag
11
+ :tag="tag.tag"
12
12
  :key="tag.key"
13
- :style="{ backgroundColor: tag.color }"
13
+ :color="tag.color"
14
+ :text="tag.text"
14
15
  :data-tag-index="i"
15
16
  :class="{ 'aw-tag--clickable': _hasClickListener }"
16
- class="aw-tag"
17
- >
18
- {{ tag.text }}
19
- </Component>
17
+ />
20
18
  </slot>
21
19
  </template>
22
20
  </AwFlow>
@@ -42,7 +42,7 @@
42
42
  "
43
43
  >
44
44
  <AwIconSystemMono
45
- :name="phoneNumber.valid ? 'check-light' : 'ban-light'"
45
+ :name="phoneNumber.valid ? 'check' : 'ban'"
46
46
  />
47
47
  </span>
48
48
  </template>
@@ -26,7 +26,7 @@
26
26
  <AwButton
27
27
  theme="icon"
28
28
  icon="close"
29
- size="sm"
29
+ size="xs"
30
30
  :text="parent.$t('Remove file')"
31
31
  @click="props.removeFile(file.id)"
32
32
  />