@empoweredvote/ev-ui 0.6.5 → 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
@@ -40,6 +40,7 @@ __export(index_exports, {
40
40
  CompassIcon: () => CompassIcon,
41
41
  CompassKey: () => CompassKey,
42
42
  ExpandCompassNudge: () => ExpandCompassNudge,
43
+ FeedbackButton: () => FeedbackButton,
43
44
  FilterSidebar: () => FilterSidebar,
44
45
  GovernmentBodySection: () => GovernmentBodySection,
45
46
  Header: () => Header,
@@ -860,6 +861,7 @@ function Header({
860
861
  logoAlt = "Empowered Vote",
861
862
  navItems = [],
862
863
  ctaButton,
864
+ secondaryAction,
863
865
  currentPath,
864
866
  onNavigate,
865
867
  profileMenu,
@@ -969,6 +971,22 @@ function Header({
969
971
  textDecoration: "none",
970
972
  display: "inline-block"
971
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
+ },
972
990
  mobileMenuButton: {
973
991
  display: isMobile ? "block" : "none",
974
992
  background: "none",
@@ -1140,7 +1158,30 @@ function Header({
1140
1158
  },
1141
1159
  "empowered.vote"
1142
1160
  )
1143
- ), /* @__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(
1144
1185
  "a",
1145
1186
  {
1146
1187
  href: ctaButton.href,
@@ -1297,7 +1338,22 @@ function Header({
1297
1338
  },
1298
1339
  item.label
1299
1340
  ));
1300
- }), 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(
1301
1357
  "a",
1302
1358
  {
1303
1359
  href: ctaButton.href,
@@ -1365,7 +1421,107 @@ function Header({
1365
1421
  }
1366
1422
 
1367
1423
  // src/SiteHeader.jsx
1424
+ var import_react6 = __toESM(require("react"));
1425
+
1426
+ // src/FeedbackButton.jsx
1368
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
1369
1525
  var defaultNavItems = [
1370
1526
  {
1371
1527
  label: "Features",
@@ -1388,6 +1544,8 @@ function SiteHeader({
1388
1544
  currentPath,
1389
1545
  onNavigate,
1390
1546
  profileMenu,
1547
+ secondaryAction,
1548
+ feedbackFeature,
1391
1549
  style = {}
1392
1550
  }) {
1393
1551
  const handleNavigate = (href) => {
@@ -1397,13 +1555,22 @@ function SiteHeader({
1397
1555
  window.location.href = href;
1398
1556
  }
1399
1557
  };
1400
- 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(
1401
1567
  Header,
1402
1568
  {
1403
1569
  logoSrc,
1404
1570
  logoAlt: "Empowered Vote",
1405
1571
  navItems: defaultNavItems,
1406
1572
  ctaButton: defaultCtaButton,
1573
+ secondaryAction: resolvedSecondary,
1407
1574
  currentPath,
1408
1575
  onNavigate: handleNavigate,
1409
1576
  profileMenu,
@@ -1413,7 +1580,7 @@ function SiteHeader({
1413
1580
  }
1414
1581
 
1415
1582
  // src/FilterSidebar.jsx
1416
- var import_react6 = __toESM(require("react"));
1583
+ var import_react7 = __toESM(require("react"));
1417
1584
  function FilterSidebar({
1418
1585
  title = "Filter by",
1419
1586
  zipCode = "",
@@ -1567,14 +1734,14 @@ function FilterSidebar({
1567
1734
  fontSize: fontSizes.sm
1568
1735
  }
1569
1736
  };
1570
- 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(
1571
1738
  "div",
1572
1739
  {
1573
1740
  ref: autocompleteContainerRef,
1574
1741
  style: styles2.zipInputWrapper,
1575
1742
  className: "ev-autocomplete-container"
1576
1743
  }
1577
- ) : /* @__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(
1578
1745
  "input",
1579
1746
  {
1580
1747
  ref: zipInputRef,
@@ -1586,7 +1753,7 @@ function FilterSidebar({
1586
1753
  style: styles2.zipInput,
1587
1754
  "aria-label": "Search location"
1588
1755
  }
1589
- ), /* @__PURE__ */ import_react6.default.createElement(
1756
+ ), /* @__PURE__ */ import_react7.default.createElement(
1590
1757
  "button",
1591
1758
  {
1592
1759
  type: "button",
@@ -1595,7 +1762,7 @@ function FilterSidebar({
1595
1762
  "aria-label": "Clear ZIP code"
1596
1763
  },
1597
1764
  "\xD7"
1598
- ))), /* @__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(
1599
1766
  "input",
1600
1767
  {
1601
1768
  type: "radio",
@@ -1605,18 +1772,18 @@ function FilterSidebar({
1605
1772
  onChange: () => onFilterChange == null ? void 0 : onFilterChange(option.value),
1606
1773
  style: styles2.radioInput
1607
1774
  }
1608
- ), 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(
1609
1776
  "img",
1610
1777
  {
1611
1778
  src: buildingImageSrc,
1612
1779
  alt: `${selectedFilter} government building`,
1613
1780
  style: styles2.buildingImage
1614
1781
  }
1615
- ) : /* @__PURE__ */ import_react6.default.createElement("div", { style: styles2.buildingPlaceholder }, "No image")));
1782
+ ) : /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.buildingPlaceholder }, "No image")));
1616
1783
  }
1617
1784
 
1618
1785
  // src/PoliticianCard.jsx
