@weni/unnnic-system 3.9.4-alpha.4 → 3.10.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 (254) hide show
  1. package/CHANGELOG.md +14 -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 +7677 -6315
  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-bdfb773f.mjs → es-4b899f97.mjs} +1 -1
  121. package/dist/{index-8ce04c5b.mjs → index-23489897.mjs} +8813 -9354
  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-4befdd13.mjs → pt-br-5a914a63.mjs} +1 -1
  126. package/dist/style.css +1 -1
  127. package/dist/unnnic.mjs +173 -181
  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/scheme-colors.scss +223 -309
  133. package/src/components/Alert/Alert.vue +135 -26
  134. package/src/components/Alert/AlertBanner.vue +182 -0
  135. package/src/components/Alert/AlertCaller.vue +49 -0
  136. package/src/components/Alert/Version1dot1.vue +36 -0
  137. package/src/components/Alert/__tests__/Alert.spec.js +45 -2
  138. package/src/components/Alert/__tests__/AlertBanner.spec.js +89 -0
  139. package/src/components/Alert/__tests__/AlertCaller.spec.js +98 -0
  140. package/src/components/Alert/__tests__/Version1dot1.spec.js +21 -0
  141. package/src/components/Alert/__tests__/__snapshots__/Alert.spec.js.snap +7 -11
  142. package/src/components/Alert/__tests__/__snapshots__/AlertBanner.spec.js.snap +2 -2
  143. package/src/components/Alert/__tests__/__snapshots__/Version1dot1.spec.js.snap +1 -1
  144. package/src/components/Button/Button.vue +117 -67
  145. package/src/components/Button/types.ts +1 -0
  146. package/src/components/ChatsContact/ChatsContact.vue +6 -10
  147. package/src/components/Checkbox/Checkbox.vue +65 -117
  148. package/src/components/Checkbox/__tests__/Checkbox.spec.js +21 -6
  149. package/src/components/FormElement/FormElement.vue +93 -63
  150. package/src/components/Icon.vue +0 -2
  151. package/src/components/Input/BaseInput.vue +14 -33
  152. package/src/components/Input/Input.scss +22 -22
  153. package/src/components/Input/Input.vue +56 -79
  154. package/src/components/Input/TextInput.vue +65 -81
  155. package/src/components/Input/__test__/Input.spec.js +33 -13
  156. package/src/components/Input/__test__/TextInput.spec.js +8 -6
  157. package/src/components/Input/__test__/__snapshots__/Input.spec.js.snap +4 -17
  158. package/src/components/Input/__test__/__snapshots__/TextInput.spec.js.snap +1 -7
  159. package/src/components/Label/Label.vue +21 -52
  160. package/src/components/Label/__tests__/Label.spec.js +1 -1
  161. package/src/components/Label/__tests__/__snapshots__/Label.spec.js.snap +1 -1
  162. package/src/components/Radio/Radio.vue +66 -118
  163. package/src/components/Radio/__test__/Radio.spec.js +20 -14
  164. package/src/components/Radio/__test__/__snapshots__/Radio.spec.js.snap +3 -4
  165. package/src/components/SelectSmart/SelectSmart.vue +3 -4
  166. package/src/components/Switch/Switch.vue +91 -132
  167. package/src/components/Switch/__tests__/Switch.spec.js +75 -8
  168. package/src/components/Switch/__tests__/__snapshots__/Switch.spec.js.snap +6 -5
  169. package/src/components/Tab/Tab.vue +23 -37
  170. package/src/components/Tab/__test__/__snapshots__/Tab.spec.js.snap +1 -1
  171. package/src/components/TableNext/__test__/__snapshots__/TableNext.spec.js.snap +2 -2
  172. package/src/components/TableNext/__test__/__snapshots__/TablePagination.spec.js.snap +2 -2
  173. package/src/components/Tag/BrandTag.vue +96 -0
  174. package/src/components/Tag/DefaultTag.vue +107 -51
  175. package/src/components/Tag/IndicatorTag.vue +107 -0
  176. package/src/components/Tag/Tag.vue +79 -32
  177. package/src/components/Tag/TagNext.vue +60 -0
  178. package/src/components/TextArea/TextArea.vue +12 -41
  179. package/src/components/TextArea/__test__/__snapshots__/TextArea.spec.js.snap +3 -11
  180. package/src/components/index.ts +17 -33
  181. package/src/locales/en.json +1 -2
  182. package/src/locales/es.json +1 -2
  183. package/src/locales/pt_br.json +1 -2
  184. package/src/stories/Alert.stories.js +67 -6
  185. package/src/stories/Button.stories.js +39 -29
  186. package/src/stories/Checkbox.stories.js +4 -11
  187. package/src/stories/Input.stories.js +76 -71
  188. package/src/stories/Label.stories.js +0 -7
  189. package/src/stories/Radio.stories.js +1 -28
  190. package/src/stories/Switch.stories.js +5 -10
  191. package/src/stories/Tab.stories.js +4 -11
  192. package/src/stories/Tag.stories.js +43 -24
  193. package/src/stories/TextArea.stories.js +2 -14
  194. package/src/types/scheme-colors.d.ts +0 -1
  195. package/src/utils/call.js +18 -46
  196. package/dist/assets/tokens/colors.json.d.ts +0 -376
  197. package/dist/components/CheckboxGroup/CheckboxGroup.vue.d.ts +0 -28
  198. package/dist/components/CheckboxGroup/CheckboxGroup.vue.d.ts.map +0 -1
  199. package/dist/components/PageHeader/PageHeader.vue.d.ts +0 -28
  200. package/dist/components/PageHeader/PageHeader.vue.d.ts.map +0 -1
  201. package/dist/components/PageHeader/index.d.ts +0 -3
  202. package/dist/components/PageHeader/index.d.ts.map +0 -1
  203. package/dist/components/PageHeader/types.d.ts +0 -9
  204. package/dist/components/PageHeader/types.d.ts.map +0 -1
  205. package/dist/components/Tag/types.d.ts +0 -18
  206. package/dist/components/Tag/types.d.ts.map +0 -1
  207. package/dist/components/Toast/Toast.vue.d.ts +0 -16
  208. package/dist/components/Toast/Toast.vue.d.ts.map +0 -1
  209. package/dist/components/Toast/ToastManager.d.ts +0 -14
  210. package/dist/components/Toast/ToastManager.d.ts.map +0 -1
  211. package/dist/components/Toast/types.d.ts +0 -35
  212. package/dist/components/Toast/types.d.ts.map +0 -1
  213. package/src/assets/icons/checkbox-checked-disabled.svg +0 -3
  214. package/src/assets/icons/checkbox-checked.svg +0 -3
  215. package/src/assets/icons/checkbox-less-disabled.svg +0 -3
  216. package/src/assets/icons/checkbox-less.svg +0 -3
  217. package/src/assets/icons/radio-checked.svg +0 -3
  218. package/src/assets/icons/switch-checked-disabled.svg +0 -3
  219. package/src/assets/icons/switch-checked.svg +0 -3
  220. package/src/components/CheckboxGroup/CheckboxGroup.vue +0 -96
  221. package/src/components/MultiSelectV2/MultSelectOption.vue +0 -67
  222. package/src/components/MultiSelectV2/__tests__/MultiSelect.spec.js +0 -556
  223. package/src/components/MultiSelectV2/__tests__/MultiSelectOption.spec.js +0 -229
  224. package/src/components/MultiSelectV2/__tests__/__snapshots__/MultiSelect.spec.js.snap +0 -121
  225. package/src/components/MultiSelectV2/__tests__/__snapshots__/MultiSelectOption.spec.js.snap +0 -51
  226. package/src/components/MultiSelectV2/index.vue +0 -221
  227. package/src/components/PageHeader/PageHeader.vue +0 -148
  228. package/src/components/PageHeader/index.ts +0 -2
  229. package/src/components/PageHeader/types.ts +0 -10
  230. package/src/components/Popover/__tests__/Popover.spec.js +0 -147
  231. package/src/components/Popover/__tests__/__snapshots__/Popover.spec.js.snap +0 -8
  232. package/src/components/Popover/index.vue +0 -146
  233. package/src/components/RadioGroup/RadioGroup.vue +0 -142
  234. package/src/components/Select/SelectOption.vue +0 -65
  235. package/src/components/Select/__tests__/Select.spec.js +0 -412
  236. package/src/components/Select/__tests__/SelectItem.spec.js +0 -330
  237. package/src/components/Select/__tests__/SelectOption.spec.js +0 -174
  238. package/src/components/Select/__tests__/__snapshots__/Select.spec.js.snap +0 -97
  239. package/src/components/Select/__tests__/__snapshots__/SelectItem.spec.js.snap +0 -15
  240. package/src/components/Select/__tests__/__snapshots__/SelectOption.spec.js.snap +0 -25
  241. package/src/components/Select/index.vue +0 -249
  242. package/src/components/Tag/types.ts +0 -19
  243. package/src/components/Toast/Toast.vue +0 -246
  244. package/src/components/Toast/ToastManager.ts +0 -110
  245. package/src/components/Toast/__tests__/Toast.spec.js +0 -291
  246. package/src/components/Toast/__tests__/ToastManager.spec.js +0 -294
  247. package/src/components/Toast/types.ts +0 -57
  248. package/src/stories/CheckboxGroup.stories.js +0 -105
  249. package/src/stories/MultiSelectV2.stories.js +0 -158
  250. package/src/stories/PageHeader.stories.js +0 -330
  251. package/src/stories/RadioGroup.stories.js +0 -144
  252. package/src/stories/Select.stories.js +0 -158
  253. package/src/stories/Toast.mdx +0 -123
  254. 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>