@weni/unnnic-system 3.3.3 → 3.4.1-alpha.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 (232) hide show
  1. package/CHANGELOG.md +35 -1
  2. package/dist/components/Accordion/Accordion.vue.d.ts +1 -1
  3. package/dist/components/Alert/Alert.vue.d.ts +18 -119
  4. package/dist/components/Alert/Alert.vue.d.ts.map +1 -1
  5. package/dist/components/Alert/Version1dot1.vue.d.ts +2 -38
  6. package/dist/components/Alert/Version1dot1.vue.d.ts.map +1 -1
  7. package/dist/components/AudioRecorder/AudioHandler.vue.d.ts +2 -2
  8. package/dist/components/AudioRecorder/AudioPlayer.vue.d.ts +1 -1
  9. package/dist/components/AudioRecorder/AudioRecorder.vue.d.ts +5 -5
  10. package/dist/components/AvatarIcon/AvatarIcon.vue.d.ts +2 -2
  11. package/dist/components/Banner/Banner.vue.d.ts +1 -1
  12. package/dist/components/Banner/InfoBanner.vue.d.ts +1 -1
  13. package/dist/components/Breadcrumb/Breadcrumb.vue.d.ts +1 -1
  14. package/dist/components/Button/Button.vue.d.ts +2 -2
  15. package/dist/components/Button/Button.vue.d.ts.map +1 -1
  16. package/dist/components/Button/ButtonIcon.vue.d.ts +1 -1
  17. package/dist/components/Button/types.d.ts +1 -1
  18. package/dist/components/Button/types.d.ts.map +1 -1
  19. package/dist/components/Card/AccountCard.vue.d.ts +3 -3
  20. package/dist/components/Card/BlankCard.vue.d.ts +1 -1
  21. package/dist/components/Card/Card.vue.d.ts +21 -21
  22. package/dist/components/Card/CardCompany.vue.d.ts +8 -8
  23. package/dist/components/Card/CardData.vue.d.ts +1 -1
  24. package/dist/components/Card/CardStatusesContainer.vue.d.ts +4 -4
  25. package/dist/components/Card/ContentCard.vue.d.ts +2 -2
  26. package/dist/components/Card/DashCard.vue.d.ts +4 -4
  27. package/dist/components/Card/DefaultCard.vue.d.ts +1 -1
  28. package/dist/components/Card/MarketplaceCard.vue.d.ts +2 -2
  29. package/dist/components/Card/SimpleCard.vue.d.ts +3 -3
  30. package/dist/components/Card/StatusCard.vue.d.ts +2 -2
  31. package/dist/components/Card/TitleCard.vue.d.ts +2 -2
  32. package/dist/components/CardImage/CardImage.vue.d.ts +8 -8
  33. package/dist/components/CardInformation/CardInformation.vue.d.ts +4 -4
  34. package/dist/components/CardProject/CardProject.vue.d.ts +3 -3
  35. package/dist/components/Carousel/Carousel.vue.d.ts +11 -11
  36. package/dist/components/Carousel/TagCarousel.vue.d.ts +9 -9
  37. package/dist/components/ChartBar/ChartBar.vue.d.ts +8 -8
  38. package/dist/components/ChartLine/ChartLine.vue.d.ts +1 -1
  39. package/dist/components/ChatText/ChatText.vue.d.ts +2 -2
  40. package/dist/components/ChatsContact/ChatsContact.vue.d.ts +15 -15
  41. package/dist/components/ChatsDashboardTagLive/ChatsDashboardTagLive.vue.d.ts +1 -1
  42. package/dist/components/ChatsHeader/ChatsHeader.vue.d.ts +1 -1
  43. package/dist/components/ChatsHeader/ChatsHeader.vue.d.ts.map +1 -1
  44. package/dist/components/ChatsMessage/ChatsMessage.vue.d.ts +5 -5
  45. package/dist/components/ChatsMessage/ChatsMessageStatusBackdrop.vue.d.ts +2 -2
  46. package/dist/components/ChatsNavbar/ChatsNavbar.vue.d.ts +1 -1
  47. package/dist/components/ChatsUserAvatar/ChatsUserAvatar.vue.d.ts +2 -2
  48. package/dist/components/Checkbox/Checkbox.vue.d.ts +3 -3
  49. package/dist/components/Comment/Comment.vue.d.ts +1 -1
  50. package/dist/components/DataArea/DataArea.vue.d.ts +2 -2
  51. package/dist/components/DataTable/index.vue.d.ts +1 -1
  52. package/dist/components/DataTable/index.vue.d.ts.map +1 -1
  53. package/dist/components/DateFilter/DateFilter.vue.d.ts +176 -29
  54. package/dist/components/DatePicker/DatePicker.vue.d.ts +8 -8
  55. package/dist/components/Drawer/Drawer.vue.d.ts +7 -7
  56. package/dist/components/Dropdown/Dropdown.vue.d.ts +1 -1
  57. package/dist/components/Dropdown/LanguageSelect.vue.d.ts +3 -3
  58. package/dist/components/Flag.vue.d.ts +2 -2
  59. package/dist/components/FormElement/FormElement.vue.d.ts +38 -32
  60. package/dist/components/FormElement/FormElement.vue.d.ts.map +1 -1
  61. package/dist/components/Icon.vue.d.ts +1 -1
  62. package/dist/components/IconLoading/IconLoading.vue.d.ts +1 -1
  63. package/dist/components/ImportCard/ImportCard.vue.d.ts +7 -7
  64. package/dist/components/Input/BaseInput.vue.d.ts +32 -1
  65. package/dist/components/Input/BaseInput.vue.d.ts.map +1 -1
  66. package/dist/components/Input/Input.vue.d.ts +176 -29
  67. package/dist/components/Input/Input.vue.d.ts.map +1 -1
  68. package/dist/components/Input/TextInput.vue.d.ts +83 -14
  69. package/dist/components/Input/TextInput.vue.d.ts.map +1 -1
  70. package/dist/components/InputDatePicker/InputDatePicker.vue.d.ts +186 -39
  71. package/dist/components/InputNext/InputNext.vue.d.ts +4 -4
  72. package/dist/components/Label/Label.vue.d.ts +9 -15
  73. package/dist/components/Label/Label.vue.d.ts.map +1 -1
  74. package/dist/components/Modal/Modal.vue.d.ts +2 -2
  75. package/dist/components/ModalDialog/ModalDialog.vue.d.ts +9 -9
  76. package/dist/components/ModalDialog/ModalDialog.vue.d.ts.map +1 -1
  77. package/dist/components/ModalNext/ModalNext.vue.d.ts +184 -37
  78. package/dist/components/ModalUpload/ModalUpload.vue.d.ts +14 -14
  79. package/dist/components/MoodRating/MoodRating.vue.d.ts +1 -1
  80. package/dist/components/MultiSelect/MultiSelect.vue.d.ts +20 -14
  81. package/dist/components/Pagination/Pagination.vue.d.ts +6 -6
  82. package/dist/components/ProgressBar/ProgressBar.vue.d.ts +1 -1
  83. package/dist/components/Radio/Radio.vue.d.ts +8 -6
  84. package/dist/components/Radio/Radio.vue.d.ts.map +1 -1
  85. package/dist/components/SelectSmart/SelectSmart.vue.d.ts +97 -28
  86. package/dist/components/SelectSmart/SelectSmartMultipleHeader.vue.d.ts +8 -8
  87. package/dist/components/SelectSmart/SelectSmartOption.vue.d.ts +4 -4
  88. package/dist/components/SelectTime/index.vue.d.ts +83 -14
  89. package/dist/components/SkeletonLoading/skeletonTheme.vue.d.ts +1 -1
  90. package/dist/components/Slider/Slider.vue.d.ts +2 -2
  91. package/dist/components/StarRating/StarRating.vue.d.ts +1 -1
  92. package/dist/components/Switch/Switch.vue.d.ts +24 -25
  93. package/dist/components/Switch/Switch.vue.d.ts.map +1 -1
  94. package/dist/components/Tab/Tab.vue.d.ts +13 -2
  95. package/dist/components/TableNext/TableBodyCell.vue.d.ts +2 -2
  96. package/dist/components/TableNext/TablePagination.vue.d.ts +6 -6
  97. package/dist/components/TabsExpanded/TabsExpanded.vue.d.ts +1 -1
  98. package/dist/components/Tag/BrandTag.vue.d.ts +2 -2
  99. package/dist/components/Tag/DefaultTag.vue.d.ts +2 -2
  100. package/dist/components/Tag/IndicatorTag.vue.d.ts +2 -2
  101. package/dist/components/Tag/Tag.vue.d.ts +8 -8
  102. package/dist/components/TemplatePreview/TemplatePreview.vue.d.ts +9 -0
  103. package/dist/components/TemplatePreview/TemplatePreview.vue.d.ts.map +1 -0
  104. package/dist/components/TemplatePreview/TemplatePreviewModal.vue.d.ts +15 -0
  105. package/dist/components/TemplatePreview/TemplatePreviewModal.vue.d.ts.map +1 -0
  106. package/dist/components/TextArea/TextArea.vue.d.ts +38 -32
  107. package/dist/components/TextArea/TextArea.vue.d.ts.map +1 -1
  108. package/dist/components/Toast/Toast.vue.d.ts +16 -0
  109. package/dist/components/Toast/Toast.vue.d.ts.map +1 -0
  110. package/dist/components/Toast/ToastManager.d.ts +14 -0
  111. package/dist/components/Toast/ToastManager.d.ts.map +1 -0
  112. package/dist/components/Toast/types.d.ts +35 -0
  113. package/dist/components/Toast/types.d.ts.map +1 -0
  114. package/dist/components/ToolTip/ToolTip.vue.d.ts +1 -1
  115. package/dist/components/Tour/Tour.vue.d.ts +6 -6
  116. package/dist/components/Tour/TourPopover.vue.d.ts +6 -6
  117. package/dist/components/UploadArea/UploadArea.vue.d.ts +7 -7
  118. package/dist/components/index.d.ts +2402 -1146
  119. package/dist/components/index.d.ts.map +1 -1
  120. package/dist/components/ui/popover/Popover.vue.d.ts +23 -0
  121. package/dist/components/ui/popover/Popover.vue.d.ts.map +1 -0
  122. package/dist/components/ui/popover/PopoverContent.vue.d.ts +43 -0
  123. package/dist/components/ui/popover/PopoverContent.vue.d.ts.map +1 -0
  124. package/dist/components/ui/popover/PopoverTrigger.vue.d.ts +19 -0
  125. package/dist/components/ui/popover/PopoverTrigger.vue.d.ts.map +1 -0
  126. package/dist/components/ui/popover/index.d.ts +5 -0
  127. package/dist/components/ui/popover/index.d.ts.map +1 -0
  128. package/dist/{es-54ddaf5a.mjs → es-479daf92.mjs} +1 -1
  129. package/dist/{index-a34da30f.mjs → index-a8aa7094.mjs} +18284 -11956
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/lib/utils.d.ts +3 -0
  132. package/dist/lib/utils.d.ts.map +1 -0
  133. package/dist/locales/en.json.d.ts +2 -1
  134. package/dist/locales/es.json.d.ts +2 -1
  135. package/dist/locales/pt_br.json.d.ts +2 -1
  136. package/dist/main.d.ts +0 -1
  137. package/dist/main.d.ts.map +1 -1
  138. package/dist/{pt-br-ff00f945.mjs → pt-br-32c84cc8.mjs} +1 -1
  139. package/dist/style.css +1 -1
  140. package/dist/unnnic.mjs +141 -129
  141. package/dist/unnnic.umd.js +53 -50
  142. package/dist/utils/call.d.ts +2 -1
  143. package/dist/utils/call.d.ts.map +1 -1
  144. package/package.json +14 -2
  145. package/src/assets/icons/radio-checked.svg +3 -0
  146. package/src/assets/icons/switch-checked-disabled.svg +3 -0
  147. package/src/assets/icons/switch-checked.svg +3 -0
  148. package/src/assets/img/previews/doc-preview.png +0 -0
  149. package/src/assets/img/previews/image-preview.png +0 -0
  150. package/src/assets/img/previews/video-preview.png +0 -0
  151. package/src/assets/scss/colors-hsl.scss +119 -0
  152. package/src/assets/scss/scheme-colors.scss +115 -238
  153. package/src/assets/scss/tailwind.scss +96 -0
  154. package/src/components/Alert/Alert.vue +26 -135
  155. package/src/components/Alert/Version1dot1.vue +0 -36
  156. package/src/components/Alert/__tests__/__snapshots__/Alert.spec.js.snap +11 -7
  157. package/src/components/Alert/__tests__/__snapshots__/Version1dot1.spec.js.snap +2 -2
  158. package/src/components/Button/Button.vue +60 -108
  159. package/src/components/Button/types.ts +0 -1
  160. package/src/components/FormElement/FormElement.vue +51 -91
  161. package/src/components/Input/BaseInput.vue +31 -14
  162. package/src/components/Input/Input.scss +19 -21
  163. package/src/components/Input/Input.vue +94 -30
  164. package/src/components/Input/TextInput.vue +82 -58
  165. package/src/components/Input/__test__/TextInput.spec.js +5 -5
  166. package/src/components/Input/__test__/__snapshots__/Input.spec.js.snap +16 -3
  167. package/src/components/Input/__test__/__snapshots__/TextInput.spec.js.snap +7 -1
  168. package/src/components/Label/Label.vue +52 -21
  169. package/src/components/Label/__tests__/Label.spec.js +1 -1
  170. package/src/components/Label/__tests__/__snapshots__/Label.spec.js.snap +1 -1
  171. package/src/components/ModalDialog/ModalDialog.vue +1 -0
  172. package/src/components/ModalDialog/__tests__/__snapshots__/ModalDialog.spec.js.snap +1 -1
  173. package/src/components/Popover/__tests__/Popover.spec.js +147 -0
  174. package/src/components/Popover/__tests__/__snapshots__/Popover.spec.js.snap +8 -0
  175. package/src/components/Popover/index.vue +146 -0
  176. package/src/components/Radio/Radio.vue +80 -67
  177. package/src/components/Radio/__test__/Radio.spec.js +14 -20
  178. package/src/components/Radio/__test__/__snapshots__/Radio.spec.js.snap +3 -3
  179. package/src/components/RadioGroup/RadioGroup.vue +110 -0
  180. package/src/components/Select/SelectOption.vue +65 -0
  181. package/src/components/Select/__tests__/Select.spec.js +412 -0
  182. package/src/components/Select/__tests__/SelectItem.spec.js +330 -0
  183. package/src/components/Select/__tests__/SelectOption.spec.js +174 -0
  184. package/src/components/Select/__tests__/__snapshots__/Select.spec.js.snap +97 -0
  185. package/src/components/Select/__tests__/__snapshots__/SelectItem.spec.js.snap +15 -0
  186. package/src/components/Select/__tests__/__snapshots__/SelectOption.spec.js.snap +25 -0
  187. package/src/components/Select/index.vue +245 -0
  188. package/src/components/Switch/Switch.vue +91 -99
  189. package/src/components/Switch/__tests__/Switch.spec.js +8 -74
  190. package/src/components/Switch/__tests__/__snapshots__/Switch.spec.js.snap +3 -5
  191. package/src/components/Tab/Tab.vue +37 -23
  192. package/src/components/Tab/__test__/__snapshots__/Tab.spec.js.snap +1 -1
  193. package/src/components/TableNext/__test__/__snapshots__/TableNext.spec.js.snap +2 -2
  194. package/src/components/TableNext/__test__/__snapshots__/TablePagination.spec.js.snap +2 -2
  195. package/src/components/TemplatePreview/TemplatePreview.vue +252 -0
  196. package/src/components/TemplatePreview/TemplatePreviewModal.vue +51 -0
  197. package/src/components/TemplatePreview/types.d.ts +16 -0
  198. package/src/components/TextArea/TextArea.vue +13 -9
  199. package/src/components/TextArea/__test__/__snapshots__/TextArea.spec.js.snap +7 -2
  200. package/src/components/Toast/Toast.vue +236 -0
  201. package/src/components/Toast/ToastManager.ts +110 -0
  202. package/src/components/Toast/types.ts +57 -0
  203. package/src/components/index.ts +30 -4
  204. package/src/components/ui/popover/Popover.vue +15 -0
  205. package/src/components/ui/popover/PopoverContent.vue +98 -0
  206. package/src/components/ui/popover/PopoverTrigger.vue +12 -0
  207. package/src/components/ui/popover/index.ts +4 -0
  208. package/src/index.ts +1 -0
  209. package/src/lib/utils.ts +7 -0
  210. package/src/locales/en.json +2 -1
  211. package/src/locales/es.json +2 -1
  212. package/src/locales/pt_br.json +2 -1
  213. package/src/main.ts +1 -0
  214. package/src/stories/Alert.stories.js +6 -67
  215. package/src/stories/Button.stories.js +2 -17
  216. package/src/stories/Input.stories.js +22 -3
  217. package/src/stories/Label.stories.js +7 -0
  218. package/src/stories/Popover.stories.js +306 -0
  219. package/src/stories/RadioGroup.stories.js +139 -0
  220. package/src/stories/Select.stories.js +158 -0
  221. package/src/stories/Switch.stories.js +4 -5
  222. package/src/stories/Tab.stories.js +11 -4
  223. package/src/stories/TemplatePreview.stories.js +94 -0
  224. package/src/stories/TemplatePreviewModal.stories.js +110 -0
  225. package/src/stories/Toast.mdx +123 -0
  226. package/src/stories/Toast.stories.js +126 -0
  227. package/src/types/scheme-colors.d.ts +1 -0
  228. package/src/utils/call.js +46 -18
  229. package/src/components/Alert/AlertBanner.vue +0 -182
  230. package/src/components/Alert/AlertCaller.vue +0 -49
  231. package/src/components/Alert/__tests__/AlertBanner.spec.js +0 -89
  232. 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>
