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:
+
+
+ Check the URL you were trying to reach, and retry.
+ Try using these links to reach the content you wanted:
+
+
+
+
+
+
+
+ © 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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.description}
+
+
+
+ );
+}