@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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @sensiblestats/widget-react
2
2
 
3
+ ## 0.61.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Games: answer reveal with team crest, player photos in XI discs and quiz options, Beat the Grid header meta rendering (club crest, coach photo, country flag, full position label), comprehensive flag map additions including Congo, Kosovo, and 60+ more nationalities.
8
+
9
+ ## 0.60.6
10
+
11
+ ### Patch Changes
12
+
13
+ - Games: Higher/Lower buttons fit phone-width cards (icons drop and type tightens on narrow cards, stacking below 180px), and Guess the XI shows a nationality's three-letter code at a size that fits its disc when there is no flag.
14
+
3
15
  ## 0.60.5
4
16
 
5
17
  ### Patch Changes
package/dist/index.cjs CHANGED
@@ -236,7 +236,8 @@ var STRINGS = {
236
236
  optionsLabel: "Clubs",
237
237
  solved: "Solved!",
238
238
  failed: "Out of guesses",
239
- detail: (n) => `${n} ${n === 1 ? "guess" : "guesses"} \xB7 back tomorrow`
239
+ detail: (n) => `${n} ${n === 1 ? "guess" : "guesses"} \xB7 back tomorrow`,
240
+ theAnswer: "The answer"
240
241
  },
241
242
  dailyQuiz: {
242
243
  questionOf: (i, n) => `Question ${i} of ${n}`,
@@ -531,7 +532,8 @@ var STRINGS = {
531
532
  optionsLabel: "Kul\xFCpler",
532
533
  solved: "Bildin!",
533
534
  failed: "Tahmin hakk\u0131n bitti",
534
- detail: (n) => `${n} tahmin \xB7 yar\u0131n yine gel`
535
+ detail: (n) => `${n} tahmin \xB7 yar\u0131n yine gel`,
536
+ theAnswer: "Do\u011Fru cevap"
535
537
  },
536
538
  dailyQuiz: {
537
539
  questionOf: (i, n) => `Soru ${i} / ${n}`,
@@ -4769,6 +4771,7 @@ var import_react31 = require("react");
4769
4771
 
4770
4772
  // src/components/games/nationFlags.ts
4771
4773
  var FLAGS = {
4774
+ // UK home nations (subdivision flags)
4772
4775
  england: "\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}",
4773
4776
  scotland: "\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}",
4774
4777
  wales: "\u{1F3F4}\u{E0067}\u{E0062}\u{E0077}\u{E006C}\u{E0073}\u{E007F}",
@@ -4776,6 +4779,7 @@ var FLAGS = {
4776
4779
  "republic of ireland": "\u{1F1EE}\u{1F1EA}",
4777
4780
  ireland: "\u{1F1EE}\u{1F1EA}",
4778
4781
  "united kingdom": "\u{1F1EC}\u{1F1E7}",
4782
+ // Western & Southern Europe
4779
4783
  france: "\u{1F1EB}\u{1F1F7}",
4780
4784
  spain: "\u{1F1EA}\u{1F1F8}",
4781
4785
  portugal: "\u{1F1F5}\u{1F1F9}",
@@ -4785,17 +4789,27 @@ var FLAGS = {
4785
4789
  belgium: "\u{1F1E7}\u{1F1EA}",
4786
4790
  switzerland: "\u{1F1E8}\u{1F1ED}",
4787
4791
  austria: "\u{1F1E6}\u{1F1F9}",
4792
+ luxembourg: "\u{1F1F1}\u{1F1FA}",
4793
+ malta: "\u{1F1F2}\u{1F1F9}",
4794
+ cyprus: "\u{1F1E8}\u{1F1FE}",
4795
+ andorra: "\u{1F1E6}\u{1F1E9}",
4796
+ liechtenstein: "\u{1F1F1}\u{1F1EE}",
4797
+ "san marino": "\u{1F1F8}\u{1F1F2}",
4798
+ monaco: "\u{1F1F2}\u{1F1E8}",
4799
+ // Northern Europe
4788
4800
  denmark: "\u{1F1E9}\u{1F1F0}",
4789
4801
  sweden: "\u{1F1F8}\u{1F1EA}",
4790
4802
  norway: "\u{1F1F3}\u{1F1F4}",
4791
4803
  finland: "\u{1F1EB}\u{1F1EE}",
4792
4804
  iceland: "\u{1F1EE}\u{1F1F8}",
4805
+ // Central & Eastern Europe
4793
4806
  poland: "\u{1F1F5}\u{1F1F1}",
4794
4807
  czechia: "\u{1F1E8}\u{1F1FF}",
4795
4808
  "czech republic": "\u{1F1E8}\u{1F1FF}",
4796
4809
  croatia: "\u{1F1ED}\u{1F1F7}",
4797
4810
  serbia: "\u{1F1F7}\u{1F1F8}",
4798
4811
  "bosnia and herzegovina": "\u{1F1E7}\u{1F1E6}",
4812
+ bosnia: "\u{1F1E7}\u{1F1E6}",
4799
4813
  greece: "\u{1F1EC}\u{1F1F7}",
4800
4814
  romania: "\u{1F1F7}\u{1F1F4}",
4801
4815
  ukraine: "\u{1F1FA}\u{1F1E6}",
@@ -4803,10 +4817,29 @@ var FLAGS = {
4803
4817
  hungary: "\u{1F1ED}\u{1F1FA}",
4804
4818
  slovakia: "\u{1F1F8}\u{1F1F0}",
4805
4819
  slovenia: "\u{1F1F8}\u{1F1EE}",
4820
+ bulgaria: "\u{1F1E7}\u{1F1EC}",
4821
+ lithuania: "\u{1F1F1}\u{1F1F9}",
4822
+ latvia: "\u{1F1F1}\u{1F1FB}",
4823
+ estonia: "\u{1F1EA}\u{1F1EA}",
4824
+ moldova: "\u{1F1F2}\u{1F1E9}",
4825
+ belarus: "\u{1F1E7}\u{1F1FE}",
4826
+ // South-East Europe / Balkans
4806
4827
  turkey: "\u{1F1F9}\u{1F1F7}",
4807
4828
  t\u00FCrkiye: "\u{1F1F9}\u{1F1F7}",
4808
4829
  albania: "\u{1F1E6}\u{1F1F1}",
4809
4830
  "north macedonia": "\u{1F1F2}\u{1F1F0}",
4831
+ kosovo: "\u{1F1FD}\u{1F1F0}",
4832
+ montenegro: "\u{1F1F2}\u{1F1EA}",
4833
+ // Caucasus & Central Asia
4834
+ armenia: "\u{1F1E6}\u{1F1F2}",
4835
+ georgia: "\u{1F1EC}\u{1F1EA}",
4836
+ azerbaijan: "\u{1F1E6}\u{1F1FF}",
4837
+ kazakhstan: "\u{1F1F0}\u{1F1FF}",
4838
+ uzbekistan: "\u{1F1FA}\u{1F1FF}",
4839
+ kyrgyzstan: "\u{1F1F0}\u{1F1EC}",
4840
+ tajikistan: "\u{1F1F9}\u{1F1EF}",
4841
+ turkmenistan: "\u{1F1F9}\u{1F1F2}",
4842
+ // South America
4810
4843
  brazil: "\u{1F1E7}\u{1F1F7}",
4811
4844
  argentina: "\u{1F1E6}\u{1F1F7}",
4812
4845
  uruguay: "\u{1F1FA}\u{1F1FE}",
@@ -4815,38 +4848,134 @@ var FLAGS = {
4815
4848
  peru: "\u{1F1F5}\u{1F1EA}",
4816
4849
  ecuador: "\u{1F1EA}\u{1F1E8}",
4817
4850
  paraguay: "\u{1F1F5}\u{1F1FE}",
4851
+ venezuela: "\u{1F1FB}\u{1F1EA}",
4852
+ bolivia: "\u{1F1E7}\u{1F1F4}",
4853
+ guyana: "\u{1F1EC}\u{1F1FE}",
4854
+ suriname: "\u{1F1F8}\u{1F1F7}",
4855
+ // North & Central America
4818
4856
  mexico: "\u{1F1F2}\u{1F1FD}",
4819
4857
  "united states": "\u{1F1FA}\u{1F1F8}",
4820
4858
  usa: "\u{1F1FA}\u{1F1F8}",
4821
4859
  canada: "\u{1F1E8}\u{1F1E6}",
4860
+ "costa rica": "\u{1F1E8}\u{1F1F7}",
4861
+ panama: "\u{1F1F5}\u{1F1E6}",
4862
+ honduras: "\u{1F1ED}\u{1F1F3}",
4863
+ "el salvador": "\u{1F1F8}\u{1F1FB}",
4864
+ guatemala: "\u{1F1EC}\u{1F1F9}",
4865
+ nicaragua: "\u{1F1F3}\u{1F1EE}",
4866
+ // Caribbean
4822
4867
  jamaica: "\u{1F1EF}\u{1F1F2}",
4868
+ cuba: "\u{1F1E8}\u{1F1FA}",
4869
+ haiti: "\u{1F1ED}\u{1F1F9}",
4870
+ "dominican republic": "\u{1F1E9}\u{1F1F4}",
4871
+ "trinidad and tobago": "\u{1F1F9}\u{1F1F9}",
4872
+ trinidad: "\u{1F1F9}\u{1F1F9}",
4873
+ "cura\xE7ao": "\u{1F1E8}\u{1F1FC}",
4874
+ curacao: "\u{1F1E8}\u{1F1FC}",
4875
+ barbados: "\u{1F1E7}\u{1F1E7}",
4876
+ // West Africa
4823
4877
  nigeria: "\u{1F1F3}\u{1F1EC}",
4824
4878
  ghana: "\u{1F1EC}\u{1F1ED}",
4825
4879
  senegal: "\u{1F1F8}\u{1F1F3}",
4826
4880
  ivorycoast: "\u{1F1E8}\u{1F1EE}",
4827
4881
  "cote d'ivoire": "\u{1F1E8}\u{1F1EE}",
4882
+ "c\xF4te d'ivoire": "\u{1F1E8}\u{1F1EE}",
4828
4883
  "ivory coast": "\u{1F1E8}\u{1F1EE}",
4829
4884
  cameroon: "\u{1F1E8}\u{1F1F2}",
4885
+ mali: "\u{1F1F2}\u{1F1F1}",
4886
+ guinea: "\u{1F1EC}\u{1F1F3}",
4887
+ "guinea-bissau": "\u{1F1EC}\u{1F1FC}",
4888
+ "sierra leone": "\u{1F1F8}\u{1F1F1}",
4889
+ liberia: "\u{1F1F1}\u{1F1F7}",
4890
+ "cape verde": "\u{1F1E8}\u{1F1FB}",
4891
+ "gambia": "\u{1F1EC}\u{1F1F2}",
4892
+ mauritania: "\u{1F1F2}\u{1F1F7}",
4893
+ togo: "\u{1F1F9}\u{1F1EC}",
4894
+ benin: "\u{1F1E7}\u{1F1EF}",
4895
+ "burkina faso": "\u{1F1E7}\u{1F1EB}",
4896
+ niger: "\u{1F1F3}\u{1F1EA}",
4897
+ // Central & East Africa
4898
+ "dr congo": "\u{1F1E8}\u{1F1E9}",
4899
+ "democratic republic of the congo": "\u{1F1E8}\u{1F1E9}",
4900
+ "congo dr": "\u{1F1E8}\u{1F1E9}",
4901
+ "republic of the congo": "\u{1F1E8}\u{1F1EC}",
4902
+ congo: "\u{1F1E8}\u{1F1EC}",
4903
+ "congo republic": "\u{1F1E8}\u{1F1EC}",
4904
+ "congo-brazzaville": "\u{1F1E8}\u{1F1EC}",
4905
+ "central african republic": "\u{1F1E8}\u{1F1EB}",
4906
+ gabon: "\u{1F1EC}\u{1F1E6}",
4907
+ "equatorial guinea": "\u{1F1EC}\u{1F1F6}",
4908
+ "south africa": "\u{1F1FF}\u{1F1E6}",
4909
+ angola: "\u{1F1E6}\u{1F1F4}",
4910
+ namibia: "\u{1F1F3}\u{1F1E6}",
4911
+ botswana: "\u{1F1E7}\u{1F1FC}",
4912
+ zimbabwe: "\u{1F1FF}\u{1F1FC}",
4913
+ zambia: "\u{1F1FF}\u{1F1F2}",
4914
+ malawi: "\u{1F1F2}\u{1F1FC}",
4915
+ mozambique: "\u{1F1F2}\u{1F1FF}",
4916
+ tanzania: "\u{1F1F9}\u{1F1FF}",
4917
+ kenya: "\u{1F1F0}\u{1F1EA}",
4918
+ uganda: "\u{1F1FA}\u{1F1EC}",
4919
+ rwanda: "\u{1F1F7}\u{1F1FC}",
4920
+ ethiopia: "\u{1F1EA}\u{1F1F9}",
4921
+ eritrea: "\u{1F1EA}\u{1F1F7}",
4922
+ djibouti: "\u{1F1E9}\u{1F1EF}",
4923
+ somalia: "\u{1F1F8}\u{1F1F4}",
4924
+ sudan: "\u{1F1F8}\u{1F1E9}",
4925
+ "south sudan": "\u{1F1F8}\u{1F1F8}",
4926
+ chad: "\u{1F1F9}\u{1F1E9}",
4927
+ lesotho: "\u{1F1F1}\u{1F1F8}",
4928
+ eswatini: "\u{1F1F8}\u{1F1FF}",
4929
+ swaziland: "\u{1F1F8}\u{1F1FF}",
4930
+ madagascar: "\u{1F1F2}\u{1F1EC}",
4931
+ mauritius: "\u{1F1F2}\u{1F1FA}",
4932
+ comoros: "\u{1F1F0}\u{1F1F2}",
4933
+ seychelles: "\u{1F1F8}\u{1F1E8}",
4934
+ // North Africa
4830
4935
  egypt: "\u{1F1EA}\u{1F1EC}",
4831
4936
  morocco: "\u{1F1F2}\u{1F1E6}",
4832
4937
  algeria: "\u{1F1E9}\u{1F1FF}",
4833
4938
  tunisia: "\u{1F1F9}\u{1F1F3}",
4834
- mali: "\u{1F1F2}\u{1F1F1}",
4835
- "south africa": "\u{1F1FF}\u{1F1E6}",
4836
- "dr congo": "\u{1F1E8}\u{1F1E9}",
4939
+ // Middle East
4940
+ "saudi arabia": "\u{1F1F8}\u{1F1E6}",
4941
+ iran: "\u{1F1EE}\u{1F1F7}",
4942
+ iraq: "\u{1F1EE}\u{1F1F6}",
4943
+ lebanon: "\u{1F1F1}\u{1F1E7}",
4944
+ syria: "\u{1F1F8}\u{1F1FE}",
4945
+ jordan: "\u{1F1EF}\u{1F1F4}",
4946
+ qatar: "\u{1F1F6}\u{1F1E6}",
4947
+ "united arab emirates": "\u{1F1E6}\u{1F1EA}",
4948
+ uae: "\u{1F1E6}\u{1F1EA}",
4949
+ kuwait: "\u{1F1F0}\u{1F1FC}",
4950
+ bahrain: "\u{1F1E7}\u{1F1ED}",
4951
+ oman: "\u{1F1F4}\u{1F1F2}",
4952
+ yemen: "\u{1F1FE}\u{1F1EA}",
4953
+ israel: "\u{1F1EE}\u{1F1F1}",
4954
+ palestine: "\u{1F1F5}\u{1F1F8}",
4955
+ // East & South-East Asia
4837
4956
  japan: "\u{1F1EF}\u{1F1F5}",
4838
4957
  "south korea": "\u{1F1F0}\u{1F1F7}",
4839
4958
  korea: "\u{1F1F0}\u{1F1F7}",
4959
+ china: "\u{1F1E8}\u{1F1F3}",
4960
+ india: "\u{1F1EE}\u{1F1F3}",
4961
+ thailand: "\u{1F1F9}\u{1F1ED}",
4962
+ indonesia: "\u{1F1EE}\u{1F1E9}",
4963
+ malaysia: "\u{1F1F2}\u{1F1FE}",
4964
+ philippines: "\u{1F1F5}\u{1F1ED}",
4965
+ vietnam: "\u{1F1FB}\u{1F1F3}",
4966
+ // Oceania
4840
4967
  australia: "\u{1F1E6}\u{1F1FA}",
4841
- "saudi arabia": "\u{1F1F8}\u{1F1E6}",
4842
- iran: "\u{1F1EE}\u{1F1F7}",
4843
- "new zealand": "\u{1F1F3}\u{1F1FF}"
4968
+ "new zealand": "\u{1F1F3}\u{1F1FF}",
4969
+ fiji: "\u{1F1EB}\u{1F1EF}"
4844
4970
  };
4845
4971
  function nationalityFlag(nationality) {
4846
4972
  if (!nationality) return "\u{1F3F3}\uFE0F";
4847
4973
  const key = nationality.trim().toLowerCase();
4848
4974
  return FLAGS[key] ?? nationality.slice(0, 3).toUpperCase();
4849
4975
  }
4976
+ function isNationCode(flag) {
4977
+ return /^[A-Z]{1,3}$/.test(flag);
4978
+ }
4850
4979
 
4851
4980
  // src/components/games/PlayerAvatar.tsx
4852
4981
  var import_react30 = require("react");
@@ -5545,6 +5674,23 @@ function CriterionIcon({ kind }) {
5545
5674
  return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(IconFlag, {});
5546
5675
  }
5547
5676
  }
5677
+ function HeaderVisual({ label, key: iKey, meta }) {
5678
+ if (!meta) {
5679
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(CriterionIcon, { kind: criterionIconKind(label, iKey) });
5680
+ }
5681
+ switch (meta.kind) {
5682
+ case "club":
5683
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(CrestShield, { src: meta.imageUrl, name: label, size: 24 });
5684
+ case "coach":
5685
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PlayerAvatar, { name: label, imagePath: meta.imageUrl, className: "ss-g-btg-coach-av" });
5686
+ case "country":
5687
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "ss-g-btg-hdr-flag", "aria-hidden": "true", children: nationalityFlag(meta.country ?? label) });
5688
+ case "position":
5689
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_jsx_runtime71.Fragment, {});
5690
+ default:
5691
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(CriterionIcon, { kind: criterionIconKind(label, iKey) });
5692
+ }
5693
+ }
5548
5694
  function parseClientState4(json) {
5549
5695
  if (!json) return null;
5550
5696
  try {
@@ -5623,7 +5769,7 @@ function SearchSheet({
5623
5769
  options: filtered.map((p) => ({
5624
5770
  key: p.id,
5625
5771
  content: /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_jsx_runtime71.Fragment, { children: [
5626
- /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PlayerAvatar, { name: p.name, className: "ss-g-opt-av" }),
5772
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PlayerAvatar, { name: p.name, imagePath: p.imagePath, className: "ss-g-opt-av" }),
5627
5773
  /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "ss-g-btg-result-name", children: p.name }),
5628
5774
  /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "ss-g-btg-result-plus", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(IconPlus, { size: 18 }) })
5629
5775
  ] })
@@ -5702,17 +5848,25 @@ function BeatTheGridGame({
5702
5848
  role: "grid",
5703
5849
  children: [
5704
5850
  /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: "ss-g-btg-corner" }),
5705
- cols.map((col, colIdx) => /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("div", { className: "ss-g-btg-colhdr", children: [
5706
- /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(CriterionIcon, { kind: criterionIconKind(col, config.colsI18n?.[colIdx]?.key) }),
5707
- /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { children: col })
5708
- ] }, col)),
5851
+ cols.map((col, colIdx) => {
5852
+ const colMeta = config.colsMeta?.[colIdx];
5853
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)("div", { className: "ss-g-btg-colhdr", "data-meta": colMeta ? "true" : void 0, children: [
5854
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(HeaderVisual, { label: col, meta: colMeta }, config.colsI18n?.[colIdx]?.key),
5855
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { children: col })
5856
+ ] }, col);
5857
+ }),
5709
5858
  rows.map((rowLabel, rowIdx) => {
5859
+ const rowMeta = config.rowsMeta?.[rowIdx];
5710
5860
  const abbr = rowAbbrev(rowLabel, s.rowAbbrev, config.rowsI18n?.[rowIdx]?.key);
5861
+ const rowHeaderContent = rowMeta ? /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_jsx_runtime71.Fragment, { children: [
5862
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(HeaderVisual, { label: rowLabel, meta: rowMeta }, config.rowsI18n?.[rowIdx]?.key),
5863
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { children: rowLabel })
5864
+ ] }) : abbr === rowLabel ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { children: rowLabel }) : /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_jsx_runtime71.Fragment, { children: [
5865
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { "aria-hidden": "true", children: abbr }),
5866
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "ss-g-sr", children: rowLabel })
5867
+ ] });
5711
5868
  return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react34.default.Fragment, { children: [
5712
- /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: "ss-g-btg-rowhdr", children: abbr === rowLabel ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { children: rowLabel }) : /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_jsx_runtime71.Fragment, { children: [
5713
- /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { "aria-hidden": "true", children: abbr }),
5714
- /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "ss-g-sr", children: rowLabel })
5715
- ] }) }),
5869
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("div", { className: "ss-g-btg-rowhdr", "data-meta": rowMeta ? "true" : void 0, children: rowHeaderContent }),
5716
5870
  cols.map((colLabel, colIdx) => {
5717
5871
  const filled = findCellResult(filledCells, rowIdx, colIdx);
5718
5872
  const isActive = activeCell?.row === rowIdx && activeCell?.col === colIdx;
@@ -5739,7 +5893,17 @@ function BeatTheGridGame({
5739
5893
  }
5740
5894
  ),
5741
5895
  /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "ss-g-btg-rarity", children: filled.rarityScore }),
