@weni/unnnic-system 3.2.8 → 3.2.9-alpha.1

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 (172) hide show
  1. package/dist/components/Accordion/Accordion.vue.d.ts +1 -1
  2. package/dist/components/Alert/Alert.vue.d.ts +18 -119
  3. package/dist/components/Alert/Alert.vue.d.ts.map +1 -1
  4. package/dist/components/Alert/Version1dot1.vue.d.ts +2 -38
  5. package/dist/components/Alert/Version1dot1.vue.d.ts.map +1 -1
  6. package/dist/components/AudioRecorder/AudioHandler.vue.d.ts +2 -2
  7. package/dist/components/AudioRecorder/AudioPlayer.vue.d.ts +1 -1
  8. package/dist/components/AudioRecorder/AudioRecorder.vue.d.ts +5 -5
  9. package/dist/components/AvatarIcon/AvatarIcon.vue.d.ts +2 -2
  10. package/dist/components/Banner/Banner.vue.d.ts +1 -1
  11. package/dist/components/Banner/InfoBanner.vue.d.ts +1 -1
  12. package/dist/components/Breadcrumb/Breadcrumb.vue.d.ts +1 -1
  13. package/dist/components/Button/Button.vue.d.ts +2 -2
  14. package/dist/components/Button/Button.vue.d.ts.map +1 -1
  15. package/dist/components/Button/ButtonIcon.vue.d.ts +1 -1
  16. package/dist/components/Button/types.d.ts +1 -1
  17. package/dist/components/Button/types.d.ts.map +1 -1
  18. package/dist/components/Card/AccountCard.vue.d.ts +3 -3
  19. package/dist/components/Card/BlankCard.vue.d.ts +1 -1
  20. package/dist/components/Card/Card.vue.d.ts +21 -21
  21. package/dist/components/Card/CardCompany.vue.d.ts +8 -8
  22. package/dist/components/Card/CardData.vue.d.ts +1 -1
  23. package/dist/components/Card/CardStatusesContainer.vue.d.ts +4 -4
  24. package/dist/components/Card/ContentCard.vue.d.ts +2 -2
  25. package/dist/components/Card/DashCard.vue.d.ts +4 -4
  26. package/dist/components/Card/DefaultCard.vue.d.ts +1 -1
  27. package/dist/components/Card/MarketplaceCard.vue.d.ts +2 -2
  28. package/dist/components/Card/SimpleCard.vue.d.ts +3 -3
  29. package/dist/components/Card/StatusCard.vue.d.ts +2 -2
  30. package/dist/components/Card/TitleCard.vue.d.ts +2 -2
  31. package/dist/components/CardImage/CardImage.vue.d.ts +8 -8
  32. package/dist/components/CardInformation/CardInformation.vue.d.ts +4 -4
  33. package/dist/components/CardProject/CardProject.vue.d.ts +3 -3
  34. package/dist/components/Carousel/Carousel.vue.d.ts +11 -11
  35. package/dist/components/Carousel/TagCarousel.vue.d.ts +9 -9
  36. package/dist/components/ChartBar/ChartBar.vue.d.ts +8 -8
  37. package/dist/components/ChartLine/ChartLine.vue.d.ts +1 -1
  38. package/dist/components/ChatText/ChatText.vue.d.ts +2 -2
  39. package/dist/components/ChatsContact/ChatsContact.vue.d.ts +15 -15
  40. package/dist/components/ChatsDashboardTagLive/ChatsDashboardTagLive.vue.d.ts +1 -1
  41. package/dist/components/ChatsHeader/ChatsHeader.vue.d.ts +1 -1
  42. package/dist/components/ChatsHeader/ChatsHeader.vue.d.ts.map +1 -1
  43. package/dist/components/ChatsMessage/ChatsMessage.vue.d.ts +5 -5
  44. package/dist/components/ChatsMessage/ChatsMessageStatusBackdrop.vue.d.ts +2 -2
  45. package/dist/components/ChatsNavbar/ChatsNavbar.vue.d.ts +1 -1
  46. package/dist/components/ChatsUserAvatar/ChatsUserAvatar.vue.d.ts +2 -2
  47. package/dist/components/Checkbox/Checkbox.vue.d.ts +3 -3
  48. package/dist/components/Comment/Comment.vue.d.ts +1 -1
  49. package/dist/components/DataArea/DataArea.vue.d.ts +2 -2
  50. package/dist/components/DataTable/index.vue.d.ts +1 -1
  51. package/dist/components/DataTable/index.vue.d.ts.map +1 -1
  52. package/dist/components/DateFilter/DateFilter.vue.d.ts +182 -27
  53. package/dist/components/DatePicker/DatePicker.vue.d.ts +8 -8
  54. package/dist/components/Drawer/Drawer.vue.d.ts +7 -7
  55. package/dist/components/Dropdown/Dropdown.vue.d.ts +1 -1
  56. package/dist/components/Dropdown/LanguageSelect.vue.d.ts +3 -3
  57. package/dist/components/Flag.vue.d.ts +2 -2
  58. package/dist/components/FormElement/FormElement.vue.d.ts +38 -32
  59. package/dist/components/FormElement/FormElement.vue.d.ts.map +1 -1
  60. package/dist/components/Icon.vue.d.ts +1 -1
  61. package/dist/components/IconLoading/IconLoading.vue.d.ts +1 -1
  62. package/dist/components/ImportCard/ImportCard.vue.d.ts +7 -7
  63. package/dist/components/Input/BaseInput.vue.d.ts +10 -1
  64. package/dist/components/Input/BaseInput.vue.d.ts.map +1 -1
  65. package/dist/components/Input/Input.vue.d.ts +182 -27
  66. package/dist/components/Input/Input.vue.d.ts.map +1 -1
  67. package/dist/components/Input/TextInput.vue.d.ts +31 -13
  68. package/dist/components/Input/TextInput.vue.d.ts.map +1 -1
  69. package/dist/components/InputDatePicker/InputDatePicker.vue.d.ts +192 -37
  70. package/dist/components/InputNext/InputNext.vue.d.ts +3 -3
  71. package/dist/components/Label/Label.vue.d.ts +9 -15
  72. package/dist/components/Label/Label.vue.d.ts.map +1 -1
  73. package/dist/components/Modal/Modal.vue.d.ts +2 -2
  74. package/dist/components/ModalDialog/ModalDialog.vue.d.ts +9 -9
  75. package/dist/components/ModalDialog/ModalDialog.vue.d.ts.map +1 -1
  76. package/dist/components/ModalNext/ModalNext.vue.d.ts +190 -35
  77. package/dist/components/ModalUpload/ModalUpload.vue.d.ts +14 -14
  78. package/dist/components/MoodRating/MoodRating.vue.d.ts +1 -1
  79. package/dist/components/MultiSelect/MultiSelect.vue.d.ts +7 -7
  80. package/dist/components/Pagination/Pagination.vue.d.ts +6 -6
  81. package/dist/components/ProgressBar/ProgressBar.vue.d.ts +1 -1
  82. package/dist/components/Radio/Radio.vue.d.ts +2 -2
  83. package/dist/components/SelectSmart/SelectSmart.vue.d.ts +45 -27
  84. package/dist/components/SelectSmart/SelectSmartMultipleHeader.vue.d.ts +8 -8
  85. package/dist/components/SelectSmart/SelectSmartOption.vue.d.ts +4 -4
  86. package/dist/components/SelectTime/index.vue.d.ts +31 -13
  87. package/dist/components/SkeletonLoading/skeletonTheme.vue.d.ts +1 -1
  88. package/dist/components/Slider/Slider.vue.d.ts +2 -2
  89. package/dist/components/StarRating/StarRating.vue.d.ts +1 -1
  90. package/dist/components/Switch/Switch.vue.d.ts +2 -2
  91. package/dist/components/Tab/Tab.vue.d.ts +2 -2
  92. package/dist/components/TableNext/TableBodyCell.vue.d.ts +2 -2
  93. package/dist/components/TableNext/TablePagination.vue.d.ts +6 -6
  94. package/dist/components/TabsExpanded/TabsExpanded.vue.d.ts +1 -1
  95. package/dist/components/Tag/BrandTag.vue.d.ts +2 -2
  96. package/dist/components/Tag/DefaultTag.vue.d.ts +2 -2
  97. package/dist/components/Tag/IndicatorTag.vue.d.ts +2 -2
  98. package/dist/components/Tag/Tag.vue.d.ts +8 -8
  99. package/dist/components/TemplatePreview/TemplatePreview.vue.d.ts +9 -0
  100. package/dist/components/TemplatePreview/TemplatePreview.vue.d.ts.map +1 -0
  101. package/dist/components/TemplatePreview/TemplatePreviewModal.vue.d.ts +15 -0
  102. package/dist/components/TemplatePreview/TemplatePreviewModal.vue.d.ts.map +1 -0
  103. package/dist/components/TextArea/TextArea.vue.d.ts +38 -32
  104. package/dist/components/TextArea/TextArea.vue.d.ts.map +1 -1
  105. package/dist/components/Toast/Toast.vue.d.ts +16 -0
  106. package/dist/components/Toast/Toast.vue.d.ts.map +1 -0
  107. package/dist/components/Toast/ToastManager.d.ts +14 -0
  108. package/dist/components/Toast/ToastManager.d.ts.map +1 -0
  109. package/dist/components/Toast/types.d.ts +35 -0
  110. package/dist/components/Toast/types.d.ts.map +1 -0
  111. package/dist/components/ToolTip/ToolTip.vue.d.ts +1 -1
  112. package/dist/components/Tour/Tour.vue.d.ts +6 -6
  113. package/dist/components/Tour/TourPopover.vue.d.ts +6 -6
  114. package/dist/components/UploadArea/UploadArea.vue.d.ts +7 -7
  115. package/dist/components/index.d.ts +2116 -1064
  116. package/dist/components/index.d.ts.map +1 -1
  117. package/dist/{es-b3e51efa.js → es-2735a8fb.js} +1 -1
  118. package/dist/{index-b9e3c5e9.js → index-e012fa52.js} +8396 -8093
  119. package/dist/{pt-br-20887b32.js → pt-br-f38a8b9c.js} +1 -1
  120. package/dist/style.css +1 -1
  121. package/dist/unnnic.js +126 -120
  122. package/dist/unnnic.umd.cjs +42 -41
  123. package/dist/utils/call.d.ts +2 -1
  124. package/dist/utils/call.d.ts.map +1 -1
  125. package/package.json +2 -2
  126. package/src/assets/img/previews/doc-preview.png +0 -0
  127. package/src/assets/img/previews/image-preview.png +0 -0
  128. package/src/assets/img/previews/video-preview.png +0 -0
  129. package/src/assets/scss/scheme-colors.scss +131 -4
  130. package/src/assets/tokens/colors.json +2 -2
  131. package/src/components/Alert/Alert.vue +26 -135
  132. package/src/components/Alert/Version1dot1.vue +0 -36
  133. package/src/components/Button/Button.vue +60 -108
  134. package/src/components/Button/types.ts +0 -1
  135. package/src/components/FormElement/FormElement.vue +51 -91
  136. package/src/components/Input/BaseInput.vue +10 -12
  137. package/src/components/Input/Input.scss +17 -20
  138. package/src/components/Input/Input.vue +96 -28
  139. package/src/components/Input/TextInput.vue +28 -41
  140. package/src/components/Input/__test__/TextInput.spec.js +5 -5
  141. package/src/components/Input/__test__/__snapshots__/Input.spec.js.snap +12 -3
  142. package/src/components/Input/__test__/__snapshots__/TextInput.spec.js.snap +1 -1
  143. package/src/components/Label/Label.vue +52 -21
  144. package/src/components/Label/__tests__/Label.spec.js +1 -1
  145. package/src/components/Label/__tests__/__snapshots__/Label.spec.js.snap +1 -1
  146. package/src/components/ModalDialog/ModalDialog.vue +1 -0
  147. package/src/components/ModalDialog/__tests__/__snapshots__/ModalDialog.spec.js.snap +1 -1
  148. package/src/components/TableNext/__test__/__snapshots__/TableNext.spec.js.snap +2 -2
  149. package/src/components/TableNext/__test__/__snapshots__/TablePagination.spec.js.snap +2 -2
  150. package/src/components/TemplatePreview/TemplatePreview.vue +252 -0
  151. package/src/components/TemplatePreview/TemplatePreviewModal.vue +51 -0
  152. package/src/components/TemplatePreview/types.d.ts +16 -0
  153. package/src/components/TextArea/TextArea.vue +13 -9
  154. package/src/components/TextArea/__test__/__snapshots__/TextArea.spec.js.snap +7 -2
  155. package/src/components/Toast/Toast.vue +236 -0
  156. package/src/components/Toast/ToastManager.ts +110 -0
  157. package/src/components/Toast/types.ts +57 -0
  158. package/src/components/index.ts +18 -4
  159. package/src/stories/Alert.stories.js +6 -67
  160. package/src/stories/Button.stories.js +2 -17
  161. package/src/stories/Input.stories.js +16 -3
  162. package/src/stories/Label.stories.js +7 -0
  163. package/src/stories/TemplatePreview.stories.js +94 -0
  164. package/src/stories/TemplatePreviewModal.stories.js +110 -0
  165. package/src/stories/Toast.mdx +123 -0
  166. package/src/stories/Toast.stories.js +126 -0
  167. package/src/types/scheme-colors.d.ts +120 -14
  168. package/src/utils/call.js +46 -18
  169. package/src/components/Alert/AlertBanner.vue +0 -182
  170. package/src/components/Alert/AlertCaller.vue +0 -49
  171. package/src/components/Alert/__tests__/AlertBanner.spec.js +0 -89
  172. package/src/components/Alert/__tests__/AlertCaller.spec.js +0 -98
