@dialpad/dialtone 9.73.0-beta.1 → 9.73.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 (657) hide show
  1. package/dist/css/dialtone-default-theme.css +14545 -13955
  2. package/dist/css/dialtone-default-theme.min.css +1 -1
  3. package/dist/css/dialtone.css +263 -24
  4. package/dist/css/dialtone.min.css +1 -1
  5. package/dist/css/tokens/tokens-base-dark.css +898 -895
  6. package/dist/css/tokens/tokens-base-light.css +673 -670
  7. package/dist/css/tokens/tokens-dp-dark.css +1831 -1831
  8. package/dist/css/tokens/tokens-dp-light.css +1832 -1832
  9. package/dist/css/tokens/tokens-expressive-dark.css +1793 -1793
  10. package/dist/css/tokens/tokens-expressive-light.css +1793 -1793
  11. package/dist/css/tokens/tokens-expressive-sm-dark.css +1793 -1793
  12. package/dist/css/tokens/tokens-expressive-sm-light.css +1793 -1793
  13. package/dist/css/tokens/tokens-tmo-dark.css +1787 -1787
  14. package/dist/css/tokens/tokens-tmo-light.css +1787 -1787
  15. package/dist/tokens/css/tokens-base-dark.css +898 -895
  16. package/dist/tokens/css/tokens-base-light.css +673 -670
  17. package/dist/tokens/css/tokens-dp-dark.css +1831 -1831
  18. package/dist/tokens/css/tokens-dp-light.css +1832 -1832
  19. package/dist/tokens/css/tokens-expressive-dark.css +1793 -1793
  20. package/dist/tokens/css/tokens-expressive-light.css +1793 -1793
  21. package/dist/tokens/css/tokens-expressive-sm-dark.css +1793 -1793
  22. package/dist/tokens/css/tokens-expressive-sm-light.css +1793 -1793
  23. package/dist/tokens/css/tokens-tmo-dark.css +1787 -1787
  24. package/dist/tokens/css/tokens-tmo-light.css +1787 -1787
  25. package/dist/tokens/doc.json +44630 -44458
  26. package/dist/tokens/less/tokens-base-dark.less +20 -17
  27. package/dist/tokens/less/tokens-base-light.less +20 -17
  28. package/dist/tokens/less/tokens-dp-dark.less +59 -59
  29. package/dist/tokens/less/tokens-dp-light.less +59 -59
  30. package/dist/tokens/less/tokens-expressive-dark.less +55 -55
  31. package/dist/tokens/less/tokens-expressive-light.less +55 -55
  32. package/dist/tokens/less/tokens-expressive-sm-dark.less +55 -55
  33. package/dist/tokens/less/tokens-expressive-sm-light.less +55 -55
  34. package/dist/tokens/less/tokens-tmo-dark.less +49 -49
  35. package/dist/tokens/less/tokens-tmo-light.less +49 -49
  36. package/dist/tokens/themes/chunks/tokens-base-dark-D3v4_NMT.js +4 -0
  37. package/dist/tokens/themes/chunks/tokens-base-dark-SlAAMLw5.js +1 -0
  38. package/dist/tokens/themes/chunks/tokens-base-light-BUcyLIIS.js +4 -0
  39. package/dist/tokens/themes/chunks/tokens-base-light-Dx0sRL2j.js +1 -0
  40. package/dist/tokens/themes/dp-dark.cjs +1 -1
  41. package/dist/tokens/themes/dp-dark.js +4 -4
  42. package/dist/tokens/themes/dp-light.cjs +1 -1
  43. package/dist/tokens/themes/dp-light.js +4 -4
  44. package/dist/tokens/themes/expressive-dark.cjs +1 -1
  45. package/dist/tokens/themes/expressive-dark.js +2 -2
  46. package/dist/tokens/themes/expressive-light.cjs +1 -1
  47. package/dist/tokens/themes/expressive-light.js +4 -4
  48. package/dist/tokens/themes/expressive-sm-dark.cjs +1 -1
  49. package/dist/tokens/themes/expressive-sm-dark.js +2 -2
  50. package/dist/tokens/themes/expressive-sm-light.cjs +1 -1
  51. package/dist/tokens/themes/expressive-sm-light.js +4 -4
  52. package/dist/tokens/themes/tmo-dark.cjs +1 -1
  53. package/dist/tokens/themes/tmo-dark.js +4 -4
  54. package/dist/tokens/themes/tmo-light.cjs +1 -1
  55. package/dist/tokens/themes/tmo-light.js +4 -4
  56. package/dist/tokens/tokens-base-dark.json +20 -17
  57. package/dist/tokens/tokens-base-light.json +20 -17
  58. package/dist/tokens/tokens-dp-dark.json +59 -59
  59. package/dist/tokens/tokens-dp-light.json +59 -59
  60. package/dist/tokens/tokens-expressive-dark.json +55 -55
  61. package/dist/tokens/tokens-expressive-light.json +55 -55
  62. package/dist/tokens/tokens-expressive-sm-dark.json +55 -55
  63. package/dist/tokens/tokens-expressive-sm-light.json +55 -55
  64. package/dist/tokens/tokens-tmo-dark.json +49 -49
  65. package/dist/tokens/tokens-tmo-light.json +49 -49
  66. package/dist/vue2/common/sr_only_close_button.vue.cjs +3 -3
  67. package/dist/vue2/common/sr_only_close_button.vue.cjs.map +1 -1
  68. package/dist/vue2/common/sr_only_close_button.vue.js +3 -3
  69. package/dist/vue2/common/sr_only_close_button.vue.js.map +1 -1
  70. package/dist/vue2/component-documentation.json +1 -1
  71. package/dist/vue2/components/badge/badge.vue.cjs +34 -13
  72. package/dist/vue2/components/badge/badge.vue.cjs.map +1 -1
  73. package/dist/vue2/components/badge/badge.vue.js +34 -13
  74. package/dist/vue2/components/badge/badge.vue.js.map +1 -1
  75. package/dist/vue2/components/chip/chip.vue.cjs +4 -4
  76. package/dist/vue2/components/chip/chip.vue.cjs.map +1 -1
  77. package/dist/vue2/components/chip/chip.vue.js +4 -4
  78. package/dist/vue2/components/chip/chip.vue.js.map +1 -1
  79. package/dist/vue2/components/collapsible/collapsible.vue.cjs +3 -4
  80. package/dist/vue2/components/collapsible/collapsible.vue.cjs.map +1 -1
  81. package/dist/vue2/components/collapsible/collapsible.vue.js +3 -4
  82. package/dist/vue2/components/collapsible/collapsible.vue.js.map +1 -1
  83. package/dist/vue2/components/datepicker/modules/month-year-picker.vue.cjs +6 -14
  84. package/dist/vue2/components/datepicker/modules/month-year-picker.vue.cjs.map +1 -1
  85. package/dist/vue2/components/datepicker/modules/month-year-picker.vue.js +6 -14
  86. package/dist/vue2/components/datepicker/modules/month-year-picker.vue.js.map +1 -1
  87. package/dist/vue2/components/emoji_picker/modules/emoji_search.vue.cjs +5 -6
  88. package/dist/vue2/components/emoji_picker/modules/emoji_search.vue.cjs.map +1 -1
  89. package/dist/vue2/components/emoji_picker/modules/emoji_search.vue.js +5 -6
  90. package/dist/vue2/components/emoji_picker/modules/emoji_search.vue.js.map +1 -1
  91. package/dist/vue2/components/emoji_picker/modules/emoji_tabset.vue.cjs +14 -23
  92. package/dist/vue2/components/emoji_picker/modules/emoji_tabset.vue.cjs.map +1 -1
  93. package/dist/vue2/components/emoji_picker/modules/emoji_tabset.vue.js +14 -23
  94. package/dist/vue2/components/emoji_picker/modules/emoji_tabset.vue.js.map +1 -1
  95. package/dist/vue2/components/empty_state/empty_state.vue.cjs +80 -20
  96. package/dist/vue2/components/empty_state/empty_state.vue.cjs.map +1 -1
  97. package/dist/vue2/components/empty_state/empty_state.vue.js +81 -21
  98. package/dist/vue2/components/empty_state/empty_state.vue.js.map +1 -1
  99. package/dist/vue2/components/empty_state/empty_state_constants.cjs +0 -18
  100. package/dist/vue2/components/empty_state/empty_state_constants.cjs.map +1 -1
  101. package/dist/vue2/components/empty_state/empty_state_constants.js +0 -18
  102. package/dist/vue2/components/empty_state/empty_state_constants.js.map +1 -1
  103. package/dist/vue2/components/illustration/illustration.vue.cjs +2 -2
  104. package/dist/vue2/components/illustration/illustration.vue.js +2 -2
  105. package/dist/vue2/components/image_viewer/image_viewer.vue.cjs +4 -4
  106. package/dist/vue2/components/image_viewer/image_viewer.vue.cjs.map +1 -1
  107. package/dist/vue2/components/image_viewer/image_viewer.vue.js +4 -4
  108. package/dist/vue2/components/image_viewer/image_viewer.vue.js.map +1 -1
  109. package/dist/vue2/components/keyboard_shortcut/keyboard_shortcut.vue.cjs +9 -24
  110. package/dist/vue2/components/keyboard_shortcut/keyboard_shortcut.vue.cjs.map +1 -1
  111. package/dist/vue2/components/keyboard_shortcut/keyboard_shortcut.vue.js +7 -22
  112. package/dist/vue2/components/keyboard_shortcut/keyboard_shortcut.vue.js.map +1 -1
  113. package/dist/vue2/components/keyboard_shortcut/keyboard_shortcut_constants.cjs +14 -8
  114. package/dist/vue2/components/keyboard_shortcut/keyboard_shortcut_constants.cjs.map +1 -1
  115. package/dist/vue2/components/keyboard_shortcut/keyboard_shortcut_constants.js +15 -9
  116. package/dist/vue2/components/keyboard_shortcut/keyboard_shortcut_constants.js.map +1 -1
  117. package/dist/vue2/components/list_item/list_item.vue.cjs +3 -3
  118. package/dist/vue2/components/list_item/list_item.vue.cjs.map +1 -1
  119. package/dist/vue2/components/list_item/list_item.vue.js +3 -3
  120. package/dist/vue2/components/list_item/list_item.vue.js.map +1 -1
  121. package/dist/vue2/components/modal/modal.vue.cjs +4 -4
  122. package/dist/vue2/components/modal/modal.vue.cjs.map +1 -1
  123. package/dist/vue2/components/modal/modal.vue.js +4 -4
  124. package/dist/vue2/components/modal/modal.vue.js.map +1 -1
  125. package/dist/vue2/components/notice/notice_action.vue.cjs +4 -4
  126. package/dist/vue2/components/notice/notice_action.vue.cjs.map +1 -1
  127. package/dist/vue2/components/notice/notice_action.vue.js +4 -4
  128. package/dist/vue2/components/notice/notice_action.vue.js.map +1 -1
  129. package/dist/vue2/components/notice/notice_icon.vue.cjs +8 -12
  130. package/dist/vue2/components/notice/notice_icon.vue.cjs.map +1 -1
  131. package/dist/vue2/components/notice/notice_icon.vue.js +8 -12
  132. package/dist/vue2/components/notice/notice_icon.vue.js.map +1 -1
  133. package/dist/vue2/components/pagination/pagination.vue.cjs +5 -11
  134. package/dist/vue2/components/pagination/pagination.vue.cjs.map +1 -1
  135. package/dist/vue2/components/pagination/pagination.vue.js +5 -11
  136. package/dist/vue2/components/pagination/pagination.vue.js.map +1 -1
  137. package/dist/vue2/components/popover/popover_header_footer.vue.cjs +4 -4
  138. package/dist/vue2/components/popover/popover_header_footer.vue.cjs.map +1 -1
  139. package/dist/vue2/components/popover/popover_header_footer.vue.js +4 -4
  140. package/dist/vue2/components/popover/popover_header_footer.vue.js.map +1 -1
  141. package/dist/vue2/dialtone-vue.cjs +3 -0
  142. package/dist/vue2/dialtone-vue.cjs.map +1 -1
  143. package/dist/vue2/dialtone-vue.js +5 -2
  144. package/dist/vue2/directives/scrollbar/scrollbar.cjs.map +1 -1
  145. package/dist/vue2/directives/scrollbar/scrollbar.js.map +1 -1
  146. package/dist/vue2/lib/general-row.cjs +1 -0
  147. package/dist/vue2/lib/general-row.cjs.map +1 -1
  148. package/dist/vue2/lib/general-row.js +2 -1
  149. package/dist/vue2/lib/keyboard-shortcut.cjs +2 -0
  150. package/dist/vue2/lib/keyboard-shortcut.cjs.map +1 -1
  151. package/dist/vue2/lib/keyboard-shortcut.js +4 -2
  152. package/dist/vue2/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.cjs +5 -5
  153. package/dist/vue2/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.cjs.map +1 -1
  154. package/dist/vue2/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.js +5 -5
  155. package/dist/vue2/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.js.map +1 -1
  156. package/dist/vue2/recipes/cards/ivr_node/ivr_node.vue.cjs +5 -25
  157. package/dist/vue2/recipes/cards/ivr_node/ivr_node.vue.cjs.map +1 -1
  158. package/dist/vue2/recipes/cards/ivr_node/ivr_node.vue.js +6 -26
  159. package/dist/vue2/recipes/cards/ivr_node/ivr_node.vue.js.map +1 -1
  160. package/dist/vue2/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.cjs +19 -6
  161. package/dist/vue2/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.cjs.map +1 -1
  162. package/dist/vue2/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.js +19 -6
  163. package/dist/vue2/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.js.map +1 -1
  164. package/dist/vue2/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.cjs +4 -5
  165. package/dist/vue2/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.cjs.map +1 -1
  166. package/dist/vue2/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.js +4 -5
  167. package/dist/vue2/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.js.map +1 -1
  168. package/dist/vue2/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.cjs +3 -3
  169. package/dist/vue2/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.cjs.map +1 -1
  170. package/dist/vue2/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.js +3 -3
  171. package/dist/vue2/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.js.map +1 -1
  172. package/dist/vue2/recipes/conversation_view/editor/editor.vue.cjs +22 -35
  173. package/dist/vue2/recipes/conversation_view/editor/editor.vue.cjs.map +1 -1
  174. package/dist/vue2/recipes/conversation_view/editor/editor.vue.js +22 -35
  175. package/dist/vue2/recipes/conversation_view/editor/editor.vue.js.map +1 -1
  176. package/dist/vue2/recipes/conversation_view/message_input/meeting_pill/MeetingPill.vue.cjs +3 -3
  177. package/dist/vue2/recipes/conversation_view/message_input/meeting_pill/MeetingPill.vue.cjs.map +1 -1
  178. package/dist/vue2/recipes/conversation_view/message_input/meeting_pill/MeetingPill.vue.js +3 -3
  179. package/dist/vue2/recipes/conversation_view/message_input/meeting_pill/MeetingPill.vue.js.map +1 -1
  180. package/dist/vue2/recipes/header/settings_menu_button/settings_menu_button.vue.cjs +6 -6
  181. package/dist/vue2/recipes/header/settings_menu_button/settings_menu_button.vue.cjs.map +1 -1
  182. package/dist/vue2/recipes/header/settings_menu_button/settings_menu_button.vue.js +6 -6
  183. package/dist/vue2/recipes/header/settings_menu_button/settings_menu_button.vue.js.map +1 -1
  184. package/dist/vue2/recipes/leftbar/general_row/general_row.vue.cjs +7 -8
  185. package/dist/vue2/recipes/leftbar/general_row/general_row.vue.cjs.map +1 -1
  186. package/dist/vue2/recipes/leftbar/general_row/general_row.vue.js +7 -8
  187. package/dist/vue2/recipes/leftbar/general_row/general_row.vue.js.map +1 -1
  188. package/dist/vue2/recipes/leftbar/general_row/general_row_constants.cjs +17 -0
  189. package/dist/vue2/recipes/leftbar/general_row/general_row_constants.cjs.map +1 -1
  190. package/dist/vue2/recipes/leftbar/general_row/general_row_constants.js +17 -0
  191. package/dist/vue2/recipes/leftbar/general_row/general_row_constants.js.map +1 -1
  192. package/dist/vue2/recipes/leftbar/general_row/leftbar_general_row_icon.vue.cjs +4 -36
  193. package/dist/vue2/recipes/leftbar/general_row/leftbar_general_row_icon.vue.cjs.map +1 -1
  194. package/dist/vue2/recipes/leftbar/general_row/leftbar_general_row_icon.vue.js +5 -37
  195. package/dist/vue2/recipes/leftbar/general_row/leftbar_general_row_icon.vue.js.map +1 -1
  196. package/dist/vue2/recipes/leftbar/group_row/group_row.vue.cjs +3 -3
  197. package/dist/vue2/recipes/leftbar/group_row/group_row.vue.cjs.map +1 -1
  198. package/dist/vue2/recipes/leftbar/group_row/group_row.vue.js +3 -3
  199. package/dist/vue2/recipes/leftbar/group_row/group_row.vue.js.map +1 -1
  200. package/dist/vue2/recipes/leftbar/unread_pill/unread_pill.vue.cjs +3 -4
  201. package/dist/vue2/recipes/leftbar/unread_pill/unread_pill.vue.cjs.map +1 -1
  202. package/dist/vue2/recipes/leftbar/unread_pill/unread_pill.vue.js +3 -4
  203. package/dist/vue2/recipes/leftbar/unread_pill/unread_pill.vue.js.map +1 -1
  204. package/dist/vue2/style.css +70 -70
  205. package/dist/vue2/types/common/sr_only_close_button.vue.d.ts +1 -1
  206. package/dist/vue2/types/components/avatar/avatar.vue.d.ts +1 -1
  207. package/dist/vue2/types/components/badge/badge.vue.d.ts +46 -17
  208. package/dist/vue2/types/components/badge/badge.vue.d.ts.map +1 -1
  209. package/dist/vue2/types/components/banner/banner.vue.d.ts +1 -1
  210. package/dist/vue2/types/components/breadcrumbs/breadcrumb_item.vue.d.ts +1 -1
  211. package/dist/vue2/types/components/breadcrumbs/breadcrumbs.vue.d.ts +1 -1
  212. package/dist/vue2/types/components/button/button.vue.d.ts +1 -1
  213. package/dist/vue2/types/components/button_group/button_group.vue.d.ts +1 -1
  214. package/dist/vue2/types/components/button_group/buttons_decorator.vue.d.ts +1 -1
  215. package/dist/vue2/types/components/card/card.vue.d.ts +1 -1
  216. package/dist/vue2/types/components/checkbox/checkbox.vue.d.ts +1 -1
  217. package/dist/vue2/types/components/checkbox_group/checkbox_group.vue.d.ts +3 -3
  218. package/dist/vue2/types/components/checkbox_group/checkboxes_decorator.vue.d.ts +1 -1
  219. package/dist/vue2/types/components/chip/chip.vue.d.ts +1 -1
  220. package/dist/vue2/types/components/codeblock/codeblock.vue.d.ts +1 -1
  221. package/dist/vue2/types/components/collapsible/collapsible.vue.d.ts +1 -1
  222. package/dist/vue2/types/components/collapsible/collapsible.vue.d.ts.map +1 -1
  223. package/dist/vue2/types/components/collapsible/collapsible_lazy_show.vue.d.ts +1 -1
  224. package/dist/vue2/types/components/combobox/combobox.vue.d.ts +1 -1
  225. package/dist/vue2/types/components/combobox/combobox_empty-list.vue.d.ts +1 -1
  226. package/dist/vue2/types/components/combobox/combobox_loading-list.vue.d.ts +1 -1
  227. package/dist/vue2/types/components/datepicker/datepicker.vue.d.ts +1 -1
  228. package/dist/vue2/types/components/datepicker/modules/calendar.vue.d.ts +1 -1
  229. package/dist/vue2/types/components/datepicker/modules/month-year-picker.vue.d.ts +1 -1
  230. package/dist/vue2/types/components/description_list/description_list.vue.d.ts +1 -1
  231. package/dist/vue2/types/components/dropdown/dropdown.vue.d.ts +2 -2
  232. package/dist/vue2/types/components/dropdown/dropdown_list.vue.d.ts +1 -1
  233. package/dist/vue2/types/components/dropdown/dropdown_separator.vue.d.ts +1 -1
  234. package/dist/vue2/types/components/emoji/emoji.vue.d.ts +1 -1
  235. package/dist/vue2/types/components/emoji_picker/emoji_picker.vue.d.ts +1 -1
  236. package/dist/vue2/types/components/emoji_picker/modules/emoji_description.vue.d.ts +1 -1
  237. package/dist/vue2/types/components/emoji_picker/modules/emoji_search.vue.d.ts +1 -1
  238. package/dist/vue2/types/components/emoji_picker/modules/emoji_selector.vue.d.ts +1 -1
  239. package/dist/vue2/types/components/emoji_picker/modules/emoji_skin_selector.vue.d.ts +1 -1
  240. package/dist/vue2/types/components/emoji_picker/modules/emoji_tabset.vue.d.ts +67 -1
  241. package/dist/vue2/types/components/emoji_text_wrapper/emoji_text_wrapper.vue.d.ts +1 -1
  242. package/dist/vue2/types/components/empty_state/empty_state.vue.d.ts +1 -1
  243. package/dist/vue2/types/components/empty_state/empty_state_constants.d.ts +0 -27
  244. package/dist/vue2/types/components/hovercard/hovercard.vue.d.ts +1 -1
  245. package/dist/vue2/types/components/icon/icon.vue.d.ts +1 -1
  246. package/dist/vue2/types/components/illustration/illustration.vue.d.ts +1 -1
  247. package/dist/vue2/types/components/image_viewer/image_viewer.vue.d.ts +1 -1
  248. package/dist/vue2/types/components/input/input.vue.d.ts +1 -1
  249. package/dist/vue2/types/components/input_group/decorators/input.vue.d.ts +1 -1
  250. package/dist/vue2/types/components/input_group/decorators/inputs.vue.d.ts +1 -1
  251. package/dist/vue2/types/components/input_group/input_group.vue.d.ts +2 -2
  252. package/dist/vue2/types/components/item_layout/item_layout.vue.d.ts +1 -1
  253. package/dist/vue2/types/components/keyboard_shortcut/index.d.ts +1 -1
  254. package/dist/vue2/types/components/keyboard_shortcut/keyboard_shortcut.vue.d.ts +16 -8
  255. package/dist/vue2/types/components/keyboard_shortcut/keyboard_shortcut.vue.d.ts.map +1 -1
  256. package/dist/vue2/types/components/keyboard_shortcut/keyboard_shortcut_constants.d.ts +11 -0
  257. package/dist/vue2/types/components/keyboard_shortcut/keyboard_shortcut_constants.d.ts.map +1 -1
  258. package/dist/vue2/types/components/lazy_show/lazy_show.vue.d.ts +1 -1
  259. package/dist/vue2/types/components/link/link.vue.d.ts +1 -1
  260. package/dist/vue2/types/components/list_item/list_item.vue.d.ts +2 -2
  261. package/dist/vue2/types/components/list_item_group/list_item_group.vue.d.ts +1 -1
  262. package/dist/vue2/types/components/modal/modal.vue.d.ts +7 -5
  263. package/dist/vue2/types/components/modal/modal.vue.d.ts.map +1 -1
  264. package/dist/vue2/types/components/notice/notice.vue.d.ts +1 -1
  265. package/dist/vue2/types/components/notice/notice_action.vue.d.ts +5 -6
  266. package/dist/vue2/types/components/notice/notice_action.vue.d.ts.map +1 -1
  267. package/dist/vue2/types/components/notice/notice_content.vue.d.ts +1 -1
  268. package/dist/vue2/types/components/notice/notice_icon.vue.d.ts +2 -2
  269. package/dist/vue2/types/components/notice/notice_icon.vue.d.ts.map +1 -1
  270. package/dist/vue2/types/components/pagination/pagination.vue.d.ts +1 -1
  271. package/dist/vue2/types/components/pagination/pagination.vue.d.ts.map +1 -1
  272. package/dist/vue2/types/components/popover/popover.vue.d.ts +1 -1
  273. package/dist/vue2/types/components/popover/popover_header_footer.vue.d.ts +1 -1
  274. package/dist/vue2/types/components/presence/presence.vue.d.ts +1 -1
  275. package/dist/vue2/types/components/radio/radio.vue.d.ts +1 -1
  276. package/dist/vue2/types/components/radio_group/radio_group.vue.d.ts +3 -3
  277. package/dist/vue2/types/components/radio_group/radios_decorator.vue.d.ts +1 -1
  278. package/dist/vue2/types/components/rich_text_editor/extensions/channels/ChannelComponent.vue.d.ts +17 -17
  279. package/dist/vue2/types/components/rich_text_editor/extensions/channels/ChannelSuggestion.vue.d.ts +1 -1
  280. package/dist/vue2/types/components/rich_text_editor/extensions/emoji/EmojiComponent.vue.d.ts +17 -17
  281. package/dist/vue2/types/components/rich_text_editor/extensions/emoji/EmojiSuggestion.vue.d.ts +1 -1
  282. package/dist/vue2/types/components/rich_text_editor/extensions/mentions/MentionComponent.vue.d.ts +17 -17
  283. package/dist/vue2/types/components/rich_text_editor/extensions/mentions/MentionSuggestion.vue.d.ts +1 -1
  284. package/dist/vue2/types/components/rich_text_editor/extensions/slash_command/SlashCommandComponent.vue.d.ts +17 -17
  285. package/dist/vue2/types/components/rich_text_editor/extensions/slash_command/SlashCommandSuggestion.vue.d.ts +1 -1
  286. package/dist/vue2/types/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.d.ts +1 -1
  287. package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts +1 -1
  288. package/dist/vue2/types/components/root_layout/root_layout.vue.d.ts +1 -1
  289. package/dist/vue2/types/components/select_menu/select_menu.vue.d.ts +1 -1
  290. package/dist/vue2/types/components/skeleton/skeleton-list-item.vue.d.ts +1 -1
  291. package/dist/vue2/types/components/skeleton/skeleton-paragraph.vue.d.ts +1 -1
  292. package/dist/vue2/types/components/skeleton/skeleton-shape.vue.d.ts +1 -1
  293. package/dist/vue2/types/components/skeleton/skeleton-text.vue.d.ts +1 -1
  294. package/dist/vue2/types/components/skeleton/skeleton.vue.d.ts +1 -1
  295. package/dist/vue2/types/components/split_button/split_button-alpha.vue.d.ts +1 -1
  296. package/dist/vue2/types/components/split_button/split_button-omega.vue.d.ts +1 -1
  297. package/dist/vue2/types/components/split_button/split_button.vue.d.ts +2 -2
  298. package/dist/vue2/types/components/stack/stack.vue.d.ts +1 -1
  299. package/dist/vue2/types/components/tabs/tab.vue.d.ts +1 -1
  300. package/dist/vue2/types/components/tabs/tab_group.vue.d.ts +1 -1
  301. package/dist/vue2/types/components/tabs/tab_panel.vue.d.ts +1 -1
  302. package/dist/vue2/types/components/toast/toast.vue.d.ts +1 -1
  303. package/dist/vue2/types/components/toggle/toggle.vue.d.ts +1 -1
  304. package/dist/vue2/types/components/tooltip/tooltip.vue.d.ts +2 -2
  305. package/dist/vue2/types/components/validation_messages/validation_messages.vue.d.ts +1 -1
  306. package/dist/vue2/types/directives/scrollbar/scrollbar.d.ts.map +1 -1
  307. package/dist/vue2/types/recipes/buttons/callbar_button/callbar_button.vue.d.ts +1 -1
  308. package/dist/vue2/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +1 -1
  309. package/dist/vue2/types/recipes/cards/ivr_node/ivr_node.vue.d.ts +1 -1
  310. package/dist/vue2/types/recipes/cards/ivr_node/ivr_node.vue.d.ts.map +1 -1
  311. package/dist/vue2/types/recipes/chips/grouped_chip/grouped_chip.vue.d.ts +1 -1
  312. package/dist/vue2/types/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.d.ts +1 -1
  313. package/dist/vue2/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts +1 -1
  314. package/dist/vue2/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts +1 -1
  315. package/dist/vue2/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts.map +1 -1
  316. package/dist/vue2/types/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts +1 -1
  317. package/dist/vue2/types/recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue.d.ts +1 -1
  318. package/dist/vue2/types/recipes/conversation_view/editor/editor.vue.d.ts +9 -9
  319. package/dist/vue2/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
  320. package/dist/vue2/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts +1 -1
  321. package/dist/vue2/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts +1 -1
  322. package/dist/vue2/types/recipes/conversation_view/feed_pill/feed_item_pill.vue.d.ts +1 -1
  323. package/dist/vue2/types/recipes/conversation_view/message_input/meeting_pill/MeetingPill.vue.d.ts +17 -17
  324. package/dist/vue2/types/recipes/conversation_view/message_input/message_input.vue.d.ts +1 -1
  325. package/dist/vue2/types/recipes/conversation_view/time_pill/time_pill.vue.d.ts +1 -1
  326. package/dist/vue2/types/recipes/header/settings_menu_button/settings_menu_button.vue.d.ts +1 -1
  327. package/dist/vue2/types/recipes/item_layout/contact_info/contact_info.vue.d.ts +1 -1
  328. package/dist/vue2/types/recipes/leftbar/callbox/callbox.vue.d.ts +1 -1
  329. package/dist/vue2/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts +1 -1
  330. package/dist/vue2/types/recipes/leftbar/contact_row/contact_row.vue.d.ts +1 -1
  331. package/dist/vue2/types/recipes/leftbar/general_row/general_row.vue.d.ts +1 -1
  332. package/dist/vue2/types/recipes/leftbar/general_row/general_row.vue.d.ts.map +1 -1
  333. package/dist/vue2/types/recipes/leftbar/general_row/general_row_constants.d.ts +6 -0
  334. package/dist/vue2/types/recipes/leftbar/general_row/general_row_constants.d.ts.map +1 -1
  335. package/dist/vue2/types/recipes/leftbar/general_row/index.d.ts +1 -1
  336. package/dist/vue2/types/recipes/leftbar/general_row/leftbar_general_row_icon.vue.d.ts +2 -2
  337. package/dist/vue2/types/recipes/leftbar/group_row/group_row.vue.d.ts +1 -1
  338. package/dist/vue2/types/recipes/leftbar/unread_pill/unread_pill.vue.d.ts +1 -1
  339. package/dist/vue2/types/recipes/leftbar/unread_pill/unread_pill.vue.d.ts.map +1 -1
  340. package/dist/vue2/types/recipes/notices/top_banner_info/top_banner_info.vue.d.ts +1 -1
  341. package/dist/vue3/common/sr_only_close_button.vue.cjs +4 -4
  342. package/dist/vue3/common/sr_only_close_button.vue.cjs.map +1 -1
  343. package/dist/vue3/common/sr_only_close_button.vue.js +4 -4
  344. package/dist/vue3/common/sr_only_close_button.vue.js.map +1 -1
  345. package/dist/vue3/common/storybook_utils.cjs +8 -0
  346. package/dist/vue3/common/storybook_utils.cjs.map +1 -0
  347. package/dist/vue3/common/storybook_utils.js +8 -0
  348. package/dist/vue3/common/storybook_utils.js.map +1 -0
  349. package/dist/vue3/component-documentation.json +1 -1
  350. package/dist/vue3/components/avatar/avatar.vue.cjs +41 -30
  351. package/dist/vue3/components/avatar/avatar.vue.cjs.map +1 -1
  352. package/dist/vue3/components/avatar/avatar.vue.js +43 -32
  353. package/dist/vue3/components/avatar/avatar.vue.js.map +1 -1
  354. package/dist/vue3/components/badge/badge.vue.cjs +39 -22
  355. package/dist/vue3/components/badge/badge.vue.cjs.map +1 -1
  356. package/dist/vue3/components/badge/badge.vue.js +40 -23
  357. package/dist/vue3/components/badge/badge.vue.js.map +1 -1
  358. package/dist/vue3/components/checkbox/checkbox.vue.cjs +1 -1
  359. package/dist/vue3/components/checkbox/checkbox.vue.js +1 -1
  360. package/dist/vue3/components/chip/chip.vue.cjs +7 -4
  361. package/dist/vue3/components/chip/chip.vue.cjs.map +1 -1
  362. package/dist/vue3/components/chip/chip.vue.js +7 -4
  363. package/dist/vue3/components/chip/chip.vue.js.map +1 -1
  364. package/dist/vue3/components/collapsible/collapsible.vue.cjs +6 -12
  365. package/dist/vue3/components/collapsible/collapsible.vue.cjs.map +1 -1
  366. package/dist/vue3/components/collapsible/collapsible.vue.js +6 -12
  367. package/dist/vue3/components/collapsible/collapsible.vue.js.map +1 -1
  368. package/dist/vue3/components/datepicker/modules/month-year-picker.vue.cjs +17 -5
  369. package/dist/vue3/components/datepicker/modules/month-year-picker.vue.cjs.map +1 -1
  370. package/dist/vue3/components/datepicker/modules/month-year-picker.vue.js +17 -5
  371. package/dist/vue3/components/datepicker/modules/month-year-picker.vue.js.map +1 -1
  372. package/dist/vue3/components/emoji_picker/modules/emoji_search.vue.cjs +9 -4
  373. package/dist/vue3/components/emoji_picker/modules/emoji_search.vue.cjs.map +1 -1
  374. package/dist/vue3/components/emoji_picker/modules/emoji_search.vue.js +10 -5
  375. package/dist/vue3/components/emoji_picker/modules/emoji_search.vue.js.map +1 -1
  376. package/dist/vue3/components/emoji_picker/modules/emoji_tabset.vue.cjs +14 -11
  377. package/dist/vue3/components/emoji_picker/modules/emoji_tabset.vue.cjs.map +1 -1
  378. package/dist/vue3/components/emoji_picker/modules/emoji_tabset.vue.js +15 -12
  379. package/dist/vue3/components/emoji_picker/modules/emoji_tabset.vue.js.map +1 -1
  380. package/dist/vue3/components/empty_state/empty_state.vue.cjs +92 -19
  381. package/dist/vue3/components/empty_state/empty_state.vue.cjs.map +1 -1
  382. package/dist/vue3/components/empty_state/empty_state.vue.js +93 -20
  383. package/dist/vue3/components/empty_state/empty_state.vue.js.map +1 -1
  384. package/dist/vue3/components/empty_state/empty_state_constants.cjs +0 -18
  385. package/dist/vue3/components/empty_state/empty_state_constants.cjs.map +1 -1
  386. package/dist/vue3/components/empty_state/empty_state_constants.js +0 -18
  387. package/dist/vue3/components/empty_state/empty_state_constants.js.map +1 -1
  388. package/dist/vue3/components/illustration/illustration.vue.cjs +2 -2
  389. package/dist/vue3/components/illustration/illustration.vue.js +2 -2
  390. package/dist/vue3/components/image_viewer/image_viewer.vue.cjs +5 -4
  391. package/dist/vue3/components/image_viewer/image_viewer.vue.cjs.map +1 -1
  392. package/dist/vue3/components/image_viewer/image_viewer.vue.js +5 -4
  393. package/dist/vue3/components/image_viewer/image_viewer.vue.js.map +1 -1
  394. package/dist/vue3/components/keyboard_shortcut/keyboard_shortcut.vue.cjs +11 -24
  395. package/dist/vue3/components/keyboard_shortcut/keyboard_shortcut.vue.cjs.map +1 -1
  396. package/dist/vue3/components/keyboard_shortcut/keyboard_shortcut.vue.js +10 -23
  397. package/dist/vue3/components/keyboard_shortcut/keyboard_shortcut.vue.js.map +1 -1
  398. package/dist/vue3/components/keyboard_shortcut/keyboard_shortcut_constants.cjs +14 -8
  399. package/dist/vue3/components/keyboard_shortcut/keyboard_shortcut_constants.cjs.map +1 -1
  400. package/dist/vue3/components/keyboard_shortcut/keyboard_shortcut_constants.js +15 -9
  401. package/dist/vue3/components/keyboard_shortcut/keyboard_shortcut_constants.js.map +1 -1
  402. package/dist/vue3/components/list_item/list_item.vue.cjs +5 -4
  403. package/dist/vue3/components/list_item/list_item.vue.cjs.map +1 -1
  404. package/dist/vue3/components/list_item/list_item.vue.js +5 -4
  405. package/dist/vue3/components/list_item/list_item.vue.js.map +1 -1
  406. package/dist/vue3/components/modal/modal.vue.cjs +7 -4
  407. package/dist/vue3/components/modal/modal.vue.cjs.map +1 -1
  408. package/dist/vue3/components/modal/modal.vue.js +7 -4
  409. package/dist/vue3/components/modal/modal.vue.js.map +1 -1
  410. package/dist/vue3/components/notice/notice_action.vue.cjs +7 -4
  411. package/dist/vue3/components/notice/notice_action.vue.cjs.map +1 -1
  412. package/dist/vue3/components/notice/notice_action.vue.js +7 -4
  413. package/dist/vue3/components/notice/notice_action.vue.js.map +1 -1
  414. package/dist/vue3/components/notice/notice_icon.vue.cjs +12 -12
  415. package/dist/vue3/components/notice/notice_icon.vue.cjs.map +1 -1
  416. package/dist/vue3/components/notice/notice_icon.vue.js +13 -13
  417. package/dist/vue3/components/notice/notice_icon.vue.js.map +1 -1
  418. package/dist/vue3/components/pagination/pagination.vue.cjs +15 -10
  419. package/dist/vue3/components/pagination/pagination.vue.cjs.map +1 -1
  420. package/dist/vue3/components/pagination/pagination.vue.js +15 -10
  421. package/dist/vue3/components/pagination/pagination.vue.js.map +1 -1
  422. package/dist/vue3/components/popover/popover_header_footer.vue.cjs +7 -4
  423. package/dist/vue3/components/popover/popover_header_footer.vue.cjs.map +1 -1
  424. package/dist/vue3/components/popover/popover_header_footer.vue.js +7 -4
  425. package/dist/vue3/components/popover/popover_header_footer.vue.js.map +1 -1
  426. package/dist/vue3/dialtone-vue.cjs +3 -0
  427. package/dist/vue3/dialtone-vue.cjs.map +1 -1
  428. package/dist/vue3/dialtone-vue.js +5 -2
  429. package/dist/vue3/directives/scrollbar/scrollbar.cjs.map +1 -1
  430. package/dist/vue3/directives/scrollbar/scrollbar.js.map +1 -1
  431. package/dist/vue3/lib/general-row.cjs +1 -0
  432. package/dist/vue3/lib/general-row.cjs.map +1 -1
  433. package/dist/vue3/lib/general-row.js +2 -1
  434. package/dist/vue3/lib/keyboard-shortcut.cjs +2 -0
  435. package/dist/vue3/lib/keyboard-shortcut.cjs.map +1 -1
  436. package/dist/vue3/lib/keyboard-shortcut.js +4 -2
  437. package/dist/vue3/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.cjs +5 -4
  438. package/dist/vue3/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.cjs.map +1 -1
  439. package/dist/vue3/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.js +5 -4
  440. package/dist/vue3/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.js.map +1 -1
  441. package/dist/vue3/recipes/cards/ivr_node/ivr_node.vue.cjs +11 -27
  442. package/dist/vue3/recipes/cards/ivr_node/ivr_node.vue.cjs.map +1 -1
  443. package/dist/vue3/recipes/cards/ivr_node/ivr_node.vue.js +13 -29
  444. package/dist/vue3/recipes/cards/ivr_node/ivr_node.vue.js.map +1 -1
  445. package/dist/vue3/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.cjs +19 -6
  446. package/dist/vue3/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.cjs.map +1 -1
  447. package/dist/vue3/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.js +19 -6
  448. package/dist/vue3/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.js.map +1 -1
  449. package/dist/vue3/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.cjs +11 -7
  450. package/dist/vue3/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.cjs.map +1 -1
  451. package/dist/vue3/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.js +11 -7
  452. package/dist/vue3/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.js.map +1 -1
  453. package/dist/vue3/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.cjs +7 -4
  454. package/dist/vue3/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.cjs.map +1 -1
  455. package/dist/vue3/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.js +7 -4
  456. package/dist/vue3/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.js.map +1 -1
  457. package/dist/vue3/recipes/conversation_view/editor/editor.vue.cjs +25 -33
  458. package/dist/vue3/recipes/conversation_view/editor/editor.vue.cjs.map +1 -1
  459. package/dist/vue3/recipes/conversation_view/editor/editor.vue.js +26 -34
  460. package/dist/vue3/recipes/conversation_view/editor/editor.vue.js.map +1 -1
  461. package/dist/vue3/recipes/conversation_view/feed_item_row/feed_item_row.vue.cjs +7 -14
  462. package/dist/vue3/recipes/conversation_view/feed_item_row/feed_item_row.vue.cjs.map +1 -1
  463. package/dist/vue3/recipes/conversation_view/feed_item_row/feed_item_row.vue.js +8 -15
  464. package/dist/vue3/recipes/conversation_view/feed_item_row/feed_item_row.vue.js.map +1 -1
  465. package/dist/vue3/recipes/conversation_view/message_input/meeting_pill/MeetingPill.vue.cjs +6 -4
  466. package/dist/vue3/recipes/conversation_view/message_input/meeting_pill/MeetingPill.vue.cjs.map +1 -1
  467. package/dist/vue3/recipes/conversation_view/message_input/meeting_pill/MeetingPill.vue.js +6 -4
  468. package/dist/vue3/recipes/conversation_view/message_input/meeting_pill/MeetingPill.vue.js.map +1 -1
  469. package/dist/vue3/recipes/header/settings_menu_button/settings_menu_button.vue.cjs +12 -6
  470. package/dist/vue3/recipes/header/settings_menu_button/settings_menu_button.vue.cjs.map +1 -1
  471. package/dist/vue3/recipes/header/settings_menu_button/settings_menu_button.vue.js +12 -6
  472. package/dist/vue3/recipes/header/settings_menu_button/settings_menu_button.vue.js.map +1 -1
  473. package/dist/vue3/recipes/item_layout/contact_info/contact_info.vue.cjs +7 -27
  474. package/dist/vue3/recipes/item_layout/contact_info/contact_info.vue.cjs.map +1 -1
  475. package/dist/vue3/recipes/item_layout/contact_info/contact_info.vue.js +8 -28
  476. package/dist/vue3/recipes/item_layout/contact_info/contact_info.vue.js.map +1 -1
  477. package/dist/vue3/recipes/leftbar/callbox/callbox.vue.cjs +4 -13
  478. package/dist/vue3/recipes/leftbar/callbox/callbox.vue.cjs.map +1 -1
  479. package/dist/vue3/recipes/leftbar/callbox/callbox.vue.js +5 -14
  480. package/dist/vue3/recipes/leftbar/callbox/callbox.vue.js.map +1 -1
  481. package/dist/vue3/recipes/leftbar/contact_row/contact_row.vue.cjs +7 -13
  482. package/dist/vue3/recipes/leftbar/contact_row/contact_row.vue.cjs.map +1 -1
  483. package/dist/vue3/recipes/leftbar/contact_row/contact_row.vue.js +8 -14
  484. package/dist/vue3/recipes/leftbar/contact_row/contact_row.vue.js.map +1 -1
  485. package/dist/vue3/recipes/leftbar/general_row/general_row.vue.cjs +13 -9
  486. package/dist/vue3/recipes/leftbar/general_row/general_row.vue.cjs.map +1 -1
  487. package/dist/vue3/recipes/leftbar/general_row/general_row.vue.js +13 -9
  488. package/dist/vue3/recipes/leftbar/general_row/general_row.vue.js.map +1 -1
  489. package/dist/vue3/recipes/leftbar/general_row/general_row_constants.cjs +17 -0
  490. package/dist/vue3/recipes/leftbar/general_row/general_row_constants.cjs.map +1 -1
  491. package/dist/vue3/recipes/leftbar/general_row/general_row_constants.js +17 -0
  492. package/dist/vue3/recipes/leftbar/general_row/general_row_constants.js.map +1 -1
  493. package/dist/vue3/recipes/leftbar/general_row/leftbar_general_row_icon.vue.cjs +11 -39
  494. package/dist/vue3/recipes/leftbar/general_row/leftbar_general_row_icon.vue.cjs.map +1 -1
  495. package/dist/vue3/recipes/leftbar/general_row/leftbar_general_row_icon.vue.js +13 -41
  496. package/dist/vue3/recipes/leftbar/general_row/leftbar_general_row_icon.vue.js.map +1 -1
  497. package/dist/vue3/recipes/leftbar/group_row/group_row.vue.cjs +7 -4
  498. package/dist/vue3/recipes/leftbar/group_row/group_row.vue.cjs.map +1 -1
  499. package/dist/vue3/recipes/leftbar/group_row/group_row.vue.js +7 -4
  500. package/dist/vue3/recipes/leftbar/group_row/group_row.vue.js.map +1 -1
  501. package/dist/vue3/recipes/leftbar/unread_pill/unread_pill.vue.cjs +6 -11
  502. package/dist/vue3/recipes/leftbar/unread_pill/unread_pill.vue.cjs.map +1 -1
  503. package/dist/vue3/recipes/leftbar/unread_pill/unread_pill.vue.js +7 -12
  504. package/dist/vue3/recipes/leftbar/unread_pill/unread_pill.vue.js.map +1 -1
  505. package/dist/vue3/style.css +119 -119
  506. package/dist/vue3/types/common/sr_only_close_button.vue.d.ts +1 -1
  507. package/dist/vue3/types/common/storybook_utils.d.ts +25 -0
  508. package/dist/vue3/types/common/storybook_utils.d.ts.map +1 -0
  509. package/dist/vue3/types/components/avatar/avatar.vue.d.ts +39 -11
  510. package/dist/vue3/types/components/avatar/avatar.vue.d.ts.map +1 -1
  511. package/dist/vue3/types/components/badge/badge.vue.d.ts +35 -18
  512. package/dist/vue3/types/components/badge/badge.vue.d.ts.map +1 -1
  513. package/dist/vue3/types/components/banner/banner.vue.d.ts +1 -1
  514. package/dist/vue3/types/components/breadcrumbs/breadcrumb_item.vue.d.ts +1 -1
  515. package/dist/vue3/types/components/breadcrumbs/breadcrumbs.vue.d.ts +1 -1
  516. package/dist/vue3/types/components/button/button.vue.d.ts +3 -3
  517. package/dist/vue3/types/components/button_group/button_group.vue.d.ts +1 -1
  518. package/dist/vue3/types/components/button_group/buttons_decorator.vue.d.ts +1 -1
  519. package/dist/vue3/types/components/card/card.vue.d.ts +1 -1
  520. package/dist/vue3/types/components/checkbox/checkbox.vue.d.ts +2 -2
  521. package/dist/vue3/types/components/checkbox_group/checkbox_group.vue.d.ts +4 -4
  522. package/dist/vue3/types/components/checkbox_group/checkboxes_decorator.vue.d.ts +1 -1
  523. package/dist/vue3/types/components/chip/chip.vue.d.ts +3 -3
  524. package/dist/vue3/types/components/codeblock/codeblock.vue.d.ts +1 -1
  525. package/dist/vue3/types/components/collapsible/collapsible.vue.d.ts +3 -3
  526. package/dist/vue3/types/components/collapsible/collapsible.vue.d.ts.map +1 -1
  527. package/dist/vue3/types/components/collapsible/collapsible_lazy_show.vue.d.ts +1 -1
  528. package/dist/vue3/types/components/combobox/combobox.vue.d.ts +14 -14
  529. package/dist/vue3/types/components/combobox/combobox_empty-list.vue.d.ts +1 -1
  530. package/dist/vue3/types/components/combobox/combobox_loading-list.vue.d.ts +1 -1
  531. package/dist/vue3/types/components/datepicker/datepicker.vue.d.ts +1 -1
  532. package/dist/vue3/types/components/datepicker/modules/calendar.vue.d.ts +1 -1
  533. package/dist/vue3/types/components/datepicker/modules/month-year-picker.vue.d.ts +1 -1
  534. package/dist/vue3/types/components/description_list/description_list.vue.d.ts +1 -1
  535. package/dist/vue3/types/components/dropdown/dropdown.vue.d.ts +7 -5
  536. package/dist/vue3/types/components/dropdown/dropdown.vue.d.ts.map +1 -1
  537. package/dist/vue3/types/components/dropdown/dropdown_list.vue.d.ts +1 -1
  538. package/dist/vue3/types/components/dropdown/dropdown_separator.vue.d.ts +1 -1
  539. package/dist/vue3/types/components/emoji/emoji.vue.d.ts +1 -1
  540. package/dist/vue3/types/components/emoji_picker/emoji_picker.vue.d.ts +1 -1
  541. package/dist/vue3/types/components/emoji_picker/modules/emoji_description.vue.d.ts +1 -1
  542. package/dist/vue3/types/components/emoji_picker/modules/emoji_search.vue.d.ts +1 -1
  543. package/dist/vue3/types/components/emoji_picker/modules/emoji_selector.vue.d.ts +1 -1
  544. package/dist/vue3/types/components/emoji_picker/modules/emoji_skin_selector.vue.d.ts +1 -1
  545. package/dist/vue3/types/components/emoji_picker/modules/emoji_tabset.vue.d.ts +1 -1
  546. package/dist/vue3/types/components/emoji_picker/modules/emoji_tabset.vue.d.ts.map +1 -1
  547. package/dist/vue3/types/components/emoji_text_wrapper/emoji_text_wrapper.vue.d.ts +1 -1
  548. package/dist/vue3/types/components/empty_state/empty_state.vue.d.ts +1 -5
  549. package/dist/vue3/types/components/empty_state/empty_state.vue.d.ts.map +1 -1
  550. package/dist/vue3/types/components/empty_state/empty_state_constants.d.ts +0 -27
  551. package/dist/vue3/types/components/hovercard/hovercard.vue.d.ts +1 -1
  552. package/dist/vue3/types/components/icon/icon.vue.d.ts +1 -1
  553. package/dist/vue3/types/components/illustration/illustration.vue.d.ts +1 -1
  554. package/dist/vue3/types/components/image_viewer/image_viewer.vue.d.ts +1 -1
  555. package/dist/vue3/types/components/image_viewer/image_viewer.vue.d.ts.map +1 -1
  556. package/dist/vue3/types/components/input/input.vue.d.ts +7 -7
  557. package/dist/vue3/types/components/input_group/decorators/input.vue.d.ts +1 -1
  558. package/dist/vue3/types/components/input_group/decorators/inputs.vue.d.ts +1 -1
  559. package/dist/vue3/types/components/input_group/input_group.vue.d.ts +2 -2
  560. package/dist/vue3/types/components/item_layout/item_layout.vue.d.ts +1 -1
  561. package/dist/vue3/types/components/keyboard_shortcut/index.d.ts +1 -1
  562. package/dist/vue3/types/components/keyboard_shortcut/keyboard_shortcut.vue.d.ts +19 -214
  563. package/dist/vue3/types/components/keyboard_shortcut/keyboard_shortcut.vue.d.ts.map +1 -1
  564. package/dist/vue3/types/components/keyboard_shortcut/keyboard_shortcut_constants.d.ts +11 -0
  565. package/dist/vue3/types/components/keyboard_shortcut/keyboard_shortcut_constants.d.ts.map +1 -1
  566. package/dist/vue3/types/components/lazy_show/lazy_show.vue.d.ts +2 -2
  567. package/dist/vue3/types/components/link/link.vue.d.ts +1 -1
  568. package/dist/vue3/types/components/list_item/list_item.vue.d.ts +10 -4
  569. package/dist/vue3/types/components/list_item/list_item.vue.d.ts.map +1 -1
  570. package/dist/vue3/types/components/list_item_group/list_item_group.vue.d.ts +1 -1
  571. package/dist/vue3/types/components/modal/modal.vue.d.ts +3 -3
  572. package/dist/vue3/types/components/notice/notice.vue.d.ts +1 -1
  573. package/dist/vue3/types/components/notice/notice_action.vue.d.ts +5 -6
  574. package/dist/vue3/types/components/notice/notice_action.vue.d.ts.map +1 -1
  575. package/dist/vue3/types/components/notice/notice_content.vue.d.ts +1 -1
  576. package/dist/vue3/types/components/notice/notice_icon.vue.d.ts +2 -31
  577. package/dist/vue3/types/components/notice/notice_icon.vue.d.ts.map +1 -1
  578. package/dist/vue3/types/components/pagination/pagination.vue.d.ts +1 -1
  579. package/dist/vue3/types/components/pagination/pagination.vue.d.ts.map +1 -1
  580. package/dist/vue3/types/components/popover/popover_header_footer.vue.d.ts +1 -1
  581. package/dist/vue3/types/components/presence/presence.vue.d.ts +1 -1
  582. package/dist/vue3/types/components/radio/radio.vue.d.ts +3 -3
  583. package/dist/vue3/types/components/radio_group/radio_group.vue.d.ts +4 -4
  584. package/dist/vue3/types/components/radio_group/radios_decorator.vue.d.ts +1 -1
  585. package/dist/vue3/types/components/rich_text_editor/extensions/channels/ChannelComponent.vue.d.ts +1 -1
  586. package/dist/vue3/types/components/rich_text_editor/extensions/channels/ChannelSuggestion.vue.d.ts +1 -1
  587. package/dist/vue3/types/components/rich_text_editor/extensions/emoji/EmojiComponent.vue.d.ts +1 -1
  588. package/dist/vue3/types/components/rich_text_editor/extensions/emoji/EmojiSuggestion.vue.d.ts +1 -1
  589. package/dist/vue3/types/components/rich_text_editor/extensions/mentions/MentionComponent.vue.d.ts +1 -1
  590. package/dist/vue3/types/components/rich_text_editor/extensions/mentions/MentionSuggestion.vue.d.ts +1 -1
  591. package/dist/vue3/types/components/rich_text_editor/extensions/slash_command/SlashCommandComponent.vue.d.ts +1 -1
  592. package/dist/vue3/types/components/rich_text_editor/extensions/slash_command/SlashCommandSuggestion.vue.d.ts +1 -1
  593. package/dist/vue3/types/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.d.ts +1 -1
  594. package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts +4 -4
  595. package/dist/vue3/types/components/root_layout/root_layout.vue.d.ts +1 -1
  596. package/dist/vue3/types/components/scroller/DtScroller.vue.d.ts +1 -1
  597. package/dist/vue3/types/components/scroller/modules/core_scroller.vue.d.ts +1 -1
  598. package/dist/vue3/types/components/scroller/modules/dynamic_scroller.vue.d.ts +4 -4
  599. package/dist/vue3/types/components/scroller/modules/scroller_item.vue.d.ts +1 -1
  600. package/dist/vue3/types/components/select_menu/select_menu.vue.d.ts +2 -2
  601. package/dist/vue3/types/components/skeleton/skeleton-list-item.vue.d.ts +1 -1
  602. package/dist/vue3/types/components/skeleton/skeleton-paragraph.vue.d.ts +1 -1
  603. package/dist/vue3/types/components/skeleton/skeleton-shape.vue.d.ts +2 -2
  604. package/dist/vue3/types/components/skeleton/skeleton-text.vue.d.ts +1 -1
  605. package/dist/vue3/types/components/skeleton/skeleton.vue.d.ts +1 -1
  606. package/dist/vue3/types/components/split_button/split_button-alpha.vue.d.ts +2 -2
  607. package/dist/vue3/types/components/split_button/split_button-omega.vue.d.ts +2 -2
  608. package/dist/vue3/types/components/split_button/split_button.vue.d.ts +20 -20
  609. package/dist/vue3/types/components/tabs/tab.vue.d.ts +2 -2
  610. package/dist/vue3/types/components/tabs/tab_group.vue.d.ts +1 -1
  611. package/dist/vue3/types/components/tabs/tab_panel.vue.d.ts +2 -2
  612. package/dist/vue3/types/components/toast/toast.vue.d.ts +1 -1
  613. package/dist/vue3/types/components/toggle/toggle.vue.d.ts +1 -1
  614. package/dist/vue3/types/components/tooltip/tooltip.vue.d.ts +6 -6
  615. package/dist/vue3/types/components/validation_messages/validation_messages.vue.d.ts +1 -1
  616. package/dist/vue3/types/directives/scrollbar/scrollbar.d.ts.map +1 -1
  617. package/dist/vue3/types/recipes/buttons/callbar_button/callbar_button.vue.d.ts +2 -2
  618. package/dist/vue3/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +4 -4
  619. package/dist/vue3/types/recipes/cards/ivr_node/ivr_node.vue.d.ts +2 -31
  620. package/dist/vue3/types/recipes/cards/ivr_node/ivr_node.vue.d.ts.map +1 -1
  621. package/dist/vue3/types/recipes/chips/grouped_chip/grouped_chip.vue.d.ts +1 -1
  622. package/dist/vue3/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts +6 -6
  623. package/dist/vue3/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts +1 -1
  624. package/dist/vue3/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts.map +1 -1
  625. package/dist/vue3/types/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts +1 -1
  626. package/dist/vue3/types/recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue.d.ts +1 -1
  627. package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts +21 -253
  628. package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
  629. package/dist/vue3/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts +1 -1
  630. package/dist/vue3/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts +9 -2
  631. package/dist/vue3/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts.map +1 -1
  632. package/dist/vue3/types/recipes/conversation_view/feed_pill/feed_item_pill.vue.d.ts +3 -3
  633. package/dist/vue3/types/recipes/conversation_view/message_input/meeting_pill/MeetingPill.vue.d.ts +1 -1
  634. package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts +4 -4
  635. package/dist/vue3/types/recipes/conversation_view/time_pill/time_pill.vue.d.ts +1 -1
  636. package/dist/vue3/types/recipes/header/settings_menu_button/settings_menu_button.vue.d.ts +1 -1
  637. package/dist/vue3/types/recipes/item_layout/contact_info/contact_info.vue.d.ts +4 -4
  638. package/dist/vue3/types/recipes/leftbar/callbox/callbox.vue.d.ts +1 -1
  639. package/dist/vue3/types/recipes/leftbar/callbox/callbox.vue.d.ts.map +1 -1
  640. package/dist/vue3/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts +3 -3
  641. package/dist/vue3/types/recipes/leftbar/contact_row/contact_row.vue.d.ts +2 -1
  642. package/dist/vue3/types/recipes/leftbar/contact_row/contact_row.vue.d.ts.map +1 -1
  643. package/dist/vue3/types/recipes/leftbar/general_row/general_row.vue.d.ts +11 -11
  644. package/dist/vue3/types/recipes/leftbar/general_row/general_row.vue.d.ts.map +1 -1
  645. package/dist/vue3/types/recipes/leftbar/general_row/general_row_constants.d.ts +6 -0
  646. package/dist/vue3/types/recipes/leftbar/general_row/general_row_constants.d.ts.map +1 -1
  647. package/dist/vue3/types/recipes/leftbar/general_row/index.d.ts +1 -1
  648. package/dist/vue3/types/recipes/leftbar/general_row/leftbar_general_row_icon.vue.d.ts +2 -31
  649. package/dist/vue3/types/recipes/leftbar/group_row/group_row.vue.d.ts +1 -1
  650. package/dist/vue3/types/recipes/leftbar/unread_pill/unread_pill.vue.d.ts +1 -1
  651. package/dist/vue3/types/recipes/leftbar/unread_pill/unread_pill.vue.d.ts.map +1 -1
  652. package/dist/vue3/types/recipes/notices/top_banner_info/top_banner_info.vue.d.ts +1 -1
  653. package/package.json +3 -3
  654. package/dist/tokens/themes/chunks/tokens-base-dark-BEsKKfTV.js +0 -4
  655. package/dist/tokens/themes/chunks/tokens-base-dark-Bxzti7ig.js +0 -1
  656. package/dist/tokens/themes/chunks/tokens-base-light-DV0xl0Dv.js +0 -1
  657. package/dist/tokens/themes/chunks/tokens-base-light-jdZ77WhZ.js +0 -4
