diff --git a/src/PolicyEngine.jsx b/src/PolicyEngine.jsx index 91b8627a3..8acf72a42 100644 --- a/src/PolicyEngine.jsx +++ b/src/PolicyEngine.jsx @@ -3,6 +3,7 @@ import Research from "./pages/Research"; import About from "./pages/About"; import Jobs from "./pages/Jobs"; import Supporters from "./pages/Supporters"; +import Users from "./pages/Users"; import { Navigate, Outlet, @@ -324,6 +325,7 @@ export default function PolicyEngine() { } /> } /> } /> + } /> } /> } /> } /> diff --git a/src/data/users.js b/src/data/users.js new file mode 100644 index 000000000..a746290c5 --- /dev/null +++ b/src/data/users.js @@ -0,0 +1,333 @@ +// User organizations that have used PolicyEngine for policy analysis and research + +// Import logos from users directory +import NiskanenCenter from "../images/logos/users/niskanen-center.png"; +import JEC from "../images/logos/users/jec.png"; +import NBER from "../images/logos/users/nber.png"; +import Georgetown from "../images/logos/users/georgetown.png"; +import UMichigan from "../images/logos/users/umich.png"; +import PN3Policy from "../images/logos/users/pn3policy.png"; +import MCA from "../images/logos/users/mca.jpg"; +import ArnoldVentures from "../images/logos/users/arnold-ventures.svg"; +import ImagineLA from "../images/logos/users/imagine-la.png"; + +// Import all logos from orgs directory (shown on homepage) +import Centre from "../images/logos/orgs/centre.png"; +import CPS from "../images/logos/orgs/cps.png"; +import GPEW from "../images/logos/orgs/gpew.png"; +import LiberalParty from "../images/logos/orgs/liberal-party.jpeg"; +import SMF from "../images/logos/orgs/smf.png"; +import UBILabs from "../images/logos/orgs/ubilabs.png"; +import UKEU from "../images/logos/orgs/ukeu.svg"; +import ASI from "../images/logos/orgs/asi.webp"; +import CEC from "../images/logos/orgs/cec.svg"; +import CGO from "../images/logos/orgs/cgo.jpg"; +import EPMT from "../images/logos/orgs/epmt.jpg"; +import F4GI from "../images/logos/orgs/f4gi.jpg"; +import MFB from "../images/logos/orgs/myfriendben.png"; +import UBICenter from "../images/logos/orgs/ubicenter.png"; +import MothersOutreachNetwork from "../images/logos/orgs/mothers-outreach-network.png"; +import NIESR from "../images/logos/orgs/niesr.jpeg"; +import GaryCommunityVentures from "../images/logos/orgs/gary-community-ventures.png"; +import ColoradoFiscalInstitute from "../images/logos/users/colorado-fiscal-institute.webp"; +import Warwick from "../images/logos/users/warwick.png"; +import KCL from "../images/logos/users/kcl.png"; +import IEA from "../images/logos/users/iea.png"; +import PSL from "../images/logos/users/psl.svg"; +import BeeckCenter from "../images/logos/users/beeck-center.png"; +import BetterGovernmentLab from "../images/logos/users/better-government-lab.png"; + +export const users = [ + // US Government + { + id: "joint-economic-committee", + name: "Joint Economic Committee", + logo: JEC, + website: "https://www.jec.senate.gov/", + description: "A bipartisan committee of the U.S. Congress", + category: "government", + }, + + // US Think Tanks + { + id: "niskanen-center", + name: "Niskanen Center", + logo: NiskanenCenter, + website: "https://www.niskanencenter.org/", + description: + "A center-right think tank focused on pragmatic policy solutions", + category: "think-tank", + }, + + // US Research + { + id: "nber", + name: "National Bureau of Economic Research", + logo: NBER, + website: "https://www.nber.org/", + description: "America's leading nonprofit economic research organization", + category: "research", + }, + { + id: "prenatal-to-3-policy-impact-center", + name: "Prenatal-to-3 Policy Impact Center", + logo: PN3Policy, + website: "https://pn3policy.org/", + description: "Research center focused on early childhood policy", + category: "research", + }, + { + id: "ubi-center", + name: "UBI Center", + logo: UBICenter, + website: "https://ubicenter.org/", + description: "Research hub for universal basic income analysis", + category: "research", + }, + { + id: "center-growth-opportunity", + name: "Center for Growth and Opportunity", + logo: CGO, + website: "https://www.thecgo.org/", + description: "University research center focused on economic policy", + category: "research", + }, + + // US Academic + { + id: "georgetown", + name: "Georgetown University", + logo: Georgetown, + website: "https://www.georgetown.edu/", + description: "Leading research university with expertise in public policy", + category: "academic", + }, + { + id: "university-michigan", + name: "University of Michigan", + logo: UMichigan, + website: "https://umich.edu/", + description: "Public research university with renowned economics programs", + category: "academic", + }, + + // US Advocacy + { + id: "maryland-child-alliance", + name: "Maryland Child Alliance", + logo: MCA, + website: "https://www.marylandchildalliance.org/", + description: "Advocacy organization for children and families in Maryland", + category: "advocacy", + }, + { + id: "fund-guaranteed-income", + name: "Fund for Guaranteed Income", + logo: F4GI, + website: "https://f4gi.org/", + description: "Organization advancing guaranteed income initiatives", + category: "advocacy", + }, + { + id: "mothers-outreach-network", + name: "Mothers Outreach Network", + logo: MothersOutreachNetwork, + website: "https://mothersoutreachnetwork.org/", + description: "Supporting mothers and families through policy advocacy", + category: "advocacy", + }, + { + id: "end-poverty-make-trillions", + name: "End Poverty Make Trillions", + logo: EPMT, + website: "https://endpovertymaketrillions.com/", + description: "Advocacy for policies to end poverty through economic growth", + category: "advocacy", + }, + { + id: "myfriendben", + name: "MyFriendBen", + logo: MFB, + website: "https://myfriendben.org/", + description: + "Benefits eligibility screener helping families access programs", + category: "advocacy", + }, + { + id: "arnold-ventures", + name: "Arnold Ventures", + logo: ArnoldVentures, + website: "https://www.arnoldventures.org/", + description: + "Philanthropy tackling pressing problems with evidence and innovation", + category: "advocacy", + }, + { + id: "imagine-la", + name: "Imagine LA", + logo: ImagineLA, + website: "https://www.imaginela.org/", + description: "Ending the cycle of family poverty and homelessness", + category: "advocacy", + }, + + // UK Think Tanks + { + id: "centre-think-tank", + name: "Centre Think Tank", + logo: Centre, + website: "https://centrethinktank.co.uk/", + description: "Independent think tank focused on political reform", + category: "think-tank", + }, + { + id: "social-market-foundation", + name: "Social Market Foundation", + logo: SMF, + website: "https://www.smf.co.uk/", + description: "Cross-party think tank for evidence-based public policy", + category: "think-tank", + }, + { + id: "centre-for-policy-studies", + name: "Centre for Policy Studies", + logo: CPS, + website: "https://cps.org.uk/", + description: "Centre-right think tank promoting free market policies", + category: "think-tank", + }, + { + id: "adam-smith-institute", + name: "Adam Smith Institute", + logo: ASI, + website: "https://www.adamsmith.org/", + description: "Libertarian think tank advocating free market policies", + category: "think-tank", + }, + { + id: "institute-economic-affairs", + name: "Institute of Economic Affairs", + logo: IEA, + website: "https://iea.org.uk/", + description: "UK's original free market think tank, founded in 1955", + category: "think-tank", + }, + + // UK Research + { + id: "uk-in-a-changing-europe", + name: "UK in a Changing Europe", + logo: UKEU, + website: "https://ukandeu.ac.uk/", + description: "Research on UK-EU relations and UK governance", + category: "research", + }, + { + id: "niesr-uk", + name: "National Institute of Economic and Social Research", + logo: NIESR, + website: "https://www.niesr.ac.uk/", + description: + "Britain's longest established independent economic research institute", + category: "research", + }, + { + id: "ubilabs", + name: "UBILabs", + logo: UBILabs, + website: "https://www.ubilabsnetwork.org/", + description: "Network researching universal basic income", + category: "research", + }, + { + id: "policy-simulation-library", + name: "Policy Simulation Library", + logo: PSL, + website: "https://pslmodels.org/", + description: "Open source models for public policy analysis", + category: "research", + }, + + // UK Political/Advocacy + { + id: "green-party-england-wales", + name: "Green Party of England and Wales", + logo: GPEW, + website: "https://www.greenparty.org.uk/", + description: "Political party advocating environmental and social justice", + category: "advocacy", + }, + { + id: "liberal-party", + name: "The Liberal Party", + logo: LiberalParty, + website: "https://liberal.org.uk/", + description: "Political party promoting liberal values and policies", + category: "advocacy", + }, + { + id: "citizens-economic-council", + name: "Citizens' Economic Council", + logo: CEC, + website: "https://citizensecon.org.uk/", + description: "Promoting citizen engagement in economic policy", + category: "advocacy", + }, + { + id: "warwick-university", + name: "University of Warwick", + logo: Warwick, + website: "https://warwick.ac.uk/", + description: "Leading UK research university", + category: "academic", + }, + { + id: "kings-college-london", + name: "King's College London", + logo: KCL, + website: "https://www.kcl.ac.uk/", + description: "World-renowned research university in London", + category: "academic", + }, + { + id: "beeck-center-georgetown", + name: "Beeck Center for Social Impact + Innovation", + logo: BeeckCenter, + website: "https://beeckcenter.georgetown.edu/", + description: "Georgetown center for data, design, technology, and policy", + category: "academic", + }, + { + id: "better-government-lab", + name: "Better Government Lab", + logo: BetterGovernmentLab, + website: "https://www.bettergovernmentlab.org/", + description: + "Georgetown-Michigan research lab for government effectiveness", + category: "academic", + }, + { + id: "gary-community-ventures", + name: "Gary Community Ventures", + logo: GaryCommunityVentures, + website: "https://garycommunity.org/", + description: "Colorado-based venture philanthropy organization", + category: "advocacy", + }, + { + id: "colorado-fiscal-institute", + name: "Colorado Fiscal Institute", + logo: ColoradoFiscalInstitute, + website: "https://coloradofiscal.org/", + description: "Advancing equitable fiscal and economic policies in Colorado", + category: "think-tank", + }, +]; + +export const userCategories = { + government: "Government Agencies", + "think-tank": "Think Tanks", + research: "Research Organizations", + academic: "Academic Institutions", + advocacy: "Advocacy Organizations", +}; diff --git a/src/images/logos/users/arnold-ventures.svg b/src/images/logos/users/arnold-ventures.svg new file mode 100644 index 000000000..9cf2bafb6 --- /dev/null +++ b/src/images/logos/users/arnold-ventures.svg @@ -0,0 +1,8 @@ + diff --git a/src/images/logos/users/beeck-center.png b/src/images/logos/users/beeck-center.png new file mode 100644 index 000000000..c90b1940d Binary files /dev/null and b/src/images/logos/users/beeck-center.png differ diff --git a/src/images/logos/users/better-government-lab.png b/src/images/logos/users/better-government-lab.png new file mode 100644 index 000000000..eb55c6901 Binary files /dev/null and b/src/images/logos/users/better-government-lab.png differ diff --git a/src/images/logos/users/colorado-fiscal-institute.webp b/src/images/logos/users/colorado-fiscal-institute.webp new file mode 100644 index 000000000..7544055f3 Binary files /dev/null and b/src/images/logos/users/colorado-fiscal-institute.webp differ diff --git a/src/images/logos/users/georgetown.png b/src/images/logos/users/georgetown.png new file mode 100644 index 000000000..a8dfbe8e8 Binary files /dev/null and b/src/images/logos/users/georgetown.png differ diff --git a/src/images/logos/users/iea.png b/src/images/logos/users/iea.png new file mode 100644 index 000000000..b804e768b Binary files /dev/null and b/src/images/logos/users/iea.png differ diff --git a/src/images/logos/users/imagine-la.png b/src/images/logos/users/imagine-la.png new file mode 100644 index 000000000..2efe21d46 Binary files /dev/null and b/src/images/logos/users/imagine-la.png differ diff --git a/src/images/logos/users/jec.png b/src/images/logos/users/jec.png new file mode 100644 index 000000000..26f52b68f Binary files /dev/null and b/src/images/logos/users/jec.png differ diff --git a/src/images/logos/users/kcl.png b/src/images/logos/users/kcl.png new file mode 100644 index 000000000..08933924f --- /dev/null +++ b/src/images/logos/users/kcl.png @@ -0,0 +1,6972 @@ + + + + + + + + + Page Not Found - 404 + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+ + + + +
+ +
+ + + +
+
+ +

