@weni/unnnic-system 1.16.17 → 1.16.19-develop.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 (381) hide show
  1. package/.eslintrc.js +20 -20
  2. package/README.md +2 -2
  3. package/babel.config.js +16 -16
  4. package/dist/scss/colors.scss +121 -121
  5. package/dist/scss/fonts.scss +123 -123
  6. package/dist/scss/grid.scss +51 -51
  7. package/dist/scss/spacing.scss +92 -92
  8. package/dist/scss/unnnic.scss +10 -10
  9. package/dist/unnnic.common.js +13 -13
  10. package/dist/unnnic.common.js.map +1 -1
  11. package/dist/unnnic.umd.js +13 -13
  12. package/dist/unnnic.umd.js.map +1 -1
  13. package/dist/unnnic.umd.min.js.map +1 -1
  14. package/jest.config.js +3 -3
  15. package/package-lock.json +60419 -0
  16. package/package.json +4 -4
  17. package/public/index.html +17 -17
  18. package/src/assets/fonts/fonts/icomoon.svg +163 -163
  19. package/src/assets/fonts/icons.css +582 -582
  20. package/src/assets/icons/Brazil.svg +21 -21
  21. package/src/assets/icons/Spain.svg +498 -498
  22. package/src/assets/icons/USA.svg +28 -28
  23. package/src/assets/icons/add-1.svg +3 -3
  24. package/src/assets/icons/add-circle-1.svg +4 -4
  25. package/src/assets/icons/alarm-bell-ring.svg +8 -8
  26. package/src/assets/icons/alert-circle-1-1.svg +3 -3
  27. package/src/assets/icons/alert-circle-1.svg +5 -5
  28. package/src/assets/icons/american-express.svg +4 -4
  29. package/src/assets/icons/app-window-edit-1.svg +4 -4
  30. package/src/assets/icons/app-window-edit-2.svg +9 -9
  31. package/src/assets/icons/arrow-button-down-1.svg +3 -3
  32. package/src/assets/icons/arrow-button-up-1.svg +3 -3
  33. package/src/assets/icons/arrow-down-1-1.svg +3 -3
  34. package/src/assets/icons/arrow-left-1-1.svg +3 -3
  35. package/src/assets/icons/arrow-redo.svg +3 -3
  36. package/src/assets/icons/arrow-right-1-1.svg +3 -3
  37. package/src/assets/icons/arrow-undo.svg +3 -3
  38. package/src/assets/icons/attachment.svg +3 -3
  39. package/src/assets/icons/bin-1-1.svg +5 -5
  40. package/src/assets/icons/book-address-1-2.svg +4 -4
  41. package/src/assets/icons/book-address-2.svg +3 -3
  42. package/src/assets/icons/book-library-1.svg +9 -9
  43. package/src/assets/icons/book-library-2.svg +3 -3
  44. package/src/assets/icons/bookmark-tag-1.svg +3 -3
  45. package/src/assets/icons/building-2-1.svg +13 -13
  46. package/src/assets/icons/button-play-1.svg +4 -4
  47. package/src/assets/icons/button-refresh-arrow-1.svg +3 -3
  48. package/src/assets/icons/button-refresh-arrows-1.svg +4 -4
  49. package/src/assets/icons/charger-1.svg +4 -4
  50. package/src/assets/icons/chat-translate-1.svg +6 -6
  51. package/src/assets/icons/check-2.svg +3 -3
  52. package/src/assets/icons/check-circle-1-1-1.svg +3 -3
  53. package/src/assets/icons/check-circle-1-1.svg +4 -4
  54. package/src/assets/icons/check-double.svg +3 -3
  55. package/src/assets/icons/check-square-1.svg +4 -4
  56. package/src/assets/icons/check-square-2.svg +4 -4
  57. package/src/assets/icons/checkbox-default.svg +3 -3
  58. package/src/assets/icons/checkbox-disable.svg +3 -3
  59. package/src/assets/icons/checkbox-less.svg +4 -4
  60. package/src/assets/icons/checkbox-select.svg +4 -4
  61. package/src/assets/icons/close-1.svg +3 -3
  62. package/src/assets/icons/cog-1.svg +4 -4
  63. package/src/assets/icons/cog-2.svg +3 -3
  64. package/src/assets/icons/common-file-empty-1.svg +3 -3
  65. package/src/assets/icons/common-file-horizontal-image-1.svg +5 -5
  66. package/src/assets/icons/controls-pause-1.svg +4 -4
  67. package/src/assets/icons/controls-play-1.svg +3 -3
  68. package/src/assets/icons/copy-paste-1.svg +7 -7
  69. package/src/assets/icons/currency-dollar-circle-1.svg +4 -4
  70. package/src/assets/icons/default-avatar.svg +5 -5
  71. package/src/assets/icons/delete-1-1.svg +4 -4
  72. package/src/assets/icons/delete-1.svg +3 -3
  73. package/src/assets/icons/delete-2-1.svg +3 -3
  74. package/src/assets/icons/developer-community-github-1-1.svg +3 -3
  75. package/src/assets/icons/diners-club.svg +6 -6
  76. package/src/assets/icons/discover.svg +11 -11
  77. package/src/assets/icons/download-bottom-1.svg +4 -4
  78. package/src/assets/icons/download-thick-bottom-1.svg +4 -4
  79. package/src/assets/icons/drag-1.svg +10 -10
  80. package/src/assets/icons/email-action-unread-1-1.svg +4 -4
  81. package/src/assets/icons/email-action-unread-1.svg +10 -10
  82. package/src/assets/icons/emoji.svg +6 -6
  83. package/src/assets/icons/expand-8-1.svg +6 -6
  84. package/src/assets/icons/expand-full-1.svg +7 -7
  85. package/src/assets/icons/export-1.svg +5 -5
  86. package/src/assets/icons/filter.svg +3 -3
  87. package/src/assets/icons/fitness-biceps-1.svg +3 -3
  88. package/src/assets/icons/flash-1-3.svg +3 -3
  89. package/src/assets/icons/flash-1-4.svg +3 -3
  90. package/src/assets/icons/floppy-disk-1.svg +6 -6
  91. package/src/assets/icons/folder-1.svg +3 -3
  92. package/src/assets/icons/folder-2.svg +3 -3
  93. package/src/assets/icons/gauge-dashboard-1.svg +4 -4
  94. package/src/assets/icons/gauge-dashboard-2.svg +8 -8
  95. package/src/assets/icons/generic-card.svg +4 -4
  96. package/src/assets/icons/graph-stats-1.svg +3 -3
  97. package/src/assets/icons/graph-stats-ascend-2.svg +3 -3
  98. package/src/assets/icons/graph-stats-circle-1-1.svg +4 -4
  99. package/src/assets/icons/graph-stats-circle-1.svg +4 -4
  100. package/src/assets/icons/graph-stats-descend-2.svg +4 -4
  101. package/src/assets/icons/headphones-customer-support-1.svg +3 -3
  102. package/src/assets/icons/headphones-customer-support-2.svg +3 -3
  103. package/src/assets/icons/headphones-customer-support-human-1-1.svg +4 -4
  104. package/src/assets/icons/hierarchy-3-2.svg +3 -3
  105. package/src/assets/icons/hierarchy-3-3.svg +3 -3
  106. package/src/assets/icons/house-1-1.svg +4 -4
  107. package/src/assets/icons/house-2-2.svg +3 -3
  108. package/src/assets/icons/icon-script.py +27 -27
  109. package/src/assets/icons/indicator.svg +3 -3
  110. package/src/assets/icons/information-circle-4.svg +3 -3
  111. package/src/assets/icons/interaction-time.svg +5 -5
  112. package/src/assets/icons/jcb.svg +21 -21
  113. package/src/assets/icons/keyboard-arrow-down-1.svg +3 -3
  114. package/src/assets/icons/keyboard-arrow-left-1.svg +3 -3
  115. package/src/assets/icons/keyboard-arrow-right-1.svg +3 -3
  116. package/src/assets/icons/keyboard-return-1-1.svg +3 -3
  117. package/src/assets/icons/keyboard-return-1.svg +4 -4
  118. package/src/assets/icons/layout-dashboard-1.svg +6 -6
  119. package/src/assets/icons/layout-dashboard-2.svg +6 -6
  120. package/src/assets/icons/layout-module-1-2.svg +6 -6
  121. package/src/assets/icons/loading-circle-1.svg +19 -19
  122. package/src/assets/icons/lock-2-1.svg +4 -4
  123. package/src/assets/icons/lock-2-2.svg +3 -3
  124. package/src/assets/icons/lock-unlock-1-1.svg +4 -4
  125. package/src/assets/icons/logout-1-1.svg +4 -4
  126. package/src/assets/icons/mastercard.svg +6 -6
  127. package/src/assets/icons/messages-bubble-1.svg +3 -3
  128. package/src/assets/icons/messages-bubble-3.svg +3 -3
  129. package/src/assets/icons/messages-bubble-4.svg +3 -3
  130. package/src/assets/icons/messages.svg +3 -3
  131. package/src/assets/icons/messaging-we-chat-2.svg +4 -4
  132. package/src/assets/icons/messaging-we-chat-3.svg +8 -8
  133. package/src/assets/icons/messaging-whatsapp-1.svg +4 -4
  134. package/src/assets/icons/microphone.svg +4 -4
  135. package/src/assets/icons/move-expand-vertical-1.svg +3 -3
  136. package/src/assets/icons/navigation-menu-vertical-1.svg +5 -5
  137. package/src/assets/icons/notes-1.svg +7 -7
  138. package/src/assets/icons/office-file-pdf-1-1.svg +6 -6
  139. package/src/assets/icons/paginate-filter-text-1.svg +7 -7
  140. package/src/assets/icons/pencil-write-1.svg +4 -4
  141. package/src/assets/icons/phone-3.svg +3 -3
  142. package/src/assets/icons/phone-4.svg +3 -3
  143. package/src/assets/icons/phone-charger-1.svg +3 -3
  144. package/src/assets/icons/photography-equipment-bag-1.svg +5 -5
  145. package/src/assets/icons/pie-line-graph-1.svg +7 -7
  146. package/src/assets/icons/preferences.svg +11 -11
  147. package/src/assets/icons/question-circle-1.svg +5 -5
  148. package/src/assets/icons/question-circle-2.svg +3 -3
  149. package/src/assets/icons/radio-default.svg +3 -3
  150. package/src/assets/icons/radio-disable.svg +3 -3
  151. package/src/assets/icons/radio-selected.svg +4 -4
  152. package/src/assets/icons/rating-star-1-1.svg +3 -3
  153. package/src/assets/icons/rating-star-1.svg +3 -3
  154. package/src/assets/icons/read-email-at-1.svg +10 -10
  155. package/src/assets/icons/response-time.svg +12 -12
  156. package/src/assets/icons/science-fiction-robot-1.svg +8 -8
  157. package/src/assets/icons/science-fiction-robot-2.svg +5 -5
  158. package/src/assets/icons/search-1.svg +3 -3
  159. package/src/assets/icons/send-email-3-1.svg +3 -3
  160. package/src/assets/icons/single-neutral-2.svg +4 -4
  161. package/src/assets/icons/single-neutral-actions-1.svg +4 -4
  162. package/src/assets/icons/social-instagram-1.svg +3 -3
  163. package/src/assets/icons/social-media-facebook-1.svg +3 -3
  164. package/src/assets/icons/social-media-google-1.svg +6 -6
  165. package/src/assets/icons/sort-asc.svg +4 -4
  166. package/src/assets/icons/sort-default.svg +4 -4
  167. package/src/assets/icons/sort-desc.svg +4 -4
  168. package/src/assets/icons/study-light-idea-1.svg +10 -10
  169. package/src/assets/icons/subtract-1.svg +3 -3
  170. package/src/assets/icons/subtract-circle-1.svg +4 -4
  171. package/src/assets/icons/switch-default-disabled.svg +4 -4
  172. package/src/assets/icons/switch-default.svg +11 -11
  173. package/src/assets/icons/switch-selected-disabled.svg +4 -4
  174. package/src/assets/icons/switch-selected.svg +11 -11
  175. package/src/assets/icons/synchronize-arrow-clock-4.svg +4 -4
  176. package/src/assets/icons/synchronize-arrow-clock-5.svg +4 -4
  177. package/src/assets/icons/task-checklist-1.svg +4 -4
  178. package/src/assets/icons/task-list-clock-1.svg +9 -9
  179. package/src/assets/icons/text-bold.svg +3 -3
  180. package/src/assets/icons/text-center.svg +7 -7
  181. package/src/assets/icons/text-italic.svg +3 -3
  182. package/src/assets/icons/text-justified.svg +7 -7
  183. package/src/assets/icons/text-left.svg +7 -7
  184. package/src/assets/icons/text-right.svg +7 -7
  185. package/src/assets/icons/text-underline.svg +4 -4
  186. package/src/assets/icons/ticket-1.svg +9 -9
  187. package/src/assets/icons/ticket-2.svg +4 -4
  188. package/src/assets/icons/time-clock-circle-1.svg +4 -4
  189. package/src/assets/icons/transfer-message.svg +4 -4
  190. package/src/assets/icons/translate-1.svg +8 -8
  191. package/src/assets/icons/translate-2.svg +8 -8
  192. package/src/assets/icons/typing-1.svg +4 -4
  193. package/src/assets/icons/unionpay.svg +7 -7
  194. package/src/assets/icons/unordered-list.svg +8 -8
  195. package/src/assets/icons/upload-bottom-1.svg +4 -4
  196. package/src/assets/icons/video-file-mp4-1.svg +6 -6
  197. package/src/assets/icons/view-1-1.svg +4 -4
  198. package/src/assets/icons/view-off-1.svg +7 -7
  199. package/src/assets/icons/vip-crown-queen-2.svg +4 -4
  200. package/src/assets/icons/visa.svg +8 -8
  201. package/src/assets/img/flag/en.svg +28 -28
  202. package/src/assets/img/flag/pt-br.svg +21 -21
  203. package/src/assets/scss/colors.scss +121 -121
  204. package/src/assets/scss/fonts.scss +123 -123
  205. package/src/assets/scss/grid.scss +51 -51
  206. package/src/assets/scss/spacing.scss +92 -92
  207. package/src/assets/scss/unnnic.scss +10 -10
  208. package/src/components/Accordion/Accordion.vue +142 -142
  209. package/src/components/Alert/Alert.vue +145 -145
  210. package/src/components/Alert/AlertCaller.vue +49 -49
  211. package/src/components/Alert/Version1dot1.vue +146 -146
  212. package/src/components/AudioRecorder/AudioHandler.vue +96 -96
  213. package/src/components/AudioRecorder/AudioPlayer.vue +197 -197
  214. package/src/components/AudioRecorder/AudioRecorder.vue +357 -357
  215. package/src/components/AutocompleteSelect/AutocompleteSelect.vue +318 -318
  216. package/src/components/AvatarIcon/AvatarIcon.vue +90 -90
  217. package/src/components/Banner/Banner.vue +80 -80
  218. package/src/components/Banner/InfoBanner.vue +158 -158
  219. package/src/components/Breadcrumb/Breadcrumb.vue +80 -80
  220. package/src/components/Button/Button.vue +314 -314
  221. package/src/components/Button/ButtonIcon.vue +103 -103
  222. package/src/components/Card/AccountCard.vue +94 -94
  223. package/src/components/Card/BlankCard.vue +83 -83
  224. package/src/components/Card/Card.vue +197 -197
  225. package/src/components/Card/CardCompany.vue +289 -289
  226. package/src/components/Card/CardData.vue +117 -117
  227. package/src/components/Card/CardStatusesContainer.vue +222 -222
  228. package/src/components/Card/ContentCard.vue +135 -135
  229. package/src/components/Card/DashCard.vue +141 -141
  230. package/src/components/Card/DefaultCard.vue +81 -81
  231. package/src/components/Card/MarketplaceCard.vue +173 -173
  232. package/src/components/Card/StatusCard.vue +104 -104
  233. package/src/components/Card/TitleCard.vue +96 -96
  234. package/src/components/CardFlow/CardFlow.vue +175 -175
  235. package/src/components/CardImage/CardImage.vue +150 -150
  236. package/src/components/CardInformation/CardInformation.vue +65 -65
  237. package/src/components/CardNumber/CardNumber.vue +61 -61
  238. package/src/components/CardProject/CardProject.vue +73 -73
  239. package/src/components/Carousel/Carousel.vue +62 -62
  240. package/src/components/Carousel/TagCarousel.vue +190 -190
  241. package/src/components/ChartBar/ChartBar.vue +395 -395
  242. package/src/components/ChartLine/ChartLine.vue +300 -300
  243. package/src/components/ChartRainbow/ChartRainbow.vue +160 -160
  244. package/src/components/ChatText/ChatText.vue +156 -156
  245. package/src/components/Checkbox/Checkbox.vue +139 -139
  246. package/src/components/CircleProgressBar/CircleProgressBar.vue +146 -146
  247. package/src/components/Comment/Comment.vue +99 -99
  248. package/src/components/DataArea/DataArea.vue +96 -96
  249. package/src/components/DateFilter/DateFilter.vue +78 -78
  250. package/src/components/DatePicker/DatePicker.vue +806 -806
  251. package/src/components/Dropdown/Dropdown.vue +109 -109
  252. package/src/components/Dropdown/DropdownItem.vue +31 -31
  253. package/src/components/Dropdown/DropdownSkeleton.vue +164 -164
  254. package/src/components/Dropdown/LanguageSelect.vue +261 -261
  255. package/src/components/Flag.vue +41 -41
  256. package/src/components/FormElement/FormElement.vue +60 -60
  257. package/src/components/Icon.vue +157 -157
  258. package/src/components/ImportCard/ImportCard.vue +199 -199
  259. package/src/components/Indicator/Indicator.vue +108 -108
  260. package/src/components/Input/Autocomplete.vue +325 -325
  261. package/src/components/Input/BaseInput.vue +176 -176
  262. package/src/components/Input/Input.vue +154 -154
  263. package/src/components/Input/TextInput.vue +186 -186
  264. package/src/components/InputDatePicker/InputDatePicker.vue +193 -193
  265. package/src/components/InputNext/InputNext.vue +260 -260
  266. package/src/components/Label/Label.vue +30 -30
  267. package/src/components/Modal/CallModal.vue +23 -23
  268. package/src/components/Modal/Modal.vue +208 -208
  269. package/src/components/ModalNext/ModalNext.vue +396 -396
  270. package/src/components/ModalUpload/ModalUpload.vue +177 -177
  271. package/src/components/MoodRating/MoodRating.vue +115 -115
  272. package/src/components/MultiSelect/MultiSelect.vue +274 -274
  273. package/src/components/Pagination/Pagination.vue +164 -164
  274. package/src/components/ProgressBar/ProgressBar.vue +232 -232
  275. package/src/components/Radio/Radio.vue +133 -133
  276. package/src/components/Select/Select.vue +409 -409
  277. package/src/components/Select/SelectItem.vue +79 -79
  278. package/src/components/SelectListItem/SelectListItem.vue +125 -125
  279. package/src/components/Sidebar/Sidebar.vue +91 -91
  280. package/src/components/Sidebar/SidebarItem.vue +90 -90
  281. package/src/components/Sidebar/SidebarMenu.vue +34 -34
  282. package/src/components/Sidebar/SidebarPrimary.vue +384 -384
  283. package/src/components/SkeletonLoading/SkeletonLoading.vue +115 -115
  284. package/src/components/SkeletonLoading/skeletonTheme.vue +74 -74
  285. package/src/components/Slider/Slider.vue +317 -317
  286. package/src/components/StarRating/StarRating.vue +71 -71
  287. package/src/components/Switch/Switch.vue +170 -170
  288. package/src/components/Tab/Tab.vue +129 -129
  289. package/src/components/Table/Table.vue +115 -115
  290. package/src/components/Table/TableRow.vue +75 -75
  291. package/src/components/TabsExpanded/TabsExpanded.vue +131 -131
  292. package/src/components/Tag/BrandTag.vue +97 -97
  293. package/src/components/Tag/DefaultTag.vue +124 -124
  294. package/src/components/Tag/IndicatorTag.vue +104 -104
  295. package/src/components/Tag/Tag.vue +87 -87
  296. package/src/components/TextArea/TextArea.vue +200 -200
  297. package/src/components/TextEditor/TextEditor.vue +530 -530
  298. package/src/components/ToolTip/ToolTip.vue +192 -192
  299. package/src/components/UploadArea/UploadArea.vue +386 -386
  300. package/src/components/config.js +2 -2
  301. package/src/components/grid/Grid.vue +45 -45
  302. package/src/components/index.js +220 -220
  303. package/src/locales/en.json +15 -15
  304. package/src/locales/es.json +15 -15
  305. package/src/locales/pt_br.json +15 -15
  306. package/src/main.js +13 -13
  307. package/src/stories/Accordion.stories.js +46 -46
  308. package/src/stories/Alert.stories.js +58 -58
  309. package/src/stories/AudioRecorder.stories.js +48 -48
  310. package/src/stories/Autocomplete.stories.js +55 -55
  311. package/src/stories/AutocompleteSelect.stories.js +45 -45
  312. package/src/stories/AvatarIcon.stories.js +24 -24
  313. package/src/stories/Banner.stories.js +46 -46
  314. package/src/stories/Breadcrumb.stories.js +31 -31
  315. package/src/stories/Button.stories.js +49 -49
  316. package/src/stories/ButtonIcon.stories.js +40 -40
  317. package/src/stories/Card.stories.js +118 -118
  318. package/src/stories/CardCompany.stories.js +52 -52
  319. package/src/stories/CardData.stories.js +41 -41
  320. package/src/stories/CardFlow.stories.js +44 -44
  321. package/src/stories/CardImage.stories.js +56 -56
  322. package/src/stories/CardInformation.stories.js +64 -64
  323. package/src/stories/CardNumber.stories.js +35 -35
  324. package/src/stories/CardProject.stories.js +70 -70
  325. package/src/stories/Carousel.stories.js +38 -38
  326. package/src/stories/ChartBar.stories.js +119 -119
  327. package/src/stories/ChartLine.stories.js +55 -55
  328. package/src/stories/ChartRainbow.stories.js +34 -34
  329. package/src/stories/ChatText.stories.js +62 -62
  330. package/src/stories/Checkbox.stories.js +28 -28
  331. package/src/stories/CircleProgressBar.stories.js +36 -36
  332. package/src/stories/Colors.stories.mdx +91 -91
  333. package/src/stories/Comment.stories.js +59 -59
  334. package/src/stories/DataArea.stories.js +75 -75
  335. package/src/stories/DateFilter.stories.js +23 -23
  336. package/src/stories/DatePicker.stories.js +87 -87
  337. package/src/stories/Dropdown.stories.js +19 -19
  338. package/src/stories/DropdownSkeleton.stories.js +15 -15
  339. package/src/stories/Font.stories.mdx +80 -80
  340. package/src/stories/FormElement.stories.js +40 -40
  341. package/src/stories/Grid.stories.js +20 -20
  342. package/src/stories/Icon.stories.js +64 -64
  343. package/src/stories/ImportCard.stories.js +35 -35
  344. package/src/stories/Indicator.stories.js +23 -23
  345. package/src/stories/Input.stories.js +63 -63
  346. package/src/stories/InputDatePicker.stories.js +53 -53
  347. package/src/stories/InputNext.stories.js +109 -109
  348. package/src/stories/Introduction.stories.mdx +207 -207
  349. package/src/stories/Label.stories.js +20 -20
  350. package/src/stories/LanguageSelect.stories.js +28 -28
  351. package/src/stories/Modal.stories.js +58 -58
  352. package/src/stories/ModalNext.stories.js +171 -171
  353. package/src/stories/ModalUpload.stories.js +29 -29
  354. package/src/stories/MoodRating.stories.js +37 -37
  355. package/src/stories/MultiSelect.stories.js +55 -55
  356. package/src/stories/Pagination.stories.js +31 -31
  357. package/src/stories/ProgressBar.stories.js +73 -73
  358. package/src/stories/Radio.stories.js +46 -46
  359. package/src/stories/Select.stories.js +62 -62
  360. package/src/stories/SelectListItem.stories.js +63 -63
  361. package/src/stories/Sidebar.stories.js +37 -37
  362. package/src/stories/SidebarPrimary.stories.js +83 -83
  363. package/src/stories/SkeletonLoading.stories.js +34 -34
  364. package/src/stories/Slider.stories.js +29 -29
  365. package/src/stories/StarRating.stories.js +38 -38
  366. package/src/stories/Switch.stories.js +31 -31
  367. package/src/stories/Tab.stories.js +42 -42
  368. package/src/stories/Table.stories.js +145 -145
  369. package/src/stories/TabsExpanded.stories.js +68 -68
  370. package/src/stories/Tag.stories.js +46 -46
  371. package/src/stories/TextArea.stories.js +43 -43
  372. package/src/stories/TextEditor.stories.js +80 -80
  373. package/src/stories/ToolTip.stories.js +27 -27
  374. package/src/stories/UploadArea.stories.js +51 -51
  375. package/src/utils/call.js +25 -25
  376. package/src/utils/colorsList.js +38 -38
  377. package/src/utils/emojiList.js +47 -47
  378. package/src/utils/iconList.js +108 -108
  379. package/src/utils/icons.js +359 -359
  380. package/src/utils/plugins/i18n.js +26 -26
  381. package/vue.config.js +26 -26