@@ -1,15 +1,18 @@
1
1
  "use strict";
2
2
  const common_utils = require("../../common/utils.cjs");
3
3
  const avatar_constants = require("./avatar_constants.cjs");
4
+ const storybook_utils = require("../../common/storybook_utils.cjs");
4
5
  const icon_constants = require("../icon/icon_constants.cjs");
5
6
  const utils = require("./utils.cjs");
6
7
  const vue = require("vue");
7
8
  ;/* empty css */
8
9
  const _pluginVue_exportHelper = require("../../_virtual/_plugin-vue_export-helper.cjs");
9
10
  const presence = require("../presence/presence.vue.cjs");
11
+ const icon = require("../icon/icon.vue.cjs");
12
+ const ICONS_LIST = storybook_utils.getIconNames();
10
13
  const _sfc_main = {
11
14
  name: "DtAvatar",
12
- components: { DtPresence: presence },
15
+ components: { DtPresence: presence, DtIcon: icon },
13
16
  inheritAttrs: false,
14
17
  props: {
15
18
  /**
@@ -97,6 +100,13 @@ const _sfc_main = {
97
100
  default: void 0,
98
101
  validator: (group) => avatar_constants.AVATAR_GROUP_VALIDATOR(group)
99
102
  },
103
+ /**
104
+ * The icon that overlays the avatar
105
+ */
106
+ overlayIcon: {
107
+ type: String,
108
+ default: ""
109
+ },
100
110
  /**
101
111
  * The text that overlays the avatar
102
112
  */
@@ -127,6 +137,14 @@ const _sfc_main = {
127
137
  type: String,
128
138
  default: void 0
129
139
  },
140
+ /**
141
+ * Icon name to be displayed on the avatar
142
+ */
143
+ iconName: {
144
+ type: String,
145
+ default: void 0,
146
+ validator: (name) => ICONS_LIST.includes(name)
147
+ },
130
148
  /**
131
149
  * Icon size to be displayed on the avatar
132
150
  * @values 100, 200, 300, 400, 500, 600, 700, 800
@@ -177,19 +195,12 @@ const _sfc_main = {
177
195
  AVATAR_ICON_SIZES: avatar_constants.AVATAR_ICON_SIZES,
178
196
  imageLoadedSuccessfully: null,
179
197
  formattedInitials: "",
180
- initializing: false,
181
- hasSlotContent: common_utils.hasSlotContent
198
+ initializing: false
182
199
  };
183
200
  },
184
201
  computed: {
185
- isIconType() {
186
- return common_utils.hasSlotContent(this.$slots.icon);
187
- },
188
- hasOverlayIcon() {
189
- return common_utils.hasSlotContent(this.$slots.overlayIcon);
190
- },
191
- iconDataQa() {
192
- return "dt-avatar-icon";
202
+ isNotIconType() {
203
+ return !this.iconName;
193
204
  },
194
205
  avatarClasses() {
195
206
  return [
@@ -198,7 +209,7 @@ const _sfc_main = {
198
209
  this.avatarClass,
199
210
  {
200
211
  "d-avatar--group": this.showGroup,
201
- [`d-avatar--color-${this.getColor()}`]: !this.isIconType,
212
+ [`d-avatar--color-${this.getColor()}`]: this.isNotIconType,
202
213
  "d-avatar--clickable": this.clickable
203
214
  }
204
215
  ];
@@ -206,8 +217,7 @@ const _sfc_main = {
206
217
  overlayClasses() {
207
218
  return [
208
219
  "d-avatar__overlay",
209
- this.overlayClass,
210
- { "d-avatar__overlay-icon": this.hasOverlayIcon }
220
+ this.overlayClass
211
221
  ];
212
222
  },
213
223
  showGroup() {
@@ -294,17 +304,17 @@ const _sfc_main = {
294
304
  }
295
305
  };
296
306
  const _hoisted_1 = ["src", "alt"];
297
- const _hoisted_2 = ["aria-label", "data-qa", "role"];
298
- const _hoisted_3 = {
307
+ const _hoisted_2 = {
299
308
  key: 1,
300
309
  class: "d-avatar__overlay-text"
301
310
  };
302
- const _hoisted_4 = {
311
+ const _hoisted_3 = {
303
312
  key: 1,
304
313
  class: "d-avatar__count",
305
314
  "data-qa": "dt-avatar-count"
306
315
  };
307
316
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
317
+ const _component_dt_icon = vue.resolveComponent("dt-icon");
308
318
  const _component_dt_presence = vue.resolveComponent("dt-presence");
309
319
  return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent($props.clickable ? "button" : "div"), {
310
320
  id: $props.id,
@@ -328,28 +338,29 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
328
338
  "data-qa": "dt-avatar-image",
329
339
  src: $props.imageSrc,
330
340
  alt: $props.imageAlt
331
- }, null, 8, _hoisted_1)) : $options.isIconType ? (vue.openBlock(), vue.createElementBlock("div", {
341
+ }, null, 8, _hoisted_1)) : $props.iconName ? (vue.openBlock(), vue.createBlock(_component_dt_icon, {
332
342
  key: 1,
343
+ name: $props.iconName,
344
+ "aria-label": $props.iconAriaLabel,
345
+ size: $props.iconSize || $data.AVATAR_ICON_SIZES[$props.size],
333
346
  class: vue.normalizeClass([$props.iconClass, $data.AVATAR_KIND_MODIFIERS.icon]),
334
- "aria-label": $props.clickable ? $props.iconAriaLabel : "",
335
- "data-qa": $options.iconDataQa,
336
- role: $props.clickable ? "button" : ""
337
- }, [
338
- vue.renderSlot(_ctx.$slots, "icon", {
339
- iconSize: $props.iconSize || $data.AVATAR_ICON_SIZES[$props.size]
340
- })
341
- ], 10, _hoisted_2)) : (vue.openBlock(), vue.createElementBlock("span", {
347
+ "data-qa": "dt-avatar-icon"
348
+ }, null, 8, ["name", "aria-label", "size", "class"])) : (vue.openBlock(), vue.createElementBlock("span", {
342
349
  key: 2,
343
350
  class: vue.normalizeClass([$data.AVATAR_KIND_MODIFIERS.initials])
344
351
  }, vue.toDisplayString($data.formattedInitials), 3))
345
352
  ], 2),
346
- $options.hasOverlayIcon || $props.overlayText ? (vue.openBlock(), vue.createElementBlock("div", {
353
+ $props.overlayIcon || $props.overlayText ? (vue.openBlock(), vue.createElementBlock("div", {
347
354
  key: 0,
348
355
  class: vue.normalizeClass($options.overlayClasses)
349
356
  }, [
350
- $options.hasOverlayIcon ? vue.renderSlot(_ctx.$slots, "overlayIcon", { key: 0 }) : $props.overlayText ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_3, vue.toDisplayString($props.overlayText), 1)) : vue.createCommentVNode("", true)
357
+ $props.overlayIcon ? (vue.openBlock(), vue.createBlock(_component_dt_icon, {
358
+ key: 0,
359
+ class: "d-avatar__overlay-icon",
360
+ name: $props.overlayIcon
361
+ }, null, 8, ["name"])) : $props.overlayText ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_2, vue.toDisplayString($props.overlayText), 1)) : vue.createCommentVNode("", true)
351
362
  ], 2)) : vue.createCommentVNode("", true),
352
- $options.showGroup ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4, vue.toDisplayString($options.formattedGroup), 1)) : vue.createCommentVNode("", true),
363
+ $options.showGroup ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3, vue.toDisplayString($options.formattedGroup), 1)) : vue.createCommentVNode("", true),
353
364
  $props.presence && !$options.showGroup ? (vue.openBlock(), vue.createBlock(_component_dt_presence, vue.mergeProps({
354
365
  key: 2,
355
366
  presence: $props.presence,
@@ -359,7 +370,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
359
370
  ]
360
371
  }, $props.presenceProps, { "data-qa": "dt-presence" }), null, 16, ["presence", "class"])) : vue.createCommentVNode("", true)
361
372
  ]),
362
- _: 3
373
+ _: 1
363
374
  }, 8, ["id", "class", "onClick"]);
364
375
  }
365
376
  const DtAvatar = /* @__PURE__ */ _pluginVue_exportHelper(_sfc_main, [["render", _sfc_render]]);
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.vue.cjs","sources":["../../../components/avatar/avatar.vue"],"sourcesContent":["<template>\n <component\n :is=\"clickable ? 'button' : 'div'\"\n :id=\"id\"\n :class=\"avatarClasses\"\n data-qa=\"dt-avatar\"\n @click=\"handleClick\"\n >\n <div\n ref=\"canvas\"\n :class=\"[\n canvasClass,\n 'd-avatar__canvas',\n { 'd-avatar--image-loaded': imageLoadedSuccessfully },\n ]\"\n >\n <img\n v-if=\"showImage\"\n ref=\"avatarImage\"\n class=\"d-avatar__image\"\n data-qa=\"dt-avatar-image\"\n :src=\"imageSrc\"\n :alt=\"imageAlt\"\n >\n <div\n v-else-if=\"isIconType\"\n :class=\"[iconClass, AVATAR_KIND_MODIFIERS.icon]\"\n :aria-label=\"clickable ? iconAriaLabel : ''\"\n :data-qa=\"iconDataQa\"\n :role=\"clickable ? 'button' : ''\"\n >\n <!-- @slot Slot for avatar icon. It will display if no imageSrc is provided -->\n <slot\n name=\"icon\"\n :icon-size=\"iconSize || AVATAR_ICON_SIZES[size]\"\n />\n </div>\n <span\n v-else\n :class=\"[AVATAR_KIND_MODIFIERS.initials]\"\n >\n {{ formattedInitials }}\n </span>\n </div>\n <div\n v-if=\"hasOverlayIcon || overlayText\"\n :class=\"overlayClasses\"\n >\n <!-- @slot Slot for overlay icon. -->\n <slot\n v-if=\"hasOverlayIcon\"\n name=\"overlayIcon\"\n />\n <p\n v-else-if=\"overlayText\"\n class=\"d-avatar__overlay-text\"\n >\n {{ overlayText }}\n </p>\n </div>\n <span\n v-if=\"showGroup\"\n class=\"d-avatar__count\"\n data-qa=\"dt-avatar-count\"\n >{{ formattedGroup }}</span>\n <dt-presence\n v-if=\"presence && !showGroup\"\n :presence=\"presence\"\n :class=\"[\n 'd-avatar__presence',\n AVATAR_PRESENCE_SIZE_MODIFIERS[size],\n ]\"\n v-bind=\"presenceProps\"\n data-qa=\"dt-presence\"\n />\n </component>\n</template>\n\n<script>\nimport { getUniqueString, getRandomElement, hasSlotContent } from '@/common/utils';\nimport { DtPresence } from '../presence';\nimport {\n AVATAR_KIND_MODIFIERS,\n AVATAR_SIZE_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_RANDOM_COLORS,\n AVATAR_GROUP_VALIDATOR,\n AVATAR_ICON_SIZES,\n} from './avatar_constants';\nimport { ICON_SIZE_MODIFIERS } from '@/components/icon/icon_constants.js';\nimport { extractInitialsFromName } from './utils';\n\n/**\n * An avatar is a visual representation of a user or object.\n * @see https://dialtone.dialpad.com/components/avatar.html\n */\nexport default {\n name: 'DtAvatar',\n components: { DtPresence },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Id of the avatar content wrapper element\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Pass in a seed to get the random color generation based on that string. For example if you pass in a\n * user ID as the string it will return the same randomly generated colors every time for that user.\n */\n seed: {\n type: String,\n default: undefined,\n },\n\n /**\n * Set the avatar background to a specific color. If undefined will randomize the color which can be deterministic\n * if the seed prop is set.\n */\n color: {\n type: String,\n default: undefined,\n },\n\n /**\n * The size of the avatar\n * @values xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: 'md',\n validator: (size) => Object.keys(AVATAR_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Used to customize the avatar container\n */\n avatarClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Set classes on the avatar canvas. Wrapper around the core avatar image.\n */\n canvasClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Pass through classes. Used to customize the avatar icon\n */\n iconClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Determines whether to show the presence indicator for\n * Avatar - accepts PRESENCE_STATES values: 'busy', 'away', 'offline',\n * or 'active'. By default, it's null and nothing is shown.\n * @values null, busy, away, offline, active\n */\n presence: {\n type: String,\n default: AVATAR_PRESENCE_STATES.NONE,\n validator: (state) => {\n return Object.values(AVATAR_PRESENCE_STATES).includes(state);\n },\n },\n\n /**\n * A set of props to be passed into the presence component.\n */\n presenceProps: {\n type: Object,\n default: () => ({}),\n },\n\n /**\n * Determines whether to show a group avatar.\n * Limit to 2 digits max, more than 99 will be rendered as “99+”.\n * if the number is 1 or less it would just show the regular avatar as if group had not been set.\n */\n group: {\n type: Number,\n default: undefined,\n validator: (group) => AVATAR_GROUP_VALIDATOR(group),\n },\n\n /**\n * The text that overlays the avatar\n */\n overlayText: {\n type: String,\n default: '',\n },\n\n /**\n * Used to customize the avatar overlay\n */\n overlayClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Source of the image\n */\n imageSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Alt attribute of the image, required if imageSrc is provided.\n * Can be set to '' (empty string) if the image is described\n * in text nearby\n */\n imageAlt: {\n type: String,\n default: undefined,\n },\n\n /**\n * Icon size to be displayed on the avatar\n * @values 100, 200, 300, 400, 500, 600, 700, 800\n */\n iconSize: {\n type: String,\n default: '',\n validator: (size) => !size || Object.keys(ICON_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Full name used to extract initials.\n */\n fullName: {\n type: String,\n default: '',\n },\n\n /**\n * Makes the avatar focusable and clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Descriptive label for the icon.\n * To avoid a11y issues, set this prop if clickable and iconName are set.\n */\n iconAriaLabel: {\n type: String,\n default: undefined,\n },\n },\n\n emits: [\n /**\n * Avatar click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n data () {\n return {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_ICON_SIZES,\n imageLoadedSuccessfully: null,\n formattedInitials: '',\n initializing: false,\n hasSlotContent,\n };\n },\n\n computed: {\n isIconType () {\n return hasSlotContent(this.$slots.icon);\n },\n\n hasOverlayIcon () {\n return hasSlotContent(this.$slots.overlayIcon);\n },\n\n iconDataQa () {\n return 'dt-avatar-icon';\n },\n\n avatarClasses () {\n return [\n 'd-avatar',\n AVATAR_SIZE_MODIFIERS[this.validatedSize],\n this.avatarClass,\n {\n 'd-avatar--group': this.showGroup,\n [`d-avatar--color-${this.getColor()}`]: !this.isIconType,\n 'd-avatar--clickable': this.clickable,\n },\n ];\n },\n\n overlayClasses () {\n return [\n 'd-avatar__overlay',\n this.overlayClass,\n { 'd-avatar__overlay-icon': this.hasOverlayIcon },\n ];\n },\n\n showGroup () {\n return AVATAR_GROUP_VALIDATOR(this.group);\n },\n\n formattedGroup () {\n return this.group > 99 ? '99+' : this.group;\n },\n\n validatedSize () {\n // TODO: Group only supports xs size for now. Remove this when we support other sizes.\n return this.group ? 'xs' : this.size;\n },\n\n showImage () {\n return this.imageLoadedSuccessfully !== false && this.imageSrc;\n },\n },\n\n watch: {\n fullName: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n size: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n group: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n imageSrc (newSrc) {\n this.imageLoadedSuccessfully = null;\n if (!newSrc) return;\n\n this.validateProps();\n this.setImageListeners();\n },\n },\n\n mounted () {\n this.validateProps();\n this.setImageListeners();\n },\n\n methods: {\n async setImageListeners () {\n await this.$nextTick();\n const el = this.$refs.avatarImage;\n if (!el) return;\n\n el.addEventListener('load', () => this._loadedImageEventHandler(el), { once: true });\n el.addEventListener('error', () => this._erroredImageEventHandler(el), { once: true });\n },\n\n formatInitials () {\n const initials = extractInitialsFromName(this.fullName);\n\n if (this.validatedSize === 'xs') {\n this.formattedInitials = '';\n } else if (this.validatedSize === 'sm') {\n this.formattedInitials = initials[0];\n } else {\n this.formattedInitials = initials;\n }\n },\n\n getColor () {\n return this.color ?? getRandomElement(AVATAR_RANDOM_COLORS, this.seed);\n },\n\n _loadedImageEventHandler (el) {\n this.imageLoadedSuccessfully = true;\n el.classList.remove('d-d-none');\n },\n\n _erroredImageEventHandler (el) {\n this.imageLoadedSuccessfully = false;\n el.classList.add('d-d-none');\n },\n\n validateProps () {\n if (this.imageSrc && this.imageAlt === undefined) {\n console.error('image-alt required if image-src is provided. Can be set to \"\" (empty string) if the image is described in text nearby');\n }\n },\n\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n//TODO: Move these classes to dialtone and document.\n.d-avatar--image-loaded {\n background-color: transparent;\n background-image: unset;\n}\n\n.d-avatar__count {\n z-index: var(--zi-base);\n}\n\n.d-avatar__presence {\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay {\n background-color: var(--dt-color-surface-contrast-opaque);\n opacity: var(--dt-opacity-900);\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dt-size-radius-circle);\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay-icon {\n color: var(--dt-color-foreground-primary-inverted);\n width: 100%;\n}\n\n.d-avatar__overlay-text {\n color: var(--dt-color-foreground-primary-inverted);\n font-weight: var(--dt-font-weight-bold);\n font-size: var(--dt-font-size-200);\n width: 100%;\n text-align: center;\n}\n\n.d-avatar--clickable {\n --avatar-color-border: transparent;\n\n cursor: pointer;\n padding: 0;\n background-color: transparent;\n\n border-radius: var(--dt-size-radius-circle);\n border: var(--dt-size-border-100) solid var(--avatar-color-border);\n\n &:focus-visible {\n outline: none;\n box-shadow: var(--dt-shadow-focus);\n }\n\n &:hover {\n --avatar-color-border: var(--dt-color-border-default);\n }\n\n &:active {\n --avatar-color-border: var(--dt-color-border-moderate);\n\n transform: scale(0.98);\n }\n}\n</style>\n"],"names":["DtPresence","getUniqueString","AVATAR_SIZE_MODIFIERS","AVATAR_PRESENCE_STATES","AVATAR_GROUP_VALIDATOR","ICON_SIZE_MODIFIERS","AVATAR_KIND_MODIFIERS","AVATAR_PRESENCE_SIZE_MODIFIERS","AVATAR_ICON_SIZES","hasSlotContent","extractInitialsFromName","getRandomElement","AVATAR_RANDOM_COLORS","_openBlock","_createBlock","_resolveDynamicComponent","_createElementVNode","_normalizeClass","_createElementBlock","_renderSlot","_toDisplayString","_mergeProps"],"mappings":"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"}
1
+ {"version":3,"file":"avatar.vue.cjs","sources":["../../../components/avatar/avatar.vue"],"sourcesContent":["<template>\n <component\n :is=\"clickable ? 'button' : 'div'\"\n :id=\"id\"\n :class=\"avatarClasses\"\n data-qa=\"dt-avatar\"\n @click=\"handleClick\"\n >\n <div\n ref=\"canvas\"\n :class=\"[\n canvasClass,\n 'd-avatar__canvas',\n { 'd-avatar--image-loaded': imageLoadedSuccessfully },\n ]\"\n >\n <img\n v-if=\"showImage\"\n ref=\"avatarImage\"\n class=\"d-avatar__image\"\n data-qa=\"dt-avatar-image\"\n :src=\"imageSrc\"\n :alt=\"imageAlt\"\n >\n <dt-icon\n v-else-if=\"iconName\"\n :name=\"iconName\"\n :aria-label=\"iconAriaLabel\"\n :size=\"iconSize || AVATAR_ICON_SIZES[size]\"\n :class=\"[iconClass, AVATAR_KIND_MODIFIERS.icon]\"\n data-qa=\"dt-avatar-icon\"\n />\n <span\n v-else\n :class=\"[AVATAR_KIND_MODIFIERS.initials]\"\n >\n {{ formattedInitials }}\n </span>\n </div>\n <div\n v-if=\"overlayIcon || overlayText\"\n :class=\"overlayClasses\"\n >\n <dt-icon\n v-if=\"overlayIcon\"\n class=\"d-avatar__overlay-icon\"\n :name=\"overlayIcon\"\n />\n <p\n v-else-if=\"overlayText\"\n class=\"d-avatar__overlay-text\"\n >\n {{ overlayText }}\n </p>\n </div>\n <span\n v-if=\"showGroup\"\n class=\"d-avatar__count\"\n data-qa=\"dt-avatar-count\"\n >{{ formattedGroup }}</span>\n <dt-presence\n v-if=\"presence && !showGroup\"\n :presence=\"presence\"\n :class=\"[\n 'd-avatar__presence',\n AVATAR_PRESENCE_SIZE_MODIFIERS[size],\n ]\"\n v-bind=\"presenceProps\"\n data-qa=\"dt-presence\"\n />\n </component>\n</template>\n\n<script>\nimport { getUniqueString, getRandomElement } from '@/common/utils';\nimport { DtPresence } from '../presence';\nimport { DtIcon } from '@/components/icon';\nimport {\n AVATAR_KIND_MODIFIERS,\n AVATAR_SIZE_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_RANDOM_COLORS,\n AVATAR_GROUP_VALIDATOR,\n AVATAR_ICON_SIZES,\n} from './avatar_constants';\nimport { getIconNames } from '@/common/storybook_utils.js';\nimport { ICON_SIZE_MODIFIERS } from '@/components/icon/icon_constants.js';\nimport { extractInitialsFromName } from './utils';\n\nconst ICONS_LIST = getIconNames();\n\n/**\n * An avatar is a visual representation of a user or object.\n * @see https://dialtone.dialpad.com/components/avatar.html\n */\nexport default {\n name: 'DtAvatar',\n components: { DtPresence, DtIcon },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Id of the avatar content wrapper element\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Pass in a seed to get the random color generation based on that string. For example if you pass in a\n * user ID as the string it will return the same randomly generated colors every time for that user.\n */\n seed: {\n type: String,\n default: undefined,\n },\n\n /**\n * Set the avatar background to a specific color. If undefined will randomize the color which can be deterministic\n * if the seed prop is set.\n */\n color: {\n type: String,\n default: undefined,\n },\n\n /**\n * The size of the avatar\n * @values xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: 'md',\n validator: (size) => Object.keys(AVATAR_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Used to customize the avatar container\n */\n avatarClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Set classes on the avatar canvas. Wrapper around the core avatar image.\n */\n canvasClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Pass through classes. Used to customize the avatar icon\n */\n iconClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Determines whether to show the presence indicator for\n * Avatar - accepts PRESENCE_STATES values: 'busy', 'away', 'offline',\n * or 'active'. By default, it's null and nothing is shown.\n * @values null, busy, away, offline, active\n */\n presence: {\n type: String,\n default: AVATAR_PRESENCE_STATES.NONE,\n validator: (state) => {\n return Object.values(AVATAR_PRESENCE_STATES).includes(state);\n },\n },\n\n /**\n * A set of props to be passed into the presence component.\n */\n presenceProps: {\n type: Object,\n default: () => ({}),\n },\n\n /**\n * Determines whether to show a group avatar.\n * Limit to 2 digits max, more than 99 will be rendered as “99+”.\n * if the number is 1 or less it would just show the regular avatar as if group had not been set.\n */\n group: {\n type: Number,\n default: undefined,\n validator: (group) => AVATAR_GROUP_VALIDATOR(group),\n },\n\n /**\n * The icon that overlays the avatar\n */\n overlayIcon: {\n type: String,\n default: '',\n },\n\n /**\n * The text that overlays the avatar\n */\n overlayText: {\n type: String,\n default: '',\n },\n\n /**\n * Used to customize the avatar overlay\n */\n overlayClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Source of the image\n */\n imageSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Alt attribute of the image, required if imageSrc is provided.\n * Can be set to '' (empty string) if the image is described\n * in text nearby\n */\n imageAlt: {\n type: String,\n default: undefined,\n },\n\n /**\n * Icon name to be displayed on the avatar\n */\n iconName: {\n type: String,\n default: undefined,\n validator: (name) => ICONS_LIST.includes(name),\n },\n\n /**\n * Icon size to be displayed on the avatar\n * @values 100, 200, 300, 400, 500, 600, 700, 800\n */\n iconSize: {\n type: String,\n default: '',\n validator: (size) => !size || Object.keys(ICON_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Full name used to extract initials.\n */\n fullName: {\n type: String,\n default: '',\n },\n\n /**\n * Makes the avatar focusable and clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Descriptive label for the icon.\n * To avoid a11y issues, set this prop if clickable and iconName are set.\n */\n iconAriaLabel: {\n type: String,\n default: undefined,\n },\n },\n\n emits: [\n /**\n * Avatar click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n data () {\n return {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_ICON_SIZES,\n imageLoadedSuccessfully: null,\n formattedInitials: '',\n initializing: false,\n };\n },\n\n computed: {\n isNotIconType () {\n return !this.iconName;\n },\n\n avatarClasses () {\n return [\n 'd-avatar',\n AVATAR_SIZE_MODIFIERS[this.validatedSize],\n this.avatarClass,\n {\n 'd-avatar--group': this.showGroup,\n [`d-avatar--color-${this.getColor()}`]: this.isNotIconType,\n 'd-avatar--clickable': this.clickable,\n },\n ];\n },\n\n overlayClasses () {\n return [\n 'd-avatar__overlay',\n this.overlayClass,\n ];\n },\n\n showGroup () {\n return AVATAR_GROUP_VALIDATOR(this.group);\n },\n\n formattedGroup () {\n return this.group > 99 ? '99+' : this.group;\n },\n\n validatedSize () {\n // TODO: Group only supports xs size for now. Remove this when we support other sizes.\n return this.group ? 'xs' : this.size;\n },\n\n showImage () {\n return this.imageLoadedSuccessfully !== false && this.imageSrc;\n },\n },\n\n watch: {\n fullName: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n size: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n group: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n imageSrc (newSrc) {\n this.imageLoadedSuccessfully = null;\n if (!newSrc) return;\n\n this.validateProps();\n this.setImageListeners();\n },\n },\n\n mounted () {\n this.validateProps();\n this.setImageListeners();\n },\n\n methods: {\n async setImageListeners () {\n await this.$nextTick();\n const el = this.$refs.avatarImage;\n if (!el) return;\n\n el.addEventListener('load', () => this._loadedImageEventHandler(el), { once: true });\n el.addEventListener('error', () => this._erroredImageEventHandler(el), { once: true });\n },\n\n formatInitials () {\n const initials = extractInitialsFromName(this.fullName);\n\n if (this.validatedSize === 'xs') {\n this.formattedInitials = '';\n } else if (this.validatedSize === 'sm') {\n this.formattedInitials = initials[0];\n } else {\n this.formattedInitials = initials;\n }\n },\n\n getColor () {\n return this.color ?? getRandomElement(AVATAR_RANDOM_COLORS, this.seed);\n },\n\n _loadedImageEventHandler (el) {\n this.imageLoadedSuccessfully = true;\n el.classList.remove('d-d-none');\n },\n\n _erroredImageEventHandler (el) {\n this.imageLoadedSuccessfully = false;\n el.classList.add('d-d-none');\n },\n\n validateProps () {\n if (this.imageSrc && this.imageAlt === undefined) {\n console.error('image-alt required if image-src is provided. Can be set to \"\" (empty string) if the image is described in text nearby');\n }\n },\n\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n//TODO: Move these classes to dialtone and document.\n.d-avatar--image-loaded {\n background-color: transparent;\n background-image: unset;\n}\n\n.d-avatar__count {\n z-index: var(--zi-base);\n}\n\n.d-avatar__presence {\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay {\n background-color: var(--dt-color-surface-contrast-opaque);\n opacity: var(--dt-opacity-900);\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dt-size-radius-circle);\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay-icon {\n color: var(--dt-color-foreground-primary-inverted);\n width: 100%;\n}\n\n.d-avatar__overlay-text {\n color: var(--dt-color-foreground-primary-inverted);\n font-weight: var(--dt-font-weight-bold);\n font-size: var(--dt-font-size-200);\n width: 100%;\n text-align: center;\n}\n\n.d-avatar--clickable {\n --avatar-color-border: transparent;\n\n cursor: pointer;\n padding: 0;\n background-color: transparent;\n\n border-radius: var(--dt-size-radius-circle);\n border: var(--dt-size-border-100) solid var(--avatar-color-border);\n\n &:focus-visible {\n outline: none;\n box-shadow: var(--dt-shadow-focus);\n }\n\n &:hover {\n --avatar-color-border: var(--dt-color-border-default);\n }\n\n &:active {\n --avatar-color-border: var(--dt-color-border-moderate);\n\n transform: scale(0.98);\n }\n}\n</style>\n"],"names":["getIconNames","DtPresence","DtIcon","getUniqueString","AVATAR_SIZE_MODIFIERS","AVATAR_PRESENCE_STATES","AVATAR_GROUP_VALIDATOR","ICON_SIZE_MODIFIERS","AVATAR_KIND_MODIFIERS","AVATAR_PRESENCE_SIZE_MODIFIERS","AVATAR_ICON_SIZES","extractInitialsFromName","getRandomElement","AVATAR_RANDOM_COLORS","_openBlock","_createBlock","_resolveDynamicComponent","_createElementVNode","_normalizeClass","_createElementBlock","_toDisplayString","_mergeProps"],"mappings":"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"}
@@ -1,14 +1,17 @@
1
- import { getUniqueString, hasSlotContent, getRandomElement } from "../../common/utils.js";
1
+ import { getUniqueString, getRandomElement } from "../../common/utils.js";
2
2
  import { AVATAR_SIZE_MODIFIERS, AVATAR_PRESENCE_STATES, AVATAR_GROUP_VALIDATOR, AVATAR_KIND_MODIFIERS, AVATAR_PRESENCE_SIZE_MODIFIERS, AVATAR_ICON_SIZES, AVATAR_RANDOM_COLORS } from "./avatar_constants.js";