1619
- var import_react7 = __toESM(require("react"));
1786
+ var import_react8 = __toESM(require("react"));
1620
1787
  function PoliticianCard({
1621
1788
  id,
1622
1789
  imageSrc,
@@ -1768,7 +1935,7 @@ function PoliticianCard({
1768
1935
  textTransform: "uppercase"
1769
1936
  }
1770
1937
  };
1771
- const CompassIcon2 = () => /* @__PURE__ */ import_react7.default.createElement(
1938
+ const CompassIcon2 = () => /* @__PURE__ */ import_react8.default.createElement(
1772
1939
  "svg",
1773
1940
  {
1774
1941
  style: styles2.compassIcon,
@@ -1776,7 +1943,7 @@ function PoliticianCard({
1776
1943
  fill: "none",
1777
1944
  xmlns: "http://www.w3.org/2000/svg"
1778
1945
  },
1779
- /* @__PURE__ */ import_react7.default.createElement(
1946
+ /* @__PURE__ */ import_react8.default.createElement(
1780
1947
  "polygon",
1781
1948
  {
1782
1949
  points: "12,1 21.5,6.5 21.5,17.5 12,23 2.5,17.5 2.5,6.5",
@@ -1786,13 +1953,13 @@ function PoliticianCard({
1786
1953
  strokeLinejoin: "round"
1787
1954
  }
1788
1955
  ),
1789
- /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "12", y2: "1", stroke: "currentColor", strokeWidth: "1" }),
1790
- /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "21.5", y2: "6.5", stroke: "currentColor", strokeWidth: "1" }),
1791
- /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "21.5", y2: "17.5", stroke: "currentColor", strokeWidth: "1" }),
1792
- /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "12", y2: "23", stroke: "currentColor", strokeWidth: "1" }),
1793
- /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "2.5", y2: "17.5", stroke: "currentColor", strokeWidth: "1" }),
1794
- /* @__PURE__ */ import_react7.default.createElement("line", { x1: "12", y1: "12", x2: "2.5", y2: "6.5", stroke: "currentColor", strokeWidth: "1" }),
1795
- /* @__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(
1796
1963
  "polygon",
1797
1964
  {
1798
1965
  points: "12,4 18,7.5 18,16 12,19.5 7,15 5,8",
@@ -1800,7 +1967,7 @@ function PoliticianCard({
1800
1967
  opacity: "0.35"
1801
1968
  }
1802
1969
  ),
1803
- /* @__PURE__ */ import_react7.default.createElement(
1970
+ /* @__PURE__ */ import_react8.default.createElement(
1804
1971
  "polygon",
1805
1972
  {
1806
1973
  points: "12,4 18,7.5 18,16 12,19.5 7,15 5,8",
@@ -1811,8 +1978,8 @@ function PoliticianCard({
1811
1978
  }
1812
1979
  )
1813
1980
  );
1814
- const [imgError, setImgError] = (0, import_react7.useState)(false);
1815
- (0, import_react7.useEffect)(() => {
1981
+ const [imgError, setImgError] = (0, import_react8.useState)(false);
1982
+ (0, import_react8.useEffect)(() => {
1816
1983
  setImgError(false);
1817
1984
  }, [imageSrc]);
1818
1985
  const getInitials = (n) => {
@@ -1821,7 +1988,7 @@ function PoliticianCard({
1821
1988
  const initials = parts.length >= 2 ? parts[0][0] + parts[parts.length - 1][0] : ((_a = parts[0]) == null ? void 0 : _a[0]) || "?";
1822
1989
  return initials.toUpperCase();
1823
1990
  };
1824
- return /* @__PURE__ */ import_react7.default.createElement(
1991
+ return /* @__PURE__ */ import_react8.default.createElement(
1825
1992
  "div",
1826
1993
  {
1827
1994
  style: styles2.card,
@@ -1846,8 +2013,8 @@ function PoliticianCard({
1846
2013
  }
1847
2014
  }
1848
2015
  },
1849
- badge && /* @__PURE__ */ import_react7.default.createElement("span", { style: styles2.badge }, badge),
1850
- /* @__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(
1851
2018
  "img",
1852
2019
  {
1853
2020
  src: imageSrc,
@@ -1855,9 +2022,9 @@ function PoliticianCard({
1855
2022
  style: styles2.image,
1856
2023
  onError: () => setImgError(true)
1857
2024
  }
1858
- ) : /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.imagePlaceholder }, getInitials(name))),
1859
- /* @__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)),
1860
- 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(
1861
2028
  "button",
1862
2029
  {
1863
2030
  type: "button",
@@ -1872,16 +2039,16 @@ function PoliticianCard({
1872
2039
  },
1873
2040
  "aria-label": `View ${name}'s compass`
1874
2041
  },
1875
- /* @__PURE__ */ import_react7.default.createElement(CompassIcon2, null)
2042
+ /* @__PURE__ */ import_react8.default.createElement(CompassIcon2, null)
1876
2043
  )
1877
2044
  );
1878
2045
  }
1879
2046
 
1880
2047
  // src/CompassCardHorizontal.jsx
1881
- var import_react13 = __toESM(require("react"));
2048
+ var import_react14 = __toESM(require("react"));
1882
2049
 
1883
2050
  // src/PlaceholderRadar.jsx
1884
- var import_react8 = __toESM(require("react"));
2051
+ var import_react9 = __toESM(require("react"));
1885
2052
  function PlaceholderRadar({ size = 250, name = "" }) {
1886
2053
  const cx = size / 2;
1887
2054
  const cy = size / 2;
@@ -1894,7 +2061,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
1894
2061
  const outerPts = vertices.map(([x, y]) => `${x},${y}`).join(" ");
1895
2062
  const midPts = vertices.map(([x, y]) => `${cx + (x - cx) * 0.6},${cy + (y - cy) * 0.6}`).join(" ");
1896
2063
  const innerPts = vertices.map(([x, y]) => `${cx + (x - cx) * 0.3},${cy + (y - cy) * 0.3}`).join(" ");
1897
- return /* @__PURE__ */ import_react8.default.createElement(
2064
+ return /* @__PURE__ */ import_react9.default.createElement(
1898
2065
  "svg",
1899
2066
  {
1900
2067
  width: size,
@@ -1908,7 +2075,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
1908
2075
  flexShrink: 0
1909
2076
  }
1910
2077
  },
1911
- vertices.map(([x, y], i) => /* @__PURE__ */ import_react8.default.createElement(
2078
+ vertices.map(([x, y], i) => /* @__PURE__ */ import_react9.default.createElement(
1912
2079
  "line",
1913
2080
  {
1914
2081
  key: i,
@@ -1922,7 +2089,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
1922
2089
  opacity: "0.6"
1923
2090
  }
1924
2091
  )),
1925
- /* @__PURE__ */ import_react8.default.createElement(
2092
+ /* @__PURE__ */ import_react9.default.createElement(
1926
2093
  "polygon",
1927
2094
  {
1928
2095
  points: innerPts,
@@ -1933,7 +2100,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
1933
2100
  opacity: "0.5"
1934
2101
  }
1935
2102
  ),
1936
- /* @__PURE__ */ import_react8.default.createElement(
2103
+ /* @__PURE__ */ import_react9.default.createElement(
1937
2104
  "polygon",
1938
2105
  {
1939
2106
  points: midPts,
@@ -1944,7 +2111,7 @@ function PlaceholderRadar({ size = 250, name = "" }) {
1944
2111
  opacity: "0.6"
1945
2112
  }
1946
2113
  ),
1947
- /* @__PURE__ */ import_react8.default.createElement(
2114
+ /* @__PURE__ */ import_react9.default.createElement(
1948
2115
  "polygon",
1949
2116
  {
1950
2117
  points: outerPts,
@@ -1958,16 +2125,16 @@ function PlaceholderRadar({ size = 250, name = "" }) {
1958
2125
  }
1959
2126
 
1960
2127
  // src/CompassCardHorizontalMeta.jsx
1961
- var import_react12 = __toESM(require("react"));
2128
+ var import_react13 = __toESM(require("react"));
1962
2129
 
1963
2130
  // src/IconOverlay.jsx
1964
- var import_react10 = __toESM(require("react"));
1965
- var import_react11 = require("@floating-ui/react");
2131
+ var import_react11 = __toESM(require("react"));
2132
+ var import_react12 = require("@floating-ui/react");
1966
2133
 
1967
2134
  // src/icons.js
1968
- var import_react9 = __toESM(require("react"));
2135
+ var import_react10 = __toESM(require("react"));
1969
2136
  function BallotIcon({ size = 16, color = "currentColor" }) {
1970
- return /* @__PURE__ */ import_react9.default.createElement(
2137
+ return /* @__PURE__ */ import_react10.default.createElement(
1971
2138
  "svg",
1972
2139
  {
1973
2140
  width: size,
@@ -1980,13 +2147,13 @@ function BallotIcon({ size = 16, color = "currentColor" }) {
1980
2147
  strokeLinejoin: "round",
1981
2148
  xmlns: "http://www.w3.org/2000/svg"
1982
2149
  },
1983
- /* @__PURE__ */ import_react9.default.createElement("path", { d: "m9 12 2 2 4-4" }),
1984
- /* @__PURE__ */ import_react9.default.createElement("path", { d: "M5 7c0-1.1.9-2 2-2h10a2 2 0 0 1 2 2v12H5V7Z" }),
1985
- /* @__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" })
1986
2153
  );
1987
2154
  }
1988
2155
  function CompassIcon({ size = 16, color = "currentColor" }) {
1989
- return /* @__PURE__ */ import_react9.default.createElement(
2156
+ return /* @__PURE__ */ import_react10.default.createElement(
1990
2157
  "svg",
1991
2158
  {
1992
2159
  width: size,
@@ -1999,27 +2166,27 @@ function CompassIcon({ size = 16, color = "currentColor" }) {
1999
2166
  strokeLinejoin: "round",
2000
2167
  xmlns: "http://www.w3.org/2000/svg"
2001
2168
  },
2002
- /* @__PURE__ */ import_react9.default.createElement("circle", { cx: "12", cy: "12", r: "10" }),
2003
- /* @__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" })
2004
2171
  );
2005
2172
  }
2006
2173
  function BranchIcon({ size = 16, color = "currentColor", branch }) {
2007
2174
  let paths;
2008
2175
  switch (branch) {
2009
2176
  case "executive":
2010
- 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" }));
2011
2178
  break;
2012
2179
  case "legislative":
2013
- 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" }));
2014
2181
  break;
2015
2182
  case "judicial":
2016
- 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" }));
2017
2184
  break;
2018
2185
  default:
2019
- 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" }));
2020
2187
  break;
2021
2188
  }
2022
- return /* @__PURE__ */ import_react9.default.createElement(
2189
+ return /* @__PURE__ */ import_react10.default.createElement(
2023
2190
  "svg",
2024
2191
  {
2025
2192
  width: size,
@@ -2038,24 +2205,24 @@ function BranchIcon({ size = 16, color = "currentColor", branch }) {
2038
2205
 
2039
2206
  // src/IconOverlay.jsx
2040
2207
  function IconWithTooltip({ IconComponent, color, tooltip, size = 14, extraProps = {}, onClick }) {
2041
- const [isOpen, setIsOpen] = (0, import_react10.useState)(false);
2042
- 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)({
2043
2210
  open: isOpen,
2044
2211
  onOpenChange: setIsOpen,
2045
- middleware: [(0, import_react11.offset)(8), (0, import_react11.flip)(), (0, import_react11.shift)({ padding: 4 })],
2046
- 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
2047
2214
  });
2048
- const hover = (0, import_react11.useHover)(context);
2049
- const focus2 = (0, import_react11.useFocus)(context);
2050
- const dismiss = (0, import_react11.useDismiss)(context);
2051
- const role = (0, import_react11.useRole)(context, { role: "tooltip" });
2052
- 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)([
2053
2220
  hover,
2054
2221
  focus2,
2055
2222
  dismiss,
2056
2223
  role
2057
2224
  ]);
2058
- 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(
2059
2226
  "span",
2060
2227
  {
2061
2228
  ref: refs.setReference,
@@ -2068,8 +2235,8 @@ function IconWithTooltip({ IconComponent, color, tooltip, size = 14, extraProps
2068
2235
  onClick(e);
2069
2236
  } : void 0
2070
2237
  },
2071
- /* @__PURE__ */ import_react10.default.createElement(IconComponent, { size, color, ...extraProps })
2072
- ), 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(
2073
2240
  "div",
2074
2241
  {
2075
2242
  ref: refs.setFloating,
@@ -2093,7 +2260,7 @@ function IconWithTooltip({ IconComponent, color, tooltip, size = 14, extraProps
2093
2260
  function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2094
2261
  if (!ballot && !hasStances && !branch) return null;
2095
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;
2096
- return /* @__PURE__ */ import_react10.default.createElement(
2263
+ return /* @__PURE__ */ import_react11.default.createElement(
2097
2264
  "div",
2098
2265
  {
2099
2266
  style: {
@@ -2106,7 +2273,7 @@ function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2106
2273
  // offset icon wrapper padding so icons align flush-left with text
2107
2274
  }
2108
2275
  },
2109
- ballot && /* @__PURE__ */ import_react10.default.createElement(
2276
+ ballot && /* @__PURE__ */ import_react11.default.createElement(
2110
2277
  IconWithTooltip,
2111
2278
  {
2112
2279
  IconComponent: BallotIcon,
@@ -2115,7 +2282,7 @@ function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2115
2282
  size: 14
2116
2283
  }
2117
2284
  ),
2118
- hasStances && /* @__PURE__ */ import_react10.default.createElement(
2285
+ hasStances && /* @__PURE__ */ import_react11.default.createElement(
2119
2286
  IconWithTooltip,
2120
2287
  {
2121
2288
  IconComponent: CompassIcon,
@@ -2125,7 +2292,7 @@ function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2125
2292
  onClick: onCompassClick
2126
2293
  }
2127
2294
  ),
2128
- branch && /* @__PURE__ */ import_react10.default.createElement(
2295
+ branch && /* @__PURE__ */ import_react11.default.createElement(
2129
2296
  IconWithTooltip,
2130
2297
  {
2131
2298
  IconComponent: BranchIcon,
@@ -2145,20 +2312,20 @@ function CompassCardHorizontalMeta({
2145
2312
  userAnswers
2146
2313
  }) {
2147
2314
  const titleText = surface === "elections" ? politician.office_running_for : politician.office_title;
2148
- return /* @__PURE__ */ import_react12.default.createElement("div", { style: {
2315
+ return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2149
2316
  flex: 1,
2150
2317
  minWidth: 0,
2151
2318
  display: "flex",
2152
2319
  flexDirection: "column",
2153
2320
  gap: spacing[1]
2154
- } }, /* @__PURE__ */ import_react12.default.createElement("p", { style: {
2321
+ } }, /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2155
2322
  fontFamily: fonts.primary,
2156
2323
  fontSize: fontSizes.lg,
2157
2324
  fontWeight: fontWeights.semibold,
2158
2325
  lineHeight: 1.4,
2159
2326
  color: colors.evMutedBlue,
2160
2327
  margin: 0
2161
- } }, politician.full_name), /* @__PURE__ */ import_react12.default.createElement("p", { style: {
2328
+ } }, politician.full_name), /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2162
2329
  fontFamily: fonts.primary,
2163
2330
  fontSize: fontSizes.sm,
2164
2331
  fontWeight: fontWeights.semibold,
@@ -2169,7 +2336,7 @@ function CompassCardHorizontalMeta({
2169
2336
  display: "-webkit-box",
2170
2337
  WebkitLineClamp: 2,
2171
2338
  WebkitBoxOrient: "vertical"
2172
- } }, titleText || ""), politician.district_label && /* @__PURE__ */ import_react12.default.createElement("p", { style: {
2339
+ } }, titleText || ""), politician.district_label && /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2173
2340
  fontFamily: fonts.primary,
2174
2341
  fontSize: fontSizes.sm,
2175
2342
  fontWeight: fontWeights.regular,
@@ -2179,7 +2346,7 @@ function CompassCardHorizontalMeta({
2179
2346
  overflow: "hidden",
2180
2347
  textOverflow: "ellipsis",
2181
2348
  whiteSpace: "nowrap"
2182
- } }, politician.district_label), /* @__PURE__ */ import_react12.default.createElement(
2349
+ } }, politician.district_label), /* @__PURE__ */ import_react13.default.createElement(
2183
2350
  IconOverlay,
2184
2351
  {
2185
2352
  ballot: politician.ballot || null,
@@ -2228,11 +2395,11 @@ function CompassCardHorizontal({
2228
2395
  onClick
2229
2396
  }) {
2230
2397
  var _a;
2231
- const [hovered, setHovered] = (0, import_react13.useState)(false);
2232
- const [focused, setFocused] = (0, import_react13.useState)(false);
2233
- const [imgError, setImgError] = (0, import_react13.useState)(false);
2234
- const [emptyCtaHovered, setEmptyCtaHovered] = (0, import_react13.useState)(false);
2235
- (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)(() => {
2236
2403
  setImgError(false);
2237
2404
  }, [politician == null ? void 0 : politician.photo_origin_url]);
2238
2405
  const cardStyle = {
@@ -2256,7 +2423,7 @@ function CompassCardHorizontal({
2256
2423
  function renderCompass() {
2257
2424
  var _a2, _b, _c;
2258
2425
  if (!userAnswers || userAnswers.length === 0) {
2259
- 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) || "" });
2260
2427
  }
2261
2428
  let topics = [];
2262
2429
  let data = {};
@@ -2292,12 +2459,12 @@ function CompassCardHorizontal({
2292
2459
  }, {}) : politician.stances;
2293
2460
  }
2294
2461
  if (topics.length === 0) {
2295
- 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) || "" });
2296
2463
  }
2297
2464
  } catch (err) {
2298
- 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) || "" });
2299
2466
  }
2300
- return /* @__PURE__ */ import_react13.default.createElement(
2467
+ return /* @__PURE__ */ import_react14.default.createElement(
2301
2468
  RadarChartCore,
2302
2469
  {
2303
2470
  topics,
@@ -2319,7 +2486,7 @@ function CompassCardHorizontal({
2319
2486
  var _a2, _b, _c;
2320
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;
2321
2488
  if (imageSrc && !imgError) {
2322
- return /* @__PURE__ */ import_react13.default.createElement(
2489
+ return /* @__PURE__ */ import_react14.default.createElement(
2323
2490
  "img",
2324
2491
  {
2325
2492
  src: imageSrc,
@@ -2337,7 +2504,7 @@ function CompassCardHorizontal({
2337
2504
  }
2338
2505
  const parts = ((politician == null ? void 0 : politician.full_name) || "").split(" ").filter(Boolean);
2339
2506
  const initials = (parts.length >= 2 ? parts[0][0] + parts[parts.length - 1][0] : ((_c = parts[0]) == null ? void 0 : _c[0]) || "?").toUpperCase();
2340
- return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2507
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2341
2508
  width: "100%",
2342
2509
  height: "100%",
2343
2510
  backgroundColor: colors.evMutedBlue,
@@ -2351,7 +2518,7 @@ function CompassCardHorizontal({
2351
2518
  } }, initials);
2352
2519
  }
2353
2520
  function renderEmptyVariant() {
2354
- return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2521
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2355
2522
  width: "100%",
2356
2523
  height: "100%",
2357
2524
  display: "flex",
@@ -2362,14 +2529,14 @@ function CompassCardHorizontal({
2362
2529
  padding: "12px 14px",
2363
2530
  boxSizing: "border-box",
2364
2531
  backgroundColor: colorScales.teal["050"]
2365
- } }, /* @__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: {
2366
2533
  margin: 0,
2367
2534
  fontSize: fontSizes.xs,
2368
2535
  color: colors.textMuted,
2369
2536
  textAlign: "center",
2370
2537
  lineHeight: 1.4,
2371
2538
  fontFamily: fonts.primary
2372
- } }, "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(
2373
2540
  "button",
2374
2541
  {
2375
2542
  type: "button",
@@ -2397,7 +2564,7 @@ function CompassCardHorizontal({
2397
2564
  ));
2398
2565
  }
2399
2566
  function renderUnavailablePlate(message = "Compass currently unavailable for this role.") {
2400
- return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2567
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2401
2568
  width: "100%",
2402
2569
  height: "100%",
2403
2570
  backgroundColor: colorScales.teal["050"],
@@ -2406,7 +2573,7 @@ function CompassCardHorizontal({
2406
2573
  justifyContent: "center",
2407
2574
  padding: spacing[4],
2408
2575
  boxSizing: "border-box"
2409
- } }, /* @__PURE__ */ import_react13.default.createElement("p", { style: {
2576
+ } }, /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2410
2577
  fontSize: fontSizes.sm,
2411
2578
  fontWeight: fontWeights.semibold,
2412
2579
  lineHeight: 1.4,
@@ -2425,7 +2592,7 @@ function CompassCardHorizontal({
2425
2592
  const name = (politician == null ? void 0 : politician.full_name) || "this official";
2426
2593
  return renderUnavailablePlate(`No compass stances on file for ${name} yet.`);
2427
2594
  }
2428
- return /* @__PURE__ */ import_react13.default.createElement("div", { style: {
2595
+ return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2429
2596
  width: "100%",
2430
2597
  height: "100%",
2431
2598
  display: "flex",
@@ -2435,7 +2602,7 @@ function CompassCardHorizontal({
2435
2602
  boxSizing: "border-box"
2436
2603
  } }, renderCompass());
2437
2604
  }
2438
- return /* @__PURE__ */ import_react13.default.createElement(
2605
+ return /* @__PURE__ */ import_react14.default.createElement(
2439
2606
  "div",
2440
2607
  {
2441
2608
  role: "article",
@@ -2454,7 +2621,7 @@ function CompassCardHorizontal({
2454
2621
  onFocus: () => setFocused(true),
2455
2622
  onBlur: () => setFocused(false)
2456
2623
  },
2457
- /* @__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: {
2458
2625
  position: "absolute",
2459
2626
  bottom: "15px",
2460
2627
  left: 0,
@@ -2469,7 +2636,7 @@ function CompassCardHorizontal({
2469
2636
  padding: "6px 0",
2470
2637
  pointerEvents: "none"
2471
2638
  } }, typeof politician.running_unopposed === "string" ? politician.running_unopposed : "Running Unopposed")),
2472
- /* @__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(
2473
2640
  CompassCardHorizontalMeta,
2474
2641
  {
2475
2642
  politician,
@@ -2481,7 +2648,7 @@ function CompassCardHorizontal({
2481
2648
  }
2482
2649
 
2483
2650
  // src/CompassCardVertical.jsx
2484
- var import_react14 = __toESM(require("react"));
2651
+ var import_react15 = __toESM(require("react"));
2485
2652
  var RADAR_SIZE2 = 400;
2486
2653
  function CompassCardVertical({
2487
2654
  politician,
@@ -2495,11 +2662,11 @@ function CompassCardVertical({
2495
2662
  onClick
2496
2663
  }) {
2497
2664
  var _a;
2498
- const [hovered, setHovered] = (0, import_react14.useState)(false);
2499
- const [focused, setFocused] = (0, import_react14.useState)(false);
2500
- const [imgError, setImgError] = (0, import_react14.useState)(false);
2501
- const [emptyCtaHovered, setEmptyCtaHovered] = (0, import_react14.useState)(false);
2502
- (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)(() => {
2503
2670
  setImgError(false);
2504
2671
  }, [politician == null ? void 0 : politician.photo_origin_url]);
2505
2672
  const cardStyle = {
@@ -2522,7 +2689,7 @@ function CompassCardVertical({
2522
2689
  function renderCompass() {
2523
2690
  var _a2, _b, _c;
2524
2691
  if (!userAnswers || userAnswers.length === 0) {
2525
- 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) || "" });
2526
2693
  }
2527
2694
  let topics = [];
2528
2695
  let data = {};
@@ -2558,17 +2725,17 @@ function CompassCardVertical({
2558
2725
  }, {}) : politician.stances;
2559
2726
  }
2560
2727
  if (topics.length === 0) {
2561
- 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) || "" });
2562
2729
  }
2563
2730
  } catch {
2564
- 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) || "" });
2565
2732
  }
2566
2733
  const unansweredSpokes = {};
2567
2734
  for (const t of topics) {
2568
2735
  const v = compareData[t.short_title];
2569
2736
  if (!v || Number(v) === 0) unansweredSpokes[t.short_title] = true;
2570
2737
  }
2571
- 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(
2572
2739
  RadarChartCore,
2573
2740
  {
2574
2741
  topics,
@@ -2603,7 +2770,7 @@ function CompassCardVertical({
2603
2770
  justifyContent: "center"
2604
2771
  };
2605
2772
  if (imageSrc && !imgError) {
2606
- 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(
2607
2774
  "img",
2608
2775
  {
2609
2776
  src: imageSrc,
@@ -2621,7 +2788,7 @@ function CompassCardVertical({
2621
2788
  }
2622
2789
  const parts = ((politician == null ? void 0 : politician.full_name) || "").split(" ").filter(Boolean);
2623
2790
  const initials = (parts.length >= 2 ? parts[0][0] + parts[parts.length - 1][0] : ((_c = parts[0]) == null ? void 0 : _c[0]) || "?").toUpperCase();
2624
- 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: {
2625
2792
  color: colors.textWhite,
2626
2793
  fontFamily: fonts.primary,
2627
2794
  fontWeight: fontWeights.bold,
@@ -2632,7 +2799,7 @@ function CompassCardVertical({
2632
2799
  var _a2, _b, _c;
2633
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;
2634
2801
  if (imageSrc && !imgError) {
2635
- return /* @__PURE__ */ import_react14.default.createElement(
2802
+ return /* @__PURE__ */ import_react15.default.createElement(
2636
2803
  "img",
2637
2804
  {
2638
2805
  src: imageSrc,
@@ -2651,7 +2818,7 @@ function CompassCardVertical({
2651
2818
  }
2652
2819
  const parts = ((politician == null ? void 0 : politician.full_name) || "").split(" ").filter(Boolean);
2653
2820
  const initials = (parts.length >= 2 ? parts[0][0] + parts[parts.length - 1][0] : ((_c = parts[0]) == null ? void 0 : _c[0]) || "?").toUpperCase();
2654
- return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2821
+ return /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2655
2822
  width: RADAR_SIZE2,
2656
2823
  height: RADAR_SIZE2,
2657
2824
  backgroundColor: colors.evMutedBlue,
@@ -2666,7 +2833,7 @@ function CompassCardVertical({
2666
2833
  } }, initials);
2667
2834
  }
2668
2835
  function renderEmptyVariant() {
2669
- return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2836
+ return /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2670
2837
  width: "100%",
2671
2838
  height: "100%",
2672
2839
  flex: 1,
@@ -2679,14 +2846,14 @@ function CompassCardVertical({
2679
2846
  boxSizing: "border-box",
2680
2847
  backgroundColor: colorScales.teal["050"],
2681
2848
  borderRadius: borderRadius.md
2682
- } }, /* @__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: {
2683
2850
  margin: 0,
2684
2851
  fontSize: fontSizes.sm,
2685
2852
  color: colors.textMuted,
2686
2853
  textAlign: "center",
2687
2854
  lineHeight: 1.4,
2688
2855
  fontFamily: fonts.primary
2689
- } }, "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(
2690
2857
  "button",
2691
2858
  {
2692
2859
  type: "button",
@@ -2712,7 +2879,7 @@ function CompassCardVertical({
2712
2879
  ));
2713
2880
  }
2714
2881
  function renderUnavailablePlate(message) {
2715
- return /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2882
+ return /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2716
2883
  width: "100%",
2717
2884
  height: "100%",
2718
2885
  flex: 1,
@@ -2723,7 +2890,7 @@ function CompassCardVertical({
2723
2890
  justifyContent: "center",
2724
2891
  padding: spacing[6],
2725
2892
  boxSizing: "border-box"
2726
- } }, /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2893
+ } }, /* @__PURE__ */ import_react15.default.createElement("p", { style: {
2727
2894
  fontSize: fontSizes.base,
2728
2895
  fontWeight: fontWeights.semibold,
2729
2896
  lineHeight: 1.4,
@@ -2744,7 +2911,7 @@ function CompassCardVertical({
2744
2911
  }
2745
2912
  return renderCompass();
2746
2913
  }
2747
- return /* @__PURE__ */ import_react14.default.createElement(
2914
+ return /* @__PURE__ */ import_react15.default.createElement(
2748
2915
  "div",
2749
2916
  {
2750
2917
  role: "article",
@@ -2763,21 +2930,21 @@ function CompassCardVertical({
2763
2930
  onFocus: () => setFocused(true),
2764
2931
  onBlur: () => setFocused(false)
2765
2932
  },
2766
- /* @__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: {
2767
2934
  fontFamily: fonts.primary,
2768
2935
  fontSize: fontSizes.xl,
2769
2936
  fontWeight: fontWeights.semibold,
2770
2937
  lineHeight: 1.3,
2771
2938
  color: colors.evMutedBlue,
2772
2939
  margin: 0
2773
- } }, politician.full_name), /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2940
+ } }, politician.full_name), /* @__PURE__ */ import_react15.default.createElement("p", { style: {
2774
2941
  fontFamily: fonts.primary,
2775
2942
  fontSize: fontSizes.sm,
2776
2943
  fontWeight: fontWeights.semibold,
2777
2944
  lineHeight: 1.4,
2778
2945
  color: colors.textSecondary,
2779
2946
  margin: 0
2780
- } }, titleText || ""), politician.district_label && /* @__PURE__ */ import_react14.default.createElement("p", { style: {
2947
+ } }, titleText || ""), politician.district_label && /* @__PURE__ */ import_react15.default.createElement("p", { style: {
2781
2948
  fontFamily: fonts.primary,
2782
2949
  fontSize: fontSizes.sm,
2783
2950
  fontWeight: fontWeights.regular,
@@ -2787,7 +2954,7 @@ function CompassCardVertical({
2787
2954
  overflow: "hidden",
2788
2955
  textOverflow: "ellipsis",
2789
2956
  whiteSpace: "nowrap"
2790
- } }, 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(
2791
2958
  IconOverlay,
2792
2959
  {
2793
2960
  ballot: politician.ballot || null,
@@ -2795,7 +2962,7 @@ function CompassCardVertical({
2795
2962
  branch: politician.branch || null
2796
2963
  }
2797
2964
  )))),
2798
- surface === "elections" && politician.withdrawn && /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2965
+ surface === "elections" && politician.withdrawn && /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2799
2966
  margin: `0 ${spacing[4]} ${spacing[3]}`,
2800
2967
  backgroundColor: "rgba(120,0,0,0.85)",
2801
2968
  color: "#fff",
@@ -2807,7 +2974,7 @@ function CompassCardVertical({
2807
2974
  padding: "6px 0",
2808
2975
  borderRadius: borderRadius.sm
2809
2976
  } }, "Withdrawn"),
2810
- 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: {
2811
2978
  margin: `0 ${spacing[4]} ${spacing[3]}`,
2812
2979
  backgroundColor: "rgba(0,0,0,0.75)",
2813
2980
  color: "#fff",
@@ -2819,7 +2986,7 @@ function CompassCardVertical({
2819
2986
  padding: "6px 0",
2820
2987
  borderRadius: borderRadius.sm
2821
2988
  } }, typeof politician.running_unopposed === "string" ? politician.running_unopposed : "Running Unopposed"),
2822
- /* @__PURE__ */ import_react14.default.createElement("div", { style: {
2989
+ /* @__PURE__ */ import_react15.default.createElement("div", { style: {
2823
2990
  flex: 1,
2824
2991
  padding: spacing[4],
2825
2992
  paddingTop: 0,
@@ -2833,7 +3000,7 @@ function CompassCardVertical({
2833
3000
  }
2834
3001
 
2835
3002
  // src/CompassKey.jsx
2836
- var import_react15 = __toESM(require("react"));
3003
+ var import_react16 = __toESM(require("react"));
2837
3004
 
2838
3005
  // src/evContext.js
2839
3006
  var DEFAULT_BROKER_URL = "https://ev-context.empowered.vote/";
@@ -3078,9 +3245,9 @@ var evContext = {
3078
3245
 
3079
3246
  // src/CompassKey.jsx
3080
3247
  function CompassKey({ compact = false } = {}) {
3081
- const [dismissed, setDismissed] = (0, import_react15.useState)(false);
3082
- const [loaded, setLoaded] = (0, import_react15.useState)(false);
3083
- (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)(() => {
3084
3251
  let cancelled = false;
3085
3252
  evContext.get().then((shared) => {
3086
3253
  if (cancelled) return;
@@ -3110,7 +3277,7 @@ function CompassKey({ compact = false } = {}) {
3110
3277
  persistDismissed(false);
3111
3278
  }
3112
3279
  if (!loaded) return null;
3113
- 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: {
3114
3281
  display: "inline-block",
3115
3282
  width: 12,
3116
3283
  height: 12,
@@ -3118,9 +3285,9 @@ function CompassKey({ compact = false } = {}) {
3118
3285
  background: color,
3119
3286
  border: `2px solid ${ring || "#fff"}`,
3120
3287
  boxShadow: "0 0 0 1px rgba(0,0,0,0.08)"
3121
- } }), /* @__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));
3122
3289
  if (dismissed) {
3123
- return /* @__PURE__ */ import_react15.default.createElement(
3290
+ return /* @__PURE__ */ import_react16.default.createElement(
3124
3291
  "button",
3125
3292
  {
3126
3293
  type: "button",
@@ -3141,11 +3308,11 @@ function CompassKey({ compact = false } = {}) {
3141
3308
  cursor: "pointer"
3142
3309
  }
3143
3310
  },
3144
- /* @__PURE__ */ import_react15.default.createElement("span", { "aria-hidden": "true" }, "?"),
3311
+ /* @__PURE__ */ import_react16.default.createElement("span", { "aria-hidden": "true" }, "?"),
3145
3312
  " Compass key"
3146
3313
  );
3147
3314
  }
3148
- return /* @__PURE__ */ import_react15.default.createElement(
3315
+ return /* @__PURE__ */ import_react16.default.createElement(
3149
3316
  "div",
3150
3317
  {
3151
3318
  role: "region",
@@ -3164,17 +3331,17 @@ function CompassKey({ compact = false } = {}) {
3164
3331
  boxSizing: "border-box"
3165
3332
  }
3166
3333
  },
3167
- !compact && /* @__PURE__ */ import_react15.default.createElement("span", { style: {
3334
+ !compact && /* @__PURE__ */ import_react16.default.createElement("span", { style: {
3168
3335
  fontSize: fontSizes.xs,
3169
3336
  fontWeight: fontWeights.semibold,
3170
3337
  color: colors.textMuted,
3171
3338
  textTransform: "uppercase",
3172
3339
  letterSpacing: "0.5px"
3173
3340
  } }, "Compass key"),
3174
- /* @__PURE__ */ import_react15.default.createElement(Swatch, { color: "#7C6B9E", label: "You" }),
3175
- /* @__PURE__ */ import_react15.default.createElement(Swatch, { color: "#5A9A6E", label: "Politician" }),
3176
- /* @__PURE__ */ import_react15.default.createElement(Swatch, { color: "#fed12e", label: "Match" }),
3177
- /* @__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: {
3178
3345
  fontSize: fontSizes.xs,
3179
3346
  fontWeight: fontWeights.semibold,
3180
3347
  color: "#9ca3af",
@@ -3182,8 +3349,8 @@ function CompassKey({ compact = false } = {}) {
3182
3349
  textDecoration: "underline",
3183
3350
  textDecorationStyle: "dashed",
3184
3351
  textUnderlineOffset: "3px"
3185
- } }, "Topic"), /* @__PURE__ */ import_react15.default.createElement("span", { style: { fontSize: fontSizes.xs, color: colors.textSecondary, fontFamily: fonts.primary } }, "= no stance")),
3186
- /* @__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(
3187
3354
  "button",
3188
3355
  {
3189
3356
  type: "button",
@@ -3206,7 +3373,7 @@ function CompassKey({ compact = false } = {}) {
3206
3373
  }
3207
3374
 
3208
3375
  // src/CategorySection.jsx
3209
- var import_react16 = __toESM(require("react"));
3376
+ var import_react17 = __toESM(require("react"));
3210
3377
  function CategorySection({
3211
3378
  title,
3212
3379
  infoTooltip,
@@ -3216,7 +3383,7 @@ function CategorySection({
3216
3383
  tier
3217
3384
  }) {
3218
3385
  var _a, _b;
3219
- const [showTooltip, setShowTooltip] = (0, import_react16.useState)(false);
3386
+ const [showTooltip, setShowTooltip] = (0, import_react17.useState)(false);
3220
3387
  const tierStyle = tier ? tierColors[tier] : null;
3221
3388
  const styles2 = {
3222
3389
  section: {
@@ -3284,7 +3451,7 @@ function CategorySection({
3284
3451
  gap: spacing[4]
3285
3452
  }
3286
3453
  };
3287
- 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(
3288
3455
  "button",
3289
3456
  {
3290
3457
  type: "button",
@@ -3296,8 +3463,8 @@ function CategorySection({
3296
3463
  "aria-label": `Info about ${title}`
3297
3464
  },
3298
3465
  "i",
3299
- showTooltip && /* @__PURE__ */ import_react16.default.createElement("div", { style: styles2.tooltip, role: "tooltip" }, infoTooltip)
3300
- ), 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(
3301
3468
  "a",
3302
3469
  {
3303
3470
  href: websiteUrl,
@@ -3306,7 +3473,7 @@ function CategorySection({
3306
3473
  style: styles2.externalLink,
3307
3474
  "aria-label": `Visit official website for ${title}`
3308
3475
  },
3309
- /* @__PURE__ */ import_react16.default.createElement(
3476
+ /* @__PURE__ */ import_react17.default.createElement(
3310
3477
  "svg",
3311
3478
  {
3312
3479
  viewBox: "0 0 24 24",
@@ -3314,7 +3481,7 @@ function CategorySection({
3314
3481
  xmlns: "http://www.w3.org/2000/svg",
3315
3482
  style: { width: "14px", height: "14px" }
3316
3483
  },
3317
- /* @__PURE__ */ import_react16.default.createElement(
3484
+ /* @__PURE__ */ import_react17.default.createElement(
3318
3485
  "path",
3319
3486
  {
3320
3487
  d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14",
@@ -3325,11 +3492,11 @@ function CategorySection({
3325
3492
  }
3326
3493
  )
3327
3494
  )
3328
- )), /* @__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));
3329
3496
  }
3330
3497
 
3331
3498
  // src/SubGroupSection.jsx
3332
- var import_react17 = __toESM(require("react"));
3499
+ var import_react18 = __toESM(require("react"));
3333
3500
  function SubGroupSection({ title, websiteUrl, children, gridTemplateColumns, gap, justifyContent }) {
3334
3501
  const styles2 = {
3335
3502
  section: {
@@ -3364,7 +3531,7 @@ function SubGroupSection({ title, websiteUrl, children, gridTemplateColumns, gap
3364
3531
  width: "100%"
3365
3532
  }
3366
3533
  };
3367
- 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(
3368
3535
  "a",
3369
3536
  {
3370
3537
  href: websiteUrl,
@@ -3372,12 +3539,12 @@ function SubGroupSection({ title, websiteUrl, children, gridTemplateColumns, gap
3372
3539
  rel: "noopener noreferrer",
3373
3540
  style: styles2.link
3374
3541
  },
3375
- /* @__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" }))
3376
- )), /* @__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));
3377
3544
  }
3378
3545
 
3379
3546
  // src/GovernmentBodySection.jsx
3380
- var import_react18 = __toESM(require("react"));
3547
+ var import_react19 = __toESM(require("react"));
3381
3548
  function GovernmentBodySection({
3382
3549
  title,
3383
3550
  websiteUrl,
@@ -3386,7 +3553,7 @@ function GovernmentBodySection({
3386
3553
  children
3387
3554
  }) {
3388
3555
  var _a;
3389
- const [expanded, setExpanded] = (0, import_react18.useState)(defaultExpanded);
3556
+ const [expanded, setExpanded] = (0, import_react19.useState)(defaultExpanded);
3390
3557
  const tierStyle = tier ? tierColors[tier] : null;
3391
3558
  const accentColor = (_a = tierStyle == null ? void 0 : tierStyle.accent) != null ? _a : colors.borderMedium;
3392
3559
  const styles2 = {
@@ -3426,7 +3593,7 @@ function GovernmentBodySection({
3426
3593
  display: expanded ? "block" : "none"
3427
3594
  }
3428
3595
  };
3429
- 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(
3430
3597
  "div",
3431
3598
  {
3432
3599
  style: styles2.header,
@@ -3442,8 +3609,8 @@ function GovernmentBodySection({
3442
3609
  "aria-expanded": expanded,
3443
3610
  "aria-label": `${expanded ? "Collapse" : "Expand"} ${title}`
3444
3611
  },
3445
- /* @__PURE__ */ import_react18.default.createElement("span", { style: styles2.title }, title),
3446
- websiteUrl && /* @__PURE__ */ import_react18.default.createElement(
3612
+ /* @__PURE__ */ import_react19.default.createElement("span", { style: styles2.title }, title),
3613
+ websiteUrl && /* @__PURE__ */ import_react19.default.createElement(
3447
3614
  "a",
3448
3615
  {
3449
3616
  href: websiteUrl,
@@ -3453,14 +3620,14 @@ function GovernmentBodySection({
3453
3620
  onClick: (e) => e.stopPropagation(),
3454
3621
  "aria-label": `Visit ${title} website`
3455
3622
  },
3456
- /* @__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" }))
3457
3624
  ),
3458
- /* @__PURE__ */ import_react18.default.createElement("span", { style: styles2.toggle, "aria-hidden": "true" }, "\u25BC")
3459
- ), /* @__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));
3460
3627
  }
3461
3628
 
3462
3629
  // src/SocialLinks.jsx
3463
- var import_react19 = __toESM(require("react"));
3630
+ var import_react20 = __toESM(require("react"));
3464
3631
  var SOCIAL_PLATFORMS = [
3465
3632
  { test: /facebook\.com/i, platform: "facebook" },
3466
3633
  { test: /twitter\.com|x\.com/i, platform: "twitter" },
@@ -3531,7 +3698,7 @@ function SocialLinks({
3531
3698
  }
3532
3699
  };
3533
3700
  const platformIconMap = {
3534
- 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(
3535
3702
  "path",
3536
3703
  {
3537
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",
@@ -3541,7 +3708,7 @@ function SocialLinks({
3541
3708
  strokeLinejoin: "round"
3542
3709
  }
3543
3710
  )),
3544
- 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(
3545
3712
  "path",
3546
3713
  {
3547
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",
@@ -3551,8 +3718,8 @@ function SocialLinks({
3551
3718
  strokeLinejoin: "round"
3552
3719
  }
3553
3720
  )),
3554
- 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" })),
3555
- 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(
3556
3723
  "path",
3557
3724
  {
3558
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",
@@ -3561,8 +3728,8 @@ function SocialLinks({
3561
3728
  strokeLinecap: "round",
3562
3729
  strokeLinejoin: "round"
3563
3730
  }
3564
- ), /* @__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" })),
3565
- 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" }))
3566
3733
  };
3567
3734
  const links = [
3568
3735
  {
@@ -3588,7 +3755,7 @@ function SocialLinks({
3588
3755
  {
3589
3756
  href: website,
3590
3757
  label: "Website",
3591
- 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(
3592
3759
  "path",
3593
3760
  {
3594
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",
@@ -3618,7 +3785,7 @@ function SocialLinks({
3618
3785
  if (links.length === 0) {
3619
3786
  return null;
3620
3787
  }
3621
- 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(
3622
3789
  "a",
3623
3790
  {
3624
3791
  key: link.label,
@@ -3641,7 +3808,7 @@ function SocialLinks({
3641
3808
  }
3642
3809
 
3643
3810
  // src/IssueTags.jsx
3644
- var import_react20 = __toESM(require("react"));
3811
+ var import_react21 = __toESM(require("react"));
3645
3812
  function IssueTags({
3646
3813
  tags = [],
3647
3814
  selectedTags = [],
@@ -3684,9 +3851,9 @@ function IssueTags({
3684
3851
  onTagClick(tag.value);
3685
3852
  }
3686
3853
  };
3687
- 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) => {
3688
3855
  const isSelected = selectedTags.includes(tag.value);
3689
- return /* @__PURE__ */ import_react20.default.createElement(
3856
+ return /* @__PURE__ */ import_react21.default.createElement(
3690
3857
  "span",
3691
3858
  {
3692
3859
  key: tag.value,
@@ -3715,7 +3882,7 @@ function IssueTags({
3715
3882
  }
3716
3883
 
3717
3884
  // src/CommitteeTable.jsx
3718
- var import_react21 = __toESM(require("react"));
3885
+ var import_react22 = __toESM(require("react"));
3719
3886
  var ROLE_ORDER = {
3720
3887
  "chair": 0,
3721
3888
  "co-chair": 1,
@@ -3742,7 +3909,7 @@ function CommitteeTable({
3742
3909
  maxVisible = 6,
3743
3910
  style = {}
3744
3911
  }) {
3745
- const [showAll, setShowAll] = (0, import_react21.useState)(false);
3912
+ const [showAll, setShowAll] = (0, import_react22.useState)(false);
3746
3913
  if (committees.length === 0) {
3747
3914
  return null;
3748
3915
  }
@@ -3804,7 +3971,7 @@ function CommitteeTable({
3804
3971
  cursor: "pointer"
3805
3972
  }
3806
3973
  };
3807
- 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(
3808
3975
  "a",
3809
3976
  {
3810
3977
  href: committee.url,
@@ -3819,7 +3986,7 @@ function CommitteeTable({
3819
3986
  }
3820
3987
  },
3821
3988
  committee.name
3822
- ) : 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(
3823
3990
  "button",
3824
3991
  {
3825
3992
  type: "button",
@@ -3827,7 +3994,7 @@ function CommitteeTable({
3827
3994
  onClick: () => setShowAll(!showAll)
3828
3995
  },
3829
3996
  showAll ? "Show less" : `Show all ${sorted.length} committees`,
3830
- /* @__PURE__ */ import_react21.default.createElement(
3997
+ /* @__PURE__ */ import_react22.default.createElement(
3831
3998
  "svg",
3832
3999
  {
3833
4000
  width: "14",
@@ -3840,16 +4007,16 @@ function CommitteeTable({
3840
4007
  strokeLinejoin: "round",
3841
4008
  style: { transform: showAll ? "rotate(180deg)" : "none", transition: "transform 0.2s" }
3842
4009
  },
3843
- /* @__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" })
3844
4011
  )
3845
4012
  ));
3846
4013
  }
3847
4014
 
3848
4015
  // src/PoliticianProfile.jsx
3849
- var import_react24 = __toESM(require("react"));
4016
+ var import_react25 = __toESM(require("react"));
3850
4017
 
3851
4018
  // src/LegislativeInlineSummary.jsx
3852
- var import_react22 = __toESM(require("react"));
4019
+ var import_react23 = __toESM(require("react"));
3853
4020
  function normalizePosition(pos) {
3854
4021
  if (!pos) return "";
3855
4022
  return pos.replace(/_/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
@@ -3957,7 +4124,7 @@ function LegislativeInlineSummary({ summary, politicianId, onNavigateToRecord })
3957
4124
  fontSize: fontSizes.sm,
3958
4125
  fontWeight: fontWeights.medium
3959
4126
  };
3960
- 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(
3961
4128
  "button",
3962
4129
  {
3963
4130
  onClick: () => {
@@ -3982,12 +4149,12 @@ function LegislativeInlineSummary({ summary, politicianId, onNavigateToRecord })
3982
4149
  }
3983
4150
  },
3984
4151
  "View Full Legislative Record",
3985
- /* @__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" }))
3986
4153
  )));
3987
4154
  }
3988
4155
 
3989
4156
  // src/JudicialScorecard.jsx
3990
- var import_react23 = __toESM(require("react"));
4157
+ var import_react24 = __toESM(require("react"));
3991
4158
 
3992
4159
  // src/judicialUtils.js
3993
4160
  function formatDate(dateStr) {
@@ -4105,7 +4272,7 @@ function JudicialScorecard({ judicialRecord, politicianId, onNavigateToRecord })
4105
4272
  onNavigateToRecord(`/politician/${politicianId}/judicial-record`);
4106
4273
  }
4107
4274
  };
4108
- 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"));
4109
4276
  }
4110
4277
 
4111
4278
  // src/PoliticianProfile.jsx
@@ -4256,13 +4423,13 @@ function formatAddress(addr) {
4256
4423
  if (cityStateZip) lines.push(cityStateZip);
4257
4424
  return lines;
4258
4425
  }
4259
- 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" }));
4260
- 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" }));
4261
- 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" }));
4262
- 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" }));
4263
- 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" }));
4264
- 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" }));
4265
- 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" }));
4266
4433
  function PoliticianProfile({
4267
4434
  politician = {},
4268
4435
  onBack,
@@ -4289,8 +4456,8 @@ function PoliticianProfile({
4289
4456
  return pol.photo_origin_url;
4290
4457
  })();
4291
4458
  const initials = [pol.first_name, pol.last_name].filter(Boolean).map((n) => n[0]).join("");
4292
- const [imgError, setImgError] = (0, import_react24.useState)(false);
4293
- (0, import_react24.useEffect)(() => {
4459
+ const [imgError, setImgError] = (0, import_react25.useState)(false);
4460
+ (0, import_react25.useEffect)(() => {
4294
4461
  setImgError(false);
4295
4462
  }, [profileImageUrl]);
4296
4463
  const getSocialHandle = (type) => {
@@ -4590,7 +4757,7 @@ function PoliticianProfile({
4590
4757
  borderRadius: borderRadius.full
4591
4758
  }
4592
4759
  };
4593
- 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(
4594
4761
  "button",
4595
4762
  {
4596
4763
  type: "button",
@@ -4603,9 +4770,9 @@ function PoliticianProfile({
4603
4770
  e.currentTarget.style.textDecoration = "none";
4604
4771
  }
4605
4772
  },
4606
- /* @__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" })),
4607
4774
  label
4608
- ), /* @__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(
4609
4776
  "img",
4610
4777
  {
4611
4778
  src: profileImageUrl,
@@ -4613,7 +4780,7 @@ function PoliticianProfile({
4613
4780
  style: styles2.photo,
4614
4781
  onError: () => setImgError(true)
4615
4782
  }
4616
- ) : /* @__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(
4617
4784
  "a",
4618
4785
  {
4619
4786
  href: pol.web_form_url,
@@ -4627,9 +4794,9 @@ function PoliticianProfile({
4627
4794
  e.currentTarget.style.background = colors.evTeal;
4628
4795
  }
4629
4796
  },
4630
- /* @__PURE__ */ import_react24.default.createElement(ExternalLinkIcon, { size: 14 }),
4797
+ /* @__PURE__ */ import_react25.default.createElement(ExternalLinkIcon, { size: 14 }),
4631
4798
  "Submit a Message"
4632
- ))), 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(
4633
4800
  "a",
4634
4801
  {
4635
4802
  href: `tel:${phone}`,
@@ -4642,7 +4809,7 @@ function PoliticianProfile({
4642
4809
  }
4643
4810
  },
4644
4811
  phone
4645
- )))))), 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(
4646
4813
  "a",
4647
4814
  {
4648
4815
  href: `mailto:${email}`,
@@ -4655,7 +4822,7 @@ function PoliticianProfile({
4655
4822
  }
4656
4823
  },
4657
4824
  email
4658
- )))))), 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(
4659
4826
  "a",
4660
4827
  {
4661
4828
  href: url,
@@ -4670,7 +4837,7 @@ function PoliticianProfile({
4670
4837
  }
4671
4838
  },
4672
4839
  extractDomain(url)
4673
- ))), (hasSocial || socialWebsiteUrls.length > 0) && /* @__PURE__ */ import_react24.default.createElement(
4840
+ ))), (hasSocial || socialWebsiteUrls.length > 0) && /* @__PURE__ */ import_react25.default.createElement(
4674
4841
  SocialLinks,
4675
4842
  {
4676
4843
  twitter,
@@ -4681,14 +4848,14 @@ function PoliticianProfile({
4681
4848
  size: "sm",
4682
4849
  style: { marginTop: allWebsites.length > 0 ? "8px" : 0 }
4683
4850
  }
4684
- )))), 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(
4685
4852
  JudicialScorecard,
4686
4853
  {
4687
4854
  judicialRecord,
4688
4855
  politicianId,
4689
4856
  onNavigateToRecord
4690
4857
  }
4691
- ) : /* @__PURE__ */ import_react24.default.createElement(
4858
+ ) : /* @__PURE__ */ import_react25.default.createElement(
4692
4859
  LegislativeInlineSummary,
4693
4860
  {
4694
4861
  summary: legislativeSummary,
@@ -4699,7 +4866,7 @@ function PoliticianProfile({
4699
4866
  }
4700
4867
 
4701
4868
  // src/LegislativeRecord.jsx
4702
- var import_react25 = __toESM(require("react"));
4869
+ var import_react26 = __toESM(require("react"));
4703
4870
  var DEFAULT_LIMIT = 25;
4704
4871
  function normalizeText(str) {
4705
4872
  if (!str) return "";
@@ -4779,7 +4946,7 @@ function getPositionBadge(position) {
4779
4946
  return { bg: colors.borderLight, text: colors.textSecondary };
4780
4947
  }
4781
4948
  function Badge({ label, bg, text }) {
4782
- return /* @__PURE__ */ import_react25.default.createElement("span", { style: {
4949
+ return /* @__PURE__ */ import_react26.default.createElement("span", { style: {
4783
4950
  display: "inline-block",
4784
4951
  background: bg,
4785
4952
  color: text,
@@ -4792,18 +4959,18 @@ function Badge({ label, bg, text }) {
4792
4959
  } }, label);
4793
4960
  }
4794
4961
  function SectionHeader({ title, yearFilter, years, onYearChange }) {
4795
- return /* @__PURE__ */ import_react25.default.createElement("div", { style: {
4962
+ return /* @__PURE__ */ import_react26.default.createElement("div", { style: {
4796
4963
  display: "flex",
4797
4964
  alignItems: "center",
4798
4965
  justifyContent: "space-between",
4799
4966
  marginBottom: spacing[4]
4800
- } }, /* @__PURE__ */ import_react25.default.createElement("h2", { style: {
4967
+ } }, /* @__PURE__ */ import_react26.default.createElement("h2", { style: {
4801
4968
  fontFamily: fonts.primary,
4802
4969
  fontSize: fontSizes.xl,
4803
4970
  fontWeight: fontWeights.bold,
4804
4971
  color: colors.evTeal,
4805
4972
  margin: 0
4806
- } }, title), years && years.length > 0 && /* @__PURE__ */ import_react25.default.createElement(
4973
+ } }, title), years && years.length > 0 && /* @__PURE__ */ import_react26.default.createElement(
4807
4974
  "select",
4808
4975
  {
4809
4976
  value: yearFilter,
@@ -4819,13 +4986,13 @@ function SectionHeader({ title, yearFilter, years, onYearChange }) {
4819
4986
  cursor: "pointer"
4820
4987
  }
4821
4988
  },
4822
- /* @__PURE__ */ import_react25.default.createElement("option", { value: "All" }, "All years"),
4823
- 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))
4824
4991
  ));
4825
4992
  }
4826
4993
  function ShowAllLink({ totalCount, visibleCount, onClick }) {
4827
4994
  if (totalCount <= visibleCount) return null;
4828
- 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(
4829
4996
  "button",
4830
4997
  {
4831
4998
  type: "button",
@@ -4853,7 +5020,7 @@ function ShowAllLink({ totalCount, visibleCount, onClick }) {
4853
5020
  ));
4854
5021
  }
4855
5022
  function EmptyState({ message }) {
4856
- return /* @__PURE__ */ import_react25.default.createElement("p", { style: {
5023
+ return /* @__PURE__ */ import_react26.default.createElement("p", { style: {
4857
5024
  fontFamily: fonts.primary,
4858
5025
  fontSize: fontSizes.sm,
4859
5026
  color: colors.textMuted,
@@ -4863,24 +5030,24 @@ function EmptyState({ message }) {
4863
5030
  } }, message);
4864
5031
  }
4865
5032
  function Spinner() {
4866
- return /* @__PURE__ */ import_react25.default.createElement("div", { style: {
5033
+ return /* @__PURE__ */ import_react26.default.createElement("div", { style: {
4867
5034
  display: "flex",
4868
5035
  justifyContent: "center",
4869
5036
  alignItems: "center",
4870
5037
  padding: spacing[10]
4871
- } }, /* @__PURE__ */ import_react25.default.createElement("div", { style: {
5038
+ } }, /* @__PURE__ */ import_react26.default.createElement("div", { style: {
4872
5039
  width: "40px",
4873
5040
  height: "40px",
4874
5041
  borderRadius: borderRadius.full,
4875
5042
  border: `3px solid ${colors.borderLight}`,
4876
5043
  borderTopColor: colors.evTeal,
4877
5044
  animation: "ev-spin 0.8s linear infinite"
4878
- } }), /* @__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); } }`));
4879
5046
  }
4880
5047
  function CommitteesSection({ committees, leadership }) {
4881
- const [showAll, setShowAll] = (0, import_react25.useState)(false);
5048
+ const [showAll, setShowAll] = (0, import_react26.useState)(false);
4882
5049
  const visible = showAll ? committees : committees.slice(0, DEFAULT_LIMIT);
4883
- 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: {
4884
5051
  display: "inline-flex",
4885
5052
  alignItems: "center",
4886
5053
  gap: spacing[1],
@@ -4891,23 +5058,23 @@ function CommitteesSection({ committees, leadership }) {
4891
5058
  fontFamily: fonts.primary,
4892
5059
  fontSize: fontSizes.sm,
4893
5060
  fontWeight: fontWeights.semibold
4894
- } }, 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) => {
4895
5062
  const badge = getRoleBadge(c.role);
4896
- return /* @__PURE__ */ import_react25.default.createElement("div", { key: i, style: {
5063
+ return /* @__PURE__ */ import_react26.default.createElement("div", { key: i, style: {
4897
5064
  display: "flex",
4898
5065
  alignItems: "center",
4899
5066
  justifyContent: "space-between",
4900
5067
  padding: `${spacing[3]} 0`,
4901
5068
  borderBottom: `1px solid ${colors.borderLight}`,
4902
5069
  gap: spacing[3]
4903
- } }, /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5070
+ } }, /* @__PURE__ */ import_react26.default.createElement("span", { style: {
4904
5071
  fontFamily: fonts.primary,
4905
5072
  fontSize: fontSizes.sm,
4906
5073
  color: colors.textSecondary,
4907
5074
  flex: 1,
4908
5075
  minWidth: 0
4909
- } }, 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 }));
4910
- })), !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(
4911
5078
  ShowAllLink,
4912
5079
  {
4913
5080
  totalCount: committees.length,
@@ -4918,15 +5085,15 @@ function CommitteesSection({ committees, leadership }) {
4918
5085
  }
4919
5086
  function LegislationSection({ bills, isMobile }) {
4920
5087
  const years = getYears(bills, "introduced_at");
4921
- const [yearFilter, setYearFilter] = (0, import_react25.useState)("All");
4922
- 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);
4923
5090
  const handleYearChange = (y) => {
4924
5091
  setYearFilter(y);
4925
5092
  setShowAll(false);
4926
5093
  };
4927
5094
  const filtered = yearFilter === "All" ? bills : bills.filter((b) => extractYear(b.introduced_at) === yearFilter);
4928
5095
  const visible = showAll ? filtered : filtered.slice(0, DEFAULT_LIMIT);
4929
- 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(
4930
5097
  SectionHeader,
4931
5098
  {
4932
5099
  title: "Sponsored Legislation",
@@ -4934,42 +5101,42 @@ function LegislationSection({ bills, isMobile }) {
4934
5101
  years,
4935
5102
  onYearChange: handleYearChange
4936
5103
  }
4937
- ), 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) => {
4938
5105
  const statusBadge = getStatusBadge(bill.status_label);
4939
- return /* @__PURE__ */ import_react25.default.createElement("div", { key: i, style: {
5106
+ return /* @__PURE__ */ import_react26.default.createElement("div", { key: i, style: {
4940
5107
  display: "flex",
4941
5108
  flexDirection: isMobile ? "column" : "row",
4942
5109
  alignItems: isMobile ? "flex-start" : "center",
4943
5110
  gap: isMobile ? spacing[1] : spacing[3],
4944
5111
  padding: `${spacing[3]} 0`,
4945
5112
  borderBottom: `1px solid ${colors.borderLight}`
4946
- } }, /* @__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: {
4947
5114
  fontFamily: fonts.primary,
4948
5115
  fontSize: fontSizes.xs,
4949
5116
  fontWeight: fontWeights.bold,
4950
5117
  color: colors.textSecondary,
4951
5118
  marginRight: spacing[2]
4952
- } }, bill.number), /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5119
+ } }, bill.number), /* @__PURE__ */ import_react26.default.createElement("span", { style: {
4953
5120
  fontFamily: fonts.primary,
4954
5121
  fontSize: fontSizes.sm,
4955
5122
  color: colors.textSecondary
4956
- } }, bill.title)), /* @__PURE__ */ import_react25.default.createElement("div", { style: {
5123
+ } }, bill.title)), /* @__PURE__ */ import_react26.default.createElement("div", { style: {
4957
5124
  display: "flex",
4958
5125
  alignItems: "center",
4959
5126
  gap: spacing[2],
4960
5127
  flexShrink: 0,
4961
5128
  flexWrap: "wrap"
4962
- } }, /* @__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: {
4963
5130
  fontFamily: fonts.primary,
4964
5131
  fontSize: fontSizes.xs,
4965
5132
  color: colors.textMuted
4966
- } }, formatDate2(bill.introduced_at)), /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5133
+ } }, formatDate2(bill.introduced_at)), /* @__PURE__ */ import_react26.default.createElement("span", { style: {
4967
5134
  fontFamily: fonts.primary,
4968
5135
  fontSize: fontSizes.xs,
4969
5136
  color: colors.textMuted,
4970
5137
  fontStyle: "italic"
4971
5138
  } }, bill.is_sponsor ? "Sponsored" : "Cosponsored")));
4972
- })), !showAll && /* @__PURE__ */ import_react25.default.createElement(
5139
+ })), !showAll && /* @__PURE__ */ import_react26.default.createElement(
4973
5140
  ShowAllLink,
4974
5141
  {
4975
5142
  totalCount: filtered.length,
@@ -4980,15 +5147,15 @@ function LegislationSection({ bills, isMobile }) {
4980
5147
  }
4981
5148
  function VotingSection({ votes, isMobile }) {
4982
5149
  const years = getYears(votes, "vote_date");
4983
- const [yearFilter, setYearFilter] = (0, import_react25.useState)("All");
4984
- 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);
4985
5152
  const handleYearChange = (y) => {
4986
5153
  setYearFilter(y);
4987
5154
  setShowAll(false);
4988
5155
  };
4989
5156
  const filtered = yearFilter === "All" ? votes : votes.filter((v) => extractYear(v.vote_date) === yearFilter);
4990
5157
  const visible = showAll ? filtered : filtered.slice(0, DEFAULT_LIMIT);
4991
- 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(
4992
5159
  SectionHeader,
4993
5160
  {
4994
5161
  title: "Voting Record",
@@ -4996,38 +5163,38 @@ function VotingSection({ votes, isMobile }) {
4996
5163
  years,
4997
5164
  onYearChange: handleYearChange
4998
5165
  }
4999
- ), 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) => {
5000
5167
  const positionBadge = getPositionBadge(vote.position);
5001
5168
  const normPosition = normalizeText(vote.position);
5002
5169
  const topic = vote.bill_title || vote.vote_question;
5003
5170
  const sourceUrl = vote.bill_url;
5004
- return /* @__PURE__ */ import_react25.default.createElement("div", { key: i, style: {
5171
+ return /* @__PURE__ */ import_react26.default.createElement("div", { key: i, style: {
5005
5172
  display: "flex",
5006
5173
  flexDirection: isMobile ? "column" : "row",
5007
5174
  alignItems: isMobile ? "flex-start" : "center",
5008
5175
  gap: isMobile ? spacing[1] : spacing[3],
5009
5176
  padding: `${spacing[3]} 0`,
5010
5177
  borderBottom: `1px solid ${colors.borderLight}`
5011
- } }, /* @__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: {
5012
5179
  fontFamily: fonts.primary,
5013
5180
  fontSize: fontSizes.sm,
5014
5181
  color: colors.textSecondary
5015
- } }, topic)), /* @__PURE__ */ import_react25.default.createElement("div", { style: {
5182
+ } }, topic)), /* @__PURE__ */ import_react26.default.createElement("div", { style: {
5016
5183
  display: "flex",
5017
5184
  alignItems: "center",
5018
5185
  gap: spacing[2],
5019
5186
  flexShrink: 0,
5020
5187
  flexWrap: "wrap"
5021
- } }, vote.vote_date && /* @__PURE__ */ import_react25.default.createElement("span", { style: {
5188
+ } }, vote.vote_date && /* @__PURE__ */ import_react26.default.createElement("span", { style: {
5022
5189
  fontFamily: fonts.primary,
5023
5190
  fontSize: fontSizes.xs,
5024
5191
  color: colors.textMuted
5025
- } }, 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: {
5026
5193
  fontFamily: fonts.primary,
5027
5194
  fontSize: fontSizes.xs,
5028
5195
  color: vote.result === "Passed" ? colors.success : colors.textMuted,
5029
5196
  fontWeight: fontWeights.medium
5030
- } }, vote.result), sourceUrl && /* @__PURE__ */ import_react25.default.createElement(
5197
+ } }, vote.result), sourceUrl && /* @__PURE__ */ import_react26.default.createElement(
5031
5198
  "a",
5032
5199
  {
5033
5200
  href: sourceUrl,
@@ -5048,7 +5215,7 @@ function VotingSection({ votes, isMobile }) {
5048
5215
  },
5049
5216
  "Source"
5050
5217
  )));
5051
- })), !showAll && /* @__PURE__ */ import_react25.default.createElement(
5218
+ })), !showAll && /* @__PURE__ */ import_react26.default.createElement(
5052
5219
  ShowAllLink,
5053
5220
  {
5054
5221
  totalCount: filtered.length,
@@ -5067,20 +5234,20 @@ function LegislativeRecord({
5067
5234
  }) {
5068
5235
  const isMobile = useMediaQuery("(max-width: 768px)");
5069
5236
  if (loading) {
5070
- return /* @__PURE__ */ import_react25.default.createElement(Spinner, null);
5237
+ return /* @__PURE__ */ import_react26.default.createElement(Spinner, null);
5071
5238
  }
5072
- 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: {
5073
5240
  fontFamily: fonts.primary,
5074
5241
  fontSize: isMobile ? fontSizes["2xl"] : fontSizes["4xl"],
5075
5242
  fontWeight: fontWeights.bold,
5076
5243
  color: colors.evTeal,
5077
5244
  marginBottom: spacing[8],
5078
5245
  marginTop: 0
5079
- } }, "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 }));
5080
5247
  }
5081
5248
 
5082
5249
  // src/JudicialRecordDetail.jsx
5083
- var import_react26 = __toESM(require("react"));
5250
+ var import_react27 = __toESM(require("react"));
5084
5251
  var containerStyle = {
5085
5252
  fontFamily: "'Manrope', sans-serif",
5086
5253
  maxWidth: "800px"
@@ -5165,7 +5332,7 @@ var emptyStateStyle = {
5165
5332
  function JudicialRecordDetail({ politician = {}, judicialRecord, onBack }) {
5166
5333
  var _a;
5167
5334
  if (!judicialRecord) {
5168
- 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."));
5169
5336
  }
5170
5337
  const {
5171
5338
  judge_detail: detail,
@@ -5174,13 +5341,13 @@ function JudicialRecordDetail({ politician = {}, judicialRecord, onBack }) {
5174
5341
  disciplinary_records: disciplinary = []
5175
5342
  } = judicialRecord;
5176
5343
  const displayName = politician.full_name || `${politician.first_name || ""} ${politician.last_name || ""}`.trim();
5177
- 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: {
5178
5345
  borderLeft: "3px solid #fc8181",
5179
5346
  backgroundColor: "#fff5f5",
5180
5347
  borderRadius: "0 6px 6px 0",
5181
5348
  padding: "12px 16px",
5182
5349
  marginBottom: "10px"
5183
- } }, /* @__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(
5184
5351
  "a",
5185
5352
  {
5186
5353
  href: d.source_url,
@@ -5193,7 +5360,7 @@ function JudicialRecordDetail({ politician = {}, judicialRecord, onBack }) {
5193
5360
  }
5194
5361
 
5195
5362
  // src/AuthForm.jsx
5196
- var import_react27 = __toESM(require("react"));
5363
+ var import_react28 = __toESM(require("react"));
5197
5364
  function AuthForm({
5198
5365
  logoSrc = "/EVLogo.svg",
5199
5366
  appName = "Empowered Vote",
@@ -5204,11 +5371,11 @@ function AuthForm({
5204
5371
  error = null,
5205
5372
  submitting = false
5206
5373
  }) {
5207
- const [username, setUsername] = (0, import_react27.useState)("");
5208
- const [password, setPassword] = (0, import_react27.useState)("");
5209
- const [confirmPassword, setConfirmPassword] = (0, import_react27.useState)("");
5210
- const [showPasswords, setShowPasswords] = (0, import_react27.useState)(false);
5211
- 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);
5212
5379
  const isLogin = mode === "login";
5213
5380
  const handleSubmit = (e) => {
5214
5381
  e.preventDefault();
@@ -5220,7 +5387,7 @@ function AuthForm({
5220
5387
  setPasswordMismatch(false);
5221
5388
  onSubmit == null ? void 0 : onSubmit(username.trim(), password);
5222
5389
  };
5223
- const EyeOpen = () => /* @__PURE__ */ import_react27.default.createElement(
5390
+ const EyeOpen = () => /* @__PURE__ */ import_react28.default.createElement(
5224
5391
  "svg",
5225
5392
  {
5226
5393
  xmlns: "http://www.w3.org/2000/svg",
@@ -5230,7 +5397,7 @@ function AuthForm({
5230
5397
  stroke: "currentColor",
5231
5398
  style: { width: "20px", height: "20px" }
5232
5399
  },
5233
- /* @__PURE__ */ import_react27.default.createElement(
5400
+ /* @__PURE__ */ import_react28.default.createElement(
5234
5401
  "path",
5235
5402
  {
5236
5403
  strokeLinecap: "round",
@@ -5238,7 +5405,7 @@ function AuthForm({
5238
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"
5239
5406
  }
5240
5407
  ),
5241
- /* @__PURE__ */ import_react27.default.createElement(
5408
+ /* @__PURE__ */ import_react28.default.createElement(
5242
5409
  "path",
5243
5410
  {
5244
5411
  strokeLinecap: "round",
@@ -5247,7 +5414,7 @@ function AuthForm({
5247
5414
  }
5248
5415
  )
5249
5416
  );
5250
- const EyeClosed = () => /* @__PURE__ */ import_react27.default.createElement(
5417
+ const EyeClosed = () => /* @__PURE__ */ import_react28.default.createElement(
5251
5418
  "svg",
5252
5419
  {
5253
5420
  xmlns: "http://www.w3.org/2000/svg",
@@ -5257,7 +5424,7 @@ function AuthForm({
5257
5424
  stroke: "currentColor",
5258
5425
  style: { width: "20px", height: "20px" }
5259
5426
  },
5260
- /* @__PURE__ */ import_react27.default.createElement(
5427
+ /* @__PURE__ */ import_react28.default.createElement(
5261
5428
  "path",
5262
5429
  {
5263
5430
  strokeLinecap: "round",
@@ -5266,17 +5433,17 @@ function AuthForm({
5266
5433
  }
5267
5434
  )
5268
5435
  );
5269
- const PasswordToggle = () => /* @__PURE__ */ import_react27.default.createElement(
5436
+ const PasswordToggle = () => /* @__PURE__ */ import_react28.default.createElement(
5270
5437
  "button",
5271
5438
  {
5272
5439
  type: "button",
5273
5440
  onClick: () => setShowPasswords((prev) => !prev),
5274
5441
  style: styles.passwordToggle
5275
5442
  },
5276
- 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)
5277
5444
  );
5278
5445
  const displayError = passwordMismatch ? "Passwords do not match." : error;
5279
- 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(
5280
5447
  "input",
5281
5448
  {
5282
5449
  type: "text",
@@ -5293,7 +5460,7 @@ function AuthForm({
5293
5460
  },
5294
5461
  required: true
5295
5462
  }
5296
- )), /* @__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(
5297
5464
  "input",
5298
5465
  {
5299
5466
  type: showPasswords ? "text" : "password",
@@ -5309,7 +5476,7 @@ function AuthForm({
5309
5476
  },
5310
5477
  required: true
5311
5478
  }
5312
- ), /* @__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(
5313
5480
  "input",
5314
5481
  {
5315
5482
  type: showPasswords ? "text" : "password",
@@ -5325,7 +5492,7 @@ function AuthForm({
5325
5492
  },
5326
5493
  required: true
5327
5494
  }
5328
- ), /* @__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(
5329
5496
  "button",
5330
5497
  {
5331
5498
  type: "submit",
@@ -5343,7 +5510,7 @@ function AuthForm({
5343
5510
  }
5344
5511
  },
5345
5512
  submitting ? isLogin ? "Signing In..." : "Creating Account..." : isLogin ? "Sign In" : "Create Account"
5346
- ), 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(
5347
5514
  "button",
5348
5515
  {
5349
5516
  type: "button",
@@ -5516,9 +5683,9 @@ var styles = {
5516
5683
  };
5517
5684
 
5518
5685
  // src/TopicTierBadge.jsx
5519
- var import_react28 = __toESM(require("react"));
5686
+ var import_react29 = __toESM(require("react"));
5520
5687
  function LandmarkIcon({ size = 14 }) {
5521
- return /* @__PURE__ */ import_react28.default.createElement(
5688
+ return /* @__PURE__ */ import_react29.default.createElement(
5522
5689
  "svg",
5523
5690
  {
5524
5691
  width: size,
@@ -5532,16 +5699,16 @@ function LandmarkIcon({ size = 14 }) {
5532
5699
  xmlns: "http://www.w3.org/2000/svg",
5533
5700
  "aria-hidden": "true"
5534
5701
  },
5535
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 18v-7" }),
5536
- /* @__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" }),
5537
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M14 18v-7" }),
5538
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M18 18v-7" }),
5539
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M3 22h18" }),
5540
- /* @__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" })
5541
5708
  );
5542
5709
  }
5543
5710
  function Building2Icon({ size = 14 }) {
5544
- return /* @__PURE__ */ import_react28.default.createElement(
5711
+ return /* @__PURE__ */ import_react29.default.createElement(
5545
5712
  "svg",
5546
5713
  {
5547
5714
  width: size,
@@ -5555,17 +5722,17 @@ function Building2Icon({ size = 14 }) {
5555
5722
  xmlns: "http://www.w3.org/2000/svg",
5556
5723
  "aria-hidden": "true"
5557
5724
  },
5558
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z" }),
5559
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M6 12H4a2 2 0 0 0-2 2v8h4" }),
5560
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M18 9h2a2 2 0 0 1 2 2v11h-4" }),
5561
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 6h4" }),
5562
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 10h4" }),
5563
- /* @__PURE__ */ import_react28.default.createElement("path", { d: "M10 14h4" }),
5564
- /* @__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" })
5565
5732
  );
5566
5733
  }
5567
5734
  function HomeIcon({ size = 14 }) {
5568
- return /* @__PURE__ */ import_react28.default.createElement(
5735
+ return /* @__PURE__ */ import_react29.default.createElement(
5569
5736
  "svg",
5570
5737
  {
5571
5738
  width: size,
@@ -5579,8 +5746,8 @@ function HomeIcon({ size = 14 }) {
5579
5746
  xmlns: "http://www.w3.org/2000/svg",
5580
5747
  "aria-hidden": "true"
5581
5748
  },
5582
- /* @__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" }),
5583
- /* @__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" })
5584
5751
  );
5585
5752
  }
5586
5753
  var TIER_INFO = {
@@ -5640,7 +5807,7 @@ function TopicTierBadge({
5640
5807
  userSelect: "none"
5641
5808
  };
5642
5809
  };
5643
- return /* @__PURE__ */ import_react28.default.createElement(
5810
+ return /* @__PURE__ */ import_react29.default.createElement(
5644
5811
  "span",
5645
5812
  {
5646
5813
  className: "ev-topic-tier-badge",
@@ -5650,13 +5817,13 @@ function TopicTierBadge({
5650
5817
  },
5651
5818
  effectiveTiers.map((tier) => {
5652
5819
  const { label, Icon } = TIER_INFO[tier];
5653
- 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));
5654
5821
  })
5655
5822
  );
5656
5823
  }
5657
5824
 
5658
5825
  // src/CompassCoverageCallout.jsx
5659
- var import_react29 = __toESM(require("react"));
5826
+ var import_react30 = __toESM(require("react"));
5660
5827
  var TIER_LABELS = {
5661
5828
  federal: "federal",
5662
5829
  state: "state",
@@ -5669,7 +5836,7 @@ function CompassCoverageCallout({
5669
5836
  compassUrl,
5670
5837
  onDismiss
5671
5838
  }) {
5672
- const [dismissed, setDismissed] = (0, import_react29.useState)(false);
5839
+ const [dismissed, setDismissed] = (0, import_react30.useState)(false);
5673
5840
  if (dismissed) return null;
5674
5841
  const tierLabel = TIER_LABELS[tier] || tier;
5675
5842
  const tierStyle = tierColors[tier] || tierColors.federal;
@@ -5720,15 +5887,15 @@ function CompassCoverageCallout({
5720
5887
  setDismissed(true);
5721
5888
  if (onDismiss) onDismiss();
5722
5889
  };
5723
- return /* @__PURE__ */ import_react29.default.createElement(
5890
+ return /* @__PURE__ */ import_react30.default.createElement(
5724
5891
  "div",
5725
5892
  {
5726
5893
  className: "ev-compass-coverage-callout",
5727
5894
  role: "status",
5728
5895
  style: containerStyle2
5729
5896
  },
5730
- /* @__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")),
5731
- 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(
5732
5899
  "button",
5733
5900
  {
5734
5901
  onClick: handleDismiss,
@@ -5741,7 +5908,7 @@ function CompassCoverageCallout({
5741
5908
  }
5742
5909
 
5743
5910
  // src/ExpandCompassNudge.jsx
5744
- var import_react30 = __toESM(require("react"));
5911
+ var import_react31 = __toESM(require("react"));
5745
5912
  function ExpandCompassNudge({
5746
5913
  politicianName,
5747
5914
  missingCount,
@@ -5788,7 +5955,7 @@ function ExpandCompassNudge({
5788
5955
  };
5789
5956
  const topicsLabel = missingCount === 1 ? "topic" : "topics";
5790
5957
  const speakerName = politicianName || "This politician";
5791
- 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"));
5792
5959
  }
5793
5960
 
5794
5961
  // src/computeTierCoverage.js
@@ -5809,7 +5976,7 @@ function computeTierCoverage(topics) {
5809
5976
  }
5810
5977
 
5811
5978
  // src/useEvContextPromotion.js
5812
- var import_react31 = require("react");
5979
+ var import_react32 = require("react");
5813
5980
  function useEvContextPromotion({
5814
5981
  domain,
5815
5982
  isLoggedIn,
@@ -5818,23 +5985,23 @@ function useEvContextPromotion({
5818
5985
  apiWriter,
5819
5986
  enabled = true
5820
5987
  }) {
5821
- const [shouldPrompt, setShouldPrompt] = (0, import_react31.useState)(false);
5822
- const [payload, setPayload] = (0, import_react31.useState)(null);
5823
- const [status, setStatus] = (0, import_react31.useState)("idle");
5824
- const [error, setError] = (0, import_react31.useState)(null);
5825
- 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);
5826
5993
  apiDataRef.current = apiData;
5827
- const userIdRef = (0, import_react31.useRef)(userId);
5994
+ const userIdRef = (0, import_react32.useRef)(userId);
5828
5995
  userIdRef.current = userId;
5829
- const isLoggedInRef = (0, import_react31.useRef)(isLoggedIn);
5996
+ const isLoggedInRef = (0, import_react32.useRef)(isLoggedIn);
5830
5997
  isLoggedInRef.current = isLoggedIn;
5831
- const enabledRef = (0, import_react31.useRef)(enabled);
5998
+ const enabledRef = (0, import_react32.useRef)(enabled);
5832
5999
  enabledRef.current = enabled;
5833
- const domainRef = (0, import_react31.useRef)(domain);
6000
+ const domainRef = (0, import_react32.useRef)(domain);
5834
6001
  domainRef.current = domain;
5835
- const apiWriterRef = (0, import_react31.useRef)(apiWriter);
6002
+ const apiWriterRef = (0, import_react32.useRef)(apiWriter);
5836
6003
  apiWriterRef.current = apiWriter;
5837
- const detect = (0, import_react31.useCallback)(async () => {
6004
+ const detect = (0, import_react32.useCallback)(async () => {
5838
6005
  const _enabled = enabledRef.current;
5839
6006
  const _isLoggedIn = isLoggedInRef.current;
5840
6007
  const _userId = userIdRef.current;
@@ -5873,16 +6040,16 @@ function useEvContextPromotion({
5873
6040
  setPayload(null);
5874
6041
  }
5875
6042
  }, []);
5876
- (0, import_react31.useEffect)(() => {
6043
+ (0, import_react32.useEffect)(() => {
5877
6044
  detect();
5878
6045
  }, [detect, isLoggedIn, userId, apiData, enabled, domain]);
5879
- (0, import_react31.useEffect)(() => {
6046
+ (0, import_react32.useEffect)(() => {
5880
6047
  const unsub = evContext.subscribe(() => {
5881
6048
  detect();
5882
6049
  });
5883
6050
  return unsub;
5884
6051
  }, [detect]);
5885
- const promote = (0, import_react31.useCallback)(async () => {
6052
+ const promote = (0, import_react32.useCallback)(async () => {
5886
6053
  const _userId = userIdRef.current;
5887
6054
  const _domain = domainRef.current;
5888
6055
  const _writer = apiWriterRef.current;
@@ -5909,7 +6076,7 @@ function useEvContextPromotion({
5909
6076
  setError(err instanceof Error ? err : new Error(String(err)));
5910
6077
  }
5911
6078
  }, [payload]);
5912
- const dismiss = (0, import_react31.useCallback)(async () => {
6079
+ const dismiss = (0, import_react32.useCallback)(async () => {
5913
6080
  const _userId = userIdRef.current;
5914
6081
  const _domain = domainRef.current;
5915
6082
  if (!_userId) return;
@@ -5968,14 +6135,14 @@ function isGuestPopulated(domain, fullEvContext) {
5968
6135
  }
5969
6136
 
5970
6137
  // src/StanceAccordion.jsx
5971
- var import_react33 = __toESM(require("react"));
6138
+ var import_react34 = __toESM(require("react"));
5972
6139
 
5973
6140
  // src/Favicon.jsx
5974
- var import_react32 = __toESM(require("react"));
6141
+ var import_react33 = __toESM(require("react"));
5975
6142
  function Favicon({ url, size = 16 }) {
5976
6143
  try {
5977
6144
  const domain = new URL(url).hostname;
5978
- return /* @__PURE__ */ import_react32.default.createElement(
6145
+ return /* @__PURE__ */ import_react33.default.createElement(
5979
6146
  "img",
5980
6147
  {
5981
6148
  src: `https://www.google.com/s2/favicons?sz=${size}&domain=${domain}`,
@@ -5986,7 +6153,7 @@ function Favicon({ url, size = 16 }) {
5986
6153
  }
5987
6154
  );
5988
6155
  } catch {
5989
- return /* @__PURE__ */ import_react32.default.createElement(
6156
+ return /* @__PURE__ */ import_react33.default.createElement(
5990
6157
  "svg",
5991
6158
  {
5992
6159
  width: size,
@@ -5997,8 +6164,8 @@ function Favicon({ url, size = 16 }) {
5997
6164
  strokeWidth: "1.5",
5998
6165
  style: { verticalAlign: "middle", flexShrink: 0 }
5999
6166
  },
6000
- /* @__PURE__ */ import_react32.default.createElement("circle", { cx: "12", cy: "12", r: "10" }),
6001
- /* @__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" })
6002
6169
  );
6003
6170
  }
6004
6171
  }
@@ -6029,11 +6196,11 @@ function StanceAccordion({
6029
6196
  apiUrl = "https://api.empowered.vote"
6030
6197
  }) {
6031
6198
  var _a;
6032
- const [expandedTopicId, setExpandedTopicId] = (0, import_react33.useState)(null);
6033
- const [loadingId, setLoadingId] = (0, import_react33.useState)(null);
6034
- const [showAll, setShowAll] = (0, import_react33.useState)(false);
6035
- const contextCache = (0, import_react33.useRef)(/* @__PURE__ */ new Map());
6036
- 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);
6037
6204
  const polAnswerMap = {};
6038
6205
  if (polAnswers) {
6039
6206
  polAnswers.forEach((a) => {
@@ -6092,7 +6259,7 @@ function StanceAccordion({
6092
6259
  quotesCache.current = [];
6093
6260
  }
6094
6261
  }
6095
- const handleToggle = (0, import_react33.useCallback)(
6262
+ const handleToggle = (0, import_react34.useCallback)(
6096
6263
  async (topicId) => {
6097
6264
  if (expandedTopicId === topicId) {
6098
6265
  setExpandedTopicId(null);
@@ -6109,7 +6276,7 @@ function StanceAccordion({
6109
6276
  },
6110
6277
  [expandedTopicId, politicianId, apiUrl]
6111
6278
  );
6112
- (0, import_react33.useEffect)(() => {
6279
+ (0, import_react34.useEffect)(() => {
6113
6280
  if (initialExpandedTopicId && topics && topics.length > 0) {
6114
6281
  handleToggle(String(initialExpandedTopicId));
6115
6282
  }
@@ -6125,13 +6292,13 @@ function StanceAccordion({
6125
6292
  visibleTopics = [pinned, ...baseTopics.filter((t) => String(t.id) !== String(initialExpandedTopicId))];
6126
6293
  }
6127
6294
  }
6128
- return /* @__PURE__ */ import_react33.default.createElement(
6295
+ return /* @__PURE__ */ import_react34.default.createElement(
6129
6296
  "div",
6130
6297
  {
6131
6298
  className: "flex flex-col",
6132
6299
  style: { fontFamily: "'Manrope', sans-serif" }
6133
6300
  },
6134
- /* @__PURE__ */ import_react33.default.createElement(
6301
+ /* @__PURE__ */ import_react34.default.createElement(
6135
6302
  "h3",
6136
6303
  {
6137
6304
  className: "text-sm font-semibold text-neutral-400 uppercase tracking-wider mb-2",
@@ -6154,15 +6321,15 @@ function StanceAccordion({
6154
6321
  if (topic.topic_key) return q.issue === topic.topic_key;
6155
6322
  return topic.short_title && q.issue.toLowerCase() === topic.short_title.toLowerCase();
6156
6323
  }) : [];
6157
- 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(
6158
6325
  "button",
6159
6326
  {
6160
6327
  type: "button",
6161
6328
  onClick: () => handleToggle(topicId),
6162
6329
  className: "w-full flex items-center justify-between py-3 px-2 text-left cursor-pointer hover:bg-neutral-50 transition-colors"
6163
6330
  },
6164
- /* @__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)),
6165
- /* @__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(
6166
6333
  "svg",
6167
6334
  {
6168
6335
  width: "16",
@@ -6179,9 +6346,9 @@ function StanceAccordion({
6179
6346
  transition: "transform 0.2s ease"
6180
6347
  }
6181
6348
  },
6182
- /* @__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" })
6183
6350
  )
6184
- ), /* @__PURE__ */ import_react33.default.createElement(
6351
+ ), /* @__PURE__ */ import_react34.default.createElement(
6185
6352
  "div",
6186
6353
  {
6187
6354
  style: {
@@ -6190,7 +6357,7 @@ function StanceAccordion({
6190
6357
  transition: "grid-template-rows 0.25s ease"
6191
6358
  }
6192
6359
  },
6193
- /* @__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(
6194
6361
  "div",
6195
6362
  {
6196
6363
  style: {
@@ -6202,14 +6369,14 @@ function StanceAccordion({
6202
6369
  animation: "ev-spin 0.8s linear infinite"
6203
6370
  }
6204
6371
  }
6205
- )), !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(
6206
6373
  "p",
6207
6374
  {
6208
6375
  className: "text-sm text-neutral-700 mb-3",
6209
6376
  style: { whiteSpace: "pre-wrap", lineHeight: 1.6 }
6210
6377
  },
6211
6378
  cached.reasoning
6212
- ) : 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(
6213
6380
  "a",
6214
6381
  {
6215
6382
  href: src,
@@ -6217,9 +6384,9 @@ function StanceAccordion({
6217
6384
  rel: "noreferrer",
6218
6385
  className: "inline-flex items-center gap-1.5 hover:text-[#00657c] transition-colors"
6219
6386
  },
6220
- /* @__PURE__ */ import_react33.default.createElement(Favicon, { url: src }),
6221
- /* @__PURE__ */ import_react33.default.createElement("span", { className: "underline underline-offset-2" }, getDisplayUrl(src))
6222
- ))))), 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(
6223
6390
  "p",
6224
6391
  {
6225
6392
  style: {
@@ -6236,7 +6403,7 @@ function StanceAccordion({
6236
6403
  const verdict = verdictsByQuote ? verdictsByQuote[quote.id] : void 0;
6237
6404
  const borderColor = verdict === "agreed" ? "#0e7490" : verdict === "disagreed" ? "#b45309" : "#e2e8f0";
6238
6405
  const sourceName = quote.source_name || quote.sourceName;
6239
- return /* @__PURE__ */ import_react33.default.createElement(
6406
+ return /* @__PURE__ */ import_react34.default.createElement(
6240
6407
  "div",
6241
6408
  {
6242
6409
  key: quote.id,
@@ -6248,7 +6415,7 @@ function StanceAccordion({
6248
6415
  marginBottom: "8px"
6249
6416
  }
6250
6417
  },
6251
- /* @__PURE__ */ import_react33.default.createElement(
6418
+ /* @__PURE__ */ import_react34.default.createElement(
6252
6419
  "p",
6253
6420
  {
6254
6421
  style: {
@@ -6261,7 +6428,7 @@ function StanceAccordion({
6261
6428
  },
6262
6429
  quote.text
6263
6430
  ),
6264
- verdict === "agreed" && /* @__PURE__ */ import_react33.default.createElement(
6431
+ verdict === "agreed" && /* @__PURE__ */ import_react34.default.createElement(
6265
6432
  "span",
6266
6433
  {
6267
6434
  style: {
@@ -6278,10 +6445,10 @@ function StanceAccordion({
6278
6445
  flexShrink: 0
6279
6446
  }
6280
6447
  },
6281
- /* @__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" })),
6282
6449
  "Agreed"
6283
6450
  ),
6284
- verdict === "disagreed" && /* @__PURE__ */ import_react33.default.createElement(
6451
+ verdict === "disagreed" && /* @__PURE__ */ import_react34.default.createElement(
6285
6452
  "span",
6286
6453
  {
6287
6454
  style: {
@@ -6298,10 +6465,10 @@ function StanceAccordion({
6298
6465
  flexShrink: 0
6299
6466
  }
6300
6467
  },
6301
- /* @__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" })),
6302
6469
  "Disagreed"
6303
6470
  ),
6304
- sourceName && /* @__PURE__ */ import_react33.default.createElement(
6471
+ sourceName && /* @__PURE__ */ import_react34.default.createElement(
6305
6472
  "a",
6306
6473
  {
6307
6474
  href: quote.source_url || quote.sourceUrl,
@@ -6318,10 +6485,10 @@ function StanceAccordion({
6318
6485
  sourceName
6319
6486
  )
6320
6487
  );
6321
- })), !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."))))
6322
6489
  ));
6323
6490
  }),
6324
- hasToggle && /* @__PURE__ */ import_react33.default.createElement(
6491
+ hasToggle && /* @__PURE__ */ import_react34.default.createElement(
6325
6492
  "button",
6326
6493
  {
6327
6494
  type: "button",
@@ -6346,6 +6513,7 @@ function StanceAccordion({
6346
6513
  CompassIcon,
6347
6514
  CompassKey,
6348
6515
  ExpandCompassNudge,
6516
+ FeedbackButton,
6349
6517
  FilterSidebar,
6350
6518
  GovernmentBodySection,
6351
6519
  Header,