Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 82 additions & 50 deletions src/js/components/Navigation/OfficeBannerAboveHeader.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { useHistory } from 'react-router-dom';
import styled from 'styled-components';
import lookupPageNameAndPageTypeDict, { getPageDetails } from '../../utils/lookupPageNameAndPageTypeDict';
import isMobileScreenSize, { isTablet } from '../../common/utils/isMobileScreenSize';
import isMobile from '../../utils/isMobile';
import normalizedImagePath from '../../common/utils/normalizedImagePath';
import VoterStore from '../../stores/VoterStore';
import AppObservableStore, { messageService } from '../../common/stores/AppObservableStore';
Expand Down Expand Up @@ -53,40 +54,66 @@ export default function OfficeBannerAboveHeader() {
};
}, [onAppObservableStoreChange]);

return (
<OfficeBannerAboveHeaderContainer>
<BannerTextContainer>
<div style={{display: "flex", gap: "10px"}}>
<WeVoteLogo src={normalizedImagePath(chosenSiteLogoUrl)} className="u-show-desktop-tablet" height="36" width="36" />
<BannerIntroTextMobile className="u-show-mobile">Welcome to WeVote, your personalized voter guide!</BannerIntroTextMobile>
<BannerIntroTextDesktop className="u-show-desktop-tablet">Welcome to WeVote, your personalized voter guide:</BannerIntroTextDesktop>
</div>
<BannerElement>
{/*{' '}*/}
<BannerElementTitle>&#x1F5F3;&ensp; VOTE YOUR VALUES</BannerElementTitle>
<BannerElementText>Get personalized ballot recommendations based on your interests and trusted connections.</BannerElementText>
</BannerElement>
<BannerElement>
<BannerElementTitle>&#x1F91D;&ensp; SHARE & MOBILIZE</BannerElementTitle>
<BannerElementText>Choose the candidates you support or oppose, and tell your friends.</BannerElementText>
</BannerElement>
<BannerElement>
<BannerElementTitle>&#x1F50D;&ensp; SIMPLIFY VOTING</BannerElementTitle>
<BannerElementText>Use clear, nonpartisan tools to understand your ballot and take action confidently.</BannerElementText>
</BannerElement>
</BannerTextContainer>
<VerticalCenter className="u-show-desktop-tablet"><VerticalLine/></VerticalCenter>
<ButtonHolder>
<BallotButton onClick={handleBallotButtonClick}>
<BannerIntroTextMobile className="u-show-mobile">View your full ballot</BannerIntroTextMobile>
<BannerIntroTextDesktop className="u-show-desktop-tablet">View your full ballot to get started</BannerIntroTextDesktop>
</BallotButton>
</ButtonHolder>
<ButtonHolder>
return !isMobile() || !isMobileScreenSize() || isTablet() ? (
<OfficeBannerAboveHeaderContainer>
<OfficeBannerMainColumn>
<BannerTextContainer>
<div style={{display: "flex", gap: "10px"}}>
<WeVoteLogo src={normalizedImagePath(chosenSiteLogoUrl)} className="u-show-desktop-tablet" height="36" width="36" />
<BannerIntroTextDesktop className="u-show-desktop-tablet">Welcome to WeVote, your personalized voter guide:</BannerIntroTextDesktop>
</div>
<BannerElement>
{/*{' '}*/}
<BannerElementTitle><BannerEmoji>&#x1F5F3;&ensp;</BannerEmoji> VOTE YOUR VALUES</BannerElementTitle>
<BannerElementText>Get personalized ballot recommendations based on your interests and trusted connections.</BannerElementText>
</BannerElement>
<BannerElement>
<BannerElementTitle><BannerEmoji>&#x1F91D;&ensp;</BannerEmoji> SHARE & MOBILIZE</BannerElementTitle>
<BannerElementText>Choose the candidates you support or oppose, and tell your friends.</BannerElementText>
</BannerElement>
<BannerElement>
<BannerElementTitle><BannerEmoji>&#x1F50D;&ensp;</BannerEmoji> SIMPLIFY VOTING</BannerElementTitle>
<BannerElementText>Use clear, nonpartisan tools to understand your ballot and take action confidently.</BannerElementText>
</BannerElement>
</BannerTextContainer>
</OfficeBannerMainColumn>
<VerticalCenter className="u-show-desktop-tablet"><VerticalLine/></VerticalCenter>
<ButtonHolder>
<BallotButton onClick={handleBallotButtonClick}>
<BannerIntroTextDesktop className="u-show-desktop-tablet">View your full ballot to get started</BannerIntroTextDesktop>
</BallotButton>
</ButtonHolder>
<CloseButton id="closeOfficeBanner" onClick={() => closeEditBar('closeOfficeBanner')}>✕</CloseButton>
</ButtonHolder>
</OfficeBannerAboveHeaderContainer>
);
</OfficeBannerAboveHeaderContainer>
) : (
<OfficeBannerAboveHeaderContainer>
<OfficeBannerMainColumn>
<BannerTextContainer>
<div style={{display: "flex", gap: "10px"}}>
<BannerIntroTextMobile className="u-show-mobile">Welcome to WeVote, your personalized voter guide!</BannerIntroTextMobile>
</div>
<BannerElement>
<BannerElementTitle><BannerEmoji>&#x1F5F3;&ensp;</BannerEmoji> VOTE YOUR VALUES</BannerElementTitle>
<BannerElementText>Get personalized ballot recommendations.</BannerElementText>
</BannerElement>
<BannerElement>
<BannerElementTitle><BannerEmoji>&#x1F91D;&ensp;</BannerEmoji> SHARE & MOBILIZE</BannerElementTitle>
<BannerElementText>Choose the candidates you support or oppose.</BannerElementText>
</BannerElement>
<BannerElement>
<BannerElementTitle><BannerEmoji>&#x1F50D;&ensp;</BannerEmoji> SIMPLIFY VOTING</BannerElementTitle>
<BannerElementText>Use nonpartisan tools to understand your ballot.</BannerElementText>
</BannerElement>
</BannerTextContainer>
<ButtonHolder>
<BallotButton onClick={handleBallotButtonClick}>
<BannerIntroTextMobile className="u-show-mobile">View your full ballot</BannerIntroTextMobile>
</BallotButton>
</ButtonHolder>
</OfficeBannerMainColumn>
<CloseButton id="closeOfficeBanner" className="u-show-mobile" onClick={() => closeEditBar('closeOfficeBanner')}>✕</CloseButton>
</OfficeBannerAboveHeaderContainer>
);
}