5742
- /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(Silhouette, { size: 40 }),
5896
+ (() => {
5897
+ const entry = playerPool.find((p) => p.id === filled.playerId);
5898
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
5899
+ PlayerAvatar,
5900
+ {
5901
+ name: entry?.name ?? "",
5902
+ imagePath: entry?.imagePath,
5903
+ className: "ss-g-btg-av"
5904
+ }
5905
+ );
5906
+ })(),
5743
5907
  /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "ss-g-btg-name", children: shortName(playerPool.find((p) => p.id === filled.playerId)?.name) })
5744
5908
  ] }) : /* @__PURE__ */ (0, import_jsx_runtime71.jsx)("span", { className: "ss-g-btg-plus", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(IconPlus, { size: 22 }) })
5745
5909
  },
@@ -5884,6 +6048,10 @@ function GuessTheXiGame({
5884
6048
  (clientState?.earnedReveals ?? []).forEach((r) => {
5885
6049
  if (r.slot && r.type !== "position") nameBySlot.set(r.slot, r.value);
5886
6050
  });
6051
+ const lineupBySlot = /* @__PURE__ */ new Map();
6052
+ (clientState?.lineup ?? []).forEach((e) => {
6053
+ lineupBySlot.set(e.slot, { name: e.name, imagePath: e.imagePath });
6054
+ });
5887
6055
  const filtered = config && !isOver ? config.teamPool.filter(
5888
6056
  (tm) => !guessedTeamIds.has(tm.teamId) && tm.teamName.toLowerCase().includes(query.toLowerCase())
5889
6057
  ) : [];
@@ -5916,15 +6084,31 @@ function GuessTheXiGame({
5916
6084
  /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { className: "ss-g-gxi-rows", children: rows.map((row, r) => /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("div", { className: "ss-g-gxi-row", children: row.map((pos, c) => {
5917
6085
  const posLabel = pos.slot ? posBySlot.get(pos.slot) ?? "" : "";
5918
6086
  const name = pos.slot ? nameBySlot.get(pos.slot) : void 0;
6087
+ const lineupEntry = pos.slot ? lineupBySlot.get(pos.slot) : void 0;
6088
+ const flag = nationalityFlag(pos.nationality);
6089
+ if (lineupEntry) {
6090
+ return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "ss-g-gxi-node", "data-revealed": "true", children: [
6091
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
6092
+ PlayerAvatar,
6093
+ {
6094
+ name: lineupEntry.name,
6095
+ imagePath: lineupEntry.imagePath,
6096
+ className: "ss-g-gxi-disc ss-g-gxi-disc--photo"
6097
+ }
6098
+ ),
6099
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "ss-g-gxi-pos ss-g-gxi-pos--name", children: splitName(lineupEntry.name).last })
6100
+ ] }, `${pos.slot}-${c}`);
6101
+ }
5919
6102
  return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "ss-g-gxi-node", "data-revealed": name ? "true" : void 0, children: [
5920
6103
  /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
5921
6104
  "span",
5922
6105
  {
5923
6106
  className: "ss-g-gxi-disc",
6107
+ "data-code": isNationCode(flag) ? "true" : void 0,
5924
6108
  role: "img",
5925
6109
  title: pos.nationality,
5926
6110
  "aria-label": `${posLabel ? posLabel + " \u2014 " : ""}${pos.nationality}${name ? " \u2014 " + name : ""}`,
5927
- children: nationalityFlag(pos.nationality)
6111
+ children: flag
5928
6112
  }
5929
6113
  ),
5930
6114
  name ? /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "ss-g-gxi-pos ss-g-gxi-pos--name", children: splitName(name).last }) : posLabel && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "ss-g-gxi-pos", children: posLabel })
@@ -5933,22 +6117,32 @@ function GuessTheXiGame({
5933
6117
  ] }),