@@ -4,16 +4,18 @@
4
4
  v-mask="mask"
5
5
  v-bind="attributes"
6
6
  :value="fullySanitize(modelValue)"
7
- :class="classes"
7
+ :class="[classes, { focus: forceActiveStatus }]"
8
8
  :type="nativeType"
9
+ :readonly="readonly"
9
10
  />
10
-
11
11
  <input
12
12
  v-else
13
13
  v-bind="attributes"
14
14
  :value="fullySanitize(modelValue)"
15
- :class="classes"
15
+ :class="[classes, { focus: forceActiveStatus }]"
16
16
  :type="nativeType"
17
+ :maxlength="maxlength"
18
+ :readonly="readonly"
17
19
  />
18
20
  </template>
19
21
 
@@ -49,6 +51,19 @@ export default {
49
51
  },
50
52
  hasIconLeft: Boolean,
51
53
  hasIconRight: Boolean,
54
+ hasClearIcon: Boolean,
55
+ maxlength: {
56
+ type: Number,
57
+ default: null,
58
+ },
59
+ readonly: {
60
+ type: Boolean,
61
+ default: false,
62
+ },
63
+ forceActiveStatus: {
64
+ type: Boolean,
65
+ default: false,
66
+ },
52
67
  },
53
68
  emits: ['update:modelValue'],
