@mattermost/compass-ui 0.1.0-alpha.26 → 0.1.0-alpha.28
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/dist/compass-ui.css +16 -0
- package/dist/components/admin-console-footer/AdminConsoleFooter.css +1 -1
- package/dist/components/admin-console-footer/AdminConsoleFooter.module.scss.cjs +1 -1
- package/dist/components/admin-console-footer/AdminConsoleFooter.module.scss.js +7 -7
- package/dist/components/admin-console-header/AdminConsoleHeader.css +1 -1
- package/dist/components/admin-console-header/AdminConsoleHeader.module.scss.cjs +1 -1
- package/dist/components/admin-console-header/AdminConsoleHeader.module.scss.js +8 -8
- package/dist/components/admin-panel/AdminPanel.css +1 -1
- package/dist/components/admin-panel/AdminPanel.module.scss.cjs +1 -1
- package/dist/components/admin-panel/AdminPanel.module.scss.js +5 -5
- package/dist/components/admin-panel-footer/AdminPanelFooter.css +1 -1
- package/dist/components/admin-panel-footer/AdminPanelFooter.module.scss.cjs +1 -1
- package/dist/components/admin-panel-footer/AdminPanelFooter.module.scss.js +5 -5
- package/dist/components/admin-panel-header/AdminPanelHeader.cjs +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.cjs.map +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.css +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.d.ts +6 -0
- package/dist/components/admin-panel-header/AdminPanelHeader.d.ts.map +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.js +145 -109
- package/dist/components/admin-panel-header/AdminPanelHeader.js.map +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.module.scss.cjs +1 -1
- package/dist/components/admin-panel-header/AdminPanelHeader.module.scss.js +11 -10
- package/dist/components/admin-panel-header/AdminPanelHeader.module.scss.js.map +1 -1
- package/dist/components/attachment-card/AttachmentCard.css +1 -1
- package/dist/components/attachment-card/AttachmentCard.module.scss.cjs +1 -1
- package/dist/components/attachment-card/AttachmentCard.module.scss.js +22 -19
- package/dist/components/attachment-card/AttachmentCard.module.scss.js.map +1 -1
- package/dist/components/button/Button.css +1 -1
- package/dist/components/button/Button.module.scss.cjs +1 -1
- package/dist/components/button/Button.module.scss.js +20 -19
- package/dist/components/button/Button.module.scss.js.map +1 -1
- package/dist/components/card-button/CardButton.css +1 -1
- package/dist/components/card-button/CardButton.module.scss.cjs +1 -1
- package/dist/components/card-button/CardButton.module.scss.js +7 -7
- package/dist/components/card-button/CardButtonGroup.css +1 -1
- package/dist/components/card-button/CardButtonGroup.module.scss.cjs +1 -1
- package/dist/components/card-button/CardButtonGroup.module.scss.js +1 -1
- package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.css +1 -1
- package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.module.scss.cjs +1 -1
- package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.module.scss.js +8 -8
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.cjs +1 -1
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.cjs.map +1 -1
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.css +1 -1
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.d.ts +66 -7
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.d.ts.map +1 -1
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.js +163 -93
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.js.map +1 -1
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.module.scss.cjs +1 -1
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.module.scss.js +35 -22
- package/dist/components/channel-sidebar-item/ChannelSidebarItem.module.scss.js.map +1 -1
- package/dist/components/checkbox/Checkbox.css +1 -1
- package/dist/components/checkbox/Checkbox.module.scss.cjs +1 -1
- package/dist/components/checkbox/Checkbox.module.scss.js +7 -7
- package/dist/components/chip/Chip.cjs +1 -1
- package/dist/components/chip/Chip.cjs.map +1 -1
- package/dist/components/chip/Chip.css +1 -1
- package/dist/components/chip/Chip.d.ts.map +1 -1
- package/dist/components/chip/Chip.js +8 -8
- package/dist/components/chip/Chip.js.map +1 -1
- package/dist/components/chip/Chip.module.scss.cjs +1 -1
- package/dist/components/chip/Chip.module.scss.js +13 -10
- package/dist/components/chip/Chip.module.scss.js.map +1 -1
- package/dist/components/chip/ChipGroup.cjs +1 -1
- package/dist/components/chip/ChipGroup.cjs.map +1 -1
- package/dist/components/chip/ChipGroup.css +1 -1
- package/dist/components/chip/ChipGroup.d.ts +1 -1
- package/dist/components/chip/ChipGroup.d.ts.map +1 -1
- package/dist/components/chip/ChipGroup.js +30 -30
- package/dist/components/chip/ChipGroup.js.map +1 -1
- package/dist/components/chip/ChipGroup.module.scss.cjs +1 -1
- package/dist/components/chip/ChipGroup.module.scss.js +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 +10 -0
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.js +269 -252
- 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 +34 -31
- package/dist/components/combobox/Combobox.module.scss.js.map +1 -1
- package/dist/components/date-range-picker/DateRangePicker.cjs +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 +14 -1
- package/dist/components/date-range-picker/DateRangePicker.d.ts.map +1 -1
- package/dist/components/date-range-picker/DateRangePicker.js +217 -195
- 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 +29 -26
- package/dist/components/date-range-picker/DateRangePicker.module.scss.js.map +1 -1
- package/dist/components/divider/Divider.css +1 -1
- package/dist/components/divider/Divider.module.scss.cjs +1 -1
- package/dist/components/divider/Divider.module.scss.js +1 -1
- package/dist/components/dropdown/Dropdown.css +1 -1
- package/dist/components/dropdown/Dropdown.module.scss.cjs +1 -1
- package/dist/components/dropdown/Dropdown.module.scss.js +23 -22
- package/dist/components/dropdown/Dropdown.module.scss.js.map +1 -1
- package/dist/components/emoji/Emoji.css +1 -1
- package/dist/components/emoji/Emoji.module.scss.cjs +1 -1
- package/dist/components/emoji/Emoji.module.scss.js +12 -12
- package/dist/components/emoji-button/EmojiButton.css +1 -1
- package/dist/components/emoji-button/EmojiButton.module.scss.cjs +1 -1
- package/dist/components/emoji-button/EmojiButton.module.scss.js +12 -9
- package/dist/components/emoji-button/EmojiButton.module.scss.js.map +1 -1
- package/dist/components/emoji-popover/EmojiPopover.css +1 -1
- package/dist/components/emoji-popover/EmojiPopover.module.scss.cjs +1 -1
- package/dist/components/emoji-popover/EmojiPopover.module.scss.js +21 -21
- package/dist/components/empty-state/EmptyState.cjs +1 -1
- package/dist/components/empty-state/EmptyState.cjs.map +1 -1
- package/dist/components/empty-state/EmptyState.css +1 -1
- package/dist/components/empty-state/EmptyState.d.ts +21 -1
- package/dist/components/empty-state/EmptyState.d.ts.map +1 -1
- package/dist/components/empty-state/EmptyState.js +30 -23
- package/dist/components/empty-state/EmptyState.js.map +1 -1
- package/dist/components/empty-state/EmptyState.module.scss.cjs +1 -1
- package/dist/components/empty-state/EmptyState.module.scss.js +7 -7
- package/dist/components/empty-state/index.d.ts +1 -1
- package/dist/components/empty-state/index.d.ts.map +1 -1
- package/dist/components/feature-discovery-panel/FeatureDiscoveryPanel.css +1 -1
- package/dist/components/feature-discovery-panel/FeatureDiscoveryPanel.module.scss.cjs +1 -1
- package/dist/components/feature-discovery-panel/FeatureDiscoveryPanel.module.scss.js +9 -9
- package/dist/components/field/FieldClearButton.css +1 -1
- package/dist/components/field/FieldClearButton.module.scss.cjs +1 -1
- package/dist/components/field/FieldClearButton.module.scss.js +3 -3
- package/dist/components/field-message/FieldMessage.css +1 -1
- package/dist/components/field-message/FieldMessage.module.scss.cjs +1 -1
- package/dist/components/field-message/FieldMessage.module.scss.js +7 -7
- package/dist/components/global-banner/GlobalBanner.css +1 -1
- package/dist/components/global-banner/GlobalBanner.module.scss.cjs +1 -1
- package/dist/components/global-banner/GlobalBanner.module.scss.js +10 -10
- package/dist/components/icon/Icon.css +1 -1
- package/dist/components/icon/Icon.module.scss.cjs +1 -1
- package/dist/components/icon/Icon.module.scss.js +13 -13
- package/dist/components/icon-button/IconButton.css +1 -1
- package/dist/components/icon-button/IconButton.module.scss.cjs +1 -1
- package/dist/components/icon-button/IconButton.module.scss.js +19 -16
- package/dist/components/icon-button/IconButton.module.scss.js.map +1 -1
- package/dist/components/illustration/Illustration.css +1 -1
- package/dist/components/illustration/Illustration.module.scss.cjs +1 -1
- package/dist/components/illustration/Illustration.module.scss.js +1 -1
- package/dist/components/image-preview/ImagePreview.css +1 -1
- package/dist/components/image-preview/ImagePreview.module.scss.cjs +1 -1
- package/dist/components/image-preview/ImagePreview.module.scss.js +15 -15
- package/dist/components/link-preview/LinkPreview.css +1 -1
- package/dist/components/link-preview/LinkPreview.module.scss.cjs +1 -1
- package/dist/components/link-preview/LinkPreview.module.scss.js +14 -14
- package/dist/components/mention-badge/MentionBadge.css +1 -1
- package/dist/components/mention-badge/MentionBadge.module.scss.cjs +1 -1
- package/dist/components/mention-badge/MentionBadge.module.scss.js +9 -9
- package/dist/components/menu-group-heading/MenuGroupHeading.css +1 -1
- package/dist/components/menu-group-heading/MenuGroupHeading.module.scss.cjs +1 -1
- package/dist/components/menu-group-heading/MenuGroupHeading.module.scss.js +2 -2
- package/dist/components/menu-item/MenuItem.css +1 -1
- package/dist/components/menu-item/MenuItem.module.scss.cjs +1 -1
- package/dist/components/menu-item/MenuItem.module.scss.js +18 -18
- package/dist/components/message-actions/MessageActions.css +1 -1
- package/dist/components/message-actions/MessageActions.module.scss.cjs +1 -1
- package/dist/components/message-actions/MessageActions.module.scss.js +2 -2
- package/dist/components/message-header/MessageHeader.css +1 -1
- package/dist/components/message-header/MessageHeader.module.scss.cjs +1 -1
- package/dist/components/message-header/MessageHeader.module.scss.js +3 -3
- package/dist/components/message-separator/MessageSeparator.css +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/modal/Modal.cjs +1 -1
- package/dist/components/modal/Modal.cjs.map +1 -1
- package/dist/components/modal/Modal.css +1 -1
- package/dist/components/modal/Modal.d.ts +11 -1
- package/dist/components/modal/Modal.d.ts.map +1 -1
- package/dist/components/modal/Modal.js +38 -36
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/Modal.module.scss.cjs +1 -1
- package/dist/components/modal/Modal.module.scss.js +11 -11
- package/dist/components/modal/ModalOverlay.css +1 -1
- package/dist/components/modal/ModalOverlay.module.scss.cjs +1 -1
- package/dist/components/modal/ModalOverlay.module.scss.js +5 -5
- package/dist/components/modal-footer/ModalFooter.css +1 -1
- package/dist/components/modal-footer/ModalFooter.module.scss.cjs +1 -1
- package/dist/components/modal-footer/ModalFooter.module.scss.js +11 -11
- package/dist/components/modal-header/ModalHeader.cjs +1 -1
- package/dist/components/modal-header/ModalHeader.cjs.map +1 -1
- package/dist/components/modal-header/ModalHeader.css +1 -1
- package/dist/components/modal-header/ModalHeader.d.ts +13 -3
- package/dist/components/modal-header/ModalHeader.d.ts.map +1 -1
- package/dist/components/modal-header/ModalHeader.js +61 -55
- package/dist/components/modal-header/ModalHeader.js.map +1 -1
- package/dist/components/modal-header/ModalHeader.module.scss.cjs +1 -1
- package/dist/components/modal-header/ModalHeader.module.scss.js +18 -16
- package/dist/components/modal-header/ModalHeader.module.scss.js.map +1 -1
- package/dist/components/more-unreads-banner/MoreUnreadsBanner.css +1 -1
- package/dist/components/more-unreads-banner/MoreUnreadsBanner.module.scss.cjs +1 -1
- package/dist/components/more-unreads-banner/MoreUnreadsBanner.module.scss.js +8 -5
- package/dist/components/more-unreads-banner/MoreUnreadsBanner.module.scss.js.map +1 -1
- package/dist/components/new-message-banner/NewMessageBanner.css +1 -1
- package/dist/components/new-message-banner/NewMessageBanner.module.scss.cjs +1 -1
- package/dist/components/new-message-banner/NewMessageBanner.module.scss.js +9 -9
- package/dist/components/pagination-dots/PaginationDots.css +1 -1
- package/dist/components/pagination-dots/PaginationDots.module.scss.cjs +1 -1
- package/dist/components/pagination-dots/PaginationDots.module.scss.js +10 -10
- package/dist/components/password-input/PasswordInput.css +1 -1
- package/dist/components/password-input/PasswordInput.module.scss.cjs +1 -1
- package/dist/components/password-input/PasswordInput.module.scss.js +15 -14
- package/dist/components/password-input/PasswordInput.module.scss.js.map +1 -1
- package/dist/components/permalink-preview/PermalinkPreview.css +1 -1
- package/dist/components/permalink-preview/PermalinkPreview.module.scss.cjs +1 -1
- package/dist/components/permalink-preview/PermalinkPreview.module.scss.js +13 -13
- package/dist/components/pinned-saved-indicators/PinnedSavedIndicators.css +1 -1
- package/dist/components/pinned-saved-indicators/PinnedSavedIndicators.module.scss.cjs +1 -1
- package/dist/components/pinned-saved-indicators/PinnedSavedIndicators.module.scss.js +7 -7
- package/dist/components/popover-menu/PopoverMenu.css +1 -1
- package/dist/components/popover-menu/PopoverMenu.module.scss.cjs +1 -1
- package/dist/components/popover-menu/PopoverMenu.module.scss.js +13 -13
- package/dist/components/popover-notice/PopoverNotice.css +1 -1
- package/dist/components/popover-notice/PopoverNotice.module.scss.cjs +1 -1
- package/dist/components/popover-notice/PopoverNotice.module.scss.js +14 -14
- package/dist/components/profile-popover/ProfilePopover.css +1 -1
- package/dist/components/profile-popover/ProfilePopover.module.scss.cjs +1 -1
- package/dist/components/profile-popover/ProfilePopover.module.scss.js +33 -33
- package/dist/components/progress-bar/ProgressBar.css +1 -1
- package/dist/components/progress-bar/ProgressBar.module.scss.cjs +1 -1
- package/dist/components/progress-bar/ProgressBar.module.scss.js +9 -9
- package/dist/components/radio/Radio.css +1 -1
- package/dist/components/radio/Radio.module.scss.cjs +1 -1
- package/dist/components/radio/Radio.module.scss.js +12 -12
- package/dist/components/reaction-button/ReactionButton.css +1 -1
- package/dist/components/reaction-button/ReactionButton.module.scss.cjs +1 -1
- package/dist/components/reaction-button/ReactionButton.module.scss.js +8 -8
- package/dist/components/reactions-row/ReactionsRow.css +1 -1
- package/dist/components/reactions-row/ReactionsRow.module.scss.cjs +1 -1
- package/dist/components/reactions-row/ReactionsRow.module.scss.js +8 -8
- 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.css +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.d.ts.map +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.js +39 -36
- package/dist/components/right-sidebar-header/RightSidebarHeader.js.map +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.module.scss.cjs +1 -1
- package/dist/components/right-sidebar-header/RightSidebarHeader.module.scss.js +12 -13
- package/dist/components/right-sidebar-header/RightSidebarHeader.module.scss.js.map +1 -1
- package/dist/components/scrollbar/Scrollbar.css +1 -1
- package/dist/components/scrollbar/Scrollbar.module.scss.cjs +1 -1
- package/dist/components/scrollbar/Scrollbar.module.scss.js +5 -5
- package/dist/components/search-input/SearchInput.css +1 -1
- package/dist/components/search-input/SearchInput.module.scss.cjs +1 -1
- package/dist/components/search-input/SearchInput.module.scss.js +15 -15
- package/dist/components/search-tip-banner/SearchTipBanner.css +1 -1
- package/dist/components/search-tip-banner/SearchTipBanner.module.scss.cjs +1 -1
- package/dist/components/search-tip-banner/SearchTipBanner.module.scss.js +3 -3
- package/dist/components/section-notice/SectionNotice.css +1 -1
- package/dist/components/section-notice/SectionNotice.module.scss.cjs +1 -1
- package/dist/components/section-notice/SectionNotice.module.scss.js +12 -12
- package/dist/components/segmented-control/SegmentedControl.cjs +2 -0
- package/dist/components/segmented-control/SegmentedControl.cjs.map +1 -0
- package/dist/components/segmented-control/SegmentedControl.css +1 -0
- package/dist/components/segmented-control/SegmentedControl.d.ts +71 -0
- package/dist/components/segmented-control/SegmentedControl.d.ts.map +1 -0
- package/dist/components/segmented-control/SegmentedControl.js +173 -0
- package/dist/components/segmented-control/SegmentedControl.js.map +1 -0
- package/dist/components/segmented-control/SegmentedControl.module.scss.cjs +2 -0
- package/dist/components/segmented-control/SegmentedControl.module.scss.cjs.map +1 -0
- package/dist/components/segmented-control/SegmentedControl.module.scss.js +20 -0
- package/dist/components/segmented-control/SegmentedControl.module.scss.js.map +1 -0
- package/dist/components/segmented-control/index.cjs +2 -0
- package/dist/components/segmented-control/index.cjs.map +1 -0
- package/dist/components/segmented-control/index.d.ts +3 -0
- package/dist/components/segmented-control/index.d.ts.map +1 -0
- package/dist/components/segmented-control/index.js +5 -0
- package/dist/components/segmented-control/index.js.map +1 -0
- package/dist/components/select/Select.cjs +1 -1
- package/dist/components/select/Select.cjs.map +1 -1
- package/dist/components/select/Select.css +1 -1
- package/dist/components/select/Select.d.ts +14 -0
- package/dist/components/select/Select.d.ts.map +1 -1
- package/dist/components/select/Select.js +151 -130
- package/dist/components/select/Select.js.map +1 -1
- package/dist/components/select/Select.module.scss.cjs +1 -1
- package/dist/components/select/Select.module.scss.js +28 -26
- package/dist/components/select/Select.module.scss.js.map +1 -1
- package/dist/components/shortcut-tag/ShortcutTag.css +1 -1
- package/dist/components/shortcut-tag/ShortcutTag.module.scss.cjs +1 -1
- package/dist/components/shortcut-tag/ShortcutTag.module.scss.js +7 -7
- package/dist/components/spinner/Spinner.css +1 -1
- package/dist/components/spinner/Spinner.module.scss.cjs +1 -1
- package/dist/components/spinner/Spinner.module.scss.js +2 -2
- package/dist/components/status-badge/StatusBadge.cjs +1 -1
- package/dist/components/status-badge/StatusBadge.cjs.map +1 -1
- package/dist/components/status-badge/StatusBadge.css +1 -1
- package/dist/components/status-badge/StatusBadge.d.ts +3 -1
- package/dist/components/status-badge/StatusBadge.d.ts.map +1 -1
- package/dist/components/status-badge/StatusBadge.js +16 -15
- package/dist/components/status-badge/StatusBadge.js.map +1 -1
- package/dist/components/status-badge/StatusBadge.module.scss.cjs +1 -1
- package/dist/components/status-badge/StatusBadge.module.scss.js +11 -11
- package/dist/components/switch/Switch.css +1 -1
- package/dist/components/switch/Switch.module.scss.cjs +1 -1
- package/dist/components/switch/Switch.module.scss.js +8 -8
- package/dist/components/tabs/Tabs.css +1 -1
- package/dist/components/tabs/Tabs.module.scss.cjs +1 -1
- package/dist/components/tabs/Tabs.module.scss.js +16 -13
- package/dist/components/tabs/Tabs.module.scss.js.map +1 -1
- package/dist/components/tag/Tag.css +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/team-avatar/TeamAvatar.css +1 -1
- package/dist/components/team-avatar/TeamAvatar.module.scss.cjs +1 -1
- package/dist/components/team-avatar/TeamAvatar.module.scss.js +17 -17
- package/dist/components/text-area/TextArea.css +1 -1
- package/dist/components/text-area/TextArea.module.scss.cjs +1 -1
- package/dist/components/text-area/TextArea.module.scss.js +12 -12
- package/dist/components/text-input/TextInput.css +1 -1
- package/dist/components/text-input/TextInput.module.scss.cjs +1 -1
- package/dist/components/text-input/TextInput.module.scss.js +19 -19
- 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 +14 -14
- 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 +19 -20
- package/dist/components/thread-footer/ThreadFooter.module.scss.js.map +1 -1
- package/dist/components/thread-list-item/ThreadListItem.css +1 -1
- package/dist/components/thread-list-item/ThreadListItem.module.scss.cjs +1 -1
- package/dist/components/thread-list-item/ThreadListItem.module.scss.js +26 -26
- package/dist/components/tile-button/TileButton.css +1 -1
- package/dist/components/tile-button/TileButton.module.scss.cjs +1 -1
- package/dist/components/tile-button/TileButton.module.scss.js +6 -6
- package/dist/components/toast/Toast.css +1 -1
- package/dist/components/toast/Toast.module.scss.cjs +1 -1
- package/dist/components/toast/Toast.module.scss.js +11 -11
- package/dist/components/tooltip/Tooltip.cjs +1 -1
- package/dist/components/tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/tooltip/Tooltip.css +1 -1
- package/dist/components/tooltip/Tooltip.d.ts +10 -1
- package/dist/components/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/tooltip/Tooltip.js +29 -17
- package/dist/components/tooltip/Tooltip.js.map +1 -1
- package/dist/components/tooltip/Tooltip.module.scss.cjs +1 -1
- package/dist/components/tooltip/Tooltip.module.scss.js +7 -6
- package/dist/components/tooltip/Tooltip.module.scss.js.map +1 -1
- package/dist/components/tooltip/index.d.ts +1 -1
- package/dist/components/tooltip/index.d.ts.map +1 -1
- package/dist/components/tour-point/TourPoint.css +1 -1
- package/dist/components/tour-point/TourPoint.module.scss.cjs +1 -1
- package/dist/components/tour-point/TourPoint.module.scss.js +28 -28
- package/dist/components/unread-badge/UnreadBadge.css +1 -1
- package/dist/components/unread-badge/UnreadBadge.module.scss.cjs +1 -1
- package/dist/components/unread-badge/UnreadBadge.module.scss.js +5 -5
- package/dist/components/user-avatar/UserAvatar.cjs +1 -1
- package/dist/components/user-avatar/UserAvatar.cjs.map +1 -1
- package/dist/components/user-avatar/UserAvatar.css +1 -1
- package/dist/components/user-avatar/UserAvatar.d.ts +18 -8
- package/dist/components/user-avatar/UserAvatar.d.ts.map +1 -1
- package/dist/components/user-avatar/UserAvatar.js +84 -52
- package/dist/components/user-avatar/UserAvatar.js.map +1 -1
- package/dist/components/user-avatar/UserAvatar.module.scss.cjs +1 -1
- package/dist/components/user-avatar/UserAvatar.module.scss.js +33 -26
- package/dist/components/user-avatar/UserAvatar.module.scss.js.map +1 -1
- package/dist/components/user-avatar-group/UserAvatarGroup.css +1 -1
- package/dist/components/user-avatar-group/UserAvatarGroup.module.scss.cjs +1 -1
- package/dist/components/user-avatar-group/UserAvatarGroup.module.scss.js +14 -14
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +57 -55
- package/dist/index.js.map +1 -1
- package/package.json +4 -1
|
@@ -46,6 +46,15 @@ export interface ModalProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'
|
|
|
46
46
|
headerDivider?: boolean;
|
|
47
47
|
/** Optional control before close (Button, search field, …). */
|
|
48
48
|
headerAction?: ReactNode;
|
|
49
|
+
/**
|
|
50
|
+
* Custom content in the title position: left aligned and vertically
|
|
51
|
+
* centered with the close button. Not wrapped in the heading, so it does
|
|
52
|
+
* not inherit heading type. `title` stays required and names the dialog;
|
|
53
|
+
* it is visually hidden, the same as `hideTitle`. The subtitle is omitted.
|
|
54
|
+
* `hideTitle` without this prop stays the close-only header. `headerSlot`
|
|
55
|
+
* stays the full-width area under the title row.
|
|
56
|
+
*/
|
|
57
|
+
headerLeading?: ReactNode;
|
|
49
58
|
/**
|
|
50
59
|
* Full-width slot rendered below the title row and above the header divider.
|
|
51
60
|
* Accepts any ReactNode — SearchInput, Tabs, a custom toolbar, etc.
|
|
@@ -101,7 +110,8 @@ export interface ModalProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'
|
|
|
101
110
|
onExited?: () => void;
|
|
102
111
|
}
|
|
103
112
|
/**
|
|
104
|
-
* Modal dialog shell — composes ModalHeader,
|
|
113
|
+
* Modal dialog shell — composes ModalHeader (title, or `headerLeading` in the
|
|
114
|
+
* title position), scrollable body, and ModalFooter.
|
|
105
115
|
* Owns dialog-level focus and keyboard behavior: initial focus, Tab trap,
|
|
106
116
|
* Escape, and focus restore on unmount. Host owns portal, overlay/backdrop,
|
|
107
117
|
* scroll lock, stacking, and open state. Mount-controlled by default; pass
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,SAAS,EACT,SAAS,EACV,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAKxD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3D,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,CAAC;AAExD,MAAM,WAAW,UAAW,SAAQ,IAAI,CACtC,cAAc,CAAC,cAAc,CAAC,EAC9B,OAAO,GAAG,UAAU,GAAG,OAAO,CAC/B;IACC,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,oFAAoF;IACpF,KAAK,EAAE,SAAS,CAAC;IACjB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,wFAAwF;IACxF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,eAAe,CAAC,EAAE,kBAAkB,CAAC;IACrC,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;IACtC,2DAA2D;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oBAAoB;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,iEAAiE;IACjE,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,oEAAoE;IACpE,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,2DAA2D;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAChD;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yGAAyG;IACzG,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/components/modal/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,SAAS,EACT,SAAS,EACV,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAKxD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3D,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,CAAC;AAExD,MAAM,WAAW,UAAW,SAAQ,IAAI,CACtC,cAAc,CAAC,cAAc,CAAC,EAC9B,OAAO,GAAG,UAAU,GAAG,OAAO,CAC/B;IACC,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,oFAAoF;IACpF,KAAK,EAAE,SAAS,CAAC;IACjB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,wFAAwF;IACxF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,eAAe,CAAC,EAAE,kBAAkB,CAAC;IACrC,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;IACtC,2DAA2D;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oBAAoB;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,iEAAiE;IACjE,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,oEAAoE;IACpE,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,2DAA2D;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAChD;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yGAAyG;IACzG,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAiID;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,kDAerE"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { jsx as l, jsxs as
|
|
2
|
-
import { useRef as
|
|
3
|
-
import { useModalFocus as
|
|
4
|
-
import { usePopoverTransition as
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import { toKebab as
|
|
9
|
-
import { useOnExited as
|
|
1
|
+
import { jsx as l, jsxs as A } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as D, useId as G } from "react";
|
|
3
|
+
import { useModalFocus as J } from "../../hooks/use-modal-focus.js";
|
|
4
|
+
import { usePopoverTransition as Q } from "../../hooks/use-popover-transition.js";
|
|
5
|
+
import U from "../scrollbar/Scrollbar.js";
|
|
6
|
+
import V from "../modal-footer/ModalFooter.js";
|
|
7
|
+
import W from "../modal-header/ModalHeader.js";
|
|
8
|
+
import { toKebab as X } from "../../utils/string.js";
|
|
9
|
+
import { useOnExited as Y } from "../../utils/useOnExited.js";
|
|
10
10
|
import o from "./Modal.module.scss.js";
|
|
11
|
-
function
|
|
11
|
+
function Z({
|
|
12
12
|
className: e = "",
|
|
13
13
|
style: n,
|
|
14
14
|
size: i = "small",
|
|
@@ -25,7 +25,8 @@ function Y({
|
|
|
25
25
|
closeButtonProps: M,
|
|
26
26
|
headerDivider: N = !0,
|
|
27
27
|
headerAction: B,
|
|
28
|
-
|
|
28
|
+
headerLeading: F,
|
|
29
|
+
headerSlot: g,
|
|
29
30
|
bodyPadding: m = "default",
|
|
30
31
|
scrollable: c = !0,
|
|
31
32
|
children: w,
|
|
@@ -35,40 +36,40 @@ function Y({
|
|
|
35
36
|
footerDivider: z = !0,
|
|
36
37
|
closeOnEscape: C = !0,
|
|
37
38
|
manageFocus: R = !0,
|
|
38
|
-
initialFocusRef:
|
|
39
|
-
active:
|
|
39
|
+
initialFocusRef: E,
|
|
40
|
+
active: H,
|
|
40
41
|
transition: b,
|
|
41
|
-
visible:
|
|
42
|
-
...
|
|
42
|
+
visible: K,
|
|
43
|
+
...O
|
|
43
44
|
}) {
|
|
44
|
-
const _ =
|
|
45
|
-
|
|
46
|
-
initialFocusRef:
|
|
45
|
+
const _ = D(null);
|
|
46
|
+
J(_, {
|
|
47
|
+
initialFocusRef: E,
|
|
47
48
|
closeOnEscape: C,
|
|
48
49
|
manageFocus: R,
|
|
49
50
|
onClose: d,
|
|
50
|
-
active:
|
|
51
|
+
active: H
|
|
51
52
|
});
|
|
52
|
-
const p =
|
|
53
|
+
const p = G(), P = o[`modal--size-${X(i)}`], S = [
|
|
53
54
|
o["modal__body-inner"],
|
|
54
55
|
m === "menu" && o["modal__body-inner--menu"],
|
|
55
56
|
m === "none" && o["modal__body-inner--none"],
|
|
56
57
|
!c && o["modal__body-inner--fill"]
|
|
57
|
-
].filter(Boolean).join(" "),
|
|
58
|
+
].filter(Boolean).join(" "), $ = /* @__PURE__ */ l("div", { className: S, children: w }), k = [
|
|
58
59
|
o.modal__scroll,
|
|
59
60
|
!c && o["modal__scroll--fill"]
|
|
60
|
-
].filter(Boolean).join(" "),
|
|
61
|
-
return /* @__PURE__ */
|
|
61
|
+
].filter(Boolean).join(" "), q = u != null || f != null || s === "spacer-small" || s === "spacer-large";
|
|
62
|
+
return /* @__PURE__ */ A(
|
|
62
63
|
"div",
|
|
63
64
|
{
|
|
64
|
-
...
|
|
65
|
+
...O,
|
|
65
66
|
ref: _,
|
|
66
67
|
tabIndex: -1,
|
|
67
68
|
className: [
|
|
68
69
|
o.modal,
|
|
69
|
-
|
|
70
|
+
P,
|
|
70
71
|
b && o["modal--transition"],
|
|
71
|
-
b &&
|
|
72
|
+
b && K && o["modal--visible"],
|
|
72
73
|
e
|
|
73
74
|
].filter(Boolean).join(" "),
|
|
74
75
|
style: n,
|
|
@@ -77,7 +78,7 @@ function Y({
|
|
|
77
78
|
"aria-labelledby": p,
|
|
78
79
|
children: [
|
|
79
80
|
/* @__PURE__ */ l(
|
|
80
|
-
|
|
81
|
+
W,
|
|
81
82
|
{
|
|
82
83
|
title: r,
|
|
83
84
|
titleId: p,
|
|
@@ -93,12 +94,13 @@ function Y({
|
|
|
93
94
|
closeButtonProps: M,
|
|
94
95
|
divider: N,
|
|
95
96
|
headerAction: B,
|
|
96
|
-
|
|
97
|
+
leading: F,
|
|
98
|
+
headerSlot: g
|
|
97
99
|
}
|
|
98
100
|
),
|
|
99
|
-
/* @__PURE__ */ l("div", { className: o.modal__body, children: /* @__PURE__ */ l(
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
/* @__PURE__ */ l("div", { className: o.modal__body, children: /* @__PURE__ */ l(U, { className: k, children: $ }) }),
|
|
102
|
+
q && /* @__PURE__ */ l(
|
|
103
|
+
V,
|
|
102
104
|
{
|
|
103
105
|
type: s,
|
|
104
106
|
divider: z,
|
|
@@ -110,10 +112,10 @@ function Y({
|
|
|
110
112
|
}
|
|
111
113
|
);
|
|
112
114
|
}
|
|
113
|
-
function
|
|
114
|
-
const r = e !== void 0, { mounted: a, visible: t } =
|
|
115
|
-
return
|
|
116
|
-
|
|
115
|
+
function so({ open: e, onExited: n, ...i }) {
|
|
116
|
+
const r = e !== void 0, { mounted: a, visible: t } = Q(e ?? !0);
|
|
117
|
+
return Y(a, n, r), r && !a ? null : /* @__PURE__ */ l(
|
|
118
|
+
Z,
|
|
117
119
|
{
|
|
118
120
|
...i,
|
|
119
121
|
active: e ?? !0,
|
|
@@ -123,6 +125,6 @@ function to({ open: e, onExited: n, ...i }) {
|
|
|
123
125
|
);
|
|
124
126
|
}
|
|
125
127
|
export {
|
|
126
|
-
|
|
128
|
+
so as default
|
|
127
129
|
};
|
|
128
130
|
//# sourceMappingURL=Modal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Modal.js","sources":["../../../src/components/modal/Modal.tsx"],"sourcesContent":["import type {\n CSSProperties,\n HTMLAttributes,\n ReactNode,\n RefObject,\n} from 'react';\nimport { useId, useRef } from 'react';\nimport { useModalFocus } from '@/hooks/use-modal-focus';\nimport { usePopoverTransition } from '@/hooks/use-popover-transition';\nimport Scrollbar from '@/components/scrollbar/Scrollbar';\nimport ModalFooter from '@/components/modal-footer/ModalFooter';\nimport type { ModalFooterType } from '@/components/modal-footer/ModalFooter';\nimport ModalHeader from '@/components/modal-header/ModalHeader';\nimport type { ModalSubtitlePlacement } from '@/components/modal-header/ModalHeader';\nimport type { BuiltInButtonProps } from '@/utils/props';\nimport { toKebab } from '@/utils/string';\nimport { useOnExited } from '@/utils/useOnExited';\nimport styles from './Modal.module.scss';\n\nexport type ModalSize = 'small' | 'medium' | 'large';\n\n/**\n * Body inset. `menu` is for MenuItem lists — 8px vertical / 16px horizontal so\n * row labels align with the 32px header/footer margins. `none` removes inset\n * for host-owned full-bleed layouts (e.g. settings sidebars).\n */\nexport type ModalBodyPadding = 'default' | 'menu' | 'none';\n\nexport type { ModalFooterType, ModalSubtitlePlacement };\n\nexport interface ModalProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'title' | 'children' | 'style'\n> {\n /** Extra class on the dialog root (size + chrome classes still apply). */\n className?: string;\n /** Inline style on the dialog root — prefer `className` for layout overrides. */\n style?: CSSProperties;\n /** Width variant. Figma: Size — Small 600px, Medium 704px, Large 832px. */\n size?: ModalSize;\n /** Modal heading text. Required for a11y; use `hideTitle` for close-only chrome. */\n title: ReactNode;\n /** Optional secondary line — placement via `subtitlePlacement`. */\n subtitle?: ReactNode;\n /**\n * Where the subtitle sits. Figma Modal Header: Below | Beside.\n * Default: `below`.\n */\n subtitlePlacement?: ModalSubtitlePlacement;\n /** Visually hide the title (close-only header); title remains for `aria-labelledby`. */\n hideTitle?: boolean;\n /** When true, shows a back-arrow button before the title. */\n showBackButton?: boolean;\n /** Called when the back button is clicked. */\n onBack?: () => void;\n /** Accessible name for the back button. Default: \"Go back\". */\n backLabel?: string;\n /** Extra attributes for the back button (e.g. `data-testid`). */\n backButtonProps?: BuiltInButtonProps;\n /** Called when the × close button is clicked. */\n onClose?: () => void;\n /** Accessible name for the close button. Default: \"Close\". */\n closeLabel?: string;\n /** Extra attributes for the close button (e.g. `data-testid`). */\n closeButtonProps?: BuiltInButtonProps;\n /** Show divider between header and body. Default: true. */\n headerDivider?: boolean;\n /** Optional control before close (Button, search field, …). */\n headerAction?: ReactNode;\n /**\n * Full-width slot rendered below the title row and above the header divider.\n * Accepts any ReactNode — SearchInput, Tabs, a custom toolbar, etc.\n */\n headerSlot?: ReactNode;\n /**\n * Body inset. Default is 32px horizontal / 28px vertical. Use `menu` for\n * MenuItem lists. Use `none` when the host owns padding.\n */\n bodyPadding?: ModalBodyPadding;\n /**\n * When false, the body fills the dialog height so host panes can manage\n * their own scroll regions (settings-style layouts). Default true sizes the\n * body to its content. Overflow always uses Scrollbar (default track width).\n */\n scrollable?: boolean;\n /** Body content. */\n children: ReactNode;\n /** Footer slot — typically Buttons. Wrapped in `ModalFooter`. */\n footer?: ReactNode;\n /** Left footer slot (pagination status, PaginationDots, …). */\n footerLeading?: ReactNode;\n /** Footer layout. Figma Modal Footer Type. Default: `2-actions`. */\n footerType?: ModalFooterType;\n /** Show divider between body and footer. Default: true. */\n footerDivider?: boolean;\n /**\n * Close on Escape via a document listener while mounted. Escapes already\n * handled by an inner widget (`defaultPrevented`) are ignored. Default: true.\n */\n closeOnEscape?: boolean;\n /**\n * Initial focus, Tab trap and focus restore. Set false when the host owns\n * focus (e.g. a floating-ui `FloatingFocusManager`); pair with\n * `closeOnEscape={false}` when the host also handles Escape. Initial focus\n * and restore use the value at mount; the Tab trap follows later updates.\n * Default: true.\n */\n manageFocus?: boolean;\n /**\n * Element to focus when the modal mounts (e.g. the first form field).\n * Default: the dialog root.\n */\n initialFocusRef?: RefObject<HTMLElement | null>;\n /**\n * Controlled visibility with the Compass enter/exit transition (fade + drop from the top + subtle scale 98%→100%,\n * reverse on close, `--duration-quick`); the modal unmounts after the exit,\n * and focus is restored then. Omit to keep the mount-controlled behavior\n * (always rendered, no transition). The host still owns the state.\n */\n open?: boolean;\n /** Called after the exit transition finishes and the modal unmounts (only when `open` is controlled). */\n onExited?: () => void;\n}\n\ninterface ModalPanelState {\n active: boolean;\n transition: boolean;\n visible: boolean;\n}\n\nfunction ModalPanel({\n className = '',\n style,\n size = 'small',\n title,\n subtitle,\n subtitlePlacement = 'below',\n hideTitle = false,\n showBackButton = false,\n onBack,\n backLabel,\n backButtonProps,\n onClose,\n closeLabel,\n closeButtonProps,\n headerDivider = true,\n headerAction,\n headerSlot,\n bodyPadding = 'default',\n scrollable = true,\n children,\n footer,\n footerLeading,\n footerType = '2-actions',\n footerDivider = true,\n closeOnEscape = true,\n manageFocus = true,\n initialFocusRef,\n active,\n transition,\n visible,\n ...rest\n}: ModalProps & ModalPanelState) {\n const rootRef = useRef<HTMLDivElement>(null);\n useModalFocus(rootRef, {\n initialFocusRef,\n closeOnEscape,\n manageFocus,\n onClose,\n active,\n });\n const titleId = useId();\n const sizeClass = styles[`modal--size-${toKebab(size)}`];\n const bodyInnerClass = [\n styles['modal__body-inner'],\n bodyPadding === 'menu' && styles['modal__body-inner--menu'],\n bodyPadding === 'none' && styles['modal__body-inner--none'],\n !scrollable && styles['modal__body-inner--fill'],\n ]\n .filter(Boolean)\n .join(' ');\n\n const bodyInner = <div className={bodyInnerClass}>{children}</div>;\n const scrollClass = [\n styles['modal__scroll'],\n !scrollable && styles['modal__scroll--fill'],\n ]\n .filter(Boolean)\n .join(' ');\n const showFooter =\n footer != null ||\n footerLeading != null ||\n footerType === 'spacer-small' ||\n footerType === 'spacer-large';\n\n return (\n <div\n {...rest}\n ref={rootRef}\n tabIndex={-1}\n className={[\n styles.modal,\n sizeClass,\n transition && styles['modal--transition'],\n transition && visible && styles['modal--visible'],\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n style={style}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n >\n <ModalHeader\n title={title}\n titleId={titleId}\n subtitle={subtitle}\n subtitlePlacement={subtitlePlacement}\n hideTitle={hideTitle}\n showBackButton={showBackButton}\n onBack={onBack}\n backLabel={backLabel}\n backButtonProps={backButtonProps}\n onClose={onClose}\n closeLabel={closeLabel}\n closeButtonProps={closeButtonProps}\n divider={headerDivider}\n headerAction={headerAction}\n headerSlot={headerSlot}\n />\n\n <div className={styles['modal__body']}>\n <Scrollbar className={scrollClass}>{bodyInner}</Scrollbar>\n </div>\n\n {showFooter && (\n <ModalFooter\n type={footerType}\n divider={footerDivider}\n leading={footerLeading}\n >\n {footer}\n </ModalFooter>\n )}\n </div>\n );\n}\n\n/**\n * Modal dialog shell — composes ModalHeader, scrollable body, and ModalFooter.\n * Owns dialog-level focus and keyboard behavior: initial focus, Tab trap,\n * Escape, and focus restore on unmount. Host owns portal, overlay/backdrop,\n * scroll lock, stacking, and open state. Mount-controlled by default; pass\n * `open` for the enter/exit transition.\n */\nexport default function Modal({ open, onExited, ...props }: ModalProps) {\n const controlled = open !== undefined;\n const { mounted, visible } = usePopoverTransition(open ?? true);\n useOnExited(mounted, onExited, controlled);\n\n if (controlled && !mounted) return null;\n\n return (\n <ModalPanel\n {...props}\n active={open ?? true}\n transition={controlled}\n visible={visible}\n />\n );\n}\n"],"names":["ModalPanel","className","style","size","title","subtitle","subtitlePlacement","hideTitle","showBackButton","onBack","backLabel","backButtonProps","onClose","closeLabel","closeButtonProps","headerDivider","headerAction","headerSlot","bodyPadding","scrollable","children","footer","footerLeading","footerType","footerDivider","closeOnEscape","manageFocus","initialFocusRef","active","transition","visible","rest","rootRef","useRef","useModalFocus","titleId","useId","sizeClass","styles","toKebab","bodyInnerClass","bodyInner","jsx","scrollClass","showFooter","jsxs","ModalHeader","Scrollbar","ModalFooter","Modal","open","onExited","props","controlled","mounted","usePopoverTransition","useOnExited"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Modal.js","sources":["../../../src/components/modal/Modal.tsx"],"sourcesContent":["import type {\n CSSProperties,\n HTMLAttributes,\n ReactNode,\n RefObject,\n} from 'react';\nimport { useId, useRef } from 'react';\nimport { useModalFocus } from '@/hooks/use-modal-focus';\nimport { usePopoverTransition } from '@/hooks/use-popover-transition';\nimport Scrollbar from '@/components/scrollbar/Scrollbar';\nimport ModalFooter from '@/components/modal-footer/ModalFooter';\nimport type { ModalFooterType } from '@/components/modal-footer/ModalFooter';\nimport ModalHeader from '@/components/modal-header/ModalHeader';\nimport type { ModalSubtitlePlacement } from '@/components/modal-header/ModalHeader';\nimport type { BuiltInButtonProps } from '@/utils/props';\nimport { toKebab } from '@/utils/string';\nimport { useOnExited } from '@/utils/useOnExited';\nimport styles from './Modal.module.scss';\n\nexport type ModalSize = 'small' | 'medium' | 'large';\n\n/**\n * Body inset. `menu` is for MenuItem lists — 8px vertical / 16px horizontal so\n * row labels align with the 32px header/footer margins. `none` removes inset\n * for host-owned full-bleed layouts (e.g. settings sidebars).\n */\nexport type ModalBodyPadding = 'default' | 'menu' | 'none';\n\nexport type { ModalFooterType, ModalSubtitlePlacement };\n\nexport interface ModalProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'title' | 'children' | 'style'\n> {\n /** Extra class on the dialog root (size + chrome classes still apply). */\n className?: string;\n /** Inline style on the dialog root — prefer `className` for layout overrides. */\n style?: CSSProperties;\n /** Width variant. Figma: Size — Small 600px, Medium 704px, Large 832px. */\n size?: ModalSize;\n /** Modal heading text. Required for a11y; use `hideTitle` for close-only chrome. */\n title: ReactNode;\n /** Optional secondary line — placement via `subtitlePlacement`. */\n subtitle?: ReactNode;\n /**\n * Where the subtitle sits. Figma Modal Header: Below | Beside.\n * Default: `below`.\n */\n subtitlePlacement?: ModalSubtitlePlacement;\n /** Visually hide the title (close-only header); title remains for `aria-labelledby`. */\n hideTitle?: boolean;\n /** When true, shows a back-arrow button before the title. */\n showBackButton?: boolean;\n /** Called when the back button is clicked. */\n onBack?: () => void;\n /** Accessible name for the back button. Default: \"Go back\". */\n backLabel?: string;\n /** Extra attributes for the back button (e.g. `data-testid`). */\n backButtonProps?: BuiltInButtonProps;\n /** Called when the × close button is clicked. */\n onClose?: () => void;\n /** Accessible name for the close button. Default: \"Close\". */\n closeLabel?: string;\n /** Extra attributes for the close button (e.g. `data-testid`). */\n closeButtonProps?: BuiltInButtonProps;\n /** Show divider between header and body. Default: true. */\n headerDivider?: boolean;\n /** Optional control before close (Button, search field, …). */\n headerAction?: ReactNode;\n /**\n * Custom content in the title position: left aligned and vertically\n * centered with the close button. Not wrapped in the heading, so it does\n * not inherit heading type. `title` stays required and names the dialog;\n * it is visually hidden, the same as `hideTitle`. The subtitle is omitted.\n * `hideTitle` without this prop stays the close-only header. `headerSlot`\n * stays the full-width area under the title row.\n */\n headerLeading?: ReactNode;\n /**\n * Full-width slot rendered below the title row and above the header divider.\n * Accepts any ReactNode — SearchInput, Tabs, a custom toolbar, etc.\n */\n headerSlot?: ReactNode;\n /**\n * Body inset. Default is 32px horizontal / 28px vertical. Use `menu` for\n * MenuItem lists. Use `none` when the host owns padding.\n */\n bodyPadding?: ModalBodyPadding;\n /**\n * When false, the body fills the dialog height so host panes can manage\n * their own scroll regions (settings-style layouts). Default true sizes the\n * body to its content. Overflow always uses Scrollbar (default track width).\n */\n scrollable?: boolean;\n /** Body content. */\n children: ReactNode;\n /** Footer slot — typically Buttons. Wrapped in `ModalFooter`. */\n footer?: ReactNode;\n /** Left footer slot (pagination status, PaginationDots, …). */\n footerLeading?: ReactNode;\n /** Footer layout. Figma Modal Footer Type. Default: `2-actions`. */\n footerType?: ModalFooterType;\n /** Show divider between body and footer. Default: true. */\n footerDivider?: boolean;\n /**\n * Close on Escape via a document listener while mounted. Escapes already\n * handled by an inner widget (`defaultPrevented`) are ignored. Default: true.\n */\n closeOnEscape?: boolean;\n /**\n * Initial focus, Tab trap and focus restore. Set false when the host owns\n * focus (e.g. a floating-ui `FloatingFocusManager`); pair with\n * `closeOnEscape={false}` when the host also handles Escape. Initial focus\n * and restore use the value at mount; the Tab trap follows later updates.\n * Default: true.\n */\n manageFocus?: boolean;\n /**\n * Element to focus when the modal mounts (e.g. the first form field).\n * Default: the dialog root.\n */\n initialFocusRef?: RefObject<HTMLElement | null>;\n /**\n * Controlled visibility with the Compass enter/exit transition (fade + drop from the top + subtle scale 98%→100%,\n * reverse on close, `--duration-quick`); the modal unmounts after the exit,\n * and focus is restored then. Omit to keep the mount-controlled behavior\n * (always rendered, no transition). The host still owns the state.\n */\n open?: boolean;\n /** Called after the exit transition finishes and the modal unmounts (only when `open` is controlled). */\n onExited?: () => void;\n}\n\ninterface ModalPanelState {\n active: boolean;\n transition: boolean;\n visible: boolean;\n}\n\nfunction ModalPanel({\n className = '',\n style,\n size = 'small',\n title,\n subtitle,\n subtitlePlacement = 'below',\n hideTitle = false,\n showBackButton = false,\n onBack,\n backLabel,\n backButtonProps,\n onClose,\n closeLabel,\n closeButtonProps,\n headerDivider = true,\n headerAction,\n headerLeading,\n headerSlot,\n bodyPadding = 'default',\n scrollable = true,\n children,\n footer,\n footerLeading,\n footerType = '2-actions',\n footerDivider = true,\n closeOnEscape = true,\n manageFocus = true,\n initialFocusRef,\n active,\n transition,\n visible,\n ...rest\n}: ModalProps & ModalPanelState) {\n const rootRef = useRef<HTMLDivElement>(null);\n useModalFocus(rootRef, {\n initialFocusRef,\n closeOnEscape,\n manageFocus,\n onClose,\n active,\n });\n const titleId = useId();\n const sizeClass = styles[`modal--size-${toKebab(size)}`];\n const bodyInnerClass = [\n styles['modal__body-inner'],\n bodyPadding === 'menu' && styles['modal__body-inner--menu'],\n bodyPadding === 'none' && styles['modal__body-inner--none'],\n !scrollable && styles['modal__body-inner--fill'],\n ]\n .filter(Boolean)\n .join(' ');\n\n const bodyInner = <div className={bodyInnerClass}>{children}</div>;\n const scrollClass = [\n styles['modal__scroll'],\n !scrollable && styles['modal__scroll--fill'],\n ]\n .filter(Boolean)\n .join(' ');\n const showFooter =\n footer != null ||\n footerLeading != null ||\n footerType === 'spacer-small' ||\n footerType === 'spacer-large';\n\n return (\n <div\n {...rest}\n ref={rootRef}\n tabIndex={-1}\n className={[\n styles.modal,\n sizeClass,\n transition && styles['modal--transition'],\n transition && visible && styles['modal--visible'],\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n style={style}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n >\n <ModalHeader\n title={title}\n titleId={titleId}\n subtitle={subtitle}\n subtitlePlacement={subtitlePlacement}\n hideTitle={hideTitle}\n showBackButton={showBackButton}\n onBack={onBack}\n backLabel={backLabel}\n backButtonProps={backButtonProps}\n onClose={onClose}\n closeLabel={closeLabel}\n closeButtonProps={closeButtonProps}\n divider={headerDivider}\n headerAction={headerAction}\n leading={headerLeading}\n headerSlot={headerSlot}\n />\n\n <div className={styles['modal__body']}>\n <Scrollbar className={scrollClass}>{bodyInner}</Scrollbar>\n </div>\n\n {showFooter && (\n <ModalFooter\n type={footerType}\n divider={footerDivider}\n leading={footerLeading}\n >\n {footer}\n </ModalFooter>\n )}\n </div>\n );\n}\n\n/**\n * Modal dialog shell — composes ModalHeader (title, or `headerLeading` in the\n * title position), scrollable body, and ModalFooter.\n * Owns dialog-level focus and keyboard behavior: initial focus, Tab trap,\n * Escape, and focus restore on unmount. Host owns portal, overlay/backdrop,\n * scroll lock, stacking, and open state. Mount-controlled by default; pass\n * `open` for the enter/exit transition.\n */\nexport default function Modal({ open, onExited, ...props }: ModalProps) {\n const controlled = open !== undefined;\n const { mounted, visible } = usePopoverTransition(open ?? true);\n useOnExited(mounted, onExited, controlled);\n\n if (controlled && !mounted) return null;\n\n return (\n <ModalPanel\n {...props}\n active={open ?? true}\n transition={controlled}\n visible={visible}\n />\n );\n}\n"],"names":["ModalPanel","className","style","size","title","subtitle","subtitlePlacement","hideTitle","showBackButton","onBack","backLabel","backButtonProps","onClose","closeLabel","closeButtonProps","headerDivider","headerAction","headerLeading","headerSlot","bodyPadding","scrollable","children","footer","footerLeading","footerType","footerDivider","closeOnEscape","manageFocus","initialFocusRef","active","transition","visible","rest","rootRef","useRef","useModalFocus","titleId","useId","sizeClass","styles","toKebab","bodyInnerClass","bodyInner","jsx","scrollClass","showFooter","jsxs","ModalHeader","Scrollbar","ModalFooter","Modal","open","onExited","props","controlled","mounted","usePopoverTransition","useOnExited"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./Modal.css');const _="
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./Modal.css');const _="_modal_ry0g9_13",l="_modal__body_ry0g9_67",o="_modal__scroll_ry0g9_74",d={modal:_,"modal--transition":"_modal--transition_ry0g9_31","modal--visible":"_modal--visible_ry0g9_44","modal--size-small":"_modal--size-small_ry0g9_58","modal--size-medium":"_modal--size-medium_ry0g9_61","modal--size-large":"_modal--size-large_ry0g9_64",modal__body:l,modal__scroll:o,"modal__scroll--fill":"_modal__scroll--fill_ry0g9_78","modal__body-inner":"_modal__body-inner_ry0g9_81","modal__body-inner--menu":"_modal__body-inner--menu_ry0g9_84","modal__body-inner--none":"_modal__body-inner--none_ry0g9_87","modal__body-inner--fill":"_modal__body-inner--fill_ry0g9_90"};exports.default=d;exports.modal=_;exports.modal__body=l;exports.modal__scroll=o;
|
|
2
2
|
//# sourceMappingURL=Modal.module.scss.cjs.map
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import './Modal.css';const _ = "
|
|
1
|
+
import './Modal.css';const _ = "_modal_ry0g9_13", l = "_modal__body_ry0g9_67", o = "_modal__scroll_ry0g9_74", d = {
|
|
2
2
|
modal: _,
|
|
3
|
-
"modal--transition": "_modal--
|
|
4
|
-
"modal--visible": "_modal--
|
|
5
|
-
"modal--size-small": "_modal--size-
|
|
6
|
-
"modal--size-medium": "_modal--size-
|
|
7
|
-
"modal--size-large": "_modal--size-
|
|
3
|
+
"modal--transition": "_modal--transition_ry0g9_31",
|
|
4
|
+
"modal--visible": "_modal--visible_ry0g9_44",
|
|
5
|
+
"modal--size-small": "_modal--size-small_ry0g9_58",
|
|
6
|
+
"modal--size-medium": "_modal--size-medium_ry0g9_61",
|
|
7
|
+
"modal--size-large": "_modal--size-large_ry0g9_64",
|
|
8
8
|
modal__body: l,
|
|
9
9
|
modal__scroll: o,
|
|
10
|
-
"modal__scroll--fill": "_modal__scroll--
|
|
11
|
-
"modal__body-inner": "_modal__body-
|
|
12
|
-
"modal__body-inner--menu": "_modal__body-inner--
|
|
13
|
-
"modal__body-inner--none": "_modal__body-inner--
|
|
14
|
-
"modal__body-inner--fill": "_modal__body-inner--
|
|
10
|
+
"modal__scroll--fill": "_modal__scroll--fill_ry0g9_78",
|
|
11
|
+
"modal__body-inner": "_modal__body-inner_ry0g9_81",
|
|
12
|
+
"modal__body-inner--menu": "_modal__body-inner--menu_ry0g9_84",
|
|
13
|
+
"modal__body-inner--none": "_modal__body-inner--none_ry0g9_87",
|
|
14
|
+
"modal__body-inner--fill": "_modal__body-inner--fill_ry0g9_90"
|
|
15
15
|
};
|
|
16
16
|
export {
|
|
17
17
|
d as default,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@keyframes _modal-overlay-fade-
|
|
1
|
+
@keyframes _modal-overlay-fade-in_1oqns_1{0%{opacity:0}}._modal-overlay_1oqns_18{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--spacing-xl) var(--spacing-xl) calc(var(--spacing-xl) + 2 * var(--spacing-xxl));z-index:var(--z-modal);background-color:var(--modal-overlay-bg);animation:_modal-overlay-fade-in_1oqns_1 var(--duration-quick) var(--ease-entrance);transition:opacity var(--duration-quick) var(--ease-exit)}._modal-overlay--exiting_1oqns_30{opacity:0;pointer-events:none}@media(prefers-reduced-motion:reduce){._modal-overlay_1oqns_18{animation:none;transition:none}}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./ModalOverlay.css');const e={"modal-overlay":"_modal-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./ModalOverlay.css');const e={"modal-overlay":"_modal-overlay_1oqns_18","modal-overlay-fade-in":"_modal-overlay-fade-in_1oqns_1","modal-overlay--exiting":"_modal-overlay--exiting_1oqns_30"};exports.default=e;
|
|
2
2
|
//# sourceMappingURL=ModalOverlay.module.scss.cjs.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import './ModalOverlay.css';const
|
|
2
|
-
"modal-overlay": "_modal-
|
|
3
|
-
"modal-overlay-fade-in": "_modal-overlay-fade-
|
|
4
|
-
"modal-overlay--exiting": "_modal-overlay--
|
|
1
|
+
import './ModalOverlay.css';const o = {
|
|
2
|
+
"modal-overlay": "_modal-overlay_1oqns_18",
|
|
3
|
+
"modal-overlay-fade-in": "_modal-overlay-fade-in_1oqns_1",
|
|
4
|
+
"modal-overlay--exiting": "_modal-overlay--exiting_1oqns_30"
|
|
5
5
|
};
|
|
6
6
|
export {
|
|
7
|
-
|
|
7
|
+
o as default
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=ModalOverlay.module.scss.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
._modal-
|
|
1
|
+
._modal-footer_npl2l_13{display:flex;flex-direction:column;flex-shrink:0;align-items:stretch}._modal-footer--divider_npl2l_19{border-top:1px solid rgba(var(--center-channel-color-rgb),.12)}._modal-footer--no-divider_npl2l_22 ._modal-footer__content_npl2l_22{padding-top:0}._modal-footer__content_npl2l_22{display:flex;align-items:center;justify-content:flex-end;gap:var(--spacing-xs);width:100%;padding:var(--spacing-xxl) var(--spacing-xxxl)}._modal-footer__leading_npl2l_33{flex:1 1 auto;min-width:0;display:flex;align-items:center;font-family:var(--font-family-body);font-size:var(--font-size-75);font-weight:var(--font-weight-semibold);line-height:var(--line-height-75);color:rgba(var(--center-channel-color-rgb),.64)}._modal-footer__actions_npl2l_44{display:flex;flex-shrink:0;align-items:center;justify-content:flex-end;gap:var(--spacing-xs)}._modal-footer--type-2-actions-separated_npl2l_51 ._modal-footer__content_npl2l_22{justify-content:space-between}._modal-footer--type-2-actions-separated_npl2l_51 ._modal-footer__actions_npl2l_44:only-child{flex:1 1 auto;justify-content:space-between}._modal-footer--type-pagination_npl2l_58 ._modal-footer__content_npl2l_22,._modal-footer--type-stepped-progress_npl2l_58 ._modal-footer__content_npl2l_22{justify-content:space-between}._modal-footer--type-spacer-small_npl2l_61{padding:var(--spacing-l);min-height:calc(var(--spacing-l) * 2)}._modal-footer--type-spacer-large_npl2l_65{padding:var(--spacing-xxl);min-height:calc(var(--spacing-xxl) * 2)}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./ModalFooter.css');const o={"modal-footer":"_modal-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./ModalFooter.css');const o={"modal-footer":"_modal-footer_npl2l_13","modal-footer--divider":"_modal-footer--divider_npl2l_19","modal-footer--no-divider":"_modal-footer--no-divider_npl2l_22","modal-footer__content":"_modal-footer__content_npl2l_22","modal-footer__leading":"_modal-footer__leading_npl2l_33","modal-footer__actions":"_modal-footer__actions_npl2l_44","modal-footer--type-2-actions-separated":"_modal-footer--type-2-actions-separated_npl2l_51","modal-footer--type-pagination":"_modal-footer--type-pagination_npl2l_58","modal-footer--type-stepped-progress":"_modal-footer--type-stepped-progress_npl2l_58","modal-footer--type-spacer-small":"_modal-footer--type-spacer-small_npl2l_61","modal-footer--type-spacer-large":"_modal-footer--type-spacer-large_npl2l_65"};exports.default=o;
|
|
2
2
|
//# sourceMappingURL=ModalFooter.module.scss.cjs.map
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import './ModalFooter.css';const o = {
|
|
2
|
-
"modal-footer": "_modal-
|
|
3
|
-
"modal-footer--divider": "_modal-footer--
|
|
4
|
-
"modal-footer--no-divider": "_modal-footer--no-
|
|
5
|
-
"modal-footer__content": "_modal-
|
|
6
|
-
"modal-footer__leading": "_modal-
|
|
7
|
-
"modal-footer__actions": "_modal-
|
|
8
|
-
"modal-footer--type-2-actions-separated": "_modal-footer--type-2-actions-
|
|
9
|
-
"modal-footer--type-pagination": "_modal-footer--type-
|
|
10
|
-
"modal-footer--type-stepped-progress": "_modal-footer--type-stepped-
|
|
11
|
-
"modal-footer--type-spacer-small": "_modal-footer--type-spacer-
|
|
12
|
-
"modal-footer--type-spacer-large": "_modal-footer--type-spacer-
|
|
2
|
+
"modal-footer": "_modal-footer_npl2l_13",
|
|
3
|
+
"modal-footer--divider": "_modal-footer--divider_npl2l_19",
|
|
4
|
+
"modal-footer--no-divider": "_modal-footer--no-divider_npl2l_22",
|
|
5
|
+
"modal-footer__content": "_modal-footer__content_npl2l_22",
|
|
6
|
+
"modal-footer__leading": "_modal-footer__leading_npl2l_33",
|
|
7
|
+
"modal-footer__actions": "_modal-footer__actions_npl2l_44",
|
|
8
|
+
"modal-footer--type-2-actions-separated": "_modal-footer--type-2-actions-separated_npl2l_51",
|
|
9
|
+
"modal-footer--type-pagination": "_modal-footer--type-pagination_npl2l_58",
|
|
10
|
+
"modal-footer--type-stepped-progress": "_modal-footer--type-stepped-progress_npl2l_58",
|
|
11
|
+
"modal-footer--type-spacer-small": "_modal-footer--type-spacer-small_npl2l_61",
|
|
12
|
+
"modal-footer--type-spacer-large": "_modal-footer--type-spacer-large_npl2l_65"
|
|
13
13
|
};
|
|
14
14
|
export {
|
|
15
15
|
o as default
|
|
@@ -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"),__z=require("@mattermost/compass-icons/components/close.js"),z=__z?.default??__z,__H=require("@mattermost/compass-icons/components/arrow-left.js"),H=__H?.default??__H,f=require("../icon/Icon.cjs"),j=require("../icon-button/IconButton.cjs"),x=require("../../utils/props.cjs"),a=require("./ModalHeader.module.scss.cjs");function I({className:N="",title:l,subtitle:r,subtitlePlacement:v="below",hideTitle:o=!1,titleId:c,showBackButton:b=!1,onBack:g,backLabel:q="Go back",backButtonProps:d,onClose:C,closeLabel:y="Close",closeButtonProps:s,divider:w=!0,headerAction:M,leading:m,headerSlot:n}){const i=!!m,u=!o&&!i&&l!=null,t=u&&r!=null,h=v==="beside"&&t,_=b?e.jsx(j.default,{...d,"aria-label":q,className:x.mergeClassNames(a.default["modal-header__back"],d==null?void 0:d.className),icon:e.jsx(f.default,{glyph:e.jsx(H,{}),size:"20"}),onClick:g}):null;return e.jsxs("div",{className:[a.default["modal-header"],!w&&a.default["modal-header--no-divider"],o&&!i&&a.default["modal-header--close-only"],i&&a.default["modal-header--has-leading"],n&&a.default["modal-header--has-slot"],N].filter(Boolean).join(" "),children:[e.jsxs("div",{className:a.default["modal-header__content"],children:[u?e.jsxs("div",{className:a.default["modal-header__titles"],children:[e.jsxs("div",{className:a.default["modal-header__primary"],children:[_,e.jsx("h2",{id:c,className:a.default["modal-header__title"],children:l}),h&&e.jsxs("div",{className:a.default["modal-header__subtitle-beside"],children:[e.jsx("span",{className:a.default["modal-header__subtitle-divider"],"aria-hidden":!0}),e.jsx("p",{className:a.default["modal-header__subtitle"],children:r})]})]}),t&&!h&&e.jsx("p",{className:a.default["modal-header__subtitle"],children:r})]}):c!=null&&l!=null?e.jsx("h2",{id:c,className:a.default["modal-header__title-sr"],children:l}):null,i&&e.jsxs("div",{className:a.default["modal-header__leading"],children:[_,m]}),e.jsxs("div",{className:a.default["modal-header__actions"],children:[M,e.jsx(j.default,{...s,"aria-label":y,className:x.mergeClassNames(a.default["modal-header__close"],s==null?void 0:s.className),icon:e.jsx(f.default,{glyph:e.jsx(z,{}),size:"20"}),onClick:C})]})]}),n&&e.jsx("div",{className:a.default["modal-header__slot"],children:n})]})}exports.default=I;
|
|
2
2
|
//# sourceMappingURL=ModalHeader.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalHeader.cjs","sources":["../../../src/components/modal-header/ModalHeader.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport CloseIcon from '@mattermost/compass-icons/components/close';\nimport ArrowLeftIcon from '@mattermost/compass-icons/components/arrow-left';\nimport Icon from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport type { BuiltInButtonProps } from '@/utils/props';\nimport { mergeClassNames } from '@/utils/props';\nimport styles from './ModalHeader.module.scss';\n\nexport type ModalSubtitlePlacement = 'below' | 'beside';\n\nexport interface ModalHeaderProps {\n className?: string;\n /** Heading text. Omit (with `hideTitle`) for close-only headers. */\n title?: ReactNode;\n /** Optional secondary text — placement controlled by `subtitlePlacement`. */\n subtitle?: ReactNode;\n /**\n * Where the subtitle sits relative to the title.\n * Figma: Subtitle = Below | Beside. Default: `below`.\n */\n subtitlePlacement?: ModalSubtitlePlacement;\n /** When true, title is visually hidden (close-only chrome; keep `title`/`titleId` for a11y). */\n hideTitle?: boolean;\n /** id for the title element — pair with dialog `aria-labelledby`. */\n titleId?: string;\n /** Back arrow before the title. */\n showBackButton?: boolean;\n onBack?: () => void;\n /** Accessible name for the back button. Default: \"Go back\". */\n backLabel?: string;\n /** Extra attributes for the back button (e.g. `data-testid`). */\n backButtonProps?: BuiltInButtonProps;\n /** Called when the × is clicked. */\n onClose?: () => void;\n /** Accessible name for the close button. Default: \"Close\". */\n closeLabel?: string;\n /** Extra attributes for the close button (e.g. `data-testid`). */\n closeButtonProps?: BuiltInButtonProps;\n /** Show bottom border. Figma: Divider = On. Default: true. */\n divider?: boolean;\n /**\n * Optional control before close (Figma Controls = Button / Small Input / …).\n * Host owns the Button, TextInput, etc.\n */\n headerAction?: ReactNode;\n /**\n * Full-width slot rendered below the title row and above the divider.\n * Accepts any ReactNode — SearchInput, Tabs, a custom toolbar, etc.\n * Padding is provided by the slot container; no extra wrapper is needed.\n */\n headerSlot?: ReactNode;\n}\n\n/**\n * Modal Header — title row, optional subtitle (below or beside), optional back
|
|
1
|
+
{"version":3,"file":"ModalHeader.cjs","sources":["../../../src/components/modal-header/ModalHeader.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport CloseIcon from '@mattermost/compass-icons/components/close';\nimport ArrowLeftIcon from '@mattermost/compass-icons/components/arrow-left';\nimport Icon from '@/components/icon/Icon';\nimport IconButton from '@/components/icon-button/IconButton';\nimport type { BuiltInButtonProps } from '@/utils/props';\nimport { mergeClassNames } from '@/utils/props';\nimport styles from './ModalHeader.module.scss';\n\nexport type ModalSubtitlePlacement = 'below' | 'beside';\n\nexport interface ModalHeaderProps {\n className?: string;\n /** Heading text. Omit (with `hideTitle`) for close-only headers. */\n title?: ReactNode;\n /** Optional secondary text — placement controlled by `subtitlePlacement`. */\n subtitle?: ReactNode;\n /**\n * Where the subtitle sits relative to the title.\n * Figma: Subtitle = Below | Beside. Default: `below`.\n */\n subtitlePlacement?: ModalSubtitlePlacement;\n /** When true, title is visually hidden (close-only chrome; keep `title`/`titleId` for a11y). */\n hideTitle?: boolean;\n /** id for the title element — pair with dialog `aria-labelledby`. */\n titleId?: string;\n /** Back arrow before the title. */\n showBackButton?: boolean;\n onBack?: () => void;\n /** Accessible name for the back button. Default: \"Go back\". */\n backLabel?: string;\n /** Extra attributes for the back button (e.g. `data-testid`). */\n backButtonProps?: BuiltInButtonProps;\n /** Called when the × is clicked. */\n onClose?: () => void;\n /** Accessible name for the close button. Default: \"Close\". */\n closeLabel?: string;\n /** Extra attributes for the close button (e.g. `data-testid`). */\n closeButtonProps?: BuiltInButtonProps;\n /** Show bottom border. Figma: Divider = On. Default: true. */\n divider?: boolean;\n /**\n * Optional control before close (Figma Controls = Button / Small Input / …).\n * Host owns the Button, TextInput, etc.\n */\n headerAction?: ReactNode;\n /**\n * Custom content in the title position: left aligned, vertically centered\n * with the close button. Not wrapped in the heading and not given heading\n * type, so a control keeps its own styles. `title` stays the accessible\n * name and is visually hidden, the same as `hideTitle`. The subtitle is\n * omitted. `showBackButton` still renders before this content. Without\n * this prop, `hideTitle` stays the close-only header.\n */\n leading?: ReactNode;\n /**\n * Full-width slot rendered below the title row and above the divider.\n * Accepts any ReactNode — SearchInput, Tabs, a custom toolbar, etc.\n * Padding is provided by the slot container; no extra wrapper is needed.\n */\n headerSlot?: ReactNode;\n}\n\n/**\n * Modal Header — title row, optional subtitle (below or beside), optional\n * leading content in place of the visible title, optional back, optional\n * header action, and close. Compose into `Modal` or use standalone.\n *\n * @see https://www.figma.com/design/qdm5tKododENqnTvjLovDT/Patterns---Modals?node-id=789-15921\n */\nexport default function ModalHeader({\n className = '',\n title,\n subtitle,\n subtitlePlacement = 'below',\n hideTitle = false,\n titleId,\n showBackButton = false,\n onBack,\n backLabel = 'Go back',\n backButtonProps,\n onClose,\n closeLabel = 'Close',\n closeButtonProps,\n divider = true,\n headerAction,\n leading,\n headerSlot,\n}: ModalHeaderProps) {\n const hasLeading = Boolean(leading);\n const showTitleBlock = !hideTitle && !hasLeading && title != null;\n const showSubtitle = showTitleBlock && subtitle != null;\n const beside = subtitlePlacement === 'beside' && showSubtitle;\n const backButton = showBackButton ? (\n <IconButton\n {...backButtonProps}\n aria-label={backLabel}\n className={mergeClassNames(\n styles['modal-header__back'],\n backButtonProps?.className,\n )}\n icon={<Icon glyph={<ArrowLeftIcon />} size=\"20\" />}\n onClick={onBack}\n />\n ) : null;\n\n return (\n <div\n className={[\n styles['modal-header'],\n !divider && styles['modal-header--no-divider'],\n hideTitle && !hasLeading && styles['modal-header--close-only'],\n hasLeading && styles['modal-header--has-leading'],\n headerSlot && styles['modal-header--has-slot'],\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div className={styles['modal-header__content']}>\n {showTitleBlock ? (\n <div className={styles['modal-header__titles']}>\n <div className={styles['modal-header__primary']}>\n {backButton}\n <h2 id={titleId} className={styles['modal-header__title']}>\n {title}\n </h2>\n {beside && (\n <div className={styles['modal-header__subtitle-beside']}>\n <span\n className={styles['modal-header__subtitle-divider']}\n aria-hidden\n />\n <p className={styles['modal-header__subtitle']}>{subtitle}</p>\n </div>\n )}\n </div>\n {showSubtitle && !beside && (\n <p className={styles['modal-header__subtitle']}>{subtitle}</p>\n )}\n </div>\n ) : titleId != null && title != null ? (\n <h2 id={titleId} className={styles['modal-header__title-sr']}>\n {title}\n </h2>\n ) : null}\n\n {hasLeading && (\n <div className={styles['modal-header__leading']}>\n {backButton}\n {leading}\n </div>\n )}\n\n <div className={styles['modal-header__actions']}>\n {headerAction}\n <IconButton\n {...closeButtonProps}\n aria-label={closeLabel}\n className={mergeClassNames(\n styles['modal-header__close'],\n closeButtonProps?.className,\n )}\n icon={<Icon glyph={<CloseIcon />} size=\"20\" />}\n onClick={onClose}\n />\n </div>\n </div>\n {headerSlot && (\n <div className={styles['modal-header__slot']}>{headerSlot}</div>\n )}\n </div>\n );\n}\n"],"names":["ModalHeader","className","title","subtitle","subtitlePlacement","hideTitle","titleId","showBackButton","onBack","backLabel","backButtonProps","onClose","closeLabel","closeButtonProps","divider","headerAction","leading","headerSlot","hasLeading","showTitleBlock","showSubtitle","beside","backButton","jsx","IconButton","mergeClassNames","styles","Icon","ArrowLeftIcon","jsxs","CloseIcon"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
._modal-
|
|
1
|
+
._modal-header_14bu2_13{display:flex;flex-direction:column;flex-shrink:0;border-bottom:1px solid rgba(var(--center-channel-color-rgb),.12)}._modal-header--no-divider_14bu2_19{border-bottom:none}._modal-header--no-divider_14bu2_19 ._modal-header__content_14bu2_22,._modal-header--has-slot_14bu2_25 ._modal-header__content_14bu2_22{padding-bottom:0}._modal-header--close-only_14bu2_28 ._modal-header__content_14bu2_22{justify-content:flex-end}._modal-header--has-leading_14bu2_31 ._modal-header__content_14bu2_22{align-items:center}._modal-header__content_14bu2_22{display:flex;align-items:flex-start;gap:var(--spacing-s);width:100%;padding:var(--spacing-xxl) var(--spacing-xxxl)}._modal-header__leading_14bu2_41{display:flex;flex:1 1 auto;align-items:center;gap:var(--spacing-m);min-width:0}._modal-header__titles_14bu2_48{display:flex;flex:1 1 auto;flex-direction:column;align-items:flex-start;gap:var(--spacing-m);min-width:0;padding:var(--spacing-xxxxs) 0}._modal-header__primary_14bu2_57{display:flex;align-items:center;gap:var(--spacing-m);width:100%;min-height:var(--line-height-500)}._modal-header__title_14bu2_48{flex:0 1 auto;min-width:0;margin:0;font-family:var(--font-family-heading);font-size:var(--font-size-500);font-weight:var(--font-weight-semibold);line-height:var(--line-height-500);color:var(--center-channel-color)}._modal-header__title-sr_14bu2_74{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}._modal-header__subtitle_14bu2_85{margin:0;font-family:var(--font-family-body);font-size:var(--font-size-75);font-weight:var(--font-weight-regular);line-height:var(--line-height-75);color:rgba(var(--center-channel-color-rgb),.72)}._modal-header__subtitle-beside_14bu2_93{display:flex;flex-shrink:0;align-items:center;gap:var(--spacing-xs)}._modal-header__subtitle-beside_14bu2_93 ._modal-header__subtitle_14bu2_85{line-height:var(--line-height-200);white-space:nowrap}._modal-header__subtitle-divider_14bu2_103{display:block;width:1px;height:var(--line-height-500);background-color:rgba(var(--center-channel-color-rgb),.16)}._modal-header__actions_14bu2_109{display:flex;flex-shrink:0;align-items:center;justify-content:flex-end;gap:7px;height:28px}._modal-header__back_14bu2_117{margin-left:calc(-1 * var(--spacing-m));margin-top:calc(-1 * var(--spacing-xxs));margin-bottom:calc(-1 * var(--spacing-xxs))}._modal-header__close_14bu2_122{margin-right:calc(-1 * var(--spacing-m));margin-top:calc(-1 * var(--spacing-xxs));margin-bottom:calc(-1 * var(--spacing-xxs))}._modal-header__slot_14bu2_127{padding:var(--spacing-l) var(--spacing-xxxl) var(--spacing-xxl)}
|
|
@@ -36,6 +36,15 @@ export interface ModalHeaderProps {
|
|
|
36
36
|
* Host owns the Button, TextInput, etc.
|
|
37
37
|
*/
|
|
38
38
|
headerAction?: ReactNode;
|
|
39
|
+
/**
|
|
40
|
+
* Custom content in the title position: left aligned, vertically centered
|
|
41
|
+
* with the close button. Not wrapped in the heading and not given heading
|
|
42
|
+
* type, so a control keeps its own styles. `title` stays the accessible
|
|
43
|
+
* name and is visually hidden, the same as `hideTitle`. The subtitle is
|
|
44
|
+
* omitted. `showBackButton` still renders before this content. Without
|
|
45
|
+
* this prop, `hideTitle` stays the close-only header.
|
|
46
|
+
*/
|
|
47
|
+
leading?: ReactNode;
|
|
39
48
|
/**
|
|
40
49
|
* Full-width slot rendered below the title row and above the divider.
|
|
41
50
|
* Accepts any ReactNode — SearchInput, Tabs, a custom toolbar, etc.
|
|
@@ -44,10 +53,11 @@ export interface ModalHeaderProps {
|
|
|
44
53
|
headerSlot?: ReactNode;
|
|
45
54
|
}
|
|
46
55
|
/**
|
|
47
|
-
* Modal Header — title row, optional subtitle (below or beside), optional
|
|
48
|
-
*
|
|
56
|
+
* Modal Header — title row, optional subtitle (below or beside), optional
|
|
57
|
+
* leading content in place of the visible title, optional back, optional
|
|
58
|
+
* header action, and close. Compose into `Modal` or use standalone.
|
|
49
59
|
*
|
|
50
60
|
* @see https://www.figma.com/design/qdm5tKododENqnTvjLovDT/Patterns---Modals?node-id=789-15921
|
|
51
61
|
*/
|
|
52
|
-
export default function ModalHeader({ className, title, subtitle, subtitlePlacement, hideTitle, titleId, showBackButton, onBack, backLabel, backButtonProps, onClose, closeLabel, closeButtonProps, divider, headerAction, headerSlot, }: ModalHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
62
|
+
export default function ModalHeader({ className, title, subtitle, subtitlePlacement, hideTitle, titleId, showBackButton, onBack, backLabel, backButtonProps, onClose, closeLabel, closeButtonProps, divider, headerAction, leading, headerSlot, }: ModalHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
53
63
|
//# sourceMappingURL=ModalHeader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalHeader.d.ts","sourceRoot":"","sources":["../../../src/components/modal-header/ModalHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAIxD,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,gGAAgG;IAChG,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,eAAe,CAAC,EAAE,kBAAkB,CAAC;IACrC,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;IACtC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED
|
|
1
|
+
{"version":3,"file":"ModalHeader.d.ts","sourceRoot":"","sources":["../../../src/components/modal-header/ModalHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAIxD,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,gGAAgG;IAChG,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,eAAe,CAAC,EAAE,kBAAkB,CAAC;IACrC,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;IACtC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,SAAc,EACd,KAAK,EACL,QAAQ,EACR,iBAA2B,EAC3B,SAAiB,EACjB,OAAO,EACP,cAAsB,EACtB,MAAM,EACN,SAAqB,EACrB,eAAe,EACf,OAAO,EACP,UAAoB,EACpB,gBAAgB,EAChB,OAAc,EACd,YAAY,EACZ,OAAO,EACP,UAAU,GACX,EAAE,gBAAgB,2CAqFlB"}
|