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