@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 +514 -346
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +449 -282
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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[
|
|
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
|
-
}),
|
|
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
|
-
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
1782
|
+
) : /* @__PURE__ */ import_react7.default.createElement("div", { style: styles2.buildingPlaceholder }, "No image")));
|
|
1616
1783
|
}
|
|
1617
1784
|
|
|
1618
1785
|
// src/PoliticianCard.jsx
|
|
1619
|
-
var
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
1790
|
-
/* @__PURE__ */
|
|
1791
|
-
/* @__PURE__ */
|
|
1792
|
-
/* @__PURE__ */
|
|
1793
|
-
/* @__PURE__ */
|
|
1794
|
-
/* @__PURE__ */
|
|
1795
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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,
|
|
1815
|
-
(0,
|
|
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__ */
|
|
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__ */
|
|
1850
|
-
/* @__PURE__ */
|
|
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__ */
|
|
1859
|
-
/* @__PURE__ */
|
|
1860
|
-
onCompassClick && /* @__PURE__ */
|
|
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__ */
|
|
2042
|
+
/* @__PURE__ */ import_react8.default.createElement(CompassIcon2, null)
|
|
1876
2043
|
)
|
|
1877
2044
|
);
|
|
1878
2045
|
}
|
|
1879
2046
|
|
|
1880
2047
|
// src/CompassCardHorizontal.jsx
|
|
1881
|
-
var
|
|
2048
|
+
var import_react14 = __toESM(require("react"));
|
|
1882
2049
|
|
|
1883
2050
|
// src/PlaceholderRadar.jsx
|
|
1884
|
-
var
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
2128
|
+
var import_react13 = __toESM(require("react"));
|
|
1962
2129
|
|
|
1963
2130
|
// src/IconOverlay.jsx
|
|
1964
|
-
var
|
|
1965
|
-
var
|
|
2131
|
+
var import_react11 = __toESM(require("react"));
|
|
2132
|
+
var import_react12 = require("@floating-ui/react");
|
|
1966
2133
|
|
|
1967
2134
|
// src/icons.js
|
|
1968
|
-
var
|
|
2135
|
+
var import_react10 = __toESM(require("react"));
|
|
1969
2136
|
function BallotIcon({ size = 16, color = "currentColor" }) {
|
|
1970
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
1984
|
-
/* @__PURE__ */
|
|
1985
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
2003
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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,
|
|
2042
|
-
const { refs, floatingStyles, context } = (0,
|
|
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,
|
|
2046
|
-
whileElementsMounted:
|
|
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,
|
|
2049
|
-
const focus2 = (0,
|
|
2050
|
-
const dismiss = (0,
|
|
2051
|
-
const role = (0,
|
|
2052
|
-
const { getReferenceProps, getFloatingProps } = (0,
|
|
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__ */
|
|
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__ */
|
|
2072
|
-
), isOpen && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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,
|
|
2232
|
-
const [focused, setFocused] = (0,
|
|
2233
|
-
const [imgError, setImgError] = (0,
|
|
2234
|
-
const [emptyCtaHovered, setEmptyCtaHovered] = (0,
|
|
2235
|
-
(0,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
2465
|
+
return /* @__PURE__ */ import_react14.default.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
|
|
2299
2466
|
}
|
|
2300
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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,
|
|
2499
|
-
const [focused, setFocused] = (0,
|
|
2500
|
-
const [imgError, setImgError] = (0,
|
|
2501
|
-
const [emptyCtaHovered, setEmptyCtaHovered] = (0,
|
|
2502
|
-
(0,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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,
|
|
3082
|
-
const [loaded, setLoaded] = (0,
|
|
3083
|
-
(0,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
3311
|
+
/* @__PURE__ */ import_react16.default.createElement("span", { "aria-hidden": "true" }, "?"),
|
|
3145
3312
|
" Compass key"
|
|
3146
3313
|
);
|
|
3147
3314
|
}
|
|
3148
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
3175
|
-
/* @__PURE__ */
|
|
3176
|
-
/* @__PURE__ */
|
|
3177
|
-
/* @__PURE__ */
|
|
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__ */
|
|
3186
|
-
/* @__PURE__ */
|
|
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
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
3300
|
-
), websiteUrl && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
3376
|
-
)), /* @__PURE__ */
|
|
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
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
3446
|
-
websiteUrl && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
3459
|
-
), /* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
3555
|
-
linkedin: /* @__PURE__ */
|
|
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__ */
|
|
3565
|
-
youtube: /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
4016
|
+
var import_react25 = __toESM(require("react"));
|
|
3850
4017
|
|
|
3851
4018
|
// src/LegislativeInlineSummary.jsx
|
|
3852
|
-
var
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
4260
|
-
var ClockIcon = ({ size = 16 }) => /* @__PURE__ */
|
|
4261
|
-
var MapPinIcon = ({ size = 16 }) => /* @__PURE__ */
|
|
4262
|
-
var PhoneIcon = ({ size = 16 }) => /* @__PURE__ */
|
|
4263
|
-
var MailIcon = ({ size = 16 }) => /* @__PURE__ */
|
|
4264
|
-
var GlobeIcon = ({ size = 16 }) => /* @__PURE__ */
|
|
4265
|
-
var ExternalLinkIcon = ({ size = 16 }) => /* @__PURE__ */
|
|
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,
|
|
4293
|
-
(0,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
4797
|
+
/* @__PURE__ */ import_react25.default.createElement(ExternalLinkIcon, { size: 14 }),
|
|
4631
4798
|
"Submit a Message"
|
|
4632
|
-
))), hasContactInfo && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
4823
|
-
years.map((y) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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,
|
|
5048
|
+
const [showAll, setShowAll] = (0, import_react26.useState)(false);
|
|
4882
5049
|
const visible = showAll ? committees : committees.slice(0, DEFAULT_LIMIT);
|
|
4883
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
4910
|
-
})), !showAll && /* @__PURE__ */
|
|
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,
|
|
4922
|
-
const [showAll, setShowAll] = (0,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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,
|
|
4984
|
-
const [showAll, setShowAll] = (0,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
5237
|
+
return /* @__PURE__ */ import_react26.default.createElement(Spinner, null);
|
|
5071
5238
|
}
|
|
5072
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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,
|
|
5208
|
-
const [password, setPassword] = (0,
|
|
5209
|
-
const [confirmPassword, setConfirmPassword] = (0,
|
|
5210
|
-
const [showPasswords, setShowPasswords] = (0,
|
|
5211
|
-
const [passwordMismatch, setPasswordMismatch] = (0,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
5686
|
+
var import_react29 = __toESM(require("react"));
|
|
5520
5687
|
function LandmarkIcon({ size = 14 }) {
|
|
5521
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
5536
|
-
/* @__PURE__ */
|
|
5537
|
-
/* @__PURE__ */
|
|
5538
|
-
/* @__PURE__ */
|
|
5539
|
-
/* @__PURE__ */
|
|
5540
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
5559
|
-
/* @__PURE__ */
|
|
5560
|
-
/* @__PURE__ */
|
|
5561
|
-
/* @__PURE__ */
|
|
5562
|
-
/* @__PURE__ */
|
|
5563
|
-
/* @__PURE__ */
|
|
5564
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
5583
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
5731
|
-
onDismiss !== void 0 && /* @__PURE__ */
|
|
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
|
|
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__ */
|
|
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
|
|
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,
|
|
5822
|
-
const [payload, setPayload] = (0,
|
|
5823
|
-
const [status, setStatus] = (0,
|
|
5824
|
-
const [error, setError] = (0,
|
|
5825
|
-
const apiDataRef = (0,
|
|
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,
|
|
5994
|
+
const userIdRef = (0, import_react32.useRef)(userId);
|
|
5828
5995
|
userIdRef.current = userId;
|
|
5829
|
-
const isLoggedInRef = (0,
|
|
5996
|
+
const isLoggedInRef = (0, import_react32.useRef)(isLoggedIn);
|
|
5830
5997
|
isLoggedInRef.current = isLoggedIn;
|
|
5831
|
-
const enabledRef = (0,
|
|
5998
|
+
const enabledRef = (0, import_react32.useRef)(enabled);
|
|
5832
5999
|
enabledRef.current = enabled;
|
|
5833
|
-
const domainRef = (0,
|
|
6000
|
+
const domainRef = (0, import_react32.useRef)(domain);
|
|
5834
6001
|
domainRef.current = domain;
|
|
5835
|
-
const apiWriterRef = (0,
|
|
6002
|
+
const apiWriterRef = (0, import_react32.useRef)(apiWriter);
|
|
5836
6003
|
apiWriterRef.current = apiWriter;
|
|
5837
|
-
const detect = (0,
|
|
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,
|
|
6043
|
+
(0, import_react32.useEffect)(() => {
|
|
5877
6044
|
detect();
|
|
5878
6045
|
}, [detect, isLoggedIn, userId, apiData, enabled, domain]);
|
|
5879
|
-
(0,
|
|
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,
|
|
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,
|
|
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
|
|
6138
|
+
var import_react34 = __toESM(require("react"));
|
|
5972
6139
|
|
|
5973
6140
|
// src/Favicon.jsx
|
|
5974
|
-
var
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
6001
|
-
/* @__PURE__ */
|
|
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,
|
|
6033
|
-
const [loadingId, setLoadingId] = (0,
|
|
6034
|
-
const [showAll, setShowAll] = (0,
|
|
6035
|
-
const contextCache = (0,
|
|
6036
|
-
const quotesCache = (0,
|
|
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,
|
|
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,
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
6165
|
-
/* @__PURE__ */
|
|
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__ */
|
|
6349
|
+
/* @__PURE__ */ import_react34.default.createElement("polyline", { points: "9 18 15 12 9 6" })
|
|
6183
6350
|
)
|
|
6184
|
-
), /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
6221
|
-
/* @__PURE__ */
|
|
6222
|
-
))))), topicQuotes.length > 0 && /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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,
|