5934
6118
  !isOver && wrongGuesses.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "ss-g-gxi-wrong", children: [
5935
6119
  /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "ss-g-gxi-wrong-l", children: t.notThem }),
5936
- wrongGuesses.map((g) => /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("span", { className: "ss-g-gxi-wrong-chip", children: [
5937
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(CrestShield, { name: teamName(g.teamId), size: 18 }),
5938
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("s", { children: teamName(g.teamId) })
5939
- ] }, g.teamId))
6120
+ wrongGuesses.map((g) => {
6121
+ const crestUrl = config?.teamPool.find((tm) => tm.teamId === g.teamId)?.crestUrl;
6122
+ return /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("span", { className: "ss-g-gxi-wrong-chip", children: [
6123
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(CrestShield, { src: crestUrl, name: teamName(g.teamId), size: 18 }),
6124
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("s", { children: teamName(g.teamId) })
6125
+ ] }, g.teamId);
6126
+ })
5940
6127
  ] }),
5941
- isOver && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
5942
- ResultCard,
5943
- {
5944
- tone: solved ? "win" : failed ? "lose" : "neutral",
5945
- title: solved ? t.solved : failed ? t.failed : ui.games.alreadyPlayedTitle,
5946
- score: clientState?.score ?? result?.score ?? 0,
5947
- detail: clientState ? t.detail(clientState.guessesUsed) : void 0,
5948
- onBack,
5949
- ui
5950
- }
5951
- )
6128
+ isOver && /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(import_jsx_runtime73.Fragment, { children: [
6129
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
6130
+ ResultCard,
6131
+ {
6132
+ tone: solved ? "win" : failed ? "lose" : "neutral",
6133
+ title: solved ? t.solved : failed ? t.failed : ui.games.alreadyPlayedTitle,
6134
+ score: clientState?.score ?? result?.score ?? 0,
6135
+ detail: clientState ? t.detail(clientState.guessesUsed) : void 0,
6136
+ onBack,
6137
+ ui
6138
+ }
6139
+ ),
6140
+ (solved || failed) && clientState?.answer && /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)("div", { className: "ss-g-gxi-answer", "data-testid": "gxi-answer-reveal", children: [
6141
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "ss-g-gxi-answer-label", children: t.theAnswer }),
6142
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(CrestShield, { src: clientState.answer.crestUrl, name: clientState.answer.teamName, size: 32 }),
6143
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { className: "ss-g-gxi-answer-name", children: clientState.answer.teamName })
6144
+ ] })
6145
+ ] })
5952
6146
  ] }),