@@ -1,357 +1,357 @@
1
- <template>
2
- <section v-if="value || isRecording || src" class="unnnic-audio-recorder">
3
- <unnnic-tool-tip v-if="isRecording || canDiscard" enabled text="Descartar" side="top">
4
- <span @click="discard" @keypress.enter="discard" class="delete-button unnnic--clickable">
5
- <unnnic-icon icon="delete-1-1" scheme="feedback-red" />
6
- </span>
7
- </unnnic-tool-tip>
8
- <audio-handler
9
- v-if="isRecording"
10
- :is-recording="isRecording"
11
- :time="numberToTimeString(duration)"
12
- @save="save"
13
- />
14
- <audio-player
15
- v-else
16
- :time="numberToTimeString(isIdle ? duration : currentTime)"
17
- :progress-bar-percentual-value="playedPercentual"
18
- :is-playing="isPlaying"
19
- :bars="playbackAudioBars ? bars : null"
20
- @pause="pause"
21
- @play="play"
22
- @progress-bar-update="progressBarUpdate"
23
- />
24
- </section>
25
- </template>
26
-
27
- <script>
28
- import AudioHandler from './AudioHandler.vue';
29
- import AudioPlayer from './AudioPlayer.vue';
30
- import UnnnicIcon from '../Icon.vue';
31
- import UnnnicToolTip from '../ToolTip/ToolTip.vue';
32
-
33
- const filterData = (audioBuffer) => {
34
- const rawData = audioBuffer.getChannelData(0); // We only need to work with one channel of data
35
- const samples = 22; // Number of samples we want to have in our final data set
36
- const blockSize = Math.floor(rawData.length / samples);
37
- // the number of samples in each subdivision
38
- const filteredData = [];
39
- for (let i = 0; i < samples; i += 1) {
40
- const blockStart = blockSize * i; // the location of the first sample in the block
41
- let sum = 0;
42
- for (let j = 0; j < blockSize; j += 1) {
43
- sum += Math.abs(rawData[blockStart + j]); // find the sum of all the samples in the block
44
- }
45
- filteredData.push(sum / blockSize); // divide the sum by the block size to get the average
46
- }
47
-
48
- return filteredData;
49
- };
50
-
51
- const normalizeData = (filteredData) => {
52
- // eslint-disable-next-line no-restricted-properties
53
- const multiplier = Math.pow(Math.max(...filteredData), -1);
54
- return filteredData.map((n) => n * multiplier);
55
- };
56
-
57
- export default {
58
- name: 'AudioRecorder',
59
-
60
- components: {
61
- AudioHandler,
62
- AudioPlayer,
63
- UnnnicIcon,
64
- UnnnicToolTip,
65
- },
66
-
67
- props: {
68
- value: {
69
- type: HTMLAudioElement,
70
- },
71
-
72
- src: {
73
- type: String,
74
- },
75
-
76
- canDiscard: {
77
- type: Boolean,
78
- default: true,
79
- },
80
-
81
- playbackAudioBars: {
82
- type: Boolean,
83
- default: false,
84
- },
85
- },
86
-
87
- data: () => ({
88
- /**
89
- * @type MediaRecorder
90
- */
91
- recorder: null,
92
- /**
93
- * @type HTMLAudioElement
94
- */
95
- audio: null,
96
- /**
97
- * @type MediaStream
98
- */
99
- stream: null,
100
- audioChunks: [],
101
- duration: 0,
102
- currentTime: 0,
103
- mockMilliseconds: 0,
104
- intervalMockMilliseconds: null,
105
- /**
106
- * @type {('idle'|'recording'|'recorded'|'playing'|'paused')}
107
- */
108
- status: 'idle',
109
-
110
- bars: [],
111
- }),
112
-
113
- computed: {
114
- isIdle() {
115
- return this.status === 'idle';
116
- },
117
- isPlaying() {
118
- return this.status === 'playing';
119
- },
120
- isRecording() {
121
- return this.status === 'recording';
122
- },
123
- isRecorded() {
124
- return this.status === 'recorded';
125
- },
126
- playedPercentual() {
127
- return (this.currentTime * 100) / this.duration;
128
- },
129
- },
130
-
131
- watch: {
132
- src: {
133
- immediate: true,
134
-
135
- async handler() {
136
- if (!this.src) {
137
- return;
138
- }
139
-
140
- this.audio = new Audio();
141
- this.audio.setAttribute('src', this.src);
142
-
143
- this.addAudioEventListeners();
144
-
145
- this.bars = await this.srcToBars(this.src);
146
- },
147
- },
148
- status(newValue) {
149
- this.$emit('status', newValue);
150
- },
151
- },
152
-
153
- methods: {
154
- // entry point; accessed by external components
155
- async record() {
156
- if (this.hasInUseRecordDevice()) return;
157
-
158
- this.discard();
159
-
160
- await this.getAudioRecordDevice();
161
- this.setupRecorderAndAudio();
162
- this.addListeners();
163
-
164
- this.startRecord();
165
- },
166
- hasInUseRecordDevice() {
167
- return !!this.recorder;
168
- },
169
- async getAudioRecordDevice() {
170
- this.stream = await navigator.mediaDevices.getUserMedia({ audio: true });
171
- this.recorder = new MediaRecorder(this.stream);
172
- },
173
- async setupRecorderAndAudio() {
174
- this.audio = new Audio();
175
- this.audioChunks = [];
176
- this.duration = 0;
177
- this.currentTime = 0;
178
- },
179
- addListeners() {
180
- this.recorder.addEventListener('dataavailable', (event) => {
181
- this.audioChunks.push(event.data);
182
- const blob = new Blob(this.audioChunks);
183
- const src = URL.createObjectURL(blob);
184
- this.audio.src = src;
185
- // necessary to have the audio duration correctly
186
- this.audio.currentTime = 1e100;
187
- });
188
-
189
- this.recorder.addEventListener('stop', () => {
190
- this.stream.getTracks().forEach((track) => {
191
- track.stop();
192
- });
193
- this.recorder = null;
194
- });
195
-
196
- this.addAudioEventListeners();
197
- },
198
-
199
- addAudioEventListeners() {
200
- const setDuration = () => {
201
- if (this.audio.duration === Infinity) {
202
- return;
203
- }
204
- this.audio.currentTime = 0;
205
- this.duration = this.audio.duration;
206
- };
207
-
208
- this.audio.addEventListener('loadeddata', setDuration);
209
- this.audio.addEventListener('durationchange', setDuration);
210
-
211
- this.audio.addEventListener('play', () => {
212
- this.status = 'playing';
213
- });
214
-
215
- this.audio.addEventListener('pause', () => {
216
- this.status = 'paused';
217
- });
218
-
219
- this.audio.addEventListener('timeupdate', () => {
220
- if (this.status !== 'playing') return;
221
-
222
- this.currentTime = this.audio.currentTime;
223
- });
224
-
225
- this.audio.addEventListener('ended', () => {
226
- this.currentTime = 0;
227
- this.status = 'recorded';
228
- });
229
- },
230
-
231
- startMockMilliseconds() {
232
- this.intervalMockMilliseconds = setInterval(() => {
233
- this.mockMilliseconds += 1;
234
-
235
- if (this.mockMilliseconds >= 100) {
236
- this.mockMilliseconds = 0;
237
- }
238
- }, 10); // 0.01 second
239
- },
240
- stopMockMilliseconds() {
241
- clearInterval(this.intervalMockMilliseconds);
242
- },
243
-
244
- startRecord() {
245
- this.status = 'recording';
246
- const recordTimeSliceInMilliseconds = 500;
247
- this.recorder.start(recordTimeSliceInMilliseconds);
248
-
249
- this.startMockMilliseconds();
250
- },
251
- discard() {
252
- if (this.audio) {
253
- this.stop();
254
- }
255
-
256
- this.$emit('input', null);
257
-
258
- this.status = 'idle';
259
- },
260
- save() {
261
- this.stop();
262
- this.status = 'recorded';
263
-
264
- this.stopMockMilliseconds();
265
- },
266
- pause() {
267
- this.audio.pause();
268
- },
269
- async stop() {
270
- this.status = 'recorded';
271
- this.pause();
272
-
273
- if (this.hasInUseRecordDevice()) {
274
- this.recorder.stop();
275
- }
276
-
277
- this.$emit('input', this.audio);
278
-
279
- this.stopMockMilliseconds();
280
- this.bars = await this.srcToBars(this.audio.src);
281
- },
282
-
283
- play() {
284
- this.audio.play();
285
- },
286
-
287
- progressBarUpdate(event) {
288
- if (this.audio) {
289
- const { audio } = this;
290
- audio.currentTime = (event.target.value * audio.duration) / 100;
291
- }
292
- },
293
-
294
- async srcToBars(src) {
295
- window.AudioContext = window.AudioContext || window.webkitAudioContext;
296
- const audioContext = new AudioContext();
297
-
298
- const response = await fetch(src);
299
- const arrayBuffer = await response.arrayBuffer();
300
- const audioBuffer = await audioContext.decodeAudioData(arrayBuffer);
301
-
302
- return normalizeData(filterData(audioBuffer));
303
- },
304
-
305
- numberToTimeString(time) {
306
- const { isRecording } = this;
307
-
308
- function formatNumber(number, decimals = 2) {
309
- return number.toString().padStart(decimals, '0');
310
- }
311
-
312
- const minutes = formatNumber(Math.floor(time / 60), isRecording ? 2 : 1);
313
- const seconds = formatNumber(Math.round(time % 60));
314
- const millisecondsFormatted = formatNumber(this.mockMilliseconds);
315
-
316
- return `${minutes}:${seconds}${isRecording ? `:${millisecondsFormatted}` : ''}`;
317
- },
318
- },
319
- };
320
- </script>
321
-
322
- <style lang="scss" scoped>
323
- @import "../../assets/scss/unnnic.scss";
324
-
325
- .unnnic-audio-recorder {
326
- display: inline-flex;
327
- align-items: center;
328
- border-radius: $unnnic-border-radius-sm;
329
- position: relative;
330
-
331
- &__progress-bar {
332
- width: 11.5 * $unnnic-font-size;
333
- height: 2px;
334
- border-radius: $unnnic-border-radius-sm;
335
- background: $unnnic-color-neutral-clean;
336
-
337
- &__bar {
338
- background: $unnnic-color-neutral-darkest;
339
- height: 100%;
340
- width: 0%; // updated programmatically
341
- }
342
- }
343
-
344
- ::v-deep .audio-player__time, ::v-deep .audio-handler__time {
345
- font-family: $unnnic-font-family-secondary;
346
- font-weight: $unnnic-font-weight-regular;
347
- font-size: $unnnic-font-size-body-md;
348
- line-height: $unnnic-font-size-body-md + $unnnic-line-height-md;
349
- color: $unnnic-color-neutral-darkest;
350
- user-select: none;
351
- }
352
-
353
- .delete-button {
354
- margin-right: $unnnic-spacing-inline-xs;
355
- }
356
- }
357
- </style>
1
+ <template>
2
+ <section v-if="value || isRecording || src" class="unnnic-audio-recorder">
3
+ <unnnic-tool-tip v-if="isRecording || canDiscard" enabled text="Descartar" side="top">
4
+ <span @click="discard" @keypress.enter="discard" class="delete-button unnnic--clickable">
5
+ <unnnic-icon icon="delete-1-1" scheme="feedback-red" />
6
+ </span>
7
+ </unnnic-tool-tip>
8
+ <audio-handler
9
+ v-if="isRecording"
10
+ :is-recording="isRecording"
11
+ :time="numberToTimeString(duration)"
12
+ @save="save"
13
+ />
14
+ <audio-player
15
+ v-else
16
+ :time="numberToTimeString(isIdle ? duration : currentTime)"
17
+ :progress-bar-percentual-value="playedPercentual"
18
+ :is-playing="isPlaying"
19
+ :bars="playbackAudioBars ? bars : null"
20
+ @pause="pause"
21
+ @play="play"
22
+ @progress-bar-update="progressBarUpdate"
23
+ />
24
+ </section>
25
+ </template>
26
+
27
+ <script>
28
+ import AudioHandler from './AudioHandler.vue';
29
+ import AudioPlayer from './AudioPlayer.vue';
30
+ import UnnnicIcon from '../Icon.vue';
31
+ import UnnnicToolTip from '../ToolTip/ToolTip.vue';
32
+
33
+ const filterData = (audioBuffer) => {
34
+ const rawData = audioBuffer.getChannelData(0); // We only need to work with one channel of data
35
+ const samples = 22; // Number of samples we want to have in our final data set
36
+ const blockSize = Math.floor(rawData.length / samples);
37
+ // the number of samples in each subdivision
38
+ const filteredData = [];
39
+ for (let i = 0; i < samples; i += 1) {
40
+ const blockStart = blockSize * i; // the location of the first sample in the block
41
+ let sum = 0;
42
+ for (let j = 0; j < blockSize; j += 1) {
43
+ sum += Math.abs(rawData[blockStart + j]); // find the sum of all the samples in the block
44
+ }
45
+ filteredData.push(sum / blockSize); // divide the sum by the block size to get the average
46
+ }
47
+
48
+ return filteredData;
49
+ };
50
+
51
+ const normalizeData = (filteredData) => {
52
+ // eslint-disable-next-line no-restricted-properties
53
+ const multiplier = Math.pow(Math.max(...filteredData), -1);
54
+ return filteredData.map((n) => n * multiplier);
55
+ };
56
+
57
+ export default {
58
+ name: 'AudioRecorder',
59
+
60
+ components: {
61
+ AudioHandler,
62
+ AudioPlayer,
63
+ UnnnicIcon,
64
+ UnnnicToolTip,
65
+ },
66
+
67
+ props: {
68
+ value: {
69
+ type: HTMLAudioElement,
70
+ },
71
+
72
+ src: {
73
+ type: String,
74
+ },
75
+
76
+ canDiscard: {
77
+ type: Boolean,
78
+ default: true,
79
+ },
80
+
81
+ playbackAudioBars: {
82
+ type: Boolean,
83
+ default: false,
84
+ },
85
+ },
86
+
87
+ data: () => ({
88
+ /**
89
+ * @type MediaRecorder
90
+ */
91
+ recorder: null,
92
+ /**
93
+ * @type HTMLAudioElement
94
+ */
95
+ audio: null,
96
+ /**
97
+ * @type MediaStream
98
+ */
99
+ stream: null,
100
+ audioChunks: [],
101
+ duration: 0,
102
+ currentTime: 0,
103
+ mockMilliseconds: 0,
104
+ intervalMockMilliseconds: null,
105
+ /**
106
+ * @type {('idle'|'recording'|'recorded'|'playing'|'paused')}
107
+ */
108
+ status: 'idle',
109
+
110
+ bars: [],
111
+ }),
112
+
113
+ computed: {
114
+ isIdle() {
115
+ return this.status === 'idle';
116
+ },
117
+ isPlaying() {
118
+ return this.status === 'playing';
119
+ },
120
+ isRecording() {
121
+ return this.status === 'recording';
122
+ },
123
+ isRecorded() {
124
+ return this.status === 'recorded';
125
+ },
126
+ playedPercentual() {
127
+ return (this.currentTime * 100) / this.duration;
128
+ },
129
+ },
130
+
131
+ watch: {
132
+ src: {
133
+ immediate: true,
134
+
135
+ async handler() {
136
+ if (!this.src) {
137
+ return;
138
+ }
139
+
140
+ this.audio = new Audio();
141
+ this.audio.setAttribute('src', this.src);
142
+
143
+ this.addAudioEventListeners();
144
+
145
+ this.bars = await this.srcToBars(this.src);
146
+ },
147
+ },
148
+ status(newValue) {
149
+ this.$emit('status', newValue);
150
+ },
151
+ },
152
+
153
+ methods: {
154
+ // entry point; accessed by external components
155
+ async record() {
156
+ if (this.hasInUseRecordDevice()) return;
157
+
158
+ this.discard();
159
+
160
+ await this.getAudioRecordDevice();
161
+ this.setupRecorderAndAudio();
162
+ this.addListeners();
163
+
164
+ this.startRecord();
165
+ },
166
+ hasInUseRecordDevice() {
167
+ return !!this.recorder;
168
+ },
169
+ async getAudioRecordDevice() {
170
+ this.stream = await navigator.mediaDevices.getUserMedia({ audio: true });
171
+ this.recorder = new MediaRecorder(this.stream);
172
+ },
173
+ async setupRecorderAndAudio() {
174
+ this.audio = new Audio();
175
+ this.audioChunks = [];
176
+ this.duration = 0;
177
+ this.currentTime = 0;
178
+ },
179
+ addListeners() {
180
+ this.recorder.addEventListener('dataavailable', (event) => {
181
+ this.audioChunks.push(event.data);
182
+ const blob = new Blob(this.audioChunks);
183
+ const src = URL.createObjectURL(blob);
184
+ this.audio.src = src;
185
+ // necessary to have the audio duration correctly
186
+ this.audio.currentTime = 1e100;
187
+ });
188
+
189
+ this.recorder.addEventListener('stop', () => {
190
+ this.stream.getTracks().forEach((track) => {
191
+ track.stop();
192
+ });
193
+ this.recorder = null;
194
+ });
195
+
196
+ this.addAudioEventListeners();
197
+ },
198
+
199
+ addAudioEventListeners() {
200
+ const setDuration = () => {
201
+ if (this.audio.duration === Infinity) {
202
+ return;
203
+ }
204
+ this.audio.currentTime = 0;
205
+ this.duration = this.audio.duration;
206
+ };
207
+
208
+ this.audio.addEventListener('loadeddata', setDuration);
209
+ this.audio.addEventListener('durationchange', setDuration);
210
+
211
+ this.audio.addEventListener('play', () => {
212
+ this.status = 'playing';
213
+ });
214
+
215
+ this.audio.addEventListener('pause', () => {
216
+ this.status = 'paused';
217
+ });
218
+
219
+ this.audio.addEventListener('timeupdate', () => {
220
+ if (this.status !== 'playing') return;
221
+
222
+ this.currentTime = this.audio.currentTime;
223
+ });
224
+
225
+ this.audio.addEventListener('ended', () => {
226
+ this.currentTime = 0;
227
+ this.status = 'recorded';
228
+ });
229
+ },
230
+
231
+ startMockMilliseconds() {
232
+ this.intervalMockMilliseconds = setInterval(() => {
233
+ this.mockMilliseconds += 1;
234
+
235
+ if (this.mockMilliseconds >= 100) {
236
+ this.mockMilliseconds = 0;
237
+ }
238
+ }, 10); // 0.01 second
239
+ },
240
+ stopMockMilliseconds() {
241
+ clearInterval(this.intervalMockMilliseconds);
242
+ },
243
+
244
+ startRecord() {
245
+ this.status = 'recording';
246
+ const recordTimeSliceInMilliseconds = 500;
247
+ this.recorder.start(recordTimeSliceInMilliseconds);
248
+
249
+ this.startMockMilliseconds();
250
+ },
251
+ discard() {
252
+ if (this.audio) {
253
+ this.stop();
254
+ }
255
+
256
+ this.$emit('input', null);
257
+
258
+ this.status = 'idle';
259
+ },
260
+ save() {
261
+ this.stop();
262
+ this.status = 'recorded';
263
+
264
+ this.stopMockMilliseconds();
265
+ },
266
+ pause() {
267
+ this.audio.pause();
268
+ },
269
+ async stop() {
270
+ this.status = 'recorded';
271
+ this.pause();
272
+
273
+ if (this.hasInUseRecordDevice()) {
274
+ this.recorder.stop();
275
+ }
276
+
277
+ this.$emit('input', this.audio);
278
+
279
+ this.stopMockMilliseconds();
280
+ this.bars = await this.srcToBars(this.audio.src);
281
+ },
282
+
283
+ play() {
284
+ this.audio.play();
285
+ },
286
+
287
+ progressBarUpdate(event) {
288
+ if (this.audio) {
289
+ const { audio } = this;
290
+ audio.currentTime = (event.target.value * audio.duration) / 100;
291
+ }
292
+ },
293
+
294
+ async srcToBars(src) {
295
+ window.AudioContext = window.AudioContext || window.webkitAudioContext;
296
+ const audioContext = new AudioContext();
297
+
298
+ const response = await fetch(src);
299
+ const arrayBuffer = await response.arrayBuffer();
300
+ const audioBuffer = await audioContext.decodeAudioData(arrayBuffer);
301
+
302
+ return normalizeData(filterData(audioBuffer));
303
+ },
304
+
305
+ numberToTimeString(time) {
306
+ const { isRecording } = this;
307
+
308
+ function formatNumber(number, decimals = 2) {
309
+ return number.toString().padStart(decimals, '0');
310
+ }
311
+
312
+ const minutes = formatNumber(Math.floor(time / 60), isRecording ? 2 : 1);
313
+ const seconds = formatNumber(Math.round(time % 60));
314
+ const millisecondsFormatted = formatNumber(this.mockMilliseconds);
315
+
316
+ return `${minutes}:${seconds}${isRecording ? `:${millisecondsFormatted}` : ''}`;
317
+ },
318
+ },
319
+ };
320
+ </script>
321
+
322
+ <style lang="scss" scoped>
323
+ @import "../../assets/scss/unnnic.scss";
324
+
325
+ .unnnic-audio-recorder {
326
+ display: inline-flex;
327
+ align-items: center;
328
+ border-radius: $unnnic-border-radius-sm;
329
+ position: relative;
330
+
331
+ &__progress-bar {
332
+ width: 11.5 * $unnnic-font-size;
333
+ height: 2px;
334
+ border-radius: $unnnic-border-radius-sm;
335
+ background: $unnnic-color-neutral-clean;
336
+
337
+ &__bar {
338
+ background: $unnnic-color-neutral-darkest;
339
+ height: 100%;
340
+ width: 0%; // updated programmatically
341
+ }
342
+ }
343
+
344
+ ::v-deep .audio-player__time, ::v-deep .audio-handler__time {
345
+ font-family: $unnnic-font-family-secondary;
346
+ font-weight: $unnnic-font-weight-regular;
347
+ font-size: $unnnic-font-size-body-md;
348
+ line-height: $unnnic-font-size-body-md + $unnnic-line-height-md;
349
+ color: $unnnic-color-neutral-darkest;
350
+ user-select: none;
351
+ }
352
+
353
+ .delete-button {
354
+ margin-right: $unnnic-spacing-inline-xs;
355
+ }
356
+ }
357
+ </style>