@mattermost/compass-ui 0.1.0-alpha.10 → 0.1.0-alpha.11

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 (441) hide show
  1. package/README.md +5 -4
  2. package/dist/components/action-button/ActionButton.cjs +1 -1
  3. package/dist/components/action-button/ActionButton.cjs.map +1 -1
  4. package/dist/components/action-button/ActionButton.d.ts +2 -1
  5. package/dist/components/action-button/ActionButton.d.ts.map +1 -1
  6. package/dist/components/action-button/ActionButton.js +36 -31
  7. package/dist/components/action-button/ActionButton.js.map +1 -1
  8. package/dist/components/admin-console-header/AdminConsoleHeader.cjs.map +1 -1
  9. package/dist/components/admin-console-header/AdminConsoleHeader.d.ts.map +1 -1
  10. package/dist/components/admin-console-header/AdminConsoleHeader.js.map +1 -1
  11. package/dist/components/admin-panel/AdminPanel.cjs.map +1 -1
  12. package/dist/components/admin-panel/AdminPanel.d.ts.map +1 -1
  13. package/dist/components/admin-panel/AdminPanel.js.map +1 -1
  14. package/dist/components/admin-panel/index.d.ts +1 -1
  15. package/dist/components/admin-panel/index.d.ts.map +1 -1
  16. package/dist/components/admin-panel-footer/AdminPanelFooter.cjs.map +1 -1
  17. package/dist/components/admin-panel-footer/AdminPanelFooter.d.ts.map +1 -1
  18. package/dist/components/admin-panel-footer/AdminPanelFooter.js +1 -8
  19. package/dist/components/admin-panel-footer/AdminPanelFooter.js.map +1 -1
  20. package/dist/components/admin-panel-header/AdminPanelHeader.cjs.map +1 -1
  21. package/dist/components/admin-panel-header/AdminPanelHeader.d.ts.map +1 -1
  22. package/dist/components/admin-panel-header/AdminPanelHeader.js +2 -16
  23. package/dist/components/admin-panel-header/AdminPanelHeader.js.map +1 -1
  24. package/dist/components/attachment-card/AttachmentCard.cjs.map +1 -1
  25. package/dist/components/attachment-card/AttachmentCard.d.ts.map +1 -1
  26. package/dist/components/attachment-card/AttachmentCard.js.map +1 -1
  27. package/dist/components/button/Button.cjs +1 -1
  28. package/dist/components/button/Button.cjs.map +1 -1
  29. package/dist/components/button/Button.d.ts +4 -3
  30. package/dist/components/button/Button.d.ts.map +1 -1
  31. package/dist/components/button/Button.js +39 -23
  32. package/dist/components/button/Button.js.map +1 -1
  33. package/dist/components/card-button/CardButton.cjs +1 -1
  34. package/dist/components/card-button/CardButton.cjs.map +1 -1
  35. package/dist/components/card-button/CardButton.d.ts +2 -1
  36. package/dist/components/card-button/CardButton.d.ts.map +1 -1
  37. package/dist/components/card-button/CardButton.js +47 -42
  38. package/dist/components/card-button/CardButton.js.map +1 -1
  39. package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.cjs.map +1 -1
  40. package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.js.map +1 -1
  41. package/dist/components/checkbox/Checkbox.cjs +1 -1
  42. package/dist/components/checkbox/Checkbox.cjs.map +1 -1
  43. package/dist/components/checkbox/Checkbox.d.ts +2 -1
  44. package/dist/components/checkbox/Checkbox.d.ts.map +1 -1
  45. package/dist/components/checkbox/Checkbox.js +39 -37
  46. package/dist/components/checkbox/Checkbox.js.map +1 -1
  47. package/dist/components/chip/Chip.cjs.map +1 -1
  48. package/dist/components/chip/Chip.d.ts.map +1 -1
  49. package/dist/components/chip/Chip.js.map +1 -1
  50. package/dist/components/chip/ChipGroup.cjs.map +1 -1
  51. package/dist/components/chip/ChipGroup.d.ts.map +1 -1
  52. package/dist/components/chip/ChipGroup.js.map +1 -1
  53. package/dist/components/combobox/Combobox.cjs +1 -1
  54. package/dist/components/combobox/Combobox.cjs.map +1 -1
  55. package/dist/components/combobox/Combobox.css +1 -1
  56. package/dist/components/combobox/Combobox.d.ts +30 -1
  57. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  58. package/dist/components/combobox/Combobox.js +381 -276
  59. package/dist/components/combobox/Combobox.js.map +1 -1
  60. package/dist/components/combobox/Combobox.module.scss.cjs +1 -1
  61. package/dist/components/combobox/Combobox.module.scss.js +24 -22
  62. package/dist/components/combobox/Combobox.module.scss.js.map +1 -1
  63. package/dist/components/combobox/index.d.ts +1 -1
  64. package/dist/components/combobox/index.d.ts.map +1 -1
  65. package/dist/components/date-range-picker/DateRangePicker.cjs.map +1 -1
  66. package/dist/components/date-range-picker/DateRangePicker.css +1 -1
  67. package/dist/components/date-range-picker/DateRangePicker.d.ts.map +1 -1
  68. package/dist/components/date-range-picker/DateRangePicker.js +27 -10
  69. package/dist/components/date-range-picker/DateRangePicker.js.map +1 -1
  70. package/dist/components/date-range-picker/DateRangePicker.module.scss.cjs +1 -1
  71. package/dist/components/date-range-picker/DateRangePicker.module.scss.js +26 -26
  72. package/dist/components/emoji/Emoji.cjs.map +1 -1
  73. package/dist/components/emoji/Emoji.d.ts.map +1 -1
  74. package/dist/components/emoji/Emoji.js +1 -5
  75. package/dist/components/emoji/Emoji.js.map +1 -1
  76. package/dist/components/emoji-button/EmojiButton.cjs.map +1 -1
  77. package/dist/components/emoji-button/EmojiButton.d.ts.map +1 -1
  78. package/dist/components/emoji-button/EmojiButton.js +10 -1
  79. package/dist/components/emoji-button/EmojiButton.js.map +1 -1
  80. package/dist/components/emoji-popover/EmojiPopover.cjs.map +1 -1
  81. package/dist/components/emoji-popover/EmojiPopover.d.ts.map +1 -1
  82. package/dist/components/emoji-popover/EmojiPopover.js +34 -17
  83. package/dist/components/emoji-popover/EmojiPopover.js.map +1 -1
  84. package/dist/components/empty-state/EmptyState.cjs.map +1 -1
  85. package/dist/components/empty-state/EmptyState.d.ts +2 -2
  86. package/dist/components/empty-state/EmptyState.d.ts.map +1 -1
  87. package/dist/components/empty-state/EmptyState.js.map +1 -1
  88. package/dist/components/error-message/ErrorMessage.cjs.map +1 -1
  89. package/dist/components/error-message/ErrorMessage.d.ts +3 -2
  90. package/dist/components/error-message/ErrorMessage.d.ts.map +1 -1
  91. package/dist/components/error-message/ErrorMessage.js.map +1 -1
  92. package/dist/components/icon/Icon.js +2 -2
  93. package/dist/components/icon/index.d.ts +1 -1
  94. package/dist/components/icon/index.d.ts.map +1 -1
  95. package/dist/components/icon-button/IconButton.cjs +1 -1
  96. package/dist/components/icon-button/IconButton.cjs.map +1 -1
  97. package/dist/components/icon-button/IconButton.d.ts +2 -1
  98. package/dist/components/icon-button/IconButton.d.ts.map +1 -1
  99. package/dist/components/icon-button/IconButton.js +61 -57
  100. package/dist/components/icon-button/IconButton.js.map +1 -1
  101. package/dist/components/image-preview/ImagePreview.cjs.map +1 -1
  102. package/dist/components/image-preview/ImagePreview.d.ts.map +1 -1
  103. package/dist/components/image-preview/ImagePreview.js +8 -1
  104. package/dist/components/image-preview/ImagePreview.js.map +1 -1
  105. package/dist/components/link-preview/LinkPreview.cjs.map +1 -1
  106. package/dist/components/link-preview/LinkPreview.d.ts.map +1 -1
  107. package/dist/components/link-preview/LinkPreview.js +1 -7
  108. package/dist/components/link-preview/LinkPreview.js.map +1 -1
  109. package/dist/components/link-preview/index.d.ts +1 -1
  110. package/dist/components/link-preview/index.d.ts.map +1 -1
  111. package/dist/components/menu-item/MenuItem.cjs +1 -1
  112. package/dist/components/menu-item/MenuItem.cjs.map +1 -1
  113. package/dist/components/menu-item/MenuItem.d.ts +4 -3
  114. package/dist/components/menu-item/MenuItem.d.ts.map +1 -1
  115. package/dist/components/menu-item/MenuItem.js +55 -43
  116. package/dist/components/menu-item/MenuItem.js.map +1 -1
  117. package/dist/components/message-actions/index.d.ts +1 -1
  118. package/dist/components/message-actions/index.d.ts.map +1 -1
  119. package/dist/components/message-separator/MessageSeparator.cjs.map +1 -1
  120. package/dist/components/message-separator/MessageSeparator.css +1 -1
  121. package/dist/components/message-separator/MessageSeparator.d.ts.map +1 -1
  122. package/dist/components/message-separator/MessageSeparator.js +8 -1
  123. package/dist/components/message-separator/MessageSeparator.js.map +1 -1
  124. package/dist/components/message-separator/MessageSeparator.module.scss.cjs +1 -1
  125. package/dist/components/message-separator/MessageSeparator.module.scss.js +11 -11
  126. package/dist/components/new-message-banner/NewMessageBanner.cjs.map +1 -1
  127. package/dist/components/new-message-banner/NewMessageBanner.d.ts.map +1 -1
  128. package/dist/components/new-message-banner/NewMessageBanner.js +1 -5
  129. package/dist/components/new-message-banner/NewMessageBanner.js.map +1 -1
  130. package/dist/components/permalink-preview/PermalinkPreview.cjs +1 -1
  131. package/dist/components/permalink-preview/PermalinkPreview.cjs.map +1 -1
  132. package/dist/components/permalink-preview/PermalinkPreview.css +1 -1
  133. package/dist/components/permalink-preview/PermalinkPreview.d.ts +9 -2
  134. package/dist/components/permalink-preview/PermalinkPreview.d.ts.map +1 -1
  135. package/dist/components/permalink-preview/PermalinkPreview.js +66 -25
  136. package/dist/components/permalink-preview/PermalinkPreview.js.map +1 -1
  137. package/dist/components/permalink-preview/PermalinkPreview.module.scss.cjs +1 -1
  138. package/dist/components/permalink-preview/PermalinkPreview.module.scss.js +13 -9
  139. package/dist/components/permalink-preview/PermalinkPreview.module.scss.js.map +1 -1
  140. package/dist/components/popover-menu/PopoverMenu.cjs.map +1 -1
  141. package/dist/components/popover-menu/PopoverMenu.d.ts +1 -2
  142. package/dist/components/popover-menu/PopoverMenu.d.ts.map +1 -1
  143. package/dist/components/popover-menu/PopoverMenu.js.map +1 -1
  144. package/dist/components/popover-notice/PopoverNotice.cjs.map +1 -1
  145. package/dist/components/popover-notice/PopoverNotice.d.ts +4 -3
  146. package/dist/components/popover-notice/PopoverNotice.d.ts.map +1 -1
  147. package/dist/components/popover-notice/PopoverNotice.js.map +1 -1
  148. package/dist/components/profile-popover/ProfilePopover.cjs.map +1 -1
  149. package/dist/components/profile-popover/ProfilePopover.d.ts.map +1 -1
  150. package/dist/components/profile-popover/ProfilePopover.js +14 -1
  151. package/dist/components/profile-popover/ProfilePopover.js.map +1 -1
  152. package/dist/components/progress-bar/ProgressBar.cjs +1 -1
  153. package/dist/components/progress-bar/ProgressBar.cjs.map +1 -1
  154. package/dist/components/progress-bar/ProgressBar.css +1 -1
  155. package/dist/components/progress-bar/ProgressBar.d.ts +6 -1
  156. package/dist/components/progress-bar/ProgressBar.d.ts.map +1 -1
  157. package/dist/components/progress-bar/ProgressBar.js +21 -15
  158. package/dist/components/progress-bar/ProgressBar.js.map +1 -1
  159. package/dist/components/progress-bar/ProgressBar.module.scss.cjs +1 -1
  160. package/dist/components/progress-bar/ProgressBar.module.scss.js +9 -8
  161. package/dist/components/progress-bar/ProgressBar.module.scss.js.map +1 -1
  162. package/dist/components/radio/Radio.cjs +1 -1
  163. package/dist/components/radio/Radio.cjs.map +1 -1
  164. package/dist/components/radio/Radio.d.ts +2 -1
  165. package/dist/components/radio/Radio.d.ts.map +1 -1
  166. package/dist/components/radio/Radio.js +15 -13
  167. package/dist/components/radio/Radio.js.map +1 -1
  168. package/dist/components/reactions-row/ReactionsRow.cjs.map +1 -1
  169. package/dist/components/reactions-row/ReactionsRow.d.ts.map +1 -1
  170. package/dist/components/reactions-row/ReactionsRow.js.map +1 -1
  171. package/dist/components/right-sidebar-header/RightSidebarHeader.cjs +1 -1
  172. package/dist/components/right-sidebar-header/RightSidebarHeader.cjs.map +1 -1
  173. package/dist/components/right-sidebar-header/RightSidebarHeader.d.ts +4 -2
  174. package/dist/components/right-sidebar-header/RightSidebarHeader.d.ts.map +1 -1
  175. package/dist/components/right-sidebar-header/RightSidebarHeader.js +51 -43
  176. package/dist/components/right-sidebar-header/RightSidebarHeader.js.map +1 -1
  177. package/dist/components/search-input/SearchInput.cjs.map +1 -1
  178. package/dist/components/search-input/SearchInput.d.ts.map +1 -1
  179. package/dist/components/search-input/SearchInput.js.map +1 -1
  180. package/dist/components/section-notice/SectionNotice.cjs.map +1 -1
  181. package/dist/components/section-notice/SectionNotice.d.ts +4 -4
  182. package/dist/components/section-notice/SectionNotice.d.ts.map +1 -1
  183. package/dist/components/section-notice/SectionNotice.js.map +1 -1
  184. package/dist/components/select/Select.cjs.map +1 -1
  185. package/dist/components/select/Select.d.ts.map +1 -1
  186. package/dist/components/select/Select.js.map +1 -1
  187. package/dist/components/switch/Switch.cjs +1 -1
  188. package/dist/components/switch/Switch.cjs.map +1 -1
  189. package/dist/components/switch/Switch.d.ts +2 -1
  190. package/dist/components/switch/Switch.d.ts.map +1 -1
  191. package/dist/components/switch/Switch.js +31 -29
  192. package/dist/components/switch/Switch.js.map +1 -1
  193. package/dist/components/tabs/Tabs.cjs +1 -1
  194. package/dist/components/tabs/Tabs.cjs.map +1 -1
  195. package/dist/components/tabs/Tabs.css +1 -1
  196. package/dist/components/tabs/Tabs.d.ts +6 -2
  197. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  198. package/dist/components/tabs/Tabs.js +47 -39
  199. package/dist/components/tabs/Tabs.js.map +1 -1
  200. package/dist/components/tabs/Tabs.module.scss.cjs +1 -1
  201. package/dist/components/tabs/Tabs.module.scss.js +13 -12
  202. package/dist/components/tabs/Tabs.module.scss.js.map +1 -1
  203. package/dist/components/tag/Tag.cjs.map +1 -1
  204. package/dist/components/tag/Tag.css +1 -1
  205. package/dist/components/tag/Tag.d.ts +2 -2
  206. package/dist/components/tag/Tag.d.ts.map +1 -1
  207. package/dist/components/tag/Tag.js.map +1 -1
  208. package/dist/components/tag/Tag.module.scss.cjs +1 -1
  209. package/dist/components/tag/Tag.module.scss.js +11 -11
  210. package/dist/components/thread-footer/ThreadFooter.cjs +1 -1
  211. package/dist/components/thread-footer/ThreadFooter.cjs.map +1 -1
  212. package/dist/components/thread-footer/ThreadFooter.css +1 -1
  213. package/dist/components/thread-footer/ThreadFooter.d.ts.map +1 -1
  214. package/dist/components/thread-footer/ThreadFooter.js +39 -43
  215. package/dist/components/thread-footer/ThreadFooter.js.map +1 -1
  216. package/dist/components/thread-footer/ThreadFooter.module.scss.cjs +1 -1
  217. package/dist/components/thread-footer/ThreadFooter.module.scss.js +18 -17
  218. package/dist/components/thread-footer/ThreadFooter.module.scss.js.map +1 -1
  219. package/dist/components/thread-list-item/ThreadListItem.cjs.map +1 -1
  220. package/dist/components/thread-list-item/ThreadListItem.d.ts.map +1 -1
  221. package/dist/components/thread-list-item/ThreadListItem.js +3 -1
  222. package/dist/components/thread-list-item/ThreadListItem.js.map +1 -1
  223. package/dist/components/toast/Toast.cjs.map +1 -1
  224. package/dist/components/toast/Toast.d.ts +3 -2
  225. package/dist/components/toast/Toast.d.ts.map +1 -1
  226. package/dist/components/toast/Toast.js.map +1 -1
  227. package/dist/components/tooltip/Tooltip.cjs +1 -1
  228. package/dist/components/tooltip/Tooltip.cjs.map +1 -1
  229. package/dist/components/tooltip/Tooltip.d.ts +3 -3
  230. package/dist/components/tooltip/Tooltip.d.ts.map +1 -1
  231. package/dist/components/tooltip/Tooltip.js +9 -9
  232. package/dist/components/tooltip/Tooltip.js.map +1 -1
  233. package/dist/components/tour-point/TourPoint.cjs.map +1 -1
  234. package/dist/components/tour-point/TourPoint.d.ts.map +1 -1
  235. package/dist/components/tour-point/TourPoint.js +8 -6
  236. package/dist/components/tour-point/TourPoint.js.map +1 -1
  237. package/dist/components/user-avatar-group/UserAvatarGroup.cjs.map +1 -1
  238. package/dist/components/user-avatar-group/UserAvatarGroup.d.ts.map +1 -1
  239. package/dist/components/user-avatar-group/UserAvatarGroup.js +23 -30
  240. package/dist/components/user-avatar-group/UserAvatarGroup.js.map +1 -1
  241. package/dist/hooks/use-anchored-popup-portal.cjs.map +1 -1
  242. package/dist/hooks/use-anchored-popup-portal.d.ts.map +1 -1
  243. package/dist/hooks/use-anchored-popup-portal.js +1 -3
  244. package/dist/hooks/use-anchored-popup-portal.js.map +1 -1
  245. package/dist/illustrations/incoming-webhook.svg.cjs +1 -1
  246. package/dist/illustrations/incoming-webhook.svg.cjs.map +1 -1
  247. package/dist/illustrations/incoming-webhook.svg.js +1 -1
  248. package/dist/illustrations/incoming-webhook.svg.js.map +1 -1
  249. package/dist/index.cjs +1 -1
  250. package/dist/index.d.ts +0 -13
  251. package/dist/index.d.ts.map +1 -1
  252. package/dist/index.js +170 -202
  253. package/dist/index.js.map +1 -1
  254. package/dist/utils/anchoredPopupPlacement.cjs.map +1 -1
  255. package/dist/utils/anchoredPopupPlacement.d.ts.map +1 -1
  256. package/dist/utils/anchoredPopupPlacement.js +4 -1
  257. package/dist/utils/anchoredPopupPlacement.js.map +1 -1
  258. package/package.json +1 -41
  259. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.cjs +0 -2
  260. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.cjs.map +0 -1
  261. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.css +0 -1
  262. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.d.ts +0 -12
  263. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.d.ts.map +0 -1
  264. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.js +0 -122
  265. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.js.map +0 -1
  266. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.module.scss.cjs +0 -2
  267. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.module.scss.cjs.map +0 -1
  268. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.module.scss.js +0 -20
  269. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.module.scss.js.map +0 -1
  270. package/dist/components/admin-console-sidebar/adminConsoleSidebarModel.d.ts +0 -14
  271. package/dist/components/admin-console-sidebar/adminConsoleSidebarModel.d.ts.map +0 -1
  272. package/dist/components/admin-console-sidebar/index.cjs +0 -2
  273. package/dist/components/admin-console-sidebar/index.cjs.map +0 -1
  274. package/dist/components/admin-console-sidebar/index.d.ts +0 -4
  275. package/dist/components/admin-console-sidebar/index.d.ts.map +0 -1
  276. package/dist/components/admin-console-sidebar/index.js +0 -5
  277. package/dist/components/admin-console-sidebar/index.js.map +0 -1
  278. package/dist/components/channel-category-menu/ChannelCategoryMenu.cjs +0 -2
  279. package/dist/components/channel-category-menu/ChannelCategoryMenu.cjs.map +0 -1
  280. package/dist/components/channel-category-menu/ChannelCategoryMenu.css +0 -1
  281. package/dist/components/channel-category-menu/ChannelCategoryMenu.d.ts +0 -10
  282. package/dist/components/channel-category-menu/ChannelCategoryMenu.d.ts.map +0 -1
  283. package/dist/components/channel-category-menu/ChannelCategoryMenu.js +0 -103
  284. package/dist/components/channel-category-menu/ChannelCategoryMenu.js.map +0 -1
  285. package/dist/components/channel-category-menu/ChannelCategoryMenu.module.scss.cjs +0 -2
  286. package/dist/components/channel-category-menu/ChannelCategoryMenu.module.scss.cjs.map +0 -1
  287. package/dist/components/channel-category-menu/ChannelCategoryMenu.module.scss.js +0 -8
  288. package/dist/components/channel-category-menu/ChannelCategoryMenu.module.scss.js.map +0 -1
  289. package/dist/components/channel-category-menu/index.cjs +0 -2
  290. package/dist/components/channel-category-menu/index.cjs.map +0 -1
  291. package/dist/components/channel-category-menu/index.d.ts +0 -3
  292. package/dist/components/channel-category-menu/index.d.ts.map +0 -1
  293. package/dist/components/channel-category-menu/index.js +0 -5
  294. package/dist/components/channel-category-menu/index.js.map +0 -1
  295. package/dist/components/channel-header-menu/ChannelHeaderMenu.cjs +0 -2
  296. package/dist/components/channel-header-menu/ChannelHeaderMenu.cjs.map +0 -1
  297. package/dist/components/channel-header-menu/ChannelHeaderMenu.d.ts +0 -8
  298. package/dist/components/channel-header-menu/ChannelHeaderMenu.d.ts.map +0 -1
  299. package/dist/components/channel-header-menu/ChannelHeaderMenu.js +0 -115
  300. package/dist/components/channel-header-menu/ChannelHeaderMenu.js.map +0 -1
  301. package/dist/components/channel-header-menu/index.cjs +0 -2
  302. package/dist/components/channel-header-menu/index.cjs.map +0 -1
  303. package/dist/components/channel-header-menu/index.d.ts +0 -3
  304. package/dist/components/channel-header-menu/index.d.ts.map +0 -1
  305. package/dist/components/channel-header-menu/index.js +0 -5
  306. package/dist/components/channel-header-menu/index.js.map +0 -1
  307. package/dist/components/channel-menu/ChannelMenu.cjs +0 -2
  308. package/dist/components/channel-menu/ChannelMenu.cjs.map +0 -1
  309. package/dist/components/channel-menu/ChannelMenu.d.ts +0 -8
  310. package/dist/components/channel-menu/ChannelMenu.d.ts.map +0 -1
  311. package/dist/components/channel-menu/ChannelMenu.js +0 -91
  312. package/dist/components/channel-menu/ChannelMenu.js.map +0 -1
  313. package/dist/components/channel-menu/index.cjs +0 -2
  314. package/dist/components/channel-menu/index.cjs.map +0 -1
  315. package/dist/components/channel-menu/index.d.ts +0 -3
  316. package/dist/components/channel-menu/index.d.ts.map +0 -1
  317. package/dist/components/channel-menu/index.js +0 -5
  318. package/dist/components/channel-menu/index.js.map +0 -1
  319. package/dist/components/channels-sidebar/ChannelsSidebar.cjs +0 -2
  320. package/dist/components/channels-sidebar/ChannelsSidebar.cjs.map +0 -1
  321. package/dist/components/channels-sidebar/ChannelsSidebar.css +0 -1
  322. package/dist/components/channels-sidebar/ChannelsSidebar.d.ts +0 -57
  323. package/dist/components/channels-sidebar/ChannelsSidebar.d.ts.map +0 -1
  324. package/dist/components/channels-sidebar/ChannelsSidebar.js +0 -177
  325. package/dist/components/channels-sidebar/ChannelsSidebar.js.map +0 -1
  326. package/dist/components/channels-sidebar/ChannelsSidebar.module.scss.cjs +0 -2
  327. package/dist/components/channels-sidebar/ChannelsSidebar.module.scss.cjs.map +0 -1
  328. package/dist/components/channels-sidebar/ChannelsSidebar.module.scss.js +0 -35
  329. package/dist/components/channels-sidebar/ChannelsSidebar.module.scss.js.map +0 -1
  330. package/dist/components/channels-sidebar/channelsSidebarModel.cjs +0 -2
  331. package/dist/components/channels-sidebar/channelsSidebarModel.cjs.map +0 -1
  332. package/dist/components/channels-sidebar/channelsSidebarModel.d.ts +0 -22
  333. package/dist/components/channels-sidebar/channelsSidebarModel.d.ts.map +0 -1
  334. package/dist/components/channels-sidebar/channelsSidebarModel.js +0 -20
  335. package/dist/components/channels-sidebar/channelsSidebarModel.js.map +0 -1
  336. package/dist/components/channels-sidebar/index.cjs +0 -2
  337. package/dist/components/channels-sidebar/index.cjs.map +0 -1
  338. package/dist/components/channels-sidebar/index.d.ts +0 -6
  339. package/dist/components/channels-sidebar/index.d.ts.map +0 -1
  340. package/dist/components/channels-sidebar/index.js +0 -12
  341. package/dist/components/channels-sidebar/index.js.map +0 -1
  342. package/dist/components/global-header/GlobalHeader.cjs +0 -2
  343. package/dist/components/global-header/GlobalHeader.cjs.map +0 -1
  344. package/dist/components/global-header/GlobalHeader.css +0 -1
  345. package/dist/components/global-header/GlobalHeader.d.ts +0 -28
  346. package/dist/components/global-header/GlobalHeader.d.ts.map +0 -1
  347. package/dist/components/global-header/GlobalHeader.js +0 -157
  348. package/dist/components/global-header/GlobalHeader.js.map +0 -1
  349. package/dist/components/global-header/GlobalHeader.module.scss.cjs +0 -2
  350. package/dist/components/global-header/GlobalHeader.module.scss.cjs.map +0 -1
  351. package/dist/components/global-header/GlobalHeader.module.scss.js +0 -20
  352. package/dist/components/global-header/GlobalHeader.module.scss.js.map +0 -1
  353. package/dist/components/global-header/index.cjs +0 -2
  354. package/dist/components/global-header/index.cjs.map +0 -1
  355. package/dist/components/global-header/index.d.ts +0 -3
  356. package/dist/components/global-header/index.d.ts.map +0 -1
  357. package/dist/components/global-header/index.js +0 -5
  358. package/dist/components/global-header/index.js.map +0 -1
  359. package/dist/components/help-menu/HelpMenu.cjs +0 -2
  360. package/dist/components/help-menu/HelpMenu.cjs.map +0 -1
  361. package/dist/components/help-menu/HelpMenu.d.ts +0 -8
  362. package/dist/components/help-menu/HelpMenu.d.ts.map +0 -1
  363. package/dist/components/help-menu/HelpMenu.js +0 -64
  364. package/dist/components/help-menu/HelpMenu.js.map +0 -1
  365. package/dist/components/help-menu/index.cjs +0 -2
  366. package/dist/components/help-menu/index.cjs.map +0 -1
  367. package/dist/components/help-menu/index.d.ts +0 -3
  368. package/dist/components/help-menu/index.d.ts.map +0 -1
  369. package/dist/components/help-menu/index.js +0 -5
  370. package/dist/components/help-menu/index.js.map +0 -1
  371. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.cjs +0 -2
  372. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.cjs.map +0 -1
  373. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.d.ts +0 -12
  374. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.d.ts.map +0 -1
  375. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.js +0 -172
  376. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.js.map +0 -1
  377. package/dist/components/message-more-options-menu/index.cjs +0 -2
  378. package/dist/components/message-more-options-menu/index.cjs.map +0 -1
  379. package/dist/components/message-more-options-menu/index.d.ts +0 -3
  380. package/dist/components/message-more-options-menu/index.d.ts.map +0 -1
  381. package/dist/components/message-more-options-menu/index.js +0 -5
  382. package/dist/components/message-more-options-menu/index.js.map +0 -1
  383. package/dist/components/plus-menu/PlusMenu.cjs +0 -2
  384. package/dist/components/plus-menu/PlusMenu.cjs.map +0 -1
  385. package/dist/components/plus-menu/PlusMenu.d.ts +0 -8
  386. package/dist/components/plus-menu/PlusMenu.d.ts.map +0 -1
  387. package/dist/components/plus-menu/PlusMenu.js +0 -69
  388. package/dist/components/plus-menu/PlusMenu.js.map +0 -1
  389. package/dist/components/plus-menu/index.cjs +0 -2
  390. package/dist/components/plus-menu/index.cjs.map +0 -1
  391. package/dist/components/plus-menu/index.d.ts +0 -3
  392. package/dist/components/plus-menu/index.d.ts.map +0 -1
  393. package/dist/components/plus-menu/index.js +0 -5
  394. package/dist/components/plus-menu/index.js.map +0 -1
  395. package/dist/components/product-switcher-menu/ProductSwitcherMenu.cjs +0 -2
  396. package/dist/components/product-switcher-menu/ProductSwitcherMenu.cjs.map +0 -1
  397. package/dist/components/product-switcher-menu/ProductSwitcherMenu.css +0 -1
  398. package/dist/components/product-switcher-menu/ProductSwitcherMenu.d.ts +0 -47
  399. package/dist/components/product-switcher-menu/ProductSwitcherMenu.d.ts.map +0 -1
  400. package/dist/components/product-switcher-menu/ProductSwitcherMenu.js +0 -110
  401. package/dist/components/product-switcher-menu/ProductSwitcherMenu.js.map +0 -1
  402. package/dist/components/product-switcher-menu/ProductSwitcherMenu.module.scss.cjs +0 -2
  403. package/dist/components/product-switcher-menu/ProductSwitcherMenu.module.scss.cjs.map +0 -1
  404. package/dist/components/product-switcher-menu/ProductSwitcherMenu.module.scss.js +0 -8
  405. package/dist/components/product-switcher-menu/ProductSwitcherMenu.module.scss.js.map +0 -1
  406. package/dist/components/product-switcher-menu/index.cjs +0 -2
  407. package/dist/components/product-switcher-menu/index.cjs.map +0 -1
  408. package/dist/components/product-switcher-menu/index.d.ts +0 -4
  409. package/dist/components/product-switcher-menu/index.d.ts.map +0 -1
  410. package/dist/components/product-switcher-menu/index.js +0 -6
  411. package/dist/components/product-switcher-menu/index.js.map +0 -1
  412. package/dist/components/team-menu/TeamMenu.cjs +0 -2
  413. package/dist/components/team-menu/TeamMenu.cjs.map +0 -1
  414. package/dist/components/team-menu/TeamMenu.css +0 -1
  415. package/dist/components/team-menu/TeamMenu.d.ts +0 -15
  416. package/dist/components/team-menu/TeamMenu.d.ts.map +0 -1
  417. package/dist/components/team-menu/TeamMenu.js +0 -107
  418. package/dist/components/team-menu/TeamMenu.js.map +0 -1
  419. package/dist/components/team-menu/TeamMenu.module.scss.cjs +0 -2
  420. package/dist/components/team-menu/TeamMenu.module.scss.cjs.map +0 -1
  421. package/dist/components/team-menu/TeamMenu.module.scss.js +0 -7
  422. package/dist/components/team-menu/TeamMenu.module.scss.js.map +0 -1
  423. package/dist/components/team-menu/index.cjs +0 -2
  424. package/dist/components/team-menu/index.cjs.map +0 -1
  425. package/dist/components/team-menu/index.d.ts +0 -3
  426. package/dist/components/team-menu/index.d.ts.map +0 -1
  427. package/dist/components/team-menu/index.js +0 -5
  428. package/dist/components/team-menu/index.js.map +0 -1
  429. package/dist/components/thread-actions-menu/ThreadActionsMenu.cjs +0 -2
  430. package/dist/components/thread-actions-menu/ThreadActionsMenu.cjs.map +0 -1
  431. package/dist/components/thread-actions-menu/ThreadActionsMenu.d.ts +0 -8
  432. package/dist/components/thread-actions-menu/ThreadActionsMenu.d.ts.map +0 -1
  433. package/dist/components/thread-actions-menu/ThreadActionsMenu.js +0 -77
  434. package/dist/components/thread-actions-menu/ThreadActionsMenu.js.map +0 -1
  435. package/dist/components/thread-actions-menu/index.cjs +0 -2
  436. package/dist/components/thread-actions-menu/index.cjs.map +0 -1
  437. package/dist/components/thread-actions-menu/index.d.ts +0 -3
  438. package/dist/components/thread-actions-menu/index.d.ts.map +0 -1
  439. package/dist/components/thread-actions-menu/index.js +0 -5
  440. package/dist/components/thread-actions-menu/index.js.map +0 -1
  441. package/dist/index.css +0 -162
