diff --git a/web/modals/threads/create/compose-subchannel-modal.css b/web/modals/threads/create/compose-subchannel-modal.css --- a/web/modals/threads/create/compose-subchannel-modal.css +++ b/web/modals/threads/create/compose-subchannel-modal.css @@ -1,33 +1,22 @@ div.modalHeader { padding: 15px; font-weight: var(--semi-bold); - color: var(--compose-subchannel-header-fg); - background-color: var(--compose-subchannel-header-bg); + color: var(--text-background-tertiary-default); + background-color: var(--frame-background-tertiary-default); display: flex; align-items: center; justify-content: center; - margin-top: 30px; column-gap: 10px; } div.modalHeaderParentName { - color: var(--compose-subchannel-mark-color); + color: var(--link-background-secondary-default); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } div.container { - width: 383px; - overflow-y: auto; -} - -div.stepContainer { - position: relative; - height: 100vh; - max-height: 533px; -} - -div.stepItem { - padding: 20px; + height: 60vh; + overflow: auto; } diff --git a/web/modals/threads/create/compose-subchannel-modal.react.js b/web/modals/threads/create/compose-subchannel-modal.react.js --- a/web/modals/threads/create/compose-subchannel-modal.react.js +++ b/web/modals/threads/create/compose-subchannel-modal.react.js @@ -18,7 +18,7 @@ import SubchannelMembers from './steps/subchannel-members.react.js'; import type { VisibilityType } from './steps/subchannel-settings.react.js'; import SubchannelSettings from './steps/subchannel-settings.react.js'; -import Stepper from '../../../components/stepper.react.js'; +import Button from '../../../components/button.react.js'; import { updateNavInfoActionType } from '../../../redux/action-types.js'; import { useSelector } from '../../../redux/redux-utils.js'; import { nonThreadCalendarQuery } from '../../../selectors/nav-selectors.js'; @@ -183,40 +183,6 @@ ], ); - const stepperButtons = React.useMemo( - () => ({ - settings: { - nextProps: { - content: 'Next', - disabled: !channelName.trim(), - onClick: () => { - setErrorMessage(''); - setChannelName(channelName.trim()); - setActiveStep('members'); - }, - }, - }, - members: { - prevProps: { - content: 'Back', - onClick: () => setActiveStep('settings'), - }, - nextProps: { - content: 'Create', - loading: loadingState === 'loading', - disabled: pendingUsersToAdd.size === 0, - onClick: dispatchCreateSubchannel, - }, - }, - }), - [ - channelName, - dispatchCreateSubchannel, - loadingState, - pendingUsersToAdd.size, - ], - ); - const subchannelMembers = React.useMemo( () => , [parentThreadInfo], @@ -227,29 +193,81 @@ ? `Create channel - ${trimText(channelName, 11)}` : 'Create channel'; + const subheader = React.useMemo( + () => , + [parentThreadName], + ); + + const modalContent = React.useMemo(() => { + if (activeStep === 'settings') { + return subchannelSettings; + } + return subchannelMembers; + }, [activeStep, subchannelMembers, subchannelSettings]); + + const onClickNext = React.useCallback(() => { + setErrorMessage(''); + setChannelName(channelName.trim()); + setActiveStep('members'); + }, [channelName]); + + const primaryButton = React.useMemo(() => { + if (activeStep === 'settings') { + return ( + + ); + } + + return ( + + ); + }, [ + activeStep, + channelName, + dispatchCreateSubchannel, + loadingState, + onClickNext, + pendingUsersToAdd.size, + ]); + + const onClickBack = React.useCallback(() => setActiveStep('settings'), []); + + const secondaryButton = React.useMemo(() => { + if (activeStep !== 'members') { + return null; + } + + return ( + + ); + }, [activeStep, onClickBack]); + return ( - +
- -
- - - - -
+ {modalContent} + {errorMessage}
); diff --git a/web/theme.css b/web/theme.css --- a/web/theme.css +++ b/web/theme.css @@ -182,10 +182,6 @@ --inline-engagement-bg: var(--shades-black-60); --inline-engagement-bg-hover: var(--shades-black-75); --inline-engagement-color: var(--fg); - --compose-subchannel-header-fg: var(--shades-black-50); - --compose-subchannel-header-bg: var(--shades-black-75); - --compose-subchannel-label-color: var(--shades-black-50); - --compose-subchannel-mark-color: var(--violet-light-100); --enum-option-icon-color: var(--violet-dark-100); --show-password-bg-hover: var(--shades-black-60); --typeahead-overlay-light: var(--shades-black-75);