@empoweredvote/ev-ui 0.9.8 → 0.10.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.mjs CHANGED
@@ -1690,8 +1690,328 @@ function SiteHeader({
1690
1690
  );
1691
1691
  }
1692
1692
 
1693
+ // src/SiteFooter.jsx
1694
+ import React6, { useId, useRef as useRef3, useState as useState4 } from "react";
1695
+ var SIGNUP_ENDPOINT_DEFAULT = "https://gq2nohazl3447rhtau34o6yqs40vpude.lambda-url.us-east-1.on.aws/";
1696
+ var DEFAULT_LINKS = [
1697
+ { label: "Mind Map", href: "https://empowered.vote/maps/purpose-map.html" },
1698
+ { label: "Briefing", href: "https://empowered.vote/briefing" },
1699
+ { label: "Financials", href: "https://financials.empowered.vote", external: true }
1700
+ ];
1701
+ function SiteFooter({
1702
+ darkMode = false,
1703
+ brandLabel = "Empowered Vote \xB7 Alpha",
1704
+ year,
1705
+ links = DEFAULT_LINKS,
1706
+ newsletter = true,
1707
+ endpoint = SIGNUP_ENDPOINT_DEFAULT,
1708
+ className = "",
1709
+ style = {}
1710
+ }) {
1711
+ const [open, setOpen] = useState4(false);
1712
+ const [submitting, setSubmitting] = useState4(false);
1713
+ const [note, setNote] = useState4(null);
1714
+ const formRef = useRef3(null);
1715
+ const emailRef = useRef3(null);
1716
+ const uid = useId().replace(/:/g, "");
1717
+ const formId = `ev-sf-form-${uid}`;
1718
+ const emailId = `ev-sf-email-${uid}`;
1719
+ const noteId = `ev-sf-note-${uid}`;
1720
+ const resolvedYear = year != null ? year : (/* @__PURE__ */ new Date()).getFullYear();
1721
+ const t = darkMode ? {
1722
+ bg: "#131416",
1723
+ borderTop: "#2D2D32",
1724
+ brand: "#F2F2F2",
1725
+ muted: "#8B949E",
1726
+ link: "#8B949E",
1727
+ linkHover: "#F2F2F2",
1728
+ dot: "#FFD740",
1729
+ inputBg: "#1C1C1F",
1730
+ inputBorder: "#41454E",
1731
+ inputText: "#F2F2F2",
1732
+ placeholder: "#8B949E",
1733
+ btnBg: "#F2F2F2",
1734
+ btnText: "#111113",
1735
+ btnHover: "#FFFFFF",
1736
+ teal: "#1DA8C6",
1737
+ coral: "#FF6B52",
1738
+ noteText: "#F2F2F2",
1739
+ noteBg: "rgba(29, 168, 198, 0.15)",
1740
+ errorBg: "rgba(255, 107, 82, 0.18)"
1741
+ } : {
1742
+ bg: "#F7F7F8",
1743
+ borderTop: "#E5E7EB",
1744
+ brand: "#1C1C1C",
1745
+ muted: "#6B7280",
1746
+ link: "#6B7280",
1747
+ linkHover: "#1C1C1C",
1748
+ dot: "#FED12E",
1749
+ inputBg: "#FFFFFF",
1750
+ inputBorder: "#D3D7DE",
1751
+ inputText: "#1C1C1C",
1752
+ placeholder: "#6B7280",
1753
+ btnBg: "#1C1C1C",
1754
+ btnText: "#FFFFFF",
1755
+ btnHover: "#000000",
1756
+ teal: "#00657C",
1757
+ coral: "#FF5740",
1758
+ noteText: "#1C1C1C",
1759
+ noteBg: "rgba(0, 101, 124, 0.10)",
1760
+ errorBg: "rgba(255, 87, 64, 0.12)"
1761
+ };
1762
+ function toggle() {
1763
+ setOpen((prev) => {
1764
+ const next = !prev;
1765
+ if (next) {
1766
+ setTimeout(() => emailRef.current && emailRef.current.focus(), 260);
1767
+ }
1768
+ return next;
1769
+ });
1770
+ }
1771
+ function handleSubmit(e) {
1772
+ e.preventDefault();
1773
+ const form = formRef.current;
1774
+ if (!form) return;
1775
+ const emailInput = form.elements.email;
1776
+ if (emailInput && !emailInput.checkValidity()) {
1777
+ emailInput.reportValidity();
1778
+ return;
1779
+ }
1780
+ const payload = {
1781
+ email: emailInput ? emailInput.value.trim() : "",
1782
+ company: form.elements.company && form.elements.company.value || ""
1783
+ // honeypot
1784
+ };
1785
+ setSubmitting(true);
1786
+ setNote({ msg: "Adding you\u2026", kind: null });
1787
+ fetch(endpoint, {
1788
+ method: "POST",
1789
+ headers: { "Content-Type": "application/json" },
1790
+ body: JSON.stringify(payload)
1791
+ }).then((r) => r.json().catch(() => ({ ok: r.ok }))).then((data) => {
1792
+ if (data && data.ok) {
1793
+ form.reset();
1794
+ setNote({ msg: "You\u2019re on the list \u2014 thanks for following the build. \u{1F389}", kind: "ok" });
1795
+ } else {
1796
+ setNote({ msg: data && data.error || "Something went wrong. Please try again.", kind: "error" });
1797
+ }
1798
+ }).catch(() => {
1799
+ setNote({ msg: "Couldn\u2019t reach us just now. Please try again in a moment.", kind: "error" });
1800
+ }).then(() => setSubmitting(false));
1801
+ }
1802
+ const rootStyle = {
1803
+ borderTop: `1px solid ${t.borderTop}`,
1804
+ padding: "32px 0 40px",
1805
+ background: t.bg,
1806
+ color: t.muted,
1807
+ fontFamily: fonts.primary,
1808
+ fontSize: "0.88rem",
1809
+ // CSS custom props consumed by the scoped <style> for pseudo-selectors.
1810
+ "--ev-sf-placeholder": t.placeholder,
1811
+ "--ev-sf-focus": t.teal,
1812
+ "--ev-sf-input-bg": t.inputBg,
1813
+ "--ev-sf-input-border": t.inputBorder,
1814
+ "--ev-sf-input-text": t.inputText,
1815
+ ...style
1816
+ };
1817
+ const linkBase = { color: t.link, textDecoration: "none", transition: "color 0.15s ease" };
1818
+ const onLinkEnter = (e) => {
1819
+ e.currentTarget.style.color = t.linkHover;
1820
+ };
1821
+ const onLinkLeave = (e) => {
1822
+ e.currentTarget.style.color = t.link;
1823
+ };
1824
+ return /* @__PURE__ */ React6.createElement("footer", { className: `ev-site-footer ${className}`.trim(), style: rootStyle }, /* @__PURE__ */ React6.createElement("style", null, CSS), /* @__PURE__ */ React6.createElement("div", { className: "ev-sf-wrap" }, /* @__PURE__ */ React6.createElement("span", { className: "ev-sf-brand", style: { color: t.brand, fontWeight: fontWeights.bold } }, /* @__PURE__ */ React6.createElement("span", { className: "ev-sf-dot", style: { background: t.dot } }), brandLabel), /* @__PURE__ */ React6.createElement("span", { className: "ev-sf-links" }, /* @__PURE__ */ React6.createElement("span", { style: { color: t.muted } }, "\xA9 ", resolvedYear), links.map((link) => /* @__PURE__ */ React6.createElement(
1825
+ "a",
1826
+ {
1827
+ key: link.href,
1828
+ href: link.href,
1829
+ style: linkBase,
1830
+ onMouseEnter: onLinkEnter,
1831
+ onMouseLeave: onLinkLeave,
1832
+ ...link.external ? { target: "_blank", rel: "noopener noreferrer" } : {}
1833
+ },
1834
+ link.label
1835
+ )), newsletter && /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(
1836
+ "button",
1837
+ {
1838
+ type: "button",
1839
+ className: "ev-sf-toggle",
1840
+ "aria-expanded": open,
1841
+ "aria-controls": formId,
1842
+ onClick: toggle,
1843
+ style: { color: open ? t.linkHover : t.link },
1844
+ onMouseEnter: (e) => {
1845
+ e.currentTarget.style.color = t.linkHover;
1846
+ },
1847
+ onMouseLeave: (e) => {
1848
+ e.currentTarget.style.color = open ? t.linkHover : t.link;
1849
+ }
1850
+ },
1851
+ "Newsletter ",
1852
+ /* @__PURE__ */ React6.createElement("span", { className: "ev-sf-caret", "aria-hidden": "true" }, "\u25B8")
1853
+ ), /* @__PURE__ */ React6.createElement(
1854
+ "form",
1855
+ {
1856
+ ref: formRef,
1857
+ className: `ev-sf-form${open ? " open" : ""}`,
1858
+ id: formId,
1859
+ method: "post",
1860
+ noValidate: true,
1861
+ "aria-hidden": !open,
1862
+ onSubmit: handleSubmit
1863
+ },
1864
+ /* @__PURE__ */ React6.createElement("label", { className: "ev-sf-sr-only", htmlFor: emailId }, "Email address"),
1865
+ /* @__PURE__ */ React6.createElement(
1866
+ "input",
1867
+ {
1868
+ ref: emailRef,
1869
+ id: emailId,
1870
+ name: "email",
1871
+ type: "email",
1872
+ required: true,
1873
+ autoComplete: "email",
1874
+ placeholder: "you@example.com",
1875
+ tabIndex: open ? 0 : -1,
1876
+ style: {
1877
+ background: t.inputBg,
1878
+ borderColor: t.inputBorder,
1879
+ color: t.inputText
1880
+ }
1881
+ }
1882
+ ),
1883
+ /* @__PURE__ */ React6.createElement("div", { className: "ev-sf-hp", "aria-hidden": "true" }, /* @__PURE__ */ React6.createElement("label", null, "Company", /* @__PURE__ */ React6.createElement("input", { type: "text", name: "company", tabIndex: -1, autoComplete: "off" }))),
1884
+ /* @__PURE__ */ React6.createElement(
1885
+ "button",
1886
+ {
1887
+ type: "submit",
1888
+ className: "ev-sf-btn",
1889
+ tabIndex: open ? 0 : -1,
1890
+ disabled: submitting,
1891
+ style: { background: t.btnBg, color: t.btnText },
1892
+ onMouseEnter: (e) => {
1893
+ if (!submitting) e.currentTarget.style.background = t.btnHover;
1894
+ },
1895
+ onMouseLeave: (e) => {
1896
+ e.currentTarget.style.background = t.btnBg;
1897
+ }
1898
+ },
1899
+ "Subscribe"
1900
+ )
1901
+ ), /* @__PURE__ */ React6.createElement(
1902
+ "p",
1903
+ {
1904
+ className: "ev-sf-note",
1905
+ id: noteId,
1906
+ role: "status",
1907
+ "aria-live": "polite",
1908
+ hidden: !note,
1909
+ style: note ? {
1910
+ color: t.noteText,
1911
+ background: note.kind === "error" ? t.errorBg : t.noteBg,
1912
+ borderColor: note.kind === "error" ? t.coral : t.teal
1913
+ } : void 0
1914
+ },
1915
+ note ? note.msg : ""
1916
+ )))));
1917
+ }
1918
+ var CSS = `
1919
+ .ev-site-footer .ev-sf-wrap {
1920
+ max-width: 1280px; margin: 0 auto; padding: 0 24px;
1921
+ display: flex; justify-content: space-between; align-items: center;
1922
+ flex-wrap: wrap; gap: 12px;
1923
+ }
1924
+ .ev-site-footer .ev-sf-brand {
1925
+ display: inline-flex; align-items: center; gap: 10px;
1926
+ }
1927
+ .ev-site-footer .ev-sf-dot {
1928
+ width: 10px; height: 10px; border-radius: 2px; flex: 0 0 auto;
1929
+ }
1930
+ .ev-site-footer .ev-sf-links {
1931
+ display: inline-flex; align-items: center; gap: 18px; flex-wrap: wrap;
1932
+ }
1933
+ .ev-site-footer .ev-sf-sr-only {
1934
+ position: absolute; width: 1px; height: 1px;
1935
+ padding: 0; margin: -1px; overflow: hidden;
1936
+ clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
1937
+ }
1938
+ .ev-site-footer .ev-sf-hp {
1939
+ position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden;
1940
+ }
1941
+ .ev-site-footer .ev-sf-toggle {
1942
+ font: inherit; background: none; border: none; padding: 0; cursor: pointer;
1943
+ display: inline-flex; align-items: center; gap: 5px;
1944
+ transition: color 0.15s ease;
1945
+ }
1946
+ .ev-site-footer .ev-sf-toggle:focus-visible {
1947
+ outline: 2px solid var(--ev-sf-focus); outline-offset: 3px; border-radius: 4px;
1948
+ }
1949
+ .ev-site-footer .ev-sf-caret {
1950
+ font-size: 0.7em; display: inline-block; transition: transform 0.25s ease;
1951
+ }
1952
+ .ev-site-footer .ev-sf-toggle[aria-expanded="true"] .ev-sf-caret {
1953
+ transform: rotate(90deg);
1954
+ }
1955
+ /* Collapsed by default; slides open to the right, pushing the links left.
1956
+ margin-left cancels the parent flex gap so there is no phantom slot when closed. */
1957
+ .ev-site-footer .ev-sf-form {
1958
+ display: flex; align-items: center; gap: 8px;
1959
+ max-width: 0; opacity: 0; margin-left: -18px;
1960
+ overflow: hidden; pointer-events: none;
1961
+ transition: max-width 0.4s cubic-bezier(.4, 0, .2, 1), opacity 0.3s ease, margin-left 0.4s ease;
1962
+ }
1963
+ .ev-site-footer .ev-sf-form.open {
1964
+ max-width: 360px; opacity: 1; margin-left: 0; pointer-events: auto;
1965
+ }
1966
+ .ev-site-footer .ev-sf-form input[type="email"] {
1967
+ width: 188px; flex: 0 0 auto; min-width: 0;
1968
+ font-family: inherit; font-size: 0.9rem;
1969
+ color: var(--ev-sf-input-text); background: var(--ev-sf-input-bg);
1970
+ border: 1.5px solid var(--ev-sf-input-border);
1971
+ border-radius: 999px; padding: 9px 15px;
1972
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
1973
+ }
1974
+ .ev-site-footer .ev-sf-form input[type="email"]::placeholder { color: var(--ev-sf-placeholder); }
1975
+ .ev-site-footer .ev-sf-form input[type="email"]:focus {
1976
+ outline: 2px solid transparent; outline-offset: 1px;
1977
+ border-color: var(--ev-sf-focus);
1978
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--ev-sf-focus) 20%, transparent);
1979
+ }
1980
+ .ev-site-footer .ev-sf-btn {
1981
+ font-family: inherit; font-weight: 700; font-size: 0.88rem;
1982
+ white-space: nowrap; padding: 9px 18px;
1983
+ border: 1.5px solid transparent; border-radius: 999px; cursor: pointer;
1984
+ transition: background 0.15s ease, transform 0.15s ease;
1985
+ }
1986
+ .ev-site-footer .ev-sf-btn:hover { transform: translateY(-1px); }
1987
+ .ev-site-footer .ev-sf-btn:disabled { opacity: 0.7; cursor: default; transform: none; }
1988
+ .ev-site-footer .ev-sf-btn:focus-visible {
1989
+ outline: 2px solid var(--ev-sf-focus); outline-offset: 2px;
1990
+ }
1991
+ .ev-site-footer .ev-sf-note {
1992
+ flex-basis: 100%; width: 100%;
1993
+ font-size: 0.82rem; line-height: 1.4;
1994
+ margin: 12px 0 0; padding: 11px 14px;
1995
+ border-radius: 10px; text-align: right;
1996
+ border: 1px solid transparent;
1997
+ }
1998
+ @media (prefers-reduced-motion: reduce) {
1999
+ .ev-site-footer .ev-sf-form { transition: opacity 0.2s ease; }
2000
+ .ev-site-footer .ev-sf-caret { transition: none; }
2001
+ .ev-site-footer .ev-sf-btn:hover { transform: none; }
2002
+ }
2003
+ @media (max-width: 640px) {
2004
+ .ev-site-footer .ev-sf-wrap { flex-direction: column; align-items: flex-start; gap: 10px; }
2005
+ }
2006
+ @media (max-width: 480px) {
2007
+ .ev-site-footer .ev-sf-form.open { flex-basis: 100%; max-width: 100%; margin-left: 0; }
2008
+ .ev-site-footer .ev-sf-form.open input[type="email"] { flex: 1; width: auto; }
2009
+ .ev-site-footer .ev-sf-note { text-align: left; }
2010
+ }
2011
+ `;
2012
+
1693
2013
  // src/FilterSidebar.jsx