@@ -1,57 +1,53 @@
1
- import { jsx as r, jsxs as o } from "react/jsx-runtime";
1
+ import { jsx as r, jsxs as t } from "react/jsx-runtime";
2
2
  import c from "../button/Button.js";
3
3
  import N from "../icon/Icon.js";
4
4
  import __v from "@mattermost/compass-icons/components/reply-outline.js";const v=__v&&__v.default?__v.default:__v;
5
5
  import b from "../mention-badge/MentionBadge.js";
6
6
  import y from "../user-avatar-group/UserAvatarGroup.js";
7
7
  import e from "./ThreadFooter.module.scss.js";
8
- function w({
9
- replyCount: t = 3,
8
+ function I({
9
+ replyCount: s = 3,
10
10
  avatars: l = [],
11
- badge: s = "none",
11
+ badge: a = "none",
12
12
  mentionCount: i = 1,
13
- following: a = !1,
14
- lastReplyTime: d,
13
+ following: o = !1,
14
+ lastReplyTime: n,
15
15
  onReply: m,
16
16
  onFollowToggle: f,
17
- hovered: n = !1,
17
+ hovered: d = !1,
18
18
  className: _ = "",
19
19
  ...p
20
20
  }) {
21
21
  const u = [
22
22
  e["thread-footer"],
23
- a ? e["thread-footer--following"] : "",
24
- n ? e["thread-footer--hovered"] : "",
23
+ o ? e["thread-footer--following"] : "",
24
+ d ? e["thread-footer--hovered"] : "",
25
25
  _
26
- ].filter(Boolean).join(" "), h = s === "mention" ? `${i} mention${i === 1 ? "" : "s"}` : s === "unread" ? "Unread replies" : void 0;
27
- return /* @__PURE__ */ r("div", { className: u, ...p, children: /* @__PURE__ */ o("div", { className: e["thread-footer__inner"], children: [
28
- /* @__PURE__ */ o("div", { className: e["thread-footer__avatars-group"], children: [
26
+ ].filter(Boolean).join(" "), h = a === "mention" ? `${i} mention${i === 1 ? "" : "s"}` : a === "unread" ? "Unread replies" : void 0;
27
+ return /* @__PURE__ */ r("div", { className: u, ...p, children: /* @__PURE__ */ t("div", { className: e["thread-footer__inner"], children: [
28
+ /* @__PURE__ */ t("div", { className: e["thread-footer__avatars-group"], children: [
29
29
  h && /* @__PURE__ */ r("span", { className: e["thread-footer__status-hint"], children: h }),
30
- s === "unread" && /* @__PURE__ */ r(
31
- "span",
30
+ (a === "unread" || a === "mention") && /* @__PURE__ */ t(
31
+ "div",
32
32
  {
33
- className: e["thread-footer__unread-dot"],
34
- "aria-hidden": !0
35
- }
36
- ),
37
- s === "mention" && /* @__PURE__ */ r(
38
- "span",
39
- {
40
- className: e["thread-footer__mention-badge"],
33
+ className: e["thread-footer__badge-container"],
41
34
  "aria-hidden": !0,
42
- children: /* @__PURE__ */ r(
43
- b,
44
- {
45
- count: i,
46
- location: "channel",
47
- size: "medium"
48
- }
49
- )
35
+ children: [
36
+ a === "unread" && /* @__PURE__ */ r("span", { className: e["thread-footer__unread-dot"] }),
37
+ a === "mention" && /* @__PURE__ */ r("span", { className: e["thread-footer__mention-badge"], children: /* @__PURE__ */ r(
38
+ b,
39
+ {
40
+ count: i,
41
+ location: "channel",
42
+ size: "medium"
43
+ }
44
+ ) })
45
+ ]
50
46
  }
51
47
  ),
52
48
  l.length > 0 && /* @__PURE__ */ r(y, { avatars: l, max: 3, size: "20" })
53
49
  ] }),
54
- /* @__PURE__ */ o("div", { className: e["thread-footer__buttons"], children: [
50
+ /* @__PURE__ */ t("div", { className: e["thread-footer__buttons"], children: [
55
51
  /* @__PURE__ */ r(
56
52
  c,
57
53
  {
@@ -59,15 +55,15 @@ function w({
59
55
  size: "x-small",
60
56
  className: [
61
57
  e["thread-footer__reply-btn"],
62
- n ? e["thread-footer__reply-btn--hovered"] : ""
58
+ d ? e["thread-footer__reply-btn--hovered"] : ""
63
59
  ].filter(Boolean).join(" "),
64
60
  onClick: m,
65
- "aria-label": `${t} repl${t === 1 ? "y" : "ies"}`,
61
+ "aria-label": `${s} repl${s === 1 ? "y" : "ies"}`,
66
62
  leadingIcon: /* @__PURE__ */ r(N, { size: "12", glyph: /* @__PURE__ */ r(v, {}) }),
67
- children: /* @__PURE__ */ o("span", { className: e["thread-footer__btn-label"], children: [
68
- t,
63
+ children: /* @__PURE__ */ t("span", { className: e["thread-footer__btn-label"], children: [
64
+ s,
69
65
  " ",
70
- t === 1 ? "reply" : "replies"
66
+ s === 1 ? "reply" : "replies"
71
67
  ] })
72
68
  }
73
69
  ),
@@ -79,22 +75,22 @@ function w({
79
75
  size: "x-small",
80
76
  className: [
81
77
  e["thread-footer__follow-btn"],
82
- a ? e["thread-footer__follow-btn--following"] : ""
78
+ o ? e["thread-footer__follow-btn--following"] : ""
83
79
  ].filter(Boolean).join(" "),
84
80
  onClick: f,
85
- "aria-pressed": a,
86
- "aria-label": a ? "Unfollow thread" : "Follow thread",
87
- children: a ? "Following" : "Follow"
81
+ "aria-pressed": o,
82
+ "aria-label": o ? "Unfollow thread" : "Follow thread",
83
+ children: o ? "Following" : "Follow"
88
84
  }
89
85
  ),
90
- a && d && /* @__PURE__ */ o("div", { className: e["thread-footer__last-reply-group"], children: [
86
+ o && n && /* @__PURE__ */ t("div", { className: e["thread-footer__last-reply-group"], children: [
91
87
  /* @__PURE__ */ r("div", { className: e["thread-footer__divider"], "aria-hidden": !0 }),
92
- /* @__PURE__ */ r("span", { className: e["thread-footer__last-reply"], children: d })
88
+ /* @__PURE__ */ r("span", { className: e["thread-footer__last-reply"], children: n })
93
89
  ] })
94
90
  ] })
95
91
  ] }) });
96
92
  }
97
93
  export {
98
- w as default
94
+ I as default
99
95
  };
100
96
  //# sourceMappingURL=ThreadFooter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadFooter.js","sources":["../../../src/components/thread-footer/ThreadFooter.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\nimport Button from '@/components/button/Button';\nimport Icon from '@/components/icon/Icon';\nimport ReplyOutlineIcon from '@mattermost/compass-icons/components/reply-outline';\nimport MentionBadge from '@/components/mention-badge/MentionBadge';\nimport UserAvatarGroup, {\n type UserAvatarGroupItem,\n} from '@/components/user-avatar-group/UserAvatarGroup';\nimport styles from './ThreadFooter.module.scss';\n\nexport type ThreadFooterBadge = 'none' | 'unread' | 'mention';\n\nexport interface ThreadFooterProps extends HTMLAttributes<HTMLDivElement> {\n /** Reply count. Default: 3. */\n replyCount?: number;\n /** Participant avatars. Rendered with User Avatar Group (first 3 shown, overflow as +N). */\n avatars?: UserAvatarGroupItem[];\n /** Badge variant. Default: None. */\n badge?: ThreadFooterBadge;\n /** Shown when `badge` is Mention. Default: 1. */\n mentionCount?: number;\n /** Whether the current user is following the thread. Default: false. */\n following?: boolean;\n /** Last reply timestamp label. Shown on row hover when following. */\n lastReplyTime?: string;\n /** Called when Reply is clicked. */\n onReply?: () => void;\n /** Called when Follow/Following is clicked. */\n onFollowToggle?: () => void;\n /** Hover / active state for button highlight. Default: false. */\n hovered?: boolean;\n /** Optional CSS class name. */\n className?: string;\n}\n\n/**\n * The Thread Footer is the reply summary bar at the bottom of a message. It shows\n * participants, reply count, follow state, and last-reply time — the information someone\n * needs to decide whether to dive in.\n */\nexport default function ThreadFooter({\n replyCount = 3,\n avatars = [],\n badge = 'none',\n mentionCount = 1,\n following = false,\n lastReplyTime,\n onReply,\n onFollowToggle,\n hovered = false,\n className = '',\n ...rest\n}: ThreadFooterProps) {\n const rootClass = [\n styles['thread-footer'],\n following ? styles['thread-footer--following'] : '',\n hovered ? styles['thread-footer--hovered'] : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const badgeStatusHint =\n badge === 'mention'\n ? `${mentionCount} mention${mentionCount === 1 ? '' : 's'}`\n : badge === 'unread'\n ? 'Unread replies'\n : undefined;\n\n return (\n <div className={rootClass} {...rest}>\n <div className={styles['thread-footer__inner']}>\n <div className={styles['thread-footer__avatars-group']}>\n {badgeStatusHint && (\n <span className={styles['thread-footer__status-hint']}>\n {badgeStatusHint}\n </span>\n )}\n {badge === 'unread' && (\n <span\n className={styles['thread-footer__unread-dot']}\n aria-hidden\n />\n )}\n {badge === 'mention' && (\n <span\n className={styles['thread-footer__mention-badge']}\n aria-hidden\n >\n <MentionBadge\n count={mentionCount}\n location=\"channel\"\n size=\"medium\"\n />\n </span>\n )}\n\n {avatars.length > 0 && (\n <UserAvatarGroup avatars={avatars} max={3} size=\"20\" />\n )}\n </div>\n\n {/* Buttons */}\n <div className={styles['thread-footer__buttons']}>\n {/* Reply button */}\n <Button\n emphasis=\"quaternary\"\n size=\"x-small\"\n className={[\n styles['thread-footer__reply-btn'],\n hovered ? styles['thread-footer__reply-btn--hovered'] : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={onReply}\n aria-label={`${replyCount} repl${replyCount === 1 ? 'y' : 'ies'}`}\n leadingIcon={<Icon size=\"12\" glyph={<ReplyOutlineIcon />} />}\n >\n <span className={styles['thread-footer__btn-label']}>\n {replyCount} {replyCount === 1 ? 'reply' : 'replies'}\n </span>\n </Button>\n\n <div className={styles['thread-footer__divider']} aria-hidden />\n\n {/* Follow / Following button */}\n <Button\n emphasis=\"quaternary\"\n size=\"x-small\"\n className={[\n styles['thread-footer__follow-btn'],\n following ? styles['thread-footer__follow-btn--following'] : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={onFollowToggle}\n aria-pressed={following}\n aria-label={following ? 'Unfollow thread' : 'Follow thread'}\n >\n {following ? 'Following' : 'Follow'}\n </Button>\n\n {/* Last reply time — revealed on row hover when following */}\n {following && lastReplyTime && (\n <div className={styles['thread-footer__last-reply-group']}>\n <div className={styles['thread-footer__divider']} aria-hidden />\n <span className={styles['thread-footer__last-reply']}>\n {lastReplyTime}\n </span>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n"],"names":["ThreadFooter","replyCount","avatars","badge","mentionCount","following","lastReplyTime","onReply","onFollowToggle","hovered","className","rest","rootClass","styles","badgeStatusHint","jsx","jsxs","MentionBadge","UserAvatarGroup","Button","Icon","ReplyOutlineIcon"],"mappings":";;;;;;;AAwCA,SAAwBA,EAAa;AAAA,EACnC,YAAAC,IAAa;AAAA,EACb,SAAAC,IAAU,CAAA;AAAA,EACV,OAAAC,IAAQ;AAAA,EACR,cAAAC,IAAe;AAAA,EACf,WAAAC,IAAY;AAAA,EACZ,eAAAC;AAAA,EACA,SAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,GAAsB;AACpB,QAAMC,IAAY;AAAA,IAChBC,EAAO,eAAe;AAAA,IACtBR,IAAYQ,EAAO,0BAA0B,IAAI;AAAA,IACjDJ,IAAUI,EAAO,wBAAwB,IAAI;AAAA,IAC7CH;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAELI,IACJX,MAAU,YACN,GAAGC,CAAY,WAAWA,MAAiB,IAAI,KAAK,GAAG,KACvDD,MAAU,WACR,mBACA;AAER,SACE,gBAAAY,EAAC,OAAA,EAAI,WAAWH,GAAY,GAAGD,GAC7B,UAAA,gBAAAK,EAAC,OAAA,EAAI,WAAWH,EAAO,sBAAsB,GAC3C,UAAA;AAAA,IAAA,gBAAAG,EAAC,OAAA,EAAI,WAAWH,EAAO,8BAA8B,GAClD,UAAA;AAAA,MAAAC,uBACE,QAAA,EAAK,WAAWD,EAAO,4BAA4B,GACjD,UAAAC,GACH;AAAA,MAEDX,MAAU,YACT,gBAAAY;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWF,EAAO,2BAA2B;AAAA,UAC7C,eAAW;AAAA,QAAA;AAAA,MAAA;AAAA,MAGdV,MAAU,aACT,gBAAAY;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWF,EAAO,8BAA8B;AAAA,UAChD,eAAW;AAAA,UAEX,UAAA,gBAAAE;AAAA,YAACE;AAAA,YAAA;AAAA,cACC,OAAOb;AAAA,cACP,UAAS;AAAA,cACT,MAAK;AAAA,YAAA;AAAA,UAAA;AAAA,QACP;AAAA,MAAA;AAAA,MAIHF,EAAQ,SAAS,KAChB,gBAAAa,EAACG,KAAgB,SAAAhB,GAAkB,KAAK,GAAG,MAAK,KAAA,CAAK;AAAA,IAAA,GAEzD;AAAA,IAGA,gBAAAc,EAAC,OAAA,EAAI,WAAWH,EAAO,wBAAwB,GAE7C,UAAA;AAAA,MAAA,gBAAAE;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,UAAS;AAAA,UACT,MAAK;AAAA,UACL,WAAW;AAAA,YACTN,EAAO,0BAA0B;AAAA,YACjCJ,IAAUI,EAAO,mCAAmC,IAAI;AAAA,UAAA,EAEvD,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,UACX,SAASN;AAAA,UACT,cAAY,GAAGN,CAAU,QAAQA,MAAe,IAAI,MAAM,KAAK;AAAA,UAC/D,+BAAcmB,GAAA,EAAK,MAAK,MAAK,OAAO,gBAAAL,EAACM,KAAiB,GAAI;AAAA,UAE1D,UAAA,gBAAAL,EAAC,QAAA,EAAK,WAAWH,EAAO,0BAA0B,GAC/C,UAAA;AAAA,YAAAZ;AAAA,YAAW;AAAA,YAAEA,MAAe,IAAI,UAAU;AAAA,UAAA,EAAA,CAC7C;AAAA,QAAA;AAAA,MAAA;AAAA,wBAGD,OAAA,EAAI,WAAWY,EAAO,wBAAwB,GAAG,eAAW,IAAC;AAAA,MAG9D,gBAAAE;AAAA,QAACI;AAAA,QAAA;AAAA,UACC,UAAS;AAAA,UACT,MAAK;AAAA,UACL,WAAW;AAAA,YACTN,EAAO,2BAA2B;AAAA,YAClCR,IAAYQ,EAAO,sCAAsC,IAAI;AAAA,UAAA,EAE5D,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,UACX,SAASL;AAAA,UACT,gBAAcH;AAAA,UACd,cAAYA,IAAY,oBAAoB;AAAA,UAE3C,cAAY,cAAc;AAAA,QAAA;AAAA,MAAA;AAAA,MAI5BA,KAAaC,KACZ,gBAAAU,EAAC,SAAI,WAAWH,EAAO,iCAAiC,GACtD,UAAA;AAAA,QAAA,gBAAAE,EAAC,SAAI,WAAWF,EAAO,wBAAwB,GAAG,eAAW,IAAC;AAAA,0BAC7D,QAAA,EAAK,WAAWA,EAAO,2BAA2B,GAChD,UAAAP,EAAA,CACH;AAAA,MAAA,EAAA,CACF;AAAA,IAAA,EAAA,CAEJ;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;"}
1
+ {"version":3,"file":"ThreadFooter.js","sources":["../../../src/components/thread-footer/ThreadFooter.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\nimport Button from '@/components/button/Button';\nimport Icon from '@/components/icon/Icon';\nimport ReplyOutlineIcon from '@mattermost/compass-icons/components/reply-outline';\nimport MentionBadge from '@/components/mention-badge/MentionBadge';\nimport UserAvatarGroup, {\n type UserAvatarGroupItem,\n} from '@/components/user-avatar-group/UserAvatarGroup';\nimport styles from './ThreadFooter.module.scss';\n\nexport type ThreadFooterBadge = 'none' | 'unread' | 'mention';\n\nexport interface ThreadFooterProps extends HTMLAttributes<HTMLDivElement> {\n /** Reply count. Default: 3. */\n replyCount?: number;\n /** Participant avatars. Rendered with User Avatar Group (first 3 shown, overflow as +N). */\n avatars?: UserAvatarGroupItem[];\n /** Badge variant. Default: None. */\n badge?: ThreadFooterBadge;\n /** Shown when `badge` is Mention. Default: 1. */\n mentionCount?: number;\n /** Whether the current user is following the thread. Default: false. */\n following?: boolean;\n /** Last reply timestamp label. Shown on row hover when following. */\n lastReplyTime?: string;\n /** Called when Reply is clicked. */\n onReply?: () => void;\n /** Called when Follow/Following is clicked. */\n onFollowToggle?: () => void;\n /** Hover / active state for button highlight. Default: false. */\n hovered?: boolean;\n /** Optional CSS class name. */\n className?: string;\n}\n\n/**\n * The Thread Footer is the reply summary bar at the bottom of a message. It shows\n * participants, reply count, follow state, and last-reply time — the information someone\n * needs to decide whether to dive in.\n */\nexport default function ThreadFooter({\n replyCount = 3,\n avatars = [],\n badge = 'none',\n mentionCount = 1,\n following = false,\n lastReplyTime,\n onReply,\n onFollowToggle,\n hovered = false,\n className = '',\n ...rest\n}: ThreadFooterProps) {\n const rootClass = [\n styles['thread-footer'],\n following ? styles['thread-footer--following'] : '',\n hovered ? styles['thread-footer--hovered'] : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const badgeStatusHint =\n badge === 'mention'\n ? `${mentionCount} mention${mentionCount === 1 ? '' : 's'}`\n : badge === 'unread'\n ? 'Unread replies'\n : undefined;\n\n return (\n <div className={rootClass} {...rest}>\n <div className={styles['thread-footer__inner']}>\n <div className={styles['thread-footer__avatars-group']}>\n {badgeStatusHint && (\n <span className={styles['thread-footer__status-hint']}>\n {badgeStatusHint}\n </span>\n )}\n {(badge === 'unread' || badge === 'mention') && (\n <div\n className={styles['thread-footer__badge-container']}\n aria-hidden\n >\n {badge === 'unread' && (\n <span className={styles['thread-footer__unread-dot']} />\n )}\n {badge === 'mention' && (\n <span className={styles['thread-footer__mention-badge']}>\n <MentionBadge\n count={mentionCount}\n location=\"channel\"\n size=\"medium\"\n />\n </span>\n )}\n </div>\n )}\n\n {avatars.length > 0 && (\n <UserAvatarGroup avatars={avatars} max={3} size=\"20\" />\n )}\n </div>\n\n {/* Buttons */}\n <div className={styles['thread-footer__buttons']}>\n {/* Reply button */}\n <Button\n emphasis=\"quaternary\"\n size=\"x-small\"\n className={[\n styles['thread-footer__reply-btn'],\n hovered ? styles['thread-footer__reply-btn--hovered'] : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={onReply}\n aria-label={`${replyCount} repl${replyCount === 1 ? 'y' : 'ies'}`}\n leadingIcon={<Icon size=\"12\" glyph={<ReplyOutlineIcon />} />}\n >\n <span className={styles['thread-footer__btn-label']}>\n {replyCount} {replyCount === 1 ? 'reply' : 'replies'}\n </span>\n </Button>\n\n <div className={styles['thread-footer__divider']} aria-hidden />\n\n {/* Follow / Following button */}\n <Button\n emphasis=\"quaternary\"\n size=\"x-small\"\n className={[\n styles['thread-footer__follow-btn'],\n following ? styles['thread-footer__follow-btn--following'] : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={onFollowToggle}\n aria-pressed={following}\n aria-label={following ? 'Unfollow thread' : 'Follow thread'}\n >\n {following ? 'Following' : 'Follow'}\n </Button>\n\n {/* Last reply time — revealed on row hover when following */}\n {following && lastReplyTime && (\n <div className={styles['thread-footer__last-reply-group']}>\n <div className={styles['thread-footer__divider']} aria-hidden />\n <span className={styles['thread-footer__last-reply']}>\n {lastReplyTime}\n </span>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n"],"names":["ThreadFooter","replyCount","avatars","badge","mentionCount","following","lastReplyTime","onReply","onFollowToggle","hovered","className","rest","rootClass","styles","badgeStatusHint","jsx","jsxs","MentionBadge","UserAvatarGroup","Button","Icon","ReplyOutlineIcon"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./ThreadFooter.css');const e={"thread-footer":"_thread-footer_k8u9j_2","thread-footer__inner":"_thread-footer__inner_k8u9j_9","thread-footer__avatars-group":"_thread-footer__avatars-group_k8u9j_15","thread-footer__status-hint":"_thread-footer__status-hint_k8u9j_21","thread-footer__unread-dot":"_thread-footer__unread-dot_k8u9j_32","thread-footer__mention-badge":"_thread-footer__mention-badge_k8u9j_40","thread-footer__buttons":"_thread-footer__buttons_k8u9j_44","thread-footer__reply-btn":"_thread-footer__reply-btn_k8u9j_49","thread-footer__follow-btn":"_thread-footer__follow-btn_k8u9j_49","thread-footer__follow-btn--following":"_thread-footer__follow-btn--following_k8u9j_52","thread-footer__reply-btn--hovered":"_thread-footer__reply-btn--hovered_k8u9j_58","thread-footer__btn-label":"_thread-footer__btn-label_k8u9j_68","thread-footer__divider":"_thread-footer__divider_k8u9j_75","thread-footer__last-reply-group":"_thread-footer__last-reply-group_k8u9j_88","thread-footer--following":"_thread-footer--following_k8u9j_107","thread-footer--hovered":"_thread-footer--hovered_k8u9j_107","thread-footer__last-reply":"_thread-footer__last-reply_k8u9j_88"};exports.default=e;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./ThreadFooter.css');const e={"thread-footer":"_thread-footer_b5kji_2","thread-footer__inner":"_thread-footer__inner_b5kji_8","thread-footer__avatars-group":"_thread-footer__avatars-group_b5kji_14","thread-footer__status-hint":"_thread-footer__status-hint_b5kji_19","thread-footer__badge-container":"_thread-footer__badge-container_b5kji_30","thread-footer__unread-dot":"_thread-footer__unread-dot_b5kji_39","thread-footer__mention-badge":"_thread-footer__mention-badge_b5kji_46","thread-footer__buttons":"_thread-footer__buttons_b5kji_49","thread-footer__reply-btn":"_thread-footer__reply-btn_b5kji_54","thread-footer__follow-btn":"_thread-footer__follow-btn_b5kji_54","thread-footer__follow-btn--following":"_thread-footer__follow-btn--following_b5kji_57","thread-footer__reply-btn--hovered":"_thread-footer__reply-btn--hovered_b5kji_63","thread-footer__btn-label":"_thread-footer__btn-label_b5kji_73","thread-footer__divider":"_thread-footer__divider_b5kji_80","thread-footer__last-reply-group":"_thread-footer__last-reply-group_b5kji_93","thread-footer--following":"_thread-footer--following_b5kji_112","thread-footer--hovered":"_thread-footer--hovered_b5kji_112","thread-footer__last-reply":"_thread-footer__last-reply_b5kji_93"};exports.default=e;
2
2
  //# sourceMappingURL=ThreadFooter.module.scss.cjs.map
@@ -1,21 +1,22 @@
1
1
  import './ThreadFooter.css';const _ = {
2
- "thread-footer": "_thread-footer_k8u9j_2",
3
- "thread-footer__inner": "_thread-footer__inner_k8u9j_9",
4
- "thread-footer__avatars-group": "_thread-footer__avatars-group_k8u9j_15",
5
- "thread-footer__status-hint": "_thread-footer__status-hint_k8u9j_21",
6
- "thread-footer__unread-dot": "_thread-footer__unread-dot_k8u9j_32",
7
- "thread-footer__mention-badge": "_thread-footer__mention-badge_k8u9j_40",
8
- "thread-footer__buttons": "_thread-footer__buttons_k8u9j_44",
9
- "thread-footer__reply-btn": "_thread-footer__reply-btn_k8u9j_49",
10
- "thread-footer__follow-btn": "_thread-footer__follow-btn_k8u9j_49",
11
- "thread-footer__follow-btn--following": "_thread-footer__follow-btn--following_k8u9j_52",
12
- "thread-footer__reply-btn--hovered": "_thread-footer__reply-btn--hovered_k8u9j_58",
13
- "thread-footer__btn-label": "_thread-footer__btn-label_k8u9j_68",
14
- "thread-footer__divider": "_thread-footer__divider_k8u9j_75",
15
- "thread-footer__last-reply-group": "_thread-footer__last-reply-group_k8u9j_88",
16
- "thread-footer--following": "_thread-footer--following_k8u9j_107",
17
- "thread-footer--hovered": "_thread-footer--hovered_k8u9j_107",
18
- "thread-footer__last-reply": "_thread-footer__last-reply_k8u9j_88"
2
+ "thread-footer": "_thread-footer_b5kji_2",
3
+ "thread-footer__inner": "_thread-footer__inner_b5kji_8",
4
+ "thread-footer__avatars-group": "_thread-footer__avatars-group_b5kji_14",
5
+ "thread-footer__status-hint": "_thread-footer__status-hint_b5kji_19",
6
+ "thread-footer__badge-container": "_thread-footer__badge-container_b5kji_30",
7
+ "thread-footer__unread-dot": "_thread-footer__unread-dot_b5kji_39",
8
+ "thread-footer__mention-badge": "_thread-footer__mention-badge_b5kji_46",
9
+ "thread-footer__buttons": "_thread-footer__buttons_b5kji_49",
10
+ "thread-footer__reply-btn": "_thread-footer__reply-btn_b5kji_54",
11
+ "thread-footer__follow-btn": "_thread-footer__follow-btn_b5kji_54",
12
+ "thread-footer__follow-btn--following": "_thread-footer__follow-btn--following_b5kji_57",
13
+ "thread-footer__reply-btn--hovered": "_thread-footer__reply-btn--hovered_b5kji_63",
14
+ "thread-footer__btn-label": "_thread-footer__btn-label_b5kji_73",
15
+ "thread-footer__divider": "_thread-footer__divider_b5kji_80",
16
+ "thread-footer__last-reply-group": "_thread-footer__last-reply-group_b5kji_93",
17
+ "thread-footer--following": "_thread-footer--following_b5kji_112",
18
+ "thread-footer--hovered": "_thread-footer--hovered_b5kji_112",
19
+ "thread-footer__last-reply": "_thread-footer__last-reply_b5kji_93"
19
20
  };
20
21
  export {
21
22
  _ as default
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadFooter.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ThreadFooter.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItem.cjs","sources":["../../../src/components/thread-list-item/ThreadListItem.tsx"],"sourcesContent":["import DotsHorizontalIcon from '@mattermost/compass-icons/components/dots-horizontal';\nimport type { KeyboardEvent, MouseEvent } from 'react';\nimport Icon from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport Tag from '@/components/tag/Tag';\nimport MentionBadge from '../mention-badge/MentionBadge';\nimport UnreadBadge from '../unread-badge/UnreadBadge';\nimport UserAvatarGroup, {\n type UserAvatarGroupItem,\n} from '../user-avatar-group/UserAvatarGroup';\nimport styles from './ThreadListItem.module.scss';\n\nconst DEFAULT_PARTICIPANTS: UserAvatarGroupItem[] = [\n { key: 'leonard', name: 'Leonard Riley' },\n { key: 'aiko', name: 'Aiko Tan' },\n { key: 'arjun', name: 'Arjun Patel' },\n { key: 'marco', name: 'Marco Rinaldi' },\n { key: 'sofia', name: 'Sofia Bauer' },\n];\n\nexport interface ThreadListItemProps {\n /** Whether this item is the active/selected thread. */\n active?: boolean;\n /** Badge in the left gutter. Default: None. Hidden when `active` is true. */\n badge?: 'none' | 'unread' | 'mention';\n /** Shown when `badge` is Mention. Default: 1. */\n mentionCount?: number;\n /** Author name. */\n authorName?: string;\n /** Channel/team label. */\n channelLabel?: string;\n /** Message preview text. */\n previewText?: string;\n /** Timestamp label. */\n timestamp?: string;\n /** Number of replies. */\n replyCount?: number;\n /** Stacked avatars for recent participants. Pass `[]` to hide. When omitted, uses demo participants. */\n participants?: UserAvatarGroupItem[];\n /** Optional thread title. */\n threadTitle?: string;\n /** Optional CSS class name. */\n className?: string;\n /** Opens the thread. Sibling of the overflow menu for keyboard reachability. */\n onClick?: () => void;\n /** Thread overflow menu handler. */\n onMenuClick?: (event: MouseEvent<HTMLButtonElement>) => void;\n}\n\n/**\n * The Thread List Item is a single entry in the Threads view. Each row gives the user enough\n * context — who, where, what, when — to decide whether to open the thread without opening\n * it.\n */\nexport default function ThreadListItem({\n active = false,\n badge = 'none',\n mentionCount = 1,\n authorName = 'Martin Kraft',\n channelLabel = 'ENTERPRISE TEAM',\n previewText = 'Do we have a guideline for what minimum width we should support in the system console? I know that…',\n timestamp = '5 mins ago',\n replyCount = 3,\n participants: participantsProp,\n threadTitle,\n className = '',\n onClick,\n onMenuClick,\n}: ThreadListItemProps) {\n const participants =\n participantsProp === undefined ? DEFAULT_PARTICIPANTS : participantsProp;\n const showParticipants = participants.length > 0;\n const showGutterBadge =\n !active && (badge === 'unread' || badge === 'mention');\n const replyLabel = replyCount === 1 ? '1 reply' : `${replyCount} replies`;\n\n const rootClass = [\n styles['thread-list-item'],\n active ? styles['thread-list-item--active'] : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const statusHint =\n badge === 'mention'\n ? `${mentionCount} mention${mentionCount === 1 ? '' : 's'}`\n : badge === 'unread'\n ? 'unread'\n : undefined;\n\n const handleMainClick = (event: MouseEvent<HTMLDivElement>) => {\n const selection = window.getSelection();\n if (\n selection?.type === 'Range' &&\n selection.toString().length > 0 &&\n event.currentTarget.contains(selection.getRangeAt(0).commonAncestorContainer)\n ) {\n return;\n }\n onClick?.();\n };\n\n const handleMainKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key !== 'Enter' && event.key !== ' ') {\n return;\n }\n event.preventDefault();\n onClick?.();\n };\n\n return (\n <div className={rootClass}>\n <div\n className={styles['thread-list-item__main']}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n onClick={onClick ? handleMainClick : undefined}\n onKeyDown={onClick ? handleMainKeyDown : undefined}\n aria-current={active ? true : undefined}\n >\n <div className={styles['thread-list-item__thread']}>\n <div className={styles['thread-list-item__container']}>\n <div className={styles['thread-list-item__post-content']}>\n <div className={styles['thread-list-item__gutter']}>\n {showGutterBadge && badge === 'unread' && (\n <span\n className={styles['thread-list-item__unread-gutter']}\n aria-hidden\n >\n <UnreadBadge\n className={styles['thread-list-item__unread-badge']}\n context=\"icon-button\"\n />\n </span>\n )}\n {showGutterBadge && badge === 'mention' && (\n <span\n className={styles['thread-list-item__mention-gutter']}\n aria-hidden\n >\n <MentionBadge\n count={mentionCount}\n location=\"channel\"\n size=\"medium\"\n />\n </span>\n )}\n </div>\n <div className={styles['thread-list-item__post-body']}>\n <div className={styles['thread-list-item__post-body-content']}>\n <div className={styles['thread-list-item__name-row']}>\n <div className={styles['thread-list-item__name-group']}>\n <span className={styles['thread-list-item__author']}>\n {authorName}\n </span>\n <Tag casing=\"all-caps\" label={channelLabel} />\n {statusHint && (\n <span\n className={styles['thread-list-item__status-hint']}\n >\n {statusHint}\n </span>\n )}\n </div>\n <span className={styles['thread-list-item__timestamp']}>\n {timestamp}\n </span>\n </div>\n {threadTitle != null && (\n <div className={styles['thread-list-item__title-row']}>\n <p className={styles['thread-list-item__title']}>\n {threadTitle}\n </p>\n </div>\n )}\n <p className={styles['thread-list-item__preview']}>\n {previewText}\n </p>\n </div>\n </div>\n </div>\n <div className={styles['thread-list-item__replies']}>\n <div className={styles['thread-list-item__replies-inner']}>\n {showParticipants && (\n <UserAvatarGroup\n avatars={participants}\n className={styles['thread-list-item__avatar-group']}\n max={3}\n size=\"20\"\n />\n )}\n <span className={styles['thread-list-item__reply-count']}>\n {replyLabel}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n {onMenuClick && (\n <div className={styles['thread-list-item__actions']}>\n <span className={styles['thread-list-item__menu-button']}>\n <IconButton\n aria-label=\"Thread actions\"\n icon={<Icon size=\"16\" glyph={<DotsHorizontalIcon />} />}\n padding=\"compact\"\n size=\"small\"\n style=\"default\"\n type=\"button\"\n onClick={(event) => {\n event.stopPropagation();\n onMenuClick(event);\n }}\n />\n </span>\n </div>\n )}\n </div>\n );\n}\n"],"names":["DEFAULT_PARTICIPANTS","ThreadListItem","active","badge","mentionCount","authorName","channelLabel","previewText","timestamp","replyCount","participantsProp","threadTitle","className","onClick","onMenuClick","participants","showParticipants","showGutterBadge","replyLabel","rootClass","styles","statusHint","handleMainClick","event","selection","handleMainKeyDown","jsxs","jsx","UnreadBadge","MentionBadge","Tag","UserAvatarGroup","IconButton","Icon","DotsHorizontalIcon"],"mappings":"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"}
1
+ {"version":3,"file":"ThreadListItem.cjs","sources":["../../../src/components/thread-list-item/ThreadListItem.tsx"],"sourcesContent":["import DotsHorizontalIcon from '@mattermost/compass-icons/components/dots-horizontal';\nimport type { KeyboardEvent, MouseEvent } from 'react';\nimport Icon from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport Tag from '@/components/tag/Tag';\nimport MentionBadge from '../mention-badge/MentionBadge';\nimport UnreadBadge from '../unread-badge/UnreadBadge';\nimport UserAvatarGroup, {\n type UserAvatarGroupItem,\n} from '../user-avatar-group/UserAvatarGroup';\nimport styles from './ThreadListItem.module.scss';\n\nconst DEFAULT_PARTICIPANTS: UserAvatarGroupItem[] = [\n { key: 'leonard', name: 'Leonard Riley' },\n { key: 'aiko', name: 'Aiko Tan' },\n { key: 'arjun', name: 'Arjun Patel' },\n { key: 'marco', name: 'Marco Rinaldi' },\n { key: 'sofia', name: 'Sofia Bauer' },\n];\n\nexport interface ThreadListItemProps {\n /** Whether this item is the active/selected thread. */\n active?: boolean;\n /** Badge in the left gutter. Default: None. Hidden when `active` is true. */\n badge?: 'none' | 'unread' | 'mention';\n /** Shown when `badge` is Mention. Default: 1. */\n mentionCount?: number;\n /** Author name. */\n authorName?: string;\n /** Channel/team label. */\n channelLabel?: string;\n /** Message preview text. */\n previewText?: string;\n /** Timestamp label. */\n timestamp?: string;\n /** Number of replies. */\n replyCount?: number;\n /** Stacked avatars for recent participants. Pass `[]` to hide. When omitted, uses demo participants. */\n participants?: UserAvatarGroupItem[];\n /** Optional thread title. */\n threadTitle?: string;\n /** Optional CSS class name. */\n className?: string;\n /** Opens the thread. Sibling of the overflow menu for keyboard reachability. */\n onClick?: () => void;\n /** Thread overflow menu handler. */\n onMenuClick?: (event: MouseEvent<HTMLButtonElement>) => void;\n}\n\n/**\n * The Thread List Item is a single entry in the Threads view. Each row gives the user enough\n * context — who, where, what, when — to decide whether to open the thread without opening\n * it.\n */\nexport default function ThreadListItem({\n active = false,\n badge = 'none',\n mentionCount = 1,\n authorName = 'Martin Kraft',\n channelLabel = 'ENTERPRISE TEAM',\n previewText = 'Do we have a guideline for what minimum width we should support in the system console? I know that…',\n timestamp = '5 mins ago',\n replyCount = 3,\n participants: participantsProp,\n threadTitle,\n className = '',\n onClick,\n onMenuClick,\n}: ThreadListItemProps) {\n const participants =\n participantsProp === undefined ? DEFAULT_PARTICIPANTS : participantsProp;\n const showParticipants = participants.length > 0;\n const showGutterBadge =\n !active && (badge === 'unread' || badge === 'mention');\n const replyLabel = replyCount === 1 ? '1 reply' : `${replyCount} replies`;\n\n const rootClass = [\n styles['thread-list-item'],\n active ? styles['thread-list-item--active'] : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const statusHint =\n badge === 'mention'\n ? `${mentionCount} mention${mentionCount === 1 ? '' : 's'}`\n : badge === 'unread'\n ? 'unread'\n : undefined;\n\n const handleMainClick = (event: MouseEvent<HTMLDivElement>) => {\n const selection = window.getSelection();\n if (\n selection?.type === 'Range' &&\n selection.toString().length > 0 &&\n event.currentTarget.contains(\n selection.getRangeAt(0).commonAncestorContainer,\n )\n ) {\n return;\n }\n onClick?.();\n };\n\n const handleMainKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key !== 'Enter' && event.key !== ' ') {\n return;\n }\n event.preventDefault();\n onClick?.();\n };\n\n return (\n <div className={rootClass}>\n <div\n className={styles['thread-list-item__main']}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n onClick={onClick ? handleMainClick : undefined}\n onKeyDown={onClick ? handleMainKeyDown : undefined}\n aria-current={active ? true : undefined}\n >\n <div className={styles['thread-list-item__thread']}>\n <div className={styles['thread-list-item__container']}>\n <div className={styles['thread-list-item__post-content']}>\n <div className={styles['thread-list-item__gutter']}>\n {showGutterBadge && badge === 'unread' && (\n <span\n className={styles['thread-list-item__unread-gutter']}\n aria-hidden\n >\n <UnreadBadge\n className={styles['thread-list-item__unread-badge']}\n context=\"icon-button\"\n />\n </span>\n )}\n {showGutterBadge && badge === 'mention' && (\n <span\n className={styles['thread-list-item__mention-gutter']}\n aria-hidden\n >\n <MentionBadge\n count={mentionCount}\n location=\"channel\"\n size=\"medium\"\n />\n </span>\n )}\n </div>\n <div className={styles['thread-list-item__post-body']}>\n <div className={styles['thread-list-item__post-body-content']}>\n <div className={styles['thread-list-item__name-row']}>\n <div className={styles['thread-list-item__name-group']}>\n <span className={styles['thread-list-item__author']}>\n {authorName}\n </span>\n <Tag casing=\"all-caps\" label={channelLabel} />\n {statusHint && (\n <span\n className={styles['thread-list-item__status-hint']}\n >\n {statusHint}\n </span>\n )}\n </div>\n <span className={styles['thread-list-item__timestamp']}>\n {timestamp}\n </span>\n </div>\n {threadTitle != null && (\n <div className={styles['thread-list-item__title-row']}>\n <p className={styles['thread-list-item__title']}>\n {threadTitle}\n </p>\n </div>\n )}\n <p className={styles['thread-list-item__preview']}>\n {previewText}\n </p>\n </div>\n </div>\n </div>\n <div className={styles['thread-list-item__replies']}>\n <div className={styles['thread-list-item__replies-inner']}>\n {showParticipants && (\n <UserAvatarGroup\n avatars={participants}\n className={styles['thread-list-item__avatar-group']}\n max={3}\n size=\"20\"\n />\n )}\n <span className={styles['thread-list-item__reply-count']}>\n {replyLabel}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n {onMenuClick && (\n <div className={styles['thread-list-item__actions']}>\n <span className={styles['thread-list-item__menu-button']}>\n <IconButton\n aria-label=\"Thread actions\"\n icon={<Icon size=\"16\" glyph={<DotsHorizontalIcon />} />}\n padding=\"compact\"\n size=\"small\"\n style=\"default\"\n type=\"button\"\n onClick={(event) => {\n event.stopPropagation();\n onMenuClick(event);\n }}\n />\n </span>\n </div>\n )}\n </div>\n );\n}\n"],"names":["DEFAULT_PARTICIPANTS","ThreadListItem","active","badge","mentionCount","authorName","channelLabel","previewText","timestamp","replyCount","participantsProp","threadTitle","className","onClick","onMenuClick","participants","showParticipants","showGutterBadge","replyLabel","rootClass","styles","statusHint","handleMainClick","event","selection","handleMainKeyDown","jsxs","jsx","UnreadBadge","MentionBadge","Tag","UserAvatarGroup","IconButton","Icon","DotsHorizontalIcon"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItem.d.ts","sourceRoot":"","sources":["../../../src/components/thread-list-item/ThreadListItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,UAAU,EAAE,MAAM,OAAO,CAAC;AAMvD,OAAwB,EACtB,KAAK,mBAAmB,EACzB,MAAM,oCAAoC,CAAC;AAW5C,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wGAAwG;IACxG,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACrC,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,oCAAoC;IACpC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CAC9D;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,MAAc,EACd,KAAc,EACd,YAAgB,EAChB,UAA2B,EAC3B,YAAgC,EAChC,WAAmH,EACnH,SAAwB,EACxB,UAAc,EACd,YAAY,EAAE,gBAAgB,EAC9B,WAAW,EACX,SAAc,EACd,OAAO,EACP,WAAW,GACZ,EAAE,mBAAmB,2CAwJrB"}
1
+ {"version":3,"file":"ThreadListItem.d.ts","sourceRoot":"","sources":["../../../src/components/thread-list-item/ThreadListItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,UAAU,EAAE,MAAM,OAAO,CAAC;AAMvD,OAAwB,EACtB,KAAK,mBAAmB,EACzB,MAAM,oCAAoC,CAAC;AAW5C,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wGAAwG;IACxG,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACrC,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,oCAAoC;IACpC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CAC9D;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,MAAc,EACd,KAAc,EACd,YAAgB,EAChB,UAA2B,EAC3B,YAAgC,EAChC,WAAmH,EACnH,SAAwB,EACxB,UAAc,EACd,YAAY,EAAE,gBAAgB,EAC9B,WAAW,EACX,SAAc,EACd,OAAO,EACP,WAAW,GACZ,EAAE,mBAAmB,2CA0JrB"}
@@ -35,7 +35,9 @@ function q({
35
35
  g
36
36
  ].filter(Boolean).join(" "), u = r === "mention" ? `${d} mention${d === 1 ? "" : "s"}` : r === "unread" ? "unread" : void 0, T = (i) => {
37
37
  const n = window.getSelection();
38
- (n == null ? void 0 : n.type) === "Range" && n.toString().length > 0 && i.currentTarget.contains(n.getRangeAt(0).commonAncestorContainer) || a == null || a();
38
+ (n == null ? void 0 : n.type) === "Range" && n.toString().length > 0 && i.currentTarget.contains(
39
+ n.getRangeAt(0).commonAncestorContainer
40
+ ) || a == null || a();
39
41
  }, R = (i) => {
40
42
  i.key !== "Enter" && i.key !== " " || (i.preventDefault(), a == null || a());
41
43
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadListItem.js","sources":["../../../src/components/thread-list-item/ThreadListItem.tsx"],"sourcesContent":["import DotsHorizontalIcon from '@mattermost/compass-icons/components/dots-horizontal';\nimport type { KeyboardEvent, MouseEvent } from 'react';\nimport Icon from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport Tag from '@/components/tag/Tag';\nimport MentionBadge from '../mention-badge/MentionBadge';\nimport UnreadBadge from '../unread-badge/UnreadBadge';\nimport UserAvatarGroup, {\n type UserAvatarGroupItem,\n} from '../user-avatar-group/UserAvatarGroup';\nimport styles from './ThreadListItem.module.scss';\n\nconst DEFAULT_PARTICIPANTS: UserAvatarGroupItem[] = [\n { key: 'leonard', name: 'Leonard Riley' },\n { key: 'aiko', name: 'Aiko Tan' },\n { key: 'arjun', name: 'Arjun Patel' },\n { key: 'marco', name: 'Marco Rinaldi' },\n { key: 'sofia', name: 'Sofia Bauer' },\n];\n\nexport interface ThreadListItemProps {\n /** Whether this item is the active/selected thread. */\n active?: boolean;\n /** Badge in the left gutter. Default: None. Hidden when `active` is true. */\n badge?: 'none' | 'unread' | 'mention';\n /** Shown when `badge` is Mention. Default: 1. */\n mentionCount?: number;\n /** Author name. */\n authorName?: string;\n /** Channel/team label. */\n channelLabel?: string;\n /** Message preview text. */\n previewText?: string;\n /** Timestamp label. */\n timestamp?: string;\n /** Number of replies. */\n replyCount?: number;\n /** Stacked avatars for recent participants. Pass `[]` to hide. When omitted, uses demo participants. */\n participants?: UserAvatarGroupItem[];\n /** Optional thread title. */\n threadTitle?: string;\n /** Optional CSS class name. */\n className?: string;\n /** Opens the thread. Sibling of the overflow menu for keyboard reachability. */\n onClick?: () => void;\n /** Thread overflow menu handler. */\n onMenuClick?: (event: MouseEvent<HTMLButtonElement>) => void;\n}\n\n/**\n * The Thread List Item is a single entry in the Threads view. Each row gives the user enough\n * context — who, where, what, when — to decide whether to open the thread without opening\n * it.\n */\nexport default function ThreadListItem({\n active = false,\n badge = 'none',\n mentionCount = 1,\n authorName = 'Martin Kraft',\n channelLabel = 'ENTERPRISE TEAM',\n previewText = 'Do we have a guideline for what minimum width we should support in the system console? I know that…',\n timestamp = '5 mins ago',\n replyCount = 3,\n participants: participantsProp,\n threadTitle,\n className = '',\n onClick,\n onMenuClick,\n}: ThreadListItemProps) {\n const participants =\n participantsProp === undefined ? DEFAULT_PARTICIPANTS : participantsProp;\n const showParticipants = participants.length > 0;\n const showGutterBadge =\n !active && (badge === 'unread' || badge === 'mention');\n const replyLabel = replyCount === 1 ? '1 reply' : `${replyCount} replies`;\n\n const rootClass = [\n styles['thread-list-item'],\n active ? styles['thread-list-item--active'] : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const statusHint =\n badge === 'mention'\n ? `${mentionCount} mention${mentionCount === 1 ? '' : 's'}`\n : badge === 'unread'\n ? 'unread'\n : undefined;\n\n const handleMainClick = (event: MouseEvent<HTMLDivElement>) => {\n const selection = window.getSelection();\n if (\n selection?.type === 'Range' &&\n selection.toString().length > 0 &&\n event.currentTarget.contains(selection.getRangeAt(0).commonAncestorContainer)\n ) {\n return;\n }\n onClick?.();\n };\n\n const handleMainKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key !== 'Enter' && event.key !== ' ') {\n return;\n }\n event.preventDefault();\n onClick?.();\n };\n\n return (\n <div className={rootClass}>\n <div\n className={styles['thread-list-item__main']}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n onClick={onClick ? handleMainClick : undefined}\n onKeyDown={onClick ? handleMainKeyDown : undefined}\n aria-current={active ? true : undefined}\n >\n <div className={styles['thread-list-item__thread']}>\n <div className={styles['thread-list-item__container']}>\n <div className={styles['thread-list-item__post-content']}>\n <div className={styles['thread-list-item__gutter']}>\n {showGutterBadge && badge === 'unread' && (\n <span\n className={styles['thread-list-item__unread-gutter']}\n aria-hidden\n >\n <UnreadBadge\n className={styles['thread-list-item__unread-badge']}\n context=\"icon-button\"\n />\n </span>\n )}\n {showGutterBadge && badge === 'mention' && (\n <span\n className={styles['thread-list-item__mention-gutter']}\n aria-hidden\n >\n <MentionBadge\n count={mentionCount}\n location=\"channel\"\n size=\"medium\"\n />\n </span>\n )}\n </div>\n <div className={styles['thread-list-item__post-body']}>\n <div className={styles['thread-list-item__post-body-content']}>\n <div className={styles['thread-list-item__name-row']}>\n <div className={styles['thread-list-item__name-group']}>\n <span className={styles['thread-list-item__author']}>\n {authorName}\n </span>\n <Tag casing=\"all-caps\" label={channelLabel} />\n {statusHint && (\n <span\n className={styles['thread-list-item__status-hint']}\n >\n {statusHint}\n </span>\n )}\n </div>\n <span className={styles['thread-list-item__timestamp']}>\n {timestamp}\n </span>\n </div>\n {threadTitle != null && (\n <div className={styles['thread-list-item__title-row']}>\n <p className={styles['thread-list-item__title']}>\n {threadTitle}\n </p>\n </div>\n )}\n <p className={styles['thread-list-item__preview']}>\n {previewText}\n </p>\n </div>\n </div>\n </div>\n <div className={styles['thread-list-item__replies']}>\n <div className={styles['thread-list-item__replies-inner']}>\n {showParticipants && (\n <UserAvatarGroup\n avatars={participants}\n className={styles['thread-list-item__avatar-group']}\n max={3}\n size=\"20\"\n />\n )}\n <span className={styles['thread-list-item__reply-count']}>\n {replyLabel}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n {onMenuClick && (\n <div className={styles['thread-list-item__actions']}>\n <span className={styles['thread-list-item__menu-button']}>\n <IconButton\n aria-label=\"Thread actions\"\n icon={<Icon size=\"16\" glyph={<DotsHorizontalIcon />} />}\n padding=\"compact\"\n size=\"small\"\n style=\"default\"\n type=\"button\"\n onClick={(event) => {\n event.stopPropagation();\n onMenuClick(event);\n }}\n />\n </span>\n </div>\n )}\n </div>\n );\n}\n"],"names":["DEFAULT_PARTICIPANTS","ThreadListItem","active","badge","mentionCount","authorName","channelLabel","previewText","timestamp","replyCount","participantsProp","threadTitle","className","onClick","onMenuClick","participants","showParticipants","showGutterBadge","replyLabel","rootClass","styles","statusHint","handleMainClick","event","selection","handleMainKeyDown","jsxs","jsx","UnreadBadge","MentionBadge","Tag","UserAvatarGroup","IconButton","Icon","DotsHorizontalIcon"],"mappings":"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"}
1
+ {"version":3,"file":"ThreadListItem.js","sources":["../../../src/components/thread-list-item/ThreadListItem.tsx"],"sourcesContent":["import DotsHorizontalIcon from '@mattermost/compass-icons/components/dots-horizontal';\nimport type { KeyboardEvent, MouseEvent } from 'react';\nimport Icon from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport Tag from '@/components/tag/Tag';\nimport MentionBadge from '../mention-badge/MentionBadge';\nimport UnreadBadge from '../unread-badge/UnreadBadge';\nimport UserAvatarGroup, {\n type UserAvatarGroupItem,\n} from '../user-avatar-group/UserAvatarGroup';\nimport styles from './ThreadListItem.module.scss';\n\nconst DEFAULT_PARTICIPANTS: UserAvatarGroupItem[] = [\n { key: 'leonard', name: 'Leonard Riley' },\n { key: 'aiko', name: 'Aiko Tan' },\n { key: 'arjun', name: 'Arjun Patel' },\n { key: 'marco', name: 'Marco Rinaldi' },\n { key: 'sofia', name: 'Sofia Bauer' },\n];\n\nexport interface ThreadListItemProps {\n /** Whether this item is the active/selected thread. */\n active?: boolean;\n /** Badge in the left gutter. Default: None. Hidden when `active` is true. */\n badge?: 'none' | 'unread' | 'mention';\n /** Shown when `badge` is Mention. Default: 1. */\n mentionCount?: number;\n /** Author name. */\n authorName?: string;\n /** Channel/team label. */\n channelLabel?: string;\n /** Message preview text. */\n previewText?: string;\n /** Timestamp label. */\n timestamp?: string;\n /** Number of replies. */\n replyCount?: number;\n /** Stacked avatars for recent participants. Pass `[]` to hide. When omitted, uses demo participants. */\n participants?: UserAvatarGroupItem[];\n /** Optional thread title. */\n threadTitle?: string;\n /** Optional CSS class name. */\n className?: string;\n /** Opens the thread. Sibling of the overflow menu for keyboard reachability. */\n onClick?: () => void;\n /** Thread overflow menu handler. */\n onMenuClick?: (event: MouseEvent<HTMLButtonElement>) => void;\n}\n\n/**\n * The Thread List Item is a single entry in the Threads view. Each row gives the user enough\n * context — who, where, what, when — to decide whether to open the thread without opening\n * it.\n */\nexport default function ThreadListItem({\n active = false,\n badge = 'none',\n mentionCount = 1,\n authorName = 'Martin Kraft',\n channelLabel = 'ENTERPRISE TEAM',\n previewText = 'Do we have a guideline for what minimum width we should support in the system console? I know that…',\n timestamp = '5 mins ago',\n replyCount = 3,\n participants: participantsProp,\n threadTitle,\n className = '',\n onClick,\n onMenuClick,\n}: ThreadListItemProps) {\n const participants =\n participantsProp === undefined ? DEFAULT_PARTICIPANTS : participantsProp;\n const showParticipants = participants.length > 0;\n const showGutterBadge =\n !active && (badge === 'unread' || badge === 'mention');\n const replyLabel = replyCount === 1 ? '1 reply' : `${replyCount} replies`;\n\n const rootClass = [\n styles['thread-list-item'],\n active ? styles['thread-list-item--active'] : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const statusHint =\n badge === 'mention'\n ? `${mentionCount} mention${mentionCount === 1 ? '' : 's'}`\n : badge === 'unread'\n ? 'unread'\n : undefined;\n\n const handleMainClick = (event: MouseEvent<HTMLDivElement>) => {\n const selection = window.getSelection();\n if (\n selection?.type === 'Range' &&\n selection.toString().length > 0 &&\n event.currentTarget.contains(\n selection.getRangeAt(0).commonAncestorContainer,\n )\n ) {\n return;\n }\n onClick?.();\n };\n\n const handleMainKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key !== 'Enter' && event.key !== ' ') {\n return;\n }\n event.preventDefault();\n onClick?.();\n };\n\n return (\n <div className={rootClass}>\n <div\n className={styles['thread-list-item__main']}\n role={onClick ? 'button' : undefined}\n tabIndex={onClick ? 0 : undefined}\n onClick={onClick ? handleMainClick : undefined}\n onKeyDown={onClick ? handleMainKeyDown : undefined}\n aria-current={active ? true : undefined}\n >\n <div className={styles['thread-list-item__thread']}>\n <div className={styles['thread-list-item__container']}>\n <div className={styles['thread-list-item__post-content']}>\n <div className={styles['thread-list-item__gutter']}>\n {showGutterBadge && badge === 'unread' && (\n <span\n className={styles['thread-list-item__unread-gutter']}\n aria-hidden\n >\n <UnreadBadge\n className={styles['thread-list-item__unread-badge']}\n context=\"icon-button\"\n />\n </span>\n )}\n {showGutterBadge && badge === 'mention' && (\n <span\n className={styles['thread-list-item__mention-gutter']}\n aria-hidden\n >\n <MentionBadge\n count={mentionCount}\n location=\"channel\"\n size=\"medium\"\n />\n </span>\n )}\n </div>\n <div className={styles['thread-list-item__post-body']}>\n <div className={styles['thread-list-item__post-body-content']}>\n <div className={styles['thread-list-item__name-row']}>\n <div className={styles['thread-list-item__name-group']}>\n <span className={styles['thread-list-item__author']}>\n {authorName}\n </span>\n <Tag casing=\"all-caps\" label={channelLabel} />\n {statusHint && (\n <span\n className={styles['thread-list-item__status-hint']}\n >\n {statusHint}\n </span>\n )}\n </div>\n <span className={styles['thread-list-item__timestamp']}>\n {timestamp}\n </span>\n </div>\n {threadTitle != null && (\n <div className={styles['thread-list-item__title-row']}>\n <p className={styles['thread-list-item__title']}>\n {threadTitle}\n </p>\n </div>\n )}\n <p className={styles['thread-list-item__preview']}>\n {previewText}\n </p>\n </div>\n </div>\n </div>\n <div className={styles['thread-list-item__replies']}>\n <div className={styles['thread-list-item__replies-inner']}>\n {showParticipants && (\n <UserAvatarGroup\n avatars={participants}\n className={styles['thread-list-item__avatar-group']}\n max={3}\n size=\"20\"\n />\n )}\n <span className={styles['thread-list-item__reply-count']}>\n {replyLabel}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n {onMenuClick && (\n <div className={styles['thread-list-item__actions']}>\n <span className={styles['thread-list-item__menu-button']}>\n <IconButton\n aria-label=\"Thread actions\"\n icon={<Icon size=\"16\" glyph={<DotsHorizontalIcon />} />}\n padding=\"compact\"\n size=\"small\"\n style=\"default\"\n type=\"button\"\n onClick={(event) => {\n event.stopPropagation();\n onMenuClick(event);\n }}\n />\n </span>\n </div>\n )}\n </div>\n );\n}\n"],"names":["DEFAULT_PARTICIPANTS","ThreadListItem","active","badge","mentionCount","authorName","channelLabel","previewText","timestamp","replyCount","participantsProp","threadTitle","className","onClick","onMenuClick","participants","showParticipants","showGutterBadge","replyLabel","rootClass","styles","statusHint","handleMainClick","event","selection","handleMainKeyDown","jsxs","jsx","UnreadBadge","MentionBadge","Tag","UserAvatarGroup","IconButton","Icon","DotsHorizontalIcon"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.cjs","sources":["../../../src/components/toast/Toast.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport AlertCircleOutlineIcon from '@mattermost/compass-icons/components/alert-circle-outline';\nimport AlertOutlineIcon from '@mattermost/compass-icons/components/alert-outline';\nimport CheckIcon from '@mattermost/compass-icons/components/check';\nimport CloseIcon from '@mattermost/compass-icons/components/close';\nimport InformationOutlineIcon from '@mattermost/compass-icons/components/information-outline';\nimport Button from '@/components/button/Button';\nimport Icon from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport styles from './Toast.module.scss';\n\nexport type ToastType =\n | 'general'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger';\n\nexport interface ToastProps {\n className?: string;\n message: string;\n type?: ToastType;\n /** Optional icon override — pass `<Icon glyph={<SomeIcon />} />`; replaces the default type icon. Toast provides the correct size via context. */\n icon?: ReactNode;\n actionLabel?: string;\n onAction?: () => void;\n onDismiss?: () => void;\n}\n\nconst TYPE_ICONS: Record<ToastType, ReactNode> = {\n general: <AlertCircleOutlineIcon />,\n info: <InformationOutlineIcon />,\n success: <CheckIcon />,\n danger: <AlertOutlineIcon />,\n warning: <AlertCircleOutlineIcon />,\n};\n\n/**\n * Toasts notify the user that an action has completed or surface a brief message about a\n * system process. They sit on top of the workflow without interrupting it, don't require\n * user input to disappear, and auto-dismiss after a short duration.\n */\nexport default function Toast({\n className = '',\n message,\n type = 'general',\n icon,\n actionLabel,\n onAction,\n onDismiss,\n}: ToastProps) {\n const typeClass = styles[`toast--type-${type.toLowerCase()}`];\n const noDismissClass = onDismiss == null ? styles['toast--no-dismiss'] : '';\n const rootClass = [styles.toast, typeClass, noDismissClass, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={rootClass} role=\"status\" aria-live=\"polite\">\n <div className={styles['toast__content']}>\n <span className={styles['toast__icon']} aria-hidden>\n <IconSlotContext.Provider value={{ size: '16' }}>\n {icon ?? <Icon glyph={TYPE_ICONS[type]} />}\n </IconSlotContext.Provider>\n </span>\n <span className={styles['toast__message']}>{message}</span>\n {actionLabel != null && (\n <Button\n appearance=\"default\"\n emphasis=\"tertiary\"\n size=\"x-small\"\n className={styles['toast__action-btn--on-dark']}\n onClick={onAction}\n >\n {actionLabel}\n </Button>\n )}\n </div>\n {onDismiss != null && (\n <IconButton\n aria-label=\"Dismiss\"\n size=\"small\"\n className={styles['toast__dismiss']}\n icon={<Icon glyph={<CloseIcon />} size=\"16\" />}\n onClick={onDismiss}\n />\n )}\n </div>\n );\n}\n"],"names":["TYPE_ICONS","AlertCircleOutlineIcon","InformationOutlineIcon","CheckIcon","AlertOutlineIcon","Toast","className","message","type","icon","actionLabel","onAction","onDismiss","typeClass","styles","noDismissClass","rootClass","jsxs","jsx","IconSlotContext","Icon","Button","IconButton","CloseIcon"],"mappings":"6lBA8BMA,EAA2C,CAC/C,cAAUC,EAAA,EAAuB,EACjC,WAAOC,EAAA,EAAuB,EAC9B,cAAUC,EAAA,EAAU,EACpB,aAASC,EAAA,EAAiB,EAC1B,cAAUH,EAAA,CAAA,CAAuB,CACnC,EAOA,SAAwBI,EAAM,CAC5B,UAAAC,EAAY,GACZ,QAAAC,EACA,KAAAC,EAAO,UACP,KAAAC,EACA,YAAAC,EACA,SAAAC,EACA,UAAAC,CACF,EAAe,CACb,MAAMC,EAAYC,EAAAA,QAAO,eAAeN,EAAK,YAAA,CAAa,EAAE,EACtDO,EAAiBH,GAAa,KAAOE,EAAAA,QAAO,mBAAmB,EAAI,GACnEE,EAAY,CAACF,UAAO,MAAOD,EAAWE,EAAgBT,CAAS,EAClE,OAAO,OAAO,EACd,KAAK,GAAG,EAEX,cACG,MAAA,CAAI,UAAWU,EAAW,KAAK,SAAS,YAAU,SACjD,SAAA,CAAAC,EAAAA,KAAC,MAAA,CAAI,UAAWH,EAAAA,QAAO,eACrB,SAAA,CAAAI,EAAAA,IAAC,OAAA,CAAK,UAAWJ,EAAAA,QAAO,YAAgB,cAAW,GACjD,SAAAI,EAAAA,IAACC,EAAAA,gBAAgB,SAAhB,CAAyB,MAAO,CAAE,KAAM,IAAA,EACtC,SAAAV,GAAQS,EAAAA,IAACE,EAAAA,QAAA,CAAK,MAAOpB,EAAWQ,CAAI,CAAA,CAAG,CAAA,CAC1C,CAAA,CACF,QACC,OAAA,CAAK,UAAWM,EAAAA,QAAO,eAAoB,SAAAP,EAAQ,EACnDG,GAAe,MACdQ,EAAAA,IAACG,EAAAA,QAAA,CACC,WAAW,UACX,SAAS,WACT,KAAK,UACL,UAAWP,EAAAA,QAAO,4BAA4B,EAC9C,QAASH,EAER,SAAAD,CAAA,CAAA,CACH,EAEJ,EACCE,GAAa,MACZM,EAAAA,IAACI,EAAAA,QAAA,CACC,aAAW,UACX,KAAK,QACL,UAAWR,EAAAA,QAAO,eAClB,WAAOM,UAAA,CAAK,YAAQG,EAAA,EAAU,EAAI,KAAK,KAAK,EAC5C,QAASX,CAAA,CAAA,CACX,EAEJ,CAEJ"}
1
+ {"version":3,"file":"Toast.cjs","sources":["../../../src/components/toast/Toast.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport AlertCircleOutlineIcon from '@mattermost/compass-icons/components/alert-circle-outline';\nimport AlertOutlineIcon from '@mattermost/compass-icons/components/alert-outline';\nimport CheckIcon from '@mattermost/compass-icons/components/check';\nimport CloseIcon from '@mattermost/compass-icons/components/close';\nimport InformationOutlineIcon from '@mattermost/compass-icons/components/information-outline';\nimport Button from '@/components/button/Button';\nimport Icon from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport styles from './Toast.module.scss';\n\nexport type ToastType = 'general' | 'info' | 'success' | 'warning' | 'danger';\n\nexport interface ToastProps {\n className?: string;\n /** Toast message. Accepts translated nodes (e.g. `<FormattedMessage/>`). */\n message: ReactNode;\n type?: ToastType;\n /** Optional icon override — pass `<Icon glyph={<SomeIcon />} />`; replaces the default type icon. Toast provides the correct size via context. */\n icon?: ReactNode;\n actionLabel?: ReactNode;\n onAction?: () => void;\n onDismiss?: () => void;\n}\n\nconst TYPE_ICONS: Record<ToastType, ReactNode> = {\n general: <AlertCircleOutlineIcon />,\n info: <InformationOutlineIcon />,\n success: <CheckIcon />,\n danger: <AlertOutlineIcon />,\n warning: <AlertCircleOutlineIcon />,\n};\n\n/**\n * Toasts notify the user that an action has completed or surface a brief message about a\n * system process. They sit on top of the workflow without interrupting it, don't require\n * user input to disappear, and auto-dismiss after a short duration.\n */\nexport default function Toast({\n className = '',\n message,\n type = 'general',\n icon,\n actionLabel,\n onAction,\n onDismiss,\n}: ToastProps) {\n const typeClass = styles[`toast--type-${type.toLowerCase()}`];\n const noDismissClass = onDismiss == null ? styles['toast--no-dismiss'] : '';\n const rootClass = [styles.toast, typeClass, noDismissClass, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={rootClass} role=\"status\" aria-live=\"polite\">\n <div className={styles['toast__content']}>\n <span className={styles['toast__icon']} aria-hidden>\n <IconSlotContext.Provider value={{ size: '16' }}>\n {icon ?? <Icon glyph={TYPE_ICONS[type]} />}\n </IconSlotContext.Provider>\n </span>\n <span className={styles['toast__message']}>{message}</span>\n {actionLabel != null && (\n <Button\n appearance=\"default\"\n emphasis=\"tertiary\"\n size=\"x-small\"\n className={styles['toast__action-btn--on-dark']}\n onClick={onAction}\n >\n {actionLabel}\n </Button>\n )}\n </div>\n {onDismiss != null && (\n <IconButton\n aria-label=\"Dismiss\"\n size=\"small\"\n className={styles['toast__dismiss']}\n icon={<Icon glyph={<CloseIcon />} size=\"16\" />}\n onClick={onDismiss}\n />\n )}\n </div>\n );\n}\n"],"names":["TYPE_ICONS","AlertCircleOutlineIcon","InformationOutlineIcon","CheckIcon","AlertOutlineIcon","Toast","className","message","type","icon","actionLabel","onAction","onDismiss","typeClass","styles","noDismissClass","rootClass","jsxs","jsx","IconSlotContext","Icon","Button","IconButton","CloseIcon"],"mappings":"6lBA0BMA,EAA2C,CAC/C,cAAUC,EAAA,EAAuB,EACjC,WAAOC,EAAA,EAAuB,EAC9B,cAAUC,EAAA,EAAU,EACpB,aAASC,EAAA,EAAiB,EAC1B,cAAUH,EAAA,CAAA,CAAuB,CACnC,EAOA,SAAwBI,EAAM,CAC5B,UAAAC,EAAY,GACZ,QAAAC,EACA,KAAAC,EAAO,UACP,KAAAC,EACA,YAAAC,EACA,SAAAC,EACA,UAAAC,CACF,EAAe,CACb,MAAMC,EAAYC,EAAAA,QAAO,eAAeN,EAAK,YAAA,CAAa,EAAE,EACtDO,EAAiBH,GAAa,KAAOE,EAAAA,QAAO,mBAAmB,EAAI,GACnEE,EAAY,CAACF,UAAO,MAAOD,EAAWE,EAAgBT,CAAS,EAClE,OAAO,OAAO,EACd,KAAK,GAAG,EAEX,cACG,MAAA,CAAI,UAAWU,EAAW,KAAK,SAAS,YAAU,SACjD,SAAA,CAAAC,EAAAA,KAAC,MAAA,CAAI,UAAWH,EAAAA,QAAO,eACrB,SAAA,CAAAI,EAAAA,IAAC,OAAA,CAAK,UAAWJ,EAAAA,QAAO,YAAgB,cAAW,GACjD,SAAAI,EAAAA,IAACC,EAAAA,gBAAgB,SAAhB,CAAyB,MAAO,CAAE,KAAM,IAAA,EACtC,SAAAV,GAAQS,EAAAA,IAACE,EAAAA,QAAA,CAAK,MAAOpB,EAAWQ,CAAI,CAAA,CAAG,CAAA,CAC1C,CAAA,CACF,QACC,OAAA,CAAK,UAAWM,EAAAA,QAAO,eAAoB,SAAAP,EAAQ,EACnDG,GAAe,MACdQ,EAAAA,IAACG,EAAAA,QAAA,CACC,WAAW,UACX,SAAS,WACT,KAAK,UACL,UAAWP,EAAAA,QAAO,4BAA4B,EAC9C,QAASH,EAER,SAAAD,CAAA,CAAA,CACH,EAEJ,EACCE,GAAa,MACZM,EAAAA,IAACI,EAAAA,QAAA,CACC,aAAW,UACX,KAAK,QACL,UAAWR,EAAAA,QAAO,eAClB,WAAOM,UAAA,CAAK,YAAQG,EAAA,EAAU,EAAI,KAAK,KAAK,EAC5C,QAASX,CAAA,CAAA,CACX,EAEJ,CAEJ"}
@@ -2,11 +2,12 @@ import { ReactNode } from 'react';
2
2
  export type ToastType = 'general' | 'info' | 'success' | 'warning' | 'danger';
3
3
  export interface ToastProps {
4
4
  className?: string;
5
- message: string;
5
+ /** Toast message. Accepts translated nodes (e.g. `<FormattedMessage/>`). */
6
+ message: ReactNode;
6
7
  type?: ToastType;
7
8
  /** Optional icon override — pass `<Icon glyph={<SomeIcon />} />`; replaces the default type icon. Toast provides the correct size via context. */
8
9
  icon?: ReactNode;
9
- actionLabel?: string;
10
+ actionLabel?: ReactNode;
10
11
  onAction?: () => void;
11
12
  onDismiss?: () => void;
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/components/toast/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAYvC,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,MAAM,GACN,SAAS,GACT,SAAS,GACT,QAAQ,CAAC;AAEb,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kJAAkJ;IAClJ,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAUD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAC5B,SAAc,EACd,OAAO,EACP,IAAgB,EAChB,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE,UAAU,2CAuCZ"}
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/components/toast/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAYvC,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9E,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,OAAO,EAAE,SAAS,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kJAAkJ;IAClJ,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAUD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAC5B,SAAc,EACd,OAAO,EACP,IAAgB,EAChB,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE,UAAU,2CAuCZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.js","sources":["../../../src/components/toast/Toast.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport AlertCircleOutlineIcon from '@mattermost/compass-icons/components/alert-circle-outline';\nimport AlertOutlineIcon from '@mattermost/compass-icons/components/alert-outline';\nimport CheckIcon from '@mattermost/compass-icons/components/check';\nimport CloseIcon from '@mattermost/compass-icons/components/close';\nimport InformationOutlineIcon from '@mattermost/compass-icons/components/information-outline';\nimport Button from '@/components/button/Button';\nimport Icon from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport styles from './Toast.module.scss';\n\nexport type ToastType =\n | 'general'\n | 'info'\n | 'success'\n | 'warning'\n | 'danger';\n\nexport interface ToastProps {\n className?: string;\n message: string;\n type?: ToastType;\n /** Optional icon override — pass `<Icon glyph={<SomeIcon />} />`; replaces the default type icon. Toast provides the correct size via context. */\n icon?: ReactNode;\n actionLabel?: string;\n onAction?: () => void;\n onDismiss?: () => void;\n}\n\nconst TYPE_ICONS: Record<ToastType, ReactNode> = {\n general: <AlertCircleOutlineIcon />,\n info: <InformationOutlineIcon />,\n success: <CheckIcon />,\n danger: <AlertOutlineIcon />,\n warning: <AlertCircleOutlineIcon />,\n};\n\n/**\n * Toasts notify the user that an action has completed or surface a brief message about a\n * system process. They sit on top of the workflow without interrupting it, don't require\n * user input to disappear, and auto-dismiss after a short duration.\n */\nexport default function Toast({\n className = '',\n message,\n type = 'general',\n icon,\n actionLabel,\n onAction,\n onDismiss,\n}: ToastProps) {\n const typeClass = styles[`toast--type-${type.toLowerCase()}`];\n const noDismissClass = onDismiss == null ? styles['toast--no-dismiss'] : '';\n const rootClass = [styles.toast, typeClass, noDismissClass, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={rootClass} role=\"status\" aria-live=\"polite\">\n <div className={styles['toast__content']}>\n <span className={styles['toast__icon']} aria-hidden>\n <IconSlotContext.Provider value={{ size: '16' }}>\n {icon ?? <Icon glyph={TYPE_ICONS[type]} />}\n </IconSlotContext.Provider>\n </span>\n <span className={styles['toast__message']}>{message}</span>\n {actionLabel != null && (\n <Button\n appearance=\"default\"\n emphasis=\"tertiary\"\n size=\"x-small\"\n className={styles['toast__action-btn--on-dark']}\n onClick={onAction}\n >\n {actionLabel}\n </Button>\n )}\n </div>\n {onDismiss != null && (\n <IconButton\n aria-label=\"Dismiss\"\n size=\"small\"\n className={styles['toast__dismiss']}\n icon={<Icon glyph={<CloseIcon />} size=\"16\" />}\n onClick={onDismiss}\n />\n )}\n </div>\n );\n}\n"],"names":["TYPE_ICONS","AlertCircleOutlineIcon","InformationOutlineIcon","CheckIcon","AlertOutlineIcon","Toast","className","message","type","icon","actionLabel","onAction","onDismiss","typeClass","styles","noDismissClass","rootClass","jsxs","jsx","IconSlotContext","Icon","Button","IconButton","CloseIcon"],"mappings":";;;;;;;;;;AA8BA,MAAMA,IAA2C;AAAA,EAC/C,2BAAUC,GAAA,EAAuB;AAAA,EACjC,wBAAOC,GAAA,EAAuB;AAAA,EAC9B,2BAAUC,GAAA,EAAU;AAAA,EACpB,0BAASC,GAAA,EAAiB;AAAA,EAC1B,2BAAUH,GAAA,CAAA,CAAuB;AACnC;AAOA,SAAwBI,EAAM;AAAA,EAC5B,WAAAC,IAAY;AAAA,EACZ,SAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AACF,GAAe;AACb,QAAMC,IAAYC,EAAO,eAAeN,EAAK,YAAA,CAAa,EAAE,GACtDO,IAAiBH,KAAa,OAAOE,EAAO,mBAAmB,IAAI,IACnEE,IAAY,CAACF,EAAO,OAAOD,GAAWE,GAAgBT,CAAS,EAClE,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BACG,OAAA,EAAI,WAAWU,GAAW,MAAK,UAAS,aAAU,UACjD,UAAA;AAAA,IAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWH,EAAO,gBACrB,UAAA;AAAA,MAAA,gBAAAI,EAAC,QAAA,EAAK,WAAWJ,EAAO,aAAgB,eAAW,IACjD,UAAA,gBAAAI,EAACC,EAAgB,UAAhB,EAAyB,OAAO,EAAE,MAAM,KAAA,GACtC,UAAAV,KAAQ,gBAAAS,EAACE,GAAA,EAAK,OAAOpB,EAAWQ,CAAI,EAAA,CAAG,EAAA,CAC1C,EAAA,CACF;AAAA,wBACC,QAAA,EAAK,WAAWM,EAAO,gBAAoB,UAAAP,GAAQ;AAAA,MACnDG,KAAe,QACd,gBAAAQ;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,YAAW;AAAA,UACX,UAAS;AAAA,UACT,MAAK;AAAA,UACL,WAAWP,EAAO,4BAA4B;AAAA,UAC9C,SAASH;AAAA,UAER,UAAAD;AAAA,QAAA;AAAA,MAAA;AAAA,IACH,GAEJ;AAAA,IACCE,KAAa,QACZ,gBAAAM;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,cAAW;AAAA,QACX,MAAK;AAAA,QACL,WAAWR,EAAO;AAAA,QAClB,wBAAOM,GAAA,EAAK,yBAAQG,GAAA,EAAU,GAAI,MAAK,MAAK;AAAA,QAC5C,SAASX;AAAA,MAAA;AAAA,IAAA;AAAA,EACX,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"Toast.js","sources":["../../../src/components/toast/Toast.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport AlertCircleOutlineIcon from '@mattermost/compass-icons/components/alert-circle-outline';\nimport AlertOutlineIcon from '@mattermost/compass-icons/components/alert-outline';\nimport CheckIcon from '@mattermost/compass-icons/components/check';\nimport CloseIcon from '@mattermost/compass-icons/components/close';\nimport InformationOutlineIcon from '@mattermost/compass-icons/components/information-outline';\nimport Button from '@/components/button/Button';\nimport Icon from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport styles from './Toast.module.scss';\n\nexport type ToastType = 'general' | 'info' | 'success' | 'warning' | 'danger';\n\nexport interface ToastProps {\n className?: string;\n /** Toast message. Accepts translated nodes (e.g. `<FormattedMessage/>`). */\n message: ReactNode;\n type?: ToastType;\n /** Optional icon override — pass `<Icon glyph={<SomeIcon />} />`; replaces the default type icon. Toast provides the correct size via context. */\n icon?: ReactNode;\n actionLabel?: ReactNode;\n onAction?: () => void;\n onDismiss?: () => void;\n}\n\nconst TYPE_ICONS: Record<ToastType, ReactNode> = {\n general: <AlertCircleOutlineIcon />,\n info: <InformationOutlineIcon />,\n success: <CheckIcon />,\n danger: <AlertOutlineIcon />,\n warning: <AlertCircleOutlineIcon />,\n};\n\n/**\n * Toasts notify the user that an action has completed or surface a brief message about a\n * system process. They sit on top of the workflow without interrupting it, don't require\n * user input to disappear, and auto-dismiss after a short duration.\n */\nexport default function Toast({\n className = '',\n message,\n type = 'general',\n icon,\n actionLabel,\n onAction,\n onDismiss,\n}: ToastProps) {\n const typeClass = styles[`toast--type-${type.toLowerCase()}`];\n const noDismissClass = onDismiss == null ? styles['toast--no-dismiss'] : '';\n const rootClass = [styles.toast, typeClass, noDismissClass, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={rootClass} role=\"status\" aria-live=\"polite\">\n <div className={styles['toast__content']}>\n <span className={styles['toast__icon']} aria-hidden>\n <IconSlotContext.Provider value={{ size: '16' }}>\n {icon ?? <Icon glyph={TYPE_ICONS[type]} />}\n </IconSlotContext.Provider>\n </span>\n <span className={styles['toast__message']}>{message}</span>\n {actionLabel != null && (\n <Button\n appearance=\"default\"\n emphasis=\"tertiary\"\n size=\"x-small\"\n className={styles['toast__action-btn--on-dark']}\n onClick={onAction}\n >\n {actionLabel}\n </Button>\n )}\n </div>\n {onDismiss != null && (\n <IconButton\n aria-label=\"Dismiss\"\n size=\"small\"\n className={styles['toast__dismiss']}\n icon={<Icon glyph={<CloseIcon />} size=\"16\" />}\n onClick={onDismiss}\n />\n )}\n </div>\n );\n}\n"],"names":["TYPE_ICONS","AlertCircleOutlineIcon","InformationOutlineIcon","CheckIcon","AlertOutlineIcon","Toast","className","message","type","icon","actionLabel","onAction","onDismiss","typeClass","styles","noDismissClass","rootClass","jsxs","jsx","IconSlotContext","Icon","Button","IconButton","CloseIcon"],"mappings":";;;;;;;;;;AA0BA,MAAMA,IAA2C;AAAA,EAC/C,2BAAUC,GAAA,EAAuB;AAAA,EACjC,wBAAOC,GAAA,EAAuB;AAAA,EAC9B,2BAAUC,GAAA,EAAU;AAAA,EACpB,0BAASC,GAAA,EAAiB;AAAA,EAC1B,2BAAUH,GAAA,CAAA,CAAuB;AACnC;AAOA,SAAwBI,EAAM;AAAA,EAC5B,WAAAC,IAAY;AAAA,EACZ,SAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AACF,GAAe;AACb,QAAMC,IAAYC,EAAO,eAAeN,EAAK,YAAA,CAAa,EAAE,GACtDO,IAAiBH,KAAa,OAAOE,EAAO,mBAAmB,IAAI,IACnEE,IAAY,CAACF,EAAO,OAAOD,GAAWE,GAAgBT,CAAS,EAClE,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,2BACG,OAAA,EAAI,WAAWU,GAAW,MAAK,UAAS,aAAU,UACjD,UAAA;AAAA,IAAA,gBAAAC,EAAC,OAAA,EAAI,WAAWH,EAAO,gBACrB,UAAA;AAAA,MAAA,gBAAAI,EAAC,QAAA,EAAK,WAAWJ,EAAO,aAAgB,eAAW,IACjD,UAAA,gBAAAI,EAACC,EAAgB,UAAhB,EAAyB,OAAO,EAAE,MAAM,KAAA,GACtC,UAAAV,KAAQ,gBAAAS,EAACE,GAAA,EAAK,OAAOpB,EAAWQ,CAAI,EAAA,CAAG,EAAA,CAC1C,EAAA,CACF;AAAA,wBACC,QAAA,EAAK,WAAWM,EAAO,gBAAoB,UAAAP,GAAQ;AAAA,MACnDG,KAAe,QACd,gBAAAQ;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,YAAW;AAAA,UACX,UAAS;AAAA,UACT,MAAK;AAAA,UACL,WAAWP,EAAO,4BAA4B;AAAA,UAC9C,SAASH;AAAA,UAER,UAAAD;AAAA,QAAA;AAAA,MAAA;AAAA,IACH,GAEJ;AAAA,IACCE,KAAa,QACZ,gBAAAM;AAAA,MAACI;AAAA,MAAA;AAAA,QACC,cAAW;AAAA,QACX,MAAK;AAAA,QACL,WAAWR,EAAO;AAAA,QAClB,wBAAOM,GAAA,EAAK,yBAAQG,GAAA,EAAU,GAAI,MAAK,MAAK;AAAA,QAC5C,SAASX;AAAA,MAAA;AAAA,IAAA;AAAA,EACX,GAEJ;AAEJ;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),u=require("../icon/Icon.cjs"),p=require("../shortcut-tag/ShortcutTag.cjs"),t=require("./Tooltip.module.scss.cjs");function _({label:s,arrow:i="right",hint:o,shortcutKeys:l,icon:a,className:r=""}){const n=t.default[`tooltip--arrow-${i.toLowerCase()}`]??"",d=[t.default.tooltip,n,r].filter(Boolean).join(" ");return e.jsxs("div",{className:d,children:[e.jsxs("div",{className:t.default.tooltip__container,children:[e.jsxs("div",{className:t.default.tooltip__content,children:[a!=null&&e.jsx("span",{className:t.default.tooltip__icon,"aria-hidden":!0,children:e.jsx(u.IconSlotContext.Provider,{value:{size:"16"},children:a})}),e.jsx("span",{className:t.default.tooltip__label,children:s})]}),l&&l.length>0&&e.jsx("div",{className:t.default.tooltip__shortcuts,children:e.jsx(p.ShortcutTagGroup,{labels:l.map(c=>c.label),location:"tooltips",size:"small"})}),o&&e.jsx("span",{className:t.default.tooltip__hint,children:o})]}),e.jsx("div",{className:t.default.tooltip__arrow,"aria-hidden":!0})]})}exports.default=_;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),c=require("../icon/Icon.cjs"),p=require("../shortcut-tag/ShortcutTag.cjs"),l=require("./Tooltip.module.scss.cjs");function _({label:s,arrow:i="right",hint:t,shortcutKeys:o,icon:a,className:r=""}){const n=l.default[`tooltip--arrow-${i.toLowerCase()}`]??"",d=[l.default.tooltip,n,r].filter(Boolean).join(" ");return e.jsxs("div",{className:d,children:[e.jsxs("div",{className:l.default.tooltip__container,children:[e.jsxs("div",{className:l.default.tooltip__content,children:[a!=null&&e.jsx("span",{className:l.default.tooltip__icon,"aria-hidden":!0,children:e.jsx(c.IconSlotContext.Provider,{value:{size:"16"},children:a})}),e.jsx("span",{className:l.default.tooltip__label,children:s})]}),o&&o.length>0&&e.jsx("div",{className:l.default.tooltip__shortcuts,children:e.jsx(p.ShortcutTagGroup,{labels:o.map(u=>u.label),location:"tooltips",size:"small"})}),t!=null&&t!==""?e.jsx("span",{className:l.default.tooltip__hint,children:t}):null]}),e.jsx("div",{className:l.default.tooltip__arrow,"aria-hidden":!0})]})}exports.default=_;
2
2
  //# sourceMappingURL=Tooltip.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.cjs","sources":["../../../src/components/tooltip/Tooltip.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport { ShortcutTagGroup } from '@/components/shortcut-tag/ShortcutTag';\nimport styles from './Tooltip.module.scss';\n\nexport type TooltipArrow = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface TooltipShortcutKey {\n label: string;\n}\n\nexport interface TooltipProps {\n /** Tooltip label text. */\n label: string;\n /** Arrow direction. Default: Right. */\n arrow?: TooltipArrow;\n /** Optional hint text shown below label. */\n hint?: string;\n /** Optional keyboard shortcut keys shown below label. */\n shortcutKeys?: TooltipShortcutKey[];\n /** Optional leading icon — pass `<Icon glyph={<SomeIcon />} />`; Tooltip provides the correct size via context. */\n icon?: ReactNode;\n /** Optional CSS class name. */\n className?: string;\n}\n\n/**\n * Tooltips surface short, supporting text on hover. Reach for a tooltip when the affordance\n * behind it isn't fully self-explanatory — an Icon Button, a truncated label, a keyboard\n * shortcut. Don't reach for one when the label is already on screen.\n */\nexport default function Tooltip({\n label,\n arrow = 'right',\n hint,\n shortcutKeys,\n icon,\n className = '',\n}: TooltipProps) {\n const arrowClass = styles[`tooltip--arrow-${arrow.toLowerCase()}`] ?? '';\n\n const rootClass = [styles.tooltip, arrowClass, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={rootClass}>\n <div className={styles['tooltip__container']}>\n <div className={styles['tooltip__content']}>\n {icon != null && (\n <span className={styles['tooltip__icon']} aria-hidden>\n <IconSlotContext.Provider value={{ size: '16' }}>\n {icon}\n </IconSlotContext.Provider>\n </span>\n )}\n <span className={styles['tooltip__label']}>{label}</span>\n </div>\n\n {shortcutKeys && shortcutKeys.length > 0 && (\n <div className={styles['tooltip__shortcuts']}>\n <ShortcutTagGroup\n labels={shortcutKeys.map((key) => key.label)}\n location=\"tooltips\"\n size=\"small\"\n />\n </div>\n )}\n\n {hint && <span className={styles['tooltip__hint']}>{hint}</span>}\n </div>\n\n <div className={styles['tooltip__arrow']} aria-hidden />\n </div>\n );\n}\n"],"names":["Tooltip","label","arrow","hint","shortcutKeys","icon","className","arrowClass","styles","rootClass","jsxs","jsx","IconSlotContext","ShortcutTagGroup","key"],"mappings":"kQA+BA,SAAwBA,EAAQ,CAC9B,MAAAC,EACA,MAAAC,EAAQ,QACR,KAAAC,EACA,aAAAC,EACA,KAAAC,EACA,UAAAC,EAAY,EACd,EAAiB,CACf,MAAMC,EAAaC,EAAAA,QAAO,kBAAkBN,EAAM,YAAA,CAAa,EAAE,GAAK,GAEhEO,EAAY,CAACD,UAAO,QAASD,EAAYD,CAAS,EACrD,OAAO,OAAO,EACd,KAAK,GAAG,EAEX,OACEI,EAAAA,KAAC,MAAA,CAAI,UAAWD,EACd,SAAA,CAAAC,EAAAA,KAAC,MAAA,CAAI,UAAWF,EAAAA,QAAO,mBACrB,SAAA,CAAAE,EAAAA,KAAC,MAAA,CAAI,UAAWF,EAAAA,QAAO,iBACpB,SAAA,CAAAH,GAAQ,MACPM,EAAAA,IAAC,OAAA,CAAK,UAAWH,EAAAA,QAAO,cAAkB,cAAW,GACnD,eAACI,kBAAgB,SAAhB,CAAyB,MAAO,CAAE,KAAM,IAAA,EACtC,WACH,EACF,QAED,OAAA,CAAK,UAAWJ,EAAAA,QAAO,eAAoB,SAAAP,CAAA,CAAM,CAAA,EACpD,EAECG,GAAgBA,EAAa,OAAS,SACpC,MAAA,CAAI,UAAWI,EAAAA,QAAO,mBACrB,SAAAG,EAAAA,IAACE,EAAAA,iBAAA,CACC,OAAQT,EAAa,IAAKU,GAAQA,EAAI,KAAK,EAC3C,SAAS,WACT,KAAK,OAAA,CAAA,EAET,EAGDX,GAAQQ,EAAAA,IAAC,OAAA,CAAK,UAAWH,EAAAA,QAAO,cAAmB,SAAAL,CAAA,CAAK,CAAA,EAC3D,QAEC,MAAA,CAAI,UAAWK,EAAAA,QAAO,eAAmB,cAAW,EAAA,CAAC,CAAA,EACxD,CAEJ"}
1
+ {"version":3,"file":"Tooltip.cjs","sources":["../../../src/components/tooltip/Tooltip.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport { ShortcutTagGroup } from '@/components/shortcut-tag/ShortcutTag';\nimport styles from './Tooltip.module.scss';\n\nexport type TooltipArrow = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface TooltipShortcutKey {\n label: string;\n}\n\nexport interface TooltipProps {\n /** Tooltip label. Accepts translated nodes (e.g. `<FormattedMessage/>`). */\n label: ReactNode;\n /** Arrow direction. Default: Right. */\n arrow?: TooltipArrow;\n /** Optional hint text shown below label. */\n hint?: ReactNode;\n /** Optional keyboard shortcut keys shown below label. */\n shortcutKeys?: TooltipShortcutKey[];\n /** Optional leading icon — pass `<Icon glyph={<SomeIcon />} />`; Tooltip provides the correct size via context. */\n icon?: ReactNode;\n /** Optional CSS class name. */\n className?: string;\n}\n\n/**\n * Tooltips surface short, supporting text on hover. Reach for a tooltip when the affordance\n * behind it isn't fully self-explanatory — an Icon Button, a truncated label, a keyboard\n * shortcut. Don't reach for one when the label is already on screen.\n */\nexport default function Tooltip({\n label,\n arrow = 'right',\n hint,\n shortcutKeys,\n icon,\n className = '',\n}: TooltipProps) {\n const arrowClass = styles[`tooltip--arrow-${arrow.toLowerCase()}`] ?? '';\n\n const rootClass = [styles.tooltip, arrowClass, className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={rootClass}>\n <div className={styles['tooltip__container']}>\n <div className={styles['tooltip__content']}>\n {icon != null && (\n <span className={styles['tooltip__icon']} aria-hidden>\n <IconSlotContext.Provider value={{ size: '16' }}>\n {icon}\n </IconSlotContext.Provider>\n </span>\n )}\n <span className={styles['tooltip__label']}>{label}</span>\n </div>\n\n {shortcutKeys && shortcutKeys.length > 0 && (\n <div className={styles['tooltip__shortcuts']}>\n <ShortcutTagGroup\n labels={shortcutKeys.map((key) => key.label)}\n location=\"tooltips\"\n size=\"small\"\n />\n </div>\n )}\n\n {hint != null && hint !== '' ? (\n <span className={styles['tooltip__hint']}>{hint}</span>\n ) : null}\n </div>\n\n <div className={styles['tooltip__arrow']} aria-hidden />\n </div>\n );\n}\n"],"names":["Tooltip","label","arrow","hint","shortcutKeys","icon","className","arrowClass","styles","rootClass","jsxs","jsx","IconSlotContext","ShortcutTagGroup","key"],"mappings":"kQA+BA,SAAwBA,EAAQ,CAC9B,MAAAC,EACA,MAAAC,EAAQ,QACR,KAAAC,EACA,aAAAC,EACA,KAAAC,EACA,UAAAC,EAAY,EACd,EAAiB,CACf,MAAMC,EAAaC,EAAAA,QAAO,kBAAkBN,EAAM,YAAA,CAAa,EAAE,GAAK,GAEhEO,EAAY,CAACD,UAAO,QAASD,EAAYD,CAAS,EACrD,OAAO,OAAO,EACd,KAAK,GAAG,EAEX,OACEI,EAAAA,KAAC,MAAA,CAAI,UAAWD,EACd,SAAA,CAAAC,EAAAA,KAAC,MAAA,CAAI,UAAWF,EAAAA,QAAO,mBACrB,SAAA,CAAAE,EAAAA,KAAC,MAAA,CAAI,UAAWF,EAAAA,QAAO,iBACpB,SAAA,CAAAH,GAAQ,MACPM,EAAAA,IAAC,OAAA,CAAK,UAAWH,EAAAA,QAAO,cAAkB,cAAW,GACnD,eAACI,kBAAgB,SAAhB,CAAyB,MAAO,CAAE,KAAM,IAAA,EACtC,WACH,EACF,QAED,OAAA,CAAK,UAAWJ,EAAAA,QAAO,eAAoB,SAAAP,CAAA,CAAM,CAAA,EACpD,EAECG,GAAgBA,EAAa,OAAS,SACpC,MAAA,CAAI,UAAWI,EAAAA,QAAO,mBACrB,SAAAG,EAAAA,IAACE,EAAAA,iBAAA,CACC,OAAQT,EAAa,IAAKU,GAAQA,EAAI,KAAK,EAC3C,SAAS,WACT,KAAK,OAAA,CAAA,EAET,EAGDX,GAAQ,MAAQA,IAAS,GACxBQ,EAAAA,IAAC,OAAA,CAAK,UAAWH,EAAAA,QAAO,cAAmB,SAAAL,CAAA,CAAK,EAC9C,IAAA,EACN,QAEC,MAAA,CAAI,UAAWK,EAAAA,QAAO,eAAmB,cAAW,EAAA,CAAC,CAAA,EACxD,CAEJ"}
@@ -4,12 +4,12 @@ export interface TooltipShortcutKey {
4
4
  label: string;
5
5
  }
6
6
  export interface TooltipProps {
7
- /** Tooltip label text. */
8
- label: string;
7
+ /** Tooltip label. Accepts translated nodes (e.g. `<FormattedMessage/>`). */
8
+ label: ReactNode;
9
9
  /** Arrow direction. Default: Right. */
10
10
  arrow?: TooltipArrow;
11
11
  /** Optional hint text shown below label. */
12
- hint?: string;
12
+ hint?: ReactNode;
13
13
  /** Optional keyboard shortcut keys shown below label. */
14
14
  shortcutKeys?: TooltipShortcutKey[];
15
15
  /** Optional leading icon — pass `<Icon glyph={<SomeIcon />} />`; Tooltip provides the correct size via context. */
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/tooltip/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,uCAAuC;IACvC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC,mHAAmH;IACnH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAC9B,KAAK,EACL,KAAe,EACf,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,SAAc,GACf,EAAE,YAAY,2CAqCd"}
1
+ {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/tooltip/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,KAAK,EAAE,SAAS,CAAC;IACjB,uCAAuC;IACvC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,4CAA4C;IAC5C,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,yDAAyD;IACzD,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC,mHAAmH;IACnH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAC9B,KAAK,EACL,KAAe,EACf,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,SAAc,GACf,EAAE,YAAY,2CAuCd"}
@@ -1,31 +1,31 @@
1
- import { jsxs as a, jsx as l } from "react/jsx-runtime";
1
+ import { jsxs as i, jsx as l } from "react/jsx-runtime";
2
2
  import { IconSlotContext as m } from "../icon/Icon.js";
3
3
  import { ShortcutTagGroup as _ } from "../shortcut-tag/ShortcutTag.js";
4
4
  import o from "./Tooltip.module.scss.js";
5
5
  function v({
6
6
  label: r,
7
7
  arrow: s = "right",
8
- hint: i,
9
- shortcutKeys: t,
8
+ hint: t,
9
+ shortcutKeys: a,
10
10
  icon: e,
11
11
  className: n = ""
12
12
  }) {
13
13
  const c = o[`tooltip--arrow-${s.toLowerCase()}`] ?? "", p = [o.tooltip, c, n].filter(Boolean).join(" ");
14
- return /* @__PURE__ */ a("div", { className: p, children: [
15
- /* @__PURE__ */ a("div", { className: o.tooltip__container, children: [
16
- /* @__PURE__ */ a("div", { className: o.tooltip__content, children: [
14
+ return /* @__PURE__ */ i("div", { className: p, children: [
15
+ /* @__PURE__ */ i("div", { className: o.tooltip__container, children: [
16
+ /* @__PURE__ */ i("div", { className: o.tooltip__content, children: [
17
17
  e != null && /* @__PURE__ */ l("span", { className: o.tooltip__icon, "aria-hidden": !0, children: /* @__PURE__ */ l(m.Provider, { value: { size: "16" }, children: e }) }),
18
18
  /* @__PURE__ */ l("span", { className: o.tooltip__label, children: r })
19
19
  ] }),
20
- t && t.length > 0 && /* @__PURE__ */ l("div", { className: o.tooltip__shortcuts, children: /* @__PURE__ */ l(
20
+ a && a.length > 0 && /* @__PURE__ */ l("div", { className: o.tooltip__shortcuts, children: /* @__PURE__ */ l(
21
21
  _,
22
22
  {
23
- labels: t.map((d) => d.label),
23
+ labels: a.map((d) => d.label),
24
24
  location: "tooltips",
25
25
  size: "small"
26
26
  }
27
27
  ) }),
28
- i && /* @__PURE__ */ l("span", { className: o.tooltip__hint, children: i })
28
+ t != null && t !== "" ? /* @__PURE__ */ l("span", { className: o.tooltip__hint, children: t }) : null
29
29
  ] }),
30
30
  /* @__PURE__ */ l("div", { className: o.tooltip__arrow, "aria-hidden": !0 })
31
31
  ] });