@sensiblestats/widget-react 0.38.0 → 0.39.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // src/StatsWidget.tsx
2
- import { useCallback as useCallback5, useEffect as useEffect10, useMemo as useMemo2, useRef as useRef7 } from "react";
2
+ import { useCallback as useCallback5, useEffect as useEffect11, useMemo as useMemo2, useRef as useRef8 } from "react";
3
3
  import { StatsWidgetClient } from "@sensiblestats/widget-sdk";
4
4
 
5
5
  // src/kickoff.ts
@@ -21,6 +21,7 @@ var STRINGS = {
21
21
  placeholder: "Ask about a team, player or match\u2026",
22
22
  closeChat: "Close chat",
23
23
  newConversation: "New conversation",
24
+ moreOptions: "More options",
24
25
  chatDialogLabel: "SensibleStats chat",
25
26
  stopResponse: "Stop response",
26
27
  sendMessage: "Send message",
@@ -94,6 +95,7 @@ var STRINGS = {
94
95
  placeholder: "Bir tak\u0131m, oyuncu veya ma\xE7 hakk\u0131nda sor\u2026",
95
96
  closeChat: "Sohbeti kapat",
96
97
  newConversation: "Yeni sohbet",
98
+ moreOptions: "Di\u011Fer se\xE7enekler",
97
99
  chatDialogLabel: "SensibleStats sohbet",
98
100
  stopResponse: "Yan\u0131t\u0131 durdur",
99
101
  sendMessage: "Mesaj g\xF6nder",
@@ -190,6 +192,7 @@ function normalizeUi(cfg) {
190
192
  injectStyles: cfg.injectStyles ?? true,
191
193
  closeChat: strings.closeChat,
192
194
  newConversation: strings.newConversation,
195
+ moreOptions: strings.moreOptions,
193
196
  chatDialogLabel: strings.chatDialogLabel,
194
197
  stopResponse: strings.stopResponse,
195
198
  sendMessage: strings.sendMessage,
@@ -1378,7 +1381,7 @@ import { useState as useState2 } from "react";
1378
1381
  var SS_LOGO_DATA_URI = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjoAAAI6CAYAAAAuSOLAAAAAAXNSR0IArs4c6QAAAJplWElmTU0AKgAAAAgAAwESAAMAAAABAAEAAAExAAIAAAA9AAAAModpAAQAAAABAAAAcAAAAABBZG9iZSBQaG90b3Nob3AgMjYuMTAgKDIwMjUwNzMwLm0uMzE2NiAwN2IxMjM0KSAgKE1hY2ludG9zaCkAAAADoAEAAwAAAAEAAQAAoAIABAAAAAEAAAI6oAMABAAAAAEAAAI6AAAAACwGtVwAAAQwaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPnhtcC5kaWQ6QzBGRTM5NjM5NEJEMTFGMEJGNjZEMjUyN0U0MzU5RUM8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6QzBGRTM5NjI5NEJEMTFGMEJGNjZEMjUyN0U0MzU5RUM8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdFJlZjppbnN0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";
1379
1382
 
1380
1383
  // src/components/Icons.tsx
1381
- import { jsx } from "react/jsx-runtime";
1384
+ import { jsx, jsxs } from "react/jsx-runtime";
1382
1385
  function SsMark({ className }) {
1383
1386
  return /* @__PURE__ */ jsx("img", { className, src: SS_LOGO_DATA_URI, alt: "", "aria-hidden": "true" });
1384
1387
  }
@@ -1391,8 +1394,12 @@ function CloseIcon() {
1391
1394
  function ChevronIcon() {
1392
1395
  return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", width: "1em", height: "1em", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) });
1393
1396
  }
1394
- function NewChatIcon() {
1395
- return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", width: "1em", height: "1em", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { fill: "none", d: "M12 5v14M5 12h14", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }) });
1397
+ function KebabIcon() {
1398
+ return /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", width: "1em", height: "1em", "aria-hidden": "true", children: /* @__PURE__ */ jsxs("g", { fill: "currentColor", children: [
1399
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "5", r: "1.6" }),
1400
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "1.6" }),
1401
+ /* @__PURE__ */ jsx("circle", { cx: "12", cy: "19", r: "1.6" })
1402
+ ] }) });
1396
1403
  }