1694
- import React6 from "react";
2014
+ import React7 from "react";
1695
2015
  function FilterSidebar({
1696
2016
  title = "Filter by",
1697
2017
  zipCode = "",
@@ -1845,14 +2165,14 @@ function FilterSidebar({
1845
2165
  fontSize: fontSizes.sm
1846
2166
  }
1847
2167
  };
1848
- return /* @__PURE__ */ React6.createElement("aside", { style: styles2.sidebar, className: "ev-filter-sidebar" }, !isMobile && /* @__PURE__ */ React6.createElement("h2", { style: styles2.title }, title), /* @__PURE__ */ React6.createElement("div", { style: isMobile ? void 0 : styles2.contentTop }, /* @__PURE__ */ React6.createElement("div", { style: isMobile ? { marginBottom: spacing[3] } : styles2.section }, !isMobile && /* @__PURE__ */ React6.createElement("label", { style: styles2.sectionLabel }, "Location"), autocompleteContainerRef ? /* @__PURE__ */ React6.createElement(
2168
+ return /* @__PURE__ */ React7.createElement("aside", { style: styles2.sidebar, className: "ev-filter-sidebar" }, !isMobile && /* @__PURE__ */ React7.createElement("h2", { style: styles2.title }, title), /* @__PURE__ */ React7.createElement("div", { style: isMobile ? void 0 : styles2.contentTop }, /* @__PURE__ */ React7.createElement("div", { style: isMobile ? { marginBottom: spacing[3] } : styles2.section }, !isMobile && /* @__PURE__ */ React7.createElement("label", { style: styles2.sectionLabel }, "Location"), autocompleteContainerRef ? /* @__PURE__ */ React7.createElement(
1849
2169
  "div",
1850
2170
  {
1851
2171
  ref: autocompleteContainerRef,
1852
2172
  style: styles2.zipInputWrapper,
1853
2173
  className: "ev-autocomplete-container"
1854
2174
  }
1855
- ) : /* @__PURE__ */ React6.createElement("div", { style: styles2.zipInputWrapper }, /* @__PURE__ */ React6.createElement(
2175
+ ) : /* @__PURE__ */ React7.createElement("div", { style: styles2.zipInputWrapper }, /* @__PURE__ */ React7.createElement(
1856
2176
  "input",
1857
2177
  {
1858
2178
  ref: zipInputRef,
@@ -1864,7 +2184,7 @@ function FilterSidebar({
1864
2184
  style: styles2.zipInput,
1865
2185
  "aria-label": "Search location"
1866
2186
  }
1867
- ), /* @__PURE__ */ React6.createElement(
2187
+ ), /* @__PURE__ */ React7.createElement(
1868
2188
  "button",
1869
2189
  {
1870
2190
  type: "button",
@@ -1873,7 +2193,7 @@ function FilterSidebar({
1873
2193
  "aria-label": "Clear ZIP code"
1874
2194
  },
1875
2195
  "\xD7"
1876
- ))), /* @__PURE__ */ React6.createElement("div", { style: isMobile ? {} : styles2.section }, !isMobile && /* @__PURE__ */ React6.createElement("label", { style: styles2.sectionLabel }, "Group"), /* @__PURE__ */ React6.createElement("div", { style: styles2.radioGroup, role: "radiogroup", "aria-label": "Filter by group" }, filterOptions.map((option) => /* @__PURE__ */ React6.createElement("label", { key: option.value, style: styles2.radioLabel }, /* @__PURE__ */ React6.createElement(
2196
+ ))), /* @__PURE__ */ React7.createElement("div", { style: isMobile ? {} : styles2.section }, !isMobile && /* @__PURE__ */ React7.createElement("label", { style: styles2.sectionLabel }, "Group"), /* @__PURE__ */ React7.createElement("div", { style: styles2.radioGroup, role: "radiogroup", "aria-label": "Filter by group" }, filterOptions.map((option) => /* @__PURE__ */ React7.createElement("label", { key: option.value, style: styles2.radioLabel }, /* @__PURE__ */ React7.createElement(
1877
2197
  "input",
1878
2198
  {
1879
2199
  type: "radio",
@@ -1883,18 +2203,18 @@ function FilterSidebar({
1883
2203
  onChange: () => onFilterChange == null ? void 0 : onFilterChange(option.value),
1884
2204
  style: styles2.radioInput
1885
2205
  }
1886
- ), option.label))))), !isMobile && /* @__PURE__ */ React6.createElement("div", { style: styles2.imageSection }, locationLabel && /* @__PURE__ */ React6.createElement("div", { style: styles2.locationLabel }, locationLabel), buildingImageSrc ? /* @__PURE__ */ React6.createElement(
2206
+ ), option.label))))), !isMobile && /* @__PURE__ */ React7.createElement("div", { style: styles2.imageSection }, locationLabel && /* @__PURE__ */ React7.createElement("div", { style: styles2.locationLabel }, locationLabel), buildingImageSrc ? /* @__PURE__ */ React7.createElement(
1887
2207
  "img",
1888
2208
  {
1889
2209
  src: buildingImageSrc,
1890
2210
  alt: `${selectedFilter} government building`,
1891
2211
  style: styles2.buildingImage
1892
2212
  }
1893
- ) : /* @__PURE__ */ React6.createElement("div", { style: styles2.buildingPlaceholder }, "No image")));
2213
+ ) : /* @__PURE__ */ React7.createElement("div", { style: styles2.buildingPlaceholder }, "No image")));
1894
2214
  }
1895
2215
 
1896
2216
  // src/PoliticianCard.jsx
1897
- import React7, { useState as useState4, useEffect as useEffect5 } from "react";
2217
+ import React8, { useState as useState5, useEffect as useEffect5 } from "react";
1898
2218
  function PoliticianCard({
1899
2219
  id,
1900
2220
  imageSrc,
@@ -2062,7 +2382,7 @@ function PoliticianCard({
2062
2382
  textTransform: "uppercase"
2063
2383
  }
2064
2384
  };
2065
- const CompassIcon2 = () => /* @__PURE__ */ React7.createElement(
2385
+ const CompassIcon2 = () => /* @__PURE__ */ React8.createElement(
2066
2386
  "svg",
2067
2387
  {
2068
2388
  style: styles2.compassIcon,
@@ -2070,7 +2390,7 @@ function PoliticianCard({
2070
2390
  fill: "none",
2071
2391
  xmlns: "http://www.w3.org/2000/svg"
2072
2392
  },
2073
- /* @__PURE__ */ React7.createElement(
2393
+ /* @__PURE__ */ React8.createElement(
2074
2394
  "polygon",
2075
2395
  {
2076
2396
  points: "12,1 21.5,6.5 21.5,17.5 12,23 2.5,17.5 2.5,6.5",
@@ -2080,13 +2400,13 @@ function PoliticianCard({
2080
2400
  strokeLinejoin: "round"
2081
2401
  }
2082
2402
  ),
2083
- /* @__PURE__ */ React7.createElement("line", { x1: "12", y1: "12", x2: "12", y2: "1", stroke: "currentColor", strokeWidth: "1" }),
2084
- /* @__PURE__ */ React7.createElement("line", { x1: "12", y1: "12", x2: "21.5", y2: "6.5", stroke: "currentColor", strokeWidth: "1" }),
2085
- /* @__PURE__ */ React7.createElement("line", { x1: "12", y1: "12", x2: "21.5", y2: "17.5", stroke: "currentColor", strokeWidth: "1" }),
2086
- /* @__PURE__ */ React7.createElement("line", { x1: "12", y1: "12", x2: "12", y2: "23", stroke: "currentColor", strokeWidth: "1" }),
2087
- /* @__PURE__ */ React7.createElement("line", { x1: "12", y1: "12", x2: "2.5", y2: "17.5", stroke: "currentColor", strokeWidth: "1" }),
2088
- /* @__PURE__ */ React7.createElement("line", { x1: "12", y1: "12", x2: "2.5", y2: "6.5", stroke: "currentColor", strokeWidth: "1" }),
2089
- /* @__PURE__ */ React7.createElement(
2403
+ /* @__PURE__ */ React8.createElement("line", { x1: "12", y1: "12", x2: "12", y2: "1", stroke: "currentColor", strokeWidth: "1" }),
2404
+ /* @__PURE__ */ React8.createElement("line", { x1: "12", y1: "12", x2: "21.5", y2: "6.5", stroke: "currentColor", strokeWidth: "1" }),
2405
+ /* @__PURE__ */ React8.createElement("line", { x1: "12", y1: "12", x2: "21.5", y2: "17.5", stroke: "currentColor", strokeWidth: "1" }),
2406
+ /* @__PURE__ */ React8.createElement("line", { x1: "12", y1: "12", x2: "12", y2: "23", stroke: "currentColor", strokeWidth: "1" }),
2407
+ /* @__PURE__ */ React8.createElement("line", { x1: "12", y1: "12", x2: "2.5", y2: "17.5", stroke: "currentColor", strokeWidth: "1" }),
2408
+ /* @__PURE__ */ React8.createElement("line", { x1: "12", y1: "12", x2: "2.5", y2: "6.5", stroke: "currentColor", strokeWidth: "1" }),
2409
+ /* @__PURE__ */ React8.createElement(
2090
2410
  "polygon",
2091
2411
  {
2092
2412
  points: "12,4 18,7.5 18,16 12,19.5 7,15 5,8",
@@ -2094,7 +2414,7 @@ function PoliticianCard({
2094
2414
  opacity: "0.35"
2095
2415
  }
2096
2416
  ),
2097
- /* @__PURE__ */ React7.createElement(
2417
+ /* @__PURE__ */ React8.createElement(
2098
2418
  "polygon",
2099
2419
  {
2100
2420
  points: "12,4 18,7.5 18,16 12,19.5 7,15 5,8",
@@ -2105,7 +2425,7 @@ function PoliticianCard({
2105
2425
  }
2106
2426
  )
2107
2427
  );
2108
- const [imgError, setImgError] = useState4(false);
2428
+ const [imgError, setImgError] = useState5(false);
2109
2429
  useEffect5(() => {
2110
2430
  setImgError(false);
2111
2431
  }, [imageSrc]);
@@ -2115,7 +2435,7 @@ function PoliticianCard({
2115
2435
  const initials = parts.length >= 2 ? parts[0][0] + parts[parts.length - 1][0] : ((_a = parts[0]) == null ? void 0 : _a[0]) || "?";
2116
2436
  return initials.toUpperCase();
2117
2437
  };
2118
- return /* @__PURE__ */ React7.createElement(
2438
+ return /* @__PURE__ */ React8.createElement(
2119
2439
  "div",
2120
2440
  {
2121
2441
  style: styles2.card,
@@ -2140,8 +2460,8 @@ function PoliticianCard({
2140
2460
  }
2141
2461
  }
2142
2462
  },
2143
- badge && /* @__PURE__ */ React7.createElement("span", { style: styles2.badge }, badge),
2144
- /* @__PURE__ */ React7.createElement("div", { style: styles2.imageWrapper }, imageSrc && !imgError ? /* @__PURE__ */ React7.createElement(
2463
+ badge && /* @__PURE__ */ React8.createElement("span", { style: styles2.badge }, badge),
2464
+ /* @__PURE__ */ React8.createElement("div", { style: styles2.imageWrapper }, imageSrc && !imgError ? /* @__PURE__ */ React8.createElement(
2145
2465
  "img",
2146
2466
  {
2147
2467
  src: imageSrc,
@@ -2149,9 +2469,9 @@ function PoliticianCard({
2149
2469
  style: styles2.image,
2150
2470
  onError: () => setImgError(true)
2151
2471
  }
2152
- ) : /* @__PURE__ */ React7.createElement("div", { style: styles2.imagePlaceholder }, getInitials(name))),
2153
- /* @__PURE__ */ React7.createElement("div", { style: styles2.content }, /* @__PURE__ */ React7.createElement("h3", { style: styles2.name }, name), /* @__PURE__ */ React7.createElement("p", { style: styles2.title }, title), subtitle && /* @__PURE__ */ React7.createElement("p", { style: styles2.subtitle }, subtitle), footer && /* @__PURE__ */ React7.createElement("div", { style: { marginTop: "auto", marginLeft: "-5px" } }, footer)),
2154
- onCompassClick && /* @__PURE__ */ React7.createElement(
2472
+ ) : /* @__PURE__ */ React8.createElement("div", { style: styles2.imagePlaceholder }, getInitials(name))),
2473
+ /* @__PURE__ */ React8.createElement("div", { style: styles2.content }, /* @__PURE__ */ React8.createElement("h3", { style: styles2.name }, name), /* @__PURE__ */ React8.createElement("p", { style: styles2.title }, title), subtitle && /* @__PURE__ */ React8.createElement("p", { style: styles2.subtitle }, subtitle), footer && /* @__PURE__ */ React8.createElement("div", { style: { marginTop: "auto", marginLeft: "-5px" } }, footer)),
2474
+ onCompassClick && /* @__PURE__ */ React8.createElement(
2155
2475
  "button",
2156
2476
  {
2157
2477
  type: "button",
@@ -2166,19 +2486,19 @@ function PoliticianCard({
2166
2486
  },
2167
2487
  "aria-label": `View ${name}'s compass`
2168
2488
  },
2169
- /* @__PURE__ */ React7.createElement(CompassIcon2, null)
2489
+ /* @__PURE__ */ React8.createElement(CompassIcon2, null)
2170
2490
  )
2171
2491
  );
2172
2492
  }
2173
2493
 
2174
2494
  // src/CompassCardHorizontal.jsx
2175
- import React11, { useState as useState6, useEffect as useEffect6 } from "react";
2495
+ import React12, { useState as useState7, useEffect as useEffect6 } from "react";
2176
2496
 
2177
2497
  // src/CompassCardHorizontalMeta.jsx
2178
- import React10 from "react";
2498
+ import React11 from "react";
2179
2499
 
2180
2500
  // src/IconOverlay.jsx
2181
- import React9, { useState as useState5 } from "react";
2501
+ import React10, { useState as useState6 } from "react";
2182
2502
  import {
2183
2503
  useFloating,
2184
2504
  useHover,
@@ -2194,9 +2514,9 @@ import {
2194
2514
  } from "@floating-ui/react";
2195
2515
 
2196
2516
  // src/icons.js
2197
- import React8 from "react";
2517
+ import React9 from "react";
2198
2518
  function BallotIcon({ size = 16, color = "currentColor" }) {
2199
- return /* @__PURE__ */ React8.createElement(
2519
+ return /* @__PURE__ */ React9.createElement(
2200
2520
  "svg",
2201
2521
  {
2202
2522
  width: size,
@@ -2209,13 +2529,13 @@ function BallotIcon({ size = 16, color = "currentColor" }) {
2209
2529
  strokeLinejoin: "round",
2210
2530
  xmlns: "http://www.w3.org/2000/svg"
2211
2531
  },
2212
- /* @__PURE__ */ React8.createElement("path", { d: "m9 12 2 2 4-4" }),
2213
- /* @__PURE__ */ React8.createElement("path", { d: "M5 7c0-1.1.9-2 2-2h10a2 2 0 0 1 2 2v12H5V7Z" }),
2214
- /* @__PURE__ */ React8.createElement("path", { d: "M22 19H2" })
2532
+ /* @__PURE__ */ React9.createElement("path", { d: "m9 12 2 2 4-4" }),
2533
+ /* @__PURE__ */ React9.createElement("path", { d: "M5 7c0-1.1.9-2 2-2h10a2 2 0 0 1 2 2v12H5V7Z" }),
2534
+ /* @__PURE__ */ React9.createElement("path", { d: "M22 19H2" })
2215
2535
  );
2216
2536
  }
2217
2537
  function CompassIcon({ size = 16, color = "currentColor" }) {
2218
- return /* @__PURE__ */ React8.createElement(
2538
+ return /* @__PURE__ */ React9.createElement(
2219
2539
  "svg",
2220
2540
  {
2221
2541
  width: size,
@@ -2228,27 +2548,27 @@ function CompassIcon({ size = 16, color = "currentColor" }) {
2228
2548
  strokeLinejoin: "round",
2229
2549
  xmlns: "http://www.w3.org/2000/svg"
2230
2550
  },
2231
- /* @__PURE__ */ React8.createElement("circle", { cx: "12", cy: "12", r: "10" }),
2232
- /* @__PURE__ */ React8.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" })
2551
+ /* @__PURE__ */ React9.createElement("circle", { cx: "12", cy: "12", r: "10" }),
2552
+ /* @__PURE__ */ React9.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" })
2233
2553
  );
2234
2554
  }
2235
2555
  function BranchIcon({ size = 16, color = "currentColor", branch }) {
2236
2556
  let paths;
2237
2557
  switch (branch) {
2238
2558
  case "executive":
2239
- paths = /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement("path", { d: "M3 21h18" }), /* @__PURE__ */ React8.createElement("path", { d: "M5 21V7l8-4v18" }), /* @__PURE__ */ React8.createElement("path", { d: "M19 21V11l-6-4" }), /* @__PURE__ */ React8.createElement("path", { d: "M9 9v.01" }), /* @__PURE__ */ React8.createElement("path", { d: "M9 12v.01" }), /* @__PURE__ */ React8.createElement("path", { d: "M9 15v.01" }), /* @__PURE__ */ React8.createElement("path", { d: "M9 18v.01" }), /* @__PURE__ */ React8.createElement("path", { d: "M5 21h14" }), /* @__PURE__ */ React8.createElement("line", { x1: "13", y1: "5", x2: "13", y2: "3" }), /* @__PURE__ */ React8.createElement("line", { x1: "13", y1: "3", x2: "15", y2: "4" }));
2559
+ paths = /* @__PURE__ */ React9.createElement(React9.Fragment, null, /* @__PURE__ */ React9.createElement("path", { d: "M3 21h18" }), /* @__PURE__ */ React9.createElement("path", { d: "M5 21V7l8-4v18" }), /* @__PURE__ */ React9.createElement("path", { d: "M19 21V11l-6-4" }), /* @__PURE__ */ React9.createElement("path", { d: "M9 9v.01" }), /* @__PURE__ */ React9.createElement("path", { d: "M9 12v.01" }), /* @__PURE__ */ React9.createElement("path", { d: "M9 15v.01" }), /* @__PURE__ */ React9.createElement("path", { d: "M9 18v.01" }), /* @__PURE__ */ React9.createElement("path", { d: "M5 21h14" }), /* @__PURE__ */ React9.createElement("line", { x1: "13", y1: "5", x2: "13", y2: "3" }), /* @__PURE__ */ React9.createElement("line", { x1: "13", y1: "3", x2: "15", y2: "4" }));
2240
2560
  break;
2241
2561
  case "legislative":
2242
- paths = /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.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__ */ React8.createElement("path", { d: "M19 17V5a2 2 0 0 0-2-2H4" }), /* @__PURE__ */ React8.createElement("path", { d: "M15 8h-5" }), /* @__PURE__ */ React8.createElement("path", { d: "M15 12h-5" }));
2562
+ paths = /* @__PURE__ */ React9.createElement(React9.Fragment, null, /* @__PURE__ */ React9.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__ */ React9.createElement("path", { d: "M19 17V5a2 2 0 0 0-2-2H4" }), /* @__PURE__ */ React9.createElement("path", { d: "M15 8h-5" }), /* @__PURE__ */ React9.createElement("path", { d: "M15 12h-5" }));
2243
2563
  break;
2244
2564
  case "judicial":
2245
- paths = /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement("path", { d: "M12 3v19" }), /* @__PURE__ */ React8.createElement("path", { d: "M5 8l7-5 7 5" }), /* @__PURE__ */ React8.createElement("path", { d: "M3 13l2-5 2 5a3 3 0 0 1-4 0z" }), /* @__PURE__ */ React8.createElement("path", { d: "M17 13l2-5 2 5a3 3 0 0 1-4 0z" }), /* @__PURE__ */ React8.createElement("path", { d: "M8 21h8" }));
2565
+ paths = /* @__PURE__ */ React9.createElement(React9.Fragment, null, /* @__PURE__ */ React9.createElement("path", { d: "M12 3v19" }), /* @__PURE__ */ React9.createElement("path", { d: "M5 8l7-5 7 5" }), /* @__PURE__ */ React9.createElement("path", { d: "M3 13l2-5 2 5a3 3 0 0 1-4 0z" }), /* @__PURE__ */ React9.createElement("path", { d: "M17 13l2-5 2 5a3 3 0 0 1-4 0z" }), /* @__PURE__ */ React9.createElement("path", { d: "M8 21h8" }));
2246
2566
  break;
2247
2567
  default:
2248
- paths = /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement("path", { d: "M10 18v-7" }), /* @__PURE__ */ React8.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__ */ React8.createElement("path", { d: "M14 18v-7" }), /* @__PURE__ */ React8.createElement("path", { d: "M18 18v-7" }), /* @__PURE__ */ React8.createElement("path", { d: "M3 22h18" }), /* @__PURE__ */ React8.createElement("path", { d: "M6 18v-7" }));
2568
+ paths = /* @__PURE__ */ React9.createElement(React9.Fragment, null, /* @__PURE__ */ React9.createElement("path", { d: "M10 18v-7" }), /* @__PURE__ */ React9.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__ */ React9.createElement("path", { d: "M14 18v-7" }), /* @__PURE__ */ React9.createElement("path", { d: "M18 18v-7" }), /* @__PURE__ */ React9.createElement("path", { d: "M3 22h18" }), /* @__PURE__ */ React9.createElement("path", { d: "M6 18v-7" }));
2249
2569
  break;
2250
2570
  }
2251
- return /* @__PURE__ */ React8.createElement(
2571
+ return /* @__PURE__ */ React9.createElement(
2252
2572
  "svg",
2253
2573
  {
2254
2574
  width: size,
@@ -2267,7 +2587,7 @@ function BranchIcon({ size = 16, color = "currentColor", branch }) {
2267
2587
 
2268
2588
  // src/IconOverlay.jsx
2269
2589
  function IconWithTooltip({ IconComponent, color, tooltip, size = 14, extraProps = {}, onClick }) {
2270
- const [isOpen, setIsOpen] = useState5(false);
2590
+ const [isOpen, setIsOpen] = useState6(false);
2271
2591
  const { refs, floatingStyles, context } = useFloating({
2272
2592
  open: isOpen,
2273
2593
  onOpenChange: setIsOpen,
@@ -2284,7 +2604,7 @@ function IconWithTooltip({ IconComponent, color, tooltip, size = 14, extraProps
2284
2604
  dismiss,
2285
2605
  role
2286
2606
  ]);
2287
- return /* @__PURE__ */ React9.createElement(React9.Fragment, null, /* @__PURE__ */ React9.createElement(
2607
+ return /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement(
2288
2608
  "span",
2289
2609
  {
2290
2610
  ref: refs.setReference,
@@ -2297,8 +2617,8 @@ function IconWithTooltip({ IconComponent, color, tooltip, size = 14, extraProps
2297
2617
  onClick(e);
2298
2618
  } : void 0
2299
2619
  },
2300
- /* @__PURE__ */ React9.createElement(IconComponent, { size, color, ...extraProps })
2301
- ), isOpen && /* @__PURE__ */ React9.createElement(FloatingPortal, null, /* @__PURE__ */ React9.createElement(
2620
+ /* @__PURE__ */ React10.createElement(IconComponent, { size, color, ...extraProps })
2621
+ ), isOpen && /* @__PURE__ */ React10.createElement(FloatingPortal, null, /* @__PURE__ */ React10.createElement(
2302
2622
  "div",
2303
2623
  {
2304
2624
  ref: refs.setFloating,
@@ -2322,7 +2642,7 @@ function IconWithTooltip({ IconComponent, color, tooltip, size = 14, extraProps
2322
2642
  function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2323
2643
  if (!ballot && !hasStances && !branch) return null;
2324
2644
  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;
2325
- return /* @__PURE__ */ React9.createElement(
2645
+ return /* @__PURE__ */ React10.createElement(
2326
2646
  "div",
2327
2647
  {
2328
2648
  style: {
@@ -2335,7 +2655,7 @@ function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2335
2655
  // offset icon wrapper padding so icons align flush-left with text
2336
2656
  }
2337
2657
  },
2338
- ballot && /* @__PURE__ */ React9.createElement(
2658
+ ballot && /* @__PURE__ */ React10.createElement(
2339
2659
  IconWithTooltip,
2340
2660
  {
2341
2661
  IconComponent: BallotIcon,
@@ -2344,7 +2664,7 @@ function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2344
2664
  size: 14
2345
2665
  }
2346
2666
  ),
2347
- hasStances && /* @__PURE__ */ React9.createElement(
2667
+ hasStances && /* @__PURE__ */ React10.createElement(
2348
2668
  IconWithTooltip,
2349
2669
  {
2350
2670
  IconComponent: CompassIcon,
@@ -2354,7 +2674,7 @@ function IconOverlay({ ballot, hasStances, branch, onCompassClick }) {
2354
2674
  onClick: onCompassClick
2355
2675
  }
2356
2676
  ),
2357
- branch && /* @__PURE__ */ React9.createElement(
2677
+ branch && /* @__PURE__ */ React10.createElement(
2358
2678
  IconWithTooltip,
2359
2679
  {
2360
2680
  IconComponent: BranchIcon,
@@ -2374,20 +2694,20 @@ function CompassCardHorizontalMeta({
2374
2694
  userAnswers
2375
2695
  }) {
2376
2696
  const titleText = surface === "elections" ? politician.office_running_for : politician.office_title;
2377
- return /* @__PURE__ */ React10.createElement("div", { style: {
2697
+ return /* @__PURE__ */ React11.createElement("div", { style: {
2378
2698
  flex: 1,
2379
2699
  minWidth: 0,
2380
2700
  display: "flex",
2381
2701
  flexDirection: "column",
2382
2702
  gap: spacing[1]
2383
- } }, /* @__PURE__ */ React10.createElement("p", { style: {
2703
+ } }, /* @__PURE__ */ React11.createElement("p", { style: {
2384
2704
  fontFamily: fonts.primary,
2385
2705
  fontSize: fontSizes.lg,
2386
2706
  fontWeight: fontWeights.semibold,
2387
2707
  lineHeight: 1.4,
2388
2708
  color: colors.evMutedBlue,
2389
2709
  margin: 0
2390
- } }, politician.full_name), /* @__PURE__ */ React10.createElement("p", { style: {
2710
+ } }, politician.full_name), /* @__PURE__ */ React11.createElement("p", { style: {
2391
2711
  fontFamily: fonts.primary,
2392
2712
  fontSize: fontSizes.sm,
2393
2713
  fontWeight: fontWeights.semibold,
@@ -2398,7 +2718,7 @@ function CompassCardHorizontalMeta({
2398
2718
  display: "-webkit-box",
2399
2719
  WebkitLineClamp: 2,
2400
2720
  WebkitBoxOrient: "vertical"
2401
- } }, titleText || ""), politician.district_label && /* @__PURE__ */ React10.createElement("p", { style: {
2721
+ } }, titleText || ""), politician.district_label && /* @__PURE__ */ React11.createElement("p", { style: {
2402
2722
  fontFamily: fonts.primary,
2403
2723
  fontSize: fontSizes.sm,
2404
2724
  fontWeight: fontWeights.regular,
@@ -2408,7 +2728,7 @@ function CompassCardHorizontalMeta({
2408
2728
  overflow: "hidden",
2409
2729
  textOverflow: "ellipsis",
2410
2730
  whiteSpace: "nowrap"
2411
- } }, politician.district_label), /* @__PURE__ */ React10.createElement(
2731
+ } }, politician.district_label), /* @__PURE__ */ React11.createElement(
2412
2732
  IconOverlay,
2413
2733
  {
2414
2734
  ballot: politician.ballot || null,
@@ -2457,10 +2777,10 @@ function CompassCardHorizontal({
2457
2777
  onClick
2458
2778
  }) {
2459
2779
  var _a;
2460
- const [hovered, setHovered] = useState6(false);
2461
- const [focused, setFocused] = useState6(false);
2462
- const [imgError, setImgError] = useState6(false);
2463
- const [emptyCtaHovered, setEmptyCtaHovered] = useState6(false);
2780
+ const [hovered, setHovered] = useState7(false);
2781
+ const [focused, setFocused] = useState7(false);
2782
+ const [imgError, setImgError] = useState7(false);
2783
+ const [emptyCtaHovered, setEmptyCtaHovered] = useState7(false);
2464
2784
  useEffect6(() => {
2465
2785
  setImgError(false);
2466
2786
  }, [politician == null ? void 0 : politician.photo_origin_url]);
@@ -2485,7 +2805,7 @@ function CompassCardHorizontal({
2485
2805
  function renderCompass() {
2486
2806
  var _a2, _b, _c;
2487
2807
  if (!userAnswers || userAnswers.length === 0) {
2488
- return /* @__PURE__ */ React11.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2808
+ return /* @__PURE__ */ React12.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2489
2809
  }
2490
2810
  let topics = [];
2491
2811
  let data = {};
@@ -2521,12 +2841,12 @@ function CompassCardHorizontal({
2521
2841
  }, {}) : politician.stances;
2522
2842
  }
2523
2843
  if (topics.length === 0) {
2524
- return /* @__PURE__ */ React11.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2844
+ return /* @__PURE__ */ React12.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2525
2845
  }
2526
2846
  } catch (err) {
2527
- return /* @__PURE__ */ React11.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2847
+ return /* @__PURE__ */ React12.createElement(PlaceholderRadar, { size: RADAR_SIZE, name: (politician == null ? void 0 : politician.full_name) || "" });
2528
2848
  }
2529
- return /* @__PURE__ */ React11.createElement(
2849
+ return /* @__PURE__ */ React12.createElement(
2530
2850
  RadarChartCore,
2531
2851
  {
2532
2852
  topics,
@@ -2548,7 +2868,7 @@ function CompassCardHorizontal({
2548
2868
  var _a2, _b, _c;
2549
2869
  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;
2550
2870
  if (imageSrc && !imgError) {
2551
- return /* @__PURE__ */ React11.createElement(
2871
+ return /* @__PURE__ */ React12.createElement(
2552
2872
  "img",
2553
2873
  {
2554
2874
  src: imageSrc,
@@ -2566,7 +2886,7 @@ function CompassCardHorizontal({
2566
2886
  }
2567
2887
  const parts = ((politician == null ? void 0 : politician.full_name) || "").split(" ").filter(Boolean);
2568
2888
  const initials = (parts.length >= 2 ? parts[0][0] + parts[parts.length - 1][0] : ((_c = parts[0]) == null ? void 0 : _c[0]) || "?").toUpperCase();
2569
- return /* @__PURE__ */ React11.createElement("div", { style: {
2889
+ return /* @__PURE__ */ React12.createElement("div", { style: {
2570
2890
  width: "100%",
2571
2891
  height: "100%",
2572
2892
  backgroundColor: colors.evMutedBlue,
@@ -2580,7 +2900,7 @@ function CompassCardHorizontal({
2580
2900
  } }, initials);
2581
2901
  }
2582
2902
  function renderEmptyVariant() {
2583
- return /* @__PURE__ */ React11.createElement("div", { style: {
2903
+ return /* @__PURE__ */ React12.createElement("div", { style: {
2584
2904
  width: "100%",
2585
2905
  height: "100%",
2586
2906
  display: "flex",
@@ -2591,14 +2911,14 @@ function CompassCardHorizontal({
2591
2911
  padding: "12px 14px",
2592
2912
  boxSizing: "border-box",
2593
2913
  backgroundColor: colorScales.teal["050"]
2594
- } }, /* @__PURE__ */ React11.createElement(PlaceholderRadar, { size: 140, name: (politician == null ? void 0 : politician.full_name) || "" }), /* @__PURE__ */ React11.createElement("p", { style: {
2914
+ } }, /* @__PURE__ */ React12.createElement(PlaceholderRadar, { size: 140, name: (politician == null ? void 0 : politician.full_name) || "" }), /* @__PURE__ */ React12.createElement("p", { style: {
2595
2915
  margin: 0,
2596
2916
  fontSize: fontSizes.xs,
2597
2917
  color: colors.textMuted,
2598
2918
  textAlign: "center",
2599
2919
  lineHeight: 1.4,
2600
2920
  fontFamily: fonts.primary
2601
- } }, "Calibrate your compass to see how you align with ", (politician == null ? void 0 : politician.full_name) || "this official"), /* @__PURE__ */ React11.createElement(
2921
+ } }, "Calibrate your compass to see how you align with ", (politician == null ? void 0 : politician.full_name) || "this official"), /* @__PURE__ */ React12.createElement(
2602
2922
  "button",
2603
2923
  {
2604
2924
  type: "button",
@@ -2626,7 +2946,7 @@ function CompassCardHorizontal({
2626
2946
  ));
2627
2947
  }
2628
2948
  function renderUnavailablePlate(message = "Compass currently unavailable for this role.") {
2629
- return /* @__PURE__ */ React11.createElement("div", { style: {
2949
+ return /* @__PURE__ */ React12.createElement("div", { style: {
2630
2950
  width: "100%",
2631
2951
  height: "100%",
2632
2952
  backgroundColor: colorScales.teal["050"],
@@ -2635,7 +2955,7 @@ function CompassCardHorizontal({
2635
2955
  justifyContent: "center",
2636
2956
  padding: spacing[4],
2637
2957
  boxSizing: "border-box"
2638
- } }, /* @__PURE__ */ React11.createElement("p", { style: {
2958
+ } }, /* @__PURE__ */ React12.createElement("p", { style: {
2639
2959
  fontSize: fontSizes.sm,
2640
2960
  fontWeight: fontWeights.semibold,
2641
2961
  lineHeight: 1.4,
@@ -2654,7 +2974,7 @@ function CompassCardHorizontal({
2654
2974
  const name = (politician == null ? void 0 : politician.full_name) || "this official";
2655
2975
  return renderUnavailablePlate(`No compass stances on file for ${name} yet.`);
2656
2976
  }
2657
- return /* @__PURE__ */ React11.createElement("div", { style: {
2977
+ return /* @__PURE__ */ React12.createElement("div", { style: {
2658
2978
  width: "100%",
2659
2979
  height: "100%",
2660
2980
  display: "flex",
@@ -2664,7 +2984,7 @@ function CompassCardHorizontal({
2664
2984
  boxSizing: "border-box"
2665
2985
  } }, renderCompass());
2666
2986
  }
2667
- return /* @__PURE__ */ React11.createElement(
2987
+ return /* @__PURE__ */ React12.createElement(
2668
2988
  "div",
2669
2989
  {
2670
2990
  role: "article",
@@ -2683,7 +3003,7 @@ function CompassCardHorizontal({
2683
3003
  onFocus: () => setFocused(true),
2684
3004
  onBlur: () => setFocused(false)
2685
3005
  },
2686
- /* @__PURE__ */ React11.createElement("div", { style: slotStyle }, renderSlotContent(), surface === "elections" && politician.running_unopposed && /* @__PURE__ */ React11.createElement("div", { style: {
3006
+ /* @__PURE__ */ React12.createElement("div", { style: slotStyle }, renderSlotContent(), surface === "elections" && politician.running_unopposed && /* @__PURE__ */ React12.createElement("div", { style: {
2687
3007
  position: "absolute",
2688
3008
  bottom: "15px",
2689
3009
  left: 0,
@@ -2698,7 +3018,7 @@ function CompassCardHorizontal({
2698
3018
  padding: "6px 0",
2699
3019
  pointerEvents: "none"
2700
3020
  } }, typeof politician.running_unopposed === "string" ? politician.running_unopposed : "Running Unopposed")),
2701
- /* @__PURE__ */ React11.createElement("div", { style: { flex: 1, minWidth: 0, padding: spacing[4], paddingLeft: spacing[3] } }, /* @__PURE__ */ React11.createElement(
3021
+ /* @__PURE__ */ React12.createElement("div", { style: { flex: 1, minWidth: 0, padding: spacing[4], paddingLeft: spacing[3] } }, /* @__PURE__ */ React12.createElement(
2702
3022
  CompassCardHorizontalMeta,
2703
3023
  {
2704
3024
  politician,
@@ -2710,7 +3030,7 @@ function CompassCardHorizontal({
2710
3030
  }
2711
3031
 
2712
3032
  // src/CompassCardVertical.jsx
2713
- import React12, { useState as useState7, useEffect as useEffect7 } from "react";
3033
+ import React13, { useState as useState8, useEffect as useEffect7 } from "react";
2714
3034
  var RADAR_SIZE2 = 400;
2715
3035
  function CompassCardVertical({
2716
3036
  politician,
@@ -2724,10 +3044,10 @@ function CompassCardVertical({
2724
3044
  onClick
2725
3045
  }) {
2726
3046
  var _a;
2727
- const [hovered, setHovered] = useState7(false);
2728
- const [focused, setFocused] = useState7(false);
2729
- const [imgError, setImgError] = useState7(false);
2730
- const [emptyCtaHovered, setEmptyCtaHovered] = useState7(false);
3047
+ const [hovered, setHovered] = useState8(false);
3048
+ const [focused, setFocused] = useState8(false);
3049
+ const [imgError, setImgError] = useState8(false);
3050
+ const [emptyCtaHovered, setEmptyCtaHovered] = useState8(false);
2731
3051
  useEffect7(() => {
2732
3052
  setImgError(false);
2733
3053
  }, [politician == null ? void 0 : politician.photo_origin_url]);
@@ -2751,7 +3071,7 @@ function CompassCardVertical({
2751
3071
  function renderCompass() {
2752
3072
  var _a2, _b, _c;
2753
3073
  if (!userAnswers || userAnswers.length === 0) {
2754
- return /* @__PURE__ */ React12.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
3074
+ return /* @__PURE__ */ React13.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2755
3075
  }
2756
3076
  let topics = [];
2757
3077
  let data = {};
@@ -2787,17 +3107,17 @@ function CompassCardVertical({
2787
3107
  }, {}) : politician.stances;
2788
3108
  }
2789
3109
  if (topics.length === 0) {
2790
- return /* @__PURE__ */ React12.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
3110
+ return /* @__PURE__ */ React13.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2791
3111
  }
2792
3112
  } catch {
2793
- return /* @__PURE__ */ React12.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
3113
+ return /* @__PURE__ */ React13.createElement(PlaceholderRadar, { size: RADAR_SIZE2, name: (politician == null ? void 0 : politician.full_name) || "" });
2794
3114
  }
2795
3115
  const unansweredSpokes = {};
2796
3116
  for (const t of topics) {
2797
3117
  const v = compareData[t.short_title];
2798
3118
  if (!v || Number(v) === 0) unansweredSpokes[t.short_title] = true;
2799
3119
  }
2800
- return /* @__PURE__ */ React12.createElement("div", { style: { width: RADAR_SIZE2 + 240, maxWidth: "100%", flexShrink: 0 } }, /* @__PURE__ */ React12.createElement(
3120
+ return /* @__PURE__ */ React13.createElement("div", { style: { width: RADAR_SIZE2 + 240, maxWidth: "100%", flexShrink: 0 } }, /* @__PURE__ */ React13.createElement(
2801
3121
  RadarChartCore,
2802
3122
  {
2803
3123
  topics,
@@ -2832,7 +3152,7 @@ function CompassCardVertical({
2832
3152
  justifyContent: "center"
2833
3153
  };
2834
3154
  if (imageSrc && !imgError) {
2835
- return /* @__PURE__ */ React12.createElement("div", { style: baseStyle }, /* @__PURE__ */ React12.createElement(
3155
+ return /* @__PURE__ */ React13.createElement("div", { style: baseStyle }, /* @__PURE__ */ React13.createElement(
2836
3156
  "img",
2837
3157
  {
2838
3158
  src: imageSrc,
@@ -2850,7 +3170,7 @@ function CompassCardVertical({
2850
3170
  }
2851
3171
  const parts = ((politician == null ? void 0 : politician.full_name) || "").split(" ").filter(Boolean);
2852
3172
  const initials = (parts.length >= 2 ? parts[0][0] + parts[parts.length - 1][0] : ((_c = parts[0]) == null ? void 0 : _c[0]) || "?").toUpperCase();
2853
- return /* @__PURE__ */ React12.createElement("div", { style: baseStyle }, /* @__PURE__ */ React12.createElement("span", { style: {
3173
+ return /* @__PURE__ */ React13.createElement("div", { style: baseStyle }, /* @__PURE__ */ React13.createElement("span", { style: {
2854
3174
  color: colors.textWhite,
2855
3175
  fontFamily: fonts.primary,
2856
3176
  fontWeight: fontWeights.bold,
@@ -2861,7 +3181,7 @@ function CompassCardVertical({
2861
3181
  var _a2, _b, _c;
2862
3182
  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;
2863
3183
  if (imageSrc && !imgError) {
2864
- return /* @__PURE__ */ React12.createElement(
3184
+ return /* @__PURE__ */ React13.createElement(
2865
3185
  "img",
2866
3186
  {
2867
3187
  src: imageSrc,
@@ -2880,7 +3200,7 @@ function CompassCardVertical({
2880
3200
  }
2881
3201
  const parts = ((politician == null ? void 0 : politician.full_name) || "").split(" ").filter(Boolean);
2882
3202
  const initials = (parts.length >= 2 ? parts[0][0] + parts[parts.length - 1][0] : ((_c = parts[0]) == null ? void 0 : _c[0]) || "?").toUpperCase();
2883
- return /* @__PURE__ */ React12.createElement("div", { style: {
3203
+ return /* @__PURE__ */ React13.createElement("div", { style: {
2884
3204
  width: RADAR_SIZE2,
2885
3205
  height: RADAR_SIZE2,
2886
3206
  backgroundColor: colors.evMutedBlue,
@@ -2895,7 +3215,7 @@ function CompassCardVertical({
2895
3215
  } }, initials);
2896
3216
  }
2897
3217
  function renderEmptyVariant() {
2898
- return /* @__PURE__ */ React12.createElement("div", { style: {
3218
+ return /* @__PURE__ */ React13.createElement("div", { style: {
2899
3219
  width: "100%",
2900
3220
  height: "100%",
2901
3221
  flex: 1,
@@ -2908,14 +3228,14 @@ function CompassCardVertical({
2908
3228
  boxSizing: "border-box",
2909
3229
  backgroundColor: colorScales.teal["050"],
2910
3230
  borderRadius: borderRadius.md
2911
- } }, /* @__PURE__ */ React12.createElement(PlaceholderRadar, { size: 220, name: (politician == null ? void 0 : politician.full_name) || "" }), /* @__PURE__ */ React12.createElement("p", { style: {
3231
+ } }, /* @__PURE__ */ React13.createElement(PlaceholderRadar, { size: 220, name: (politician == null ? void 0 : politician.full_name) || "" }), /* @__PURE__ */ React13.createElement("p", { style: {
2912
3232
  margin: 0,
2913
3233
  fontSize: fontSizes.sm,
2914
3234
  color: colors.textMuted,
2915
3235
  textAlign: "center",
2916
3236
  lineHeight: 1.4,
2917
3237
  fontFamily: fonts.primary
2918
- } }, "Calibrate your compass to see how you align with ", (politician == null ? void 0 : politician.full_name) || "this official"), /* @__PURE__ */ React12.createElement(
3238
+ } }, "Calibrate your compass to see how you align with ", (politician == null ? void 0 : politician.full_name) || "this official"), /* @__PURE__ */ React13.createElement(
2919
3239
  "button",
2920
3240
  {
2921
3241
  type: "button",
@@ -2941,7 +3261,7 @@ function CompassCardVertical({
2941
3261
  ));
2942
3262
  }
2943
3263
  function renderUnavailablePlate(message) {
2944
- return /* @__PURE__ */ React12.createElement("div", { style: {
3264
+ return /* @__PURE__ */ React13.createElement("div", { style: {
2945
3265
  width: "100%",
2946
3266
  height: "100%",
2947
3267
  flex: 1,
@@ -2952,7 +3272,7 @@ function CompassCardVertical({
2952
3272
  justifyContent: "center",
2953
3273
  padding: spacing[6],
2954
3274
  boxSizing: "border-box"
2955
- } }, /* @__PURE__ */ React12.createElement("p", { style: {
3275
+ } }, /* @__PURE__ */ React13.createElement("p", { style: {
2956
3276
  fontSize: fontSizes.base,
2957
3277
  fontWeight: fontWeights.semibold,
2958
3278
  lineHeight: 1.4,
@@ -2973,7 +3293,7 @@ function CompassCardVertical({
2973
3293
  }
2974
3294
  return renderCompass();
2975
3295
  }
2976
- return /* @__PURE__ */ React12.createElement(
3296
+ return /* @__PURE__ */ React13.createElement(
2977
3297
  "div",
2978
3298
  {
2979
3299
  role: "article",
@@ -2992,21 +3312,21 @@ function CompassCardVertical({
2992
3312
  onFocus: () => setFocused(true),
2993
3313
  onBlur: () => setFocused(false)
2994
3314
  },
2995
- /* @__PURE__ */ React12.createElement("div", { style: { padding: spacing[4], paddingBottom: spacing[3], display: "flex", alignItems: "stretch", gap: spacing[3], flexShrink: 0 } }, renderAvatar(), /* @__PURE__ */ React12.createElement("div", { style: { display: "flex", flexDirection: "column", gap: spacing[1], minWidth: 0, flex: 1 } }, /* @__PURE__ */ React12.createElement("p", { style: {
3315
+ /* @__PURE__ */ React13.createElement("div", { style: { padding: spacing[4], paddingBottom: spacing[3], display: "flex", alignItems: "stretch", gap: spacing[3], flexShrink: 0 } }, renderAvatar(), /* @__PURE__ */ React13.createElement("div", { style: { display: "flex", flexDirection: "column", gap: spacing[1], minWidth: 0, flex: 1 } }, /* @__PURE__ */ React13.createElement("p", { style: {
2996
3316
  fontFamily: fonts.primary,
2997
3317
  fontSize: fontSizes.xl,
2998
3318
  fontWeight: fontWeights.semibold,
2999
3319
  lineHeight: 1.3,
3000
3320
  color: colors.evMutedBlue,
3001
3321
  margin: 0
3002
- } }, politician.full_name), /* @__PURE__ */ React12.createElement("p", { style: {
3322
+ } }, politician.full_name), /* @__PURE__ */ React13.createElement("p", { style: {
3003
3323
  fontFamily: fonts.primary,
3004
3324
  fontSize: fontSizes.sm,
3005
3325
  fontWeight: fontWeights.semibold,
3006
3326
  lineHeight: 1.4,
3007
3327
  color: colors.textSecondary,
3008
3328
  margin: 0
3009
- } }, titleText || ""), politician.district_label && /* @__PURE__ */ React12.createElement("p", { style: {
3329
+ } }, titleText || ""), politician.district_label && /* @__PURE__ */ React13.createElement("p", { style: {
3010
3330
  fontFamily: fonts.primary,
3011
3331
  fontSize: fontSizes.sm,
3012
3332
  fontWeight: fontWeights.regular,
@@ -3016,7 +3336,7 @@ function CompassCardVertical({
3016
3336
  overflow: "hidden",
3017
3337
  textOverflow: "ellipsis",
3018
3338
  whiteSpace: "nowrap"
3019
- } }, politician.district_label), /* @__PURE__ */ React12.createElement("div", { style: { marginTop: "auto" } }, /* @__PURE__ */ React12.createElement(
3339
+ } }, politician.district_label), /* @__PURE__ */ React13.createElement("div", { style: { marginTop: "auto" } }, /* @__PURE__ */ React13.createElement(
3020
3340
  IconOverlay,
3021
3341
  {
3022
3342
  ballot: politician.ballot || null,
@@ -3024,7 +3344,7 @@ function CompassCardVertical({
3024
3344
  branch: politician.branch || null
3025
3345
  }
3026
3346
  )))),
3027
- surface === "elections" && politician.withdrawn && /* @__PURE__ */ React12.createElement("div", { style: {
3347
+ surface === "elections" && politician.withdrawn && /* @__PURE__ */ React13.createElement("div", { style: {
3028
3348
  margin: `0 ${spacing[4]} ${spacing[3]}`,
3029
3349
  backgroundColor: "rgba(120,0,0,0.85)",
3030
3350
  color: "#fff",
@@ -3036,7 +3356,7 @@ function CompassCardVertical({
3036
3356
  padding: "6px 0",
3037
3357
  borderRadius: borderRadius.sm
3038
3358
  } }, "Withdrawn"),
3039
- surface === "elections" && !politician.withdrawn && politician.running_unopposed && /* @__PURE__ */ React12.createElement("div", { style: {
3359
+ surface === "elections" && !politician.withdrawn && politician.running_unopposed && /* @__PURE__ */ React13.createElement("div", { style: {
3040
3360
  margin: `0 ${spacing[4]} ${spacing[3]}`,
3041
3361
  backgroundColor: "rgba(0,0,0,0.75)",
3042
3362
  color: "#fff",
@@ -3048,7 +3368,7 @@ function CompassCardVertical({
3048
3368
  padding: "6px 0",
3049
3369
  borderRadius: borderRadius.sm
3050
3370
  } }, typeof politician.running_unopposed === "string" ? politician.running_unopposed : "Running Unopposed"),
3051
- /* @__PURE__ */ React12.createElement("div", { style: {
3371
+ /* @__PURE__ */ React13.createElement("div", { style: {
3052
3372
  flex: 1,
3053
3373
  padding: spacing[4],
3054
3374
  paddingTop: 0,
@@ -3062,7 +3382,7 @@ function CompassCardVertical({
3062
3382
  }
3063
3383
 
3064
3384
  // src/CompassKey.jsx
3065
- import React13, { useEffect as useEffect8, useState as useState8 } from "react";
3385
+ import React14, { useEffect as useEffect8, useState as useState9 } from "react";
3066
3386
 
3067
3387
  // src/evContext.js
3068
3388
  var DEFAULT_BROKER_URL = "https://ev-context.empowered.vote/";
@@ -3307,8 +3627,8 @@ var evContext = {
3307
3627
 
3308
3628
  // src/CompassKey.jsx
3309
3629
  function CompassKey({ compact = false } = {}) {
3310
- const [dismissed, setDismissed] = useState8(false);
3311
- const [loaded, setLoaded] = useState8(false);
3630
+ const [dismissed, setDismissed] = useState9(false);
3631
+ const [loaded, setLoaded] = useState9(false);
3312
3632
  useEffect8(() => {
3313
3633
  let cancelled = false;
3314
3634
  evContext.get().then((shared) => {
@@ -3339,17 +3659,16 @@ function CompassKey({ compact = false } = {}) {
3339
3659
  persistDismissed(false);
3340
3660
  }
3341
3661
  if (!loaded) return null;
3342
- const Swatch = ({ color, label, ring }) => /* @__PURE__ */ React13.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: spacing[1] } }, /* @__PURE__ */ React13.createElement("span", { style: {
3662
+ const Swatch = ({ color, label }) => /* @__PURE__ */ React14.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: spacing[1] } }, /* @__PURE__ */ React14.createElement("span", { style: {
3343
3663
  display: "inline-block",
3344
- width: 12,
3345
- height: 12,
3664
+ width: 16,
3665
+ height: 16,
3346
3666
  borderRadius: "50%",
3347
3667
  background: color,
3348
- border: `2px solid ${ring || "#fff"}`,
3349
3668
  boxShadow: "0 0 0 1px rgba(0,0,0,0.08)"
3350
- } }), /* @__PURE__ */ React13.createElement("span", { style: { fontSize: fontSizes.xs, color: colors.textSecondary, fontFamily: fonts.primary } }, label));
3669
+ } }), /* @__PURE__ */ React14.createElement("span", { style: { fontSize: fontSizes.xs, color: colors.textSecondary, fontFamily: fonts.primary } }, label));
3351
3670
  if (dismissed) {
3352
- return /* @__PURE__ */ React13.createElement(
3671
+ return /* @__PURE__ */ React14.createElement(
3353
3672
  "button",
3354
3673
  {
3355
3674
  type: "button",
@@ -3370,11 +3689,11 @@ function CompassKey({ compact = false } = {}) {
3370
3689
  cursor: "pointer"
3371
3690
  }
3372
3691
  },
3373
- /* @__PURE__ */ React13.createElement("span", { "aria-hidden": "true" }, "?"),
3692
+ /* @__PURE__ */ React14.createElement("span", { "aria-hidden": "true" }, "?"),
3374
3693
  " Compass key"
3375
3694
  );
3376
3695
  }
3377
- return /* @__PURE__ */ React13.createElement(
3696
+ return /* @__PURE__ */ React14.createElement(
3378
3697
  "div",
3379
3698
  {
3380
3699
  role: "region",
@@ -3393,17 +3712,17 @@ function CompassKey({ compact = false } = {}) {
3393
3712
  boxSizing: "border-box"
3394
3713
  }
3395
3714
  },
3396
- !compact && /* @__PURE__ */ React13.createElement("span", { style: {
3715
+ !compact && /* @__PURE__ */ React14.createElement("span", { style: {
3397
3716
  fontSize: fontSizes.xs,
3398
3717
  fontWeight: fontWeights.semibold,
3399
3718
  color: colors.textMuted,
3400
3719
  textTransform: "uppercase",
3401
3720
  letterSpacing: "0.5px"
3402
3721
  } }, "Compass key"),
3403
- /* @__PURE__ */ React13.createElement(Swatch, { color: "#7C6B9E", label: "You" }),
3404
- /* @__PURE__ */ React13.createElement(Swatch, { color: "#5A9A6E", label: "Politician" }),
3405
- /* @__PURE__ */ React13.createElement(Swatch, { color: "#fed12e", label: "Match" }),
3406
- /* @__PURE__ */ React13.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: spacing[1] } }, /* @__PURE__ */ React13.createElement("span", { style: {
3722
+ /* @__PURE__ */ React14.createElement(Swatch, { color: "#7C6B9E", label: "You" }),
3723
+ /* @__PURE__ */ React14.createElement(Swatch, { color: "#5A9A6E", label: "Politician" }),
3724
+ /* @__PURE__ */ React14.createElement(Swatch, { color: "#fed12e", label: "Match" }),
3725
+ /* @__PURE__ */ React14.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: spacing[1] } }, /* @__PURE__ */ React14.createElement("span", { style: {
3407
3726
  fontSize: fontSizes.xs,
3408
3727
  fontWeight: fontWeights.semibold,
3409
3728
  color: "#9ca3af",
@@ -3411,8 +3730,8 @@ function CompassKey({ compact = false } = {}) {
3411
3730
  textDecoration: "underline",
3412
3731
  textDecorationStyle: "dashed",
3413
3732
  textUnderlineOffset: "3px"
3414
- } }, "Topic"), /* @__PURE__ */ React13.createElement("span", { style: { fontSize: fontSizes.xs, color: colors.textSecondary, fontFamily: fonts.primary } }, "= no stance")),
3415
- /* @__PURE__ */ React13.createElement(
3733
+ } }, "Topic"), /* @__PURE__ */ React14.createElement("span", { style: { fontSize: fontSizes.xs, color: colors.textSecondary, fontFamily: fonts.primary } }, "= no stance")),
3734
+ /* @__PURE__ */ React14.createElement(
3416
3735
  "button",
3417
3736
  {
3418
3737
  type: "button",
@@ -3435,7 +3754,7 @@ function CompassKey({ compact = false } = {}) {
3435
3754
  }
3436
3755
 
3437
3756
  // src/CategorySection.jsx
3438
- import React14, { useState as useState9 } from "react";
3757
+ import React15, { useState as useState10 } from "react";
3439
3758
  function CategorySection({
3440
3759
  title,
3441
3760
  infoTooltip,
@@ -3445,7 +3764,7 @@ function CategorySection({
3445
3764
  tier
3446
3765
  }) {
3447
3766
  var _a, _b;
3448
- const [showTooltip, setShowTooltip] = useState9(false);
3767
+ const [showTooltip, setShowTooltip] = useState10(false);
3449
3768
  const tierStyle = tier ? tierColors[tier] : null;
3450
3769
  const styles2 = {
3451
3770
  section: {
@@ -3513,7 +3832,7 @@ function CategorySection({
3513
3832
  gap: spacing[4]
3514
3833
  }
3515
3834
  };
3516
- return /* @__PURE__ */ React14.createElement("section", { style: styles2.section, className: "ev-category-section" }, /* @__PURE__ */ React14.createElement("div", { style: styles2.header }, /* @__PURE__ */ React14.createElement("span", { style: styles2.titlePill }, title), infoTooltip && /* @__PURE__ */ React14.createElement(
3835
+ return /* @__PURE__ */ React15.createElement("section", { style: styles2.section, className: "ev-category-section" }, /* @__PURE__ */ React15.createElement("div", { style: styles2.header }, /* @__PURE__ */ React15.createElement("span", { style: styles2.titlePill }, title), infoTooltip && /* @__PURE__ */ React15.createElement(
3517
3836
  "button",
3518
3837
  {
3519
3838
  type: "button",
@@ -3525,8 +3844,8 @@ function CategorySection({
3525
3844
  "aria-label": `Info about ${title}`
3526
3845
  },
3527
3846
  "i",
3528
- showTooltip && /* @__PURE__ */ React14.createElement("div", { style: styles2.tooltip, role: "tooltip" }, infoTooltip)
3529
- ), websiteUrl && /* @__PURE__ */ React14.createElement(
3847
+ showTooltip && /* @__PURE__ */ React15.createElement("div", { style: styles2.tooltip, role: "tooltip" }, infoTooltip)
3848
+ ), websiteUrl && /* @__PURE__ */ React15.createElement(
3530
3849
  "a",
3531
3850
  {
3532
3851
  href: websiteUrl,
@@ -3535,7 +3854,7 @@ function CategorySection({
3535
3854
  style: styles2.externalLink,
3536
3855
  "aria-label": `Visit official website for ${title}`
3537
3856
  },
3538
- /* @__PURE__ */ React14.createElement(
3857
+ /* @__PURE__ */ React15.createElement(
3539
3858
  "svg",
3540
3859
  {
3541
3860
  viewBox: "0 0 24 24",
@@ -3543,7 +3862,7 @@ function CategorySection({
3543
3862
  xmlns: "http://www.w3.org/2000/svg",
3544
3863
  style: { width: "14px", height: "14px" }
3545
3864
  },
3546
- /* @__PURE__ */ React14.createElement(
3865
+ /* @__PURE__ */ React15.createElement(
3547
3866
  "path",
3548
3867
  {
3549
3868
  d: "M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14",
@@ -3554,11 +3873,11 @@ function CategorySection({
3554
3873
  }
3555
3874
  )
3556
3875
  )
3557
- )), /* @__PURE__ */ React14.createElement("div", { style: styles2.grid, className: "ev-category-grid" }, children));
3876
+ )), /* @__PURE__ */ React15.createElement("div", { style: styles2.grid, className: "ev-category-grid" }, children));
3558
3877
  }
3559
3878
 
3560
3879
  // src/SubGroupSection.jsx
3561
- import React15 from "react";
3880
+ import React16 from "react";
3562
3881
  function SubGroupSection({ title, websiteUrl, children, gridTemplateColumns, gap, justifyContent }) {
3563
3882
  const styles2 = {
3564
3883
  section: {
@@ -3593,7 +3912,7 @@ function SubGroupSection({ title, websiteUrl, children, gridTemplateColumns, gap
3593
3912
  width: "100%"
3594
3913
  }
3595
3914
  };
3596
- return /* @__PURE__ */ React15.createElement("div", { style: styles2.section }, title && /* @__PURE__ */ React15.createElement("div", { style: styles2.header }, /* @__PURE__ */ React15.createElement("span", { style: styles2.label }, title), websiteUrl && /* @__PURE__ */ React15.createElement(
3915
+ return /* @__PURE__ */ React16.createElement("div", { style: styles2.section }, title && /* @__PURE__ */ React16.createElement("div", { style: styles2.header }, /* @__PURE__ */ React16.createElement("span", { style: styles2.label }, title), websiteUrl && /* @__PURE__ */ React16.createElement(
3597
3916
  "a",
3598
3917
  {
3599
3918
  href: websiteUrl,
@@ -3601,12 +3920,12 @@ function SubGroupSection({ title, websiteUrl, children, gridTemplateColumns, gap
3601
3920
  rel: "noopener noreferrer",
3602
3921
  style: styles2.link
3603
3922
  },
3604
- /* @__PURE__ */ React15.createElement("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { width: "12px", height: "12px" } }, /* @__PURE__ */ React15.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ React15.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" }))
3605
- )), /* @__PURE__ */ React15.createElement("div", { style: styles2.grid, className: "ev-subgroup-grid" }, children));
3923
+ /* @__PURE__ */ React16.createElement("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { width: "12px", height: "12px" } }, /* @__PURE__ */ React16.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ React16.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" }))
3924
+ )), /* @__PURE__ */ React16.createElement("div", { style: styles2.grid, className: "ev-subgroup-grid" }, children));
3606
3925
  }
3607
3926
 
3608
3927
  // src/GovernmentBodySection.jsx
3609
- import React16, { useState as useState10 } from "react";
3928
+ import React17, { useState as useState11 } from "react";
3610
3929
  function GovernmentBodySection({
3611
3930
  title,
3612
3931
  websiteUrl,
@@ -3615,7 +3934,7 @@ function GovernmentBodySection({
3615
3934
  children
3616
3935
  }) {
3617
3936
  var _a;
3618
- const [expanded, setExpanded] = useState10(defaultExpanded);
3937
+ const [expanded, setExpanded] = useState11(defaultExpanded);
3619
3938
  const tierStyle = tier ? tierColors[tier] : null;
3620
3939
  const accentColor = (_a = tierStyle == null ? void 0 : tierStyle.accent) != null ? _a : colors.borderMedium;
3621
3940
  const styles2 = {
@@ -3655,7 +3974,7 @@ function GovernmentBodySection({
3655
3974
  display: expanded ? "block" : "none"
3656
3975
  }
3657
3976
  };
3658
- return /* @__PURE__ */ React16.createElement("section", { style: styles2.section, className: "ev-gov-body-section" }, /* @__PURE__ */ React16.createElement(
3977
+ return /* @__PURE__ */ React17.createElement("section", { style: styles2.section, className: "ev-gov-body-section" }, /* @__PURE__ */ React17.createElement(
3659
3978
  "div",
3660
3979
  {
3661
3980
  style: styles2.header,
@@ -3671,8 +3990,8 @@ function GovernmentBodySection({
3671
3990
  "aria-expanded": expanded,
3672
3991
  "aria-label": `${expanded ? "Collapse" : "Expand"} ${title}`
3673
3992
  },
3674
- /* @__PURE__ */ React16.createElement("span", { style: styles2.title }, title),
3675
- websiteUrl && /* @__PURE__ */ React16.createElement(
3993
+ /* @__PURE__ */ React17.createElement("span", { style: styles2.title }, title),
3994
+ websiteUrl && /* @__PURE__ */ React17.createElement(
3676
3995
  "a",
3677
3996
  {
3678
3997
  href: websiteUrl,
@@ -3682,14 +4001,14 @@ function GovernmentBodySection({
3682
4001
  onClick: (e) => e.stopPropagation(),
3683
4002
  "aria-label": `Visit ${title} website`
3684
4003
  },
3685
- /* @__PURE__ */ React16.createElement("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { width: "14px", height: "14px" } }, /* @__PURE__ */ React16.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ React16.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" }))
4004
+ /* @__PURE__ */ React17.createElement("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { width: "14px", height: "14px" } }, /* @__PURE__ */ React17.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ React17.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" }))
3686
4005
  ),
3687
- /* @__PURE__ */ React16.createElement("span", { style: styles2.toggle, "aria-hidden": "true" }, "\u25BC")
3688
- ), /* @__PURE__ */ React16.createElement("div", { style: styles2.content }, children));
4006
+ /* @__PURE__ */ React17.createElement("span", { style: styles2.toggle, "aria-hidden": "true" }, "\u25BC")
4007
+ ), /* @__PURE__ */ React17.createElement("div", { style: styles2.content }, children));
3689
4008
  }
3690
4009
 
3691
4010
  // src/SocialLinks.jsx
3692
- import React17 from "react";
4011
+ import React18 from "react";
3693
4012
  var SOCIAL_PLATFORMS = [
3694
4013
  { test: /facebook\.com/i, platform: "facebook" },
3695
4014
  { test: /twitter\.com|x\.com/i, platform: "twitter" },
@@ -3761,7 +4080,7 @@ function SocialLinks({
3761
4080
  }
3762
4081
  };
3763
4082
  const platformIconMap = {
3764
- twitter: /* @__PURE__ */ React17.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React17.createElement(
4083
+ twitter: /* @__PURE__ */ React18.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React18.createElement(
3765
4084
  "path",
3766
4085
  {
3767
4086
  d: "M4 4L10.5 12.5M20 20L13.5 11.5M10.5 12.5L4 20H8L13.5 11.5M10.5 12.5L16 4H20L13.5 11.5",
@@ -3771,7 +4090,7 @@ function SocialLinks({
3771
4090
  strokeLinejoin: "round"
3772
4091
  }
3773
4092
  )),
3774
- facebook: /* @__PURE__ */ React17.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React17.createElement(
4093
+ facebook: /* @__PURE__ */ React18.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React18.createElement(
3775
4094
  "path",
3776
4095
  {
3777
4096
  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",
@@ -3781,8 +4100,8 @@ function SocialLinks({
3781
4100
  strokeLinejoin: "round"
3782
4101
  }
3783
4102
  )),
3784
- instagram: /* @__PURE__ */ React17.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React17.createElement("rect", { x: "2", y: "2", width: "20", height: "20", rx: "5", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ React17.createElement("circle", { cx: "12", cy: "12", r: "4", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ React17.createElement("circle", { cx: "18", cy: "6", r: "1", fill: "currentColor" })),
3785
- linkedin: /* @__PURE__ */ React17.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React17.createElement(
4103
+ instagram: /* @__PURE__ */ React18.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React18.createElement("rect", { x: "2", y: "2", width: "20", height: "20", rx: "5", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ React18.createElement("circle", { cx: "12", cy: "12", r: "4", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ React18.createElement("circle", { cx: "18", cy: "6", r: "1", fill: "currentColor" })),
4104
+ linkedin: /* @__PURE__ */ React18.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React18.createElement(
3786
4105
  "path",
3787
4106
  {
3788
4107
  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",
@@ -3791,8 +4110,8 @@ function SocialLinks({
3791
4110
  strokeLinecap: "round",
3792
4111
  strokeLinejoin: "round"
3793
4112
  }
3794
- ), /* @__PURE__ */ React17.createElement("rect", { x: "2", y: "9", width: "4", height: "12", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), /* @__PURE__ */ React17.createElement("circle", { cx: "4", cy: "4", r: "2", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })),
3795
- youtube: /* @__PURE__ */ React17.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React17.createElement("rect", { x: "2", y: "5", width: "20", height: "14", rx: "3", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ React17.createElement("polygon", { points: "10,9 16,12 10,15", fill: "currentColor" }))
4113
+ ), /* @__PURE__ */ React18.createElement("rect", { x: "2", y: "9", width: "4", height: "12", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }), /* @__PURE__ */ React18.createElement("circle", { cx: "4", cy: "4", r: "2", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })),
4114
+ youtube: /* @__PURE__ */ React18.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React18.createElement("rect", { x: "2", y: "5", width: "20", height: "14", rx: "3", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ React18.createElement("polygon", { points: "10,9 16,12 10,15", fill: "currentColor" }))
3796
4115
  };
3797
4116
  const links = [
3798
4117
  {
@@ -3818,7 +4137,7 @@ function SocialLinks({
3818
4137
  {
3819
4138
  href: website,
3820
4139
  label: "Website",
3821
- icon: /* @__PURE__ */ React17.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React17.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ React17.createElement(
4140
+ icon: /* @__PURE__ */ React18.createElement("svg", { style: styles2.icon, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, /* @__PURE__ */ React18.createElement("circle", { cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "2" }), /* @__PURE__ */ React18.createElement(
3822
4141
  "path",
3823
4142
  {
3824
4143
  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",
@@ -3848,7 +4167,7 @@ function SocialLinks({
3848
4167
  if (links.length === 0) {
3849
4168
  return null;
3850
4169
  }
3851
- return /* @__PURE__ */ React17.createElement("div", { style: styles2.container, className: "ev-social-links" }, links.map((link) => /* @__PURE__ */ React17.createElement(
4170
+ return /* @__PURE__ */ React18.createElement("div", { style: styles2.container, className: "ev-social-links" }, links.map((link) => /* @__PURE__ */ React18.createElement(
3852
4171
  "a",
3853
4172
  {
3854
4173
  key: link.label,
@@ -3871,7 +4190,7 @@ function SocialLinks({
3871
4190
  }
3872
4191
 
3873
4192
  // src/IssueTags.jsx
3874
- import React18 from "react";
4193
+ import React19 from "react";
3875
4194
  function IssueTags({
3876
4195
  tags = [],
3877
4196
  selectedTags = [],
@@ -3914,9 +4233,9 @@ function IssueTags({
3914
4233
  onTagClick(tag.value);
3915
4234
  }
3916
4235
  };
3917
- return /* @__PURE__ */ React18.createElement("div", { style: styles2.container, className: "ev-issue-tags", role: "list" }, tags.map((tag) => {
4236
+ return /* @__PURE__ */ React19.createElement("div", { style: styles2.container, className: "ev-issue-tags", role: "list" }, tags.map((tag) => {
3918
4237
  const isSelected = selectedTags.includes(tag.value);
3919
- return /* @__PURE__ */ React18.createElement(
4238
+ return /* @__PURE__ */ React19.createElement(
3920
4239
  "span",
3921
4240
  {
3922
4241
  key: tag.value,
@@ -3945,7 +4264,7 @@ function IssueTags({
3945
4264
  }
3946
4265
 
3947
4266
  // src/CommitteeTable.jsx
3948
- import React19, { useState as useState11 } from "react";
4267
+ import React20, { useState as useState12 } from "react";
3949
4268
  var ROLE_ORDER = {
3950
4269
  "chair": 0,
3951
4270
  "co-chair": 1,
@@ -3972,7 +4291,7 @@ function CommitteeTable({
3972
4291
  maxVisible = 6,
3973
4292
  style = {}
3974
4293
  }) {
3975
- const [showAll, setShowAll] = useState11(false);
4294
+ const [showAll, setShowAll] = useState12(false);
3976
4295
  if (committees.length === 0) {
3977
4296
  return null;
3978
4297
  }
@@ -4034,7 +4353,7 @@ function CommitteeTable({
4034
4353
  cursor: "pointer"
4035
4354
  }
4036
4355
  };
4037
- return /* @__PURE__ */ React19.createElement("div", { style: styles2.container, className: "ev-committee-table" }, /* @__PURE__ */ React19.createElement("h4", { style: styles2.heading }, /* @__PURE__ */ React19.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React19.createElement("path", { d: "M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2" }), /* @__PURE__ */ React19.createElement("circle", { cx: "9", cy: "7", r: "4" }), /* @__PURE__ */ React19.createElement("path", { d: "M23 21v-2a4 4 0 00-3-3.87M16 3.13a4 4 0 010 7.75" })), title), /* @__PURE__ */ React19.createElement("table", { style: styles2.table }, /* @__PURE__ */ React19.createElement("tbody", null, visible.map((committee, index) => /* @__PURE__ */ React19.createElement("tr", { key: index, style: styles2.row }, /* @__PURE__ */ React19.createElement("td", { style: { ...styles2.cell, ...styles2.nameCell } }, committee.url ? /* @__PURE__ */ React19.createElement(
4356
+ return /* @__PURE__ */ React20.createElement("div", { style: styles2.container, className: "ev-committee-table" }, /* @__PURE__ */ React20.createElement("h4", { style: styles2.heading }, /* @__PURE__ */ React20.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React20.createElement("path", { d: "M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2" }), /* @__PURE__ */ React20.createElement("circle", { cx: "9", cy: "7", r: "4" }), /* @__PURE__ */ React20.createElement("path", { d: "M23 21v-2a4 4 0 00-3-3.87M16 3.13a4 4 0 010 7.75" })), title), /* @__PURE__ */ React20.createElement("table", { style: styles2.table }, /* @__PURE__ */ React20.createElement("tbody", null, visible.map((committee, index) => /* @__PURE__ */ React20.createElement("tr", { key: index, style: styles2.row }, /* @__PURE__ */ React20.createElement("td", { style: { ...styles2.cell, ...styles2.nameCell } }, committee.url ? /* @__PURE__ */ React20.createElement(
4038
4357
  "a",
4039
4358
  {
4040
4359
  href: committee.url,
@@ -4049,7 +4368,7 @@ function CommitteeTable({
4049
4368
  }
4050
4369
  },
4051
4370
  committee.name
4052
- ) : committee.name), /* @__PURE__ */ React19.createElement("td", { style: { ...styles2.cell, ...styles2.positionCell } }, formatPosition(committee.position)))))), hasMore && /* @__PURE__ */ React19.createElement(
4371
+ ) : committee.name), /* @__PURE__ */ React20.createElement("td", { style: { ...styles2.cell, ...styles2.positionCell } }, formatPosition(committee.position)))))), hasMore && /* @__PURE__ */ React20.createElement(
4053
4372
  "button",
4054
4373
  {
4055
4374
  type: "button",
@@ -4057,7 +4376,7 @@ function CommitteeTable({
4057
4376
  onClick: () => setShowAll(!showAll)
4058
4377
  },
4059
4378
  showAll ? "Show less" : `Show all ${sorted.length} committees`,
4060
- /* @__PURE__ */ React19.createElement(
4379
+ /* @__PURE__ */ React20.createElement(
4061
4380
  "svg",
4062
4381
  {
4063
4382
  width: "14",
@@ -4070,16 +4389,16 @@ function CommitteeTable({
4070
4389
  strokeLinejoin: "round",
4071
4390
  style: { transform: showAll ? "rotate(180deg)" : "none", transition: "transform 0.2s" }
4072
4391
  },
4073
- /* @__PURE__ */ React19.createElement("polyline", { points: "6 9 12 15 18 9" })
4392
+ /* @__PURE__ */ React20.createElement("polyline", { points: "6 9 12 15 18 9" })
4074
4393
  )
4075
4394
  ));
4076
4395
  }
4077
4396
 
4078
4397
  // src/PoliticianProfile.jsx
4079
- import React22, { useState as useState12, useEffect as useEffect9 } from "react";
4398
+ import React23, { useState as useState13, useEffect as useEffect9 } from "react";
4080
4399
 
4081
4400
  // src/LegislativeInlineSummary.jsx
4082
- import React20 from "react";
4401
+ import React21 from "react";
4083
4402
  function normalizePosition(pos) {
4084
4403
  if (!pos) return "";
4085
4404
  return pos.replace(/_/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
@@ -4187,7 +4506,7 @@ function LegislativeInlineSummary({ summary, politicianId, onNavigateToRecord })
4187
4506
  fontSize: fontSizes.sm,
4188
4507
  fontWeight: fontWeights.medium
4189
4508
  };
4190
- return /* @__PURE__ */ React20.createElement("div", { style: card }, stats.length > 0 && /* @__PURE__ */ React20.createElement("div", { style: statsRow }, stats.map((s, i) => /* @__PURE__ */ React20.createElement("div", { key: i, style: statItem }, /* @__PURE__ */ React20.createElement("span", { style: statValue }, s.value), s.label && /* @__PURE__ */ React20.createElement("span", { style: statLabel }, s.label)))), mostRecentAction && /* @__PURE__ */ React20.createElement("div", { style: actionLine, title: mostRecentAction }, mostRecentAction), /* @__PURE__ */ React20.createElement("div", null), /* @__PURE__ */ React20.createElement("div", { style: footerRow }, /* @__PURE__ */ React20.createElement(
4509
+ return /* @__PURE__ */ React21.createElement("div", { style: card }, stats.length > 0 && /* @__PURE__ */ React21.createElement("div", { style: statsRow }, stats.map((s, i) => /* @__PURE__ */ React21.createElement("div", { key: i, style: statItem }, /* @__PURE__ */ React21.createElement("span", { style: statValue }, s.value), s.label && /* @__PURE__ */ React21.createElement("span", { style: statLabel }, s.label)))), mostRecentAction && /* @__PURE__ */ React21.createElement("div", { style: actionLine, title: mostRecentAction }, mostRecentAction), /* @__PURE__ */ React21.createElement("div", null), /* @__PURE__ */ React21.createElement("div", { style: footerRow }, /* @__PURE__ */ React21.createElement(
4191
4510
  "button",
4192
4511
  {
4193
4512
  onClick: () => {
@@ -4212,12 +4531,12 @@ function LegislativeInlineSummary({ summary, politicianId, onNavigateToRecord })
4212
4531
  }
4213
4532
  },
4214
4533
  "View Full Legislative Record",
4215
- /* @__PURE__ */ React20.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__ */ React20.createElement("path", { d: "M9 18l6-6-6-6" }))
4534
+ /* @__PURE__ */ React21.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__ */ React21.createElement("path", { d: "M9 18l6-6-6-6" }))
4216
4535
  )));
4217
4536
  }
4218
4537
 
4219
4538
  // src/JudicialScorecard.jsx
4220
- import React21 from "react";
4539
+ import React22 from "react";
4221
4540
 
4222
4541
  // src/judicialUtils.js
4223
4542
  function formatDate(dateStr) {
@@ -4335,7 +4654,7 @@ function JudicialScorecard({ judicialRecord, politicianId, onNavigateToRecord })
4335
4654
  onNavigateToRecord(`/politician/${politicianId}/judicial-record`);
4336
4655
  }
4337
4656
  };
4338
- return /* @__PURE__ */ React21.createElement("section", { style: sectionStyle }, /* @__PURE__ */ React21.createElement("h3", { style: headingStyle }, "Judicial Record"), evaluations.length > 0 && /* @__PURE__ */ React21.createElement("div", { style: { marginBottom: "16px" } }, evaluations.slice(0, 3).map((ev, i) => /* @__PURE__ */ React21.createElement("span", { key: i, style: evalChipStyle }, ev.rating, /* @__PURE__ */ React21.createElement("span", { style: { fontWeight: 400, color: "#4a90a4", fontSize: "11px" } }, "\u2014 ", ev.source)))), metrics.length > 0 && /* @__PURE__ */ React21.createElement("div", { style: cardGridStyle }, metrics.slice(0, 4).map((m, i) => /* @__PURE__ */ React21.createElement("div", { key: i, style: metricCardStyle }, /* @__PURE__ */ React21.createElement("div", { style: metricLabelStyle }, METRIC_LABELS[m.metric_type] || m.metric_type.replace(/_/g, " ")), /* @__PURE__ */ React21.createElement("div", { style: metricValueStyle }, formatMetricValue(m.metric_type, m.value)), m.context_label && /* @__PURE__ */ React21.createElement("div", { style: metricContextStyle }, m.context_label)))), disciplinary.length > 0 && /* @__PURE__ */ React21.createElement("div", { style: { marginBottom: "12px" } }, disciplinary.slice(0, 2).map((d, i) => /* @__PURE__ */ React21.createElement("div", { key: i, style: disciplinaryStyle }, /* @__PURE__ */ React21.createElement("strong", null, d.record_type), " \u2014 ", formatDate(d.record_date), d.description && /* @__PURE__ */ React21.createElement("div", { style: { marginTop: "4px" } }, d.description)))), /* @__PURE__ */ React21.createElement("a", { href: `/politician/${politicianId}/judicial-record`, onClick: handleNavigate, style: linkStyle }, "View Full Judicial Record \u2192"));
4657
+ return /* @__PURE__ */ React22.createElement("section", { style: sectionStyle }, /* @__PURE__ */ React22.createElement("h3", { style: headingStyle }, "Judicial Record"), evaluations.length > 0 && /* @__PURE__ */ React22.createElement("div", { style: { marginBottom: "16px" } }, evaluations.slice(0, 3).map((ev, i) => /* @__PURE__ */ React22.createElement("span", { key: i, style: evalChipStyle }, ev.rating, /* @__PURE__ */ React22.createElement("span", { style: { fontWeight: 400, color: "#4a90a4", fontSize: "11px" } }, "\u2014 ", ev.source)))), metrics.length > 0 && /* @__PURE__ */ React22.createElement("div", { style: cardGridStyle }, metrics.slice(0, 4).map((m, i) => /* @__PURE__ */ React22.createElement("div", { key: i, style: metricCardStyle }, /* @__PURE__ */ React22.createElement("div", { style: metricLabelStyle }, METRIC_LABELS[m.metric_type] || m.metric_type.replace(/_/g, " ")), /* @__PURE__ */ React22.createElement("div", { style: metricValueStyle }, formatMetricValue(m.metric_type, m.value)), m.context_label && /* @__PURE__ */ React22.createElement("div", { style: metricContextStyle }, m.context_label)))), disciplinary.length > 0 && /* @__PURE__ */ React22.createElement("div", { style: { marginBottom: "12px" } }, disciplinary.slice(0, 2).map((d, i) => /* @__PURE__ */ React22.createElement("div", { key: i, style: disciplinaryStyle }, /* @__PURE__ */ React22.createElement("strong", null, d.record_type), " \u2014 ", formatDate(d.record_date), d.description && /* @__PURE__ */ React22.createElement("div", { style: { marginTop: "4px" } }, d.description)))), /* @__PURE__ */ React22.createElement("a", { href: `/politician/${politicianId}/judicial-record`, onClick: handleNavigate, style: linkStyle }, "View Full Judicial Record \u2192"));
4339
4658
  }
4340
4659
 
4341
4660
  // src/PoliticianProfile.jsx
@@ -4511,13 +4830,13 @@ function formatAddress(addr) {
4511
4830
  if (cityStateZip) lines.push(cityStateZip);
4512
4831
  return lines;
4513
4832
  }
4514
- var CalendarIcon = ({ size = 16 }) => /* @__PURE__ */ React22.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React22.createElement("rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", ry: "2" }), /* @__PURE__ */ React22.createElement("line", { x1: "16", y1: "2", x2: "16", y2: "6" }), /* @__PURE__ */ React22.createElement("line", { x1: "8", y1: "2", x2: "8", y2: "6" }), /* @__PURE__ */ React22.createElement("line", { x1: "3", y1: "10", x2: "21", y2: "10" }));
4515
- var ClockIcon = ({ size = 16 }) => /* @__PURE__ */ React22.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React22.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React22.createElement("polyline", { points: "12 6 12 12 16 14" }));
4516
- var MapPinIcon = ({ size = 16 }) => /* @__PURE__ */ React22.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React22.createElement("path", { d: "M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z" }), /* @__PURE__ */ React22.createElement("circle", { cx: "12", cy: "10", r: "3" }));
4517
- var PhoneIcon = ({ size = 16 }) => /* @__PURE__ */ React22.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React22.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" }));
4518
- var MailIcon = ({ size = 16 }) => /* @__PURE__ */ React22.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React22.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__ */ React22.createElement("path", { d: "M22 6L12 13L2 6" }));
4519
- var GlobeIcon = ({ size = 16 }) => /* @__PURE__ */ React22.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React22.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React22.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" }));
4520
- var ExternalLinkIcon = ({ size = 16 }) => /* @__PURE__ */ React22.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React22.createElement("path", { d: "M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6" }), /* @__PURE__ */ React22.createElement("polyline", { points: "15 3 21 3 21 9" }), /* @__PURE__ */ React22.createElement("line", { x1: "10", y1: "14", x2: "21", y2: "3" }));
4833
+ var CalendarIcon = ({ size = 16 }) => /* @__PURE__ */ React23.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React23.createElement("rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", ry: "2" }), /* @__PURE__ */ React23.createElement("line", { x1: "16", y1: "2", x2: "16", y2: "6" }), /* @__PURE__ */ React23.createElement("line", { x1: "8", y1: "2", x2: "8", y2: "6" }), /* @__PURE__ */ React23.createElement("line", { x1: "3", y1: "10", x2: "21", y2: "10" }));
4834
+ var ClockIcon = ({ size = 16 }) => /* @__PURE__ */ React23.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React23.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React23.createElement("polyline", { points: "12 6 12 12 16 14" }));
4835
+ var MapPinIcon = ({ size = 16 }) => /* @__PURE__ */ React23.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React23.createElement("path", { d: "M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z" }), /* @__PURE__ */ React23.createElement("circle", { cx: "12", cy: "10", r: "3" }));
4836
+ var PhoneIcon = ({ size = 16 }) => /* @__PURE__ */ React23.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React23.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" }));
4837
+ var MailIcon = ({ size = 16 }) => /* @__PURE__ */ React23.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React23.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__ */ React23.createElement("path", { d: "M22 6L12 13L2 6" }));
4838
+ var GlobeIcon = ({ size = 16 }) => /* @__PURE__ */ React23.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React23.createElement("circle", { cx: "12", cy: "12", r: "10" }), /* @__PURE__ */ React23.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" }));
4839
+ var ExternalLinkIcon = ({ size = 16 }) => /* @__PURE__ */ React23.createElement("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React23.createElement("path", { d: "M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6" }), /* @__PURE__ */ React23.createElement("polyline", { points: "15 3 21 3 21 9" }), /* @__PURE__ */ React23.createElement("line", { x1: "10", y1: "14", x2: "21", y2: "3" }));
4521
4840
  function PoliticianProfile({
4522
4841
  politician = {},
4523
4842
  onBack,
@@ -4545,7 +4864,7 @@ function PoliticianProfile({
4545
4864
  return pol.photo_origin_url;
4546
4865
  })();
4547
4866
  const initials = [pol.first_name, pol.last_name].filter(Boolean).map((n) => n[0]).join("");
4548
- const [imgError, setImgError] = useState12(false);
4867
+ const [imgError, setImgError] = useState13(false);
4549
4868
  useEffect9(() => {
4550
4869
  setImgError(false);
4551
4870
  }, [profileImageUrl]);
@@ -4846,7 +5165,7 @@ function PoliticianProfile({
4846
5165
  borderRadius: borderRadius.full
4847
5166
  }
4848
5167
  };
4849
- return /* @__PURE__ */ React22.createElement("div", { style: styles2.container, className: "ev-politician-profile" }, onBack && /* @__PURE__ */ React22.createElement(
5168
+ return /* @__PURE__ */ React23.createElement("div", { style: styles2.container, className: "ev-politician-profile" }, onBack && /* @__PURE__ */ React23.createElement(
4850
5169
  "button",
4851
5170
  {
4852
5171
  type: "button",
@@ -4859,9 +5178,9 @@ function PoliticianProfile({
4859
5178
  e.currentTarget.style.textDecoration = "none";
4860
5179
  }
4861
5180
  },
4862
- /* @__PURE__ */ React22.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React22.createElement("path", { d: "M15 19l-7-7 7-7" })),
5181
+ /* @__PURE__ */ React23.createElement("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React23.createElement("path", { d: "M15 19l-7-7 7-7" })),
4863
5182
  label
4864
- ), /* @__PURE__ */ React22.createElement("div", { style: styles2.card }, /* @__PURE__ */ React22.createElement("div", { style: styles2.heroRow }, /* @__PURE__ */ React22.createElement("div", { style: styles2.photoWrap }, profileImageUrl && !imgError ? /* @__PURE__ */ React22.createElement(
5183
+ ), /* @__PURE__ */ React23.createElement("div", { style: styles2.card }, /* @__PURE__ */ React23.createElement("div", { style: styles2.heroRow }, /* @__PURE__ */ React23.createElement("div", { style: styles2.photoWrap }, profileImageUrl && !imgError ? /* @__PURE__ */ React23.createElement(
4865
5184
  "img",
4866
5185
  {
4867
5186
  src: profileImageUrl,
@@ -4869,7 +5188,7 @@ function PoliticianProfile({
4869
5188
  style: styles2.photo,
4870
5189
  onError: () => setImgError(true)
4871
5190
  }
4872
- ) : /* @__PURE__ */ React22.createElement("div", { style: styles2.placeholder }, initials || "?")), /* @__PURE__ */ React22.createElement("div", { style: styles2.infoCol }, styles2.tierBadge && /* @__PURE__ */ React22.createElement("div", { style: styles2.tierBadge }, tier), /* @__PURE__ */ React22.createElement("h1", { style: styles2.name }, displayName), banner, /* @__PURE__ */ React22.createElement("p", { style: styles2.roleLine }, roleLine), pol.office_description && /* @__PURE__ */ React22.createElement("p", { style: styles2.officeDesc }, pol.office_description), pol.bio_text && /* @__PURE__ */ React22.createElement("p", { style: styles2.bioText }, pol.bio_text), (termLine || pol.total_years_in_office > 0) && /* @__PURE__ */ React22.createElement("div", { style: styles2.metaRow }, termLine && /* @__PURE__ */ React22.createElement("span", { style: styles2.metaItem }, /* @__PURE__ */ React22.createElement(CalendarIcon, { size: 14 }), termLine), pol.total_years_in_office > 0 && /* @__PURE__ */ React22.createElement("span", { style: styles2.metaItem }, /* @__PURE__ */ React22.createElement(ClockIcon, { size: 14 }), pol.total_years_in_office, " ", pol.total_years_in_office === 1 ? "year" : "years", " in office")), pol.web_form_url && /* @__PURE__ */ React22.createElement(
5191
+ ) : /* @__PURE__ */ React23.createElement("div", { style: styles2.placeholder }, initials || "?")), /* @__PURE__ */ React23.createElement("div", { style: styles2.infoCol }, styles2.tierBadge && /* @__PURE__ */ React23.createElement("div", { style: styles2.tierBadge }, tier), /* @__PURE__ */ React23.createElement("h1", { style: styles2.name }, displayName), banner, /* @__PURE__ */ React23.createElement("p", { style: styles2.roleLine }, roleLine), pol.office_description && /* @__PURE__ */ React23.createElement("p", { style: styles2.officeDesc }, pol.office_description), pol.bio_text && /* @__PURE__ */ React23.createElement("p", { style: styles2.bioText }, pol.bio_text), (termLine || pol.total_years_in_office > 0) && /* @__PURE__ */ React23.createElement("div", { style: styles2.metaRow }, termLine && /* @__PURE__ */ React23.createElement("span", { style: styles2.metaItem }, /* @__PURE__ */ React23.createElement(CalendarIcon, { size: 14 }), termLine), pol.total_years_in_office > 0 && /* @__PURE__ */ React23.createElement("span", { style: styles2.metaItem }, /* @__PURE__ */ React23.createElement(ClockIcon, { size: 14 }), pol.total_years_in_office, " ", pol.total_years_in_office === 1 ? "year" : "years", " in office")), pol.web_form_url && /* @__PURE__ */ React23.createElement(
4873
5192
  "a",
4874
5193
  {
4875
5194
  href: pol.web_form_url,
@@ -4883,9 +5202,9 @@ function PoliticianProfile({
4883
5202
  e.currentTarget.style.background = colors.evTeal;
4884
5203
  }
4885
5204
  },
4886
- /* @__PURE__ */ React22.createElement(ExternalLinkIcon, { size: 14 }),
5205
+ /* @__PURE__ */ React23.createElement(ExternalLinkIcon, { size: 14 }),
4887
5206
  "Submit a Message"
4888
- ))), hasContactInfo && /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement("div", { style: divider }), /* @__PURE__ */ React22.createElement("div", { style: sectionHeading }, /* @__PURE__ */ React22.createElement(MailIcon, { size: 20 }), "Contact Information"), /* @__PURE__ */ React22.createElement("div", { style: styles2.contactGrid }, hasAddresses && /* @__PURE__ */ React22.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ React22.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ React22.createElement(MapPinIcon, { size: 12 }), "Addresses"), addresses.map((addr, i) => /* @__PURE__ */ React22.createElement("div", { key: `addr-${i}` }, /* @__PURE__ */ React22.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, addr.type), /* @__PURE__ */ React22.createElement("p", { style: styles2.contactValue }, addr.lines.map((line, j) => /* @__PURE__ */ React22.createElement(React22.Fragment, { key: j }, line, j < addr.lines.length - 1 && /* @__PURE__ */ React22.createElement("br", null))))))), hasPhones && /* @__PURE__ */ React22.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ React22.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ React22.createElement(PhoneIcon, { size: 12 }), "Phone"), Object.entries(phonesByType).map(([type, phones], i) => /* @__PURE__ */ React22.createElement("div", { key: `phone-${type}` }, /* @__PURE__ */ React22.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, type), phones.map((phone, j) => /* @__PURE__ */ React22.createElement("p", { key: j, style: styles2.contactValue }, /* @__PURE__ */ React22.createElement(
5207
+ ))), hasContactInfo && /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement("div", { style: divider }), /* @__PURE__ */ React23.createElement("div", { style: sectionHeading }, /* @__PURE__ */ React23.createElement(MailIcon, { size: 20 }), "Contact Information"), /* @__PURE__ */ React23.createElement("div", { style: styles2.contactGrid }, hasAddresses && /* @__PURE__ */ React23.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ React23.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ React23.createElement(MapPinIcon, { size: 12 }), "Addresses"), addresses.map((addr, i) => /* @__PURE__ */ React23.createElement("div", { key: `addr-${i}` }, /* @__PURE__ */ React23.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, addr.type), /* @__PURE__ */ React23.createElement("p", { style: styles2.contactValue }, addr.lines.map((line, j) => /* @__PURE__ */ React23.createElement(React23.Fragment, { key: j }, line, j < addr.lines.length - 1 && /* @__PURE__ */ React23.createElement("br", null))))))), hasPhones && /* @__PURE__ */ React23.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ React23.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ React23.createElement(PhoneIcon, { size: 12 }), "Phone"), Object.entries(phonesByType).map(([type, phones], i) => /* @__PURE__ */ React23.createElement("div", { key: `phone-${type}` }, /* @__PURE__ */ React23.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, type), phones.map((phone, j) => /* @__PURE__ */ React23.createElement("p", { key: j, style: styles2.contactValue }, /* @__PURE__ */ React23.createElement(
4889
5208
  "a",
4890
5209
  {
4891
5210
  href: `tel:${phone}`,
@@ -4898,7 +5217,7 @@ function PoliticianProfile({
4898
5217
  }
4899
5218
  },
4900
5219
  phone
4901
- )))))), hasEmails && /* @__PURE__ */ React22.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ React22.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ React22.createElement(MailIcon, { size: 12 }), "Email"), Object.entries(emailsByType).filter(([, emails]) => emails.some((e) => e && e.trim())).map(([type, emails], i) => /* @__PURE__ */ React22.createElement("div", { key: `email-${type}` }, /* @__PURE__ */ React22.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, type), emails.filter((e) => e && e.trim()).map((email, j) => /* @__PURE__ */ React22.createElement("p", { key: j, style: styles2.contactValue }, /* @__PURE__ */ React22.createElement(
5220
+ )))))), hasEmails && /* @__PURE__ */ React23.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ React23.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ React23.createElement(MailIcon, { size: 12 }), "Email"), Object.entries(emailsByType).filter(([, emails]) => emails.some((e) => e && e.trim())).map(([type, emails], i) => /* @__PURE__ */ React23.createElement("div", { key: `email-${type}` }, /* @__PURE__ */ React23.createElement("p", { style: { ...styles2.contactSubLabel, ...i === 0 ? { marginTop: 0 } : { marginTop: spacing[2] } } }, type), emails.filter((e) => e && e.trim()).map((email, j) => /* @__PURE__ */ React23.createElement("p", { key: j, style: styles2.contactValue }, /* @__PURE__ */ React23.createElement(
4902
5221
  "a",
4903
5222
  {
4904
5223
  href: `mailto:${email}`,
@@ -4911,7 +5230,7 @@ function PoliticianProfile({
4911
5230
  }
4912
5231
  },
4913
5232
  email
4914
- )))))), hasWebsitesCol && /* @__PURE__ */ React22.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ React22.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ React22.createElement(GlobeIcon, { size: 12 }), "Websites"), allWebsites.map((url, i) => /* @__PURE__ */ React22.createElement("p", { key: i, style: styles2.contactValue }, /* @__PURE__ */ React22.createElement(
5233
+ )))))), hasWebsitesCol && /* @__PURE__ */ React23.createElement("div", { style: styles2.contactGroup }, /* @__PURE__ */ React23.createElement("p", { style: styles2.contactLabel }, /* @__PURE__ */ React23.createElement(GlobeIcon, { size: 12 }), "Websites"), allWebsites.map((url, i) => /* @__PURE__ */ React23.createElement("p", { key: i, style: styles2.contactValue }, /* @__PURE__ */ React23.createElement(
4915
5234
  "a",
4916
5235
  {
4917
5236
  href: url,
@@ -4926,7 +5245,7 @@ function PoliticianProfile({
4926
5245
  }
4927
5246
  },
4928
5247
  extractDomain(url)
4929
- ))), (hasSocial || socialWebsiteUrls.length > 0) && /* @__PURE__ */ React22.createElement(
5248
+ ))), (hasSocial || socialWebsiteUrls.length > 0) && /* @__PURE__ */ React23.createElement(
4930
5249
  SocialLinks,
4931
5250
  {
4932
5251
  twitter,
@@ -4938,14 +5257,14 @@ function PoliticianProfile({
4938
5257
  darkMode,
4939
5258
  style: { marginTop: allWebsites.length > 0 ? "8px" : 0 }
4940
5259
  }
4941
- )))), committees.length > 0 && /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement("div", { style: divider }), /* @__PURE__ */ React22.createElement(CommitteeTable, { committees })), pol.is_judicial ? /* @__PURE__ */ React22.createElement(
5260
+ )))), committees.length > 0 && /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement("div", { style: divider }), /* @__PURE__ */ React23.createElement(CommitteeTable, { committees })), pol.is_judicial ? /* @__PURE__ */ React23.createElement(
4942
5261
  JudicialScorecard,
4943
5262
  {
4944
5263
  judicialRecord,
4945
5264
  politicianId,
4946
5265
  onNavigateToRecord
4947
5266
  }
4948
- ) : /* @__PURE__ */ React22.createElement(
5267
+ ) : /* @__PURE__ */ React23.createElement(
4949
5268
  LegislativeInlineSummary,
4950
5269
  {
4951
5270
  summary: legislativeSummary,
@@ -4956,7 +5275,7 @@ function PoliticianProfile({
4956
5275
  }
4957
5276
 
4958
5277
  // src/LegislativeRecord.jsx
4959
- import React23, { useState as useState13 } from "react";
5278
+ import React24, { useState as useState14 } from "react";
4960
5279
  var DEFAULT_LIMIT = 25;
4961
5280
  function normalizeText(str) {
4962
5281
  if (!str) return "";
@@ -5036,7 +5355,7 @@ function getPositionBadge(position) {
5036
5355
  return { bg: colors.borderLight, text: colors.textSecondary };
5037
5356
  }
5038
5357
  function Badge({ label, bg, text }) {
5039
- return /* @__PURE__ */ React23.createElement("span", { style: {
5358
+ return /* @__PURE__ */ React24.createElement("span", { style: {
5040
5359
  display: "inline-block",
5041
5360
  background: bg,
5042
5361
  color: text,
@@ -5049,18 +5368,18 @@ function Badge({ label, bg, text }) {
5049
5368
  } }, label);
5050
5369
  }
5051
5370
  function SectionHeader({ title, yearFilter, years, onYearChange }) {
5052
- return /* @__PURE__ */ React23.createElement("div", { style: {
5371
+ return /* @__PURE__ */ React24.createElement("div", { style: {
5053
5372
  display: "flex",
5054
5373
  alignItems: "center",
5055
5374
  justifyContent: "space-between",
5056
5375
  marginBottom: spacing[4]
5057
- } }, /* @__PURE__ */ React23.createElement("h2", { style: {
5376
+ } }, /* @__PURE__ */ React24.createElement("h2", { style: {
5058
5377
  fontFamily: fonts.primary,
5059
5378
  fontSize: fontSizes.xl,
5060
5379
  fontWeight: fontWeights.bold,
5061
5380
  color: colors.evTeal,
5062
5381
  margin: 0
5063
- } }, title), years && years.length > 0 && /* @__PURE__ */ React23.createElement(
5382
+ } }, title), years && years.length > 0 && /* @__PURE__ */ React24.createElement(
5064
5383
  "select",
5065
5384
  {
5066
5385
  value: yearFilter,
@@ -5076,13 +5395,13 @@ function SectionHeader({ title, yearFilter, years, onYearChange }) {
5076
5395
  cursor: "pointer"
5077
5396
  }
5078
5397
  },
5079
- /* @__PURE__ */ React23.createElement("option", { value: "All" }, "All years"),
5080
- years.map((y) => /* @__PURE__ */ React23.createElement("option", { key: y, value: y }, y))
5398
+ /* @__PURE__ */ React24.createElement("option", { value: "All" }, "All years"),
5399
+ years.map((y) => /* @__PURE__ */ React24.createElement("option", { key: y, value: y }, y))
5081
5400
  ));
5082
5401
  }
5083
5402
  function ShowAllLink({ totalCount, visibleCount, onClick }) {
5084
5403
  if (totalCount <= visibleCount) return null;
5085
- return /* @__PURE__ */ React23.createElement("div", { style: { textAlign: "center", marginTop: spacing[3] } }, /* @__PURE__ */ React23.createElement(
5404
+ return /* @__PURE__ */ React24.createElement("div", { style: { textAlign: "center", marginTop: spacing[3] } }, /* @__PURE__ */ React24.createElement(
5086
5405
  "button",
5087
5406
  {
5088
5407
  type: "button",
@@ -5110,7 +5429,7 @@ function ShowAllLink({ totalCount, visibleCount, onClick }) {
5110
5429
  ));
5111
5430
  }
5112
5431
  function EmptyState({ message }) {
5113
- return /* @__PURE__ */ React23.createElement("p", { style: {
5432
+ return /* @__PURE__ */ React24.createElement("p", { style: {
5114
5433
  fontFamily: fonts.primary,
5115
5434
  fontSize: fontSizes.sm,
5116
5435
  color: colors.textMuted,
@@ -5120,24 +5439,24 @@ function EmptyState({ message }) {
5120
5439
  } }, message);
5121
5440
  }
5122
5441
  function Spinner() {
5123
- return /* @__PURE__ */ React23.createElement("div", { style: {
5442
+ return /* @__PURE__ */ React24.createElement("div", { style: {
5124
5443
  display: "flex",
5125
5444
  justifyContent: "center",
5126
5445
  alignItems: "center",
5127
5446
  padding: spacing[10]
5128
- } }, /* @__PURE__ */ React23.createElement("div", { style: {
5447
+ } }, /* @__PURE__ */ React24.createElement("div", { style: {
5129
5448
  width: "40px",
5130
5449
  height: "40px",
5131
5450
  borderRadius: borderRadius.full,
5132
5451
  border: `3px solid ${colors.borderLight}`,
5133
5452
  borderTopColor: colors.evTeal,
5134
5453
  animation: "ev-spin 0.8s linear infinite"
5135
- } }), /* @__PURE__ */ React23.createElement("style", null, `@keyframes ev-spin { to { transform: rotate(360deg); } }`));
5454
+ } }), /* @__PURE__ */ React24.createElement("style", null, `@keyframes ev-spin { to { transform: rotate(360deg); } }`));
5136
5455
  }
5137
5456
  function CommitteesSection({ committees, leadership }) {
5138
- const [showAll, setShowAll] = useState13(false);
5457
+ const [showAll, setShowAll] = useState14(false);
5139
5458
  const visible = showAll ? committees : committees.slice(0, DEFAULT_LIMIT);
5140
- return /* @__PURE__ */ React23.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ React23.createElement(SectionHeader, { title: "Committees & Leadership" }), leadership && leadership.length > 0 && /* @__PURE__ */ React23.createElement("div", { style: { display: "flex", flexWrap: "wrap", gap: spacing[2], marginBottom: spacing[4] } }, leadership.map((role, i) => /* @__PURE__ */ React23.createElement("div", { key: i, style: {
5459
+ return /* @__PURE__ */ React24.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ React24.createElement(SectionHeader, { title: "Committees & Leadership" }), leadership && leadership.length > 0 && /* @__PURE__ */ React24.createElement("div", { style: { display: "flex", flexWrap: "wrap", gap: spacing[2], marginBottom: spacing[4] } }, leadership.map((role, i) => /* @__PURE__ */ React24.createElement("div", { key: i, style: {
5141
5460
  display: "inline-flex",
5142
5461
  alignItems: "center",
5143
5462
  gap: spacing[1],
@@ -5148,23 +5467,23 @@ function CommitteesSection({ committees, leadership }) {
5148
5467
  fontFamily: fonts.primary,
5149
5468
  fontSize: fontSizes.sm,
5150
5469
  fontWeight: fontWeights.semibold
5151
- } }, role.title, role.chamber && /* @__PURE__ */ React23.createElement("span", { style: { fontWeight: fontWeights.regular, opacity: 0.85 } }, "(", role.chamber, ")")))), committees.length === 0 ? /* @__PURE__ */ React23.createElement(EmptyState, { message: "Committee information is not available for this office." }) : /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement("div", null, visible.map((c, i) => {
5470
+ } }, role.title, role.chamber && /* @__PURE__ */ React24.createElement("span", { style: { fontWeight: fontWeights.regular, opacity: 0.85 } }, "(", role.chamber, ")")))), committees.length === 0 ? /* @__PURE__ */ React24.createElement(EmptyState, { message: "Committee information is not available for this office." }) : /* @__PURE__ */ React24.createElement(React24.Fragment, null, /* @__PURE__ */ React24.createElement("div", null, visible.map((c, i) => {
5152
5471
  const badge = getRoleBadge(c.role);
5153
- return /* @__PURE__ */ React23.createElement("div", { key: i, style: {
5472
+ return /* @__PURE__ */ React24.createElement("div", { key: i, style: {
5154
5473
  display: "flex",
5155
5474
  alignItems: "center",
5156
5475
  justifyContent: "space-between",
5157
5476
  padding: `${spacing[3]} 0`,
5158
5477
  borderBottom: `1px solid ${colors.borderLight}`,
5159
5478
  gap: spacing[3]
5160
- } }, /* @__PURE__ */ React23.createElement("span", { style: {
5479
+ } }, /* @__PURE__ */ React24.createElement("span", { style: {
5161
5480
  fontFamily: fonts.primary,
5162
5481
  fontSize: fontSizes.sm,
5163
5482
  color: colors.textSecondary,
5164
5483
  flex: 1,
5165
5484
  minWidth: 0
5166
- } }, c.committee_name, c.parent_name && /* @__PURE__ */ React23.createElement("span", { style: { color: colors.textMuted, marginLeft: spacing[1] } }, "(", c.parent_name, ")")), /* @__PURE__ */ React23.createElement(Badge, { label: badge.label, bg: badge.bg, text: badge.text }));
5167
- })), !showAll && /* @__PURE__ */ React23.createElement(
5485
+ } }, c.committee_name, c.parent_name && /* @__PURE__ */ React24.createElement("span", { style: { color: colors.textMuted, marginLeft: spacing[1] } }, "(", c.parent_name, ")")), /* @__PURE__ */ React24.createElement(Badge, { label: badge.label, bg: badge.bg, text: badge.text }));
5486
+ })), !showAll && /* @__PURE__ */ React24.createElement(
5168
5487
  ShowAllLink,
5169
5488
  {
5170
5489
  totalCount: committees.length,
@@ -5175,15 +5494,15 @@ function CommitteesSection({ committees, leadership }) {
5175
5494
  }
5176
5495
  function LegislationSection({ bills, isMobile }) {
5177
5496
  const years = getYears(bills, "introduced_at");
5178
- const [yearFilter, setYearFilter] = useState13("All");
5179
- const [showAll, setShowAll] = useState13(false);
5497
+ const [yearFilter, setYearFilter] = useState14("All");
5498
+ const [showAll, setShowAll] = useState14(false);
5180
5499
  const handleYearChange = (y) => {
5181
5500
  setYearFilter(y);
5182
5501
  setShowAll(false);
5183
5502
  };
5184
5503
  const filtered = yearFilter === "All" ? bills : bills.filter((b) => extractYear(b.introduced_at) === yearFilter);
5185
5504
  const visible = showAll ? filtered : filtered.slice(0, DEFAULT_LIMIT);
5186
- return /* @__PURE__ */ React23.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ React23.createElement(
5505
+ return /* @__PURE__ */ React24.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ React24.createElement(
5187
5506
  SectionHeader,
5188
5507
  {
5189
5508
  title: "Sponsored Legislation",
@@ -5191,42 +5510,42 @@ function LegislationSection({ bills, isMobile }) {
5191
5510
  years,
5192
5511
  onYearChange: handleYearChange
5193
5512
  }
5194
- ), bills.length === 0 ? /* @__PURE__ */ React23.createElement(EmptyState, { message: "Sponsored legislation data is not available for this office." }) : /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement("div", null, visible.map((bill, i) => {
5513
+ ), bills.length === 0 ? /* @__PURE__ */ React24.createElement(EmptyState, { message: "Sponsored legislation data is not available for this office." }) : /* @__PURE__ */ React24.createElement(React24.Fragment, null, /* @__PURE__ */ React24.createElement("div", null, visible.map((bill, i) => {
5195
5514
  const statusBadge = getStatusBadge(bill.status_label);
5196
- return /* @__PURE__ */ React23.createElement("div", { key: i, style: {
5515
+ return /* @__PURE__ */ React24.createElement("div", { key: i, style: {
5197
5516
  display: "flex",
5198
5517
  flexDirection: isMobile ? "column" : "row",
5199
5518
  alignItems: isMobile ? "flex-start" : "center",
5200
5519
  gap: isMobile ? spacing[1] : spacing[3],
5201
5520
  padding: `${spacing[3]} 0`,
5202
5521
  borderBottom: `1px solid ${colors.borderLight}`
5203
- } }, /* @__PURE__ */ React23.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ React23.createElement("span", { style: {
5522
+ } }, /* @__PURE__ */ React24.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ React24.createElement("span", { style: {
5204
5523
  fontFamily: fonts.primary,
5205
5524
  fontSize: fontSizes.xs,
5206
5525
  fontWeight: fontWeights.bold,
5207
5526
  color: colors.textSecondary,
5208
5527
  marginRight: spacing[2]
5209
- } }, bill.number), /* @__PURE__ */ React23.createElement("span", { style: {
5528
+ } }, bill.number), /* @__PURE__ */ React24.createElement("span", { style: {
5210
5529
  fontFamily: fonts.primary,
5211
5530
  fontSize: fontSizes.sm,
5212
5531
  color: colors.textSecondary
5213
- } }, bill.title)), /* @__PURE__ */ React23.createElement("div", { style: {
5532
+ } }, bill.title)), /* @__PURE__ */ React24.createElement("div", { style: {
5214
5533
  display: "flex",
5215
5534
  alignItems: "center",
5216
5535
  gap: spacing[2],
5217
5536
  flexShrink: 0,
5218
5537
  flexWrap: "wrap"
5219
- } }, /* @__PURE__ */ React23.createElement(Badge, { label: bill.status_label || "Unknown", bg: statusBadge.bg, text: statusBadge.text }), bill.introduced_at && /* @__PURE__ */ React23.createElement("span", { style: {
5538
+ } }, /* @__PURE__ */ React24.createElement(Badge, { label: bill.status_label || "Unknown", bg: statusBadge.bg, text: statusBadge.text }), bill.introduced_at && /* @__PURE__ */ React24.createElement("span", { style: {
5220
5539
  fontFamily: fonts.primary,
5221
5540
  fontSize: fontSizes.xs,
5222
5541
  color: colors.textMuted
5223
- } }, formatDate2(bill.introduced_at)), /* @__PURE__ */ React23.createElement("span", { style: {
5542
+ } }, formatDate2(bill.introduced_at)), /* @__PURE__ */ React24.createElement("span", { style: {
5224
5543
  fontFamily: fonts.primary,
5225
5544
  fontSize: fontSizes.xs,
5226
5545
  color: colors.textMuted,
5227
5546
  fontStyle: "italic"
5228
5547
  } }, bill.is_sponsor ? "Sponsored" : "Cosponsored")));
5229
- })), !showAll && /* @__PURE__ */ React23.createElement(
5548
+ })), !showAll && /* @__PURE__ */ React24.createElement(
5230
5549
  ShowAllLink,
5231
5550
  {
5232
5551
  totalCount: filtered.length,
@@ -5237,15 +5556,15 @@ function LegislationSection({ bills, isMobile }) {
5237
5556
  }
5238
5557
  function VotingSection({ votes, isMobile }) {
5239
5558
  const years = getYears(votes, "vote_date");
5240
- const [yearFilter, setYearFilter] = useState13("All");
5241
- const [showAll, setShowAll] = useState13(false);
5559
+ const [yearFilter, setYearFilter] = useState14("All");
5560
+ const [showAll, setShowAll] = useState14(false);
5242
5561
  const handleYearChange = (y) => {
5243
5562
  setYearFilter(y);
5244
5563
  setShowAll(false);
5245
5564
  };
5246
5565
  const filtered = yearFilter === "All" ? votes : votes.filter((v) => extractYear(v.vote_date) === yearFilter);
5247
5566
  const visible = showAll ? filtered : filtered.slice(0, DEFAULT_LIMIT);
5248
- return /* @__PURE__ */ React23.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ React23.createElement(
5567
+ return /* @__PURE__ */ React24.createElement("div", { style: { marginBottom: spacing[8] } }, /* @__PURE__ */ React24.createElement(
5249
5568
  SectionHeader,
5250
5569
  {
5251
5570
  title: "Voting Record",
@@ -5253,38 +5572,38 @@ function VotingSection({ votes, isMobile }) {
5253
5572
  years,
5254
5573
  onYearChange: handleYearChange
5255
5574
  }
5256
- ), votes.length === 0 ? /* @__PURE__ */ React23.createElement(EmptyState, { message: "Voting records are not available for this office." }) : /* @__PURE__ */ React23.createElement(React23.Fragment, null, /* @__PURE__ */ React23.createElement("div", null, visible.map((vote, i) => {
5575
+ ), votes.length === 0 ? /* @__PURE__ */ React24.createElement(EmptyState, { message: "Voting records are not available for this office." }) : /* @__PURE__ */ React24.createElement(React24.Fragment, null, /* @__PURE__ */ React24.createElement("div", null, visible.map((vote, i) => {
5257
5576
  const positionBadge = getPositionBadge(vote.position);
5258
5577
  const normPosition = normalizeText(vote.position);
5259
5578
  const topic = vote.bill_title || vote.vote_question;
5260
5579
  const sourceUrl = vote.bill_url;
5261
- return /* @__PURE__ */ React23.createElement("div", { key: i, style: {
5580
+ return /* @__PURE__ */ React24.createElement("div", { key: i, style: {
5262
5581
  display: "flex",
5263
5582
  flexDirection: isMobile ? "column" : "row",
5264
5583
  alignItems: isMobile ? "flex-start" : "center",
5265
5584
  gap: isMobile ? spacing[1] : spacing[3],
5266
5585
  padding: `${spacing[3]} 0`,
5267
5586
  borderBottom: `1px solid ${colors.borderLight}`
5268
- } }, /* @__PURE__ */ React23.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ React23.createElement("span", { style: {
5587
+ } }, /* @__PURE__ */ React24.createElement("div", { style: { flex: 1, minWidth: 0 } }, /* @__PURE__ */ React24.createElement("span", { style: {
5269
5588
  fontFamily: fonts.primary,
5270
5589
  fontSize: fontSizes.sm,
5271
5590
  color: colors.textSecondary
5272
- } }, topic)), /* @__PURE__ */ React23.createElement("div", { style: {
5591
+ } }, topic)), /* @__PURE__ */ React24.createElement("div", { style: {
5273
5592
  display: "flex",
5274
5593
  alignItems: "center",
5275
5594
  gap: spacing[2],
5276
5595
  flexShrink: 0,
5277
5596
  flexWrap: "wrap"
5278
- } }, vote.vote_date && /* @__PURE__ */ React23.createElement("span", { style: {
5597
+ } }, vote.vote_date && /* @__PURE__ */ React24.createElement("span", { style: {
5279
5598
  fontFamily: fonts.primary,
5280
5599
  fontSize: fontSizes.xs,
5281
5600
  color: colors.textMuted
5282
- } }, formatDate2(vote.vote_date)), /* @__PURE__ */ React23.createElement(Badge, { label: normPosition || "Unknown", bg: positionBadge.bg, text: positionBadge.text }), vote.result && /* @__PURE__ */ React23.createElement("span", { style: {
5601
+ } }, formatDate2(vote.vote_date)), /* @__PURE__ */ React24.createElement(Badge, { label: normPosition || "Unknown", bg: positionBadge.bg, text: positionBadge.text }), vote.result && /* @__PURE__ */ React24.createElement("span", { style: {
5283
5602
  fontFamily: fonts.primary,
5284
5603
  fontSize: fontSizes.xs,
5285
5604
  color: vote.result === "Passed" ? colors.success : colors.textMuted,
5286
5605
  fontWeight: fontWeights.medium
5287
- } }, vote.result), sourceUrl && /* @__PURE__ */ React23.createElement(
5606
+ } }, vote.result), sourceUrl && /* @__PURE__ */ React24.createElement(
5288
5607
  "a",
5289
5608
  {
5290
5609
  href: sourceUrl,
@@ -5305,7 +5624,7 @@ function VotingSection({ votes, isMobile }) {
5305
5624
  },
5306
5625
  "Source"
5307
5626
  )));
5308
- })), !showAll && /* @__PURE__ */ React23.createElement(
5627
+ })), !showAll && /* @__PURE__ */ React24.createElement(
5309
5628
  ShowAllLink,
5310
5629
  {
5311
5630
  totalCount: filtered.length,
@@ -5324,20 +5643,20 @@ function LegislativeRecord({
5324
5643
  }) {
5325
5644
  const isMobile = useMediaQuery("(max-width: 768px)");
5326
5645
  if (loading) {
5327
- return /* @__PURE__ */ React23.createElement(Spinner, null);
5646
+ return /* @__PURE__ */ React24.createElement(Spinner, null);
5328
5647
  }
5329
- return /* @__PURE__ */ React23.createElement("div", { style: { fontFamily: fonts.primary } }, politicianName && /* @__PURE__ */ React23.createElement("h1", { style: {
5648
+ return /* @__PURE__ */ React24.createElement("div", { style: { fontFamily: fonts.primary } }, politicianName && /* @__PURE__ */ React24.createElement("h1", { style: {
5330
5649
  fontFamily: fonts.primary,
5331
5650
  fontSize: isMobile ? fontSizes["2xl"] : fontSizes["4xl"],
5332
5651
  fontWeight: fontWeights.bold,
5333
5652
  color: colors.evTeal,
5334
5653
  marginBottom: spacing[8],
5335
5654
  marginTop: 0
5336
- } }, "Legislative Record: ", politicianName), /* @__PURE__ */ React23.createElement(CommitteesSection, { committees, leadership }), /* @__PURE__ */ React23.createElement(LegislationSection, { bills, isMobile }), /* @__PURE__ */ React23.createElement(VotingSection, { votes, isMobile }));
5655
+ } }, "Legislative Record: ", politicianName), /* @__PURE__ */ React24.createElement(CommitteesSection, { committees, leadership }), /* @__PURE__ */ React24.createElement(LegislationSection, { bills, isMobile }), /* @__PURE__ */ React24.createElement(VotingSection, { votes, isMobile }));
5337
5656
  }
5338
5657
 
5339
5658
  // src/JudicialRecordDetail.jsx
5340
- import React24 from "react";
5659
+ import React25 from "react";
5341
5660
  var containerStyle = {
5342
5661
  fontFamily: "'Manrope', sans-serif",
5343
5662
  maxWidth: "800px"
@@ -5422,7 +5741,7 @@ var emptyStateStyle = {
5422
5741
  function JudicialRecordDetail({ politician = {}, judicialRecord, onBack }) {
5423
5742
  var _a;
5424
5743
  if (!judicialRecord) {
5425
- return /* @__PURE__ */ React24.createElement("div", { style: containerStyle }, /* @__PURE__ */ React24.createElement("button", { style: backBtnStyle, onClick: onBack }, "\u2190 Back to Profile"), /* @__PURE__ */ React24.createElement("div", { style: emptyStateStyle }, "No judicial record data available."));
5744
+ return /* @__PURE__ */ React25.createElement("div", { style: containerStyle }, /* @__PURE__ */ React25.createElement("button", { style: backBtnStyle, onClick: onBack }, "\u2190 Back to Profile"), /* @__PURE__ */ React25.createElement("div", { style: emptyStateStyle }, "No judicial record data available."));
5426
5745
  }
5427
5746
  const {
5428
5747
  judge_detail: detail,
@@ -5431,13 +5750,13 @@ function JudicialRecordDetail({ politician = {}, judicialRecord, onBack }) {
5431
5750
  disciplinary_records: disciplinary = []
5432
5751
  } = judicialRecord;
5433
5752
  const displayName = politician.full_name || `${politician.first_name || ""} ${politician.last_name || ""}`.trim();
5434
- return /* @__PURE__ */ React24.createElement("div", { style: containerStyle }, /* @__PURE__ */ React24.createElement("button", { style: backBtnStyle, onClick: onBack }, "\u2190 Back to Profile"), /* @__PURE__ */ React24.createElement("h1", { style: nameStyle }, displayName), /* @__PURE__ */ React24.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__ */ React24.createElement(React24.Fragment, null, /* @__PURE__ */ React24.createElement("h2", { style: sectionHeadingStyle }, "Background"), detail.appointed_by && /* @__PURE__ */ React24.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ React24.createElement("span", { style: detailLabelStyle }, "Appointed by"), /* @__PURE__ */ React24.createElement("span", { style: detailValueStyle }, detail.appointed_by, " (", detail.appointing_president_party, ")")), detail.confirmation_vote && /* @__PURE__ */ React24.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ React24.createElement("span", { style: detailLabelStyle }, "Confirmation Vote"), /* @__PURE__ */ React24.createElement("span", { style: detailValueStyle }, detail.confirmation_vote)), detail.election_type && /* @__PURE__ */ React24.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ React24.createElement("span", { style: detailLabelStyle }, "Election Type"), /* @__PURE__ */ React24.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__ */ React24.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ React24.createElement("span", { style: detailLabelStyle }, "Areas of Focus"), /* @__PURE__ */ React24.createElement("span", { style: detailValueStyle }, detail.areas_of_focus.join(", ")))), /* @__PURE__ */ React24.createElement("h2", { style: sectionHeadingStyle }, "Performance Evaluations"), evaluations.length === 0 ? /* @__PURE__ */ React24.createElement("div", { style: emptyStateStyle }, "No evaluation data available yet.") : /* @__PURE__ */ React24.createElement("table", { style: tableStyle }, /* @__PURE__ */ React24.createElement("thead", null, /* @__PURE__ */ React24.createElement("tr", null, /* @__PURE__ */ React24.createElement("th", { style: thStyle }, "Source"), /* @__PURE__ */ React24.createElement("th", { style: thStyle }, "Rating"), /* @__PURE__ */ React24.createElement("th", { style: thStyle }, "Date"))), /* @__PURE__ */ React24.createElement("tbody", null, evaluations.map((ev, i) => /* @__PURE__ */ React24.createElement("tr", { key: i }, /* @__PURE__ */ React24.createElement("td", { style: tdStyle }, ev.source_url ? /* @__PURE__ */ React24.createElement("a", { href: ev.source_url, target: "_blank", rel: "noopener noreferrer", style: { color: "#319795" } }, ev.source) : ev.source), /* @__PURE__ */ React24.createElement("td", { style: { ...tdStyle, fontWeight: 600 } }, ev.rating), /* @__PURE__ */ React24.createElement("td", { style: tdStyle }, formatDate(ev.rating_date)))))), /* @__PURE__ */ React24.createElement("h2", { style: sectionHeadingStyle }, "Performance Metrics"), metrics.length === 0 ? /* @__PURE__ */ React24.createElement("div", { style: emptyStateStyle }, "No performance metric data available yet.") : /* @__PURE__ */ React24.createElement("table", { style: tableStyle }, /* @__PURE__ */ React24.createElement("thead", null, /* @__PURE__ */ React24.createElement("tr", null, /* @__PURE__ */ React24.createElement("th", { style: thStyle }, "Metric"), /* @__PURE__ */ React24.createElement("th", { style: thStyle }, "Value"), /* @__PURE__ */ React24.createElement("th", { style: thStyle }, "Context"), /* @__PURE__ */ React24.createElement("th", { style: thStyle }, "Period"))), /* @__PURE__ */ React24.createElement("tbody", null, metrics.map((m, i) => /* @__PURE__ */ React24.createElement("tr", { key: i }, /* @__PURE__ */ React24.createElement("td", { style: { ...tdStyle, fontWeight: 600 } }, METRIC_LABELS[m.metric_type] || m.metric_type.replace(/_/g, " ")), /* @__PURE__ */ React24.createElement("td", { style: tdStyle }, formatMetricValue(m.metric_type, m.value)), /* @__PURE__ */ React24.createElement("td", { style: { ...tdStyle, color: "#718096", fontSize: "13px" } }, m.context_label), /* @__PURE__ */ React24.createElement("td", { style: tdStyle }, m.time_period))))), disciplinary.length > 0 && /* @__PURE__ */ React24.createElement(React24.Fragment, null, /* @__PURE__ */ React24.createElement("h2", { style: sectionHeadingStyle }, "Disciplinary History"), disciplinary.map((d, i) => /* @__PURE__ */ React24.createElement("div", { key: i, style: {
5753
+ return /* @__PURE__ */ React25.createElement("div", { style: containerStyle }, /* @__PURE__ */ React25.createElement("button", { style: backBtnStyle, onClick: onBack }, "\u2190 Back to Profile"), /* @__PURE__ */ React25.createElement("h1", { style: nameStyle }, displayName), /* @__PURE__ */ React25.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__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement("h2", { style: sectionHeadingStyle }, "Background"), detail.appointed_by && /* @__PURE__ */ React25.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ React25.createElement("span", { style: detailLabelStyle }, "Appointed by"), /* @__PURE__ */ React25.createElement("span", { style: detailValueStyle }, detail.appointed_by, " (", detail.appointing_president_party, ")")), detail.confirmation_vote && /* @__PURE__ */ React25.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ React25.createElement("span", { style: detailLabelStyle }, "Confirmation Vote"), /* @__PURE__ */ React25.createElement("span", { style: detailValueStyle }, detail.confirmation_vote)), detail.election_type && /* @__PURE__ */ React25.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ React25.createElement("span", { style: detailLabelStyle }, "Election Type"), /* @__PURE__ */ React25.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__ */ React25.createElement("div", { style: detailRowStyle }, /* @__PURE__ */ React25.createElement("span", { style: detailLabelStyle }, "Areas of Focus"), /* @__PURE__ */ React25.createElement("span", { style: detailValueStyle }, detail.areas_of_focus.join(", ")))), /* @__PURE__ */ React25.createElement("h2", { style: sectionHeadingStyle }, "Performance Evaluations"), evaluations.length === 0 ? /* @__PURE__ */ React25.createElement("div", { style: emptyStateStyle }, "No evaluation data available yet.") : /* @__PURE__ */ React25.createElement("table", { style: tableStyle }, /* @__PURE__ */ React25.createElement("thead", null, /* @__PURE__ */ React25.createElement("tr", null, /* @__PURE__ */ React25.createElement("th", { style: thStyle }, "Source"), /* @__PURE__ */ React25.createElement("th", { style: thStyle }, "Rating"), /* @__PURE__ */ React25.createElement("th", { style: thStyle }, "Date"))), /* @__PURE__ */ React25.createElement("tbody", null, evaluations.map((ev, i) => /* @__PURE__ */ React25.createElement("tr", { key: i }, /* @__PURE__ */ React25.createElement("td", { style: tdStyle }, ev.source_url ? /* @__PURE__ */ React25.createElement("a", { href: ev.source_url, target: "_blank", rel: "noopener noreferrer", style: { color: "#319795" } }, ev.source) : ev.source), /* @__PURE__ */ React25.createElement("td", { style: { ...tdStyle, fontWeight: 600 } }, ev.rating), /* @__PURE__ */ React25.createElement("td", { style: tdStyle }, formatDate(ev.rating_date)))))), /* @__PURE__ */ React25.createElement("h2", { style: sectionHeadingStyle }, "Performance Metrics"), metrics.length === 0 ? /* @__PURE__ */ React25.createElement("div", { style: emptyStateStyle }, "No performance metric data available yet.") : /* @__PURE__ */ React25.createElement("table", { style: tableStyle }, /* @__PURE__ */ React25.createElement("thead", null, /* @__PURE__ */ React25.createElement("tr", null, /* @__PURE__ */ React25.createElement("th", { style: thStyle }, "Metric"), /* @__PURE__ */ React25.createElement("th", { style: thStyle }, "Value"), /* @__PURE__ */ React25.createElement("th", { style: thStyle }, "Context"), /* @__PURE__ */ React25.createElement("th", { style: thStyle }, "Period"))), /* @__PURE__ */ React25.createElement("tbody", null, metrics.map((m, i) => /* @__PURE__ */ React25.createElement("tr", { key: i }, /* @__PURE__ */ React25.createElement("td", { style: { ...tdStyle, fontWeight: 600 } }, METRIC_LABELS[m.metric_type] || m.metric_type.replace(/_/g, " ")), /* @__PURE__ */ React25.createElement("td", { style: tdStyle }, formatMetricValue(m.metric_type, m.value)), /* @__PURE__ */ React25.createElement("td", { style: { ...tdStyle, color: "#718096", fontSize: "13px" } }, m.context_label), /* @__PURE__ */ React25.createElement("td", { style: tdStyle }, m.time_period))))), disciplinary.length > 0 && /* @__PURE__ */ React25.createElement(React25.Fragment, null, /* @__PURE__ */ React25.createElement("h2", { style: sectionHeadingStyle }, "Disciplinary History"), disciplinary.map((d, i) => /* @__PURE__ */ React25.createElement("div", { key: i, style: {
5435
5754
  borderLeft: "3px solid #fc8181",
5436
5755
  backgroundColor: "#fff5f5",
5437
5756
  borderRadius: "0 6px 6px 0",
5438
5757
  padding: "12px 16px",
5439
5758
  marginBottom: "10px"
5440
- } }, /* @__PURE__ */ React24.createElement("div", { style: { fontWeight: 700, color: "#742a2a", fontSize: "14px" } }, d.record_type, " \u2014 ", formatDate(d.record_date)), d.description && /* @__PURE__ */ React24.createElement("div", { style: { color: "#9b2c2c", fontSize: "13px", marginTop: "4px" } }, d.description), d.source_url && /* @__PURE__ */ React24.createElement(
5759
+ } }, /* @__PURE__ */ React25.createElement("div", { style: { fontWeight: 700, color: "#742a2a", fontSize: "14px" } }, d.record_type, " \u2014 ", formatDate(d.record_date)), d.description && /* @__PURE__ */ React25.createElement("div", { style: { color: "#9b2c2c", fontSize: "13px", marginTop: "4px" } }, d.description), d.source_url && /* @__PURE__ */ React25.createElement(
5441
5760
  "a",
5442
5761
  {
5443
5762
  href: d.source_url,
@@ -5450,7 +5769,7 @@ function JudicialRecordDetail({ politician = {}, judicialRecord, onBack }) {
5450
5769
  }
5451
5770
 
5452
5771
  // src/AuthForm.jsx
5453
- import React25, { useState as useState14 } from "react";
5772
+ import React26, { useState as useState15 } from "react";
5454
5773
  function AuthForm({
5455
5774
  logoSrc = "/EVLogo.svg",
5456
5775
  appName = "Empowered Vote",
@@ -5461,11 +5780,11 @@ function AuthForm({
5461
5780
  error = null,
5462
5781
  submitting = false
5463
5782
  }) {
5464
- const [username, setUsername] = useState14("");
5465
- const [password, setPassword] = useState14("");
5466
- const [confirmPassword, setConfirmPassword] = useState14("");
5467
- const [showPasswords, setShowPasswords] = useState14(false);
5468
- const [passwordMismatch, setPasswordMismatch] = useState14(false);
5783
+ const [username, setUsername] = useState15("");
5784
+ const [password, setPassword] = useState15("");
5785
+ const [confirmPassword, setConfirmPassword] = useState15("");
5786
+ const [showPasswords, setShowPasswords] = useState15(false);
5787
+ const [passwordMismatch, setPasswordMismatch] = useState15(false);
5469
5788
  const isLogin = mode === "login";
5470
5789
  const handleSubmit = (e) => {
5471
5790
  e.preventDefault();
@@ -5477,7 +5796,7 @@ function AuthForm({
5477
5796
  setPasswordMismatch(false);
5478
5797
  onSubmit == null ? void 0 : onSubmit(username.trim(), password);
5479
5798
  };
5480
- const EyeOpen = () => /* @__PURE__ */ React25.createElement(
5799
+ const EyeOpen = () => /* @__PURE__ */ React26.createElement(
5481
5800
  "svg",
5482
5801
  {
5483
5802
  xmlns: "http://www.w3.org/2000/svg",
@@ -5487,7 +5806,7 @@ function AuthForm({
5487
5806
  stroke: "currentColor",
5488
5807
  style: { width: "20px", height: "20px" }
5489
5808
  },
5490
- /* @__PURE__ */ React25.createElement(
5809
+ /* @__PURE__ */ React26.createElement(
5491
5810
  "path",
5492
5811
  {
5493
5812
  strokeLinecap: "round",
@@ -5495,7 +5814,7 @@ function AuthForm({
5495
5814
  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"
5496
5815
  }
5497
5816
  ),
5498
- /* @__PURE__ */ React25.createElement(
5817
+ /* @__PURE__ */ React26.createElement(
5499
5818
  "path",
5500
5819
  {
5501
5820
  strokeLinecap: "round",
@@ -5504,7 +5823,7 @@ function AuthForm({
5504
5823
  }
5505
5824
  )
5506
5825
  );
5507
- const EyeClosed = () => /* @__PURE__ */ React25.createElement(
5826
+ const EyeClosed = () => /* @__PURE__ */ React26.createElement(
5508
5827
  "svg",
5509
5828
  {
5510
5829
  xmlns: "http://www.w3.org/2000/svg",
@@ -5514,7 +5833,7 @@ function AuthForm({
5514
5833
  stroke: "currentColor",
5515
5834
  style: { width: "20px", height: "20px" }
5516
5835
  },
5517
- /* @__PURE__ */ React25.createElement(
5836
+ /* @__PURE__ */ React26.createElement(
5518
5837
  "path",
5519
5838
  {
5520
5839
  strokeLinecap: "round",
@@ -5523,17 +5842,17 @@ function AuthForm({
5523
5842
  }
5524
5843
  )
5525
5844
  );
5526
- const PasswordToggle = () => /* @__PURE__ */ React25.createElement(
5845
+ const PasswordToggle = () => /* @__PURE__ */ React26.createElement(
5527
5846
  "button",
5528
5847
  {
5529
5848
  type: "button",
5530
5849
  onClick: () => setShowPasswords((prev) => !prev),
5531
5850
  style: styles.passwordToggle
5532
5851
  },
5533
- showPasswords ? /* @__PURE__ */ React25.createElement(EyeOpen, null) : /* @__PURE__ */ React25.createElement(EyeClosed, null)
5852
+ showPasswords ? /* @__PURE__ */ React26.createElement(EyeOpen, null) : /* @__PURE__ */ React26.createElement(EyeClosed, null)
5534
5853
  );
5535
5854
  const displayError = passwordMismatch ? "Passwords do not match." : error;
5536
- return /* @__PURE__ */ React25.createElement("div", { style: styles.wrapper }, /* @__PURE__ */ React25.createElement("div", { style: styles.container }, /* @__PURE__ */ React25.createElement("div", { style: styles.header }, logoSrc && /* @__PURE__ */ React25.createElement("img", { src: logoSrc, alt: appName, style: styles.logo }), appName && /* @__PURE__ */ React25.createElement("h1", { style: styles.appName }, appName), appSubtitle && /* @__PURE__ */ React25.createElement("p", { style: styles.appSubtitle }, appSubtitle)), /* @__PURE__ */ React25.createElement("form", { onSubmit: handleSubmit, style: styles.card }, /* @__PURE__ */ React25.createElement("h2", { style: styles.cardTitle }, isLogin ? "Welcome Back" : "Create Account"), /* @__PURE__ */ React25.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ React25.createElement("label", { style: styles.label }, "Username"), /* @__PURE__ */ React25.createElement(
5855
+ return /* @__PURE__ */ React26.createElement("div", { style: styles.wrapper }, /* @__PURE__ */ React26.createElement("div", { style: styles.container }, /* @__PURE__ */ React26.createElement("div", { style: styles.header }, logoSrc && /* @__PURE__ */ React26.createElement("img", { src: logoSrc, alt: appName, style: styles.logo }), appName && /* @__PURE__ */ React26.createElement("h1", { style: styles.appName }, appName), appSubtitle && /* @__PURE__ */ React26.createElement("p", { style: styles.appSubtitle }, appSubtitle)), /* @__PURE__ */ React26.createElement("form", { onSubmit: handleSubmit, style: styles.card }, /* @__PURE__ */ React26.createElement("h2", { style: styles.cardTitle }, isLogin ? "Welcome Back" : "Create Account"), /* @__PURE__ */ React26.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ React26.createElement("label", { style: styles.label }, "Username"), /* @__PURE__ */ React26.createElement(
5537
5856
  "input",
5538
5857
  {
5539
5858
  type: "text",
@@ -5550,7 +5869,7 @@ function AuthForm({
5550
5869
  },
5551
5870
  required: true
5552
5871
  }
5553
- )), /* @__PURE__ */ React25.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ React25.createElement("label", { style: styles.label }, "Password"), /* @__PURE__ */ React25.createElement("div", { style: styles.passwordWrapper }, /* @__PURE__ */ React25.createElement(
5872
+ )), /* @__PURE__ */ React26.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ React26.createElement("label", { style: styles.label }, "Password"), /* @__PURE__ */ React26.createElement("div", { style: styles.passwordWrapper }, /* @__PURE__ */ React26.createElement(
5554
5873
  "input",
5555
5874
  {
5556
5875
  type: showPasswords ? "text" : "password",
@@ -5566,7 +5885,7 @@ function AuthForm({
5566
5885
  },
5567
5886
  required: true
5568
5887
  }
5569
- ), /* @__PURE__ */ React25.createElement(PasswordToggle, null))), !isLogin && /* @__PURE__ */ React25.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ React25.createElement("label", { style: styles.label }, "Confirm Password"), /* @__PURE__ */ React25.createElement("div", { style: styles.passwordWrapper }, /* @__PURE__ */ React25.createElement(
5888
+ ), /* @__PURE__ */ React26.createElement(PasswordToggle, null))), !isLogin && /* @__PURE__ */ React26.createElement("div", { style: styles.fieldGroup }, /* @__PURE__ */ React26.createElement("label", { style: styles.label }, "Confirm Password"), /* @__PURE__ */ React26.createElement("div", { style: styles.passwordWrapper }, /* @__PURE__ */ React26.createElement(
5570
5889
  "input",
5571
5890
  {
5572
5891
  type: showPasswords ? "text" : "password",
@@ -5582,7 +5901,7 @@ function AuthForm({
5582
5901
  },
5583
5902
  required: true
5584
5903
  }
5585
- ), /* @__PURE__ */ React25.createElement(PasswordToggle, null))), displayError && /* @__PURE__ */ React25.createElement("div", { style: styles.errorBox }, /* @__PURE__ */ React25.createElement("p", { style: styles.errorText }, displayError)), /* @__PURE__ */ React25.createElement(
5904
+ ), /* @__PURE__ */ React26.createElement(PasswordToggle, null))), displayError && /* @__PURE__ */ React26.createElement("div", { style: styles.errorBox }, /* @__PURE__ */ React26.createElement("p", { style: styles.errorText }, displayError)), /* @__PURE__ */ React26.createElement(
5586
5905
  "button",
5587
5906
  {
5588
5907
  type: "submit",
@@ -5600,7 +5919,7 @@ function AuthForm({
5600
5919
  }
5601
5920
  },
5602
5921
  submitting ? isLogin ? "Signing In..." : "Creating Account..." : isLogin ? "Sign In" : "Create Account"
5603
- ), onModeSwitch && /* @__PURE__ */ React25.createElement("div", { style: styles.modeSwitch }, /* @__PURE__ */ React25.createElement("p", { style: styles.modeSwitchText }, isLogin ? "Don't have an account?" : "Already have an account?"), /* @__PURE__ */ React25.createElement(
5922
+ ), onModeSwitch && /* @__PURE__ */ React26.createElement("div", { style: styles.modeSwitch }, /* @__PURE__ */ React26.createElement("p", { style: styles.modeSwitchText }, isLogin ? "Don't have an account?" : "Already have an account?"), /* @__PURE__ */ React26.createElement(
5604
5923
  "button",
5605
5924
  {
5606
5925
  type: "button",
@@ -5773,9 +6092,9 @@ var styles = {
5773
6092
  };
5774
6093
 
5775
6094
  // src/TopicTierBadge.jsx
5776
- import React26 from "react";
6095
+ import React27 from "react";
5777
6096
  function LandmarkIcon({ size = 14 }) {
5778
- return /* @__PURE__ */ React26.createElement(
6097
+ return /* @__PURE__ */ React27.createElement(
5779
6098
  "svg",
5780
6099
  {
5781
6100
  width: size,
@@ -5789,16 +6108,16 @@ function LandmarkIcon({ size = 14 }) {
5789
6108
  xmlns: "http://www.w3.org/2000/svg",
5790
6109
  "aria-hidden": "true"
5791
6110
  },
5792
- /* @__PURE__ */ React26.createElement("path", { d: "M10 18v-7" }),
5793
- /* @__PURE__ */ React26.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" }),
5794
- /* @__PURE__ */ React26.createElement("path", { d: "M14 18v-7" }),
5795
- /* @__PURE__ */ React26.createElement("path", { d: "M18 18v-7" }),
5796
- /* @__PURE__ */ React26.createElement("path", { d: "M3 22h18" }),
5797
- /* @__PURE__ */ React26.createElement("path", { d: "M6 18v-7" })
6111
+ /* @__PURE__ */ React27.createElement("path", { d: "M10 18v-7" }),
6112
+ /* @__PURE__ */ React27.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" }),
6113
+ /* @__PURE__ */ React27.createElement("path", { d: "M14 18v-7" }),
6114
+ /* @__PURE__ */ React27.createElement("path", { d: "M18 18v-7" }),
6115
+ /* @__PURE__ */ React27.createElement("path", { d: "M3 22h18" }),
6116
+ /* @__PURE__ */ React27.createElement("path", { d: "M6 18v-7" })
5798
6117
  );
5799
6118
  }
5800
6119
  function Building2Icon({ size = 14 }) {
5801
- return /* @__PURE__ */ React26.createElement(
6120
+ return /* @__PURE__ */ React27.createElement(
5802
6121
  "svg",
5803
6122
  {
5804
6123
  width: size,
@@ -5812,17 +6131,17 @@ function Building2Icon({ size = 14 }) {
5812
6131
  xmlns: "http://www.w3.org/2000/svg",
5813
6132
  "aria-hidden": "true"
5814
6133
  },
5815
- /* @__PURE__ */ React26.createElement("path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z" }),
5816
- /* @__PURE__ */ React26.createElement("path", { d: "M6 12H4a2 2 0 0 0-2 2v8h4" }),
5817
- /* @__PURE__ */ React26.createElement("path", { d: "M18 9h2a2 2 0 0 1 2 2v11h-4" }),
5818
- /* @__PURE__ */ React26.createElement("path", { d: "M10 6h4" }),
5819
- /* @__PURE__ */ React26.createElement("path", { d: "M10 10h4" }),
5820
- /* @__PURE__ */ React26.createElement("path", { d: "M10 14h4" }),
5821
- /* @__PURE__ */ React26.createElement("path", { d: "M10 18h4" })
6134
+ /* @__PURE__ */ React27.createElement("path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z" }),
6135
+ /* @__PURE__ */ React27.createElement("path", { d: "M6 12H4a2 2 0 0 0-2 2v8h4" }),
6136
+ /* @__PURE__ */ React27.createElement("path", { d: "M18 9h2a2 2 0 0 1 2 2v11h-4" }),
6137
+ /* @__PURE__ */ React27.createElement("path", { d: "M10 6h4" }),
6138
+ /* @__PURE__ */ React27.createElement("path", { d: "M10 10h4" }),
6139
+ /* @__PURE__ */ React27.createElement("path", { d: "M10 14h4" }),
6140
+ /* @__PURE__ */ React27.createElement("path", { d: "M10 18h4" })
5822
6141
  );
5823
6142
  }
5824
6143
  function HomeIcon({ size = 14 }) {
5825
- return /* @__PURE__ */ React26.createElement(
6144
+ return /* @__PURE__ */ React27.createElement(
5826
6145
  "svg",
5827
6146
  {
5828
6147
  width: size,
@@ -5836,8 +6155,8 @@ function HomeIcon({ size = 14 }) {
5836
6155
  xmlns: "http://www.w3.org/2000/svg",
5837
6156
  "aria-hidden": "true"
5838
6157
  },
5839
- /* @__PURE__ */ React26.createElement("path", { d: "m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" }),
5840
- /* @__PURE__ */ React26.createElement("polyline", { points: "9 22 9 12 15 12 15 22" })
6158
+ /* @__PURE__ */ React27.createElement("path", { d: "m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" }),
6159
+ /* @__PURE__ */ React27.createElement("polyline", { points: "9 22 9 12 15 12 15 22" })
5841
6160
  );
5842
6161
  }
5843
6162
  var TIER_INFO = {
@@ -5897,7 +6216,7 @@ function TopicTierBadge({
5897
6216
  userSelect: "none"
5898
6217
  };
5899
6218
  };
5900
- return /* @__PURE__ */ React26.createElement(
6219
+ return /* @__PURE__ */ React27.createElement(
5901
6220
  "span",
5902
6221
  {
5903
6222
  className: "ev-topic-tier-badge",
@@ -5907,13 +6226,13 @@ function TopicTierBadge({
5907
6226
  },
5908
6227
  effectiveTiers.map((tier) => {
5909
6228
  const { label, Icon } = TIER_INFO[tier];
5910
- return /* @__PURE__ */ React26.createElement("span", { key: tier, style: itemStyle(tier) }, /* @__PURE__ */ React26.createElement(Icon, { size: sizeStyle.iconSize }), !iconOnly && /* @__PURE__ */ React26.createElement("span", null, label));
6229
+ return /* @__PURE__ */ React27.createElement("span", { key: tier, style: itemStyle(tier) }, /* @__PURE__ */ React27.createElement(Icon, { size: sizeStyle.iconSize }), !iconOnly && /* @__PURE__ */ React27.createElement("span", null, label));
5911
6230
  })
5912
6231
  );
5913
6232
  }
5914
6233
 
5915
6234
  // src/CompassCoverageCallout.jsx
5916
- import React27, { useState as useState15 } from "react";
6235
+ import React28, { useState as useState16 } from "react";
5917
6236
  var TIER_LABELS = {
5918
6237
  federal: "federal",
5919
6238
  state: "state",
@@ -5926,7 +6245,7 @@ function CompassCoverageCallout({
5926
6245
  compassUrl,
5927
6246
  onDismiss
5928
6247
  }) {
5929
- const [dismissed, setDismissed] = useState15(false);
6248
+ const [dismissed, setDismissed] = useState16(false);
5930
6249
  if (dismissed) return null;
5931
6250
  const tierLabel = TIER_LABELS[tier] || tier;
5932
6251
  const tierStyle = tierColors[tier] || tierColors.federal;
@@ -5977,15 +6296,15 @@ function CompassCoverageCallout({
5977
6296
  setDismissed(true);
5978
6297
  if (onDismiss) onDismiss();
5979
6298
  };
5980
- return /* @__PURE__ */ React27.createElement(
6299
+ return /* @__PURE__ */ React28.createElement(
5981
6300
  "div",
5982
6301
  {
5983
6302
  className: "ev-compass-coverage-callout",
5984
6303
  role: "status",
5985
6304
  style: containerStyle2
5986
6305
  },
5987
- /* @__PURE__ */ React27.createElement("div", { style: textStyle }, /* @__PURE__ */ React27.createElement("div", { style: headlineStyle }, "Your compass covers ", tierLabel, " issues lightly"), /* @__PURE__ */ React27.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__ */ React27.createElement("a", { href: compassUrl, style: ctaStyle }, "Add ", tierLabel, " topics \u2192")),
5988
- onDismiss !== void 0 && /* @__PURE__ */ React27.createElement(
6306
+ /* @__PURE__ */ React28.createElement("div", { style: textStyle }, /* @__PURE__ */ React28.createElement("div", { style: headlineStyle }, "Your compass covers ", tierLabel, " issues lightly"), /* @__PURE__ */ React28.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__ */ React28.createElement("a", { href: compassUrl, style: ctaStyle }, "Add ", tierLabel, " topics \u2192")),
6307
+ onDismiss !== void 0 && /* @__PURE__ */ React28.createElement(
5989
6308
  "button",
5990
6309
  {
5991
6310
  onClick: handleDismiss,
@@ -5998,7 +6317,7 @@ function CompassCoverageCallout({
5998
6317
  }
5999
6318
 
6000
6319
  // src/ExpandCompassNudge.jsx
6001
- import React28 from "react";
6320
+ import React29 from "react";
6002
6321
  function ExpandCompassNudge({
6003
6322
  politicianName,
6004
6323
  missingCount,
@@ -6045,7 +6364,7 @@ function ExpandCompassNudge({
6045
6364
  };
6046
6365
  const topicsLabel = missingCount === 1 ? "topic" : "topics";
6047
6366
  const speakerName = politicianName || "This politician";
6048
- return /* @__PURE__ */ React28.createElement("div", { className: "ev-expand-compass-nudge", style: containerStyle2, role: "region" }, /* @__PURE__ */ React28.createElement("p", { style: headlineStyle }, "Want a richer comparison?"), /* @__PURE__ */ React28.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__ */ React28.createElement("a", { href: compassUrl, style: ctaStyle }, "Expand my compass \u2192"));
6367
+ return /* @__PURE__ */ React29.createElement("div", { className: "ev-expand-compass-nudge", style: containerStyle2, role: "region" }, /* @__PURE__ */ React29.createElement("p", { style: headlineStyle }, "Want a richer comparison?"), /* @__PURE__ */ React29.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__ */ React29.createElement("a", { href: compassUrl, style: ctaStyle }, "Expand my compass \u2192"));
6049
6368
  }
6050
6369
 
6051
6370
  // src/computeTierCoverage.js
@@ -6066,7 +6385,7 @@ function computeTierCoverage(topics) {
6066
6385
  }
6067
6386
 
6068
6387
  // src/useEvContextPromotion.js
6069
- import { useEffect as useEffect10, useState as useState16, useCallback, useRef as useRef3 } from "react";
6388
+ import { useEffect as useEffect10, useState as useState17, useCallback, useRef as useRef4 } from "react";
6070
6389
  function useEvContextPromotion({
6071
6390
  domain,
6072
6391
  isLoggedIn,
@@ -6075,21 +6394,21 @@ function useEvContextPromotion({
6075
6394
  apiWriter,
6076
6395
  enabled = true
6077
6396
  }) {
6078
- const [shouldPrompt, setShouldPrompt] = useState16(false);
6079
- const [payload, setPayload] = useState16(null);
6080
- const [status, setStatus] = useState16("idle");
6081
- const [error, setError] = useState16(null);
6082
- const apiDataRef = useRef3(apiData);
6397
+ const [shouldPrompt, setShouldPrompt] = useState17(false);
6398
+ const [payload, setPayload] = useState17(null);
6399
+ const [status, setStatus] = useState17("idle");
6400
+ const [error, setError] = useState17(null);
6401
+ const apiDataRef = useRef4(apiData);
6083
6402
  apiDataRef.current = apiData;
6084
- const userIdRef = useRef3(userId);
6403
+ const userIdRef = useRef4(userId);
6085
6404
  userIdRef.current = userId;
6086
- const isLoggedInRef = useRef3(isLoggedIn);
6405
+ const isLoggedInRef = useRef4(isLoggedIn);
6087
6406
  isLoggedInRef.current = isLoggedIn;
6088
- const enabledRef = useRef3(enabled);
6407
+ const enabledRef = useRef4(enabled);
6089
6408
  enabledRef.current = enabled;
6090
- const domainRef = useRef3(domain);
6409
+ const domainRef = useRef4(domain);
6091
6410
  domainRef.current = domain;
6092
- const apiWriterRef = useRef3(apiWriter);
6411
+ const apiWriterRef = useRef4(apiWriter);
6093
6412
  apiWriterRef.current = apiWriter;
6094
6413
  const detect = useCallback(async () => {
6095
6414
  const _enabled = enabledRef.current;
@@ -6225,14 +6544,14 @@ function isGuestPopulated(domain, fullEvContext) {
6225
6544
  }
6226
6545
 
6227
6546
  // src/StanceAccordion.jsx
6228
- import React30, { useState as useState17, useRef as useRef4, useCallback as useCallback2, useEffect as useEffect11 } from "react";
6547
+ import React31, { useState as useState18, useRef as useRef5, useCallback as useCallback2, useEffect as useEffect11 } from "react";
6229
6548
 
6230
6549
  // src/Favicon.jsx
6231
- import React29 from "react";
6550
+ import React30 from "react";
6232
6551
  function Favicon({ url, size = 16 }) {
6233
6552
  try {
6234
6553
  const domain = new URL(url).hostname;
6235
- return /* @__PURE__ */ React29.createElement(
6554
+ return /* @__PURE__ */ React30.createElement(
6236
6555
  "img",
6237
6556
  {
6238
6557
  src: `https://www.google.com/s2/favicons?sz=${size}&domain=${domain}`,
@@ -6243,7 +6562,7 @@ function Favicon({ url, size = 16 }) {
6243
6562
  }
6244
6563
  );
6245
6564
  } catch {
6246
- return /* @__PURE__ */ React29.createElement(
6565
+ return /* @__PURE__ */ React30.createElement(
6247
6566
  "svg",
6248
6567
  {
6249
6568
  width: size,
@@ -6254,8 +6573,8 @@ function Favicon({ url, size = 16 }) {
6254
6573
  strokeWidth: "1.5",
6255
6574
  style: { verticalAlign: "middle", flexShrink: 0 }
6256
6575
  },
6257
- /* @__PURE__ */ React29.createElement("circle", { cx: "12", cy: "12", r: "10" }),
6258
- /* @__PURE__ */ React29.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" })
6576
+ /* @__PURE__ */ React30.createElement("circle", { cx: "12", cy: "12", r: "10" }),
6577
+ /* @__PURE__ */ React30.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" })
6259
6578
  );
6260
6579
  }
6261
6580
  }
@@ -6350,11 +6669,11 @@ function StanceAccordion({
6350
6669
  apiUrl = "https://api.empowered.vote"
6351
6670
  }) {
6352
6671
  var _a;
6353
- const [expandedTopicId, setExpandedTopicId] = useState17(null);
6354
- const [loadingId, setLoadingId] = useState17(null);
6355
- const [showAll, setShowAll] = useState17(false);
6356
- const contextCache = useRef4(/* @__PURE__ */ new Map());
6357
- const quotesCache = useRef4(null);
6672
+ const [expandedTopicId, setExpandedTopicId] = useState18(null);
6673
+ const [loadingId, setLoadingId] = useState18(null);
6674
+ const [showAll, setShowAll] = useState18(false);
6675
+ const contextCache = useRef5(/* @__PURE__ */ new Map());
6676
+ const quotesCache = useRef5(null);
6358
6677
  const c = palette(darkMode);
6359
6678
  const polAnswerMap = {};
6360
6679
  if (polAnswers) {
@@ -6454,13 +6773,13 @@ function StanceAccordion({
6454
6773
  textTransform: "uppercase",
6455
6774
  letterSpacing: "0.06em"
6456
6775
  };
6457
- return /* @__PURE__ */ React30.createElement(
6776
+ return /* @__PURE__ */ React31.createElement(
6458
6777
  "div",
6459
6778
  {
6460
6779
  className: "ev-stance-panel flex flex-col",
6461
6780
  style: { fontFamily: "'Manrope', sans-serif" }
6462
6781
  },
6463
- /* @__PURE__ */ React30.createElement("h3", { style: { ...sectionLabelStyle, marginBottom: "8px" } }, "Stance Breakdown"),
6782
+ /* @__PURE__ */ React31.createElement("h3", { style: { ...sectionLabelStyle, marginBottom: "8px" } }, "Stance Breakdown"),
6464
6783
  visibleTopics.map((topic) => {
6465
6784
  const topicId = String(topic.id);
6466
6785
  const polValue = polAnswerMap[topicId];
@@ -6479,13 +6798,13 @@ function StanceAccordion({
6479
6798
  if (topic.topic_key) return q.issue === topic.topic_key;
6480
6799
  return topic.short_title && q.issue.toLowerCase() === topic.short_title.toLowerCase();
6481
6800
  }) : [];
6482
- return /* @__PURE__ */ React30.createElement(
6801
+ return /* @__PURE__ */ React31.createElement(
6483
6802
  "div",
6484
6803
  {
6485
6804
  key: topicId,
6486
6805
  style: { borderBottom: `1px solid ${c.rowBorder}` }
6487
6806
  },
6488
- /* @__PURE__ */ React30.createElement(
6807
+ /* @__PURE__ */ React31.createElement(
6489
6808
  "button",
6490
6809
  {
6491
6810
  type: "button",
@@ -6505,7 +6824,7 @@ function StanceAccordion({
6505
6824
  e.currentTarget.style.background = "transparent";
6506
6825
  }
6507
6826
  },
6508
- /* @__PURE__ */ React30.createElement("div", { className: "flex flex-col min-w-0", style: { gap: "5px" } }, /* @__PURE__ */ React30.createElement(
6827
+ /* @__PURE__ */ React31.createElement("div", { className: "flex flex-col min-w-0", style: { gap: "5px" } }, /* @__PURE__ */ React31.createElement(
6509
6828
  "span",
6510
6829
  {
6511
6830
  style: {
@@ -6516,7 +6835,7 @@ function StanceAccordion({
6516
6835
  }
6517
6836
  },
6518
6837
  titleText
6519
- ), /* @__PURE__ */ React30.createElement("span", { style: { display: "flex", alignItems: "flex-start", gap: "8px" } }, /* @__PURE__ */ React30.createElement(
6838
+ ), /* @__PURE__ */ React31.createElement("span", { style: { display: "flex", alignItems: "flex-start", gap: "8px" } }, /* @__PURE__ */ React31.createElement(
6520
6839
  "span",
6521
6840
  {
6522
6841
  style: {
@@ -6528,7 +6847,7 @@ function StanceAccordion({
6528
6847
  marginTop: "6px"
6529
6848
  }
6530
6849
  }
6531
- ), /* @__PURE__ */ React30.createElement(
6850
+ ), /* @__PURE__ */ React31.createElement(
6532
6851
  "span",
6533
6852
  {
6534
6853
  style: {
@@ -6539,7 +6858,7 @@ function StanceAccordion({
6539
6858
  },
6540
6859
  label
6541
6860
  ))),
6542
- /* @__PURE__ */ React30.createElement(
6861
+ /* @__PURE__ */ React31.createElement(
6543
6862
  "svg",
6544
6863
  {
6545
6864
  width: "16",
@@ -6557,10 +6876,10 @@ function StanceAccordion({
6557
6876
  transition: "transform 0.2s ease"
6558
6877
  }
6559
6878
  },
6560
- /* @__PURE__ */ React30.createElement("polyline", { points: "9 18 15 12 9 6" })
6879
+ /* @__PURE__ */ React31.createElement("polyline", { points: "9 18 15 12 9 6" })
6561
6880
  )
6562
6881
  ),
6563
- /* @__PURE__ */ React30.createElement(
6882
+ /* @__PURE__ */ React31.createElement(
6564
6883
  "div",
6565
6884
  {
6566
6885
  style: {
@@ -6569,7 +6888,7 @@ function StanceAccordion({
6569
6888
  transition: "grid-template-rows 0.25s ease"
6570
6889
  }
6571
6890
  },
6572
- /* @__PURE__ */ React30.createElement("div", { style: { overflow: "hidden" } }, /* @__PURE__ */ React30.createElement("div", { style: { padding: "4px 8px 16px" } }, stances.length > 0 && /* @__PURE__ */ React30.createElement(React30.Fragment, null, (userValue > 0 || polValue > 0) && /* @__PURE__ */ React30.createElement(
6891
+ /* @__PURE__ */ React31.createElement("div", { style: { overflow: "hidden" } }, /* @__PURE__ */ React31.createElement("div", { style: { padding: "4px 8px 16px" } }, stances.length > 0 && /* @__PURE__ */ React31.createElement(React31.Fragment, null, (userValue > 0 || polValue > 0) && /* @__PURE__ */ React31.createElement(
6573
6892
  "div",
6574
6893
  {
6575
6894
  style: {
@@ -6581,14 +6900,14 @@ function StanceAccordion({
6581
6900
  color: c.sourceText
6582
6901
  }
6583
6902
  },
6584
- userValue > 0 && /* @__PURE__ */ React30.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: "6px" } }, /* @__PURE__ */ React30.createElement("span", { style: { width: "9px", height: "9px", borderRadius: "50%", backgroundColor: USER_DOT } }), "You"),
6585
- /* @__PURE__ */ React30.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: "6px" } }, /* @__PURE__ */ React30.createElement("span", { style: { width: "9px", height: "9px", borderRadius: "50%", backgroundColor: c.polDot } }), "Their stance")
6586
- ), /* @__PURE__ */ React30.createElement("div", { style: { display: "flex", flexDirection: "column", gap: "6px", marginBottom: "14px" } }, stances.map((stance, i) => {
6903
+ userValue > 0 && /* @__PURE__ */ React31.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: "6px" } }, /* @__PURE__ */ React31.createElement("span", { style: { width: "9px", height: "9px", borderRadius: "50%", backgroundColor: USER_DOT } }), "You"),
6904
+ /* @__PURE__ */ React31.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: "6px" } }, /* @__PURE__ */ React31.createElement("span", { style: { width: "9px", height: "9px", borderRadius: "50%", backgroundColor: c.polDot } }), "Their stance")
6905
+ ), /* @__PURE__ */ React31.createElement("div", { style: { display: "flex", flexDirection: "column", gap: "6px", marginBottom: "14px" } }, stances.map((stance, i) => {
6587
6906
  const stanceNum = i + 1;
6588
6907
  const isUser = userValue === stanceNum;
6589
6908
  const isPol = polValue === stanceNum;
6590
6909
  const isActive = isUser || isPol;
6591
- return /* @__PURE__ */ React30.createElement(
6910
+ return /* @__PURE__ */ React31.createElement(
6592
6911
  "div",
6593
6912
  {
6594
6913
  key: i,
@@ -6604,7 +6923,7 @@ function StanceAccordion({
6604
6923
  backgroundColor: isActive ? c.pillActiveBg : "transparent"
6605
6924
  }
6606
6925
  },
6607
- /* @__PURE__ */ React30.createElement(
6926
+ /* @__PURE__ */ React31.createElement(
6608
6927
  "span",
6609
6928
  {
6610
6929
  style: {
@@ -6616,10 +6935,10 @@ function StanceAccordion({
6616
6935
  paddingTop: "3px"
6617
6936
  }
6618
6937
  },
6619
- isUser && /* @__PURE__ */ React30.createElement("span", { style: { width: "9px", height: "9px", borderRadius: "50%", backgroundColor: USER_DOT, boxShadow: `0 0 0 3px ${USER_DOT}33` } }),
6620
- isPol && /* @__PURE__ */ React30.createElement("span", { style: { width: "9px", height: "9px", borderRadius: "50%", backgroundColor: c.polDot, boxShadow: `0 0 0 3px ${c.polDot}33` } })
6938
+ isUser && /* @__PURE__ */ React31.createElement("span", { style: { width: "9px", height: "9px", borderRadius: "50%", backgroundColor: USER_DOT, boxShadow: `0 0 0 3px ${USER_DOT}33` } }),
6939
+ isPol && /* @__PURE__ */ React31.createElement("span", { style: { width: "9px", height: "9px", borderRadius: "50%", backgroundColor: c.polDot, boxShadow: `0 0 0 3px ${c.polDot}33` } })
6621
6940
  ),
6622
- /* @__PURE__ */ React30.createElement(
6941
+ /* @__PURE__ */ React31.createElement(
6623
6942
  "span",
6624
6943
  {
6625
6944
  style: {
@@ -6631,7 +6950,7 @@ function StanceAccordion({
6631
6950
  stance.text
6632
6951
  )
6633
6952
  );
6634
- }))), isLoading && /* @__PURE__ */ React30.createElement("div", { className: "flex items-center", style: { padding: "12px 0" } }, /* @__PURE__ */ React30.createElement(
6953
+ }))), isLoading && /* @__PURE__ */ React31.createElement("div", { className: "flex items-center", style: { padding: "12px 0" } }, /* @__PURE__ */ React31.createElement(
6635
6954
  "div",
6636
6955
  {
6637
6956
  style: {
@@ -6643,7 +6962,7 @@ function StanceAccordion({
6643
6962
  animation: "ev-spin 0.8s linear infinite"
6644
6963
  }
6645
6964
  }
6646
- )), !isLoading && cached && /* @__PURE__ */ React30.createElement(React30.Fragment, null, cached.reasoning ? /* @__PURE__ */ React30.createElement(
6965
+ )), !isLoading && cached && /* @__PURE__ */ React31.createElement(React31.Fragment, null, cached.reasoning ? /* @__PURE__ */ React31.createElement(
6647
6966
  "p",
6648
6967
  {
6649
6968
  style: {
@@ -6655,7 +6974,7 @@ function StanceAccordion({
6655
6974
  }
6656
6975
  },
6657
6976
  cached.reasoning
6658
- ) : null, cached.sources && cached.sources.length > 0 && /* @__PURE__ */ React30.createElement("div", { style: { marginTop: "8px" } }, /* @__PURE__ */ React30.createElement("p", { style: { ...sectionLabelStyle, marginBottom: "6px" } }, "References"), /* @__PURE__ */ React30.createElement("ol", { style: { listStyle: "decimal", listStylePosition: "inside", display: "flex", flexDirection: "column", gap: "4px" } }, cached.sources.map((src, i) => /* @__PURE__ */ React30.createElement("li", { key: i, style: { fontSize: "12px", color: c.sourceText } }, /* @__PURE__ */ React30.createElement(
6977
+ ) : null, cached.sources && cached.sources.length > 0 && /* @__PURE__ */ React31.createElement("div", { style: { marginTop: "8px" } }, /* @__PURE__ */ React31.createElement("p", { style: { ...sectionLabelStyle, marginBottom: "6px" } }, "References"), /* @__PURE__ */ React31.createElement("ol", { style: { listStyle: "decimal", listStylePosition: "inside", display: "flex", flexDirection: "column", gap: "4px" } }, cached.sources.map((src, i) => /* @__PURE__ */ React31.createElement("li", { key: i, style: { fontSize: "12px", color: c.sourceText } }, /* @__PURE__ */ React31.createElement(
6659
6978
  "a",
6660
6979
  {
6661
6980
  href: src,
@@ -6664,13 +6983,13 @@ function StanceAccordion({
6664
6983
  className: "inline-flex items-center gap-1.5",
6665
6984
  style: { color: c.link }
6666
6985
  },
6667
- /* @__PURE__ */ React30.createElement(Favicon, { url: src }),
6668
- /* @__PURE__ */ React30.createElement("span", { style: { textDecoration: "underline", textUnderlineOffset: "2px" } }, getDisplayUrl(src))
6669
- ))))), topicQuotes.length > 0 && /* @__PURE__ */ React30.createElement("div", { style: { marginTop: "14px" } }, /* @__PURE__ */ React30.createElement("p", { style: { ...sectionLabelStyle, marginBottom: "8px" } }, "Quotes"), topicQuotes.map((quote) => {
6986
+ /* @__PURE__ */ React31.createElement(Favicon, { url: src }),
6987
+ /* @__PURE__ */ React31.createElement("span", { style: { textDecoration: "underline", textUnderlineOffset: "2px" } }, getDisplayUrl(src))
6988
+ ))))), topicQuotes.length > 0 && /* @__PURE__ */ React31.createElement("div", { style: { marginTop: "14px" } }, /* @__PURE__ */ React31.createElement("p", { style: { ...sectionLabelStyle, marginBottom: "8px" } }, "Quotes"), topicQuotes.map((quote) => {
6670
6989
  const verdict = verdictsByQuote ? verdictsByQuote[quote.id] : void 0;
6671
6990
  const borderColor = verdict === "agreed" ? c.agreedText : verdict === "disagreed" ? c.disagreedText : c.quoteBorder;
6672
6991
  const sourceName = quote.source_name || quote.sourceName;
6673
- return /* @__PURE__ */ React30.createElement(
6992
+ return /* @__PURE__ */ React31.createElement(
6674
6993
  "div",
6675
6994
  {
6676
6995
  key: quote.id,
@@ -6682,7 +7001,7 @@ function StanceAccordion({
6682
7001
  marginBottom: "8px"
6683
7002
  }
6684
7003
  },
6685
- /* @__PURE__ */ React30.createElement(
7004
+ /* @__PURE__ */ React31.createElement(
6686
7005
  "p",
6687
7006
  {
6688
7007
  style: {
@@ -6695,7 +7014,7 @@ function StanceAccordion({
6695
7014
  },
6696
7015
  quote.text
6697
7016
  ),
6698
- verdict === "agreed" && /* @__PURE__ */ React30.createElement(
7017
+ verdict === "agreed" && /* @__PURE__ */ React31.createElement(
6699
7018
  "span",
6700
7019
  {
6701
7020
  style: {
@@ -6712,10 +7031,10 @@ function StanceAccordion({
6712
7031
  flexShrink: 0
6713
7032
  }
6714
7033
  },
6715
- /* @__PURE__ */ React30.createElement("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React30.createElement("path", { d: "M5 13l4 4L19 7" })),
7034
+ /* @__PURE__ */ React31.createElement("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React31.createElement("path", { d: "M5 13l4 4L19 7" })),
6716
7035
  "Agreed"
6717
7036
  ),
6718
- verdict === "disagreed" && /* @__PURE__ */ React30.createElement(
7037
+ verdict === "disagreed" && /* @__PURE__ */ React31.createElement(
6719
7038
  "span",
6720
7039
  {
6721
7040
  style: {
@@ -6732,10 +7051,10 @@ function StanceAccordion({
6732
7051
  flexShrink: 0
6733
7052
  }
6734
7053
  },
6735
- /* @__PURE__ */ React30.createElement("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React30.createElement("path", { d: "M6 18L18 6M6 6l12 12" })),
7054
+ /* @__PURE__ */ React31.createElement("svg", { width: "11", height: "11", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round" }, /* @__PURE__ */ React31.createElement("path", { d: "M6 18L18 6M6 6l12 12" })),
6736
7055
  "Disagreed"
6737
7056
  ),
6738
- sourceName && /* @__PURE__ */ React30.createElement(
7057
+ sourceName && /* @__PURE__ */ React31.createElement(
6739
7058
  "a",
6740
7059
  {
6741
7060
  href: quote.source_url || quote.sourceUrl,
@@ -6752,11 +7071,11 @@ function StanceAccordion({
6752
7071
  sourceName
6753
7072
  )
6754
7073
  );
6755
- })), !cached.reasoning && (!cached.sources || cached.sources.length === 0) && topicQuotes.length === 0 && /* @__PURE__ */ React30.createElement("p", { style: { fontSize: "14px", color: c.emptyText, fontStyle: "italic", padding: "8px 0" } }, "No detailed reasoning available for this topic."))))
7074
+ })), !cached.reasoning && (!cached.sources || cached.sources.length === 0) && topicQuotes.length === 0 && /* @__PURE__ */ React31.createElement("p", { style: { fontSize: "14px", color: c.emptyText, fontStyle: "italic", padding: "8px 0" } }, "No detailed reasoning available for this topic."))))
6756
7075
  )
6757
7076
  );
6758
7077
  }),
6759
- hasToggle && /* @__PURE__ */ React30.createElement(
7078
+ hasToggle && /* @__PURE__ */ React31.createElement(
6760
7079
  "button",
6761
7080
  {
6762
7081
  type: "button",
@@ -6794,6 +7113,7 @@ export {
6794
7113
  PoliticianCard,
6795
7114
  PoliticianProfile,
6796
7115
  RadarChartCore,
7116
+ SiteFooter,
6797
7117
  SiteHeader,
6798
7118
  SocialLinks,
6799
7119
  StanceAccordion,