@mattermost/compass-ui 0.1.0-alpha.12 → 0.1.0-alpha.13

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 (360) hide show
  1. package/README.md +15 -3
  2. package/dist/compass-ui-standalone.css +270 -276
  3. package/dist/compass-ui.css +293 -290
  4. package/dist/components/action-button/ActionButton.cjs.map +1 -1
  5. package/dist/components/action-button/ActionButton.d.ts +2 -1
  6. package/dist/components/action-button/ActionButton.d.ts.map +1 -1
  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 +3 -1
  10. package/dist/components/admin-console-header/AdminConsoleHeader.d.ts.map +1 -1
  11. package/dist/components/admin-console-header/AdminConsoleHeader.js.map +1 -1
  12. package/dist/components/admin-panel/AdminPanel.cjs +1 -1
  13. package/dist/components/admin-panel/AdminPanel.cjs.map +1 -1
  14. package/dist/components/admin-panel/AdminPanel.d.ts +13 -6
  15. package/dist/components/admin-panel/AdminPanel.d.ts.map +1 -1
  16. package/dist/components/admin-panel/AdminPanel.js +21 -15
  17. package/dist/components/admin-panel/AdminPanel.js.map +1 -1
  18. package/dist/components/admin-panel-footer/AdminPanelFooter.cjs.map +1 -1
  19. package/dist/components/admin-panel-footer/AdminPanelFooter.d.ts +8 -4
  20. package/dist/components/admin-panel-footer/AdminPanelFooter.d.ts.map +1 -1
  21. package/dist/components/admin-panel-footer/AdminPanelFooter.js.map +1 -1
  22. package/dist/components/admin-panel-header/AdminPanelHeader.cjs +1 -1
  23. package/dist/components/admin-panel-header/AdminPanelHeader.cjs.map +1 -1
  24. package/dist/components/admin-panel-header/AdminPanelHeader.css +1 -1
  25. package/dist/components/admin-panel-header/AdminPanelHeader.d.ts +11 -4
  26. package/dist/components/admin-panel-header/AdminPanelHeader.d.ts.map +1 -1
  27. package/dist/components/admin-panel-header/AdminPanelHeader.js +25 -23
  28. package/dist/components/admin-panel-header/AdminPanelHeader.js.map +1 -1
  29. package/dist/components/admin-panel-header/AdminPanelHeader.module.scss.cjs +1 -1
  30. package/dist/components/admin-panel-header/AdminPanelHeader.module.scss.js +10 -10
  31. package/dist/components/attachment-card/AttachmentCard.cjs +1 -1
  32. package/dist/components/attachment-card/AttachmentCard.cjs.map +1 -1
  33. package/dist/components/attachment-card/AttachmentCard.d.ts +18 -5
  34. package/dist/components/attachment-card/AttachmentCard.d.ts.map +1 -1
  35. package/dist/components/attachment-card/AttachmentCard.js +85 -79
  36. package/dist/components/attachment-card/AttachmentCard.js.map +1 -1
  37. package/dist/components/card-button/CardButton.css +1 -1
  38. package/dist/components/card-button/CardButton.module.scss.cjs +1 -1
  39. package/dist/components/card-button/CardButton.module.scss.js +7 -7
  40. package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.cjs +1 -1
  41. package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.cjs.map +1 -1
  42. package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.d.ts +5 -4
  43. package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.d.ts.map +1 -1
  44. package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.js +7 -7
  45. package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.js.map +1 -1
  46. package/dist/components/channel-sidebar-item/ChannelSidebarItem.cjs +1 -1
  47. package/dist/components/channel-sidebar-item/ChannelSidebarItem.cjs.map +1 -1
  48. package/dist/components/channel-sidebar-item/ChannelSidebarItem.d.ts +10 -4
  49. package/dist/components/channel-sidebar-item/ChannelSidebarItem.d.ts.map +1 -1
  50. package/dist/components/channel-sidebar-item/ChannelSidebarItem.js +64 -60
  51. package/dist/components/channel-sidebar-item/ChannelSidebarItem.js.map +1 -1
  52. package/dist/components/chip/Chip.cjs.map +1 -1
  53. package/dist/components/chip/Chip.css +1 -1
  54. package/dist/components/chip/Chip.d.ts +4 -0
  55. package/dist/components/chip/Chip.d.ts.map +1 -1
  56. package/dist/components/chip/Chip.js.map +1 -1
  57. package/dist/components/chip/Chip.module.scss.cjs +1 -1
  58. package/dist/components/chip/Chip.module.scss.js +11 -11
  59. package/dist/components/combobox/Combobox.cjs +1 -1
  60. package/dist/components/combobox/Combobox.cjs.map +1 -1
  61. package/dist/components/combobox/Combobox.css +1 -1
  62. package/dist/components/combobox/Combobox.d.ts +24 -1
  63. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  64. package/dist/components/combobox/Combobox.js +307 -271
  65. package/dist/components/combobox/Combobox.js.map +1 -1
  66. package/dist/components/combobox/Combobox.module.scss.cjs +1 -1
  67. package/dist/components/combobox/Combobox.module.scss.js +28 -26
  68. package/dist/components/combobox/Combobox.module.scss.js.map +1 -1
  69. package/dist/components/date-range-picker/DateRangePicker.cjs +1 -1
  70. package/dist/components/date-range-picker/DateRangePicker.cjs.map +1 -1
  71. package/dist/components/date-range-picker/DateRangePicker.css +1 -1
  72. package/dist/components/date-range-picker/DateRangePicker.d.ts +18 -2
  73. package/dist/components/date-range-picker/DateRangePicker.d.ts.map +1 -1
  74. package/dist/components/date-range-picker/DateRangePicker.js +134 -126
  75. package/dist/components/date-range-picker/DateRangePicker.js.map +1 -1
  76. package/dist/components/date-range-picker/DateRangePicker.module.scss.cjs +1 -1
  77. package/dist/components/date-range-picker/DateRangePicker.module.scss.js +26 -26
  78. package/dist/components/emoji-popover/EmojiPopover.cjs +1 -1
  79. package/dist/components/emoji-popover/EmojiPopover.cjs.map +1 -1
  80. package/dist/components/emoji-popover/EmojiPopover.d.ts +25 -4
  81. package/dist/components/emoji-popover/EmojiPopover.d.ts.map +1 -1
  82. package/dist/components/emoji-popover/EmojiPopover.js +84 -73
  83. package/dist/components/emoji-popover/EmojiPopover.js.map +1 -1
  84. package/dist/components/empty-state/EmptyState.cjs +1 -1
  85. package/dist/components/empty-state/EmptyState.cjs.map +1 -1
  86. package/dist/components/empty-state/EmptyState.d.ts +3 -3
  87. package/dist/components/empty-state/EmptyState.d.ts.map +1 -1
  88. package/dist/components/empty-state/EmptyState.js +11 -9
  89. package/dist/components/empty-state/EmptyState.js.map +1 -1
  90. package/dist/components/error-message/ErrorMessage.cjs +1 -1
  91. package/dist/components/error-message/ErrorMessage.cjs.map +1 -1
  92. package/dist/components/error-message/ErrorMessage.d.ts +3 -3
  93. package/dist/components/error-message/ErrorMessage.d.ts.map +1 -1
  94. package/dist/components/error-message/ErrorMessage.js +10 -9
  95. package/dist/components/error-message/ErrorMessage.js.map +1 -1
  96. package/dist/components/feature-discovery-panel/FeatureDiscoveryPanel.cjs.map +1 -1
  97. package/dist/components/feature-discovery-panel/FeatureDiscoveryPanel.d.ts +7 -6
  98. package/dist/components/feature-discovery-panel/FeatureDiscoveryPanel.d.ts.map +1 -1
  99. package/dist/components/feature-discovery-panel/FeatureDiscoveryPanel.js.map +1 -1
  100. package/dist/components/global-banner/GlobalBanner.cjs +1 -1
  101. package/dist/components/global-banner/GlobalBanner.cjs.map +1 -1
  102. package/dist/components/global-banner/GlobalBanner.d.ts +10 -5
  103. package/dist/components/global-banner/GlobalBanner.d.ts.map +1 -1
  104. package/dist/components/global-banner/GlobalBanner.js +33 -26
  105. package/dist/components/global-banner/GlobalBanner.js.map +1 -1
  106. package/dist/components/icon-button/IconButton.css +1 -1
  107. package/dist/components/icon-button/IconButton.module.scss.cjs +1 -1
  108. package/dist/components/icon-button/IconButton.module.scss.js +15 -15
  109. package/dist/components/image-preview/ImagePreview.cjs +1 -1
  110. package/dist/components/image-preview/ImagePreview.cjs.map +1 -1
  111. package/dist/components/image-preview/ImagePreview.css +1 -1
  112. package/dist/components/image-preview/ImagePreview.d.ts +12 -1
  113. package/dist/components/image-preview/ImagePreview.d.ts.map +1 -1
  114. package/dist/components/image-preview/ImagePreview.js +25 -20
  115. package/dist/components/image-preview/ImagePreview.js.map +1 -1
  116. package/dist/components/image-preview/ImagePreview.module.scss.cjs +1 -1
  117. package/dist/components/image-preview/ImagePreview.module.scss.js +15 -15
  118. package/dist/components/link-preview/LinkPreview.cjs +1 -1
  119. package/dist/components/link-preview/LinkPreview.cjs.map +1 -1
  120. package/dist/components/link-preview/LinkPreview.d.ts +12 -6
  121. package/dist/components/link-preview/LinkPreview.d.ts.map +1 -1
  122. package/dist/components/link-preview/LinkPreview.js +19 -16
  123. package/dist/components/link-preview/LinkPreview.js.map +1 -1
  124. package/dist/components/mention-badge/MentionBadge.cjs +1 -1
  125. package/dist/components/mention-badge/MentionBadge.cjs.map +1 -1
  126. package/dist/components/mention-badge/MentionBadge.d.ts +3 -1
  127. package/dist/components/mention-badge/MentionBadge.d.ts.map +1 -1
  128. package/dist/components/mention-badge/MentionBadge.js +18 -23
  129. package/dist/components/mention-badge/MentionBadge.js.map +1 -1
  130. package/dist/components/menu-group-heading/MenuGroupHeading.cjs.map +1 -1
  131. package/dist/components/menu-group-heading/MenuGroupHeading.d.ts +3 -3
  132. package/dist/components/menu-group-heading/MenuGroupHeading.d.ts.map +1 -1
  133. package/dist/components/menu-group-heading/MenuGroupHeading.js.map +1 -1
  134. package/dist/components/menu-item/MenuItem.cjs +1 -1
  135. package/dist/components/menu-item/MenuItem.cjs.map +1 -1
  136. package/dist/components/menu-item/MenuItem.d.ts +2 -0
  137. package/dist/components/menu-item/MenuItem.d.ts.map +1 -1
  138. package/dist/components/menu-item/MenuItem.js +29 -28
  139. package/dist/components/menu-item/MenuItem.js.map +1 -1
  140. package/dist/components/message-actions/MessageActions.cjs +1 -1
  141. package/dist/components/message-actions/MessageActions.cjs.map +1 -1
  142. package/dist/components/message-actions/MessageActions.d.ts +26 -2
  143. package/dist/components/message-actions/MessageActions.d.ts.map +1 -1
  144. package/dist/components/message-actions/MessageActions.js +67 -55
  145. package/dist/components/message-actions/MessageActions.js.map +1 -1
  146. package/dist/components/message-header/MessageHeader.cjs.map +1 -1
  147. package/dist/components/message-header/MessageHeader.d.ts +5 -3
  148. package/dist/components/message-header/MessageHeader.d.ts.map +1 -1
  149. package/dist/components/message-header/MessageHeader.js.map +1 -1
  150. package/dist/components/message-separator/MessageSeparator.cjs +1 -1
  151. package/dist/components/message-separator/MessageSeparator.cjs.map +1 -1
  152. package/dist/components/message-separator/MessageSeparator.d.ts +8 -4
  153. package/dist/components/message-separator/MessageSeparator.d.ts.map +1 -1
  154. package/dist/components/message-separator/MessageSeparator.js +16 -14
  155. package/dist/components/message-separator/MessageSeparator.js.map +1 -1
  156. package/dist/components/modal/Modal.cjs +1 -1
  157. package/dist/components/modal/Modal.cjs.map +1 -1
  158. package/dist/components/modal/Modal.d.ts +17 -3
  159. package/dist/components/modal/Modal.d.ts.map +1 -1
  160. package/dist/components/modal/Modal.js +38 -26
  161. package/dist/components/modal/Modal.js.map +1 -1
  162. package/dist/components/modal-header/ModalHeader.cjs +1 -1
  163. package/dist/components/modal-header/ModalHeader.cjs.map +1 -1
  164. package/dist/components/modal-header/ModalHeader.css +1 -1
  165. package/dist/components/modal-header/ModalHeader.d.ts +16 -1
  166. package/dist/components/modal-header/ModalHeader.d.ts.map +1 -1
  167. package/dist/components/modal-header/ModalHeader.js +72 -57
  168. package/dist/components/modal-header/ModalHeader.js.map +1 -1
  169. package/dist/components/modal-header/ModalHeader.module.scss.cjs +1 -1
  170. package/dist/components/modal-header/ModalHeader.module.scss.js +15 -13
  171. package/dist/components/modal-header/ModalHeader.module.scss.js.map +1 -1
  172. package/dist/components/more-unreads-banner/MoreUnreadsBanner.cjs +1 -1
  173. package/dist/components/more-unreads-banner/MoreUnreadsBanner.cjs.map +1 -1
  174. package/dist/components/more-unreads-banner/MoreUnreadsBanner.d.ts +4 -1
  175. package/dist/components/more-unreads-banner/MoreUnreadsBanner.d.ts.map +1 -1
  176. package/dist/components/more-unreads-banner/MoreUnreadsBanner.js +11 -10
  177. package/dist/components/more-unreads-banner/MoreUnreadsBanner.js.map +1 -1
  178. package/dist/components/new-message-banner/NewMessageBanner.cjs +1 -1
  179. package/dist/components/new-message-banner/NewMessageBanner.cjs.map +1 -1
  180. package/dist/components/new-message-banner/NewMessageBanner.d.ts +15 -3
  181. package/dist/components/new-message-banner/NewMessageBanner.d.ts.map +1 -1
  182. package/dist/components/new-message-banner/NewMessageBanner.js +30 -22
  183. package/dist/components/new-message-banner/NewMessageBanner.js.map +1 -1
  184. package/dist/components/pagination-dots/PaginationDots.cjs +1 -1
  185. package/dist/components/pagination-dots/PaginationDots.cjs.map +1 -1
  186. package/dist/components/pagination-dots/PaginationDots.css +1 -1
  187. package/dist/components/pagination-dots/PaginationDots.d.ts +5 -1
  188. package/dist/components/pagination-dots/PaginationDots.d.ts.map +1 -1
  189. package/dist/components/pagination-dots/PaginationDots.js +22 -19
  190. package/dist/components/pagination-dots/PaginationDots.js.map +1 -1
  191. package/dist/components/pagination-dots/PaginationDots.module.scss.cjs +1 -1
  192. package/dist/components/pagination-dots/PaginationDots.module.scss.js +10 -10
  193. package/dist/components/permalink-preview/PermalinkPreview.cjs +1 -1
  194. package/dist/components/permalink-preview/PermalinkPreview.cjs.map +1 -1
  195. package/dist/components/permalink-preview/PermalinkPreview.d.ts +16 -5
  196. package/dist/components/permalink-preview/PermalinkPreview.d.ts.map +1 -1
  197. package/dist/components/permalink-preview/PermalinkPreview.js +39 -35
  198. package/dist/components/permalink-preview/PermalinkPreview.js.map +1 -1
  199. package/dist/components/pinned-saved-indicators/PinnedSavedIndicators.cjs +1 -1
  200. package/dist/components/pinned-saved-indicators/PinnedSavedIndicators.cjs.map +1 -1
  201. package/dist/components/pinned-saved-indicators/PinnedSavedIndicators.d.ts +8 -1
  202. package/dist/components/pinned-saved-indicators/PinnedSavedIndicators.d.ts.map +1 -1
  203. package/dist/components/pinned-saved-indicators/PinnedSavedIndicators.js +20 -17
  204. package/dist/components/pinned-saved-indicators/PinnedSavedIndicators.js.map +1 -1
  205. package/dist/components/popover-notice/PopoverNotice.cjs +1 -1
  206. package/dist/components/popover-notice/PopoverNotice.cjs.map +1 -1
  207. package/dist/components/popover-notice/PopoverNotice.d.ts +13 -5
  208. package/dist/components/popover-notice/PopoverNotice.d.ts.map +1 -1
  209. package/dist/components/popover-notice/PopoverNotice.js +58 -48
  210. package/dist/components/popover-notice/PopoverNotice.js.map +1 -1
  211. package/dist/components/profile-popover/ProfilePopover.cjs +1 -1
  212. package/dist/components/profile-popover/ProfilePopover.cjs.map +1 -1
  213. package/dist/components/profile-popover/ProfilePopover.d.ts +34 -12
  214. package/dist/components/profile-popover/ProfilePopover.d.ts.map +1 -1
  215. package/dist/components/profile-popover/ProfilePopover.js +122 -106
  216. package/dist/components/profile-popover/ProfilePopover.js.map +1 -1
  217. package/dist/components/progress-bar/ProgressBar.cjs +1 -1
  218. package/dist/components/progress-bar/ProgressBar.cjs.map +1 -1
  219. package/dist/components/progress-bar/ProgressBar.d.ts +4 -3
  220. package/dist/components/progress-bar/ProgressBar.d.ts.map +1 -1
  221. package/dist/components/progress-bar/ProgressBar.js +9 -7
  222. package/dist/components/progress-bar/ProgressBar.js.map +1 -1
  223. package/dist/components/radio/Radio.css +1 -1
  224. package/dist/components/radio/Radio.module.scss.cjs +1 -1
  225. package/dist/components/radio/Radio.module.scss.js +12 -12
  226. package/dist/components/reaction-button/ReactionButton.cjs +1 -1
  227. package/dist/components/reaction-button/ReactionButton.cjs.map +1 -1
  228. package/dist/components/reaction-button/ReactionButton.d.ts +3 -1
  229. package/dist/components/reaction-button/ReactionButton.d.ts.map +1 -1
  230. package/dist/components/reaction-button/ReactionButton.js +20 -18
  231. package/dist/components/reaction-button/ReactionButton.js.map +1 -1
  232. package/dist/components/reactions-row/ReactionsRow.cjs +1 -1
  233. package/dist/components/reactions-row/ReactionsRow.cjs.map +1 -1
  234. package/dist/components/reactions-row/ReactionsRow.d.ts +10 -2
  235. package/dist/components/reactions-row/ReactionsRow.d.ts.map +1 -1
  236. package/dist/components/reactions-row/ReactionsRow.js +33 -28
  237. package/dist/components/reactions-row/ReactionsRow.js.map +1 -1
  238. package/dist/components/right-sidebar-header/RightSidebarHeader.cjs +1 -1
  239. package/dist/components/right-sidebar-header/RightSidebarHeader.cjs.map +1 -1
  240. package/dist/components/right-sidebar-header/RightSidebarHeader.d.ts +15 -7
  241. package/dist/components/right-sidebar-header/RightSidebarHeader.d.ts.map +1 -1
  242. package/dist/components/right-sidebar-header/RightSidebarHeader.js +23 -19
  243. package/dist/components/right-sidebar-header/RightSidebarHeader.js.map +1 -1
  244. package/dist/components/scrollbar/Scrollbar.cjs +1 -1
  245. package/dist/components/scrollbar/Scrollbar.cjs.map +1 -1
  246. package/dist/components/scrollbar/Scrollbar.css +1 -1
  247. package/dist/components/scrollbar/Scrollbar.d.ts +2 -2
  248. package/dist/components/scrollbar/Scrollbar.d.ts.map +1 -1
  249. package/dist/components/scrollbar/Scrollbar.js +24 -15
  250. package/dist/components/scrollbar/Scrollbar.js.map +1 -1
  251. package/dist/components/scrollbar/Scrollbar.module.scss.cjs +1 -1
  252. package/dist/components/scrollbar/Scrollbar.module.scss.js +4 -4
  253. package/dist/components/scrollbar/simplebar-vendor.css +1 -0
  254. package/dist/components/search-input/SearchInput.cjs +1 -1
  255. package/dist/components/search-input/SearchInput.cjs.map +1 -1
  256. package/dist/components/search-input/SearchInput.d.ts +5 -0
  257. package/dist/components/search-input/SearchInput.d.ts.map +1 -1
  258. package/dist/components/search-input/SearchInput.js +92 -85
  259. package/dist/components/search-input/SearchInput.js.map +1 -1
  260. package/dist/components/search-tip-banner/SearchTipBanner.cjs +1 -1
  261. package/dist/components/search-tip-banner/SearchTipBanner.cjs.map +1 -1
  262. package/dist/components/search-tip-banner/SearchTipBanner.d.ts +8 -5
  263. package/dist/components/search-tip-banner/SearchTipBanner.d.ts.map +1 -1
  264. package/dist/components/search-tip-banner/SearchTipBanner.js +17 -16
  265. package/dist/components/search-tip-banner/SearchTipBanner.js.map +1 -1
  266. package/dist/components/section-notice/SectionNotice.cjs +1 -1
  267. package/dist/components/section-notice/SectionNotice.cjs.map +1 -1
  268. package/dist/components/section-notice/SectionNotice.d.ts +16 -3
  269. package/dist/components/section-notice/SectionNotice.d.ts.map +1 -1
  270. package/dist/components/section-notice/SectionNotice.js +64 -48
  271. package/dist/components/section-notice/SectionNotice.js.map +1 -1
  272. package/dist/components/select/Select.cjs +1 -1
  273. package/dist/components/select/Select.cjs.map +1 -1
  274. package/dist/components/select/Select.d.ts +8 -1
  275. package/dist/components/select/Select.d.ts.map +1 -1
  276. package/dist/components/select/Select.js +81 -79
  277. package/dist/components/select/Select.js.map +1 -1
  278. package/dist/components/spinner/Spinner.cjs.map +1 -1
  279. package/dist/components/spinner/Spinner.css +1 -1
  280. package/dist/components/spinner/Spinner.d.ts +1 -0
  281. package/dist/components/spinner/Spinner.d.ts.map +1 -1
  282. package/dist/components/spinner/Spinner.js.map +1 -1
  283. package/dist/components/spinner/Spinner.module.scss.cjs +1 -1
  284. package/dist/components/spinner/Spinner.module.scss.js +5 -5
  285. package/dist/components/status-badge/StatusBadge.css +1 -1
  286. package/dist/components/status-badge/StatusBadge.module.scss.cjs +1 -1
  287. package/dist/components/status-badge/StatusBadge.module.scss.js +11 -11
  288. package/dist/components/switch/Switch.css +1 -1
  289. package/dist/components/switch/Switch.module.scss.cjs +1 -1
  290. package/dist/components/switch/Switch.module.scss.js +14 -14
  291. package/dist/components/tabs/Tabs.cjs +1 -1
  292. package/dist/components/tabs/Tabs.cjs.map +1 -1
  293. package/dist/components/tabs/Tabs.css +1 -1
  294. package/dist/components/tabs/Tabs.d.ts +11 -3
  295. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  296. package/dist/components/tabs/Tabs.js +56 -53
  297. package/dist/components/tabs/Tabs.js.map +1 -1
  298. package/dist/components/tabs/Tabs.module.scss.cjs +1 -1
  299. package/dist/components/tabs/Tabs.module.scss.js +9 -9
  300. package/dist/components/tag/Tag.cjs +1 -1
  301. package/dist/components/tag/Tag.cjs.map +1 -1
  302. package/dist/components/tag/Tag.d.ts +3 -3
  303. package/dist/components/tag/Tag.d.ts.map +1 -1
  304. package/dist/components/tag/Tag.js +12 -11
  305. package/dist/components/tag/Tag.js.map +1 -1
  306. package/dist/components/thread-footer/ThreadFooter.cjs +1 -1
  307. package/dist/components/thread-footer/ThreadFooter.cjs.map +1 -1
  308. package/dist/components/thread-footer/ThreadFooter.css +1 -1
  309. package/dist/components/thread-footer/ThreadFooter.d.ts +19 -3
  310. package/dist/components/thread-footer/ThreadFooter.d.ts.map +1 -1
  311. package/dist/components/thread-footer/ThreadFooter.js +53 -48
  312. package/dist/components/thread-footer/ThreadFooter.js.map +1 -1
  313. package/dist/components/thread-footer/ThreadFooter.module.scss.cjs +1 -1
  314. package/dist/components/thread-footer/ThreadFooter.module.scss.js +18 -18
  315. package/dist/components/thread-list-item/ThreadListItem.cjs +1 -1
  316. package/dist/components/thread-list-item/ThreadListItem.cjs.map +1 -1
  317. package/dist/components/thread-list-item/ThreadListItem.d.ts +15 -7
  318. package/dist/components/thread-list-item/ThreadListItem.d.ts.map +1 -1
  319. package/dist/components/thread-list-item/ThreadListItem.js +66 -62
  320. package/dist/components/thread-list-item/ThreadListItem.js.map +1 -1
  321. package/dist/components/toast/Toast.cjs +1 -1
  322. package/dist/components/toast/Toast.cjs.map +1 -1
  323. package/dist/components/toast/Toast.d.ts +8 -3
  324. package/dist/components/toast/Toast.d.ts.map +1 -1
  325. package/dist/components/toast/Toast.js +47 -39
  326. package/dist/components/toast/Toast.js.map +1 -1
  327. package/dist/components/tour-point/TourPoint.cjs +1 -1
  328. package/dist/components/tour-point/TourPoint.cjs.map +1 -1
  329. package/dist/components/tour-point/TourPoint.css +1 -1
  330. package/dist/components/tour-point/TourPoint.d.ts +19 -5
  331. package/dist/components/tour-point/TourPoint.d.ts.map +1 -1
  332. package/dist/components/tour-point/TourPoint.js +66 -54
  333. package/dist/components/tour-point/TourPoint.js.map +1 -1
  334. package/dist/components/tour-point/TourPoint.module.scss.cjs +1 -1
  335. package/dist/components/tour-point/TourPoint.module.scss.js +28 -28
  336. package/dist/components/unread-badge/UnreadBadge.css +1 -1
  337. package/dist/components/unread-badge/UnreadBadge.module.scss.cjs +1 -1
  338. package/dist/components/unread-badge/UnreadBadge.module.scss.js +5 -5
  339. package/dist/components/user-avatar/UserAvatar.css +1 -1
  340. package/dist/components/user-avatar/UserAvatar.module.scss.cjs +1 -1
  341. package/dist/components/user-avatar/UserAvatar.module.scss.js +26 -26
  342. package/dist/components/user-avatar-group/UserAvatarGroup.cjs +1 -1
  343. package/dist/components/user-avatar-group/UserAvatarGroup.cjs.map +1 -1
  344. package/dist/components/user-avatar-group/UserAvatarGroup.css +1 -1
  345. package/dist/components/user-avatar-group/UserAvatarGroup.d.ts +8 -1
  346. package/dist/components/user-avatar-group/UserAvatarGroup.d.ts.map +1 -1
  347. package/dist/components/user-avatar-group/UserAvatarGroup.js +22 -18
  348. package/dist/components/user-avatar-group/UserAvatarGroup.js.map +1 -1
  349. package/dist/components/user-avatar-group/UserAvatarGroup.module.scss.cjs +1 -1
  350. package/dist/components/user-avatar-group/UserAvatarGroup.module.scss.js +14 -14
  351. package/dist/index.d.ts +1 -0
  352. package/dist/index.d.ts.map +1 -1
  353. package/dist/utils/props.cjs +2 -0
  354. package/dist/utils/props.cjs.map +1 -0
  355. package/dist/utils/props.d.ts +13 -0
  356. package/dist/utils/props.d.ts.map +1 -0
  357. package/dist/utils/props.js +7 -0
  358. package/dist/utils/props.js.map +1 -0
  359. package/package.json +1 -6
  360. package/dist/node_modules/simplebar-react/dist/simplebar.min.css +0 -1