@@ -6,20 +6,16 @@
6
6
  :class="[
7
7
  'unnnic-button',
8
8
  `unnnic-button--size-${size}`,
9
- `unnnic-button--${type}`,
9
+ `unnnic-button--${buttonType}`,
10
10
  iconCenter ? `unnnic-button--icon-on-center` : null,
11
11
  float ? `unnnic-button--float` : null,
12
12
  ]"
13
13
  >
14
- <UnnnicIcon
14
+ <UnnnicIconLoading
15
15
  v-if="loading"
16
- icon="loading-circle-1"
17
16
  :scheme="iconScheme"
18
17
  :size="iconSize"
19
- :filled="iconsFilled"
20
18
  :style="{ position: 'absolute' }"
21
- class="rotation"
22
- :next="next"
23
19
  data-testid="icon-loading"
24
20
  />
25
21
 
@@ -72,6 +68,7 @@
72
68
  <script setup lang="ts">
73
69
  import { computed, watch, useSlots } from 'vue';
74
70
  import UnnnicIcon from '../Icon.vue';
71
+ import UnnnicIconLoading from '../IconLoading/IconLoading.vue';
75
72
  import type { ButtonProps, ButtonSize, ButtonType } from './types';
76
73
  import type { SchemeColor } from '@/types/scheme-colors';