Page not found...

+

Sorry, the page you were looking for has not been found.

+ + + +
+
+
+ +
+
+
+ + +
+

We're sorry, but the page or content that you requested could not be served. This may be because it does not exist on this website, or because of a technical error. + +

What you can do:

+ + + + + +

© 2024 King’s College London

+ + + +
+
+
+ + + + + + + + + + + + diff --git a/src/images/logos/users/mca.jpg b/src/images/logos/users/mca.jpg new file mode 100644 index 000000000..01deab83d Binary files /dev/null and b/src/images/logos/users/mca.jpg differ diff --git a/src/images/logos/users/nber.png b/src/images/logos/users/nber.png new file mode 100644 index 000000000..b7178a059 Binary files /dev/null and b/src/images/logos/users/nber.png differ diff --git a/src/images/logos/users/niskanen-center.png b/src/images/logos/users/niskanen-center.png new file mode 100644 index 000000000..3c5498b28 Binary files /dev/null and b/src/images/logos/users/niskanen-center.png differ diff --git a/src/images/logos/users/pn3policy.png b/src/images/logos/users/pn3policy.png new file mode 100644 index 000000000..87ec90383 Binary files /dev/null and b/src/images/logos/users/pn3policy.png differ diff --git a/src/images/logos/users/psl.svg b/src/images/logos/users/psl.svg new file mode 100644 index 000000000..2fc32b8b0 --- /dev/null +++ b/src/images/logos/users/psl.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/images/logos/users/umich.png b/src/images/logos/users/umich.png new file mode 100644 index 000000000..1adaf6a7f Binary files /dev/null and b/src/images/logos/users/umich.png differ diff --git a/src/images/logos/users/warwick.png b/src/images/logos/users/warwick.png new file mode 100644 index 000000000..06fe3e0a7 --- /dev/null +++ b/src/images/logos/users/warwick.png @@ -0,0 +1,589 @@ + + + + + + + + + +We're sorry, but the page you requested could not be found + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ Skip to main content + Skip to navigation + +
+ + +
+
+
+
+ +
+ + + + + + + + + + + + +
+ +
+
+ + + +
+
+ + +
+

