@sensiblestats/widget-react 0.24.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/dist/index.cjs +135 -51
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +135 -51
- package/dist/index.js.map +1 -1
- package/dist/styles.css +17 -0
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1591,77 +1591,144 @@ function PostMatchNextCard({ card }) {
|
|
|
1591
1591
|
] });
|
|
1592
1592
|
}
|
|
1593
1593
|
|
|
1594
|
-
// src/components/dashboard/
|
|
1594
|
+
// src/components/dashboard/RestingNextCard.tsx
|
|
1595
1595
|
import { jsx as jsx30, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
1596
|
+
function RestingNextCard({ card, onTap }) {
|
|
1597
|
+
const { data } = card;
|
|
1598
|
+
return /* @__PURE__ */ jsxs26("button", { type: "button", className: "ss-w-fandash-card ss-w-fandash-card--tap ss-w-fandash-resting-next", onClick: () => onTap(card), children: [
|
|
1599
|
+
card.title ? /* @__PURE__ */ jsx30("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
|
|
1600
|
+
/* @__PURE__ */ jsxs26("div", { className: "ss-w-fandash-resting-next-row", children: [
|
|
1601
|
+
/* @__PURE__ */ jsx30("span", { className: "ss-w-fandash-resting-next-when", children: data.whenLabel }),
|
|
1602
|
+
data.competition ? /* @__PURE__ */ jsx30("span", { className: "ss-w-fandash-resting-next-competition", children: data.competition }) : null
|
|
1603
|
+
] }),
|
|
1604
|
+
/* @__PURE__ */ jsx30("span", { className: "ss-w-fandash-card-cta", children: card.actionLabel })
|
|
1605
|
+
] });
|
|
1606
|
+
}
|
|
1607
|
+
|
|
1608
|
+
// src/components/dashboard/RestingStandingsCard.tsx
|
|
1609
|
+
import { jsx as jsx31, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
1610
|
+
function RestingStandingsCard({ card, onTap }) {
|
|
1611
|
+
const { data } = card;
|
|
1612
|
+
return /* @__PURE__ */ jsxs27("button", { type: "button", className: "ss-w-fandash-card ss-w-fandash-card--tap ss-w-fandash-resting-standings", onClick: () => onTap(card), children: [
|
|
1613
|
+
card.title ? /* @__PURE__ */ jsx31("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
|
|
1614
|
+
/* @__PURE__ */ jsxs27("div", { className: "ss-w-fandash-resting-standings-row", children: [
|
|
1615
|
+
/* @__PURE__ */ jsx31("span", { className: "ss-w-fandash-resting-standings-position", children: data.positionLabel }),
|
|
1616
|
+
/* @__PURE__ */ jsx31("span", { className: "ss-w-fandash-resting-standings-record", children: data.recordLabel })
|
|
1617
|
+
] }),
|
|
1618
|
+
/* @__PURE__ */ jsx31("span", { className: "ss-w-fandash-card-cta", children: card.actionLabel })
|
|
1619
|
+
] });
|
|
1620
|
+
}
|
|
1621
|
+
|
|
1622
|
+
// src/components/dashboard/RestingSeasonCard.tsx
|
|
1623
|
+
import { jsx as jsx32, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
1624
|
+
function RestingSeasonCard({ card, onTap }) {
|
|
1625
|
+
const { data } = card;
|
|
1626
|
+
return /* @__PURE__ */ jsxs28("button", { type: "button", className: "ss-w-fandash-card ss-w-fandash-card--tap ss-w-fandash-resting-season", onClick: () => onTap(card), children: [
|
|
1627
|
+
card.title ? /* @__PURE__ */ jsx32("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
|
|
1628
|
+
/* @__PURE__ */ jsxs28("div", { className: "ss-w-fandash-resting-season-rows", children: [
|
|
1629
|
+
data.scorerLabel ? /* @__PURE__ */ jsx32("span", { className: "ss-w-fandash-resting-season-row", children: data.scorerLabel }) : null,
|
|
1630
|
+
data.playerLabel ? /* @__PURE__ */ jsx32("span", { className: "ss-w-fandash-resting-season-row", children: data.playerLabel }) : null,
|
|
1631
|
+
/* @__PURE__ */ jsx32("span", { className: "ss-w-fandash-resting-season-row", children: data.tallyLabel })
|
|
1632
|
+
] }),
|
|
1633
|
+
/* @__PURE__ */ jsx32("span", { className: "ss-w-fandash-card-cta", children: card.actionLabel })
|
|
1634
|
+
] });
|
|
1635
|
+
}
|
|
1636
|
+
|
|
1637
|
+
// src/components/dashboard/RestingFormCard.tsx
|
|
1638
|
+
import { jsx as jsx33, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
1639
|
+
function resultClass2(result) {
|
|
1640
|
+
const upper = result.toUpperCase();
|
|
1641
|
+
if (upper === "W") return "ss-w-fandash-form-pill--win";
|
|
1642
|
+
if (upper === "L") return "ss-w-fandash-form-pill--loss";
|
|
1643
|
+
return "ss-w-fandash-form-pill--draw";
|
|
1644
|
+
}
|
|
1645
|
+
function RestingFormCard({ card }) {
|
|
1646
|
+
const { data } = card;
|
|
1647
|
+
return /* @__PURE__ */ jsxs29("div", { className: "ss-w-fandash-card ss-w-fandash-resting-form", children: [
|
|
1648
|
+
card.title ? /* @__PURE__ */ jsx33("span", { className: "ss-w-fandash-eyebrow", children: card.title }) : null,
|
|
1649
|
+
/* @__PURE__ */ jsx33("span", { className: "ss-w-fandash-form", children: data.letters.map((r, i) => /* @__PURE__ */ jsx33("span", { className: `ss-w-fandash-form-pill ${resultClass2(r)}`, children: r }, `${r}-${i}`)) })
|
|
1650
|
+
] });
|
|
1651
|
+
}
|
|
1652
|
+
|
|
1653
|
+
// src/components/dashboard/ClubFanDashboard.tsx
|
|
1654
|
+
import { jsx as jsx34, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
1596
1655
|
function ClubFanDashboard({ dashboard, onTap, ui }) {
|
|
1597
1656
|
const orderedCards = [
|
|
1598
1657
|
...dashboard.cards.filter((c) => c.cardType === "countdown"),
|
|
1599
1658
|
...dashboard.cards.filter((c) => c.cardType !== "countdown")
|
|
1600
1659
|
];
|
|
1601
|
-
return /* @__PURE__ */
|
|
1602
|
-
dashboard.greeting ? /* @__PURE__ */
|
|
1603
|
-
/* @__PURE__ */
|
|
1660
|
+
return /* @__PURE__ */ jsxs30("div", { className: "ss-w-fandash", children: [
|
|
1661
|
+
dashboard.greeting ? /* @__PURE__ */ jsx34("span", { className: "ss-w-fandash-greeting", children: dashboard.greeting }) : null,
|
|
1662
|
+
/* @__PURE__ */ jsx34("div", { className: "ss-w-fandash-cards", children: orderedCards.map((card, i) => /* @__PURE__ */ jsx34(FanDashboardCard, { card, onTap, ui }, `${card.cardType}-${i}`)) })
|
|
1604
1663
|
] });
|
|
1605
1664
|
}
|
|
1606
1665
|
function FanDashboardCard({ card, onTap, ui }) {
|
|
1607
1666
|
switch (card.cardType) {
|
|
1608
1667
|
case "fixture":
|
|
1609
|
-
return /* @__PURE__ */
|
|
1668
|
+
return /* @__PURE__ */ jsx34(FixtureCard, { card, onTap });
|
|
1610
1669
|
case "countdown":
|
|
1611
|
-
return /* @__PURE__ */
|
|
1670
|
+
return /* @__PURE__ */ jsx34(CountdownCard, { card });
|
|
1612
1671
|
case "injuries":
|
|
1613
|
-
return /* @__PURE__ */
|
|
1672
|
+
return /* @__PURE__ */ jsx34(InjuriesCard, { card });
|
|
1614
1673
|
case "reasonToBet":
|
|
1615
|
-
return /* @__PURE__ */
|
|
1674
|
+
return /* @__PURE__ */ jsx34(ReasonToBetCard, { card });
|
|
1616
1675
|
case "whereToWatch":
|
|
1617
|
-
return /* @__PURE__ */
|
|
1676
|
+
return /* @__PURE__ */ jsx34(WhereToWatchCard, { card });
|
|
1618
1677
|
case "congestedWeek":
|
|
1619
|
-
return /* @__PURE__ */
|
|
1678
|
+
return /* @__PURE__ */ jsx34(CongestedWeekCard, { card, onTap });
|
|
1620
1679
|
case "transfers":
|
|
1621
|
-
return /* @__PURE__ */
|
|
1680
|
+
return /* @__PURE__ */ jsx34(TransfersCard, { card });
|
|
1622
1681
|
case "links":
|
|
1623
|
-
return /* @__PURE__ */
|
|
1682
|
+
return /* @__PURE__ */ jsx34(LinksCard, { card });
|
|
1624
1683
|
case "postMatchResult":
|
|
1625
|
-
return /* @__PURE__ */
|
|
1684
|
+
return /* @__PURE__ */ jsx34(PostMatchResultCard, { card });
|
|
1626
1685
|
case "postMatchGoals":
|
|
1627
|
-
return /* @__PURE__ */
|
|
1686
|
+
return /* @__PURE__ */ jsx34(PostMatchGoalsCard, { card, onTap });
|
|
1628
1687
|
case "postMatchStats":
|
|
1629
|
-
return /* @__PURE__ */
|
|
1688
|
+
return /* @__PURE__ */ jsx34(PostMatchStatsCard, { card, onTap });
|
|
1630
1689
|
case "postMatchTopPerformer":
|
|
1631
|
-
return /* @__PURE__ */
|
|
1690
|
+
return /* @__PURE__ */ jsx34(PostMatchTopPerformerCard, { card, onTap });
|
|
1632
1691
|
case "postMatchNext":
|
|
1633
|
-
return /* @__PURE__ */
|
|
1692
|
+
return /* @__PURE__ */ jsx34(PostMatchNextCard, { card });
|
|
1693
|
+
case "restingNext":
|
|
1694
|
+
return /* @__PURE__ */ jsx34(RestingNextCard, { card, onTap });
|
|
1695
|
+
case "restingStandings":
|
|
1696
|
+
return /* @__PURE__ */ jsx34(RestingStandingsCard, { card, onTap });
|
|
1697
|
+
case "restingSeason":
|
|
1698
|
+
return /* @__PURE__ */ jsx34(RestingSeasonCard, { card, onTap });
|
|
1699
|
+
case "restingForm":
|
|
1700
|
+
return /* @__PURE__ */ jsx34(RestingFormCard, { card });
|
|
1634
1701
|
default:
|
|
1635
1702
|
return null;
|
|
1636
1703
|
}
|
|
1637
1704
|
}
|
|
1638
1705
|
|
|
1639
1706
|
// src/components/ChatMessage.tsx
|
|
1640
|
-
import { jsx as
|
|
1707
|
+
import { jsx as jsx35, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
1641
1708
|
function ChatMessage({ message, disabled, onAct, onTap, ui, slip }) {
|
|
1642
1709
|
if (message.role === "user") {
|
|
1643
|
-
return /* @__PURE__ */
|
|
1710
|
+
return /* @__PURE__ */ jsx35("div", { className: "ss-w-msg ss-w-user", children: /* @__PURE__ */ jsx35("div", { className: "ss-w-bubble", children: message.text }) });
|
|
1644
1711
|
}
|
|
1645
1712
|
const onFanDashboardTap = (card) => {
|
|
1646
1713
|
onAct({ message: card.actionLabel, actionRef: card.actionRef, label: card.actionLabel || card.title || "" });
|
|
1647
1714
|
};
|
|
1648
|
-
return /* @__PURE__ */
|
|
1649
|
-
message.text && !message.greetingDashboard && !message.clubFanDashboard ? /* @__PURE__ */
|
|
1650
|
-
message.greetingDashboard && !message.clubFanDashboard ? /* @__PURE__ */
|
|
1651
|
-
message.clubFanDashboard ? /* @__PURE__ */
|
|
1652
|
-
/* @__PURE__ */
|
|
1653
|
-
/* @__PURE__ */
|
|
1654
|
-
/* @__PURE__ */
|
|
1655
|
-
/* @__PURE__ */
|
|
1656
|
-
/* @__PURE__ */
|
|
1715
|
+
return /* @__PURE__ */ jsxs31("div", { className: "ss-w-msg ss-w-bot", children: [
|
|
1716
|
+
message.text && !message.greetingDashboard && !message.clubFanDashboard ? /* @__PURE__ */ jsx35(Markdown, { text: message.text }) : null,
|
|
1717
|
+
message.greetingDashboard && !message.clubFanDashboard ? /* @__PURE__ */ jsx35(GreetingDashboard, { dashboard: message.greetingDashboard, onTap }) : null,
|
|
1718
|
+
message.clubFanDashboard ? /* @__PURE__ */ jsx35(ClubFanDashboard, { dashboard: message.clubFanDashboard, onTap: onFanDashboardTap, ui }) : null,
|
|
1719
|
+
/* @__PURE__ */ jsx35(EntityCardList, { cards: message.cards, disabled, showLessLabel: ui?.showLess, showMoreLabel: ui?.showMore }),
|
|
1720
|
+
/* @__PURE__ */ jsx35(BettingInsightList, { insights: message.insights, ui, slip }),
|
|
1721
|
+
/* @__PURE__ */ jsx35(MarketOddsCardList, { cards: message.marketOdds, ui, slip }),
|
|
1722
|
+
/* @__PURE__ */ jsx35(OddsMovementCardList, { cards: message.oddsMovement, ui }),
|
|
1723
|
+
/* @__PURE__ */ jsx35(ActionButtons, { actions: message.actions, loading: false, disabled, onAct })
|
|
1657
1724
|
] });
|
|
1658
1725
|
}
|
|
1659
1726
|
|
|
1660
1727
|
// src/components/IntentChips.tsx
|
|
1661
|
-
import { jsx as
|
|
1728
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
1662
1729
|
function IntentChips({ chips, onPick }) {
|
|
1663
1730
|
if (chips.length === 0) return null;
|
|
1664
|
-
return /* @__PURE__ */
|
|
1731
|
+
return /* @__PURE__ */ jsx36("div", { className: "ss-w-chips", children: chips.map((c, i) => /* @__PURE__ */ jsx36("button", { type: "button", className: "ss-w-chip", onClick: () => onPick(c.text), children: c.text }, `${c.text}-${i}`)) });
|
|
1665
1732
|
}
|
|
1666
1733
|
|
|
1667
1734
|
// src/scroll.ts
|
|
@@ -1671,7 +1738,7 @@ function isPinnedToBottom(el, threshold = PIN_THRESHOLD) {
|
|
|
1671
1738
|
}
|
|
1672
1739
|
|
|
1673
1740
|
// src/components/MessageList.tsx
|
|
1674
|
-
import { jsx as
|
|
1741
|
+
import { jsx as jsx37, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
1675
1742
|
function MessageList({ controller, ui, slip, onDashboardTap }) {
|
|
1676
1743
|
const { state, send } = controller;
|
|
1677
1744
|
const listRef = useRef2(null);
|
|
@@ -1682,7 +1749,7 @@ function MessageList({ controller, ui, slip, onDashboardTap }) {
|
|
|
1682
1749
|
}, [state.messages, state.status]);
|
|
1683
1750
|
const hasUserMessage = state.messages.some((m) => m.role === "user");
|
|
1684
1751
|
const hasDashboard = state.messages.some((m) => m.role === "assistant" && (m.greetingDashboard || m.clubFanDashboard));
|
|
1685
|
-
return /* @__PURE__ */
|
|
1752
|
+
return /* @__PURE__ */ jsxs32(
|
|
1686
1753
|
"div",
|
|
1687
1754
|
{
|
|
1688
1755
|
className: "ss-w-list",
|
|
@@ -1692,7 +1759,7 @@ function MessageList({ controller, ui, slip, onDashboardTap }) {
|
|
|
1692
1759
|
if (listRef.current) pinnedRef.current = isPinnedToBottom(listRef.current);
|
|
1693
1760
|
},
|
|
1694
1761
|
children: [
|
|
1695
|
-
state.messages.map((m) => /* @__PURE__ */
|
|
1762
|
+
state.messages.map((m) => /* @__PURE__ */ jsx37(
|
|
1696
1763
|
ChatMessage,
|
|
1697
1764
|
{
|
|
1698
1765
|
message: m,
|
|
@@ -1707,15 +1774,15 @@ function MessageList({ controller, ui, slip, onDashboardTap }) {
|
|
|
1707
1774
|
},
|
|
1708
1775
|
m.id
|
|
1709
1776
|
)),
|
|
1710
|
-
state.isStreaming && state.actionsLoading ? /* @__PURE__ */
|
|
1777
|
+
state.isStreaming && state.actionsLoading ? /* @__PURE__ */ jsx37(ActionButtons, { actions: [], loading: true, onAct: () => {
|
|
1711
1778
|
} }) : null,
|
|
1712
|
-
state.status ? /* @__PURE__ */
|
|
1713
|
-
state.error ? /* @__PURE__ */
|
|
1714
|
-
/* @__PURE__ */
|
|
1715
|
-
/* @__PURE__ */
|
|
1779
|
+
state.status ? /* @__PURE__ */ jsx37("div", { className: "ss-w-status", children: state.status }) : null,
|
|
1780
|
+
state.error ? /* @__PURE__ */ jsxs32("div", { className: "ss-w-error", role: "alert", children: [
|
|
1781
|
+
/* @__PURE__ */ jsx37("span", { children: "message" in state.error ? state.error.message : ui.somethingWentWrong }),
|
|
1782
|
+
/* @__PURE__ */ jsx37("button", { type: "button", className: "ss-w-retry", onClick: () => controller.retry(), children: ui.retry })
|
|
1716
1783
|
] }) : null,
|
|
1717
|
-
!hasUserMessage && !hasDashboard ? /* @__PURE__ */
|
|
1718
|
-
/* @__PURE__ */
|
|
1784
|
+
!hasUserMessage && !hasDashboard ? /* @__PURE__ */ jsx37(IntentChips, { chips: state.starters, onPick: (t) => send(t) }) : null,
|
|
1785
|
+
/* @__PURE__ */ jsx37("div", { ref: endRef })
|
|
1719
1786
|
]
|
|
1720
1787
|
}
|
|
1721
1788
|
);
|
|
@@ -1723,7 +1790,7 @@ function MessageList({ controller, ui, slip, onDashboardTap }) {
|
|
|
1723
1790
|
|
|
1724
1791
|
// src/components/ChatInput.tsx
|
|
1725
1792
|
import { useState as useState7 } from "react";
|
|
1726
|
-
import { jsx as
|
|
1793
|
+
import { jsx as jsx38, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
1727
1794
|
function ChatInput({ placeholder, streaming, onSend, onStop, stopLabel = "Stop response", sendLabel = "Send message" }) {
|
|
1728
1795
|
const [value, setValue] = useState7("");
|
|
1729
1796
|
const submit = () => {
|
|
@@ -1738,14 +1805,14 @@ function ChatInput({ placeholder, streaming, onSend, onStop, stopLabel = "Stop r
|
|
|
1738
1805
|
submit();
|
|
1739
1806
|
}
|
|
1740
1807
|
};
|
|
1741
|
-
return /* @__PURE__ */
|
|
1742
|
-
/* @__PURE__ */
|
|
1743
|
-
streaming ? /* @__PURE__ */
|
|
1808
|
+
return /* @__PURE__ */ jsxs33("div", { className: "ss-w-input", children: [
|
|
1809
|
+
/* @__PURE__ */ jsx38("textarea", { className: "ss-w-textarea", rows: 1, placeholder, value, disabled: streaming, onChange: (e) => setValue(e.target.value), onKeyDown }),
|
|
1810
|
+
streaming ? /* @__PURE__ */ jsx38("button", { type: "button", className: "ss-w-send ss-w-stop", "aria-label": stopLabel, onClick: onStop, children: /* @__PURE__ */ jsx38("span", { className: "ss-w-stop-glyph" }) }) : /* @__PURE__ */ jsx38("button", { type: "button", className: "ss-w-send", "aria-label": sendLabel, onClick: submit, children: /* @__PURE__ */ jsx38(SendIcon, {}) })
|
|
1744
1811
|
] });
|
|
1745
1812
|
}
|
|
1746
1813
|
|
|
1747
1814
|
// src/components/ChatPanel.tsx
|
|
1748
|
-
import { jsx as
|
|
1815
|
+
import { jsx as jsx39, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
1749
1816
|
var FULLSCREEN_QUERY = "(max-width: 639px)";
|
|
1750
1817
|
function useIsModal() {
|
|
1751
1818
|
const [modal, setModal] = useState8(false);
|
|
@@ -1769,10 +1836,10 @@ function ChatPanel({ controller, ui, slip, onDashboardTap }) {
|
|
|
1769
1836
|
window.addEventListener("keydown", onKey);
|
|
1770
1837
|
return () => window.removeEventListener("keydown", onKey);
|
|
1771
1838
|
}, [close]);
|
|
1772
|
-
return /* @__PURE__ */
|
|
1773
|
-
/* @__PURE__ */
|
|
1774
|
-
/* @__PURE__ */
|
|
1775
|
-
/* @__PURE__ */
|
|
1839
|
+
return /* @__PURE__ */ jsxs34("div", { className: "ss-w-panel", role: "dialog", "aria-modal": isModal, "aria-label": ui.chatDialogLabel, children: [
|
|
1840
|
+
/* @__PURE__ */ jsx39(ChatHeader, { onClose: close, closeLabel: ui.closeChat }),
|
|
1841
|
+
/* @__PURE__ */ jsx39(MessageList, { controller, ui, slip, onDashboardTap }),
|
|
1842
|
+
/* @__PURE__ */ jsx39(ChatInput, { placeholder: ui.placeholder, streaming: state.isStreaming, onSend: (t) => send(t), onStop: stop, stopLabel: ui.stopResponse, sendLabel: ui.sendMessage })
|
|
1776
1843
|
] });
|
|
1777
1844
|
}
|
|
1778
1845
|
|
|
@@ -2267,10 +2334,27 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
|
|
|
2267
2334
|
.ss-w-fandash-postmatch-next-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
|
|
2268
2335
|
.ss-w-fandash-postmatch-next-opponent { font-size: 13px; font-weight: 650; overflow-wrap: anywhere; }
|
|
2269
2336
|
.ss-w-fandash-postmatch-next-when { flex: none; font-size: 11.5px; color: var(--ss-w-faint); }
|
|
2337
|
+
|
|
2338
|
+
/* resting next: the between-matches fixture teaser -- when-label left, competition badge right */
|
|
2339
|
+
.ss-w-fandash-resting-next-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
|
|
2340
|
+
.ss-w-fandash-resting-next-when { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; font-weight: 650; }
|
|
2341
|
+
.ss-w-fandash-resting-next-competition { flex: none; font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; color: var(--ss-w-faint); }
|
|
2342
|
+
|
|
2343
|
+
/* resting standings: position figure left, W-D-L/points record right */
|
|
2344
|
+
.ss-w-fandash-resting-standings-row { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
|
|
2345
|
+
.ss-w-fandash-resting-standings-position { font-size: 15px; font-weight: 750; color: var(--ss-w-ink); }
|
|
2346
|
+
.ss-w-fandash-resting-standings-record { font-size: 11.5px; color: var(--ss-w-faint); text-align: right; }
|
|
2347
|
+
|
|
2348
|
+
/* resting season: top scorer / key player / season tally as stacked rows */
|
|
2349
|
+
.ss-w-fandash-resting-season-rows { display: flex; flex-direction: column; gap: 4px; }
|
|
2350
|
+
.ss-w-fandash-resting-season-row { font-size: 12.5px; color: var(--ss-w-ink); }
|
|
2351
|
+
|
|
2352
|
+
/* resting form: reuses the fixture last-five pill classes (ss-w-fandash-form / -form-pill) */
|
|
2353
|
+
.ss-w-fandash-resting-form .ss-w-fandash-form { margin-top: 2px; }
|
|
2270
2354
|
`;
|
|
2271
2355
|
|
|
2272
2356
|
// src/StatsWidget.tsx
|
|
2273
|
-
import { jsx as
|
|
2357
|
+
import { jsx as jsx40 } from "react/jsx-runtime";
|
|
2274
2358
|
function buildClient(props) {
|
|
2275
2359
|
try {
|
|
2276
2360
|
if ("client" in props && props.client) {
|
|
@@ -2323,7 +2407,7 @@ function StatsWidget(props) {
|
|
|
2323
2407
|
}, [built, ui.injectStyles]);
|
|
2324
2408
|
if (!built) return null;
|
|
2325
2409
|
const attrs = themeAttrs(ui);
|
|
2326
|
-
return /* @__PURE__ */
|
|
2410
|
+
return /* @__PURE__ */ jsx40("div", { ref: rootRef, className: "ss-w-root", "data-ss-w-theme": attrs["data-ss-w-theme"], "data-ss-w-pos": attrs["data-ss-w-pos"], style: attrs.style, children: controller.state.isOpen ? /* @__PURE__ */ jsx40(ChatPanel, { controller, ui, slip, onDashboardTap }) : /* @__PURE__ */ jsx40(
|
|
2327
2411
|
ChatFab,
|
|
2328
2412
|
{
|
|
2329
2413
|
label: ui.launcherLabel,
|