3
+ import { getIconNames } from "../../common/storybook_utils.js";
3
4
  import { ICON_SIZE_MODIFIERS } from "../icon/icon_constants.js";
4
5
  import { extractInitialsFromName } from "./utils.js";
5
- import { resolveComponent, openBlock, createBlock, resolveDynamicComponent, normalizeClass, withCtx, createElementVNode, createElementBlock, renderSlot, toDisplayString, createCommentVNode, mergeProps } from "vue";
6
+ import { resolveComponent, openBlock, createBlock, resolveDynamicComponent, normalizeClass, withCtx, createElementVNode, createElementBlock, toDisplayString, createCommentVNode, mergeProps } from "vue";
6
7
  /* empty css */
7
8
  import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js";
8
9
  import DtPresence from "../presence/presence.vue.js";
10
+ import DtIcon from "../icon/icon.vue.js";
11
+ const ICONS_LIST = getIconNames();
9
12
  const _sfc_main = {
10
13
  name: "DtAvatar",
11
- components: { DtPresence },
14
+ components: { DtPresence, DtIcon },
12
15
  inheritAttrs: false,
13
16
  props: {
14
17
  /**
@@ -96,6 +99,13 @@ const _sfc_main = {
96
99
  default: void 0,
97
100
  validator: (group) => AVATAR_GROUP_VALIDATOR(group)
98
101
  },
102
+ /**
103
+ * The icon that overlays the avatar
104
+ */
105
+ overlayIcon: {
106
+ type: String,
107
+ default: ""
108
+ },
99
109
  /**
100
110
  * The text that overlays the avatar
101
111
  */
@@ -126,6 +136,14 @@ const _sfc_main = {
126
136
  type: String,
127
137
  default: void 0
128
138
  },
139
+ /**
140
+ * Icon name to be displayed on the avatar
141
+ */
142
+ iconName: {
143
+ type: String,
144
+ default: void 0,
145
+ validator: (name) => ICONS_LIST.includes(name)
146
+ },
129
147
  /**
130
148
  * Icon size to be displayed on the avatar
131
149
  * @values 100, 200, 300, 400, 500, 600, 700, 800
@@ -176,19 +194,12 @@ const _sfc_main = {
176
194
  AVATAR_ICON_SIZES,
177
195
  imageLoadedSuccessfully: null,
178
196
  formattedInitials: "",
179
- initializing: false,
180
- hasSlotContent
197
+ initializing: false
181
198
  };
182
199
  },
183
200
  computed: {
184
- isIconType() {
185
- return hasSlotContent(this.$slots.icon);
186
- },
187
- hasOverlayIcon() {
188
- return hasSlotContent(this.$slots.overlayIcon);
189
- },
190
- iconDataQa() {
191
- return "dt-avatar-icon";
201
+ isNotIconType() {
202
+ return !this.iconName;
192
203
  },
193
204
  avatarClasses() {
194
205
  return [
@@ -197,7 +208,7 @@ const _sfc_main = {
197
208
  this.avatarClass,
198
209
  {
199
210
  "d-avatar--group": this.showGroup,
200
- [`d-avatar--color-${this.getColor()}`]: !this.isIconType,
211
+ [`d-avatar--color-${this.getColor()}`]: this.isNotIconType,
201
212
  "d-avatar--clickable": this.clickable
202
213
  }
203
214
  ];
@@ -205,8 +216,7 @@ const _sfc_main = {
205
216
  overlayClasses() {
206
217
  return [
207
218
  "d-avatar__overlay",
208
- this.overlayClass,
209
- { "d-avatar__overlay-icon": this.hasOverlayIcon }
219
+ this.overlayClass
210
220
  ];
211
221
  },
212
222
  showGroup() {
@@ -293,17 +303,17 @@ const _sfc_main = {
293
303
  }
294
304
  };
295
305
  const _hoisted_1 = ["src", "alt"];
296
- const _hoisted_2 = ["aria-label", "data-qa", "role"];
297
- const _hoisted_3 = {
306
+ const _hoisted_2 = {
298
307
  key: 1,
299
308
  class: "d-avatar__overlay-text"
300
309
  };
301
- const _hoisted_4 = {
310
+ const _hoisted_3 = {
302
311
  key: 1,
303
312
  class: "d-avatar__count",
304
313
  "data-qa": "dt-avatar-count"
305
314
  };
306
315
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
316
+ const _component_dt_icon = resolveComponent("dt-icon");
307
317
  const _component_dt_presence = resolveComponent("dt-presence");
308
318
  return openBlock(), createBlock(resolveDynamicComponent($props.clickable ? "button" : "div"), {
309
319
  id: $props.id,
@@ -327,28 +337,29 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
327
337
  "data-qa": "dt-avatar-image",
328
338
  src: $props.imageSrc,
329
339
  alt: $props.imageAlt
330
- }, null, 8, _hoisted_1)) : $options.isIconType ? (openBlock(), createElementBlock("div", {
340
+ }, null, 8, _hoisted_1)) : $props.iconName ? (openBlock(), createBlock(_component_dt_icon, {
331
341
  key: 1,
342
+ name: $props.iconName,
343
+ "aria-label": $props.iconAriaLabel,
344
+ size: $props.iconSize || $data.AVATAR_ICON_SIZES[$props.size],
332
345
  class: normalizeClass([$props.iconClass, $data.AVATAR_KIND_MODIFIERS.icon]),
333
- "aria-label": $props.clickable ? $props.iconAriaLabel : "",
334
- "data-qa": $options.iconDataQa,
335
- role: $props.clickable ? "button" : ""
336
- }, [
337
- renderSlot(_ctx.$slots, "icon", {
338
- iconSize: $props.iconSize || $data.AVATAR_ICON_SIZES[$props.size]
339
- })
340
- ], 10, _hoisted_2)) : (openBlock(), createElementBlock("span", {
346
+ "data-qa": "dt-avatar-icon"
347
+ }, null, 8, ["name", "aria-label", "size", "class"])) : (openBlock(), createElementBlock("span", {
341
348
  key: 2,
342
349
  class: normalizeClass([$data.AVATAR_KIND_MODIFIERS.initials])
343
350
  }, toDisplayString($data.formattedInitials), 3))
344
351
  ], 2),
345
- $options.hasOverlayIcon || $props.overlayText ? (openBlock(), createElementBlock("div", {
352
+ $props.overlayIcon || $props.overlayText ? (openBlock(), createElementBlock("div", {
346
353
  key: 0,
347
354
  class: normalizeClass($options.overlayClasses)
348
355
  }, [
349
- $options.hasOverlayIcon ? renderSlot(_ctx.$slots, "overlayIcon", { key: 0 }) : $props.overlayText ? (openBlock(), createElementBlock("p", _hoisted_3, toDisplayString($props.overlayText), 1)) : createCommentVNode("", true)
356
+ $props.overlayIcon ? (openBlock(), createBlock(_component_dt_icon, {
357
+ key: 0,
358
+ class: "d-avatar__overlay-icon",
359
+ name: $props.overlayIcon
360
+ }, null, 8, ["name"])) : $props.overlayText ? (openBlock(), createElementBlock("p", _hoisted_2, toDisplayString($props.overlayText), 1)) : createCommentVNode("", true)
350
361
  ], 2)) : createCommentVNode("", true),
351
- $options.showGroup ? (openBlock(), createElementBlock("span", _hoisted_4, toDisplayString($options.formattedGroup), 1)) : createCommentVNode("", true),
362
+ $options.showGroup ? (openBlock(), createElementBlock("span", _hoisted_3, toDisplayString($options.formattedGroup), 1)) : createCommentVNode("", true),
352
363
  $props.presence && !$options.showGroup ? (openBlock(), createBlock(_component_dt_presence, mergeProps({
353
364
  key: 2,
354
365
  presence: $props.presence,
@@ -358,7 +369,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
358
369
  ]
359
370
  }, $props.presenceProps, { "data-qa": "dt-presence" }), null, 16, ["presence", "class"])) : createCommentVNode("", true)
360
371
  ]),
361
- _: 3
372
+ _: 1
362
373
  }, 8, ["id", "class", "onClick"]);
363
374
  }
364
375
  const DtAvatar = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.vue.js","sources":["../../../components/avatar/avatar.vue"],"sourcesContent":["<template>\n <component\n :is=\"clickable ? 'button' : 'div'\"\n :id=\"id\"\n :class=\"avatarClasses\"\n data-qa=\"dt-avatar\"\n @click=\"handleClick\"\n >\n <div\n ref=\"canvas\"\n :class=\"[\n canvasClass,\n 'd-avatar__canvas',\n { 'd-avatar--image-loaded': imageLoadedSuccessfully },\n ]\"\n >\n <img\n v-if=\"showImage\"\n ref=\"avatarImage\"\n class=\"d-avatar__image\"\n data-qa=\"dt-avatar-image\"\n :src=\"imageSrc\"\n :alt=\"imageAlt\"\n >\n <div\n v-else-if=\"isIconType\"\n :class=\"[iconClass, AVATAR_KIND_MODIFIERS.icon]\"\n :aria-label=\"clickable ? iconAriaLabel : ''\"\n :data-qa=\"iconDataQa\"\n :role=\"clickable ? 'button' : ''\"\n >\n <!-- @slot Slot for avatar icon. It will display if no imageSrc is provided -->\n <slot\n name=\"icon\"\n :icon-size=\"iconSize || AVATAR_ICON_SIZES[size]\"\n />\n </div>\n <span\n v-else\n :class=\"[AVATAR_KIND_MODIFIERS.initials]\"\n >\n {{ formattedInitials }}\n </span>\n </div>\n <div\n v-if=\"hasOverlayIcon || overlayText\"\n :class=\"overlayClasses\"\n >\n <!-- @slot Slot for overlay icon. -->\n <slot\n v-if=\"hasOverlayIcon\"\n name=\"overlayIcon\"\n />\n <p\n v-else-if=\"overlayText\"\n class=\"d-avatar__overlay-text\"\n >\n {{ overlayText }}\n </p>\n </div>\n <span\n v-if=\"showGroup\"\n class=\"d-avatar__count\"\n data-qa=\"dt-avatar-count\"\n >{{ formattedGroup }}</span>\n <dt-presence\n v-if=\"presence && !showGroup\"\n :presence=\"presence\"\n :class=\"[\n 'd-avatar__presence',\n AVATAR_PRESENCE_SIZE_MODIFIERS[size],\n ]\"\n v-bind=\"presenceProps\"\n data-qa=\"dt-presence\"\n />\n </component>\n</template>\n\n<script>\nimport { getUniqueString, getRandomElement, hasSlotContent } from '@/common/utils';\nimport { DtPresence } from '../presence';\nimport {\n AVATAR_KIND_MODIFIERS,\n AVATAR_SIZE_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_RANDOM_COLORS,\n AVATAR_GROUP_VALIDATOR,\n AVATAR_ICON_SIZES,\n} from './avatar_constants';\nimport { ICON_SIZE_MODIFIERS } from '@/components/icon/icon_constants.js';\nimport { extractInitialsFromName } from './utils';\n\n/**\n * An avatar is a visual representation of a user or object.\n * @see https://dialtone.dialpad.com/components/avatar.html\n */\nexport default {\n name: 'DtAvatar',\n components: { DtPresence },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Id of the avatar content wrapper element\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Pass in a seed to get the random color generation based on that string. For example if you pass in a\n * user ID as the string it will return the same randomly generated colors every time for that user.\n */\n seed: {\n type: String,\n default: undefined,\n },\n\n /**\n * Set the avatar background to a specific color. If undefined will randomize the color which can be deterministic\n * if the seed prop is set.\n */\n color: {\n type: String,\n default: undefined,\n },\n\n /**\n * The size of the avatar\n * @values xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: 'md',\n validator: (size) => Object.keys(AVATAR_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Used to customize the avatar container\n */\n avatarClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Set classes on the avatar canvas. Wrapper around the core avatar image.\n */\n canvasClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Pass through classes. Used to customize the avatar icon\n */\n iconClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Determines whether to show the presence indicator for\n * Avatar - accepts PRESENCE_STATES values: 'busy', 'away', 'offline',\n * or 'active'. By default, it's null and nothing is shown.\n * @values null, busy, away, offline, active\n */\n presence: {\n type: String,\n default: AVATAR_PRESENCE_STATES.NONE,\n validator: (state) => {\n return Object.values(AVATAR_PRESENCE_STATES).includes(state);\n },\n },\n\n /**\n * A set of props to be passed into the presence component.\n */\n presenceProps: {\n type: Object,\n default: () => ({}),\n },\n\n /**\n * Determines whether to show a group avatar.\n * Limit to 2 digits max, more than 99 will be rendered as “99+”.\n * if the number is 1 or less it would just show the regular avatar as if group had not been set.\n */\n group: {\n type: Number,\n default: undefined,\n validator: (group) => AVATAR_GROUP_VALIDATOR(group),\n },\n\n /**\n * The text that overlays the avatar\n */\n overlayText: {\n type: String,\n default: '',\n },\n\n /**\n * Used to customize the avatar overlay\n */\n overlayClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Source of the image\n */\n imageSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Alt attribute of the image, required if imageSrc is provided.\n * Can be set to '' (empty string) if the image is described\n * in text nearby\n */\n imageAlt: {\n type: String,\n default: undefined,\n },\n\n /**\n * Icon size to be displayed on the avatar\n * @values 100, 200, 300, 400, 500, 600, 700, 800\n */\n iconSize: {\n type: String,\n default: '',\n validator: (size) => !size || Object.keys(ICON_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Full name used to extract initials.\n */\n fullName: {\n type: String,\n default: '',\n },\n\n /**\n * Makes the avatar focusable and clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Descriptive label for the icon.\n * To avoid a11y issues, set this prop if clickable and iconName are set.\n */\n iconAriaLabel: {\n type: String,\n default: undefined,\n },\n },\n\n emits: [\n /**\n * Avatar click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n data () {\n return {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_ICON_SIZES,\n imageLoadedSuccessfully: null,\n formattedInitials: '',\n initializing: false,\n hasSlotContent,\n };\n },\n\n computed: {\n isIconType () {\n return hasSlotContent(this.$slots.icon);\n },\n\n hasOverlayIcon () {\n return hasSlotContent(this.$slots.overlayIcon);\n },\n\n iconDataQa () {\n return 'dt-avatar-icon';\n },\n\n avatarClasses () {\n return [\n 'd-avatar',\n AVATAR_SIZE_MODIFIERS[this.validatedSize],\n this.avatarClass,\n {\n 'd-avatar--group': this.showGroup,\n [`d-avatar--color-${this.getColor()}`]: !this.isIconType,\n 'd-avatar--clickable': this.clickable,\n },\n ];\n },\n\n overlayClasses () {\n return [\n 'd-avatar__overlay',\n this.overlayClass,\n { 'd-avatar__overlay-icon': this.hasOverlayIcon },\n ];\n },\n\n showGroup () {\n return AVATAR_GROUP_VALIDATOR(this.group);\n },\n\n formattedGroup () {\n return this.group > 99 ? '99+' : this.group;\n },\n\n validatedSize () {\n // TODO: Group only supports xs size for now. Remove this when we support other sizes.\n return this.group ? 'xs' : this.size;\n },\n\n showImage () {\n return this.imageLoadedSuccessfully !== false && this.imageSrc;\n },\n },\n\n watch: {\n fullName: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n size: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n group: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n imageSrc (newSrc) {\n this.imageLoadedSuccessfully = null;\n if (!newSrc) return;\n\n this.validateProps();\n this.setImageListeners();\n },\n },\n\n mounted () {\n this.validateProps();\n this.setImageListeners();\n },\n\n methods: {\n async setImageListeners () {\n await this.$nextTick();\n const el = this.$refs.avatarImage;\n if (!el) return;\n\n el.addEventListener('load', () => this._loadedImageEventHandler(el), { once: true });\n el.addEventListener('error', () => this._erroredImageEventHandler(el), { once: true });\n },\n\n formatInitials () {\n const initials = extractInitialsFromName(this.fullName);\n\n if (this.validatedSize === 'xs') {\n this.formattedInitials = '';\n } else if (this.validatedSize === 'sm') {\n this.formattedInitials = initials[0];\n } else {\n this.formattedInitials = initials;\n }\n },\n\n getColor () {\n return this.color ?? getRandomElement(AVATAR_RANDOM_COLORS, this.seed);\n },\n\n _loadedImageEventHandler (el) {\n this.imageLoadedSuccessfully = true;\n el.classList.remove('d-d-none');\n },\n\n _erroredImageEventHandler (el) {\n this.imageLoadedSuccessfully = false;\n el.classList.add('d-d-none');\n },\n\n validateProps () {\n if (this.imageSrc && this.imageAlt === undefined) {\n console.error('image-alt required if image-src is provided. Can be set to \"\" (empty string) if the image is described in text nearby');\n }\n },\n\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n//TODO: Move these classes to dialtone and document.\n.d-avatar--image-loaded {\n background-color: transparent;\n background-image: unset;\n}\n\n.d-avatar__count {\n z-index: var(--zi-base);\n}\n\n.d-avatar__presence {\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay {\n background-color: var(--dt-color-surface-contrast-opaque);\n opacity: var(--dt-opacity-900);\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dt-size-radius-circle);\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay-icon {\n color: var(--dt-color-foreground-primary-inverted);\n width: 100%;\n}\n\n.d-avatar__overlay-text {\n color: var(--dt-color-foreground-primary-inverted);\n font-weight: var(--dt-font-weight-bold);\n font-size: var(--dt-font-size-200);\n width: 100%;\n text-align: center;\n}\n\n.d-avatar--clickable {\n --avatar-color-border: transparent;\n\n cursor: pointer;\n padding: 0;\n background-color: transparent;\n\n border-radius: var(--dt-size-radius-circle);\n border: var(--dt-size-border-100) solid var(--avatar-color-border);\n\n &:focus-visible {\n outline: none;\n box-shadow: var(--dt-shadow-focus);\n }\n\n &:hover {\n --avatar-color-border: var(--dt-color-border-default);\n }\n\n &:active {\n --avatar-color-border: var(--dt-color-border-moderate);\n\n transform: scale(0.98);\n }\n}\n</style>\n"],"names":["_openBlock","_createBlock","_resolveDynamicComponent","_createElementVNode","_normalizeClass","_createElementBlock","_renderSlot","_toDisplayString","_mergeProps"],"mappings":"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"}
1
+ {"version":3,"file":"avatar.vue.js","sources":["../../../components/avatar/avatar.vue"],"sourcesContent":["<template>\n <component\n :is=\"clickable ? 'button' : 'div'\"\n :id=\"id\"\n :class=\"avatarClasses\"\n data-qa=\"dt-avatar\"\n @click=\"handleClick\"\n >\n <div\n ref=\"canvas\"\n :class=\"[\n canvasClass,\n 'd-avatar__canvas',\n { 'd-avatar--image-loaded': imageLoadedSuccessfully },\n ]\"\n >\n <img\n v-if=\"showImage\"\n ref=\"avatarImage\"\n class=\"d-avatar__image\"\n data-qa=\"dt-avatar-image\"\n :src=\"imageSrc\"\n :alt=\"imageAlt\"\n >\n <dt-icon\n v-else-if=\"iconName\"\n :name=\"iconName\"\n :aria-label=\"iconAriaLabel\"\n :size=\"iconSize || AVATAR_ICON_SIZES[size]\"\n :class=\"[iconClass, AVATAR_KIND_MODIFIERS.icon]\"\n data-qa=\"dt-avatar-icon\"\n />\n <span\n v-else\n :class=\"[AVATAR_KIND_MODIFIERS.initials]\"\n >\n {{ formattedInitials }}\n </span>\n </div>\n <div\n v-if=\"overlayIcon || overlayText\"\n :class=\"overlayClasses\"\n >\n <dt-icon\n v-if=\"overlayIcon\"\n class=\"d-avatar__overlay-icon\"\n :name=\"overlayIcon\"\n />\n <p\n v-else-if=\"overlayText\"\n class=\"d-avatar__overlay-text\"\n >\n {{ overlayText }}\n </p>\n </div>\n <span\n v-if=\"showGroup\"\n class=\"d-avatar__count\"\n data-qa=\"dt-avatar-count\"\n >{{ formattedGroup }}</span>\n <dt-presence\n v-if=\"presence && !showGroup\"\n :presence=\"presence\"\n :class=\"[\n 'd-avatar__presence',\n AVATAR_PRESENCE_SIZE_MODIFIERS[size],\n ]\"\n v-bind=\"presenceProps\"\n data-qa=\"dt-presence\"\n />\n </component>\n</template>\n\n<script>\nimport { getUniqueString, getRandomElement } from '@/common/utils';\nimport { DtPresence } from '../presence';\nimport { DtIcon } from '@/components/icon';\nimport {\n AVATAR_KIND_MODIFIERS,\n AVATAR_SIZE_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_RANDOM_COLORS,\n AVATAR_GROUP_VALIDATOR,\n AVATAR_ICON_SIZES,\n} from './avatar_constants';\nimport { getIconNames } from '@/common/storybook_utils.js';\nimport { ICON_SIZE_MODIFIERS } from '@/components/icon/icon_constants.js';\nimport { extractInitialsFromName } from './utils';\n\nconst ICONS_LIST = getIconNames();\n\n/**\n * An avatar is a visual representation of a user or object.\n * @see https://dialtone.dialpad.com/components/avatar.html\n */\nexport default {\n name: 'DtAvatar',\n components: { DtPresence, DtIcon },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Id of the avatar content wrapper element\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Pass in a seed to get the random color generation based on that string. For example if you pass in a\n * user ID as the string it will return the same randomly generated colors every time for that user.\n */\n seed: {\n type: String,\n default: undefined,\n },\n\n /**\n * Set the avatar background to a specific color. If undefined will randomize the color which can be deterministic\n * if the seed prop is set.\n */\n color: {\n type: String,\n default: undefined,\n },\n\n /**\n * The size of the avatar\n * @values xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: 'md',\n validator: (size) => Object.keys(AVATAR_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Used to customize the avatar container\n */\n avatarClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Set classes on the avatar canvas. Wrapper around the core avatar image.\n */\n canvasClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Pass through classes. Used to customize the avatar icon\n */\n iconClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Determines whether to show the presence indicator for\n * Avatar - accepts PRESENCE_STATES values: 'busy', 'away', 'offline',\n * or 'active'. By default, it's null and nothing is shown.\n * @values null, busy, away, offline, active\n */\n presence: {\n type: String,\n default: AVATAR_PRESENCE_STATES.NONE,\n validator: (state) => {\n return Object.values(AVATAR_PRESENCE_STATES).includes(state);\n },\n },\n\n /**\n * A set of props to be passed into the presence component.\n */\n presenceProps: {\n type: Object,\n default: () => ({}),\n },\n\n /**\n * Determines whether to show a group avatar.\n * Limit to 2 digits max, more than 99 will be rendered as “99+”.\n * if the number is 1 or less it would just show the regular avatar as if group had not been set.\n */\n group: {\n type: Number,\n default: undefined,\n validator: (group) => AVATAR_GROUP_VALIDATOR(group),\n },\n\n /**\n * The icon that overlays the avatar\n */\n overlayIcon: {\n type: String,\n default: '',\n },\n\n /**\n * The text that overlays the avatar\n */\n overlayText: {\n type: String,\n default: '',\n },\n\n /**\n * Used to customize the avatar overlay\n */\n overlayClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Source of the image\n */\n imageSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Alt attribute of the image, required if imageSrc is provided.\n * Can be set to '' (empty string) if the image is described\n * in text nearby\n */\n imageAlt: {\n type: String,\n default: undefined,\n },\n\n /**\n * Icon name to be displayed on the avatar\n */\n iconName: {\n type: String,\n default: undefined,\n validator: (name) => ICONS_LIST.includes(name),\n },\n\n /**\n * Icon size to be displayed on the avatar\n * @values 100, 200, 300, 400, 500, 600, 700, 800\n */\n iconSize: {\n type: String,\n default: '',\n validator: (size) => !size || Object.keys(ICON_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Full name used to extract initials.\n */\n fullName: {\n type: String,\n default: '',\n },\n\n /**\n * Makes the avatar focusable and clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Descriptive label for the icon.\n * To avoid a11y issues, set this prop if clickable and iconName are set.\n */\n iconAriaLabel: {\n type: String,\n default: undefined,\n },\n },\n\n emits: [\n /**\n * Avatar click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n data () {\n return {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_ICON_SIZES,\n imageLoadedSuccessfully: null,\n formattedInitials: '',\n initializing: false,\n };\n },\n\n computed: {\n isNotIconType () {\n return !this.iconName;\n },\n\n avatarClasses () {\n return [\n 'd-avatar',\n AVATAR_SIZE_MODIFIERS[this.validatedSize],\n this.avatarClass,\n {\n 'd-avatar--group': this.showGroup,\n [`d-avatar--color-${this.getColor()}`]: this.isNotIconType,\n 'd-avatar--clickable': this.clickable,\n },\n ];\n },\n\n overlayClasses () {\n return [\n 'd-avatar__overlay',\n this.overlayClass,\n ];\n },\n\n showGroup () {\n return AVATAR_GROUP_VALIDATOR(this.group);\n },\n\n formattedGroup () {\n return this.group > 99 ? '99+' : this.group;\n },\n\n validatedSize () {\n // TODO: Group only supports xs size for now. Remove this when we support other sizes.\n return this.group ? 'xs' : this.size;\n },\n\n showImage () {\n return this.imageLoadedSuccessfully !== false && this.imageSrc;\n },\n },\n\n watch: {\n fullName: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n size: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n group: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n imageSrc (newSrc) {\n this.imageLoadedSuccessfully = null;\n if (!newSrc) return;\n\n this.validateProps();\n this.setImageListeners();\n },\n },\n\n mounted () {\n this.validateProps();\n this.setImageListeners();\n },\n\n methods: {\n async setImageListeners () {\n await this.$nextTick();\n const el = this.$refs.avatarImage;\n if (!el) return;\n\n el.addEventListener('load', () => this._loadedImageEventHandler(el), { once: true });\n el.addEventListener('error', () => this._erroredImageEventHandler(el), { once: true });\n },\n\n formatInitials () {\n const initials = extractInitialsFromName(this.fullName);\n\n if (this.validatedSize === 'xs') {\n this.formattedInitials = '';\n } else if (this.validatedSize === 'sm') {\n this.formattedInitials = initials[0];\n } else {\n this.formattedInitials = initials;\n }\n },\n\n getColor () {\n return this.color ?? getRandomElement(AVATAR_RANDOM_COLORS, this.seed);\n },\n\n _loadedImageEventHandler (el) {\n this.imageLoadedSuccessfully = true;\n el.classList.remove('d-d-none');\n },\n\n _erroredImageEventHandler (el) {\n this.imageLoadedSuccessfully = false;\n el.classList.add('d-d-none');\n },\n\n validateProps () {\n if (this.imageSrc && this.imageAlt === undefined) {\n console.error('image-alt required if image-src is provided. Can be set to \"\" (empty string) if the image is described in text nearby');\n }\n },\n\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n//TODO: Move these classes to dialtone and document.\n.d-avatar--image-loaded {\n background-color: transparent;\n background-image: unset;\n}\n\n.d-avatar__count {\n z-index: var(--zi-base);\n}\n\n.d-avatar__presence {\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay {\n background-color: var(--dt-color-surface-contrast-opaque);\n opacity: var(--dt-opacity-900);\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dt-size-radius-circle);\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay-icon {\n color: var(--dt-color-foreground-primary-inverted);\n width: 100%;\n}\n\n.d-avatar__overlay-text {\n color: var(--dt-color-foreground-primary-inverted);\n font-weight: var(--dt-font-weight-bold);\n font-size: var(--dt-font-size-200);\n width: 100%;\n text-align: center;\n}\n\n.d-avatar--clickable {\n --avatar-color-border: transparent;\n\n cursor: pointer;\n padding: 0;\n background-color: transparent;\n\n border-radius: var(--dt-size-radius-circle);\n border: var(--dt-size-border-100) solid var(--avatar-color-border);\n\n &:focus-visible {\n outline: none;\n box-shadow: var(--dt-shadow-focus);\n }\n\n &:hover {\n --avatar-color-border: var(--dt-color-border-default);\n }\n\n &:active {\n --avatar-color-border: var(--dt-color-border-moderate);\n\n transform: scale(0.98);\n }\n}\n</style>\n"],"names":["_openBlock","_createBlock","_resolveDynamicComponent","_createElementVNode","_normalizeClass","_createElementBlock","_toDisplayString","_mergeProps"],"mappings":"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"}
@@ -1,20 +1,30 @@
1
1
  "use strict";
2
2
  const badge_constants = require("./badge_constants.cjs");
3
- const common_utils = require("../../common/utils.cjs");
4
3
  const vue = require("vue");
5
4
  const _pluginVue_exportHelper = require("../../_virtual/_plugin-vue_export-helper.cjs");
6
- const icon_constants = require("../icon/icon_constants.cjs");
5
+ const icon = require("../icon/icon.vue.cjs");
7
6
  const _sfc_main = {
8
7
  name: "DtBadge",
8
+ components: {
9
+ DtIcon: icon
10
+ },
9
11
  props: {
10
12
  /**
11
- * The size of the left and right icons.
12
- * @values 100, 200, 300, 400, 500, 600, 700, 800
13
+ * Icon on the left side of the badge. Supports any valid icon name from the icon catalog at
14
+ * https://dialtone.dialpad.com/components/icon.html#icon-catalog. If type:'ai' is set, the ai icon
15
+ * will automatically be shown here, but this can be overridden by setting this prop.
13
16
  */
14
- iconSize: {
17
+ iconLeft: {
15
18
  type: String,
16
- default: "200",
17
- validator: (s) => Object.keys(icon_constants.ICON_SIZE_MODIFIERS).includes(s)
19
+ default: ""
20
+ },
21
+ /**
22
+ * Icon on the right side of the badge. Supports any valid icon name from the icon catalog at
23
+ * https://dialtone.dialpad.com/components/icon.html#icon-catalog
24
+ */
25
+ iconRight: {
26
+ type: String,
27
+ default: ""
18
28
  },
19
29
  /**
20
30
  * Text for the badge content
@@ -43,7 +53,7 @@ const _sfc_main = {
43
53
  },
44
54
  /**
45
55
  * Decoration for the badge. This can be only used with kind: label and type: default
46
- * with no left and right icons
56
+ * with no iconLeft and iconRight
47
57
  * @values default, black-400, black-500, black-900, red-200, red-300, red-400, purple-200,
48
58
  * purple-300, purple-400, purple-500, blue-200, blue-300, blue-400, green-300, green-400,
49
59
  * green-500, gold-300, gold-400, gold-500, magenta-200, magenta-300, magenta-400
@@ -84,18 +94,18 @@ const _sfc_main = {
84
94
  };
85
95
  },
86
96
  computed: {
87
- hasLeftIcon() {
88
- return common_utils.hasSlotContent(this.$slots.leftIcon);
89
- },
90
- hasRightIcon() {
91
- return common_utils.hasSlotContent(this.$slots.rightIcon);
92
- },
93
97
  hasIcons() {
94
- return this.hasLeftIcon || this.hasRightIcon;
98
+ return this.iconLeft !== "" || this.iconRight !== "";
95
99
  }
96
100
  },
97
- updated() {
98
- this.validateProps();
101
+ watch: {
102
+ $props: {
103
+ immediate: true,
104
+ deep: true,
105
+ handler() {
106
+ this.validateProps();
107
+ }
108
+ }
99
109
  },
100
110
  methods: {
101
111
  validateProps() {
@@ -116,7 +126,7 @@ const _sfc_main = {
116
126
  console.error("DtBadge error: decoration prop can only be used with kind: 'label' and type: 'default'.");
117
127
  }
118
128
  if (this.hasIcons) {
119
- console.error("DtBadge error: decoration prop cannot be used with leftIcon or rightIcon.");
129
+ console.error("DtBadge error: decoration prop cannot be used with iconLeft or iconRight.");
120
130
  }
121
131
  }
122
132
  }
@@ -134,6 +144,7 @@ const _hoisted_3 = {
134
144
  class: "d-badge__icon-right"
135
145
  };
136
146
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
147
+ const _component_dt_icon = vue.resolveComponent("dt-icon");
137
148
  return vue.openBlock(), vue.createElementBlock("span", {
138
149
  class: vue.normalizeClass([
139
150
  "d-badge",
@@ -146,8 +157,11 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
146
157
  "data-qa": "dt-badge"
147
158
  }, [
148
159
  $props.decoration ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1)) : vue.createCommentVNode("", true),
149
- $options.hasLeftIcon ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2, [
150
- vue.renderSlot(_ctx.$slots, "leftIcon", { iconSize: $props.iconSize })
160
+ $props.iconLeft ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2, [
161
+ vue.createVNode(_component_dt_icon, {
162
+ name: $props.iconLeft,
163
+ size: "200"
164
+ }, null, 8, ["name"])
151
165
  ])) : vue.createCommentVNode("", true),
152
166
  vue.createElementVNode("span", {
153
167
  class: vue.normalizeClass(["d-badge__label", $props.labelClass])
@@ -156,8 +170,11 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
156
170
  vue.createTextVNode(vue.toDisplayString($props.text), 1)
157
171
  ])
158
172
  ], 2),
159
- $options.hasRightIcon ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3, [
160
- vue.renderSlot(_ctx.$slots, "rightIcon", { iconSize: $props.iconSize })
173
+ $props.iconRight ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3, [
174
+ vue.createVNode(_component_dt_icon, {
175
+ name: $props.iconRight,
176
+ size: "200"
177
+ }, null, 8, ["name"])
161
178
  ])) : vue.createCommentVNode("", true)
162
179
  ], 2);
163
180
  }