77
74
 
@@ -102,8 +99,8 @@ const buttonDisabled = computed(() => {
102
99
  });
103
100
 
104
101
  const iconSize = computed(() => {
105
- if (props.size === 'small') return 'sm';
106
- return 'md';
102
+ if (props.size === 'extra-large') return 'lg';
103
+ return 'ant';
107
104
  });
108
105
 
109
106
  const hasText = computed(() => {
@@ -120,12 +117,11 @@ const iconScheme = computed((): SchemeColor => {
120
117
  primary: 'neutral-white',
121
118
  secondary: 'neutral-dark',
122
119
  tertiary: 'neutral-dark',
123
- alternative: 'neutral-white',
124
120
  warning: 'neutral-white',
125
121
  attention: 'neutral-white',
126
122
  };
127
123
 
128
- return typeToSchemeMap[props.type] || 'neutral-white';
124
+ return typeToSchemeMap[buttonType.value] || 'neutral-white';
129
125
  });
130
126
 
131
127
  const isSizePropValid = computed(() => {
@@ -136,16 +132,23 @@ const isSizePropValid = computed(() => {
136
132
  );
137
133
  });
138
134
 
135
+ const buttonType = computed(() => {
136
+ return (
137
+ {
138
+ alternative: 'tertiary',
139
+ }[props.type] || props.type
140
+ );
141
+ });
142
+
139
143
  const isTypePropValid = computed(() => {
140
144
  const validTypes: ButtonType[] = [
141
145
  'primary',
142
146
  'secondary',
143
147
  'tertiary',
144
- 'alternative',
145
148
  'warning',
146
149
  'attention',
147
150
  ];
148
- return validTypes.includes(props.type);
151
+ return validTypes.includes(buttonType.value);
149
152
  });
150
153
 
151
154
  const validateProps = () => {
@@ -159,6 +162,8 @@ const validateProps = () => {
159
162
 
160
163
  if (!isTypePropValid.value) {
161
164
  errorMessage += ' Invalid type prop.';
165
+ errorMessage +=
166
+ ' Please provide one of the following types: primary, secondary, tertiary, warning, attention. Alternative is discontinued and it was forced renamed to tertiary.';
162
167
  }
163
168
 
164
169
  throw new Error(errorMessage);
@@ -196,13 +201,12 @@ watch(
196
201
  display: inline-flex;
197
202
  align-items: center;
198
203
  justify-content: center;
199
- border-radius: $unnnic-border-radius-sm;
204
+ border-radius: $unnnic-radius-2;
200
205
  border: 0;
201
206
  outline: none;
202
207
  overflow: hidden;
203
208
  white-space: nowrap;
204
- font-weight: $unnnic-font-weight-regular;
205
- font-family: $unnnic-font-family-secondary;
209
+ font: $unnnic-font-action;
206
210
  cursor: pointer;
207
211
  position: relative;
208
212
 
@@ -216,129 +220,91 @@ watch(
216
220
  }
217
221
  }
218
222
 
223
+ &--primary,
224
+ &--warning,
225
+ &--attention {
226
+ color: $unnnic-color-fg-inverted;
227
+ }
228
+
229
+ &--secondary,
230
+ &--tertiary {
231
+ color: $unnnic-color-fg-emphasized;
232
+ }
233
+
219
234
  &--primary {
220
- background-color: $unnnic-color-weni-600;
221
- color: $unnnic-color-neutral-white;
235
+ background-color: $unnnic-color-bg-active;
222
236
 
223
237
  &:hover:enabled {
224
- background-color: $unnnic-color-weni-700;
238
+ background-color: $unnnic-color-teal-700;
225
239
  }
226
240
 
227
241
  &:active:enabled {
228
- background-color: $unnnic-color-weni-800;
242
+ background-color: $unnnic-color-teal-800;
229
243
  }
230
244
  }
231
245
 
232
246
  &--secondary {
233
- background-color: $unnnic-color-neutral-white;
234
- color: $unnnic-color-neutral-dark;
247
+ background-color: $unnnic-color-bg-base;
235
248
  box-shadow: inset 0 0 0 $unnnic-border-width-thinner
236
- $unnnic-color-neutral-cleanest;
249
+ $unnnic-color-border-base;
237
250
 
238
251
  &:hover:enabled {
239
- background-color: $unnnic-color-neutral-light;
240
- }
241
-
242
- &:disabled {
243
- box-shadow: none;
252
+ background-color: $unnnic-color-gray-50;
244
253
  }
245
254
 
246
255
  &:active:enabled {
247
- background-color: $unnnic-color-neutral-soft;
248
- }
249
- }
250
-
251
- &--tertiary {
252
- background-color: transparent;
253
- color: $unnnic-color-neutral-dark;
254
-
255
- &:hover:enabled {
256
- background-color: $unnnic-color-neutral-light;
256
+ background-color: $unnnic-color-gray-100;
257
257
  }
258
258
 
259
259
  &:disabled {
260
- color: $unnnic-color-neutral-clean;
261
- cursor: not-allowed;
262
- }
263
-
264
- &:active:enabled {
265
- background-color: $unnnic-color-neutral-soft;
260
+ box-shadow: none;
266
261
  }
267
262
  }
268
263
 
269
- &--alternative {
270
- background-color: $unnnic-color-weni-50;
271
- color: $unnnic-color-weni-800;
272
-
273
- :deep(svg .primary) {
274
- fill: $unnnic-color-weni-800;
275
- }
276
-
277
- :deep(svg .primary-stroke) {
278
- stroke: $unnnic-color-weni-800;
279
- }
264
+ &--tertiary {
265
+ background-color: transparent;
280
266
 
281
267
  &:hover:enabled {
282
- background-color: $unnnic-color-weni-100;
283
- }
284
-
285
- &:disabled {
286
- :deep(svg .primary) {
287
- fill: $unnnic-color-neutral-clean;
288
- }
289
-
290
- :deep(svg .primary-stroke) {
291
- stroke: $unnnic-color-neutral-clean;
292
- }
268
+ background-color: rgba($unnnic-color-gray-400, 0.1);
293
269
  }
294
270
 
295
271
  &:active:enabled {
296
- background-color: $unnnic-color-weni-200;
297
- color: $unnnic-color-weni-900;
298
-
299
- :deep(svg .primary) {
300
- fill: $unnnic-color-weni-900;
301
- }
302
-
303
- :deep(svg .primary-stroke) {
304
- stroke: $unnnic-color-weni-900;
305
- }
272
+ background-color: rgba($unnnic-color-gray-400, 0.2);
306
273
  }
307
274
  }
308
275
 
309
276
  &--warning {
310
- background-color: $unnnic-color-aux-red-500;
277
+ background-color: $unnnic-color-red-500;
311
278
  color: $unnnic-color-neutral-white;
312
279
 
313
280
  &:hover:enabled {
314
- background-color: $unnnic-color-aux-red-700;
281
+ background-color: $unnnic-color-red-600;
315
282
  }
316
283
 
317
284
  &:active:enabled {
318
- background-color: $unnnic-color-aux-red-900;
285
+ background-color: $unnnic-color-red-700;
319
286
  }
320
287
  }
321
288
 
322
289
  &--attention {
323
- background-color: $unnnic-color-aux-yellow-500;
324
- color: $unnnic-color-neutral-white;
290
+ background-color: $unnnic-color-yellow-500;
325
291
 
326
292
  &:hover:enabled {
327
- background-color: $unnnic-color-aux-yellow-700;
293
+ background-color: $unnnic-color-yellow-600;
328
294
  }
329
295
 
330
296
  &:active:enabled {
331
- background-color: $unnnic-color-aux-yellow-900;
297
+ background-color: $unnnic-color-yellow-700;
332
298
  }
333
299
  }
334
300
 
335
301
  &--primary:disabled,
336
302
  &--secondary:disabled,
337
- &--alternative:disabled,
303
+ &--tertiary:disabled,
338
304
  &--warning:disabled,
339
305
  &--attention:disabled {
340
- background-color: $unnnic-color-neutral-soft;
341
- color: $unnnic-color-neutral-clean;
306
+ background-color: $unnnic-color-bg-muted;
307
+ color: $unnnic-color-fg-muted;
342
308
  cursor: not-allowed;
343
309
  }
344
310
 
@@ -351,26 +317,12 @@ watch(
351
317
  box-shadow: $unnnic-shadow-level-near;
352
318
  }
353
319
 
354
- &--size {
355
- &-extra-large,
356
- &-large,
357
- &-small {
358
- padding: $unnnic-squish-xs;
359
- font-size: $unnnic-font-size-body-gt;
360
- line-height: ($unnnic-font-size-body-gt + $unnnic-line-height-medium);
361
- }
362
-
363
- &-extra-large {
364
- height: 58px;
365
- }
366
-
367
- &-large {
368
- height: 46px;
369
- }
320
+ &--size-large {
321
+ padding: $unnnic-space-3 $unnnic-space-4;
322
+ }
370
323
 
371
- &-small {
372
- height: 38px;
373
- }
324
+ &--size-small {
325
+ padding: $unnnic-space-2 $unnnic-space-4;
374
326
  }
375
327
  }
376
328
  </style>
@@ -388,8 +340,8 @@ watch(
388
340
  }
389
341
 
390
342
  &-large {
391
- height: 46px;
392
- width: 46px;
343
+ height: 45px;
344
+ width: 45px;
393
345
  }
394
346
 
395
347
  &-large,
@@ -404,8 +356,8 @@ watch(
404
356
 
405
357
  &-small {
406
358
  padding: $unnnic-inset-nano;
407
- height: 38px;
408
- width: 38px;
359
+ height: 37px;
360
+ width: 37px;
409
361
 
410
362
  .unnnic-icon {
411
363
  width: $unnnic-icon-size-ant;
@@ -4,7 +4,6 @@ export type ButtonType =
4
4
  | 'primary'
5
5
  | 'secondary'
6
6
  | 'tertiary'
7
- | 'alternative'
8
7
  | 'warning'
9
8
  | 'attention';
10
9
 
@@ -17,52 +17,31 @@
17
17
 
18
18
  <slot></slot>
19
19
 
20
- <p
21
- v-if="shouldShowErrorSection"
22
- class="unnnic-form-element__error"
23
- >
24
- <template v-if="error !== true">
25
- <UnnnicIcon
26
- size="sm"
27
- icon="warning"
28
- scheme="aux-red-500"
29
- />
30
-
31
- {{ fullySanitize(error) }}
32
- </template>
33
-
34
- <span
35
- v-if="!!$slots.rightMessage"
36
- class="unnnic-form-element__right-message"
37
- >
38
- <slot name="rightMessage"></slot>
39
- </span>
40
- </p>
41
-
42
- <p
43
- v-if="message || !!$slots.rightMessage"
44
- class="unnnic-form-element__message"
45
- >
46
- {{ fullySanitize(message) }}
47
-
48
- <span
49
- v-if="!shouldShowErrorSection && !!$slots.rightMessage"
50
- class="unnnic-form-element__right-message"
51
- >
20
+ <section class="unnnic-form-element__hints-container">
21
+ <section class="unnnic-form-element__message-container">
22
+ <p
23
+ v-if="message"
24
+ class="unnnic-form-element__message"
25
+ >
26
+ {{ fullySanitize(message) }}
27
+ </p>
28
+ <p
29
+ v-if="!!error.length"
30
+ class="unnnic-form-element__message error"
31
+ >
32
+ {{ Array.isArray(error) ? error.join(', ') : error }}
33
+ </p>
34
+ </section>
35
+ <p v-if="!!$slots.rightMessage">
52
36
  <slot name="rightMessage"></slot>
53
- </span>
54
- </p>
37
+ </p>
38
+ </section>
55
39
  </section>
56
40
  </template>
57
41
 
58
42
  <script>
59
- import UnnnicIcon from '../../components/Icon.vue';
60
43
  import { fullySanitize } from '../../utils/sanitize';
61
44
  export default {
62
- components: {
63
- UnnnicIcon,
64
- },
65
-
66
45
  props: {
67
46
  size: {
68
47
  type: String,
@@ -70,28 +49,18 @@ export default {
70
49
  validator: (size) => ['md', 'sm'].includes(size),
71
50
  },
72
51
 
73
- label: String,
52
+ label: { type: String, default: '' },
74
53
 
75
- fixedLabel: Boolean,
54
+ fixedLabel: { type: Boolean, default: false },
76
55
 
77
56
  error: {
78
57
  type: [Boolean, String],
79
58
  default: false,
80
59
  },
81
60
 
82
- message: String,
83
-
84
- disabled: Boolean,
85
- },
86
-
87
- data() {
88
- return {};
89
- },
61
+ message: { type: String, default: '' },
90
62
 
91
- computed: {
92
- shouldShowErrorSection() {
93
- return this.error && (this.error !== true || !!this.$slots.rightMessage);
94
- },
63
+ disabled: { type: Boolean, default: false },
95
64
  },
96
65
  methods: {
97
66
  fullySanitize,
@@ -102,75 +71,66 @@ export default {
102
71
  <style lang="scss" scoped>
103
72
  @use '@/assets/scss/unnnic' as *;
104
73
 
74
+ * {
75
+ margin: $unnnic-space-0;
76
+ padding: $unnnic-space-0;
77
+ box-sizing: border-box;
78
+ }
79
+
105
80
  .unnnic-form-element {
106
81
  &__label {
107
- margin: 0;
108
- margin-bottom: $unnnic-spacing-nano;
109
-
82
+ font: $unnnic-font-body;
110
83
  color: $unnnic-color-neutral-cloudy;
111
- font-family: $unnnic-font-family-secondary;
112
- font-weight: $unnnic-font-weight-regular;
113
- font-size: $unnnic-font-size-body-gt;
114
- line-height: $unnnic-font-size-body-gt + $unnnic-line-height-md;
115
-
116
- $label-bottom-spacing: 3px;
84
+ margin-bottom: $unnnic-space-1;
85
+ display: flex;
86
+ align-items: center;
87
+ gap: $unnnic-space-2;
117
88
 
118
89
  &--fixed {
119
- margin-top: -$unnnic-font-size-body-gt - $unnnic-line-height-md +
120
- $label-bottom-spacing;
90
+ margin-top: -$unnnic-font-size-body-gt - $unnnic-space-2 + $unnnic-space-1;
121
91
  }
122
92
 
123
93
  &--fixed {
124
- margin-bottom: 0;
94
+ margin-bottom: $unnnic-space-0;
125
95
  position: absolute;
126
- padding: 0 $unnnic-spacing-nano;
127
- margin-left: $unnnic-spacing-xs;
96
+ padding: $unnnic-space-0 $unnnic-space-1;
97
+ margin-left: $unnnic-space-2;
128
98
 
129
99
  &:after {
130
100
  content: ' ';
131
101
  position: absolute;
132
- left: 0;
133
- bottom: $label-bottom-spacing - $unnnic-border-width-thinner;
102
+ left: $unnnic-space-0;
103
+ bottom: $unnnic-space-1 - $unnnic-border-width-thinner;
134
104
  width: 100%;
135
105
  height: $unnnic-border-width-thinner;
136
- background-color: $unnnic-color-neutral-white;
106
+ background-color: $unnnic-color-white;
137
107
  }
138
108
  }
139
109
  }
140
110
 
141
- &__error,
142
111
  &__message {
143
- margin: 0;
144
- margin-top: $unnnic-spacing-stack-nano;
145
-
146
- color: $unnnic-color-neutral-cloudy;
147
- font-family: $unnnic-font-family-secondary;
148
- font-weight: $unnnic-font-weight-regular;
149
- font-size: $unnnic-font-size-body-md;
150
- line-height: $unnnic-font-size-body-md + $unnnic-line-height-md;
112
+ &.error {
113
+ color: $unnnic-color-fg-critical;
114
+ }
151
115
  }
152
116
 
153
- &__message {
117
+ &__hints-container {
154
118
  display: flex;
155
- column-gap: $unnnic-spacing-nano;
119
+ justify-content: space-between;
120
+ margin-top: $unnnic-space-1;
121
+ font: $unnnic-font-caption-2;
122
+ color: $unnnic-color-fg-base;
156
123
  }
157
124
 
158
- &__right-message {
159
- margin-left: auto;
160
- }
161
-
162
- &__error {
125
+ &__message-container {
163
126
  display: flex;
164
- column-gap: $unnnic-spacing-nano;
165
- align-items: center;
166
-
167
- color: $unnnic-color-aux-red-500;
127
+ flex-direction: column;
128
+ gap: $unnnic-space-1;
168
129
  }
169
130
 
170
131
  &--disabled .unnnic-form-element__label,
171
132
  &--disabled .unnnic-form-element__message {
172
133
  user-select: none;
173
- color: $unnnic-color-neutral-cleanest;
174
134
  }
175
135
  }
176
136
  </style>
@@ -7,13 +7,13 @@
7
7
  :class="classes"
8
8
  :type="nativeType"
9
9
  />
10
-
11
10
  <input
12
11
  v-else
13
12
  v-bind="attributes"
14
13
  :value="fullySanitize(modelValue)"
15
14
  :class="classes"
16
15
  :type="nativeType"
16
+ :maxlength="maxlength"
17
17
  />
18
18
  </template>
19
19
 
@@ -49,6 +49,10 @@ export default {
49
49
  },
50
50
  hasIconLeft: Boolean,
51
51
  hasIconRight: Boolean,
52
+ maxlength: {
53
+ type: Number,
54
+ default: null,
55
+ },
52
56
  },
53
57
  emits: ['update:modelValue'],
54
58
  data() {
@@ -96,27 +100,21 @@ export default {
96
100
  &.size {
97
101
  &-md {
98
102
  @include input-md-font;
99
-
100
- padding: ($unnnic-spacing-ant - $unnnic-border-width-thinner)
101
- ($unnnic-spacing-sm - $unnnic-border-width-thinner);
103
+ padding: $unnnic-space-3 $unnnic-space-4;
102
104
  }
103
105
 
104
106
  &-sm {
105
107
  @include input-sm-font;
106
-
107
- padding: $unnnic-spacing-xs
108
- ($unnnic-spacing-sm - $unnnic-border-width-thinner);
108
+ padding: $unnnic-space-2 $unnnic-space-4;
109
109
  }
110
110
  }
111
111
 
112
112
  &.input--has-icon-left {
113
- padding-left: $unnnic-spacing-sm + $unnnic-icon-size-sm +
114
- $unnnic-spacing-xs - $unnnic-border-width-thinner;
113
+ padding-left: $unnnic-space-10;
115
114
  }
116
115
 
117
116
  &.input--has-icon-right {
118
- padding-right: $unnnic-spacing-sm + $unnnic-icon-size-sm +
119
- $unnnic-spacing-xs - $unnnic-border-width-thinner;
117
+ padding-right: $unnnic-space-10;
120
118
  }
121
119
 
122
120
  &.error {
@@ -126,7 +124,7 @@ export default {
126
124
  &:-ms-input-placeholder,
127
125
  &::-ms-input-placeholder {
128
126
  /* Internet Explorer 10-11 */
129
- color: $unnnic-color-brand-sec;
127
+ color: $unnnic-color-fg-muted;
130
128
  }
131
129
  }
132
130
  </style>
@@ -1,43 +1,40 @@
1
1
  @use '@/assets/scss/unnnic' as *;
2
2
 
3
3
  @mixin input-base {
4
- background: $unnnic-color-neutral-white;
5
- border: $unnnic-border-width-thinner solid $unnnic-color-neutral-clean;
4
+ background: $unnnic-color-white;
5
+ border: $unnnic-border-width-thinner solid $unnnic-color-border-base;
6
6
  outline: none;
7
- border-radius: $unnnic-border-radius-sm;
8
- color: $unnnic-color-neutral-darkest;
9
- caret-color: $unnnic-color-neutral-clean;
10
- font-weight: $unnnic-font-weight-regular;
11
- font-family: $unnnic-font-family-secondary;
7
+ border-radius: $unnnic-radius-2;
8
+ color: $unnnic-color-fg-emphasized;
9
+ caret-color: $unnnic-color-fg-muted;
10
+ font: $unnnic-font-body;
12
11
 
13
12
  &:focus {
14
- border-color: $unnnic-color-weni-600;
13
+ border-color: $unnnic-color-border-active;
15
14
  }
16
15
 
17
16
  &::placeholder {
18
- color: $unnnic-color-neutral-cleanest;
19
- opacity: 1; /* Firefox */
17
+ color: $unnnic-color-fg-muted;
18
+ opacity: 1;
19
+ /* Firefox */
20
20
  }
21
21
 
22
22
  &:disabled {
23
- border-color: $unnnic-color-neutral-cleanest;
24
- background-color: $unnnic-color-neutral-lightest;
23
+ border-color: $unnnic-color-border-muted;
24
+ background-color: $unnnic-color-bg-muted;
25
25
  cursor: not-allowed;
26
- color: $unnnic-color-neutral-cleanest;
26
+ color: $unnnic-color-fg-muted;
27
27
  }
28
28
  }
29
29
 
30
30
  @mixin input-sm-font {
31
- font-size: $unnnic-font-size-body-md;
32
- line-height: $unnnic-font-size-body-md + $unnnic-line-height-medium;
31
+ font: $unnnic-font-body;
33
32
  }
34
33
 
35
34
  @mixin input-md-font {
36
- font-size: $unnnic-font-size-body-gt;
37
- line-height: $unnnic-font-size-body-gt + $unnnic-line-height-medium;
35
+ font: $unnnic-font-body;
38
36
  }
39
37
 
40
38
  @mixin input-error {
41
- border-color: $unnnic-color-aux-red-500;
42
- color: $unnnic-color-aux-red-500;
43
- }
39
+ border-color: $unnnic-color-border-critical;
40
+ }