@mattermost/compass-ui 0.1.0-alpha.10 → 0.1.0-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -4
- package/dist/components/action-button/ActionButton.cjs +1 -1
- package/dist/components/action-button/ActionButton.cjs.map +1 -1
- package/dist/components/action-button/ActionButton.d.ts +2 -1
- package/dist/components/action-button/ActionButton.d.ts.map +1 -1
- package/dist/components/action-button/ActionButton.js +36 -31
- package/dist/components/action-button/ActionButton.js.map +1 -1
- package/dist/components/admin-console-header/AdminConsoleHeader.cjs.map +1 -1
- package/dist/components/admin-console-header/AdminConsoleHeader.d.ts.map +1 -1
- package/dist/components/admin-console-header/AdminConsoleHeader.js.map +1 -1
- package/dist/components/admin-panel/AdminPanel.cjs.map +1 -1
- package/dist/components/admin-panel/AdminPanel.d.ts.map +1 -1
- package/dist/components/admin-panel/AdminPanel.js.map +1 -1
- package/dist/components/admin-panel/index.d.ts +1 -1
- package/dist/components/admin-panel/index.d.ts.map +1 -1
- package/dist/components/admin-panel-footer/AdminPanelFooter.cjs.map +1 -1
- package/dist/components/admin-panel-footer/AdminPanelFooter.d.ts.map +1 -1
- package/dist/components/admin-panel-footer/AdminPanelFooter.js +1 -8
- package/dist/components/admin-panel-footer/AdminPanelFooter.js.map +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.cjs.map +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.d.ts.map +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.js +2 -16
- package/dist/components/admin-panel-header/AdminPanelHeader.js.map +1 -1
- package/dist/components/attachment-card/AttachmentCard.cjs.map +1 -1
- package/dist/components/attachment-card/AttachmentCard.d.ts.map +1 -1
- package/dist/components/attachment-card/AttachmentCard.js.map +1 -1
- package/dist/components/button/Button.cjs +1 -1
- package/dist/components/button/Button.cjs.map +1 -1
- package/dist/components/button/Button.d.ts +4 -3
- package/dist/components/button/Button.d.ts.map +1 -1
- package/dist/components/button/Button.js +39 -23
- package/dist/components/button/Button.js.map +1 -1
- package/dist/components/card-button/CardButton.cjs +1 -1
- package/dist/components/card-button/CardButton.cjs.map +1 -1
- package/dist/components/card-button/CardButton.d.ts +2 -1
- package/dist/components/card-button/CardButton.d.ts.map +1 -1
- package/dist/components/card-button/CardButton.js +47 -42
- package/dist/components/card-button/CardButton.js.map +1 -1
- package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.cjs.map +1 -1
- package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.js.map +1 -1
- package/dist/components/checkbox/Checkbox.cjs +1 -1
- package/dist/components/checkbox/Checkbox.cjs.map +1 -1
- package/dist/components/checkbox/Checkbox.d.ts +2 -1
- package/dist/components/checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/checkbox/Checkbox.js +39 -37
- package/dist/components/checkbox/Checkbox.js.map +1 -1
- package/dist/components/chip/Chip.cjs.map +1 -1
- package/dist/components/chip/Chip.d.ts.map +1 -1
- package/dist/components/chip/Chip.js.map +1 -1
- package/dist/components/chip/ChipGroup.cjs.map +1 -1
- package/dist/components/chip/ChipGroup.d.ts.map +1 -1
- package/dist/components/chip/ChipGroup.js.map +1 -1
- package/dist/components/combobox/Combobox.cjs +1 -1
- package/dist/components/combobox/Combobox.cjs.map +1 -1
- package/dist/components/combobox/Combobox.css +1 -1
- package/dist/components/combobox/Combobox.d.ts +30 -1
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.js +381 -276
- package/dist/components/combobox/Combobox.js.map +1 -1
- package/dist/components/combobox/Combobox.module.scss.cjs +1 -1
- package/dist/components/combobox/Combobox.module.scss.js +24 -22
- package/dist/components/combobox/Combobox.module.scss.js.map +1 -1
- package/dist/components/combobox/index.d.ts +1 -1
- package/dist/components/combobox/index.d.ts.map +1 -1
- package/dist/components/date-range-picker/DateRangePicker.cjs.map +1 -1
- package/dist/components/date-range-picker/DateRangePicker.css +1 -1
- package/dist/components/date-range-picker/DateRangePicker.d.ts.map +1 -1
- package/dist/components/date-range-picker/DateRangePicker.js +27 -10
- package/dist/components/date-range-picker/DateRangePicker.js.map +1 -1
- package/dist/components/date-range-picker/DateRangePicker.module.scss.cjs +1 -1
- package/dist/components/date-range-picker/DateRangePicker.module.scss.js +26 -26
- package/dist/components/emoji/Emoji.cjs.map +1 -1
- package/dist/components/emoji/Emoji.d.ts.map +1 -1
- package/dist/components/emoji/Emoji.js +1 -5
- package/dist/components/emoji/Emoji.js.map +1 -1
- package/dist/components/emoji-button/EmojiButton.cjs.map +1 -1
- package/dist/components/emoji-button/EmojiButton.d.ts.map +1 -1
- package/dist/components/emoji-button/EmojiButton.js +10 -1
- package/dist/components/emoji-button/EmojiButton.js.map +1 -1
- package/dist/components/emoji-popover/EmojiPopover.cjs.map +1 -1
- package/dist/components/emoji-popover/EmojiPopover.d.ts.map +1 -1
- package/dist/components/emoji-popover/EmojiPopover.js +34 -17
- package/dist/components/emoji-popover/EmojiPopover.js.map +1 -1
- package/dist/components/empty-state/EmptyState.cjs.map +1 -1
- package/dist/components/empty-state/EmptyState.d.ts +2 -2
- package/dist/components/empty-state/EmptyState.d.ts.map +1 -1
- package/dist/components/empty-state/EmptyState.js.map +1 -1
- package/dist/components/error-message/ErrorMessage.cjs.map +1 -1
- package/dist/components/error-message/ErrorMessage.d.ts +3 -2
- package/dist/components/error-message/ErrorMessage.d.ts.map +1 -1
- package/dist/components/error-message/ErrorMessage.js.map +1 -1
- package/dist/components/icon/Icon.js +2 -2
- package/dist/components/icon/index.d.ts +1 -1
- package/dist/components/icon/index.d.ts.map +1 -1
- package/dist/components/icon-button/IconButton.cjs +1 -1
- package/dist/components/icon-button/IconButton.cjs.map +1 -1
- package/dist/components/icon-button/IconButton.d.ts +2 -1
- package/dist/components/icon-button/IconButton.d.ts.map +1 -1
- package/dist/components/icon-button/IconButton.js +61 -57
- package/dist/components/icon-button/IconButton.js.map +1 -1
- package/dist/components/image-preview/ImagePreview.cjs.map +1 -1
- package/dist/components/image-preview/ImagePreview.d.ts.map +1 -1
- package/dist/components/image-preview/ImagePreview.js +8 -1
- package/dist/components/image-preview/ImagePreview.js.map +1 -1
- package/dist/components/link-preview/LinkPreview.cjs.map +1 -1
- package/dist/components/link-preview/LinkPreview.d.ts.map +1 -1
- package/dist/components/link-preview/LinkPreview.js +1 -7
- package/dist/components/link-preview/LinkPreview.js.map +1 -1
- package/dist/components/link-preview/index.d.ts +1 -1
- package/dist/components/link-preview/index.d.ts.map +1 -1
- package/dist/components/menu-item/MenuItem.cjs +1 -1
- package/dist/components/menu-item/MenuItem.cjs.map +1 -1
- package/dist/components/menu-item/MenuItem.d.ts +4 -3
- package/dist/components/menu-item/MenuItem.d.ts.map +1 -1
- package/dist/components/menu-item/MenuItem.js +55 -43
- package/dist/components/menu-item/MenuItem.js.map +1 -1
- package/dist/components/message-actions/index.d.ts +1 -1
- package/dist/components/message-actions/index.d.ts.map +1 -1
- package/dist/components/message-separator/MessageSeparator.cjs.map +1 -1
- package/dist/components/message-separator/MessageSeparator.css +1 -1
- package/dist/components/message-separator/MessageSeparator.d.ts.map +1 -1
- package/dist/components/message-separator/MessageSeparator.js +8 -1
- package/dist/components/message-separator/MessageSeparator.js.map +1 -1
- package/dist/components/message-separator/MessageSeparator.module.scss.cjs +1 -1
- package/dist/components/message-separator/MessageSeparator.module.scss.js +11 -11
- package/dist/components/new-message-banner/NewMessageBanner.cjs.map +1 -1
- package/dist/components/new-message-banner/NewMessageBanner.d.ts.map +1 -1
- package/dist/components/new-message-banner/NewMessageBanner.js +1 -5
- package/dist/components/new-message-banner/NewMessageBanner.js.map +1 -1
- package/dist/components/permalink-preview/PermalinkPreview.cjs +1 -1
- package/dist/components/permalink-preview/PermalinkPreview.cjs.map +1 -1
- package/dist/components/permalink-preview/PermalinkPreview.css +1 -1
- package/dist/components/permalink-preview/PermalinkPreview.d.ts +9 -2
- package/dist/components/permalink-preview/PermalinkPreview.d.ts.map +1 -1
- package/dist/components/permalink-preview/PermalinkPreview.js +66 -25
- package/dist/components/permalink-preview/PermalinkPreview.js.map +1 -1
- package/dist/components/permalink-preview/PermalinkPreview.module.scss.cjs +1 -1
- package/dist/components/permalink-preview/PermalinkPreview.module.scss.js +13 -9
- package/dist/components/permalink-preview/PermalinkPreview.module.scss.js.map +1 -1
- package/dist/components/popover-menu/PopoverMenu.cjs.map +1 -1
- package/dist/components/popover-menu/PopoverMenu.d.ts +1 -2
- package/dist/components/popover-menu/PopoverMenu.d.ts.map +1 -1
- package/dist/components/popover-menu/PopoverMenu.js.map +1 -1
- package/dist/components/popover-notice/PopoverNotice.cjs.map +1 -1
- package/dist/components/popover-notice/PopoverNotice.d.ts +4 -3
- package/dist/components/popover-notice/PopoverNotice.d.ts.map +1 -1
- package/dist/components/popover-notice/PopoverNotice.js.map +1 -1
- package/dist/components/profile-popover/ProfilePopover.cjs.map +1 -1
- package/dist/components/profile-popover/ProfilePopover.d.ts.map +1 -1
- package/dist/components/profile-popover/ProfilePopover.js +14 -1
- package/dist/components/profile-popover/ProfilePopover.js.map +1 -1
- package/dist/components/progress-bar/ProgressBar.cjs +1 -1
- package/dist/components/progress-bar/ProgressBar.cjs.map +1 -1
- package/dist/components/progress-bar/ProgressBar.css +1 -1
- package/dist/components/progress-bar/ProgressBar.d.ts +6 -1
- package/dist/components/progress-bar/ProgressBar.d.ts.map +1 -1
- package/dist/components/progress-bar/ProgressBar.js +21 -15
- package/dist/components/progress-bar/ProgressBar.js.map +1 -1
- package/dist/components/progress-bar/ProgressBar.module.scss.cjs +1 -1
- package/dist/components/progress-bar/ProgressBar.module.scss.js +9 -8
- package/dist/components/progress-bar/ProgressBar.module.scss.js.map +1 -1
- package/dist/components/radio/Radio.cjs +1 -1
- package/dist/components/radio/Radio.cjs.map +1 -1
- package/dist/components/radio/Radio.d.ts +2 -1
- package/dist/components/radio/Radio.d.ts.map +1 -1
- package/dist/components/radio/Radio.js +15 -13
- package/dist/components/radio/Radio.js.map +1 -1
- package/dist/components/reactions-row/ReactionsRow.cjs.map +1 -1
- package/dist/components/reactions-row/ReactionsRow.d.ts.map +1 -1
- package/dist/components/reactions-row/ReactionsRow.js.map +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.cjs +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.cjs.map +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.d.ts +4 -2
- package/dist/components/right-sidebar-header/RightSidebarHeader.d.ts.map +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.js +51 -43
- package/dist/components/right-sidebar-header/RightSidebarHeader.js.map +1 -1
- package/dist/components/search-input/SearchInput.cjs.map +1 -1
- package/dist/components/search-input/SearchInput.d.ts.map +1 -1
- package/dist/components/search-input/SearchInput.js.map +1 -1
- package/dist/components/section-notice/SectionNotice.cjs.map +1 -1
- package/dist/components/section-notice/SectionNotice.d.ts +4 -4
- package/dist/components/section-notice/SectionNotice.d.ts.map +1 -1
- package/dist/components/section-notice/SectionNotice.js.map +1 -1
- package/dist/components/select/Select.cjs.map +1 -1
- package/dist/components/select/Select.d.ts.map +1 -1
- package/dist/components/select/Select.js.map +1 -1
- package/dist/components/switch/Switch.cjs +1 -1
- package/dist/components/switch/Switch.cjs.map +1 -1
- package/dist/components/switch/Switch.d.ts +2 -1
- package/dist/components/switch/Switch.d.ts.map +1 -1
- package/dist/components/switch/Switch.js +31 -29
- package/dist/components/switch/Switch.js.map +1 -1
- package/dist/components/tabs/Tabs.cjs +1 -1
- package/dist/components/tabs/Tabs.cjs.map +1 -1
- package/dist/components/tabs/Tabs.css +1 -1
- package/dist/components/tabs/Tabs.d.ts +6 -2
- package/dist/components/tabs/Tabs.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.js +47 -39
- package/dist/components/tabs/Tabs.js.map +1 -1
- package/dist/components/tabs/Tabs.module.scss.cjs +1 -1
- package/dist/components/tabs/Tabs.module.scss.js +13 -12
- package/dist/components/tabs/Tabs.module.scss.js.map +1 -1
- package/dist/components/tag/Tag.cjs.map +1 -1
- package/dist/components/tag/Tag.css +1 -1
- package/dist/components/tag/Tag.d.ts +2 -2
- package/dist/components/tag/Tag.d.ts.map +1 -1
- package/dist/components/tag/Tag.js.map +1 -1
- package/dist/components/tag/Tag.module.scss.cjs +1 -1
- package/dist/components/tag/Tag.module.scss.js +11 -11
- package/dist/components/thread-footer/ThreadFooter.cjs +1 -1
- package/dist/components/thread-footer/ThreadFooter.cjs.map +1 -1
- package/dist/components/thread-footer/ThreadFooter.css +1 -1
- package/dist/components/thread-footer/ThreadFooter.d.ts.map +1 -1
- package/dist/components/thread-footer/ThreadFooter.js +39 -43
- package/dist/components/thread-footer/ThreadFooter.js.map +1 -1
- package/dist/components/thread-footer/ThreadFooter.module.scss.cjs +1 -1
- package/dist/components/thread-footer/ThreadFooter.module.scss.js +18 -17
- package/dist/components/thread-footer/ThreadFooter.module.scss.js.map +1 -1
- package/dist/components/thread-list-item/ThreadListItem.cjs.map +1 -1
- package/dist/components/thread-list-item/ThreadListItem.d.ts.map +1 -1
- package/dist/components/thread-list-item/ThreadListItem.js +3 -1
- package/dist/components/thread-list-item/ThreadListItem.js.map +1 -1
- package/dist/components/toast/Toast.cjs.map +1 -1
- package/dist/components/toast/Toast.d.ts +3 -2
- package/dist/components/toast/Toast.d.ts.map +1 -1
- package/dist/components/toast/Toast.js.map +1 -1
- package/dist/components/tooltip/Tooltip.cjs +1 -1
- package/dist/components/tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/tooltip/Tooltip.d.ts +3 -3
- package/dist/components/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/tooltip/Tooltip.js +9 -9
- package/dist/components/tooltip/Tooltip.js.map +1 -1
- package/dist/components/tour-point/TourPoint.cjs.map +1 -1
- package/dist/components/tour-point/TourPoint.d.ts.map +1 -1
- package/dist/components/tour-point/TourPoint.js +8 -6
- package/dist/components/tour-point/TourPoint.js.map +1 -1
- package/dist/components/user-avatar-group/UserAvatarGroup.cjs.map +1 -1
- package/dist/components/user-avatar-group/UserAvatarGroup.d.ts.map +1 -1
- package/dist/components/user-avatar-group/UserAvatarGroup.js +23 -30
- package/dist/components/user-avatar-group/UserAvatarGroup.js.map +1 -1
- package/dist/hooks/use-anchored-popup-portal.cjs.map +1 -1
- package/dist/hooks/use-anchored-popup-portal.d.ts.map +1 -1
- package/dist/hooks/use-anchored-popup-portal.js +1 -3
- package/dist/hooks/use-anchored-popup-portal.js.map +1 -1
- package/dist/illustrations/incoming-webhook.svg.cjs +1 -1
- package/dist/illustrations/incoming-webhook.svg.cjs.map +1 -1
- package/dist/illustrations/incoming-webhook.svg.js +1 -1
- package/dist/illustrations/incoming-webhook.svg.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +0 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +170 -202
- package/dist/index.js.map +1 -1
- package/dist/utils/anchoredPopupPlacement.cjs.map +1 -1
- package/dist/utils/anchoredPopupPlacement.d.ts.map +1 -1
- package/dist/utils/anchoredPopupPlacement.js +4 -1
- package/dist/utils/anchoredPopupPlacement.js.map +1 -1
- package/package.json +1 -41
- package/dist/components/admin-console-sidebar/AdminConsoleSidebar.cjs +0 -2
- package/dist/components/admin-console-sidebar/AdminConsoleSidebar.cjs.map +0 -1
- package/dist/components/admin-console-sidebar/AdminConsoleSidebar.css +0 -1
- package/dist/components/admin-console-sidebar/AdminConsoleSidebar.d.ts +0 -12
- package/dist/components/admin-console-sidebar/AdminConsoleSidebar.d.ts.map +0 -1
- package/dist/components/admin-console-sidebar/AdminConsoleSidebar.js +0 -122
- package/dist/components/admin-console-sidebar/AdminConsoleSidebar.js.map +0 -1
- package/dist/components/admin-console-sidebar/AdminConsoleSidebar.module.scss.cjs +0 -2
- package/dist/components/admin-console-sidebar/AdminConsoleSidebar.module.scss.cjs.map +0 -1
- package/dist/components/admin-console-sidebar/AdminConsoleSidebar.module.scss.js +0 -20
- package/dist/components/admin-console-sidebar/AdminConsoleSidebar.module.scss.js.map +0 -1
- package/dist/components/admin-console-sidebar/adminConsoleSidebarModel.d.ts +0 -14
- package/dist/components/admin-console-sidebar/adminConsoleSidebarModel.d.ts.map +0 -1
- package/dist/components/admin-console-sidebar/index.cjs +0 -2
- package/dist/components/admin-console-sidebar/index.cjs.map +0 -1
- package/dist/components/admin-console-sidebar/index.d.ts +0 -4
- package/dist/components/admin-console-sidebar/index.d.ts.map +0 -1
- package/dist/components/admin-console-sidebar/index.js +0 -5
- package/dist/components/admin-console-sidebar/index.js.map +0 -1
- package/dist/components/channel-category-menu/ChannelCategoryMenu.cjs +0 -2
- package/dist/components/channel-category-menu/ChannelCategoryMenu.cjs.map +0 -1
- package/dist/components/channel-category-menu/ChannelCategoryMenu.css +0 -1
- package/dist/components/channel-category-menu/ChannelCategoryMenu.d.ts +0 -10
- package/dist/components/channel-category-menu/ChannelCategoryMenu.d.ts.map +0 -1
- package/dist/components/channel-category-menu/ChannelCategoryMenu.js +0 -103
- package/dist/components/channel-category-menu/ChannelCategoryMenu.js.map +0 -1
- package/dist/components/channel-category-menu/ChannelCategoryMenu.module.scss.cjs +0 -2
- package/dist/components/channel-category-menu/ChannelCategoryMenu.module.scss.cjs.map +0 -1
- package/dist/components/channel-category-menu/ChannelCategoryMenu.module.scss.js +0 -8
- package/dist/components/channel-category-menu/ChannelCategoryMenu.module.scss.js.map +0 -1
- package/dist/components/channel-category-menu/index.cjs +0 -2
- package/dist/components/channel-category-menu/index.cjs.map +0 -1
- package/dist/components/channel-category-menu/index.d.ts +0 -3
- package/dist/components/channel-category-menu/index.d.ts.map +0 -1
- package/dist/components/channel-category-menu/index.js +0 -5
- package/dist/components/channel-category-menu/index.js.map +0 -1
- package/dist/components/channel-header-menu/ChannelHeaderMenu.cjs +0 -2
- package/dist/components/channel-header-menu/ChannelHeaderMenu.cjs.map +0 -1
- package/dist/components/channel-header-menu/ChannelHeaderMenu.d.ts +0 -8
- package/dist/components/channel-header-menu/ChannelHeaderMenu.d.ts.map +0 -1
- package/dist/components/channel-header-menu/ChannelHeaderMenu.js +0 -115
- package/dist/components/channel-header-menu/ChannelHeaderMenu.js.map +0 -1
- package/dist/components/channel-header-menu/index.cjs +0 -2
- package/dist/components/channel-header-menu/index.cjs.map +0 -1
- package/dist/components/channel-header-menu/index.d.ts +0 -3
- package/dist/components/channel-header-menu/index.d.ts.map +0 -1
- package/dist/components/channel-header-menu/index.js +0 -5
- package/dist/components/channel-header-menu/index.js.map +0 -1
- package/dist/components/channel-menu/ChannelMenu.cjs +0 -2
- package/dist/components/channel-menu/ChannelMenu.cjs.map +0 -1
- package/dist/components/channel-menu/ChannelMenu.d.ts +0 -8
- package/dist/components/channel-menu/ChannelMenu.d.ts.map +0 -1
- package/dist/components/channel-menu/ChannelMenu.js +0 -91
- package/dist/components/channel-menu/ChannelMenu.js.map +0 -1
- package/dist/components/channel-menu/index.cjs +0 -2
- package/dist/components/channel-menu/index.cjs.map +0 -1
- package/dist/components/channel-menu/index.d.ts +0 -3
- package/dist/components/channel-menu/index.d.ts.map +0 -1
- package/dist/components/channel-menu/index.js +0 -5
- package/dist/components/channel-menu/index.js.map +0 -1
- package/dist/components/channels-sidebar/ChannelsSidebar.cjs +0 -2
- package/dist/components/channels-sidebar/ChannelsSidebar.cjs.map +0 -1
- package/dist/components/channels-sidebar/ChannelsSidebar.css +0 -1
- package/dist/components/channels-sidebar/ChannelsSidebar.d.ts +0 -57
- package/dist/components/channels-sidebar/ChannelsSidebar.d.ts.map +0 -1
- package/dist/components/channels-sidebar/ChannelsSidebar.js +0 -177
- package/dist/components/channels-sidebar/ChannelsSidebar.js.map +0 -1
- package/dist/components/channels-sidebar/ChannelsSidebar.module.scss.cjs +0 -2
- package/dist/components/channels-sidebar/ChannelsSidebar.module.scss.cjs.map +0 -1
- package/dist/components/channels-sidebar/ChannelsSidebar.module.scss.js +0 -35
- package/dist/components/channels-sidebar/ChannelsSidebar.module.scss.js.map +0 -1
- package/dist/components/channels-sidebar/channelsSidebarModel.cjs +0 -2
- package/dist/components/channels-sidebar/channelsSidebarModel.cjs.map +0 -1
- package/dist/components/channels-sidebar/channelsSidebarModel.d.ts +0 -22
- package/dist/components/channels-sidebar/channelsSidebarModel.d.ts.map +0 -1
- package/dist/components/channels-sidebar/channelsSidebarModel.js +0 -20
- package/dist/components/channels-sidebar/channelsSidebarModel.js.map +0 -1
- package/dist/components/channels-sidebar/index.cjs +0 -2
- package/dist/components/channels-sidebar/index.cjs.map +0 -1
- package/dist/components/channels-sidebar/index.d.ts +0 -6
- package/dist/components/channels-sidebar/index.d.ts.map +0 -1
- package/dist/components/channels-sidebar/index.js +0 -12
- package/dist/components/channels-sidebar/index.js.map +0 -1
- package/dist/components/global-header/GlobalHeader.cjs +0 -2
- package/dist/components/global-header/GlobalHeader.cjs.map +0 -1
- package/dist/components/global-header/GlobalHeader.css +0 -1
- package/dist/components/global-header/GlobalHeader.d.ts +0 -28
- package/dist/components/global-header/GlobalHeader.d.ts.map +0 -1
- package/dist/components/global-header/GlobalHeader.js +0 -157
- package/dist/components/global-header/GlobalHeader.js.map +0 -1
- package/dist/components/global-header/GlobalHeader.module.scss.cjs +0 -2
- package/dist/components/global-header/GlobalHeader.module.scss.cjs.map +0 -1
- package/dist/components/global-header/GlobalHeader.module.scss.js +0 -20
- package/dist/components/global-header/GlobalHeader.module.scss.js.map +0 -1
- package/dist/components/global-header/index.cjs +0 -2
- package/dist/components/global-header/index.cjs.map +0 -1
- package/dist/components/global-header/index.d.ts +0 -3
- package/dist/components/global-header/index.d.ts.map +0 -1
- package/dist/components/global-header/index.js +0 -5
- package/dist/components/global-header/index.js.map +0 -1
- package/dist/components/help-menu/HelpMenu.cjs +0 -2
- package/dist/components/help-menu/HelpMenu.cjs.map +0 -1
- package/dist/components/help-menu/HelpMenu.d.ts +0 -8
- package/dist/components/help-menu/HelpMenu.d.ts.map +0 -1
- package/dist/components/help-menu/HelpMenu.js +0 -64
- package/dist/components/help-menu/HelpMenu.js.map +0 -1
- package/dist/components/help-menu/index.cjs +0 -2
- package/dist/components/help-menu/index.cjs.map +0 -1
- package/dist/components/help-menu/index.d.ts +0 -3
- package/dist/components/help-menu/index.d.ts.map +0 -1
- package/dist/components/help-menu/index.js +0 -5
- package/dist/components/help-menu/index.js.map +0 -1
- package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.cjs +0 -2
- package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.cjs.map +0 -1
- package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.d.ts +0 -12
- package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.d.ts.map +0 -1
- package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.js +0 -172
- package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.js.map +0 -1
- package/dist/components/message-more-options-menu/index.cjs +0 -2
- package/dist/components/message-more-options-menu/index.cjs.map +0 -1
- package/dist/components/message-more-options-menu/index.d.ts +0 -3
- package/dist/components/message-more-options-menu/index.d.ts.map +0 -1
- package/dist/components/message-more-options-menu/index.js +0 -5
- package/dist/components/message-more-options-menu/index.js.map +0 -1
- package/dist/components/plus-menu/PlusMenu.cjs +0 -2
- package/dist/components/plus-menu/PlusMenu.cjs.map +0 -1
- package/dist/components/plus-menu/PlusMenu.d.ts +0 -8
- package/dist/components/plus-menu/PlusMenu.d.ts.map +0 -1
- package/dist/components/plus-menu/PlusMenu.js +0 -69
- package/dist/components/plus-menu/PlusMenu.js.map +0 -1
- package/dist/components/plus-menu/index.cjs +0 -2
- package/dist/components/plus-menu/index.cjs.map +0 -1
- package/dist/components/plus-menu/index.d.ts +0 -3
- package/dist/components/plus-menu/index.d.ts.map +0 -1
- package/dist/components/plus-menu/index.js +0 -5
- package/dist/components/plus-menu/index.js.map +0 -1
- package/dist/components/product-switcher-menu/ProductSwitcherMenu.cjs +0 -2
- package/dist/components/product-switcher-menu/ProductSwitcherMenu.cjs.map +0 -1
- package/dist/components/product-switcher-menu/ProductSwitcherMenu.css +0 -1
- package/dist/components/product-switcher-menu/ProductSwitcherMenu.d.ts +0 -47
- package/dist/components/product-switcher-menu/ProductSwitcherMenu.d.ts.map +0 -1
- package/dist/components/product-switcher-menu/ProductSwitcherMenu.js +0 -110
- package/dist/components/product-switcher-menu/ProductSwitcherMenu.js.map +0 -1
- package/dist/components/product-switcher-menu/ProductSwitcherMenu.module.scss.cjs +0 -2
- package/dist/components/product-switcher-menu/ProductSwitcherMenu.module.scss.cjs.map +0 -1
- package/dist/components/product-switcher-menu/ProductSwitcherMenu.module.scss.js +0 -8
- package/dist/components/product-switcher-menu/ProductSwitcherMenu.module.scss.js.map +0 -1
- package/dist/components/product-switcher-menu/index.cjs +0 -2
- package/dist/components/product-switcher-menu/index.cjs.map +0 -1
- package/dist/components/product-switcher-menu/index.d.ts +0 -4
- package/dist/components/product-switcher-menu/index.d.ts.map +0 -1
- package/dist/components/product-switcher-menu/index.js +0 -6
- package/dist/components/product-switcher-menu/index.js.map +0 -1
- package/dist/components/team-menu/TeamMenu.cjs +0 -2
- package/dist/components/team-menu/TeamMenu.cjs.map +0 -1
- package/dist/components/team-menu/TeamMenu.css +0 -1
- package/dist/components/team-menu/TeamMenu.d.ts +0 -15
- package/dist/components/team-menu/TeamMenu.d.ts.map +0 -1
- package/dist/components/team-menu/TeamMenu.js +0 -107
- package/dist/components/team-menu/TeamMenu.js.map +0 -1
- package/dist/components/team-menu/TeamMenu.module.scss.cjs +0 -2
- package/dist/components/team-menu/TeamMenu.module.scss.cjs.map +0 -1
- package/dist/components/team-menu/TeamMenu.module.scss.js +0 -7
- package/dist/components/team-menu/TeamMenu.module.scss.js.map +0 -1
- package/dist/components/team-menu/index.cjs +0 -2
- package/dist/components/team-menu/index.cjs.map +0 -1
- package/dist/components/team-menu/index.d.ts +0 -3
- package/dist/components/team-menu/index.d.ts.map +0 -1
- package/dist/components/team-menu/index.js +0 -5
- package/dist/components/team-menu/index.js.map +0 -1
- package/dist/components/thread-actions-menu/ThreadActionsMenu.cjs +0 -2
- package/dist/components/thread-actions-menu/ThreadActionsMenu.cjs.map +0 -1
- package/dist/components/thread-actions-menu/ThreadActionsMenu.d.ts +0 -8
- package/dist/components/thread-actions-menu/ThreadActionsMenu.d.ts.map +0 -1
- package/dist/components/thread-actions-menu/ThreadActionsMenu.js +0 -77
- package/dist/components/thread-actions-menu/ThreadActionsMenu.js.map +0 -1
- package/dist/components/thread-actions-menu/index.cjs +0 -2
- package/dist/components/thread-actions-menu/index.cjs.map +0 -1
- package/dist/components/thread-actions-menu/index.d.ts +0 -3
- package/dist/components/thread-actions-menu/index.d.ts.map +0 -1
- package/dist/components/thread-actions-menu/index.js +0 -5
- package/dist/components/thread-actions-menu/index.js.map +0 -1
- package/dist/index.css +0 -162
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttachmentCard.cjs","sources":["../../../src/components/attachment-card/AttachmentCard.tsx"],"sourcesContent":["import type { ComponentType } from 'react';\nimport CloseIcon from '@mattermost/compass-icons/components/close';\nimport DotsVerticalIcon from '@mattermost/compass-icons/components/dots-vertical';\nimport DownloadOutlineIcon from '@mattermost/compass-icons/components/download-outline';\nimport FileAudioOutlineLargeIcon from '@mattermost/compass-icons/components/file-audio-outline-large';\nimport FileCodeOutlineLargeIcon from '@mattermost/compass-icons/components/file-code-outline-large';\nimport FileExcelOutlineLargeIcon from '@mattermost/compass-icons/components/file-excel-outline-large';\nimport FileGenericOutlineLargeIcon from '@mattermost/compass-icons/components/file-generic-outline-large';\nimport FileImageOutlineLargeIcon from '@mattermost/compass-icons/components/file-image-outline-large';\nimport FilePatchOutlineLargeIcon from '@mattermost/compass-icons/components/file-patch-outline-large';\nimport FilePdfOutlineLargeIcon from '@mattermost/compass-icons/components/file-pdf-outline-large';\nimport FilePowerpointOutlineLargeIcon from '@mattermost/compass-icons/components/file-powerpoint-outline-large';\nimport FileTextOutlineLargeIcon from '@mattermost/compass-icons/components/file-text-outline-large';\nimport FileVideoOutlineLargeIcon from '@mattermost/compass-icons/components/file-video-outline-large';\nimport FileWordOutlineLargeIcon from '@mattermost/compass-icons/components/file-word-outline-large';\nimport FileZipOutlineLargeIcon from '@mattermost/compass-icons/components/file-zip-outline-large';\nimport Icon from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport Tag from '@/components/tag/Tag';\nimport styles from './AttachmentCard.module.scss';\n\nexport type AttachmentCardFileType =\n | 'text'\n | 'word'\n | 'excel'\n | 'powerpoint'\n | 'pdf'\n | 'image-icon'\n | 'image-thumbnail'\n | 'video'\n | 'audio'\n | 'generic'\n | 'patch'\n | 'zip'\n | 'code';\n\nexport type AttachmentCardState = 'default' | 'uploading' | 'uploaded';\n\nexport interface AttachmentCardProps {\n className?: string;\n /** File name to display. */\n fileName: string;\n /** File type + size string shown below the filename, e.g. \"TXT 15KB\". */\n fileMeta?: string;\n /** Controls the icon shown on the left. Default: \"generic\". */\n fileType?: AttachmentCardFileType;\n /** Card state. Default: \"default\" (browsing context). */\n state?: AttachmentCardState;\n /** Upload progress 0–100. Used when state=\"uploading\". */\n progress?: number;\n /** Thumbnail image URL. Used when fileType=\"image-thumbnail\". */\n thumbnailSrc?: string;\n /** Optional channel tag label shown below the filename, e.g. \"UX Design\". */\n channelTag?: string;\n /** Optional date/time stamp, e.g. \"Sep 24 5:14 PM\". */\n dateTimeStamp?: string;\n /** Called when the card is activated to open the file or its preview. */\n onOpen?: () => void;\n /** Called when the remove or cancel button is clicked. */\n onRemove?: () => void;\n /** Called when the download button is clicked (visible on hover in default state). */\n onDownload?: () => void;\n /** Called when the more-options button is clicked (visible on hover in default state). */\n onMore?: () => void;\n}\n\ntype IconComponent = ComponentType<{ size: number; className?: string }>;\n\nconst FILE_TYPE_ICONS: Record<\n Exclude<AttachmentCardFileType, 'image-thumbnail'>,\n IconComponent\n> = {\n audio: FileAudioOutlineLargeIcon,\n code: FileCodeOutlineLargeIcon,\n excel: FileExcelOutlineLargeIcon,\n generic: FileGenericOutlineLargeIcon,\n 'image-icon': FileImageOutlineLargeIcon,\n patch: FilePatchOutlineLargeIcon,\n pdf: FilePdfOutlineLargeIcon,\n powerpoint: FilePowerpointOutlineLargeIcon,\n text: FileTextOutlineLargeIcon,\n video: FileVideoOutlineLargeIcon,\n word: FileWordOutlineLargeIcon,\n zip: FileZipOutlineLargeIcon,\n};\n\nconst FILE_TYPE_COLORS: Record<\n Exclude<AttachmentCardFileType, 'image-thumbnail'>,\n string | undefined\n> = {\n audio: 'var(--attachment-blue)',\n code: undefined,\n excel: 'var(--attachment-green)',\n generic: undefined,\n 'image-icon': 'var(--attachment-blue)',\n patch: undefined,\n pdf: 'var(--attachment-red)',\n powerpoint: 'var(--attachment-orange)',\n text: undefined,\n video: 'var(--attachment-blue)',\n word: 'var(--attachment-blue)',\n zip: undefined,\n};\n\n/**\n * Attachment Cards represent a file shared in a channel, message, or task. Each card shows\n * the file's identity at a glance — type, name, size — and hosts the actions a viewer can\n * take on it.\n */\nexport default function AttachmentCard({\n className = '',\n fileName,\n fileMeta,\n fileType = 'generic',\n state = 'default',\n progress = 0,\n thumbnailSrc,\n channelTag,\n dateTimeStamp,\n onOpen,\n onRemove,\n onDownload,\n onMore,\n}: AttachmentCardProps) {\n const isUploading = state === 'uploading';\n const isUploaded = state === 'uploaded';\n const isDefault = state === 'default';\n\n const stateClass = !isDefault ? styles[`attachment-card--${state}`] : '';\n const rootClass = [styles['attachment-card'], stateClass, className]\n .filter(Boolean)\n .join(' ');\n\n const FileIcon =\n fileType !== 'image-thumbnail'\n ? FILE_TYPE_ICONS[fileType]\n : FileGenericOutlineLargeIcon;\n\n const iconColor =\n fileType !== 'image-thumbnail' ? FILE_TYPE_COLORS[fileType] : undefined;\n\n const fileIdentity = (\n <>\n {fileType === 'image-thumbnail' && thumbnailSrc ? (\n <img\n src={thumbnailSrc}\n alt=\"\"\n className={styles['attachment-card__thumbnail']}\n />\n ) : (\n <div\n className={styles['attachment-card__icon']}\n style={iconColor ? { color: iconColor } : undefined}\n >\n <Icon glyph={<FileIcon size={40} />} size=\"40\" />\n </div>\n )}\n\n <div className={styles['attachment-card__text']}>\n <span className={styles['attachment-card__filename']}>{fileName}</span>\n <div className={styles['attachment-card__secondary-details']}>\n {isUploading ? (\n <span className={styles['attachment-card__uploading-text']}>\n {`Uploading… (${progress}%)`}\n </span>\n ) : (\n <>\n {channelTag && <Tag label={channelTag} />}\n {fileMeta && (\n <div className={styles['attachment-card__details']}>\n <span>{fileMeta}</span>\n {dateTimeStamp && (\n <span className={styles['attachment-card__datetime']}>\n <span>{'•'}</span>\n <span>{dateTimeStamp}</span>\n </span>\n )}\n </div>\n )}\n </>\n )}\n </div>\n </div>\n </>\n );\n\n return (\n <div className={rootClass}>\n <div className={styles['attachment-card__container']}>\n <div className={styles['attachment-card__inner']}>\n {isDefault && onOpen ? (\n <button\n type=\"button\"\n className={`${styles['attachment-card__left']} ${styles['attachment-card__open']}`}\n onClick={onOpen}\n aria-label={`Open ${fileName}`}\n >\n {fileIdentity}\n </button>\n ) : (\n <div className={styles['attachment-card__left']}>{fileIdentity}</div>\n )}\n\n <div className={styles['attachment-card__right']}>\n <div className={styles['attachment-card__actions']}>\n {(isUploaded || isUploading) && (\n <IconButton\n size=\"small\"\n icon={<Icon glyph={<CloseIcon />} size=\"16\" />}\n aria-label={\n isUploading ? 'Cancel upload' : 'Remove attachment'\n }\n onClick={onRemove}\n />\n )}\n {isDefault && (\n <>\n <IconButton\n size=\"small\"\n icon={<Icon glyph={<DotsVerticalIcon />} size=\"16\" />}\n aria-label=\"More options\"\n onClick={onMore}\n />\n <IconButton\n size=\"small\"\n icon={<Icon glyph={<DownloadOutlineIcon />} size=\"16\" />}\n aria-label=\"Download\"\n onClick={onDownload}\n />\n </>\n )}\n </div>\n </div>\n </div>\n </div>\n\n {isUploading && (\n <div className={styles['attachment-card__progress-bar']}>\n <div\n className={styles['attachment-card__progress-fill']}\n style={{ width: `${Math.min(100, Math.max(0, progress))}%` }}\n />\n </div>\n )}\n </div>\n );\n}\n"],"names":["FILE_TYPE_ICONS","FileAudioOutlineLargeIcon","FileCodeOutlineLargeIcon","FileExcelOutlineLargeIcon","FileGenericOutlineLargeIcon","FileImageOutlineLargeIcon","FilePatchOutlineLargeIcon","FilePdfOutlineLargeIcon","FilePowerpointOutlineLargeIcon","FileTextOutlineLargeIcon","FileVideoOutlineLargeIcon","FileWordOutlineLargeIcon","FileZipOutlineLargeIcon","FILE_TYPE_COLORS","AttachmentCard","className","fileName","fileMeta","fileType","state","progress","thumbnailSrc","channelTag","dateTimeStamp","onOpen","onRemove","onDownload","onMore","isUploading","isUploaded","isDefault","stateClass","styles","rootClass","FileIcon","iconColor","fileIdentity","jsxs","Fragment","jsx","Icon","Tag","IconButton","CloseIcon","DotsVerticalIcon","DownloadOutlineIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AttachmentCard.cjs","sources":["../../../src/components/attachment-card/AttachmentCard.tsx"],"sourcesContent":["import type { ComponentType } from 'react';\nimport CloseIcon from '@mattermost/compass-icons/components/close';\nimport DotsVerticalIcon from '@mattermost/compass-icons/components/dots-vertical';\nimport DownloadOutlineIcon from '@mattermost/compass-icons/components/download-outline';\nimport FileAudioOutlineLargeIcon from '@mattermost/compass-icons/components/file-audio-outline-large';\nimport FileCodeOutlineLargeIcon from '@mattermost/compass-icons/components/file-code-outline-large';\nimport FileExcelOutlineLargeIcon from '@mattermost/compass-icons/components/file-excel-outline-large';\nimport FileGenericOutlineLargeIcon from '@mattermost/compass-icons/components/file-generic-outline-large';\nimport FileImageOutlineLargeIcon from '@mattermost/compass-icons/components/file-image-outline-large';\nimport FilePatchOutlineLargeIcon from '@mattermost/compass-icons/components/file-patch-outline-large';\nimport FilePdfOutlineLargeIcon from '@mattermost/compass-icons/components/file-pdf-outline-large';\nimport FilePowerpointOutlineLargeIcon from '@mattermost/compass-icons/components/file-powerpoint-outline-large';\nimport FileTextOutlineLargeIcon from '@mattermost/compass-icons/components/file-text-outline-large';\nimport FileVideoOutlineLargeIcon from '@mattermost/compass-icons/components/file-video-outline-large';\nimport FileWordOutlineLargeIcon from '@mattermost/compass-icons/components/file-word-outline-large';\nimport FileZipOutlineLargeIcon from '@mattermost/compass-icons/components/file-zip-outline-large';\nimport Icon from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport Tag from '@/components/tag/Tag';\nimport styles from './AttachmentCard.module.scss';\n\nexport type AttachmentCardFileType =\n | 'text'\n | 'word'\n | 'excel'\n | 'powerpoint'\n | 'pdf'\n | 'image-icon'\n | 'image-thumbnail'\n | 'video'\n | 'audio'\n | 'generic'\n | 'patch'\n | 'zip'\n | 'code';\n\nexport type AttachmentCardState = 'default' | 'uploading' | 'uploaded';\n\nexport interface AttachmentCardProps {\n className?: string;\n /** File name to display. */\n fileName: string;\n /** File type + size string shown below the filename, e.g. \"TXT 15KB\". */\n fileMeta?: string;\n /** Controls the icon shown on the left. Default: \"generic\". */\n fileType?: AttachmentCardFileType;\n /** Card state. Default: \"default\" (browsing context). */\n state?: AttachmentCardState;\n /** Upload progress 0–100. Used when state=\"uploading\". */\n progress?: number;\n /** Thumbnail image URL. Used when fileType=\"image-thumbnail\". */\n thumbnailSrc?: string;\n /** Optional channel tag label shown below the filename, e.g. \"UX Design\". */\n channelTag?: string;\n /** Optional date/time stamp, e.g. \"Sep 24 5:14 PM\". */\n dateTimeStamp?: string;\n /** Called when the card is activated to open the file or its preview. */\n onOpen?: () => void;\n /** Called when the remove or cancel button is clicked. */\n onRemove?: () => void;\n /** Called when the download button is clicked (visible on hover in default state). */\n onDownload?: () => void;\n /** Called when the more-options button is clicked (visible on hover in default state). */\n onMore?: () => void;\n}\n\ntype IconComponent = ComponentType<{ size: number; className?: string }>;\n\nconst FILE_TYPE_ICONS: Record<\n Exclude<AttachmentCardFileType, 'image-thumbnail'>,\n IconComponent\n> = {\n audio: FileAudioOutlineLargeIcon,\n code: FileCodeOutlineLargeIcon,\n excel: FileExcelOutlineLargeIcon,\n generic: FileGenericOutlineLargeIcon,\n 'image-icon': FileImageOutlineLargeIcon,\n patch: FilePatchOutlineLargeIcon,\n pdf: FilePdfOutlineLargeIcon,\n powerpoint: FilePowerpointOutlineLargeIcon,\n text: FileTextOutlineLargeIcon,\n video: FileVideoOutlineLargeIcon,\n word: FileWordOutlineLargeIcon,\n zip: FileZipOutlineLargeIcon,\n};\n\nconst FILE_TYPE_COLORS: Record<\n Exclude<AttachmentCardFileType, 'image-thumbnail'>,\n string | undefined\n> = {\n audio: 'var(--attachment-blue)',\n code: undefined,\n excel: 'var(--attachment-green)',\n generic: undefined,\n 'image-icon': 'var(--attachment-blue)',\n patch: undefined,\n pdf: 'var(--attachment-red)',\n powerpoint: 'var(--attachment-orange)',\n text: undefined,\n video: 'var(--attachment-blue)',\n word: 'var(--attachment-blue)',\n zip: undefined,\n};\n\n/**\n * Attachment Cards represent a file shared in a channel, message, or task. Each card shows\n * the file's identity at a glance — type, name, size — and hosts the actions a viewer can\n * take on it.\n */\nexport default function AttachmentCard({\n className = '',\n fileName,\n fileMeta,\n fileType = 'generic',\n state = 'default',\n progress = 0,\n thumbnailSrc,\n channelTag,\n dateTimeStamp,\n onOpen,\n onRemove,\n onDownload,\n onMore,\n}: AttachmentCardProps) {\n const isUploading = state === 'uploading';\n const isUploaded = state === 'uploaded';\n const isDefault = state === 'default';\n\n const stateClass = !isDefault ? styles[`attachment-card--${state}`] : '';\n const rootClass = [styles['attachment-card'], stateClass, className]\n .filter(Boolean)\n .join(' ');\n\n const FileIcon =\n fileType !== 'image-thumbnail'\n ? FILE_TYPE_ICONS[fileType]\n : FileGenericOutlineLargeIcon;\n\n const iconColor =\n fileType !== 'image-thumbnail' ? FILE_TYPE_COLORS[fileType] : undefined;\n\n const fileIdentity = (\n <>\n {fileType === 'image-thumbnail' && thumbnailSrc ? (\n <img\n src={thumbnailSrc}\n alt=\"\"\n className={styles['attachment-card__thumbnail']}\n />\n ) : (\n <div\n className={styles['attachment-card__icon']}\n style={iconColor ? { color: iconColor } : undefined}\n >\n <Icon glyph={<FileIcon size={40} />} size=\"40\" />\n </div>\n )}\n\n <div className={styles['attachment-card__text']}>\n <span className={styles['attachment-card__filename']}>{fileName}</span>\n <div className={styles['attachment-card__secondary-details']}>\n {isUploading ? (\n <span className={styles['attachment-card__uploading-text']}>\n {`Uploading… (${progress}%)`}\n </span>\n ) : (\n <>\n {channelTag && <Tag label={channelTag} />}\n {fileMeta && (\n <div className={styles['attachment-card__details']}>\n <span>{fileMeta}</span>\n {dateTimeStamp && (\n <span className={styles['attachment-card__datetime']}>\n <span>{'•'}</span>\n <span>{dateTimeStamp}</span>\n </span>\n )}\n </div>\n )}\n </>\n )}\n </div>\n </div>\n </>\n );\n\n return (\n <div className={rootClass}>\n <div className={styles['attachment-card__container']}>\n <div className={styles['attachment-card__inner']}>\n {isDefault && onOpen ? (\n <button\n type=\"button\"\n className={`${styles['attachment-card__left']} ${styles['attachment-card__open']}`}\n onClick={onOpen}\n aria-label={`Open ${fileName}`}\n >\n {fileIdentity}\n </button>\n ) : (\n <div className={styles['attachment-card__left']}>\n {fileIdentity}\n </div>\n )}\n\n <div className={styles['attachment-card__right']}>\n <div className={styles['attachment-card__actions']}>\n {(isUploaded || isUploading) && (\n <IconButton\n size=\"small\"\n icon={<Icon glyph={<CloseIcon />} size=\"16\" />}\n aria-label={\n isUploading ? 'Cancel upload' : 'Remove attachment'\n }\n onClick={onRemove}\n />\n )}\n {isDefault && (\n <>\n <IconButton\n size=\"small\"\n icon={<Icon glyph={<DotsVerticalIcon />} size=\"16\" />}\n aria-label=\"More options\"\n onClick={onMore}\n />\n <IconButton\n size=\"small\"\n icon={<Icon glyph={<DownloadOutlineIcon />} size=\"16\" />}\n aria-label=\"Download\"\n onClick={onDownload}\n />\n </>\n )}\n </div>\n </div>\n </div>\n </div>\n\n {isUploading && (\n <div className={styles['attachment-card__progress-bar']}>\n <div\n className={styles['attachment-card__progress-fill']}\n style={{ width: `${Math.min(100, Math.max(0, progress))}%` }}\n />\n </div>\n )}\n </div>\n );\n}\n"],"names":["FILE_TYPE_ICONS","FileAudioOutlineLargeIcon","FileCodeOutlineLargeIcon","FileExcelOutlineLargeIcon","FileGenericOutlineLargeIcon","FileImageOutlineLargeIcon","FilePatchOutlineLargeIcon","FilePdfOutlineLargeIcon","FilePowerpointOutlineLargeIcon","FileTextOutlineLargeIcon","FileVideoOutlineLargeIcon","FileWordOutlineLargeIcon","FileZipOutlineLargeIcon","FILE_TYPE_COLORS","AttachmentCard","className","fileName","fileMeta","fileType","state","progress","thumbnailSrc","channelTag","dateTimeStamp","onOpen","onRemove","onDownload","onMore","isUploading","isUploaded","isDefault","stateClass","styles","rootClass","FileIcon","iconColor","fileIdentity","jsxs","Fragment","jsx","Icon","Tag","IconButton","CloseIcon","DotsVerticalIcon","DownloadOutlineIcon"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttachmentCard.d.ts","sourceRoot":"","sources":["../../../src/components/attachment-card/AttachmentCard.tsx"],"names":[],"mappings":"AAqBA,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN,MAAM,GACN,OAAO,GACP,YAAY,GACZ,KAAK,GACL,YAAY,GACZ,iBAAiB,GACjB,OAAO,GACP,OAAO,GACP,SAAS,GACT,OAAO,GACP,KAAK,GACL,MAAM,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,yDAAyD;IACzD,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAwCD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,SAAc,EACd,QAAQ,EACR,QAAQ,EACR,QAAoB,EACpB,KAAiB,EACjB,QAAY,EACZ,YAAY,EACZ,UAAU,EACV,aAAa,EACb,MAAM,EACN,QAAQ,EACR,UAAU,EACV,MAAM,GACP,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"AttachmentCard.d.ts","sourceRoot":"","sources":["../../../src/components/attachment-card/AttachmentCard.tsx"],"names":[],"mappings":"AAqBA,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN,MAAM,GACN,OAAO,GACP,YAAY,GACZ,KAAK,GACL,YAAY,GACZ,iBAAiB,GACjB,OAAO,GACP,OAAO,GACP,SAAS,GACT,OAAO,GACP,KAAK,GACL,MAAM,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,yDAAyD;IACzD,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAwCD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,SAAc,EACd,QAAQ,EACR,QAAQ,EACR,QAAoB,EACpB,KAAiB,EACjB,QAAY,EACZ,YAAY,EACZ,UAAU,EACV,aAAa,EACb,MAAM,EACN,QAAQ,EACR,UAAU,EACV,MAAM,GACP,EAAE,mBAAmB,2CA6HrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttachmentCard.js","sources":["../../../src/components/attachment-card/AttachmentCard.tsx"],"sourcesContent":["import type { ComponentType } from 'react';\nimport CloseIcon from '@mattermost/compass-icons/components/close';\nimport DotsVerticalIcon from '@mattermost/compass-icons/components/dots-vertical';\nimport DownloadOutlineIcon from '@mattermost/compass-icons/components/download-outline';\nimport FileAudioOutlineLargeIcon from '@mattermost/compass-icons/components/file-audio-outline-large';\nimport FileCodeOutlineLargeIcon from '@mattermost/compass-icons/components/file-code-outline-large';\nimport FileExcelOutlineLargeIcon from '@mattermost/compass-icons/components/file-excel-outline-large';\nimport FileGenericOutlineLargeIcon from '@mattermost/compass-icons/components/file-generic-outline-large';\nimport FileImageOutlineLargeIcon from '@mattermost/compass-icons/components/file-image-outline-large';\nimport FilePatchOutlineLargeIcon from '@mattermost/compass-icons/components/file-patch-outline-large';\nimport FilePdfOutlineLargeIcon from '@mattermost/compass-icons/components/file-pdf-outline-large';\nimport FilePowerpointOutlineLargeIcon from '@mattermost/compass-icons/components/file-powerpoint-outline-large';\nimport FileTextOutlineLargeIcon from '@mattermost/compass-icons/components/file-text-outline-large';\nimport FileVideoOutlineLargeIcon from '@mattermost/compass-icons/components/file-video-outline-large';\nimport FileWordOutlineLargeIcon from '@mattermost/compass-icons/components/file-word-outline-large';\nimport FileZipOutlineLargeIcon from '@mattermost/compass-icons/components/file-zip-outline-large';\nimport Icon from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport Tag from '@/components/tag/Tag';\nimport styles from './AttachmentCard.module.scss';\n\nexport type AttachmentCardFileType =\n | 'text'\n | 'word'\n | 'excel'\n | 'powerpoint'\n | 'pdf'\n | 'image-icon'\n | 'image-thumbnail'\n | 'video'\n | 'audio'\n | 'generic'\n | 'patch'\n | 'zip'\n | 'code';\n\nexport type AttachmentCardState = 'default' | 'uploading' | 'uploaded';\n\nexport interface AttachmentCardProps {\n className?: string;\n /** File name to display. */\n fileName: string;\n /** File type + size string shown below the filename, e.g. \"TXT 15KB\". */\n fileMeta?: string;\n /** Controls the icon shown on the left. Default: \"generic\". */\n fileType?: AttachmentCardFileType;\n /** Card state. Default: \"default\" (browsing context). */\n state?: AttachmentCardState;\n /** Upload progress 0–100. Used when state=\"uploading\". */\n progress?: number;\n /** Thumbnail image URL. Used when fileType=\"image-thumbnail\". */\n thumbnailSrc?: string;\n /** Optional channel tag label shown below the filename, e.g. \"UX Design\". */\n channelTag?: string;\n /** Optional date/time stamp, e.g. \"Sep 24 5:14 PM\". */\n dateTimeStamp?: string;\n /** Called when the card is activated to open the file or its preview. */\n onOpen?: () => void;\n /** Called when the remove or cancel button is clicked. */\n onRemove?: () => void;\n /** Called when the download button is clicked (visible on hover in default state). */\n onDownload?: () => void;\n /** Called when the more-options button is clicked (visible on hover in default state). */\n onMore?: () => void;\n}\n\ntype IconComponent = ComponentType<{ size: number; className?: string }>;\n\nconst FILE_TYPE_ICONS: Record<\n Exclude<AttachmentCardFileType, 'image-thumbnail'>,\n IconComponent\n> = {\n audio: FileAudioOutlineLargeIcon,\n code: FileCodeOutlineLargeIcon,\n excel: FileExcelOutlineLargeIcon,\n generic: FileGenericOutlineLargeIcon,\n 'image-icon': FileImageOutlineLargeIcon,\n patch: FilePatchOutlineLargeIcon,\n pdf: FilePdfOutlineLargeIcon,\n powerpoint: FilePowerpointOutlineLargeIcon,\n text: FileTextOutlineLargeIcon,\n video: FileVideoOutlineLargeIcon,\n word: FileWordOutlineLargeIcon,\n zip: FileZipOutlineLargeIcon,\n};\n\nconst FILE_TYPE_COLORS: Record<\n Exclude<AttachmentCardFileType, 'image-thumbnail'>,\n string | undefined\n> = {\n audio: 'var(--attachment-blue)',\n code: undefined,\n excel: 'var(--attachment-green)',\n generic: undefined,\n 'image-icon': 'var(--attachment-blue)',\n patch: undefined,\n pdf: 'var(--attachment-red)',\n powerpoint: 'var(--attachment-orange)',\n text: undefined,\n video: 'var(--attachment-blue)',\n word: 'var(--attachment-blue)',\n zip: undefined,\n};\n\n/**\n * Attachment Cards represent a file shared in a channel, message, or task. Each card shows\n * the file's identity at a glance — type, name, size — and hosts the actions a viewer can\n * take on it.\n */\nexport default function AttachmentCard({\n className = '',\n fileName,\n fileMeta,\n fileType = 'generic',\n state = 'default',\n progress = 0,\n thumbnailSrc,\n channelTag,\n dateTimeStamp,\n onOpen,\n onRemove,\n onDownload,\n onMore,\n}: AttachmentCardProps) {\n const isUploading = state === 'uploading';\n const isUploaded = state === 'uploaded';\n const isDefault = state === 'default';\n\n const stateClass = !isDefault ? styles[`attachment-card--${state}`] : '';\n const rootClass = [styles['attachment-card'], stateClass, className]\n .filter(Boolean)\n .join(' ');\n\n const FileIcon =\n fileType !== 'image-thumbnail'\n ? FILE_TYPE_ICONS[fileType]\n : FileGenericOutlineLargeIcon;\n\n const iconColor =\n fileType !== 'image-thumbnail' ? FILE_TYPE_COLORS[fileType] : undefined;\n\n const fileIdentity = (\n <>\n {fileType === 'image-thumbnail' && thumbnailSrc ? (\n <img\n src={thumbnailSrc}\n alt=\"\"\n className={styles['attachment-card__thumbnail']}\n />\n ) : (\n <div\n className={styles['attachment-card__icon']}\n style={iconColor ? { color: iconColor } : undefined}\n >\n <Icon glyph={<FileIcon size={40} />} size=\"40\" />\n </div>\n )}\n\n <div className={styles['attachment-card__text']}>\n <span className={styles['attachment-card__filename']}>{fileName}</span>\n <div className={styles['attachment-card__secondary-details']}>\n {isUploading ? (\n <span className={styles['attachment-card__uploading-text']}>\n {`Uploading… (${progress}%)`}\n </span>\n ) : (\n <>\n {channelTag && <Tag label={channelTag} />}\n {fileMeta && (\n <div className={styles['attachment-card__details']}>\n <span>{fileMeta}</span>\n {dateTimeStamp && (\n <span className={styles['attachment-card__datetime']}>\n <span>{'•'}</span>\n <span>{dateTimeStamp}</span>\n </span>\n )}\n </div>\n )}\n </>\n )}\n </div>\n </div>\n </>\n );\n\n return (\n <div className={rootClass}>\n <div className={styles['attachment-card__container']}>\n <div className={styles['attachment-card__inner']}>\n {isDefault && onOpen ? (\n <button\n type=\"button\"\n className={`${styles['attachment-card__left']} ${styles['attachment-card__open']}`}\n onClick={onOpen}\n aria-label={`Open ${fileName}`}\n >\n {fileIdentity}\n </button>\n ) : (\n <div className={styles['attachment-card__left']}>{fileIdentity}</div>\n )}\n\n <div className={styles['attachment-card__right']}>\n <div className={styles['attachment-card__actions']}>\n {(isUploaded || isUploading) && (\n <IconButton\n size=\"small\"\n icon={<Icon glyph={<CloseIcon />} size=\"16\" />}\n aria-label={\n isUploading ? 'Cancel upload' : 'Remove attachment'\n }\n onClick={onRemove}\n />\n )}\n {isDefault && (\n <>\n <IconButton\n size=\"small\"\n icon={<Icon glyph={<DotsVerticalIcon />} size=\"16\" />}\n aria-label=\"More options\"\n onClick={onMore}\n />\n <IconButton\n size=\"small\"\n icon={<Icon glyph={<DownloadOutlineIcon />} size=\"16\" />}\n aria-label=\"Download\"\n onClick={onDownload}\n />\n </>\n )}\n </div>\n </div>\n </div>\n </div>\n\n {isUploading && (\n <div className={styles['attachment-card__progress-bar']}>\n <div\n className={styles['attachment-card__progress-fill']}\n style={{ width: `${Math.min(100, Math.max(0, progress))}%` }}\n />\n </div>\n )}\n </div>\n );\n}\n"],"names":["FILE_TYPE_ICONS","FileAudioOutlineLargeIcon","FileCodeOutlineLargeIcon","FileExcelOutlineLargeIcon","FileGenericOutlineLargeIcon","FileImageOutlineLargeIcon","FilePatchOutlineLargeIcon","FilePdfOutlineLargeIcon","FilePowerpointOutlineLargeIcon","FileTextOutlineLargeIcon","FileVideoOutlineLargeIcon","FileWordOutlineLargeIcon","FileZipOutlineLargeIcon","FILE_TYPE_COLORS","AttachmentCard","className","fileName","fileMeta","fileType","state","progress","thumbnailSrc","channelTag","dateTimeStamp","onOpen","onRemove","onDownload","onMore","isUploading","isUploaded","isDefault","stateClass","styles","rootClass","FileIcon","iconColor","fileIdentity","jsxs","Fragment","jsx","Icon","Tag","IconButton","CloseIcon","DotsVerticalIcon","DownloadOutlineIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AttachmentCard.js","sources":["../../../src/components/attachment-card/AttachmentCard.tsx"],"sourcesContent":["import type { ComponentType } from 'react';\nimport CloseIcon from '@mattermost/compass-icons/components/close';\nimport DotsVerticalIcon from '@mattermost/compass-icons/components/dots-vertical';\nimport DownloadOutlineIcon from '@mattermost/compass-icons/components/download-outline';\nimport FileAudioOutlineLargeIcon from '@mattermost/compass-icons/components/file-audio-outline-large';\nimport FileCodeOutlineLargeIcon from '@mattermost/compass-icons/components/file-code-outline-large';\nimport FileExcelOutlineLargeIcon from '@mattermost/compass-icons/components/file-excel-outline-large';\nimport FileGenericOutlineLargeIcon from '@mattermost/compass-icons/components/file-generic-outline-large';\nimport FileImageOutlineLargeIcon from '@mattermost/compass-icons/components/file-image-outline-large';\nimport FilePatchOutlineLargeIcon from '@mattermost/compass-icons/components/file-patch-outline-large';\nimport FilePdfOutlineLargeIcon from '@mattermost/compass-icons/components/file-pdf-outline-large';\nimport FilePowerpointOutlineLargeIcon from '@mattermost/compass-icons/components/file-powerpoint-outline-large';\nimport FileTextOutlineLargeIcon from '@mattermost/compass-icons/components/file-text-outline-large';\nimport FileVideoOutlineLargeIcon from '@mattermost/compass-icons/components/file-video-outline-large';\nimport FileWordOutlineLargeIcon from '@mattermost/compass-icons/components/file-word-outline-large';\nimport FileZipOutlineLargeIcon from '@mattermost/compass-icons/components/file-zip-outline-large';\nimport Icon from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport Tag from '@/components/tag/Tag';\nimport styles from './AttachmentCard.module.scss';\n\nexport type AttachmentCardFileType =\n | 'text'\n | 'word'\n | 'excel'\n | 'powerpoint'\n | 'pdf'\n | 'image-icon'\n | 'image-thumbnail'\n | 'video'\n | 'audio'\n | 'generic'\n | 'patch'\n | 'zip'\n | 'code';\n\nexport type AttachmentCardState = 'default' | 'uploading' | 'uploaded';\n\nexport interface AttachmentCardProps {\n className?: string;\n /** File name to display. */\n fileName: string;\n /** File type + size string shown below the filename, e.g. \"TXT 15KB\". */\n fileMeta?: string;\n /** Controls the icon shown on the left. Default: \"generic\". */\n fileType?: AttachmentCardFileType;\n /** Card state. Default: \"default\" (browsing context). */\n state?: AttachmentCardState;\n /** Upload progress 0–100. Used when state=\"uploading\". */\n progress?: number;\n /** Thumbnail image URL. Used when fileType=\"image-thumbnail\". */\n thumbnailSrc?: string;\n /** Optional channel tag label shown below the filename, e.g. \"UX Design\". */\n channelTag?: string;\n /** Optional date/time stamp, e.g. \"Sep 24 5:14 PM\". */\n dateTimeStamp?: string;\n /** Called when the card is activated to open the file or its preview. */\n onOpen?: () => void;\n /** Called when the remove or cancel button is clicked. */\n onRemove?: () => void;\n /** Called when the download button is clicked (visible on hover in default state). */\n onDownload?: () => void;\n /** Called when the more-options button is clicked (visible on hover in default state). */\n onMore?: () => void;\n}\n\ntype IconComponent = ComponentType<{ size: number; className?: string }>;\n\nconst FILE_TYPE_ICONS: Record<\n Exclude<AttachmentCardFileType, 'image-thumbnail'>,\n IconComponent\n> = {\n audio: FileAudioOutlineLargeIcon,\n code: FileCodeOutlineLargeIcon,\n excel: FileExcelOutlineLargeIcon,\n generic: FileGenericOutlineLargeIcon,\n 'image-icon': FileImageOutlineLargeIcon,\n patch: FilePatchOutlineLargeIcon,\n pdf: FilePdfOutlineLargeIcon,\n powerpoint: FilePowerpointOutlineLargeIcon,\n text: FileTextOutlineLargeIcon,\n video: FileVideoOutlineLargeIcon,\n word: FileWordOutlineLargeIcon,\n zip: FileZipOutlineLargeIcon,\n};\n\nconst FILE_TYPE_COLORS: Record<\n Exclude<AttachmentCardFileType, 'image-thumbnail'>,\n string | undefined\n> = {\n audio: 'var(--attachment-blue)',\n code: undefined,\n excel: 'var(--attachment-green)',\n generic: undefined,\n 'image-icon': 'var(--attachment-blue)',\n patch: undefined,\n pdf: 'var(--attachment-red)',\n powerpoint: 'var(--attachment-orange)',\n text: undefined,\n video: 'var(--attachment-blue)',\n word: 'var(--attachment-blue)',\n zip: undefined,\n};\n\n/**\n * Attachment Cards represent a file shared in a channel, message, or task. Each card shows\n * the file's identity at a glance — type, name, size — and hosts the actions a viewer can\n * take on it.\n */\nexport default function AttachmentCard({\n className = '',\n fileName,\n fileMeta,\n fileType = 'generic',\n state = 'default',\n progress = 0,\n thumbnailSrc,\n channelTag,\n dateTimeStamp,\n onOpen,\n onRemove,\n onDownload,\n onMore,\n}: AttachmentCardProps) {\n const isUploading = state === 'uploading';\n const isUploaded = state === 'uploaded';\n const isDefault = state === 'default';\n\n const stateClass = !isDefault ? styles[`attachment-card--${state}`] : '';\n const rootClass = [styles['attachment-card'], stateClass, className]\n .filter(Boolean)\n .join(' ');\n\n const FileIcon =\n fileType !== 'image-thumbnail'\n ? FILE_TYPE_ICONS[fileType]\n : FileGenericOutlineLargeIcon;\n\n const iconColor =\n fileType !== 'image-thumbnail' ? FILE_TYPE_COLORS[fileType] : undefined;\n\n const fileIdentity = (\n <>\n {fileType === 'image-thumbnail' && thumbnailSrc ? (\n <img\n src={thumbnailSrc}\n alt=\"\"\n className={styles['attachment-card__thumbnail']}\n />\n ) : (\n <div\n className={styles['attachment-card__icon']}\n style={iconColor ? { color: iconColor } : undefined}\n >\n <Icon glyph={<FileIcon size={40} />} size=\"40\" />\n </div>\n )}\n\n <div className={styles['attachment-card__text']}>\n <span className={styles['attachment-card__filename']}>{fileName}</span>\n <div className={styles['attachment-card__secondary-details']}>\n {isUploading ? (\n <span className={styles['attachment-card__uploading-text']}>\n {`Uploading… (${progress}%)`}\n </span>\n ) : (\n <>\n {channelTag && <Tag label={channelTag} />}\n {fileMeta && (\n <div className={styles['attachment-card__details']}>\n <span>{fileMeta}</span>\n {dateTimeStamp && (\n <span className={styles['attachment-card__datetime']}>\n <span>{'•'}</span>\n <span>{dateTimeStamp}</span>\n </span>\n )}\n </div>\n )}\n </>\n )}\n </div>\n </div>\n </>\n );\n\n return (\n <div className={rootClass}>\n <div className={styles['attachment-card__container']}>\n <div className={styles['attachment-card__inner']}>\n {isDefault && onOpen ? (\n <button\n type=\"button\"\n className={`${styles['attachment-card__left']} ${styles['attachment-card__open']}`}\n onClick={onOpen}\n aria-label={`Open ${fileName}`}\n >\n {fileIdentity}\n </button>\n ) : (\n <div className={styles['attachment-card__left']}>\n {fileIdentity}\n </div>\n )}\n\n <div className={styles['attachment-card__right']}>\n <div className={styles['attachment-card__actions']}>\n {(isUploaded || isUploading) && (\n <IconButton\n size=\"small\"\n icon={<Icon glyph={<CloseIcon />} size=\"16\" />}\n aria-label={\n isUploading ? 'Cancel upload' : 'Remove attachment'\n }\n onClick={onRemove}\n />\n )}\n {isDefault && (\n <>\n <IconButton\n size=\"small\"\n icon={<Icon glyph={<DotsVerticalIcon />} size=\"16\" />}\n aria-label=\"More options\"\n onClick={onMore}\n />\n <IconButton\n size=\"small\"\n icon={<Icon glyph={<DownloadOutlineIcon />} size=\"16\" />}\n aria-label=\"Download\"\n onClick={onDownload}\n />\n </>\n )}\n </div>\n </div>\n </div>\n </div>\n\n {isUploading && (\n <div className={styles['attachment-card__progress-bar']}>\n <div\n className={styles['attachment-card__progress-fill']}\n style={{ width: `${Math.min(100, Math.max(0, progress))}%` }}\n />\n </div>\n )}\n </div>\n );\n}\n"],"names":["FILE_TYPE_ICONS","FileAudioOutlineLargeIcon","FileCodeOutlineLargeIcon","FileExcelOutlineLargeIcon","FileGenericOutlineLargeIcon","FileImageOutlineLargeIcon","FilePatchOutlineLargeIcon","FilePdfOutlineLargeIcon","FilePowerpointOutlineLargeIcon","FileTextOutlineLargeIcon","FileVideoOutlineLargeIcon","FileWordOutlineLargeIcon","FileZipOutlineLargeIcon","FILE_TYPE_COLORS","AttachmentCard","className","fileName","fileMeta","fileType","state","progress","thumbnailSrc","channelTag","dateTimeStamp","onOpen","onRemove","onDownload","onMore","isUploading","isUploaded","isDefault","stateClass","styles","rootClass","FileIcon","iconColor","fileIdentity","jsxs","Fragment","jsx","Icon","Tag","IconButton","CloseIcon","DotsVerticalIcon","DownloadOutlineIcon"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),o=require("react"),d=require("../icon/Icon.cjs"),I=require("../spinner/Spinner.cjs"),b=require("../../utils/string.cjs"),e=require("./Button.module.scss.cjs"),P={"x-small":"12",small:"12",medium:"16",large:"20"},f=o.forwardRef(function({appearance:l="default",className:m="",destructive:p=!1,emphasis:a="primary",children:v,leadingIcon:u,loading:s=!1,size:i="medium",trailingIcon:r,disabled:_,type:x="button",...j},h){const n=P[i],C=e.default[`button--emphasis-${b.toKebab(a)}`],S=e.default[`button--size-${b.toKebab(i)}`],q=l==="inverted"?e.default["button--appearance-inverted"]:"",N=p?e.default["button--destructive"]:"",z=[e.default.button,C,S,q,N,m].filter(Boolean).join(" "),c=a!=="link",B=s||c&&o.isValidElement(u);return t.jsxs("button",{ref:h,className:z,type:x,disabled:_||s,...j,children:[B?t.jsx("span",{className:e.default["button__icon-slot"],"aria-hidden":!0,children:s?t.jsx(I.default,{size:n,inverted:l==="inverted"}):t.jsx(d.IconSlotContext.Provider,{value:{size:n},children:u})}):null,t.jsx("span",{className:e.default.button__label,children:v}),c&&!s&&o.isValidElement(r)?t.jsx("span",{className:e.default["button__icon-slot"],"aria-hidden":!0,children:t.jsx(d.IconSlotContext.Provider,{value:{size:n},children:r})}):null]})});f.displayName="Button";exports.default=f;
|
|
2
2
|
//# sourceMappingURL=Button.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.cjs","sources":["../../../src/components/button/Button.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"Button.cjs","sources":["../../../src/components/button/Button.tsx"],"sourcesContent":["import {\n forwardRef,\n isValidElement,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport type { IconSize } from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport Spinner from '@/components/spinner/Spinner';\nimport type { SpinnerSize } from '@/components/spinner/Spinner';\nimport { toKebab } from '@/utils/string';\nimport styles from './Button.module.scss';\n\nexport type ButtonEmphasis =\n | 'primary'\n | 'secondary'\n | 'tertiary'\n | 'quaternary'\n | 'link';\n\nexport type ButtonSize = 'x-small' | 'small' | 'medium' | 'large';\n\nexport type ButtonAppearance = 'default' | 'inverted';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** default | inverted (for use on dark backgrounds). Maps to Figma \"Style\". */\n appearance?: ButtonAppearance;\n /** Optional CSS class name. */\n className?: string;\n /** Button label. */\n children: ReactNode;\n /** When true, uses destructive (danger) styling. */\n destructive?: boolean;\n /** Visual emphasis. Default: primary. */\n emphasis?: ButtonEmphasis;\n /** Leading icon — pass `<Icon glyph={<YourIcon />} />`. Button provides the correct size via context; no `size` prop needed on the Icon. */\n leadingIcon?: ReactNode;\n /** When true, shows a Spinner in the leading slot and disables the button. */\n loading?: boolean;\n /** Size variant. Default: medium. */\n size?: ButtonSize;\n /** Trailing icon — pass `<Icon glyph={<YourIcon />} />`. Button provides the correct size via context; no `size` prop needed on the Icon. */\n trailingIcon?: ReactNode;\n}\n\nconst SIZE_ICON_MAP: Record<ButtonSize, IconSize> = {\n 'x-small': '12',\n small: '12',\n medium: '16',\n large: '20',\n};\n\n/**\n * Buttons let people take actions or make decisions with a single tap or click — saving a\n * form, sending a message, confirming a dialog. Compass ships several button variants, each\n * with the same anatomy and rhythm so they feel like members of the same family.\n */\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n appearance = 'default',\n className = '',\n destructive = false,\n emphasis = 'primary',\n children,\n leadingIcon,\n loading = false,\n size = 'medium',\n trailingIcon,\n disabled,\n type = 'button',\n ...rest\n },\n ref,\n) {\n const iconSize = SIZE_ICON_MAP[size];\n const emphasisClass = styles[`button--emphasis-${toKebab(emphasis)}`];\n const sizeClass = styles[`button--size-${toKebab(size)}`];\n const appearanceClass =\n appearance === 'inverted' ? styles['button--appearance-inverted'] : '';\n const destructiveClass = destructive ? styles['button--destructive'] : '';\n\n const rootClass = [\n styles.button,\n emphasisClass,\n sizeClass,\n appearanceClass,\n destructiveClass,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const supportsIcons = emphasis !== 'link';\n const showLeadingSlot =\n loading || (supportsIcons && isValidElement(leadingIcon));\n\n return (\n <button\n ref={ref}\n className={rootClass}\n type={type}\n disabled={disabled || loading}\n {...rest}\n >\n {showLeadingSlot ? (\n <span className={styles['button__icon-slot']} aria-hidden>\n {loading ? (\n <Spinner\n size={iconSize as SpinnerSize}\n inverted={appearance === 'inverted'}\n />\n ) : (\n <IconSlotContext.Provider value={{ size: iconSize }}>\n {leadingIcon}\n </IconSlotContext.Provider>\n )}\n </span>\n ) : null}\n <span className={styles['button__label']}>{children}</span>\n {supportsIcons && !loading && isValidElement(trailingIcon) ? (\n <span className={styles['button__icon-slot']} aria-hidden>\n <IconSlotContext.Provider value={{ size: iconSize }}>\n {trailingIcon}\n </IconSlotContext.Provider>\n </span>\n ) : null}\n </button>\n );\n});\n\nButton.displayName = 'Button';\n\nexport default Button;\n"],"names":["SIZE_ICON_MAP","Button","forwardRef","appearance","className","destructive","emphasis","children","leadingIcon","loading","size","trailingIcon","disabled","type","rest","ref","iconSize","emphasisClass","styles","toKebab","sizeClass","appearanceClass","destructiveClass","rootClass","supportsIcons","showLeadingSlot","isValidElement","jsxs","jsx","Spinner","IconSlotContext"],"mappings":"gTA6CMA,EAA8C,CAClD,UAAW,KACX,MAAO,KACP,OAAQ,KACR,MAAO,IACT,EAOMC,EAASC,EAAAA,WAA2C,SACxD,CACE,WAAAC,EAAa,UACb,UAAAC,EAAY,GACZ,YAAAC,EAAc,GACd,SAAAC,EAAW,UACX,SAAAC,EACA,YAAAC,EACA,QAAAC,EAAU,GACV,KAAAC,EAAO,SACP,aAAAC,EACA,SAAAC,EACA,KAAAC,EAAO,SACP,GAAGC,CACL,EACAC,EACA,CACA,MAAMC,EAAWhB,EAAcU,CAAI,EAC7BO,EAAgBC,EAAAA,QAAO,oBAAoBC,EAAAA,QAAQb,CAAQ,CAAC,EAAE,EAC9Dc,EAAYF,EAAAA,QAAO,gBAAgBC,EAAAA,QAAQT,CAAI,CAAC,EAAE,EAClDW,EACJlB,IAAe,WAAae,EAAAA,QAAO,6BAA6B,EAAI,GAChEI,EAAmBjB,EAAca,UAAO,qBAAqB,EAAI,GAEjEK,EAAY,CAChBL,EAAAA,QAAO,OACPD,EACAG,EACAC,EACAC,EACAlB,CAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,EAELoB,EAAgBlB,IAAa,OAC7BmB,EACJhB,GAAYe,GAAiBE,EAAAA,eAAelB,CAAW,EAEzD,OACEmB,EAAAA,KAAC,SAAA,CACC,IAAAZ,EACA,UAAWQ,EACX,KAAAV,EACA,SAAUD,GAAYH,EACrB,GAAGK,EAEH,SAAA,CAAAW,EACCG,EAAAA,IAAC,QAAK,UAAWV,EAAAA,QAAO,mBAAmB,EAAG,cAAW,GACtD,SAAAT,EACCmB,EAAAA,IAACC,EAAAA,QAAA,CACC,KAAMb,EACN,SAAUb,IAAe,UAAA,CAAA,EAG3ByB,EAAAA,IAACE,EAAAA,gBAAgB,SAAhB,CAAyB,MAAO,CAAE,KAAMd,CAAA,EACtC,SAAAR,EACH,CAAA,CAEJ,EACE,WACH,OAAA,CAAK,UAAWU,EAAAA,QAAO,cAAmB,SAAAX,EAAS,EACnDiB,GAAiB,CAACf,GAAWiB,EAAAA,eAAef,CAAY,EACvDiB,EAAAA,IAAC,OAAA,CAAK,UAAWV,EAAAA,QAAO,mBAAmB,EAAG,cAAW,GACvD,SAAAU,MAACE,EAAAA,gBAAgB,SAAhB,CAAyB,MAAO,CAAE,KAAMd,CAAA,EACtC,SAAAL,CAAA,CACH,CAAA,CACF,EACE,IAAA,CAAA,CAAA,CAGV,CAAC,EAEDV,EAAO,YAAc"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ButtonHTMLAttributes, ReactNode } from 'react';
|
|
2
2
|
export type ButtonEmphasis = 'primary' | 'secondary' | 'tertiary' | 'quaternary' | 'link';
|
|
3
3
|
export type ButtonSize = 'x-small' | 'small' | 'medium' | 'large';
|
|
4
4
|
export type ButtonAppearance = 'default' | 'inverted';
|
|
@@ -8,7 +8,7 @@ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
|
8
8
|
/** Optional CSS class name. */
|
|
9
9
|
className?: string;
|
|
10
10
|
/** Button label. */
|
|
11
|
-
children:
|
|
11
|
+
children: ReactNode;
|
|
12
12
|
/** When true, uses destructive (danger) styling. */
|
|
13
13
|
destructive?: boolean;
|
|
14
14
|
/** Visual emphasis. Default: primary. */
|
|
@@ -27,5 +27,6 @@ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
|
27
27
|
* form, sending a message, confirming a dialog. Compass ships several button variants, each
|
|
28
28
|
* with the same anatomy and rhythm so they feel like members of the same family.
|
|
29
29
|
*/
|
|
30
|
-
|
|
30
|
+
declare const Button: import('react').ForwardRefExoticComponent<ButtonProps & import('react').RefAttributes<HTMLButtonElement>>;
|
|
31
|
+
export default Button;
|
|
31
32
|
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAQf,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,WAAW,GACX,UAAU,GACV,YAAY,GACZ,MAAM,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAElE,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,CAAC;AAEtD,MAAM,WAAW,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,+EAA+E;IAC/E,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,oDAAoD;IACpD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,4IAA4I;IAC5I,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qCAAqC;IACrC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,6IAA6I;IAC7I,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;AASD;;;;GAIG;AACH,QAAA,MAAM,MAAM,2GAuEV,CAAC;AAIH,eAAe,MAAM,CAAC"}
|
|
@@ -1,44 +1,60 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import c from "react";
|
|
1
|
+
import { jsxs as y, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as P, isValidElement as c } from "react";
|
|
3
3
|
import { IconSlotContext as m } from "../icon/Icon.js";
|
|
4
|
-
import
|
|
4
|
+
import w from "../spinner/Spinner.js";
|
|
5
5
|
import { toKebab as d } from "../../utils/string.js";
|
|
6
6
|
import t from "./Button.module.scss.js";
|
|
7
|
-
const
|
|
7
|
+
const E = {
|
|
8
8
|
"x-small": "12",
|
|
9
9
|
small: "12",
|
|
10
10
|
medium: "16",
|
|
11
11
|
large: "20"
|
|
12
|
-
}
|
|
13
|
-
function A({
|
|
12
|
+
}, I = P(function({
|
|
14
13
|
appearance: n = "default",
|
|
15
14
|
className: p = "",
|
|
16
15
|
destructive: b = !1,
|
|
17
16
|
emphasis: r = "primary",
|
|
18
17
|
children: f,
|
|
19
|
-
leadingIcon:
|
|
18
|
+
leadingIcon: a,
|
|
20
19
|
loading: s = !1,
|
|
21
|
-
size:
|
|
22
|
-
trailingIcon:
|
|
20
|
+
size: i = "medium",
|
|
21
|
+
trailingIcon: l,
|
|
23
22
|
disabled: v,
|
|
24
|
-
type:
|
|
25
|
-
...
|
|
26
|
-
}) {
|
|
27
|
-
const o =
|
|
23
|
+
type: h = "button",
|
|
24
|
+
..._
|
|
25
|
+
}, C) {
|
|
26
|
+
const o = E[i], N = t[`button--emphasis-${d(r)}`], x = t[`button--size-${d(i)}`], z = n === "inverted" ? t["button--appearance-inverted"] : "", S = b ? t["button--destructive"] : "", B = [
|
|
28
27
|
t.button,
|
|
29
|
-
|
|
28
|
+
N,
|
|
30
29
|
x,
|
|
31
30
|
z,
|
|
32
|
-
|
|
31
|
+
S,
|
|
33
32
|
p
|
|
34
|
-
].filter(Boolean).join(" "), u = r !== "link", j = s || u && c
|
|
35
|
-
return /* @__PURE__ */
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
33
|
+
].filter(Boolean).join(" "), u = r !== "link", j = s || u && c(a);
|
|
34
|
+
return /* @__PURE__ */ y(
|
|
35
|
+
"button",
|
|
36
|
+
{
|
|
37
|
+
ref: C,
|
|
38
|
+
className: B,
|
|
39
|
+
type: h,
|
|
40
|
+
disabled: v || s,
|
|
41
|
+
..._,
|
|
42
|
+
children: [
|
|
43
|
+
j ? /* @__PURE__ */ e("span", { className: t["button__icon-slot"], "aria-hidden": !0, children: s ? /* @__PURE__ */ e(
|
|
44
|
+
w,
|
|
45
|
+
{
|
|
46
|
+
size: o,
|
|
47
|
+
inverted: n === "inverted"
|
|
48
|
+
}
|
|
49
|
+
) : /* @__PURE__ */ e(m.Provider, { value: { size: o }, children: a }) }) : null,
|
|
50
|
+
/* @__PURE__ */ e("span", { className: t.button__label, children: f }),
|
|
51
|
+
u && !s && c(l) ? /* @__PURE__ */ e("span", { className: t["button__icon-slot"], "aria-hidden": !0, children: /* @__PURE__ */ e(m.Provider, { value: { size: o }, children: l }) }) : null
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
);
|
|
55
|
+
});
|
|
56
|
+
I.displayName = "Button";
|
|
41
57
|
export {
|
|
42
|
-
|
|
58
|
+
I as default
|
|
43
59
|
};
|
|
44
60
|
//# sourceMappingURL=Button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.js","sources":["../../../src/components/button/Button.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"Button.js","sources":["../../../src/components/button/Button.tsx"],"sourcesContent":["import {\n forwardRef,\n isValidElement,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport type { IconSize } from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport Spinner from '@/components/spinner/Spinner';\nimport type { SpinnerSize } from '@/components/spinner/Spinner';\nimport { toKebab } from '@/utils/string';\nimport styles from './Button.module.scss';\n\nexport type ButtonEmphasis =\n | 'primary'\n | 'secondary'\n | 'tertiary'\n | 'quaternary'\n | 'link';\n\nexport type ButtonSize = 'x-small' | 'small' | 'medium' | 'large';\n\nexport type ButtonAppearance = 'default' | 'inverted';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** default | inverted (for use on dark backgrounds). Maps to Figma \"Style\". */\n appearance?: ButtonAppearance;\n /** Optional CSS class name. */\n className?: string;\n /** Button label. */\n children: ReactNode;\n /** When true, uses destructive (danger) styling. */\n destructive?: boolean;\n /** Visual emphasis. Default: primary. */\n emphasis?: ButtonEmphasis;\n /** Leading icon — pass `<Icon glyph={<YourIcon />} />`. Button provides the correct size via context; no `size` prop needed on the Icon. */\n leadingIcon?: ReactNode;\n /** When true, shows a Spinner in the leading slot and disables the button. */\n loading?: boolean;\n /** Size variant. Default: medium. */\n size?: ButtonSize;\n /** Trailing icon — pass `<Icon glyph={<YourIcon />} />`. Button provides the correct size via context; no `size` prop needed on the Icon. */\n trailingIcon?: ReactNode;\n}\n\nconst SIZE_ICON_MAP: Record<ButtonSize, IconSize> = {\n 'x-small': '12',\n small: '12',\n medium: '16',\n large: '20',\n};\n\n/**\n * Buttons let people take actions or make decisions with a single tap or click — saving a\n * form, sending a message, confirming a dialog. Compass ships several button variants, each\n * with the same anatomy and rhythm so they feel like members of the same family.\n */\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n appearance = 'default',\n className = '',\n destructive = false,\n emphasis = 'primary',\n children,\n leadingIcon,\n loading = false,\n size = 'medium',\n trailingIcon,\n disabled,\n type = 'button',\n ...rest\n },\n ref,\n) {\n const iconSize = SIZE_ICON_MAP[size];\n const emphasisClass = styles[`button--emphasis-${toKebab(emphasis)}`];\n const sizeClass = styles[`button--size-${toKebab(size)}`];\n const appearanceClass =\n appearance === 'inverted' ? styles['button--appearance-inverted'] : '';\n const destructiveClass = destructive ? styles['button--destructive'] : '';\n\n const rootClass = [\n styles.button,\n emphasisClass,\n sizeClass,\n appearanceClass,\n destructiveClass,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const supportsIcons = emphasis !== 'link';\n const showLeadingSlot =\n loading || (supportsIcons && isValidElement(leadingIcon));\n\n return (\n <button\n ref={ref}\n className={rootClass}\n type={type}\n disabled={disabled || loading}\n {...rest}\n >\n {showLeadingSlot ? (\n <span className={styles['button__icon-slot']} aria-hidden>\n {loading ? (\n <Spinner\n size={iconSize as SpinnerSize}\n inverted={appearance === 'inverted'}\n />\n ) : (\n <IconSlotContext.Provider value={{ size: iconSize }}>\n {leadingIcon}\n </IconSlotContext.Provider>\n )}\n </span>\n ) : null}\n <span className={styles['button__label']}>{children}</span>\n {supportsIcons && !loading && isValidElement(trailingIcon) ? (\n <span className={styles['button__icon-slot']} aria-hidden>\n <IconSlotContext.Provider value={{ size: iconSize }}>\n {trailingIcon}\n </IconSlotContext.Provider>\n </span>\n ) : null}\n </button>\n );\n});\n\nButton.displayName = 'Button';\n\nexport default Button;\n"],"names":["SIZE_ICON_MAP","Button","forwardRef","appearance","className","destructive","emphasis","children","leadingIcon","loading","size","trailingIcon","disabled","type","rest","ref","iconSize","emphasisClass","styles","toKebab","sizeClass","appearanceClass","destructiveClass","rootClass","supportsIcons","showLeadingSlot","isValidElement","jsxs","jsx","Spinner","IconSlotContext"],"mappings":";;;;;;AA6CA,MAAMA,IAA8C;AAAA,EAClD,WAAW;AAAA,EACX,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AACT,GAOMC,IAASC,EAA2C,SACxD;AAAA,EACE,YAAAC,IAAa;AAAA,EACb,WAAAC,IAAY;AAAA,EACZ,aAAAC,IAAc;AAAA,EACd,UAAAC,IAAW;AAAA,EACX,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAWhB,EAAcU,CAAI,GAC7BO,IAAgBC,EAAO,oBAAoBC,EAAQb,CAAQ,CAAC,EAAE,GAC9Dc,IAAYF,EAAO,gBAAgBC,EAAQT,CAAI,CAAC,EAAE,GAClDW,IACJlB,MAAe,aAAae,EAAO,6BAA6B,IAAI,IAChEI,IAAmBjB,IAAca,EAAO,qBAAqB,IAAI,IAEjEK,IAAY;AAAA,IAChBL,EAAO;AAAA,IACPD;AAAA,IACAG;AAAA,IACAC;AAAA,IACAC;AAAA,IACAlB;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAELoB,IAAgBlB,MAAa,QAC7BmB,IACJhB,KAAYe,KAAiBE,EAAelB,CAAW;AAEzD,SACE,gBAAAmB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAZ;AAAA,MACA,WAAWQ;AAAA,MACX,MAAAV;AAAA,MACA,UAAUD,KAAYH;AAAA,MACrB,GAAGK;AAAA,MAEH,UAAA;AAAA,QAAAW,IACC,gBAAAG,EAAC,UAAK,WAAWV,EAAO,mBAAmB,GAAG,eAAW,IACtD,UAAAT,IACC,gBAAAmB;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,MAAMb;AAAA,YACN,UAAUb,MAAe;AAAA,UAAA;AAAA,QAAA,IAG3B,gBAAAyB,EAACE,EAAgB,UAAhB,EAAyB,OAAO,EAAE,MAAMd,EAAA,GACtC,UAAAR,GACH,EAAA,CAEJ,IACE;AAAA,0BACH,QAAA,EAAK,WAAWU,EAAO,eAAmB,UAAAX,GAAS;AAAA,QACnDiB,KAAiB,CAACf,KAAWiB,EAAef,CAAY,IACvD,gBAAAiB,EAAC,QAAA,EAAK,WAAWV,EAAO,mBAAmB,GAAG,eAAW,IACvD,UAAA,gBAAAU,EAACE,EAAgB,UAAhB,EAAyB,OAAO,EAAE,MAAMd,EAAA,GACtC,UAAAL,EAAA,CACH,EAAA,CACF,IACE;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC;AAEDV,EAAO,cAAc;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),x=require("react"),__b=require("@mattermost/compass-icons/components/check-circle.js"),b=__b?.default??__b,o=require("../icon/Icon.cjs"),t=require("./CardButton.module.scss.cjs"),d=x.forwardRef(function({icon:c,title:u,description:n,selected:a=!1,className:i="",type:l="button",role:r,disabled:f,...h},_){const s=r==="radio",j=[t.default["card-button"],a&&t.default["card-button--selected"],i].filter(Boolean).join(" ");return e.jsxs("button",{ref:_,type:l,role:r,disabled:f,className:j,"aria-checked":s?a:void 0,"aria-pressed":s?void 0:a,...h,children:[e.jsx("span",{className:t.default["card-button__icon"],"aria-hidden":!0,children:e.jsx(o.IconSlotContext.Provider,{value:{size:"24"},children:c})}),e.jsxs("span",{className:t.default["card-button__text"],children:[e.jsx("span",{className:t.default["card-button__title"],children:u}),n!=null&&e.jsx("span",{className:t.default["card-button__description"],children:n})]}),e.jsx("span",{className:t.default["card-button__check"],"aria-hidden":!0,children:e.jsx(o.default,{glyph:e.jsx(b,{}),size:"20"})})]})});d.displayName="CardButton";exports.default=d;
|
|
2
2
|
//# sourceMappingURL=CardButton.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardButton.cjs","sources":["../../../src/components/card-button/CardButton.tsx"],"sourcesContent":["import type
|
|
1
|
+
{"version":3,"file":"CardButton.cjs","sources":["../../../src/components/card-button/CardButton.tsx"],"sourcesContent":["import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react';\nimport CheckCircleIcon from '@mattermost/compass-icons/components/check-circle';\nimport Icon from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport styles from './CardButton.module.scss';\n\nexport interface CardButtonProps extends Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n 'children' | 'title'\n> {\n /** Leading icon. Pass `<Icon glyph={<SomeIcon />} />` — CardButton provides the correct size (24) via context. */\n icon: ReactNode;\n /** Primary label. */\n title: ReactNode;\n /** Secondary line under the title. */\n description?: ReactNode;\n /** Selected / checked appearance with trailing check. Default: false. */\n selected?: boolean;\n className?: string;\n}\n\n/**\n * Card Buttons present a mutually exclusive (or single) choice as a compact\n * card: leading icon, title, optional description, and a check when selected.\n * Pair with `CardButtonGroup` for side-by-side radiogroups (visibility,\n * access mode, etc.).\n */\nconst CardButton = forwardRef<HTMLButtonElement, CardButtonProps>(\n function CardButton(\n {\n icon,\n title,\n description,\n selected = false,\n className = '',\n type = 'button',\n role,\n disabled,\n ...rest\n },\n ref,\n ) {\n const isRadio = role === 'radio';\n const rootClass = [\n styles['card-button'],\n selected && styles['card-button--selected'],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n ref={ref}\n type={type}\n role={role}\n disabled={disabled}\n className={rootClass}\n aria-checked={isRadio ? selected : undefined}\n aria-pressed={!isRadio ? selected : undefined}\n {...rest}\n >\n <span className={styles['card-button__icon']} aria-hidden>\n <IconSlotContext.Provider value={{ size: '24' }}>\n {icon}\n </IconSlotContext.Provider>\n </span>\n <span className={styles['card-button__text']}>\n <span className={styles['card-button__title']}>{title}</span>\n {description != null && (\n <span className={styles['card-button__description']}>\n {description}\n </span>\n )}\n </span>\n <span className={styles['card-button__check']} aria-hidden>\n <Icon glyph={<CheckCircleIcon />} size=\"20\" />\n </span>\n </button>\n );\n },\n);\n\nCardButton.displayName = 'CardButton';\n\nexport default CardButton;\n"],"names":["CardButton","forwardRef","icon","title","description","selected","className","type","role","disabled","rest","ref","isRadio","rootClass","styles","jsxs","jsx","IconSlotContext","Icon","CheckCircleIcon"],"mappings":"2SA2BMA,EAAaC,EAAAA,WACjB,SACE,CACE,KAAAC,EACA,MAAAC,EACA,YAAAC,EACA,SAAAC,EAAW,GACX,UAAAC,EAAY,GACZ,KAAAC,EAAO,SACP,KAAAC,EACA,SAAAC,EACA,GAAGC,CAAA,EAELC,EACA,CACA,MAAMC,EAAUJ,IAAS,QACnBK,EAAY,CAChBC,EAAAA,QAAO,aAAa,EACpBT,GAAYS,EAAAA,QAAO,uBAAuB,EAC1CR,CAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,EAEX,OACES,EAAAA,KAAC,SAAA,CACC,IAAAJ,EACA,KAAAJ,EACA,KAAAC,EACA,SAAAC,EACA,UAAWI,EACX,eAAcD,EAAUP,EAAW,OACnC,eAAeO,EAAqB,OAAXP,EACxB,GAAGK,EAEJ,SAAA,CAAAM,MAAC,QAAK,UAAWF,EAAAA,QAAO,mBAAmB,EAAG,cAAW,GACvD,SAAAE,EAAAA,IAACC,EAAAA,gBAAgB,SAAhB,CAAyB,MAAO,CAAE,KAAM,IAAA,EACtC,WACH,EACF,EACAF,EAAAA,KAAC,OAAA,CAAK,UAAWD,EAAAA,QAAO,mBAAmB,EACzC,SAAA,CAAAE,MAAC,OAAA,CAAK,UAAWF,EAAAA,QAAO,oBAAoB,EAAI,SAAAX,EAAM,EACrDC,GAAe,MACdY,EAAAA,IAAC,OAAA,CAAK,UAAWF,EAAAA,QAAO,0BAA0B,EAC/C,SAAAV,CAAA,CACH,CAAA,EAEJ,QACC,OAAA,CAAK,UAAWU,EAAAA,QAAO,oBAAoB,EAAG,cAAW,GACxD,SAAAE,EAAAA,IAACE,UAAA,CAAK,MAAOF,MAACG,EAAA,CAAA,CAAgB,EAAI,KAAK,KAAK,CAAA,CAC9C,CAAA,CAAA,CAAA,CAGN,CACF,EAEAnB,EAAW,YAAc"}
|
|
@@ -16,5 +16,6 @@ export interface CardButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonEle
|
|
|
16
16
|
* Pair with `CardButtonGroup` for side-by-side radiogroups (visibility,
|
|
17
17
|
* access mode, etc.).
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
declare const CardButton: import('react').ForwardRefExoticComponent<CardButtonProps & import('react').RefAttributes<HTMLButtonElement>>;
|
|
20
|
+
export default CardButton;
|
|
20
21
|
//# sourceMappingURL=CardButton.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardButton.d.ts","sourceRoot":"","sources":["../../../src/components/card-button/CardButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"CardButton.d.ts","sourceRoot":"","sources":["../../../src/components/card-button/CardButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,oBAAoB,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAM9E,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAC3C,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,UAAU,GAAG,OAAO,CACrB;IACC,kHAAkH;IAClH,IAAI,EAAE,SAAS,CAAC;IAChB,qBAAqB;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,sCAAsC;IACtC,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,QAAA,MAAM,UAAU,+GAsDf,CAAC;AAIF,eAAe,UAAU,CAAC"}
|
|
@@ -1,45 +1,50 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
1
|
+
import { jsxs as s, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as f } from "react";
|
|
3
|
+
import ___ from "@mattermost/compass-icons/components/check-circle.js";const _=___&&___.default?___.default:___;
|
|
4
|
+
import b, { IconSlotContext as C } from "../icon/Icon.js";
|
|
5
|
+
import a from "./CardButton.module.scss.js";
|
|
6
|
+
const N = f(
|
|
7
|
+
function({
|
|
8
|
+
icon: c,
|
|
9
|
+
title: i,
|
|
10
|
+
description: o,
|
|
11
|
+
selected: r = !1,
|
|
12
|
+
className: d = "",
|
|
13
|
+
type: l = "button",
|
|
14
|
+
role: n,
|
|
15
|
+
disabled: u,
|
|
16
|
+
...m
|
|
17
|
+
}, p) {
|
|
18
|
+
const e = n === "radio", h = [
|
|
19
|
+
a["card-button"],
|
|
20
|
+
r && a["card-button--selected"],
|
|
21
|
+
d
|
|
22
|
+
].filter(Boolean).join(" ");
|
|
23
|
+
return /* @__PURE__ */ s(
|
|
24
|
+
"button",
|
|
25
|
+
{
|
|
26
|
+
ref: p,
|
|
27
|
+
type: l,
|
|
28
|
+
role: n,
|
|
29
|
+
disabled: u,
|
|
30
|
+
className: h,
|
|
31
|
+
"aria-checked": e ? r : void 0,
|
|
32
|
+
"aria-pressed": e ? void 0 : r,
|
|
33
|
+
...m,
|
|
34
|
+
children: [
|
|
35
|
+
/* @__PURE__ */ t("span", { className: a["card-button__icon"], "aria-hidden": !0, children: /* @__PURE__ */ t(C.Provider, { value: { size: "24" }, children: c }) }),
|
|
36
|
+
/* @__PURE__ */ s("span", { className: a["card-button__text"], children: [
|
|
37
|
+
/* @__PURE__ */ t("span", { className: a["card-button__title"], children: i }),
|
|
38
|
+
o != null && /* @__PURE__ */ t("span", { className: a["card-button__description"], children: o })
|
|
39
|
+
] }),
|
|
40
|
+
/* @__PURE__ */ t("span", { className: a["card-button__check"], "aria-hidden": !0, children: /* @__PURE__ */ t(b, { glyph: /* @__PURE__ */ t(_, {}), size: "20" }) })
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
);
|
|
46
|
+
N.displayName = "CardButton";
|
|
42
47
|
export {
|
|
43
|
-
|
|
48
|
+
N as default
|
|
44
49
|
};
|
|
45
50
|
//# sourceMappingURL=CardButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardButton.js","sources":["../../../src/components/card-button/CardButton.tsx"],"sourcesContent":["import type
|
|
1
|
+
{"version":3,"file":"CardButton.js","sources":["../../../src/components/card-button/CardButton.tsx"],"sourcesContent":["import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react';\nimport CheckCircleIcon from '@mattermost/compass-icons/components/check-circle';\nimport Icon from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport styles from './CardButton.module.scss';\n\nexport interface CardButtonProps extends Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n 'children' | 'title'\n> {\n /** Leading icon. Pass `<Icon glyph={<SomeIcon />} />` — CardButton provides the correct size (24) via context. */\n icon: ReactNode;\n /** Primary label. */\n title: ReactNode;\n /** Secondary line under the title. */\n description?: ReactNode;\n /** Selected / checked appearance with trailing check. Default: false. */\n selected?: boolean;\n className?: string;\n}\n\n/**\n * Card Buttons present a mutually exclusive (or single) choice as a compact\n * card: leading icon, title, optional description, and a check when selected.\n * Pair with `CardButtonGroup` for side-by-side radiogroups (visibility,\n * access mode, etc.).\n */\nconst CardButton = forwardRef<HTMLButtonElement, CardButtonProps>(\n function CardButton(\n {\n icon,\n title,\n description,\n selected = false,\n className = '',\n type = 'button',\n role,\n disabled,\n ...rest\n },\n ref,\n ) {\n const isRadio = role === 'radio';\n const rootClass = [\n styles['card-button'],\n selected && styles['card-button--selected'],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n ref={ref}\n type={type}\n role={role}\n disabled={disabled}\n className={rootClass}\n aria-checked={isRadio ? selected : undefined}\n aria-pressed={!isRadio ? selected : undefined}\n {...rest}\n >\n <span className={styles['card-button__icon']} aria-hidden>\n <IconSlotContext.Provider value={{ size: '24' }}>\n {icon}\n </IconSlotContext.Provider>\n </span>\n <span className={styles['card-button__text']}>\n <span className={styles['card-button__title']}>{title}</span>\n {description != null && (\n <span className={styles['card-button__description']}>\n {description}\n </span>\n )}\n </span>\n <span className={styles['card-button__check']} aria-hidden>\n <Icon glyph={<CheckCircleIcon />} size=\"20\" />\n </span>\n </button>\n );\n },\n);\n\nCardButton.displayName = 'CardButton';\n\nexport default CardButton;\n"],"names":["CardButton","forwardRef","icon","title","description","selected","className","type","role","disabled","rest","ref","isRadio","rootClass","styles","jsxs","jsx","IconSlotContext","Icon","CheckCircleIcon"],"mappings":";;;;;AA2BA,MAAMA,IAAaC;AAAA,EACjB,SACE;AAAA,IACE,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,aAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,WAAAC,IAAY;AAAA,IACZ,MAAAC,IAAO;AAAA,IACP,MAAAC;AAAA,IACA,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,GACA;AACA,UAAMC,IAAUJ,MAAS,SACnBK,IAAY;AAAA,MAChBC,EAAO,aAAa;AAAA,MACpBT,KAAYS,EAAO,uBAAuB;AAAA,MAC1CR;AAAA,IAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,WACE,gBAAAS;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAJ;AAAA,QACA,MAAAJ;AAAA,QACA,MAAAC;AAAA,QACA,UAAAC;AAAA,QACA,WAAWI;AAAA,QACX,gBAAcD,IAAUP,IAAW;AAAA,QACnC,gBAAeO,IAAqB,SAAXP;AAAA,QACxB,GAAGK;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAM,EAAC,UAAK,WAAWF,EAAO,mBAAmB,GAAG,eAAW,IACvD,UAAA,gBAAAE,EAACC,EAAgB,UAAhB,EAAyB,OAAO,EAAE,MAAM,KAAA,GACtC,aACH,GACF;AAAA,UACA,gBAAAF,EAAC,QAAA,EAAK,WAAWD,EAAO,mBAAmB,GACzC,UAAA;AAAA,YAAA,gBAAAE,EAAC,QAAA,EAAK,WAAWF,EAAO,oBAAoB,GAAI,UAAAX,GAAM;AAAA,YACrDC,KAAe,QACd,gBAAAY,EAAC,QAAA,EAAK,WAAWF,EAAO,0BAA0B,GAC/C,UAAAV,EAAA,CACH;AAAA,UAAA,GAEJ;AAAA,4BACC,QAAA,EAAK,WAAWU,EAAO,oBAAoB,GAAG,eAAW,IACxD,UAAA,gBAAAE,EAACE,GAAA,EAAK,OAAO,gBAAAF,EAACG,GAAA,CAAA,CAAgB,GAAI,MAAK,MAAK,EAAA,CAC9C;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEAnB,EAAW,cAAc;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelInfoMsgHeader.cjs","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
|
|
1
|
+
{"version":3,"file":"ChannelInfoMsgHeader.cjs","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":"qMAsCA,SAAwBA,EAAqB,CAC3C,YAAAC,EACA,eAAAC,EACA,KAAAC,EACA,SAAAC,EACA,UAAAC,EAAY,EACd,EAA8B,CAC5B,MAAMC,EACJL,GAAe,MAAQA,IAAgB,GACnC,CAAC,CAAE,MAAOA,EAAa,QAASC,EAAgB,EAC/CC,GAAQ,CAAC,CAAE,MAAO,eAAgB,OAAQ,GAAM,EAEjDI,EAAY,CAACC,UAAO,yBAAyB,EAAGH,CAAS,EAC5D,OAAO,OAAO,EACd,KAAK,GAAG,EAEX,OACEI,EAAAA,IAAC,OAAI,UAAWF,EACd,gBAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,oCAAoC,EACxD,SAAA,CAAAF,EAAa,IAAI,CAACI,EAAKC,IACtBF,EAAAA,IAAC,MAAA,CAEC,UAAW,CACTD,EAAAA,QAAO,mCAAmC,EAC1CE,EAAI,OACAF,UAAO,2CAA2C,EAClD,EAAA,EAEH,OAAO,OAAO,EACd,KAAK,GAAG,EAEX,SAAAC,EAAAA,IAAC,SAAA,CACC,KAAK,SACL,UAAW,CACTD,EAAAA,QAAO,8BAA8B,EACrCE,EAAI,OACAF,UAAO,sCAAsC,EAC7C,EAAA,EAEH,OAAO,OAAO,EACd,KAAK,GAAG,EACX,QAASE,EAAI,QAEZ,SAAAA,EAAI,KAAA,CAAA,CACP,EAvBK,GAAGA,EAAI,KAAK,IAAIC,CAAK,EAAA,CAyB7B,EACAP,GAAY,MAAQA,IAAa,IAChCK,EAAAA,IAAC,OAAI,UAAWD,EAAAA,QAAO,+BAA+B,EACpD,eAAC,OAAA,CAAK,UAAWA,EAAAA,QAAO,oCAAoC,EACzD,WACH,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,CACF,CAEJ"}
|