@@ -1,163 +1,175 @@
1
1
  import { jsxs as o, Fragment as l, jsx as a } from "react/jsx-runtime";
2
- import c from "../emoji/Emoji.js";
2
+ import t from "../emoji/Emoji.js";
3
3
  import i from "../icon-button/IconButton.js";
4
4
  import e from "../icon/Icon.js";
5
- import __R from "@mattermost/compass-icons/components/emoticon-plus-outline.js";const R=__R&&__R.default?__R.default:__R;
6
- import __t from "@mattermost/compass-icons/components/dots-horizontal.js";const t=__t&&__t.default?__t.default:__t;
7
- import __m from "@mattermost/compass-icons/components/bookmark-outline.js";const m=__m&&__m.default?__m.default:__m;
8
- import __j from "@mattermost/compass-icons/components/creation-outline.js";const j=__j&&__j.default?__j.default:__j;
9
- import __M from "@mattermost/compass-icons/components/apps.js";const M=__M&&__M.default?__M.default:__M;
10
- import __p from "@mattermost/compass-icons/components/reply-outline.js";const p=__p&&__p.default?__p.default:__p;
11
- import d from "./MessageActions.module.scss.js";
12
- function J({
5
+ import __H from "@mattermost/compass-icons/components/emoticon-plus-outline.js";const H=__H&&__H.default?__H.default:__H;
6
+ import __r from "@mattermost/compass-icons/components/dots-horizontal.js";const r=__r&&__r.default?__r.default:__r;
7
+ import __g from "@mattermost/compass-icons/components/bookmark-outline.js";const g=__g&&__g.default?__g.default:__g;
8
+ import __J from "@mattermost/compass-icons/components/creation-outline.js";const J=__J&&__J.default?__J.default:__J;
9
+ import __N from "@mattermost/compass-icons/components/apps.js";const N=__N&&__N.default?__N.default:__N;
10
+ import __h from "@mattermost/compass-icons/components/reply-outline.js";const h=__h&&__h.default?__h.default:__h;
11
+ import z from "./MessageActions.module.scss.js";
12
+ function V({
13
13
  type: s = "center-channel",
14
- visible: g = !0,
15
- collapsedReplyThreads: h = !0,
16
- quickReactions: z = !0,
17
- className: u = "",
18
- ...b
14
+ visible: u = !0,
15
+ collapsedReplyThreads: b = !0,
16
+ quickReactions: f = !0,
17
+ className: y = "",
18
+ toolbarLabel: I = "Message actions",
19
+ reactThumbsUpLabel: j = "React with thumbs up",
20
+ reactRaisedHandsLabel: R = "React with raised hands",
21
+ reactOkHandLabel: O = "React with OK hand",
22
+ addReactionLabel: w = "Add reaction",
23
+ moreActionsLabel: n = "More actions",
24
+ saveLabel: m = "Save message",
25
+ aiActionsLabel: C = "AI actions",
26
+ pluginActionsLabel: k = "Plugin actions",
27
+ replyLabel: p = "Reply in thread",
28
+ jumpLabel: x = "Jump",
29
+ jumpAriaLabel: B = "Jump to message",
30
+ ...M
19
31
  }) {
20
- if (!g) return null;
21
- const r = s === "center-channel", f = s === "rhs", n = s === "search-results", y = z && h, I = [d["message-actions"], u].filter(Boolean).join(" ");
32
+ if (!u) return null;
33
+ const d = s === "center-channel", S = s === "rhs", c = s === "search-results", A = f && b, E = [z["message-actions"], y].filter(Boolean).join(" ");
22
34
  return /* @__PURE__ */ o(
23
35
  "div",
24
36
  {
25
- className: I,
37
+ className: E,
26
38
  role: "toolbar",
27
- "aria-label": "Message actions",
28
- ...b,
39
+ "aria-label": I,
40
+ ...M,
29
41
  children: [
30
- y && !n && /* @__PURE__ */ o(l, { children: [
42
+ A && !c && /* @__PURE__ */ o(l, { children: [
31
43
  /* @__PURE__ */ a(
32
44
  i,
33
45
  {
34
- "aria-label": "React with thumbs up",
46
+ "aria-label": j,
35
47
  size: "small",
36
48
  padding: "compact",
37
- icon: /* @__PURE__ */ a(c, { emoji: "👍", size: "16" })
49
+ icon: /* @__PURE__ */ a(t, { emoji: "👍", size: "16" })
38
50
  }
39
51
  ),
40
- r && /* @__PURE__ */ o(l, { children: [
52
+ d && /* @__PURE__ */ o(l, { children: [
41
53
  /* @__PURE__ */ a(
42
54
  i,
43
55
  {
44
- "aria-label": "React with raised hands",
56
+ "aria-label": R,
45
57
  size: "small",
46
58
  padding: "compact",
47
- icon: /* @__PURE__ */ a(c, { emoji: "🙌", size: "16" })
59
+ icon: /* @__PURE__ */ a(t, { emoji: "🙌", size: "16" })
48
60
  }
49
61
  ),
50
62
  /* @__PURE__ */ a(
51
63
  i,
52
64
  {
53
- "aria-label": "React with OK hand",
65
+ "aria-label": O,
54
66
  size: "small",
55
67
  padding: "compact",
56
- icon: /* @__PURE__ */ a(c, { emoji: "👌", size: "16" })
68
+ icon: /* @__PURE__ */ a(t, { emoji: "👌", size: "16" })
57
69
  }
58
70
  )
59
71
  ] }),
60
72
  /* @__PURE__ */ a(
61
73
  i,
62
74
  {
63
- "aria-label": "Add reaction",
75
+ "aria-label": w,
64
76
  size: "small",
65
77
  padding: "compact",
66
- icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(R, {}) })
78
+ icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(H, {}) })
67
79
  }
68
80
  )
69
81
  ] }),
70
- n && /* @__PURE__ */ a(
82
+ c && /* @__PURE__ */ a(
71
83
  i,
72
84
  {
73
- "aria-label": "More actions",
85
+ "aria-label": n,
74
86
  size: "small",
75
87
  padding: "compact",
76
- icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(t, {}) })
88
+ icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(r, {}) })
77
89
  }
78
90
  ),
79
- r && /* @__PURE__ */ o(l, { children: [
91
+ d && /* @__PURE__ */ o(l, { children: [
80
92
  /* @__PURE__ */ a(
81
93
  i,
82
94
  {
83
- "aria-label": "Save message",
95
+ "aria-label": m,
84
96
  size: "small",
85
97
  padding: "compact",
86
- icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(m, {}) })
98
+ icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(g, {}) })
87
99
  }
88
100
  ),
89
101
  /* @__PURE__ */ a(
90
102
  i,
91
103
  {
92
- "aria-label": "AI actions",
104
+ "aria-label": C,
93
105
  size: "small",
94
106
  padding: "compact",
95
- icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(j, {}) })
107
+ icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(J, {}) })
96
108
  }
97
109
  ),
98
110
  /* @__PURE__ */ a(
99
111
  i,
100
112
  {
101
- "aria-label": "Plugin actions",
113
+ "aria-label": k,
102
114
  size: "small",
103
115
  padding: "compact",
104
- icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(M, {}) })
116
+ icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(N, {}) })
105
117
  }
