@sensiblestats/widget-react 0.54.0 → 0.56.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/styles.css CHANGED
@@ -914,7 +914,24 @@
914
914
  .ss-w-tile-chip--fun { color: var(--ss-w-faint); background: var(--ss-w-bubble); border: 1px solid var(--ss-w-line); }
915
915
 
916
916
  /* Game screen host: back-row + placeholder body */
917
- .ss-w-gscreen { display: flex; flex-direction: column; gap: 0; }
917
+ /* Game screen fills the panel; the board scrolls internally and the search/input bar stays
918
+ pinned at the bottom so the fan never has to scroll to reach it. */
919
+ .ss-w-gscreen-wrap { flex: 1; min-height: 0; display: flex; flex-direction: column; padding: 14px; overflow: hidden; }
920
+ .ss-w-gscreen { flex: 1; min-height: 0; display: flex; flex-direction: column; gap: 0; }
921
+ .ss-w-gscreen > .ss-w-gxi, .ss-w-gscreen > .ss-w-gt, .ss-w-gscreen > .ss-w-cpath,
922
+ .ss-w-gscreen > .ss-w-btg, .ss-w-gscreen > .ss-w-hl { flex: 1; min-height: 0; }
923
+ /* Scrollable board + guess-history region. */
924
+ .ss-w-gscroll { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; display: flex; flex-direction: column; gap: 10px; padding-bottom: 2px; }
925
+ /* Bottom-pinned bar (search input / action). */
926
+ .ss-w-gpin { flex-shrink: 0; padding-top: 10px; }
927
+ /* Heads stay put above the scroll region. */
928
+ .ss-w-gxi-head, .ss-w-gt-head, .ss-w-cpath-head, .ss-w-btg-head { flex-shrink: 0; }
929
+ /* Mystery Tiger explainer key (✓ / ▲ / ▼). */
930
+ .ss-w-gt-key { white-space: nowrap; }
931
+ .ss-w-gt-key b { font-weight: 800; color: var(--ss-w-ink); }
932
+ .ss-w-gt-key-ok { color: var(--ss-w-correct) !important; }
933
+ /* Higher or Lower terminal score unit. */
934
+ .ss-w-hl-over-unit { font-size: 14px; font-weight: 700; color: var(--ss-w-faint); }
918
935
  .ss-w-gscreen-back { display: inline-flex; align-items: center; gap: 5px; background: none; border: none; color: var(--ss-w-accent); font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; padding: 6px 0 10px; align-self: flex-start; }
919
936
  .ss-w-gscreen-back-arrow { font-size: 11px; font-weight: 700; }
920
937
  .ss-w-gscreen-body { flex: 1; display: flex; align-items: center; justify-content: center; padding: 40px 16px; color: var(--ss-w-faint); font-size: 13px; text-align: center; }
@@ -968,7 +985,9 @@
968
985
  .ss-w-gtta-i { width: 100%; box-sizing: border-box; padding: 9px 12px; border-radius: 10px; border: 1.5px solid var(--ss-w-line); background: var(--ss-w-panel); color: var(--ss-w-ink); font: inherit; font-size: 13px; outline: none; transition: border-color .12s; }
969
986
  .ss-w-gtta-i:focus { border-color: var(--ss-w-accent); }
970
987
  .ss-w-gtta-i:disabled { opacity: .5; cursor: not-allowed; }
971
- .ss-w-gtta-drop { position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 10; background: var(--ss-w-panel); border: 1px solid var(--ss-w-line); border-radius: 10px; max-height: 180px; overflow-y: auto; box-shadow: 0 4px 16px rgba(0,0,0,.12); }
988
+ /* Opens UPWARD (bottom-anchored) because the input is pinned to the panel's bottom edge — a
989
+ downward menu would be clipped off-screen. */
990
+ .ss-w-gtta-drop { position: absolute; left: 0; right: 0; bottom: calc(100% + 4px); top: auto; z-index: 10; background: var(--ss-w-panel); border: 1px solid var(--ss-w-line); border-radius: 10px; max-height: 200px; overflow-y: auto; box-shadow: 0 -4px 16px rgba(0,0,0,.16); }
972
991
  .ss-w-gtta-opt { padding: 9px 12px; font-size: 13px; cursor: pointer; color: var(--ss-w-ink); border-bottom: 1px solid var(--ss-w-line); }