54
69
  data() {
@@ -73,6 +88,7 @@ export default {
73
88
  {
74
89
  'input--has-icon-left': this.hasIconLeft,
75
90
  'input--has-icon-right': this.hasIconRight,
91
+ 'input--has-clear-icon': this.hasClearIcon,
76
92
  },
77
93
  ];
78
94
  },
@@ -96,27 +112,28 @@ export default {
96
112
  &.size {
97
113
  &-md {
98
114
  @include input-md-font;
99
-
100
- padding: ($unnnic-spacing-ant - $unnnic-border-width-thinner)
101
- ($unnnic-spacing-sm - $unnnic-border-width-thinner);
115
+ padding: $unnnic-space-3 $unnnic-space-4;
102
116
  }
103
117
 
104
118
  &-sm {
105
119
  @include input-sm-font;
106
-
107
- padding: $unnnic-spacing-xs
108
- ($unnnic-spacing-sm - $unnnic-border-width-thinner);
120
+ padding: $unnnic-space-2 $unnnic-space-4;
109
121
  }
110
122
  }
111
123
 
112
124
  &.input--has-icon-left {
113
- padding-left: $unnnic-spacing-sm + $unnnic-icon-size-sm +
114
- $unnnic-spacing-xs - $unnnic-border-width-thinner;
125
+ padding-left: $unnnic-space-10;
115
126
  }
116
127
 
117
128
  &.input--has-icon-right {
118
- padding-right: $unnnic-spacing-sm + $unnnic-icon-size-sm +
119
- $unnnic-spacing-xs - $unnnic-border-width-thinner;
129
+ padding-right: $unnnic-space-10;
130
+ &.input--has-clear-icon {
131
+ padding-right: $unnnic-space-10 + $unnnic-space-6;
132
+ }
133
+ }
134
+
135
+ &.input--has-clear-icon {
136
+ padding-right: $unnnic-space-10;
120
137
  }
121
138
 
122
139
  &.error {
@@ -126,7 +143,7 @@ export default {
126
143
  &:-ms-input-placeholder,
127
144
  &::-ms-input-placeholder {
128
145
  /* Internet Explorer 10-11 */
129
- color: $unnnic-color-brand-sec;
146
+ color: $unnnic-color-fg-muted;
130
147
  }
131
148
  }
132
149
  </style>
@@ -1,43 +1,41 @@
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
- &:focus {
14
- border-color: $unnnic-color-weni-600;
12
+ &:focus,
13
+ &.focus {
14
+ border-color: $unnnic-color-border-active;
15
15
  }
16
16
 
17
17
  &::placeholder {
18
- color: $unnnic-color-neutral-cleanest;
19
- opacity: 1; /* Firefox */
18
+ color: $unnnic-color-fg-muted;
19
+ opacity: 1;
20
+ /* Firefox */
20
21
  }
21
22
 
22
23
  &:disabled {
23
- border-color: $unnnic-color-neutral-cleanest;
24
- background-color: $unnnic-color-neutral-lightest;
24
+ border-color: $unnnic-color-border-muted;
25
+ background-color: $unnnic-color-bg-muted;
25
26
  cursor: not-allowed;
26
- color: $unnnic-color-neutral-cleanest;
27
+ color: $unnnic-color-fg-muted;
27
28
  }
28
29
  }
29
30
 
30
31
  @mixin input-sm-font {
31
- font-size: $unnnic-font-size-body-md;
32
- line-height: $unnnic-font-size-body-md + $unnnic-line-height-medium;
32
+ font: $unnnic-font-body;
33
33
  }
34
34
 
35
35
  @mixin input-md-font {
36
- font-size: $unnnic-font-size-body-gt;
37
- line-height: $unnnic-font-size-body-gt + $unnnic-line-height-medium;
36
+ font: $unnnic-font-body;
38
37
  }
39
38
 
40
39
  @mixin input-error {
41
- border-color: $unnnic-color-aux-red-500;
42
- color: $unnnic-color-aux-red-500;
43
- }
40
+ border-color: $unnnic-color-border-critical;
41
+ }