Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
f64cc1f
Fix ballot question count refresh after publish
tripledoublev Apr 12, 2026
e255573
Add visual system token foundation
tripledoublev Apr 13, 2026
b7261a6
Refine typography and button styling
tripledoublev Apr 13, 2026
24a227c
Refine navbar and footer shell styling
tripledoublev Apr 13, 2026
8141103
Unify shared card and search surfaces
tripledoublev Apr 13, 2026
96c8bc3
Adopt visual tokens in bill and ballot question detail surfaces
tripledoublev Apr 13, 2026
a961342
Polish visual token adoption
tripledoublev Apr 13, 2026
2fd44f6
Tighten navbar and footer follow-up styling
tripledoublev Apr 13, 2026
83f57e8
Type jest.fn mocks with rest parameter in BallotQuestionDetails test
tripledoublev Apr 14, 2026
2c9666b
Consolidate design tokens into a single SCSS source of truth
tripledoublev Apr 14, 2026
77d6183
Migrate ballot-question styles to shared maple utility layer
tripledoublev Apr 14, 2026
106d850
Clean up token layer and normalize hardcoded values
tripledoublev Apr 14, 2026
077b805
Emit missing design tokens to :root and fix hardcoded color
tripledoublev Apr 14, 2026
6f88a35
Align ballot question status model to 4-state lifecycle
tripledoublev Apr 15, 2026
d1bba30
Strengthen token foundation in bootstrap.scss and globals.css
tripledoublev Apr 15, 2026
bac7b3a
Replace hardcoded hex values with design tokens across components
tripledoublev Apr 15, 2026
1338a67
Update tests to use current ballot question status values
tripledoublev Apr 15, 2026
4009c62
Run prettier on bootstrap.scss
tripledoublev Apr 15, 2026
c641457
Add typography tokens to bootstrap.scss
tripledoublev Apr 15, 2026
2a99b27
Adopt typography tokens in BrowseBallotQuestions and StyledNewsfeedCo…
tripledoublev Apr 15, 2026
38a9b71
Normalize non-standard spacing values to tokens
tripledoublev Apr 15, 2026
848c670
Add Storybook stories for ballot questions, dashboard, and hearing
tripledoublev Apr 15, 2026
3b8ba36
Replace remaining hardcoded hex values with design tokens
tripledoublev Apr 15, 2026
9a2b296
Tokenize In The News nav styles
tripledoublev Apr 15, 2026
a810140
Fix HearingSidebar story props to match component interface
tripledoublev Apr 15, 2026
fa6f9ce
Replace final hardcoded color literals with design tokens
tripledoublev Apr 15, 2026
7c6577f
style: fix formatting in AnnouncementBanner and MoreButton
tripledoublev Apr 15, 2026
292ac8c
Fix ballot question integration fixture status value
tripledoublev Apr 15, 2026
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
6 changes: 5 additions & 1 deletion components/AnnouncementBanner/AnnouncementBanner.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,11 @@ function AnnouncementBanner({
>
<FontAwesomeIcon
icon={faXmark}
style={{ color: "white", fontSize: "18px", paddingRight: "8px" }}
style={{
color: "var(--maple-text-inverse)",
fontSize: "18px",
paddingRight: "8px"
}}
/>
</button>

Expand Down
2 changes: 1 addition & 1 deletion components/AnnouncementBanner/TranscriptAnnouncement.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ function TranscriptAnnouncement() {
{t("announcement.headingBody")}
<br />
{t("announcement.description")}{" "}
<a href="/hearings" style={{ color: "white" }}>
<a href="/hearings" style={{ color: "var(--maple-text-inverse)" }}>
{t("announcement.link")}
</a>
</span>
Expand Down
6 changes: 3 additions & 3 deletions components/BillStatusCard/BillStatusCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ const HandleBranchStyle = (branchStyle: string) => {
var returnStyle
switch (branchStyle) {
case "HOUSE":
returnStyle = { backgroundColor: "#1a3185" }
returnStyle = { backgroundColor: "var(--maple-brand-primary)" }
break
case "SENATE":
returnStyle = { backgroundColor: "#A92929" }
returnStyle = { backgroundColor: "var(--maple-brand-senate)" }
break
default:
returnStyle = {
Expand Down Expand Up @@ -102,7 +102,7 @@ const ScrollStyle = styled.div`

/* Handle */
::-webkit-scrollbar-thumb {
background: #d9d9d9;
background: var(--maple-border-default);
border-radius: 10px;
}
`
13 changes: 11 additions & 2 deletions components/Card/Card.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,18 @@
import { ReactElement, useState } from "react"
import CardBootstrap from "react-bootstrap/Card"
import styled from "styled-components"
import { CardListItems, ListItem } from "./CardListItem"
import { CardTitle } from "./CardTitle"
import { SeeMore } from "./SeeMore"

const SurfaceCard = styled(CardBootstrap)`
background-color: var(--maple-surface-base);
border: 1px solid var(--maple-surface-border);
border-radius: var(--maple-radius-lg);
box-shadow: var(--maple-shadow-sm);
overflow: hidden;
`

interface CardItem {
billName: string
billNameElement?: ReactElement | undefined
Expand Down Expand Up @@ -92,13 +101,13 @@ export const Card = (CardProps: CardProps) => {
const shown = showAll ? allItems : allItems.slice(0, initialRowCount)

return (
<CardBootstrap className={`bg-white overflow-hidden rounded-3`}>
<SurfaceCard className={className}>
{headerContent}
{<CardListItems items={shown} />}
{bodyContent}
{allItems.length > initialRowCount && (
<SeeMore onClick={handleSeeMoreClick} />
)}
</CardBootstrap>
</SurfaceCard>
)
}
4 changes: 2 additions & 2 deletions components/EditProfilePage/StyledEditProfileComponents.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export const StyledTabNav = styled(Nav).attrs(props => ({
color: var(--bs-dark);
.nav-link.active {
color: #c71e32;
color: var(--maple-brand-danger);
}
.nav-link {
Expand Down Expand Up @@ -53,7 +53,7 @@ export const TabNavLink = styled(Nav.Link).attrs(props => ({
className: `rounded-top m-0 p-0 ${props.className}`
}))`
&.active {
color: #c71e32;
color: var(--maple-brand-danger);
}
`

Expand Down
44 changes: 31 additions & 13 deletions components/Footer/Footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,37 +24,37 @@ export type PageFooterProps = {
const TextHeader = styled.h6`
font-size: 1rem;
font-weight: bold;
color: #fff;
color: var(--maple-text-inverse);
padding: 0.5rem 1rem 0 0;
margin: 0;
`

const BrowseHeader = styled(NavLink)`
font-size: 1rem;
color: #fff;
color: var(--maple-text-inverse);
padding: 0.5rem 1rem 0 0;
margin: 0 0 10px 0;

@media (max-width: 768px) {
padding-bottom: 0.6rem;
border-bottom: solid 1.5px rgba(255, 255, 255, 0.75);
border-bottom: solid 1.5px var(--maple-border-inverse-soft);
margin: 0;
}

&:hover {
color: white;
color: var(--maple-text-inverse);
text-decoration: underline 1.5px;
}
`

const StyledInternalLink = styled(NavLink)`
color: rgba(255, 255, 255, 0.55);
color: var(--maple-text-inverse-muted);
letter-spacing: -0.63px;
padding-top: 4;
margin: 5px 0;

&:hover {
color: white;
color: var(--maple-text-inverse);
text-decoration: none;
}
`
Expand All @@ -64,13 +64,19 @@ function MapleContainer({ className }: { className?: string }) {
return (
<div style={{ maxWidth: "220px" }} className={className}>
<Row style={{ textAlign: "center" }}>
<p style={{ fontSize: "1em", color: "#fff" }}>{t("headers.follow")}</p>
<p style={{ fontSize: "1em", color: "var(--maple-text-inverse)" }}>
{t("headers.follow")}
</p>
</Row>
<Row style={{ justifyContent: "center" }}>
<Col style={{ display: "flex", justifyContent: "center" }}>
<Button
variant="light"
style={{ borderRadius: 50, padding: 8, margin: 5 }}
style={{
borderRadius: "var(--maple-radius-pill)",
padding: "var(--maple-space-md)",
margin: "var(--maple-space-sm)"
}}
href="https://twitter.com/MapleTestimony"
target="_blank"
rel="noopener noreferrer"
Expand All @@ -85,7 +91,11 @@ function MapleContainer({ className }: { className?: string }) {
<Button
variant="light"
href="https://www.instagram.com/mapletestimony/?hl=en"
style={{ borderRadius: 50, padding: 8, margin: 5 }}
style={{
borderRadius: "var(--maple-radius-pill)",
padding: "var(--maple-space-md)",
margin: "var(--maple-space-sm)"
}}
target="_blank"
rel="noopener noreferrer"
>
Expand All @@ -98,7 +108,11 @@ function MapleContainer({ className }: { className?: string }) {
</Button>
<Button
variant="light"
style={{ borderRadius: 50, padding: 8, margin: 5 }}
style={{
borderRadius: "var(--maple-radius-pill)",
padding: "var(--maple-space-md)",
margin: "var(--maple-space-sm)"
}}
href="https://www.linkedin.com/company/maple-testimony"
target="_blank"
rel="noopener noreferrer"
Expand Down Expand Up @@ -236,7 +250,8 @@ const PageFooter = (props: PageFooterProps) => {
return (
<FooterContainer
fluid
className="bg-black d-flex flex-wrap flex-column-reverse flex-md-row align-items-center align-items-md-stretch p-2 p-md-5"
className="d-flex flex-wrap flex-column-reverse flex-md-row align-items-center align-items-md-stretch p-2 p-md-5"
style={{ backgroundColor: "var(--maple-brand-dark)" }}
>
<Navbar
variant="dark"
Expand Down Expand Up @@ -282,12 +297,15 @@ const PageFooter = (props: PageFooterProps) => {
</Col>
</div>
<MapleContainer className={`col-auto order-md-2 justify-self-end `} />
<div className={`col-12 order-md-3 text-center text-md-start text-white`}>
<div
className={`col-12 order-md-3 text-center text-md-start`}
style={{ color: "var(--maple-text-inverse)" }}
>
{t("legal.disclaimer")}
{" - "}
<a
href={NEWSLETTER_SIGNUP_URL}
style={{ color: "white" }}
style={{ color: "var(--maple-text-inverse)" }}
target="_blank"
rel="noopener noreferrer"
>
Expand Down
4 changes: 2 additions & 2 deletions components/Footer/FooterContainer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export const FooterContainer = styled(Container)`
display: flex;
flex-grow: 1;
justify-content: space-between;
color: (var(--bs-white));
color: var(--maple-text-inverse);
}
.navbar-dark .navbar-nav .nav-link {
Expand Down Expand Up @@ -49,7 +49,7 @@ export const FooterContainer = styled(Container)`
}
.dropdown-menu.show {
background-color: #000;
background-color: var(--maple-brand-dark);
transition-timing-function: ease;
}
`
2 changes: 1 addition & 1 deletion components/HeroHeader/HeroHeader.module.css
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.container {
color: white;
background-color: #1a3185;
background-color: var(--maple-brand-primary);
overflow: hidden;
}

Expand Down
6 changes: 3 additions & 3 deletions components/InTheNews/NewsCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export const NewsCard = ({ newsItem }: NewsCardProps) => {
<div
className="d-flex flex-row flex-fill gap-5 p-4"
style={{
backgroundColor: "#F6F7FF",
backgroundColor: "var(--maple-color-blue-subtle-bg)",
borderTop: "6px solid var(--bs-secondary)"
}}
>
Expand All @@ -33,7 +33,7 @@ export const NewsCard = ({ newsItem }: NewsCardProps) => {
style={{
width: "1px",
height: "1em",
backgroundColor: "black",
backgroundColor: "var(--maple-border-default)",
alignSelf: "center"
}}
/>
Expand All @@ -57,7 +57,7 @@ export const NewsCard = ({ newsItem }: NewsCardProps) => {
href={newsItem.url}
target="_blank"
rel="noopener noreferrer"
style={{ color: "#1587D3", fontWeight: 800 }}
style={{ color: "var(--maple-brand-primary)", fontWeight: 800 }}
>
{t("readMoreButton")}
<ArrowForward />
Expand Down
48 changes: 21 additions & 27 deletions components/Navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,30 +29,17 @@ import {
NavbarLinkWhyUse
} from "./NavbarComponents"

const MobileCollapse = styled(Navbar.Collapse)`
background-color: var(--maple-brand-primary);
`

export const MainNavbar: React.FC<React.PropsWithChildren<unknown>> = () => {
const isMobile = useMediaQuery("(max-width: 768px)")

return <>{isMobile ? <MobileNav /> : <DesktopNav />}</>
}

const MobileNav: React.FC<React.PropsWithChildren<unknown>> = () => {
const BlackCollapse = styled(() => {
return (
<Navbar.Collapse id="basic-navbar-nav" className="bg-black mt-2 ps-4">
{/* while MAPLE is trying to do away with inline styling, *
* both styled-components and bootstrap classes have been *
* ignoring height properties for some reason */}
<div style={{ height: "100vh" }}>
{whichMenu == "site" ? <SiteLinks /> : <ProfileLinks />}
</div>
</Navbar.Collapse>
)
})`
.bg-black {
background-color: black;
}
`

const ProfileLinks = () => {
return (
<Nav className="my-4 d-flex align-items-start">
Expand Down Expand Up @@ -134,8 +121,8 @@ const MobileNav: React.FC<React.PropsWithChildren<unknown>> = () => {

return (
<Navbar
bg="secondary"
className={`w-100 ${isExpanded ? "pb-0" : ""}`}
style={{ backgroundColor: "var(--maple-brand-primary)" }}
data-bs-theme="dark"
expand="lg"
expanded={isExpanded}
Expand Down Expand Up @@ -184,7 +171,10 @@ const MobileNav: React.FC<React.PropsWithChildren<unknown>> = () => {
}
className="mobile-nav-trigger"
>
<span className="p-0 text-white d-inline-flex">
<span
className="p-0 d-inline-flex"
style={{ color: "var(--maple-text-inverse)" }}
>
{isExpanded && whichMenu == "profile" ? (
<Image
src="/Union.svg"
Expand All @@ -203,7 +193,14 @@ const MobileNav: React.FC<React.PropsWithChildren<unknown>> = () => {
)}
</Col>

<BlackCollapse />
<MobileCollapse id="basic-navbar-nav" className="mt-2 ps-4">
{/* while MAPLE is trying to do away with inline styling, *
* both styled-components and bootstrap classes have been *
* ignoring height properties for some reason */}
<div style={{ height: "100vh" }}>
{whichMenu == "site" ? <SiteLinks /> : <ProfileLinks />}
</div>
</MobileCollapse>
</Navbar>
)
}
Expand All @@ -215,7 +212,8 @@ const DesktopNav: React.FC<React.PropsWithChildren<unknown>> = () => {
return (
<Container
fluid
className={`desktop-navbar bg-secondary d-flex py-2 sticky-top justify-content-end gap-2`}
className={`desktop-navbar d-flex py-2 sticky-top justify-content-end gap-2`}
style={{ backgroundColor: "var(--maple-brand-primary)" }}
>
<div className={`me-auto`}>
<NavbarLinkLogo />
Expand Down Expand Up @@ -251,9 +249,7 @@ const DesktopNav: React.FC<React.PropsWithChildren<unknown>> = () => {

<div className={`align-self-center px-2`}>
<Dropdown>
<Dropdown.Toggle
className={`desktop-navbar-dropdown btn-secondary text-white`}
>
<Dropdown.Toggle className={`desktop-navbar-dropdown btn-secondary`}>
{t("about")}
</Dropdown.Toggle>
<Dropdown.Menu>
Expand All @@ -269,9 +265,7 @@ const DesktopNav: React.FC<React.PropsWithChildren<unknown>> = () => {

<div className={`align-self-center px-2`}>
<Dropdown>
<Dropdown.Toggle
className={`desktop-navbar-dropdown btn-secondary text-white`}
>
<Dropdown.Toggle className={`desktop-navbar-dropdown btn-secondary`}>
{t("learn")}
</Dropdown.Toggle>
<Dropdown.Menu>
Expand Down
Loading
Loading