@weni/unnnic-system 3.9.3-alpha.0 → 3.9.4

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 (256) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/components/Accordion/Accordion.vue.d.ts +1 -1
  3. package/dist/components/Alert/Alert.vue.d.ts +116 -17
  4. package/dist/components/Alert/Alert.vue.d.ts.map +1 -1
  5. package/dist/components/Alert/Version1dot1.vue.d.ts +38 -2
  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 +3 -3
  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 +1 -1
  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 +5 -5
  20. package/dist/components/Card/BlankCard.vue.d.ts +1 -1
  21. package/dist/components/Card/Card.vue.d.ts +27 -27
  22. package/dist/components/Card/CardCompany.vue.d.ts +414 -11
  23. package/dist/components/Card/CardData.vue.d.ts +1 -1
  24. package/dist/components/Card/CardStatusesContainer.vue.d.ts +5 -5
  25. package/dist/components/Card/ContentCard.vue.d.ts +3 -3
  26. package/dist/components/Card/DashCard.vue.d.ts +5 -5
  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 +3 -3
  32. package/dist/components/CardImage/CardImage.vue.d.ts +31 -24
  33. package/dist/components/CardInformation/CardInformation.vue.d.ts +5 -5
  34. package/dist/components/CardProject/CardProject.vue.d.ts +3 -3
  35. package/dist/components/Carousel/Carousel.vue.d.ts +416 -13
  36. package/dist/components/Carousel/TagCarousel.vue.d.ts +415 -12
  37. package/dist/components/ChartBar/ChartBar.vue.d.ts +5 -5
  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 +446 -21
  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 +26 -19
  49. package/dist/components/Checkbox/Checkbox.vue.d.ts.map +1 -1
  50. package/dist/components/Comment/Comment.vue.d.ts +1 -1
  51. package/dist/components/DataArea/DataArea.vue.d.ts +2 -2
  52. package/dist/components/DataTable/index.vue.d.ts +1 -1
  53. package/dist/components/DataTable/index.vue.d.ts.map +1 -1
  54. package/dist/components/DateFilter/DateFilter.vue.d.ts +41 -251
  55. package/dist/components/DatePicker/DatePicker.vue.d.ts +4 -4
  56. package/dist/components/Drawer/Drawer.vue.d.ts +4 -4
  57. package/dist/components/Dropdown/Dropdown.vue.d.ts +1 -1
  58. package/dist/components/Dropdown/LanguageSelect.vue.d.ts +3 -3
  59. package/dist/components/Flag.vue.d.ts +2 -2
  60. package/dist/components/FormElement/FormElement.vue.d.ts +28 -51
  61. package/dist/components/FormElement/FormElement.vue.d.ts.map +1 -1
  62. package/dist/components/Icon.vue.d.ts +1 -1
  63. package/dist/components/Icon.vue.d.ts.map +1 -1
  64. package/dist/components/IconLoading/IconLoading.vue.d.ts +1 -1
  65. package/dist/components/ImportCard/ImportCard.vue.d.ts +4 -4
  66. package/dist/components/Input/BaseInput.vue.d.ts +2 -33
  67. package/dist/components/Input/BaseInput.vue.d.ts.map +1 -1
  68. package/dist/components/Input/Input.vue.d.ts +41 -251
  69. package/dist/components/Input/Input.vue.d.ts.map +1 -1
  70. package/dist/components/Input/TextInput.vue.d.ts +25 -85
  71. package/dist/components/Input/TextInput.vue.d.ts.map +1 -1
  72. package/dist/components/InputDatePicker/InputDatePicker.vue.d.ts +46 -256
  73. package/dist/components/InputNext/InputNext.vue.d.ts +5 -5
  74. package/dist/components/Label/Label.vue.d.ts +15 -9
  75. package/dist/components/Label/Label.vue.d.ts.map +1 -1
  76. package/dist/components/Modal/Modal.vue.d.ts +2 -2
  77. package/dist/components/ModalDialog/ModalDialog.vue.d.ts +6 -6
  78. package/dist/components/ModalNext/ModalNext.vue.d.ts +46 -256
  79. package/dist/components/ModalUpload/ModalUpload.vue.d.ts +9 -9
  80. package/dist/components/MoodRating/MoodRating.vue.d.ts +1 -1
  81. package/dist/components/MultiSelect/MultiSelect.vue.d.ts +14 -26
  82. package/dist/components/Pagination/Pagination.vue.d.ts +3 -3
  83. package/dist/components/ProgressBar/ProgressBar.vue.d.ts +1 -1
  84. package/dist/components/Radio/Radio.vue.d.ts +6 -10
  85. package/dist/components/Radio/Radio.vue.d.ts.map +1 -1
  86. package/dist/components/SelectSmart/SelectSmart.vue.d.ts +470 -120
  87. package/dist/components/SelectSmart/SelectSmartMultipleHeader.vue.d.ts +414 -11
  88. package/dist/components/SelectSmart/SelectSmartOption.vue.d.ts +28 -21
  89. package/dist/components/SelectSmart/SelectSmartOption.vue.d.ts.map +1 -1
  90. package/dist/components/SelectTime/index.vue.d.ts +25 -85
  91. package/dist/components/SkeletonLoading/skeletonTheme.vue.d.ts +1 -1
  92. package/dist/components/Slider/Slider.vue.d.ts +2 -2
  93. package/dist/components/StarRating/StarRating.vue.d.ts +1 -1
  94. package/dist/components/Switch/Switch.vue.d.ts +21 -55
  95. package/dist/components/Switch/Switch.vue.d.ts.map +1 -1
  96. package/dist/components/Tab/Tab.vue.d.ts +2 -13
  97. package/dist/components/TableNext/TableBodyCell.vue.d.ts +2 -2
  98. package/dist/components/TableNext/TablePagination.vue.d.ts +3 -3
  99. package/dist/components/TabsExpanded/TabsExpanded.vue.d.ts +1 -1
  100. package/dist/components/Tag/BrandTag.vue.d.ts +51 -0
  101. package/dist/components/Tag/BrandTag.vue.d.ts.map +1 -0
  102. package/dist/components/Tag/DefaultTag.vue.d.ts +83 -4
  103. package/dist/components/Tag/DefaultTag.vue.d.ts.map +1 -1
  104. package/dist/components/Tag/IndicatorTag.vue.d.ts +151 -0
  105. package/dist/components/Tag/IndicatorTag.vue.d.ts.map +1 -0
  106. package/dist/components/Tag/Tag.vue.d.ts +414 -12
  107. package/dist/components/Tag/Tag.vue.d.ts.map +1 -1
  108. package/dist/components/Tag/TagNext.vue.d.ts +24 -0
  109. package/dist/components/Tag/TagNext.vue.d.ts.map +1 -0
  110. package/dist/components/TextArea/TextArea.vue.d.ts +33 -78
  111. package/dist/components/TextArea/TextArea.vue.d.ts.map +1 -1
  112. package/dist/components/ToolTip/ToolTip.vue.d.ts +1 -1
  113. package/dist/components/Tour/Tour.vue.d.ts +3 -3
  114. package/dist/components/Tour/TourPopover.vue.d.ts +3 -3
  115. package/dist/components/UploadArea/UploadArea.vue.d.ts +4 -4
  116. package/dist/components/index.d.ts +7710 -6271
  117. package/dist/components/index.d.ts.map +1 -1
  118. package/dist/components/ui/popover/PopoverContent.vue.d.ts +1 -1
  119. package/dist/components/ui/popover/PopoverContent.vue.d.ts.map +1 -1
  120. package/dist/{es-61b41785.mjs → es-8146fb1b.mjs} +1 -1
  121. package/dist/{index-10160248.mjs → index-724ed422.mjs} +8813 -9353
  122. package/dist/locales/en.json.d.ts +1 -2
  123. package/dist/locales/es.json.d.ts +1 -2
  124. package/dist/locales/pt_br.json.d.ts +1 -2
  125. package/dist/{pt-br-31a68683.mjs → pt-br-af294ec9.mjs} +1 -1
  126. package/dist/style.css +1 -1
  127. package/dist/unnnic.mjs +151 -158
  128. package/dist/unnnic.umd.js +36 -35
  129. package/dist/utils/call.d.ts +1 -2
  130. package/dist/utils/call.d.ts.map +1 -1
  131. package/package.json +2 -2
  132. package/src/assets/scss/radii.scss +1 -1
  133. package/src/assets/scss/scheme-colors.scss +223 -309
  134. package/src/assets/tokens/radii.json +1 -1
  135. package/src/components/Alert/Alert.vue +135 -26
  136. package/src/components/Alert/AlertBanner.vue +182 -0
  137. package/src/components/Alert/AlertCaller.vue +49 -0
  138. package/src/components/Alert/Version1dot1.vue +36 -0
  139. package/src/components/Alert/__tests__/Alert.spec.js +45 -2
  140. package/src/components/Alert/__tests__/AlertBanner.spec.js +89 -0
  141. package/src/components/Alert/__tests__/AlertCaller.spec.js +98 -0
  142. package/src/components/Alert/__tests__/Version1dot1.spec.js +21 -0
  143. package/src/components/Alert/__tests__/__snapshots__/Alert.spec.js.snap +7 -11
  144. package/src/components/Alert/__tests__/__snapshots__/AlertBanner.spec.js.snap +2 -2
  145. package/src/components/Alert/__tests__/__snapshots__/Version1dot1.spec.js.snap +1 -1
  146. package/src/components/Button/Button.vue +117 -67
  147. package/src/components/Button/types.ts +1 -0
  148. package/src/components/ChatsContact/ChatsContact.vue +6 -10
  149. package/src/components/Checkbox/Checkbox.vue +65 -117
  150. package/src/components/Checkbox/__tests__/Checkbox.spec.js +21 -6
  151. package/src/components/FormElement/FormElement.vue +93 -63
  152. package/src/components/Icon.vue +0 -2
  153. package/src/components/Input/BaseInput.vue +14 -33
  154. package/src/components/Input/Input.scss +22 -22
  155. package/src/components/Input/Input.vue +56 -79
  156. package/src/components/Input/TextInput.vue +65 -81
  157. package/src/components/Input/__test__/Input.spec.js +33 -13
  158. package/src/components/Input/__test__/TextInput.spec.js +8 -6
  159. package/src/components/Input/__test__/__snapshots__/Input.spec.js.snap +4 -17
  160. package/src/components/Input/__test__/__snapshots__/TextInput.spec.js.snap +1 -7
  161. package/src/components/Label/Label.vue +21 -52
  162. package/src/components/Label/__tests__/Label.spec.js +1 -1
  163. package/src/components/Label/__tests__/__snapshots__/Label.spec.js.snap +1 -1
  164. package/src/components/Radio/Radio.vue +66 -118
  165. package/src/components/Radio/__test__/Radio.spec.js +20 -14
  166. package/src/components/Radio/__test__/__snapshots__/Radio.spec.js.snap +3 -4
  167. package/src/components/SelectSmart/SelectSmart.vue +3 -4
  168. package/src/components/Switch/Switch.vue +91 -132
  169. package/src/components/Switch/__tests__/Switch.spec.js +75 -8
  170. package/src/components/Switch/__tests__/__snapshots__/Switch.spec.js.snap +6 -5
  171. package/src/components/Tab/Tab.vue +23 -37
  172. package/src/components/Tab/__test__/__snapshots__/Tab.spec.js.snap +1 -1
  173. package/src/components/TableNext/__test__/__snapshots__/TableNext.spec.js.snap +2 -2
  174. package/src/components/TableNext/__test__/__snapshots__/TablePagination.spec.js.snap +2 -2
  175. package/src/components/Tag/BrandTag.vue +96 -0
  176. package/src/components/Tag/DefaultTag.vue +107 -51
  177. package/src/components/Tag/IndicatorTag.vue +107 -0
  178. package/src/components/Tag/Tag.vue +79 -32
  179. package/src/components/Tag/TagNext.vue +60 -0
  180. package/src/components/TextArea/TextArea.vue +12 -41
  181. package/src/components/TextArea/__test__/__snapshots__/TextArea.spec.js.snap +3 -11
  182. package/src/components/index.ts +18 -33
  183. package/src/locales/en.json +1 -2
  184. package/src/locales/es.json +1 -2
  185. package/src/locales/pt_br.json +1 -2
  186. package/src/stories/Alert.stories.js +67 -6
  187. package/src/stories/Button.stories.js +39 -29
  188. package/src/stories/Checkbox.stories.js +4 -11
  189. package/src/stories/Input.stories.js +76 -71
  190. package/src/stories/Label.stories.js +0 -7
  191. package/src/stories/Radio.stories.js +1 -28
  192. package/src/stories/Switch.stories.js +5 -10
  193. package/src/stories/Tab.stories.js +4 -11
  194. package/src/stories/Tag.stories.js +43 -24
  195. package/src/stories/TextArea.stories.js +2 -14
  196. package/src/types/scheme-colors.d.ts +0 -1
  197. package/src/utils/call.js +18 -46
  198. package/dist/assets/tokens/colors.json.d.ts +0 -376
  199. package/dist/components/CheckboxGroup/CheckboxGroup.vue.d.ts +0 -28
  200. package/dist/components/CheckboxGroup/CheckboxGroup.vue.d.ts.map +0 -1
  201. package/dist/components/PageHeader/PageHeader.vue.d.ts +0 -28
  202. package/dist/components/PageHeader/PageHeader.vue.d.ts.map +0 -1
  203. package/dist/components/PageHeader/index.d.ts +0 -3
  204. package/dist/components/PageHeader/index.d.ts.map +0 -1
  205. package/dist/components/PageHeader/types.d.ts +0 -9
  206. package/dist/components/PageHeader/types.d.ts.map +0 -1
  207. package/dist/components/Tag/types.d.ts +0 -18
  208. package/dist/components/Tag/types.d.ts.map +0 -1
  209. package/dist/components/Toast/Toast.vue.d.ts +0 -16
  210. package/dist/components/Toast/Toast.vue.d.ts.map +0 -1
  211. package/dist/components/Toast/ToastManager.d.ts +0 -14
  212. package/dist/components/Toast/ToastManager.d.ts.map +0 -1
  213. package/dist/components/Toast/types.d.ts +0 -35
  214. package/dist/components/Toast/types.d.ts.map +0 -1
  215. package/src/assets/icons/checkbox-checked-disabled.svg +0 -3
  216. package/src/assets/icons/checkbox-checked.svg +0 -3
  217. package/src/assets/icons/checkbox-less-disabled.svg +0 -3
  218. package/src/assets/icons/checkbox-less.svg +0 -3
  219. package/src/assets/icons/radio-checked.svg +0 -3
  220. package/src/assets/icons/switch-checked-disabled.svg +0 -3
  221. package/src/assets/icons/switch-checked.svg +0 -3
  222. package/src/components/CheckboxGroup/CheckboxGroup.vue +0 -96
  223. package/src/components/MultiSelectV2/MultSelectOption.vue +0 -67
  224. package/src/components/MultiSelectV2/__tests__/MultiSelect.spec.js +0 -556
  225. package/src/components/MultiSelectV2/__tests__/MultiSelectOption.spec.js +0 -229
  226. package/src/components/MultiSelectV2/__tests__/__snapshots__/MultiSelect.spec.js.snap +0 -121
  227. package/src/components/MultiSelectV2/__tests__/__snapshots__/MultiSelectOption.spec.js.snap +0 -51
  228. package/src/components/MultiSelectV2/index.vue +0 -221
  229. package/src/components/PageHeader/PageHeader.vue +0 -148
  230. package/src/components/PageHeader/index.ts +0 -2
  231. package/src/components/PageHeader/types.ts +0 -10
  232. package/src/components/Popover/__tests__/Popover.spec.js +0 -147
  233. package/src/components/Popover/__tests__/__snapshots__/Popover.spec.js.snap +0 -8
  234. package/src/components/Popover/index.vue +0 -146
  235. package/src/components/RadioGroup/RadioGroup.vue +0 -142
  236. package/src/components/Select/SelectOption.vue +0 -65
  237. package/src/components/Select/__tests__/Select.spec.js +0 -412
  238. package/src/components/Select/__tests__/SelectItem.spec.js +0 -330
  239. package/src/components/Select/__tests__/SelectOption.spec.js +0 -174
  240. package/src/components/Select/__tests__/__snapshots__/Select.spec.js.snap +0 -97
  241. package/src/components/Select/__tests__/__snapshots__/SelectItem.spec.js.snap +0 -15
  242. package/src/components/Select/__tests__/__snapshots__/SelectOption.spec.js.snap +0 -25
  243. package/src/components/Select/index.vue +0 -249
  244. package/src/components/Tag/types.ts +0 -19
  245. package/src/components/Toast/Toast.vue +0 -246
  246. package/src/components/Toast/ToastManager.ts +0 -110
  247. package/src/components/Toast/__tests__/Toast.spec.js +0 -291
  248. package/src/components/Toast/__tests__/ToastManager.spec.js +0 -294
  249. package/src/components/Toast/types.ts +0 -57
  250. package/src/stories/CheckboxGroup.stories.js +0 -105
  251. package/src/stories/MultiSelectV2.stories.js +0 -158
  252. package/src/stories/PageHeader.stories.js +0 -330
  253. package/src/stories/RadioGroup.stories.js +0 -144
  254. package/src/stories/Select.stories.js +0 -158
  255. package/src/stories/Toast.mdx +0 -123
  256. package/src/stories/Toast.stories.js +0 -126