const BallotButton = styled.button`
Expand All @@ -97,7 +124,7 @@ const BallotButton = styled.button`
cursor: pointer;
font-weight: 500;
padding: 8px 16px;
margin-top: 32px;
margin: 8px 16px;

@media (max-width: 800px) {
margin-top: 8px;
Expand All @@ -116,11 +143,15 @@ const BannerElementText = styled.div`
`;

const BannerElementTitle = styled.div`
font-weight: 500;
margin-bottom: 2px;
margin-left: 1em;
display: flex;
align-items: center;
font-weight: 600;
`;

const BannerEmoji = styled.div`
font-size: 22px;
`

const BannerIntroTextDesktop = styled('span')`
font-size: 18px;
font-weight: 500;
Expand All @@ -133,14 +164,16 @@ const BannerIntroTextMobile = styled('span')`

const BannerTextContainer = styled.div`
display: flex;
gap: 12px;
gap: 4px;
flex-wrap: wrap;
flex-direction: column;
align-items: flex-start;
padding-bottom: 12px;
`;

const ButtonHolder = styled.div`
display: flex;
align-items: center;
`;

const CloseButton = styled.button`
Expand All @@ -149,32 +182,31 @@ const CloseButton = styled.button`
color: ${DesignTokenColors.whiteUI};
cursor: pointer;
font-size: 20px;
margin-left: 16px;
// margin-left: 16px;
padding: 8px 0px;

display: flex;
flex-direction: row;
justify-content: center;

@media (max-width: 600px) {
order: 2;
margin-left: 8px;
}
`;

const OfficeBannerAboveHeaderContainer = styled.div`
${() => (!isMobileScreenSize() || isTablet() ? '' : 'flex-direction: column;')};
${() => (!isMobileScreenSize() || isTablet() ? '' : 'align-items: center;')};
background: ${DesignTokenColors.secondary800};
color: ${DesignTokenColors.whiteUI};
display: flex;
font-size: 14px;
max-width: 960px;
margin-left: -16px;
margin-right: -16px;
padding: 8px 16px;
width: 100vw;
`;

const OfficeBannerMainColumn = styled.div`
display: flex;
align-items: center;
flex-direction: column;
font-size: 14px;
max-width: 960px;
padding: 8px 8px;
`

const VerticalCenter = styled.div`
margin-inline: 2%;
display: flex;
Expand Down