@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,13 +6,25 @@
6
6
  >
7
7
  <slot name="label" />
8
8
  </p>
9
-
10
- <p
9
+ <section
11
10
  v-else-if="label"
12
11
  class="unnnic-form__label"
13
12
  >
14
- {{ fullySanitize(label) }}
15
- </p>
13
+ <p>
14
+ {{ fullySanitize(label) }}
15
+ </p>
16
+ <UnnnicToolTip
17
+ v-if="tooltip"
18
+ enabled
19
+ :text="tooltip"
20
+ >
21
+ <UnnnicIcon
22
+ icon="help"
23
+ size="sm"
24
+ scheme="fg-base"
25
+ />
26
+ </UnnnicToolTip>
27
+ </section>
16
28
 
17
29
  <TextInput
18
30
  v-bind="$attrs"
@@ -28,24 +40,41 @@
28
40
  :size="size"
29
41
  :mask="mask"
30
42
  :nativeType="nativeType"
43
+ :maxlength="maxlength"
44
+ :disabled="disabled"
31
45
  />
32
46
 
33
- <p
34
- v-if="message"
35
- class="unnnic-form__message"
36
- >
37
- {{ fullySanitize(message) }}
38
- </p>
47
+ <section class="unnnic-form__hints-container">
48
+ <section class="unnnic-form__message-container">
49
+ <p
50
+ v-if="message"
51
+ class="unnnic-form__message"
52
+ >
53
+ {{ fullySanitize(message) }}
54
+ </p>
55
+ <p
56
+ v-if="!!errors.length"
57
+ class="unnnic-form__message error"
58
+ >
59
+ {{ Array.isArray(errors) ? errors.join(', ') : errors }}
60
+ </p>
61
+ </section>
62
+ <p v-if="maxlength && showMaxlengthCounter">
63
+ {{ (val || '').length }} / {{ maxlength }}
64
+ </p>
65
+ </section>
39
66
  </div>
40
67
  </template>
41
68
 
42
69
  <script>
43
70
  import { fullySanitize } from '../../utils/sanitize';
44
71
  import TextInput from './TextInput.vue';
72
+ import UnnnicToolTip from '../ToolTip/ToolTip.vue';
73
+ import UnnnicIcon from '../Icon.vue';
45
74
 