+ + + + + + + The University of Warwick + +

+
+ +
+
+ +
+ + + + +
+ + +
+
+
+ + + +
+ + +
+

+ + + We're sorry, but the page you requested could not be found + + +

+
+
+ + + + +
+ + +
+
+ + + + +
+

What can I do next?

+ +

If you typed the address, make sure the spelling is correct.

+

If you clicked on a link, there may be a problem with that link which the owner of the page or + site needs to fix. You might want to let them know.

+

To find the page you're looking for, you can try the search box at the top right corner of this page. + Or you may find one of the following links helpful.

+ +
+ +
+

Getting help

+

If you can't find what you're looking for using the links above, or you think it's important to tell us + about this problem, then please contact the IT Services Helpdesk. + Please include in your message the address of the page you are trying to access (It can be found in the Location: + or Address: field at the top of your browser) and, if you clicked a link on another page, the address + of the page that the link was on.

+ + + + +
+ +
+ +
+ + +
+ + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/layout/Header.jsx b/src/layout/Header.jsx index 6a4e4917f..1dccc86f8 100644 --- a/src/layout/Header.jsx +++ b/src/layout/Header.jsx @@ -25,6 +25,7 @@ import { TeamOutlined, UserAddOutlined, BankOutlined, + UsergroupAddOutlined, } from "@ant-design/icons"; import { loginOptions, logoutOptions } from "../auth/authUtils"; import { Dropdown } from "antd"; @@ -71,6 +72,11 @@ export const ABOUT_DROPDOWN_LINKS = [ link: "about", icon: , }, + { + title: "Users", + link: "users", + icon: , + }, { title: "Careers", link: "jobs", diff --git a/src/layout/UserLogosHero.jsx b/src/layout/UserLogosHero.jsx new file mode 100644 index 000000000..f035b3ebe --- /dev/null +++ b/src/layout/UserLogosHero.jsx @@ -0,0 +1,144 @@ +import { users } from "../data/users"; +import style from "../style"; +import useDisplayCategory from "../hooks/useDisplayCategory"; +import { motion } from "framer-motion"; + +export default function UserLogosHero() { + const displayCategory = useDisplayCategory(); + const isMobile = displayCategory === "mobile"; + const isTablet = displayCategory === "tablet"; + + // Create multiple rows of logos for a collage effect + const logosPerRow = isMobile ? 5 : 8; + const logoRows = [ + users.slice(0, logosPerRow), + users.slice(logosPerRow, logosPerRow * 2), + users + .slice(logosPerRow * 2, users.length) + .concat(users.slice(0, logosPerRow - (users.length % logosPerRow))), + ]; + + const containerStyle = { + width: "100%", + height: isMobile ? "300px" : "400px", + position: "relative", + overflow: "hidden", + backgroundColor: style.colors.LIGHT_GRAY_98, + borderRadius: "8px", + marginBottom: "40px", + }; + + const overlayStyle = { + position: "absolute", + top: 0, + left: 0, + right: 0, + bottom: 0, + background: `linear-gradient(135deg, + rgba(46, 54, 80, 0.05) 0%, + rgba(57, 198, 192, 0.08) 50%, + rgba(46, 54, 80, 0.05) 100%)`, + pointerEvents: "none", + zIndex: 2, + }; + + const titleOverlayStyle = { + position: "absolute", + top: "50%", + left: "50%", + transform: "translate(-50%, -50%)", + zIndex: 3, + textAlign: "center", + width: "90%", + maxWidth: "800px", + }; + + const titleBackgroundStyle = { + backgroundColor: "rgba(255, 255, 255, 0.75)", + padding: isMobile ? "20px 15px" : "30px 40px", + borderRadius: "8px", + boxShadow: "0 4px 20px rgba(0, 0, 0, 0.08)", + backdropFilter: "blur(8px)", + }; + + const titleStyle = { + fontSize: isMobile ? "24px" : isTablet ? "32px" : "36px", + fontWeight: "bold", + color: style.colors.BLUE, + margin: "0 0 10px 0", + fontFamily: style.fonts.BODY_FONT, + }; + + const subtitleStyle = { + fontSize: isMobile ? "14px" : "16px", + color: style.colors.DARK_GRAY, + margin: 0, + fontFamily: style.fonts.BODY_FONT, + }; + + const rowStyle = (index) => ({ + display: "flex", + position: "absolute", + left: 0, + width: "200%", // Double width for seamless loop + top: `${index * 33.33}%`, + height: "33.33%", + alignItems: "center", + gap: isMobile ? "15px" : "30px", + opacity: 0.7, + filter: "grayscale(20%)", + }); + + const logoStyle = { + height: isMobile ? "50px" : "70px", + width: "auto", + maxWidth: isMobile ? "100px" : "140px", + objectFit: "contain", + filter: "brightness(1.1)", + }; + + return ( +
+ {/* Logo rows */} + {logoRows.map((row, rowIndex) => ( + + {/* Triple the row for seamless scrolling */} + {[...row, ...row, ...row].map((user, index) => ( + + ))} + + ))} + + {/* Gradient overlay */} +
+ + {/* Title overlay */} +
+
+

Trusted by Leading Organizations

+

+ From government agencies to academic institutions and advocacy + groups +

+
+
+
+ ); +} diff --git a/src/pages/Users.jsx b/src/pages/Users.jsx new file mode 100644 index 000000000..4750c47f2 --- /dev/null +++ b/src/pages/Users.jsx @@ -0,0 +1,180 @@ +import Header from "../layout/Header.jsx"; +import Footer from "../layout/Footer.jsx"; +import Section from "../layout/Section.jsx"; +import style from "../style/index.js"; +import PageHeader from "../layout/PageHeader.jsx"; +import { users, userCategories } from "../data/users.js"; +import useDisplayCategory from "../hooks/useDisplayCategory.js"; +import { Helmet } from "react-helmet"; +import UserLogosHero from "../layout/UserLogosHero.jsx"; + +export default function Users() { + // Group users by category + const usersByCategory = users.reduce((acc, user) => { + if (!acc[user.category]) { + acc[user.category] = []; + } + acc[user.category].push(user); + return acc; + }, {}); + + return ( + <> + + Our Users | PolicyEngine + + +
+
+ +

+ PolicyEngine is trusted by government agencies, think tanks, + universities, and advocacy organizations to provide rigorous policy + analysis and evidence-based research. +

+
+ + {/* Hero section with blended logos */} +
+ +
+ + {/* User categories */} + {Object.entries(userCategories).map(([categoryKey, categoryName]) => { + const categoryUsers = usersByCategory[categoryKey]; + if (!categoryUsers || categoryUsers.length === 0) return null; + + return ( +
+

+ {categoryName} +

+
+ {categoryUsers.map((user) => ( + + ))} +
+
+ ); + })} + +
+
+ + ); +} + +function UserCard({ user, inverted = false }) { + const displayCategory = useDisplayCategory(); + const isMobile = displayCategory === "mobile"; + + const cardStyle = { + display: "flex", + flexDirection: isMobile ? "column" : "row", + alignItems: isMobile ? "center" : "flex-start", + padding: "20px", + backgroundColor: inverted ? style.colors.BLUE : style.colors.WHITE, + border: inverted + ? `1px solid ${style.colors.LIGHT_BLUE}` + : `1px solid ${style.colors.LIGHT_GRAY}`, + borderRadius: "8px", + boxShadow: "0 2px 4px rgba(0,0,0,0.05)", + textAlign: isMobile ? "center" : "left", + }; + + const logoStyle = { + width: "120px", + height: "80px", + objectFit: "contain", + marginRight: isMobile ? 0 : "20px", + marginBottom: isMobile ? "15px" : 0, + }; + + const textStyle = { + color: inverted ? style.colors.WHITE : style.colors.BLACK, + }; + + return ( +
+ {user.logo && ( + + {`${user.name} + + )} + +
+ ); +}