5953
6147
  !isOver && /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(FooterBar, { children: [
5954
6148
  query.length > 0 && filtered.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
@@ -5958,7 +6152,7 @@ function GuessTheXiGame({
5958
6152
  options: filtered.map((tm) => ({
5959
6153
  key: tm.teamId,
5960
6154
  content: /* @__PURE__ */ (0, import_jsx_runtime73.jsxs)(import_jsx_runtime73.Fragment, { children: [
5961
- /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(CrestShield, { name: tm.teamName, size: 28 }),
6155
+ /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(CrestShield, { src: tm.crestUrl, name: tm.teamName, size: 28 }),
5962
6156
  /* @__PURE__ */ (0, import_jsx_runtime73.jsx)("span", { children: tm.teamName })
5963
6157
  ] })
5964
6158
  })),
@@ -6106,6 +6300,8 @@ function DailyQuizGame({
6106
6300
  /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("h3", { className: "ss-g-dq-stem", children: current.stem }),
6107
6301
  /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("div", { className: "ss-g-dq-opts", children: current.options.map((opt, optIdx) => {
6108
6302
  const selected = optIdx === selectedIdx;
6303
+ const imagePath = current.optionImagePaths?.[optIdx] ?? void 0;
6304
+ const playerName = opt;
6109
6305
  return /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)(
6110
6306
  "button",
6111
6307
  {
@@ -6115,6 +6311,7 @@ function DailyQuizGame({
6115
6311
  disabled: submitting,
6116
6312
  onClick: () => handleSelect(current.index, optIdx),
6117
6313
  children: [
6314
+ current.optionImagePaths && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(PlayerAvatar, { name: playerName, imagePath, className: "ss-g-dq-opt-av" }),
6118
6315
  /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("span", { className: "ss-g-dq-badge", "aria-hidden": "true", children: selected ? /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(IconCheck, {}) : String.fromCharCode(65 + optIdx) }),
6119
6316
  /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(OptionName, { text: opt })
6120
6317
  ]
@@ -8386,6 +8583,16 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
8386
8583
  /* Labels stay on one line: Turkish "DAHA FAZLA" wrapped to two in a ~115px button. */
8387
8584
  .ss-g-hl-btns .ss-g-btn { font-weight: 800; font-size: 13px; letter-spacing: .02em; text-transform: uppercase; white-space: nowrap; }
8388
8585
  .ss-g-hl-btns .ss-g-btn svg { flex: none; }
8586
+ /* Phone-width cards: the info column is ~230px, too narrow for "DAHA FAZLA" + icon side by side.
8587
+ Drop the icons and tighten the type first; stack the buttons only when even that cannot fit. */
8588
+ .ss-g-hl-info { container: hlinfo / inline-size; }
8589
+ @container hlinfo (max-width: 280px) {
8590
+ .ss-g-hl-btns .ss-g-btn svg { display: none; }
8591
+ .ss-g-hl-btns .ss-g-btn { font-size: 12px; letter-spacing: 0; padding: 0 4px; }
8592
+ }
8593
+ @container hlinfo (max-width: 180px) {
8594
+ .ss-g-hl-btns { flex-direction: column; }
8595
+ }
8389
8596
  .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); }
8390
8597
  /* Clear the VS badge that straddles the seam between the two cards. */
8391
8598
  .ss-g-hl-pair > .ss-g-hl-card:first-child .ss-g-hl-info { padding-bottom: 24px; }
@@ -8422,11 +8629,20 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
8422
8629
  .ss-g-gxi-node { display: flex; flex-direction: column; align-items: center; gap: 3px; min-width: 0; max-width: 72px; }
8423
8630
  .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; }
8424
8631
  .ss-g-gxi-node[data-revealed] .ss-g-gxi-disc { border-color: var(--ss-w-accent); }
8632
+ .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); }
8425
8633
  .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; }
8426
8634
  .ss-g-gxi-pos--name { color: var(--ss-w-accent); text-transform: uppercase; }
8427
8635
  .ss-g-gxi-wrong { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
8428
8636
  .ss-g-gxi-wrong-l { font-size: 12px; color: var(--ss-g-muted); }
8429
8637
  .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); }
8638
+ /* u407: lineup photo \u2014 fills the 44px disc like the flag does */
8639
+ .ss-g-gxi-disc--photo { overflow: hidden; border: 2px solid var(--ss-w-accent); }
8640
+ .ss-g-gxi-disc--photo img { width: 100%; height: 100%; object-fit: cover; }
8641
+ .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); }
8642
+ /* u407: answer reveal \u2014 prominent row using theme tokens, works on dark/navy/light surfaces */
8643
+ .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); }
8644
+ .ss-g-gxi-answer-label { font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--ss-g-muted); flex: none; }
8645
+ .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; }
8430
8646
 
8431
8647
  /* ---- Daily Quiz (u393) ---- */
8432
8648
  .ss-g-dq-stem { font-family: var(--ss-g-font-display); font-weight: 700; font-size: 30px; line-height: 1.05; overflow-wrap: anywhere; }
@@ -8451,6 +8667,10 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
8451
8667
  .ss-g-dq-rq-opt--correct { background: var(--ss-g-correct); color: var(--ss-g-on-correct); }
8452
8668
  .ss-g-dq-rq-opt--wrong { background: var(--ss-g-wrong); color: var(--ss-g-on-correct); }
8453
8669
  .ss-g-dq-why { font-size: 13px; color: var(--ss-g-ink-2); }
8670
+ /* u407: player avatar in quiz option \u2014 centered in top half, badge at top-left unaffected */
8671
+ .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; }
8672
+ .ss-g-dq-opt-av img { width: 100%; height: 100%; object-fit: cover; }
8673
+ .ss-g-dq-opt-av .ss-w-av-initials { font-size: 11px; }
8454
8674
 