1397
1404
  var DASHBOARD_EMOJI = {
1398
1405
  football: "\u26BD",
@@ -1423,11 +1430,11 @@ function BrandMark({ logoUrl, className }) {
1423
1430
  }
1424
1431
 
1425
1432
  // src/components/GreetingBubble.tsx
1426
- import { jsx as jsx3, jsxs } from "react/jsx-runtime";
1433
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
1427
1434
  function GreetingBubble({ text, onOpen, onDismiss, dismissLabel = "Dismiss" }) {
1428
- return /* @__PURE__ */ jsxs("div", { className: "ss-w-greeting", role: "note", children: [
1429
- /* @__PURE__ */ jsxs("button", { type: "button", className: "ss-w-greeting-body", onClick: onOpen, children: [
1430
- /* @__PURE__ */ jsxs("span", { className: "ss-w-greeting-dots", "aria-hidden": "true", children: [
1435
+ return /* @__PURE__ */ jsxs2("div", { className: "ss-w-greeting", role: "note", children: [
1436
+ /* @__PURE__ */ jsxs2("button", { type: "button", className: "ss-w-greeting-body", onClick: onOpen, children: [
1437
+ /* @__PURE__ */ jsxs2("span", { className: "ss-w-greeting-dots", "aria-hidden": "true", children: [
1431
1438
  /* @__PURE__ */ jsx3("i", {}),
1432
1439
  /* @__PURE__ */ jsx3("i", {}),
1433
1440
  /* @__PURE__ */ jsx3("i", {})
@@ -1439,7 +1446,7 @@ function GreetingBubble({ text, onOpen, onDismiss, dismissLabel = "Dismiss" }) {
1439
1446
  }
1440
1447
 
1441
1448
  // src/components/ChatFab.tsx
1442
- import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
1449
+ import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
1443
1450
  function ChatFab({ label, greeting, popupText, logoUrl, onOpen, onDismissPopup, dismissLabel = "Dismiss", introAllowed = false, onIntroStart }) {
1444
1451
  const bubble = popupText ?? greeting;
1445
1452
  const [intro, setIntro] = useState3(false);
@@ -1451,28 +1458,93 @@ function ChatFab({ label, greeting, popupText, logoUrl, onOpen, onDismissPopup,
1451
1458
  onIntroStart?.();
1452
1459
  }
1453
1460
  }, [bubble, onIntroStart]);
1454
- return /* @__PURE__ */ jsxs2("div", { className: intro ? "ss-w-fab-wrap ss-w-intro" : "ss-w-fab-wrap", children: [
1461
+ return /* @__PURE__ */ jsxs3("div", { className: intro ? "ss-w-fab-wrap ss-w-intro" : "ss-w-fab-wrap", children: [
1455
1462
  bubble ? /* @__PURE__ */ jsx4(GreetingBubble, { text: bubble, onOpen, onDismiss: popupText ? onDismissPopup : void 0, dismissLabel }) : null,
1456
1463
  /* @__PURE__ */ jsx4("button", { type: "button", className: "ss-w-fab", "aria-label": label, onClick: onOpen, children: /* @__PURE__ */ jsx4(BrandMark, { logoUrl, className: "ss-w-fab-mark" }) })
1457
1464
  ] });
1458
1465
  }
1459
1466
 
1460
1467
  // src/components/ChatPanel.tsx
1461
- import { useEffect as useEffect9, useState as useState17 } from "react";
1468
+ import { useEffect as useEffect10, useState as useState18 } from "react";
1462
1469
 
1463
1470
  // src/components/ChatHeader.tsx
1464
- import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
1465
- function ChatHeader({ onClose, closeLabel = "Close chat", logoUrl, headerTitle, onNewConversation, canReset, newConversationLabel = "New conversation" }) {
1466
- return /* @__PURE__ */ jsxs3("header", { className: "ss-w-header", children: [
1471
+ import { useEffect as useEffect5, useRef as useRef5, useState as useState4 } from "react";
1472
+ import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
1473
+ function ChatHeader({
1474
+ onClose,
1475
+ closeLabel = "Close chat",
1476
+ logoUrl,
1477
+ headerTitle,
1478
+ onNewConversation,
1479
+ canReset,
1480
+ newConversationLabel = "New conversation",
1481
+ moreOptionsLabel = "More options"
1482
+ }) {
1483
+ const [menuOpen, setMenuOpen] = useState4(false);
1484
+ const wrapRef = useRef5(null);
1485
+ const kebabRef = useRef5(null);
1486
+ const firstItemRef = useRef5(null);
1487
+ const hasMenu = !!(canReset && onNewConversation);
1488
+ useEffect5(() => {
1489
+ if (menuOpen) firstItemRef.current?.focus();
1490
+ }, [menuOpen]);
1491
+ useEffect5(() => {
1492
+ if (!menuOpen) return;
1493
+ const onPointer = (e) => {
1494
+ if (!wrapRef.current?.contains(e.target)) setMenuOpen(false);
1495
+ };
1496
+ const onKey = (e) => {
1497
+ if (e.key === "Escape") {
1498
+ setMenuOpen(false);
1499
+ kebabRef.current?.focus();
1500
+ }
1501
+ };
1502
+ document.addEventListener("mousedown", onPointer);
1503
+ document.addEventListener("keydown", onKey);
1504
+ return () => {
1505
+ document.removeEventListener("mousedown", onPointer);
1506
+ document.removeEventListener("keydown", onKey);
1507
+ };
1508
+ }, [menuOpen]);
1509
+ const runNewConversation = () => {
1510
+ setMenuOpen(false);
1511
+ onNewConversation?.();
1512
+ };
1513
+ return /* @__PURE__ */ jsxs4("header", { className: "ss-w-header", children: [
1467
1514
  /* @__PURE__ */ jsx5(BrandMark, { logoUrl, className: "ss-w-header-mark" }),
1468
1515
  /* @__PURE__ */ jsx5("span", { className: "ss-w-header-title", children: headerTitle ?? "SensibleStats" }),
1469
- canReset && onNewConversation ? /* @__PURE__ */ jsx5("button", { type: "button", className: "ss-w-newconv", "aria-label": newConversationLabel, onClick: onNewConversation, children: /* @__PURE__ */ jsx5(NewChatIcon, {}) }) : null,
1516
+ hasMenu ? /* @__PURE__ */ jsxs4("div", { className: "ss-w-menu-wrap", ref: wrapRef, children: [
1517
+ /* @__PURE__ */ jsx5(
1518
+ "button",
1519
+ {
1520
+ type: "button",
1521
+ className: "ss-w-kebab",
1522
+ ref: kebabRef,
1523
+ "aria-haspopup": "menu",
1524
+ "aria-expanded": menuOpen,
1525
+ "aria-label": moreOptionsLabel,
1526
+ onClick: () => setMenuOpen((open) => !open),
1527
+ children: /* @__PURE__ */ jsx5(KebabIcon, {})
1528
+ }
1529
+ ),
1530
+ menuOpen ? /* @__PURE__ */ jsx5("div", { className: "ss-w-menu", role: "menu", "aria-label": moreOptionsLabel, children: /* @__PURE__ */ jsx5(
1531
+ "button",
1532
+ {
1533
+ type: "button",
1534
+ className: "ss-w-menu-item",
1535
+ role: "menuitem",
1536
+ ref: firstItemRef,
1537
+ onClick: runNewConversation,
1538
+ children: /* @__PURE__ */ jsx5("span", { children: newConversationLabel })
1539
+ }
1540
+ ) }) : null
1541
+ ] }) : null,
1470
1542
  /* @__PURE__ */ jsx5("button", { type: "button", className: "ss-w-close", "aria-label": closeLabel, onClick: onClose, children: /* @__PURE__ */ jsx5(CloseIcon, {}) })
1471
1543
  ] });
1472
1544
  }
1473
1545
 
1474
1546
  // src/components/MessageList.tsx
1475
- import { useEffect as useEffect8, useRef as useRef6 } from "react";
1547
+ import { useEffect as useEffect9, useRef as useRef7 } from "react";
1476
1548
 
1477
1549
  // src/components/Markdown.tsx
1478
1550
  import ReactMarkdown from "react-markdown";
@@ -1490,8 +1562,8 @@ function Markdown({ text }) {
1490
1562
  }
1491
1563
 
1492
1564
  // src/components/EntityCardList.tsx
1493
- import { useState as useState4 } from "react";
1494
- import { jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
1565
+ import { useState as useState5 } from "react";
1566
+ import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
1495
1567
  var MAX_VISIBLE = 3;
1496
1568
  var RECORD_RE = /^(\d+)-(\d+)-(\d+)$/;
1497
1569
  function initials(name) {
@@ -1512,7 +1584,7 @@ function Crest({ image, label }) {
1512
1584
  }
1513
1585
  function FormBar({ w, d, l }) {
1514
1586
  if (w + d + l === 0) return null;
1515
- return /* @__PURE__ */ jsxs4("span", { className: "ss-w-form", "aria-hidden": "true", children: [
1587
+ return /* @__PURE__ */ jsxs5("span", { className: "ss-w-form", "aria-hidden": "true", children: [
1516
1588
  w > 0 ? /* @__PURE__ */ jsx7("span", { className: "ss-w-form-w", style: { flexGrow: w } }) : null,
1517
1589
  d > 0 ? /* @__PURE__ */ jsx7("span", { className: "ss-w-form-d", style: { flexGrow: d } }) : null,
1518
1590
  l > 0 ? /* @__PURE__ */ jsx7("span", { className: "ss-w-form-l", style: { flexGrow: l } }) : null
@@ -1521,12 +1593,12 @@ function FormBar({ w, d, l }) {
1521
1593
  function StatCellView({ s }) {
1522
1594
  const m = RECORD_RE.exec(s.value);
1523
1595
  if (m) {
1524
- return /* @__PURE__ */ jsxs4("div", { className: "ss-w-ecard-cell", children: [
1596
+ return /* @__PURE__ */ jsxs5("div", { className: "ss-w-ecard-cell", children: [
1525
1597
  /* @__PURE__ */ jsx7("span", { className: "ss-w-ecard-cval", children: /* @__PURE__ */ jsx7(FormBar, { w: Number(m[1]), d: Number(m[2]), l: Number(m[3]) }) }),
1526
1598
  /* @__PURE__ */ jsx7("span", { className: "ss-w-ecard-clabel", children: s.value })
1527
1599
  ] });
1528
1600
  }
1529
- return /* @__PURE__ */ jsxs4("div", { className: "ss-w-ecard-cell", children: [
1601
+ return /* @__PURE__ */ jsxs5("div", { className: "ss-w-ecard-cell", children: [
1530
1602
  /* @__PURE__ */ jsx7("span", { className: "ss-w-ecard-cval", children: s.value }),
1531
1603
  /* @__PURE__ */ jsx7("span", { className: "ss-w-ecard-clabel", children: s.label })
1532
1604
  ] });
@@ -1538,7 +1610,7 @@ function StatStrip({ stats }) {
1538
1610
  }
1539
1611
  function CardHeader({ c, showScopeCrest }) {
1540
1612
  const onlyScope = c.scopes.length === 1 ? c.scopes[0] : null;
1541
- return /* @__PURE__ */ jsxs4("div", { className: "ss-w-ecard-hd", children: [
1613
+ return /* @__PURE__ */ jsxs5("div", { className: "ss-w-ecard-hd", children: [
1542
1614
  /* @__PURE__ */ jsx7(
1543
1615
  "span",
1544
1616
  {
@@ -1547,11 +1619,11 @@ function CardHeader({ c, showScopeCrest }) {
1547
1619
  children: c.image ? "" : initials(c.name)
1548
1620
  }
1549
1621
  ),
1550
- /* @__PURE__ */ jsxs4("span", { className: "ss-w-ecard-idtext", children: [
1622
+ /* @__PURE__ */ jsxs5("span", { className: "ss-w-ecard-idtext", children: [
1551
1623
  /* @__PURE__ */ jsx7("span", { className: "ss-w-nm", children: c.name }),
1552
1624
  c.sub ? /* @__PURE__ */ jsx7("span", { className: "ss-w-sub", children: c.sub }) : null
1553
1625
  ] }),
1554
- /* @__PURE__ */ jsxs4("span", { className: "ss-w-ecard-meta", children: [
1626
+ /* @__PURE__ */ jsxs5("span", { className: "ss-w-ecard-meta", children: [
1555
1627
  showScopeCrest && onlyScope?.image ? /* @__PURE__ */ jsx7(Crest, { image: onlyScope.image, label: onlyScope.label }) : null,
1556
1628
  c.season ? /* @__PURE__ */ jsx7("span", { className: "ss-w-ecard-season", children: shortSeason(c.season) }) : null
1557
1629
  ] })
@@ -1574,43 +1646,43 @@ function ScopeTabs({ scopes, active, onSelect }) {
1574
1646
  )) });
1575
1647
  }
1576
1648
  function EntityCardItem({ c }) {
1577
- const [active, setActive] = useState4(0);
1649
+ const [active, setActive] = useState5(0);
1578
1650
  const hasBody = c.scopes.length > 0;
1579
1651
  if (!hasBody) {
1580
1652
  return /* @__PURE__ */ jsx7("div", { className: "ss-w-ecard ss-w-ecard-bare", "data-kind": c.kind, children: /* @__PURE__ */ jsx7(CardHeader, { c, showScopeCrest: false }) });
1581
1653
  }
1582
1654
  const multi = c.scopes.length > 1;
1583
1655
  const scope = c.scopes[multi ? c.scopes[active] ? active : 0 : 0];
1584
- return /* @__PURE__ */ jsxs4("div", { className: "ss-w-ecard", "data-kind": c.kind, children: [
1656
+ return /* @__PURE__ */ jsxs5("div", { className: "ss-w-ecard", "data-kind": c.kind, children: [
1585
1657
  /* @__PURE__ */ jsx7(CardHeader, { c, showScopeCrest: !multi }),
1586
1658
  multi ? /* @__PURE__ */ jsx7(ScopeTabs, { scopes: c.scopes, active, onSelect: setActive }) : null,
1587
1659
  /* @__PURE__ */ jsx7(StatStrip, { stats: scope.stats })
1588
1660
  ] });
1589
1661
  }
1590
1662
  function EntityCardList({ cards, disabled, showLessLabel = "Show less", showMoreLabel = (n) => `Show ${n} more` }) {
1591
- const [expanded, setExpanded] = useState4(false);
1663
+ const [expanded, setExpanded] = useState5(false);
1592
1664
  if (cards.length === 0) return null;
1593
1665
  const visible = expanded ? cards : cards.slice(0, MAX_VISIBLE);
1594
1666
  const overflow = cards.length - MAX_VISIBLE;
1595
- return /* @__PURE__ */ jsxs4("div", { className: "ss-w-cards", children: [
1667
+ return /* @__PURE__ */ jsxs5("div", { className: "ss-w-cards", children: [
1596
1668
  visible.map((c) => /* @__PURE__ */ jsx7(EntityCardItem, { c }, c.id)),
1597
1669
  overflow > 0 ? /* @__PURE__ */ jsx7("button", { type: "button", className: "ss-w-cards-more", disabled, onClick: () => setExpanded((v) => !v), children: expanded ? showLessLabel : showMoreLabel(overflow) }) : null
1598
1670
  ] });
1599
1671
  }
1600
1672
 
1601
1673
  // src/components/BettingInsightList.tsx
1602
- import { useState as useState8 } from "react";
1674
+ import { useState as useState9 } from "react";
1603
1675
 
1604
1676
  // src/components/AddToSlipButton.tsx
1605
- import { useCallback as useCallback3, useState as useState5 } from "react";
1677
+ import { useCallback as useCallback3, useState as useState6 } from "react";
1606
1678
  import { isAddToSlipResult } from "@sensiblestats/widget-sdk";
1607
1679
 
1608
1680
  // src/components/Toast.tsx
1609
- import { useEffect as useEffect5 } from "react";
1681
+ import { useEffect as useEffect6 } from "react";
1610
1682
  import { jsx as jsx8 } from "react/jsx-runtime";
1611
1683
  var DISMISS_MS = 4e3;
1612
1684
  function Toast({ toast, onDismiss }) {
1613
- useEffect5(() => {
1685
+ useEffect6(() => {
1614
1686
  if (!toast) return;
1615
1687
  const timer = setTimeout(onDismiss, DISMISS_MS);
1616
1688
  return () => clearTimeout(timer);
@@ -1620,7 +1692,7 @@ function Toast({ toast, onDismiss }) {
1620
1692
  }
1621
1693
 
1622
1694
  // src/components/AddToSlipButton.tsx
1623
- import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
1695
+ import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
1624
1696
  function withTimeout(value) {
1625
1697
  return Promise.race([
1626
1698
  value,
@@ -1628,9 +1700,9 @@ function withTimeout(value) {
1628
1700
  ]);
1629
1701
  }
1630
1702
  function SlipButton({ selection, shownOdds, marketName, slip, ui }) {
1631
- const [pending, setPending] = useState5(false);
1632
- const [settled, setSettled] = useState5(false);
1633
- const [toast, setToast] = useState5(null);
1703
+ const [pending, setPending] = useState6(false);
1704
+ const [settled, setSettled] = useState6(false);
1705
+ const [toast, setToast] = useState6(null);
1634
1706
  const dismiss = useCallback3(() => setToast(null), []);
1635
1707
  const handler = slip.onAddToSlip;
1636
1708
  if (!ui || !handler || !selection) return null;
@@ -1654,7 +1726,7 @@ function SlipButton({ selection, shownOdds, marketName, slip, ui }) {
1654
1726
  setPending(false);
1655
1727
  }
1656
1728
  };
1657
- return /* @__PURE__ */ jsxs5("div", { className: "ss-w-slip", children: [
1729
+ return /* @__PURE__ */ jsxs6("div", { className: "ss-w-slip", children: [
1658
1730
  /* @__PURE__ */ jsx9(
1659
1731
  "button",
1660
1732
  {
@@ -1674,7 +1746,7 @@ function AddToSlipButton({ it, slip, ui }) {
1674
1746
  }
1675
1747
 
1676
1748
  // src/components/OddsMovementBadge.tsx
1677
- import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
1749
+ import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
1678
1750
  function OddsMovementBadge({
1679
1751
  previous,
1680
1752
  current,
@@ -1687,7 +1759,7 @@ function OddsMovementBadge({
1687
1759
  return (
1688
1760
  // Strikethrough is invisible to screen readers, so the whole was/now/direction sentence rides
1689
1761
  // on one aria-label and the visual glyphs are hidden from the accessibility tree.
1690
- /* @__PURE__ */ jsxs6("span", { className: "ss-w-move", role: "img", "aria-label": label, children: [
1762
+ /* @__PURE__ */ jsxs7("span", { className: "ss-w-move", role: "img", "aria-label": label, children: [
1691
1763
  /* @__PURE__ */ jsx10("span", { className: "ss-w-move-prev", "aria-hidden": "true", children: previous }),
1692
1764
  /* @__PURE__ */ jsx10("span", { className: "ss-w-move-arrow", "aria-hidden": "true", children: direction === "shortened" ? "\u25BC" : "\u25B2" })
1693
1765
  ] })
@@ -1695,14 +1767,14 @@ function OddsMovementBadge({
1695
1767
  }
1696
1768
 
1697
1769
  // src/components/Crest.tsx
1698
- import { useState as useState6 } from "react";
1770
+ import { useState as useState7 } from "react";
1699
1771
  import { jsx as jsx11 } from "react/jsx-runtime";
1700
1772
  function initials2(name) {
1701
1773
  return (name ?? "").trim().slice(0, 1).toUpperCase() || "?";
1702
1774
  }
1703
1775
  function Crest2({ url, name, kind }) {
1704
1776
  const cls = kind === "comp" ? "ss-w-bi-comp-logo" : "ss-w-bi-crest";
1705
- const [failed, setFailed] = useState6(false);
1777
+ const [failed, setFailed] = useState7(false);
1706
1778
  if (url && !failed) {
1707
1779
  return /* @__PURE__ */ jsx11("img", { className: cls, src: url, alt: "", "aria-hidden": "true", onError: () => setFailed(true) });
1708
1780
  }
@@ -1710,15 +1782,15 @@ function Crest2({ url, name, kind }) {
1710
1782
  }
1711
1783
 
1712
1784
  // src/components/PinToggle.tsx
1713
- import { useCallback as useCallback4, useState as useState7 } from "react";
1714
- import { jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
1785
+ import { useCallback as useCallback4, useState as useState8 } from "react";
1786
+ import { jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
1715
1787
  var PIN_GLYPHS = {
1716
1788
  pin: { viewBox: "0 0 24 24", strokeWidth: 1.4, transform: "scale(1.5)", d: "M9.5 1.5 14.5 6.5 13 8l-.5-.5-3 3 .3 2.2-1.4 1.4L5.6 11.3l-3.3 3.3-1-1 3.3-3.3L1.9 7.5l1.4-1.4 2.2.3 3-3L8 2.9z" },
1717
1789
  star: { viewBox: "0 0 24 24", strokeWidth: 2, d: "M12 2.5l2.9 5.9 6.5.95-4.7 4.58 1.1 6.47L12 17.35 6.1 20.4l1.1-6.47L2.5 9.35l6.5-.95z" },
1718
1790
  bookmark: { viewBox: "0 0 24 24", strokeWidth: 2, d: "M7 3h10a1.5 1.5 0 0 1 1.5 1.5V21l-6.5-3.6L5.5 21V4.5A1.5 1.5 0 0 1 7 3z" }
1719
1791
  };
1720
1792
  function PinToggle({ pin, monitor, ui }) {
1721
- const [toast, setToast] = useState7(null);
1793
+ const [toast, setToast] = useState8(null);
1722
1794
  const dismiss = useCallback4(() => setToast(null), []);
1723
1795
  if (!monitor || !monitor.enabled) return null;
1724
1796
  const key = pinKey(pin);
@@ -1733,7 +1805,7 @@ function PinToggle({ pin, monitor, ui }) {
1733
1805
  }
1734
1806
  };
1735
1807
  const glyph = PIN_GLYPHS[ui.pinIcon];
1736
- return /* @__PURE__ */ jsxs7("div", { className: "ss-w-pin-wrap", children: [
1808
+ return /* @__PURE__ */ jsxs8("div", { className: "ss-w-pin-wrap", children: [
1737
1809
  /* @__PURE__ */ jsx12(
1738
1810
  "button",
1739
1811
  {
@@ -1763,17 +1835,17 @@ function PinToggle({ pin, monitor, ui }) {
1763
1835
  }
1764
1836
 
1765
1837
  // src/components/BettingInsightList.tsx
1766
- import { Fragment, jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
1838
+ import { Fragment, jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
1767
1839
  function StatRows({ stats }) {
1768
- return /* @__PURE__ */ jsx13("div", { className: "ss-w-bi-rows", children: stats.map((s) => /* @__PURE__ */ jsxs8("div", { className: "ss-w-bi-row", children: [
1840
+ return /* @__PURE__ */ jsx13("div", { className: "ss-w-bi-rows", children: stats.map((s) => /* @__PURE__ */ jsxs9("div", { className: "ss-w-bi-row", children: [
1769
1841
  /* @__PURE__ */ jsx13("span", { className: "ss-w-bi-row-lbl", children: s.label }),
1770
1842
  /* @__PURE__ */ jsx13("span", { className: "ss-w-bi-row-num", children: s.value })
1771
1843
  ] }, `${s.label}:${s.value}`)) });
1772
1844
  }
1773
1845
  function ScopedStats({ scopes }) {
1774
- const [active, setActive] = useState8(0);
1846
+ const [active, setActive] = useState9(0);
1775
1847
  const current = scopes[active] ?? scopes[0] ?? { key: "", label: "", stats: [] };
1776
- return /* @__PURE__ */ jsxs8("div", { className: "ss-w-bi-scoped", children: [
1848
+ return /* @__PURE__ */ jsxs9("div", { className: "ss-w-bi-scoped", children: [
1777
1849
  /* @__PURE__ */ jsx13("div", { className: "ss-w-bi-scopes", role: "group", children: scopes.map((s, i) => /* @__PURE__ */ jsx13("button", { type: "button", className: "ss-w-bi-chip", "aria-pressed": i === active, onClick: () => setActive(i), children: s.label }, s.key)) }),
1778
1850
  /* @__PURE__ */ jsx13(StatRows, { stats: current.stats }, current.key)
1779
1851
  ] });
@@ -1782,15 +1854,15 @@ function hasStatsContent(it) {
1782
1854
  return !!it.scopes && it.scopes.length >= 2 || it.stats.length > 0;
1783
1855
  }
1784
1856
  function ReasonStrip({ it, ui }) {
1785
- const [open, setOpen] = useState8(false);
1857
+ const [open, setOpen] = useState9(false);
1786
1858
  const hasScopes = !!it.scopes && it.scopes.length >= 2;
1787
1859
  const hasStats = hasStatsContent(it);
1788
1860
  const hasText = !!it.text;
1789
1861
  if (!hasText && !hasStats) return null;
1790
1862
  const expandable = hasStats || (it.text?.length ?? 0) > 90;
1791
- return /* @__PURE__ */ jsxs8("div", { className: "ss-w-bi-reason", children: [
1863
+ return /* @__PURE__ */ jsxs9("div", { className: "ss-w-bi-reason", children: [
1792
1864
  /* @__PURE__ */ jsx13("span", { className: "ss-w-bi-chart", "aria-hidden": "true" }),
1793
- /* @__PURE__ */ jsxs8("div", { className: "ss-w-bi-reason-body", children: [
1865
+ /* @__PURE__ */ jsxs9("div", { className: "ss-w-bi-reason-body", children: [
1794
1866
  hasText ? /* @__PURE__ */ jsx13("p", { className: `ss-w-bi-text${open ? "" : " ss-w-bi-text-clamp"}`, children: it.text }) : null,
1795
1867
  open && hasStats ? hasScopes ? /* @__PURE__ */ jsx13(ScopedStats, { scopes: it.scopes }) : /* @__PURE__ */ jsx13(StatRows, { stats: it.stats }) : null
1796
1868
  ] }),
@@ -1809,7 +1881,7 @@ function ReasonStrip({ it, ui }) {
1809
1881
  }
1810
1882
  function CardFixture({ it }) {
1811
1883
  if (it.homeTeamName && it.awayTeamName) {
1812
- return /* @__PURE__ */ jsxs8(Fragment, { children: [
1884
+ return /* @__PURE__ */ jsxs9(Fragment, { children: [
1813
1885
  /* @__PURE__ */ jsx13(Crest2, { kind: "team", url: it.homeCrest, name: it.homeTeamName }),
1814
1886
  /* @__PURE__ */ jsx13("span", { className: "ss-w-bi-team", children: it.homeTeamName }),
1815
1887
  /* @__PURE__ */ jsx13("span", { className: "ss-w-bi-vs", "aria-hidden": "true", children: "vs" }),
@@ -1819,7 +1891,7 @@ function CardFixture({ it }) {
1819
1891
  }
1820
1892
  if (it.fixture) return /* @__PURE__ */ jsx13("span", { className: "ss-w-bi-fixture-txt", children: it.fixture });
1821
1893
  if (it.competition) {
1822
- return /* @__PURE__ */ jsxs8(Fragment, { children: [
1894
+ return /* @__PURE__ */ jsxs9(Fragment, { children: [
1823
1895
  /* @__PURE__ */ jsx13(Crest2, { kind: "comp", url: it.competitionCrest, name: it.competition }),
1824
1896
  /* @__PURE__ */ jsx13("span", { className: "ss-w-bi-comp", children: it.competition })
1825
1897
  ] });
@@ -1834,16 +1906,16 @@ function InsightCard({ it, ui, slip, monitor }) {
1834
1906
  const compInMeta = leftIsFixture && !!it.competition;
1835
1907
  const showPin = !!monitor && it.pinEnabled;
1836
1908
  const showHeader = leftIsFixture || !!it.competition || live || !!kickoff || showPin;
1837
- return /* @__PURE__ */ jsxs8("div", { className: "ss-w-binsight", children: [
1838
- showHeader ? /* @__PURE__ */ jsxs8("div", { className: "ss-w-bi-header", children: [
1909
+ return /* @__PURE__ */ jsxs9("div", { className: "ss-w-binsight", children: [
1910
+ showHeader ? /* @__PURE__ */ jsxs9("div", { className: "ss-w-bi-header", children: [
1839
1911
  /* @__PURE__ */ jsx13("span", { className: "ss-w-bi-header-left", children: /* @__PURE__ */ jsx13(CardFixture, { it }) }),
1840
- /* @__PURE__ */ jsxs8("span", { className: "ss-w-bi-header-right", children: [
1841
- live ? /* @__PURE__ */ jsxs8("span", { className: "ss-w-bi-live", children: [
1912
+ /* @__PURE__ */ jsxs9("span", { className: "ss-w-bi-header-right", children: [
1913
+ live ? /* @__PURE__ */ jsxs9("span", { className: "ss-w-bi-live", children: [
1842
1914
  /* @__PURE__ */ jsx13("span", { className: "ss-w-bi-live-dot", "aria-hidden": "true" }),
1843
1915
  ui?.liveLabel ?? "Live"
1844
1916
  ] }) : null,
1845
1917
  compInMeta ? /* @__PURE__ */ jsx13("span", { className: "ss-w-bi-comp-meta", title: it.competition, children: /* @__PURE__ */ jsx13(Crest2, { kind: "comp", url: it.competitionCrest, name: it.competition }) }) : null,
1846
- kickoff ? /* @__PURE__ */ jsxs8("span", { className: "ss-w-bi-kick", children: [
1918
+ kickoff ? /* @__PURE__ */ jsxs9("span", { className: "ss-w-bi-kick", children: [
1847
1919
  kickoff.dayLabel,
1848
1920
  " ",
1849
1921
  kickoff.time
@@ -1851,15 +1923,15 @@ function InsightCard({ it, ui, slip, monitor }) {
1851
1923
  showPin && ui ? /* @__PURE__ */ jsx13(PinToggle, { ui, monitor, pin: { kind: "match", matchId: it.matchId } }) : null
1852
1924
  ] })
1853
1925
  ] }) : null,
1854
- /* @__PURE__ */ jsxs8("div", { className: "ss-w-bi-action-row", children: [
1855
- /* @__PURE__ */ jsxs8("span", { className: "ss-w-bi-pick", children: [
1926
+ /* @__PURE__ */ jsxs9("div", { className: "ss-w-bi-action-row", children: [
1927
+ /* @__PURE__ */ jsxs9("span", { className: "ss-w-bi-pick", children: [
1856
1928
  /* @__PURE__ */ jsx13("span", { className: "ss-w-bi-market", children: it.market }),
1857
- it.selection ? /* @__PURE__ */ jsxs8(Fragment, { children: [
1929
+ it.selection ? /* @__PURE__ */ jsxs9(Fragment, { children: [
1858
1930
  /* @__PURE__ */ jsx13("span", { className: "ss-w-bi-pick-dot", "aria-hidden": "true", children: "\xB7" }),
1859
1931
  /* @__PURE__ */ jsx13("span", { className: "ss-w-bi-sel", children: it.selection })
1860
1932
  ] }) : null
1861
1933
  ] }),
1862
- it.odds ? /* @__PURE__ */ jsxs8("span", { className: "ss-w-bi-odds", children: [
1934
+ it.odds ? /* @__PURE__ */ jsxs9("span", { className: "ss-w-bi-odds", children: [
1863
1935
  /* @__PURE__ */ jsx13("b", { children: it.odds }),
1864
1936
  /* @__PURE__ */ jsx13(OddsMovementBadge, { previous: it.previousOdds, current: it.odds, direction: it.movementDirection, ui }),
1865
1937
  it.bookmaker ? /* @__PURE__ */ jsx13("span", { className: "ss-w-bi-book", children: it.bookmaker }) : null
@@ -1892,16 +1964,16 @@ function BettingInsightList({ insights, ui, slip, monitor }) {
1892
1964
  }
1893
1965
 
1894
1966
  // src/components/MarketOddsCardList.tsx
1895
- import { useState as useState9 } from "react";
1896
- import { Fragment as Fragment2, jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
1967
+ import { useState as useState10 } from "react";
1968
+ import { Fragment as Fragment2, jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
1897
1969
  function OddsRow({ vm, row, ui, slip, inSlipIds }) {
1898
1970
  const selection = vm.addToSlipEnabled ? marketOddsRowToSlipSelection(vm, row, slip.conversationId) : null;
1899
1971
  const inSlip = !!inSlipIds && row.matchOddsId != null && !!inSlipIds[row.matchOddsId];
1900
- return /* @__PURE__ */ jsxs9("div", { className: "ss-w-mo-row", children: [
1972
+ return /* @__PURE__ */ jsxs10("div", { className: "ss-w-mo-row", children: [
1901
1973
  /* @__PURE__ */ jsx14("span", { className: "ss-w-mo-sel", children: row.selection }),
1902
1974
  /* @__PURE__ */ jsx14(OddsMovementBadge, { previous: row.previousOdds, current: row.odds, direction: row.movementDirection, ui }),
1903
1975
  /* @__PURE__ */ jsx14("span", { className: "ss-w-mo-price", children: row.odds }),
1904
- inSlip && ui ? /* @__PURE__ */ jsxs9("span", { className: "ss-w-mon-inslip", children: [
1976
+ inSlip && ui ? /* @__PURE__ */ jsxs10("span", { className: "ss-w-mon-inslip", children: [
1905
1977
  "\u2713 ",
1906
1978
  ui.inSlipLabel
1907
1979
  ] }) : null,
@@ -1909,24 +1981,24 @@ function OddsRow({ vm, row, ui, slip, inSlipIds }) {
1909
1981
  ] });
1910
1982
  }
1911
1983
  function MarketOddsCard({ vm, ui, slip, monitor, inSlipIds, hideHeader, pinRef }) {
1912
- const [open, setOpen] = useState9(false);
1984
+ const [open, setOpen] = useState10(false);
1913
1985
  const kickoff = vm.kickoffUtc && ui?.bettingKickoff ? ui.bettingKickoff(vm.kickoffUtc) : void 0;
1914
1986
  const hasNamedTeams = !!vm.homeTeamName && !!vm.awayTeamName;
1915
1987
  const showPin = !!monitor && vm.pinEnabled;
1916
1988
  const showHeader = !!vm.competition || vm.isLive || !!kickoff || showPin;
1917
- return /* @__PURE__ */ jsxs9("div", { className: hideHeader ? "ss-w-mocard ss-w-mocard--bare" : "ss-w-mocard", children: [
1918
- !hideHeader && /* @__PURE__ */ jsxs9(Fragment2, { children: [
1919
- showHeader ? /* @__PURE__ */ jsxs9("div", { className: "ss-w-bi-header", children: [
1920
- /* @__PURE__ */ jsx14("span", { className: "ss-w-bi-header-left", children: vm.competition ? /* @__PURE__ */ jsxs9(Fragment2, { children: [
1989
+ return /* @__PURE__ */ jsxs10("div", { className: hideHeader ? "ss-w-mocard ss-w-mocard--bare" : "ss-w-mocard", children: [
1990
+ !hideHeader && /* @__PURE__ */ jsxs10(Fragment2, { children: [
1991
+ showHeader ? /* @__PURE__ */ jsxs10("div", { className: "ss-w-bi-header", children: [
1992
+ /* @__PURE__ */ jsx14("span", { className: "ss-w-bi-header-left", children: vm.competition ? /* @__PURE__ */ jsxs10(Fragment2, { children: [
1921
1993
  /* @__PURE__ */ jsx14(Crest2, { kind: "comp", url: vm.competitionCrest, name: vm.competition }),
1922
1994
  /* @__PURE__ */ jsx14("span", { className: "ss-w-bi-comp", children: vm.competition })
1923
1995
  ] }) : null }),
1924
- /* @__PURE__ */ jsxs9("span", { className: "ss-w-bi-header-right", children: [
1925
- vm.isLive ? /* @__PURE__ */ jsxs9("span", { className: "ss-w-bi-live", children: [
1996
+ /* @__PURE__ */ jsxs10("span", { className: "ss-w-bi-header-right", children: [
1997
+ vm.isLive ? /* @__PURE__ */ jsxs10("span", { className: "ss-w-bi-live", children: [
1926
1998
  /* @__PURE__ */ jsx14("span", { className: "ss-w-bi-live-dot", "aria-hidden": "true" }),
1927
1999
  ui?.liveLabel ?? "Live"
1928
2000
  ] }) : null,
1929
- kickoff ? /* @__PURE__ */ jsxs9("span", { className: "ss-w-bi-kick", children: [
2001
+ kickoff ? /* @__PURE__ */ jsxs10("span", { className: "ss-w-bi-kick", children: [
1930
2002
  kickoff.dayLabel,
1931
2003
  " ",
1932
2004
  kickoff.time
@@ -1941,8 +2013,8 @@ function MarketOddsCard({ vm, ui, slip, monitor, inSlipIds, hideHeader, pinRef }
1941
2013
  ) : null
1942
2014
  ] })
1943
2015
  ] }) : null,
1944
- hasNamedTeams || vm.fixture || vm.market ? /* @__PURE__ */ jsxs9("div", { className: "ss-w-mo-sub", children: [
1945
- hasNamedTeams ? /* @__PURE__ */ jsxs9("div", { className: "ss-w-bi-fixture", children: [
2016
+ hasNamedTeams || vm.fixture || vm.market ? /* @__PURE__ */ jsxs10("div", { className: "ss-w-mo-sub", children: [
2017
+ hasNamedTeams ? /* @__PURE__ */ jsxs10("div", { className: "ss-w-bi-fixture", children: [
1946
2018
  /* @__PURE__ */ jsx14(Crest2, { kind: "team", url: vm.homeCrest, name: vm.homeTeamName }),
1947
2019
  /* @__PURE__ */ jsx14("span", { className: "ss-w-bi-team", children: vm.homeTeamName }),
1948
2020
  /* @__PURE__ */ jsx14("span", { className: "ss-w-bi-vs", "aria-hidden": "true", children: "vs" }),
@@ -1952,11 +2024,11 @@ function MarketOddsCard({ vm, ui, slip, monitor, inSlipIds, hideHeader, pinRef }
1952
2024
  vm.market ? /* @__PURE__ */ jsx14("span", { className: "ss-w-mo-market", children: vm.market }) : null
1953
2025
  ] }) : null
1954
2026
  ] }),
1955
- /* @__PURE__ */ jsxs9("div", { className: "ss-w-mo-rows", children: [
2027
+ /* @__PURE__ */ jsxs10("div", { className: "ss-w-mo-rows", children: [
1956
2028
  vm.mainRows.map((row) => /* @__PURE__ */ jsx14(OddsRow, { vm, row, ui, slip, inSlipIds }, row.key)),
1957
2029
  open ? vm.moreRows.map((row) => /* @__PURE__ */ jsx14(OddsRow, { vm, row, ui, slip, inSlipIds }, row.key)) : null
1958
2030
  ] }),
1959
- vm.moreRows.length > 0 ? /* @__PURE__ */ jsxs9("button", { type: "button", className: "ss-w-mo-more", "aria-expanded": open, onClick: () => setOpen((v) => !v), children: [
2031
+ vm.moreRows.length > 0 ? /* @__PURE__ */ jsxs10("button", { type: "button", className: "ss-w-mo-more", "aria-expanded": open, onClick: () => setOpen((v) => !v), children: [
1960
2032
  /* @__PURE__ */ jsx14("span", { children: open ? ui?.hideLines ?? "Hide lines" : `${ui?.moreLines ?? "More lines"} (${vm.moreRows.length})` }),
1961
2033
  /* @__PURE__ */ jsx14("span", { className: `ss-w-mo-more-chev${open ? " ss-w-mo-more-chev-up" : ""}`, "aria-hidden": "true" })
1962
2034
  ] }) : null,
@@ -1970,7 +2042,7 @@ function MarketOddsCardList({ cards, ui, slip, monitor, inSlipIds, hideHeader, p
1970
2042
  }
1971
2043
 
1972
2044
  // src/components/OddsMovementCard.tsx
1973
- import { Fragment as Fragment3, jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
2045
+ import { Fragment as Fragment3, jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
1974
2046
  function directionWord(vm, ui) {
1975
2047
  if (vm.direction === "shortened") return ui?.oddsShortened ?? "shortened";
1976
2048
  if (vm.direction === "drifted") return ui?.oddsDrifted ?? "drifted";
@@ -1981,8 +2053,8 @@ function OddsMovementCard({ vm, ui, monitor }) {
1981
2053
  const drift = word ? `, ${word}` : "";
1982
2054
  const aria = ui?.chartAria ? ui.chartAria(vm.opening, vm.current, word, vm.windowHours) : `Price movement over the last ${vm.windowHours} hours: opened at ${vm.opening}, currently ${vm.current}${drift}.`;
1983
2055
  const showPin = !!monitor && vm.pinEnabled;
1984
- return /* @__PURE__ */ jsxs10("div", { className: "ss-w-omcard", children: [
1985
- /* @__PURE__ */ jsxs10("div", { className: "ss-w-om-head", children: [
2056
+ return /* @__PURE__ */ jsxs11("div", { className: "ss-w-omcard", children: [
2057
+ /* @__PURE__ */ jsxs11("div", { className: "ss-w-om-head", children: [
1986
2058
  /* @__PURE__ */ jsx15("span", { className: "ss-w-om-market", children: vm.market }),
1987
2059
  /* @__PURE__ */ jsx15("span", { className: "ss-w-om-tag", children: ui?.priceMovement ?? "Price movement" }),
1988
2060
  showPin && ui ? /* @__PURE__ */ jsx15(
@@ -2002,13 +2074,13 @@ function OddsMovementCard({ vm, ui, monitor }) {
2002
2074
  }
2003
2075
  ) : null
2004
2076
  ] }),
2005
- vm.fixture ? /* @__PURE__ */ jsxs10("div", { className: "ss-w-om-fixture", children: [
2077
+ vm.fixture ? /* @__PURE__ */ jsxs11("div", { className: "ss-w-om-fixture", children: [
2006
2078
  /* @__PURE__ */ jsx15("span", { children: vm.fixture }),
2007
2079
  vm.competition ? /* @__PURE__ */ jsx15("span", { className: "ss-w-om-comp", children: vm.competition }) : null
2008
2080
  ] }) : null,
2009
2081
  /* @__PURE__ */ jsx15("div", { className: "ss-w-om-sel", children: vm.selection }),
2010
2082
  /* @__PURE__ */ jsx15(OddsMovementBadge, { previous: vm.opening, current: vm.current, direction: vm.direction, ui }),
2011
- vm.geometry === null ? /* @__PURE__ */ jsx15("div", { className: "ss-w-om-empty", children: vm.observationCount === 1 ? ui?.singlePricePoint ?? "Only one price recorded so far for this selection." : ui?.notEnoughHistory ?? "No price history recorded yet for this selection." }) : /* @__PURE__ */ jsxs10(
2083
+ vm.geometry === null ? /* @__PURE__ */ jsx15("div", { className: "ss-w-om-empty", children: vm.observationCount === 1 ? ui?.singlePricePoint ?? "Only one price recorded so far for this selection." : ui?.notEnoughHistory ?? "No price history recorded yet for this selection." }) : /* @__PURE__ */ jsxs11(
2012
2084
  "svg",
2013
2085
  {
2014
2086
  className: "ss-w-om-chart",
@@ -2017,26 +2089,26 @@ function OddsMovementCard({ vm, ui, monitor }) {
2017
2089
  role: "img",
2018
2090
  "aria-label": aria,
2019
2091
  children: [
2020
- vm.geometry.gridlines.map((g) => /* @__PURE__ */ jsxs10("g", { children: [
2092
+ vm.geometry.gridlines.map((g) => /* @__PURE__ */ jsxs11("g", { children: [
2021
2093
  /* @__PURE__ */ jsx15("line", { className: "ss-w-om-grid", x1: 40, y1: g.y, x2: CHART_VIEW_W - 8, y2: g.y }),
2022
2094
  /* @__PURE__ */ jsx15("text", { className: "ss-w-om-ylab", x: 34, y: g.y + 3, textAnchor: "end", children: g.price.toFixed(2) })
2023
2095
  ] }, g.price)),
2024
2096
  /* @__PURE__ */ jsx15("path", { className: "ss-w-om-line", d: vm.geometry.path, fill: "none" }),
2025
2097
  vm.geometry.markers.map((m, i) => /* @__PURE__ */ jsx15("circle", { className: "ss-w-om-dot", cx: m.x, cy: m.y, r: 2.5 }, i)),
2026
- ui?.chartTimeLabel ? /* @__PURE__ */ jsxs10(Fragment3, { children: [
2098
+ ui?.chartTimeLabel ? /* @__PURE__ */ jsxs11(Fragment3, { children: [
2027
2099
  /* @__PURE__ */ jsx15("text", { className: "ss-w-om-xlab", x: 40, y: CHART_VIEW_H - 8, textAnchor: "start", children: ui.chartTimeLabel(vm.geometry.startMs) }),
2028
2100
  /* @__PURE__ */ jsx15("text", { className: "ss-w-om-xlab", x: CHART_VIEW_W - 8, y: CHART_VIEW_H - 8, textAnchor: "end", children: ui.chartTimeLabel(vm.geometry.endMs) })
2029
2101
  ] }) : /* @__PURE__ */ jsx15("text", { className: "ss-w-om-xlab", x: 40, y: CHART_VIEW_H - 8, children: ui?.movementWindow ? ui.movementWindow(vm.windowHours) : `Last ${vm.windowHours}h` })
2030
2102
  ]
2031
2103
  }
2032
2104
  ),
2033
- /* @__PURE__ */ jsxs10("div", { className: "ss-w-om-foot", children: [
2034
- /* @__PURE__ */ jsxs10("span", { children: [
2105
+ /* @__PURE__ */ jsxs11("div", { className: "ss-w-om-foot", children: [
2106
+ /* @__PURE__ */ jsxs11("span", { children: [
2035
2107
  ui?.openingLabel ?? "Opening",
2036
2108
  " ",
2037
2109
  /* @__PURE__ */ jsx15("b", { children: vm.opening })
2038
2110
  ] }),
2039
- /* @__PURE__ */ jsxs10("span", { children: [
2111
+ /* @__PURE__ */ jsxs11("span", { children: [
2040
2112
  ui?.currentLabel ?? "Current",
2041
2113
  " ",
2042
2114
  /* @__PURE__ */ jsx15("b", { children: vm.current })
@@ -2054,12 +2126,12 @@ function OddsMovementCardList({ cards, ui, monitor }) {
2054
2126
  }
2055
2127
 
2056
2128
  // src/components/ActionButtons.tsx
2057
- import { Fragment as Fragment4, jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
2129
+ import { Fragment as Fragment4, jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
2058
2130
  function ActionButtons({ actions, loading, disabled, onAct }) {
2059
2131
  if (actions.length === 0 && !loading) return null;
2060
- return /* @__PURE__ */ jsxs11("div", { className: "ss-w-actions", children: [
2132
+ return /* @__PURE__ */ jsxs12("div", { className: "ss-w-actions", children: [
2061
2133
  actions.map((a, i) => /* @__PURE__ */ jsx16("button", { type: "button", className: "ss-w-abtn", disabled, onClick: () => onAct(a), children: a.label }, `${a.label}-${i}`)),
2062
- actions.length === 0 && loading ? /* @__PURE__ */ jsxs11(Fragment4, { children: [
2134
+ actions.length === 0 && loading ? /* @__PURE__ */ jsxs12(Fragment4, { children: [
2063
2135
  /* @__PURE__ */ jsx16("span", { className: "ss-w-abtn-shimmer" }),
2064
2136
  /* @__PURE__ */ jsx16("span", { className: "ss-w-abtn-shimmer" })
2065
2137
  ] }) : null
@@ -2067,22 +2139,22 @@ function ActionButtons({ actions, loading, disabled, onAct }) {
2067
2139
  }
2068
2140
 
2069
2141
  // src/components/dashboard/DashboardTile.tsx
2070
- import { jsx as jsx17, jsxs as jsxs12 } from "react/jsx-runtime";
2142
+ import { jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
2071
2143
  var MAX_CRESTS = 3;
2072
2144
  function DashboardTile({ tile, onTap }) {
2073
2145
  const spanClass = tile.span === "full" ? "ss-w-dash-tile--full" : "ss-w-dash-tile--half";
2074
2146
  const crests = (tile.imageUrls ?? []).slice(0, MAX_CRESTS);
2075
2147
  const hasMeta = Boolean(tile.badgeText) || crests.length > 0;
2076
- return /* @__PURE__ */ jsxs12("button", { type: "button", className: `ss-w-dash-tile ${spanClass}`, onClick: onTap, children: [
2148
+ return /* @__PURE__ */ jsxs13("button", { type: "button", className: `ss-w-dash-tile ${spanClass}`, onClick: onTap, children: [
2077
2149
  /* @__PURE__ */ jsx17("span", { className: "ss-w-dash-tile-icon", children: /* @__PURE__ */ jsx17(DashboardIcon, { name: tile.icon }) }),
2078
- /* @__PURE__ */ jsxs12("span", { className: "ss-w-dash-tile-body", children: [
2150
+ /* @__PURE__ */ jsxs13("span", { className: "ss-w-dash-tile-body", children: [
2079
2151
  /* @__PURE__ */ jsx17("span", { className: "ss-w-dash-tile-title", children: tile.title }),
2080
2152
  tile.subtitle ? /* @__PURE__ */ jsx17("span", { className: "ss-w-dash-tile-subtitle", children: tile.subtitle }) : null,
2081
2153
  hasMeta ? (
2082
2154
  // Badge + crests sit on their own row, below the title, instead of sharing the
2083
2155
  // icon/chevron row -- at the half-span tile's ~180px width a nowrap badge alone
2084
2156
  // (~70px) left the title column at ~22px and forced character-by-character wrapping.
2085
- /* @__PURE__ */ jsxs12("span", { className: "ss-w-dash-tile-meta", children: [
2157
+ /* @__PURE__ */ jsxs13("span", { className: "ss-w-dash-tile-meta", children: [
2086
2158
  tile.badgeText ? /* @__PURE__ */ jsx17("span", { className: "ss-w-dash-tile-badge", children: tile.badgeText }) : null,
2087
2159
  crests.length > 0 ? /* @__PURE__ */ jsx17("span", { className: "ss-w-dash-tile-crests", children: crests.map((url, i) => /* @__PURE__ */ jsx17("span", { className: "ss-w-dash-tile-crest", style: { backgroundImage: `url(${url})` }, "aria-hidden": "true" }, `${url}-${i}`)) }) : null
2088
2160
  ] })
@@ -2093,7 +2165,7 @@ function DashboardTile({ tile, onTap }) {
2093
2165
  }
2094
2166
 
2095
2167
  // src/components/dashboard/GreetingDashboard.tsx
2096
- import { jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
2168
+ import { jsx as jsx18, jsxs as jsxs14 } from "react/jsx-runtime";
2097
2169
  var LAYOUT_CLASSES = {
2098
2170
  market: "ss-w-dash--market",
2099
2171
  goal: "ss-w-dash--goal",
@@ -2103,8 +2175,8 @@ function layoutClass(layout) {
2103
2175
  return Object.prototype.hasOwnProperty.call(LAYOUT_CLASSES, layout) ? LAYOUT_CLASSES[layout] : LAYOUT_CLASSES.goal;
2104
2176
  }
2105
2177
  function GreetingDashboard({ dashboard, onTap }) {
2106
- return /* @__PURE__ */ jsxs13("div", { className: `ss-w-dash ${layoutClass(dashboard.layout)}`, children: [
2107
- /* @__PURE__ */ jsxs13("div", { className: "ss-w-dash-head", children: [
2178
+ return /* @__PURE__ */ jsxs14("div", { className: `ss-w-dash ${layoutClass(dashboard.layout)}`, children: [
2179
+ /* @__PURE__ */ jsxs14("div", { className: "ss-w-dash-head", children: [
2108
2180
  /* @__PURE__ */ jsx18("span", { className: "ss-w-dash-title", children: dashboard.title }),
2109
2181
  dashboard.subtitle ? /* @__PURE__ */ jsx18("span", { className: "ss-w-dash-subtitle", children: dashboard.subtitle }) : null
2110
2182
  ] }),
@@ -2114,7 +2186,7 @@ function GreetingDashboard({ dashboard, onTap }) {
2114
2186
  }
2115
2187
 
2116
2188
  // src/components/dashboard/FixtureCard.tsx
2117
- import { Fragment as Fragment5, jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
2189
+ import { Fragment as Fragment5, jsx as jsx19, jsxs as jsxs15 } from "react/jsx-runtime";
2118
2190
  function teamFormResultClass(result) {
2119
2191
  if (result === "W") return "ss-w-fandash-teamform-cell--win";
2120
2192
  if (result === "L") return "ss-w-fandash-teamform-cell--loss";
@@ -2124,7 +2196,7 @@ function TeamFormCell({ m, subjectCrestUrl, subjectName }) {
2124
2196
  const subjectCrest = /* @__PURE__ */ jsx19(Crest2, { url: subjectCrestUrl ?? void 0, name: subjectName, kind: "team" });
2125
2197
  const opponentCrest = /* @__PURE__ */ jsx19(Crest2, { url: m.opponentCrestUrl ?? void 0, kind: "team" });
2126
2198
  const score = m.teamIsHome ? `${m.teamScore} - ${m.oppScore}` : `${m.oppScore} - ${m.teamScore}`;
2127
- return /* @__PURE__ */ jsxs14("div", { className: `ss-w-fandash-teamform-cell ${teamFormResultClass(m.result)}`, children: [
2199
+ return /* @__PURE__ */ jsxs15("div", { className: `ss-w-fandash-teamform-cell ${teamFormResultClass(m.result)}`, children: [
2128
2200
  m.teamIsHome ? subjectCrest : opponentCrest,
2129
2201
  /* @__PURE__ */ jsx19("span", { className: "ss-w-fandash-teamform-score", children: score }),
2130
2202
  m.teamIsHome ? opponentCrest : subjectCrest
@@ -2140,59 +2212,59 @@ function teamFormRows(data) {
2140
2212
  function FixtureCard({ card }) {
2141
2213
  const { data } = card;
2142
2214
  const h2h = data.h2H;
2143
- return /* @__PURE__ */ jsxs14(Fragment5, { children: [
2144
- /* @__PURE__ */ jsxs14("div", { className: "ss-w-fandash-card ss-w-fandash-fixture", children: [
2145
- /* @__PURE__ */ jsxs14("span", { className: "ss-w-fandash-eyebrow", children: [
2215
+ return /* @__PURE__ */ jsxs15(Fragment5, { children: [
2216
+ /* @__PURE__ */ jsxs15("div", { className: "ss-w-fandash-card ss-w-fandash-fixture", children: [
2217
+ /* @__PURE__ */ jsxs15("span", { className: "ss-w-fandash-eyebrow", children: [
2146
2218
  card.title,
2147
2219
  " \xB7 ",
2148
2220
  data.competition
2149
2221
  ] }),
2150
- /* @__PURE__ */ jsxs14("div", { className: "ss-w-fandash-fixture-teams", children: [
2151
- /* @__PURE__ */ jsxs14("span", { className: "ss-w-fandash-fixture-team", children: [
2222
+ /* @__PURE__ */ jsxs15("div", { className: "ss-w-fandash-fixture-teams", children: [
2223
+ /* @__PURE__ */ jsxs15("span", { className: "ss-w-fandash-fixture-team", children: [
2152
2224
  /* @__PURE__ */ jsx19(Crest2, { url: data.homeCrestUrl ?? void 0, name: data.homeName, kind: "team" }),
2153
2225
  /* @__PURE__ */ jsx19("span", { className: "ss-w-fandash-fixture-name", children: data.homeName })
2154
2226
  ] }),
2155
2227
  /* @__PURE__ */ jsx19("span", { className: "ss-w-fandash-fixture-vs", children: "v" }),
2156
- /* @__PURE__ */ jsxs14("span", { className: "ss-w-fandash-fixture-team ss-w-fandash-fixture-team--away", children: [
2228
+ /* @__PURE__ */ jsxs15("span", { className: "ss-w-fandash-fixture-team ss-w-fandash-fixture-team--away", children: [
2157
2229
  /* @__PURE__ */ jsx19("span", { className: "ss-w-fandash-fixture-name", children: data.awayName }),
2158
2230
  /* @__PURE__ */ jsx19(Crest2, { url: data.awayCrestUrl ?? void 0, name: data.awayName, kind: "team" })
2159
2231
  ] })
2160
2232
  ] }),
2161
- /* @__PURE__ */ jsxs14("div", { className: "ss-w-fandash-fixture-meta", children: [
2233
+ /* @__PURE__ */ jsxs15("div", { className: "ss-w-fandash-fixture-meta", children: [
2162
2234
  /* @__PURE__ */ jsx19("span", { className: "ss-w-fandash-fixture-kickoff", children: data.kickoffLabel }),
2163
- data.venue ? /* @__PURE__ */ jsxs14("span", { className: "ss-w-fandash-fixture-venue", children: [
2235
+ data.venue ? /* @__PURE__ */ jsxs15("span", { className: "ss-w-fandash-fixture-venue", children: [
2164
2236
  " \xB7 ",
2165
2237
  data.venue
2166
2238
  ] }) : null
2167
2239
  ] })
2168
2240
  ] }),
2169
- /* @__PURE__ */ jsxs14("div", { className: "ss-w-fandash-card ss-w-fandash-lastfive", children: [
2241
+ /* @__PURE__ */ jsxs15("div", { className: "ss-w-fandash-card ss-w-fandash-lastfive", children: [
2170
2242
  /* @__PURE__ */ jsx19("span", { className: "ss-w-fandash-eyebrow", children: data.formLabel }),
2171
- /* @__PURE__ */ jsxs14("div", { className: "ss-w-fandash-teamform-head", children: [
2172
- /* @__PURE__ */ jsxs14("span", { className: "ss-w-fandash-teamform-head-team", children: [
2243
+ /* @__PURE__ */ jsxs15("div", { className: "ss-w-fandash-teamform-head", children: [
2244
+ /* @__PURE__ */ jsxs15("span", { className: "ss-w-fandash-teamform-head-team", children: [
2173
2245
  /* @__PURE__ */ jsx19(Crest2, { url: data.homeCrestUrl ?? void 0, name: data.homeName, kind: "team" }),
2174
2246
  /* @__PURE__ */ jsx19("span", { className: "ss-w-fandash-teamform-head-name", children: data.homeName })
2175
2247
  ] }),
2176
- /* @__PURE__ */ jsxs14("span", { className: "ss-w-fandash-teamform-head-team", children: [
2248
+ /* @__PURE__ */ jsxs15("span", { className: "ss-w-fandash-teamform-head-team", children: [
2177
2249
  /* @__PURE__ */ jsx19(Crest2, { url: data.awayCrestUrl ?? void 0, name: data.awayName, kind: "team" }),
2178
2250
  /* @__PURE__ */ jsx19("span", { className: "ss-w-fandash-teamform-head-name", children: data.awayName })
2179
2251
  ] })
2180
2252
  ] }),
2181
2253
  /* @__PURE__ */ jsx19("div", { className: "ss-w-fandash-teamform-rows", children: teamFormRows(data) })
2182
2254
  ] }),
2183
- h2h || data.fact ? /* @__PURE__ */ jsxs14("div", { className: "ss-w-fandash-card ss-w-fandash-h2h", children: [
2184
- h2h ? /* @__PURE__ */ jsxs14(Fragment5, { children: [
2255
+ h2h || data.fact ? /* @__PURE__ */ jsxs15("div", { className: "ss-w-fandash-card ss-w-fandash-h2h", children: [
2256
+ h2h ? /* @__PURE__ */ jsxs15(Fragment5, { children: [
2185
2257
  /* @__PURE__ */ jsx19("span", { className: "ss-w-fandash-eyebrow", children: h2h.label }),
2186
- /* @__PURE__ */ jsxs14("div", { className: "ss-w-fandash-split", children: [
2187
- /* @__PURE__ */ jsxs14("span", { className: "ss-w-fandash-split-cell", children: [
2258
+ /* @__PURE__ */ jsxs15("div", { className: "ss-w-fandash-split", children: [
2259
+ /* @__PURE__ */ jsxs15("span", { className: "ss-w-fandash-split-cell", children: [
2188
2260
  /* @__PURE__ */ jsx19("span", { className: "ss-w-fandash-split-value", children: h2h.wins }),
2189
2261
  /* @__PURE__ */ jsx19("span", { className: "ss-w-fandash-split-label", children: h2h.homeWinsLabel })
2190
2262
  ] }),
2191
- /* @__PURE__ */ jsxs14("span", { className: "ss-w-fandash-split-cell", children: [
2263
+ /* @__PURE__ */ jsxs15("span", { className: "ss-w-fandash-split-cell", children: [
2192
2264
  /* @__PURE__ */ jsx19("span", { className: "ss-w-fandash-split-value", children: h2h.draws }),
2193
2265
  /* @__PURE__ */ jsx19("span", { className: "ss-w-fandash-split-label", children: h2h.drawsLabel })
2194
2266
  ] }),
2195
- /* @__PURE__ */ jsxs14("span", { className: "ss-w-fandash-split-cell", children: [
2267
+ /* @__PURE__ */ jsxs15("span", { className: "ss-w-fandash-split-cell", children: [
2196
2268
  /* @__PURE__ */ jsx19("span", { className: "ss-w-fandash-split-value", children: h2h.losses }),
2197
2269
  /* @__PURE__ */ jsx19("span", { className: "ss-w-fandash-split-label", children: h2h.awayWinsLabel })
2198
2270
  ] })
@@ -2204,8 +2276,8 @@ function FixtureCard({ card }) {
2204
2276
  }
2205
2277
 
2206
2278
  // src/components/dashboard/CountdownCard.tsx
2207
- import { Fragment as Fragment6, useEffect as useEffect6, useState as useState10 } from "react";
2208
- import { jsx as jsx20, jsxs as jsxs15 } from "react/jsx-runtime";
2279
+ import { Fragment as Fragment6, useEffect as useEffect7, useState as useState11 } from "react";
2280
+ import { jsx as jsx20, jsxs as jsxs16 } from "react/jsx-runtime";
2209
2281
  var DAY_MS = 864e5;
2210
2282
  function remainingSegments(kickoffUnix, nowMs, withSeconds) {
2211
2283
  const totalSeconds = Math.floor((kickoffUnix * 1e3 - nowMs) / 1e3);
@@ -2223,22 +2295,22 @@ function remainingSegments(kickoffUnix, nowMs, withSeconds) {
2223
2295
  function CountdownCard({ card }) {
2224
2296
  const { data } = card;
2225
2297
  const unitLabel = { d: data.daysUnit, h: data.hoursUnit, m: data.minutesUnit, s: data.secondsUnit };
2226
- const [nowMs, setNowMs] = useState10(() => Date.now());
2227
- const [reduced] = useState10(
2298
+ const [nowMs, setNowMs] = useState11(() => Date.now());
2299
+ const [reduced] = useState11(
2228
2300
  () => typeof window !== "undefined" && window.matchMedia("(prefers-reduced-motion: reduce)").matches
2229
2301
  );
2230
2302
  const withinDay = data.kickoffUnix * 1e3 - nowMs < DAY_MS;
2231
- useEffect6(() => {
2303
+ useEffect7(() => {
2232
2304
  if (reduced) return;
2233
2305
  const id = window.setInterval(() => setNowMs(Date.now()), withinDay ? 1e3 : 6e4);
2234
2306
  return () => window.clearInterval(id);
2235
2307
  }, [reduced, withinDay]);
2236
2308
  const segments = remainingSegments(data.kickoffUnix, nowMs, withinDay && !reduced);
2237
- return /* @__PURE__ */ jsx20("div", { className: "ss-w-fandash-card ss-w-fandash-countdown", children: /* @__PURE__ */ jsxs15("div", { className: "ss-w-fandash-countdown-top", children: [
2309
+ return /* @__PURE__ */ jsx20("div", { className: "ss-w-fandash-card ss-w-fandash-countdown", children: /* @__PURE__ */ jsxs16("div", { className: "ss-w-fandash-countdown-top", children: [
2238
2310
  /* @__PURE__ */ jsx20("span", { className: "ss-w-fandash-eyebrow", children: card.title ?? "Kick-off in" }),
2239
- segments ? /* @__PURE__ */ jsx20("span", { className: "ss-w-fandash-countdown-clock", children: segments.map((s, i) => /* @__PURE__ */ jsxs15(Fragment6, { children: [
2311
+ segments ? /* @__PURE__ */ jsx20("span", { className: "ss-w-fandash-countdown-clock", children: segments.map((s, i) => /* @__PURE__ */ jsxs16(Fragment6, { children: [
2240
2312
  i > 0 ? /* @__PURE__ */ jsx20("span", { className: "ss-w-fandash-countdown-colon", children: ":" }) : null,
2241
- /* @__PURE__ */ jsxs15("span", { className: "ss-w-fandash-countdown-seg", children: [
2313
+ /* @__PURE__ */ jsxs16("span", { className: "ss-w-fandash-countdown-seg", children: [
2242
2314
  /* @__PURE__ */ jsx20("span", { className: "ss-w-fandash-countdown-value", children: s.value }),
2243
2315
  /* @__PURE__ */ jsx20("span", { className: "ss-w-fandash-countdown-unit", children: unitLabel[s.unit] })
2244
2316
  ] })
@@ -2247,11 +2319,11 @@ function CountdownCard({ card }) {
2247
2319
  }
2248
2320
 
2249
2321
  // src/components/dashboard/InjuriesCard.tsx
2250
- import { useState as useState11 } from "react";
2251
- import { jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
2322
+ import { useState as useState12 } from "react";
2323
+ import { jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
2252
2324
  var SHOWN = 3;
2253
2325
  function ColHead({ name, crestUrl }) {
2254
- return /* @__PURE__ */ jsxs16("span", { className: "ss-w-fandash-injuries-col-head", children: [
2326
+ return /* @__PURE__ */ jsxs17("span", { className: "ss-w-fandash-injuries-col-head", children: [
2255
2327
  /* @__PURE__ */ jsx21(Crest2, { url: crestUrl ?? void 0, name, kind: "team" }),
2256
2328
  /* @__PURE__ */ jsx21("span", { className: "ss-w-fandash-injuries-col-head-name", children: name })
2257
2329
  ] });
@@ -2259,9 +2331,9 @@ function ColHead({ name, crestUrl }) {
2259
2331
  function InjuryList({ rows, emptyLabel, limit }) {
2260
2332
  if (rows.length === 0) return /* @__PURE__ */ jsx21("span", { className: "ss-w-fandash-injuries-empty", children: emptyLabel });
2261
2333
  const shown = limit === void 0 ? rows : rows.slice(0, limit);
2262
- return /* @__PURE__ */ jsx21("ul", { className: "ss-w-fandash-injury-list", children: shown.map((r, i) => /* @__PURE__ */ jsxs16("li", { className: "ss-w-fandash-injury-row", children: [
2334
+ return /* @__PURE__ */ jsx21("ul", { className: "ss-w-fandash-injury-list", children: shown.map((r, i) => /* @__PURE__ */ jsxs17("li", { className: "ss-w-fandash-injury-row", children: [
2263
2335
  /* @__PURE__ */ jsx21("span", { className: "ss-w-fandash-injury-name", children: r.playerName }),
2264
- /* @__PURE__ */ jsxs16("span", { className: "ss-w-fandash-injury-meta", children: [
2336
+ /* @__PURE__ */ jsxs17("span", { className: "ss-w-fandash-injury-meta", children: [
2265
2337
  /* @__PURE__ */ jsx21("span", { className: "ss-w-fandash-injury-status", children: r.status }),
2266
2338
  r.injuryType ? /* @__PURE__ */ jsx21("span", { className: "ss-w-fandash-injury-type", children: r.injuryType }) : null,
2267
2339
  r.expectedReturnLabel ? /* @__PURE__ */ jsx21("span", { className: "ss-w-fandash-injury-return", children: r.expectedReturnLabel }) : null
@@ -2270,20 +2342,20 @@ function InjuryList({ rows, emptyLabel, limit }) {
2270
2342
  }
2271
2343
  function InjuriesCard({ card, ui }) {
2272
2344
  const { data } = card;
2273
- const [expanded, setExpanded] = useState11(false);
2345
+ const [expanded, setExpanded] = useState12(false);
2274
2346
  const hidden = Math.max(0, data.ours.length - SHOWN) + Math.max(0, data.theirs.length - SHOWN);
2275
2347
  const limit = expanded ? void 0 : SHOWN;
2276
2348
  const showMore = ui?.showMore ?? ((n) => `Show ${n} more`);
2277
2349
  const showLess = ui?.showLess ?? "Show less";
2278
- return /* @__PURE__ */ jsxs16("div", { className: "ss-w-fandash-card ss-w-fandash-injuries", children: [
2350
+ return /* @__PURE__ */ jsxs17("div", { className: "ss-w-fandash-card ss-w-fandash-injuries", children: [
2279
2351
  card.title ? /* @__PURE__ */ jsx21("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
2280
- /* @__PURE__ */ jsxs16("div", { className: "ss-w-fandash-injuries-cols", children: [
2281
- /* @__PURE__ */ jsxs16("div", { className: "ss-w-fandash-injuries-col", children: [
2352
+ /* @__PURE__ */ jsxs17("div", { className: "ss-w-fandash-injuries-cols", children: [
2353
+ /* @__PURE__ */ jsxs17("div", { className: "ss-w-fandash-injuries-col", children: [
2282
2354
  /* @__PURE__ */ jsx21(ColHead, { name: data.oursName, crestUrl: data.oursCrestUrl }),
2283
2355
  /* @__PURE__ */ jsx21(InjuryList, { rows: data.ours, emptyLabel: data.emptyLabel, limit })
2284
2356
  ] }),
2285
2357
  /* @__PURE__ */ jsx21("div", { className: "ss-w-fandash-injuries-divider" }),
2286
- /* @__PURE__ */ jsxs16("div", { className: "ss-w-fandash-injuries-col", children: [
2358
+ /* @__PURE__ */ jsxs17("div", { className: "ss-w-fandash-injuries-col", children: [
2287
2359
  /* @__PURE__ */ jsx21(ColHead, { name: data.theirsName, crestUrl: data.theirsCrestUrl }),
2288
2360
  /* @__PURE__ */ jsx21(InjuryList, { rows: data.theirs, emptyLabel: data.emptyLabel, limit })
2289
2361
  ] })
@@ -2302,29 +2374,29 @@ function InjuriesCard({ card, ui }) {
2302
2374
  }
2303
2375
 
2304
2376
  // src/components/dashboard/ReasonToBetCard.tsx
2305
- import { jsx as jsx22, jsxs as jsxs17 } from "react/jsx-runtime";
2377
+ import { jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
2306
2378
  function ReasonToBetCard({ card }) {
2307
- return /* @__PURE__ */ jsxs17("div", { className: "ss-w-fandash-card ss-w-fandash-reasons", children: [
2379
+ return /* @__PURE__ */ jsxs18("div", { className: "ss-w-fandash-card ss-w-fandash-reasons", children: [
2308
2380
  card.title ? /* @__PURE__ */ jsx22("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
2309
2381
  /* @__PURE__ */ jsx22("ul", { className: "ss-w-fandash-reason-list", children: card.data.angles.map((angle, i) => /* @__PURE__ */ jsx22("li", { className: "ss-w-fandash-reason-item", children: angle }, `${angle}-${i}`)) })
2310
2382
  ] });
2311
2383
  }
2312
2384
 
2313
2385
  // src/components/dashboard/WhereToWatchCard.tsx
2314
- import { jsx as jsx23, jsxs as jsxs18 } from "react/jsx-runtime";
2386
+ import { jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
2315
2387
  function WhereToWatchCard({ card }) {
2316
- return /* @__PURE__ */ jsxs18("div", { className: "ss-w-fandash-card ss-w-fandash-watch", children: [
2388
+ return /* @__PURE__ */ jsxs19("div", { className: "ss-w-fandash-card ss-w-fandash-watch", children: [
2317
2389
  card.title ? /* @__PURE__ */ jsx23("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
2318
2390
  /* @__PURE__ */ jsx23("span", { className: "ss-w-fandash-stations", children: card.data.stations.map((station, i) => /* @__PURE__ */ jsx23("span", { className: "ss-w-fandash-station-chip", children: station }, `${station}-${i}`)) })
2319
2391
  ] });
2320
2392
  }
2321
2393
 
2322
2394
  // src/components/dashboard/CongestedWeekCard.tsx
2323
- import { jsx as jsx24, jsxs as jsxs19 } from "react/jsx-runtime";
2395
+ import { jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
2324
2396
  function CongestedWeekCard({ card, onTap }) {
2325
- return /* @__PURE__ */ jsxs19("button", { type: "button", className: "ss-w-fandash-card ss-w-fandash-card--tap ss-w-fandash-congested", onClick: () => onTap(card), children: [
2397
+ return /* @__PURE__ */ jsxs20("button", { type: "button", className: "ss-w-fandash-card ss-w-fandash-card--tap ss-w-fandash-congested", onClick: () => onTap(card), children: [
2326
2398
  card.title ? /* @__PURE__ */ jsx24("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
2327
- /* @__PURE__ */ jsx24("div", { className: "ss-w-fandash-congested-grid", children: card.data.entries.map((entry, i) => /* @__PURE__ */ jsxs19("span", { className: "ss-w-fandash-congested-cell", children: [
2399
+ /* @__PURE__ */ jsx24("div", { className: "ss-w-fandash-congested-grid", children: card.data.entries.map((entry, i) => /* @__PURE__ */ jsxs20("span", { className: "ss-w-fandash-congested-cell", children: [
2328
2400
  /* @__PURE__ */ jsx24("span", { className: "ss-w-fandash-congested-day", children: entry.dayLabel }),
2329
2401
  /* @__PURE__ */ jsx24("span", { className: "ss-w-fandash-congested-opponent", children: entry.opponent }),
2330
2402
  /* @__PURE__ */ jsx24("span", { className: "ss-w-fandash-congested-comp", children: entry.competition }),
@@ -2335,10 +2407,10 @@ function CongestedWeekCard({ card, onTap }) {
2335
2407
  }
2336
2408
 
2337
2409
  // src/components/dashboard/TransfersCard.tsx
2338
- import { jsx as jsx25, jsxs as jsxs20 } from "react/jsx-runtime";
2410
+ import { jsx as jsx25, jsxs as jsxs21 } from "react/jsx-runtime";
2339
2411
  function TransferList({ rows }) {
2340
2412
  if (rows.length === 0) return /* @__PURE__ */ jsx25("span", { className: "ss-w-fandash-transfers-empty", children: "None" });
2341
- return /* @__PURE__ */ jsx25("ul", { className: "ss-w-fandash-transfer-list", children: rows.map((r, i) => /* @__PURE__ */ jsxs20("li", { className: "ss-w-fandash-transfer-row", children: [
2413
+ return /* @__PURE__ */ jsx25("ul", { className: "ss-w-fandash-transfer-list", children: rows.map((r, i) => /* @__PURE__ */ jsxs21("li", { className: "ss-w-fandash-transfer-row", children: [
2342
2414
  /* @__PURE__ */ jsx25("span", { className: "ss-w-fandash-transfer-name", children: r.playerName }),
2343
2415
  /* @__PURE__ */ jsx25("span", { className: "ss-w-fandash-transfer-club", children: r.otherClub }),
2344
2416
  r.type ? /* @__PURE__ */ jsx25("span", { className: "ss-w-fandash-transfer-type", children: r.type }) : null
@@ -2346,14 +2418,14 @@ function TransferList({ rows }) {
2346
2418
  }
2347
2419
  function TransfersCard({ card }) {
2348
2420
  const { data } = card;
2349
- return /* @__PURE__ */ jsxs20("div", { className: "ss-w-fandash-card ss-w-fandash-transfers", children: [
2421
+ return /* @__PURE__ */ jsxs21("div", { className: "ss-w-fandash-card ss-w-fandash-transfers", children: [
2350
2422
  card.title ? /* @__PURE__ */ jsx25("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
2351
- /* @__PURE__ */ jsxs20("div", { className: "ss-w-fandash-transfers-cols", children: [
2352
- /* @__PURE__ */ jsxs20("div", { className: "ss-w-fandash-transfers-col", children: [
2423
+ /* @__PURE__ */ jsxs21("div", { className: "ss-w-fandash-transfers-cols", children: [
2424
+ /* @__PURE__ */ jsxs21("div", { className: "ss-w-fandash-transfers-col", children: [
2353
2425
  /* @__PURE__ */ jsx25("span", { className: "ss-w-fandash-transfers-col-head", children: "In" }),
2354
2426
  /* @__PURE__ */ jsx25(TransferList, { rows: data.in })
2355
2427
  ] }),
2356
- /* @__PURE__ */ jsxs20("div", { className: "ss-w-fandash-transfers-col", children: [
2428
+ /* @__PURE__ */ jsxs21("div", { className: "ss-w-fandash-transfers-col", children: [
2357
2429
  /* @__PURE__ */ jsx25("span", { className: "ss-w-fandash-transfers-col-head", children: "Out" }),
2358
2430
  /* @__PURE__ */ jsx25(TransferList, { rows: data.out })
2359
2431
  ] })
@@ -2362,11 +2434,11 @@ function TransfersCard({ card }) {
2362
2434
  }
2363
2435
 
2364
2436
  // src/components/dashboard/LinksCard.tsx
2365
- import { jsx as jsx26, jsxs as jsxs21 } from "react/jsx-runtime";
2437
+ import { jsx as jsx26, jsxs as jsxs22 } from "react/jsx-runtime";
2366
2438
  function LinksCard({ card }) {
2367
- return /* @__PURE__ */ jsxs21("div", { className: "ss-w-fandash-card ss-w-fandash-links", children: [
2439
+ return /* @__PURE__ */ jsxs22("div", { className: "ss-w-fandash-card ss-w-fandash-links", children: [
2368
2440
  card.title ? /* @__PURE__ */ jsx26("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
2369
- /* @__PURE__ */ jsx26("div", { className: "ss-w-fandash-link-grid", children: card.data.links.map((link, i) => /* @__PURE__ */ jsxs21("a", { className: "ss-w-fandash-link-tile", href: link.url, target: "_blank", rel: "noopener noreferrer", children: [
2441
+ /* @__PURE__ */ jsx26("div", { className: "ss-w-fandash-link-grid", children: card.data.links.map((link, i) => /* @__PURE__ */ jsxs22("a", { className: "ss-w-fandash-link-tile", href: link.url, target: "_blank", rel: "noopener noreferrer", children: [
2370
2442
  /* @__PURE__ */ jsx26("span", { className: "ss-w-fandash-link-label", children: link.label }),
2371
2443
  /* @__PURE__ */ jsx26("span", { className: "ss-w-fandash-link-chevron", children: /* @__PURE__ */ jsx26(ChevronIcon, {}) })
2372
2444
  ] }, `${link.url}-${i}`)) })
@@ -2374,8 +2446,8 @@ function LinksCard({ card }) {
2374
2446
  }
2375
2447
 
2376
2448
  // src/components/dashboard/PostMatchResultCard.tsx
2377
- import { useState as useState12 } from "react";
2378
- import { jsx as jsx27, jsxs as jsxs22 } from "react/jsx-runtime";
2449
+ import { useState as useState13 } from "react";
2450
+ import { jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
2379
2451
  function initials3(name) {
2380
2452
  return name.trim().slice(0, 3).toUpperCase();
2381
2453
  }
@@ -2384,7 +2456,7 @@ function PostMatchCrest({
2384
2456
  name,
2385
2457
  side
2386
2458
  }) {
2387
- const [failed, setFailed] = useState12(false);
2459
+ const [failed, setFailed] = useState13(false);
2388
2460
  const cls = `ss-w-fandash-postmatch-crest ss-w-fandash-postmatch-crest--${side}`;
2389
2461
  if (url && !failed) {
2390
2462
  return /* @__PURE__ */ jsx27("img", { className: cls, src: url, alt: "", "aria-hidden": "true", onError: () => setFailed(true) });
@@ -2395,17 +2467,17 @@ function PostMatchResultCard({ card }) {
2395
2467
  const { data } = card;
2396
2468
  const homeWon = data.homeScore >= data.awayScore;
2397
2469
  const awayWon = data.awayScore >= data.homeScore;
2398
- return /* @__PURE__ */ jsxs22("div", { className: "ss-w-fandash-card ss-w-fandash-postmatch-result", children: [
2399
- /* @__PURE__ */ jsxs22("div", { className: "ss-w-fandash-postmatch-top", children: [
2470
+ return /* @__PURE__ */ jsxs23("div", { className: "ss-w-fandash-card ss-w-fandash-postmatch-result", children: [
2471
+ /* @__PURE__ */ jsxs23("div", { className: "ss-w-fandash-postmatch-top", children: [
2400
2472
  card.title ? /* @__PURE__ */ jsx27("span", { className: "ss-w-fandash-postmatch-pill", children: card.title }) : null,
2401
2473
  /* @__PURE__ */ jsx27("span", { className: `ss-w-fandash-postmatch-tag ss-w-fandash-postmatch-tag--${data.outcome}`, children: data.resultLabel })
2402
2474
  ] }),
2403
- /* @__PURE__ */ jsxs22("div", { className: "ss-w-fandash-postmatch-main", children: [
2404
- /* @__PURE__ */ jsxs22("div", { className: "ss-w-fandash-postmatch-side ss-w-fandash-postmatch-side--home", children: [
2475
+ /* @__PURE__ */ jsxs23("div", { className: "ss-w-fandash-postmatch-main", children: [
2476
+ /* @__PURE__ */ jsxs23("div", { className: "ss-w-fandash-postmatch-side ss-w-fandash-postmatch-side--home", children: [
2405
2477
  /* @__PURE__ */ jsx27(PostMatchCrest, { url: data.homeCrestUrl, name: data.homeName, side: "home" }),
2406
2478
  /* @__PURE__ */ jsx27("span", { className: "ss-w-fandash-postmatch-team-name", children: data.homeName })
2407
2479
  ] }),
2408
- /* @__PURE__ */ jsxs22("div", { className: "ss-w-fandash-postmatch-score-main", children: [
2480
+ /* @__PURE__ */ jsxs23("div", { className: "ss-w-fandash-postmatch-score-main", children: [
2409
2481
  /* @__PURE__ */ jsx27(
2410
2482
  "span",
2411
2483
  {
@@ -2422,12 +2494,12 @@ function PostMatchResultCard({ card }) {
2422
2494
  }
2423
2495
  )
2424
2496
  ] }),
2425
- /* @__PURE__ */ jsxs22("div", { className: "ss-w-fandash-postmatch-side ss-w-fandash-postmatch-side--away", children: [
2497
+ /* @__PURE__ */ jsxs23("div", { className: "ss-w-fandash-postmatch-side ss-w-fandash-postmatch-side--away", children: [
2426
2498
  /* @__PURE__ */ jsx27(PostMatchCrest, { url: data.awayCrestUrl, name: data.awayName, side: "away" }),
2427
2499
  /* @__PURE__ */ jsx27("span", { className: "ss-w-fandash-postmatch-team-name", children: data.awayName })
2428
2500
  ] })
2429
2501
  ] }),
2430
- /* @__PURE__ */ jsxs22("div", { className: "ss-w-fandash-postmatch-meta", children: [
2502
+ /* @__PURE__ */ jsxs23("div", { className: "ss-w-fandash-postmatch-meta", children: [
2431
2503
  data.kickoffLabel,
2432
2504
  data.competition ? ` \xB7 ${data.competition}` : ""
2433
2505
  ] })
@@ -2435,11 +2507,11 @@ function PostMatchResultCard({ card }) {
2435
2507
  }
2436
2508
 
2437
2509
  // src/components/dashboard/PostMatchGoalsCard.tsx
2438
- import { jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
2510
+ import { jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
2439
2511
  function PostMatchGoalsCard({ card, onTap }) {
2440
- return /* @__PURE__ */ jsxs23("button", { type: "button", className: "ss-w-fandash-card ss-w-fandash-card--tap ss-w-fandash-postmatch-goals", onClick: () => onTap(card), children: [
2512
+ return /* @__PURE__ */ jsxs24("button", { type: "button", className: "ss-w-fandash-card ss-w-fandash-card--tap ss-w-fandash-postmatch-goals", onClick: () => onTap(card), children: [
2441
2513
  card.title ? /* @__PURE__ */ jsx28("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
2442
- /* @__PURE__ */ jsx28("ul", { className: "ss-w-fandash-postmatch-goal-list", children: card.data.goals.map((g, i) => /* @__PURE__ */ jsxs23("li", { className: g.scoredByClub ? "ss-w-fandash-postmatch-goal ss-w-fandash-postmatch-goal--club" : "ss-w-fandash-postmatch-goal", children: [
2514
+ /* @__PURE__ */ jsx28("ul", { className: "ss-w-fandash-postmatch-goal-list", children: card.data.goals.map((g, i) => /* @__PURE__ */ jsxs24("li", { className: g.scoredByClub ? "ss-w-fandash-postmatch-goal ss-w-fandash-postmatch-goal--club" : "ss-w-fandash-postmatch-goal", children: [
2443
2515
  /* @__PURE__ */ jsx28("span", { className: "ss-w-fandash-postmatch-goal-ball" }),
2444
2516
  /* @__PURE__ */ jsx28("span", { children: g.text })
2445
2517
  ] }, `${g.text}-${i}`)) }),
@@ -2448,7 +2520,7 @@ function PostMatchGoalsCard({ card, onTap }) {
2448
2520
  }
2449
2521
 
2450
2522
  // src/components/dashboard/PostMatchStatsCard.tsx
2451
- import { jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
2523
+ import { jsx as jsx29, jsxs as jsxs25 } from "react/jsx-runtime";
2452
2524
  function splitWidths(homeNum, awayNum) {
2453
2525
  const total = homeNum + awayNum;
2454
2526
  if (total <= 0) return { home: "50%", away: "50%" };
@@ -2457,7 +2529,7 @@ function splitWidths(homeNum, awayNum) {
2457
2529
  }
2458
2530
  function PostMatchStatsCard({ card, onTap }) {
2459
2531
  const { data } = card;
2460
- return /* @__PURE__ */ jsxs24("button", { type: "button", className: "ss-w-fandash-card ss-w-fandash-card--tap ss-w-fandash-postmatch-stats", onClick: () => onTap(card), children: [
2532
+ return /* @__PURE__ */ jsxs25("button", { type: "button", className: "ss-w-fandash-card ss-w-fandash-card--tap ss-w-fandash-postmatch-stats", onClick: () => onTap(card), children: [
2461
2533
  card.title ? /* @__PURE__ */ jsx29("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
2462
2534
  /* @__PURE__ */ jsx29("div", { className: "ss-w-fandash-postmatch-stat-rows", children: data.rows.map((r, i) => {
2463
2535
  const leftValue = data.clubIsHome ? r.clubValue : r.oppValue;
@@ -2465,24 +2537,24 @@ function PostMatchStatsCard({ card, onTap }) {
2465
2537
  const homeNum = data.clubIsHome ? r.clubNum : r.oppNum;
2466
2538
  const awayNum = data.clubIsHome ? r.oppNum : r.clubNum;
2467
2539
  const { home, away } = splitWidths(homeNum, awayNum);
2468
- return /* @__PURE__ */ jsxs24("div", { className: "ss-w-fandash-postmatch-stat", children: [
2469
- /* @__PURE__ */ jsxs24("div", { className: "ss-w-fandash-postmatch-stat-row", children: [
2540
+ return /* @__PURE__ */ jsxs25("div", { className: "ss-w-fandash-postmatch-stat", children: [
2541
+ /* @__PURE__ */ jsxs25("div", { className: "ss-w-fandash-postmatch-stat-row", children: [
2470
2542
  /* @__PURE__ */ jsx29("span", { className: "ss-w-fandash-postmatch-stat-value ss-w-fandash-postmatch-stat-value--home", children: leftValue }),
2471
2543
  /* @__PURE__ */ jsx29("span", { className: "ss-w-fandash-postmatch-stat-label", children: r.label }),
2472
2544
  /* @__PURE__ */ jsx29("span", { className: "ss-w-fandash-postmatch-stat-value ss-w-fandash-postmatch-stat-value--away", children: rightValue })
2473
2545
  ] }),
2474
- /* @__PURE__ */ jsxs24("div", { className: "ss-w-fandash-postmatch-stat-bar", children: [
2546
+ /* @__PURE__ */ jsxs25("div", { className: "ss-w-fandash-postmatch-stat-bar", children: [
2475
2547
  /* @__PURE__ */ jsx29("span", { className: "ss-w-fandash-postmatch-stat-bar-home", style: { width: home } }),
2476
2548
  /* @__PURE__ */ jsx29("span", { className: "ss-w-fandash-postmatch-stat-bar-away", style: { width: away } })
2477
2549
  ] })
2478
2550
  ] }, `${r.label}-${i}`);
2479
2551
  }) }),
2480
- data.rows.length > 0 ? /* @__PURE__ */ jsxs24("div", { className: "ss-w-fandash-postmatch-legend", children: [
2481
- /* @__PURE__ */ jsxs24("span", { className: "ss-w-fandash-postmatch-legend-item", children: [
2552
+ data.rows.length > 0 ? /* @__PURE__ */ jsxs25("div", { className: "ss-w-fandash-postmatch-legend", children: [
2553
+ /* @__PURE__ */ jsxs25("span", { className: "ss-w-fandash-postmatch-legend-item", children: [
2482
2554
  /* @__PURE__ */ jsx29("i", { className: "ss-w-fandash-postmatch-legend-swatch ss-w-fandash-postmatch-legend-swatch--home" }),
2483
2555
  data.homeName
2484
2556
  ] }),
2485
- /* @__PURE__ */ jsxs24("span", { className: "ss-w-fandash-postmatch-legend-item", children: [
2557
+ /* @__PURE__ */ jsxs25("span", { className: "ss-w-fandash-postmatch-legend-item", children: [
2486
2558
  /* @__PURE__ */ jsx29("i", { className: "ss-w-fandash-postmatch-legend-swatch ss-w-fandash-postmatch-legend-swatch--away" }),
2487
2559
  data.awayName
2488
2560
  ] })
@@ -2492,7 +2564,7 @@ function PostMatchStatsCard({ card, onTap }) {
2492
2564
  }
2493
2565
 
2494
2566
  // src/components/dashboard/PostMatchTopPerformerCard.tsx
2495
- import { jsx as jsx30, jsxs as jsxs25 } from "react/jsx-runtime";
2567
+ import { jsx as jsx30, jsxs as jsxs26 } from "react/jsx-runtime";
2496
2568
  function initials4(playerName) {
2497
2569
  const words = playerName.trim().split(/\s+/).filter(Boolean);
2498
2570
  if (words.length === 0) return "?";
@@ -2502,9 +2574,9 @@ function initials4(playerName) {
2502
2574
  }
2503
2575
  function PostMatchTopPerformerCard({ card, onTap }) {
2504
2576
  const { data } = card;
2505
- return /* @__PURE__ */ jsxs25("button", { type: "button", className: "ss-w-fandash-card ss-w-fandash-card--tap ss-w-fandash-postmatch-performer", onClick: () => onTap(card), children: [
2577
+ return /* @__PURE__ */ jsxs26("button", { type: "button", className: "ss-w-fandash-card ss-w-fandash-card--tap ss-w-fandash-postmatch-performer", onClick: () => onTap(card), children: [
2506
2578
  card.title ? /* @__PURE__ */ jsx30("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
2507
- /* @__PURE__ */ jsxs25("div", { className: "ss-w-fandash-postmatch-perf-row", children: [
2579
+ /* @__PURE__ */ jsxs26("div", { className: "ss-w-fandash-postmatch-perf-row", children: [
2508
2580
  /* @__PURE__ */ jsx30("span", { className: "ss-w-fandash-postmatch-perf-avatar", "aria-hidden": "true", children: initials4(data.playerName) }),
2509
2581
  /* @__PURE__ */ jsx30("span", { className: "ss-w-fandash-postmatch-perf-name", children: data.playerName }),
2510
2582
  /* @__PURE__ */ jsx30("span", { className: "ss-w-fandash-postmatch-perf-rating", children: data.ratingLabel })
@@ -2514,22 +2586,22 @@ function PostMatchTopPerformerCard({ card, onTap }) {
2514
2586
  }
2515
2587
 
2516
2588
  // src/components/dashboard/PostMatchNextCard.tsx
2517
- import { jsx as jsx31, jsxs as jsxs26 } from "react/jsx-runtime";
2589
+ import { jsx as jsx31, jsxs as jsxs27 } from "react/jsx-runtime";
2518
2590
  function PostMatchNextCard({ card }) {
2519
2591
  const { data } = card;
2520
- return /* @__PURE__ */ jsxs26("div", { className: "ss-w-fandash-card ss-w-fandash-postmatch-next", children: [
2592
+ return /* @__PURE__ */ jsxs27("div", { className: "ss-w-fandash-card ss-w-fandash-postmatch-next", children: [
2521
2593
  card.title ? /* @__PURE__ */ jsx31("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
2522
2594
  /* @__PURE__ */ jsx31("div", { className: "ss-w-fandash-postmatch-next-row", children: /* @__PURE__ */ jsx31("span", { className: "ss-w-fandash-postmatch-next-when", children: data.whenLabel }) })
2523
2595
  ] });
2524
2596
  }
2525
2597
 
2526
2598
  // src/components/dashboard/RestingNextCard.tsx
2527
- import { jsx as jsx32, jsxs as jsxs27 } from "react/jsx-runtime";
2599
+ import { jsx as jsx32, jsxs as jsxs28 } from "react/jsx-runtime";
2528
2600
  function RestingNextCard({ card, onTap }) {
2529
2601
  const { data } = card;
2530
- return /* @__PURE__ */ jsxs27("button", { type: "button", className: "ss-w-fandash-card ss-w-fandash-card--tap ss-w-fandash-resting-next", onClick: () => onTap(card), children: [
2602
+ return /* @__PURE__ */ jsxs28("button", { type: "button", className: "ss-w-fandash-card ss-w-fandash-card--tap ss-w-fandash-resting-next", onClick: () => onTap(card), children: [
2531
2603
  card.title ? /* @__PURE__ */ jsx32("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
2532
- /* @__PURE__ */ jsxs27("div", { className: "ss-w-fandash-resting-next-row", children: [
2604
+ /* @__PURE__ */ jsxs28("div", { className: "ss-w-fandash-resting-next-row", children: [
2533
2605
  /* @__PURE__ */ jsx32("span", { className: "ss-w-fandash-resting-next-when", children: data.whenLabel }),
2534
2606
  data.competition ? /* @__PURE__ */ jsx32("span", { className: "ss-w-fandash-resting-next-competition", children: data.competition }) : null
2535
2607
  ] }),
@@ -2538,12 +2610,12 @@ function RestingNextCard({ card, onTap }) {
2538
2610
  }
2539
2611
 
2540
2612
  // src/components/dashboard/RestingStandingsCard.tsx
2541
- import { jsx as jsx33, jsxs as jsxs28 } from "react/jsx-runtime";
2613
+ import { jsx as jsx33, jsxs as jsxs29 } from "react/jsx-runtime";
2542
2614
  function RestingStandingsCard({ card, onTap }) {
2543
2615
  const { data } = card;
2544
- return /* @__PURE__ */ jsxs28("button", { type: "button", className: "ss-w-fandash-card ss-w-fandash-card--tap ss-w-fandash-resting-standings", onClick: () => onTap(card), children: [
2616
+ return /* @__PURE__ */ jsxs29("button", { type: "button", className: "ss-w-fandash-card ss-w-fandash-card--tap ss-w-fandash-resting-standings", onClick: () => onTap(card), children: [
2545
2617
  card.title ? /* @__PURE__ */ jsx33("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
2546
- /* @__PURE__ */ jsxs28("div", { className: "ss-w-fandash-resting-standings-row", children: [
2618
+ /* @__PURE__ */ jsxs29("div", { className: "ss-w-fandash-resting-standings-row", children: [
2547
2619
  /* @__PURE__ */ jsx33("span", { className: "ss-w-fandash-resting-standings-position", children: data.positionLabel }),
2548
2620
  /* @__PURE__ */ jsx33("span", { className: "ss-w-fandash-resting-standings-record", children: data.recordLabel })
2549
2621
  ] }),
@@ -2552,12 +2624,12 @@ function RestingStandingsCard({ card, onTap }) {
2552
2624
  }
2553
2625
 
2554
2626
  // src/components/dashboard/RestingSeasonCard.tsx
2555
- import { jsx as jsx34, jsxs as jsxs29 } from "react/jsx-runtime";
2627
+ import { jsx as jsx34, jsxs as jsxs30 } from "react/jsx-runtime";
2556
2628
  function RestingSeasonCard({ card, onTap }) {
2557
2629
  const { data } = card;
2558
- return /* @__PURE__ */ jsxs29("button", { type: "button", className: "ss-w-fandash-card ss-w-fandash-card--tap ss-w-fandash-resting-season", onClick: () => onTap(card), children: [
2630
+ return /* @__PURE__ */ jsxs30("button", { type: "button", className: "ss-w-fandash-card ss-w-fandash-card--tap ss-w-fandash-resting-season", onClick: () => onTap(card), children: [
2559
2631
  card.title ? /* @__PURE__ */ jsx34("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
2560
- /* @__PURE__ */ jsxs29("div", { className: "ss-w-fandash-resting-season-rows", children: [
2632
+ /* @__PURE__ */ jsxs30("div", { className: "ss-w-fandash-resting-season-rows", children: [
2561
2633
  data.scorerLabel ? /* @__PURE__ */ jsx34("span", { className: "ss-w-fandash-resting-season-row", children: data.scorerLabel }) : null,
2562
2634
  data.playerLabel ? /* @__PURE__ */ jsx34("span", { className: "ss-w-fandash-resting-season-row", children: data.playerLabel }) : null,
2563
2635
  /* @__PURE__ */ jsx34("span", { className: "ss-w-fandash-resting-season-row", children: data.tallyLabel })
@@ -2567,7 +2639,7 @@ function RestingSeasonCard({ card, onTap }) {
2567
2639
  }
2568
2640
 
2569
2641
  // src/components/dashboard/RestingFormCard.tsx
2570
- import { jsx as jsx35, jsxs as jsxs30 } from "react/jsx-runtime";
2642
+ import { jsx as jsx35, jsxs as jsxs31 } from "react/jsx-runtime";
2571
2643
  function resultClass(result) {
2572
2644
  const upper = result.toUpperCase();
2573
2645
  if (upper === "W") return "ss-w-fandash-form-pill--win";
@@ -2576,17 +2648,17 @@ function resultClass(result) {
2576
2648
  }
2577
2649
  function RestingFormCard({ card }) {
2578
2650
  const { data } = card;
2579
- return /* @__PURE__ */ jsxs30("div", { className: "ss-w-fandash-card ss-w-fandash-resting-form", children: [
2651
+ return /* @__PURE__ */ jsxs31("div", { className: "ss-w-fandash-card ss-w-fandash-resting-form", children: [
2580
2652
  card.title ? /* @__PURE__ */ jsx35("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
2581
2653
  /* @__PURE__ */ jsx35("span", { className: "ss-w-fandash-form", children: data.letters.map((r, i) => /* @__PURE__ */ jsx35("span", { className: `ss-w-fandash-form-pill ${resultClass(r)}`, children: r }, `${r}-${i}`)) })
2582
2654
  ] });
2583
2655
  }
2584
2656
 
2585
2657
  // src/components/dashboard/LiveScoreCard.tsx
2586
- import { useRef as useRef5, useState as useState14 } from "react";
2658
+ import { useRef as useRef6, useState as useState15 } from "react";
2587
2659
 
2588
2660
  // src/useLiveClock.ts
2589
- import { useEffect as useEffect7, useState as useState13 } from "react";
2661
+ import { useEffect as useEffect8, useState as useState14 } from "react";
2590
2662
  var TICK_MS = 6e4;
2591
2663
  var MAX_LIVE_TICK_MINUTES = 15;
2592
2664
  function computeDisplayMinute(minute, clockRunning, receivedAtMs) {
@@ -2595,10 +2667,10 @@ function computeDisplayMinute(minute, clockRunning, receivedAtMs) {
2595
2667
  return minute + Math.min(Math.max(0, elapsedMinutes), MAX_LIVE_TICK_MINUTES);
2596
2668
  }
2597
2669
  function useLiveClock(minute, clockRunning, receivedAtMs) {
2598
- const [displayMinute, setDisplayMinute] = useState13(
2670
+ const [displayMinute, setDisplayMinute] = useState14(
2599
2671
  () => computeDisplayMinute(minute, clockRunning, receivedAtMs)
2600
2672
  );
2601
- useEffect7(() => {
2673
+ useEffect8(() => {
2602
2674
  setDisplayMinute(computeDisplayMinute(minute, clockRunning, receivedAtMs));
2603
2675
  if (!clockRunning) return;
2604
2676
  const id = window.setInterval(() => {
@@ -2610,12 +2682,12 @@ function useLiveClock(minute, clockRunning, receivedAtMs) {
2610
2682
  }
2611
2683
 
2612
2684
  // src/components/dashboard/LiveScoreCard.tsx
2613
- import { jsx as jsx36, jsxs as jsxs31 } from "react/jsx-runtime";
2685
+ import { jsx as jsx36, jsxs as jsxs32 } from "react/jsx-runtime";
2614
2686
  function initials5(name) {
2615
2687
  return name.trim().slice(0, 3).toUpperCase();
2616
2688
  }
2617
2689
  function LiveCrest({ url, name, side }) {
2618
- const [failed, setFailed] = useState14(false);
2690
+ const [failed, setFailed] = useState15(false);
2619
2691
  const cls = `ss-w-fandash-live-crest ss-w-fandash-live-crest--${side}`;
2620
2692
  if (url && !failed) {
2621
2693
  return /* @__PURE__ */ jsx36("img", { className: cls, src: url, alt: "", "aria-hidden": "true", onError: () => setFailed(true) });
@@ -2634,39 +2706,39 @@ function LiveScoreCard({
2634
2706
  }) {
2635
2707
  const { data } = card;
2636
2708
  const seedKey = `${data.minute}:${data.homeScore}:${data.awayScore}`;
2637
- const seedRef = useRef5(null);
2709
+ const seedRef = useRef6(null);
2638
2710
  if (!seedRef.current || seedRef.current.key !== seedKey) {
2639
2711
  seedRef.current = { key: seedKey, receivedAtMs: Date.now() };
2640
2712
  }
2641
2713
  const displayMinute = useLiveClock(data.minute, data.clockRunning, seedRef.current.receivedAtMs);
2642
2714
  const minuteSuffix = data.minuteLabel.replace(/^\d+/, "");
2643
2715
  const scorers = scorersLine(goalEvents);
2644
- return /* @__PURE__ */ jsxs31("div", { className: "ss-w-fandash-card ss-w-fandash-live-score", children: [
2716
+ return /* @__PURE__ */ jsxs32("div", { className: "ss-w-fandash-card ss-w-fandash-live-score", children: [
2645
2717
  card.title ? /* @__PURE__ */ jsx36("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
2646
- /* @__PURE__ */ jsxs31("div", { className: "ss-w-fandash-live-top", children: [
2647
- /* @__PURE__ */ jsxs31("span", { className: "ss-w-fandash-live-pill", children: [
2718
+ /* @__PURE__ */ jsxs32("div", { className: "ss-w-fandash-live-top", children: [
2719
+ /* @__PURE__ */ jsxs32("span", { className: "ss-w-fandash-live-pill", children: [
2648
2720
  /* @__PURE__ */ jsx36("span", { className: "ss-w-fandash-live-dot", "aria-hidden": "true" }),
2649
2721
  data.statusLabel
2650
2722
  ] }),
2651
2723
  /* @__PURE__ */ jsx36("span", { className: "ss-w-fandash-live-minute", children: `${displayMinute}${minuteSuffix}` }),
2652
2724
  data.competition ? /* @__PURE__ */ jsx36("span", { className: "ss-w-fandash-live-competition", children: data.competition }) : null
2653
2725
  ] }),
2654
- /* @__PURE__ */ jsxs31("div", { className: "ss-w-fandash-live-main", children: [
2655
- /* @__PURE__ */ jsxs31("div", { className: "ss-w-fandash-live-side ss-w-fandash-live-side--home", children: [
2726
+ /* @__PURE__ */ jsxs32("div", { className: "ss-w-fandash-live-main", children: [
2727
+ /* @__PURE__ */ jsxs32("div", { className: "ss-w-fandash-live-side ss-w-fandash-live-side--home", children: [
2656
2728
  /* @__PURE__ */ jsx36(LiveCrest, { url: data.homeCrestUrl, name: data.homeName, side: "home" }),
2657
2729
  /* @__PURE__ */ jsx36("span", { className: "ss-w-fandash-live-team-name", children: data.homeName })
2658
2730
  ] }),
2659
- /* @__PURE__ */ jsxs31("div", { className: "ss-w-fandash-live-score-main", children: [
2731
+ /* @__PURE__ */ jsxs32("div", { className: "ss-w-fandash-live-score-main", children: [
2660
2732
  /* @__PURE__ */ jsx36("span", { className: "ss-w-fandash-live-score-value", children: data.homeScore }),
2661
2733
  /* @__PURE__ */ jsx36("span", { className: "ss-w-fandash-live-score-sep", children: "\u2013" }),
2662
2734
  /* @__PURE__ */ jsx36("span", { className: "ss-w-fandash-live-score-value", children: data.awayScore })
2663
2735
  ] }),
2664
- /* @__PURE__ */ jsxs31("div", { className: "ss-w-fandash-live-side ss-w-fandash-live-side--away", children: [
2736
+ /* @__PURE__ */ jsxs32("div", { className: "ss-w-fandash-live-side ss-w-fandash-live-side--away", children: [
2665
2737
  /* @__PURE__ */ jsx36(LiveCrest, { url: data.awayCrestUrl, name: data.awayName, side: "away" }),
2666
2738
  /* @__PURE__ */ jsx36("span", { className: "ss-w-fandash-live-team-name", children: data.awayName })
2667
2739
  ] })
2668
2740
  ] }),
2669
- scorers ? /* @__PURE__ */ jsxs31("div", { className: "ss-w-fandash-live-scorers", children: [
2741
+ scorers ? /* @__PURE__ */ jsxs32("div", { className: "ss-w-fandash-live-scorers", children: [
2670
2742
  /* @__PURE__ */ jsx36("span", { className: "ss-w-fandash-live-scorers-icon", "aria-hidden": "true", children: "\u26BD" }),
2671
2743
  scorers
2672
2744
  ] }) : null
@@ -2674,8 +2746,8 @@ function LiveScoreCard({
2674
2746
  }
2675
2747
 
2676
2748
  // src/components/dashboard/LiveTimelineCard.tsx
2677
- import { useState as useState15 } from "react";
2678
- import { jsx as jsx37, jsxs as jsxs32 } from "react/jsx-runtime";
2749
+ import { useState as useState16 } from "react";
2750
+ import { jsx as jsx37, jsxs as jsxs33 } from "react/jsx-runtime";
2679
2751
  var SHOWN2 = 3;
2680
2752
  function EventIcon({ type }) {
2681
2753
  if (type === "goal") {
@@ -2691,9 +2763,9 @@ function EventIcon({ type }) {
2691
2763
  }
2692
2764
  function EventLabel({ e }) {
2693
2765
  if (e.type === "sub") {
2694
- return /* @__PURE__ */ jsxs32("span", { className: "ss-w-fandash-live-tl-who", children: [
2766
+ return /* @__PURE__ */ jsxs33("span", { className: "ss-w-fandash-live-tl-who", children: [
2695
2767
  e.player ?? e.text,
2696
- e.playerOff ? /* @__PURE__ */ jsxs32("span", { className: "ss-w-fandash-live-tl-off", children: [
2768
+ e.playerOff ? /* @__PURE__ */ jsxs33("span", { className: "ss-w-fandash-live-tl-off", children: [
2697
2769
  " for ",
2698
2770
  e.playerOff
2699
2771
  ] }) : null
@@ -2707,8 +2779,8 @@ function EventRow({ e }) {
2707
2779
  e.side === "home" ? "ss-w-fandash-live-tl-ev--home" : "ss-w-fandash-live-tl-ev--away",
2708
2780
  e.type === "goal" ? "ss-w-fandash-live-tl-ev--goal" : ""
2709
2781
  ].filter(Boolean).join(" ");
2710
- return /* @__PURE__ */ jsxs32("div", { className: cls, children: [
2711
- /* @__PURE__ */ jsxs32("span", { className: "ss-w-fandash-live-tl-txt", children: [
2782
+ return /* @__PURE__ */ jsxs33("div", { className: cls, children: [
2783
+ /* @__PURE__ */ jsxs33("span", { className: "ss-w-fandash-live-tl-txt", children: [
2712
2784
  /* @__PURE__ */ jsx37(EventLabel, { e }),
2713
2785
  /* @__PURE__ */ jsx37(EventIcon, { type: e.type })
2714
2786
  ] }),
@@ -2716,7 +2788,7 @@ function EventRow({ e }) {
2716
2788
  ] });
2717
2789
  }
2718
2790
  function LiveTimelineCard({ card, ui }) {
2719
- const [expanded, setExpanded] = useState15(false);
2791
+ const [expanded, setExpanded] = useState16(false);
2720
2792
  const events = card.data.events;
2721
2793
  if (!events || events.length === 0) return null;
2722
2794
  const sorted = [...events].sort((a, b) => b.minute - a.minute);
@@ -2724,7 +2796,7 @@ function LiveTimelineCard({ card, ui }) {
2724
2796
  const shown = expanded ? sorted : sorted.slice(0, SHOWN2);
2725
2797
  const showMore = ui?.showMore ?? ((n) => `Show ${n} more`);
2726
2798
  const showLess = ui?.showLess ?? "Show less";
2727
- return /* @__PURE__ */ jsxs32("div", { className: "ss-w-fandash-card ss-w-fandash-live-timeline", children: [
2799
+ return /* @__PURE__ */ jsxs33("div", { className: "ss-w-fandash-card ss-w-fandash-live-timeline", children: [
2728
2800
  card.title ? /* @__PURE__ */ jsx37("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
2729
2801
  /* @__PURE__ */ jsx37("div", { className: "ss-w-fandash-live-tl", children: shown.map((e, i) => /* @__PURE__ */ jsx37(EventRow, { e }, `${e.minute}-${e.side}-${e.type}-${i}`)) }),
2730
2802
  rest > 0 ? /* @__PURE__ */ jsx37(
@@ -2742,7 +2814,7 @@ function LiveTimelineCard({ card, ui }) {
2742
2814
 
2743
2815
  // src/components/dashboard/MomentumWave.tsx
2744
2816
  import { useId } from "react";
2745
- import { jsx as jsx38, jsxs as jsxs33 } from "react/jsx-runtime";
2817
+ import { jsx as jsx38, jsxs as jsxs34 } from "react/jsx-runtime";
2746
2818
  var WIDTH = 270;
2747
2819
  var HEIGHT = 56;
2748
2820
  var BASELINE = HEIGHT / 2;
@@ -2770,10 +2842,10 @@ function MomentumWave({
2770
2842
  const bottomClipId = `${clipId}-bottom`;
2771
2843
  const topClass = clubIsHome ? "ss-w-fandash-live-mom-home" : "ss-w-fandash-live-mom-away";
2772
2844
  const bottomClass = clubIsHome ? "ss-w-fandash-live-mom-away" : "ss-w-fandash-live-mom-home";
2773
- return /* @__PURE__ */ jsxs33("div", { className: "ss-w-fandash-live-mom", children: [
2845
+ return /* @__PURE__ */ jsxs34("div", { className: "ss-w-fandash-live-mom", children: [
2774
2846
  caption ? /* @__PURE__ */ jsx38("span", { className: "ss-w-fandash-live-mom-caption", children: caption }) : null,
2775
- /* @__PURE__ */ jsxs33("div", { className: "ss-w-fandash-live-mom-plot", children: [
2776
- /* @__PURE__ */ jsxs33(
2847
+ /* @__PURE__ */ jsxs34("div", { className: "ss-w-fandash-live-mom-plot", children: [
2848
+ /* @__PURE__ */ jsxs34(
2777
2849
  "svg",
2778
2850
  {
2779
2851
  className: "ss-w-fandash-live-mom-svg",
@@ -2782,7 +2854,7 @@ function MomentumWave({
2782
2854
  role: "img",
2783
2855
  "aria-label": caption ?? "Momentum",
2784
2856
  children: [
2785
- /* @__PURE__ */ jsxs33("defs", { children: [
2857
+ /* @__PURE__ */ jsxs34("defs", { children: [
2786
2858
  /* @__PURE__ */ jsx38("clipPath", { id: topClipId, children: /* @__PURE__ */ jsx38("rect", { x: 0, y: 0, width: WIDTH, height: BASELINE }) }),
2787
2859
  /* @__PURE__ */ jsx38("clipPath", { id: bottomClipId, children: /* @__PURE__ */ jsx38("rect", { x: 0, y: BASELINE, width: WIDTH, height: HEIGHT - BASELINE }) })
2788
2860
  ] }),
@@ -2806,7 +2878,7 @@ function MomentumWave({
2806
2878
  }
2807
2879
 
2808
2880
  // src/components/dashboard/LiveStatsCard.tsx
2809
- import { jsx as jsx39, jsxs as jsxs34 } from "react/jsx-runtime";
2881
+ import { jsx as jsx39, jsxs as jsxs35 } from "react/jsx-runtime";
2810
2882
  function splitWidths2(homeNum, awayNum) {
2811
2883
  const total = homeNum + awayNum;
2812
2884
  if (total <= 0) return { home: "50%", away: "50%" };
@@ -2815,7 +2887,7 @@ function splitWidths2(homeNum, awayNum) {
2815
2887
  }
2816
2888
  function LiveStatsCard({ card }) {
2817
2889
  const { data } = card;
2818
- return /* @__PURE__ */ jsxs34("div", { className: "ss-w-fandash-card ss-w-fandash-live-stats", children: [
2890
+ return /* @__PURE__ */ jsxs35("div", { className: "ss-w-fandash-card ss-w-fandash-live-stats", children: [
2819
2891
  card.title ? /* @__PURE__ */ jsx39("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
2820
2892
  /* @__PURE__ */ jsx39("div", { className: "ss-w-fandash-live-stat-rows", children: data.rows.map((r, i) => {
2821
2893
  const homeValue = data.clubIsHome ? r.clubValue : r.oppValue;
@@ -2823,25 +2895,25 @@ function LiveStatsCard({ card }) {
2823
2895
  const homeNum = data.clubIsHome ? r.clubNum : r.oppNum;
2824
2896
  const awayNum = data.clubIsHome ? r.oppNum : r.clubNum;
2825
2897
  const { home, away } = splitWidths2(homeNum, awayNum);
2826
- return /* @__PURE__ */ jsxs34("div", { className: "ss-w-fandash-live-stat", children: [
2827
- /* @__PURE__ */ jsxs34("div", { className: "ss-w-fandash-live-stat-row", children: [
2898
+ return /* @__PURE__ */ jsxs35("div", { className: "ss-w-fandash-live-stat", children: [
2899
+ /* @__PURE__ */ jsxs35("div", { className: "ss-w-fandash-live-stat-row", children: [
2828
2900
  /* @__PURE__ */ jsx39("span", { className: "ss-w-fandash-live-stat-value ss-w-fandash-live-stat-value--home", children: homeValue }),
2829
2901
  /* @__PURE__ */ jsx39("span", { className: "ss-w-fandash-live-stat-label", children: r.label }),
2830
2902
  /* @__PURE__ */ jsx39("span", { className: "ss-w-fandash-live-stat-value ss-w-fandash-live-stat-value--away", children: awayValue })
2831
2903
  ] }),
2832
- /* @__PURE__ */ jsxs34("div", { className: "ss-w-fandash-live-bar", children: [
2904
+ /* @__PURE__ */ jsxs35("div", { className: "ss-w-fandash-live-bar", children: [
2833
2905
  /* @__PURE__ */ jsx39("span", { className: "ss-w-fandash-live-bar-home", style: { width: home } }),
2834
2906
  /* @__PURE__ */ jsx39("span", { className: "ss-w-fandash-live-bar-away", style: { width: away } })
2835
2907
  ] })
2836
2908
  ] }, `${r.label}-${i}`);
2837
2909
  }) }),
2838
2910
  data.momentum.length > 0 ? /* @__PURE__ */ jsx39(MomentumWave, { points: data.momentum, caption: data.momentumLabel, clubIsHome: data.clubIsHome }) : data.momentumLabel ? /* @__PURE__ */ jsx39("span", { className: "ss-w-fandash-live-momentum", children: data.momentumLabel }) : null,
2839
- data.rows.length > 0 ? /* @__PURE__ */ jsxs34("div", { className: "ss-w-fandash-live-legend", children: [
2840
- /* @__PURE__ */ jsxs34("span", { className: "ss-w-fandash-live-legend-item", children: [
2911
+ data.rows.length > 0 ? /* @__PURE__ */ jsxs35("div", { className: "ss-w-fandash-live-legend", children: [
2912
+ /* @__PURE__ */ jsxs35("span", { className: "ss-w-fandash-live-legend-item", children: [
2841
2913
  /* @__PURE__ */ jsx39("i", { className: "ss-w-fandash-live-legend-swatch ss-w-fandash-live-legend-swatch--home" }),
2842
2914
  data.homeName
2843
2915
  ] }),
2844
- /* @__PURE__ */ jsxs34("span", { className: "ss-w-fandash-live-legend-item", children: [
2916
+ /* @__PURE__ */ jsxs35("span", { className: "ss-w-fandash-live-legend-item", children: [
2845
2917
  /* @__PURE__ */ jsx39("i", { className: "ss-w-fandash-live-legend-swatch ss-w-fandash-live-legend-swatch--away" }),
2846
2918
  data.awayName
2847
2919
  ] })
@@ -2850,7 +2922,7 @@ function LiveStatsCard({ card }) {
2850
2922
  }
2851
2923
 
2852
2924
  // src/components/dashboard/ClubFanDashboard.tsx
2853
- import { jsx as jsx40, jsxs as jsxs35 } from "react/jsx-runtime";
2925
+ import { jsx as jsx40, jsxs as jsxs36 } from "react/jsx-runtime";
2854
2926
  function ClubFanDashboard({ dashboard, onTap, ui }) {
2855
2927
  const orderedCards = [
2856
2928
  ...dashboard.cards.filter((c) => c.cardType === "countdown"),
@@ -2860,7 +2932,7 @@ function ClubFanDashboard({ dashboard, onTap, ui }) {
2860
2932
  (c) => c.cardType === "liveTimeline"
2861
2933
  );
2862
2934
  const goalEvents = timelineCard?.data.events.filter((e) => e.type === "goal");
2863
- return /* @__PURE__ */ jsxs35("div", { className: "ss-w-fandash", children: [
2935
+ return /* @__PURE__ */ jsxs36("div", { className: "ss-w-fandash", children: [
2864
2936
  dashboard.greeting ? /* @__PURE__ */ jsx40("span", { className: dashboard.greetingIsLead ? "ss-w-fandash-greeting ss-w-fandash-greeting--lead" : "ss-w-fandash-greeting", children: dashboard.greeting }) : null,
2865
2937
  /* @__PURE__ */ jsx40("div", { className: "ss-w-fandash-cards", children: orderedCards.map((card, i) => /* @__PURE__ */ jsx40(FanDashboardCard, { card, onTap, ui, goalEvents }, `${card.cardType}-${i}`)) })
2866
2938
  ] });
@@ -2913,7 +2985,7 @@ function FanDashboardCard({ card, onTap, ui, goalEvents }) {
2913
2985
  }
2914
2986
 
2915
2987
  // src/components/ChatMessage.tsx
2916
- import { jsx as jsx41, jsxs as jsxs36 } from "react/jsx-runtime";
2988
+ import { jsx as jsx41, jsxs as jsxs37 } from "react/jsx-runtime";
2917
2989
  function ChatMessage({ message, disabled, onAct, onTap, ui, slip, monitor }) {
2918
2990
  if (message.role === "user") {
2919
2991
  return /* @__PURE__ */ jsx41("div", { className: "ss-w-msg ss-w-user", "data-msg-id": message.id, children: /* @__PURE__ */ jsx41("div", { className: "ss-w-bubble", children: message.text }) });
@@ -2921,7 +2993,7 @@ function ChatMessage({ message, disabled, onAct, onTap, ui, slip, monitor }) {
2921
2993
  const onFanDashboardTap = (card) => {
2922
2994
  onAct({ message: card.actionLabel, actionRef: card.actionRef, label: card.actionLabel || card.title || "" });
2923
2995
  };
2924
- return /* @__PURE__ */ jsxs36("div", { className: "ss-w-msg ss-w-bot", "data-msg-id": message.id, children: [
2996
+ return /* @__PURE__ */ jsxs37("div", { className: "ss-w-msg ss-w-bot", "data-msg-id": message.id, children: [
2925
2997
  message.text && !message.greetingDashboard && !message.clubFanDashboard ? /* @__PURE__ */ jsx41(Markdown, { text: message.text }) : null,
2926
2998
  message.greetingDashboard && !message.clubFanDashboard ? /* @__PURE__ */ jsx41(GreetingDashboard, { dashboard: message.greetingDashboard, onTap }) : null,
2927
2999
  message.clubFanDashboard ? /* @__PURE__ */ jsx41(ClubFanDashboard, { dashboard: message.clubFanDashboard, onTap: onFanDashboardTap, ui }) : null,
@@ -2947,7 +3019,7 @@ function isPinnedToBottom(el, threshold = PIN_THRESHOLD) {
2947
3019
  }
2948
3020
 
2949
3021
  // src/components/MessageList.tsx
2950
- import { jsx as jsx43, jsxs as jsxs37 } from "react/jsx-runtime";
3022
+ import { jsx as jsx43, jsxs as jsxs38 } from "react/jsx-runtime";
2951
3023
  function turnAnchor(messages) {
2952
3024
  const last = messages[messages.length - 1];
2953
3025
  if (!last || last.role !== "assistant") return null;
@@ -2956,16 +3028,16 @@ function turnAnchor(messages) {
2956
3028
  }
2957
3029
  function MessageList({ controller, ui, slip, onDashboardTap, monitor }) {
2958
3030
  const { state, send } = controller;
2959
- const listRef = useRef6(null);
2960
- const endRef = useRef6(null);
2961
- const pinnedRef = useRef6(true);
2962
- const anchoredTurnRef = useRef6(null);
2963
- useEffect8(() => {
3031
+ const listRef = useRef7(null);
3032
+ const endRef = useRef7(null);
3033
+ const pinnedRef = useRef7(true);
3034
+ const anchoredTurnRef = useRef7(null);
3035
+ useEffect9(() => {
2964
3036
  const anchor = turnAnchor(state.messages);
2965
3037
  const list = listRef.current;
2966
3038
  if (anchor && anchor.turnId !== anchoredTurnRef.current) {
2967
3039
  anchoredTurnRef.current = anchor.turnId;
2968
- if (endRef.current && list) endRef.current.style.height = `${list.clientHeight}px`;
3040
+ if (endRef.current && list) endRef.current.style.height = state.isStreaming ? `${list.clientHeight}px` : "";
2969
3041
  pinnedRef.current = false;
2970
3042
  list?.querySelector(`[data-msg-id="${anchor.anchorId}"]`)?.scrollIntoView({ block: "start" });
2971
3043
  return;
@@ -2975,7 +3047,7 @@ function MessageList({ controller, ui, slip, onDashboardTap, monitor }) {
2975
3047
  }, [state.messages, state.status, state.isStreaming]);
2976
3048
  const hasUserMessage = state.messages.some((m) => m.role === "user");
2977
3049
  const hasDashboard = state.messages.some((m) => m.role === "assistant" && (m.greetingDashboard || m.clubFanDashboard));
2978
- return /* @__PURE__ */ jsxs37(
3050
+ return /* @__PURE__ */ jsxs38(
2979
3051
  "div",
2980
3052
  {
2981
3053
  className: "ss-w-list",
@@ -3004,7 +3076,7 @@ function MessageList({ controller, ui, slip, onDashboardTap, monitor }) {
3004
3076
  state.isStreaming && state.actionsLoading ? /* @__PURE__ */ jsx43(ActionButtons, { actions: [], loading: true, onAct: () => {
3005
3077
  } }) : null,
3006
3078
  state.status ? /* @__PURE__ */ jsx43("div", { className: "ss-w-status", children: state.status }) : null,
3007
- state.error ? /* @__PURE__ */ jsxs37("div", { className: "ss-w-error", role: "alert", children: [
3079
+ state.error ? /* @__PURE__ */ jsxs38("div", { className: "ss-w-error", role: "alert", children: [
3008
3080
  /* @__PURE__ */ jsx43("span", { children: "message" in state.error ? state.error.message : ui.somethingWentWrong }),
3009
3081
  /* @__PURE__ */ jsx43("button", { type: "button", className: "ss-w-retry", onClick: () => controller.retry(), children: ui.retry })
3010
3082
  ] }) : null,
@@ -3016,10 +3088,10 @@ function MessageList({ controller, ui, slip, onDashboardTap, monitor }) {
3016
3088
  }
3017
3089
 
3018
3090
  // src/components/ChatInput.tsx
3019
- import { useState as useState16 } from "react";
3020
- import { jsx as jsx44, jsxs as jsxs38 } from "react/jsx-runtime";
3091
+ import { useState as useState17 } from "react";
3092
+ import { jsx as jsx44, jsxs as jsxs39 } from "react/jsx-runtime";
3021
3093
  function ChatInput({ placeholder, streaming, onSend, onStop, stopLabel = "Stop response", sendLabel = "Send message" }) {
3022
- const [value, setValue] = useState16("");
3094
+ const [value, setValue] = useState17("");
3023
3095
  const submit = () => {
3024
3096
  const t = value.trim();
3025
3097
  if (!t) return;
@@ -3032,14 +3104,14 @@ function ChatInput({ placeholder, streaming, onSend, onStop, stopLabel = "Stop r
3032
3104
  submit();
3033
3105
  }
3034
3106
  };
3035
- return /* @__PURE__ */ jsxs38("div", { className: "ss-w-input", children: [
3107
+ return /* @__PURE__ */ jsxs39("div", { className: "ss-w-input", children: [
3036
3108
  /* @__PURE__ */ jsx44("textarea", { className: "ss-w-textarea", rows: 1, placeholder, value, disabled: streaming, onChange: (e) => setValue(e.target.value), onKeyDown }),
3037
3109
  streaming ? /* @__PURE__ */ jsx44("button", { type: "button", className: "ss-w-send ss-w-stop", "aria-label": stopLabel, onClick: onStop, children: /* @__PURE__ */ jsx44("span", { className: "ss-w-stop-glyph" }) }) : /* @__PURE__ */ jsx44("button", { type: "button", className: "ss-w-send", "aria-label": sendLabel, onClick: submit, children: /* @__PURE__ */ jsx44(SendIcon, {}) })
3038
3110
  ] });
3039
3111
  }
3040
3112
 
3041
3113
  // src/components/TabBar.tsx
3042
- import { jsx as jsx45, jsxs as jsxs39 } from "react/jsx-runtime";
3114
+ import { jsx as jsx45, jsxs as jsxs40 } from "react/jsx-runtime";
3043
3115
  var TABS = [
3044
3116
  { tab: "chat", labelKey: "tabChat" },
3045
3117
  { tab: "matches", labelKey: "tabMatches" },
@@ -3056,7 +3128,7 @@ function TabBar({ monitor, ui, matchCount, oddsCount }) {
3056
3128
  return /* @__PURE__ */ jsx45("div", { className: "ss-w-tabs", role: "tablist", children: TABS.map(({ tab, labelKey }) => {
3057
3129
  const active = monitor.activeTab === tab;
3058
3130
  const count = counts[tab];
3059
- return /* @__PURE__ */ jsxs39(
3131
+ return /* @__PURE__ */ jsxs40(
3060
3132
  "button",
3061
3133
  {
3062
3134
  type: "button",
@@ -3077,7 +3149,7 @@ function TabBar({ monitor, ui, matchCount, oddsCount }) {
3077
3149
  }
3078
3150
 
3079
3151
  // src/components/MarketAccordion.tsx
3080
- import { jsx as jsx46, jsxs as jsxs40 } from "react/jsx-runtime";
3152
+ import { jsx as jsx46, jsxs as jsxs41 } from "react/jsx-runtime";
3081
3153
  function MarketAccordion({ match, monitor, ui, slip }) {
3082
3154
  const markets = match.availableMarkets ?? [];
3083
3155
  if (markets.length === 0) return null;
@@ -3086,9 +3158,9 @@ function MarketAccordion({ match, monitor, ui, slip }) {
3086
3158
  const isOpen = open === m.marketDeveloperName;
3087
3159
  const key = `${match.matchId}:${m.marketDeveloperName}`;
3088
3160
  const entry = monitor.marketOdds[key];
3089
- return /* @__PURE__ */ jsxs40("div", { className: isOpen ? "ss-w-acc-row ss-w-acc-row-open" : "ss-w-acc-row", children: [
3090
- /* @__PURE__ */ jsxs40("div", { className: "ss-w-acc-head", children: [
3091
- /* @__PURE__ */ jsxs40(
3161
+ return /* @__PURE__ */ jsxs41("div", { className: isOpen ? "ss-w-acc-row ss-w-acc-row-open" : "ss-w-acc-row", children: [
3162
+ /* @__PURE__ */ jsxs41("div", { className: "ss-w-acc-head", children: [
3163
+ /* @__PURE__ */ jsxs41(
3092
3164
  "button",
3093
3165
  {
3094
3166
  type: "button",
@@ -3112,7 +3184,7 @@ function MarketAccordion({ match, monitor, ui, slip }) {
3112
3184
  }
3113
3185
  )
3114
3186
  ] }),
3115
- isOpen && /* @__PURE__ */ jsxs40("div", { className: "ss-w-acc-panel", children: [
3187
+ isOpen && /* @__PURE__ */ jsxs41("div", { className: "ss-w-acc-panel", children: [
3116
3188
  entry?.error && /* @__PURE__ */ jsx46(
3117
3189
  "div",
3118
3190
  {
@@ -3121,7 +3193,7 @@ function MarketAccordion({ match, monitor, ui, slip }) {
3121
3193
  children: ui.accordionRetry
3122
3194
  }
3123
3195
  ),
3124
- entry?.block?.insight?.text && /* @__PURE__ */ jsxs40("div", { className: "ss-w-acc-insight", children: [
3196
+ entry?.block?.insight?.text && /* @__PURE__ */ jsxs41("div", { className: "ss-w-acc-insight", children: [
3125
3197
  /* @__PURE__ */ jsx46("span", { className: "ss-w-acc-badge", children: ui.accordionValueLabel }),
3126
3198
  " ",
3127
3199
  entry.block.insight.text
@@ -3143,7 +3215,7 @@ function MarketAccordion({ match, monitor, ui, slip }) {
3143
3215
  }
3144
3216
 
3145
3217
  // src/components/MonitorMatchCard.tsx
3146
- import { jsx as jsx47, jsxs as jsxs41 } from "react/jsx-runtime";
3218
+ import { jsx as jsx47, jsxs as jsxs42 } from "react/jsx-runtime";
3147
3219
  function chipSelection(row, matchId, conversationId) {
3148
3220
  const chip = row.market;
3149
3221
  if (!chip || !chip.addToSlipEnabled || typeof chip.matchOddsId !== "number" || typeof chip.price !== "number") return null;
@@ -3166,14 +3238,14 @@ function MonitorMatchCard({ match, promotedPins, monitor, ui, slip }) {
3166
3238
  const otherRows = match.statRows.filter((row) => !isPromoted(row, promotedPins));
3167
3239
  const orderedRows = [...promotedRows, ...otherRows];
3168
3240
  const kickoff = match.phase === "preMatch" && match.kickoffUtc ? ui.bettingKickoff(match.kickoffUtc) : void 0;
3169
- return /* @__PURE__ */ jsxs41("div", { className: "ss-w-mon", children: [
3170
- /* @__PURE__ */ jsxs41("div", { className: "ss-w-mon-top", children: [
3171
- live && /* @__PURE__ */ jsxs41("span", { className: "ss-w-fandash-live-pill", children: [
3241
+ return /* @__PURE__ */ jsxs42("div", { className: "ss-w-mon", children: [
3242
+ /* @__PURE__ */ jsxs42("div", { className: "ss-w-mon-top", children: [
3243
+ live && /* @__PURE__ */ jsxs42("span", { className: "ss-w-fandash-live-pill", children: [
3172
3244
  /* @__PURE__ */ jsx47("span", { className: "ss-w-fandash-live-dot", "aria-hidden": "true" }),
3173
3245
  ui.liveLabel
3174
3246
  ] }),
3175
3247
  match.phase === "fullTime" && /* @__PURE__ */ jsx47("span", { className: "ss-w-mon-pill", children: ui.fullTimeLabel }),
3176
- kickoff && /* @__PURE__ */ jsxs41("span", { className: "ss-w-mon-pill", children: [
3248
+ kickoff && /* @__PURE__ */ jsxs42("span", { className: "ss-w-mon-pill", children: [
3177
3249
  kickoff.dayLabel,
3178
3250
  " \xB7 ",
3179
3251
  kickoff.time
@@ -3182,17 +3254,17 @@ function MonitorMatchCard({ match, promotedPins, monitor, ui, slip }) {
3182
3254
  match.competitionName && /* @__PURE__ */ jsx47("span", { className: "ss-w-mon-comp", children: match.competitionName }),
3183
3255
  /* @__PURE__ */ jsx47(PinToggle, { ui, monitor, pin: { kind: "match", matchId: match.matchId } })
3184
3256
  ] }),
3185
- /* @__PURE__ */ jsxs41("div", { className: "ss-w-mon-main", children: [
3186
- /* @__PURE__ */ jsxs41("span", { className: "ss-w-mon-side", children: [
3257
+ /* @__PURE__ */ jsxs42("div", { className: "ss-w-mon-main", children: [
3258
+ /* @__PURE__ */ jsxs42("span", { className: "ss-w-mon-side", children: [
3187
3259
  /* @__PURE__ */ jsx47(Crest2, { kind: "team", url: match.homeCrestUrl ?? void 0, name: match.homeTeamName ?? void 0 }),
3188
3260
  /* @__PURE__ */ jsx47("span", { className: "ss-w-mon-name", children: match.homeTeamName })
3189
3261
  ] }),
3190
- match.phase === "preMatch" ? /* @__PURE__ */ jsx47("span", { className: "ss-w-mon-vs", children: "vs" }) : /* @__PURE__ */ jsxs41("span", { className: "ss-w-mon-score", children: [
3262
+ match.phase === "preMatch" ? /* @__PURE__ */ jsx47("span", { className: "ss-w-mon-vs", children: "vs" }) : /* @__PURE__ */ jsxs42("span", { className: "ss-w-mon-score", children: [
3191
3263
  match.homeScore,
3192
3264
  /* @__PURE__ */ jsx47("i", { children: "\u2013" }),
3193
3265
  match.awayScore
3194
3266
  ] }),
3195
- /* @__PURE__ */ jsxs41("span", { className: "ss-w-mon-side ss-w-mon-side--away", children: [
3267
+ /* @__PURE__ */ jsxs42("span", { className: "ss-w-mon-side ss-w-mon-side--away", children: [
3196
3268
  /* @__PURE__ */ jsx47(Crest2, { kind: "team", url: match.awayCrestUrl ?? void 0, name: match.awayTeamName ?? void 0 }),
3197
3269
  /* @__PURE__ */ jsx47("span", { className: "ss-w-mon-name", children: match.awayTeamName })
3198
3270
  ] })
@@ -3204,23 +3276,23 @@ function MonitorMatchCard({ match, promotedPins, monitor, ui, slip }) {
3204
3276
  const awayPct = total > 0 ? row.awayNum / total * 75 : 0;
3205
3277
  const promoted = isPromoted(row, promotedPins);
3206
3278
  const selection = chipSelection(row, match.matchId, slip.conversationId);
3207
- return /* @__PURE__ */ jsxs41("div", { className: promoted ? "ss-w-mon-stat ss-w-mon-pstrip" : "ss-w-mon-stat", children: [
3208
- /* @__PURE__ */ jsxs41("div", { className: "ss-w-mon-stat-row", children: [
3279
+ return /* @__PURE__ */ jsxs42("div", { className: promoted ? "ss-w-mon-stat ss-w-mon-pstrip" : "ss-w-mon-stat", children: [
3280
+ /* @__PURE__ */ jsxs42("div", { className: "ss-w-mon-stat-row", children: [
3209
3281
  /* @__PURE__ */ jsx47("span", { className: "ss-w-mon-stat-v ss-w-mon-stat-v--home", children: row.homeValue }),
3210
3282
  /* @__PURE__ */ jsx47("span", { className: "ss-w-mon-stat-l", children: row.label }),
3211
3283
  /* @__PURE__ */ jsx47("span", { className: "ss-w-mon-stat-v ss-w-mon-stat-v--away", children: row.awayValue })
3212
3284
  ] }),
3213
- /* @__PURE__ */ jsxs41("div", { className: "ss-w-mon-bar", children: [
3285
+ /* @__PURE__ */ jsxs42("div", { className: "ss-w-mon-bar", children: [
3214
3286
  /* @__PURE__ */ jsx47("b", { className: "ss-w-mon-bar-home", style: { width: `${homePct}%` } }),
3215
3287
  /* @__PURE__ */ jsx47("i", { className: "ss-w-mon-bar-away", style: { width: `${awayPct}%` } })
3216
3288
  ] }),
3217
- row.market && /* @__PURE__ */ jsxs41("div", { className: promoted ? "ss-w-mon-stat-mkt ss-w-mon-mkt" : "ss-w-mon-stat-mkt", children: [
3218
- /* @__PURE__ */ jsxs41("span", { children: [
3289
+ row.market && /* @__PURE__ */ jsxs42("div", { className: promoted ? "ss-w-mon-stat-mkt ss-w-mon-mkt" : "ss-w-mon-stat-mkt", children: [
3290
+ /* @__PURE__ */ jsxs42("span", { children: [
3219
3291
  row.market.marketLabel,
3220
3292
  " \xB7 ",
3221
3293
  row.market.selectionLabel
3222
3294
  ] }),
3223
- /* @__PURE__ */ jsxs41("span", { className: "ss-w-mon-stat-mkt-right", children: [
3295
+ /* @__PURE__ */ jsxs42("span", { className: "ss-w-mon-stat-mkt-right", children: [
3224
3296
  row.market.isSuspended ? /* @__PURE__ */ jsx47("span", { className: "ss-w-mon-susp", children: ui.suspendedLabel }) : typeof row.market.price === "number" && /* @__PURE__ */ jsx47("span", { className: "ss-w-mon-price", children: row.market.price.toFixed(2) }),
3225
3297
  /* @__PURE__ */ jsx47(
3226
3298
  SlipButton,
@@ -3237,8 +3309,8 @@ function MonitorMatchCard({ match, promotedPins, monitor, ui, slip }) {
3237
3309
  ] }, row.label);
3238
3310
  }) }),
3239
3311
  match.status === "stale" && /* @__PURE__ */ jsx47("span", { className: "ss-w-mon-asof", children: ui.asOf(formatTime(match.asOfUtc)) }),
3240
- match.momentum.length > 0 && /* @__PURE__ */ jsxs41("div", { className: "ss-w-mon-mom", children: [
3241
- /* @__PURE__ */ jsxs41("div", { className: "ss-w-mon-stat-row", children: [
3312
+ match.momentum.length > 0 && /* @__PURE__ */ jsxs42("div", { className: "ss-w-mon-mom", children: [
3313
+ /* @__PURE__ */ jsxs42("div", { className: "ss-w-mon-stat-row", children: [
3242
3314
  /* @__PURE__ */ jsx47("span", { className: "ss-w-mon-stat-v ss-w-mon-stat-v--home", children: typeof match.momentumHomePct === "number" ? `${match.momentumHomePct}%` : "" }),
3243
3315
  /* @__PURE__ */ jsx47("span", { className: "ss-w-mon-stat-l", children: ui.momentumLabel }),
3244
3316
  /* @__PURE__ */ jsx47("span", { className: "ss-w-mon-stat-v ss-w-mon-stat-v--away", children: typeof match.momentumHomePct === "number" ? `${100 - match.momentumHomePct}%` : "" })
@@ -3250,13 +3322,13 @@ function MonitorMatchCard({ match, promotedPins, monitor, ui, slip }) {
3250
3322
  }
3251
3323
 
3252
3324
  // src/components/MonitorTabs.tsx
3253
- import { jsx as jsx48, jsxs as jsxs42 } from "react/jsx-runtime";
3325
+ import { jsx as jsx48, jsxs as jsxs43 } from "react/jsx-runtime";
3254
3326
  function OddsLiveStrip({ m, ui }) {
3255
3327
  const showScore = m.phase !== "preMatch" && typeof m.homeScore === "number";
3256
3328
  const stale = m.status === "stale";
3257
3329
  if (!showScore && !m.minuteLabel && !(m.isSuspended && !m.isSettled) && !m.isSettled && !stale) return null;
3258
- return /* @__PURE__ */ jsxs42("div", { className: "ss-w-mk-live", children: [
3259
- showScore && /* @__PURE__ */ jsxs42("b", { className: "ss-w-mk-live-score", children: [
3330
+ return /* @__PURE__ */ jsxs43("div", { className: "ss-w-mk-live", children: [
3331
+ showScore && /* @__PURE__ */ jsxs43("b", { className: "ss-w-mk-live-score", children: [
3260
3332
  m.homeTeamName,
3261
3333
  " ",
3262
3334
  m.homeScore,
@@ -3274,7 +3346,7 @@ function OddsLiveStrip({ m, ui }) {
3274
3346
  function MatchesPanel({ monitor, ui, slip }) {
3275
3347
  const matches = (monitor.snapshot?.matches ?? []).filter((m) => monitor.pins.some((p) => p.kind === "match" && p.matchId === m.matchId));
3276
3348
  if (matches.length === 0) return /* @__PURE__ */ jsx48("div", { className: "ss-w-mon-empty", children: ui.emptyMatchesTab });
3277
- return /* @__PURE__ */ jsx48("div", { className: "ss-w-mon-list", children: matches.map((m) => /* @__PURE__ */ jsxs42("div", { className: "ss-w-mon-item", children: [
3349
+ return /* @__PURE__ */ jsx48("div", { className: "ss-w-mon-list", children: matches.map((m) => /* @__PURE__ */ jsxs43("div", { className: "ss-w-mon-item", children: [
3278
3350
  /* @__PURE__ */ jsx48(
3279
3351
  MonitorMatchCard,
3280
3352
  {
@@ -3303,7 +3375,7 @@ function OddsPanel({ monitor, ui, slip }) {
3303
3375
  if (markets.length === 0) return /* @__PURE__ */ jsx48("div", { className: "ss-w-mon-empty", children: ui.emptyOddsTab });
3304
3376
  return /* @__PURE__ */ jsx48("div", { className: "ss-w-mon-list", children: markets.map((m) => {
3305
3377
  const pin = monitor.pins.find((p) => p.key === m.key);
3306
- return /* @__PURE__ */ jsxs42("div", { className: "ss-w-mon-oddspin", "data-settled": m.isSettled || void 0, children: [
3378
+ return /* @__PURE__ */ jsxs43("div", { className: "ss-w-mon-oddspin", "data-settled": m.isSettled || void 0, children: [
3307
3379
  /* @__PURE__ */ jsx48(OddsLiveStrip, { m, ui }),
3308
3380
  m.card && /* @__PURE__ */ jsx48(
3309
3381
  MarketOddsCardList,
@@ -3323,11 +3395,11 @@ function OddsPanel({ monitor, ui, slip }) {
3323
3395
  }
3324
3396
 
3325
3397
  // src/components/ChatPanel.tsx
3326
- import { jsx as jsx49, jsxs as jsxs43 } from "react/jsx-runtime";
3398
+ import { jsx as jsx49, jsxs as jsxs44 } from "react/jsx-runtime";
3327
3399
  var FULLSCREEN_QUERY = "(max-width: 639px)";
3328
3400
  function useIsModal() {
3329
- const [modal, setModal] = useState17(false);
3330
- useEffect9(() => {
3401
+ const [modal, setModal] = useState18(false);
3402
+ useEffect10(() => {
3331
3403
  if (typeof window === "undefined" || typeof window.matchMedia !== "function") return;
3332
3404
  const mql = window.matchMedia(FULLSCREEN_QUERY);
3333
3405
  const sync = () => setModal(mql.matches);
@@ -3340,7 +3412,7 @@ function useIsModal() {
3340
3412
  function ChatPanel({ controller, ui, slip, onDashboardTap, monitor }) {
3341
3413
  const { state, close, stop, send, reset } = controller;
3342
3414
  const isModal = useIsModal();
3343
- useEffect9(() => {
3415
+ useEffect10(() => {
3344
3416
  const onKey = (e) => {
3345
3417
  if (e.key === "Escape") close();
3346
3418
  };
@@ -3351,10 +3423,10 @@ function ChatPanel({ controller, ui, slip, onDashboardTap, monitor }) {
3351
3423
  monitor?.setActiveTab("chat");
3352
3424
  send(text);
3353
3425
  };
3354
- useEffect9(() => {
3426
+ useEffect10(() => {
3355
3427
  if (monitor && monitor.activeTab !== "chat" && state.isStreaming) monitor.markChatActivity();
3356
3428
  }, [monitor, state.isStreaming, state.messages.length]);
3357
- return /* @__PURE__ */ jsxs43("div", { className: "ss-w-panel", role: "dialog", "aria-modal": isModal, "aria-label": ui.chatDialogLabel, children: [
3429
+ return /* @__PURE__ */ jsxs44("div", { className: "ss-w-panel", role: "dialog", "aria-modal": isModal, "aria-label": ui.chatDialogLabel, children: [
3358
3430
  /* @__PURE__ */ jsx49(
3359
3431
  ChatHeader,
3360
3432
  {
@@ -3364,7 +3436,8 @@ function ChatPanel({ controller, ui, slip, onDashboardTap, monitor }) {
3364
3436
  headerTitle: ui.headerTitle,
3365
3437
  onNewConversation: reset,
3366
3438
  canReset: state.messages.length > 0,
3367
- newConversationLabel: ui.newConversation
3439
+ newConversationLabel: ui.newConversation,
3440
+ moreOptionsLabel: ui.moreOptions
3368
3441
  }
3369
3442
  ),
3370
3443
  monitor && /* @__PURE__ */ jsx49(
@@ -3482,14 +3555,19 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
3482
3555
  .ss-w-header { display: flex; align-items: center; gap: 8px; padding: 12px 14px; border-bottom: 1px solid var(--ss-w-line); }
3483
3556
  .ss-w-header-mark { width: 18px; height: 18px; display: block; object-fit: contain; }
3484
3557
  .ss-w-header-title { font-weight: 660; flex: 1; }
3485
- .ss-w-newconv { background: none; border: none; color: var(--ss-w-faint); cursor: pointer; font-size: 16px; display: grid; place-items: center; }
3486
3558
  .ss-w-close { background: none; border: none; color: var(--ss-w-faint); cursor: pointer; font-size: 16px; display: grid; place-items: center; }
3559
+ .ss-w-menu-wrap { position: relative; display: grid; place-items: center; }
3560
+ .ss-w-kebab { background: none; border: none; color: var(--ss-w-faint); cursor: pointer; font-size: 16px; display: grid; place-items: center; }
3561
+ .ss-w-menu { position: absolute; top: calc(100% + 6px); right: 0; z-index: 5; min-width: 184px; padding: 6px; background: var(--ss-w-panel); border: 1px solid var(--ss-w-line); border-radius: 12px; box-shadow: 0 8px 24px rgba(0,0,0,.18); }
3562
+ .ss-w-menu-item { display: flex; align-items: center; gap: 10px; width: 100%; padding: 9px 10px; background: none; border: none; border-radius: 8px; color: var(--ss-w-ink); font: inherit; font-size: 13px; text-align: left; cursor: pointer; }
3563
+ .ss-w-menu-item:hover, .ss-w-menu-item:focus-visible { background: var(--ss-w-bubble); }
3564
+ .ss-w-menu-item svg { color: var(--ss-w-faint); font-size: 15px; flex: none; }
3487
3565
 
3488
3566
  /* messages */
3489
3567
  /* .ss-w-mon-list (Matches/Odds tab scrollers) shares .ss-w-list's box/scroll rules by design --
3490
3568
  same visual rhythm as the chat message list -- but gets its own class so it isn't the same DOM
3491
3569
  landmark as the chat list when both exist in the panel at once (Task 16 fix round, M4). */
3492
- .ss-w-list, .ss-w-mon-list { flex: 1; overflow-y: auto; padding: 14px; display: flex; flex-direction: column; gap: 12px; scroll-padding-top: 14px; }
3570
+ .ss-w-list, .ss-w-mon-list { flex: 1; overflow-y: auto; overscroll-behavior: contain; padding: 14px; display: flex; flex-direction: column; gap: 12px; scroll-padding-top: 14px; }
3493
3571
  /* Transient bottom spacer: reserves a viewport of room below a new turn so its
3494
3572
  top can be scrolled into view while the reply is still streaming in. Height is
3495
3573
  set imperatively and flex must not shrink it away. */
@@ -4225,8 +4303,8 @@ function StatsWidget(props) {
4225
4303
  const cfg = props.config;
4226
4304
  const built = useMemo2(() => buildClient(props), [injectedClient, cfg?.operatorId, cfg?.publicKey, cfg?.baseUrl]);
4227
4305
  const ui = useMemo2(() => normalizeUi(props.config ?? { operatorId: "", publicKey: "" }), [props.config]);
4228
- const rootRef = useRef7(null);
4229
- const introDoneRef = useRef7(false);
4306
+ const rootRef = useRef8(null);
4307
+ const introDoneRef = useRef8(false);
4230
4308
  const markIntroDone = useCallback5(() => {
4231
4309
  introDoneRef.current = true;
4232
4310
  }, []);
@@ -4265,7 +4343,7 @@ function StatsWidget(props) {
4265
4343
  () => built ? createDashboardTapSignal((input) => built.conversation.sendSignal(input)) : void 0,
4266
4344
  [built]
4267
4345
  );
4268
- useEffect10(() => {
4346
+ useEffect11(() => {
4269
4347
  if (!built || !ui.injectStyles) return;
4270
4348
  const node = rootRef.current?.getRootNode();
4271
4349
  if (node) injectStyles(node);