@empoweredvote/ev-ui 0.6.6 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -861,6 +861,7 @@ function Header({
861
861
  logoAlt = "Empowered Vote",
862
862
  navItems = [],
863
863
  ctaButton,
864
+ secondaryAction,
864
865
  currentPath,
865
866
  onNavigate,
866
867
  profileMenu,
@@ -970,6 +971,22 @@ function Header({
970
971
  textDecoration: "none",
971
972
  display: "inline-block"
972
973
  },
974
+ secondaryAction: {
975
+ display: "inline-flex",
976
+ alignItems: "center",
977
+ backgroundColor: "transparent",
978
+ color: colors.evTeal,
979
+ fontFamily: fonts.primary,
980
+ fontWeight: fontWeights.bold,
981
+ fontSize: fontSizes.base,
982
+ padding: `${spacing[2]} ${spacing[5]}`,
983
+ borderRadius: borderRadius.full || "999px",
984
+ border: `1.5px solid ${colors.evTeal}`,
985
+ cursor: "pointer",
986
+ textDecoration: "none",
987
+ lineHeight: 1.2,
988
+ transition: "background-color 0.15s ease, color 0.15s ease"
989
+ },
973
990
  mobileMenuButton: {
974
991
  display: isMobile ? "block" : "none",
975
992
  background: "none",
@@ -1141,7 +1158,30 @@ function Header({
1141
1158
  },
1142
1159
  "empowered.vote"
1143
1160
  )
1144
- ), /* @__PURE__ */ import_react4.default.createElement("nav", { style: styles2.nav, className: "ev-header-nav" }, navItems.map((item, idx) => /* @__PURE__ */ import_react4.default.createElement(NavLink, { key: idx, item }))), /* @__PURE__ */ import_react4.default.createElement("div", { style: { display: isMobile ? "none" : "flex", alignItems: "center", gap: spacing[4] } }, ctaButton && /* @__PURE__ */ import_react4.default.createElement(
1161
+ ), /* @__PURE__ */ import_react4.default.createElement("nav", { style: styles2.nav, className: "ev-header-nav" }, navItems.map((item, idx) => /* @__PURE__ */ import_react4.default.createElement(NavLink, { key: idx, item }))), /* @__PURE__ */ import_react4.default.createElement("div", { style: { display: isMobile ? "none" : "flex", alignItems: "center", gap: spacing[3] } }, secondaryAction && import_react4.default.isValidElement(secondaryAction) && secondaryAction, secondaryAction && !import_react4.default.isValidElement(secondaryAction) && /* @__PURE__ */ import_react4.default.createElement(
1162
+ "a",
1163
+ {
1164
+ href: secondaryAction.href,
1165
+ target: secondaryAction.target || "_self",
1166
+ rel: secondaryAction.target === "_blank" ? "noopener noreferrer" : secondaryAction.rel || void 0,
1167
+ onClick: (e) => {
1168
+ if (secondaryAction.target !== "_blank") {
1169
+ handleNavClick(e, secondaryAction.href);
1170
+ }
1171
+ },
1172
+ style: styles2.secondaryAction,
1173
+ className: "ev-header-secondary",
1174
+ onMouseEnter: (e) => {
1175
+ e.currentTarget.style.backgroundColor = colors.evTeal;
1176
+ e.currentTarget.style.color = colors.textWhite;
1177
+ },
1178
+ onMouseLeave: (e) => {
1179
+ e.currentTarget.style.backgroundColor = "transparent";
1180
+ e.currentTarget.style.color = colors.evTeal;
1181
+ }
1182
+ },
1183
+ secondaryAction.label
1184
+ ), ctaButton && /* @__PURE__ */ import_react4.default.createElement(
1145
1185
  "a",
1146
1186
  {
1147
1187
  href: ctaButton.href,
@@ -1298,7 +1338,22 @@ function Header({
1298
1338
  },
1299
1339
  item.label
1300
1340
  ));
1301
- }), ctaButton && /* @__PURE__ */ import_react4.default.createElement(
1341
+ }), secondaryAction && import_react4.default.isValidElement(secondaryAction) && /* @__PURE__ */ import_react4.default.createElement("div", { style: { marginTop: spacing[4], textAlign: "center" } }, secondaryAction), secondaryAction && !import_react4.default.isValidElement(secondaryAction) && /* @__PURE__ */ import_react4.default.createElement(
1342
+ "a",
1343
+ {
1344
+ href: secondaryAction.href,
1345
+ target: secondaryAction.target || "_self",
1346
+ rel: secondaryAction.target === "_blank" ? "noopener noreferrer" : secondaryAction.rel || void 0,
1347
+ onClick: (e) => {
1348
+ if (secondaryAction.target !== "_blank") {
1349
+ handleNavClick(e, secondaryAction.href);
1350
+ }
1351
+ setMobileMenuOpen(false);
1352
+ },
1353
+ style: { ...styles2.secondaryAction, marginTop: spacing[4], textAlign: "center", justifyContent: "center" }
1354
+ },
1355
+ secondaryAction.label
1356
+ ), ctaButton && /* @__PURE__ */ import_react4.default.createElement(
1302
1357
  "a",
1303
1358
  {
1304
1359
  href: ctaButton.href,
@@ -1366,7 +1421,107 @@ function Header({
1366
1421
  }
1367
1422
 
1368
1423
  // src/SiteHeader.jsx
1424
+ var import_react6 = __toESM(require("react"));
1425
+
1426
+ // src/FeedbackButton.jsx
1369
1427
  var import_react5 = __toESM(require("react"));
1428
+ var FEEDBACK_BASE_DEFAULT = "https://alpha.empowered.vote/feedback";
1429
+ var HOST_FEATURE_MAP = {
1430
+ "compass.empowered.vote": "compass",
1431
+ "essentials.empowered.vote": "essentials",
1432
+ "readrank.empowered.vote": "readrank",
1433
+ "treasurytracker.empowered.vote": "treasury",
1434
+ "badges.empowered.vote": "badges",
1435
+ "ctc.empowered.vote": "trivia",
1436
+ "alpha.empowered.vote": "landing",
1437
+ "ev-landing.empowered.vote": "landing",
1438
+ "ev-landing.onrender.com": "landing"
1439
+ };
1440
+ function detectFeature() {
1441
+ if (typeof window === "undefined") return void 0;
1442
+ const host = window.location.hostname;
1443
+ if (HOST_FEATURE_MAP[host]) return HOST_FEATURE_MAP[host];
1444
+ const firstLabel = host.split(".")[0];
1445
+ for (const [knownHost, feature] of Object.entries(HOST_FEATURE_MAP)) {
1446
+ const knownPrefix = knownHost.split(".")[0];
1447
+ if (firstLabel === knownPrefix || firstLabel.startsWith(`${knownPrefix}-`)) {
1448
+ return feature;
1449
+ }
1450
+ }
1451
+ return "other";
1452
+ }
1453
+ function buildHref({ baseUrl, feature, includeUrl }) {
1454
+ const params = new URLSearchParams();
1455
+ if (feature) params.set("feature", feature);
1456
+ if (includeUrl && typeof window !== "undefined") {
1457
+ params.set("url", window.location.href);
1458
+ }
1459
+ const qs = params.toString();
1460
+ return qs ? `${baseUrl}?${qs}` : baseUrl;
1461
+ }
1462
+ function FeedbackButton({
1463
+ feature: featureProp,
1464
+ baseUrl = FEEDBACK_BASE_DEFAULT,
1465
+ label = "Feedback",
1466
+ variant = "pill",
1467
+ includeUrl = true,
1468
+ className = "",
1469
+ style = {}
1470
+ }) {
1471
+ const feature = featureProp != null ? featureProp : detectFeature();
1472
+ const href = buildHref({ baseUrl, feature, includeUrl });
1473
+ const pillStyle = {
1474
+ display: "inline-flex",
1475
+ alignItems: "center",
1476
+ gap: spacing[1],
1477
+ padding: `${spacing[2]} ${spacing[4]}`,
1478
+ backgroundColor: "transparent",
1479
+ color: colors.evTeal,
1480
+ border: `1.5px solid ${colors.evTeal}`,
1481
+ borderRadius: borderRadius.full || "999px",
1482
+ fontFamily: fonts.primary,
1483
+ fontWeight: fontWeights.bold,
1484
+ fontSize: fontSizes.base,
1485
+ lineHeight: 1.2,
1486
+ textDecoration: "none",
1487
+ cursor: "pointer",
1488
+ transition: "background-color 0.15s ease, color 0.15s ease"
1489
+ };
1490
+ const linkStyle2 = {
1491
+ color: colors.evTeal,
1492
+ fontFamily: fonts.primary,
1493
+ fontWeight: fontWeights.medium,
1494
+ textDecoration: "underline",
1495
+ cursor: "pointer"
1496
+ };
1497
+ const baseStyle = variant === "link" ? linkStyle2 : pillStyle;
1498
+ return /* @__PURE__ */ import_react5.default.createElement(
1499
+ "a",
1500
+ {
1501
+ href,
1502
+ target: "_blank",
1503
+ rel: "noopener noreferrer",
1504
+ className: `ev-feedback-button ${className}`.trim(),
1505
+ style: { ...baseStyle, ...style },
1506
+ "aria-label": "Send feedback",
1507
+ onMouseEnter: (e) => {
1508
+ if (variant === "pill") {
1509
+ e.currentTarget.style.backgroundColor = colors.evTeal;
1510
+ e.currentTarget.style.color = colors.textWhite || "#ffffff";
1511
+ }
1512
+ },
1513
+ onMouseLeave: (e) => {
1514
+ if (variant === "pill") {
1515
+ e.currentTarget.style.backgroundColor = "transparent";
1516
+ e.currentTarget.style.color = colors.evTeal;
1517
+ }
1518
+ }
1519
+ },
1520
+ label
1521
+ );
1522
+ }
1523
+
1524
+ // src/SiteHeader.jsx
1370
1525
  var defaultNavItems = [
1371
1526
  {
1372
1527
  label: "Features",
@@ -1378,10 +1533,6 @@ var defaultNavItems = [
1378
1533
  { label: "Treasury Tracker", href: "https://treasurytracker.empowered.vote" },
1379
1534
  { label: "Empowered Badges", href: "https://badges.empowered.vote" }
1380
1535
  ]
1381
- },
1382
- {
1383
- label: "Feedback",
1384
- href: "https://ev-landing.empowered.vote/feedback.html"
1385
1536
  }
1386
1537
  ];
1387
1538
  var defaultCtaButton = {
@@ -1393,6 +1544,8 @@ function SiteHeader({
1393
1544
  currentPath,
1394
1545
  onNavigate,
1395
1546
  profileMenu,
1547
+ secondaryAction,
1548
+ feedbackFeature,
1396
1549
  style = {}
1397
1550
  }) {
1398
1551
  const handleNavigate = (href) => {
@@ -1402,13 +1555,22 @@ function SiteHeader({
1402
1555
  window.location.href = href;
1403
1556
  }
1404
1557
  };
1405
- return /* @__PURE__ */ import_react5.default.createElement(
1558
+ let resolvedSecondary;
1559
+ if (secondaryAction === false) {
1560
+ resolvedSecondary = void 0;
1561
+ } else if (secondaryAction === void 0) {
1562
+ resolvedSecondary = /* @__PURE__ */ import_react6.default.createElement(FeedbackButton, { feature: feedbackFeature });
1563
+ } else {
1564
+ resolvedSecondary = secondaryAction;
1565
+ }
1566
+ return /* @__PURE__ */ import_react6.default.createElement(
1406
1567
  Header,
1407
1568
  {
1408
1569
  logoSrc,
1409
1570
  logoAlt: "Empowered Vote",
1410
1571
  navItems: defaultNavItems,
1411
1572
  ctaButton: defaultCtaButton,
1573
+ secondaryAction: resolvedSecondary,
1412
1574
  currentPath,
1413
1575
  onNavigate: handleNavigate,
1414
1576
  profileMenu,
@@ -1418,7 +1580,7 @@ function SiteHeader({
1418
1580
  }
1419
1581
 
1420
1582
  // src/FilterSidebar.jsx
1421
- var import_react6 = __toESM(require("react"));
1583
+ var import_react7 = __toESM(require("react"));
1422
1584
  function FilterSidebar({
1423
1585
  title = "Filter by",
1424
1586
  zipCode = "",
@@ -1572,14 +1734,14 @@ function FilterSidebar({
1572
1734
  fontSize: fontSizes.sm
1573
1735
  }
1574
1736
  };
1575
- return /* @__PURE__ */ import_react6.default.createElement("aside", { style: styles2.sidebar, className: "ev-filter-sidebar" }, !isMobile && /* @__PURE__ */ import_react6.default.createElement("h2", { style: styles2.title }, title), /* @__PURE__ */ import_react6.default.createElement("div", { style: isMobile ? void 0 : styles2.contentTop }, /* @__PURE__ */ import_react6.default.createElement("div", { style: isMobile ? { marginBottom: spacing[3] } : styles2.section }, !isMobile && /* @__PURE__ */ import_react6.default.createElement("label", { style: styles2.sectionLabel }, "Location"), autocompleteContainerRef ? /* @__PURE__ */ import_react6.default.createElement(
1737
+ return /* @__PURE__ */ import_react7.default.createElement("aside", { style: styles2.sidebar, className: "ev-filter-sidebar" }, !isMobile && /* @__PURE__ */ import_react7.default.createElement("h2", { style: styles2.title }, title), /* @__PURE__ */ import_react7.default.createElement("div", { style: isMobile ? void 0 : styles2.contentTop }, /* @__PURE__ */ import_react7.default.createElement("div", { style: isMobile ? { marginBottom: spacing[3] } : styles2.section }, !isMobile && /* @__PURE__ */ import_react7.default.createElement("label", { style: styles2.sectionLabel }, "Location"), autocompleteContainerRef ? /* @__PURE__ */ import_react7.default.createElement(
1576
1738
  "div",
1577
1739
  {
1578
1740
  ref: autocompleteContainerRef,
1579
1741
  style: styles2.zipInputWrapper,
1580
1742
  className: "ev-autocomplete-container"
1581
1743
  }
1582
- ) : /* @__PURE__ */ import_react6.default.createElement("div", { style: styles2.zipInputWrapper }, /* @__PURE__ */ import_react6.default.createElement(
1744
+ ) : /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.zipInputWrapper }, /* @__PURE__ */ import_react7.default.createElement(
1583
1745
  "input",
1584
1746
  {
1585
1747
  ref: zipInputRef,
@@ -1591,7 +1753,7 @@ function FilterSidebar({
1591
1753
  style: styles2.zipInput,
1592
1754
  "aria-label": "Search location"
1593
1755
  }
1594
- ), /* @__PURE__ */ import_react6.default.createElement(
1756
+ ), /* @__PURE__ */ import_react7.default.createElement(
1595
1757
  "button",
1596
1758
  {
1597
1759
  type: "button",
@@ -1600,7 +1762,7 @@ function FilterSidebar({
1600
1762
  "aria-label": "Clear ZIP code"
1601
1763
  },
1602
1764
  "\xD7"
1603
- ))), /* @__PURE__ */ import_react6.default.createElement("div", { style: isMobile ? {} : styles2.section }, !isMobile && /* @__PURE__ */ import_react6.default.createElement("label", { style: styles2.sectionLabel }, "Group"), /* @__PURE__ */ import_react6.default.createElement("div", { style: styles2.radioGroup, role: "radiogroup", "aria-label": "Filter by group" }, filterOptions.map((option) => /* @__PURE__ */ import_react6.default.createElement("label", { key: option.value, style: styles2.radioLabel }, /* @__PURE__ */ import_react6.default.createElement(
1765
+ ))), /* @__PURE__ */ import_react7.default.createElement("div", { style: isMobile ? {} : styles2.section }, !isMobile && /* @__PURE__ */ import_react7.default.createElement("label", { style: styles2.sectionLabel }, "Group"), /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.radioGroup, role: "radiogroup", "aria-label": "Filter by group" }, filterOptions.map((option) => /* @__PURE__ */ import_react7.default.createElement("label", { key: option.value, style: styles2.radioLabel }, /* @__PURE__ */ import_react7.default.createElement(
1604
1766
  "input",
1605
1767
  {
1606
1768
  type: "radio",
@@ -1610,18 +1772,18 @@ function FilterSidebar({
1610
1772
  onChange: () => onFilterChange == null ? void 0 : onFilterChange(option.value),
1611
1773
  style: styles2.radioInput
1612
1774
  }
1613
- ), option.label))))), !isMobile && /* @__PURE__ */ import_react6.default.createElement("div", { style: styles2.imageSection }, locationLabel && /* @__PURE__ */ import_react6.default.createElement("div", { style: styles2.locationLabel }, locationLabel), buildingImageSrc ? /* @__PURE__ */ import_react6.default.createElement(
1775
+ ), option.label))))), !isMobile && /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.imageSection }, locationLabel && /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.locationLabel }, locationLabel), buildingImageSrc ? /* @__PURE__ */ import_react7.default.createElement(
1614
1776
  "img",
1615
1777
  {
1616
1778
  src: buildingImageSrc,
1617
1779
  alt: `${selectedFilter} government building`,
1618
1780
  style: styles2.buildingImage
1619
1781
  }
1620
- ) : /* @__PURE__ */ import_react6.default.createElement("div", { style: styles2.buildingPlaceholder }, "No image")));
1782
+ ) : /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.buildingPlaceholder }, "No image")));
1621
1783
  }
1622
1784
 
1623
1785
  // src/PoliticianCard.jsx
1624
- var import_react7 = __toESM(require("react"));
1786
+ var import_react8 = __toESM(require("react"));
1625
1787
  function PoliticianCard({
1626
1788
  id,
1627
1789
  imageSrc,
@@ -1773,7 +1935,7 @@ function PoliticianCard({
1773
1935
  textTransform: "uppercase"
1774
1936
  }
1775
1937
  };
1776
- const CompassIcon2 = () => /* @__PURE__ */ import_react7.default.createElement(
1938
+ const CompassIcon2 = () => /* @__PURE__ */ import_react8.default.createElement(
1777
1939
  "svg",
1778
1940
  {
1779
1941
  style: styles2.compassIcon,
@@ -1781,7 +1943,7 @@ function PoliticianCard({
1781
1943
  fill: "none",
1782
1944
  xmlns: "http://www.w3.org/2000/svg"
1783
1945
  },
1784
- /* @__PURE__ */ import_react7.default.createElement(
1946
+ /* @__PURE__ */ import_react8.default.createElement(
1785
1947
  "polygon",
1786
1948
  {
1787
1949
  points: "12,1 21.5,6.5 21.5,17.5 12,23 2.5,17.5 2.5,6.5",
@@ -1791,13 +1953,13 @@ function PoliticianCard({
1791
1953
  strokeLinejoin: "round"
1792
1954
  }
1793
1955
  ),
1794
- /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "12", y2: "1", stroke: "currentColor", strokeWidth: "1" }),
1795
- /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "21.5", y2: "6.5", stroke: "currentColor", strokeWidth: "1" }),
1796
- /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "21.5", y2: "17.5", stroke: "currentColor", strokeWidth: "1" }),
1797
- /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "12", y2: "23", stroke: "currentColor", strokeWidth: "1" }),
1798
- /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "2.5", y2: "17.5", stroke: "currentColor", strokeWidth: "1" }),
1799
- /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "2.5", y2: "6.5", stroke: "currentColor", strokeWidth: "1" }),
1800
- /* @__PURE__ */ import_react7.default.createElement(
1956
+ /* @__PURE__ */ import_react8.default.createElement("line", { x1: "12", y1: "12", x2: "12", y2: "1", stroke: "currentColor", strokeWidth: "1" }),
1957
+ /* @__PURE__ */ import_react8.default.createElement("line", { x1: "12", y1: "12", x2: "21.5", y2: "6.5", stroke: "currentColor", strokeWidth: "1" }),
1958
+ /* @__PURE__ */ import_react8.default.createElement("line", { x1: "12", y1: "12", x2: "21.5", y2: "17.5", stroke: "currentColor", strokeWidth: "1" }),
1959
+ /* @__PURE__ */ import_react8.default.createElement("line", { x1: "12", y1: "12", x2: "12", y2: "23", stroke: "currentColor", strokeWidth: "1" }),
1960
+ /* @__PURE__ */ import_react8.default.createElement("line", { x1: "12", y1: "12", x2: "2.5", y2: "17.5", stroke: "currentColor", strokeWidth: "1" }),
1961
+ /* @__PURE__ */ import_react8.default.createElement("line", { x1: "12", y1: "12", x2: "2.5", y2: "6.5", stroke: "currentColor", strokeWidth: "1" }),
1962
+ /* @__PURE__ */ import_react8.default.createElement(
1801
1963
  "polygon",
1802
1964
  {
1803
1965
  points: "12,4 18,7.5 18,16 12,19.5 7,15 5,8",
@@ -1805,7 +1967,7 @@ function PoliticianCard({
1805
1967
  opacity: "0.35"
1806
1968
  }
1807
1969
  ),
1808
- /* @__PURE__ */ import_react7.default.createElement(
1970
+ /* @__PURE__ */ import_react8.default.createElement(
1809
1971
  "polygon",
1810
1972
  {
1811
1973
  points: "12,4 18,7.5 18,16 12,19.5 7,15 5,8",
@@ -1816,8 +1978,8 @@ function PoliticianCard({
1816
1978
  }
1817
1979
  )
1818
1980
  );
1819
- const [imgError, setImgError] = (0, import_react7.useState)(false);
1820
- (0, import_react7.useEffect)(() => {
1981
+ const [imgError, setImgError] = (0, import_react8.useState)(false);
1982
+ (0, import_react8.useEffect)(() => {
1821
1983
  setImgError(false);
1822
1984
  }, [imageSrc]);
1823
1985
  const getInitials = (n) => {
@@ -1826,7 +1988,7 @@ function PoliticianCard({
1826
1988
  const initials = parts.length >= 2 ? parts[0][0] + parts[parts.length - 1][0] : ((_a = parts[0]) == null ? void 0 : _a[0]) || "?";
1827
1989
  return initials.toUpperCase();
1828
1990
  };
1829
- return /* @__PURE__ */ import_react7.default.createElement(
1991
+ return /* @__PURE__ */ import_react8.default.createElement(
1830
1992
  "div",
1831
1993
  {
1832
1994
  style: styles2.card,
@@ -1851,8 +2013,8 @@ function PoliticianCard({
1851
2013
  }
1852
2014
  }
1853
2015
  },
1854
- badge && /* @__PURE__ */ import_react7.default.createElement("span", { style: styles2.badge }, badge),
1855
- /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.imageWrapper }, imageSrc && !imgError ? /* @__PURE__ */ import_react7.default.createElement(
2016
+ badge && /* @__PURE__ */ import_react8.default.createElement("span", { style: styles2.badge }, badge),
2017
+ /* @__PURE__ */ import_react8.default.createElement("div", { style: styles2.imageWrapper }, imageSrc && !imgError ? /* @__PURE__ */ import_react8.default.createElement(
1856
2018
  "img",
1857
2019
  {
1858
2020
  src: imageSrc,
@@ -1860,9 +2022,9 @@ function PoliticianCard({
1860
2022
  style: styles2.image,
1861
2023
  onError: () => setImgError(true)
1862
2024
  }
1863
- ) : /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.imagePlaceholder }, getInitials(name))),
1864
- /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.content }, /* @__PURE__ */ import_react7.default.createElement("h3", { style: styles2.name }, name), /* @__PURE__ */ import_react7.default.createElement("p", { style: styles2.title }, title), subtitle && /* @__PURE__ */ import_react7.default.createElement("p", { style: styles2.subtitle }, subtitle), footer && /* @__PURE__ */ import_react7.default.createElement("div", { style: { marginTop: "auto", marginLeft: "-5px" } }, footer)),
1865
- onCompassClick && /* @__PURE__ */ import_react7.default.createElement(
2025
+ ) : /* @__PURE__ */ import_react8.default.createElement("div", { style: styles2.imagePlaceholder }, getInitials(name))),
2026
+ /* @__PURE__ */ import_react8.default.createElement("div", { style: styles2.content }, /* @__PURE__ */ import_react8.default.createElement("h3", { style: styles2.name }, name), /* @__PURE__ */ import_react8.default.createElement("p", { style: styles2.title }, title), subtitle && /* @__PURE__ */ import_react8.default.createElement("p", { style: styles2.subtitle }, subtitle), footer && /* @__PURE__ */ import_react8.default.createElement("div", { style: { marginTop: "auto", marginLeft: "-5px" } }, footer)),
2027
+ onCompassClick && /* @__PURE__ */ import_react8.default.createElement(
1866
2028
  "button",
1867
2029
  {
1868
2030
  type: "button",
@@ -1877,16 +2039,16 @@ function PoliticianCard({
1877
2039
  },
1878
2040
  "aria-label": `View ${name}'s compass`
1879
2041
  },
1880
- /* @__PURE__ */ import_react7.default.createElement(CompassIcon2, null)
2042
+ /* @__PURE__ */ import_react8.default.createElement(CompassIcon2, null)
1881
2043
  )
1882
2044
  );
1883
2045
  }
1884
2046
 
1885
2047
  // src/CompassCardHorizontal.jsx
1886
- var import_react13 = __toESM(require("react"));
2048
+ var import_react14 = __toESM(require("react"));
1887
2049
 
1888
2050
  // src/PlaceholderRadar.jsx
1889
- var import_react8 = __toESM(require("react"));
2051
+ var import_react9 = __toESM(require("react"));
1890
2052
  function PlaceholderRadar({ size = 250, name = "" }) {
1891
2053
  const cx = size / 2;
1892
2054
  const cy = size / 2;
@@ -1899,7 +2061,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
1899
2061
  const outerPts = vertices.map(([x, y]) => `${x},${y}`).join(" ");
1900
2062
  const midPts = vertices.map(([x, y]) => `${cx + (x - cx) * 0.6},${cy + (y - cy) * 0.6}`).join(" ");
1901
2063
  const innerPts = vertices.map(([x, y]) => `${cx + (x - cx) * 0.3},${cy + (y - cy) * 0.3}`).join(" ");
1902
- return /* @__PURE__ */ import_react8.default.createElement(
2064
+ return /* @__PURE__ */ import_react9.default.createElement(
1903
2065
  "svg",
1904
2066
  {
1905
2067
  width: size,
@@ -1913,7 +2075,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
1913
2075
  flexShrink: 0
1914
2076
  }
1915
2077
  },
1916
- vertices.map(([x, y], i) => /* @__PURE__ */ import_react8.default.createElement(
2078
+ vertices.map(([x, y], i) => /* @__PURE__ */ import_react9.default.createElement(
1917
2079
  "line",
1918
2080
  {
1919
2081
  key: i,
@@ -1927,7 +2089,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
1927
2089
  opacity: "0.6"
1928
2090
  }
1929
2091
  )),
1930
- /* @__PURE__ */ import_react8.default.createElement(
2092
+ /* @__PURE__ */ import_react9.default.createElement(
1931
2093
  "polygon",
1932
2094
  {
1933
2095
  points: innerPts,
@@ -1938,7 +2100,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
1938
2100
  opacity: "0.5"
1939
2101
  }
1940
2102
  ),
1941
- /* @__PURE__ */ import_react8.default.createElement(
2103
+ /* @__PURE__ */ import_react9.default.createElement(
1942
2104
  "polygon",
1943
2105
  {
1944
2106
  points: midPts,
@@ -1949,7 +2111,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
1949
2111
  opacity: "0.6"
1950
2112
  }
1951
2113
  ),
1952
- /* @__PURE__ */ import_react8.default.createElement(
2114
+ /* @__PURE__ */ import_react9.default.createElement(
1953
2115
  "polygon",
1954
2116
  {
1955
2117
  points: outerPts,
@@ -1963,16 +2125,16 @@ function PlaceholderRadar({ size = 250, name = "" }) {
1963
2125
  }
1964
2126
 
1965
2127
  // src/CompassCardHorizontalMeta.jsx
1966
- var import_react12 = __toESM(require("react"));
2128
+ var import_react13 = __toESM(require("react"));
1967
2129
 
1968
2130
  // src/IconOverlay.jsx
1969
- var import_react10 = __toESM(require("react"));
1970
- var import_react11 = require("@floating-ui/react");
2131
+ var import_react11 = __toESM(require("react"));
2132
+ var import_react12 = require("@floating-ui/react");
1971
2133
 
1972
2134
  // src/icons.js
1973
- var import_react9 = __toESM(require("react"));
2135
+ var import_react10 = __toESM(require("react"));
1974
2136
  function BallotIcon({ size = 16, color = "currentColor" }) {
1975
- return /* @__PURE__ */ import_react9.default.createElement(
2137
+ return /* @__PURE__ */ import_react10.default.createElement(
1976
2138
  "svg",
1977
2139
  {
1978
2140
  width: size,
@@ -1985,13 +2147,13 @@ function BallotIcon({ size = 16, color = "currentColor" }) {
1985
2147
  strokeLinejoin: "round",
1986
2148
  xmlns: "http://www.w3.org/2000/svg"
1987
2149
  },
1988
- /* @__PURE__ */ import_react9.default.createElement("path", { d: "m9 12 2 2 4-4" }),
1989
- /* @__PURE__ */ import_react9.default.createElement("path", { d: "M5 7c0-1.1.9-2 2-2h10a2 2 0 0 1 2 2v12H5V7Z" }),
1990
- /* @__PURE__ */ import_react9.default.createElement("path", { d: "M22 19H2" })
2150
+ /* @__PURE__ */ import_react10.default.createElement("path", { d: "m9 12 2 2 4-4" }),
2151
+ /* @__PURE__ */ import_react10.default.createElement("path", { d: "M5 7c0-1.1.9-2 2-2h10a2 2 0 0 1 2 2v12H5V7Z" }),
2152
+ /* @__PURE__ */ import_react10.default.createElement("path", { d: "M22 19H2" })
1991
2153
  );
1992
2154
  }
1993
2155
  function CompassIcon({ size = 16, color = "currentColor" }) {
1994
- return /* @__PURE__ */ import_react9.default.createElement(
2156
+ return /* @__PURE__ */ import_react10.default.createElement(
1995
2157
  "svg",
1996
2158
  {
1997
2159
  width: size,
@@ -2004,27 +2166,27 @@ function CompassIcon({ size = 16, color = "currentColor" }) {
2004
2166
  strokeLinejoin: "round",
2005
2167
  xmlns: "http://www.w3.org/2000/svg"
2006
2168
  },
2007
- /* @__PURE__ */ import_react9.default.createElement("circle", { cx: "12", cy: "12", r: "10" }),
2008
- /* @__PURE__ */ import_react9.default.createElement("path", { d: "m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z" })
2169
+ /* @__PURE__ */ import_react10.default.createElement("circle", { cx: "12", cy: "12", r: "10" }),
2170
+ /* @__PURE__ */ import_react10.default.createElement("path", { d: "m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z" })
2009
2171
  );
2010
2172
  }
2011
2173
  function BranchIcon({ size = 16, color = "currentColor", branch }) {
2012
2174
  let paths;
2013
2175
  switch (branch) {
2014
2176
  case "executive":
2015
- paths = /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement("path", { d: "M3 21h18" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M5 21V7l8-4v18" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M19 21V11l-6-4" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M9 9v.01" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M9 12v.01" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M9 15v.01" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M9 18v.01" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M5 21h14" }), /* @__PURE__ */ import_react9.default.createElement("line", { x1: "13", y1: "5", x2: "13", y2: "3" }), /* @__PURE__ */ import_react9.default.createElement("line", { x1: "13", y1: "3", x2: "15", y2: "4" }));
2177
+ paths = /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement("path", { d: "M3 21h18" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M5 21V7l8-4v18" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M19 21V11l-6-4" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M9 9v.01" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M9 12v.01" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M9 15v.01" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M9 18v.01" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M5 21h14" }), /* @__PURE__ */ import_react10.default.createElement("line", { x1: "13", y1: "5", x2: "13", y2: "3" }), /* @__PURE__ */ import_react10.default.createElement("line", { x1: "13", y1: "3", x2: "15", y2: "4" }));
2016
2178
  break;
2017
2179
  case "legislative":
2018
- paths = /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement("path", { d: "M8 21h12a2 2 0 0 0 2-2v-2H10v2a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v3h4" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M19 17V5a2 2 0 0 0-2-2H4" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M15 8h-5" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M15 12h-5" }));
2180
+ paths = /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement("path", { d: "M8 21h12a2 2 0 0 0 2-2v-2H10v2a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v3h4" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M19 17V5a2 2 0 0 0-2-2H4" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M15 8h-5" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M15 12h-5" }));
2019
2181
  break;
2020
2182
  case "judicial":
2021
- paths = /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement("path", { d: "M12 3v19" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M5 8l7-5 7 5" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M3 13l2-5 2 5a3 3 0 0 1-4 0z" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M17 13l2-5 2 5a3 3 0 0 1-4 0z" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M8 21h8" }));
2183
+ paths = /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement("path", { d: "M12 3v19" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M5 8l7-5 7 5" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M3 13l2-5 2 5a3 3 0 0 1-4 0z" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M17 13l2-5 2 5a3 3 0 0 1-4 0z" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M8 21h8" }));
2022
2184
  break;
2023
2185
  default:
2024
- paths = /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, /* @__PURE__ */ import_react9.default.createElement("path", { d: "M10 18v-7" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M11.12 2.198a2 2 0 0 1 1.76.006l7.866 3.847c.476.233.31.949-.22.949H3.474c-.53 0-.695-.716-.22-.949z" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M14 18v-7" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M18 18v-7" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M3 22h18" }), /* @__PURE__ */ import_react9.default.createElement("path", { d: "M6 18v-7" }));
2186
+ paths = /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement("path", { d: "M10 18v-7" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M11.12 2.198a2 2 0 0 1 1.76.006l7.866 3.847c.476.233.31.949-.22.949H3.474c-.53 0-.695-.716-.22-.949z" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M14 18v-7" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M18 18v-7" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M3 22h18" }), /* @__PURE__ */ import_react10.default.createElement("path", { d: "M6 18v-7" }));
2025
2187
  break;
2026
2188
  }
2027
- return /* @__PURE__ */ import_react9.default.createElement(
2189
+ return /* @__PURE__ */ import_react10.default.createElement(
2028
2190
  "svg",
2029
2191
  {
2030
2192
  width: size,
@@ -2043,24 +2205,24 @@ function BranchIcon({ size = 16, color = "currentColor", branch }) {
2043
2205
 
2044
2206
  // src/IconOverlay.jsx
2045
2207
  function IconWithTooltip({ IconComponent, color, tooltip, size = 14, extraProps = {}, onClick }) {
2046
- const [isOpen, setIsOpen] = (0, import_react10.useState)(false);
2047
- const { refs, floatingStyles, context } = (0, import_react11.useFloating)({
2208
+ const [isOpen, setIsOpen] = (0, import_react11.useState)(false);
2209
+ const { refs, floatingStyles, context } = (0, import_react12.useFloating)({
2048
2210
  open: isOpen,
2049
2211
  onOpenChange: setIsOpen,
2050
- middleware: [(0, import_react11.offset)(8), (0, import_react11.flip)(), (0, import_react11.shift)({ padding: 4 })],
2051
- whileElementsMounted: import_react11.autoUpdate
2212
+ middleware: [(0, import_react12.offset)(8), (0, import_react12.flip)(), (0, import_react12.shift)({ padding: 4 })],
2213
+ whileElementsMounted: import_react12.autoUpdate
2052
2214
  });
2053
- const hover = (0, import_react11.useHover)(context);
2054
- const focus2 = (0, import_react11.useFocus)(context);
2055
- const dismiss = (0, import_react11.useDismiss)(context);
2056
- const role = (0, import_react11.useRole)(context, { role: "tooltip" });
2057
- const { getReferenceProps, getFloatingProps } = (0, import_react11.useInteractions)([
2215
+ const hover = (0, import_react12.useHover)(context);
2216
+ const focus2 = (0, import_react12.useFocus)(context);
2217
+ const dismiss = (0, import_react12.useDismiss)(context);
2218
+ const role = (0, import_react12.useRole)(context, { role: "tooltip" });
2219
+ const { getReferenceProps, getFloatingProps } = (0, import_react12.useInteractions)([
2058
2220
  hover,
2059
2221
  focus2,
2060
2222
  dismiss,
2061
2223
  role
2062
2224
  ]);
2063
- return /* @__PURE__ */ import_react10.default.createElement(import_react10.default.Fragment, null, /* @__PURE__ */ import_react10.default.createElement(
2225
+ return /* @__PURE__ */ import_react11.default.createElement(import_react11.default.Fragment, null, /* @__PURE__ */ import_react11.default.createElement(
2064
2226
  "span",
2065
2227
  {
2066
2228
  ref: refs.setReference,
@@ -2073,8 +2235,8 @@ function IconWithTooltip({ IconComponent, color, tooltip, size = 14, extraProps
2073
2235
  onClick(e);
2074
2236
  } : void 0
2075
2237
  },
2076
- /* @__PURE__ */ import_react10.default.createElement(IconComponent, { size, color, ...extraProps })
2077
- ), isOpen && /* @__PURE__ */ import_react10.default.createElement(import_react11.FloatingPortal, null, /* @__PURE__ */ import_react10.default.createElement(
2238
+ /* @__PURE__ */ import_react11.default.createElement(IconComponent, { size, color, ...extraProps })
2239
+ ), isOpen && /* @__PURE__ */ import_react11.default.createElement(import_react12.FloatingPortal, null, /* @__PURE__ */ import_react11.default.createElement(
2078
2240
  "div",
2079
2241
  {
2080
2242
  ref: refs.setFloating,
@@ -2098,7 +2260,7 @@ function IconWithTooltip({ IconComponent, color, tooltip, size = 14, extraProps
2098
2260
  function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2099
2261
  if (!ballot && !hasStances && !branch) return null;
2100
2262
  const ballotTooltip = ballot ? `This seat is on your ballot \u2014 ${ballot.electionLabel}: ${new Date(ballot.electionDate).toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" })}` : null;
2101
- return /* @__PURE__ */ import_react10.default.createElement(
2263
+ return /* @__PURE__ */ import_react11.default.createElement(
2102
2264
  "div",
2103
2265
  {
2104
2266
  style: {
@@ -2111,7 +2273,7 @@ function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2111
2273
  // offset icon wrapper padding so icons align flush-left with text
2112
2274
  }
2113
2275
  },
2114
- ballot && /* @__PURE__ */ import_react10.default.createElement(
2276
+ ballot && /* @__PURE__ */ import_react11.default.createElement(
2115
2277
  IconWithTooltip,
2116
2278
  {
2117
2279
  IconComponent: BallotIcon,
@@ -2120,7 +2282,7 @@ function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2120
2282
  size: 14
2121
2283
  }
2122
2284
  ),
2123
- hasStances && /* @__PURE__ */ import_react10.default.createElement(
2285
+ hasStances && /* @__PURE__ */ import_react11.default.createElement(
2124
2286
  IconWithTooltip,
2125
2287
  {
2126
2288
  IconComponent: CompassIcon,
@@ -2130,7 +2292,7 @@ function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2130
2292
  onClick: onCompassClick
2131
2293
  }
2132
2294
  ),
2133
- branch && /* @__PURE__ */ import_react10.default.createElement(
2295
+ branch && /* @__PURE__ */ import_react11.default.createElement(
2134
2296
  IconWithTooltip,
2135
2297
  {
2136
2298
  IconComponent: BranchIcon,
@@ -2150,20 +2312,20 @@ function CompassCardHorizontalMeta({
2150
2312
  userAnswers
2151
2313
  }) {
2152
2314
  const titleText = surface === "elections" ? politician.office_running_for : politician.office_title;
2153
- return /* @__PURE__ */ import_react12.default.createElement("div", { style: {
2315
+ return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2154
2316
  flex: 1,
2155
2317
  minWidth: 0,
2156
2318
  display: "flex",
2157
2319
  flexDirection: "column",
2158
2320
  gap: spacing[1]
2159
- } }, /* @__PURE__ */ import_react12.default.createElement("p", { style: {
2321
+ } }, /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2160
2322
  fontFamily: fonts.primary,
2161
2323
  fontSize: fontSizes.lg,
2162
2324
  fontWeight: fontWeights.semibold,
2163
2325
  lineHeight: 1.4,
2164
2326
  color: colors.evMutedBlue,
2165
2327
  margin: 0
2166
- } }, politician.full_name), /* @__PURE__ */ import_react12.default.createElement("p", { style: {
2328
+ } }, politician.full_name), /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2167
2329
  fontFamily: fonts.primary,
2168
2330
  fontSize: fontSizes.sm,
2169
2331
  fontWeight: fontWeights.semibold,
@@ -2174,7 +2336,7 @@ function CompassCardHorizontalMeta({
2174
2336
  display: "-webkit-box",
2175
2337
  WebkitLineClamp: 2,
2176
2338
  WebkitBoxOrient: "vertical"
2177
- } }, titleText || ""), politician.district_label && /* @__PURE__ */ import_react12.default.createElement("p", { style: {
2339
+ } }, titleText || ""), politician.district_label && /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2178
2340
  fontFamily: fonts.primary,
2179
2341
  fontSize: fontSizes.sm,
2180
2342
  fontWeight: fontWeights.regular,
@@ -2184,7 +2346,7 @@ function CompassCardHorizontalMeta({
2184
2346
  overflow: "hidden",
2185
2347
  textOverflow: "ellipsis",
2186
2348
  whiteSpace: "nowrap"
2187
- } }, politician.district_label), /* @__PURE__ */ import_react12.default.createElement(
2349
+ } }, politician.district_label), /* @__PURE__ */ import_react13.default.createElement(
2188
2350
  IconOverlay,
2189
2351
  {
2190
2352
  ballot: politician.ballot || null,
@@ -2233,11 +2395,11 @@ function CompassCardHorizontal({
2233
2395
  onClick
2234
2396
  }) {
2235
2397
  var _a;
2236
- const [hovered, setHovered] = (0, import_react13.useState)(false);
2237
- const [focused, setFocused] = (0, import_react13.useState)(false);
2238
- const [imgError, setImgError] = (0, import_react13.useState)(false);
2239
- const [emptyCtaHovered, setEmptyCtaHovered] = (0, import_react13.useState)(false);
2240
- (0, import_react13.useEffect)(() => {
2398
+ const [hovered, setHovered] = (0, import_react14.useState)(false);
2399
+ const [focused, setFocused] = (0, import_react14.useState)(false);
2400
+ const [imgError, setImgError] = (0, import_react14.useState)(false);
2401
+ const [emptyCtaHovered, setEmptyCtaHovered] = (0, import_react14.useState)(false);
2402
+ (0, import_react14.useEffect)(() => {
2241
2403
  setImgError(false);
2242
2404
  }, [politician == null ? void 0 : politician.photo_origin_url]);
2243
2405
  const cardStyle = {
@@ -2261,7 +2423,7 @@ function CompassCardHorizontal({
2261
2423
  function renderCompass() {
2262
2424
  var _a2, _b, _c;
2263
2425
  if (!userAnswers || userAnswers.length === 0) {
2264
- return /* @__PURE__ */ import_react13.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2426
+ return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2265
2427
  }
2266
2428
  let topics = [];
2267
2429
  let data = {};
@@ -2297,12 +2459,12 @@ function CompassCardHorizontal({
2297
2459
  }, {}) : politician.stances;
2298
2460
  }
2299
2461
  if (topics.length === 0) {
2300
- return /* @__PURE__ */ import_react13.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2462
+ return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2301
2463
  }
2302
2464
  } catch (err) {
2303
- return /* @__PURE__ */ import_react13.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2465
+ return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2304
2466
  }
2305
- return /* @__PURE__ */ import_react13.default.createElement(
2467
+ return /* @__PURE__ */ import_react14.default.createElement(
2306
2468
  RadarChartCore,
2307
2469
  {
2308
2470
  topics,
@@ -2324,7 +2486,7 @@ function CompassCardHorizontal({
2324
2486
  var _a2, _b, _c;
2325
2487
  const imageSrc = (politician == null ? void 0 : politician.photo_origin_url) || (politician == null ? void 0 : politician.images) && ((_a2 = politician.images[0]) == null ? void 0 : _a2.url) || null;
2326
2488
  if (imageSrc && !imgError) {
2327
- return /* @__PURE__ */ import_react13.default.createElement(
2489
+ return /* @__PURE__ */ import_react14.default.createElement(
2328
2490
  "img",
2329
2491
  {
2330
2492
  src: imageSrc,
@@ -2342,7 +2504,7 @@ function CompassCardHorizontal({
2342
2504
  }
2343
2505
  const parts = ((politician == null ? void 0 : politician.full_name) || "").split(" ").filter(Boolean);
2344
2506
  const initials = (parts.length >= 2 ? parts[0][0] + parts[parts.length - 1][0] : ((_c = parts[0]) == null ? void 0 : _c[0]) || "?").toUpperCase();
2345
- return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2507
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2346
2508
  width: "100%",
2347
2509
  height: "100%",
2348
2510
  backgroundColor: colors.evMutedBlue,
@@ -2356,7 +2518,7 @@ function CompassCardHorizontal({
2356
2518
  } }, initials);
2357
2519
  }
2358
2520
  function renderEmptyVariant() {
2359
- return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2521
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2360
2522
  width: "100%",
2361
2523
  height: "100%",
2362
2524
  display: "flex",
@@ -2367,14 +2529,14 @@ function CompassCardHorizontal({
2367
2529
  padding: "12px 14px",
2368
2530
  boxSizing: "border-box",
2369
2531
  backgroundColor: colorScales.teal["050"]
2370
- } }, /* @__PURE__ */ import_react13.default.createElement(PlaceholderRadar, { size: 140, name: (politician == null ? void 0 : politician.full_name) || "" }), /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2532
+ } }, /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: 140, name: (politician == null ? void 0 : politician.full_name) || "" }), /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2371
2533
  margin: 0,
2372
2534
  fontSize: fontSizes.xs,
2373
2535
  color: colors.textMuted,
2374
2536
  textAlign: "center",
2375
2537
  lineHeight: 1.4,
2376
2538
  fontFamily: fonts.primary
2377
- } }, "Calibrate your compass to see how you align with ", (politician == null ? void 0 : politician.full_name) || "this official"), /* @__PURE__ */ import_react13.default.createElement(
2539
+ } }, "Calibrate your compass to see how you align with ", (politician == null ? void 0 : politician.full_name) || "this official"), /* @__PURE__ */ import_react14.default.createElement(
2378
2540
  "button",
2379
2541
  {
2380
2542
  type: "button",
@@ -2402,7 +2564,7 @@ function CompassCardHorizontal({
2402
2564
  ));
2403
2565
  }
2404
2566
  function renderUnavailablePlate(message = "Compass currently unavailable for this role.") {
2405
- return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2567
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2406
2568
  width: "100%",
2407
2569
  height: "100%",
2408
2570
  backgroundColor: colorScales.teal["050"],
@@ -2411,7 +2573,7 @@ function CompassCardHorizontal({
2411
2573
  justifyContent: "center",
2412
2574
  padding: spacing[4],
2413
2575
  boxSizing: "border-box"
2414
- } }, /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2576
+ } }, /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2415
2577
  fontSize: fontSizes.sm,
2416
2578
  fontWeight: fontWeights.semibold,
2417
2579
  lineHeight: 1.4,
@@ -2430,7 +2592,7 @@ function CompassCardHorizontal({
2430
2592
  const name = (politician == null ? void 0 : politician.full_name) || "this official";
2431
2593
  return renderUnavailablePlate(`No compass stances on file for ${name} yet.`);
2432
2594
  }
2433
- return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2595
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2434
2596
  width: "100%",
2435
2597
  height: "100%",
2436
2598
  display: "flex",
@@ -2440,7 +2602,7 @@ function CompassCardHorizontal({
2440
2602
  boxSizing: "border-box"
2441
2603
  } }, renderCompass());
2442
2604
  }
2443
- return /* @__PURE__ */ import_react13.default.createElement(
2605
+ return /* @__PURE__ */ import_react14.default.createElement(
2444
2606
  "div",
2445
2607
  {
2446
2608
  role: "article",
@@ -2459,7 +2621,7 @@ function CompassCardHorizontal({
2459
2621
  onFocus: () => setFocused(true),
2460
2622
  onBlur: () => setFocused(false)
2461
2623
  },
2462
- /* @__PURE__ */ import_react13.default.createElement("div", { style: slotStyle }, renderSlotContent(), surface === "elections" && politician.running_unopposed && /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2624
+ /* @__PURE__ */ import_react14.default.createElement("div", { style: slotStyle }, renderSlotContent(), surface === "elections" && politician.running_unopposed && /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2463
2625
  position: "absolute",
2464
2626
  bottom: "15px",
2465
2627
  left: 0,
@@ -2474,7 +2636,7 @@ function CompassCardHorizontal({
2474
2636
  padding: "6px 0",
2475
2637
  pointerEvents: "none"
2476
2638
  } }, typeof politician.running_unopposed === "string" ? politician.running_unopposed : "Running Unopposed")),
2477
- /* @__PURE__ */ import_react13.default.createElement("div", { style: { flex: 1, minWidth: 0, padding: spacing[4], paddingLeft: spacing[3] } }, /* @__PURE__ */ import_react13.default.createElement(
2639
+ /* @__PURE__ */ import_react14.default.createElement("div", { style: { flex: 1, minWidth: 0, padding: spacing[4], paddingLeft: spacing[3] } }, /* @__PURE__ */ import_react14.default.createElement(
2478
2640
  CompassCardHorizontalMeta,
2479
2641
  {
2480
2642
  politician,
@@ -2486,7 +2648,7 @@ function CompassCardHorizontal({
2486
2648
  }
2487
2649
 
2488
2650
  // src/CompassCardVertical.jsx
2489
- var import_react14 = __toESM(require("react"));
2651
+ var import_react15 = __toESM(require("react"));
2490
2652
  var RADAR_SIZE2 = 400;
2491
2653
  function CompassCardVertical({
2492
2654
  politician,
@@ -2500,11 +2662,11 @@ function CompassCardVertical({
2500
2662
  onClick
2501
2663
  }) {
2502
2664
  var _a;
2503
- const [hovered, setHovered] = (0, import_react14.useState)(false);
2504
- const [focused, setFocused] = (0, import_react14.useState)(false);
2505
- const [imgError, setImgError] = (0, import_react14.useState)(false);
2506
- const [emptyCtaHovered, setEmptyCtaHovered] = (0, import_react14.useState)(false);
2507
- (0, import_react14.useEffect)(() => {
2665
+ const [hovered, setHovered] = (0, import_react15.useState)(false);
2666
+ const [focused, setFocused] = (0, import_react15.useState)(false);
2667
+ const [imgError, setImgError] = (0, import_react15.useState)(false);
2668
+ const [emptyCtaHovered, setEmptyCtaHovered] = (0, import_react15.useState)(false);
2669
+ (0, import_react15.useEffect)(() => {
2508
2670
  setImgError(false);
2509
2671
  }, [politician == null ? void 0 : politician.photo_origin_url]);
2510
2672
  const cardStyle = {
@@ -2527,7 +2689,7 @@ function CompassCardVertical({
2527
2689
  function renderCompass() {
2528
2690
  var _a2, _b, _c;
2529
2691
  if (!userAnswers || userAnswers.length === 0) {
2530
- return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2692
+ return /* @__PURE__ */ import_react15.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2531
2693
  }
2532
2694
  let topics = [];
2533
2695
  let data = {};
@@ -2563,17 +2725,17 @@ function CompassCardVertical({
2563
2725
  }, {}) : politician.stances;
2564
2726
  }
2565
2727
  if (topics.length === 0) {
2566
- return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2728
+ return /* @__PURE__ */ import_react15.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2567
2729
  }
2568
2730
  } catch {
2569
- return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2731
+ return /* @__PURE__ */ import_react15.default.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2570
2732
  }
2571
2733
  const unansweredSpokes = {};
2572
2734
  for (const t of topics) {
2573
2735
  const v = compareData[t.short_title];
2574
2736
  if (!v || Number(v) === 0) unansweredSpokes[t.short_title] = true;
2575
2737
  }
2576
- return /* @__PURE__ */ import_react14.default.createElement("div", { style: { width: RADAR_SIZE2 + 240, maxWidth: "100%", flexShrink: 0 } }, /* @__PURE__ */ import_react14.default.createElement(
2738
+ return /* @__PURE__ */ import_react15.default.createElement("div", { style: { width: RADAR_SIZE2 + 240, maxWidth: "100%", flexShrink: 0 } }, /* @__PURE__ */ import_react15.default.createElement(
2577
2739
  RadarChartCore,
2578
2740
  {
2579
2741
  topics,
@@ -2608,7 +2770,7 @@ function CompassCardVertical({
2608
2770
  justifyContent: "center"
2609
2771
  };
2610
2772
  if (imageSrc && !imgError) {
2611
- return /* @__PURE__ */ import_react14.default.createElement("div", { style: baseStyle }, /* @__PURE__ */ import_react14.default.createElement(
2773
+ return /* @__PURE__ */ import_react15.default.createElement("div", { style: baseStyle }, /* @__PURE__ */ import_react15.default.createElement(
2612
2774
  "img",
2613
2775
  {
2614
2776
  src: imageSrc,
@@ -2626,7 +2788,7 @@ function CompassCardVertical({
2626
2788
  }
2627
2789
  const parts = ((politician == null ? void 0 : politician.full_name) || "").split(" ").filter(Boolean);
2628
2790
  const initials = (parts.length >= 2 ? parts[0][0] + parts[parts.length - 1][0] : ((_c = parts[0]) == null ? void 0 : _c[0]) || "?").toUpperCase();
2629
- return /* @__PURE__ */ import_react14.default.createElement("div", { style: baseStyle }, /* @__PURE__ */ import_react14.default.createElement("span", { style: {
2791
+ return /* @__PURE__ */ import_react15.default.createElement("div", { style: baseStyle }, /* @__PURE__ */ import_react15.default.createElement("span", { style: {
2630
2792
  color: colors.textWhite,
2631
2793
  fontFamily: fonts.primary,
2632
2794
  fontWeight: fontWeights.bold,
@@ -2637,7 +2799,7 @@ function CompassCardVertical({
2637
2799
  var _a2, _b, _c;
2638
2800
  const imageSrc = (politician == null ? void 0 : politician.photo_origin_url) || (politician == null ? void 0 : politician.images) && ((_a2 = politician.images[0]) == null ? void 0 : _a2.url) || null;
2639
2801
  if (imageSrc && !imgError) {
2640
- return /* @__PURE__ */ import_react14.default.createElement(
2802
+ return /* @__PURE__ */ import_react15.default.createElement(
2641
2803
  "img",
2642
2804
  {
2643
2805
  src: imageSrc,
@@ -2656,7 +2818,7 @@ function CompassCardVertical({
2656
2818
  }
2657
2819
  const parts = ((politician == null ? void 0 : politician.full_name) || "").split(" ").filter(Boolean);
2658
2820
  const initials = (parts.length >= 2 ? parts[0][0] + parts[parts.length - 1][0] : ((_c = parts[0]) == null ? void 0 : _c[0]) || "?").toUpperCase();
2659
- return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2821
+ return /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2660
2822
  width: RADAR_SIZE2,
2661
2823
  height: RADAR_SIZE2,
2662
2824
  backgroundColor: colors.evMutedBlue,
@@ -2671,7 +2833,7 @@ function CompassCardVertical({
2671
2833
  } }, initials);
2672
2834
  }
2673
2835
  function renderEmptyVariant() {
2674
- return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2836
+ return /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2675
2837
  width: "100%",
2676
2838
  height: "100%",
2677
2839
  flex: 1,
@@ -2684,14 +2846,14 @@ function CompassCardVertical({
2684
2846
  boxSizing: "border-box",
2685
2847
  backgroundColor: colorScales.teal["050"],
2686
2848
  borderRadius: borderRadius.md
2687
- } }, /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: 220, name: (politician == null ? void 0 : politician.full_name) || "" }), /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2849
+ } }, /* @__PURE__ */ import_react15.default.createElement(PlaceholderRadar, { size: 220, name: (politician == null ? void 0 : politician.full_name) || "" }), /* @__PURE__ */ import_react15.default.createElement("p", { style: {
2688
2850
  margin: 0,
2689
2851
  fontSize: fontSizes.sm,
2690
2852
  color: colors.textMuted,
2691
2853
  textAlign: "center",
2692
2854
  lineHeight: 1.4,
2693
2855
  fontFamily: fonts.primary
2694
- } }, "Calibrate your compass to see how you align with ", (politician == null ? void 0 : politician.full_name) || "this official"), /* @__PURE__ */ import_react14.default.createElement(
2856
+ } }, "Calibrate your compass to see how you align with ", (politician == null ? void 0 : politician.full_name) || "this official"), /* @__PURE__ */ import_react15.default.createElement(
2695
2857
  "button",
2696
2858
  {
2697
2859
  type: "button",
@@ -2717,7 +2879,7 @@ function CompassCardVertical({
2717
2879
  ));
2718
2880
  }
2719
2881
  function renderUnavailablePlate(message) {
2720
- return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2882
+ return /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2721
2883
  width: "100%",
2722
2884
  height: "100%",
2723
2885
  flex: 1,
@@ -2728,7 +2890,7 @@ function CompassCardVertical({
2728
2890
  justifyContent: "center",
2729
2891
  padding: spacing[6],
2730
2892
  boxSizing: "border-box"
2731
- } }, /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2893
+ } }, /* @__PURE__ */ import_react15.default.createElement("p", { style: {
2732
2894
  fontSize: fontSizes.base,
2733
2895
  fontWeight: fontWeights.semibold,
2734
2896
  lineHeight: 1.4,
@@ -2749,7 +2911,7 @@ function CompassCardVertical({
2749
2911
  }
2750
2912
  return renderCompass();
2751
2913
  }
2752
- return /* @__PURE__ */ import_react14.default.createElement(
2914
+ return /* @__PURE__ */ import_react15.default.createElement(
2753
2915
  "div",
2754
2916
  {
2755
2917
  role: "article",
@@ -2768,21 +2930,21 @@ function CompassCardVertical({
2768
2930
  onFocus: () => setFocused(true),
2769
2931
  onBlur: () => setFocused(false)
2770
2932
  },
2771
- /* @__PURE__ */ import_react14.default.createElement("div", { style: { padding: spacing[4], paddingBottom: spacing[3], display: "flex", alignItems: "stretch", gap: spacing[3], flexShrink: 0 } }, renderAvatar(), /* @__PURE__ */ import_react14.default.createElement("div", { style: { display: "flex", flexDirection: "column", gap: spacing[1], minWidth: 0, flex: 1 } }, /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2933
+ /* @__PURE__ */ import_react15.default.createElement("div", { style: { padding: spacing[4], paddingBottom: spacing[3], display: "flex", alignItems: "stretch", gap: spacing[3], flexShrink: 0 } }, renderAvatar(), /* @__PURE__ */ import_react15.default.createElement("div", { style: { display: "flex", flexDirection: "column", gap: spacing[1], minWidth: 0, flex: 1 } }, /* @__PURE__ */ import_react15.default.createElement("p", { style: {
2772
2934
  fontFamily: fonts.primary,
2773
2935
  fontSize: fontSizes.xl,
2774
2936
  fontWeight: fontWeights.semibold,
2775
2937
  lineHeight: 1.3,
2776
2938
  color: colors.evMutedBlue,
2777
2939
  margin: 0
2778
- } }, politician.full_name), /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2940
+ } }, politician.full_name), /* @__PURE__ */ import_react15.default.createElement("p", { style: {
2779
2941
  fontFamily: fonts.primary,
2780
2942
  fontSize: fontSizes.sm,
2781
2943
  fontWeight: fontWeights.semibold,
2782
2944
  lineHeight: 1.4,
2783
2945
  color: colors.textSecondary,
2784
2946
  margin: 0
2785
- } }, titleText || ""), politician.district_label && /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2947
+ } }, titleText || ""), politician.district_label && /* @__PURE__ */ import_react15.default.createElement("p", { style: {
2786
2948
  fontFamily: fonts.primary,
2787
2949
  fontSize: fontSizes.sm,
2788
2950
  fontWeight: fontWeights.regular,
@@ -2792,7 +2954,7 @@ function CompassCardVertical({
2792
2954
  overflow: "hidden",
2793
2955
  textOverflow: "ellipsis",
2794
2956
  whiteSpace: "nowrap"
2795
- } }, politician.district_label), /* @__PURE__ */ import_react14.default.createElement("div", { style: { marginTop: "auto" } }, /* @__PURE__ */ import_react14.default.createElement(
2957
+ } }, politician.district_label), /* @__PURE__ */ import_react15.default.createElement("div", { style: { marginTop: "auto" } }, /* @__PURE__ */ import_react15.default.createElement(
2796
2958
  IconOverlay,
2797
2959
  {
2798
2960
  ballot: politician.ballot || null,
@@ -2800,7 +2962,7 @@ function CompassCardVertical({
2800
2962
  branch: politician.branch || null
2801
2963
  }
2802
2964
  )))),
2803
- surface === "elections" && politician.withdrawn && /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2965
+ surface === "elections" && politician.withdrawn && /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2804
2966
  margin: `0 ${spacing[4]} ${spacing[3]}`,
2805
2967
  backgroundColor: "rgba(120,0,0,0.85)",
2806
2968
  color: "#fff",
@@ -2812,7 +2974,7 @@ function CompassCardVertical({
2812
2974
  padding: "6px 0",
2813
2975
  borderRadius: borderRadius.sm
2814
2976
  } }, "Withdrawn"),
2815
- surface === "elections" && !politician.withdrawn && politician.running_unopposed && /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2977
+ surface === "elections" && !politician.withdrawn && politician.running_unopposed && /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2816
2978
  margin: `0 ${spacing[4]} ${spacing[3]}`,
2817
2979
  backgroundColor: "rgba(0,0,0,0.75)",
2818
2980
  color: "#fff",
@@ -2824,7 +2986,7 @@ function CompassCardVertical({
2824
2986
  padding: "6px 0",
2825
2987
  borderRadius: borderRadius.sm
2826
2988
  } }, typeof politician.running_unopposed === "string" ? politician.running_unopposed : "Running Unopposed"),
2827
- /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2989
+ /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2828
2990
  flex: 1,
2829
2991
  padding: spacing[4],
2830
2992
  paddingTop: 0,
@@ -2838,7 +3000,7 @@ function CompassCardVertical({
2838
3000
  }
2839
3001
 
2840
3002
  // src/CompassKey.jsx
2841
- var import_react15 = __toESM(require("react"));
3003
+ var import_react16 = __toESM(require("react"));
2842
3004
 
2843
3005
  // src/evContext.js
2844
3006
  var DEFAULT_BROKER_URL = "https://ev-context.empowered.vote/";
@@ -3083,9 +3245,9 @@ var evContext = {
3083
3245
 
3084
3246
  // src/CompassKey.jsx
3085
3247
  function CompassKey({ compact = false } = {}) {
3086
- const [dismissed, setDismissed] = (0, import_react15.useState)(false);
3087
- const [loaded, setLoaded] = (0, import_react15.useState)(false);
3088
- (0, import_react15.useEffect)(() => {
3248
+ const [dismissed, setDismissed] = (0, import_react16.useState)(false);
3249
+ const [loaded, setLoaded] = (0, import_react16.useState)(false);
3250
+ (0, import_react16.useEffect)(() => {
3089
3251
  let cancelled = false;
3090
3252
  evContext.get().then((shared) => {
3091
3253
  if (cancelled) return;
@@ -3115,7 +3277,7 @@ function CompassKey({ compact = false } = {}) {
3115
3277
  persistDismissed(false);
3116
3278
  }
3117
3279
  if (!loaded) return null;
3118
- const Swatch = ({ color, label, ring }) => /* @__PURE__ */ import_react15.default.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: spacing[1] } }, /* @__PURE__ */ import_react15.default.createElement("span", { style: {
3280
+ const Swatch = ({ color, label, ring }) => /* @__PURE__ */ import_react16.default.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: spacing[1] } }, /* @__PURE__ */ import_react16.default.createElement("span", { style: {
3119
3281
  display: "inline-block",
3120
3282
  width: 12,
3121
3283
  height: 12,
@@ -3123,9 +3285,9 @@ function CompassKey({ compact = false } = {}) {
3123
3285
  background: color,
3124
3286
  border: `2px solid ${ring || "#fff"}`,
3125
3287
  boxShadow: "0 0 0 1px rgba(0,0,0,0.08)"
3126
- } }), /* @__PURE__ */ import_react15.default.createElement("span", { style: { fontSize: fontSizes.xs, color: colors.textSecondary, fontFamily: fonts.primary } }, label));
3288
+ } }), /* @__PURE__ */ import_react16.default.createElement("span", { style: { fontSize: fontSizes.xs, color: colors.textSecondary, fontFamily: fonts.primary } }, label));
3127
3289
  if (dismissed) {
3128
- return /* @__PURE__ */ import_react15.default.createElement(
3290
+ return /* @__PURE__ */ import_react16.default.createElement(
3129
3291
  "button",
3130
3292
  {
3131
3293
  type: "button",
@@ -3146,11 +3308,11 @@ function CompassKey({ compact = false } = {}) {
3146
3308
  cursor: "pointer"
3147
3309
  }
3148
3310
  },
3149
- /* @__PURE__ */ import_react15.default.createElement("span", { "aria-hidden": "true" }, "?"),
3311
+ /* @__PURE__ */ import_react16.default.createElement("span", { "aria-hidden": "true" }, "?"),
3150
3312
  " Compass key"
3151
3313
  );
3152
3314
  }
3153
- return /* @__PURE__ */ import_react15.default.createElement(
3315
+ return /* @__PURE__ */ import_react16.default.createElement(
3154
3316
  "div",
3155
3317
  {
3156
3318
  role: "region",
@@ -3169,17 +3331,17 @@ function CompassKey({ compact = false } = {}) {
3169
3331
  boxSizing: "border-box"
3170
3332
  }
3171
3333
  },
3172
- !compact && /* @__PURE__ */ import_react15.default.createElement("span", { style: {
3334
+ !compact && /* @__PURE__ */ import_react16.default.createElement("span", { style: {
3173
3335
  fontSize: fontSizes.xs,
3174
3336
  fontWeight: fontWeights.semibold,
3175
3337
  color: colors.textMuted,
3176
3338
  textTransform: "uppercase",
3177
3339
  letterSpacing: "0.5px"
3178
3340
  } }, "Compass key"),
3179
- /* @__PURE__ */ import_react15.default.createElement(Swatch, { color: "#7C6B9E", label: "You" }),
3180
- /* @__PURE__ */ import_react15.default.createElement(Swatch, { color: "#5A9A6E", label: "Politician" }),
3181
- /* @__PURE__ */ import_react15.default.createElement(Swatch, { color: "#fed12e", label: "Match" }),
3182
- /* @__PURE__ */ import_react15.default.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: spacing[1] } }, /* @__PURE__ */ import_react15.default.createElement("span", { style: {
3341
+ /* @__PURE__ */ import_react16.default.createElement(Swatch, { color: "#7C6B9E", label: "You" }),
3342
+ /* @__PURE__ */ import_react16.default.createElement(Swatch, { color: "#5A9A6E", label: "Politician" }),
3343
+ /* @__PURE__ */ import_react16.default.createElement(Swatch, { color: "#fed12e", label: "Match" }),
3344
+ /* @__PURE__ */ import_react16.default.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: spacing[1] } }, /* @__PURE__ */ import_react16.default.createElement("span", { style: {
3183
3345
  fontSize: fontSizes.xs,
3184
3346
  fontWeight: fontWeights.semibold,
3185
3347
  color: "#9ca3af",
@@ -3187,8 +3349,8 @@ function CompassKey({ compact = false } = {}) {
3187
3349
  textDecoration: "underline",
3188
3350
  textDecorationStyle: "dashed",
3189
3351
  textUnderlineOffset: "3px"
3190
- } }, "Topic"), /* @__PURE__ */ import_react15.default.createElement("span", { style: { fontSize: fontSizes.xs, color: colors.textSecondary, fontFamily: fonts.primary } }, "= no stance")),
3191
- /* @__PURE__ */ import_react15.default.createElement(
3352
+ } }, "Topic"), /* @__PURE__ */ import_react16.default.createElement("span", { style: { fontSize: fontSizes.xs, color: colors.textSecondary, fontFamily: fonts.primary } }, "= no stance")),
3353
+ /* @__PURE__ */ import_react16.default.createElement(
3192
3354
  "button",
3193
3355
  {
3194
3356
  type: "button",
@@ -3211,7 +3373,7 @@ function CompassKey({ compact = false } = {}) {
3211
3373
  }
3212
3374
 
3213
3375
  // src/CategorySection.jsx
3214
- var import_react16 = __toESM(require("react"));
3376
+ var import_react17 = __toESM(require("react"));
3215
3377
  function CategorySection({
3216
3378
  title,
3217
3379
  infoTooltip,
@@ -3221,7 +3383,7 @@ function CategorySection({
3221
3383
  tier
3222
3384
  }) {
3223
3385
  var _a, _b;
3224
- const [showTooltip, setShowTooltip] = (0, import_react16.useState)(false);
3386
+ const [showTooltip, setShowTooltip] = (0, import_react17.useState)(false);
3225
3387
  const tierStyle = tier ? tierColors[tier] : null;
3226
3388
  const styles2 = {
3227
3389
  section: {
@@ -3289,7 +3451,7 @@ function CategorySection({
3289
3451
  gap: spacing[4]
3290
3452
  }
3291
3453
  };
3292
- return /* @__PURE__ */ import_react16.default.createElement("section", { style: styles2.section, className: "ev-category-section" }, /* @__PURE__ */ import_react16.default.createElement("div", { style: styles2.header }, /* @__PURE__ */ import_react16.default.createElement("span", { style: styles2.titlePill }, title), infoTooltip && /* @__PURE__ */ import_react16.default.createElement(
3454
+ return /* @__PURE__ */ import_react17.default.createElement("section", { style: styles2.section, className: "ev-category-section" }, /* @__PURE__ */ import_react17.default.createElement("div", { style: styles2.header }, /* @__PURE__ */ import_react17.default.createElement("span", { style: styles2.titlePill }, title), infoTooltip && /* @__PURE__ */ import_react17.default.createElement(
3293
3455
  "button",
3294
3456
  {
3295
3457
  type: "button",
@@ -3301,8 +3463,8 @@ function CategorySection({
3301
3463
  "aria-label": `Info about ${title}`
3302
3464
  },
3303
3465
  "i",
3304
- showTooltip && /* @__PURE__ */ import_react16.default.createElement("div", { style: styles2.tooltip, role: "tooltip" }, infoTooltip)
3305
- ), websiteUrl && /* @__PURE__ */ import_react16.default.createElement(
3466
+ showTooltip && /* @__PURE__ */ import_react17.default.createElement("div", { style: styles2.tooltip, role: "tooltip" }, infoTooltip)
3467
+ ), websiteUrl && /* @__PURE__ */ import_react17.default.createElement(
3306
3468
  "a",
3307
3469
  {
3308
3470
  href: websiteUrl,
@@ -3311,7 +3473,7 @@ function CategorySection({
3311
3473
  style: styles2.externalLink,
3312
3474
  "aria-label": `Visit official website for ${title}`
3313
3475
  },
3314
- /* @__PURE__ */ import_react16.default.createElement(
3476
+ /* @__PURE__ */ import_react17.default.createElement(
3315
3477
  "svg",
3316
3478
  {
3317
3479
  viewBox: "0 0 24 24",
@@ -3319,7 +3481,7 @@ function CategorySection({
3319
3481
  xmlns: "http://www.w3.org/2000/svg",
3320
3482
  style: { width: "14px", height: "14px" }
3321
3483
  },
3322
- /* @__PURE__ */ import_react16.default.createElement(
3484
+ /* @__PURE__ */ import_react17.default.createElement(
3323
3485
  "path",
3324
3486
  {
3325
3487
  d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14",
@@ -3330,11 +3492,11 @@ function CategorySection({
3330
3492
  }
3331
3493
  )
3332
3494
  )
3333
- )), /* @__PURE__ */ import_react16.default.createElement("div", { style: styles2.grid, className: "ev-category-grid" }, children));
3495
+ )), /* @__PURE__ */ import_react17.default.createElement("div", { style: styles2.grid, className: "ev-category-grid" }, children));
3334
3496
  }
3335
3497
 
3336
3498
  // src/SubGroupSection.jsx
3337
- var import_react17 = __toESM(require("react"));
3499
+ var import_react18 = __toESM(require("react"));
3338
3500
  function SubGroupSection({ title, websiteUrl, children, gridTemplateColumns, gap, justifyContent }) {
3339
3501
  const styles2 = {
3340
3502
  section: {
@@ -3369,7 +3531,7 @@ function SubGroupSection({ title, websiteUrl, children, gridTemplateColumns, gap
3369
3531
  width: "100%"
3370
3532
  }
3371
3533
  };
3372
- return /* @__PURE__ */ import_react17.default.createElement("div", { style: styles2.section }, title && /* @__PURE__ */ import_react17.default.createElement("div", { style: styles2.header }, /* @__PURE__ */ import_react17.default.createElement("span", { style: styles2.label }, title), websiteUrl && /* @__PURE__ */ import_react17.default.createElement(
3534
+ return /* @__PURE__ */ import_react18.default.createElement("div", { style: styles2.section }, title && /* @__PURE__ */ import_react18.default.createElement("div", { style: styles2.header }, /* @__PURE__ */ import_react18.default.createElement("span", { style: styles2.label }, title), websiteUrl && /* @__PURE__ */ import_react18.default.createElement(
3373
3535
  "a",
3374
3536
  {
3375
3537
  href: websiteUrl,
@@ -3377,12 +3539,12 @@ function SubGroupSection({ title, websiteUrl, children, gridTemplateColumns, gap
3377
3539
  rel: "noopener noreferrer",
3378
3540
  style: styles2.link
3379
3541
  },
3380
- /* @__PURE__ */ import_react17.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { width: "12px", height: "12px" } }, /* @__PURE__ */ import_react17.default.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react17.default.createElement("path", { d: "M2 12h20M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z", stroke: "currentColor", strokeWidth: "2" }))
3381
- )), /* @__PURE__ */ import_react17.default.createElement("div", { style: styles2.grid, className: "ev-subgroup-grid" }, children));
3542
+ /* @__PURE__ */ import_react18.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { width: "12px", height: "12px" } }, /* @__PURE__ */ import_react18.default.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react18.default.createElement("path", { d: "M2 12h20M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z", stroke: "currentColor", strokeWidth: "2" }))
3543
+ )), /* @__PURE__ */ import_react18.default.createElement("div", { style: styles2.grid, className: "ev-subgroup-grid" }, children));
3382
3544
  }
3383
3545
 
3384
3546
  // src/GovernmentBodySection.jsx
3385
- var import_react18 = __toESM(require("react"));
3547
+ var import_react19 = __toESM(require("react"));
3386
3548
  function GovernmentBodySection({
3387
3549
  title,
3388
3550
  websiteUrl,
@@ -3391,7 +3553,7 @@ function GovernmentBodySection({
3391
3553
  children
3392
3554
  }) {
3393
3555
  var _a;
3394
- const [expanded, setExpanded] = (0, import_react18.useState)(defaultExpanded);
3556
+ const [expanded, setExpanded] = (0, import_react19.useState)(defaultExpanded);
3395
3557
  const tierStyle = tier ? tierColors[tier] : null;
3396
3558
  const accentColor = (_a = tierStyle == null ? void 0 : tierStyle.accent) != null ? _a : colors.borderMedium;
3397
3559
  const styles2 = {
@@ -3431,7 +3593,7 @@ function GovernmentBodySection({
3431
3593
  display: expanded ? "block" : "none"
3432
3594
  }
3433
3595
  };
3434
- return /* @__PURE__ */ import_react18.default.createElement("section", { style: styles2.section, className: "ev-gov-body-section" }, /* @__PURE__ */ import_react18.default.createElement(
3596
+ return /* @__PURE__ */ import_react19.default.createElement("section", { style: styles2.section, className: "ev-gov-body-section" }, /* @__PURE__ */ import_react19.default.createElement(
3435
3597
  "div",
3436
3598
  {
3437
3599
  style: styles2.header,
@@ -3447,8 +3609,8 @@ function GovernmentBodySection({
3447
3609
  "aria-expanded": expanded,
3448
3610
  "aria-label": `${expanded ? "Collapse" : "Expand"} ${title}`
3449
3611
  },
3450
- /* @__PURE__ */ import_react18.default.createElement("span", { style: styles2.title }, title),
3451
- websiteUrl && /* @__PURE__ */ import_react18.default.createElement(
3612
+ /* @__PURE__ */ import_react19.default.createElement("span", { style: styles2.title }, title),
3613
+ websiteUrl && /* @__PURE__ */ import_react19.default.createElement(
3452
3614
  "a",
3453
3615
  {
3454
3616
  href: websiteUrl,
@@ -3458,14 +3620,14 @@ function GovernmentBodySection({
3458
3620
  onClick: (e) => e.stopPropagation(),
3459
3621
  "aria-label": `Visit ${title} website`
3460
3622
  },
3461
- /* @__PURE__ */ import_react18.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { width: "14px", height: "14px" } }, /* @__PURE__ */ import_react18.default.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react18.default.createElement("path", { d: "M2 12h20M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z", stroke: "currentColor", strokeWidth: "2" }))
3623
+ /* @__PURE__ */ import_react19.default.createElement("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { width: "14px", height: "14px" } }, /* @__PURE__ */ import_react19.default.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react19.default.createElement("path", { d: "M2 12h20M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z", stroke: "currentColor", strokeWidth: "2" }))
3462
3624
  ),
3463
- /* @__PURE__ */ import_react18.default.createElement("span", { style: styles2.toggle, "aria-hidden": "true" }, "\u25BC")
3464
- ), /* @__PURE__ */ import_react18.default.createElement("div", { style: styles2.content }, children));
3625
+ /* @__PURE__ */ import_react19.default.createElement("span", { style: styles2.toggle, "aria-hidden": "true" }, "\u25BC")
3626
+ ), /* @__PURE__ */ import_react19.default.createElement("div", { style: styles2.content }, children));
3465
3627
  }
3466
3628
 
3467
3629
  // src/SocialLinks.jsx
3468
- var import_react19 = __toESM(require("react"));
3630
+ var import_react20 = __toESM(require("react"));
3469
3631
  var SOCIAL_PLATFORMS = [
3470
3632
  { test: /facebook\.com/i, platform: "facebook" },
3471
3633
  { test: /twitter\.com|x\.com/i, platform: "twitter" },
@@ -3536,7 +3698,7 @@ function SocialLinks({
3536
3698
  }
3537
3699
  };
3538
3700
  const platformIconMap = {
3539
- twitter: /* @__PURE__ */ import_react19.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react19.default.createElement(
3701
+ twitter: /* @__PURE__ */ import_react20.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react20.default.createElement(
3540
3702
  "path",
3541
3703
  {
3542
3704
  d: "M4 4L10.5 12.5M20 20L13.5 11.5M10.5 12.5L4 20H8L13.5 11.5M10.5 12.5L16 4H20L13.5 11.5",
@@ -3546,7 +3708,7 @@ function SocialLinks({
3546
3708
  strokeLinejoin: "round"
3547
3709
  }
3548
3710
  )),
3549
- facebook: /* @__PURE__ */ import_react19.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react19.default.createElement(
3711
+ facebook: /* @__PURE__ */ import_react20.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react20.default.createElement(
3550
3712
  "path",
3551
3713
  {
3552
3714
  d: "M18 2H15C13.6739 2 12.4021 2.52678 11.4645 3.46447C10.5268 4.40215 10 5.67392 10 7V10H7V14H10V22H14V14H17L18 10H14V7C14 6.73478 14.1054 6.48043 14.2929 6.29289C14.4804 6.10536 14.7348 6 15 6H18V2Z",
@@ -3556,8 +3718,8 @@ function SocialLinks({
3556
3718
  strokeLinejoin: "round"
3557
3719
  }
3558
3720
  )),
3559
- instagram: /* @__PURE__ */ import_react19.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react19.default.createElement("rect", { x: "2", y: "2", width: "20", height: "20", rx: "5", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react19.default.createElement("circle", { cx: "12", cy: "12", r: "4", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react19.default.createElement("circle", { cx: "18", cy: "6", r: "1", fill: "currentColor" })),
3560
- linkedin: /* @__PURE__ */ import_react19.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react19.default.createElement(
3721
+ instagram: /* @__PURE__ */ import_react20.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react20.default.createElement("rect", { x: "2", y: "2", width: "20", height: "20", rx: "5", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react20.default.createElement("circle", { cx: "12", cy: "12", r: "4", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react20.default.createElement("circle", { cx: "18", cy: "6", r: "1", fill: "currentColor" })),
3722
+ linkedin: /* @__PURE__ */ import_react20.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react20.default.createElement(
3561
3723
  "path",
3562
3724
  {
3563
3725
  d: "M16 8C17.5913 8 19.1174 8.63214 20.2426 9.75736C21.3679 10.8826 22 12.4087 22 14V21H18V14C18 13.4696 17.7893 12.9609 17.4142 12.5858C17.0391 12.2107 16.5304 12 16 12C15.4696 12 14.9609 12.2107 14.5858 12.5858C14.2107 12.9609 14 13.4696 14 14V21H10V14C10 12.4087 10.6321 10.8826 11.7574 9.75736C12.8826 8.63214 14.4087 8 16 8Z",
@@ -3566,8 +3728,8 @@ function SocialLinks({
3566
3728
  strokeLinecap: "round",
3567
3729
  strokeLinejoin: "round"
3568
3730
  }
3569
- ), /* @__PURE__ */ import_react19.default.createElement("rect", { x: "2", y: "9", width: "4", height: "12", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), /* @__PURE__ */ import_react19.default.createElement("circle", { cx: "4", cy: "4", r: "2", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })),
3570
- youtube: /* @__PURE__ */ import_react19.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react19.default.createElement("rect", { x: "2", y: "5", width: "20", height: "14", rx: "3", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react19.default.createElement("polygon", { points: "10,9 16,12 10,15", fill: "currentColor" }))
3731
+ ), /* @__PURE__ */ import_react20.default.createElement("rect", { x: "2", y: "9", width: "4", height: "12", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), /* @__PURE__ */ import_react20.default.createElement("circle", { cx: "4", cy: "4", r: "2", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })),
3732
+ youtube: /* @__PURE__ */ import_react20.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react20.default.createElement("rect", { x: "2", y: "5", width: "20", height: "14", rx: "3", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react20.default.createElement("polygon", { points: "10,9 16,12 10,15", fill: "currentColor" }))
3571
3733
  };
3572
3734
  const links = [
3573
3735
  {
@@ -3593,7 +3755,7 @@ function SocialLinks({
3593
3755
  {
3594
3756
  href: website,
3595
3757
  label: "Website",
3596
- icon: /* @__PURE__ */ import_react19.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react19.default.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react19.default.createElement(
3758
+ icon: /* @__PURE__ */ import_react20.default.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ import_react20.default.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ import_react20.default.createElement(
3597
3759
  "path",
3598
3760
  {
3599
3761
  d: "M2 12H22M12 2C14.5 4.5 16 8 16 12C16 16 14.5 19.5 12 22C9.5 19.5 8 16 8 12C8 8 9.5 4.5 12 2Z",
@@ -3623,7 +3785,7 @@ function SocialLinks({
3623
3785
  if (links.length === 0) {
3624
3786
  return null;
3625
3787
  }
3626
- return /* @__PURE__ */ import_react19.default.createElement("div", { style: styles2.container, className: "ev-social-links" }, links.map((link) => /* @__PURE__ */ import_react19.default.createElement(
3788
+ return /* @__PURE__ */ import_react20.default.createElement("div", { style: styles2.container, className: "ev-social-links" }, links.map((link) => /* @__PURE__ */ import_react20.default.createElement(
3627
3789
  "a",
3628
3790
  {
3629
3791
  key: link.label,
@@ -3646,7 +3808,7 @@ function SocialLinks({
3646
3808
  }
3647
3809
 
3648
3810
  // src/IssueTags.jsx
3649
- var import_react20 = __toESM(require("react"));
3811
+ var import_react21 = __toESM(require("react"));
3650
3812
  function IssueTags({
3651
3813
  tags = [],
3652
3814
  selectedTags = [],
@@ -3689,9 +3851,9 @@ function IssueTags({
3689
3851
  onTagClick(tag.value);
3690
3852
  }
3691
3853
  };
3692
- return /* @__PURE__ */ import_react20.default.createElement("div", { style: styles2.container, className: "ev-issue-tags", role: "list" }, tags.map((tag) => {
3854
+ return /* @__PURE__ */ import_react21.default.createElement("div", { style: styles2.container, className: "ev-issue-tags", role: "list" }, tags.map((tag) => {
3693
3855
  const isSelected = selectedTags.includes(tag.value);
3694
- return /* @__PURE__ */ import_react20.default.createElement(
3856
+ return /* @__PURE__ */ import_react21.default.createElement(
3695
3857
  "span",
3696
3858
  {
3697
3859
  key: tag.value,
@@ -3720,7 +3882,7 @@ function IssueTags({
3720
3882
  }
3721
3883
 
3722
3884
  // src/CommitteeTable.jsx
3723
- var import_react21 = __toESM(require("react"));
3885
+ var import_react22 = __toESM(require("react"));
3724
3886
  var ROLE_ORDER = {
3725
3887
  "chair": 0,
3726
3888
  "co-chair": 1,
@@ -3747,7 +3909,7 @@ function CommitteeTable({
3747
3909
  maxVisible = 6,
3748
3910
  style = {}
3749
3911
  }) {
3750
- const [showAll, setShowAll] = (0, import_react21.useState)(false);
3912
+ const [showAll, setShowAll] = (0, import_react22.useState)(false);
3751
3913
  if (committees.length === 0) {
3752
3914
  return null;
3753
3915
  }
@@ -3809,7 +3971,7 @@ function CommitteeTable({
3809
3971
  cursor: "pointer"
3810
3972
  }
3811
3973
  };
3812
- return /* @__PURE__ */ import_react21.default.createElement("div", { style: styles2.container, className: "ev-committee-table" }, /* @__PURE__ */ import_react21.default.createElement("h4", { style: styles2.heading }, /* @__PURE__ */ import_react21.default.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react21.default.createElement("path", { d: "M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2" }), /* @__PURE__ */ import_react21.default.createElement("circle", { cx: "9", cy: "7", r: "4" }), /* @__PURE__ */ import_react21.default.createElement("path", { d: "M23 21v-2a4 4 0 00-3-3.87M16 3.13a4 4 0 010 7.75" })), title), /* @__PURE__ */ import_react21.default.createElement("table", { style: styles2.table }, /* @__PURE__ */ import_react21.default.createElement("tbody", null, visible.map((committee, index) => /* @__PURE__ */ import_react21.default.createElement("tr", { key: index, style: styles2.row }, /* @__PURE__ */ import_react21.default.createElement("td", { style: { ...styles2.cell, ...styles2.nameCell } }, committee.url ? /* @__PURE__ */ import_react21.default.createElement(
3974
+ return /* @__PURE__ */ import_react22.default.createElement("div", { style: styles2.container, className: "ev-committee-table" }, /* @__PURE__ */ import_react22.default.createElement("h4", { style: styles2.heading }, /* @__PURE__ */ import_react22.default.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react22.default.createElement("path", { d: "M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2" }), /* @__PURE__ */ import_react22.default.createElement("circle", { cx: "9", cy: "7", r: "4" }), /* @__PURE__ */ import_react22.default.createElement("path", { d: "M23 21v-2a4 4 0 00-3-3.87M16 3.13a4 4 0 010 7.75" })), title), /* @__PURE__ */ import_react22.default.createElement("table", { style: styles2.table }, /* @__PURE__ */ import_react22.default.createElement("tbody", null, visible.map((committee, index) => /* @__PURE__ */ import_react22.default.createElement("tr", { key: index, style: styles2.row }, /* @__PURE__ */ import_react22.default.createElement("td", { style: { ...styles2.cell, ...styles2.nameCell } }, committee.url ? /* @__PURE__ */ import_react22.default.createElement(
3813
3975
  "a",
3814
3976
  {
3815
3977
  href: committee.url,
@@ -3824,7 +3986,7 @@ function CommitteeTable({
3824
3986
  }
3825
3987
  },
3826
3988
  committee.name
3827
- ) : committee.name), /* @__PURE__ */ import_react21.default.createElement("td", { style: { ...styles2.cell, ...styles2.positionCell } }, formatPosition(committee.position)))))), hasMore && /* @__PURE__ */ import_react21.default.createElement(
3989
+ ) : committee.name), /* @__PURE__ */ import_react22.default.createElement("td", { style: { ...styles2.cell, ...styles2.positionCell } }, formatPosition(committee.position)))))), hasMore && /* @__PURE__ */ import_react22.default.createElement(
3828
3990
  "button",
3829
3991
  {
3830
3992
  type: "button",
@@ -3832,7 +3994,7 @@ function CommitteeTable({
3832
3994
  onClick: () => setShowAll(!showAll)
3833
3995
  },
3834
3996
  showAll ? "Show less" : `Show all ${sorted.length} committees`,
3835
- /* @__PURE__ */ import_react21.default.createElement(
3997
+ /* @__PURE__ */ import_react22.default.createElement(
3836
3998
  "svg",
3837
3999
  {
3838
4000
  width: "14",
@@ -3845,16 +4007,16 @@ function CommitteeTable({
3845
4007
  strokeLinejoin: "round",
3846
4008
  style: { transform: showAll ? "rotate(180deg)" : "none", transition: "transform 0.2s" }
3847
4009
  },
3848
- /* @__PURE__ */ import_react21.default.createElement("polyline", { points: "6 9 12 15 18 9" })
4010
+ /* @__PURE__ */ import_react22.default.createElement("polyline", { points: "6 9 12 15 18 9" })
3849
4011
  )
3850
4012
  ));
3851
4013
  }
3852
4014
 
3853
4015
  // src/PoliticianProfile.jsx
3854
- var import_react24 = __toESM(require("react"));
4016
+ var import_react25 = __toESM(require("react"));
3855
4017
 
3856
4018
  // src/LegislativeInlineSummary.jsx
3857
- var import_react22 = __toESM(require("react"));
4019
+ var import_react23 = __toESM(require("react"));
3858
4020
  function normalizePosition(pos) {
3859
4021
  if (!pos) return "";
3860
4022
  return pos.replace(/_/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
@@ -3962,7 +4124,7 @@ function LegislativeInlineSummary({ summary, politicianId, onNavigateToRecord })
3962
4124
  fontSize: fontSizes.sm,
3963
4125
  fontWeight: fontWeights.medium
3964
4126
  };
3965
- return /* @__PURE__ */ import_react22.default.createElement("div", { style: card }, stats.length > 0 && /* @__PURE__ */ import_react22.default.createElement("div", { style: statsRow }, stats.map((s, i) => /* @__PURE__ */ import_react22.default.createElement("div", { key: i, style: statItem }, /* @__PURE__ */ import_react22.default.createElement("span", { style: statValue }, s.value), s.label && /* @__PURE__ */ import_react22.default.createElement("span", { style: statLabel }, s.label)))), mostRecentAction && /* @__PURE__ */ import_react22.default.createElement("div", { style: actionLine, title: mostRecentAction }, mostRecentAction), /* @__PURE__ */ import_react22.default.createElement("div", null), /* @__PURE__ */ import_react22.default.createElement("div", { style: footerRow }, /* @__PURE__ */ import_react22.default.createElement(
4127
+ return /* @__PURE__ */ import_react23.default.createElement("div", { style: card }, stats.length > 0 && /* @__PURE__ */ import_react23.default.createElement("div", { style: statsRow }, stats.map((s, i) => /* @__PURE__ */ import_react23.default.createElement("div", { key: i, style: statItem }, /* @__PURE__ */ import_react23.default.createElement("span", { style: statValue }, s.value), s.label && /* @__PURE__ */ import_react23.default.createElement("span", { style: statLabel }, s.label)))), mostRecentAction && /* @__PURE__ */ import_react23.default.createElement("div", { style: actionLine, title: mostRecentAction }, mostRecentAction), /* @__PURE__ */ import_react23.default.createElement("div", null), /* @__PURE__ */ import_react23.default.createElement("div", { style: footerRow }, /* @__PURE__ */ import_react23.default.createElement(
3966
4128
  "button",
3967
4129
  {
3968
4130
  onClick: () => {
@@ -3987,12 +4149,12 @@ function LegislativeInlineSummary({ summary, politicianId, onNavigateToRecord })
3987
4149
  }
3988
4150
  },
3989
4151
  "View Full Legislative Record",
3990
- /* @__PURE__ */ import_react22.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ import_react22.default.createElement("path", { d: "M9 18l6-6-6-6" }))
4152
+ /* @__PURE__ */ import_react23.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" }, /* @__PURE__ */ import_react23.default.createElement("path", { d: "M9 18l6-6-6-6" }))
3991
4153
  )));
3992
4154
  }
3993
4155
 
3994
4156
  // src/JudicialScorecard.jsx
3995
- var import_react23 = __toESM(require("react"));
4157
+ var import_react24 = __toESM(require("react"));
3996
4158
 
3997
4159
  // src/judicialUtils.js
3998
4160
  function formatDate(dateStr) {
@@ -4110,7 +4272,7 @@ function JudicialScorecard({ judicialRecord, politicianId, onNavigateToRecord })
4110
4272
  onNavigateToRecord(`/politician/${politicianId}/judicial-record`);
4111
4273
  }
4112
4274
  };
4113
- return /* @__PURE__ */ import_react23.default.createElement("section", { style: sectionStyle }, /* @__PURE__ */ import_react23.default.createElement("h3", { style: headingStyle }, "Judicial Record"), evaluations.length > 0 && /* @__PURE__ */ import_react23.default.createElement("div", { style: { marginBottom: "16px" } }, evaluations.slice(0, 3).map((ev, i) => /* @__PURE__ */ import_react23.default.createElement("span", { key: i, style: evalChipStyle }, ev.rating, /* @__PURE__ */ import_react23.default.createElement("span", { style: { fontWeight: 400, color: "#4a90a4", fontSize: "11px" } }, "\u2014 ", ev.source)))), metrics.length > 0 && /* @__PURE__ */ import_react23.default.createElement("div", { style: cardGridStyle }, metrics.slice(0, 4).map((m, i) => /* @__PURE__ */ import_react23.default.createElement("div", { key: i, style: metricCardStyle }, /* @__PURE__ */ import_react23.default.createElement("div", { style: metricLabelStyle }, METRIC_LABELS[m.metric_type] || m.metric_type.replace(/_/g, " ")), /* @__PURE__ */ import_react23.default.createElement("div", { style: metricValueStyle }, formatMetricValue(m.metric_type, m.value)), m.context_label && /* @__PURE__ */ import_react23.default.createElement("div", { style: metricContextStyle }, m.context_label)))), disciplinary.length > 0 && /* @__PURE__ */ import_react23.default.createElement("div", { style: { marginBottom: "12px" } }, disciplinary.slice(0, 2).map((d, i) => /* @__PURE__ */ import_react23.default.createElement("div", { key: i, style: disciplinaryStyle }, /* @__PURE__ */ import_react23.default.createElement("strong", null, d.record_type), " \u2014 ", formatDate(d.record_date), d.description && /* @__PURE__ */ import_react23.default.createElement("div", { style: { marginTop: "4px" } }, d.description)))), /* @__PURE__ */ import_react23.default.createElement("a", { href: `/politician/${politicianId}/judicial-record`, onClick: handleNavigate, style: linkStyle }, "View Full Judicial Record \u2192"));
4275
+ return /* @__PURE__ */ import_react24.default.createElement("section", { style: sectionStyle }, /* @__PURE__ */ import_react24.default.createElement("h3", { style: headingStyle }, "Judicial Record"), evaluations.length > 0 && /* @__PURE__ */ import_react24.default.createElement("div", { style: { marginBottom: "16px" } }, evaluations.slice(0, 3).map((ev, i) => /* @__PURE__ */ import_react24.default.createElement("span", { key: i, style: evalChipStyle }, ev.rating, /* @__PURE__ */ import_react24.default.createElement("span", { style: { fontWeight: 400, color: "#4a90a4", fontSize: "11px" } }, "\u2014 ", ev.source)))), metrics.length > 0 && /* @__PURE__ */ import_react24.default.createElement("div", { style: cardGridStyle }, metrics.slice(0, 4).map((m, i) => /* @__PURE__ */ import_react24.default.createElement("div", { key: i, style: metricCardStyle }, /* @__PURE__ */ import_react24.default.createElement("div", { style: metricLabelStyle }, METRIC_LABELS[m.metric_type] || m.metric_type.replace(/_/g, " ")), /* @__PURE__ */ import_react24.default.createElement("div", { style: metricValueStyle }, formatMetricValue(m.metric_type, m.value)), m.context_label && /* @__PURE__ */ import_react24.default.createElement("div", { style: metricContextStyle }, m.context_label)))), disciplinary.length > 0 && /* @__PURE__ */ import_react24.default.createElement("div", { style: { marginBottom: "12px" } }, disciplinary.slice(0, 2).map((d, i) => /* @__PURE__ */ import_react24.default.createElement("div", { key: i, style: disciplinaryStyle }, /* @__PURE__ */ import_react24.default.createElement("strong", null, d.record_type), " \u2014 ", formatDate(d.record_date), d.description && /* @__PURE__ */ import_react24.default.createElement("div", { style: { marginTop: "4px" } }, d.description)))), /* @__PURE__ */ import_react24.default.createElement("a", { href: `/politician/${politicianId}/judicial-record`, onClick: handleNavigate, style: linkStyle }, "View Full Judicial Record \u2192"));
4114
4276
  }
4115
4277
 
4116
4278
  // src/PoliticianProfile.jsx
@@ -4261,13 +4423,13 @@ function formatAddress(addr) {
4261
4423
  if (cityStateZip) lines.push(cityStateZip);
4262
4424
  return lines;
4263
4425
  }
4264
- var CalendarIcon = ({ size = 16 }) => /* @__PURE__ */ import_react24.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", ry: "2" }), /* @__PURE__ */ import_react24.default.createElement("line", { x1: "16", y1: "2", x2: "16", y2: "6" }), /* @__PURE__ */ import_react24.default.createElement("line", { x1: "8", y1: "2", x2: "8", y2: "6" }), /* @__PURE__ */ import_react24.default.createElement("line", { x1: "3", y1: "10", x2: "21", y2: "10" }));
4265
- var ClockIcon = ({ size = 16 }) => /* @__PURE__ */ import_react24.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ import_react24.default.createElement("polyline", { points: "12 6 12 12 16 14" }));
4266
- var MapPinIcon = ({ size = 16 }) => /* @__PURE__ */ import_react24.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("path", { d: "M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z" }), /* @__PURE__ */ import_react24.default.createElement("circle", { cx: "12", cy: "10", r: "3" }));
4267
- var PhoneIcon = ({ size = 16 }) => /* @__PURE__ */ import_react24.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("path", { d: "M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07A19.5 19.5 0 013.07 10.8 19.79 19.79 0 01.07 2.18 2 2 0 012.02 0h3a2 2 0 012 1.72c.127.96.361 1.903.7 2.81a2 2 0 01-.45 2.11L6.09 7.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0122 16.92z" }));
4268
- var MailIcon = ({ size = 16 }) => /* @__PURE__ */ import_react24.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("path", { d: "M4 4H20C21.1 4 22 4.9 22 6V18C22 19.1 21.1 20 20 20H4C2.9 20 2 19.1 2 18V6C2 4.9 2.9 4 4 4Z" }), /* @__PURE__ */ import_react24.default.createElement("path", { d: "M22 6L12 13L2 6" }));
4269
- var GlobeIcon = ({ size = 16 }) => /* @__PURE__ */ import_react24.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ import_react24.default.createElement("path", { d: "M2 12H22M12 2C14.5 4.5 16 8 16 12C16 16 14.5 19.5 12 22C9.5 19.5 8 16 8 12C8 8 9.5 4.5 12 2Z" }));
4270
- var ExternalLinkIcon = ({ size = 16 }) => /* @__PURE__ */ import_react24.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("path", { d: "M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6" }), /* @__PURE__ */ import_react24.default.createElement("polyline", { points: "15 3 21 3 21 9" }), /* @__PURE__ */ import_react24.default.createElement("line", { x1: "10", y1: "14", x2: "21", y2: "3" }));
4426
+ var CalendarIcon = ({ size = 16 }) => /* @__PURE__ */ import_react25.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react25.default.createElement("rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", ry: "2" }), /* @__PURE__ */ import_react25.default.createElement("line", { x1: "16", y1: "2", x2: "16", y2: "6" }), /* @__PURE__ */ import_react25.default.createElement("line", { x1: "8", y1: "2", x2: "8", y2: "6" }), /* @__PURE__ */ import_react25.default.createElement("line", { x1: "3", y1: "10", x2: "21", y2: "10" }));
4427
+ var ClockIcon = ({ size = 16 }) => /* @__PURE__ */ import_react25.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react25.default.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ import_react25.default.createElement("polyline", { points: "12 6 12 12 16 14" }));
4428
+ var MapPinIcon = ({ size = 16 }) => /* @__PURE__ */ import_react25.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react25.default.createElement("path", { d: "M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z" }), /* @__PURE__ */ import_react25.default.createElement("circle", { cx: "12", cy: "10", r: "3" }));
4429
+ var PhoneIcon = ({ size = 16 }) => /* @__PURE__ */ import_react25.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react25.default.createElement("path", { d: "M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07A19.5 19.5 0 013.07 10.8 19.79 19.79 0 01.07 2.18 2 2 0 012.02 0h3a2 2 0 012 1.72c.127.96.361 1.903.7 2.81a2 2 0 01-.45 2.11L6.09 7.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0122 16.92z" }));
4430
+ var MailIcon = ({ size = 16 }) => /* @__PURE__ */ import_react25.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react25.default.createElement("path", { d: "M4 4H20C21.1 4 22 4.9 22 6V18C22 19.1 21.1 20 20 20H4C2.9 20 2 19.1 2 18V6C2 4.9 2.9 4 4 4Z" }), /* @__PURE__ */ import_react25.default.createElement("path", { d: "M22 6L12 13L2 6" }));
4431
+ var GlobeIcon = ({ size = 16 }) => /* @__PURE__ */ import_react25.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react25.default.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ import_react25.default.createElement("path", { d: "M2 12H22M12 2C14.5 4.5 16 8 16 12C16 16 14.5 19.5 12 22C9.5 19.5 8 16 8 12C8 8 9.5 4.5 12 2Z" }));
4432
+ var ExternalLinkIcon = ({ size = 16 }) => /* @__PURE__ */ import_react25.default.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react25.default.createElement("path", { d: "M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6" }), /* @__PURE__ */ import_react25.default.createElement("polyline", { points: "15 3 21 3 21 9" }), /* @__PURE__ */ import_react25.default.createElement("line", { x1: "10", y1: "14", x2: "21", y2: "3" }));
4271
4433
  function PoliticianProfile({
4272
4434
  politician = {},
4273
4435
  onBack,
@@ -4294,8 +4456,8 @@ function PoliticianProfile({
4294
4456
  return pol.photo_origin_url;
4295
4457
  })();
4296
4458
  const initials = [pol.first_name, pol.last_name].filter(Boolean).map((n) => n[0]).join("");
4297
- const [imgError, setImgError] = (0, import_react24.useState)(false);
4298
- (0, import_react24.useEffect)(() => {
4459
+ const [imgError, setImgError] = (0, import_react25.useState)(false);
4460
+ (0, import_react25.useEffect)(() => {
4299
4461
  setImgError(false);
4300
4462
  }, [profileImageUrl]);
4301
4463
  const getSocialHandle = (type) => {
@@ -4595,7 +4757,7 @@ function PoliticianProfile({
4595
4757
  borderRadius: borderRadius.full
4596
4758
  }
4597
4759
  };
4598
- return /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.container, className: "ev-politician-profile" }, onBack && /* @__PURE__ */ import_react24.default.createElement(
4760
+ return /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.container, className: "ev-politician-profile" }, onBack && /* @__PURE__ */ import_react25.default.createElement(
4599
4761
  "button",
4600
4762
  {
4601
4763
  type: "button",
@@ -4608,9 +4770,9 @@ function PoliticianProfile({
4608
4770
  e.currentTarget.style.textDecoration = "none";
4609
4771
  }
4610
4772
  },
4611
- /* @__PURE__ */ import_react24.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react24.default.createElement("path", { d: "M15 19l-7-7 7-7" })),
4773
+ /* @__PURE__ */ import_react25.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react25.default.createElement("path", { d: "M15 19l-7-7 7-7" })),
4612
4774
  label
4613
- ), /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.card }, /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.heroRow }, /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.photoWrap }, profileImageUrl && !imgError ? /* @__PURE__ */ import_react24.default.createElement(
4775
+ ), /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.card }, /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.heroRow }, /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.photoWrap }, profileImageUrl && !imgError ? /* @__PURE__ */ import_react25.default.createElement(
4614
4776
  "img",
4615
4777
  {
4616
4778
  src: profileImageUrl,
@@ -4618,7 +4780,7 @@ function PoliticianProfile({
4618
4780
  style: styles2.photo,
4619
4781
  onError: () => setImgError(true)
4620
4782
  }
4621
- ) : /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.placeholder }, initials || "?")), /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.infoCol }, styles2.tierBadge && /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.tierBadge }, tier), /* @__PURE__ */ import_react24.default.createElement("h1", { style: styles2.name }, displayName), banner, /* @__PURE__ */ import_react24.default.createElement("p", { style: styles2.roleLine }, roleLine), pol.office_description && /* @__PURE__ */ import_react24.default.createElement("p", { style: styles2.officeDesc }, pol.office_description), pol.bio_text && /* @__PURE__ */ import_react24.default.createElement("p", { style: styles2.bioText }, pol.bio_text), (termLine || pol.total_years_in_office > 0) && /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.metaRow }, termLine && /* @__PURE__ */ import_react24.default.createElement("span", { style: styles2.metaItem }, /* @__PURE__ */ import_react24.default.createElement(CalendarIcon, { size: 14 }), termLine), pol.total_years_in_office > 0 && /* @__PURE__ */ import_react24.default.createElement("span", { style: styles2.metaItem }, /* @__PURE__ */ import_react24.default.createElement(ClockIcon, { size: 14 }), pol.total_years_in_office, " ", pol.total_years_in_office === 1 ? "year" : "years", " in office")), pol.web_form_url && /* @__PURE__ */ import_react24.default.createElement(
4783
+ ) : /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.placeholder }, initials || "?")), /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.infoCol }, styles2.tierBadge && /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.tierBadge }, tier), /* @__PURE__ */ import_react25.default.createElement("h1", { style: styles2.name }, displayName), banner, /* @__PURE__ */ import_react25.default.createElement("p", { style: styles2.roleLine }, roleLine), pol.office_description && /* @__PURE__ */ import_react25.default.createElement("p", { style: styles2.officeDesc }, pol.office_description), pol.bio_text && /* @__PURE__ */ import_react25.default.createElement("p", { style: styles2.bioText }, pol.bio_text), (termLine || pol.total_years_in_office > 0) && /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.metaRow }, termLine && /* @__PURE__ */ import_react25.default.createElement("span", { style: styles2.metaItem }, /* @__PURE__ */ import_react25.default.createElement(CalendarIcon, { size: 14 }), termLine), pol.total_years_in_office > 0 && /* @__PURE__ */ import_react25.default.createElement("span", { style: styles2.metaItem }, /* @__PURE__ */ import_react25.default.createElement(ClockIcon, { size: 14 }), pol.total_years_in_office, " ", pol.total_years_in_office === 1 ? "year" : "years", " in office")), pol.web_form_url && /* @__PURE__ */ import_react25.default.createElement(
4622
4784
  "a",
4623
4785
  {
4624
4786
  href: pol.web_form_url,
@@ -4632,9 +4794,9 @@ function PoliticianProfile({
4632
4794
  e.currentTarget.style.background = colors.evTeal;
4633
4795
  }
4634
4796
  },
4635
- /* @__PURE__ */ import_react24.default.createElement(ExternalLinkIcon, { size: 14 }),
4797
+ /* @__PURE__ */ import_react25.default.createElement(ExternalLinkIcon, { size: 14 }),
4636
4798
  "Submit a Message"
4637
- ))), hasContactInfo && /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, /* @__PURE__ */ import_react24.default.createElement("div", { style: divider }), /* @__PURE__ */ import_react24.default.createElement("div", { style: sectionHeading }, /* @__PURE__ */ import_react24.default.createElement(MailIcon, { size: 20 }), "Contact Information"), /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.contactGrid }, hasAddresses && /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ import_react24.default.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ import_react24.default.createElement(MapPinIcon, { size: 12 }), "Addresses"), addresses.map((addr, i) => /* @__PURE__ */ import_react24.default.createElement("div", { key: `addr-${i}` }, /* @__PURE__ */ import_react24.default.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, addr.type), /* @__PURE__ */ import_react24.default.createElement("p", { style: styles2.contactValue }, addr.lines.map((line, j) => /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, { key: j }, line, j < addr.lines.length - 1 && /* @__PURE__ */ import_react24.default.createElement("br", null))))))), hasPhones && /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ import_react24.default.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ import_react24.default.createElement(PhoneIcon, { size: 12 }), "Phone"), Object.entries(phonesByType).map(([type, phones], i) => /* @__PURE__ */ import_react24.default.createElement("div", { key: `phone-${type}` }, /* @__PURE__ */ import_react24.default.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, type), phones.map((phone, j) => /* @__PURE__ */ import_react24.default.createElement("p", { key: j, style: styles2.contactValue }, /* @__PURE__ */ import_react24.default.createElement(
4799
+ ))), hasContactInfo && /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, null, /* @__PURE__ */ import_react25.default.createElement("div", { style: divider }), /* @__PURE__ */ import_react25.default.createElement("div", { style: sectionHeading }, /* @__PURE__ */ import_react25.default.createElement(MailIcon, { size: 20 }), "Contact Information"), /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.contactGrid }, hasAddresses && /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ import_react25.default.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ import_react25.default.createElement(MapPinIcon, { size: 12 }), "Addresses"), addresses.map((addr, i) => /* @__PURE__ */ import_react25.default.createElement("div", { key: `addr-${i}` }, /* @__PURE__ */ import_react25.default.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, addr.type), /* @__PURE__ */ import_react25.default.createElement("p", { style: styles2.contactValue }, addr.lines.map((line, j) => /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, { key: j }, line, j < addr.lines.length - 1 && /* @__PURE__ */ import_react25.default.createElement("br", null))))))), hasPhones && /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ import_react25.default.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ import_react25.default.createElement(PhoneIcon, { size: 12 }), "Phone"), Object.entries(phonesByType).map(([type, phones], i) => /* @__PURE__ */ import_react25.default.createElement("div", { key: `phone-${type}` }, /* @__PURE__ */ import_react25.default.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, type), phones.map((phone, j) => /* @__PURE__ */ import_react25.default.createElement("p", { key: j, style: styles2.contactValue }, /* @__PURE__ */ import_react25.default.createElement(
4638
4800
  "a",
4639
4801
  {
4640
4802
  href: `tel:${phone}`,
@@ -4647,7 +4809,7 @@ function PoliticianProfile({
4647
4809
  }
4648
4810
  },
4649
4811
  phone
4650
- )))))), hasEmails && /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ import_react24.default.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ import_react24.default.createElement(MailIcon, { size: 12 }), "Email"), Object.entries(emailsByType).filter(([, emails]) => emails.some((e) => e && e.trim())).map(([type, emails], i) => /* @__PURE__ */ import_react24.default.createElement("div", { key: `email-${type}` }, /* @__PURE__ */ import_react24.default.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, type), emails.filter((e) => e && e.trim()).map((email, j) => /* @__PURE__ */ import_react24.default.createElement("p", { key: j, style: styles2.contactValue }, /* @__PURE__ */ import_react24.default.createElement(
4812
+ )))))), hasEmails && /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ import_react25.default.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ import_react25.default.createElement(MailIcon, { size: 12 }), "Email"), Object.entries(emailsByType).filter(([, emails]) => emails.some((e) => e && e.trim())).map(([type, emails], i) => /* @__PURE__ */ import_react25.default.createElement("div", { key: `email-${type}` }, /* @__PURE__ */ import_react25.default.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, type), emails.filter((e) => e && e.trim()).map((email, j) => /* @__PURE__ */ import_react25.default.createElement("p", { key: j, style: styles2.contactValue }, /* @__PURE__ */ import_react25.default.createElement(
4651
4813
  "a",
4652
4814
  {
4653
4815
  href: `mailto:${email}`,
@@ -4660,7 +4822,7 @@ function PoliticianProfile({
4660
4822
  }
4661
4823
  },
4662
4824
  email
4663
- )))))), hasWebsitesCol && /* @__PURE__ */ import_react24.default.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ import_react24.default.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ import_react24.default.createElement(GlobeIcon, { size: 12 }), "Websites"), allWebsites.map((url, i) => /* @__PURE__ */ import_react24.default.createElement("p", { key: i, style: styles2.contactValue }, /* @__PURE__ */ import_react24.default.createElement(
4825
+ )))))), hasWebsitesCol && /* @__PURE__ */ import_react25.default.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ import_react25.default.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ import_react25.default.createElement(GlobeIcon, { size: 12 }), "Websites"), allWebsites.map((url, i) => /* @__PURE__ */ import_react25.default.createElement("p", { key: i, style: styles2.contactValue }, /* @__PURE__ */ import_react25.default.createElement(
4664
4826
  "a",
4665
4827
  {
4666
4828
  href: url,
@@ -4675,7 +4837,7 @@ function PoliticianProfile({
4675
4837
  }
4676
4838
  },
4677
4839
  extractDomain(url)
4678
- ))), (hasSocial || socialWebsiteUrls.length > 0) && /* @__PURE__ */ import_react24.default.createElement(
4840
+ ))), (hasSocial || socialWebsiteUrls.length > 0) && /* @__PURE__ */ import_react25.default.createElement(
4679
4841
  SocialLinks,
4680
4842
  {
4681
4843
  twitter,
@@ -4686,14 +4848,14 @@ function PoliticianProfile({
4686
4848
  size: "sm",
4687
4849
  style: { marginTop: allWebsites.length > 0 ? "8px" : 0 }
4688
4850
  }
4689
- )))), committees.length > 0 && /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, /* @__PURE__ */ import_react24.default.createElement("div", { style: divider }), /* @__PURE__ */ import_react24.default.createElement(CommitteeTable, { committees })), pol.is_judicial ? /* @__PURE__ */ import_react24.default.createElement(
4851
+ )))), committees.length > 0 && /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, null, /* @__PURE__ */ import_react25.default.createElement("div", { style: divider }), /* @__PURE__ */ import_react25.default.createElement(CommitteeTable, { committees })), pol.is_judicial ? /* @__PURE__ */ import_react25.default.createElement(
4690
4852
  JudicialScorecard,
4691
4853
  {
4692
4854
  judicialRecord,
4693
4855
  politicianId,
4694
4856
  onNavigateToRecord
4695
4857
  }
4696
- ) : /* @__PURE__ */ import_react24.default.createElement(
4858
+ ) : /* @__PURE__ */ import_react25.default.createElement(
4697
4859
  LegislativeInlineSummary,
4698
4860
  {
4699
4861
  summary: legislativeSummary,
@@ -4704,7 +4866,7 @@ function PoliticianProfile({
4704
4866
  }
4705
4867
 
4706
4868
  // src/LegislativeRecord.jsx
4707
- var import_react25 = __toESM(require("react"));
4869
+ var import_react26 = __toESM(require("react"));
4708
4870
  var DEFAULT_LIMIT = 25;
4709
4871
  function normalizeText(str) {
4710
4872
  if (!str) return "";
@@ -4784,7 +4946,7 @@ function getPositionBadge(position) {
4784
4946
  return { bg: colors.borderLight, text: colors.textSecondary };
4785
4947
  }
4786
4948
  function Badge({ label, bg, text }) {
4787
- return /* @__PURE__ */ import_react25.default.createElement("span", { style: {
4949
+ return /* @__PURE__ */ import_react26.default.createElement("span", { style: {
4788
4950
  display: "inline-block",
4789
4951
  background: bg,
4790
4952
  color: text,
@@ -4797,18 +4959,18 @@ function Badge({ label, bg, text }) {
4797
4959
  } }, label);
4798
4960
  }
4799
4961
  function SectionHeader({ title, yearFilter, years, onYearChange }) {
4800
- return /* @__PURE__ */ import_react25.default.createElement("div", { style: {
4962
+ return /* @__PURE__ */ import_react26.default.createElement("div", { style: {
4801
4963
  display: "flex",
4802
4964
  alignItems: "center",
4803
4965
  justifyContent: "space-between",
4804
4966
  marginBottom: spacing[4]
4805
- } }, /* @__PURE__ */ import_react25.default.createElement("h2", { style: {
4967
+ } }, /* @__PURE__ */ import_react26.default.createElement("h2", { style: {
4806
4968
  fontFamily: fonts.primary,
4807
4969
  fontSize: fontSizes.xl,
4808
4970
  fontWeight: fontWeights.bold,
4809
4971
  color: colors.evTeal,
4810
4972
  margin: 0
4811
- } }, title), years && years.length > 0 && /* @__PURE__ */ import_react25.default.createElement(
4973
+ } }, title), years && years.length > 0 && /* @__PURE__ */ import_react26.default.createElement(
4812
4974
  "select",
4813
4975
  {
4814
4976
  value: yearFilter,
@@ -4824,13 +4986,13 @@ function SectionHeader({ title, yearFilter, years, onYearChange }) {
4824
4986
  cursor: "pointer"
4825
4987
  }
4826
4988
  },
4827
- /* @__PURE__ */ import_react25.default.createElement("option", { value: "All" }, "All years"),
4828
- years.map((y) => /* @__PURE__ */ import_react25.default.createElement("option", { key: y, value: y }, y))
4989
+ /* @__PURE__ */ import_react26.default.createElement("option", { value: "All" }, "All years"),
4990
+ years.map((y) => /* @__PURE__ */ import_react26.default.createElement("option", { key: y, value: y }, y))
4829
4991
  ));
4830
4992
  }
4831
4993
  function ShowAllLink({ totalCount, visibleCount, onClick }) {
4832
4994
  if (totalCount <= visibleCount) return null;
4833
- return /* @__PURE__ */ import_react25.default.createElement("div", { style: { textAlign: "center", marginTop: spacing[3] } }, /* @__PURE__ */ import_react25.default.createElement(
4995
+ return /* @__PURE__ */ import_react26.default.createElement("div", { style: { textAlign: "center", marginTop: spacing[3] } }, /* @__PURE__ */ import_react26.default.createElement(
4834
4996
  "button",
4835
4997
  {
4836
4998
  type: "button",
@@ -4858,7 +5020,7 @@ function ShowAllLink({ totalCount, visibleCount, onClick }) {
4858
5020
  ));
4859
5021
  }
4860
5022
  function EmptyState({ message }) {
4861
- return /* @__PURE__ */ import_react25.default.createElement("p", { style: {
5023
+ return /* @__PURE__ */ import_react26.default.createElement("p", { style: {
4862
5024
  fontFamily: fonts.primary,
4863
5025
  fontSize: fontSizes.sm,
4864
5026
  color: colors.textMuted,
@@ -4868,24 +5030,24 @@ function EmptyState({ message }) {
4868
5030
  } }, message);
4869
5031
  }
4870
5032
  function Spinner() {
4871
- return /* @__PURE__ */ import_react25.default.createElement("div", { style: {
5033
+ return /* @__PURE__ */ import_react26.default.createElement("div", { style: {
4872
5034
  display: "flex",
4873
5035
  justifyContent: "center",
4874
5036
  alignItems: "center",
4875
5037
  padding: spacing[10]
4876
- } }, /* @__PURE__ */ import_react25.default.createElement("div", { style: {
5038
+ } }, /* @__PURE__ */ import_react26.default.createElement("div", { style: {
4877
5039
  width: "40px",
4878
5040
  height: "40px",
4879
5041
  borderRadius: borderRadius.full,
4880
5042
  border: `3px solid ${colors.borderLight}`,
4881
5043
  borderTopColor: colors.evTeal,
4882
5044
  animation: "ev-spin 0.8s linear infinite"
4883
- } }), /* @__PURE__ */ import_react25.default.createElement("style", null, `@keyframes ev-spin { to { transform: rotate(360deg); } }`));
5045
+ } }), /* @__PURE__ */ import_react26.default.createElement("style", null, `@keyframes ev-spin { to { transform: rotate(360deg); } }`));
4884
5046
  }
4885
5047
  function CommitteesSection({ committees, leadership }) {
4886
- const [showAll, setShowAll] = (0, import_react25.useState)(false);
5048
+ const [showAll, setShowAll] = (0, import_react26.useState)(false);
4887
5049
  const visible = showAll ? committees : committees.slice(0, DEFAULT_LIMIT);
4888
- return /* @__PURE__ */ import_react25.default.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ import_react25.default.createElement(SectionHeader, { title: "Committees & Leadership" }), leadership && leadership.length > 0 && /* @__PURE__ */ import_react25.default.createElement("div", { style: { display: "flex", flexWrap: "wrap", gap: spacing[2], marginBottom: spacing[4] } }, leadership.map((role, i) => /* @__PURE__ */ import_react25.default.createElement("div", { key: i, style: {
5050
+ return /* @__PURE__ */ import_react26.default.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ import_react26.default.createElement(SectionHeader, { title: "Committees & Leadership" }), leadership && leadership.length > 0 && /* @__PURE__ */ import_react26.default.createElement("div", { style: { display: "flex", flexWrap: "wrap", gap: spacing[2], marginBottom: spacing[4] } }, leadership.map((role, i) => /* @__PURE__ */ import_react26.default.createElement("div", { key: i, style: {
4889
5051
  display: "inline-flex",
4890
5052
  alignItems: "center",
4891
5053
  gap: spacing[1],
@@ -4896,23 +5058,23 @@ function CommitteesSection({ committees, leadership }) {
4896
5058
  fontFamily: fonts.primary,
4897
5059
  fontSize: fontSizes.sm,
4898
5060
  fontWeight: fontWeights.semibold
4899
- } }, role.title, role.chamber && /* @__PURE__ */ import_react25.default.createElement("span", { style: { fontWeight: fontWeights.regular, opacity: 0.85 } }, "(", role.chamber, ")")))), committees.length === 0 ? /* @__PURE__ */ import_react25.default.createElement(EmptyState, { message: "Committee information is not available for this office." }) : /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, null, /* @__PURE__ */ import_react25.default.createElement("div", null, visible.map((c, i) => {
5061
+ } }, role.title, role.chamber && /* @__PURE__ */ import_react26.default.createElement("span", { style: { fontWeight: fontWeights.regular, opacity: 0.85 } }, "(", role.chamber, ")")))), committees.length === 0 ? /* @__PURE__ */ import_react26.default.createElement(EmptyState, { message: "Committee information is not available for this office." }) : /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement("div", null, visible.map((c, i) => {
4900
5062
  const badge = getRoleBadge(c.role);
4901
- return /* @__PURE__ */ import_react25.default.createElement("div", { key: i, style: {
5063
+ return /* @__PURE__ */ import_react26.default.createElement("div", { key: i, style: {
4902
5064
  display: "flex",
4903
5065
  alignItems: "center",
4904
5066
  justifyContent: "space-between",
4905
5067
  padding: `${spacing[3]} 0`,
4906
5068
  borderBottom: `1px solid ${colors.borderLight}`,
4907
5069
  gap: spacing[3]
4908
- } }, /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5070
+ } }, /* @__PURE__ */ import_react26.default.createElement("span", { style: {
4909
5071
  fontFamily: fonts.primary,
4910
5072
  fontSize: fontSizes.sm,
4911
5073
  color: colors.textSecondary,
4912
5074
  flex: 1,
4913
5075
  minWidth: 0
4914
- } }, c.committee_name, c.parent_name && /* @__PURE__ */ import_react25.default.createElement("span", { style: { color: colors.textMuted, marginLeft: spacing[1] } }, "(", c.parent_name, ")")), /* @__PURE__ */ import_react25.default.createElement(Badge, { label: badge.label, bg: badge.bg, text: badge.text }));
4915
- })), !showAll && /* @__PURE__ */ import_react25.default.createElement(
5076
+ } }, c.committee_name, c.parent_name && /* @__PURE__ */ import_react26.default.createElement("span", { style: { color: colors.textMuted, marginLeft: spacing[1] } }, "(", c.parent_name, ")")), /* @__PURE__ */ import_react26.default.createElement(Badge, { label: badge.label, bg: badge.bg, text: badge.text }));
5077
+ })), !showAll && /* @__PURE__ */ import_react26.default.createElement(
4916
5078
  ShowAllLink,
4917
5079
  {
4918
5080
  totalCount: committees.length,
@@ -4923,15 +5085,15 @@ function CommitteesSection({ committees, leadership }) {
4923
5085
  }
4924
5086
  function LegislationSection({ bills, isMobile }) {
4925
5087
  const years = getYears(bills, "introduced_at");
4926
- const [yearFilter, setYearFilter] = (0, import_react25.useState)("All");
4927
- const [showAll, setShowAll] = (0, import_react25.useState)(false);
5088
+ const [yearFilter, setYearFilter] = (0, import_react26.useState)("All");
5089
+ const [showAll, setShowAll] = (0, import_react26.useState)(false);
4928
5090
  const handleYearChange = (y) => {
4929
5091
  setYearFilter(y);
4930
5092
  setShowAll(false);
4931
5093
  };
4932
5094
  const filtered = yearFilter === "All" ? bills : bills.filter((b) => extractYear(b.introduced_at) === yearFilter);
4933
5095
  const visible = showAll ? filtered : filtered.slice(0, DEFAULT_LIMIT);
4934
- return /* @__PURE__ */ import_react25.default.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ import_react25.default.createElement(
5096
+ return /* @__PURE__ */ import_react26.default.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ import_react26.default.createElement(
4935
5097
  SectionHeader,
4936
5098
  {
4937
5099
  title: "Sponsored Legislation",
@@ -4939,42 +5101,42 @@ function LegislationSection({ bills, isMobile }) {
4939
5101
  years,
4940
5102
  onYearChange: handleYearChange
4941
5103
  }
4942
- ), bills.length === 0 ? /* @__PURE__ */ import_react25.default.createElement(EmptyState, { message: "Sponsored legislation data is not available for this office." }) : /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, null, /* @__PURE__ */ import_react25.default.createElement("div", null, visible.map((bill, i) => {
5104
+ ), bills.length === 0 ? /* @__PURE__ */ import_react26.default.createElement(EmptyState, { message: "Sponsored legislation data is not available for this office." }) : /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement("div", null, visible.map((bill, i) => {
4943
5105
  const statusBadge = getStatusBadge(bill.status_label);
4944
- return /* @__PURE__ */ import_react25.default.createElement("div", { key: i, style: {
5106
+ return /* @__PURE__ */ import_react26.default.createElement("div", { key: i, style: {
4945
5107
  display: "flex",
4946
5108
  flexDirection: isMobile ? "column" : "row",
4947
5109
  alignItems: isMobile ? "flex-start" : "center",
4948
5110
  gap: isMobile ? spacing[1] : spacing[3],
4949
5111
  padding: `${spacing[3]} 0`,
4950
5112
  borderBottom: `1px solid ${colors.borderLight}`
4951
- } }, /* @__PURE__ */ import_react25.default.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5113
+ } }, /* @__PURE__ */ import_react26.default.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ import_react26.default.createElement("span", { style: {
4952
5114
  fontFamily: fonts.primary,
4953
5115
  fontSize: fontSizes.xs,
4954
5116
  fontWeight: fontWeights.bold,
4955
5117
  color: colors.textSecondary,
4956
5118
  marginRight: spacing[2]
4957
- } }, bill.number), /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5119
+ } }, bill.number), /* @__PURE__ */ import_react26.default.createElement("span", { style: {
4958
5120
  fontFamily: fonts.primary,
4959
5121
  fontSize: fontSizes.sm,
4960
5122
  color: colors.textSecondary
4961
- } }, bill.title)), /* @__PURE__ */ import_react25.default.createElement("div", { style: {
5123
+ } }, bill.title)), /* @__PURE__ */ import_react26.default.createElement("div", { style: {
4962
5124
  display: "flex",
4963
5125
  alignItems: "center",
4964
5126
  gap: spacing[2],
4965
5127
  flexShrink: 0,
4966
5128
  flexWrap: "wrap"
4967
- } }, /* @__PURE__ */ import_react25.default.createElement(Badge, { label: bill.status_label || "Unknown", bg: statusBadge.bg, text: statusBadge.text }), bill.introduced_at && /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5129
+ } }, /* @__PURE__ */ import_react26.default.createElement(Badge, { label: bill.status_label || "Unknown", bg: statusBadge.bg, text: statusBadge.text }), bill.introduced_at && /* @__PURE__ */ import_react26.default.createElement("span", { style: {
4968
5130
  fontFamily: fonts.primary,
4969
5131
  fontSize: fontSizes.xs,
4970
5132
  color: colors.textMuted
4971
- } }, formatDate2(bill.introduced_at)), /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5133
+ } }, formatDate2(bill.introduced_at)), /* @__PURE__ */ import_react26.default.createElement("span", { style: {
4972
5134
  fontFamily: fonts.primary,
4973
5135
  fontSize: fontSizes.xs,
4974
5136
  color: colors.textMuted,
4975
5137
  fontStyle: "italic"
4976
5138
  } }, bill.is_sponsor ? "Sponsored" : "Cosponsored")));
4977
- })), !showAll && /* @__PURE__ */ import_react25.default.createElement(
5139
+ })), !showAll && /* @__PURE__ */ import_react26.default.createElement(
4978
5140
  ShowAllLink,
4979
5141
  {
4980
5142
  totalCount: filtered.length,
@@ -4985,15 +5147,15 @@ function LegislationSection({ bills, isMobile }) {
4985
5147
  }
4986
5148
  function VotingSection({ votes, isMobile }) {
4987
5149
  const years = getYears(votes, "vote_date");
4988
- const [yearFilter, setYearFilter] = (0, import_react25.useState)("All");
4989
- const [showAll, setShowAll] = (0, import_react25.useState)(false);
5150
+ const [yearFilter, setYearFilter] = (0, import_react26.useState)("All");
5151
+ const [showAll, setShowAll] = (0, import_react26.useState)(false);
4990
5152
  const handleYearChange = (y) => {
4991
5153
  setYearFilter(y);
4992
5154
  setShowAll(false);
4993
5155
  };
4994
5156
  const filtered = yearFilter === "All" ? votes : votes.filter((v) => extractYear(v.vote_date) === yearFilter);
4995
5157
  const visible = showAll ? filtered : filtered.slice(0, DEFAULT_LIMIT);
4996
- return /* @__PURE__ */ import_react25.default.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ import_react25.default.createElement(
5158
+ return /* @__PURE__ */ import_react26.default.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ import_react26.default.createElement(
4997
5159
  SectionHeader,
4998
5160
  {
4999
5161
  title: "Voting Record",
@@ -5001,38 +5163,38 @@ function VotingSection({ votes, isMobile }) {
5001
5163
  years,
5002
5164
  onYearChange: handleYearChange
5003
5165
  }
5004
- ), votes.length === 0 ? /* @__PURE__ */ import_react25.default.createElement(EmptyState, { message: "Voting records are not available for this office." }) : /* @__PURE__ */ import_react25.default.createElement(import_react25.default.Fragment, null, /* @__PURE__ */ import_react25.default.createElement("div", null, visible.map((vote, i) => {
5166
+ ), votes.length === 0 ? /* @__PURE__ */ import_react26.default.createElement(EmptyState, { message: "Voting records are not available for this office." }) : /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement("div", null, visible.map((vote, i) => {
5005
5167
  const positionBadge = getPositionBadge(vote.position);
5006
5168
  const normPosition = normalizeText(vote.position);
5007
5169
  const topic = vote.bill_title || vote.vote_question;
5008
5170
  const sourceUrl = vote.bill_url;
5009
- return /* @__PURE__ */ import_react25.default.createElement("div", { key: i, style: {
5171
+ return /* @__PURE__ */ import_react26.default.createElement("div", { key: i, style: {
5010
5172
  display: "flex",
5011
5173
  flexDirection: isMobile ? "column" : "row",
5012
5174
  alignItems: isMobile ? "flex-start" : "center",
5013
5175
  gap: isMobile ? spacing[1] : spacing[3],
5014
5176
  padding: `${spacing[3]} 0`,
5015
5177
  borderBottom: `1px solid ${colors.borderLight}`
5016
- } }, /* @__PURE__ */ import_react25.default.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5178
+ } }, /* @__PURE__ */ import_react26.default.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5017
5179
  fontFamily: fonts.primary,
5018
5180
  fontSize: fontSizes.sm,
5019
5181
  color: colors.textSecondary
5020
- } }, topic)), /* @__PURE__ */ import_react25.default.createElement("div", { style: {
5182
+ } }, topic)), /* @__PURE__ */ import_react26.default.createElement("div", { style: {
5021
5183
  display: "flex",
5022
5184
  alignItems: "center",
5023
5185
  gap: spacing[2],
5024
5186
  flexShrink: 0,
5025
5187
  flexWrap: "wrap"
5026
- } }, vote.vote_date && /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5188
+ } }, vote.vote_date && /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5027
5189
  fontFamily: fonts.primary,
5028
5190
  fontSize: fontSizes.xs,
5029
5191
  color: colors.textMuted
5030
- } }, formatDate2(vote.vote_date)), /* @__PURE__ */ import_react25.default.createElement(Badge, { label: normPosition || "Unknown", bg: positionBadge.bg, text: positionBadge.text }), vote.result && /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5192
+ } }, formatDate2(vote.vote_date)), /* @__PURE__ */ import_react26.default.createElement(Badge, { label: normPosition || "Unknown", bg: positionBadge.bg, text: positionBadge.text }), vote.result && /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5031
5193
  fontFamily: fonts.primary,
5032
5194
  fontSize: fontSizes.xs,
5033
5195
  color: vote.result === "Passed" ? colors.success : colors.textMuted,
5034
5196
  fontWeight: fontWeights.medium
5035
- } }, vote.result), sourceUrl && /* @__PURE__ */ import_react25.default.createElement(
5197
+ } }, vote.result), sourceUrl && /* @__PURE__ */ import_react26.default.createElement(
5036
5198
  "a",
5037
5199
  {
5038
5200
  href: sourceUrl,
@@ -5053,7 +5215,7 @@ function VotingSection({ votes, isMobile }) {
5053
5215
  },
5054
5216
  "Source"
5055
5217
  )));
5056
- })), !showAll && /* @__PURE__ */ import_react25.default.createElement(
5218
+ })), !showAll && /* @__PURE__ */ import_react26.default.createElement(
5057
5219
  ShowAllLink,
5058
5220
  {
5059
5221
  totalCount: filtered.length,
@@ -5072,20 +5234,20 @@ function LegislativeRecord({
5072
5234
  }) {
5073
5235
  const isMobile = useMediaQuery("(max-width: 768px)");
5074
5236
  if (loading) {
5075
- return /* @__PURE__ */ import_react25.default.createElement(Spinner, null);
5237
+ return /* @__PURE__ */ import_react26.default.createElement(Spinner, null);
5076
5238
  }
5077
- return /* @__PURE__ */ import_react25.default.createElement("div", { style: { fontFamily: fonts.primary } }, politicianName && /* @__PURE__ */ import_react25.default.createElement("h1", { style: {
5239
+ return /* @__PURE__ */ import_react26.default.createElement("div", { style: { fontFamily: fonts.primary } }, politicianName && /* @__PURE__ */ import_react26.default.createElement("h1", { style: {
5078
5240
  fontFamily: fonts.primary,
5079
5241
  fontSize: isMobile ? fontSizes["2xl"] : fontSizes["4xl"],
5080
5242
  fontWeight: fontWeights.bold,
5081
5243
  color: colors.evTeal,
5082
5244
  marginBottom: spacing[8],
5083
5245
  marginTop: 0
5084
- } }, "Legislative Record: ", politicianName), /* @__PURE__ */ import_react25.default.createElement(CommitteesSection, { committees, leadership }), /* @__PURE__ */ import_react25.default.createElement(LegislationSection, { bills, isMobile }), /* @__PURE__ */ import_react25.default.createElement(VotingSection, { votes, isMobile }));
5246
+ } }, "Legislative Record: ", politicianName), /* @__PURE__ */ import_react26.default.createElement(CommitteesSection, { committees, leadership }), /* @__PURE__ */ import_react26.default.createElement(LegislationSection, { bills, isMobile }), /* @__PURE__ */ import_react26.default.createElement(VotingSection, { votes, isMobile }));
5085
5247
  }
5086
5248
 
5087
5249
  // src/JudicialRecordDetail.jsx
5088
- var import_react26 = __toESM(require("react"));
5250
+ var import_react27 = __toESM(require("react"));
5089
5251
  var containerStyle = {
5090
5252
  fontFamily: "'Manrope', sans-serif",
5091
5253
  maxWidth: "800px"
@@ -5170,7 +5332,7 @@ var emptyStateStyle = {
5170
5332
  function JudicialRecordDetail({ politician = {}, judicialRecord, onBack }) {
5171
5333
  var _a;
5172
5334
  if (!judicialRecord) {
5173
- return /* @__PURE__ */ import_react26.default.createElement("div", { style: containerStyle }, /* @__PURE__ */ import_react26.default.createElement("button", { style: backBtnStyle, onClick: onBack }, "\u2190 Back to Profile"), /* @__PURE__ */ import_react26.default.createElement("div", { style: emptyStateStyle }, "No judicial record data available."));
5335
+ return /* @__PURE__ */ import_react27.default.createElement("div", { style: containerStyle }, /* @__PURE__ */ import_react27.default.createElement("button", { style: backBtnStyle, onClick: onBack }, "\u2190 Back to Profile"), /* @__PURE__ */ import_react27.default.createElement("div", { style: emptyStateStyle }, "No judicial record data available."));
5174
5336
  }
5175
5337
  const {
5176
5338
  judge_detail: detail,
@@ -5179,13 +5341,13 @@ function JudicialRecordDetail({ politician = {}, judicialRecord, onBack }) {
5179
5341
  disciplinary_records: disciplinary = []
5180
5342
  } = judicialRecord;
5181
5343
  const displayName = politician.full_name || `${politician.first_name || ""} ${politician.last_name || ""}`.trim();
5182
- return /* @__PURE__ */ import_react26.default.createElement("div", { style: containerStyle }, /* @__PURE__ */ import_react26.default.createElement("button", { style: backBtnStyle, onClick: onBack }, "\u2190 Back to Profile"), /* @__PURE__ */ import_react26.default.createElement("h1", { style: nameStyle }, displayName), /* @__PURE__ */ import_react26.default.createElement("p", { style: roleStyle }, (detail == null ? void 0 : detail.court_role) || politician.office_title, (detail == null ? void 0 : detail.date_seated) && ` \xB7 Seated ${formatDate(detail.date_seated)}`), detail && /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement("h2", { style: sectionHeadingStyle }, "Background"), detail.appointed_by && /* @__PURE__ */ import_react26.default.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ import_react26.default.createElement("span", { style: detailLabelStyle }, "Appointed by"), /* @__PURE__ */ import_react26.default.createElement("span", { style: detailValueStyle }, detail.appointed_by, " (", detail.appointing_president_party, ")")), detail.confirmation_vote && /* @__PURE__ */ import_react26.default.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ import_react26.default.createElement("span", { style: detailLabelStyle }, "Confirmation Vote"), /* @__PURE__ */ import_react26.default.createElement("span", { style: detailValueStyle }, detail.confirmation_vote)), detail.election_type && /* @__PURE__ */ import_react26.default.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ import_react26.default.createElement("span", { style: detailLabelStyle }, "Election Type"), /* @__PURE__ */ import_react26.default.createElement("span", { style: detailValueStyle }, detail.election_type === "retention" ? "Retention (Yes/No)" : "Contested Election")), ((_a = detail.areas_of_focus) == null ? void 0 : _a.length) > 0 && /* @__PURE__ */ import_react26.default.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ import_react26.default.createElement("span", { style: detailLabelStyle }, "Areas of Focus"), /* @__PURE__ */ import_react26.default.createElement("span", { style: detailValueStyle }, detail.areas_of_focus.join(", ")))), /* @__PURE__ */ import_react26.default.createElement("h2", { style: sectionHeadingStyle }, "Performance Evaluations"), evaluations.length === 0 ? /* @__PURE__ */ import_react26.default.createElement("div", { style: emptyStateStyle }, "No evaluation data available yet.") : /* @__PURE__ */ import_react26.default.createElement("table", { style: tableStyle }, /* @__PURE__ */ import_react26.default.createElement("thead", null, /* @__PURE__ */ import_react26.default.createElement("tr", null, /* @__PURE__ */ import_react26.default.createElement("th", { style: thStyle }, "Source"), /* @__PURE__ */ import_react26.default.createElement("th", { style: thStyle }, "Rating"), /* @__PURE__ */ import_react26.default.createElement("th", { style: thStyle }, "Date"))), /* @__PURE__ */ import_react26.default.createElement("tbody", null, evaluations.map((ev, i) => /* @__PURE__ */ import_react26.default.createElement("tr", { key: i }, /* @__PURE__ */ import_react26.default.createElement("td", { style: tdStyle }, ev.source_url ? /* @__PURE__ */ import_react26.default.createElement("a", { href: ev.source_url, target: "_blank", rel: "noopener noreferrer", style: { color: "#319795" } }, ev.source) : ev.source), /* @__PURE__ */ import_react26.default.createElement("td", { style: { ...tdStyle, fontWeight: 600 } }, ev.rating), /* @__PURE__ */ import_react26.default.createElement("td", { style: tdStyle }, formatDate(ev.rating_date)))))), /* @__PURE__ */ import_react26.default.createElement("h2", { style: sectionHeadingStyle }, "Performance Metrics"), metrics.length === 0 ? /* @__PURE__ */ import_react26.default.createElement("div", { style: emptyStateStyle }, "No performance metric data available yet.") : /* @__PURE__ */ import_react26.default.createElement("table", { style: tableStyle }, /* @__PURE__ */ import_react26.default.createElement("thead", null, /* @__PURE__ */ import_react26.default.createElement("tr", null, /* @__PURE__ */ import_react26.default.createElement("th", { style: thStyle }, "Metric"), /* @__PURE__ */ import_react26.default.createElement("th", { style: thStyle }, "Value"), /* @__PURE__ */ import_react26.default.createElement("th", { style: thStyle }, "Context"), /* @__PURE__ */ import_react26.default.createElement("th", { style: thStyle }, "Period"))), /* @__PURE__ */ import_react26.default.createElement("tbody", null, metrics.map((m, i) => /* @__PURE__ */ import_react26.default.createElement("tr", { key: i }, /* @__PURE__ */ import_react26.default.createElement("td", { style: { ...tdStyle, fontWeight: 600 } }, METRIC_LABELS[m.metric_type] || m.metric_type.replace(/_/g, " ")), /* @__PURE__ */ import_react26.default.createElement("td", { style: tdStyle }, formatMetricValue(m.metric_type, m.value)), /* @__PURE__ */ import_react26.default.createElement("td", { style: { ...tdStyle, color: "#718096", fontSize: "13px" } }, m.context_label), /* @__PURE__ */ import_react26.default.createElement("td", { style: tdStyle }, m.time_period))))), disciplinary.length > 0 && /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement("h2", { style: sectionHeadingStyle }, "Disciplinary History"), disciplinary.map((d, i) => /* @__PURE__ */ import_react26.default.createElement("div", { key: i, style: {
5344
+ return /* @__PURE__ */ import_react27.default.createElement("div", { style: containerStyle }, /* @__PURE__ */ import_react27.default.createElement("button", { style: backBtnStyle, onClick: onBack }, "\u2190 Back to Profile"), /* @__PURE__ */ import_react27.default.createElement("h1", { style: nameStyle }, displayName), /* @__PURE__ */ import_react27.default.createElement("p", { style: roleStyle }, (detail == null ? void 0 : detail.court_role) || politician.office_title, (detail == null ? void 0 : detail.date_seated) && ` \xB7 Seated ${formatDate(detail.date_seated)}`), detail && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, /* @__PURE__ */ import_react27.default.createElement("h2", { style: sectionHeadingStyle }, "Background"), detail.appointed_by && /* @__PURE__ */ import_react27.default.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ import_react27.default.createElement("span", { style: detailLabelStyle }, "Appointed by"), /* @__PURE__ */ import_react27.default.createElement("span", { style: detailValueStyle }, detail.appointed_by, " (", detail.appointing_president_party, ")")), detail.confirmation_vote && /* @__PURE__ */ import_react27.default.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ import_react27.default.createElement("span", { style: detailLabelStyle }, "Confirmation Vote"), /* @__PURE__ */ import_react27.default.createElement("span", { style: detailValueStyle }, detail.confirmation_vote)), detail.election_type && /* @__PURE__ */ import_react27.default.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ import_react27.default.createElement("span", { style: detailLabelStyle }, "Election Type"), /* @__PURE__ */ import_react27.default.createElement("span", { style: detailValueStyle }, detail.election_type === "retention" ? "Retention (Yes/No)" : "Contested Election")), ((_a = detail.areas_of_focus) == null ? void 0 : _a.length) > 0 && /* @__PURE__ */ import_react27.default.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ import_react27.default.createElement("span", { style: detailLabelStyle }, "Areas of Focus"), /* @__PURE__ */ import_react27.default.createElement("span", { style: detailValueStyle }, detail.areas_of_focus.join(", ")))), /* @__PURE__ */ import_react27.default.createElement("h2", { style: sectionHeadingStyle }, "Performance Evaluations"), evaluations.length === 0 ? /* @__PURE__ */ import_react27.default.createElement("div", { style: emptyStateStyle }, "No evaluation data available yet.") : /* @__PURE__ */ import_react27.default.createElement("table", { style: tableStyle }, /* @__PURE__ */ import_react27.default.createElement("thead", null, /* @__PURE__ */ import_react27.default.createElement("tr", null, /* @__PURE__ */ import_react27.default.createElement("th", { style: thStyle }, "Source"), /* @__PURE__ */ import_react27.default.createElement("th", { style: thStyle }, "Rating"), /* @__PURE__ */ import_react27.default.createElement("th", { style: thStyle }, "Date"))), /* @__PURE__ */ import_react27.default.createElement("tbody", null, evaluations.map((ev, i) => /* @__PURE__ */ import_react27.default.createElement("tr", { key: i }, /* @__PURE__ */ import_react27.default.createElement("td", { style: tdStyle }, ev.source_url ? /* @__PURE__ */ import_react27.default.createElement("a", { href: ev.source_url, target: "_blank", rel: "noopener noreferrer", style: { color: "#319795" } }, ev.source) : ev.source), /* @__PURE__ */ import_react27.default.createElement("td", { style: { ...tdStyle, fontWeight: 600 } }, ev.rating), /* @__PURE__ */ import_react27.default.createElement("td", { style: tdStyle }, formatDate(ev.rating_date)))))), /* @__PURE__ */ import_react27.default.createElement("h2", { style: sectionHeadingStyle }, "Performance Metrics"), metrics.length === 0 ? /* @__PURE__ */ import_react27.default.createElement("div", { style: emptyStateStyle }, "No performance metric data available yet.") : /* @__PURE__ */ import_react27.default.createElement("table", { style: tableStyle }, /* @__PURE__ */ import_react27.default.createElement("thead", null, /* @__PURE__ */ import_react27.default.createElement("tr", null, /* @__PURE__ */ import_react27.default.createElement("th", { style: thStyle }, "Metric"), /* @__PURE__ */ import_react27.default.createElement("th", { style: thStyle }, "Value"), /* @__PURE__ */ import_react27.default.createElement("th", { style: thStyle }, "Context"), /* @__PURE__ */ import_react27.default.createElement("th", { style: thStyle }, "Period"))), /* @__PURE__ */ import_react27.default.createElement("tbody", null, metrics.map((m, i) => /* @__PURE__ */ import_react27.default.createElement("tr", { key: i }, /* @__PURE__ */ import_react27.default.createElement("td", { style: { ...tdStyle, fontWeight: 600 } }, METRIC_LABELS[m.metric_type] || m.metric_type.replace(/_/g, " ")), /* @__PURE__ */ import_react27.default.createElement("td", { style: tdStyle }, formatMetricValue(m.metric_type, m.value)), /* @__PURE__ */ import_react27.default.createElement("td", { style: { ...tdStyle, color: "#718096", fontSize: "13px" } }, m.context_label), /* @__PURE__ */ import_react27.default.createElement("td", { style: tdStyle }, m.time_period))))), disciplinary.length > 0 && /* @__PURE__ */ import_react27.default.createElement(import_react27.default.Fragment, null, /* @__PURE__ */ import_react27.default.createElement("h2", { style: sectionHeadingStyle }, "Disciplinary History"), disciplinary.map((d, i) => /* @__PURE__ */ import_react27.default.createElement("div", { key: i, style: {
5183
5345
  borderLeft: "3px solid #fc8181",
5184
5346
  backgroundColor: "#fff5f5",
5185
5347
  borderRadius: "0 6px 6px 0",
5186
5348
  padding: "12px 16px",
5187
5349
  marginBottom: "10px"
5188
- } }, /* @__PURE__ */ import_react26.default.createElement("div", { style: { fontWeight: 700, color: "#742a2a", fontSize: "14px" } }, d.record_type, " \u2014 ", formatDate(d.record_date)), d.description && /* @__PURE__ */ import_react26.default.createElement("div", { style: { color: "#9b2c2c", fontSize: "13px", marginTop: "4px" } }, d.description), d.source_url && /* @__PURE__ */ import_react26.default.createElement(
5350
+ } }, /* @__PURE__ */ import_react27.default.createElement("div", { style: { fontWeight: 700, color: "#742a2a", fontSize: "14px" } }, d.record_type, " \u2014 ", formatDate(d.record_date)), d.description && /* @__PURE__ */ import_react27.default.createElement("div", { style: { color: "#9b2c2c", fontSize: "13px", marginTop: "4px" } }, d.description), d.source_url && /* @__PURE__ */ import_react27.default.createElement(
5189
5351
  "a",
5190
5352
  {
5191
5353
  href: d.source_url,
@@ -5198,7 +5360,7 @@ function JudicialRecordDetail({ politician = {}, judicialRecord, onBack }) {
5198
5360
  }
5199
5361
 
5200
5362
  // src/AuthForm.jsx
5201
- var import_react27 = __toESM(require("react"));
5363
+ var import_react28 = __toESM(require("react"));
5202
5364
  function AuthForm({
5203
5365
  logoSrc = "/EVLogo.svg",
5204
5366
  appName = "Empowered Vote",
@@ -5209,11 +5371,11 @@ function AuthForm({
5209
5371
  error = null,
5210
5372
  submitting = false
5211
5373
  }) {
5212
- const [username, setUsername] = (0, import_react27.useState)("");
5213
- const [password, setPassword] = (0, import_react27.useState)("");
5214
- const [confirmPassword, setConfirmPassword] = (0, import_react27.useState)("");
5215
- const [showPasswords, setShowPasswords] = (0, import_react27.useState)(false);
5216
- const [passwordMismatch, setPasswordMismatch] = (0, import_react27.useState)(false);
5374
+ const [username, setUsername] = (0, import_react28.useState)("");
5375
+ const [password, setPassword] = (0, import_react28.useState)("");
5376
+ const [confirmPassword, setConfirmPassword] = (0, import_react28.useState)("");
5377
+ const [showPasswords, setShowPasswords] = (0, import_react28.useState)(false);
5378
+ const [passwordMismatch, setPasswordMismatch] = (0, import_react28.useState)(false);
5217
5379
  const isLogin = mode === "login";
5218
5380
  const handleSubmit = (e) => {
5219
5381
  e.preventDefault();
@@ -5225,7 +5387,7 @@ function AuthForm({
5225
5387
  setPasswordMismatch(false);
5226
5388
  onSubmit == null ? void 0 : onSubmit(username.trim(), password);
5227
5389
  };
5228
- const EyeOpen = () => /* @__PURE__ */ import_react27.default.createElement(
5390
+ const EyeOpen = () => /* @__PURE__ */ import_react28.default.createElement(
5229
5391
  "svg",
5230
5392
  {
5231
5393
  xmlns: "http://www.w3.org/2000/svg",
@@ -5235,7 +5397,7 @@ function AuthForm({
5235
5397
  stroke: "currentColor",
5236
5398
  style: { width: "20px", height: "20px" }
5237
5399
  },
5238
- /* @__PURE__ */ import_react27.default.createElement(
5400
+ /* @__PURE__ */ import_react28.default.createElement(
5239
5401
  "path",
5240
5402
  {
5241
5403
  strokeLinecap: "round",
@@ -5243,7 +5405,7 @@ function AuthForm({
5243
5405
  d: "M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z"
5244
5406
  }
5245
5407
  ),
5246
- /* @__PURE__ */ import_react27.default.createElement(
5408
+ /* @__PURE__ */ import_react28.default.createElement(
5247
5409
  "path",
5248
5410
  {
5249
5411
  strokeLinecap: "round",
@@ -5252,7 +5414,7 @@ function AuthForm({
5252
5414
  }
5253
5415
  )
5254
5416
  );
5255
- const EyeClosed = () => /* @__PURE__ */ import_react27.default.createElement(
5417
+ const EyeClosed = () => /* @__PURE__ */ import_react28.default.createElement(
5256
5418
  "svg",
5257
5419
  {
5258
5420
  xmlns: "http://www.w3.org/2000/svg",
@@ -5262,7 +5424,7 @@ function AuthForm({
5262
5424
  stroke: "currentColor",
5263
5425
  style: { width: "20px", height: "20px" }
5264
5426
  },
5265
- /* @__PURE__ */ import_react27.default.createElement(
5427
+ /* @__PURE__ */ import_react28.default.createElement(
5266
5428
  "path",
5267
5429
  {
5268
5430
  strokeLinecap: "round",
@@ -5271,17 +5433,17 @@ function AuthForm({
5271
5433
  }
5272
5434
  )
5273
5435
  );
5274
- const PasswordToggle = () => /* @__PURE__ */ import_react27.default.createElement(
5436
+ const PasswordToggle = () => /* @__PURE__ */ import_react28.default.createElement(
5275
5437
  "button",
5276
5438
  {
5277
5439
  type: "button",
5278
5440
  onClick: () => setShowPasswords((prev) => !prev),
5279
5441
  style: styles.passwordToggle
5280
5442
  },
5281
- showPasswords ? /* @__PURE__ */ import_react27.default.createElement(EyeOpen, null) : /* @__PURE__ */ import_react27.default.createElement(EyeClosed, null)
5443
+ showPasswords ? /* @__PURE__ */ import_react28.default.createElement(EyeOpen, null) : /* @__PURE__ */ import_react28.default.createElement(EyeClosed, null)
5282
5444
  );
5283
5445
  const displayError = passwordMismatch ? "Passwords do not match." : error;
5284
- return /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.wrapper }, /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.container }, /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.header }, logoSrc && /* @__PURE__ */ import_react27.default.createElement("img", { src: logoSrc, alt: appName, style: styles.logo }), appName && /* @__PURE__ */ import_react27.default.createElement("h1", { style: styles.appName }, appName), appSubtitle && /* @__PURE__ */ import_react27.default.createElement("p", { style: styles.appSubtitle }, appSubtitle)), /* @__PURE__ */ import_react27.default.createElement("form", { onSubmit: handleSubmit, style: styles.card }, /* @__PURE__ */ import_react27.default.createElement("h2", { style: styles.cardTitle }, isLogin ? "Welcome Back" : "Create Account"), /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ import_react27.default.createElement("label", { style: styles.label }, "Username"), /* @__PURE__ */ import_react27.default.createElement(
5446
+ return /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.wrapper }, /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.container }, /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.header }, logoSrc && /* @__PURE__ */ import_react28.default.createElement("img", { src: logoSrc, alt: appName, style: styles.logo }), appName && /* @__PURE__ */ import_react28.default.createElement("h1", { style: styles.appName }, appName), appSubtitle && /* @__PURE__ */ import_react28.default.createElement("p", { style: styles.appSubtitle }, appSubtitle)), /* @__PURE__ */ import_react28.default.createElement("form", { onSubmit: handleSubmit, style: styles.card }, /* @__PURE__ */ import_react28.default.createElement("h2", { style: styles.cardTitle }, isLogin ? "Welcome Back" : "Create Account"), /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ import_react28.default.createElement("label", { style: styles.label }, "Username"), /* @__PURE__ */ import_react28.default.createElement(
5285
5447
  "input",
5286
5448
  {
5287
5449
  type: "text",
@@ -5298,7 +5460,7 @@ function AuthForm({
5298
5460
  },
5299
5461
  required: true
5300
5462
  }
5301
- )), /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ import_react27.default.createElement("label", { style: styles.label }, "Password"), /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.passwordWrapper }, /* @__PURE__ */ import_react27.default.createElement(
5463
+ )), /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ import_react28.default.createElement("label", { style: styles.label }, "Password"), /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.passwordWrapper }, /* @__PURE__ */ import_react28.default.createElement(
5302
5464
  "input",
5303
5465
  {
5304
5466
  type: showPasswords ? "text" : "password",
@@ -5314,7 +5476,7 @@ function AuthForm({
5314
5476
  },
5315
5477
  required: true
5316
5478
  }
5317
- ), /* @__PURE__ */ import_react27.default.createElement(PasswordToggle, null))), !isLogin && /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ import_react27.default.createElement("label", { style: styles.label }, "Confirm Password"), /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.passwordWrapper }, /* @__PURE__ */ import_react27.default.createElement(
5479
+ ), /* @__PURE__ */ import_react28.default.createElement(PasswordToggle, null))), !isLogin && /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ import_react28.default.createElement("label", { style: styles.label }, "Confirm Password"), /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.passwordWrapper }, /* @__PURE__ */ import_react28.default.createElement(
5318
5480
  "input",
5319
5481
  {
5320
5482
  type: showPasswords ? "text" : "password",
@@ -5330,7 +5492,7 @@ function AuthForm({
5330
5492
  },
5331
5493
  required: true
5332
5494
  }
5333
- ), /* @__PURE__ */ import_react27.default.createElement(PasswordToggle, null))), displayError && /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.errorBox }, /* @__PURE__ */ import_react27.default.createElement("p", { style: styles.errorText }, displayError)), /* @__PURE__ */ import_react27.default.createElement(
5495
+ ), /* @__PURE__ */ import_react28.default.createElement(PasswordToggle, null))), displayError && /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.errorBox }, /* @__PURE__ */ import_react28.default.createElement("p", { style: styles.errorText }, displayError)), /* @__PURE__ */ import_react28.default.createElement(
5334
5496
  "button",
5335
5497
  {
5336
5498
  type: "submit",
@@ -5348,7 +5510,7 @@ function AuthForm({
5348
5510
  }
5349
5511
  },
5350
5512
  submitting ? isLogin ? "Signing In..." : "Creating Account..." : isLogin ? "Sign In" : "Create Account"
5351
- ), onModeSwitch && /* @__PURE__ */ import_react27.default.createElement("div", { style: styles.modeSwitch }, /* @__PURE__ */ import_react27.default.createElement("p", { style: styles.modeSwitchText }, isLogin ? "Don't have an account?" : "Already have an account?"), /* @__PURE__ */ import_react27.default.createElement(
5513
+ ), onModeSwitch && /* @__PURE__ */ import_react28.default.createElement("div", { style: styles.modeSwitch }, /* @__PURE__ */ import_react28.default.createElement("p", { style: styles.modeSwitchText }, isLogin ? "Don't have an account?" : "Already have an account?"), /* @__PURE__ */ import_react28.default.createElement(
5352
5514
  "button",
5353
5515
  {
5354
5516
  type: "button",
@@ -5521,9 +5683,9 @@ var styles = {
5521
5683
  };
5522
5684
 
5523
5685
  // src/TopicTierBadge.jsx
5524
- var import_react28 = __toESM(require("react"));
5686
+ var import_react29 = __toESM(require("react"));
5525
5687
  function LandmarkIcon({ size = 14 }) {
5526
- return /* @__PURE__ */ import_react28.default.createElement(
5688
+ return /* @__PURE__ */ import_react29.default.createElement(
5527
5689
  "svg",
5528
5690
  {
5529
5691
  width: size,
@@ -5537,16 +5699,16 @@ function LandmarkIcon({ size = 14 }) {
5537
5699
  xmlns: "http://www.w3.org/2000/svg",
5538
5700
  "aria-hidden": "true"
5539
5701
  },
5540
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 18v-7" }),
5541
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M11.12 2.198a2 2 0 0 1 1.76.006l7.866 3.847c.476.233.31.949-.22.949H3.474c-.53 0-.695-.716-.22-.949z" }),
5542
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M14 18v-7" }),
5543
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M18 18v-7" }),
5544
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M3 22h18" }),
5545
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M6 18v-7" })
5702
+ /* @__PURE__ */ import_react29.default.createElement("path", { d: "M10 18v-7" }),
5703
+ /* @__PURE__ */ import_react29.default.createElement("path", { d: "M11.12 2.198a2 2 0 0 1 1.76.006l7.866 3.847c.476.233.31.949-.22.949H3.474c-.53 0-.695-.716-.22-.949z" }),
5704
+ /* @__PURE__ */ import_react29.default.createElement("path", { d: "M14 18v-7" }),
5705
+ /* @__PURE__ */ import_react29.default.createElement("path", { d: "M18 18v-7" }),
5706
+ /* @__PURE__ */ import_react29.default.createElement("path", { d: "M3 22h18" }),
5707
+ /* @__PURE__ */ import_react29.default.createElement("path", { d: "M6 18v-7" })
5546
5708
  );
5547
5709
  }
5548
5710
  function Building2Icon({ size = 14 }) {
5549
- return /* @__PURE__ */ import_react28.default.createElement(
5711
+ return /* @__PURE__ */ import_react29.default.createElement(
5550
5712
  "svg",
5551
5713
  {
5552
5714
  width: size,
@@ -5560,17 +5722,17 @@ function Building2Icon({ size = 14 }) {
5560
5722
  xmlns: "http://www.w3.org/2000/svg",
5561
5723
  "aria-hidden": "true"
5562
5724
  },
5563
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z" }),
5564
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M6 12H4a2 2 0 0 0-2 2v8h4" }),
5565
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M18 9h2a2 2 0 0 1 2 2v11h-4" }),
5566
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 6h4" }),
5567
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 10h4" }),
5568
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 14h4" }),
5569
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 18h4" })
5725
+ /* @__PURE__ */ import_react29.default.createElement("path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z" }),
5726
+ /* @__PURE__ */ import_react29.default.createElement("path", { d: "M6 12H4a2 2 0 0 0-2 2v8h4" }),
5727
+ /* @__PURE__ */ import_react29.default.createElement("path", { d: "M18 9h2a2 2 0 0 1 2 2v11h-4" }),
5728
+ /* @__PURE__ */ import_react29.default.createElement("path", { d: "M10 6h4" }),
5729
+ /* @__PURE__ */ import_react29.default.createElement("path", { d: "M10 10h4" }),
5730
+ /* @__PURE__ */ import_react29.default.createElement("path", { d: "M10 14h4" }),
5731
+ /* @__PURE__ */ import_react29.default.createElement("path", { d: "M10 18h4" })
5570
5732
  );
5571
5733
  }
5572
5734
  function HomeIcon({ size = 14 }) {
5573
- return /* @__PURE__ */ import_react28.default.createElement(
5735
+ return /* @__PURE__ */ import_react29.default.createElement(
5574
5736
  "svg",
5575
5737
  {
5576
5738
  width: size,
@@ -5584,8 +5746,8 @@ function HomeIcon({ size = 14 }) {
5584
5746
  xmlns: "http://www.w3.org/2000/svg",
5585
5747
  "aria-hidden": "true"
5586
5748
  },
5587
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" }),
5588
- /* @__PURE__ */ import_react28.default.createElement("polyline", { points: "9 22 9 12 15 12 15 22" })
5749
+ /* @__PURE__ */ import_react29.default.createElement("path", { d: "m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" }),
5750
+ /* @__PURE__ */ import_react29.default.createElement("polyline", { points: "9 22 9 12 15 12 15 22" })
5589
5751
  );
5590
5752
  }
5591
5753
  var TIER_INFO = {
@@ -5645,7 +5807,7 @@ function TopicTierBadge({
5645
5807
  userSelect: "none"
5646
5808
  };
5647
5809
  };
5648
- return /* @__PURE__ */ import_react28.default.createElement(
5810
+ return /* @__PURE__ */ import_react29.default.createElement(
5649
5811
  "span",
5650
5812
  {
5651
5813
  className: "ev-topic-tier-badge",
@@ -5655,13 +5817,13 @@ function TopicTierBadge({
5655
5817
  },
5656
5818
  effectiveTiers.map((tier) => {
5657
5819
  const { label, Icon } = TIER_INFO[tier];
5658
- return /* @__PURE__ */ import_react28.default.createElement("span", { key: tier, style: itemStyle(tier) }, /* @__PURE__ */ import_react28.default.createElement(Icon, { size: sizeStyle.iconSize }), !iconOnly && /* @__PURE__ */ import_react28.default.createElement("span", null, label));
5820
+ return /* @__PURE__ */ import_react29.default.createElement("span", { key: tier, style: itemStyle(tier) }, /* @__PURE__ */ import_react29.default.createElement(Icon, { size: sizeStyle.iconSize }), !iconOnly && /* @__PURE__ */ import_react29.default.createElement("span", null, label));
5659
5821
  })
5660
5822
  );
5661
5823
  }
5662
5824
 
5663
5825
  // src/CompassCoverageCallout.jsx
5664
- var import_react29 = __toESM(require("react"));
5826
+ var import_react30 = __toESM(require("react"));
5665
5827
  var TIER_LABELS = {
5666
5828
  federal: "federal",
5667
5829
  state: "state",
@@ -5674,7 +5836,7 @@ function CompassCoverageCallout({
5674
5836
  compassUrl,
5675
5837
  onDismiss
5676
5838
  }) {
5677
- const [dismissed, setDismissed] = (0, import_react29.useState)(false);
5839
+ const [dismissed, setDismissed] = (0, import_react30.useState)(false);
5678
5840
  if (dismissed) return null;
5679
5841
  const tierLabel = TIER_LABELS[tier] || tier;
5680
5842
  const tierStyle = tierColors[tier] || tierColors.federal;
@@ -5725,15 +5887,15 @@ function CompassCoverageCallout({
5725
5887
  setDismissed(true);
5726
5888
  if (onDismiss) onDismiss();
5727
5889
  };
5728
- return /* @__PURE__ */ import_react29.default.createElement(
5890
+ return /* @__PURE__ */ import_react30.default.createElement(
5729
5891
  "div",
5730
5892
  {
5731
5893
  className: "ev-compass-coverage-callout",
5732
5894
  role: "status",
5733
5895
  style: containerStyle2
5734
5896
  },
5735
- /* @__PURE__ */ import_react29.default.createElement("div", { style: textStyle }, /* @__PURE__ */ import_react29.default.createElement("div", { style: headlineStyle }, "Your compass covers ", tierLabel, " issues lightly"), /* @__PURE__ */ import_react29.default.createElement("div", null, count === 0 ? `None of your ${totalSelected != null ? totalSelected : "selected"} compass topics apply at the ${tierLabel} level. ` : `Only ${count} of your ${totalSelected != null ? totalSelected : "selected"} compass topics apply at the ${tierLabel} level. `, "Add more ", tierLabel, "-applicable topics to get better comparisons with ", tierLabel, " officials."), /* @__PURE__ */ import_react29.default.createElement("a", { href: compassUrl, style: ctaStyle }, "Add ", tierLabel, " topics \u2192")),
5736
- onDismiss !== void 0 && /* @__PURE__ */ import_react29.default.createElement(
5897
+ /* @__PURE__ */ import_react30.default.createElement("div", { style: textStyle }, /* @__PURE__ */ import_react30.default.createElement("div", { style: headlineStyle }, "Your compass covers ", tierLabel, " issues lightly"), /* @__PURE__ */ import_react30.default.createElement("div", null, count === 0 ? `None of your ${totalSelected != null ? totalSelected : "selected"} compass topics apply at the ${tierLabel} level. ` : `Only ${count} of your ${totalSelected != null ? totalSelected : "selected"} compass topics apply at the ${tierLabel} level. `, "Add more ", tierLabel, "-applicable topics to get better comparisons with ", tierLabel, " officials."), /* @__PURE__ */ import_react30.default.createElement("a", { href: compassUrl, style: ctaStyle }, "Add ", tierLabel, " topics \u2192")),
5898
+ onDismiss !== void 0 && /* @__PURE__ */ import_react30.default.createElement(
5737
5899
  "button",
5738
5900
  {
5739
5901
  onClick: handleDismiss,
@@ -5746,7 +5908,7 @@ function CompassCoverageCallout({
5746
5908
  }
5747
5909
 
5748
5910
  // src/ExpandCompassNudge.jsx
5749
- var import_react30 = __toESM(require("react"));
5911
+ var import_react31 = __toESM(require("react"));
5750
5912
  function ExpandCompassNudge({
5751
5913
  politicianName,
5752
5914
  missingCount,
@@ -5793,7 +5955,7 @@ function ExpandCompassNudge({
5793
5955
  };
5794
5956
  const topicsLabel = missingCount === 1 ? "topic" : "topics";
5795
5957
  const speakerName = politicianName || "This politician";
5796
- return /* @__PURE__ */ import_react30.default.createElement("div", { className: "ev-expand-compass-nudge", style: containerStyle2, role: "region" }, /* @__PURE__ */ import_react30.default.createElement("p", { style: headlineStyle }, "Want a richer comparison?"), /* @__PURE__ */ import_react30.default.createElement("p", { style: bodyStyle }, speakerName, " has stances on ", missingCount, " more ", topicsLabel, " you haven't answered yet. Expand your compass to see where you stand on all of them."), /* @__PURE__ */ import_react30.default.createElement("a", { href: compassUrl, style: ctaStyle }, "Expand my compass \u2192"));
5958
+ return /* @__PURE__ */ import_react31.default.createElement("div", { className: "ev-expand-compass-nudge", style: containerStyle2, role: "region" }, /* @__PURE__ */ import_react31.default.createElement("p", { style: headlineStyle }, "Want a richer comparison?"), /* @__PURE__ */ import_react31.default.createElement("p", { style: bodyStyle }, speakerName, " has stances on ", missingCount, " more ", topicsLabel, " you haven't answered yet. Expand your compass to see where you stand on all of them."), /* @__PURE__ */ import_react31.default.createElement("a", { href: compassUrl, style: ctaStyle }, "Expand my compass \u2192"));
5797
5959
  }
5798
5960
 
5799
5961
  // src/computeTierCoverage.js
@@ -5814,7 +5976,7 @@ function computeTierCoverage(topics) {
5814
5976
  }
5815
5977
 
5816
5978
  // src/useEvContextPromotion.js
5817
- var import_react31 = require("react");
5979
+ var import_react32 = require("react");
5818
5980
  function useEvContextPromotion({
5819
5981
  domain,
5820
5982
  isLoggedIn,
@@ -5823,23 +5985,23 @@ function useEvContextPromotion({
5823
5985
  apiWriter,
5824
5986
  enabled = true
5825
5987
  }) {
5826
- const [shouldPrompt, setShouldPrompt] = (0, import_react31.useState)(false);
5827
- const [payload, setPayload] = (0, import_react31.useState)(null);
5828
- const [status, setStatus] = (0, import_react31.useState)("idle");
5829
- const [error, setError] = (0, import_react31.useState)(null);
5830
- const apiDataRef = (0, import_react31.useRef)(apiData);
5988
+ const [shouldPrompt, setShouldPrompt] = (0, import_react32.useState)(false);
5989
+ const [payload, setPayload] = (0, import_react32.useState)(null);
5990
+ const [status, setStatus] = (0, import_react32.useState)("idle");
5991
+ const [error, setError] = (0, import_react32.useState)(null);
5992
+ const apiDataRef = (0, import_react32.useRef)(apiData);
5831
5993
  apiDataRef.current = apiData;
5832
- const userIdRef = (0, import_react31.useRef)(userId);
5994
+ const userIdRef = (0, import_react32.useRef)(userId);
5833
5995
  userIdRef.current = userId;
5834
- const isLoggedInRef = (0, import_react31.useRef)(isLoggedIn);
5996
+ const isLoggedInRef = (0, import_react32.useRef)(isLoggedIn);
5835
5997
  isLoggedInRef.current = isLoggedIn;
5836
- const enabledRef = (0, import_react31.useRef)(enabled);
5998
+ const enabledRef = (0, import_react32.useRef)(enabled);
5837
5999
  enabledRef.current = enabled;
5838
- const domainRef = (0, import_react31.useRef)(domain);
6000
+ const domainRef = (0, import_react32.useRef)(domain);
5839
6001
  domainRef.current = domain;
5840
- const apiWriterRef = (0, import_react31.useRef)(apiWriter);
6002
+ const apiWriterRef = (0, import_react32.useRef)(apiWriter);
5841
6003
  apiWriterRef.current = apiWriter;
5842
- const detect = (0, import_react31.useCallback)(async () => {
6004
+ const detect = (0, import_react32.useCallback)(async () => {
5843
6005
  const _enabled = enabledRef.current;
5844
6006
  const _isLoggedIn = isLoggedInRef.current;
5845
6007
  const _userId = userIdRef.current;
@@ -5878,16 +6040,16 @@ function useEvContextPromotion({
5878
6040
  setPayload(null);
5879
6041
  }
5880
6042
  }, []);
5881
- (0, import_react31.useEffect)(() => {
6043
+ (0, import_react32.useEffect)(() => {
5882
6044
  detect();
5883
6045
  }, [detect, isLoggedIn, userId, apiData, enabled, domain]);
5884
- (0, import_react31.useEffect)(() => {
6046
+ (0, import_react32.useEffect)(() => {
5885
6047
  const unsub = evContext.subscribe(() => {
5886
6048
  detect();
5887
6049
  });
5888
6050
  return unsub;
5889
6051
  }, [detect]);
5890
- const promote = (0, import_react31.useCallback)(async () => {
6052
+ const promote = (0, import_react32.useCallback)(async () => {
5891
6053
  const _userId = userIdRef.current;
5892
6054
  const _domain = domainRef.current;
5893
6055
  const _writer = apiWriterRef.current;
@@ -5914,7 +6076,7 @@ function useEvContextPromotion({
5914
6076
  setError(err instanceof Error ? err : new Error(String(err)));
5915
6077
  }
5916
6078
  }, [payload]);
5917
- const dismiss = (0, import_react31.useCallback)(async () => {
6079
+ const dismiss = (0, import_react32.useCallback)(async () => {
5918
6080
  const _userId = userIdRef.current;
5919
6081
  const _domain = domainRef.current;
5920
6082
  if (!_userId) return;
@@ -5973,14 +6135,14 @@ function isGuestPopulated(domain, fullEvContext) {
5973
6135
  }
5974
6136
 
5975
6137
  // src/StanceAccordion.jsx
5976
- var import_react33 = __toESM(require("react"));
6138
+ var import_react34 = __toESM(require("react"));
5977
6139
 
5978
6140
  // src/Favicon.jsx
5979
- var import_react32 = __toESM(require("react"));
6141
+ var import_react33 = __toESM(require("react"));
5980
6142
  function Favicon({ url, size = 16 }) {
5981
6143
  try {
5982
6144
  const domain = new URL(url).hostname;
5983
- return /* @__PURE__ */ import_react32.default.createElement(
6145
+ return /* @__PURE__ */ import_react33.default.createElement(
5984
6146
  "img",
5985
6147
  {
5986
6148
  src: `https://www.google.com/s2/favicons?sz=${size}&domain=${domain}`,
@@ -5991,7 +6153,7 @@ function Favicon({ url, size = 16 }) {
5991
6153
  }
5992
6154
  );
5993
6155
  } catch {
5994
- return /* @__PURE__ */ import_react32.default.createElement(
6156
+ return /* @__PURE__ */ import_react33.default.createElement(
5995
6157
  "svg",
5996
6158
  {
5997
6159
  width: size,
@@ -6002,8 +6164,8 @@ function Favicon({ url, size = 16 }) {
6002
6164
  strokeWidth: "1.5",
6003
6165
  style: { verticalAlign: "middle", flexShrink: 0 }
6004
6166
  },
6005
- /* @__PURE__ */ import_react32.default.createElement("circle", { cx: "12", cy: "12", r: "10" }),
6006
- /* @__PURE__ */ import_react32.default.createElement("path", { d: "M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" })
6167
+ /* @__PURE__ */ import_react33.default.createElement("circle", { cx: "12", cy: "12", r: "10" }),
6168
+ /* @__PURE__ */ import_react33.default.createElement("path", { d: "M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" })
6007
6169
  );
6008
6170
  }
6009
6171
  }
@@ -6034,11 +6196,11 @@ function StanceAccordion({
6034
6196
  apiUrl = "https://api.empowered.vote"
6035
6197
  }) {
6036
6198
  var _a;
6037
- const [expandedTopicId, setExpandedTopicId] = (0, import_react33.useState)(null);
6038
- const [loadingId, setLoadingId] = (0, import_react33.useState)(null);
6039
- const [showAll, setShowAll] = (0, import_react33.useState)(false);
6040
- const contextCache = (0, import_react33.useRef)(/* @__PURE__ */ new Map());
6041
- const quotesCache = (0, import_react33.useRef)(null);
6199
+ const [expandedTopicId, setExpandedTopicId] = (0, import_react34.useState)(null);
6200
+ const [loadingId, setLoadingId] = (0, import_react34.useState)(null);
6201
+ const [showAll, setShowAll] = (0, import_react34.useState)(false);
6202
+ const contextCache = (0, import_react34.useRef)(/* @__PURE__ */ new Map());
6203
+ const quotesCache = (0, import_react34.useRef)(null);
6042
6204
  const polAnswerMap = {};
6043
6205
  if (polAnswers) {
6044
6206
  polAnswers.forEach((a) => {
@@ -6097,7 +6259,7 @@ function StanceAccordion({
6097
6259
  quotesCache.current = [];
6098
6260
  }
6099
6261
  }
6100
- const handleToggle = (0, import_react33.useCallback)(
6262
+ const handleToggle = (0, import_react34.useCallback)(
6101
6263
  async (topicId) => {
6102
6264
  if (expandedTopicId === topicId) {
6103
6265
  setExpandedTopicId(null);
@@ -6114,7 +6276,7 @@ function StanceAccordion({
6114
6276
  },
6115
6277
  [expandedTopicId, politicianId, apiUrl]
6116
6278
  );
6117
- (0, import_react33.useEffect)(() => {
6279
+ (0, import_react34.useEffect)(() => {
6118
6280
  if (initialExpandedTopicId && topics && topics.length > 0) {
6119
6281
  handleToggle(String(initialExpandedTopicId));
6120
6282
  }
@@ -6130,13 +6292,13 @@ function StanceAccordion({
6130
6292
  visibleTopics = [pinned, ...baseTopics.filter((t) => String(t.id) !== String(initialExpandedTopicId))];
6131
6293
  }
6132
6294
  }
6133
- return /* @__PURE__ */ import_react33.default.createElement(
6295
+ return /* @__PURE__ */ import_react34.default.createElement(
6134
6296
  "div",
6135
6297
  {
6136
6298
  className: "flex flex-col",
6137
6299
  style: { fontFamily: "'Manrope', sans-serif" }
6138
6300
  },
6139
- /* @__PURE__ */ import_react33.default.createElement(
6301
+ /* @__PURE__ */ import_react34.default.createElement(
6140
6302
  "h3",
6141
6303
  {
6142
6304
  className: "text-sm font-semibold text-neutral-400 uppercase tracking-wider mb-2",
@@ -6159,15 +6321,15 @@ function StanceAccordion({
6159
6321
  if (topic.topic_key) return q.issue === topic.topic_key;
6160
6322
  return topic.short_title && q.issue.toLowerCase() === topic.short_title.toLowerCase();
6161
6323
  }) : [];
6162
- return /* @__PURE__ */ import_react33.default.createElement("div", { key: topicId, className: "border-b border-neutral-100" }, /* @__PURE__ */ import_react33.default.createElement(
6324
+ return /* @__PURE__ */ import_react34.default.createElement("div", { key: topicId, className: "border-b border-neutral-100" }, /* @__PURE__ */ import_react34.default.createElement(
6163
6325
  "button",
6164
6326
  {
6165
6327
  type: "button",
6166
6328
  onClick: () => handleToggle(topicId),
6167
6329
  className: "w-full flex items-center justify-between py-3 px-2 text-left cursor-pointer hover:bg-neutral-50 transition-colors"
6168
6330
  },
6169
- /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-sm font-medium text-neutral-800 truncate" }, topic.short_title), questionText && /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-xs text-neutral-400 mt-0.5" }, questionText), /* @__PURE__ */ import_react33.default.createElement("span", { className: "text-xs text-neutral-500 mt-0.5" }, label)),
6170
- /* @__PURE__ */ import_react33.default.createElement(
6331
+ /* @__PURE__ */ import_react34.default.createElement("div", { className: "flex flex-col min-w-0" }, /* @__PURE__ */ import_react34.default.createElement("span", { className: "text-sm font-medium text-neutral-800 truncate" }, topic.short_title), questionText && /* @__PURE__ */ import_react34.default.createElement("span", { className: "text-xs text-neutral-400 mt-0.5" }, questionText), /* @__PURE__ */ import_react34.default.createElement("span", { className: "text-xs text-neutral-500 mt-0.5" }, label)),
6332
+ /* @__PURE__ */ import_react34.default.createElement(
6171
6333
  "svg",
6172
6334
  {
6173
6335
  width: "16",
@@ -6184,9 +6346,9 @@ function StanceAccordion({
6184
6346
  transition: "transform 0.2s ease"
6185
6347
  }
6186
6348
  },
6187
- /* @__PURE__ */ import_react33.default.createElement("polyline", { points: "9 18 15 12 9 6" })
6349
+ /* @__PURE__ */ import_react34.default.createElement("polyline", { points: "9 18 15 12 9 6" })
6188
6350
  )
6189
- ), /* @__PURE__ */ import_react33.default.createElement(
6351
+ ), /* @__PURE__ */ import_react34.default.createElement(
6190
6352
  "div",
6191
6353
  {
6192
6354
  style: {
@@ -6195,7 +6357,7 @@ function StanceAccordion({
6195
6357
  transition: "grid-template-rows 0.25s ease"
6196
6358
  }
6197
6359
  },
6198
- /* @__PURE__ */ import_react33.default.createElement("div", { style: { overflow: "hidden" } }, /* @__PURE__ */ import_react33.default.createElement("div", { className: "px-2 pb-4" }, isLoading && /* @__PURE__ */ import_react33.default.createElement("div", { className: "flex items-center py-3" }, /* @__PURE__ */ import_react33.default.createElement(
6360
+ /* @__PURE__ */ import_react34.default.createElement("div", { style: { overflow: "hidden" } }, /* @__PURE__ */ import_react34.default.createElement("div", { className: "px-2 pb-4" }, isLoading && /* @__PURE__ */ import_react34.default.createElement("div", { className: "flex items-center py-3" }, /* @__PURE__ */ import_react34.default.createElement(
6199
6361
  "div",
6200
6362
  {
6201
6363
  style: {
@@ -6207,14 +6369,14 @@ function StanceAccordion({
6207
6369
  animation: "ev-spin 0.8s linear infinite"
6208
6370
  }
6209
6371
  }
6210
- )), !isLoading && cached && /* @__PURE__ */ import_react33.default.createElement(import_react33.default.Fragment, null, cached.reasoning ? /* @__PURE__ */ import_react33.default.createElement(
6372
+ )), !isLoading && cached && /* @__PURE__ */ import_react34.default.createElement(import_react34.default.Fragment, null, cached.reasoning ? /* @__PURE__ */ import_react34.default.createElement(
6211
6373
  "p",
6212
6374
  {
6213
6375
  className: "text-sm text-neutral-700 mb-3",
6214
6376
  style: { whiteSpace: "pre-wrap", lineHeight: 1.6 }
6215
6377
  },
6216
6378
  cached.reasoning
6217
- ) : null, cached.sources && cached.sources.length > 0 && /* @__PURE__ */ import_react33.default.createElement("div", { className: "mt-2" }, /* @__PURE__ */ import_react33.default.createElement("p", { className: "text-xs font-semibold text-neutral-500 uppercase tracking-wider mb-1.5" }, "References"), /* @__PURE__ */ import_react33.default.createElement("ol", { className: "list-decimal list-inside space-y-1" }, cached.sources.map((src, i) => /* @__PURE__ */ import_react33.default.createElement("li", { key: i, className: "text-xs text-neutral-600" }, /* @__PURE__ */ import_react33.default.createElement(
6379
+ ) : null, cached.sources && cached.sources.length > 0 && /* @__PURE__ */ import_react34.default.createElement("div", { className: "mt-2" }, /* @__PURE__ */ import_react34.default.createElement("p", { className: "text-xs font-semibold text-neutral-500 uppercase tracking-wider mb-1.5" }, "References"), /* @__PURE__ */ import_react34.default.createElement("ol", { className: "list-decimal list-inside space-y-1" }, cached.sources.map((src, i) => /* @__PURE__ */ import_react34.default.createElement("li", { key: i, className: "text-xs text-neutral-600" }, /* @__PURE__ */ import_react34.default.createElement(
6218
6380
  "a",
6219
6381
  {
6220
6382
  href: src,
@@ -6222,9 +6384,9 @@ function StanceAccordion({
6222
6384
  rel: "noreferrer",
6223
6385
  className: "inline-flex items-center gap-1.5 hover:text-[#00657c] transition-colors"
6224
6386
  },
6225
- /* @__PURE__ */ import_react33.default.createElement(Favicon, { url: src }),
6226
- /* @__PURE__ */ import_react33.default.createElement("span", { className: "underline underline-offset-2" }, getDisplayUrl(src))
6227
- ))))), topicQuotes.length > 0 && /* @__PURE__ */ import_react33.default.createElement("div", { style: { marginTop: "12px" } }, /* @__PURE__ */ import_react33.default.createElement(
6387
+ /* @__PURE__ */ import_react34.default.createElement(Favicon, { url: src }),
6388
+ /* @__PURE__ */ import_react34.default.createElement("span", { className: "underline underline-offset-2" }, getDisplayUrl(src))
6389
+ ))))), topicQuotes.length > 0 && /* @__PURE__ */ import_react34.default.createElement("div", { style: { marginTop: "12px" } }, /* @__PURE__ */ import_react34.default.createElement(
6228
6390
  "p",
6229
6391
  {
6230
6392
  style: {
@@ -6241,7 +6403,7 @@ function StanceAccordion({
6241
6403
  const verdict = verdictsByQuote ? verdictsByQuote[quote.id] : void 0;
6242
6404
  const borderColor = verdict === "agreed" ? "#0e7490" : verdict === "disagreed" ? "#b45309" : "#e2e8f0";
6243
6405
  const sourceName = quote.source_name || quote.sourceName;
6244
- return /* @__PURE__ */ import_react33.default.createElement(
6406
+ return /* @__PURE__ */ import_react34.default.createElement(
6245
6407
  "div",
6246
6408
  {
6247
6409
  key: quote.id,
@@ -6253,7 +6415,7 @@ function StanceAccordion({
6253
6415
  marginBottom: "8px"
6254
6416
  }
6255
6417
  },
6256
- /* @__PURE__ */ import_react33.default.createElement(
6418
+ /* @__PURE__ */ import_react34.default.createElement(
6257
6419
  "p",
6258
6420
  {
6259
6421
  style: {
@@ -6266,7 +6428,7 @@ function StanceAccordion({
6266
6428
  },
6267
6429
  quote.text
6268
6430
  ),
6269
- verdict === "agreed" && /* @__PURE__ */ import_react33.default.createElement(
6431
+ verdict === "agreed" && /* @__PURE__ */ import_react34.default.createElement(
6270
6432
  "span",
6271
6433
  {
6272
6434
  style: {
@@ -6283,10 +6445,10 @@ function StanceAccordion({
6283
6445
  flexShrink: 0
6284
6446
  }
6285
6447
  },
6286
- /* @__PURE__ */ import_react33.default.createElement("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react33.default.createElement("path", { d: "M5 13l4 4L19 7" })),
6448
+ /* @__PURE__ */ import_react34.default.createElement("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react34.default.createElement("path", { d: "M5 13l4 4L19 7" })),
6287
6449
  "Agreed"
6288
6450
  ),
6289
- verdict === "disagreed" && /* @__PURE__ */ import_react33.default.createElement(
6451
+ verdict === "disagreed" && /* @__PURE__ */ import_react34.default.createElement(
6290
6452
  "span",
6291
6453
  {
6292
6454
  style: {
@@ -6303,10 +6465,10 @@ function StanceAccordion({
6303
6465
  flexShrink: 0
6304
6466
  }
6305
6467
  },
6306
- /* @__PURE__ */ import_react33.default.createElement("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react33.default.createElement("path", { d: "M6 18L18 6M6 6l12 12" })),
6468
+ /* @__PURE__ */ import_react34.default.createElement("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ import_react34.default.createElement("path", { d: "M6 18L18 6M6 6l12 12" })),
6307
6469
  "Disagreed"
6308
6470
  ),
6309
- sourceName && /* @__PURE__ */ import_react33.default.createElement(
6471
+ sourceName && /* @__PURE__ */ import_react34.default.createElement(
6310
6472
  "a",
6311
6473
  {
6312
6474
  href: quote.source_url || quote.sourceUrl,
@@ -6323,10 +6485,10 @@ function StanceAccordion({
6323
6485
  sourceName
6324
6486
  )
6325
6487
  );
6326
- })), !cached.reasoning && (!cached.sources || cached.sources.length === 0) && topicQuotes.length === 0 && /* @__PURE__ */ import_react33.default.createElement("p", { className: "text-sm text-neutral-400 italic py-2" }, "No detailed reasoning available for this topic."))))
6488
+ })), !cached.reasoning && (!cached.sources || cached.sources.length === 0) && topicQuotes.length === 0 && /* @__PURE__ */ import_react34.default.createElement("p", { className: "text-sm text-neutral-400 italic py-2" }, "No detailed reasoning available for this topic."))))
6327
6489
  ));
6328
6490
  }),
6329
- hasToggle && /* @__PURE__ */ import_react33.default.createElement(
6491
+ hasToggle && /* @__PURE__ */ import_react34.default.createElement(
6330
6492
  "button",
6331
6493
  {
6332
6494
  type: "button",
@@ -6338,23 +6500,6 @@ function StanceAccordion({
6338
6500
  )
6339
6501
  );
6340
6502
  }
6341
-
6342
- // src/FeedbackButton.jsx
6343
- var import_react34 = __toESM(require("react"));
6344
- var FEEDBACK_BASE = "https://ev-landing.empowered.vote/feedback.html";
6345
- function FeedbackButton({ feature, className = "", label = "Feedback" }) {
6346
- const href = feature ? `${FEEDBACK_BASE}?feature=${encodeURIComponent(feature)}` : FEEDBACK_BASE;
6347
- return /* @__PURE__ */ import_react34.default.createElement(
6348
- "a",
6349
- {
6350
- href,
6351
- target: "_blank",
6352
- rel: "noopener noreferrer",
6353
- className
6354
- },
6355
- label
6356
- );
6357
- }
6358
6503
  // Annotate the CommonJS export names for ESM import in node:
6359
6504
  0 && (module.exports = {
6360
6505
  AuthForm,