973
992
  .ss-w-gtta-opt:last-child { border-bottom: none; }
974
993
  .ss-w-gtta-opt:hover { background: var(--ss-w-bubble); }
@@ -980,10 +999,7 @@
980
999
  /* Guess rows — one labelled block per guess */
981
1000
  .ss-w-gtrows { display: flex; flex-direction: column; gap: 8px; }
982
1001
  /* First-load legend (empty state) */
983
- .ss-w-gt-legend { display: flex; flex-direction: column; gap: 8px; }
984
- .ss-w-gt-legend-lead { font-size: 11.5px; color: var(--ss-w-faint); line-height: 1.35; }
985
- .ss-w-gtile--legend { background: var(--ss-w-bubble); border: 1px dashed var(--ss-w-line); color: var(--ss-w-faint); }
986
- .ss-w-gtile--legend .ss-w-gtile-lab { opacity: .9; }
1002
+ .ss-w-gt-lead { font-size: 11.5px; color: var(--ss-w-faint); line-height: 1.4; }
987
1003
  .ss-w-gtguess { display: flex; flex-direction: column; gap: 4px; }
988
1004
  .ss-w-gtguess-nm { font-size: 11px; font-weight: 600; color: var(--ss-w-faint); }
989
1005
  .ss-w-gtrow { display: grid; grid-template-columns: repeat(5, 1fr); gap: 5px; }
@@ -1102,8 +1118,10 @@
1102
1118
  .ss-w-btg-cell--correct { background: color-mix(in srgb, var(--ss-w-correct) 14%, var(--ss-w-panel)); border-color: color-mix(in srgb, var(--ss-w-correct) 35%, var(--ss-w-line)); }
1103
1119
  .ss-w-btg-cell--wrong { background: color-mix(in srgb, var(--ss-w-wrong) 10%, var(--ss-w-panel)); }
1104
1120
  .ss-w-btg-cell--active { border-color: var(--ss-w-accent); }
