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

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 (458) hide show
  1. package/README.md +5 -4
  2. package/dist/components/action-button/ActionButton.cjs +1 -1
  3. package/dist/components/action-button/ActionButton.cjs.map +1 -1
  4. package/dist/components/action-button/ActionButton.d.ts +2 -1
  5. package/dist/components/action-button/ActionButton.d.ts.map +1 -1
  6. package/dist/components/action-button/ActionButton.js +36 -31
  7. package/dist/components/action-button/ActionButton.js.map +1 -1
  8. package/dist/components/admin-console-header/AdminConsoleHeader.cjs.map +1 -1
  9. package/dist/components/admin-console-header/AdminConsoleHeader.d.ts.map +1 -1
  10. package/dist/components/admin-console-header/AdminConsoleHeader.js.map +1 -1
  11. package/dist/components/admin-panel/AdminPanel.cjs.map +1 -1
  12. package/dist/components/admin-panel/AdminPanel.d.ts.map +1 -1
  13. package/dist/components/admin-panel/AdminPanel.js.map +1 -1
  14. package/dist/components/admin-panel/index.d.ts +1 -1
  15. package/dist/components/admin-panel/index.d.ts.map +1 -1
  16. package/dist/components/admin-panel-footer/AdminPanelFooter.cjs.map +1 -1
  17. package/dist/components/admin-panel-footer/AdminPanelFooter.d.ts.map +1 -1
  18. package/dist/components/admin-panel-footer/AdminPanelFooter.js +1 -8
  19. package/dist/components/admin-panel-footer/AdminPanelFooter.js.map +1 -1
  20. package/dist/components/admin-panel-header/AdminPanelHeader.cjs.map +1 -1
  21. package/dist/components/admin-panel-header/AdminPanelHeader.d.ts.map +1 -1
  22. package/dist/components/admin-panel-header/AdminPanelHeader.js +2 -16
  23. package/dist/components/admin-panel-header/AdminPanelHeader.js.map +1 -1
  24. package/dist/components/attachment-card/AttachmentCard.cjs.map +1 -1
  25. package/dist/components/attachment-card/AttachmentCard.d.ts.map +1 -1
  26. package/dist/components/attachment-card/AttachmentCard.js.map +1 -1
  27. package/dist/components/button/Button.cjs +1 -1
  28. package/dist/components/button/Button.cjs.map +1 -1
  29. package/dist/components/button/Button.d.ts +4 -3
  30. package/dist/components/button/Button.d.ts.map +1 -1
  31. package/dist/components/button/Button.js +39 -23
  32. package/dist/components/button/Button.js.map +1 -1
  33. package/dist/components/card-button/CardButton.cjs +1 -1
  34. package/dist/components/card-button/CardButton.cjs.map +1 -1
  35. package/dist/components/card-button/CardButton.d.ts +2 -1
  36. package/dist/components/card-button/CardButton.d.ts.map +1 -1
  37. package/dist/components/card-button/CardButton.js +47 -42
  38. package/dist/components/card-button/CardButton.js.map +1 -1
  39. package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.cjs.map +1 -1
  40. package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.js.map +1 -1
  41. package/dist/components/checkbox/Checkbox.cjs +1 -1
  42. package/dist/components/checkbox/Checkbox.cjs.map +1 -1
  43. package/dist/components/checkbox/Checkbox.d.ts +2 -1
  44. package/dist/components/checkbox/Checkbox.d.ts.map +1 -1
  45. package/dist/components/checkbox/Checkbox.js +39 -37
  46. package/dist/components/checkbox/Checkbox.js.map +1 -1
  47. package/dist/components/chip/Chip.cjs.map +1 -1
  48. package/dist/components/chip/Chip.d.ts.map +1 -1
  49. package/dist/components/chip/Chip.js.map +1 -1
  50. package/dist/components/chip/ChipGroup.cjs.map +1 -1
  51. package/dist/components/chip/ChipGroup.d.ts.map +1 -1
  52. package/dist/components/chip/ChipGroup.js.map +1 -1
  53. package/dist/components/combobox/Combobox.cjs +1 -1
  54. package/dist/components/combobox/Combobox.cjs.map +1 -1
  55. package/dist/components/combobox/Combobox.css +1 -1
  56. package/dist/components/combobox/Combobox.d.ts +30 -1
  57. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  58. package/dist/components/combobox/Combobox.js +381 -276
  59. package/dist/components/combobox/Combobox.js.map +1 -1
  60. package/dist/components/combobox/Combobox.module.scss.cjs +1 -1
  61. package/dist/components/combobox/Combobox.module.scss.js +24 -22
  62. package/dist/components/combobox/Combobox.module.scss.js.map +1 -1
  63. package/dist/components/combobox/index.d.ts +1 -1
  64. package/dist/components/combobox/index.d.ts.map +1 -1
  65. package/dist/components/date-range-picker/DateRangePicker.cjs.map +1 -1
  66. package/dist/components/date-range-picker/DateRangePicker.css +1 -1
  67. package/dist/components/date-range-picker/DateRangePicker.d.ts.map +1 -1
  68. package/dist/components/date-range-picker/DateRangePicker.js +27 -10
  69. package/dist/components/date-range-picker/DateRangePicker.js.map +1 -1
  70. package/dist/components/date-range-picker/DateRangePicker.module.scss.cjs +1 -1
  71. package/dist/components/date-range-picker/DateRangePicker.module.scss.js +26 -26
  72. package/dist/components/emoji/Emoji.cjs.map +1 -1
  73. package/dist/components/emoji/Emoji.d.ts.map +1 -1
  74. package/dist/components/emoji/Emoji.js +1 -5
  75. package/dist/components/emoji/Emoji.js.map +1 -1
  76. package/dist/components/emoji-button/EmojiButton.cjs.map +1 -1
  77. package/dist/components/emoji-button/EmojiButton.d.ts.map +1 -1
  78. package/dist/components/emoji-button/EmojiButton.js +10 -1
  79. package/dist/components/emoji-button/EmojiButton.js.map +1 -1
  80. package/dist/components/emoji-popover/EmojiPopover.cjs.map +1 -1
  81. package/dist/components/emoji-popover/EmojiPopover.d.ts.map +1 -1
  82. package/dist/components/emoji-popover/EmojiPopover.js +34 -17
  83. package/dist/components/emoji-popover/EmojiPopover.js.map +1 -1
  84. package/dist/components/empty-state/EmptyState.cjs.map +1 -1
  85. package/dist/components/empty-state/EmptyState.d.ts +2 -2
  86. package/dist/components/empty-state/EmptyState.d.ts.map +1 -1
  87. package/dist/components/empty-state/EmptyState.js.map +1 -1
  88. package/dist/components/error-message/ErrorMessage.cjs.map +1 -1
  89. package/dist/components/error-message/ErrorMessage.d.ts +3 -2
  90. package/dist/components/error-message/ErrorMessage.d.ts.map +1 -1
  91. package/dist/components/error-message/ErrorMessage.js.map +1 -1
  92. package/dist/components/icon/Icon.js +2 -2
  93. package/dist/components/icon/index.d.ts +1 -1
  94. package/dist/components/icon/index.d.ts.map +1 -1
  95. package/dist/components/icon-button/IconButton.cjs +1 -1
  96. package/dist/components/icon-button/IconButton.cjs.map +1 -1
  97. package/dist/components/icon-button/IconButton.d.ts +2 -1
  98. package/dist/components/icon-button/IconButton.d.ts.map +1 -1
  99. package/dist/components/icon-button/IconButton.js +61 -57
  100. package/dist/components/icon-button/IconButton.js.map +1 -1
  101. package/dist/components/image-preview/ImagePreview.cjs.map +1 -1
  102. package/dist/components/image-preview/ImagePreview.d.ts.map +1 -1
  103. package/dist/components/image-preview/ImagePreview.js +8 -1
  104. package/dist/components/image-preview/ImagePreview.js.map +1 -1
  105. package/dist/components/link-preview/LinkPreview.cjs.map +1 -1
  106. package/dist/components/link-preview/LinkPreview.d.ts.map +1 -1
  107. package/dist/components/link-preview/LinkPreview.js +1 -7
  108. package/dist/components/link-preview/LinkPreview.js.map +1 -1
  109. package/dist/components/link-preview/index.d.ts +1 -1
  110. package/dist/components/link-preview/index.d.ts.map +1 -1
  111. package/dist/components/menu-item/MenuItem.cjs +1 -1
  112. package/dist/components/menu-item/MenuItem.cjs.map +1 -1
  113. package/dist/components/menu-item/MenuItem.d.ts +4 -3
  114. package/dist/components/menu-item/MenuItem.d.ts.map +1 -1
  115. package/dist/components/menu-item/MenuItem.js +55 -43
  116. package/dist/components/menu-item/MenuItem.js.map +1 -1
  117. package/dist/components/message-actions/index.d.ts +1 -1
  118. package/dist/components/message-actions/index.d.ts.map +1 -1
  119. package/dist/components/message-separator/MessageSeparator.cjs.map +1 -1
  120. package/dist/components/message-separator/MessageSeparator.css +1 -1
  121. package/dist/components/message-separator/MessageSeparator.d.ts.map +1 -1
  122. package/dist/components/message-separator/MessageSeparator.js +8 -1
  123. package/dist/components/message-separator/MessageSeparator.js.map +1 -1
  124. package/dist/components/message-separator/MessageSeparator.module.scss.cjs +1 -1
  125. package/dist/components/message-separator/MessageSeparator.module.scss.js +11 -11
  126. package/dist/components/new-message-banner/NewMessageBanner.cjs.map +1 -1
  127. package/dist/components/new-message-banner/NewMessageBanner.d.ts.map +1 -1
  128. package/dist/components/new-message-banner/NewMessageBanner.js +1 -5
  129. package/dist/components/new-message-banner/NewMessageBanner.js.map +1 -1
  130. package/dist/components/permalink-preview/PermalinkPreview.cjs +1 -1
  131. package/dist/components/permalink-preview/PermalinkPreview.cjs.map +1 -1
  132. package/dist/components/permalink-preview/PermalinkPreview.css +1 -1
  133. package/dist/components/permalink-preview/PermalinkPreview.d.ts +9 -2
  134. package/dist/components/permalink-preview/PermalinkPreview.d.ts.map +1 -1
  135. package/dist/components/permalink-preview/PermalinkPreview.js +66 -25
  136. package/dist/components/permalink-preview/PermalinkPreview.js.map +1 -1
  137. package/dist/components/permalink-preview/PermalinkPreview.module.scss.cjs +1 -1
  138. package/dist/components/permalink-preview/PermalinkPreview.module.scss.js +13 -9
  139. package/dist/components/permalink-preview/PermalinkPreview.module.scss.js.map +1 -1
  140. package/dist/components/popover-menu/PopoverMenu.cjs.map +1 -1
  141. package/dist/components/popover-menu/PopoverMenu.d.ts +1 -2
  142. package/dist/components/popover-menu/PopoverMenu.d.ts.map +1 -1
  143. package/dist/components/popover-menu/PopoverMenu.js.map +1 -1
  144. package/dist/components/popover-notice/PopoverNotice.cjs.map +1 -1
  145. package/dist/components/popover-notice/PopoverNotice.d.ts +4 -3
  146. package/dist/components/popover-notice/PopoverNotice.d.ts.map +1 -1
  147. package/dist/components/popover-notice/PopoverNotice.js.map +1 -1
  148. package/dist/components/profile-popover/ProfilePopover.cjs.map +1 -1
  149. package/dist/components/profile-popover/ProfilePopover.d.ts.map +1 -1
  150. package/dist/components/profile-popover/ProfilePopover.js +14 -1
  151. package/dist/components/profile-popover/ProfilePopover.js.map +1 -1
  152. package/dist/components/progress-bar/ProgressBar.cjs +1 -1
  153. package/dist/components/progress-bar/ProgressBar.cjs.map +1 -1
  154. package/dist/components/progress-bar/ProgressBar.css +1 -1
  155. package/dist/components/progress-bar/ProgressBar.d.ts +6 -1
  156. package/dist/components/progress-bar/ProgressBar.d.ts.map +1 -1
  157. package/dist/components/progress-bar/ProgressBar.js +21 -15
  158. package/dist/components/progress-bar/ProgressBar.js.map +1 -1
  159. package/dist/components/progress-bar/ProgressBar.module.scss.cjs +1 -1
  160. package/dist/components/progress-bar/ProgressBar.module.scss.js +9 -8
  161. package/dist/components/progress-bar/ProgressBar.module.scss.js.map +1 -1
  162. package/dist/components/radio/Radio.cjs +1 -1
  163. package/dist/components/radio/Radio.cjs.map +1 -1
  164. package/dist/components/radio/Radio.d.ts +2 -1
  165. package/dist/components/radio/Radio.d.ts.map +1 -1
  166. package/dist/components/radio/Radio.js +15 -13
  167. package/dist/components/radio/Radio.js.map +1 -1
  168. package/dist/components/reactions-row/ReactionsRow.cjs.map +1 -1
  169. package/dist/components/reactions-row/ReactionsRow.d.ts.map +1 -1
  170. package/dist/components/reactions-row/ReactionsRow.js.map +1 -1
  171. package/dist/components/right-sidebar-header/RightSidebarHeader.cjs +1 -1
  172. package/dist/components/right-sidebar-header/RightSidebarHeader.cjs.map +1 -1
  173. package/dist/components/right-sidebar-header/RightSidebarHeader.d.ts +4 -2
  174. package/dist/components/right-sidebar-header/RightSidebarHeader.d.ts.map +1 -1
  175. package/dist/components/right-sidebar-header/RightSidebarHeader.js +51 -43
  176. package/dist/components/right-sidebar-header/RightSidebarHeader.js.map +1 -1
  177. package/dist/components/search-input/SearchInput.cjs.map +1 -1
  178. package/dist/components/search-input/SearchInput.d.ts.map +1 -1
  179. package/dist/components/search-input/SearchInput.js.map +1 -1
  180. package/dist/components/section-notice/SectionNotice.cjs.map +1 -1
  181. package/dist/components/section-notice/SectionNotice.d.ts +4 -4
  182. package/dist/components/section-notice/SectionNotice.d.ts.map +1 -1
  183. package/dist/components/section-notice/SectionNotice.js.map +1 -1
  184. package/dist/components/select/Select.cjs.map +1 -1
  185. package/dist/components/select/Select.d.ts.map +1 -1
  186. package/dist/components/select/Select.js.map +1 -1
  187. package/dist/components/switch/Switch.cjs +1 -1
  188. package/dist/components/switch/Switch.cjs.map +1 -1
  189. package/dist/components/switch/Switch.d.ts +2 -1
  190. package/dist/components/switch/Switch.d.ts.map +1 -1
  191. package/dist/components/switch/Switch.js +31 -29
  192. package/dist/components/switch/Switch.js.map +1 -1
  193. package/dist/components/tabs/Tabs.cjs +1 -1
  194. package/dist/components/tabs/Tabs.cjs.map +1 -1
  195. package/dist/components/tabs/Tabs.css +1 -1
  196. package/dist/components/tabs/Tabs.d.ts +6 -2
  197. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  198. package/dist/components/tabs/Tabs.js +47 -39
  199. package/dist/components/tabs/Tabs.js.map +1 -1
  200. package/dist/components/tabs/Tabs.module.scss.cjs +1 -1
  201. package/dist/components/tabs/Tabs.module.scss.js +13 -12
  202. package/dist/components/tabs/Tabs.module.scss.js.map +1 -1
  203. package/dist/components/tag/Tag.cjs.map +1 -1
  204. package/dist/components/tag/Tag.css +1 -1
  205. package/dist/components/tag/Tag.d.ts +2 -2
  206. package/dist/components/tag/Tag.d.ts.map +1 -1
  207. package/dist/components/tag/Tag.js.map +1 -1
  208. package/dist/components/tag/Tag.module.scss.cjs +1 -1
  209. package/dist/components/tag/Tag.module.scss.js +11 -11
  210. package/dist/components/thread-footer/ThreadFooter.cjs +1 -1
  211. package/dist/components/thread-footer/ThreadFooter.cjs.map +1 -1
  212. package/dist/components/thread-footer/ThreadFooter.css +1 -1
  213. package/dist/components/thread-footer/ThreadFooter.d.ts.map +1 -1
  214. package/dist/components/thread-footer/ThreadFooter.js +39 -43
  215. package/dist/components/thread-footer/ThreadFooter.js.map +1 -1
  216. package/dist/components/thread-footer/ThreadFooter.module.scss.cjs +1 -1
  217. package/dist/components/thread-footer/ThreadFooter.module.scss.js +18 -17
  218. package/dist/components/thread-footer/ThreadFooter.module.scss.js.map +1 -1
  219. package/dist/components/thread-list-item/ThreadListItem.cjs.map +1 -1
  220. package/dist/components/thread-list-item/ThreadListItem.d.ts.map +1 -1
  221. package/dist/components/thread-list-item/ThreadListItem.js +3 -1
  222. package/dist/components/thread-list-item/ThreadListItem.js.map +1 -1
  223. package/dist/components/toast/Toast.cjs.map +1 -1
  224. package/dist/components/toast/Toast.d.ts +3 -2
  225. package/dist/components/toast/Toast.d.ts.map +1 -1
  226. package/dist/components/toast/Toast.js.map +1 -1
  227. package/dist/components/tooltip/Tooltip.cjs +1 -1
  228. package/dist/components/tooltip/Tooltip.cjs.map +1 -1
  229. package/dist/components/tooltip/Tooltip.d.ts +3 -3
  230. package/dist/components/tooltip/Tooltip.d.ts.map +1 -1
  231. package/dist/components/tooltip/Tooltip.js +9 -9
  232. package/dist/components/tooltip/Tooltip.js.map +1 -1
  233. package/dist/components/tour-point/TourPoint.cjs.map +1 -1
  234. package/dist/components/tour-point/TourPoint.d.ts.map +1 -1
  235. package/dist/components/tour-point/TourPoint.js +8 -6
  236. package/dist/components/tour-point/TourPoint.js.map +1 -1
  237. package/dist/components/user-avatar-group/UserAvatarGroup.cjs.map +1 -1
  238. package/dist/components/user-avatar-group/UserAvatarGroup.d.ts.map +1 -1
  239. package/dist/components/user-avatar-group/UserAvatarGroup.js +23 -30
  240. package/dist/components/user-avatar-group/UserAvatarGroup.js.map +1 -1
  241. package/dist/hooks/use-anchored-popup-portal.cjs.map +1 -1
  242. package/dist/hooks/use-anchored-popup-portal.d.ts.map +1 -1
  243. package/dist/hooks/use-anchored-popup-portal.js +1 -3
  244. package/dist/hooks/use-anchored-popup-portal.js.map +1 -1
  245. package/dist/illustrations/incoming-webhook.svg.cjs +1 -1
  246. package/dist/illustrations/incoming-webhook.svg.cjs.map +1 -1
  247. package/dist/illustrations/incoming-webhook.svg.js +1 -1
  248. package/dist/illustrations/incoming-webhook.svg.js.map +1 -1
  249. package/dist/index.cjs +1 -1
  250. package/dist/index.d.ts +0 -14
  251. package/dist/index.d.ts.map +1 -1
  252. package/dist/index.js +170 -204
  253. package/dist/index.js.map +1 -1
  254. package/dist/utils/anchoredPopupPlacement.cjs.map +1 -1
  255. package/dist/utils/anchoredPopupPlacement.d.ts.map +1 -1
  256. package/dist/utils/anchoredPopupPlacement.js +4 -1
  257. package/dist/utils/anchoredPopupPlacement.js.map +1 -1
  258. package/package.json +1 -44
  259. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.cjs +0 -2
  260. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.cjs.map +0 -1
  261. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.css +0 -1
  262. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.d.ts +0 -12
  263. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.d.ts.map +0 -1
  264. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.js +0 -122
  265. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.js.map +0 -1
  266. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.module.scss.cjs +0 -2
  267. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.module.scss.cjs.map +0 -1
  268. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.module.scss.js +0 -20
  269. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.module.scss.js.map +0 -1
  270. package/dist/components/admin-console-sidebar/adminConsoleSidebarModel.d.ts +0 -14
  271. package/dist/components/admin-console-sidebar/adminConsoleSidebarModel.d.ts.map +0 -1
  272. package/dist/components/admin-console-sidebar/index.cjs +0 -2
  273. package/dist/components/admin-console-sidebar/index.cjs.map +0 -1
  274. package/dist/components/admin-console-sidebar/index.d.ts +0 -4
  275. package/dist/components/admin-console-sidebar/index.d.ts.map +0 -1
  276. package/dist/components/admin-console-sidebar/index.js +0 -5
  277. package/dist/components/admin-console-sidebar/index.js.map +0 -1
  278. package/dist/components/channel-category-menu/ChannelCategoryMenu.cjs +0 -2
  279. package/dist/components/channel-category-menu/ChannelCategoryMenu.cjs.map +0 -1
  280. package/dist/components/channel-category-menu/ChannelCategoryMenu.css +0 -1
  281. package/dist/components/channel-category-menu/ChannelCategoryMenu.d.ts +0 -10
  282. package/dist/components/channel-category-menu/ChannelCategoryMenu.d.ts.map +0 -1
  283. package/dist/components/channel-category-menu/ChannelCategoryMenu.js +0 -103
  284. package/dist/components/channel-category-menu/ChannelCategoryMenu.js.map +0 -1
  285. package/dist/components/channel-category-menu/ChannelCategoryMenu.module.scss.cjs +0 -2
  286. package/dist/components/channel-category-menu/ChannelCategoryMenu.module.scss.cjs.map +0 -1
  287. package/dist/components/channel-category-menu/ChannelCategoryMenu.module.scss.js +0 -8
  288. package/dist/components/channel-category-menu/ChannelCategoryMenu.module.scss.js.map +0 -1
  289. package/dist/components/channel-category-menu/index.cjs +0 -2
  290. package/dist/components/channel-category-menu/index.cjs.map +0 -1
  291. package/dist/components/channel-category-menu/index.d.ts +0 -3
  292. package/dist/components/channel-category-menu/index.d.ts.map +0 -1
  293. package/dist/components/channel-category-menu/index.js +0 -5
  294. package/dist/components/channel-category-menu/index.js.map +0 -1
  295. package/dist/components/channel-header-menu/ChannelHeaderMenu.cjs +0 -2
  296. package/dist/components/channel-header-menu/ChannelHeaderMenu.cjs.map +0 -1
  297. package/dist/components/channel-header-menu/ChannelHeaderMenu.d.ts +0 -8
  298. package/dist/components/channel-header-menu/ChannelHeaderMenu.d.ts.map +0 -1
  299. package/dist/components/channel-header-menu/ChannelHeaderMenu.js +0 -115
  300. package/dist/components/channel-header-menu/ChannelHeaderMenu.js.map +0 -1
  301. package/dist/components/channel-header-menu/index.cjs +0 -2
  302. package/dist/components/channel-header-menu/index.cjs.map +0 -1
  303. package/dist/components/channel-header-menu/index.d.ts +0 -3
  304. package/dist/components/channel-header-menu/index.d.ts.map +0 -1
  305. package/dist/components/channel-header-menu/index.js +0 -5
  306. package/dist/components/channel-header-menu/index.js.map +0 -1
  307. package/dist/components/channel-menu/ChannelMenu.cjs +0 -2
  308. package/dist/components/channel-menu/ChannelMenu.cjs.map +0 -1
  309. package/dist/components/channel-menu/ChannelMenu.d.ts +0 -8
  310. package/dist/components/channel-menu/ChannelMenu.d.ts.map +0 -1
  311. package/dist/components/channel-menu/ChannelMenu.js +0 -91
  312. package/dist/components/channel-menu/ChannelMenu.js.map +0 -1
  313. package/dist/components/channel-menu/index.cjs +0 -2
  314. package/dist/components/channel-menu/index.cjs.map +0 -1
  315. package/dist/components/channel-menu/index.d.ts +0 -3
  316. package/dist/components/channel-menu/index.d.ts.map +0 -1
  317. package/dist/components/channel-menu/index.js +0 -5
  318. package/dist/components/channel-menu/index.js.map +0 -1
  319. package/dist/components/channels-sidebar/ChannelsSidebar.cjs +0 -2
  320. package/dist/components/channels-sidebar/ChannelsSidebar.cjs.map +0 -1
  321. package/dist/components/channels-sidebar/ChannelsSidebar.css +0 -1
  322. package/dist/components/channels-sidebar/ChannelsSidebar.d.ts +0 -57
  323. package/dist/components/channels-sidebar/ChannelsSidebar.d.ts.map +0 -1
  324. package/dist/components/channels-sidebar/ChannelsSidebar.js +0 -177
  325. package/dist/components/channels-sidebar/ChannelsSidebar.js.map +0 -1
  326. package/dist/components/channels-sidebar/ChannelsSidebar.module.scss.cjs +0 -2
  327. package/dist/components/channels-sidebar/ChannelsSidebar.module.scss.cjs.map +0 -1
  328. package/dist/components/channels-sidebar/ChannelsSidebar.module.scss.js +0 -35
  329. package/dist/components/channels-sidebar/ChannelsSidebar.module.scss.js.map +0 -1
  330. package/dist/components/channels-sidebar/channelsSidebarModel.cjs +0 -2
  331. package/dist/components/channels-sidebar/channelsSidebarModel.cjs.map +0 -1
  332. package/dist/components/channels-sidebar/channelsSidebarModel.d.ts +0 -22
  333. package/dist/components/channels-sidebar/channelsSidebarModel.d.ts.map +0 -1
  334. package/dist/components/channels-sidebar/channelsSidebarModel.js +0 -20
  335. package/dist/components/channels-sidebar/channelsSidebarModel.js.map +0 -1
  336. package/dist/components/channels-sidebar/index.cjs +0 -2
  337. package/dist/components/channels-sidebar/index.cjs.map +0 -1
  338. package/dist/components/channels-sidebar/index.d.ts +0 -6
  339. package/dist/components/channels-sidebar/index.d.ts.map +0 -1
  340. package/dist/components/channels-sidebar/index.js +0 -12
  341. package/dist/components/channels-sidebar/index.js.map +0 -1
  342. package/dist/components/global-header/GlobalHeader.cjs +0 -2
  343. package/dist/components/global-header/GlobalHeader.cjs.map +0 -1
  344. package/dist/components/global-header/GlobalHeader.css +0 -1
  345. package/dist/components/global-header/GlobalHeader.d.ts +0 -28
  346. package/dist/components/global-header/GlobalHeader.d.ts.map +0 -1
  347. package/dist/components/global-header/GlobalHeader.js +0 -157
  348. package/dist/components/global-header/GlobalHeader.js.map +0 -1
  349. package/dist/components/global-header/GlobalHeader.module.scss.cjs +0 -2
  350. package/dist/components/global-header/GlobalHeader.module.scss.cjs.map +0 -1
  351. package/dist/components/global-header/GlobalHeader.module.scss.js +0 -20
  352. package/dist/components/global-header/GlobalHeader.module.scss.js.map +0 -1
  353. package/dist/components/global-header/index.cjs +0 -2
  354. package/dist/components/global-header/index.cjs.map +0 -1
  355. package/dist/components/global-header/index.d.ts +0 -3
  356. package/dist/components/global-header/index.d.ts.map +0 -1
  357. package/dist/components/global-header/index.js +0 -5
  358. package/dist/components/global-header/index.js.map +0 -1
  359. package/dist/components/help-menu/HelpMenu.cjs +0 -2
  360. package/dist/components/help-menu/HelpMenu.cjs.map +0 -1
  361. package/dist/components/help-menu/HelpMenu.d.ts +0 -8
  362. package/dist/components/help-menu/HelpMenu.d.ts.map +0 -1
  363. package/dist/components/help-menu/HelpMenu.js +0 -64
  364. package/dist/components/help-menu/HelpMenu.js.map +0 -1
  365. package/dist/components/help-menu/index.cjs +0 -2
  366. package/dist/components/help-menu/index.cjs.map +0 -1
  367. package/dist/components/help-menu/index.d.ts +0 -3
  368. package/dist/components/help-menu/index.d.ts.map +0 -1
  369. package/dist/components/help-menu/index.js +0 -5
  370. package/dist/components/help-menu/index.js.map +0 -1
  371. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.cjs +0 -2
  372. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.cjs.map +0 -1
  373. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.d.ts +0 -12
  374. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.d.ts.map +0 -1
  375. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.js +0 -172
  376. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.js.map +0 -1
  377. package/dist/components/message-more-options-menu/index.cjs +0 -2
  378. package/dist/components/message-more-options-menu/index.cjs.map +0 -1
  379. package/dist/components/message-more-options-menu/index.d.ts +0 -3
  380. package/dist/components/message-more-options-menu/index.d.ts.map +0 -1
  381. package/dist/components/message-more-options-menu/index.js +0 -5
  382. package/dist/components/message-more-options-menu/index.js.map +0 -1
  383. package/dist/components/plus-menu/PlusMenu.cjs +0 -2
  384. package/dist/components/plus-menu/PlusMenu.cjs.map +0 -1
  385. package/dist/components/plus-menu/PlusMenu.d.ts +0 -8
  386. package/dist/components/plus-menu/PlusMenu.d.ts.map +0 -1
  387. package/dist/components/plus-menu/PlusMenu.js +0 -69
  388. package/dist/components/plus-menu/PlusMenu.js.map +0 -1
  389. package/dist/components/plus-menu/index.cjs +0 -2
  390. package/dist/components/plus-menu/index.cjs.map +0 -1
  391. package/dist/components/plus-menu/index.d.ts +0 -3
  392. package/dist/components/plus-menu/index.d.ts.map +0 -1
  393. package/dist/components/plus-menu/index.js +0 -5
  394. package/dist/components/plus-menu/index.js.map +0 -1
  395. package/dist/components/product-switcher-menu/ProductSwitcherMenu.cjs +0 -2
  396. package/dist/components/product-switcher-menu/ProductSwitcherMenu.cjs.map +0 -1
  397. package/dist/components/product-switcher-menu/ProductSwitcherMenu.css +0 -1
  398. package/dist/components/product-switcher-menu/ProductSwitcherMenu.d.ts +0 -47
  399. package/dist/components/product-switcher-menu/ProductSwitcherMenu.d.ts.map +0 -1
  400. package/dist/components/product-switcher-menu/ProductSwitcherMenu.js +0 -110
  401. package/dist/components/product-switcher-menu/ProductSwitcherMenu.js.map +0 -1
  402. package/dist/components/product-switcher-menu/ProductSwitcherMenu.module.scss.cjs +0 -2
  403. package/dist/components/product-switcher-menu/ProductSwitcherMenu.module.scss.cjs.map +0 -1
  404. package/dist/components/product-switcher-menu/ProductSwitcherMenu.module.scss.js +0 -8
  405. package/dist/components/product-switcher-menu/ProductSwitcherMenu.module.scss.js.map +0 -1
  406. package/dist/components/product-switcher-menu/index.cjs +0 -2
  407. package/dist/components/product-switcher-menu/index.cjs.map +0 -1
  408. package/dist/components/product-switcher-menu/index.d.ts +0 -4
  409. package/dist/components/product-switcher-menu/index.d.ts.map +0 -1
  410. package/dist/components/product-switcher-menu/index.js +0 -6
  411. package/dist/components/product-switcher-menu/index.js.map +0 -1
  412. package/dist/components/team-menu/TeamMenu.cjs +0 -2
  413. package/dist/components/team-menu/TeamMenu.cjs.map +0 -1
  414. package/dist/components/team-menu/TeamMenu.css +0 -1
  415. package/dist/components/team-menu/TeamMenu.d.ts +0 -15
  416. package/dist/components/team-menu/TeamMenu.d.ts.map +0 -1
  417. package/dist/components/team-menu/TeamMenu.js +0 -107
  418. package/dist/components/team-menu/TeamMenu.js.map +0 -1
  419. package/dist/components/team-menu/TeamMenu.module.scss.cjs +0 -2
  420. package/dist/components/team-menu/TeamMenu.module.scss.cjs.map +0 -1
  421. package/dist/components/team-menu/TeamMenu.module.scss.js +0 -7
  422. package/dist/components/team-menu/TeamMenu.module.scss.js.map +0 -1
  423. package/dist/components/team-menu/index.cjs +0 -2
  424. package/dist/components/team-menu/index.cjs.map +0 -1
  425. package/dist/components/team-menu/index.d.ts +0 -3
  426. package/dist/components/team-menu/index.d.ts.map +0 -1
  427. package/dist/components/team-menu/index.js +0 -5
  428. package/dist/components/team-menu/index.js.map +0 -1
  429. package/dist/components/team-sidebar/TeamSidebar.cjs +0 -2
  430. package/dist/components/team-sidebar/TeamSidebar.cjs.map +0 -1
  431. package/dist/components/team-sidebar/TeamSidebar.css +0 -1
  432. package/dist/components/team-sidebar/TeamSidebar.d.ts +0 -21
  433. package/dist/components/team-sidebar/TeamSidebar.d.ts.map +0 -1
  434. package/dist/components/team-sidebar/TeamSidebar.js +0 -85
  435. package/dist/components/team-sidebar/TeamSidebar.js.map +0 -1
  436. package/dist/components/team-sidebar/TeamSidebar.module.scss.cjs +0 -2
  437. package/dist/components/team-sidebar/TeamSidebar.module.scss.cjs.map +0 -1
  438. package/dist/components/team-sidebar/TeamSidebar.module.scss.js +0 -13
  439. package/dist/components/team-sidebar/TeamSidebar.module.scss.js.map +0 -1
  440. package/dist/components/team-sidebar/index.cjs +0 -2
  441. package/dist/components/team-sidebar/index.cjs.map +0 -1
  442. package/dist/components/team-sidebar/index.d.ts +0 -3
  443. package/dist/components/team-sidebar/index.d.ts.map +0 -1
  444. package/dist/components/team-sidebar/index.js +0 -5
  445. package/dist/components/team-sidebar/index.js.map +0 -1
  446. package/dist/components/thread-actions-menu/ThreadActionsMenu.cjs +0 -2
  447. package/dist/components/thread-actions-menu/ThreadActionsMenu.cjs.map +0 -1
  448. package/dist/components/thread-actions-menu/ThreadActionsMenu.d.ts +0 -8
  449. package/dist/components/thread-actions-menu/ThreadActionsMenu.d.ts.map +0 -1
  450. package/dist/components/thread-actions-menu/ThreadActionsMenu.js +0 -77
  451. package/dist/components/thread-actions-menu/ThreadActionsMenu.js.map +0 -1
  452. package/dist/components/thread-actions-menu/index.cjs +0 -2
  453. package/dist/components/thread-actions-menu/index.cjs.map +0 -1
  454. package/dist/components/thread-actions-menu/index.d.ts +0 -3
  455. package/dist/components/thread-actions-menu/index.d.ts.map +0 -1
  456. package/dist/components/thread-actions-menu/index.js +0 -5
  457. package/dist/components/thread-actions-menu/index.js.map +0 -1
  458. package/dist/index.css +0 -162