106
118
  ),
107
119
  /* @__PURE__ */ a(
108
120
  i,
109
121
  {
110
- "aria-label": "Reply in thread",
122
+ "aria-label": p,
111
123
  size: "small",
112
124
  padding: "compact",
113
- icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(p, {}) })
125
+ icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(h, {}) })
114
126
  }
115
127
  ),
116
128
  /* @__PURE__ */ a(
117
129
  i,
118
130
  {
119
- "aria-label": "More actions",
131
+ "aria-label": n,
120
132
  size: "small",
121
133
  padding: "compact",
122
- icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(t, {}) })
134
+ icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(r, {}) })
123
135
  }
124
136
  )
125
137
  ] }),
126
- f && /* @__PURE__ */ a(
138
+ S && /* @__PURE__ */ a(
127
139
  i,
128
140
  {
129
- "aria-label": "More actions",
141
+ "aria-label": n,
130
142
  size: "small",
131
143
  padding: "compact",
132
- icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(t, {}) })
144
+ icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(r, {}) })
133
145
  }
134
146
  ),
135
- n && /* @__PURE__ */ o(l, { children: [
147
+ c && /* @__PURE__ */ o(l, { children: [
136
148
  /* @__PURE__ */ a(
137
149
  i,
138
150
  {
139
- "aria-label": "Save message",
151
+ "aria-label": m,
140
152
  size: "small",
141
153
  padding: "compact",
142
- icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(m, {}) })
154
+ icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(g, {}) })
143
155
  }
144
156
  ),
145
157
  /* @__PURE__ */ a(
146
158
  i,
147
159
  {
148
- "aria-label": "Reply in thread",
160
+ "aria-label": p,
149
161
  size: "small",
150
162
  padding: "compact",
151
- icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(p, {}) })
163
+ icon: /* @__PURE__ */ a(e, { size: "16", glyph: /* @__PURE__ */ a(h, {}) })
152
164
  }
153
165
  ),
154
166
  /* @__PURE__ */ a(
155
167
  "button",
156
168
  {
157
169
  type: "button",
158
- className: d["message-actions__jump"],
159
- "aria-label": "Jump to message",
160
- children: "Jump"
170
+ className: z["message-actions__jump"],
171
+ "aria-label": B,
172
+ children: x
161
173
  }
162
174
  )
163
175
  ] })
@@ -166,6 +178,6 @@ function J({
166
178
  );
167
179
  }
168
180
  export {
169
- J as default
181
+ V as default
170
182
  };
171
183
  //# sourceMappingURL=MessageActions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageActions.js","sources":["../../../src/components/message-actions/MessageActions.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\nimport Emoji from '@/components/emoji/Emoji';\nimport IconButton from '@/components/icon-button/IconButton';\nimport Icon from '@/components/icon/Icon';\nimport EmoticonPlusOutlineIcon from '@mattermost/compass-icons/components/emoticon-plus-outline';\nimport DotsHorizontalIcon from '@mattermost/compass-icons/components/dots-horizontal';\nimport BookmarkOutlineIcon from '@mattermost/compass-icons/components/bookmark-outline';\nimport CreationOutlineIcon from '@mattermost/compass-icons/components/creation-outline';\nimport AppsIcon from '@mattermost/compass-icons/components/apps';\nimport ReplyOutlineIcon from '@mattermost/compass-icons/components/reply-outline';\nimport styles from './MessageActions.module.scss';\n\nexport type MessageActionsType = 'center-channel' | 'rhs' | 'search-results';\n\nexport interface MessageActionsProps extends HTMLAttributes<HTMLDivElement> {\n /** Context variant. Default: Center Channel. */\n type?: MessageActionsType;\n /** Whether the hover toolbar is visible. Default: true. */\n visible?: boolean;\n /** Whether collapsed reply threads feature is on. Default: true. */\n collapsedReplyThreads?: boolean;\n /** Whether quick reactions are shown. Default: true. */\n quickReactions?: boolean;\n /** Optional CSS class name. */\n className?: string;\n}\n\n/**\n * Message Actions is the floating toolbar that appears on a message when you hover, tab, or\n * long-press it. It bundles the most common per-message actions — react, save, reply, more —\n * into a small, context-aware row that hovers above the post.\n */\nexport default function MessageActions({\n type = 'center-channel',\n visible = true,\n collapsedReplyThreads = true,\n quickReactions = true,\n className = '',\n ...rest\n}: MessageActionsProps) {\n if (!visible) return null;\n\n const isCenterChannel = type === 'center-channel';\n const isRHS = type === 'rhs';\n const isSearchResults = type === 'search-results';\n const showQuickReactions = quickReactions && collapsedReplyThreads;\n\n const rootClass = [styles['message-actions'], className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n className={rootClass}\n role=\"toolbar\"\n aria-label=\"Message actions\"\n {...rest}\n >\n {/* Quick reaction emojis — center channel + RHS */}\n {showQuickReactions && !isSearchResults && (\n <>\n <IconButton\n aria-label=\"React with thumbs up\"\n size=\"small\"\n padding=\"compact\"\n icon={<Emoji emoji=\"👍\" size=\"16\" />}\n />\n {isCenterChannel && (\n <>\n <IconButton\n aria-label=\"React with raised hands\"\n size=\"small\"\n padding=\"compact\"\n icon={<Emoji emoji=\"🙌\" size=\"16\" />}\n />\n <IconButton\n aria-label=\"React with OK hand\"\n size=\"small\"\n padding=\"compact\"\n icon={<Emoji emoji=\"👌\" size=\"16\" />}\n />\n </>\n )}\n <IconButton\n aria-label=\"Add reaction\"\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<EmoticonPlusOutlineIcon />} />}\n />\n </>\n )}\n\n {/* Search results only: more button first */}\n {isSearchResults && (\n <IconButton\n aria-label=\"More actions\"\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<DotsHorizontalIcon />} />}\n />\n )}\n\n {/* Center channel actions */}\n {isCenterChannel && (\n <>\n <IconButton\n aria-label=\"Save message\"\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<BookmarkOutlineIcon />} />}\n />\n <IconButton\n aria-label=\"AI actions\"\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<CreationOutlineIcon />} />}\n />\n <IconButton\n aria-label=\"Plugin actions\"\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<AppsIcon />} />}\n />\n <IconButton\n aria-label=\"Reply in thread\"\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<ReplyOutlineIcon />} />}\n />\n <IconButton\n aria-label=\"More actions\"\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<DotsHorizontalIcon />} />}\n />\n </>\n )}\n\n {/* RHS actions */}\n {isRHS && (\n <IconButton\n aria-label=\"More actions\"\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<DotsHorizontalIcon />} />}\n />\n )}\n\n {/* Search results additional buttons */}\n {isSearchResults && (\n <>\n <IconButton\n aria-label=\"Save message\"\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<BookmarkOutlineIcon />} />}\n />\n <IconButton\n aria-label=\"Reply in thread\"\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<ReplyOutlineIcon />} />}\n />\n <button\n type=\"button\"\n className={styles['message-actions__jump']}\n aria-label=\"Jump to message\"\n >\n Jump\n </button>\n </>\n )}\n </div>\n );\n}\n"],"names":["MessageActions","type","visible","collapsedReplyThreads","quickReactions","className","rest","isCenterChannel","isRHS","isSearchResults","showQuickReactions","rootClass","styles","jsxs","Fragment","jsx","IconButton","Emoji","Icon","EmoticonPlusOutlineIcon","DotsHorizontalIcon","BookmarkOutlineIcon","CreationOutlineIcon","AppsIcon","ReplyOutlineIcon"],"mappings":"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"}