8455
8675
  /* ---- Career Path (u393) ---- */
8456
8676
  .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); }
@@ -8527,9 +8747,11 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
8527
8747
  /* While the search sheet is pinned below, the grid shrinks its rows to share the body with it
8528
8748
  instead of pushing the bottom row under the sheet. */
8529
8749
  .ss-g-btg-grid--fit { flex: 0 1 auto; min-height: 0; }
8530
- .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; }
8750
+ .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; }
8751
+ .ss-g-btg-colhdr[data-meta] { overflow-wrap: normal; word-break: normal; hyphens: none; font-size: 11px; letter-spacing: 0; }
8531
8752
  .ss-g-btg-colhdr svg { color: var(--ss-w-accent); flex: none; }
8532
- .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; }
8753
+ .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; }
8754
+ .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; }
8533
8755
  .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; }
8534
8756
  .ss-g-btg-cell:disabled { cursor: default; }
8535
8757
  .ss-g-btg-cell[data-state="active"] { border: 2px solid var(--ss-w-accent); background: var(--ss-g-warm); color: var(--ss-w-accent); }
@@ -8557,6 +8779,17 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
8557
8779
  .ss-g-btg-sheet .ss-g-opts { max-height: 160px; }
8558
8780
  .ss-g-btg-result-name { flex: 1; min-width: 0; font-weight: 700; font-size: 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
8559
8781
  .ss-g-btg-result-plus { color: var(--ss-w-accent); display: flex; }
8782
+ /* u407: cell avatar replaces Silhouette */
8783
+ .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; }
8784
+ .ss-g-btg-av img { width: 100%; height: 100%; object-fit: cover; }
8785
+ .ss-g-btg-av .ss-w-av-initials { font-size: 12px; }
8786
+ /* u407: coach photo in row/col header */
8787
+ .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; }
8788
+ .ss-g-btg-coach-av img { width: 100%; height: 100%; object-fit: cover; }
8789
+ /* u407: country flag emoji in header \u2014 sized to match other header icons */
8790
+ .ss-g-btg-hdr-flag { font-size: 20px; line-height: 1; flex: none; }
8791
+ /* u407: club crest in col/row header */
8792
+ .ss-g-btg-colhdr .ss-g-crest, .ss-g-btg-rowhdr .ss-g-crest { width: 28px; height: 28px; flex: none; }
8560
8793
 
8561
8794
  /* \u2500\u2500 Starting XI (u393) \u2500\u2500 */
8562
8795
  .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); }