@@ -12,26 +12,93 @@ describe('Switch', () => {
12
12
  beforeEach(() => {
13
13
  wrapper = createWrapper({ modelValue: false });
14
14
  });
15
+ it('should render the component correctly with default props', () => {
16
+ expect(wrapper.exists()).toBe(true);
17
+ expect(wrapper.findComponent({ name: 'UnnnicIcon' }).exists()).toBe(true);
18
+ expect(wrapper.text()).toBe('');
19
+ });
20
+
21
+ it('should render the left text (textLeft) when provided', async () => {
22
+ await wrapper.setProps({ textLeft: 'Left Text' });
23
+
24
+ // This check ensures that the icon is placed before the switch text
25
+ const switchChildren = wrapper.findComponent(Switch).element.children;
26
+ expect(switchChildren[0].getAttribute('data-test-id')).toBe(
27
+ 'switch-text-left',
28
+ );
29
+ expect(switchChildren[1].getAttribute('data-test-id')).toBe('switch-icon');
30
+ });
31
+
32
+ it('should render the right text (textRight) when provided', async () => {
33
+ await wrapper.setProps({ textRight: 'Right Text' });
34
+
35
+ // This check ensures that the icon is placed after the switch text
36
+ const switchChildren = wrapper.findComponent(Switch).element.children;
37
+ expect(switchChildren[0].getAttribute('data-test-id')).toBe('switch-icon');
38
+ expect(switchChildren[1].getAttribute('data-test-id')).toBe(
39
+ 'switch-text-right',
40
+ );
41
+ });
42
+
43
+ it('should render the correct icon when the switch is disabled/enabled', async () => {
44
+ await wrapper.setProps({ disabled: true });
45
+ const disabledIconComponent = wrapper.findComponent({ name: 'UnnnicIcon' });
46
+ expect(disabledIconComponent.props('icon')).toBe('switch-default-disabled');
15
47
 
16
- it('should render the option when provided', async () => {
17
- await wrapper.setProps({ option: 'Option Text' });
48
+ await wrapper.setProps({ modelValue: true });
49
+ const enabledIconComponent = wrapper.findComponent({ name: 'UnnnicIcon' });
50
+ expect(enabledIconComponent.props('icon')).toBe('switch-selected-disabled');
51
+ });
18
52
 
19
- const switchOption = wrapper.find('[data-testid="switch-option"]');
20
- expect(switchOption.text()).toBe('Option Text');
53
+ it('should render the correct icon based on the isActive state', async () => {
54
+ expect(wrapper.vm.isActive).toBe(false);
55
+ await wrapper.setProps({ modelValue: true });
56
+ expect(wrapper.vm.isActive).toBe(true);
57
+ expect(wrapper.findComponent({ name: 'UnnnicIcon' }).props('icon')).toBe(
58
+ 'switch-default',
59
+ );
60
+ });
61
+
62
+ it('should render the correct icon size based on the size prop', async () => {
63
+ await wrapper.setProps({ size: 'small' });
64
+ expect(wrapper.findComponent({ name: 'UnnnicIcon' }).props('size')).toBe(
65
+ 'sm',
66
+ );
67
+
68
+ await wrapper.setProps({ size: 'medium' });
69
+ expect(wrapper.findComponent({ name: 'UnnnicIcon' }).props('size')).toBe(
70
+ 'md',
71
+ );
72
+ });
73
+
74
+ it('should change the icon color based on the state', async () => {
75
+ expect(wrapper.findComponent({ name: 'UnnnicIcon' }).props('scheme')).toBe(
76
+ 'neutral-soft',
77
+ );
78
+
79
+ await wrapper.setProps({ modelValue: true });
80
+ expect(wrapper.findComponent({ name: 'UnnnicIcon' }).props('scheme')).toBe(
81
+ 'brand-weni',
82
+ );
83
+
84
+ await wrapper.setProps({ disabled: true });
85
+ expect(wrapper.findComponent({ name: 'UnnnicIcon' }).props('scheme')).toBe(
86
+ 'neutral-soft',
87
+ );
21
88
  });
22
89
 
23
90
  it('should toggle isActive state and emit the correct event when toggleState is called', async () => {
24
91
  const initialIsActive = wrapper.vm.isActive;
25
- const switchInput = wrapper.find('input[type="checkbox"]');
26
- await switchInput.trigger('change');
92
+ const switchIcon = wrapper.findComponent('[ data-test-id="switch-icon"]');
93
+ await switchIcon.trigger('click');
27
94
  expect(wrapper.emitted('update:model-value')).toBeTruthy();
28
95
  expect(wrapper.vm.isActive).toBe(!initialIsActive);
29
96
  });
30
97
 
31
98
  it('should not change state when disabled is true', async () => {
32
99
  await wrapper.setProps({ disabled: true });
33
- const switchInput = wrapper.find('input[type="checkbox"]');
34
- await switchInput.trigger('change');
100
+ const switchIcon = wrapper.findComponent('[ data-test-id="switch-icon"]');
101
+ await switchIcon.trigger('click');
35
102
  expect(wrapper.emitted('update:model-value')).toBeFalsy();
36
103
  expect(wrapper.vm.isActive).toBe(false);
37
104
  });
@@ -1,10 +1,11 @@
1
1
  // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
2
 
3
3
  exports[`Switch > should match the snapshot 1`] = `
4
- "<section data-v-e4356c9d="" class="unnnic-switch">
5
- <!--v-if--><label data-v-e4356c9d="" class="unnnic-switch__input-wrapper"><input data-v-e4356c9d="" class="unnnic-switch__input" type="checkbox">
6
- <!--v-if-->
7
- </label>
4
+ "<div data-v-e4356c9d="" class="unnnic-switch">
5
+ <!--v-if--><svg data-v-3d58a7dd="" data-v-26446d8e="" data-v-e4356c9d="" id="default" width="80" height="40" viewBox="0 0 80 40" xmlns="http://www.w3.org/2000/svg" class="unnnic-icon unnnic-icon--size-svg-md unnnic-icon__size--md unnnic--clickable unnnic-icon-scheme--neutral-soft unnnic-switch__icon" data-testid="custom-icon" lineHeight="" disabled="false" data-test-id="switch-icon">
6
+ <rect data-v-3d58a7dd="" x="4.20013" y="2.10046" width="71.6" height="35.8" rx="17.9" class="primary"></rect>
7
+ <circle data-v-3d58a7dd="" id="default-circle" cx="22.5" cy="20.0005" r="12.5" fill="white"></circle>
8
+ </svg>
8
9
  <!--v-if-->
9
- </section>"
10
+ </div>"
10
11
  `;
@@ -9,7 +9,6 @@
9
9
  class="tab-head"
10
10
  :class="{
11
11
  'tab-head--active': localValue === tab,
12
- 'tab-head--disabled': disabledTabs?.includes(tab),
13
12
  }"
14
13
  @click="change(tab)"
15
14
  >
@@ -21,9 +20,10 @@
21
20
  side="bottom"
22
21
  >
23
22
  <UnnnicIcon
24
- icon="help"
23
+ icon="info"
25
24
  :size="size === 'sm' ? 'xs' : 'sm'"
26
- scheme="fg-base"
25
+ filled
26
+ scheme="neutral-cleanest"
27
27
  />
28
28
  </UnnnicToolTip>
29
29
  </li>
@@ -65,13 +65,6 @@ export default {
65
65
  tabs: {
66
66
  type: Array,
67
67
  default: null,
68
- validator: (tabs) => {
69
- return tabs.every((tab) => typeof tab === 'string') && tabs.length <= 5;
70
- },
71
- },
72
- disabledTabs: {
73
- type: Array,
74
- default: null,
75
68
  },
76
69
  },
77
70
  emits: ['change'],
@@ -112,10 +105,6 @@ export default {
112
105
  return '';
113
106
  },
114
107
  change(value) {
115
- if (this.disabledTabs?.includes(value)) {
116
- return;
117
- }
118
-
119
108
  this.localValue = value;
120
109
  this.$emit('change', this.localValue);
121
110
  },
@@ -130,15 +119,18 @@ export default {
130
119
  display: flex;
131
120
  align-items: flex-start;
132
121
  justify-content: space-between;
133
- color: $unnnic-color-fg-base;
134
- font: $unnnic-font-action;
135
- margin-bottom: $unnnic-space-4;
136
- border-bottom: $unnnic-border-width-thinner solid $unnnic-color-border-base;
122
+ color: $unnnic-color-neutral-cloudy;
123
+ font-family: $unnnic-font-family-secondary;
124
+ font-weight: $unnnic-font-weight-bold;
125
+ font-size: $unnnic-font-size-body-lg;
126
+ line-height: ($unnnic-font-size-body-lg + $unnnic-line-height-medium);
127
+ margin-bottom: $unnnic-inset-sm;
128
+ border-bottom: $unnnic-border-width-thinner solid $unnnic-color-neutral-soft;
137
129
  }
138
130
 
139
131
  .tab-content {
140
132
  display: flex;
141
- gap: $unnnic-space-6;
133
+ gap: $unnnic-spacing-sm;
142
134
 
143
135
  margin: 0;
144
136
  padding: 0;
@@ -147,24 +139,27 @@ export default {
147
139
 
148
140
  .tab-head {
149
141
  display: flex;
150
- gap: $unnnic-space-2;
142
+ gap: $unnnic-spacing-xs;
151
143
  align-items: center;
152
144
 
153
145
  cursor: pointer;
154
- padding: $unnnic-space-2 $unnnic-space-4;
146
+ margin: $unnnic-spacing-xs $unnnic-spacing-sm;
155
147
 
156
148
  .unnnic-tooltip {
157
149
  display: flex;
158
150
  }
159
151
 
160
152
  &:hover {
161
- color: $unnnic-color-fg-emphasized;
153
+ color: $unnnic-color-neutral-black;
162
154
  }
163
155
  }
164
156
 
165
157
  .tab-head--active {
166
- color: $unnnic-color-fg-emphasized;
167
- font: $unnnic-font-action;
158
+ font-family: $unnnic-font-family-secondary;
159
+ font-weight: $unnnic-font-weight-bold;
160
+ color: $unnnic-color-neutral-black;
161
+ font-size: $unnnic-font-size-body-lg;
162
+ line-height: ($unnnic-font-size-body-lg + $unnnic-line-height-medium);
168
163
  transition: 0.4s;
169
164
 
170
165
  position: relative;
@@ -173,23 +168,14 @@ export default {
173
168
  content: '';
174
169
 
175
170
  position: absolute;
176
- bottom: 0;
177
- left: 0;
171
+ bottom: -$unnnic-spacing-xs;
172
+ left: -$unnnic-spacing-sm;
178
173
 
179
174
  display: block;
180
175
 
181
- width: 100%;
176
+ width: calc(100% + (#{$unnnic-spacing-sm} * 2));
182
177
 
183
- border-bottom: $unnnic-border-width-thin solid $unnnic-color-border-active;
184
- }
185
- }
186
-
187
- .tab-head--disabled {
188
- color: $unnnic-color-fg-muted;
189
- cursor: default;
190
-
191
- &:hover {
192
- color: $unnnic-color-fg-muted;
178
+ border-bottom: $unnnic-border-width-thin solid $unnnic-color-weni-600;
193
179
  }
194
180
  }
195
181
 
@@ -4,7 +4,7 @@ exports[`Tab.vue > matches the snapshot 1`] = `
4
4
  "<div data-v-b4e39fac="" class="tab size-md">
5
5
  <header data-v-b4e39fac="" class="tab-header">
6
6
  <ul data-v-b4e39fac="" class="tab-content">
7
- <li data-v-b4e39fac="" class="tab-head">tab1<div data-v-bf0cf546="" data-v-b4e39fac="" class="unnnic-tooltip"><span data-v-26446d8e="" data-v-b4e39fac="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--fg-base unnnic-icon-size--sm unnnic-icon__size--sm" data-testid="material-icon" translate="no">help</span><span data-v-bf0cf546="" class="unnnic-tooltip-label unnnic-tooltip-label-bottom" data-testid="tooltip-label" style="left: 0px; top: 8px;">Tooltip text <br data-v-bf0cf546=""><!--v-if--></span></div>
7
+ <li data-v-b4e39fac="" class="tab-head">tab1<div data-v-bf0cf546="" data-v-b4e39fac="" class="unnnic-tooltip"><span data-v-26446d8e="" data-v-b4e39fac="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--neutral-cleanest unnnic-icon-size--sm unnnic-icon__size--sm material-symbols-rounded--filled" data-testid="material-icon" translate="no">info</span><span data-v-bf0cf546="" class="unnnic-tooltip-label unnnic-tooltip-label-bottom" data-testid="tooltip-label" style="left: 0px; top: 8px;">Tooltip text <br data-v-bf0cf546=""><!--v-if--></span></div>
8
8
  </li>
9
9
  <li data-v-b4e39fac="" class="tab-head tab-head--active">tab2
10
10
  <!--v-if-->
@@ -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--><span data-v-26446d8e="" data-v-ceff2a60="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--neutral-clean unnnic-icon-size--ant unnnic-icon__size--ant unnnic--clickable" data-testid="icon-center" translate="no" style="visibility: visible;">chevron_left</span><span data-v-ceff2a60="" class="unnnic-button__label" style="visibility: visible;" data-testid="button-label"> </span>
45
+ <!--v-if--><span data-v-26446d8e="" data-v-ceff2a60="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--neutral-clean unnnic-icon-size--sm unnnic-icon__size--sm" data-testid="icon-center" translate="no" style="visibility: visible;">chevron_left</span><span data-v-ceff2a60="" class="unnnic-button__label" style="visibility: visible;" data-testid="button-label"> </span>
46
46
  <!--v-if-->
47
47
  </button><button data-v-ceff2a60="" data-v-0eeff8cb="" data-test="page-button" class="unnnic-button unnnic-button--size-small unnnic-button--secondary">
48
48
  <!--v-if-->
@@ -51,7 +51,7 @@ exports[`TableNext.vue > matches the snapshot 1`] = `
51
51
  <!--v-if-->
52
52
  </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">
53
53
  <!--v-if-->
54
- <!--v-if--><span data-v-26446d8e="" data-v-ceff2a60="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--neutral-clean unnnic-icon-size--ant unnnic-icon__size--ant unnnic--clickable" data-testid="icon-center" translate="no" style="visibility: visible;">chevron_right</span><span data-v-ceff2a60="" class="unnnic-button__label" style="visibility: visible;" data-testid="button-label"> </span>
54
+ <!--v-if--><span data-v-26446d8e="" data-v-ceff2a60="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--neutral-clean unnnic-icon-size--sm unnnic-icon__size--sm" data-testid="icon-center" translate="no" style="visibility: visible;">chevron_right</span><span data-v-ceff2a60="" class="unnnic-button__label" style="visibility: visible;" data-testid="button-label"> </span>
55
55
  <!--v-if-->
56
56
  </button></div>
57
57
  </section>
@@ -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--><span data-v-26446d8e="" data-v-ceff2a60="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--neutral-clean unnnic-icon-size--ant unnnic-icon__size--ant unnnic--clickable" data-testid="icon-center" translate="no" style="visibility: visible;">chevron_left</span><span data-v-ceff2a60="" class="unnnic-button__label" style="visibility: visible;" data-testid="button-label"> </span>
8
+ <!--v-if--><span data-v-26446d8e="" data-v-ceff2a60="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--neutral-clean unnnic-icon-size--sm unnnic-icon__size--sm" data-testid="icon-center" translate="no" style="visibility: visible;">chevron_left</span><span data-v-ceff2a60="" class="unnnic-button__label" style="visibility: visible;" data-testid="button-label"> </span>
9
9
  <!--v-if-->
10
10
  </button><button data-v-ceff2a60="" data-v-0eeff8cb="" data-test="page-button" class="unnnic-button unnnic-button--size-small unnnic-button--secondary">
11
11
  <!--v-if-->
@@ -34,7 +34,7 @@ exports[`TablePagination.vue > matches the snapshot 1`] = `
34
34
  <!--v-if-->
35
35
  </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">
36
36
  <!--v-if-->
37
- <!--v-if--><span data-v-26446d8e="" data-v-ceff2a60="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--neutral-dark unnnic-icon-size--ant unnnic-icon__size--ant unnnic--clickable" data-testid="icon-center" translate="no" style="visibility: visible;">chevron_right</span><span data-v-ceff2a60="" class="unnnic-button__label" style="visibility: visible;" data-testid="button-label"> </span>
37
+ <!--v-if--><span data-v-26446d8e="" data-v-ceff2a60="" class="unnnic-icon material-symbols-rounded unnnic-icon-scheme--neutral-dark unnnic-icon-size--sm unnnic-icon__size--sm" data-testid="icon-center" translate="no" style="visibility: visible;">chevron_right</span><span data-v-ceff2a60="" class="unnnic-button__label" style="visibility: visible;" data-testid="button-label"> </span>
38
38
  <!--v-if-->
39
39
  </button></div>
40
40
  </section>"
@@ -0,0 +1,96 @@
1
+ <template>
2
+ <div
3
+ :class="{
4
+ 'unnnic-brand-tag': true,
5
+ 'unnnic-brand-tag--disabled': !disabled,
6
+ 'unnnic-brand-tag--clickable': clickable,
7
+ }"
8
+ >
9
+ <span class="unnnic-brand-tag__label">{{ text }}</span>
10
+ <UnnnicIcon
11
+ :icon="disabled ? 'close-1' : 'add-1'"
12
+ :scheme="disabled ? 'neutral-snow' : 'brand-weni-dark'"
13
+ class="unnnic-brand-tag__icon"
14
+ size="xs"
15
+ />
16
+ </div>
17
+ </template>
18
+
19
+ <script>
20
+ import UnnnicIcon from '../Icon.vue';
21
+
22
+ export default {
23
+ name: 'UnnnicBrandTag',
24
+ components: {
25
+ UnnnicIcon,
26
+ },
27
+ props: {
28
+ text: {
29
+ type: String,
30
+ default: null,
31
+ },
32
+ clickable: {
33
+ type: Boolean,
34
+ default: false,
35
+ },
36
+ disabled: {
37
+ type: Boolean,
38
+ default: false,
39
+ },
40
+ },
41
+ methods: {
42
+ closeClicked() {
43
+ if (!this.closeClicked) return;
44
+ this.$emit('close-click');
45
+ },
46
+ },
47
+ };
48
+ </script>
49
+
50
+ <style lang="scss" scoped>
51
+ @use '@/assets/scss/unnnic' as *;
52
+
53
+ .unnnic-brand-tag {
54
+ display: flex;
55
+ align-items: center;
56
+ justify-content: center;
57
+ border-radius: $unnnic-border-radius-pill;
58
+ border: 1px solid $unnnic-color-brand-weni-soft;
59
+ height: 1.875 * $unnnic-font-size;
60
+ white-space: nowrap;
61
+ transition: 0.2s;
62
+
63
+ color: $unnnic-color-neutral-snow;
64
+ background-color: $unnnic-color-brand-weni-dark;
65
+ &:hover {
66
+ background-color: $unnnic-color-brand-weni-soft;
67
+ }
68
+
69
+ &--disabled {
70
+ color: $unnnic-color-brand-weni-dark;
71
+ background-color: $unnnic-color-background-snow;
72
+ &:hover {
73
+ background-color: rgba(
74
+ $unnnic-color-brand-weni,
75
+ $unnnic-opacity-level-extra-light
76
+ );
77
+ }
78
+ }
79
+ &--clickable {
80
+ cursor: pointer;
81
+ }
82
+
83
+ &__label {
84
+ font-family: $unnnic-font-family-secondary;
85
+ font-size: $unnnic-font-size-body-md;
86
+ font-weight: $unnnic-font-weight-regular;
87
+ line-height: ($unnnic-font-size-body-md + $unnnic-line-height-medium);
88
+ padding: $unnnic-spacing-stack-nano $unnnic-inline-ant;
89
+ }
90
+
91
+ &__icon {
92
+ margin-right: $unnnic-inline-ant;
93
+ cursor: pointer;
94
+ }
95
+ }
96
+ </style>
@@ -1,88 +1,144 @@
1
1
  <template>
2
- <section :class="`unnnic-tag unnnic-tag--${size}`">
2
+ <section
3
+ :class="`unnnic-tag
4
+ ${!disabled ? `unnnic-tag-scheme--${scheme}` : `unnnic-tag--disabled`}
5
+ ${clickable ? 'unnnic-tag--clickable' : ''}`"
6
+ >
3
7
  <section
4
8
  v-if="leftIcon"
5
9
  class="unnnic-tag__icon"
6
10
  >
7
11
  <UnnnicIcon
8
12
  :icon="leftIcon"
9
- scheme="fg-emphasized"
13
+ :scheme="scheme"
14
+ size="sm"
15
+ />
16
+ </section>
17
+ <span
18
+ :class="`unnnic-tag__label
19
+ ${disabled ? 'unnnic-tag__label--disabled' : ''}`"
20
+ >{{ text }}</span
21
+ >
22
+ <section
23
+ v-if="rightIcon || hasCloseIcon"
24
+ :class="{ 'unnnic-tag__icon': true, clickable: !rightIcon }"
25
+ @click.stop="hasCloseIcon ? emitClose() : () => {}"
26
+ >
27
+ <UnnnicIcon
28
+ :icon="rightIcon || 'close'"
29
+ :scheme="rightIcon ? scheme : 'neutral-darkest'"
10
30
  size="sm"
11
31
  />
12
32
  </section>
13
- <p :class="`unnnic-tag__label`">{{ text }}</p>
14
33
  </section>
15
34
  </template>
16
35
 
17
- <script setup lang="ts">
18
- import { computed } from 'vue';
19
-
20
- import { color as colors } from '@/assets/tokens/colors.json';
21
-
36
+ <script>
22
37
  import UnnnicIcon from '../Icon.vue';
23
38
 
24
- import type { DefaultTagProps } from './types';
25
-
26
- const props = withDefaults(defineProps<DefaultTagProps>(), {
27
- text: undefined,
28
- size: 'medium',
29
- scheme: 'aux-purple',
30
- leftIcon: undefined,
31
- });
32
-
33
- const COLOR_MAPPING = [
34
- { keywords: ['green'], color: colors.green[200].value },
35
- { keywords: ['blue'], color: colors.blue[200].value },
36
- { keywords: ['purple'], color: colors.purple[200].value },
37
- { keywords: ['red', 'pink'], color: colors.red[200].value },
38
- { keywords: ['orange'], color: colors.orange[200].value },
39
- { keywords: ['yellow'], color: colors.yellow[200].value },
40
- { keywords: ['gray'], color: colors.gray[200].value },
41
- { keywords: ['teal', 'weni'], color: colors.teal[200].value },
42
- ];
43
-
44
- const color = computed(() => {
45
- const scheme = props.scheme.toLowerCase();
46
-
47
- const match = COLOR_MAPPING.find(({ keywords }) =>
48
- keywords.some((keyword) => scheme.includes(keyword)),
49
- );
50
-
51
- return match?.color ?? colors.gray[200].value;
52
- });
39
+ export default {
40
+ name: 'UnnnicTag',
41
+ components: {
42
+ UnnnicIcon,
43
+ },
44
+ props: {
45
+ text: {
46
+ type: String,
47
+ default: null,
48
+ },
49
+ clickable: {
50
+ type: Boolean,
51
+ default: false,
52
+ },
53
+ disabled: {
54
+ type: Boolean,
55
+ default: false,
56
+ },
57
+ hasCloseIcon: {
58
+ type: Boolean,
59
+ default: false,
60
+ },
61
+ scheme: {
62
+ type: String,
63
+ default: 'aux-purple',
64
+ },
65
+ leftIcon: {
66
+ type: String,
67
+ default: null,
68
+ },
69
+ rightIcon: {
70
+ type: String,
71
+ default: null,
72
+ },
73
+ },
74
+ methods: {
75
+ closeClicked() {
76
+ if (!this.closeClicked) return;
77
+ this.$emit('close-click');
78
+ },
79
+ emitClose() {
80
+ this.$emit('close');
81
+ },
82
+ },
83
+ };
53
84
  </script>
54
85
 
55
86
  <style lang="scss" scoped>
56
87
  @use '@/assets/scss/unnnic' as *;
57
88
 
89
+ @each $name, $color in $scheme-colors {
90
+ .unnnic-tag-scheme--#{$name} {
91
+ background-color: rgba($color, $unnnic-opacity-level-light);
92
+ outline-style: solid;
93
+ outline-color: rgba($color, $unnnic-opacity-level-extra-light);
94
+ outline-width: $unnnic-border-width-thinner;
95
+ outline-offset: -$unnnic-border-width-thinner;
96
+ }
97
+ }
98
+
58
99
  .unnnic-tag {
59
100
  display: flex;
60
101
  align-items: center;
61
102
  justify-content: center;
62
- gap: $unnnic-space-1;
63
103
  border-radius: $unnnic-border-radius-pill;
64
- padding: calc($unnnic-space-1 * 1.5) $unnnic-space-3;
65
- width: fit-content;
104
+ padding: 0 $unnnic-spacing-xs;
66
105
 
67
- background-color: v-bind(color);
106
+ &--disabled {
107
+ background-color: $unnnic-color-background-sky;
108
+ }
68
109
 
69
- &--small {
70
- padding: calc($unnnic-space-1 * 0.5) $unnnic-space-3;
110
+ &--clickable {
111
+ cursor: pointer;
112
+
113
+ @each $name, $color in $scheme-colors {
114
+ &.unnnic-tag-scheme--#{$name}:hover {
115
+ outline-style: solid;
116
+ outline-color: $unnnic-color-neutral-cleanest;
117
+ outline-width: $unnnic-border-width-thinner;
118
+ outline-offset: -$unnnic-border-width-thinner;
119
+ }
120
+ }
71
121
  }
72
122
 
73
123
  &__label {
74
- margin: 0;
75
-
76
- overflow: hidden;
77
- text-overflow: ellipsis;
78
- white-space: nowrap;
79
-
80
- font: $unnnic-font-caption-1;
81
- color: $unnnic-color-fg-emphasized;
124
+ font-family: $unnnic-font-family-secondary;
125
+ font-size: $unnnic-font-size-body-md;
126
+ font-weight: $unnnic-font-weight-regular;
127
+ line-height: ($unnnic-font-size-body-md + $unnnic-line-height-medium);
128
+ padding: $unnnic-spacing-stack-nano;
129
+ color: $unnnic-color-neutral-darkest;
130
+
131
+ &--disabled {
132
+ color: $unnnic-color-neutral-cloudy;
133
+ }
82
134
  }
83
135
 
84
136
  &__icon {
85
137
  display: flex;
86
138
  }
139
+
140
+ .clickable {
141
+ cursor: pointer;
142
+ }
87
143
  }
88
144
  </style>