46
75
  export default {
47
76
  name: 'UnnnicInput',
48
- components: { TextInput },
77
+ components: { TextInput, UnnnicToolTip, UnnnicIcon },
49
78
  props: {
50
79
  placeholder: {
51
80
  type: String,
@@ -68,19 +97,23 @@ export default {
68
97
  },
69
98
  message: {
70
99
  type: String,
71
- default: null,
100
+ default: '',
101
+ },
102
+ errors: {
103
+ type: [String, Array],
104
+ default: '',
72
105
  },
73
106
  label: {
74
107
  type: String,
75
- default: null,
108
+ default: '',
76
109
  },
77
110
  iconLeft: {
78
111
  type: String,
79
- default: null,
112
+ default: '',
80
113
  },
81
114
  iconRight: {
82
115
  type: String,
83
- default: null,
116
+ default: '',
84
117
  },
85
118
  allowTogglePassword: {
86
119
  type: Boolean,
@@ -88,11 +121,11 @@ export default {
88
121
  },
89
122
  iconLeftClickable: {
90
123
  type: Boolean,
91
- default: null,
124
+ default: false,
92
125
  },
93
126
  iconRightClickable: {
94
127
  type: Boolean,
95
- default: null,
128
+ default: false,
96
129
  },
97
130
  hasCloudyColor: {
98
131
  type: Boolean,
@@ -106,6 +139,22 @@ export default {
106
139
  type: [String, Array],
107
140
  default: '',
108
141
  },
142
+ tooltip: {
143
+ type: String,
144
+ default: '',
145
+ },
146
+ maxlength: {
147
+ type: [Number, null],
148
+ default: null,
149
+ },
150
+ showMaxlengthCounter: {
151
+ type: Boolean,
152
+ default: false,
153
+ },
154
+ disabled: {
155
+ type: Boolean,
156
+ default: false,
157
+ },
109
158
  },
110
159
  emits: ['update:modelValue'],
111
160
  data() {
@@ -138,27 +187,46 @@ export default {
138
187
  <style lang="scss" scoped>
139
188
  @use '@/assets/scss/unnnic' as *;
140
189
 
190
+ * {
191
+ margin: 0;
192
+ padding: 0;
193
+ box-sizing: border-box;
194
+ }
195
+
141
196
  .unnnic-form {
142
- font-family: $unnnic-font-family-secondary;
143
197
  position: relative;
144
198
 
145
199
  &__message {
146
- font-size: $unnnic-font-size-body-md;
147
- margin: $unnnic-spacing-stack-nano 0;
148
- color: $unnnic-color-feedback-red;
200
+ &.error {
201
+ color: $unnnic-color-fg-critical;
202
+ }
149
203
  }
150
204
 
151
205
  &__label {
152
- font-weight: $unnnic-font-weight-regular;
153
- line-height: $unnnic-font-size-body-gt + $unnnic-line-height-medium;
154
- font-size: $unnnic-font-size-body-gt;
206
+ font: $unnnic-font-body;
155
207
  color: $unnnic-color-neutral-cloudy;
156
- margin: $unnnic-spacing-stack-xs 0;
208
+ margin-bottom: $unnnic-space-1;
209
+ display: flex;
210
+ align-items: center;
211
+ gap: $unnnic-space-2;
212
+
213
+ :deep(.unnnic-tooltip) {
214
+ display: flex;
215
+ }
216
+ }
217
+
218
+ &__hints-container {
219
+ display: flex;
220
+ justify-content: space-between;
221
+ margin-top: $unnnic-space-1;
222
+ font: $unnnic-font-caption-2;
223
+ color: $unnnic-color-fg-base;
157
224
  }
158
225
 
159
- &.sm &__label {
160
- font-size: $unnnic-font-size-body-md;
161
- line-height: $unnnic-font-size-body-md + $unnnic-line-height-medium;
226
+ &__message-container {
227
+ display: flex;
228
+ flex-direction: column;
229
+ gap: $unnnic-space-1;
162
230
  }
163
231
  }
164
232
  </style>
@@ -1,11 +1,5 @@
1
1
  <template>
2
- <div
3
- :class="[
4
- 'text-input',
5
- `size--${size}`,
6
- `text-input--icon-right-size-${iconRightSize}`,
7
- ]"
8
- >
2
+ <div :class="['text-input', `size--${size}`]">
9
3
  <BaseInput
10
4
  v-bind="attributes"
11
5
  ref="base-input"
@@ -18,6 +12,7 @@
18
12
  class="input-itself"
19
13
  :hasIconLeft="!!iconLeft"
20
14
  :hasIconRight="!!iconRight || allowTogglePassword"
15
+ :maxlength="maxlength"
21
16
  @focus="onFocus"
22
17
  @blur="onBlur"
23
18
  />
@@ -26,7 +21,7 @@
26
21
  v-if="iconLeft"
27
22
  :scheme="iconScheme"
28
23
  :icon="iconLeft"
29
- size="sm"
24
+ size="ant"
30
25
  :clickable="iconLeftClickable"
31
26
  :class="['icon-left', { clickable: iconLeftClickable }]"
32
27
  @click="onIconLeftClick"
@@ -36,7 +31,7 @@
36
31
  v-if="iconRightSvg"
37
32
  :scheme="iconScheme"
38
33
  :icon="iconRightSvg"
39
- :size="iconRightSize"
34
+ size="ant"
40
35
  :clickable="iconRightClickable || allowTogglePassword"
41
36
  :class="[
42
37
  'icon-right',
@@ -92,10 +87,6 @@ export default {
92
87
  type: Boolean,
93
88
  default: null,
94
89
  },
95
- iconRightSize: {
96
- type: String,
97
- default: 'sm',
98
- },
99
90
  allowTogglePassword: {
100
91
  type: Boolean,
101
92
  default: null,
@@ -108,6 +99,14 @@ export default {
108
99
  type: String,
109
100
  default: 'md',
110
101
  },
102
+ maxlength: {
103
+ type: Number,
104
+ default: null,
105
+ },
106
+ disabled: {
107
+ type: Boolean,
108
+ default: false,
109
+ },
111
110
  },
112
111
  emits: ['icon-left-click', 'icon-right-click'],
113
112
  data() {
@@ -118,7 +117,7 @@ export default {
118
117
  },
119
118
  computed: {
120
119
  isDisabled() {
121
- return this.$attrs.disabled;
120
+ return this.$attrs.disabled || this.disabled;
122
121
  },
123
122
 
124
123
  iconRightSvg() {
@@ -131,22 +130,22 @@ export default {
131
130
 
132
131
  iconScheme() {
133
132
  if (this.type === 'error') {
134
- return 'aux-red-500';
133
+ return 'fg-critical';
135
134
  }
136
135
 
137
136
  if (this.isDisabled) {
138
- return 'neutral-cleanest';
137
+ return 'fg-muted';
139
138
  }
140
139
 
141
140
  if (this.modelValue || this.isFocused) {
142
- return 'neutral-dark';
141
+ return 'color-gray-700';
143
142
  }
144
143
 
145
144
  if (this.hasCloudyColor) {
146
- return 'neutral-cloudy';
145
+ return 'fg-base';
147
146
  }
148
147
 
149
- return 'neutral-cloudy';
148
+ return 'fg-base';
150
149
  },
151
150
 
152
151
  attributes() {
@@ -183,6 +182,10 @@ export default {
183
182
  <style lang="scss" scoped>
184
183
  @use '@/assets/scss/unnnic' as *;
185
184
 
185
+ .text-input {
186
+ position: relative;
187
+ }
188
+
186
189
  .icon {
187
190
  &-left,
188
191
  &-right {
@@ -193,32 +196,16 @@ export default {
193
196
 
194
197
  &-left {
195
198
  position: absolute;
196
- top: $unnnic-spacing-ant + 0.1875 * $unnnic-font-size;
197
- left: $unnnic-inline-sm - $unnnic-border-width-thinner;
199
+ top: 50%;
200
+ transform: translateY(-50%);
201
+ left: $unnnic-space-4;
198
202
  }
199
203
 
200
204
  &-right {
201
205
  position: absolute;
202
- top: $unnnic-spacing-ant + 0.1875 * $unnnic-font-size;
203
- right: $unnnic-inline-sm - $unnnic-border-width-thinner;
204
- }
205
- }
206
- .text-input {
207
- position: relative;
208
-
209
- &.size--sm {
210
- .icon-left,
211
- .icon-right {
212
- top: $unnnic-spacing-xs + 0.125 * $unnnic-font-size;
213
- }
214
- }
215
-
216
- &.size--sm.text-input--icon-right-size-ant .icon-right {
217
- top: 0.5625 * $unnnic-font-size;
218
- }
219
-
220
- &.size--md.text-input--icon-right-size-ant .icon-right {
221
- top: 0.8125 * $unnnic-font-size;
206
+ top: 50%;
207
+ transform: translateY(-50%);
208
+ right: $unnnic-space-4;
222
209
  }
223
210
  }
224
211
  </style>
@@ -74,22 +74,22 @@ describe('TextInput.vue', () => {
74
74
 
75
75
  test('computes the correct iconScheme based on various states', async () => {
76
76
  await wrapper.setProps({ type: 'error' });
77
- expect(wrapper.vm.iconScheme).toBe('aux-red-500');
77
+ expect(wrapper.vm.iconScheme).toBe('fg-critical');
78
78
 
79
79
  await wrapper.setProps({ type: 'normal' });
80
80
  await wrapper.setData({ isDisabled: true });
81
- expect(wrapper.vm.iconScheme).toBe('neutral-cloudy');
81
+ expect(wrapper.vm.iconScheme).toBe('fg-base');
82
82
 
83
83
  await wrapper.setData({ isDisabled: false });
84
84
  await wrapper.setProps({ modelValue: 'text' });
85
- expect(wrapper.vm.iconScheme).toBe('neutral-dark');
85
+ expect(wrapper.vm.iconScheme).toBe('color-gray-700');
86
86
 
87
87
  await wrapper.setData({ isFocused: true });
88
- expect(wrapper.vm.iconScheme).toBe('neutral-dark');
88
+ expect(wrapper.vm.iconScheme).toBe('color-gray-700');
89
89
 
90
90
  await wrapper.setProps({ hasCloudyColor: true, modelValue: '' });
91
91
  await wrapper.setData({ isFocused: false });
92
- expect(wrapper.vm.iconScheme).toBe('neutral-cloudy');
92
+ expect(wrapper.vm.iconScheme).toBe('fg-base');
93
93
  });
94
94
 
95
95
  test('attributes computed property returns combined attributes and props', () => {
@@ -2,8 +2,17 @@
2
2
 
3
3
  exports[`Input.vue > matches the snapshot 1`] = `
4
4
  "<div data-v-d890ad85="" class="unnnic-form md">
5
- <p data-v-d890ad85="" class="unnnic-form__label">Sample Label</p>
6
- <div data-v-a0d36167="" data-v-d890ad85="" class="text-input size--md text-input--icon-right-size-sm unnnic-form-input" mask="####-####"><input data-v-86533b41="" data-v-a0d36167="" class="unnnic-form-input input-itself input size-md normal input--has-icon-left input--has-icon-right unnnic-form-input input-itself" placeholder="Enter text" iconleft="search" iconright="clear" iconleftclickable="true" iconrightclickable="true" iconrightsize="sm" hascloudycolor="false" type="text" value=""><span data-v-26446d8e="" data-v-a0d36167="" class="material-symbols-rounded unnnic-icon-scheme--neutral-cloudy unnnic-icon-size--sm unnnic--clickable icon-left clickable" data-testid="material-icon" translate="no">search</span><span data-v-26446d8e="" data-v-a0d36167="" class="material-symbols-rounded unnnic-icon-scheme--neutral-cloudy unnnic-icon-size--sm unnnic--clickable icon-right clickable" data-testid="material-icon" translate="no">clear</span></div>
7
- <p data-v-d890ad85="" class="unnnic-form__message">Error message</p>
5
+ <section data-v-d890ad85="" class="unnnic-form__label">
6
+ <p data-v-d890ad85="">Sample Label</p>
7
+ <!--v-if-->
8
+ </section>
9
+ <div data-v-a0d36167="" data-v-d890ad85="" class="text-input size--md unnnic-form-input" mask="####-####"><input data-v-86533b41="" data-v-a0d36167="" class="unnnic-form-input input-itself input size-md normal input--has-icon-left input--has-icon-right unnnic-form-input input-itself" placeholder="Enter text" iconleft="search" iconright="clear" iconleftclickable="true" iconrightclickable="true" hascloudycolor="false" type="text" value=""><span data-v-26446d8e="" data-v-a0d36167="" class="material-symbols-rounded unnnic-icon-scheme--fg-base unnnic-icon-size--ant unnnic--clickable icon-left clickable" data-testid="material-icon" translate="no">search</span><span data-v-26446d8e="" data-v-a0d36167="" class="material-symbols-rounded unnnic-icon-scheme--fg-base unnnic-icon-size--ant unnnic--clickable icon-right clickable" data-testid="material-icon" translate="no">clear</span></div>
10
+ <section data-v-d890ad85="" class="unnnic-form__hints-container">
11
+ <section data-v-d890ad85="" class="unnnic-form__message-container">
12
+ <p data-v-d890ad85="" class="unnnic-form__message">Error message</p>
13
+ <!--v-if-->
14
+ </section>
15
+ <!--v-if-->
16
+ </section>
8
17
  </div>"
9
18
  `;
@@ -1,3 +1,3 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
- exports[`TextInput.vue > matches the snapshot 1`] = `"<div data-v-a0d36167="" class="text-input size--md text-input--icon-right-size-sm"><input data-v-86533b41="" data-v-a0d36167="" placeholder="Enter text" iconleft="search" iconright="clear" iconleftclickable="true" iconrightclickable="true" iconrightsize="sm" allowtogglepassword="false" hascloudycolor="false" class="input-itself input size-md normal input--has-icon-left input--has-icon-right input-itself" type="text" value=""><span data-v-26446d8e="" data-v-a0d36167="" class="material-symbols-rounded unnnic-icon-scheme--neutral-cloudy unnnic-icon-size--sm unnnic--clickable icon-left clickable" data-testid="material-icon" translate="no">search</span><span data-v-26446d8e="" data-v-a0d36167="" class="material-symbols-rounded unnnic-icon-scheme--neutral-cloudy unnnic-icon-size--sm unnnic--clickable icon-right clickable" data-testid="material-icon" translate="no">clear</span></div>"`;
3
+ exports[`TextInput.vue > matches the snapshot 1`] = `"<div data-v-a0d36167="" class="text-input size--md"><input data-v-86533b41="" data-v-a0d36167="" placeholder="Enter text" iconleft="search" iconright="clear" iconleftclickable="true" iconrightclickable="true" allowtogglepassword="false" hascloudycolor="false" class="input-itself input size-md normal input--has-icon-left input--has-icon-right input-itself" type="text" value=""><span data-v-26446d8e="" data-v-a0d36167="" class="material-symbols-rounded unnnic-icon-scheme--fg-base unnnic-icon-size--ant unnnic--clickable icon-left clickable" data-testid="material-icon" translate="no">search</span><span data-v-26446d8e="" data-v-a0d36167="" class="material-symbols-rounded unnnic-icon-scheme--fg-base unnnic-icon-size--ant unnnic--clickable icon-right clickable" data-testid="material-icon" translate="no">clear</span></div>"`;
@@ -1,34 +1,65 @@
1
1
  <template>
2
- <p class="unnnic-label__label">{{ fullySanitize(label) }}</p>
2
+ <section class="unnnic-label">
3
+ <p class="unnnic-label__label">{{ fullySanitize(props.label) }}</p>
4
+ <UnnnicToolTip
5
+ v-if="tooltip"
6
+ enabled
7
+ :text="tooltip"
8
+ :enableHtml="props.useHtmlTooltip"
9
+ >
10
+ <UnnnicIcon
11
+ icon="help"
12
+ size="sm"
13
+ scheme="fg-base"
14
+ />
15
+ </UnnnicToolTip>
16
+ </section>
3
17
  </template>
4
18
 
5
- <script>
6
- import { fullySanitize } from '../../utils/sanitize';
7
- export default {
19
+ <script setup lang="ts">
20
+ import { fullySanitize } from '@/utils/sanitize';
21
+
22
+ import UnnnicToolTip from '../ToolTip/ToolTip.vue';
23
+ import UnnnicIcon from '../Icon.vue';
24
+
25
+ defineOptions({
8
26
  name: 'UnnnicLabel',
9
- props: {
10
- label: {
11
- type: String,
12
- default: null,
13
- },
14
- },
15
- methods: {
16
- fullySanitize,
17
- },
18
- };
27
+ });
28
+
29
+ interface Props {
30
+ label?: string;
31
+ tooltip?: string;
32
+ useHtmlTooltip?: boolean;
33
+ }
34
+
35
+ const props = withDefaults(defineProps<Props>(), {
36
+ label: '',
37
+ tooltip: '',
38
+ useHtmlTooltip: false,
39
+ });
19
40
  </script>
20
41
 
21
- <style lang="scss">
42
+ <style lang="scss" scoped>
22
43
  @use '@/assets/scss/unnnic' as *;
23
44
 
45
+ * {
46
+ box-sizing: border-box;
47
+ padding: $unnnic-space-0;
48
+ margin: $unnnic-space-0;
49
+ }
50
+
24
51
  .unnnic-label {
52
+ display: flex;
53
+ align-items: center;
54
+ gap: $unnnic-space-2;
55
+ color: $unnnic-color-fg-base;
56
+
25
57
  &__label {
26
- font-family: $unnnic-font-family-secondary;
27
- font-weight: $unnnic-font-weight-regular;
28
- line-height: $unnnic-font-size-body-gt + $unnnic-line-height-medium;
29
- font-size: $unnnic-font-size-body-gt;
30
- color: $unnnic-color-neutral-cloudy;
31
- margin: $unnnic-spacing-stack-xs 0;
58
+ font: $unnnic-font-body;
59
+ }
60
+
61
+ :deep(.unnnic-tooltip) {
62
+ display: flex;
32
63
  }
33
64
  }
34
65
  </style>
@@ -24,7 +24,7 @@ describe('Label', () => {
24
24
  });
25
25
 
26
26
  it('applies the correct classes and styles', () => {
27
- const label = wrapper.findComponent('.unnnic-label__label');
27
+ const label = wrapper.find('.unnnic-label__label');
28
28
  expect(label.html()).toMatchSnapshot();
29
29
  });
30
30
  });
@@ -1,3 +1,3 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
- exports[`Label > applies the correct classes and styles 1`] = `"<p class="unnnic-label__label">Label Test</p>"`;
3
+ exports[`Label > applies the correct classes and styles 1`] = `"<p data-v-7f222291="" class="unnnic-label__label">Label Test</p>"`;
@@ -49,6 +49,7 @@
49
49
  data-testid="close-icon"
50
50
  icon="close"
51
51
  clickable
52
+ scheme="neutral-cloudy"
52
53
  @click="close()"
53
54
  />
54
55
  </header>
@@ -11,7 +11,7 @@ exports[`ModalDialog.vue > Elements rendering > matches the snapshot 1`] = `
11
11
  <unnnic-icon-stub data-v-68ebadeb="" filled="false" next="false" icon="test-icon" clickable="false" size="md" scheme="neutral-darkest" data-testid="title-icon" class="unnnic-modal-dialog__container__title-icon"></unnnic-icon-stub>
12
12
  <h1 data-v-68ebadeb="" class="unnnic-modal-dialog__container__title-text" data-testid="title-text">Test Title</h1>
13
13
  </section>
14
- <unnnic-icon-stub data-v-68ebadeb="" filled="false" next="false" icon="close" clickable="true" size="md" scheme="neutral-darkest" data-testid="close-icon"></unnnic-icon-stub>
14
+ <unnnic-icon-stub data-v-68ebadeb="" filled="false" next="false" icon="close" clickable="true" size="md" scheme="neutral-cloudy" data-testid="close-icon"></unnnic-icon-stub>
15
15
  </header>
16
16
  <section data-v-68ebadeb="" class="unnnic-modal-dialog__container__content"></section>
17
17
  <section data-v-68ebadeb="" data-testid="actions-section" class="unnnic-modal-dialog__container__actions">
@@ -42,7 +42,7 @@ exports[`TableNext.vue > matches the snapshot 1`] = `
42
42
  <p data-v-e29458bb="" class="table-pagination__count" data-testid="count">1 - 1 of 1</p>
43
43
  <div data-v-0eeff8cb="" data-v-e29458bb="" class="pagination"><button data-v-ceff2a60="" data-v-0eeff8cb="" data-test="previous-button" disabled="" class="unnnic-button unnnic-button--size-small unnnic-button--tertiary unnnic-button--icon-on-center">
44
44
  <!--v-if-->
45
- <!--v-if--><svg data-v-26446d8e="" data-v-ceff2a60="" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" class="unnnic-icon unnnic-icon__size--sm unnnic-icon-scheme--neutral-clean" data-testid="icon-center" style="visibility: visible;">
45
+ <!--v-if--><svg data-v-26446d8e="" data-v-ceff2a60="" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" class="unnnic-icon unnnic-icon__size--ant unnnic-icon-scheme--neutral-clean" data-testid="icon-center" style="visibility: visible;">
46
46
  <path d="M26.8368 35.0005C26.5868 35.0005 26.3506 34.903 26.1743 34.7255L12.7743 21.3255C12.4206 20.9717 12.2256 20.5017 12.2256 20.0017C12.2256 19.5017 12.4193 19.0305 12.7731 18.6767L26.1743 5.27549C26.3506 5.09799 26.5868 5.00049 26.8368 5.00049C27.0868 5.00049 27.3231 5.09799 27.4993 5.27549C27.6768 5.45174 27.7743 5.68799 27.7743 5.93799C27.7743 6.18799 27.6768 6.42424 27.4993 6.60049L14.0993 20.0005L27.4993 33.4005C27.6768 33.578 27.7743 33.813 27.7743 34.063C27.7743 34.313 27.6768 34.5492 27.4993 34.7255C27.3218 34.9017 27.0868 35.0005 26.8368 35.0005Z" fill="#3B414D" class="primary"></path>
47
47
  </svg><span data-v-ceff2a60="" class="unnnic-button__label" style="visibility: visible;" data-testid="button-label"> </span>
48
48
  <!--v-if-->
@@ -53,7 +53,7 @@ exports[`TableNext.vue > matches the snapshot 1`] = `
53
53
  <!--v-if-->
54
54
  </button><button data-v-ceff2a60="" data-v-0eeff8cb="" data-test="next-button" disabled="" class="unnnic-button unnnic-button--size-small unnnic-button--tertiary unnnic-button--icon-on-center">
55
55
  <!--v-if-->
56
- <!--v-if--><svg data-v-26446d8e="" data-v-ceff2a60="" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" class="unnnic-icon unnnic-icon__size--sm unnnic-icon-scheme--neutral-clean" data-testid="icon-center" style="visibility: visible;">
56
+ <!--v-if--><svg data-v-26446d8e="" data-v-ceff2a60="" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" class="unnnic-icon unnnic-icon__size--ant unnnic-icon-scheme--neutral-clean" data-testid="icon-center" style="visibility: visible;">
57
57
  <path d="M13.1635 35.0005C12.9135 35.0005 12.6772 34.903 12.501 34.7255C12.136 34.3605 12.136 33.7655 12.501 33.3992L25.901 20.0005L12.501 6.60049C12.3235 6.42424 12.226 6.18799 12.226 5.93799C12.226 5.68799 12.3235 5.45174 12.501 5.27549C12.6772 5.09799 12.9135 5.00049 13.1635 5.00049C13.4135 5.00049 13.6497 5.09799 13.826 5.27549L27.226 18.6755C27.956 19.4055 27.9572 20.5942 27.2272 21.3242L13.826 34.7255C13.6497 34.903 13.4135 35.0005 13.1635 35.0005Z" fill="#3B414D" class="primary"></path>
58
58
  </svg><span data-v-ceff2a60="" class="unnnic-button__label" style="visibility: visible;" data-testid="button-label"> </span>
59
59
  <!--v-if-->
@@ -5,7 +5,7 @@ exports[`TablePagination.vue > matches the snapshot 1`] = `
5
5
  <p data-v-e29458bb="" class="table-pagination__count" data-testid="count">1 - 10 of 100</p>
6
6
  <div data-v-0eeff8cb="" data-v-e29458bb="" class="pagination"><button data-v-ceff2a60="" data-v-0eeff8cb="" data-test="previous-button" disabled="" class="unnnic-button unnnic-button--size-small unnnic-button--tertiary unnnic-button--icon-on-center">
7
7
  <!--v-if-->
8
- <!--v-if--><svg data-v-26446d8e="" data-v-ceff2a60="" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" class="unnnic-icon unnnic-icon__size--sm unnnic-icon-scheme--neutral-clean" data-testid="icon-center" style="visibility: visible;">
8
+ <!--v-if--><svg data-v-26446d8e="" data-v-ceff2a60="" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" class="unnnic-icon unnnic-icon__size--ant unnnic-icon-scheme--neutral-clean" data-testid="icon-center" style="visibility: visible;">
9
9
  <path d="M26.8368 35.0005C26.5868 35.0005 26.3506 34.903 26.1743 34.7255L12.7743 21.3255C12.4206 20.9717 12.2256 20.5017 12.2256 20.0017C12.2256 19.5017 12.4193 19.0305 12.7731 18.6767L26.1743 5.27549C26.3506 5.09799 26.5868 5.00049 26.8368 5.00049C27.0868 5.00049 27.3231 5.09799 27.4993 5.27549C27.6768 5.45174 27.7743 5.68799 27.7743 5.93799C27.7743 6.18799 27.6768 6.42424 27.4993 6.60049L14.0993 20.0005L27.4993 33.4005C27.6768 33.578 27.7743 33.813 27.7743 34.063C27.7743 34.313 27.6768 34.5492 27.4993 34.7255C27.3218 34.9017 27.0868 35.0005 26.8368 35.0005Z" fill="#3B414D" class="primary"></path>
10
10
  </svg><span data-v-ceff2a60="" class="unnnic-button__label" style="visibility: visible;" data-testid="button-label"> </span>
11
11
  <!--v-if-->
@@ -36,7 +36,7 @@ exports[`TablePagination.vue > matches the snapshot 1`] = `
36
36
  <!--v-if-->
37
37
  </button><button data-v-ceff2a60="" data-v-0eeff8cb="" data-test="next-button" class="unnnic-button unnnic-button--size-small unnnic-button--tertiary unnnic-button--icon-on-center">
38
38
  <!--v-if-->
39
- <!--v-if--><svg data-v-26446d8e="" data-v-ceff2a60="" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" class="unnnic-icon unnnic-icon__size--sm unnnic-icon-scheme--neutral-dark" data-testid="icon-center" style="visibility: visible;">
39
+ <!--v-if--><svg data-v-26446d8e="" data-v-ceff2a60="" width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg" class="unnnic-icon unnnic-icon__size--ant unnnic-icon-scheme--neutral-dark" data-testid="icon-center" style="visibility: visible;">
40
40
  <path d="M13.1635 35.0005C12.9135 35.0005 12.6772 34.903 12.501 34.7255C12.136 34.3605 12.136 33.7655 12.501 33.3992L25.901 20.0005L12.501 6.60049C12.3235 6.42424 12.226 6.18799 12.226 5.93799C12.226 5.68799 12.3235 5.45174 12.501 5.27549C12.6772 5.09799 12.9135 5.00049 13.1635 5.00049C13.4135 5.00049 13.6497 5.09799 13.826 5.27549L27.226 18.6755C27.956 19.4055 27.9572 20.5942 27.2272 21.3242L13.826 34.7255C13.6497 34.903 13.4135 35.0005 13.1635 35.0005Z" fill="#3B414D" class="primary"></path>
41
41
  </svg><span data-v-ceff2a60="" class="unnnic-button__label" style="visibility: visible;" data-testid="button-label"> </span>
42
42
  <!--v-if-->