@@ -1 +1 @@
1
- {"version":3,"file":"ChannelInfoMsgHeader.js","sources":["../../../src/components/channel-info-msg-header/ChannelInfoMsgHeader.tsx"],"sourcesContent":["import styles from './ChannelInfoMsgHeader.module.scss';\n\nexport interface ChannelInfoMsgHeaderTab {\n /** Label text for this tab. */\n label: string;\n /** Whether this tab is currently active/selected. */\n active?: boolean;\n /** Click handler. */\n onClick?: () => void;\n}\n\nexport interface ChannelInfoMsgHeaderProps {\n /**\n * Channel (or section) label — primary API for Mentions / Saved message\n * indicators. Prefer this over `tabs` for a single channel chip.\n */\n channelName?: string;\n /** Called when the channel label is pressed (`channelName` mode). */\n onChannelClick?: () => void;\n /**\n * Multi-section tabs for channel info panels. Used when `channelName` is\n * omitted.\n */\n tabs?: ChannelInfoMsgHeaderTab[];\n /**\n * Team name after the channel divider. Omit when the workspace has only one\n * team or the team is already clear from context.\n */\n teamName?: string;\n /** Optional CSS class name. */\n className?: string;\n}\n\n/**\n * The Channel Info Message Header names a channel (or section) and, when useful, the team it\n * belongs to. Use it above posts in Mentions and Saved lists, or as section tabs at the top\n * of a channel info panel.\n */\nexport default function ChannelInfoMsgHeader({\n channelName,\n onChannelClick,\n tabs,\n teamName,\n className = '',\n}: ChannelInfoMsgHeaderProps) {\n const resolvedTabs: ChannelInfoMsgHeaderTab[] =\n channelName != null && channelName !== ''\n ? [{label: channelName, onClick: onChannelClick}]\n : (tabs ?? [{label: 'Spec Reviews', active: true}]);\n\n const rootClass = [styles['channel-info-msg-header'], className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={rootClass}>\n <div className={styles['channel-info-msg-header__container']}>\n {resolvedTabs.map((tab, index) => (\n <div\n key={`${tab.label}-${index}`}\n className={[\n styles['channel-info-msg-header__tab-area'],\n tab.active\n ? styles['channel-info-msg-header__tab-area--active']\n : '',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <button\n type='button'\n className={[\n styles['channel-info-msg-header__tab'],\n tab.active\n ? styles['channel-info-msg-header__tab--active']\n : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={tab.onClick}\n >\n {tab.label}\n </button>\n </div>\n ))}\n {teamName != null && teamName !== '' && (\n <div className={styles['channel-info-msg-header__team']}>\n <span className={styles['channel-info-msg-header__team-name']}>\n {teamName}\n </span>\n </div>\n )}\n </div>\n </div>\n );\n}\n"],"names":["ChannelInfoMsgHeader","channelName","onChannelClick","tabs","teamName","className","resolvedTabs","rootClass","styles","jsx","tab","index"],"mappings":";;AAsCA,SAAwBA,EAAqB;AAAA,EAC3C,aAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AACd,GAA8B;AAC5B,QAAMC,IACJL,KAAe,QAAQA,MAAgB,KACnC,CAAC,EAAC,OAAOA,GAAa,SAASC,GAAe,IAC7CC,KAAQ,CAAC,EAAC,OAAO,gBAAgB,QAAQ,IAAK,GAE/CI,IAAY,CAACC,EAAO,yBAAyB,GAAGH,CAAS,EAC5D,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAI,EAAC,SAAI,WAAWF,GACd,4BAAC,OAAA,EAAI,WAAWC,EAAO,oCAAoC,GACxD,UAAA;AAAA,IAAAF,EAAa,IAAI,CAACI,GAAKC,MACtB,gBAAAF;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,WAAW;AAAA,UACTD,EAAO,mCAAmC;AAAA,UAC1CE,EAAI,SACAF,EAAO,2CAA2C,IAClD;AAAA,QAAA,EAEH,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,QAEX,UAAA,gBAAAC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAW;AAAA,cACTD,EAAO,8BAA8B;AAAA,cACrCE,EAAI,SACAF,EAAO,sCAAsC,IAC7C;AAAA,YAAA,EAEH,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,YACX,SAASE,EAAI;AAAA,YAEZ,UAAAA,EAAI;AAAA,UAAA;AAAA,QAAA;AAAA,MACP;AAAA,MAvBK,GAAGA,EAAI,KAAK,IAAIC,CAAK;AAAA,IAAA,CAyB7B;AAAA,IACAP,KAAY,QAAQA,MAAa,MAChC,gBAAAK,EAAC,SAAI,WAAWD,EAAO,+BAA+B,GACpD,4BAAC,QAAA,EAAK,WAAWA,EAAO,oCAAoC,GACzD,aACH,EAAA,CACF;AAAA,EAAA,EAAA,CAEJ,EAAA,CACF;AAEJ;"}
1
+ {"version":3,"file":"ChannelInfoMsgHeader.js","sources":["../../../src/components/channel-info-msg-header/ChannelInfoMsgHeader.tsx"],"sourcesContent":["import styles from './ChannelInfoMsgHeader.module.scss';\n\nexport interface ChannelInfoMsgHeaderTab {\n /** Label text for this tab. */\n label: string;\n /** Whether this tab is currently active/selected. */\n active?: boolean;\n /** Click handler. */\n onClick?: () => void;\n}\n\nexport interface ChannelInfoMsgHeaderProps {\n /**\n * Channel (or section) label — primary API for Mentions / Saved message\n * indicators. Prefer this over `tabs` for a single channel chip.\n */\n channelName?: string;\n /** Called when the channel label is pressed (`channelName` mode). */\n onChannelClick?: () => void;\n /**\n * Multi-section tabs for channel info panels. Used when `channelName` is\n * omitted.\n */\n tabs?: ChannelInfoMsgHeaderTab[];\n /**\n * Team name after the channel divider. Omit when the workspace has only one\n * team or the team is already clear from context.\n */\n teamName?: string;\n /** Optional CSS class name. */\n className?: string;\n}\n\n/**\n * The Channel Info Message Header names a channel (or section) and, when useful, the team it\n * belongs to. Use it above posts in Mentions and Saved lists, or as section tabs at the top\n * of a channel info panel.\n */\nexport default function ChannelInfoMsgHeader({\n channelName,\n onChannelClick,\n tabs,\n teamName,\n className = '',\n}: ChannelInfoMsgHeaderProps) {\n const resolvedTabs: ChannelInfoMsgHeaderTab[] =\n channelName != null && channelName !== ''\n ? [{ label: channelName, onClick: onChannelClick }]\n : (tabs ?? [{ label: 'Spec Reviews', active: true }]);\n\n const rootClass = [styles['channel-info-msg-header'], className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={rootClass}>\n <div className={styles['channel-info-msg-header__container']}>\n {resolvedTabs.map((tab, index) => (\n <div\n key={`${tab.label}-${index}`}\n className={[\n styles['channel-info-msg-header__tab-area'],\n tab.active\n ? styles['channel-info-msg-header__tab-area--active']\n : '',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <button\n type=\"button\"\n className={[\n styles['channel-info-msg-header__tab'],\n tab.active\n ? styles['channel-info-msg-header__tab--active']\n : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={tab.onClick}\n >\n {tab.label}\n </button>\n </div>\n ))}\n {teamName != null && teamName !== '' && (\n <div className={styles['channel-info-msg-header__team']}>\n <span className={styles['channel-info-msg-header__team-name']}>\n {teamName}\n </span>\n </div>\n )}\n </div>\n </div>\n );\n}\n"],"names":["ChannelInfoMsgHeader","channelName","onChannelClick","tabs","teamName","className","resolvedTabs","rootClass","styles","jsx","tab","index"],"mappings":";;AAsCA,SAAwBA,EAAqB;AAAA,EAC3C,aAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AACd,GAA8B;AAC5B,QAAMC,IACJL,KAAe,QAAQA,MAAgB,KACnC,CAAC,EAAE,OAAOA,GAAa,SAASC,GAAgB,IAC/CC,KAAQ,CAAC,EAAE,OAAO,gBAAgB,QAAQ,IAAM,GAEjDI,IAAY,CAACC,EAAO,yBAAyB,GAAGH,CAAS,EAC5D,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAI,EAAC,SAAI,WAAWF,GACd,4BAAC,OAAA,EAAI,WAAWC,EAAO,oCAAoC,GACxD,UAAA;AAAA,IAAAF,EAAa,IAAI,CAACI,GAAKC,MACtB,gBAAAF;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,WAAW;AAAA,UACTD,EAAO,mCAAmC;AAAA,UAC1CE,EAAI,SACAF,EAAO,2CAA2C,IAClD;AAAA,QAAA,EAEH,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,QAEX,UAAA,gBAAAC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAW;AAAA,cACTD,EAAO,8BAA8B;AAAA,cACrCE,EAAI,SACAF,EAAO,sCAAsC,IAC7C;AAAA,YAAA,EAEH,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,YACX,SAASE,EAAI;AAAA,YAEZ,UAAAA,EAAI;AAAA,UAAA;AAAA,QAAA;AAAA,MACP;AAAA,MAvBK,GAAGA,EAAI,KAAK,IAAIC,CAAK;AAAA,IAAA,CAyB7B;AAAA,IACAP,KAAY,QAAQA,MAAa,MAChC,gBAAAK,EAAC,SAAI,WAAWD,EAAO,+BAA+B,GACpD,4BAAC,QAAA,EAAK,WAAWA,EAAO,oCAAoC,GACzD,aACH,EAAA,CACF;AAAA,EAAA,EAAA,CAEJ,EAAA,CACF;AAEJ;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("react/jsx-runtime"),t=require("react"),v=require("../../hooks/use-controllable.cjs"),O=require("../icon/Icon.cjs"),__E=require("@mattermost/compass-icons/components/check.js"),E=__E?.default??__E,__M=require("@mattermost/compass-icons/components/minus.js"),M=__M?.default??__M,R=require("../../utils/string.cjs"),e=require("./Checkbox.module.scss.cjs"),S={small:"10",medium:"12",large:"16"},y={check:E,minus:M};function z({className:x="",indeterminate:c=!1,size:l="medium",invalid:a=!1,children:u,id:b,checked:i,defaultChecked:r,disabled:f,onChange:m,...C}){const d=t.useRef(null),_=t.useId(),h=b??_,[k,p]=v.useControllable(i,r,m),n=c?"minus":k?"check":null;t.useEffect(()=>{const o=d.current;o&&(o.indeterminate=c)},[c]);const j=e.default[`checkbox--size-${R.toKebab(l)}`],I=a?e.default["checkbox--invalid"]:"",g=c?e.default["checkbox--indeterminate"]:"",N=[e.default.checkbox,j,I,g,x].filter(Boolean).join(" "),q=S[l];return s.jsxs("label",{className:N,htmlFor:h,children:[s.jsx("input",{ref:d,id:h,type:"checkbox",className:e.default.checkbox__input,checked:i,defaultChecked:r,disabled:f,"aria-invalid":a?!0:void 0,onChange:p,...C,...c?{"aria-checked":"mixed"}:{}}),s.jsx("span",{className:e.default.checkbox__box,children:n!==null&&(()=>{const o=y[n];return s.jsx("span",{className:e.default.checkbox__icon,children:s.jsx(O.default,{glyph:s.jsx(o,{}),size:q})},n)})()}),u!=null&&s.jsx("span",{className:e.default.checkbox__label,children:u})]})}exports.default=z;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("react/jsx-runtime"),o=require("react"),R=require("../../hooks/use-controllable.cjs"),y=require("../icon/Icon.cjs"),__E=require("@mattermost/compass-icons/components/check.js"),E=__E?.default??__E,__M=require("@mattermost/compass-icons/components/minus.js"),M=__M?.default??__M,S=require("../../utils/string.cjs"),e=require("./Checkbox.module.scss.cjs"),z={small:"10",medium:"12",large:"16"},w={check:E,minus:M},x=o.forwardRef(function({className:b="",indeterminate:c=!1,size:a="medium",invalid:u=!1,children:i,id:f,checked:r,defaultChecked:d,disabled:m,onChange:C,...k},_){const t=o.useRef(null);o.useImperativeHandle(_,()=>t.current);const p=o.useId(),h=f??p,[I,j]=R.useControllable(r,d,C),l=c?"minus":I?"check":null;o.useEffect(()=>{const n=t.current;n&&(n.indeterminate=c)},[c]);const N=e.default[`checkbox--size-${S.toKebab(a)}`],g=u?e.default["checkbox--invalid"]:"",q=c?e.default["checkbox--indeterminate"]:"",v=[e.default.checkbox,N,g,q,b].filter(Boolean).join(" "),O=z[a];return s.jsxs("label",{className:v,htmlFor:h,children:[s.jsx("input",{ref:t,id:h,type:"checkbox",className:e.default.checkbox__input,checked:r,defaultChecked:d,disabled:m,"aria-invalid":u?!0:void 0,onChange:j,...k,...c?{"aria-checked":"mixed"}:{}}),s.jsx("span",{className:e.default.checkbox__box,children:l!==null&&(()=>{const n=w[l];return s.jsx("span",{className:e.default.checkbox__icon,children:s.jsx(y.default,{glyph:s.jsx(n,{}),size:O})},l)})()}),i!=null&&s.jsx("span",{className:e.default.checkbox__label,children:i})]})});x.displayName="Checkbox";exports.default=x;
2
2
  //# sourceMappingURL=Checkbox.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.cjs","sources":["../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import type { InputHTMLAttributes } from 'react';\nimport { useRef, useEffect, useId } from 'react';\nimport { useControllable } from '@/hooks/use-controllable';\nimport Icon from '@/components/icon/Icon';\nimport type { IconSize } from '@/components/icon/Icon';\nimport type { ElementType } from 'react';\nimport CheckIcon from '@mattermost/compass-icons/components/check';\nimport MinusIcon from '@mattermost/compass-icons/components/minus';\nimport { toKebab } from '@/utils/string';\nimport styles from './Checkbox.module.scss';\n\nexport type CheckboxSize = 'small' | 'medium' | 'large';\n\nexport interface CheckboxProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'type'\n> {\n /** Optional CSS class name. */\n className?: string;\n /** When true, shows indeterminate (minus) state. Syncs to native input.indeterminate. */\n indeterminate?: boolean;\n /** Size variant. Figma: Small (12px), Medium (16px), Large (20px). Default: Medium. */\n size?: CheckboxSize;\n /** When true, uses error/destructive styling (red fill when checked). */\n invalid?: boolean;\n /** Label content. Rendered next to the checkbox. */\n children?: React.ReactNode;\n}\n\n/** Icon size from design system scale for each checkbox size (fits inside box). */\nconst CHECKBOX_ICON_SIZE: Record<CheckboxSize, IconSize> = {\n small: '10',\n medium: '12',\n large: '16',\n};\n\n/** Compass icon component per checked/indeterminate state. */\nconst ICON_COMPONENT: Record<'check' | 'minus', ElementType> = {\n check: CheckIcon,\n minus: MinusIcon,\n};\n\n/**\n * A Checkbox lets people pick any number of options from a set, or toggle a single setting\n * on or off. Each box represents one independent choice — pick none, some, or all.\n */\nexport default function Checkbox({\n className = '',\n indeterminate = false,\n size = 'medium',\n invalid = false,\n children,\n id: idProp,\n checked,\n defaultChecked,\n disabled,\n onChange,\n ...rest\n}: CheckboxProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const [resolvedChecked, handleChange] = useControllable(\n checked,\n defaultChecked,\n onChange,\n );\n\n const showingIcon = indeterminate\n ? 'minus'\n : resolvedChecked\n ? 'check'\n : null;\n\n useEffect(() => {\n const input = inputRef.current;\n if (input) input.indeterminate = indeterminate;\n }, [indeterminate]);\n\n const sizeClass = styles[`checkbox--size-${toKebab(size)}`];\n const invalidClass = invalid ? styles['checkbox--invalid'] : '';\n const indeterminateClass = indeterminate\n ? styles['checkbox--indeterminate']\n : '';\n\n const rootClass = [\n styles.checkbox,\n sizeClass,\n invalidClass,\n indeterminateClass,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const iconSize = CHECKBOX_ICON_SIZE[size];\n\n return (\n <label className={rootClass} htmlFor={id}>\n <input\n ref={inputRef}\n id={id}\n type=\"checkbox\"\n className={styles['checkbox__input']}\n checked={checked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n aria-invalid={invalid ? true : undefined}\n onChange={handleChange}\n {...rest}\n {...(indeterminate ? { 'aria-checked': 'mixed' as const } : {})}\n />\n <span className={styles['checkbox__box']}>\n {showingIcon !== null &&\n (() => {\n const IconComponent = ICON_COMPONENT[showingIcon];\n return (\n <span key={showingIcon} className={styles['checkbox__icon']}>\n <Icon glyph={<IconComponent />} size={iconSize} />\n </span>\n );\n })()}\n </span>\n {children != null && (\n <span className={styles['checkbox__label']}>{children}</span>\n )}\n </label>\n );\n}\n"],"names":["CHECKBOX_ICON_SIZE","ICON_COMPONENT","CheckIcon","MinusIcon","Checkbox","className","indeterminate","size","invalid","children","idProp","checked","defaultChecked","disabled","onChange","rest","inputRef","useRef","generatedId","useId","id","resolvedChecked","handleChange","useControllable","showingIcon","useEffect","input","sizeClass","styles","toKebab","invalidClass","indeterminateClass","rootClass","iconSize","jsxs","jsx","IconComponent","Icon"],"mappings":"2aA8BMA,EAAqD,CACzD,MAAO,KACP,OAAQ,KACR,MAAO,IACT,EAGMC,EAAyD,CAC7D,MAAOC,EACP,MAAOC,CACT,EAMA,SAAwBC,EAAS,CAC/B,UAAAC,EAAY,GACZ,cAAAC,EAAgB,GAChB,KAAAC,EAAO,SACP,QAAAC,EAAU,GACV,SAAAC,EACA,GAAIC,EACJ,QAAAC,EACA,eAAAC,EACA,SAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EAAkB,CAChB,MAAMC,EAAWC,EAAAA,OAAyB,IAAI,EACxCC,EAAcC,EAAAA,MAAA,EACdC,EAAKV,GAAUQ,EACf,CAACG,EAAiBC,CAAY,EAAIC,EAAAA,gBACtCZ,EACAC,EACAE,CAAA,EAGIU,EAAclB,EAChB,QACAe,EACE,QACA,KAENI,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAQV,EAAS,QACnBU,MAAa,cAAgBpB,EACnC,EAAG,CAACA,CAAa,CAAC,EAElB,MAAMqB,EAAYC,EAAAA,QAAO,kBAAkBC,EAAAA,QAAQtB,CAAI,CAAC,EAAE,EACpDuB,EAAetB,EAAUoB,UAAO,mBAAmB,EAAI,GACvDG,EAAqBzB,EACvBsB,UAAO,yBAAyB,EAChC,GAEEI,EAAY,CAChBJ,EAAAA,QAAO,SACPD,EACAG,EACAC,EACA1B,CAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,EAEL4B,EAAWjC,EAAmBO,CAAI,EAExC,OACE2B,EAAAA,KAAC,QAAA,CAAM,UAAWF,EAAW,QAASZ,EACpC,SAAA,CAAAe,EAAAA,IAAC,QAAA,CACC,IAAKnB,EACL,GAAAI,EACA,KAAK,WACL,UAAWQ,EAAAA,QAAO,gBAClB,QAAAjB,EACA,eAAAC,EACA,SAAAC,EACA,eAAcL,EAAU,GAAO,OAC/B,SAAUc,EACT,GAAGP,EACH,GAAIT,EAAgB,CAAE,eAAgB,SAAqB,CAAA,CAAC,CAAA,EAE/D6B,MAAC,QAAK,UAAWP,EAAAA,QAAO,cACrB,SAAAJ,IAAgB,OACd,IAAM,CACL,MAAMY,EAAgBnC,EAAeuB,CAAW,EAChD,OACEW,EAAAA,IAAC,OAAA,CAAuB,UAAWP,EAAAA,QAAO,eACxC,SAAAO,MAACE,EAAAA,QAAA,CAAK,YAAQD,EAAA,CAAA,CAAc,EAAI,KAAMH,CAAA,CAAU,GADvCT,CAEX,CAEJ,IAAG,CACP,EACCf,GAAY,MACX0B,EAAAA,IAAC,OAAA,CAAK,UAAWP,EAAAA,QAAO,gBAAqB,SAAAnB,CAAA,CAAS,CAAA,EAE1D,CAEJ"}
1
+ {"version":3,"file":"Checkbox.cjs","sources":["../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import type { InputHTMLAttributes } from 'react';\nimport {\n forwardRef,\n useEffect,\n useId,\n useImperativeHandle,\n useRef,\n} from 'react';\nimport { useControllable } from '@/hooks/use-controllable';\nimport Icon from '@/components/icon/Icon';\nimport type { IconSize } from '@/components/icon/Icon';\nimport type { ElementType } from 'react';\nimport CheckIcon from '@mattermost/compass-icons/components/check';\nimport MinusIcon from '@mattermost/compass-icons/components/minus';\nimport { toKebab } from '@/utils/string';\nimport styles from './Checkbox.module.scss';\n\nexport type CheckboxSize = 'small' | 'medium' | 'large';\n\nexport interface CheckboxProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'type'\n> {\n /** Optional CSS class name. */\n className?: string;\n /** When true, shows indeterminate (minus) state. Syncs to native input.indeterminate. */\n indeterminate?: boolean;\n /** Size variant. Figma: Small (12px), Medium (16px), Large (20px). Default: Medium. */\n size?: CheckboxSize;\n /** When true, uses error/destructive styling (red fill when checked). */\n invalid?: boolean;\n /** Label content. Rendered next to the checkbox. */\n children?: React.ReactNode;\n}\n\n/** Icon size from design system scale for each checkbox size (fits inside box). */\nconst CHECKBOX_ICON_SIZE: Record<CheckboxSize, IconSize> = {\n small: '10',\n medium: '12',\n large: '16',\n};\n\n/** Compass icon component per checked/indeterminate state. */\nconst ICON_COMPONENT: Record<'check' | 'minus', ElementType> = {\n check: CheckIcon,\n minus: MinusIcon,\n};\n\n/**\n * A Checkbox lets people pick any number of options from a set, or toggle a single setting\n * on or off. Each box represents one independent choice — pick none, some, or all.\n */\nconst Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n {\n className = '',\n indeterminate = false,\n size = 'medium',\n invalid = false,\n children,\n id: idProp,\n checked,\n defaultChecked,\n disabled,\n onChange,\n ...rest\n },\n ref,\n) {\n const inputRef = useRef<HTMLInputElement>(null);\n useImperativeHandle(ref, () => inputRef.current as HTMLInputElement);\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const [resolvedChecked, handleChange] = useControllable(\n checked,\n defaultChecked,\n onChange,\n );\n\n const showingIcon = indeterminate\n ? 'minus'\n : resolvedChecked\n ? 'check'\n : null;\n\n useEffect(() => {\n const input = inputRef.current;\n if (input) input.indeterminate = indeterminate;\n }, [indeterminate]);\n\n const sizeClass = styles[`checkbox--size-${toKebab(size)}`];\n const invalidClass = invalid ? styles['checkbox--invalid'] : '';\n const indeterminateClass = indeterminate\n ? styles['checkbox--indeterminate']\n : '';\n\n const rootClass = [\n styles.checkbox,\n sizeClass,\n invalidClass,\n indeterminateClass,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const iconSize = CHECKBOX_ICON_SIZE[size];\n\n return (\n <label className={rootClass} htmlFor={id}>\n <input\n ref={inputRef}\n id={id}\n type=\"checkbox\"\n className={styles['checkbox__input']}\n checked={checked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n aria-invalid={invalid ? true : undefined}\n onChange={handleChange}\n {...rest}\n {...(indeterminate ? { 'aria-checked': 'mixed' as const } : {})}\n />\n <span className={styles['checkbox__box']}>\n {showingIcon !== null &&\n (() => {\n const IconComponent = ICON_COMPONENT[showingIcon];\n return (\n <span key={showingIcon} className={styles['checkbox__icon']}>\n <Icon glyph={<IconComponent />} size={iconSize} />\n </span>\n );\n })()}\n </span>\n {children != null && (\n <span className={styles['checkbox__label']}>{children}</span>\n )}\n </label>\n );\n});\n\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n"],"names":["CHECKBOX_ICON_SIZE","ICON_COMPONENT","CheckIcon","MinusIcon","Checkbox","forwardRef","className","indeterminate","size","invalid","children","idProp","checked","defaultChecked","disabled","onChange","rest","ref","inputRef","useRef","useImperativeHandle","generatedId","useId","id","resolvedChecked","handleChange","useControllable","showingIcon","useEffect","input","sizeClass","styles","toKebab","invalidClass","indeterminateClass","rootClass","iconSize","jsxs","jsx","IconComponent","Icon"],"mappings":"2aAoCMA,EAAqD,CACzD,MAAO,KACP,OAAQ,KACR,MAAO,IACT,EAGMC,EAAyD,CAC7D,MAAOC,EACP,MAAOC,CACT,EAMMC,EAAWC,EAAAA,WAA4C,SAC3D,CACE,UAAAC,EAAY,GACZ,cAAAC,EAAgB,GAChB,KAAAC,EAAO,SACP,QAAAC,EAAU,GACV,SAAAC,EACA,GAAIC,EACJ,QAAAC,EACA,eAAAC,EACA,SAAAC,EACA,SAAAC,EACA,GAAGC,CACL,EACAC,EACA,CACA,MAAMC,EAAWC,EAAAA,OAAyB,IAAI,EAC9CC,EAAAA,oBAAoBH,EAAK,IAAMC,EAAS,OAA2B,EACnE,MAAMG,EAAcC,EAAAA,MAAA,EACdC,EAAKZ,GAAUU,EACf,CAACG,EAAiBC,CAAY,EAAIC,EAAAA,gBACtCd,EACAC,EACAE,CAAA,EAGIY,EAAcpB,EAChB,QACAiB,EACE,QACA,KAENI,EAAAA,UAAU,IAAM,CACd,MAAMC,EAAQX,EAAS,QACnBW,MAAa,cAAgBtB,EACnC,EAAG,CAACA,CAAa,CAAC,EAElB,MAAMuB,EAAYC,EAAAA,QAAO,kBAAkBC,EAAAA,QAAQxB,CAAI,CAAC,EAAE,EACpDyB,EAAexB,EAAUsB,UAAO,mBAAmB,EAAI,GACvDG,EAAqB3B,EACvBwB,UAAO,yBAAyB,EAChC,GAEEI,EAAY,CAChBJ,EAAAA,QAAO,SACPD,EACAG,EACAC,EACA5B,CAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,EAEL8B,EAAWpC,EAAmBQ,CAAI,EAExC,OACE6B,EAAAA,KAAC,QAAA,CAAM,UAAWF,EAAW,QAASZ,EACpC,SAAA,CAAAe,EAAAA,IAAC,QAAA,CACC,IAAKpB,EACL,GAAAK,EACA,KAAK,WACL,UAAWQ,EAAAA,QAAO,gBAClB,QAAAnB,EACA,eAAAC,EACA,SAAAC,EACA,eAAcL,EAAU,GAAO,OAC/B,SAAUgB,EACT,GAAGT,EACH,GAAIT,EAAgB,CAAE,eAAgB,SAAqB,CAAA,CAAC,CAAA,EAE/D+B,MAAC,QAAK,UAAWP,EAAAA,QAAO,cACrB,SAAAJ,IAAgB,OACd,IAAM,CACL,MAAMY,EAAgBtC,EAAe0B,CAAW,EAChD,OACEW,EAAAA,IAAC,OAAA,CAAuB,UAAWP,EAAAA,QAAO,eACxC,SAAAO,MAACE,EAAAA,QAAA,CAAK,YAAQD,EAAA,CAAA,CAAc,EAAI,KAAMH,CAAA,CAAU,GADvCT,CAEX,CAEJ,IAAG,CACP,EACCjB,GAAY,MACX4B,EAAAA,IAAC,OAAA,CAAK,UAAWP,EAAAA,QAAO,gBAAqB,SAAArB,CAAA,CAAS,CAAA,EAE1D,CAEJ,CAAC,EAEDN,EAAS,YAAc"}
@@ -16,5 +16,6 @@ export interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement
16
16
  * A Checkbox lets people pick any number of options from a set, or toggle a single setting
17
17
  * on or off. Each box represents one independent choice — pick none, some, or all.
18
18
  */
19
- export default function Checkbox({ className, indeterminate, size, invalid, children, id: idProp, checked, defaultChecked, disabled, onChange, ...rest }: CheckboxProps): import("react/jsx-runtime").JSX.Element;
19
+ declare const Checkbox: import('react').ForwardRefExoticComponent<CheckboxProps & import('react').RefAttributes<HTMLInputElement>>;
20
+ export default Checkbox;
20
21
  //# sourceMappingURL=Checkbox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAWjD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,aAAc,SAAQ,IAAI,CACzC,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,MAAM,GAAG,MAAM,CAChB;IACC,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uFAAuF;IACvF,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAeD;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,SAAc,EACd,aAAqB,EACrB,IAAe,EACf,OAAe,EACf,QAAQ,EACR,EAAE,EAAE,MAAM,EACV,OAAO,EACP,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,aAAa,2CAsEf"}
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAiBjD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,aAAc,SAAQ,IAAI,CACzC,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,MAAM,GAAG,MAAM,CAChB;IACC,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uFAAuF;IACvF,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAeD;;;GAGG;AACH,QAAA,MAAM,QAAQ,4GAsFZ,CAAC;AAIH,eAAe,QAAQ,CAAC"}
@@ -1,73 +1,75 @@
1
- import { jsxs as v, jsx as e } from "react/jsx-runtime";
2
- import { useRef as E, useId as j, useEffect as y } from "react";
3
- import { useControllable as z } from "../../hooks/use-controllable.js";
4
- import B from "../icon/Icon.js";
1
+ import { jsxs as y, jsx as e } from "react/jsx-runtime";
2
+ import { forwardRef as E, useRef as j, useImperativeHandle as z, useId as R, useEffect as w } from "react";
3
+ import { useControllable as B } from "../../hooks/use-controllable.js";
4
+ import H from "../icon/Icon.js";
5
5
  import __K from "@mattermost/compass-icons/components/check.js";const K=__K&&__K.default?__K.default:__K;
6
6
  import __M from "@mattermost/compass-icons/components/minus.js";const M=__M&&__M.default?__M.default:__M;
7
- import { toKebab as R } from "../../utils/string.js";
7
+ import { toKebab as S } from "../../utils/string.js";
8
8
  import o from "./Checkbox.module.scss.js";
9
- const S = {
9
+ const F = {
10
10
  small: "10",
11
11
  medium: "12",
12
12
  large: "16"
13
- }, w = {
13
+ }, P = {
14
14
  check: K,
15
15
  minus: M
16
- };
17
- function A({
16
+ }, T = E(function({
18
17
  className: h = "",
19
18
  indeterminate: c = !1,
20
19
  size: l = "medium",
21
- invalid: t = !1,
22
- children: i,
20
+ invalid: a = !1,
21
+ children: r,
23
22
  id: p,
24
- checked: a,
25
- defaultChecked: r,
23
+ checked: i,
24
+ defaultChecked: m,
26
25
  disabled: f,
27
26
  onChange: b,
28
- ...x
29
- }) {
30
- const m = E(null), C = j(), u = p ?? C, [d, k] = z(
31
- a,
32
- r,
27
+ ...d
28
+ }, x) {
29
+ const n = j(null);
30
+ z(x, () => n.current);
31
+ const C = R(), u = p ?? C, [k, I] = B(
32
+ i,
33
+ m,
33
34
  b
34
- ), n = c ? "minus" : d ? "check" : null;
35
- y(() => {
36
- const s = m.current;
35
+ ), t = c ? "minus" : k ? "check" : null;
36
+ w(() => {
37
+ const s = n.current;
37
38
  s && (s.indeterminate = c);
38
39
  }, [c]);
39
- const _ = o[`checkbox--size-${R(l)}`], I = t ? o["checkbox--invalid"] : "", N = c ? o["checkbox--indeterminate"] : "", g = [
40
+ const _ = o[`checkbox--size-${S(l)}`], N = a ? o["checkbox--invalid"] : "", g = c ? o["checkbox--indeterminate"] : "", v = [
40
41
  o.checkbox,
41
42
  _,
42
- I,
43
43
  N,
44
+ g,
44
45
  h
45
- ].filter(Boolean).join(" "), O = S[l];
46
- return /* @__PURE__ */ v("label", { className: g, htmlFor: u, children: [
46
+ ].filter(Boolean).join(" "), O = F[l];
47
+ return /* @__PURE__ */ y("label", { className: v, htmlFor: u, children: [
47
48
  /* @__PURE__ */ e(
48
49
  "input",
49
50
  {
50
- ref: m,
51
+ ref: n,
51
52
  id: u,
52
53
  type: "checkbox",
53
54
  className: o.checkbox__input,
54
- checked: a,
55
- defaultChecked: r,
55
+ checked: i,
56
+ defaultChecked: m,
56
57
  disabled: f,
57
- "aria-invalid": t ? !0 : void 0,
58
- onChange: k,
59
- ...x,
58
+ "aria-invalid": a ? !0 : void 0,
59
+ onChange: I,
60
+ ...d,
60
61
  ...c ? { "aria-checked": "mixed" } : {}
61
62
  }
62
63
  ),
63
- /* @__PURE__ */ e("span", { className: o.checkbox__box, children: n !== null && (() => {
64
- const s = w[n];
65
- return /* @__PURE__ */ e("span", { className: o.checkbox__icon, children: /* @__PURE__ */ e(B, { glyph: /* @__PURE__ */ e(s, {}), size: O }) }, n);
64
+ /* @__PURE__ */ e("span", { className: o.checkbox__box, children: t !== null && (() => {
65
+ const s = P[t];
66
+ return /* @__PURE__ */ e("span", { className: o.checkbox__icon, children: /* @__PURE__ */ e(H, { glyph: /* @__PURE__ */ e(s, {}), size: O }) }, t);
66
67
  })() }),
67
- i != null && /* @__PURE__ */ e("span", { className: o.checkbox__label, children: i })
68
+ r != null && /* @__PURE__ */ e("span", { className: o.checkbox__label, children: r })
68
69
  ] });
69
- }
70
+ });
71
+ T.displayName = "Checkbox";
70
72
  export {
71
- A as default
73
+ T as default
72
74
  };
73
75
  //# sourceMappingURL=Checkbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","sources":["../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import type { InputHTMLAttributes } from 'react';\nimport { useRef, useEffect, useId } from 'react';\nimport { useControllable } from '@/hooks/use-controllable';\nimport Icon from '@/components/icon/Icon';\nimport type { IconSize } from '@/components/icon/Icon';\nimport type { ElementType } from 'react';\nimport CheckIcon from '@mattermost/compass-icons/components/check';\nimport MinusIcon from '@mattermost/compass-icons/components/minus';\nimport { toKebab } from '@/utils/string';\nimport styles from './Checkbox.module.scss';\n\nexport type CheckboxSize = 'small' | 'medium' | 'large';\n\nexport interface CheckboxProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'type'\n> {\n /** Optional CSS class name. */\n className?: string;\n /** When true, shows indeterminate (minus) state. Syncs to native input.indeterminate. */\n indeterminate?: boolean;\n /** Size variant. Figma: Small (12px), Medium (16px), Large (20px). Default: Medium. */\n size?: CheckboxSize;\n /** When true, uses error/destructive styling (red fill when checked). */\n invalid?: boolean;\n /** Label content. Rendered next to the checkbox. */\n children?: React.ReactNode;\n}\n\n/** Icon size from design system scale for each checkbox size (fits inside box). */\nconst CHECKBOX_ICON_SIZE: Record<CheckboxSize, IconSize> = {\n small: '10',\n medium: '12',\n large: '16',\n};\n\n/** Compass icon component per checked/indeterminate state. */\nconst ICON_COMPONENT: Record<'check' | 'minus', ElementType> = {\n check: CheckIcon,\n minus: MinusIcon,\n};\n\n/**\n * A Checkbox lets people pick any number of options from a set, or toggle a single setting\n * on or off. Each box represents one independent choice — pick none, some, or all.\n */\nexport default function Checkbox({\n className = '',\n indeterminate = false,\n size = 'medium',\n invalid = false,\n children,\n id: idProp,\n checked,\n defaultChecked,\n disabled,\n onChange,\n ...rest\n}: CheckboxProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const [resolvedChecked, handleChange] = useControllable(\n checked,\n defaultChecked,\n onChange,\n );\n\n const showingIcon = indeterminate\n ? 'minus'\n : resolvedChecked\n ? 'check'\n : null;\n\n useEffect(() => {\n const input = inputRef.current;\n if (input) input.indeterminate = indeterminate;\n }, [indeterminate]);\n\n const sizeClass = styles[`checkbox--size-${toKebab(size)}`];\n const invalidClass = invalid ? styles['checkbox--invalid'] : '';\n const indeterminateClass = indeterminate\n ? styles['checkbox--indeterminate']\n : '';\n\n const rootClass = [\n styles.checkbox,\n sizeClass,\n invalidClass,\n indeterminateClass,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const iconSize = CHECKBOX_ICON_SIZE[size];\n\n return (\n <label className={rootClass} htmlFor={id}>\n <input\n ref={inputRef}\n id={id}\n type=\"checkbox\"\n className={styles['checkbox__input']}\n checked={checked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n aria-invalid={invalid ? true : undefined}\n onChange={handleChange}\n {...rest}\n {...(indeterminate ? { 'aria-checked': 'mixed' as const } : {})}\n />\n <span className={styles['checkbox__box']}>\n {showingIcon !== null &&\n (() => {\n const IconComponent = ICON_COMPONENT[showingIcon];\n return (\n <span key={showingIcon} className={styles['checkbox__icon']}>\n <Icon glyph={<IconComponent />} size={iconSize} />\n </span>\n );\n })()}\n </span>\n {children != null && (\n <span className={styles['checkbox__label']}>{children}</span>\n )}\n </label>\n );\n}\n"],"names":["CHECKBOX_ICON_SIZE","ICON_COMPONENT","CheckIcon","MinusIcon","Checkbox","className","indeterminate","size","invalid","children","idProp","checked","defaultChecked","disabled","onChange","rest","inputRef","useRef","generatedId","useId","id","resolvedChecked","handleChange","useControllable","showingIcon","useEffect","input","sizeClass","styles","toKebab","invalidClass","indeterminateClass","rootClass","iconSize","jsxs","jsx","IconComponent","Icon"],"mappings":";;;;;;;;AA8BA,MAAMA,IAAqD;AAAA,EACzD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT,GAGMC,IAAyD;AAAA,EAC7D,OAAOC;AAAA,EACP,OAAOC;AACT;AAMA,SAAwBC,EAAS;AAAA,EAC/B,WAAAC,IAAY;AAAA,EACZ,eAAAC,IAAgB;AAAA,EAChB,MAAAC,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,UAAAC;AAAA,EACA,IAAIC;AAAA,EACJ,SAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GAAkB;AAChB,QAAMC,IAAWC,EAAyB,IAAI,GACxCC,IAAcC,EAAA,GACdC,IAAKV,KAAUQ,GACf,CAACG,GAAiBC,CAAY,IAAIC;AAAA,IACtCZ;AAAA,IACAC;AAAA,IACAE;AAAA,EAAA,GAGIU,IAAclB,IAChB,UACAe,IACE,UACA;AAEN,EAAAI,EAAU,MAAM;AACd,UAAMC,IAAQV,EAAS;AACvB,IAAIU,QAAa,gBAAgBpB;AAAA,EACnC,GAAG,CAACA,CAAa,CAAC;AAElB,QAAMqB,IAAYC,EAAO,kBAAkBC,EAAQtB,CAAI,CAAC,EAAE,GACpDuB,IAAetB,IAAUoB,EAAO,mBAAmB,IAAI,IACvDG,IAAqBzB,IACvBsB,EAAO,yBAAyB,IAChC,IAEEI,IAAY;AAAA,IAChBJ,EAAO;AAAA,IACPD;AAAA,IACAG;AAAA,IACAC;AAAA,IACA1B;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAEL4B,IAAWjC,EAAmBO,CAAI;AAExC,SACE,gBAAA2B,EAAC,SAAA,EAAM,WAAWF,GAAW,SAASZ,GACpC,UAAA;AAAA,IAAA,gBAAAe;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKnB;AAAA,QACL,IAAAI;AAAA,QACA,MAAK;AAAA,QACL,WAAWQ,EAAO;AAAA,QAClB,SAAAjB;AAAA,QACA,gBAAAC;AAAA,QACA,UAAAC;AAAA,QACA,gBAAcL,IAAU,KAAO;AAAA,QAC/B,UAAUc;AAAA,QACT,GAAGP;AAAA,QACH,GAAIT,IAAgB,EAAE,gBAAgB,YAAqB,CAAA;AAAA,MAAC;AAAA,IAAA;AAAA,IAE/D,gBAAA6B,EAAC,UAAK,WAAWP,EAAO,eACrB,UAAAJ,MAAgB,SACd,MAAM;AACL,YAAMY,IAAgBnC,EAAeuB,CAAW;AAChD,aACE,gBAAAW,EAAC,QAAA,EAAuB,WAAWP,EAAO,gBACxC,UAAA,gBAAAO,EAACE,GAAA,EAAK,yBAAQD,GAAA,CAAA,CAAc,GAAI,MAAMH,EAAA,CAAU,KADvCT,CAEX;AAAA,IAEJ,KAAG,CACP;AAAA,IACCf,KAAY,QACX,gBAAA0B,EAAC,QAAA,EAAK,WAAWP,EAAO,iBAAqB,UAAAnB,EAAA,CAAS;AAAA,EAAA,GAE1D;AAEJ;"}
1
+ {"version":3,"file":"Checkbox.js","sources":["../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import type { InputHTMLAttributes } from 'react';\nimport {\n forwardRef,\n useEffect,\n useId,\n useImperativeHandle,\n useRef,\n} from 'react';\nimport { useControllable } from '@/hooks/use-controllable';\nimport Icon from '@/components/icon/Icon';\nimport type { IconSize } from '@/components/icon/Icon';\nimport type { ElementType } from 'react';\nimport CheckIcon from '@mattermost/compass-icons/components/check';\nimport MinusIcon from '@mattermost/compass-icons/components/minus';\nimport { toKebab } from '@/utils/string';\nimport styles from './Checkbox.module.scss';\n\nexport type CheckboxSize = 'small' | 'medium' | 'large';\n\nexport interface CheckboxProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'size' | 'type'\n> {\n /** Optional CSS class name. */\n className?: string;\n /** When true, shows indeterminate (minus) state. Syncs to native input.indeterminate. */\n indeterminate?: boolean;\n /** Size variant. Figma: Small (12px), Medium (16px), Large (20px). Default: Medium. */\n size?: CheckboxSize;\n /** When true, uses error/destructive styling (red fill when checked). */\n invalid?: boolean;\n /** Label content. Rendered next to the checkbox. */\n children?: React.ReactNode;\n}\n\n/** Icon size from design system scale for each checkbox size (fits inside box). */\nconst CHECKBOX_ICON_SIZE: Record<CheckboxSize, IconSize> = {\n small: '10',\n medium: '12',\n large: '16',\n};\n\n/** Compass icon component per checked/indeterminate state. */\nconst ICON_COMPONENT: Record<'check' | 'minus', ElementType> = {\n check: CheckIcon,\n minus: MinusIcon,\n};\n\n/**\n * A Checkbox lets people pick any number of options from a set, or toggle a single setting\n * on or off. Each box represents one independent choice — pick none, some, or all.\n */\nconst Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n {\n className = '',\n indeterminate = false,\n size = 'medium',\n invalid = false,\n children,\n id: idProp,\n checked,\n defaultChecked,\n disabled,\n onChange,\n ...rest\n },\n ref,\n) {\n const inputRef = useRef<HTMLInputElement>(null);\n useImperativeHandle(ref, () => inputRef.current as HTMLInputElement);\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const [resolvedChecked, handleChange] = useControllable(\n checked,\n defaultChecked,\n onChange,\n );\n\n const showingIcon = indeterminate\n ? 'minus'\n : resolvedChecked\n ? 'check'\n : null;\n\n useEffect(() => {\n const input = inputRef.current;\n if (input) input.indeterminate = indeterminate;\n }, [indeterminate]);\n\n const sizeClass = styles[`checkbox--size-${toKebab(size)}`];\n const invalidClass = invalid ? styles['checkbox--invalid'] : '';\n const indeterminateClass = indeterminate\n ? styles['checkbox--indeterminate']\n : '';\n\n const rootClass = [\n styles.checkbox,\n sizeClass,\n invalidClass,\n indeterminateClass,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const iconSize = CHECKBOX_ICON_SIZE[size];\n\n return (\n <label className={rootClass} htmlFor={id}>\n <input\n ref={inputRef}\n id={id}\n type=\"checkbox\"\n className={styles['checkbox__input']}\n checked={checked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n aria-invalid={invalid ? true : undefined}\n onChange={handleChange}\n {...rest}\n {...(indeterminate ? { 'aria-checked': 'mixed' as const } : {})}\n />\n <span className={styles['checkbox__box']}>\n {showingIcon !== null &&\n (() => {\n const IconComponent = ICON_COMPONENT[showingIcon];\n return (\n <span key={showingIcon} className={styles['checkbox__icon']}>\n <Icon glyph={<IconComponent />} size={iconSize} />\n </span>\n );\n })()}\n </span>\n {children != null && (\n <span className={styles['checkbox__label']}>{children}</span>\n )}\n </label>\n );\n});\n\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n"],"names":["CHECKBOX_ICON_SIZE","ICON_COMPONENT","CheckIcon","MinusIcon","Checkbox","forwardRef","className","indeterminate","size","invalid","children","idProp","checked","defaultChecked","disabled","onChange","rest","ref","inputRef","useRef","useImperativeHandle","generatedId","useId","id","resolvedChecked","handleChange","useControllable","showingIcon","useEffect","input","sizeClass","styles","toKebab","invalidClass","indeterminateClass","rootClass","iconSize","jsxs","jsx","IconComponent","Icon"],"mappings":";;;;;;;;AAoCA,MAAMA,IAAqD;AAAA,EACzD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT,GAGMC,IAAyD;AAAA,EAC7D,OAAOC;AAAA,EACP,OAAOC;AACT,GAMMC,IAAWC,EAA4C,SAC3D;AAAA,EACE,WAAAC,IAAY;AAAA,EACZ,eAAAC,IAAgB;AAAA,EAChB,MAAAC,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,UAAAC;AAAA,EACA,IAAIC;AAAA,EACJ,SAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAWC,EAAyB,IAAI;AAC9C,EAAAC,EAAoBH,GAAK,MAAMC,EAAS,OAA2B;AACnE,QAAMG,IAAcC,EAAA,GACdC,IAAKZ,KAAUU,GACf,CAACG,GAAiBC,CAAY,IAAIC;AAAA,IACtCd;AAAA,IACAC;AAAA,IACAE;AAAA,EAAA,GAGIY,IAAcpB,IAChB,UACAiB,IACE,UACA;AAEN,EAAAI,EAAU,MAAM;AACd,UAAMC,IAAQX,EAAS;AACvB,IAAIW,QAAa,gBAAgBtB;AAAA,EACnC,GAAG,CAACA,CAAa,CAAC;AAElB,QAAMuB,IAAYC,EAAO,kBAAkBC,EAAQxB,CAAI,CAAC,EAAE,GACpDyB,IAAexB,IAAUsB,EAAO,mBAAmB,IAAI,IACvDG,IAAqB3B,IACvBwB,EAAO,yBAAyB,IAChC,IAEEI,IAAY;AAAA,IAChBJ,EAAO;AAAA,IACPD;AAAA,IACAG;AAAA,IACAC;AAAA,IACA5B;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAEL8B,IAAWpC,EAAmBQ,CAAI;AAExC,SACE,gBAAA6B,EAAC,SAAA,EAAM,WAAWF,GAAW,SAASZ,GACpC,UAAA;AAAA,IAAA,gBAAAe;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKpB;AAAA,QACL,IAAAK;AAAA,QACA,MAAK;AAAA,QACL,WAAWQ,EAAO;AAAA,QAClB,SAAAnB;AAAA,QACA,gBAAAC;AAAA,QACA,UAAAC;AAAA,QACA,gBAAcL,IAAU,KAAO;AAAA,QAC/B,UAAUgB;AAAA,QACT,GAAGT;AAAA,QACH,GAAIT,IAAgB,EAAE,gBAAgB,YAAqB,CAAA;AAAA,MAAC;AAAA,IAAA;AAAA,IAE/D,gBAAA+B,EAAC,UAAK,WAAWP,EAAO,eACrB,UAAAJ,MAAgB,SACd,MAAM;AACL,YAAMY,IAAgBtC,EAAe0B,CAAW;AAChD,aACE,gBAAAW,EAAC,QAAA,EAAuB,WAAWP,EAAO,gBACxC,UAAA,gBAAAO,EAACE,GAAA,EAAK,yBAAQD,GAAA,CAAA,CAAc,GAAI,MAAMH,EAAA,CAAU,KADvCT,CAEX;AAAA,IAEJ,KAAG,CACP;AAAA,IACCjB,KAAY,QACX,gBAAA4B,EAAC,QAAA,EAAK,WAAWP,EAAO,iBAAqB,UAAArB,EAAA,CAAS;AAAA,EAAA,GAE1D;AAEJ,CAAC;AAEDN,EAAS,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Chip.cjs","sources":["../../../src/components/chip/Chip.tsx"],"sourcesContent":["import { useContext, type HTMLAttributes, type KeyboardEvent, type MouseEvent, type ReactNode } from 'react';\nimport CloseCircleIcon from '@mattermost/compass-icons/components/close-circle';\nimport Icon from '@/components/icon/Icon';\nimport type { IconSize } from '@/components/icon/Icon';\nimport UserAvatar from '@/components/user-avatar/UserAvatar';\nimport type { UserAvatarSize } from '@/components/user-avatar/UserAvatar';\nimport { toKebab } from '@/utils/string';\nimport { activateChip, ChipGroupContext } from './ChipGroup';\nimport styles from './Chip.module.scss';\n\nexport type ChipSize = 'small' | 'medium' | 'large';\n\nexport interface ChipProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'children'\n> {\n /** Chip label. */\n children: ReactNode;\n /** Visual size. Default: Medium. */\n size?: ChipSize;\n /** Reduces vertical and horizontal padding. */\n compact?: boolean;\n /** Leading icon from @mattermost/compass-icons. */\n leadingIcon?: ReactNode;\n /** Leading avatar. Overrides leading-icon when both are provided. */\n leadingAvatar?: { src: string; alt: string };\n /** When provided, shows the remove (×) control and calls this on click. */\n onRemove?: (e: MouseEvent<HTMLButtonElement>) => void;\n /** Shows an error border. */\n error?: boolean;\n /** Adds a colored background overlay. */\n colored?: boolean;\n className?: string;\n}\n\nconst ICON_SIZE_MAP: Record<ChipSize, IconSize> = {\n small: '10',\n medium: '12',\n large: '16',\n};\n\nconst AVATAR_SIZE_MAP: Record<ChipSize, UserAvatarSize> = {\n small: '12',\n medium: '16',\n large: '20',\n};\n\nfunction labelTextFromChildren(children: ReactNode): string {\n if (typeof children === 'string' || typeof children === 'number') {\n return String(children).trim();\n }\n if (Array.isArray(children)) {\n return children.map(labelTextFromChildren).filter(Boolean).join(' ');\n }\n return '';\n}\n\nfunction focusTargetAfterRemove(chipEl: HTMLElement): HTMLElement | null {\n const scan = (\n start: Element | null,\n direction: 'next' | 'previous',\n ): HTMLElement | null => {\n let el: Element | null = start;\n while (el) {\n if (el instanceof HTMLElement && el.dataset.chip != null) {\n return el;\n }\n if (\n el instanceof HTMLInputElement ||\n el instanceof HTMLTextAreaElement\n ) {\n return el;\n }\n el =\n direction === 'next' ? el.nextElementSibling : el.previousElementSibling;\n }\n return null;\n };\n\n const parent = chipEl.parentElement;\n const afterGroup = parent?.nextElementSibling;\n const groupSiblingInput =\n afterGroup instanceof HTMLInputElement ||\n afterGroup instanceof HTMLTextAreaElement\n ? afterGroup\n : null;\n\n return (\n scan(chipEl.nextElementSibling, 'next') ??\n scan(chipEl.previousElementSibling, 'previous') ??\n groupSiblingInput ??\n parent?.querySelector('input, textarea') ??\n parent?.parentElement?.querySelector('input, textarea') ??\n null\n );\n}\n\n/**\n * Chips are compact, self-contained tokens that represent a selection — a person added to an\n * invite, a filter applied to a search, a chosen value in a tokenizing input. Each Chip\n * stands on its own and is removable or selectable, depending on context.\n */\nexport default function Chip({\n children,\n size = 'medium',\n compact = false,\n leadingIcon,\n leadingAvatar,\n onRemove,\n error = false,\n colored = false,\n className = '',\n ...rest\n}: ChipProps) {\n const grouped = useContext(ChipGroupContext);\n const iconSize = ICON_SIZE_MAP[size];\n const avatarSize = AVATAR_SIZE_MAP[size];\n const labelText = labelTextFromChildren(children);\n const groupedAriaLabel =\n rest['aria-label'] ??\n (onRemove != null && labelText !== ''\n ? `${labelText}. Press Delete to remove.`\n : labelText !== ''\n ? labelText\n : undefined);\n const removable = onRemove != null;\n\n const handleRemove = (e: MouseEvent<HTMLButtonElement>) => {\n const chipEl = e.currentTarget.closest('[data-chip]');\n const nextFocus =\n chipEl instanceof HTMLElement ? focusTargetAfterRemove(chipEl) : null;\n const removeButton = e.currentTarget;\n onRemove?.(e);\n window.setTimeout(() => {\n if (removeButton.isConnected || nextFocus == null) return;\n if (!nextFocus.isConnected) return;\n if (nextFocus.dataset.chip != null) {\n activateChip(nextFocus);\n } else {\n nextFocus.focus({ focusVisible: true } as FocusOptions);\n }\n }, 0);\n };\n\n const rootClass = [\n styles.chip,\n styles[`chip--size-${toKebab(size)}`],\n compact && styles['chip--compact'],\n error && styles['chip--error'],\n colored && styles['chip--colored'],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n rest.onKeyDown?.(e);\n if (grouped || !removable || e.defaultPrevented) return;\n if (\n e.key === 'Delete' ||\n e.key === 'Backspace' ||\n e.key === 'Enter' ||\n e.key === ' '\n ) {\n e.preventDefault();\n e.currentTarget\n .querySelector<HTMLButtonElement>('[data-chip-remove]')\n ?.click();\n }\n };\n\n return (\n <div\n className={rootClass}\n {...rest}\n role={removable ? 'button' : rest.role}\n tabIndex={removable ? (grouped ? -1 : 0) : rest.tabIndex}\n aria-label={removable ? groupedAriaLabel : rest['aria-label']}\n data-chip=\"\"\n onKeyDown={handleKeyDown}\n >\n {leadingAvatar != null ? (\n <span className={styles['chip__avatar-slot']}>\n <UserAvatar\n src={leadingAvatar.src}\n alt={leadingAvatar.alt}\n size={avatarSize}\n />\n </span>\n ) : leadingIcon != null ? (\n <span className={styles['chip__icon-slot']} aria-hidden>\n <Icon glyph={leadingIcon} size={iconSize} />\n </span>\n ) : null}\n <span className={styles['chip__label']}>{children}</span>\n {onRemove != null ? (\n <button\n type=\"button\"\n className={styles['chip__remove']}\n data-chip-remove=\"\"\n tabIndex={-1}\n aria-hidden\n onMouseDown={(e) => {\n e.preventDefault();\n }}\n onClick={handleRemove}\n >\n <CloseCircleIcon size={Number(iconSize)} aria-hidden />\n </button>\n ) : null}\n </div>\n );\n}\n"],"names":["ICON_SIZE_MAP","AVATAR_SIZE_MAP","labelTextFromChildren","children","focusTargetAfterRemove","chipEl","scan","start","direction","el","parent","afterGroup","groupSiblingInput","_a","Chip","size","compact","leadingIcon","leadingAvatar","onRemove","error","colored","className","rest","grouped","useContext","ChipGroupContext","iconSize","avatarSize","labelText","groupedAriaLabel","removable","handleRemove","nextFocus","removeButton","activateChip","rootClass","styles","toKebab","handleKeyDown","_b","jsxs","jsx","UserAvatar","Icon","CloseCircleIcon"],"mappings":"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"}
1
+ {"version":3,"file":"Chip.cjs","sources":["../../../src/components/chip/Chip.tsx"],"sourcesContent":["import {\n useContext,\n type HTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport CloseCircleIcon from '@mattermost/compass-icons/components/close-circle';\nimport Icon from '@/components/icon/Icon';\nimport type { IconSize } from '@/components/icon/Icon';\nimport UserAvatar from '@/components/user-avatar/UserAvatar';\nimport type { UserAvatarSize } from '@/components/user-avatar/UserAvatar';\nimport { toKebab } from '@/utils/string';\nimport { activateChip, ChipGroupContext } from './ChipGroup';\nimport styles from './Chip.module.scss';\n\nexport type ChipSize = 'small' | 'medium' | 'large';\n\nexport interface ChipProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'children'\n> {\n /** Chip label. */\n children: ReactNode;\n /** Visual size. Default: Medium. */\n size?: ChipSize;\n /** Reduces vertical and horizontal padding. */\n compact?: boolean;\n /** Leading icon from @mattermost/compass-icons. */\n leadingIcon?: ReactNode;\n /** Leading avatar. Overrides leading-icon when both are provided. */\n leadingAvatar?: { src: string; alt: string };\n /** When provided, shows the remove (×) control and calls this on click. */\n onRemove?: (e: MouseEvent<HTMLButtonElement>) => void;\n /** Shows an error border. */\n error?: boolean;\n /** Adds a colored background overlay. */\n colored?: boolean;\n className?: string;\n}\n\nconst ICON_SIZE_MAP: Record<ChipSize, IconSize> = {\n small: '10',\n medium: '12',\n large: '16',\n};\n\nconst AVATAR_SIZE_MAP: Record<ChipSize, UserAvatarSize> = {\n small: '12',\n medium: '16',\n large: '20',\n};\n\nfunction labelTextFromChildren(children: ReactNode): string {\n if (typeof children === 'string' || typeof children === 'number') {\n return String(children).trim();\n }\n if (Array.isArray(children)) {\n return children.map(labelTextFromChildren).filter(Boolean).join(' ');\n }\n return '';\n}\n\nfunction focusTargetAfterRemove(chipEl: HTMLElement): HTMLElement | null {\n const scan = (\n start: Element | null,\n direction: 'next' | 'previous',\n ): HTMLElement | null => {\n let el: Element | null = start;\n while (el) {\n if (el instanceof HTMLElement && el.dataset.chip != null) {\n return el;\n }\n if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement) {\n return el;\n }\n el =\n direction === 'next'\n ? el.nextElementSibling\n : el.previousElementSibling;\n }\n return null;\n };\n\n const parent = chipEl.parentElement;\n const afterGroup = parent?.nextElementSibling;\n const groupSiblingInput =\n afterGroup instanceof HTMLInputElement ||\n afterGroup instanceof HTMLTextAreaElement\n ? afterGroup\n : null;\n\n return (\n scan(chipEl.nextElementSibling, 'next') ??\n scan(chipEl.previousElementSibling, 'previous') ??\n groupSiblingInput ??\n parent?.querySelector('input, textarea') ??\n parent?.parentElement?.querySelector('input, textarea') ??\n null\n );\n}\n\n/**\n * Chips are compact, self-contained tokens that represent a selection — a person added to an\n * invite, a filter applied to a search, a chosen value in a tokenizing input. Each Chip\n * stands on its own and is removable or selectable, depending on context.\n */\nexport default function Chip({\n children,\n size = 'medium',\n compact = false,\n leadingIcon,\n leadingAvatar,\n onRemove,\n error = false,\n colored = false,\n className = '',\n ...rest\n}: ChipProps) {\n const grouped = useContext(ChipGroupContext);\n const iconSize = ICON_SIZE_MAP[size];\n const avatarSize = AVATAR_SIZE_MAP[size];\n const labelText = labelTextFromChildren(children);\n const groupedAriaLabel =\n rest['aria-label'] ??\n (onRemove != null && labelText !== ''\n ? `${labelText}. Press Delete to remove.`\n : labelText !== ''\n ? labelText\n : undefined);\n const removable = onRemove != null;\n\n const handleRemove = (e: MouseEvent<HTMLButtonElement>) => {\n const chipEl = e.currentTarget.closest('[data-chip]');\n const nextFocus =\n chipEl instanceof HTMLElement ? focusTargetAfterRemove(chipEl) : null;\n const removeButton = e.currentTarget;\n onRemove?.(e);\n window.setTimeout(() => {\n if (removeButton.isConnected || nextFocus == null) return;\n if (!nextFocus.isConnected) return;\n if (nextFocus.dataset.chip != null) {\n activateChip(nextFocus);\n } else {\n nextFocus.focus({ focusVisible: true } as FocusOptions);\n }\n }, 0);\n };\n\n const rootClass = [\n styles.chip,\n styles[`chip--size-${toKebab(size)}`],\n compact && styles['chip--compact'],\n error && styles['chip--error'],\n colored && styles['chip--colored'],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n rest.onKeyDown?.(e);\n if (grouped || !removable || e.defaultPrevented) return;\n if (\n e.key === 'Delete' ||\n e.key === 'Backspace' ||\n e.key === 'Enter' ||\n e.key === ' '\n ) {\n e.preventDefault();\n e.currentTarget\n .querySelector<HTMLButtonElement>('[data-chip-remove]')\n ?.click();\n }\n };\n\n return (\n <div\n className={rootClass}\n {...rest}\n role={removable ? 'button' : rest.role}\n tabIndex={removable ? (grouped ? -1 : 0) : rest.tabIndex}\n aria-label={removable ? groupedAriaLabel : rest['aria-label']}\n data-chip=\"\"\n onKeyDown={handleKeyDown}\n >\n {leadingAvatar != null ? (\n <span className={styles['chip__avatar-slot']}>\n <UserAvatar\n src={leadingAvatar.src}\n alt={leadingAvatar.alt}\n size={avatarSize}\n />\n </span>\n ) : leadingIcon != null ? (\n <span className={styles['chip__icon-slot']} aria-hidden>\n <Icon glyph={leadingIcon} size={iconSize} />\n </span>\n ) : null}\n <span className={styles['chip__label']}>{children}</span>\n {onRemove != null ? (\n <button\n type=\"button\"\n className={styles['chip__remove']}\n data-chip-remove=\"\"\n tabIndex={-1}\n aria-hidden\n onMouseDown={(e) => {\n e.preventDefault();\n }}\n onClick={handleRemove}\n >\n <CloseCircleIcon size={Number(iconSize)} aria-hidden />\n </button>\n ) : null}\n </div>\n );\n}\n"],"names":["ICON_SIZE_MAP","AVATAR_SIZE_MAP","labelTextFromChildren","children","focusTargetAfterRemove","chipEl","scan","start","direction","el","parent","afterGroup","groupSiblingInput","_a","Chip","size","compact","leadingIcon","leadingAvatar","onRemove","error","colored","className","rest","grouped","useContext","ChipGroupContext","iconSize","avatarSize","labelText","groupedAriaLabel","removable","handleRemove","nextFocus","removeButton","activateChip","rootClass","styles","toKebab","handleKeyDown","_b","jsxs","jsx","UserAvatar","Icon","CloseCircleIcon"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Chip.d.ts","sourceRoot":"","sources":["../../../src/components/chip/Chip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAsB,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAU7G,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,SAAU,SAAQ,IAAI,CACrC,cAAc,CAAC,cAAc,CAAC,EAC9B,UAAU,CACX;IACC,kBAAkB;IAClB,QAAQ,EAAE,SAAS,CAAC;IACpB,oCAAoC;IACpC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,qEAAqE;IACrE,aAAa,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACtD,6BAA6B;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAC3B,QAAQ,EACR,IAAe,EACf,OAAe,EACf,WAAW,EACX,aAAa,EACb,QAAQ,EACR,KAAa,EACb,OAAe,EACf,SAAc,EACd,GAAG,IAAI,EACR,EAAE,SAAS,2CAmGX"}
1
+ {"version":3,"file":"Chip.d.ts","sourceRoot":"","sources":["../../../src/components/chip/Chip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAUf,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,SAAU,SAAQ,IAAI,CACrC,cAAc,CAAC,cAAc,CAAC,EAC9B,UAAU,CACX;IACC,kBAAkB;IAClB,QAAQ,EAAE,SAAS,CAAC;IACpB,oCAAoC;IACpC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,qEAAqE;IACrE,aAAa,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACtD,6BAA6B;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+DD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAC3B,QAAQ,EACR,IAAe,EACf,OAAe,EACf,WAAW,EACX,aAAa,EACb,QAAQ,EACR,KAAa,EACb,OAAe,EACf,SAAc,EACd,GAAG,IAAI,EACR,EAAE,SAAS,2CAmGX"}
@@ -1 +1 @@
1
- {"version":3,"file":"Chip.js","sources":["../../../src/components/chip/Chip.tsx"],"sourcesContent":["import { useContext, type HTMLAttributes, type KeyboardEvent, type MouseEvent, type ReactNode } from 'react';\nimport CloseCircleIcon from '@mattermost/compass-icons/components/close-circle';\nimport Icon from '@/components/icon/Icon';\nimport type { IconSize } from '@/components/icon/Icon';\nimport UserAvatar from '@/components/user-avatar/UserAvatar';\nimport type { UserAvatarSize } from '@/components/user-avatar/UserAvatar';\nimport { toKebab } from '@/utils/string';\nimport { activateChip, ChipGroupContext } from './ChipGroup';\nimport styles from './Chip.module.scss';\n\nexport type ChipSize = 'small' | 'medium' | 'large';\n\nexport interface ChipProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'children'\n> {\n /** Chip label. */\n children: ReactNode;\n /** Visual size. Default: Medium. */\n size?: ChipSize;\n /** Reduces vertical and horizontal padding. */\n compact?: boolean;\n /** Leading icon from @mattermost/compass-icons. */\n leadingIcon?: ReactNode;\n /** Leading avatar. Overrides leading-icon when both are provided. */\n leadingAvatar?: { src: string; alt: string };\n /** When provided, shows the remove (×) control and calls this on click. */\n onRemove?: (e: MouseEvent<HTMLButtonElement>) => void;\n /** Shows an error border. */\n error?: boolean;\n /** Adds a colored background overlay. */\n colored?: boolean;\n className?: string;\n}\n\nconst ICON_SIZE_MAP: Record<ChipSize, IconSize> = {\n small: '10',\n medium: '12',\n large: '16',\n};\n\nconst AVATAR_SIZE_MAP: Record<ChipSize, UserAvatarSize> = {\n small: '12',\n medium: '16',\n large: '20',\n};\n\nfunction labelTextFromChildren(children: ReactNode): string {\n if (typeof children === 'string' || typeof children === 'number') {\n return String(children).trim();\n }\n if (Array.isArray(children)) {\n return children.map(labelTextFromChildren).filter(Boolean).join(' ');\n }\n return '';\n}\n\nfunction focusTargetAfterRemove(chipEl: HTMLElement): HTMLElement | null {\n const scan = (\n start: Element | null,\n direction: 'next' | 'previous',\n ): HTMLElement | null => {\n let el: Element | null = start;\n while (el) {\n if (el instanceof HTMLElement && el.dataset.chip != null) {\n return el;\n }\n if (\n el instanceof HTMLInputElement ||\n el instanceof HTMLTextAreaElement\n ) {\n return el;\n }\n el =\n direction === 'next' ? el.nextElementSibling : el.previousElementSibling;\n }\n return null;\n };\n\n const parent = chipEl.parentElement;\n const afterGroup = parent?.nextElementSibling;\n const groupSiblingInput =\n afterGroup instanceof HTMLInputElement ||\n afterGroup instanceof HTMLTextAreaElement\n ? afterGroup\n : null;\n\n return (\n scan(chipEl.nextElementSibling, 'next') ??\n scan(chipEl.previousElementSibling, 'previous') ??\n groupSiblingInput ??\n parent?.querySelector('input, textarea') ??\n parent?.parentElement?.querySelector('input, textarea') ??\n null\n );\n}\n\n/**\n * Chips are compact, self-contained tokens that represent a selection — a person added to an\n * invite, a filter applied to a search, a chosen value in a tokenizing input. Each Chip\n * stands on its own and is removable or selectable, depending on context.\n */\nexport default function Chip({\n children,\n size = 'medium',\n compact = false,\n leadingIcon,\n leadingAvatar,\n onRemove,\n error = false,\n colored = false,\n className = '',\n ...rest\n}: ChipProps) {\n const grouped = useContext(ChipGroupContext);\n const iconSize = ICON_SIZE_MAP[size];\n const avatarSize = AVATAR_SIZE_MAP[size];\n const labelText = labelTextFromChildren(children);\n const groupedAriaLabel =\n rest['aria-label'] ??\n (onRemove != null && labelText !== ''\n ? `${labelText}. Press Delete to remove.`\n : labelText !== ''\n ? labelText\n : undefined);\n const removable = onRemove != null;\n\n const handleRemove = (e: MouseEvent<HTMLButtonElement>) => {\n const chipEl = e.currentTarget.closest('[data-chip]');\n const nextFocus =\n chipEl instanceof HTMLElement ? focusTargetAfterRemove(chipEl) : null;\n const removeButton = e.currentTarget;\n onRemove?.(e);\n window.setTimeout(() => {\n if (removeButton.isConnected || nextFocus == null) return;\n if (!nextFocus.isConnected) return;\n if (nextFocus.dataset.chip != null) {\n activateChip(nextFocus);\n } else {\n nextFocus.focus({ focusVisible: true } as FocusOptions);\n }\n }, 0);\n };\n\n const rootClass = [\n styles.chip,\n styles[`chip--size-${toKebab(size)}`],\n compact && styles['chip--compact'],\n error && styles['chip--error'],\n colored && styles['chip--colored'],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n rest.onKeyDown?.(e);\n if (grouped || !removable || e.defaultPrevented) return;\n if (\n e.key === 'Delete' ||\n e.key === 'Backspace' ||\n e.key === 'Enter' ||\n e.key === ' '\n ) {\n e.preventDefault();\n e.currentTarget\n .querySelector<HTMLButtonElement>('[data-chip-remove]')\n ?.click();\n }\n };\n\n return (\n <div\n className={rootClass}\n {...rest}\n role={removable ? 'button' : rest.role}\n tabIndex={removable ? (grouped ? -1 : 0) : rest.tabIndex}\n aria-label={removable ? groupedAriaLabel : rest['aria-label']}\n data-chip=\"\"\n onKeyDown={handleKeyDown}\n >\n {leadingAvatar != null ? (\n <span className={styles['chip__avatar-slot']}>\n <UserAvatar\n src={leadingAvatar.src}\n alt={leadingAvatar.alt}\n size={avatarSize}\n />\n </span>\n ) : leadingIcon != null ? (\n <span className={styles['chip__icon-slot']} aria-hidden>\n <Icon glyph={leadingIcon} size={iconSize} />\n </span>\n ) : null}\n <span className={styles['chip__label']}>{children}</span>\n {onRemove != null ? (\n <button\n type=\"button\"\n className={styles['chip__remove']}\n data-chip-remove=\"\"\n tabIndex={-1}\n aria-hidden\n onMouseDown={(e) => {\n e.preventDefault();\n }}\n onClick={handleRemove}\n >\n <CloseCircleIcon size={Number(iconSize)} aria-hidden />\n </button>\n ) : null}\n </div>\n );\n}\n"],"names":["ICON_SIZE_MAP","AVATAR_SIZE_MAP","labelTextFromChildren","children","focusTargetAfterRemove","chipEl","scan","start","direction","el","parent","afterGroup","groupSiblingInput","_a","Chip","size","compact","leadingIcon","leadingAvatar","onRemove","error","colored","className","rest","grouped","useContext","ChipGroupContext","iconSize","avatarSize","labelText","groupedAriaLabel","removable","handleRemove","nextFocus","removeButton","activateChip","rootClass","styles","toKebab","handleKeyDown","_b","jsxs","jsx","UserAvatar","Icon","CloseCircleIcon"],"mappings":"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"}
1
+ {"version":3,"file":"Chip.js","sources":["../../../src/components/chip/Chip.tsx"],"sourcesContent":["import {\n useContext,\n type HTMLAttributes,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport CloseCircleIcon from '@mattermost/compass-icons/components/close-circle';\nimport Icon from '@/components/icon/Icon';\nimport type { IconSize } from '@/components/icon/Icon';\nimport UserAvatar from '@/components/user-avatar/UserAvatar';\nimport type { UserAvatarSize } from '@/components/user-avatar/UserAvatar';\nimport { toKebab } from '@/utils/string';\nimport { activateChip, ChipGroupContext } from './ChipGroup';\nimport styles from './Chip.module.scss';\n\nexport type ChipSize = 'small' | 'medium' | 'large';\n\nexport interface ChipProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'children'\n> {\n /** Chip label. */\n children: ReactNode;\n /** Visual size. Default: Medium. */\n size?: ChipSize;\n /** Reduces vertical and horizontal padding. */\n compact?: boolean;\n /** Leading icon from @mattermost/compass-icons. */\n leadingIcon?: ReactNode;\n /** Leading avatar. Overrides leading-icon when both are provided. */\n leadingAvatar?: { src: string; alt: string };\n /** When provided, shows the remove (×) control and calls this on click. */\n onRemove?: (e: MouseEvent<HTMLButtonElement>) => void;\n /** Shows an error border. */\n error?: boolean;\n /** Adds a colored background overlay. */\n colored?: boolean;\n className?: string;\n}\n\nconst ICON_SIZE_MAP: Record<ChipSize, IconSize> = {\n small: '10',\n medium: '12',\n large: '16',\n};\n\nconst AVATAR_SIZE_MAP: Record<ChipSize, UserAvatarSize> = {\n small: '12',\n medium: '16',\n large: '20',\n};\n\nfunction labelTextFromChildren(children: ReactNode): string {\n if (typeof children === 'string' || typeof children === 'number') {\n return String(children).trim();\n }\n if (Array.isArray(children)) {\n return children.map(labelTextFromChildren).filter(Boolean).join(' ');\n }\n return '';\n}\n\nfunction focusTargetAfterRemove(chipEl: HTMLElement): HTMLElement | null {\n const scan = (\n start: Element | null,\n direction: 'next' | 'previous',\n ): HTMLElement | null => {\n let el: Element | null = start;\n while (el) {\n if (el instanceof HTMLElement && el.dataset.chip != null) {\n return el;\n }\n if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement) {\n return el;\n }\n el =\n direction === 'next'\n ? el.nextElementSibling\n : el.previousElementSibling;\n }\n return null;\n };\n\n const parent = chipEl.parentElement;\n const afterGroup = parent?.nextElementSibling;\n const groupSiblingInput =\n afterGroup instanceof HTMLInputElement ||\n afterGroup instanceof HTMLTextAreaElement\n ? afterGroup\n : null;\n\n return (\n scan(chipEl.nextElementSibling, 'next') ??\n scan(chipEl.previousElementSibling, 'previous') ??\n groupSiblingInput ??\n parent?.querySelector('input, textarea') ??\n parent?.parentElement?.querySelector('input, textarea') ??\n null\n );\n}\n\n/**\n * Chips are compact, self-contained tokens that represent a selection — a person added to an\n * invite, a filter applied to a search, a chosen value in a tokenizing input. Each Chip\n * stands on its own and is removable or selectable, depending on context.\n */\nexport default function Chip({\n children,\n size = 'medium',\n compact = false,\n leadingIcon,\n leadingAvatar,\n onRemove,\n error = false,\n colored = false,\n className = '',\n ...rest\n}: ChipProps) {\n const grouped = useContext(ChipGroupContext);\n const iconSize = ICON_SIZE_MAP[size];\n const avatarSize = AVATAR_SIZE_MAP[size];\n const labelText = labelTextFromChildren(children);\n const groupedAriaLabel =\n rest['aria-label'] ??\n (onRemove != null && labelText !== ''\n ? `${labelText}. Press Delete to remove.`\n : labelText !== ''\n ? labelText\n : undefined);\n const removable = onRemove != null;\n\n const handleRemove = (e: MouseEvent<HTMLButtonElement>) => {\n const chipEl = e.currentTarget.closest('[data-chip]');\n const nextFocus =\n chipEl instanceof HTMLElement ? focusTargetAfterRemove(chipEl) : null;\n const removeButton = e.currentTarget;\n onRemove?.(e);\n window.setTimeout(() => {\n if (removeButton.isConnected || nextFocus == null) return;\n if (!nextFocus.isConnected) return;\n if (nextFocus.dataset.chip != null) {\n activateChip(nextFocus);\n } else {\n nextFocus.focus({ focusVisible: true } as FocusOptions);\n }\n }, 0);\n };\n\n const rootClass = [\n styles.chip,\n styles[`chip--size-${toKebab(size)}`],\n compact && styles['chip--compact'],\n error && styles['chip--error'],\n colored && styles['chip--colored'],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n rest.onKeyDown?.(e);\n if (grouped || !removable || e.defaultPrevented) return;\n if (\n e.key === 'Delete' ||\n e.key === 'Backspace' ||\n e.key === 'Enter' ||\n e.key === ' '\n ) {\n e.preventDefault();\n e.currentTarget\n .querySelector<HTMLButtonElement>('[data-chip-remove]')\n ?.click();\n }\n };\n\n return (\n <div\n className={rootClass}\n {...rest}\n role={removable ? 'button' : rest.role}\n tabIndex={removable ? (grouped ? -1 : 0) : rest.tabIndex}\n aria-label={removable ? groupedAriaLabel : rest['aria-label']}\n data-chip=\"\"\n onKeyDown={handleKeyDown}\n >\n {leadingAvatar != null ? (\n <span className={styles['chip__avatar-slot']}>\n <UserAvatar\n src={leadingAvatar.src}\n alt={leadingAvatar.alt}\n size={avatarSize}\n />\n </span>\n ) : leadingIcon != null ? (\n <span className={styles['chip__icon-slot']} aria-hidden>\n <Icon glyph={leadingIcon} size={iconSize} />\n </span>\n ) : null}\n <span className={styles['chip__label']}>{children}</span>\n {onRemove != null ? (\n <button\n type=\"button\"\n className={styles['chip__remove']}\n data-chip-remove=\"\"\n tabIndex={-1}\n aria-hidden\n onMouseDown={(e) => {\n e.preventDefault();\n }}\n onClick={handleRemove}\n >\n <CloseCircleIcon size={Number(iconSize)} aria-hidden />\n </button>\n ) : null}\n </div>\n );\n}\n"],"names":["ICON_SIZE_MAP","AVATAR_SIZE_MAP","labelTextFromChildren","children","focusTargetAfterRemove","chipEl","scan","start","direction","el","parent","afterGroup","groupSiblingInput","_a","Chip","size","compact","leadingIcon","leadingAvatar","onRemove","error","colored","className","rest","grouped","useContext","ChipGroupContext","iconSize","avatarSize","labelText","groupedAriaLabel","removable","handleRemove","nextFocus","removeButton","activateChip","rootClass","styles","toKebab","handleKeyDown","_b","jsxs","jsx","UserAvatar","Icon","CloseCircleIcon"],"mappings":";;;;;;;;AAyCA,MAAMA,IAA4C;AAAA,EAChD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT,GAEMC,IAAoD;AAAA,EACxD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT;AAEA,SAASC,EAAsBC,GAA6B;AAC1D,SAAI,OAAOA,KAAa,YAAY,OAAOA,KAAa,WAC/C,OAAOA,CAAQ,EAAE,KAAA,IAEtB,MAAM,QAAQA,CAAQ,IACjBA,EAAS,IAAID,CAAqB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,IAE9D;AACT;AAEA,SAASE,EAAuBC,GAAyC;;AACvE,QAAMC,IAAO,CACXC,GACAC,MACuB;AACvB,QAAIC,IAAqBF;AACzB,WAAOE,KAAI;AAIT,UAHIA,aAAc,eAAeA,EAAG,QAAQ,QAAQ,QAGhDA,aAAc,oBAAoBA,aAAc;AAClD,eAAOA;AAET,MAAAA,IACED,MAAc,SACVC,EAAG,qBACHA,EAAG;AAAA,IACX;AACA,WAAO;AAAA,EACT,GAEMC,IAASL,EAAO,eAChBM,IAAaD,KAAA,gBAAAA,EAAQ,oBACrBE,IACJD,aAAsB,oBACtBA,aAAsB,sBAClBA,IACA;AAEN,SACEL,EAAKD,EAAO,oBAAoB,MAAM,KACtCC,EAAKD,EAAO,wBAAwB,UAAU,KAC9CO,MACAF,KAAA,gBAAAA,EAAQ,cAAc,yBACtBG,IAAAH,KAAA,gBAAAA,EAAQ,kBAAR,gBAAAG,EAAuB,cAAc,uBACrC;AAEJ;AAOA,SAAwBC,EAAK;AAAA,EAC3B,UAAAX;AAAA,EACA,MAAAY,IAAO;AAAA,EACP,SAAAC,IAAU;AAAA,EACV,aAAAC;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,SAAAC,IAAU;AAAA,EACV,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,GAAc;AACZ,QAAMC,IAAUC,EAAWC,CAAgB,GACrCC,IAAW3B,EAAce,CAAI,GAC7Ba,IAAa3B,EAAgBc,CAAI,GACjCc,IAAY3B,EAAsBC,CAAQ,GAC1C2B,IACJP,EAAK,YAAY,MAChBJ,KAAY,QAAQU,MAAc,KAC/B,GAAGA,CAAS,8BACZA,MAAc,KACZA,IACA,SACFE,IAAYZ,KAAY,MAExBa,IAAe,CAAC,MAAqC;AACzD,UAAM3B,IAAS,EAAE,cAAc,QAAQ,aAAa,GAC9C4B,IACJ5B,aAAkB,cAAcD,EAAuBC,CAAM,IAAI,MAC7D6B,IAAe,EAAE;AACvB,IAAAf,KAAA,QAAAA,EAAW,IACX,OAAO,WAAW,MAAM;AACtB,MAAIe,EAAa,eAAeD,KAAa,QACxCA,EAAU,gBACXA,EAAU,QAAQ,QAAQ,OAC5BE,EAAaF,CAAS,IAEtBA,EAAU,MAAM,EAAE,cAAc,GAAA,CAAsB;AAAA,IAE1D,GAAG,CAAC;AAAA,EACN,GAEMG,IAAY;AAAA,IAChBC,EAAO;AAAA,IACPA,EAAO,cAAcC,EAAQvB,CAAI,CAAC,EAAE;AAAA,IACpCC,KAAWqB,EAAO,eAAe;AAAA,IACjCjB,KAASiB,EAAO,aAAa;AAAA,IAC7BhB,KAAWgB,EAAO,eAAe;AAAA,IACjCf;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAELiB,IAAgB,CAAC,MAAqC;;AAE1D,KADA1B,IAAAU,EAAK,cAAL,QAAAV,EAAA,KAAAU,GAAiB,IACb,EAAAC,KAAW,CAACO,KAAa,EAAE,sBAE7B,EAAE,QAAQ,YACV,EAAE,QAAQ,eACV,EAAE,QAAQ,WACV,EAAE,QAAQ,SAEV,EAAE,eAAA,IACFS,IAAA,EAAE,cACC,cAAiC,oBAAoB,MADxD,QAAAA,EAEI;AAAA,EAER;AAEA,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWL;AAAA,MACV,GAAGb;AAAA,MACJ,MAAMQ,IAAY,WAAWR,EAAK;AAAA,MAClC,UAAUQ,IAAaP,IAAU,KAAK,IAAKD,EAAK;AAAA,MAChD,cAAYQ,IAAYD,IAAmBP,EAAK,YAAY;AAAA,MAC5D,aAAU;AAAA,MACV,WAAWgB;AAAA,MAEV,UAAA;AAAA,QAAArB,KAAiB,OAChB,gBAAAwB,EAAC,QAAA,EAAK,WAAWL,EAAO,mBAAmB,GACzC,UAAA,gBAAAK;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,KAAKzB,EAAc;AAAA,YACnB,KAAKA,EAAc;AAAA,YACnB,MAAMU;AAAA,UAAA;AAAA,QAAA,GAEV,IACEX,KAAe,OACjB,gBAAAyB,EAAC,QAAA,EAAK,WAAWL,EAAO,iBAAiB,GAAG,eAAW,IACrD,4BAACO,GAAA,EAAK,OAAO3B,GAAa,MAAMU,EAAA,CAAU,GAC5C,IACE;AAAA,0BACH,QAAA,EAAK,WAAWU,EAAO,aAAiB,UAAAlC,GAAS;AAAA,QACjDgB,KAAY,OACX,gBAAAuB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAWL,EAAO;AAAA,YAClB,oBAAiB;AAAA,YACjB,UAAU;AAAA,YACV,eAAW;AAAA,YACX,aAAa,CAAC,MAAM;AAClB,gBAAE,eAAA;AAAA,YACJ;AAAA,YACA,SAASL;AAAA,YAET,4BAACa,GAAA,EAAgB,MAAM,OAAOlB,CAAQ,GAAG,eAAW,GAAA,CAAC;AAAA,UAAA;AAAA,QAAA,IAErD;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChipGroup.cjs","sources":["../../../src/components/chip/ChipGroup.tsx"],"sourcesContent":["import {\n createContext,\n useLayoutEffect,\n useRef,\n type FocusEvent,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport styles from './ChipGroup.module.scss';\n\nexport const ChipGroupContext = createContext(false);\n\nexport interface ChipGroupProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n /** When true, chips are not a tab stop. */\n disabled?: boolean;\n}\n\nfunction chipsIn(toolbar: ParentNode): HTMLElement[] {\n return [...toolbar.querySelectorAll<HTMLElement>('[data-chip]')];\n}\n\n/** Roving tabindex + focus for a chip inside a ChipGroup. */\nexport function activateChip(el: HTMLElement) {\n const toolbar = el.closest('[role=\"toolbar\"]');\n if (toolbar) {\n chipsIn(toolbar).forEach((chip) => {\n chip.tabIndex = chip === el ? 0 : -1;\n });\n }\n el.focus({ focusVisible: true } as FocusOptions);\n}\n\n/**\n * Toolbar for a set of Chips. Tab lands on the active chip; Left/Right move\n * between chips; Delete, Backspace, Enter, and Space remove the focused chip.\n * The × is mouse-only.\n */\nexport default function ChipGroup({\n children,\n className = '',\n disabled = false,\n onKeyDown,\n onFocus,\n ...rest\n}: ChipGroupProps) {\n const ref = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n const toolbar = ref.current;\n if (toolbar == null) return;\n const chips = chipsIn(toolbar);\n if (chips.length === 0) return;\n if (disabled) {\n chips.forEach((chip) => {\n chip.tabIndex = -1;\n });\n return;\n }\n const focused = chips.find((chip) => chip === document.activeElement);\n if (focused != null) {\n chips.forEach((chip) => {\n chip.tabIndex = chip === focused ? 0 : -1;\n });\n return;\n }\n if (!chips.some((chip) => chip.tabIndex === 0)) {\n chips[0].tabIndex = 0;\n chips.slice(1).forEach((chip) => {\n chip.tabIndex = -1;\n });\n }\n }, [children, disabled]);\n\n const handleFocus = (e: FocusEvent<HTMLDivElement>) => {\n onFocus?.(e);\n if (disabled) return;\n const target = e.target;\n if (!(target instanceof HTMLElement)) return;\n const chip = target.closest<HTMLElement>('[data-chip]');\n const toolbar = e.currentTarget;\n if (chip == null || !toolbar.contains(chip)) return;\n chipsIn(toolbar).forEach((c) => {\n c.tabIndex = c === chip ? 0 : -1;\n });\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || disabled) return;\n\n const toolbar = ref.current;\n if (toolbar == null) return;\n const chips = chipsIn(toolbar);\n if (chips.length === 0) return;\n\n const active = document.activeElement;\n if (!(active instanceof HTMLElement) || !toolbar.contains(active)) return;\n const chip = active.closest<HTMLElement>('[data-chip]');\n const index = chips.findIndex((c) => c === chip);\n if (index < 0) return;\n\n const moveTo = (nextIndex: number) => {\n const next = chips[Math.max(0, Math.min(chips.length - 1, nextIndex))];\n if (next == null) return;\n e.preventDefault();\n activateChip(next);\n };\n\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n moveTo(index + 1);\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n moveTo(index - 1);\n break;\n case 'Home':\n moveTo(0);\n break;\n case 'End':\n moveTo(chips.length - 1);\n break;\n case 'Delete':\n case 'Backspace':\n case 'Enter':\n case ' ': {\n const btn = chip?.querySelector<HTMLButtonElement>('[data-chip-remove]');\n if (btn != null && !btn.disabled) {\n e.preventDefault();\n btn.click();\n }\n break;\n }\n default:\n break;\n }\n };\n\n const rootClass = [styles['chip-group'], className].filter(Boolean).join(' ');\n\n return (\n <ChipGroupContext.Provider value={true}>\n <div\n {...rest}\n ref={ref}\n className={rootClass}\n role=\"toolbar\"\n aria-orientation=\"horizontal\"\n aria-disabled={disabled || undefined}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n >\n {children}\n </div>\n </ChipGroupContext.Provider>\n );\n}\n"],"names":["ChipGroupContext","createContext","chipsIn","toolbar","activateChip","el","chip","ChipGroup","children","className","disabled","onKeyDown","onFocus","rest","ref","useRef","useLayoutEffect","chips","focused","handleFocus","e","target","handleKeyDown","active","index","c","moveTo","nextIndex","next","btn","rootClass","styles","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"ChipGroup.cjs","sources":["../../../src/components/chip/ChipGroup.tsx"],"sourcesContent":["import {\n createContext,\n useLayoutEffect,\n useRef,\n type FocusEvent,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport styles from './ChipGroup.module.scss';\n\nexport const ChipGroupContext = createContext(false);\n\nexport interface ChipGroupProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n /** When true, chips are not a tab stop. */\n disabled?: boolean;\n}\n\nfunction chipsIn(toolbar: ParentNode): HTMLElement[] {\n return [...toolbar.querySelectorAll<HTMLElement>('[data-chip]')];\n}\n\n/** Roving tabindex + focus for a chip inside a ChipGroup. */\nexport function activateChip(el: HTMLElement) {\n const toolbar = el.closest('[role=\"toolbar\"]');\n if (toolbar) {\n chipsIn(toolbar).forEach((chip) => {\n chip.tabIndex = chip === el ? 0 : -1;\n });\n }\n el.focus({ focusVisible: true } as FocusOptions);\n}\n\n/**\n * Toolbar for a set of Chips. Tab lands on the active chip; Left/Right move\n * between chips; Delete, Backspace, Enter, and Space remove the focused chip.\n * The × is mouse-only.\n */\nexport default function ChipGroup({\n children,\n className = '',\n disabled = false,\n onKeyDown,\n onFocus,\n ...rest\n}: ChipGroupProps) {\n const ref = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n const toolbar = ref.current;\n if (toolbar == null) return;\n const chips = chipsIn(toolbar);\n if (chips.length === 0) return;\n if (disabled) {\n chips.forEach((chip) => {\n chip.tabIndex = -1;\n });\n return;\n }\n const focused = chips.find((chip) => chip === document.activeElement);\n if (focused != null) {\n chips.forEach((chip) => {\n chip.tabIndex = chip === focused ? 0 : -1;\n });\n return;\n }\n if (!chips.some((chip) => chip.tabIndex === 0)) {\n chips[0].tabIndex = 0;\n chips.slice(1).forEach((chip) => {\n chip.tabIndex = -1;\n });\n }\n }, [children, disabled]);\n\n const handleFocus = (e: FocusEvent<HTMLDivElement>) => {\n onFocus?.(e);\n if (disabled) return;\n const target = e.target;\n if (!(target instanceof HTMLElement)) return;\n const chip = target.closest<HTMLElement>('[data-chip]');\n const toolbar = e.currentTarget;\n if (chip == null || !toolbar.contains(chip)) return;\n chipsIn(toolbar).forEach((c) => {\n c.tabIndex = c === chip ? 0 : -1;\n });\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || disabled) return;\n\n const toolbar = ref.current;\n if (toolbar == null) return;\n const chips = chipsIn(toolbar);\n if (chips.length === 0) return;\n\n const active = document.activeElement;\n if (!(active instanceof HTMLElement) || !toolbar.contains(active)) return;\n const chip = active.closest<HTMLElement>('[data-chip]');\n const index = chips.findIndex((c) => c === chip);\n if (index < 0) return;\n\n const moveTo = (nextIndex: number) => {\n const next = chips[Math.max(0, Math.min(chips.length - 1, nextIndex))];\n if (next == null) return;\n e.preventDefault();\n activateChip(next);\n };\n\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n moveTo(index + 1);\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n moveTo(index - 1);\n break;\n case 'Home':\n moveTo(0);\n break;\n case 'End':\n moveTo(chips.length - 1);\n break;\n case 'Delete':\n case 'Backspace':\n case 'Enter':\n case ' ': {\n const btn =\n chip?.querySelector<HTMLButtonElement>('[data-chip-remove]');\n if (btn != null && !btn.disabled) {\n e.preventDefault();\n btn.click();\n }\n break;\n }\n default:\n break;\n }\n };\n\n const rootClass = [styles['chip-group'], className].filter(Boolean).join(' ');\n\n return (\n <ChipGroupContext.Provider value={true}>\n <div\n {...rest}\n ref={ref}\n className={rootClass}\n role=\"toolbar\"\n aria-orientation=\"horizontal\"\n aria-disabled={disabled || undefined}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n >\n {children}\n </div>\n </ChipGroupContext.Provider>\n );\n}\n"],"names":["ChipGroupContext","createContext","chipsIn","toolbar","activateChip","el","chip","ChipGroup","children","className","disabled","onKeyDown","onFocus","rest","ref","useRef","useLayoutEffect","chips","focused","handleFocus","e","target","handleKeyDown","active","index","c","moveTo","nextIndex","next","btn","rootClass","styles","jsx"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChipGroup.d.ts","sourceRoot":"","sources":["../../../src/components/chip/ChipGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,cAAc,EAEnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,eAAO,MAAM,gBAAgB,kCAAuB,CAAC;AAErD,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,cAAc,CAAC;IACpE,QAAQ,EAAE,SAAS,CAAC;IACpB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,EAAE,EAAE,WAAW,QAQ3C;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,QAAQ,EACR,SAAc,EACd,QAAgB,EAChB,SAAS,EACT,OAAO,EACP,GAAG,IAAI,EACR,EAAE,cAAc,2CAiHhB"}
1
+ {"version":3,"file":"ChipGroup.d.ts","sourceRoot":"","sources":["../../../src/components/chip/ChipGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,cAAc,EAEnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,eAAO,MAAM,gBAAgB,kCAAuB,CAAC;AAErD,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,cAAc,CAAC;IACpE,QAAQ,EAAE,SAAS,CAAC;IACpB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,EAAE,EAAE,WAAW,QAQ3C;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,QAAQ,EACR,SAAc,EACd,QAAgB,EAChB,SAAS,EACT,OAAO,EACP,GAAG,IAAI,EACR,EAAE,cAAc,2CAkHhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChipGroup.js","sources":["../../../src/components/chip/ChipGroup.tsx"],"sourcesContent":["import {\n createContext,\n useLayoutEffect,\n useRef,\n type FocusEvent,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport styles from './ChipGroup.module.scss';\n\nexport const ChipGroupContext = createContext(false);\n\nexport interface ChipGroupProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n /** When true, chips are not a tab stop. */\n disabled?: boolean;\n}\n\nfunction chipsIn(toolbar: ParentNode): HTMLElement[] {\n return [...toolbar.querySelectorAll<HTMLElement>('[data-chip]')];\n}\n\n/** Roving tabindex + focus for a chip inside a ChipGroup. */\nexport function activateChip(el: HTMLElement) {\n const toolbar = el.closest('[role=\"toolbar\"]');\n if (toolbar) {\n chipsIn(toolbar).forEach((chip) => {\n chip.tabIndex = chip === el ? 0 : -1;\n });\n }\n el.focus({ focusVisible: true } as FocusOptions);\n}\n\n/**\n * Toolbar for a set of Chips. Tab lands on the active chip; Left/Right move\n * between chips; Delete, Backspace, Enter, and Space remove the focused chip.\n * The × is mouse-only.\n */\nexport default function ChipGroup({\n children,\n className = '',\n disabled = false,\n onKeyDown,\n onFocus,\n ...rest\n}: ChipGroupProps) {\n const ref = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n const toolbar = ref.current;\n if (toolbar == null) return;\n const chips = chipsIn(toolbar);\n if (chips.length === 0) return;\n if (disabled) {\n chips.forEach((chip) => {\n chip.tabIndex = -1;\n });\n return;\n }\n const focused = chips.find((chip) => chip === document.activeElement);\n if (focused != null) {\n chips.forEach((chip) => {\n chip.tabIndex = chip === focused ? 0 : -1;\n });\n return;\n }\n if (!chips.some((chip) => chip.tabIndex === 0)) {\n chips[0].tabIndex = 0;\n chips.slice(1).forEach((chip) => {\n chip.tabIndex = -1;\n });\n }\n }, [children, disabled]);\n\n const handleFocus = (e: FocusEvent<HTMLDivElement>) => {\n onFocus?.(e);\n if (disabled) return;\n const target = e.target;\n if (!(target instanceof HTMLElement)) return;\n const chip = target.closest<HTMLElement>('[data-chip]');\n const toolbar = e.currentTarget;\n if (chip == null || !toolbar.contains(chip)) return;\n chipsIn(toolbar).forEach((c) => {\n c.tabIndex = c === chip ? 0 : -1;\n });\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || disabled) return;\n\n const toolbar = ref.current;\n if (toolbar == null) return;\n const chips = chipsIn(toolbar);\n if (chips.length === 0) return;\n\n const active = document.activeElement;\n if (!(active instanceof HTMLElement) || !toolbar.contains(active)) return;\n const chip = active.closest<HTMLElement>('[data-chip]');\n const index = chips.findIndex((c) => c === chip);\n if (index < 0) return;\n\n const moveTo = (nextIndex: number) => {\n const next = chips[Math.max(0, Math.min(chips.length - 1, nextIndex))];\n if (next == null) return;\n e.preventDefault();\n activateChip(next);\n };\n\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n moveTo(index + 1);\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n moveTo(index - 1);\n break;\n case 'Home':\n moveTo(0);\n break;\n case 'End':\n moveTo(chips.length - 1);\n break;\n case 'Delete':\n case 'Backspace':\n case 'Enter':\n case ' ': {\n const btn = chip?.querySelector<HTMLButtonElement>('[data-chip-remove]');\n if (btn != null && !btn.disabled) {\n e.preventDefault();\n btn.click();\n }\n break;\n }\n default:\n break;\n }\n };\n\n const rootClass = [styles['chip-group'], className].filter(Boolean).join(' ');\n\n return (\n <ChipGroupContext.Provider value={true}>\n <div\n {...rest}\n ref={ref}\n className={rootClass}\n role=\"toolbar\"\n aria-orientation=\"horizontal\"\n aria-disabled={disabled || undefined}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n >\n {children}\n </div>\n </ChipGroupContext.Provider>\n );\n}\n"],"names":["ChipGroupContext","createContext","chipsIn","toolbar","activateChip","el","chip","ChipGroup","children","className","disabled","onKeyDown","onFocus","rest","ref","useRef","useLayoutEffect","chips","focused","handleFocus","e","target","handleKeyDown","active","index","c","moveTo","nextIndex","next","btn","rootClass","styles","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"ChipGroup.js","sources":["../../../src/components/chip/ChipGroup.tsx"],"sourcesContent":["import {\n createContext,\n useLayoutEffect,\n useRef,\n type FocusEvent,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport styles from './ChipGroup.module.scss';\n\nexport const ChipGroupContext = createContext(false);\n\nexport interface ChipGroupProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n /** When true, chips are not a tab stop. */\n disabled?: boolean;\n}\n\nfunction chipsIn(toolbar: ParentNode): HTMLElement[] {\n return [...toolbar.querySelectorAll<HTMLElement>('[data-chip]')];\n}\n\n/** Roving tabindex + focus for a chip inside a ChipGroup. */\nexport function activateChip(el: HTMLElement) {\n const toolbar = el.closest('[role=\"toolbar\"]');\n if (toolbar) {\n chipsIn(toolbar).forEach((chip) => {\n chip.tabIndex = chip === el ? 0 : -1;\n });\n }\n el.focus({ focusVisible: true } as FocusOptions);\n}\n\n/**\n * Toolbar for a set of Chips. Tab lands on the active chip; Left/Right move\n * between chips; Delete, Backspace, Enter, and Space remove the focused chip.\n * The × is mouse-only.\n */\nexport default function ChipGroup({\n children,\n className = '',\n disabled = false,\n onKeyDown,\n onFocus,\n ...rest\n}: ChipGroupProps) {\n const ref = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n const toolbar = ref.current;\n if (toolbar == null) return;\n const chips = chipsIn(toolbar);\n if (chips.length === 0) return;\n if (disabled) {\n chips.forEach((chip) => {\n chip.tabIndex = -1;\n });\n return;\n }\n const focused = chips.find((chip) => chip === document.activeElement);\n if (focused != null) {\n chips.forEach((chip) => {\n chip.tabIndex = chip === focused ? 0 : -1;\n });\n return;\n }\n if (!chips.some((chip) => chip.tabIndex === 0)) {\n chips[0].tabIndex = 0;\n chips.slice(1).forEach((chip) => {\n chip.tabIndex = -1;\n });\n }\n }, [children, disabled]);\n\n const handleFocus = (e: FocusEvent<HTMLDivElement>) => {\n onFocus?.(e);\n if (disabled) return;\n const target = e.target;\n if (!(target instanceof HTMLElement)) return;\n const chip = target.closest<HTMLElement>('[data-chip]');\n const toolbar = e.currentTarget;\n if (chip == null || !toolbar.contains(chip)) return;\n chipsIn(toolbar).forEach((c) => {\n c.tabIndex = c === chip ? 0 : -1;\n });\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || disabled) return;\n\n const toolbar = ref.current;\n if (toolbar == null) return;\n const chips = chipsIn(toolbar);\n if (chips.length === 0) return;\n\n const active = document.activeElement;\n if (!(active instanceof HTMLElement) || !toolbar.contains(active)) return;\n const chip = active.closest<HTMLElement>('[data-chip]');\n const index = chips.findIndex((c) => c === chip);\n if (index < 0) return;\n\n const moveTo = (nextIndex: number) => {\n const next = chips[Math.max(0, Math.min(chips.length - 1, nextIndex))];\n if (next == null) return;\n e.preventDefault();\n activateChip(next);\n };\n\n switch (e.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n moveTo(index + 1);\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n moveTo(index - 1);\n break;\n case 'Home':\n moveTo(0);\n break;\n case 'End':\n moveTo(chips.length - 1);\n break;\n case 'Delete':\n case 'Backspace':\n case 'Enter':\n case ' ': {\n const btn =\n chip?.querySelector<HTMLButtonElement>('[data-chip-remove]');\n if (btn != null && !btn.disabled) {\n e.preventDefault();\n btn.click();\n }\n break;\n }\n default:\n break;\n }\n };\n\n const rootClass = [styles['chip-group'], className].filter(Boolean).join(' ');\n\n return (\n <ChipGroupContext.Provider value={true}>\n <div\n {...rest}\n ref={ref}\n className={rootClass}\n role=\"toolbar\"\n aria-orientation=\"horizontal\"\n aria-disabled={disabled || undefined}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n >\n {children}\n </div>\n </ChipGroupContext.Provider>\n );\n}\n"],"names":["ChipGroupContext","createContext","chipsIn","toolbar","activateChip","el","chip","ChipGroup","children","className","disabled","onKeyDown","onFocus","rest","ref","useRef","useLayoutEffect","chips","focused","handleFocus","e","target","handleKeyDown","active","index","c","moveTo","nextIndex","next","btn","rootClass","styles","jsx"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("react/jsx-runtime"),s=require("react"),__Be=require("@mattermost/compass-icons/components/chevron-down.js"),Be=__Be?.default??__Be,$e=require("../chip/Chip.cjs"),Fe=require("../chip/ChipGroup.cjs"),re=require("../icon/Icon.cjs"),He=require("../menu-item/MenuItem.cjs"),oe=require("../popover-menu/PopoverMenu.cjs"),Te=require("../user-avatar/UserAvatar.cjs"),ze=require("../../hooks/use-anchored-popup-portal.cjs"),Ue=require("../../hooks/use-outside-close.cjs"),Le=require("../../hooks/use-popover-transition.cjs"),Ke=require("../../utils/string.cjs"),r=require("./Combobox.module.scss.cjs"),ae=280,Ge={small:"small",medium:"medium",large:"large"};function Qe(a,d){return d?a.label.toLowerCase().includes(d.toLowerCase()):!0}function Xe(a){return a==null?null:Array.isArray(a)?a[0]??null:a===""?null:a}function We(a){return a==null?[]:Array.isArray(a)?a:a===""?[]:[a]}function Ye(a){if(a.leadingVisual!=null)return a.leadingVisual;if(a.leadingAvatar!=null)return o.jsx(Te.default,{src:a.leadingAvatar.src,alt:a.leadingAvatar.alt,size:"24"})}const Ze=s.forwardRef(function({options:d,multiple:n=!1,value:z,defaultValue:U,onChange:I,inputValue:O,defaultInputValue:ce="",onInputChange:x,label:g,placeholder:ue,leadingIcon:P,size:L="medium",invalid:K=!1,disabled:m=!1,filter:C=!0,emptyMessage:ie="No results",className:de="",id:fe,"aria-label":G,portalContainer:be=null,zIndex:ve},j){const xe=s.useId(),N=fe??xe,p=`${N}-listbox`,V=s.useRef(null),Q=s.useRef(null),y=s.useRef(null),me=s.useCallback(e=>{y.current=e,typeof j=="function"?j(e):j&&(j.current=e)},[j]),R=z!==void 0,[he,_e]=s.useState(()=>U!==void 0?U:n?[]:null),X=R?z:he,f=n?null:Xe(X),i=n?We(X):[],b=O!==void 0,[E,B]=s.useState(ce),[u,W]=s.useState(!1),[ge,Y]=s.useState(!1),[v,h]=s.useState(-1),[w,$]=s.useState(null),M=s.useMemo(()=>f==null?void 0:d.find(e=>e.value===f),[d,f]),F=b?O:n?E:w!==null?w:(M==null?void 0:M.label)??E,Z=b?O:n?E:w!==null?w:"",H=s.useCallback(e=>{b||(B(e),n||$(e)),x==null||x(e)},[b,n,x]),A=s.useCallback(e=>{R||_e(e),I==null||I(e)},[R,I]),c=s.useMemo(()=>{if(C===!1)return d;const e=typeof C=="function"?C:Qe;return d.filter(t=>e(t,Z))},[d,C,Z]),{mounted:J,visible:pe}=Le.usePopoverTransition(u),{placement:ke,maxHeight:je,style:ye,portalRef:ee,renderPortal:Ae}=ze.useAnchoredPopupPortal(Q,J,{preferredHeight:ae,maxHeightCap:ae,portalContainer:be,zIndex:ve}),k=s.useCallback(()=>{W(!1),h(-1),!n&&!b&&($(null),B(""))},[n,b]),D=s.useCallback(()=>{m||W(!0)},[m]);Ue.useOutsideClose(V,u,k,ee),s.useEffect(()=>{u&&h(e=>{if(c.length===0)return-1;if(e>=0&&e<c.length)return e;const t=n?c.findIndex(l=>i.includes(l.value)):c.findIndex(l=>l.value===f);return t>=0?t:0})},[u,c,n,i,f]);const De=s.useCallback(e=>n?i.includes(e):f===e,[n,i,f]),te=s.useCallback(e=>{var t;if(!e.disabled){if(n){const l=i.includes(e.value)?i.filter(_=>_!==e.value):[...i,e.value];A(l),H(""),k(),(t=y.current)==null||t.focus();return}A(e.value),b?x==null||x(e.label):(B(""),$(null)),k()}},[n,i,A,H,b,x,k]),le=s.useCallback(e=>{n&&A(i.filter(t=>t!==e))},[n,i,A]),se=s.useCallback(e=>{const t=c.map((l,_)=>({o:l,i:_})).filter(({o:l})=>!l.disabled);if(t.length===0){h(-1);return}h(l=>{const _=t.findIndex(({i:T})=>T===l),q=_<0?e>0?0:t.length-1:(_+e+t.length)%t.length;return t[q].i})},[c]);s.useEffect(()=>{if(!u||v<0)return;const e=c[v];if(!e)return;const t=document.getElementById(`${p}-option-${e.value}`);t==null||t.scrollIntoView({block:"nearest"})},[u,v,c,p]);const Ie=e=>{const t=e.target.value;H(t),u||D(),h(0)},Ce=()=>{Y(!0),D(),!n&&!b&&M&&requestAnimationFrame(()=>{var e;(e=y.current)==null||e.select()})},we=e=>{var l;const t=e.relatedTarget;t&&((l=V.current)!=null&&l.contains(t))||Y(!1)},Me=e=>{var t;if(!m)switch(e.key){case"ArrowDown":e.preventDefault(),u?se(1):D();break;case"ArrowUp":e.preventDefault(),u?se(-1):D();break;case"Home":u&&c.length>0&&(e.preventDefault(),h(c.findIndex(l=>!l.disabled)>=0?c.findIndex(l=>!l.disabled):0));break;case"End":if(u&&c.length>0){e.preventDefault();for(let l=c.length-1;l>=0;l--)if(!((t=c[l])!=null&&t.disabled)){h(l);break}}break;case"Enter":u&&v>=0&&c[v]&&(e.preventDefault(),te(c[v]));break;case"Escape":u&&(e.preventDefault(),k());break;case"Backspace":n&&F===""&&i.length>0&&(e.preventDefault(),le(i[i.length-1]));break;case"Tab":k();break}},Se=e=>{var t;m||e.target.closest("[data-chip]")||(e.target!==y.current&&(e.preventDefault(),(t=y.current)==null||t.focus()),u||D())},qe=n?i.length>0:f!=null&&f!=="",Oe=F.length>0,Pe=ge||u||qe||Oe,ne=v>=0?c[v]:void 0,Ne=ne!=null?`${p}-option-${ne.value}`:void 0,S=s.useMemo(()=>d.filter(e=>i.includes(e.value)),[d,i]),Ve=r.default[`combobox--size-${Ke.toKebab(L)}`],Re=n&&S.length>0,Ee=[r.default.combobox,Ve,K?r.default["combobox--invalid"]:"",g!=null&&Pe?r.default["combobox--label-floated"]:"",P!=null?r.default["combobox--has-leading-icon"]:"",Re?r.default["combobox--has-chips"]:"",u?r.default["combobox--open"]:"",m?r.default["combobox--disabled"]:"",de].filter(Boolean).join(" ");return o.jsxs("div",{className:Ee,ref:V,children:[o.jsxs("div",{className:r.default.combobox__wrapper,ref:Q,children:[g!=null&&o.jsx("label",{className:r.default.combobox__label,htmlFor:N,children:g}),o.jsxs("div",{className:r.default.combobox__inner,onMouseDown:Se,children:[P!=null&&o.jsx("span",{className:r.default["combobox__leading-icon"],"aria-hidden":!0,children:o.jsx(re.IconSlotContext.Provider,{value:{size:"16"},children:P})}),o.jsxs("div",{className:r.default.combobox__value,children:[n&&S.length>0&&o.jsx(Fe.default,{"aria-label":typeof g=="string"?`${g} selections`:"Selected",disabled:m,children:S.map(e=>o.jsx($e.default,{size:Ge[L],leadingAvatar:e.leadingAvatar,leadingIcon:e.leadingAvatar==null?e.leadingVisual:void 0,onRemove:m?void 0:t=>{t.stopPropagation(),le(e.value)},children:e.label},e.value))}),o.jsx("input",{ref:me,id:N,className:r.default.combobox__control,type:"text",role:"combobox",autoComplete:"off",spellCheck:!1,disabled:m,placeholder:n&&S.length>0?void 0:ue,value:F,"aria-label":G,"aria-invalid":K?!0:void 0,"aria-expanded":u,"aria-controls":p,"aria-autocomplete":"list","aria-activedescendant":Ne,onChange:Ie,onFocus:Ce,onBlur:we,onKeyDown:Me})]}),o.jsx("span",{className:r.default["combobox__trailing-icon"],"aria-hidden":!0,children:o.jsx(re.default,{size:"12",glyph:o.jsx(Be,{})})})]})]}),J&&Ae(o.jsx("div",{ref:ee,className:[r.default.combobox__popup,ke==="above"?r.default["combobox__popup--above"]:"",pe?r.default["combobox__popup--visible"]:""].filter(Boolean).join(" "),style:ye,children:o.jsx(oe.default,{className:r.default.combobox__menu,children:o.jsx(oe.PopoverMenuScroll,{maxHeight:je,children:c.length===0?o.jsx("p",{className:r.default.combobox__empty,children:ie}):o.jsx("ul",{id:p,className:r.default.combobox__list,role:"listbox","aria-multiselectable":n||void 0,"aria-label":typeof g=="string"?g:G??"Options",children:c.map((e,t)=>{const l=De(e.value),_=t===v,q=Ye(e);return o.jsx("li",{className:r.default.combobox__option,role:"presentation",children:o.jsx(He.default,{id:`${p}-option-${e.value}`,role:"option",label:e.label,secondaryLabel:e.secondaryLabel,leadingElement:q!=null,leadingVisual:q,trailingElement:l,active:_,disabled:e.disabled,"aria-selected":l,onMouseDown:T=>{T.preventDefault()},onMouseEnter:()=>h(t),onClick:()=>te(e)})},e.value)})})})})}))]})});exports.default=Ze;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("react/jsx-runtime"),n=require("react"),__tt=require("@mattermost/compass-icons/components/chevron-down.js"),tt=__tt?.default??__tt,__st=require("@mattermost/compass-icons/components/plus.js"),st=__st?.default??__st,nt=require("../chip/Chip.cjs"),rt=require("../chip/ChipGroup.cjs"),J=require("../icon/Icon.cjs"),_e=require("../menu-item/MenuItem.cjs"),ke=require("../popover-menu/PopoverMenu.cjs"),ot=require("../spinner/Spinner.cjs"),lt=require("../user-avatar/UserAvatar.cjs"),at=require("../../hooks/use-anchored-popup-portal.cjs"),ut=require("../../hooks/use-outside-close.cjs"),ct=require("../../hooks/use-popover-transition.cjs"),it=require("../../utils/string.cjs"),a=require("./Combobox.module.scss.cjs"),ge=280,dt={small:"small",medium:"medium",large:"large"};function ft(l){return`Create "${l}"`}function ee(l){return l.kind==="option"&&l.option.disabled===!0}function bt(l,f){return f?l.label.toLowerCase().includes(f.toLowerCase()):!0}function vt(l){return l==null?null:Array.isArray(l)?l[0]??null:l===""?null:l}function xt(l){return l==null?[]:Array.isArray(l)?l:l===""?[]:[l]}function mt(l){if(l.leadingVisual!=null)return l.leadingVisual;if(l.leadingAvatar!=null)return r.jsx(lt.default,{src:l.leadingAvatar.src,alt:l.leadingAvatar.alt,size:"24"})}const ht=n.forwardRef(function({options:f,multiple:s=!1,value:te,defaultValue:se,onChange:P,inputValue:O,defaultInputValue:pe="",onInputChange:b,label:y,placeholder:je,leadingIcon:T,size:ne="medium",invalid:re=!1,disabled:g=!1,filter:R=!0,emptyMessage:ye="No results",loading:oe=!1,loadingMessage:Me="Loading…",selectedOptions:p,creatable:A=!1,onCreateOption:$,formatCreateLabel:De=ft,className:Ae="",id:Ce,"aria-label":le,portalContainer:we=null,zIndex:Se},C){const qe=n.useId(),z=Ce??qe,w=`${z}-listbox`,U=n.useRef(null),ae=n.useRef(null),M=n.useRef(null),Ne=n.useCallback(e=>{M.current=e,typeof C=="function"?C(e):C&&(C.current=e)},[C]),K=te!==void 0,[Pe,Re]=n.useState(()=>se!==void 0?se:s?[]:null),G=K?te:Pe,v=s?null:vt(G),u=n.useMemo(()=>s?xt(G):[],[s,G]),x=O!==void 0,[Q,V]=n.useState(pe),[i,ue]=n.useState(!1),[Ve,ce]=n.useState(!1),[h,_]=n.useState(-1),[I,E]=n.useState(null),B=n.useCallback(e=>f.find(t=>t.value===e)??(p==null?void 0:p.find(t=>t.value===e))??(A?{value:e,label:e}:void 0),[f,p,A]),F=n.useMemo(()=>v==null?void 0:B(v),[B,v]),X=x?O:s?Q:I!==null?I:(F==null?void 0:F.label)??Q,W=x?O:s?Q:I!==null?I:"",S=n.useCallback(e=>{x||(V(e),s||E(e)),b==null||b(e)},[x,s,b]),j=n.useCallback(e=>{K||Re(e),P==null||P(e)},[K,P]),ie=n.useMemo(()=>{if(R===!1)return f;const e=typeof R=="function"?R:bt;return f.filter(t=>e(t,W))},[f,R,W]),q=A?W.trim():"",de=n.useMemo(()=>{if(q==="")return!1;const e=q.toLowerCase(),t=d=>d.toLowerCase()===e;return[...f,...p??[]].some(d=>t(d.label)||t(d.value))?!1:!(s?u:v!=null?[v]:[]).some(t)},[q,f,p,s,u,v]),c=n.useMemo(()=>[...ie.map(e=>({kind:"option",option:e})),...de?[{kind:"create",inputValue:q}]:[]],[ie,de,q]),D=n.useCallback(e=>e.kind==="option"?`${w}-option-${e.option.value}`:`${w}-create`,[w]),{mounted:fe,visible:Ie}=ct.usePopoverTransition(i),{placement:Ee,maxHeight:Be,style:Fe,portalRef:be,renderPortal:Le}=at.useAnchoredPopupPortal(ae,fe,{preferredHeight:ge,maxHeightCap:ge,portalContainer:we,zIndex:Se}),k=n.useCallback(()=>{ue(!1),_(-1),!s&&!x&&(E(null),V(""))},[s,x]),N=n.useCallback(()=>{g||ue(!0)},[g]);ut.useOutsideClose(U,i,k,be),n.useEffect(()=>{i&&_(e=>{if(c.length===0)return-1;if(e>=0&&e<c.length)return e;const t=c.findIndex(o=>o.kind==="option"&&(s?u.includes(o.option.value):o.option.value===v));return t>=0?t:0})},[i,c,s,u,v]);const He=n.useCallback(e=>s?u.includes(e):v===e,[s,u,v]),Y=n.useCallback(e=>{var t;if(!e.disabled){if(s){const o=u.includes(e.value)?u.filter(m=>m!==e.value):[...u,e.value];j(o),S(""),k(),(t=M.current)==null||t.focus();return}j(e.value),x?b==null||b(e.label):(V(""),E(null)),k()}},[s,u,j,S,x,b,k]),Z=n.useCallback(e=>{var t;if($?$(e):j(s?[...u,e]:e),s){S(""),k(),(t=M.current)==null||t.focus();return}x?b==null||b(e):(V(""),E(null)),k()},[$,s,u,j,S,x,b,k]),Oe=n.useCallback(e=>{e.kind==="create"?Z(e.inputValue):Y(e.option)},[Z,Y]),ve=n.useCallback(e=>{s&&j(u.filter(t=>t!==e))},[s,u,j]),xe=n.useCallback(e=>{const t=c.map((o,m)=>({row:o,i:m})).filter(({row:o})=>!ee(o));if(t.length===0){_(-1);return}_(o=>{const m=t.findIndex(({i:H})=>H===o),d=m<0?e>0?0:t.length-1:(m+e+t.length)%t.length;return t[d].i})},[c]);n.useEffect(()=>{var t;if(!i||h<0)return;const e=c[h];e&&((t=document.getElementById(D(e)))==null||t.scrollIntoView({block:"nearest"}))},[i,h,c,D]);const Te=e=>{const t=e.target.value;S(t),i||N(),_(0)},$e=()=>{ce(!0),N(),!s&&!x&&F&&requestAnimationFrame(()=>{var e;(e=M.current)==null||e.select()})},ze=e=>{var o;const t=e.relatedTarget;t&&((o=U.current)!=null&&o.contains(t))||ce(!1)},Ue=e=>{if(!g)switch(e.key){case"ArrowDown":e.preventDefault(),i?xe(1):N();break;case"ArrowUp":e.preventDefault(),i?xe(-1):N();break;case"Home":i&&c.length>0&&(e.preventDefault(),_(Math.max(0,c.findIndex(t=>!ee(t)))));break;case"End":if(i&&c.length>0){e.preventDefault();for(let t=c.length-1;t>=0;t--)if(!ee(c[t])){_(t);break}}break;case"Enter":i&&h>=0&&c[h]&&(e.preventDefault(),Oe(c[h]));break;case"Escape":i&&(e.preventDefault(),k());break;case"Backspace":s&&X===""&&u.length>0&&(e.preventDefault(),ve(u[u.length-1]));break;case"Tab":k();break}},Ke=e=>{var t;g||e.target.closest("[data-chip]")||(e.target!==M.current&&(e.preventDefault(),(t=M.current)==null||t.focus()),i||N())},Ge=s?u.length>0:v!=null&&v!=="",Qe=X.length>0,Xe=Ve||i||Ge||Qe,me=h>=0?c[h]:void 0,We=me!=null?D(me):void 0,L=n.useMemo(()=>{if(!s)return[];if(p==null){const e=f.filter(o=>u.includes(o.value));if(!A)return e;const t=new Set(e.map(o=>o.value));return[...e,...u.filter(o=>!t.has(o)).map(o=>({value:o,label:o}))]}return u.map(B).filter(e=>e!=null)},[s,p,f,u,A,B]),Ye=a.default[`combobox--size-${it.toKebab(ne)}`],Ze=s&&L.length>0,Je=[a.default.combobox,Ye,re?a.default["combobox--invalid"]:"",y!=null&&Xe?a.default["combobox--label-floated"]:"",T!=null?a.default["combobox--has-leading-icon"]:"",Ze?a.default["combobox--has-chips"]:"",i?a.default["combobox--open"]:"",g?a.default["combobox--disabled"]:"",Ae].filter(Boolean).join(" ");return r.jsxs("div",{className:Je,ref:U,children:[r.jsxs("div",{className:a.default.combobox__wrapper,ref:ae,children:[y!=null&&r.jsx("label",{className:a.default.combobox__label,htmlFor:z,children:y}),r.jsxs("div",{className:a.default.combobox__inner,onMouseDown:Ke,children:[T!=null&&r.jsx("span",{className:a.default["combobox__leading-icon"],"aria-hidden":!0,children:r.jsx(J.IconSlotContext.Provider,{value:{size:"16"},children:T})}),r.jsxs("div",{className:a.default.combobox__value,children:[s&&L.length>0&&r.jsx(rt.default,{"aria-label":typeof y=="string"?`${y} selections`:"Selected",disabled:g,children:L.map(e=>r.jsx(nt.default,{size:dt[ne],leadingAvatar:e.leadingAvatar,leadingIcon:e.leadingAvatar==null?e.leadingVisual:void 0,onRemove:g?void 0:t=>{t.stopPropagation(),ve(e.value)},children:e.label},e.value))}),r.jsx("input",{ref:Ne,id:z,className:a.default.combobox__control,type:"text",role:"combobox",autoComplete:"off",spellCheck:!1,disabled:g,placeholder:s&&L.length>0?void 0:je,value:X,"aria-label":le,"aria-invalid":re?!0:void 0,"aria-expanded":i,"aria-controls":w,"aria-autocomplete":"list","aria-activedescendant":We,"aria-busy":oe||void 0,onChange:Te,onFocus:$e,onBlur:ze,onKeyDown:Ue})]}),r.jsx("span",{className:a.default["combobox__trailing-icon"],"aria-hidden":!0,children:r.jsx(J.default,{size:"12",glyph:r.jsx(tt,{})})})]})]}),fe&&Le(r.jsx("div",{ref:be,className:[a.default.combobox__popup,Ee==="above"?a.default["combobox__popup--above"]:"",Ie?a.default["combobox__popup--visible"]:""].filter(Boolean).join(" "),style:Fe,children:r.jsx(ke.default,{className:a.default.combobox__menu,children:r.jsxs(ke.PopoverMenuScroll,{maxHeight:Be,children:[c.length>0&&r.jsx("ul",{id:w,className:a.default.combobox__list,role:"listbox","aria-multiselectable":s||void 0,"aria-label":typeof y=="string"?y:le??"Options",children:c.map((e,t)=>{const o=t===h,m=et=>{et.preventDefault()};if(e.kind==="create")return r.jsx("li",{className:a.default.combobox__option,role:"presentation",children:r.jsx(_e.default,{id:D(e),role:"option",label:De(e.inputValue),leadingVisual:r.jsx(J.default,{glyph:r.jsx(st,{})}),active:o,"aria-selected":!1,onMouseDown:m,onMouseEnter:()=>_(t),onClick:()=>Z(e.inputValue)})},D(e));const{option:d}=e,H=He(d.value),he=mt(d);return r.jsx("li",{className:a.default.combobox__option,role:"presentation",children:r.jsx(_e.default,{id:D(e),role:"option",label:d.label,secondaryLabel:d.secondaryLabel,leadingElement:he!=null,leadingVisual:he,trailingElement:H,active:o,disabled:d.disabled,"aria-selected":H,onMouseDown:m,onMouseEnter:()=>_(t),onClick:()=>Y(d)})},d.value)})}),oe?r.jsxs("div",{className:a.default.combobox__loading,role:"status",children:[r.jsx(ot.default,{size:"16","aria-hidden":!0}),r.jsx("span",{children:Me})]}):c.length===0&&r.jsx("p",{className:a.default.combobox__empty,children:ye})]})})}))]})});exports.default=ht;
2
2
  //# sourceMappingURL=Combobox.cjs.map