@sensiblestats/widget-react 0.60.5 → 0.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -199,7 +199,8 @@ var STRINGS = {
199
199
  optionsLabel: "Clubs",
200
200
  solved: "Solved!",
201
201
  failed: "Out of guesses",
202
- detail: (n) => `${n} ${n === 1 ? "guess" : "guesses"} \xB7 back tomorrow`
202
+ detail: (n) => `${n} ${n === 1 ? "guess" : "guesses"} \xB7 back tomorrow`,
203
+ theAnswer: "The answer"
203
204
  },
204
205
  dailyQuiz: {
205
206
  questionOf: (i, n) => `Question ${i} of ${n}`,
@@ -494,7 +495,8 @@ var STRINGS = {
494
495
  optionsLabel: "Kul\xFCpler",
495
496
  solved: "Bildin!",
496
497
  failed: "Tahmin hakk\u0131n bitti",
497
- detail: (n) => `${n} tahmin \xB7 yar\u0131n yine gel`
498
+ detail: (n) => `${n} tahmin \xB7 yar\u0131n yine gel`,
499
+ theAnswer: "Do\u011Fru cevap"
498
500
  },
499
501
  dailyQuiz: {
500
502
  questionOf: (i, n) => `Soru ${i} / ${n}`,
@@ -4732,6 +4734,7 @@ import { useState as useState25, useId as useId2 } from "react";
4732
4734
 
4733
4735
  // src/components/games/nationFlags.ts
4734
4736
  var FLAGS = {
4737
+ // UK home nations (subdivision flags)
4735
4738
  england: "\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}",
4736
4739
  scotland: "\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}",
4737
4740
  wales: "\u{1F3F4}\u{E0067}\u{E0062}\u{E0077}\u{E006C}\u{E0073}\u{E007F}",
@@ -4739,6 +4742,7 @@ var FLAGS = {
4739
4742
  "republic of ireland": "\u{1F1EE}\u{1F1EA}",
4740
4743
  ireland: "\u{1F1EE}\u{1F1EA}",
4741
4744
  "united kingdom": "\u{1F1EC}\u{1F1E7}",
4745
+ // Western & Southern Europe
4742
4746
  france: "\u{1F1EB}\u{1F1F7}",
4743
4747
  spain: "\u{1F1EA}\u{1F1F8}",
4744
4748
  portugal: "\u{1F1F5}\u{1F1F9}",
@@ -4748,17 +4752,27 @@ var FLAGS = {
4748
4752
  belgium: "\u{1F1E7}\u{1F1EA}",
4749
4753
  switzerland: "\u{1F1E8}\u{1F1ED}",
4750
4754
  austria: "\u{1F1E6}\u{1F1F9}",
4755
+ luxembourg: "\u{1F1F1}\u{1F1FA}",
4756
+ malta: "\u{1F1F2}\u{1F1F9}",
4757
+ cyprus: "\u{1F1E8}\u{1F1FE}",
4758
+ andorra: "\u{1F1E6}\u{1F1E9}",
4759
+ liechtenstein: "\u{1F1F1}\u{1F1EE}",
4760
+ "san marino": "\u{1F1F8}\u{1F1F2}",
4761
+ monaco: "\u{1F1F2}\u{1F1E8}",
4762
+ // Northern Europe
4751
4763
  denmark: "\u{1F1E9}\u{1F1F0}",
4752
4764
  sweden: "\u{1F1F8}\u{1F1EA}",
4753
4765
  norway: "\u{1F1F3}\u{1F1F4}",
4754
4766
  finland: "\u{1F1EB}\u{1F1EE}",
4755
4767
  iceland: "\u{1F1EE}\u{1F1F8}",
4768
+ // Central & Eastern Europe
4756
4769
  poland: "\u{1F1F5}\u{1F1F1}",
4757
4770
  czechia: "\u{1F1E8}\u{1F1FF}",
4758
4771
  "czech republic": "\u{1F1E8}\u{1F1FF}",
4759
4772
  croatia: "\u{1F1ED}\u{1F1F7}",
4760
4773
  serbia: "\u{1F1F7}\u{1F1F8}",
4761
4774
  "bosnia and herzegovina": "\u{1F1E7}\u{1F1E6}",
4775
+ bosnia: "\u{1F1E7}\u{1F1E6}",
4762
4776
  greece: "\u{1F1EC}\u{1F1F7}",
4763
4777
  romania: "\u{1F1F7}\u{1F1F4}",
4764
4778
  ukraine: "\u{1F1FA}\u{1F1E6}",
@@ -4766,10 +4780,29 @@ var FLAGS = {
4766
4780
  hungary: "\u{1F1ED}\u{1F1FA}",
4767
4781
  slovakia: "\u{1F1F8}\u{1F1F0}",
4768
4782
  slovenia: "\u{1F1F8}\u{1F1EE}",
4783
+ bulgaria: "\u{1F1E7}\u{1F1EC}",
4784
+ lithuania: "\u{1F1F1}\u{1F1F9}",
4785
+ latvia: "\u{1F1F1}\u{1F1FB}",
4786
+ estonia: "\u{1F1EA}\u{1F1EA}",
4787
+ moldova: "\u{1F1F2}\u{1F1E9}",
4788
+ belarus: "\u{1F1E7}\u{1F1FE}",
4789
+ // South-East Europe / Balkans
4769
4790
  turkey: "\u{1F1F9}\u{1F1F7}",
4770
4791
  t\u00FCrkiye: "\u{1F1F9}\u{1F1F7}",
4771
4792
  albania: "\u{1F1E6}\u{1F1F1}",
4772
4793
  "north macedonia": "\u{1F1F2}\u{1F1F0}",
4794
+ kosovo: "\u{1F1FD}\u{1F1F0}",
4795
+ montenegro: "\u{1F1F2}\u{1F1EA}",
4796
+ // Caucasus & Central Asia
4797
+ armenia: "\u{1F1E6}\u{1F1F2}",
4798
+ georgia: "\u{1F1EC}\u{1F1EA}",
4799
+ azerbaijan: "\u{1F1E6}\u{1F1FF}",
4800
+ kazakhstan: "\u{1F1F0}\u{1F1FF}",
4801
+ uzbekistan: "\u{1F1FA}\u{1F1FF}",
4802
+ kyrgyzstan: "\u{1F1F0}\u{1F1EC}",
4803
+ tajikistan: "\u{1F1F9}\u{1F1EF}",
4804
+ turkmenistan: "\u{1F1F9}\u{1F1F2}",
4805
+ // South America
4773
4806
  brazil: "\u{1F1E7}\u{1F1F7}",
4774
4807
  argentina: "\u{1F1E6}\u{1F1F7}",
4775
4808
  uruguay: "\u{1F1FA}\u{1F1FE}",
@@ -4778,38 +4811,134 @@ var FLAGS = {
4778
4811
  peru: "\u{1F1F5}\u{1F1EA}",
4779
4812
  ecuador: "\u{1F1EA}\u{1F1E8}",
4780
4813
  paraguay: "\u{1F1F5}\u{1F1FE}",
4814
+ venezuela: "\u{1F1FB}\u{1F1EA}",
4815
+ bolivia: "\u{1F1E7}\u{1F1F4}",
4816
+ guyana: "\u{1F1EC}\u{1F1FE}",
4817
+ suriname: "\u{1F1F8}\u{1F1F7}",
4818
+ // North & Central America
4781
4819
  mexico: "\u{1F1F2}\u{1F1FD}",
4782
4820
  "united states": "\u{1F1FA}\u{1F1F8}",
4783
4821
  usa: "\u{1F1FA}\u{1F1F8}",
4784
4822
  canada: "\u{1F1E8}\u{1F1E6}",
4823
+ "costa rica": "\u{1F1E8}\u{1F1F7}",
4824
+ panama: "\u{1F1F5}\u{1F1E6}",
4825
+ honduras: "\u{1F1ED}\u{1F1F3}",
4826
+ "el salvador": "\u{1F1F8}\u{1F1FB}",
4827
+ guatemala: "\u{1F1EC}\u{1F1F9}",
4828
+ nicaragua: "\u{1F1F3}\u{1F1EE}",
4829
+ // Caribbean
4785
4830
  jamaica: "\u{1F1EF}\u{1F1F2}",
4831
+ cuba: "\u{1F1E8}\u{1F1FA}",
4832
+ haiti: "\u{1F1ED}\u{1F1F9}",
4833
+ "dominican republic": "\u{1F1E9}\u{1F1F4}",
4834
+ "trinidad and tobago": "\u{1F1F9}\u{1F1F9}",
4835
+ trinidad: "\u{1F1F9}\u{1F1F9}",
4836
+ "cura\xE7ao": "\u{1F1E8}\u{1F1FC}",
4837
+ curacao: "\u{1F1E8}\u{1F1FC}",
4838
+ barbados: "\u{1F1E7}\u{1F1E7}",
4839
+ // West Africa
4786
4840
  nigeria: "\u{1F1F3}\u{1F1EC}",
4787
4841
  ghana: "\u{1F1EC}\u{1F1ED}",
4788
4842
  senegal: "\u{1F1F8}\u{1F1F3}",
4789
4843
  ivorycoast: "\u{1F1E8}\u{1F1EE}",
4790
4844
  "cote d'ivoire": "\u{1F1E8}\u{1F1EE}",
4845
+ "c\xF4te d'ivoire": "\u{1F1E8}\u{1F1EE}",
4791
4846
  "ivory coast": "\u{1F1E8}\u{1F1EE}",
4792
4847
  cameroon: "\u{1F1E8}\u{1F1F2}",
4848
+ mali: "\u{1F1F2}\u{1F1F1}",
4849
+ guinea: "\u{1F1EC}\u{1F1F3}",
4850
+ "guinea-bissau": "\u{1F1EC}\u{1F1FC}",
4851
+ "sierra leone": "\u{1F1F8}\u{1F1F1}",
4852
+ liberia: "\u{1F1F1}\u{1F1F7}",
4853
+ "cape verde": "\u{1F1E8}\u{1F1FB}",
4854
+ "gambia": "\u{1F1EC}\u{1F1F2}",
4855
+ mauritania: "\u{1F1F2}\u{1F1F7}",
4856
+ togo: "\u{1F1F9}\u{1F1EC}",
4857
+ benin: "\u{1F1E7}\u{1F1EF}",
4858
+ "burkina faso": "\u{1F1E7}\u{1F1EB}",
4859
+ niger: "\u{1F1F3}\u{1F1EA}",
4860
+ // Central & East Africa
4861
+ "dr congo": "\u{1F1E8}\u{1F1E9}",
4862
+ "democratic republic of the congo": "\u{1F1E8}\u{1F1E9}",
4863
+ "congo dr": "\u{1F1E8}\u{1F1E9}",
4864
+ "republic of the congo": "\u{1F1E8}\u{1F1EC}",
4865
+ congo: "\u{1F1E8}\u{1F1EC}",
4866
+ "congo republic": "\u{1F1E8}\u{1F1EC}",
4867
+ "congo-brazzaville": "\u{1F1E8}\u{1F1EC}",
4868
+ "central african republic": "\u{1F1E8}\u{1F1EB}",
4869
+ gabon: "\u{1F1EC}\u{1F1E6}",
4870
+ "equatorial guinea": "\u{1F1EC}\u{1F1F6}",
4871
+ "south africa": "\u{1F1FF}\u{1F1E6}",
4872
+ angola: "\u{1F1E6}\u{1F1F4}",
4873
+ namibia: "\u{1F1F3}\u{1F1E6}",
4874
+ botswana: "\u{1F1E7}\u{1F1FC}",
4875
+ zimbabwe: "\u{1F1FF}\u{1F1FC}",
4876
+ zambia: "\u{1F1FF}\u{1F1F2}",
4877
+ malawi: "\u{1F1F2}\u{1F1FC}",
4878
+ mozambique: "\u{1F1F2}\u{1F1FF}",
4879
+ tanzania: "\u{1F1F9}\u{1F1FF}",
4880
+ kenya: "\u{1F1F0}\u{1F1EA}",
4881
+ uganda: "\u{1F1FA}\u{1F1EC}",
4882
+ rwanda: "\u{1F1F7}\u{1F1FC}",
4883
+ ethiopia: "\u{1F1EA}\u{1F1F9}",
4884
+ eritrea: "\u{1F1EA}\u{1F1F7}",
4885
+ djibouti: "\u{1F1E9}\u{1F1EF}",
4886
+ somalia: "\u{1F1F8}\u{1F1F4}",
4887
+ sudan: "\u{1F1F8}\u{1F1E9}",
4888
+ "south sudan": "\u{1F1F8}\u{1F1F8}",
4889
+ chad: "\u{1F1F9}\u{1F1E9}",
4890
+ lesotho: "\u{1F1F1}\u{1F1F8}",
4891
+ eswatini: "\u{1F1F8}\u{1F1FF}",
4892
+ swaziland: "\u{1F1F8}\u{1F1FF}",
4893
+ madagascar: "\u{1F1F2}\u{1F1EC}",
4894
+ mauritius: "\u{1F1F2}\u{1F1FA}",
4895
+ comoros: "\u{1F1F0}\u{1F1F2}",
4896
+ seychelles: "\u{1F1F8}\u{1F1E8}",
4897
+ // North Africa
4793
4898
  egypt: "\u{1F1EA}\u{1F1EC}",
4794
4899
  morocco: "\u{1F1F2}\u{1F1E6}",
4795
4900
  algeria: "\u{1F1E9}\u{1F1FF}",
4796
4901
  tunisia: "\u{1F1F9}\u{1F1F3}",
4797
- mali: "\u{1F1F2}\u{1F1F1}",
4798
- "south africa": "\u{1F1FF}\u{1F1E6}",
4799
- "dr congo": "\u{1F1E8}\u{1F1E9}",
4902
+ // Middle East
4903
+ "saudi arabia": "\u{1F1F8}\u{1F1E6}",
4904
+ iran: "\u{1F1EE}\u{1F1F7}",
4905
+ iraq: "\u{1F1EE}\u{1F1F6}",
4906
+ lebanon: "\u{1F1F1}\u{1F1E7}",
4907
+ syria: "\u{1F1F8}\u{1F1FE}",
4908
+ jordan: "\u{1F1EF}\u{1F1F4}",
4909
+ qatar: "\u{1F1F6}\u{1F1E6}",
4910
+ "united arab emirates": "\u{1F1E6}\u{1F1EA}",
4911
+ uae: "\u{1F1E6}\u{1F1EA}",
4912
+ kuwait: "\u{1F1F0}\u{1F1FC}",
4913
+ bahrain: "\u{1F1E7}\u{1F1ED}",
4914
+ oman: "\u{1F1F4}\u{1F1F2}",
4915
+ yemen: "\u{1F1FE}\u{1F1EA}",
4916
+ israel: "\u{1F1EE}\u{1F1F1}",
4917
+ palestine: "\u{1F1F5}\u{1F1F8}",
4918
+ // East & South-East Asia
4800
4919
  japan: "\u{1F1EF}\u{1F1F5}",
4801
4920
  "south korea": "\u{1F1F0}\u{1F1F7}",
4802
4921
  korea: "\u{1F1F0}\u{1F1F7}",
4922
+ china: "\u{1F1E8}\u{1F1F3}",
4923
+ india: "\u{1F1EE}\u{1F1F3}",
4924
+ thailand: "\u{1F1F9}\u{1F1ED}",
4925
+ indonesia: "\u{1F1EE}\u{1F1E9}",
4926
+ malaysia: "\u{1F1F2}\u{1F1FE}",
4927
+ philippines: "\u{1F1F5}\u{1F1ED}",
4928
+ vietnam: "\u{1F1FB}\u{1F1F3}",
4929
+ // Oceania
4803
4930
  australia: "\u{1F1E6}\u{1F1FA}",
4804
- "saudi arabia": "\u{1F1F8}\u{1F1E6}",
4805
- iran: "\u{1F1EE}\u{1F1F7}",
4806
- "new zealand": "\u{1F1F3}\u{1F1FF}"
4931
+ "new zealand": "\u{1F1F3}\u{1F1FF}",
4932
+ fiji: "\u{1F1EB}\u{1F1EF}"
4807
4933
  };
4808
4934
  function nationalityFlag(nationality) {
4809
4935
  if (!nationality) return "\u{1F3F3}\uFE0F";
4810
4936
  const key = nationality.trim().toLowerCase();
4811
4937
  return FLAGS[key] ?? nationality.slice(0, 3).toUpperCase();
4812
4938
  }
4939
+ function isNationCode(flag) {
4940
+ return /^[A-Z]{1,3}$/.test(flag);
4941
+ }
4813
4942
 
4814
4943
  // src/components/games/PlayerAvatar.tsx
4815
4944
  import { useState as useState24 } from "react";
@@ -5508,6 +5637,23 @@ function CriterionIcon({ kind }) {
5508
5637
  return /* @__PURE__ */ jsx71(IconFlag, {});
5509
5638
  }
5510
5639
  }
5640
+ function HeaderVisual({ label, key: iKey, meta }) {
5641
+ if (!meta) {
5642
+ return /* @__PURE__ */ jsx71(CriterionIcon, { kind: criterionIconKind(label, iKey) });
5643
+ }
5644
+ switch (meta.kind) {
5645
+ case "club":
5646
+ return /* @__PURE__ */ jsx71(CrestShield, { src: meta.imageUrl, name: label, size: 24 });
5647
+ case "coach":
5648
+ return /* @__PURE__ */ jsx71(PlayerAvatar, { name: label, imagePath: meta.imageUrl, className: "ss-g-btg-coach-av" });
5649
+ case "country":
5650
+ return /* @__PURE__ */ jsx71("span", { className: "ss-g-btg-hdr-flag", "aria-hidden": "true", children: nationalityFlag(meta.country ?? label) });
5651
+ case "position":
5652
+ return /* @__PURE__ */ jsx71(Fragment14, {});
5653
+ default:
5654
+ return /* @__PURE__ */ jsx71(CriterionIcon, { kind: criterionIconKind(label, iKey) });
5655
+ }
5656
+ }
5511
5657
  function parseClientState4(json) {
5512
5658
  if (!json) return null;
5513
5659
  try {
@@ -5586,7 +5732,7 @@ function SearchSheet({
5586
5732
  options: filtered.map((p) => ({
5587
5733
  key: p.id,
5588
5734
  content: /* @__PURE__ */ jsxs59(Fragment14, { children: [
5589
- /* @__PURE__ */ jsx71(PlayerAvatar, { name: p.name, className: "ss-g-opt-av" }),
5735
+ /* @__PURE__ */ jsx71(PlayerAvatar, { name: p.name, imagePath: p.imagePath, className: "ss-g-opt-av" }),
5590
5736
  /* @__PURE__ */ jsx71("span", { className: "ss-g-btg-result-name", children: p.name }),
5591
5737
  /* @__PURE__ */ jsx71("span", { className: "ss-g-btg-result-plus", "aria-hidden": "true", children: /* @__PURE__ */ jsx71(IconPlus, { size: 18 }) })
5592
5738
  ] })
@@ -5665,17 +5811,25 @@ function BeatTheGridGame({
5665
5811
  role: "grid",
5666
5812
  children: [
5667
5813
  /* @__PURE__ */ jsx71("div", { className: "ss-g-btg-corner" }),
5668
- cols.map((col, colIdx) => /* @__PURE__ */ jsxs59("div", { className: "ss-g-btg-colhdr", children: [
5669
- /* @__PURE__ */ jsx71(CriterionIcon, { kind: criterionIconKind(col, config.colsI18n?.[colIdx]?.key) }),
5670
- /* @__PURE__ */ jsx71("span", { children: col })
5671
- ] }, col)),
5814
+ cols.map((col, colIdx) => {
5815
+ const colMeta = config.colsMeta?.[colIdx];
5816
+ return /* @__PURE__ */ jsxs59("div", { className: "ss-g-btg-colhdr", "data-meta": colMeta ? "true" : void 0, children: [
5817
+ /* @__PURE__ */ jsx71(HeaderVisual, { label: col, meta: colMeta }, config.colsI18n?.[colIdx]?.key),
5818
+ /* @__PURE__ */ jsx71("span", { children: col })
5819
+ ] }, col);
5820
+ }),
5672
5821
  rows.map((rowLabel, rowIdx) => {
5822
+ const rowMeta = config.rowsMeta?.[rowIdx];
5673
5823
  const abbr = rowAbbrev(rowLabel, s.rowAbbrev, config.rowsI18n?.[rowIdx]?.key);
5824
+ const rowHeaderContent = rowMeta ? /* @__PURE__ */ jsxs59(Fragment14, { children: [
5825
+ /* @__PURE__ */ jsx71(HeaderVisual, { label: rowLabel, meta: rowMeta }, config.rowsI18n?.[rowIdx]?.key),
5826
+ /* @__PURE__ */ jsx71("span", { children: rowLabel })
5827
+ ] }) : abbr === rowLabel ? /* @__PURE__ */ jsx71("span", { children: rowLabel }) : /* @__PURE__ */ jsxs59(Fragment14, { children: [
5828
+ /* @__PURE__ */ jsx71("span", { "aria-hidden": "true", children: abbr }),
5829
+ /* @__PURE__ */ jsx71("span", { className: "ss-g-sr", children: rowLabel })
5830
+ ] });
5674
5831
  return /* @__PURE__ */ jsxs59(React.Fragment, { children: [
5675
- /* @__PURE__ */ jsx71("div", { className: "ss-g-btg-rowhdr", children: abbr === rowLabel ? /* @__PURE__ */ jsx71("span", { children: rowLabel }) : /* @__PURE__ */ jsxs59(Fragment14, { children: [
5676
- /* @__PURE__ */ jsx71("span", { "aria-hidden": "true", children: abbr }),
5677
- /* @__PURE__ */ jsx71("span", { className: "ss-g-sr", children: rowLabel })
5678
- ] }) }),
5832
+ /* @__PURE__ */ jsx71("div", { className: "ss-g-btg-rowhdr", "data-meta": rowMeta ? "true" : void 0, children: rowHeaderContent }),
5679
5833
  cols.map((colLabel, colIdx) => {
5680
5834
  const filled = findCellResult(filledCells, rowIdx, colIdx);
5681
5835
  const isActive = activeCell?.row === rowIdx && activeCell?.col === colIdx;
@@ -5702,7 +5856,17 @@ function BeatTheGridGame({
5702
5856
  }
5703
5857
  ),
5704
5858
  /* @__PURE__ */ jsx71("span", { className: "ss-g-btg-rarity", children: filled.rarityScore }),
5705
- /* @__PURE__ */ jsx71(Silhouette, { size: 40 }),
5859
+ (() => {
5860
+ const entry = playerPool.find((p) => p.id === filled.playerId);
5861
+ return /* @__PURE__ */ jsx71(
5862
+ PlayerAvatar,
5863
+ {
5864
+ name: entry?.name ?? "",
5865
+ imagePath: entry?.imagePath,
5866
+ className: "ss-g-btg-av"
5867
+ }
5868
+ );
5869
+ })(),
5706
5870
  /* @__PURE__ */ jsx71("span", { className: "ss-g-btg-name", children: shortName(playerPool.find((p) => p.id === filled.playerId)?.name) })
5707
5871
  ] }) : /* @__PURE__ */ jsx71("span", { className: "ss-g-btg-plus", "aria-hidden": "true", children: /* @__PURE__ */ jsx71(IconPlus, { size: 22 }) })
5708
5872
  },
@@ -5847,6 +6011,10 @@ function GuessTheXiGame({
5847
6011
  (clientState?.earnedReveals ?? []).forEach((r) => {
5848
6012
  if (r.slot && r.type !== "position") nameBySlot.set(r.slot, r.value);
5849
6013
  });
6014
+ const lineupBySlot = /* @__PURE__ */ new Map();
6015
+ (clientState?.lineup ?? []).forEach((e) => {
6016
+ lineupBySlot.set(e.slot, { name: e.name, imagePath: e.imagePath });
6017
+ });
5850
6018
  const filtered = config && !isOver ? config.teamPool.filter(
5851
6019
  (tm) => !guessedTeamIds.has(tm.teamId) && tm.teamName.toLowerCase().includes(query.toLowerCase())
5852
6020
  ) : [];
@@ -5879,15 +6047,31 @@ function GuessTheXiGame({
5879
6047
  /* @__PURE__ */ jsx73("div", { className: "ss-g-gxi-rows", children: rows.map((row, r) => /* @__PURE__ */ jsx73("div", { className: "ss-g-gxi-row", children: row.map((pos, c) => {
5880
6048
  const posLabel = pos.slot ? posBySlot.get(pos.slot) ?? "" : "";
5881
6049
  const name = pos.slot ? nameBySlot.get(pos.slot) : void 0;
6050
+ const lineupEntry = pos.slot ? lineupBySlot.get(pos.slot) : void 0;
6051
+ const flag = nationalityFlag(pos.nationality);
6052
+ if (lineupEntry) {
6053
+ return /* @__PURE__ */ jsxs61("div", { className: "ss-g-gxi-node", "data-revealed": "true", children: [
6054
+ /* @__PURE__ */ jsx73(
6055
+ PlayerAvatar,
6056
+ {
6057
+ name: lineupEntry.name,
6058
+ imagePath: lineupEntry.imagePath,
6059
+ className: "ss-g-gxi-disc ss-g-gxi-disc--photo"
6060
+ }
6061
+ ),
6062
+ /* @__PURE__ */ jsx73("span", { className: "ss-g-gxi-pos ss-g-gxi-pos--name", children: splitName(lineupEntry.name).last })
6063
+ ] }, `${pos.slot}-${c}`);
6064
+ }
5882
6065
  return /* @__PURE__ */ jsxs61("div", { className: "ss-g-gxi-node", "data-revealed": name ? "true" : void 0, children: [
5883
6066
  /* @__PURE__ */ jsx73(
5884
6067
  "span",
5885
6068
  {
5886
6069
  className: "ss-g-gxi-disc",
6070
+ "data-code": isNationCode(flag) ? "true" : void 0,
5887
6071
  role: "img",
5888
6072
  title: pos.nationality,
5889
6073
  "aria-label": `${posLabel ? posLabel + " \u2014 " : ""}${pos.nationality}${name ? " \u2014 " + name : ""}`,
5890
- children: nationalityFlag(pos.nationality)
6074
+ children: flag
5891
6075
  }
5892
6076
  ),
5893
6077
  name ? /* @__PURE__ */ jsx73("span", { className: "ss-g-gxi-pos ss-g-gxi-pos--name", children: splitName(name).last }) : posLabel && /* @__PURE__ */ jsx73("span", { className: "ss-g-gxi-pos", children: posLabel })
@@ -5896,22 +6080,32 @@ function GuessTheXiGame({
5896
6080
  ] }),
5897
6081
  !isOver && wrongGuesses.length > 0 && /* @__PURE__ */ jsxs61("div", { className: "ss-g-gxi-wrong", children: [
5898
6082
  /* @__PURE__ */ jsx73("span", { className: "ss-g-gxi-wrong-l", children: t.notThem }),
5899
- wrongGuesses.map((g) => /* @__PURE__ */ jsxs61("span", { className: "ss-g-gxi-wrong-chip", children: [
5900
- /* @__PURE__ */ jsx73(CrestShield, { name: teamName(g.teamId), size: 18 }),
5901
- /* @__PURE__ */ jsx73("s", { children: teamName(g.teamId) })
5902
- ] }, g.teamId))
6083
+ wrongGuesses.map((g) => {
6084
+ const crestUrl = config?.teamPool.find((tm) => tm.teamId === g.teamId)?.crestUrl;
6085
+ return /* @__PURE__ */ jsxs61("span", { className: "ss-g-gxi-wrong-chip", children: [
6086
+ /* @__PURE__ */ jsx73(CrestShield, { src: crestUrl, name: teamName(g.teamId), size: 18 }),
6087
+ /* @__PURE__ */ jsx73("s", { children: teamName(g.teamId) })
6088
+ ] }, g.teamId);
6089
+ })
5903
6090
  ] }),
5904
- isOver && /* @__PURE__ */ jsx73(
5905
- ResultCard,
5906
- {
5907
- tone: solved ? "win" : failed ? "lose" : "neutral",
5908
- title: solved ? t.solved : failed ? t.failed : ui.games.alreadyPlayedTitle,
5909
- score: clientState?.score ?? result?.score ?? 0,
5910
- detail: clientState ? t.detail(clientState.guessesUsed) : void 0,
5911
- onBack,
5912
- ui
5913
- }
5914
- )
6091
+ isOver && /* @__PURE__ */ jsxs61(Fragment16, { children: [
6092
+ /* @__PURE__ */ jsx73(
6093
+ ResultCard,
6094
+ {
6095
+ tone: solved ? "win" : failed ? "lose" : "neutral",
6096
+ title: solved ? t.solved : failed ? t.failed : ui.games.alreadyPlayedTitle,
6097
+ score: clientState?.score ?? result?.score ?? 0,
6098
+ detail: clientState ? t.detail(clientState.guessesUsed) : void 0,
6099
+ onBack,
6100
+ ui
6101
+ }
6102
+ ),
6103
+ (solved || failed) && clientState?.answer && /* @__PURE__ */ jsxs61("div", { className: "ss-g-gxi-answer", "data-testid": "gxi-answer-reveal", children: [
6104
+ /* @__PURE__ */ jsx73("span", { className: "ss-g-gxi-answer-label", children: t.theAnswer }),
6105
+ /* @__PURE__ */ jsx73(CrestShield, { src: clientState.answer.crestUrl, name: clientState.answer.teamName, size: 32 }),
6106
+ /* @__PURE__ */ jsx73("span", { className: "ss-g-gxi-answer-name", children: clientState.answer.teamName })
6107
+ ] })
6108
+ ] })
5915
6109
  ] }),
5916
6110
  !isOver && /* @__PURE__ */ jsxs61(FooterBar, { children: [
5917
6111
  query.length > 0 && filtered.length > 0 && /* @__PURE__ */ jsx73(
@@ -5921,7 +6115,7 @@ function GuessTheXiGame({
5921
6115
  options: filtered.map((tm) => ({
5922
6116
  key: tm.teamId,
5923
6117
  content: /* @__PURE__ */ jsxs61(Fragment16, { children: [
5924
- /* @__PURE__ */ jsx73(CrestShield, { name: tm.teamName, size: 28 }),
6118
+ /* @__PURE__ */ jsx73(CrestShield, { src: tm.crestUrl, name: tm.teamName, size: 28 }),
5925
6119
  /* @__PURE__ */ jsx73("span", { children: tm.teamName })
5926
6120
  ] })
5927
6121
  })),
@@ -6069,6 +6263,8 @@ function DailyQuizGame({
6069
6263
  /* @__PURE__ */ jsx74("h3", { className: "ss-g-dq-stem", children: current.stem }),
6070
6264
  /* @__PURE__ */ jsx74("div", { className: "ss-g-dq-opts", children: current.options.map((opt, optIdx) => {
6071
6265
  const selected = optIdx === selectedIdx;
6266
+ const imagePath = current.optionImagePaths?.[optIdx] ?? void 0;
6267
+ const playerName = opt;
6072
6268
  return /* @__PURE__ */ jsxs62(
6073
6269
  "button",
6074
6270
  {
@@ -6078,6 +6274,7 @@ function DailyQuizGame({
6078
6274
  disabled: submitting,
6079
6275
  onClick: () => handleSelect(current.index, optIdx),
6080
6276
  children: [
6277
+ current.optionImagePaths && /* @__PURE__ */ jsx74(PlayerAvatar, { name: playerName, imagePath, className: "ss-g-dq-opt-av" }),
6081
6278
  /* @__PURE__ */ jsx74("span", { className: "ss-g-dq-badge", "aria-hidden": "true", children: selected ? /* @__PURE__ */ jsx74(IconCheck, {}) : String.fromCharCode(65 + optIdx) }),
6082
6279
  /* @__PURE__ */ jsx74(OptionName, { text: opt })
6083
6280
  ]
@@ -8349,6 +8546,16 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
8349
8546
  /* Labels stay on one line: Turkish "DAHA FAZLA" wrapped to two in a ~115px button. */
8350
8547
  .ss-g-hl-btns .ss-g-btn { font-weight: 800; font-size: 13px; letter-spacing: .02em; text-transform: uppercase; white-space: nowrap; }
8351
8548
  .ss-g-hl-btns .ss-g-btn svg { flex: none; }
8549
+ /* Phone-width cards: the info column is ~230px, too narrow for "DAHA FAZLA" + icon side by side.
8550
+ Drop the icons and tighten the type first; stack the buttons only when even that cannot fit. */
8551
+ .ss-g-hl-info { container: hlinfo / inline-size; }
8552
+ @container hlinfo (max-width: 280px) {
8553
+ .ss-g-hl-btns .ss-g-btn svg { display: none; }
8554
+ .ss-g-hl-btns .ss-g-btn { font-size: 12px; letter-spacing: 0; padding: 0 4px; }
8555
+ }
8556
+ @container hlinfo (max-width: 180px) {
8557
+ .ss-g-hl-btns { flex-direction: column; }
8558
+ }
8352
8559
  .ss-g-hl-vs { position: relative; z-index: 1; flex: none; align-self: center; width: 44px; height: 44px; margin: -28px 0; border-radius: 50%; display: grid; place-items: center; background: var(--ss-g-ground); border: 2px solid var(--ss-g-line-warm); color: var(--ss-w-accent); font: 800 18px var(--ss-g-font-display); }
8353
8560
  /* Clear the VS badge that straddles the seam between the two cards. */
8354
8561
  .ss-g-hl-pair > .ss-g-hl-card:first-child .ss-g-hl-info { padding-bottom: 24px; }
@@ -8385,11 +8592,20 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
8385
8592
  .ss-g-gxi-node { display: flex; flex-direction: column; align-items: center; gap: 3px; min-width: 0; max-width: 72px; }
8386
8593
  .ss-g-gxi-disc { width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; background: var(--ss-g-pitch-chip); border: 2px solid var(--ss-g-pitch-ink); font-size: 22px; line-height: 1; }
8387
8594
  .ss-g-gxi-node[data-revealed] .ss-g-gxi-disc { border-color: var(--ss-w-accent); }
8595
+ .ss-g-gxi-disc[data-code] { font-family: var(--ss-g-font-body); font-size: 11px; font-weight: 800; letter-spacing: .02em; color: var(--ss-g-pitch-ink); }
8388
8596
  .ss-g-gxi-pos { max-width: 100%; padding: 1px 6px; border-radius: 4px; background: var(--ss-g-pitch-chip); color: var(--ss-g-pitch-ink); font-size: 11px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
8389
8597
  .ss-g-gxi-pos--name { color: var(--ss-w-accent); text-transform: uppercase; }
8390
8598
  .ss-g-gxi-wrong { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
8391
8599
  .ss-g-gxi-wrong-l { font-size: 12px; color: var(--ss-g-muted); }
8392
8600
  .ss-g-gxi-wrong-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px 4px 6px; border-radius: 999px; background: var(--ss-g-surface); border: 1px solid var(--ss-g-line); font-size: 13px; color: var(--ss-g-muted); }
8601
+ /* u407: lineup photo \u2014 fills the 44px disc like the flag does */
8602
+ .ss-g-gxi-disc--photo { overflow: hidden; border: 2px solid var(--ss-w-accent); }
8603
+ .ss-g-gxi-disc--photo img { width: 100%; height: 100%; object-fit: cover; }
8604
+ .ss-g-gxi-disc--photo .ss-w-av-initials { font-family: var(--ss-g-font-body); font-size: 11px; font-weight: 800; color: var(--ss-g-pitch-ink); }
8605
+ /* u407: answer reveal \u2014 prominent row using theme tokens, works on dark/navy/light surfaces */
8606
+ .ss-g-gxi-answer { display: flex; align-items: center; gap: 10px; margin-top: 10px; padding: 12px 16px; border-radius: 14px; background: var(--ss-g-warm); border: 1.5px solid var(--ss-g-line-warm); }
8607
+ .ss-g-gxi-answer-label { font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--ss-g-muted); flex: none; }
8608
+ .ss-g-gxi-answer-name { font-family: var(--ss-g-font-display); font-weight: 800; font-size: 20px; text-transform: uppercase; color: var(--ss-g-ink); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
8393
8609
 
8394
8610
  /* ---- Daily Quiz (u393) ---- */
8395
8611
  .ss-g-dq-stem { font-family: var(--ss-g-font-display); font-weight: 700; font-size: 30px; line-height: 1.05; overflow-wrap: anywhere; }
@@ -8414,6 +8630,10 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
8414
8630
  .ss-g-dq-rq-opt--correct { background: var(--ss-g-correct); color: var(--ss-g-on-correct); }
8415
8631
  .ss-g-dq-rq-opt--wrong { background: var(--ss-g-wrong); color: var(--ss-g-on-correct); }
8416
8632
  .ss-g-dq-why { font-size: 13px; color: var(--ss-g-ink-2); }
8633
+ /* u407: player avatar in quiz option \u2014 centered in top half, badge at top-left unaffected */
8634
+ .ss-g-dq-opt-av { position: absolute; top: 7px; right: 10px; width: 40px; height: 40px; border-radius: 50%; overflow: hidden; background: var(--ss-g-raised); display: grid; place-items: center; color: var(--ss-g-muted); font-size: 13px; font-weight: 700; flex: none; }
8635
+ .ss-g-dq-opt-av img { width: 100%; height: 100%; object-fit: cover; }
8636
+ .ss-g-dq-opt-av .ss-w-av-initials { font-size: 11px; }
8417
8637
 
8418
8638
  /* ---- Career Path (u393) ---- */
8419
8639
  .ss-g-cp-card { display: flex; align-items: center; gap: 12px; padding: 12px; border-radius: 16px; background: var(--ss-g-warm); border: 1px solid var(--ss-g-line-warm); }
@@ -8490,9 +8710,11 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
8490
8710
  /* While the search sheet is pinned below, the grid shrinks its rows to share the body with it
8491
8711
  instead of pushing the bottom row under the sheet. */
8492
8712
  .ss-g-btg-grid--fit { flex: 0 1 auto; min-height: 0; }
8493
- .ss-g-btg-colhdr { min-height: 0; border-radius: 12px; background: var(--ss-g-surface); border: 1px solid var(--ss-g-line); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; text-align: center; padding: 0 4px; font-size: 12px; font-weight: 700; line-height: 1.1; min-width: 0; overflow-wrap: anywhere; }
8713
+ .ss-g-btg-colhdr { min-height: 0; border-radius: 12px; background: var(--ss-g-surface); border: 1px solid var(--ss-g-line); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; text-align: center; padding: 0 4px; font-size: 12px; font-weight: 700; line-height: 1.1; min-width: 0; overflow-wrap: anywhere; overflow: hidden; }
8714
+ .ss-g-btg-colhdr[data-meta] { overflow-wrap: normal; word-break: normal; hyphens: none; font-size: 11px; letter-spacing: 0; }
8494
8715
  .ss-g-btg-colhdr svg { color: var(--ss-w-accent); flex: none; }
8495
- .ss-g-btg-rowhdr { border-radius: 12px; background: var(--ss-g-surface); border: 1px solid var(--ss-g-line); display: grid; place-items: center; font-family: var(--ss-g-font-display); font-weight: 800; font-size: 18px; letter-spacing: .04em; text-transform: uppercase; overflow-wrap: anywhere; text-align: center; }
8716
+ .ss-g-btg-rowhdr { border-radius: 12px; background: var(--ss-g-surface); border: 1px solid var(--ss-g-line); display: grid; place-items: center; font-family: var(--ss-g-font-display); font-weight: 800; font-size: 18px; letter-spacing: .04em; text-transform: uppercase; overflow-wrap: anywhere; text-align: center; overflow: hidden; }
8717
+ .ss-g-btg-rowhdr[data-meta] { font-size: 10px; font-family: var(--ss-g-font-body); font-weight: 700; letter-spacing: -0.01em; text-transform: none; word-break: normal; overflow-wrap: normal; hyphens: none; line-height: 1.25; padding: 0 2px; }
8496
8718
  .ss-g-btg-cell { position: relative; min-height: 0; min-width: 0; border-radius: 12px; border: 1.5px dashed var(--ss-g-strong-line); background: transparent; color: var(--ss-g-muted); display: flex; flex-direction: column; align-items: center; justify-content: center; overflow: hidden; cursor: pointer; font: inherit; padding: 0; }
8497
8719
  .ss-g-btg-cell:disabled { cursor: default; }
8498
8720
  .ss-g-btg-cell[data-state="active"] { border: 2px solid var(--ss-w-accent); background: var(--ss-g-warm); color: var(--ss-w-accent); }
@@ -8520,6 +8742,17 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
8520
8742
  .ss-g-btg-sheet .ss-g-opts { max-height: 160px; }
8521
8743
  .ss-g-btg-result-name { flex: 1; min-width: 0; font-weight: 700; font-size: 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
8522
8744
  .ss-g-btg-result-plus { color: var(--ss-w-accent); display: flex; }
8745
+ /* u407: cell avatar replaces Silhouette */
8746
+ .ss-g-btg-av { width: 38px; height: 38px; flex: none; border-radius: 50%; overflow: hidden; background: var(--ss-g-raised); display: grid; place-items: center; color: var(--ss-g-muted); font-size: 12px; font-weight: 700; }
8747
+ .ss-g-btg-av img { width: 100%; height: 100%; object-fit: cover; }
8748
+ .ss-g-btg-av .ss-w-av-initials { font-size: 12px; }
8749
+ /* u407: coach photo in row/col header */
8750
+ .ss-g-btg-coach-av { width: 28px; height: 28px; flex: none; border-radius: 50%; overflow: hidden; background: var(--ss-g-raised); display: grid; place-items: center; color: var(--ss-g-muted); font-size: 10px; font-weight: 700; }
8751
+ .ss-g-btg-coach-av img { width: 100%; height: 100%; object-fit: cover; }
8752
+ /* u407: country flag emoji in header \u2014 sized to match other header icons */
8753
+ .ss-g-btg-hdr-flag { font-size: 20px; line-height: 1; flex: none; }
8754
+ /* u407: club crest in col/row header */
8755
+ .ss-g-btg-colhdr .ss-g-crest, .ss-g-btg-rowhdr .ss-g-crest { width: 28px; height: 28px; flex: none; }
8523
8756
 
8524
8757
  /* \u2500\u2500 Starting XI (u393) \u2500\u2500 */
8525
8758
  .ss-g-xi-pitch { position: relative; flex: none; height: 400px; border-radius: 18px; overflow: hidden; background: repeating-linear-gradient(180deg, var(--ss-g-pitch) 0 40px, color-mix(in srgb, var(--ss-g-pitch) 88%, var(--ss-g-pitch-mark)) 40px 80px); border: 1px solid var(--ss-g-pitch-line); }