1105
- .ss-w-btg-cell-score { font-size: 14px; font-weight: 800; color: var(--ss-w-ink); font-variant-numeric: tabular-nums; }
1106
- .ss-w-btg-cell-check { font-size: 12px; color: var(--ss-w-correct); line-height: 1; }
1121
+ .ss-w-btg-cell-nm { font-size: 8.5px; font-weight: 600; line-height: 1.05; color: var(--ss-w-ink); text-align: center; max-width: 100%; padding: 0 2px; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
1122
+ .ss-w-btg-cell-score { font-size: 12px; font-weight: 800; color: var(--ss-w-accent); font-variant-numeric: tabular-nums; }
1123
+ .ss-w-btg-cell--correct .ss-w-btg-cell-score { color: var(--ss-w-correct); }
1124
+ .ss-w-btg-cell-check { color: var(--ss-w-correct); line-height: 1; }
1107
1125
  .ss-w-btg-cell-empty { font-size: 16px; color: var(--ss-w-faint); }
1108
1126
  /* Scoped search sheet: slides up over the grid */
1109
1127
  .ss-w-btg-sheet { display: flex; flex-direction: column; gap: 10px; padding: 12px; background: var(--ss-w-panel); border: 1.5px solid var(--ss-w-line); border-radius: 14px; box-shadow: 0 4px 20px rgba(0,0,0,.1); }
@@ -1125,12 +1143,21 @@
1125
1143
  /* Pitch: a flag per slot laid out in formation rows on a green field. A real min-height plus
1126
1144
  space-between distributes the formation lines top→bottom like a pitch (GK at the back, forwards
1127
1145
  forward); yard-line stripes reinforce the read. Without a height the lines collapse together. */
1128
- .ss-w-gxi-pitch { display: flex; flex-direction: column; justify-content: space-between; gap: 8px; min-height: 300px; padding: 18px 10px; border-radius: 14px; border: 1px solid color-mix(in srgb, var(--ss-w-correct) 22%, var(--ss-w-line));
1146
+ /* A football pitch is grass-green regardless of the operator accent, so the field uses fixed
1147
+ green values (not --ss-w-correct, which is a muted per-operator token that vanished on dark
1148
+ themes) plus visible horizontal yard-lines and a brighter halfway line. */
1149
+ .ss-w-gxi-pitch { position: relative; display: flex; flex-direction: column; justify-content: space-between; gap: 6px; min-height: 210px; padding: 14px 10px; border-radius: 14px; border: 1px solid rgba(46, 160, 86, .38);
1129
1150
  background:
1130
- linear-gradient(180deg, color-mix(in srgb, var(--ss-w-correct) 12%, var(--ss-w-panel)), color-mix(in srgb, var(--ss-w-correct) 4%, var(--ss-w-panel))),
1131
- repeating-linear-gradient(180deg, transparent 0 40px, color-mix(in srgb, var(--ss-w-ink) 4%, transparent) 40px 80px); }
1132
- .ss-w-gxi-prow { display: flex; justify-content: center; align-items: center; gap: 14px; }
1133
- .ss-w-gxi-flag { width: 36px; height: 36px; flex: none; border-radius: 50%; display: grid; place-items: center; font-size: 20px; line-height: 1; background: var(--ss-w-panel); border: 1px solid var(--ss-w-line); box-shadow: 0 1px 3px rgba(0,0,0,.14); overflow: hidden; }
1151
+ linear-gradient(180deg, rgba(46, 160, 86, .015) 0, rgba(46, 160, 86, .015) 49.5%, rgba(255,255,255,.14) 49.5%, rgba(255,255,255,.14) 50.5%, rgba(46, 160, 86, .015) 50.5%),
1152
+ repeating-linear-gradient(180deg, transparent 0 31px, rgba(255,255,255,.045) 31px 32px),
1153
+ linear-gradient(180deg, rgba(46, 160, 86, .28), rgba(38, 132, 71, .16)); }
1154
+ .ss-w-gxi-prow { display: flex; justify-content: center; align-items: flex-start; gap: 12px; }
1155
+ .ss-w-gxi-slot { display: flex; flex-direction: column; align-items: center; gap: 2px; width: 46px; }
1156
+ .ss-w-gxi-flag { width: 32px; height: 32px; flex: none; border-radius: 50%; display: grid; place-items: center; font-size: 17px; line-height: 1; background: rgba(9, 12, 10, .55); border: 1px solid rgba(255,255,255,.16); box-shadow: 0 1px 3px rgba(0,0,0,.3); overflow: hidden; }
1157
+ /* A slot whose player has been revealed by a wrong guess. */
1158
+ .ss-w-gxi-flag--revealed { border-color: var(--ss-w-accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--ss-w-accent) 45%, transparent); }
1159
+ .ss-w-gxi-flag-lab { font-size: 8px; line-height: 1.05; font-weight: 700; text-align: center; color: var(--ss-w-accent); max-width: 46px; word-break: break-word; }
1160
+ .ss-w-gxi-revnote { font-size: 11px; color: var(--ss-w-faint); }
1134
1161
  /* Wrong-guess trail */
1135
1162
  .ss-w-gxi-wrong { display: flex; flex-wrap: wrap; gap: 6px; }
1136
1163
  .ss-w-gxi-wrong-pill { font-size: 11px; font-weight: 600; padding: 3px 9px; border-radius: 999px; background: color-mix(in srgb, var(--ss-w-wrong) 10%, var(--ss-w-panel)); border: 1px solid var(--ss-w-line); color: var(--ss-w-faint); text-decoration: line-through; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sensiblestats/widget-react",
3
- "version": "0.54.0",
3
+ "version": "0.56.0",
4
4
  "description": "Embeddable SensibleStats chat widget for React.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",