1
+ {"version":3,"file":"MessageActions.js","sources":["../../../src/components/message-actions/MessageActions.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\nimport Emoji from '@/components/emoji/Emoji';\nimport IconButton from '@/components/icon-button/IconButton';\nimport Icon from '@/components/icon/Icon';\nimport EmoticonPlusOutlineIcon from '@mattermost/compass-icons/components/emoticon-plus-outline';\nimport DotsHorizontalIcon from '@mattermost/compass-icons/components/dots-horizontal';\nimport BookmarkOutlineIcon from '@mattermost/compass-icons/components/bookmark-outline';\nimport CreationOutlineIcon from '@mattermost/compass-icons/components/creation-outline';\nimport AppsIcon from '@mattermost/compass-icons/components/apps';\nimport ReplyOutlineIcon from '@mattermost/compass-icons/components/reply-outline';\nimport styles from './MessageActions.module.scss';\n\nexport type MessageActionsType = 'center-channel' | 'rhs' | 'search-results';\n\nexport interface MessageActionsProps extends HTMLAttributes<HTMLDivElement> {\n /** Context variant. Default: Center Channel. */\n type?: MessageActionsType;\n /** Whether the hover toolbar is visible. Default: true. */\n visible?: boolean;\n /** Whether collapsed reply threads feature is on. Default: true. */\n collapsedReplyThreads?: boolean;\n /** Whether quick reactions are shown. Default: true. */\n quickReactions?: boolean;\n /** Optional CSS class name. */\n className?: string;\n /** Accessible name for the toolbar. Default: \"Message actions\". An explicit `aria-label` still wins. */\n toolbarLabel?: string;\n /** Default: \"React with thumbs up\". */\n reactThumbsUpLabel?: string;\n /** Default: \"React with raised hands\". */\n reactRaisedHandsLabel?: string;\n /** Default: \"React with OK hand\". */\n reactOkHandLabel?: string;\n /** Default: \"Add reaction\". */\n addReactionLabel?: string;\n /** Default: \"More actions\". */\n moreActionsLabel?: string;\n /** Default: \"Save message\". */\n saveLabel?: string;\n /** Default: \"AI actions\". */\n aiActionsLabel?: string;\n /** Default: \"Plugin actions\". */\n pluginActionsLabel?: string;\n /** Default: \"Reply in thread\". */\n replyLabel?: string;\n /** Visible Jump button text (search results). Default: \"Jump\". */\n jumpLabel?: ReactNode;\n /** Accessible name for the Jump button. Default: \"Jump to message\". */\n jumpAriaLabel?: string;\n}\n\n/**\n * Message Actions is the floating toolbar that appears on a message when you hover, tab, or\n * long-press it. It bundles the most common per-message actions — react, save, reply, more —\n * into a small, context-aware row that hovers above the post.\n */\nexport default function MessageActions({\n type = 'center-channel',\n visible = true,\n collapsedReplyThreads = true,\n quickReactions = true,\n className = '',\n toolbarLabel = 'Message actions',\n reactThumbsUpLabel = 'React with thumbs up',\n reactRaisedHandsLabel = 'React with raised hands',\n reactOkHandLabel = 'React with OK hand',\n addReactionLabel = 'Add reaction',\n moreActionsLabel = 'More actions',\n saveLabel = 'Save message',\n aiActionsLabel = 'AI actions',\n pluginActionsLabel = 'Plugin actions',\n replyLabel = 'Reply in thread',\n jumpLabel = 'Jump',\n jumpAriaLabel = 'Jump to message',\n ...rest\n}: MessageActionsProps) {\n if (!visible) return null;\n\n const isCenterChannel = type === 'center-channel';\n const isRHS = type === 'rhs';\n const isSearchResults = type === 'search-results';\n const showQuickReactions = quickReactions && collapsedReplyThreads;\n\n const rootClass = [styles['message-actions'], className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n className={rootClass}\n role=\"toolbar\"\n aria-label={toolbarLabel}\n {...rest}\n >\n {/* Quick reaction emojis — center channel + RHS */}\n {showQuickReactions && !isSearchResults && (\n <>\n <IconButton\n aria-label={reactThumbsUpLabel}\n size=\"small\"\n padding=\"compact\"\n icon={<Emoji emoji=\"👍\" size=\"16\" />}\n />\n {isCenterChannel && (\n <>\n <IconButton\n aria-label={reactRaisedHandsLabel}\n size=\"small\"\n padding=\"compact\"\n icon={<Emoji emoji=\"🙌\" size=\"16\" />}\n />\n <IconButton\n aria-label={reactOkHandLabel}\n size=\"small\"\n padding=\"compact\"\n icon={<Emoji emoji=\"👌\" size=\"16\" />}\n />\n </>\n )}\n <IconButton\n aria-label={addReactionLabel}\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<EmoticonPlusOutlineIcon />} />}\n />\n </>\n )}\n\n {/* Search results only: more button first */}\n {isSearchResults && (\n <IconButton\n aria-label={moreActionsLabel}\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<DotsHorizontalIcon />} />}\n />\n )}\n\n {/* Center channel actions */}\n {isCenterChannel && (\n <>\n <IconButton\n aria-label={saveLabel}\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<BookmarkOutlineIcon />} />}\n />\n <IconButton\n aria-label={aiActionsLabel}\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<CreationOutlineIcon />} />}\n />\n <IconButton\n aria-label={pluginActionsLabel}\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<AppsIcon />} />}\n />\n <IconButton\n aria-label={replyLabel}\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<ReplyOutlineIcon />} />}\n />\n <IconButton\n aria-label={moreActionsLabel}\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<DotsHorizontalIcon />} />}\n />\n </>\n )}\n\n {/* RHS actions */}\n {isRHS && (\n <IconButton\n aria-label={moreActionsLabel}\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<DotsHorizontalIcon />} />}\n />\n )}\n\n {/* Search results additional buttons */}\n {isSearchResults && (\n <>\n <IconButton\n aria-label={saveLabel}\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<BookmarkOutlineIcon />} />}\n />\n <IconButton\n aria-label={replyLabel}\n size=\"small\"\n padding=\"compact\"\n icon={<Icon size=\"16\" glyph={<ReplyOutlineIcon />} />}\n />\n <button\n type=\"button\"\n className={styles['message-actions__jump']}\n aria-label={jumpAriaLabel}\n >\n {jumpLabel}\n </button>\n </>\n )}\n </div>\n );\n}\n"],"names":["MessageActions","type","visible","collapsedReplyThreads","quickReactions","className","toolbarLabel","reactThumbsUpLabel","reactRaisedHandsLabel","reactOkHandLabel","addReactionLabel","moreActionsLabel","saveLabel","aiActionsLabel","pluginActionsLabel","replyLabel","jumpLabel","jumpAriaLabel","rest","isCenterChannel","isRHS","isSearchResults","showQuickReactions","rootClass","styles","jsxs","Fragment","jsx","IconButton","Emoji","Icon","EmoticonPlusOutlineIcon","DotsHorizontalIcon","BookmarkOutlineIcon","CreationOutlineIcon","AppsIcon","ReplyOutlineIcon"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageHeader.cjs","sources":["../../../src/components/message-header/MessageHeader.tsx"],"sourcesContent":["import Tag from '@/components/tag/Tag';\nimport styles from './MessageHeader.module.scss';\n\ntype MessageHeaderProps = {\n username: string;\n timestamp: string;\n isBot?: boolean;\n botLabel?: string;\n};\n\n/**\n * The Message Header sits above every message body — username, optional bot or guest tag,\n * and timestamp. It's the byline of the conversation, so the rules are tight: same parts,\n * same order, every time.\n */\nexport default function MessageHeader({\n username,\n timestamp,\n isBot = false,\n botLabel = 'Bot',\n}: MessageHeaderProps) {\n return (\n <div className={styles['message-header']}>\n <span className={styles['message-header__username']}>{username}</span>\n {isBot && <Tag label={botLabel} />}\n <span className={styles['message-header__timestamp']}>{timestamp}</span>\n </div>\n );\n}\n"],"names":["MessageHeader","username","timestamp","isBot","botLabel","jsxs","styles","jsx","Tag"],"mappings":"0NAeA,SAAwBA,EAAc,CACpC,SAAAC,EACA,UAAAC,EACA,MAAAC,EAAQ,GACR,SAAAC,EAAW,KACb,EAAuB,CACrB,OACEC,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,gBAAgB,EACrC,SAAA,CAAAC,MAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,0BAA0B,EAAI,SAAAL,EAAS,EAC9DE,GAASI,EAAAA,IAACC,EAAAA,QAAA,CAAI,MAAOJ,CAAA,CAAU,QAC/B,OAAA,CAAK,UAAWE,EAAAA,QAAO,2BAA2B,EAAI,SAAAJ,CAAA,CAAU,CAAA,EACnE,CAEJ"}
1
+ {"version":3,"file":"MessageHeader.cjs","sources":["../../../src/components/message-header/MessageHeader.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport Tag from '@/components/tag/Tag';\nimport styles from './MessageHeader.module.scss';\n\ntype MessageHeaderProps = {\n username: ReactNode;\n timestamp: ReactNode;\n isBot?: boolean;\n /** Default: \"Bot\". Accepts translated nodes. */\n botLabel?: ReactNode;\n};\n\n/**\n * The Message Header sits above every message body — username, optional bot or guest tag,\n * and timestamp. It's the byline of the conversation, so the rules are tight: same parts,\n * same order, every time.\n */\nexport default function MessageHeader({\n username,\n timestamp,\n isBot = false,\n botLabel = 'Bot',\n}: MessageHeaderProps) {\n return (\n <div className={styles['message-header']}>\n <span className={styles['message-header__username']}>{username}</span>\n {isBot && <Tag label={botLabel} />}\n <span className={styles['message-header__timestamp']}>{timestamp}</span>\n </div>\n );\n}\n"],"names":["MessageHeader","username","timestamp","isBot","botLabel","jsxs","styles","jsx","Tag"],"mappings":"0NAiBA,SAAwBA,EAAc,CACpC,SAAAC,EACA,UAAAC,EACA,MAAAC,EAAQ,GACR,SAAAC,EAAW,KACb,EAAuB,CACrB,OACEC,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,gBAAgB,EACrC,SAAA,CAAAC,MAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,0BAA0B,EAAI,SAAAL,EAAS,EAC9DE,GAASI,EAAAA,IAACC,EAAAA,QAAA,CAAI,MAAOJ,CAAA,CAAU,QAC/B,OAAA,CAAK,UAAWE,EAAAA,QAAO,2BAA2B,EAAI,SAAAJ,CAAA,CAAU,CAAA,EACnE,CAEJ"}
@@ -1,8 +1,10 @@
1
+ import { ReactNode } from 'react';
1
2
  type MessageHeaderProps = {
2
- username: string;
3
- timestamp: string;
3
+ username: ReactNode;
4
+ timestamp: ReactNode;
4
5
  isBot?: boolean;
5
- botLabel?: string;
6
+ /** Default: "Bot". Accepts translated nodes. */
7
+ botLabel?: ReactNode;
6
8
  };
7
9
  /**
8
10
  * The Message Header sits above every message body — username, optional bot or guest tag,
@@ -1 +1 @@
1
- {"version":3,"file":"MessageHeader.d.ts","sourceRoot":"","sources":["../../../src/components/message-header/MessageHeader.tsx"],"names":[],"mappings":"AAGA,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,QAAQ,EACR,SAAS,EACT,KAAa,EACb,QAAgB,GACjB,EAAE,kBAAkB,2CAQpB"}
1
+ {"version":3,"file":"MessageHeader.d.ts","sourceRoot":"","sources":["../../../src/components/message-header/MessageHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,QAAQ,EACR,SAAS,EACT,KAAa,EACb,QAAgB,GACjB,EAAE,kBAAkB,2CAQpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageHeader.js","sources":["../../../src/components/message-header/MessageHeader.tsx"],"sourcesContent":["import Tag from '@/components/tag/Tag';\nimport styles from './MessageHeader.module.scss';\n\ntype MessageHeaderProps = {\n username: string;\n timestamp: string;\n isBot?: boolean;\n botLabel?: string;\n};\n\n/**\n * The Message Header sits above every message body — username, optional bot or guest tag,\n * and timestamp. It's the byline of the conversation, so the rules are tight: same parts,\n * same order, every time.\n */\nexport default function MessageHeader({\n username,\n timestamp,\n isBot = false,\n botLabel = 'Bot',\n}: MessageHeaderProps) {\n return (\n <div className={styles['message-header']}>\n <span className={styles['message-header__username']}>{username}</span>\n {isBot && <Tag label={botLabel} />}\n <span className={styles['message-header__timestamp']}>{timestamp}</span>\n </div>\n );\n}\n"],"names":["MessageHeader","username","timestamp","isBot","botLabel","jsxs","styles","jsx","Tag"],"mappings":";;;AAeA,SAAwBA,EAAc;AAAA,EACpC,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,UAAAC,IAAW;AACb,GAAuB;AACrB,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAO,gBAAgB,GACrC,UAAA;AAAA,IAAA,gBAAAC,EAAC,QAAA,EAAK,WAAWD,EAAO,0BAA0B,GAAI,UAAAL,GAAS;AAAA,IAC9DE,KAAS,gBAAAI,EAACC,GAAA,EAAI,OAAOJ,EAAA,CAAU;AAAA,sBAC/B,QAAA,EAAK,WAAWE,EAAO,2BAA2B,GAAI,UAAAJ,EAAA,CAAU;AAAA,EAAA,GACnE;AAEJ;"}
1
+ {"version":3,"file":"MessageHeader.js","sources":["../../../src/components/message-header/MessageHeader.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport Tag from '@/components/tag/Tag';\nimport styles from './MessageHeader.module.scss';\n\ntype MessageHeaderProps = {\n username: ReactNode;\n timestamp: ReactNode;\n isBot?: boolean;\n /** Default: \"Bot\". Accepts translated nodes. */\n botLabel?: ReactNode;\n};\n\n/**\n * The Message Header sits above every message body — username, optional bot or guest tag,\n * and timestamp. It's the byline of the conversation, so the rules are tight: same parts,\n * same order, every time.\n */\nexport default function MessageHeader({\n username,\n timestamp,\n isBot = false,\n botLabel = 'Bot',\n}: MessageHeaderProps) {\n return (\n <div className={styles['message-header']}>\n <span className={styles['message-header__username']}>{username}</span>\n {isBot && <Tag label={botLabel} />}\n <span className={styles['message-header__timestamp']}>{timestamp}</span>\n </div>\n );\n}\n"],"names":["MessageHeader","username","timestamp","isBot","botLabel","jsxs","styles","jsx","Tag"],"mappings":";;;AAiBA,SAAwBA,EAAc;AAAA,EACpC,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,UAAAC,IAAW;AACb,GAAuB;AACrB,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAWC,EAAO,gBAAgB,GACrC,UAAA;AAAA,IAAA,gBAAAC,EAAC,QAAA,EAAK,WAAWD,EAAO,0BAA0B,GAAI,UAAAL,GAAS;AAAA,IAC9DE,KAAS,gBAAAI,EAACC,GAAA,EAAI,OAAOJ,EAAA,CAAU;AAAA,sBAC/B,QAAA,EAAK,WAAWE,EAAO,2BAA2B,GAAI,UAAAJ,EAAA,CAAU;AAAA,EAAA,GACnE;AAEJ;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),m=require("../icon/Icon.cjs"),__c=require("@mattermost/compass-icons/components/creation-outline.js"),c=__c?.default??__c,a=require("./MessageSeparator.module.scss.cjs"),g={date:"Today","new-messages":"New messages","reply-count":"4 replies"};function p({type:s="date",label:t,showAiSummary:l=!1,onSummarize:i,className:n="",...d}){const o=t??g[s],u=[a.default["message-separator"],a.default[`message-separator--${s==="new-messages"?"new":s==="reply-count"?"reply":"date"}`],n].filter(Boolean).join(" "),r=e.jsxs("div",{className:a.default["message-separator__label"],children:[e.jsx("span",{className:a.default["message-separator__text"],children:o}),s==="new-messages"&&l&&e.jsxs("button",{type:"button",className:a.default["message-separator__summarize"],onClick:i,"aria-label":"Summarize new messages with AI",children:[e.jsx("span",{className:a.default["message-separator__summarize-icon"],"aria-hidden":!0,children:e.jsx(m.default,{size:"12",glyph:e.jsx(c,{})})}),"Summarize"]})]});return e.jsx("div",{className:u,role:"separator",...d,children:s==="reply-count"?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:a.default["message-separator__reply-gutter"],"aria-hidden":!0,children:e.jsx("div",{className:a.default["message-separator__reply-line-start"]})}),r,e.jsx("div",{className:a.default["message-separator__line"],"aria-hidden":!0})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:a.default["message-separator__line"],"aria-hidden":!0}),r,e.jsx("div",{className:a.default["message-separator__line"],"aria-hidden":!0})]})})}exports.default=p;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),g=require("../icon/Icon.cjs"),__p=require("@mattermost/compass-icons/components/creation-outline.js"),p=__p?.default??__p,a=require("./MessageSeparator.module.scss.cjs"),_={date:"Today","new-messages":"New messages","reply-count":"4 replies"};function f({type:s="date",label:t,showAiSummary:l=!1,onSummarize:i,summarizeLabel:n="Summarize",summarizeAriaLabel:d="Summarize new messages with AI",className:o="",...u}){const m=t??_[s],c=[a.default["message-separator"],a.default[`message-separator--${s==="new-messages"?"new":s==="reply-count"?"reply":"date"}`],o].filter(Boolean).join(" "),r=e.jsxs("div",{className:a.default["message-separator__label"],children:[e.jsx("span",{className:a.default["message-separator__text"],children:m}),s==="new-messages"&&l&&e.jsxs("button",{type:"button",className:a.default["message-separator__summarize"],onClick:i,"aria-label":d,children:[e.jsx("span",{className:a.default["message-separator__summarize-icon"],"aria-hidden":!0,children:e.jsx(g.default,{size:"12",glyph:e.jsx(p,{})})}),n]})]});return e.jsx("div",{className:c,role:"separator",...u,children:s==="reply-count"?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:a.default["message-separator__reply-gutter"],"aria-hidden":!0,children:e.jsx("div",{className:a.default["message-separator__reply-line-start"]})}),r,e.jsx("div",{className:a.default["message-separator__line"],"aria-hidden":!0})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:a.default["message-separator__line"],"aria-hidden":!0}),r,e.jsx("div",{className:a.default["message-separator__line"],"aria-hidden":!0})]})})}exports.default=f;
2
2
  //# sourceMappingURL=MessageSeparator.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageSeparator.cjs","sources":["../../../src/components/message-separator/MessageSeparator.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\nimport Icon from '@/components/icon/Icon';\nimport CreationOutlineIcon from '@mattermost/compass-icons/components/creation-outline';\nimport styles from './MessageSeparator.module.scss';\n\nexport type MessageSeparatorType = 'date' | 'new-messages' | 'reply-count';\n\nexport interface MessageSeparatorProps extends HTMLAttributes<HTMLDivElement> {\n /** Separator variant. Default: Date. */\n type?: MessageSeparatorType;\n /** Label text. Defaults: 'Today' / 'New messages' / '4 replies'. */\n label?: string;\n /** Show AI summarize button (New Messages type only). Default: false. */\n showAiSummary?: boolean;\n /** Called when Summarize button is clicked. */\n onSummarize?: () => void;\n /** Optional CSS class name. */\n className?: string;\n}\n\nconst DEFAULT_LABELS: Record<MessageSeparatorType, string> = {\n date: 'Today',\n 'new-messages': 'New messages',\n 'reply-count': '4 replies',\n};\n\n/**\n * Message Separators sit between messages in the stream to group them — by day, by reply\n * count, or to mark the boundary between read and unread. They help readers orient\n * themselves when scrolling back through history or returning to a busy channel.\n */\nexport default function MessageSeparator({\n type = 'date',\n label,\n showAiSummary = false,\n onSummarize,\n className = '',\n ...rest\n}: MessageSeparatorProps) {\n const displayLabel = label ?? DEFAULT_LABELS[type];\n\n const rootClass = [\n styles['message-separator'],\n styles[\n `message-separator--${type === 'new-messages' ? 'new' : type === 'reply-count' ? 'reply' : 'date'}`\n ],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const labelBlock = (\n <div className={styles['message-separator__label']}>\n <span className={styles['message-separator__text']}>{displayLabel}</span>\n\n {type === 'new-messages' && showAiSummary && (\n <button\n type=\"button\"\n className={styles['message-separator__summarize']}\n onClick={onSummarize}\n aria-label=\"Summarize new messages with AI\"\n >\n <span\n className={styles['message-separator__summarize-icon']}\n aria-hidden\n >\n <Icon size=\"12\" glyph={<CreationOutlineIcon />} />\n </span>\n Summarize\n </button>\n )}\n </div>\n );\n\n return (\n <div className={rootClass} role=\"separator\" {...rest}>\n {type === 'reply-count' ? (\n <>\n <div\n className={styles['message-separator__reply-gutter']}\n aria-hidden\n >\n <div className={styles['message-separator__reply-line-start']} />\n </div>\n {labelBlock}\n <div className={styles['message-separator__line']} aria-hidden />\n </>\n ) : (\n <>\n <div className={styles['message-separator__line']} aria-hidden />\n {labelBlock}\n <div className={styles['message-separator__line']} aria-hidden />\n </>\n )}\n </div>\n );\n}\n"],"names":["DEFAULT_LABELS","MessageSeparator","type","label","showAiSummary","onSummarize","className","rest","displayLabel","rootClass","styles","labelBlock","jsxs","jsx","Icon","CreationOutlineIcon","Fragment"],"mappings":"kSAoBMA,EAAuD,CAC3D,KAAM,QACN,eAAgB,eAChB,cAAe,WACjB,EAOA,SAAwBC,EAAiB,CACvC,KAAAC,EAAO,OACP,MAAAC,EACA,cAAAC,EAAgB,GAChB,YAAAC,EACA,UAAAC,EAAY,GACZ,GAAGC,CACL,EAA0B,CACxB,MAAMC,EAAeL,GAASH,EAAeE,CAAI,EAE3CO,EAAY,CAChBC,EAAAA,QAAO,mBAAmB,EAC1BA,EAAAA,QACE,sBAAsBR,IAAS,eAAiB,MAAQA,IAAS,cAAgB,QAAU,MAAM,EACnG,EACAI,CAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,EAELK,EACJC,EAAAA,KAAC,MAAA,CAAI,UAAWF,UAAO,0BAA0B,EAC/C,SAAA,CAAAG,MAAC,OAAA,CAAK,UAAWH,EAAAA,QAAO,yBAAyB,EAAI,SAAAF,EAAa,EAEjEN,IAAS,gBAAkBE,GAC1BQ,EAAAA,KAAC,SAAA,CACC,KAAK,SACL,UAAWF,EAAAA,QAAO,8BAA8B,EAChD,QAASL,EACT,aAAW,iCAEX,SAAA,CAAAQ,EAAAA,IAAC,OAAA,CACC,UAAWH,EAAAA,QAAO,mCAAmC,EACrD,cAAW,GAEX,eAACI,EAAAA,QAAA,CAAK,KAAK,KAAK,MAAOD,EAAAA,IAACE,IAAoB,CAAA,CAAI,CAAA,CAAA,EAC3C,WAAA,CAAA,CAAA,CAET,EAEJ,EAGF,OACEF,EAAAA,IAAC,MAAA,CAAI,UAAWJ,EAAW,KAAK,YAAa,GAAGF,EAC7C,SAAAL,IAAS,cACRU,EAAAA,KAAAI,EAAAA,SAAA,CACE,SAAA,CAAAH,EAAAA,IAAC,MAAA,CACC,UAAWH,EAAAA,QAAO,iCAAiC,EACnD,cAAW,GAEX,SAAAG,EAAAA,IAAC,MAAA,CAAI,UAAWH,EAAAA,QAAO,qCAAqC,CAAA,CAAG,CAAA,CAAA,EAEhEC,QACA,MAAA,CAAI,UAAWD,EAAAA,QAAO,yBAAyB,EAAG,cAAW,EAAA,CAAC,CAAA,CAAA,CACjE,EAEAE,EAAAA,KAAAI,EAAAA,SAAA,CACE,SAAA,CAAAH,MAAC,OAAI,UAAWH,EAAAA,QAAO,yBAAyB,EAAG,cAAW,GAAC,EAC9DC,QACA,MAAA,CAAI,UAAWD,EAAAA,QAAO,yBAAyB,EAAG,cAAW,EAAA,CAAC,CAAA,CAAA,CACjE,CAAA,CAEJ,CAEJ"}
1
+ {"version":3,"file":"MessageSeparator.cjs","sources":["../../../src/components/message-separator/MessageSeparator.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\nimport Icon from '@/components/icon/Icon';\nimport CreationOutlineIcon from '@mattermost/compass-icons/components/creation-outline';\nimport styles from './MessageSeparator.module.scss';\n\nexport type MessageSeparatorType = 'date' | 'new-messages' | 'reply-count';\n\nexport interface MessageSeparatorProps extends HTMLAttributes<HTMLDivElement> {\n /** Separator variant. Default: Date. */\n type?: MessageSeparatorType;\n /** Label text. Defaults: 'Today' / 'New messages' / '4 replies'. Accepts translated nodes. */\n label?: ReactNode;\n /** Show AI summarize button (New Messages type only). Default: false. */\n showAiSummary?: boolean;\n /** Called when Summarize button is clicked. */\n onSummarize?: () => void;\n /** Visible Summarize button text. Default: \"Summarize\". */\n summarizeLabel?: ReactNode;\n /** Accessible name for the Summarize button. Default: \"Summarize new messages with AI\". */\n summarizeAriaLabel?: string;\n /** Optional CSS class name. */\n className?: string;\n}\n\nconst DEFAULT_LABELS: Record<MessageSeparatorType, string> = {\n date: 'Today',\n 'new-messages': 'New messages',\n 'reply-count': '4 replies',\n};\n\n/**\n * Message Separators sit between messages in the stream to group them — by day, by reply\n * count, or to mark the boundary between read and unread. They help readers orient\n * themselves when scrolling back through history or returning to a busy channel.\n */\nexport default function MessageSeparator({\n type = 'date',\n label,\n showAiSummary = false,\n onSummarize,\n summarizeLabel = 'Summarize',\n summarizeAriaLabel = 'Summarize new messages with AI',\n className = '',\n ...rest\n}: MessageSeparatorProps) {\n const displayLabel = label ?? DEFAULT_LABELS[type];\n\n const rootClass = [\n styles['message-separator'],\n styles[\n `message-separator--${type === 'new-messages' ? 'new' : type === 'reply-count' ? 'reply' : 'date'}`\n ],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const labelBlock = (\n <div className={styles['message-separator__label']}>\n <span className={styles['message-separator__text']}>{displayLabel}</span>\n\n {type === 'new-messages' && showAiSummary && (\n <button\n type=\"button\"\n className={styles['message-separator__summarize']}\n onClick={onSummarize}\n aria-label={summarizeAriaLabel}\n >\n <span\n className={styles['message-separator__summarize-icon']}\n aria-hidden\n >\n <Icon size=\"12\" glyph={<CreationOutlineIcon />} />\n </span>\n {summarizeLabel}\n </button>\n )}\n </div>\n );\n\n return (\n <div className={rootClass} role=\"separator\" {...rest}>\n {type === 'reply-count' ? (\n <>\n <div\n className={styles['message-separator__reply-gutter']}\n aria-hidden\n >\n <div className={styles['message-separator__reply-line-start']} />\n </div>\n {labelBlock}\n <div className={styles['message-separator__line']} aria-hidden />\n </>\n ) : (\n <>\n <div className={styles['message-separator__line']} aria-hidden />\n {labelBlock}\n <div className={styles['message-separator__line']} aria-hidden />\n </>\n )}\n </div>\n );\n}\n"],"names":["DEFAULT_LABELS","MessageSeparator","type","label","showAiSummary","onSummarize","summarizeLabel","summarizeAriaLabel","className","rest","displayLabel","rootClass","styles","labelBlock","jsxs","jsx","Icon","CreationOutlineIcon","Fragment"],"mappings":"kSAwBMA,EAAuD,CAC3D,KAAM,QACN,eAAgB,eAChB,cAAe,WACjB,EAOA,SAAwBC,EAAiB,CACvC,KAAAC,EAAO,OACP,MAAAC,EACA,cAAAC,EAAgB,GAChB,YAAAC,EACA,eAAAC,EAAiB,YACjB,mBAAAC,EAAqB,iCACrB,UAAAC,EAAY,GACZ,GAAGC,CACL,EAA0B,CACxB,MAAMC,EAAeP,GAASH,EAAeE,CAAI,EAE3CS,EAAY,CAChBC,EAAAA,QAAO,mBAAmB,EAC1BA,EAAAA,QACE,sBAAsBV,IAAS,eAAiB,MAAQA,IAAS,cAAgB,QAAU,MAAM,EACnG,EACAM,CAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,EAELK,EACJC,EAAAA,KAAC,MAAA,CAAI,UAAWF,UAAO,0BAA0B,EAC/C,SAAA,CAAAG,MAAC,OAAA,CAAK,UAAWH,EAAAA,QAAO,yBAAyB,EAAI,SAAAF,EAAa,EAEjER,IAAS,gBAAkBE,GAC1BU,EAAAA,KAAC,SAAA,CACC,KAAK,SACL,UAAWF,EAAAA,QAAO,8BAA8B,EAChD,QAASP,EACT,aAAYE,EAEZ,SAAA,CAAAQ,EAAAA,IAAC,OAAA,CACC,UAAWH,EAAAA,QAAO,mCAAmC,EACrD,cAAW,GAEX,eAACI,EAAAA,QAAA,CAAK,KAAK,KAAK,MAAOD,EAAAA,IAACE,IAAoB,CAAA,CAAI,CAAA,CAAA,EAEjDX,CAAA,CAAA,CAAA,CACH,EAEJ,EAGF,OACES,EAAAA,IAAC,MAAA,CAAI,UAAWJ,EAAW,KAAK,YAAa,GAAGF,EAC7C,SAAAP,IAAS,cACRY,EAAAA,KAAAI,EAAAA,SAAA,CACE,SAAA,CAAAH,EAAAA,IAAC,MAAA,CACC,UAAWH,EAAAA,QAAO,iCAAiC,EACnD,cAAW,GAEX,SAAAG,EAAAA,IAAC,MAAA,CAAI,UAAWH,EAAAA,QAAO,qCAAqC,CAAA,CAAG,CAAA,CAAA,EAEhEC,QACA,MAAA,CAAI,UAAWD,EAAAA,QAAO,yBAAyB,EAAG,cAAW,EAAA,CAAC,CAAA,CAAA,CACjE,EAEAE,EAAAA,KAAAI,EAAAA,SAAA,CACE,SAAA,CAAAH,MAAC,OAAI,UAAWH,EAAAA,QAAO,yBAAyB,EAAG,cAAW,GAAC,EAC9DC,QACA,MAAA,CAAI,UAAWD,EAAAA,QAAO,yBAAyB,EAAG,cAAW,EAAA,CAAC,CAAA,CAAA,CACjE,CAAA,CAEJ,CAEJ"}
@@ -1,14 +1,18 @@
1
- import { HTMLAttributes } from 'react';
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
2
  export type MessageSeparatorType = 'date' | 'new-messages' | 'reply-count';
3
3
  export interface MessageSeparatorProps extends HTMLAttributes<HTMLDivElement> {
4
4
  /** Separator variant. Default: Date. */
5
5
  type?: MessageSeparatorType;
6
- /** Label text. Defaults: 'Today' / 'New messages' / '4 replies'. */
7
- label?: string;
6
+ /** Label text. Defaults: 'Today' / 'New messages' / '4 replies'. Accepts translated nodes. */
7
+ label?: ReactNode;
8
8
  /** Show AI summarize button (New Messages type only). Default: false. */
9
9
  showAiSummary?: boolean;
10
10
  /** Called when Summarize button is clicked. */
11
11
  onSummarize?: () => void;
12
+ /** Visible Summarize button text. Default: "Summarize". */
13
+ summarizeLabel?: ReactNode;
14
+ /** Accessible name for the Summarize button. Default: "Summarize new messages with AI". */
15
+ summarizeAriaLabel?: string;
12
16
  /** Optional CSS class name. */
13
17
  className?: string;
14
18
  }
@@ -17,5 +21,5 @@ export interface MessageSeparatorProps extends HTMLAttributes<HTMLDivElement> {
17
21
  * count, or to mark the boundary between read and unread. They help readers orient
18
22
  * themselves when scrolling back through history or returning to a busy channel.
19
23
  */
20
- export default function MessageSeparator({ type, label, showAiSummary, onSummarize, className, ...rest }: MessageSeparatorProps): import("react/jsx-runtime").JSX.Element;
24
+ export default function MessageSeparator({ type, label, showAiSummary, onSummarize, summarizeLabel, summarizeAriaLabel, className, ...rest }: MessageSeparatorProps): import("react/jsx-runtime").JSX.Element;
21
25
  //# sourceMappingURL=MessageSeparator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageSeparator.d.ts","sourceRoot":"","sources":["../../../src/components/message-separator/MessageSeparator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAK5C,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;AAE3E,MAAM,WAAW,qBAAsB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC3E,wCAAwC;IACxC,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,IAAa,EACb,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,SAAc,EACd,GAAG,IAAI,EACR,EAAE,qBAAqB,2CA0DvB"}
1
+ {"version":3,"file":"MessageSeparator.d.ts","sourceRoot":"","sources":["../../../src/components/message-separator/MessageSeparator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvD,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;AAE3E,MAAM,WAAW,qBAAsB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC3E,wCAAwC;IACxC,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,8FAA8F;IAC9F,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yEAAyE;IACzE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,2FAA2F;IAC3F,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,EACvC,IAAa,EACb,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,cAA4B,EAC5B,kBAAqD,EACrD,SAAc,EACd,GAAG,IAAI,EACR,EAAE,qBAAqB,2CA0DvB"}
@@ -1,48 +1,50 @@
1
1
  import { jsx as a, jsxs as r, Fragment as i } from "react/jsx-runtime";
2
- import g from "../icon/Icon.js";
3
- import __u from "@mattermost/compass-icons/components/creation-outline.js";const u=__u&&__u.default?__u.default:__u;
2
+ import _ from "../icon/Icon.js";
3
+ import __h from "@mattermost/compass-icons/components/creation-outline.js";const h=__h&&__h.default?__h.default:__h;
4
4
  import e from "./MessageSeparator.module.scss.js";
5
- const _ = {
5
+ const N = {
6
6
  date: "Today",
7
7
  "new-messages": "New messages",
8
8
  "reply-count": "4 replies"
9
9
  };
10
- function w({
10
+ function b({
11
11
  type: s = "date",
12
12
  label: l,
13
13
  showAiSummary: n = !1,
14
14
  onSummarize: o,
15
- className: m = "",
16
- ...c
15
+ summarizeLabel: m = "Summarize",
16
+ summarizeAriaLabel: c = "Summarize new messages with AI",
17
+ className: d = "",
18
+ ...p
17
19
  }) {
18
- const d = l ?? _[s], p = [
20
+ const g = l ?? N[s], u = [
19
21
  e["message-separator"],
20
22
  e[`message-separator--${s === "new-messages" ? "new" : s === "reply-count" ? "reply" : "date"}`],
21
- m
23
+ d
22
24
  ].filter(Boolean).join(" "), t = /* @__PURE__ */ r("div", { className: e["message-separator__label"], children: [
23
- /* @__PURE__ */ a("span", { className: e["message-separator__text"], children: d }),
25
+ /* @__PURE__ */ a("span", { className: e["message-separator__text"], children: g }),
24
26
  s === "new-messages" && n && /* @__PURE__ */ r(
25
27
  "button",
26
28
  {
27
29
  type: "button",
28
30
  className: e["message-separator__summarize"],
29
31
  onClick: o,
30
- "aria-label": "Summarize new messages with AI",
32
+ "aria-label": c,
31
33
  children: [
32
34
  /* @__PURE__ */ a(
33
35
  "span",
34
36
  {
35
37
  className: e["message-separator__summarize-icon"],
36
38
  "aria-hidden": !0,
37
- children: /* @__PURE__ */ a(g, { size: "12", glyph: /* @__PURE__ */ a(u, {}) })
39
+ children: /* @__PURE__ */ a(_, { size: "12", glyph: /* @__PURE__ */ a(h, {}) })
38
40
  }
39
41
  ),
40
- "Summarize"
42
+ m
41
43
  ]
42
44
  }
43
45
  )
44
46
  ] });
45
- return /* @__PURE__ */ a("div", { className: p, role: "separator", ...c, children: s === "reply-count" ? /* @__PURE__ */ r(i, { children: [
47
+ return /* @__PURE__ */ a("div", { className: u, role: "separator", ...p, children: s === "reply-count" ? /* @__PURE__ */ r(i, { children: [
46
48
  /* @__PURE__ */ a(
47
49
  "div",
48
50
  {
@@ -60,6 +62,6 @@ function w({
60
62
  ] }) });
61
63
  }
62
64
  export {
63
- w as default
65
+ b as default
64
66
  };
65
67
  //# sourceMappingURL=MessageSeparator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessageSeparator.js","sources":["../../../src/components/message-separator/MessageSeparator.tsx"],"sourcesContent":["import type { HTMLAttributes } from 'react';\nimport Icon from '@/components/icon/Icon';\nimport CreationOutlineIcon from '@mattermost/compass-icons/components/creation-outline';\nimport styles from './MessageSeparator.module.scss';\n\nexport type MessageSeparatorType = 'date' | 'new-messages' | 'reply-count';\n\nexport interface MessageSeparatorProps extends HTMLAttributes<HTMLDivElement> {\n /** Separator variant. Default: Date. */\n type?: MessageSeparatorType;\n /** Label text. Defaults: 'Today' / 'New messages' / '4 replies'. */\n label?: string;\n /** Show AI summarize button (New Messages type only). Default: false. */\n showAiSummary?: boolean;\n /** Called when Summarize button is clicked. */\n onSummarize?: () => void;\n /** Optional CSS class name. */\n className?: string;\n}\n\nconst DEFAULT_LABELS: Record<MessageSeparatorType, string> = {\n date: 'Today',\n 'new-messages': 'New messages',\n 'reply-count': '4 replies',\n};\n\n/**\n * Message Separators sit between messages in the stream to group them — by day, by reply\n * count, or to mark the boundary between read and unread. They help readers orient\n * themselves when scrolling back through history or returning to a busy channel.\n */\nexport default function MessageSeparator({\n type = 'date',\n label,\n showAiSummary = false,\n onSummarize,\n className = '',\n ...rest\n}: MessageSeparatorProps) {\n const displayLabel = label ?? DEFAULT_LABELS[type];\n\n const rootClass = [\n styles['message-separator'],\n styles[\n `message-separator--${type === 'new-messages' ? 'new' : type === 'reply-count' ? 'reply' : 'date'}`\n ],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const labelBlock = (\n <div className={styles['message-separator__label']}>\n <span className={styles['message-separator__text']}>{displayLabel}</span>\n\n {type === 'new-messages' && showAiSummary && (\n <button\n type=\"button\"\n className={styles['message-separator__summarize']}\n onClick={onSummarize}\n aria-label=\"Summarize new messages with AI\"\n >\n <span\n className={styles['message-separator__summarize-icon']}\n aria-hidden\n >\n <Icon size=\"12\" glyph={<CreationOutlineIcon />} />\n </span>\n Summarize\n </button>\n )}\n </div>\n );\n\n return (\n <div className={rootClass} role=\"separator\" {...rest}>\n {type === 'reply-count' ? (\n <>\n <div\n className={styles['message-separator__reply-gutter']}\n aria-hidden\n >\n <div className={styles['message-separator__reply-line-start']} />\n </div>\n {labelBlock}\n <div className={styles['message-separator__line']} aria-hidden />\n </>\n ) : (\n <>\n <div className={styles['message-separator__line']} aria-hidden />\n {labelBlock}\n <div className={styles['message-separator__line']} aria-hidden />\n </>\n )}\n </div>\n );\n}\n"],"names":["DEFAULT_LABELS","MessageSeparator","type","label","showAiSummary","onSummarize","className","rest","displayLabel","rootClass","styles","labelBlock","jsxs","jsx","Icon","CreationOutlineIcon","Fragment"],"mappings":";;;;AAoBA,MAAMA,IAAuD;AAAA,EAC3D,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,eAAe;AACjB;AAOA,SAAwBC,EAAiB;AAAA,EACvC,MAAAC,IAAO;AAAA,EACP,OAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,aAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,GAA0B;AACxB,QAAMC,IAAeL,KAASH,EAAeE,CAAI,GAE3CO,IAAY;AAAA,IAChBC,EAAO,mBAAmB;AAAA,IAC1BA,EACE,sBAAsBR,MAAS,iBAAiB,QAAQA,MAAS,gBAAgB,UAAU,MAAM,EACnG;AAAA,IACAI;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAELK,IACJ,gBAAAC,EAAC,OAAA,EAAI,WAAWF,EAAO,0BAA0B,GAC/C,UAAA;AAAA,IAAA,gBAAAG,EAAC,QAAA,EAAK,WAAWH,EAAO,yBAAyB,GAAI,UAAAF,GAAa;AAAA,IAEjEN,MAAS,kBAAkBE,KAC1B,gBAAAQ;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAWF,EAAO,8BAA8B;AAAA,QAChD,SAASL;AAAA,QACT,cAAW;AAAA,QAEX,UAAA;AAAA,UAAA,gBAAAQ;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWH,EAAO,mCAAmC;AAAA,cACrD,eAAW;AAAA,cAEX,4BAACI,GAAA,EAAK,MAAK,MAAK,OAAO,gBAAAD,EAACE,KAAoB,EAAA,CAAI;AAAA,YAAA;AAAA,UAAA;AAAA,UAC3C;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAET,GAEJ;AAGF,SACE,gBAAAF,EAAC,OAAA,EAAI,WAAWJ,GAAW,MAAK,aAAa,GAAGF,GAC7C,UAAAL,MAAS,gBACR,gBAAAU,EAAAI,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAH;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWH,EAAO,iCAAiC;AAAA,QACnD,eAAW;AAAA,QAEX,UAAA,gBAAAG,EAAC,OAAA,EAAI,WAAWH,EAAO,qCAAqC,EAAA,CAAG;AAAA,MAAA;AAAA,IAAA;AAAA,IAEhEC;AAAA,sBACA,OAAA,EAAI,WAAWD,EAAO,yBAAyB,GAAG,eAAW,GAAA,CAAC;AAAA,EAAA,EAAA,CACjE,IAEA,gBAAAE,EAAAI,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAH,EAAC,SAAI,WAAWH,EAAO,yBAAyB,GAAG,eAAW,IAAC;AAAA,IAC9DC;AAAA,sBACA,OAAA,EAAI,WAAWD,EAAO,yBAAyB,GAAG,eAAW,GAAA,CAAC;AAAA,EAAA,EAAA,CACjE,EAAA,CAEJ;AAEJ;"}
1
+ {"version":3,"file":"MessageSeparator.js","sources":["../../../src/components/message-separator/MessageSeparator.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\nimport Icon from '@/components/icon/Icon';\nimport CreationOutlineIcon from '@mattermost/compass-icons/components/creation-outline';\nimport styles from './MessageSeparator.module.scss';\n\nexport type MessageSeparatorType = 'date' | 'new-messages' | 'reply-count';\n\nexport interface MessageSeparatorProps extends HTMLAttributes<HTMLDivElement> {\n /** Separator variant. Default: Date. */\n type?: MessageSeparatorType;\n /** Label text. Defaults: 'Today' / 'New messages' / '4 replies'. Accepts translated nodes. */\n label?: ReactNode;\n /** Show AI summarize button (New Messages type only). Default: false. */\n showAiSummary?: boolean;\n /** Called when Summarize button is clicked. */\n onSummarize?: () => void;\n /** Visible Summarize button text. Default: \"Summarize\". */\n summarizeLabel?: ReactNode;\n /** Accessible name for the Summarize button. Default: \"Summarize new messages with AI\". */\n summarizeAriaLabel?: string;\n /** Optional CSS class name. */\n className?: string;\n}\n\nconst DEFAULT_LABELS: Record<MessageSeparatorType, string> = {\n date: 'Today',\n 'new-messages': 'New messages',\n 'reply-count': '4 replies',\n};\n\n/**\n * Message Separators sit between messages in the stream to group them — by day, by reply\n * count, or to mark the boundary between read and unread. They help readers orient\n * themselves when scrolling back through history or returning to a busy channel.\n */\nexport default function MessageSeparator({\n type = 'date',\n label,\n showAiSummary = false,\n onSummarize,\n summarizeLabel = 'Summarize',\n summarizeAriaLabel = 'Summarize new messages with AI',\n className = '',\n ...rest\n}: MessageSeparatorProps) {\n const displayLabel = label ?? DEFAULT_LABELS[type];\n\n const rootClass = [\n styles['message-separator'],\n styles[\n `message-separator--${type === 'new-messages' ? 'new' : type === 'reply-count' ? 'reply' : 'date'}`\n ],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const labelBlock = (\n <div className={styles['message-separator__label']}>\n <span className={styles['message-separator__text']}>{displayLabel}</span>\n\n {type === 'new-messages' && showAiSummary && (\n <button\n type=\"button\"\n className={styles['message-separator__summarize']}\n onClick={onSummarize}\n aria-label={summarizeAriaLabel}\n >\n <span\n className={styles['message-separator__summarize-icon']}\n aria-hidden\n >\n <Icon size=\"12\" glyph={<CreationOutlineIcon />} />\n </span>\n {summarizeLabel}\n </button>\n )}\n </div>\n );\n\n return (\n <div className={rootClass} role=\"separator\" {...rest}>\n {type === 'reply-count' ? (\n <>\n <div\n className={styles['message-separator__reply-gutter']}\n aria-hidden\n >\n <div className={styles['message-separator__reply-line-start']} />\n </div>\n {labelBlock}\n <div className={styles['message-separator__line']} aria-hidden />\n </>\n ) : (\n <>\n <div className={styles['message-separator__line']} aria-hidden />\n {labelBlock}\n <div className={styles['message-separator__line']} aria-hidden />\n </>\n )}\n </div>\n );\n}\n"],"names":["DEFAULT_LABELS","MessageSeparator","type","label","showAiSummary","onSummarize","summarizeLabel","summarizeAriaLabel","className","rest","displayLabel","rootClass","styles","labelBlock","jsxs","jsx","Icon","CreationOutlineIcon","Fragment"],"mappings":";;;;AAwBA,MAAMA,IAAuD;AAAA,EAC3D,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,eAAe;AACjB;AAOA,SAAwBC,EAAiB;AAAA,EACvC,MAAAC,IAAO;AAAA,EACP,OAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,aAAAC;AAAA,EACA,gBAAAC,IAAiB;AAAA,EACjB,oBAAAC,IAAqB;AAAA,EACrB,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,GAA0B;AACxB,QAAMC,IAAeP,KAASH,EAAeE,CAAI,GAE3CS,IAAY;AAAA,IAChBC,EAAO,mBAAmB;AAAA,IAC1BA,EACE,sBAAsBV,MAAS,iBAAiB,QAAQA,MAAS,gBAAgB,UAAU,MAAM,EACnG;AAAA,IACAM;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAELK,IACJ,gBAAAC,EAAC,OAAA,EAAI,WAAWF,EAAO,0BAA0B,GAC/C,UAAA;AAAA,IAAA,gBAAAG,EAAC,QAAA,EAAK,WAAWH,EAAO,yBAAyB,GAAI,UAAAF,GAAa;AAAA,IAEjER,MAAS,kBAAkBE,KAC1B,gBAAAU;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAWF,EAAO,8BAA8B;AAAA,QAChD,SAASP;AAAA,QACT,cAAYE;AAAA,QAEZ,UAAA;AAAA,UAAA,gBAAAQ;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWH,EAAO,mCAAmC;AAAA,cACrD,eAAW;AAAA,cAEX,4BAACI,GAAA,EAAK,MAAK,MAAK,OAAO,gBAAAD,EAACE,KAAoB,EAAA,CAAI;AAAA,YAAA;AAAA,UAAA;AAAA,UAEjDX;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GAEJ;AAGF,SACE,gBAAAS,EAAC,OAAA,EAAI,WAAWJ,GAAW,MAAK,aAAa,GAAGF,GAC7C,UAAAP,MAAS,gBACR,gBAAAY,EAAAI,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAH;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWH,EAAO,iCAAiC;AAAA,QACnD,eAAW;AAAA,QAEX,UAAA,gBAAAG,EAAC,OAAA,EAAI,WAAWH,EAAO,qCAAqC,EAAA,CAAG;AAAA,MAAA;AAAA,IAAA;AAAA,IAEhEC;AAAA,sBACA,OAAA,EAAI,WAAWD,EAAO,yBAAyB,GAAG,eAAW,GAAA,CAAC;AAAA,EAAA,EAAA,CACjE,IAEA,gBAAAE,EAAAI,GAAA,EACE,UAAA;AAAA,IAAA,gBAAAH,EAAC,SAAI,WAAWH,EAAO,yBAAyB,GAAG,eAAW,IAAC;AAAA,IAC9DC;AAAA,sBACA,OAAA,EAAI,WAAWD,EAAO,yBAAyB,GAAG,eAAW,GAAA,CAAC;AAAA,EAAA,EAAA,CACjE,EAAA,CAEJ;AAEJ;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),S=require("react"),p=require("../scrollbar/Scrollbar.cjs"),w=require("../modal-footer/ModalFooter.cjs"),z=require("../modal-header/ModalHeader.cjs"),B=require("../../utils/string.cjs"),l=require("./Modal.module.scss.cjs");function C({className:t="",style:i,size:u="small",title:c,subtitle:m,subtitlePlacement:b="below",hideTitle:f=!1,showBackButton:_=!1,onBack:j,onClose:q,headerDivider:v=!0,headerAction:x,bodyPadding:s="default",scrollable:y=!0,children:M,footer:o,footerLeading:r,footerType:a="2-actions",footerDivider:h=!0}){const d=S.useId(),g=l.default[`modal--size-${B.toKebab(u)}`],I=[l.default["modal__body-inner"],s==="menu"&&l.default["modal__body-inner--menu"],s==="none"&&l.default["modal__body-inner--none"]].filter(Boolean).join(" "),n=e.jsx("div",{className:I,children:M}),N=o!=null||r!=null||a==="spacer-small"||a==="spacer-large";return e.jsxs("div",{className:[l.default.modal,g,t].filter(Boolean).join(" "),style:i,role:"dialog","aria-modal":"true","aria-labelledby":d,children:[e.jsx(z.default,{title:c,titleId:d,subtitle:m,subtitlePlacement:b,hideTitle:f,showBackButton:_,onBack:j,onClose:q,divider:v,headerAction:x}),e.jsx("div",{className:l.default.modal__body,children:y?e.jsx(p.default,{children:n}):n}),N&&e.jsx(w.default,{type:a,divider:h,leading:r,children:o})]})}exports.default=C;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),F=require("react"),R=require("../scrollbar/Scrollbar.cjs"),H=require("../modal-footer/ModalFooter.cjs"),K=require("../modal-header/ModalHeader.cjs"),O=require("../../utils/string.cjs"),l=require("./Modal.module.scss.cjs");function $({className:t="",style:i,size:u="small",title:c,subtitle:m,subtitlePlacement:b="below",hideTitle:f=!1,showBackButton:_=!1,onBack:j,backLabel:q,backButtonProps:v,onClose:x,closeLabel:y,closeButtonProps:M,headerDivider:h=!0,headerAction:g,headerSlot:I,bodyPadding:s="default",scrollable:N=!0,children:S,footer:o,footerLeading:r,footerType:a="2-actions",footerDivider:p=!0,...w}){const d=F.useId(),z=l.default[`modal--size-${O.toKebab(u)}`],B=[l.default["modal__body-inner"],s==="menu"&&l.default["modal__body-inner--menu"],s==="none"&&l.default["modal__body-inner--none"]].filter(Boolean).join(" "),n=e.jsx("div",{className:B,children:S}),C=o!=null||r!=null||a==="spacer-small"||a==="spacer-large";return e.jsxs("div",{...w,className:[l.default.modal,z,t].filter(Boolean).join(" "),style:i,role:"dialog","aria-modal":"true","aria-labelledby":d,children:[e.jsx(K.default,{title:c,titleId:d,subtitle:m,subtitlePlacement:b,hideTitle:f,showBackButton:_,onBack:j,backLabel:q,backButtonProps:v,onClose:x,closeLabel:y,closeButtonProps:M,divider:h,headerAction:g,headerSlot:I}),e.jsx("div",{className:l.default.modal__body,children:N?e.jsx(R.default,{children:n}):n}),C&&e.jsx(H.default,{type:a,divider:p,leading:r,children:o})]})}exports.default=$;
2
2
  //# sourceMappingURL=Modal.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.cjs","sources":["../../../src/components/modal/Modal.tsx"],"sourcesContent":["import type { CSSProperties, ReactNode } from 'react';\nimport { useId } from 'react';\nimport Scrollbar from '@/components/scrollbar/Scrollbar';\nimport ModalFooter from '@/components/modal-footer/ModalFooter';\nimport type { ModalFooterType } from '@/components/modal-footer/ModalFooter';\nimport ModalHeader from '@/components/modal-header/ModalHeader';\nimport type { ModalSubtitlePlacement } from '@/components/modal-header/ModalHeader';\nimport { toKebab } from '@/utils/string';\nimport styles from './Modal.module.scss';\n\nexport type ModalSize = 'small' | 'medium' | 'large';\n\n/**\n * Body inset. `menu` is for MenuItem lists — 8px vertical / 16px horizontal so\n * row labels align with the 32px header/footer margins. `none` removes inset\n * for host-owned full-bleed layouts (e.g. settings sidebars).\n */\nexport type ModalBodyPadding = 'default' | 'menu' | 'none';\n\nexport type { ModalFooterType, ModalSubtitlePlacement };\n\nexport interface ModalProps {\n /** Extra class on the dialog root (size + chrome classes still apply). */\n className?: string;\n /** Inline style on the dialog root — prefer `className` for layout overrides. */\n style?: CSSProperties;\n /** Width variant. Figma: Size — Small 600px, Medium 704px, Large 832px. */\n size?: ModalSize;\n /** Modal heading text. Required for a11y; use `hideTitle` for close-only chrome. */\n title: ReactNode;\n /** Optional secondary line — placement via `subtitlePlacement`. */\n subtitle?: ReactNode;\n /**\n * Where the subtitle sits. Figma Modal Header: Below | Beside.\n * Default: `below`.\n */\n subtitlePlacement?: ModalSubtitlePlacement;\n /** Visually hide the title (close-only header); title remains for `aria-labelledby`. */\n hideTitle?: boolean;\n /** When true, shows a back-arrow button before the title. */\n showBackButton?: boolean;\n /** Called when the back button is clicked. */\n onBack?: () => void;\n /** Called when the × close button is clicked. */\n onClose?: () => void;\n /** Show divider between header and body. Default: true. */\n headerDivider?: boolean;\n /** Optional control before close (Button, search field, …). */\n headerAction?: ReactNode;\n /**\n * Body inset. Default is 32px horizontal / 28px vertical. Use `menu` for\n * MenuItem lists. Use `none` when the host owns padding.\n */\n bodyPadding?: ModalBodyPadding;\n /**\n * When true (default), wraps body content in Scrollbar. Set false when the\n * host manages scroll inside panes.\n */\n scrollable?: boolean;\n /** Body content. */\n children: ReactNode;\n /** Footer slot — typically Buttons. Wrapped in `ModalFooter`. */\n footer?: ReactNode;\n /** Left footer slot (pagination status, PaginationDots, …). */\n footerLeading?: ReactNode;\n /** Footer layout. Figma Modal Footer Type. Default: `2-actions`. */\n footerType?: ModalFooterType;\n /** Show divider between body and footer. Default: true. */\n footerDivider?: boolean;\n}\n\n/**\n * Modal dialog shell — composes ModalHeader, scrollable body, and ModalFooter.\n * Host owns portal, overlay, focus trap, and open/close.\n */\nexport default function Modal({\n className = '',\n style,\n size = 'small',\n title,\n subtitle,\n subtitlePlacement = 'below',\n hideTitle = false,\n showBackButton = false,\n onBack,\n onClose,\n headerDivider = true,\n headerAction,\n bodyPadding = 'default',\n scrollable = true,\n children,\n footer,\n footerLeading,\n footerType = '2-actions',\n footerDivider = true,\n}: ModalProps) {\n const titleId = useId();\n const sizeClass = styles[`modal--size-${toKebab(size)}`];\n const bodyInnerClass = [\n styles['modal__body-inner'],\n bodyPadding === 'menu' && styles['modal__body-inner--menu'],\n bodyPadding === 'none' && styles['modal__body-inner--none'],\n ]\n .filter(Boolean)\n .join(' ');\n\n const bodyInner = <div className={bodyInnerClass}>{children}</div>;\n const showFooter =\n footer != null ||\n footerLeading != null ||\n footerType === 'spacer-small' ||\n footerType === 'spacer-large';\n\n return (\n <div\n className={[styles.modal, sizeClass, className].filter(Boolean).join(' ')}\n style={style}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n >\n <ModalHeader\n title={title}\n titleId={titleId}\n subtitle={subtitle}\n subtitlePlacement={subtitlePlacement}\n hideTitle={hideTitle}\n showBackButton={showBackButton}\n onBack={onBack}\n onClose={onClose}\n divider={headerDivider}\n headerAction={headerAction}\n />\n\n <div className={styles['modal__body']}>\n {scrollable ? <Scrollbar>{bodyInner}</Scrollbar> : bodyInner}\n </div>\n\n {showFooter && (\n <ModalFooter\n type={footerType}\n divider={footerDivider}\n leading={footerLeading}\n >\n {footer}\n </ModalFooter>\n )}\n </div>\n );\n}\n"],"names":["Modal","className","style","size","title","subtitle","subtitlePlacement","hideTitle","showBackButton","onBack","onClose","headerDivider","headerAction","bodyPadding","scrollable","children","footer","footerLeading","footerType","footerDivider","titleId","useId","sizeClass","styles","toKebab","bodyInnerClass","bodyInner","jsx","showFooter","jsxs","ModalHeader","Scrollbar","ModalFooter"],"mappings":"6WA2EA,SAAwBA,EAAM,CAC5B,UAAAC,EAAY,GACZ,MAAAC,EACA,KAAAC,EAAO,QACP,MAAAC,EACA,SAAAC,EACA,kBAAAC,EAAoB,QACpB,UAAAC,EAAY,GACZ,eAAAC,EAAiB,GACjB,OAAAC,EACA,QAAAC,EACA,cAAAC,EAAgB,GAChB,aAAAC,EACA,YAAAC,EAAc,UACd,WAAAC,EAAa,GACb,SAAAC,EACA,OAAAC,EACA,cAAAC,EACA,WAAAC,EAAa,YACb,cAAAC,EAAgB,EAClB,EAAe,CACb,MAAMC,EAAUC,EAAAA,MAAA,EACVC,EAAYC,EAAAA,QAAO,eAAeC,EAAAA,QAAQrB,CAAI,CAAC,EAAE,EACjDsB,EAAiB,CACrBF,EAAAA,QAAO,mBAAmB,EAC1BV,IAAgB,QAAUU,EAAAA,QAAO,yBAAyB,EAC1DV,IAAgB,QAAUU,EAAAA,QAAO,yBAAyB,CAAA,EAEzD,OAAO,OAAO,EACd,KAAK,GAAG,EAELG,EAAYC,EAAAA,IAAC,MAAA,CAAI,UAAWF,EAAiB,SAAAV,EAAS,EACtDa,EACJZ,GAAU,MACVC,GAAiB,MACjBC,IAAe,gBACfA,IAAe,eAEjB,OACEW,EAAAA,KAAC,MAAA,CACC,UAAW,CAACN,EAAAA,QAAO,MAAOD,EAAWrB,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EACxE,MAAAC,EACA,KAAK,SACL,aAAW,OACX,kBAAiBkB,EAEjB,SAAA,CAAAO,EAAAA,IAACG,EAAAA,QAAA,CACC,MAAA1B,EACA,QAAAgB,EACA,SAAAf,EACA,kBAAAC,EACA,UAAAC,EACA,eAAAC,EACA,OAAAC,EACA,QAAAC,EACA,QAASC,EACT,aAAAC,CAAA,CAAA,EAGFe,EAAAA,IAAC,MAAA,CAAI,UAAWJ,EAAAA,QAAO,YACpB,SAAAT,EAAaa,EAAAA,IAACI,EAAAA,QAAA,CAAW,SAAAL,CAAA,CAAU,EAAeA,EACrD,EAECE,GACCD,EAAAA,IAACK,EAAAA,QAAA,CACC,KAAMd,EACN,QAASC,EACT,QAASF,EAER,SAAAD,CAAA,CAAA,CACH,CAAA,CAAA,CAIR"}
1
+ {"version":3,"file":"Modal.cjs","sources":["../../../src/components/modal/Modal.tsx"],"sourcesContent":["import type { CSSProperties, HTMLAttributes, ReactNode } from 'react';\nimport { useId } from 'react';\nimport Scrollbar from '@/components/scrollbar/Scrollbar';\nimport ModalFooter from '@/components/modal-footer/ModalFooter';\nimport type { ModalFooterType } from '@/components/modal-footer/ModalFooter';\nimport ModalHeader from '@/components/modal-header/ModalHeader';\nimport type { ModalSubtitlePlacement } from '@/components/modal-header/ModalHeader';\nimport type { BuiltInButtonProps } from '@/utils/props';\nimport { toKebab } from '@/utils/string';\nimport styles from './Modal.module.scss';\n\nexport type ModalSize = 'small' | 'medium' | 'large';\n\n/**\n * Body inset. `menu` is for MenuItem lists — 8px vertical / 16px horizontal so\n * row labels align with the 32px header/footer margins. `none` removes inset\n * for host-owned full-bleed layouts (e.g. settings sidebars).\n */\nexport type ModalBodyPadding = 'default' | 'menu' | 'none';\n\nexport type { ModalFooterType, ModalSubtitlePlacement };\n\nexport interface ModalProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'title' | 'children' | 'style'\n> {\n /** Extra class on the dialog root (size + chrome classes still apply). */\n className?: string;\n /** Inline style on the dialog root — prefer `className` for layout overrides. */\n style?: CSSProperties;\n /** Width variant. Figma: Size — Small 600px, Medium 704px, Large 832px. */\n size?: ModalSize;\n /** Modal heading text. Required for a11y; use `hideTitle` for close-only chrome. */\n title: ReactNode;\n /** Optional secondary line — placement via `subtitlePlacement`. */\n subtitle?: ReactNode;\n /**\n * Where the subtitle sits. Figma Modal Header: Below | Beside.\n * Default: `below`.\n */\n subtitlePlacement?: ModalSubtitlePlacement;\n /** Visually hide the title (close-only header); title remains for `aria-labelledby`. */\n hideTitle?: boolean;\n /** When true, shows a back-arrow button before the title. */\n showBackButton?: boolean;\n /** Called when the back button is clicked. */\n onBack?: () => void;\n /** Accessible name for the back button. Default: \"Go back\". */\n backLabel?: string;\n /** Extra attributes for the back button (e.g. `data-testid`). */\n backButtonProps?: BuiltInButtonProps;\n /** Called when the × close button is clicked. */\n onClose?: () => void;\n /** Accessible name for the close button. Default: \"Close\". */\n closeLabel?: string;\n /** Extra attributes for the close button (e.g. `data-testid`). */\n closeButtonProps?: BuiltInButtonProps;\n /** Show divider between header and body. Default: true. */\n headerDivider?: boolean;\n /** Optional control before close (Button, search field, …). */\n headerAction?: ReactNode;\n /**\n * Full-width slot rendered below the title row and above the header divider.\n * Accepts any ReactNode — SearchInput, Tabs, a custom toolbar, etc.\n */\n headerSlot?: ReactNode;\n /**\n * Body inset. Default is 32px horizontal / 28px vertical. Use `menu` for\n * MenuItem lists. Use `none` when the host owns padding.\n */\n bodyPadding?: ModalBodyPadding;\n /**\n * When true (default), wraps body content in Scrollbar. Set false when the\n * host manages scroll inside panes.\n */\n scrollable?: boolean;\n /** Body content. */\n children: ReactNode;\n /** Footer slot — typically Buttons. Wrapped in `ModalFooter`. */\n footer?: ReactNode;\n /** Left footer slot (pagination status, PaginationDots, …). */\n footerLeading?: ReactNode;\n /** Footer layout. Figma Modal Footer Type. Default: `2-actions`. */\n footerType?: ModalFooterType;\n /** Show divider between body and footer. Default: true. */\n footerDivider?: boolean;\n}\n\n/**\n * Modal dialog shell — composes ModalHeader, scrollable body, and ModalFooter.\n * Host owns portal, overlay, focus trap, and open/close.\n */\nexport default function Modal({\n className = '',\n style,\n size = 'small',\n title,\n subtitle,\n subtitlePlacement = 'below',\n hideTitle = false,\n showBackButton = false,\n onBack,\n backLabel,\n backButtonProps,\n onClose,\n closeLabel,\n closeButtonProps,\n headerDivider = true,\n headerAction,\n headerSlot,\n bodyPadding = 'default',\n scrollable = true,\n children,\n footer,\n footerLeading,\n footerType = '2-actions',\n footerDivider = true,\n ...rest\n}: ModalProps) {\n const titleId = useId();\n const sizeClass = styles[`modal--size-${toKebab(size)}`];\n const bodyInnerClass = [\n styles['modal__body-inner'],\n bodyPadding === 'menu' && styles['modal__body-inner--menu'],\n bodyPadding === 'none' && styles['modal__body-inner--none'],\n ]\n .filter(Boolean)\n .join(' ');\n\n const bodyInner = <div className={bodyInnerClass}>{children}</div>;\n const showFooter =\n footer != null ||\n footerLeading != null ||\n footerType === 'spacer-small' ||\n footerType === 'spacer-large';\n\n return (\n <div\n {...rest}\n className={[styles.modal, sizeClass, className].filter(Boolean).join(' ')}\n style={style}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n >\n <ModalHeader\n title={title}\n titleId={titleId}\n subtitle={subtitle}\n subtitlePlacement={subtitlePlacement}\n hideTitle={hideTitle}\n showBackButton={showBackButton}\n onBack={onBack}\n backLabel={backLabel}\n backButtonProps={backButtonProps}\n onClose={onClose}\n closeLabel={closeLabel}\n closeButtonProps={closeButtonProps}\n divider={headerDivider}\n headerAction={headerAction}\n headerSlot={headerSlot}\n />\n\n <div className={styles['modal__body']}>\n {scrollable ? <Scrollbar>{bodyInner}</Scrollbar> : bodyInner}\n </div>\n\n {showFooter && (\n <ModalFooter\n type={footerType}\n divider={footerDivider}\n leading={footerLeading}\n >\n {footer}\n </ModalFooter>\n )}\n </div>\n );\n}\n"],"names":["Modal","className","style","size","title","subtitle","subtitlePlacement","hideTitle","showBackButton","onBack","backLabel","backButtonProps","onClose","closeLabel","closeButtonProps","headerDivider","headerAction","headerSlot","bodyPadding","scrollable","children","footer","footerLeading","footerType","footerDivider","rest","titleId","useId","sizeClass","styles","toKebab","bodyInnerClass","bodyInner","jsx","showFooter","jsxs","ModalHeader","Scrollbar","ModalFooter"],"mappings":"6WA4FA,SAAwBA,EAAM,CAC5B,UAAAC,EAAY,GACZ,MAAAC,EACA,KAAAC,EAAO,QACP,MAAAC,EACA,SAAAC,EACA,kBAAAC,EAAoB,QACpB,UAAAC,EAAY,GACZ,eAAAC,EAAiB,GACjB,OAAAC,EACA,UAAAC,EACA,gBAAAC,EACA,QAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,cAAAC,EAAgB,GAChB,aAAAC,EACA,WAAAC,EACA,YAAAC,EAAc,UACd,WAAAC,EAAa,GACb,SAAAC,EACA,OAAAC,EACA,cAAAC,EACA,WAAAC,EAAa,YACb,cAAAC,EAAgB,GAChB,GAAGC,CACL,EAAe,CACb,MAAMC,EAAUC,EAAAA,MAAA,EACVC,EAAYC,EAAAA,QAAO,eAAeC,EAAAA,QAAQ3B,CAAI,CAAC,EAAE,EACjD4B,EAAiB,CACrBF,EAAAA,QAAO,mBAAmB,EAC1BX,IAAgB,QAAUW,EAAAA,QAAO,yBAAyB,EAC1DX,IAAgB,QAAUW,EAAAA,QAAO,yBAAyB,CAAA,EAEzD,OAAO,OAAO,EACd,KAAK,GAAG,EAELG,EAAYC,EAAAA,IAAC,MAAA,CAAI,UAAWF,EAAiB,SAAAX,EAAS,EACtDc,EACJb,GAAU,MACVC,GAAiB,MACjBC,IAAe,gBACfA,IAAe,eAEjB,OACEY,EAAAA,KAAC,MAAA,CACE,GAAGV,EACJ,UAAW,CAACI,EAAAA,QAAO,MAAOD,EAAW3B,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EACxE,MAAAC,EACA,KAAK,SACL,aAAW,OACX,kBAAiBwB,EAEjB,SAAA,CAAAO,EAAAA,IAACG,EAAAA,QAAA,CACC,MAAAhC,EACA,QAAAsB,EACA,SAAArB,EACA,kBAAAC,EACA,UAAAC,EACA,eAAAC,EACA,OAAAC,EACA,UAAAC,EACA,gBAAAC,EACA,QAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,QAASC,EACT,aAAAC,EACA,WAAAC,CAAA,CAAA,EAGFgB,EAAAA,IAAC,MAAA,CAAI,UAAWJ,EAAAA,QAAO,YACpB,SAAAV,EAAac,EAAAA,IAACI,EAAAA,QAAA,CAAW,SAAAL,CAAA,CAAU,EAAeA,EACrD,EAECE,GACCD,EAAAA,IAACK,EAAAA,QAAA,CACC,KAAMf,EACN,QAASC,EACT,QAASF,EAER,SAAAD,CAAA,CAAA,CACH,CAAA,CAAA,CAIR"}