@sensiblestats/widget-react 0.72.1 → 0.73.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 +12 -0
- package/dist/index.cjs +132 -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 +132 -51
- package/dist/index.js.map +1 -1
- package/dist/styles.css +14 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @sensiblestats/widget-react
|
|
2
2
|
|
|
3
|
+
## 0.73.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Set the numbers: each row is now one sentence with its numbers, a "3 ready" or "ready at 4.97" line, and a round send button. The picks and combo legs no longer show inside the tool; they appear in the chat after the send. A fourth row offers a second combo that starts high ("Total 50.0 with 6 matches"). The English combo row reads "Combo of 3 paying 5.0".
|
|
8
|
+
|
|
9
|
+
## 0.72.2
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 77ecef1: Set the numbers: the numbers inside each sentence are now dropdowns instead of tap-to-cycle boxes, so it is clear they are a choice. Numbers with no picks today are marked "not today". Prices and totals with no picks cannot be chosen. A match count with no picks at the chosen total can be, and the row then says it is not available today.
|
|
14
|
+
|
|
3
15
|
## 0.72.1
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/dist/index.cjs
CHANGED
|
@@ -167,7 +167,10 @@ var STRINGS = {
|
|
|
167
167
|
dialName: "Set the numbers and Build a combo",
|
|
168
168
|
maxPriceRow: "{count} picks, max {price}",
|
|
169
169
|
minPriceRow: "Picks from {price} up",
|
|
170
|
-
comboRow: "
|
|
170
|
+
comboRow: "Combo of {legs} paying {total}",
|
|
171
|
+
bigComboRow: "Total {total} with {legs} matches",
|
|
172
|
+
readyCount: (n) => `${n} ready`,
|
|
173
|
+
readyAt: (total) => `ready at ${total.toFixed(2)}`,
|
|
171
174
|
maxPriceDisplay: (count, price) => `${count} picks, max ${price.toFixed(2)}`,
|
|
172
175
|
maxPriceMessage: (count, price) => `Show me ${count} picks priced at ${price.toFixed(2)} or less.`,
|
|
173
176
|
minPriceDisplay: (count, price) => `${count} picks from ${price.toFixed(2)} up`,
|
|
@@ -181,7 +184,9 @@ var STRINGS = {
|
|
|
181
184
|
matchesLabel: "Matches",
|
|
182
185
|
fewerMatches: "Fewer matches",
|
|
183
186
|
moreMatches: "More matches",
|
|
184
|
-
|
|
187
|
+
maxPriceName: "Max price",
|
|
188
|
+
minPriceName: "Lowest price",
|
|
189
|
+
notToday: " \xB7 not today",
|
|
185
190
|
changeCombo: "Change total or matches"
|
|
186
191
|
},
|
|
187
192
|
games: {
|
|
@@ -497,6 +502,9 @@ var STRINGS = {
|
|
|
497
502
|
maxPriceRow: "{count} se\xE7im, en fazla {price}",
|
|
498
503
|
minPriceRow: "{price} ve \xFCzeri se\xE7imler",
|
|
499
504
|
comboRow: "Yakla\u015F\u0131k {total} oranl\u0131 {legs} ma\xE7l\u0131k kombin",
|
|
505
|
+
bigComboRow: "{legs} ma\xE7la toplam {total}",
|
|
506
|
+
readyCount: (n) => `${n} haz\u0131r`,
|
|
507
|
+
readyAt: (total) => `${total.toFixed(2)} ile haz\u0131r`,
|
|
500
508
|
maxPriceDisplay: (count, price) => `${count} se\xE7im, en fazla ${price.toFixed(2)}`,
|
|
501
509
|
maxPriceMessage: (count, price) => `${price.toFixed(2)} veya alt\u0131 oranl\u0131 ${count} se\xE7im g\xF6ster.`,
|
|
502
510
|
minPriceDisplay: (count, price) => `${count} se\xE7im, ${price.toFixed(2)} ve \xFCzeri`,
|
|
@@ -510,7 +518,9 @@ var STRINGS = {
|
|
|
510
518
|
matchesLabel: "Ma\xE7 say\u0131s\u0131",
|
|
511
519
|
fewerMatches: "Daha az ma\xE7",
|
|
512
520
|
moreMatches: "Daha fazla ma\xE7",
|
|
513
|
-
|
|
521
|
+
maxPriceName: "En y\xFCksek oran",
|
|
522
|
+
minPriceName: "En d\xFC\u015F\xFCk oran",
|
|
523
|
+
notToday: " \xB7 bug\xFCn yok",
|
|
514
524
|
changeCombo: "Toplam\u0131 veya ma\xE7lar\u0131 de\u011Fi\u015Ftir"
|
|
515
525
|
},
|
|
516
526
|
games: {
|
|
@@ -2883,11 +2893,6 @@ function comboLegChoices(grid) {
|
|
|
2883
2893
|
for (let n = MIN_COMBO_LEGS; n <= max; n++) out.push(n);
|
|
2884
2894
|
return out;
|
|
2885
2895
|
}
|
|
2886
|
-
function cycle(values, current) {
|
|
2887
|
-
if (values.length === 0) return current;
|
|
2888
|
-
const i = values.findIndex((v) => samePrice(v, current));
|
|
2889
|
-
return values[(i + 1) % values.length] ?? current;
|
|
2890
|
-
}
|
|
2891
2896
|
function startValue(values, preferred) {
|
|
2892
2897
|
return values.find((v) => samePrice(v, preferred)) ?? values[0] ?? preferred;
|
|
2893
2898
|
}
|
|
@@ -8715,8 +8720,15 @@ function fillTemplate(template, slots) {
|
|
|
8715
8720
|
return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_react51.Fragment, { children: key !== void 0 && key in slots ? slots[key] : part }, i);
|
|
8716
8721
|
});
|
|
8717
8722
|
}
|
|
8718
|
-
function
|
|
8719
|
-
|
|
8723
|
+
function NumberSelect({ current, choices: choices2, label, notToday, lockEmpty = true, onChoose }) {
|
|
8724
|
+
const selected = Math.max(0, choices2.findIndex((c) => c.text === current));
|
|
8725
|
+
return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("span", { className: "ss-w-tool-num", children: [
|
|
8726
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "ss-w-tool-num-size", "aria-hidden": "true", children: current }),
|
|
8727
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("select", { className: "ss-w-tool-num-select", "aria-label": label, value: String(selected), onChange: (e) => {
|
|
8728
|
+
const c = choices2[Number(e.target.value)];
|
|
8729
|
+
if (c) onChoose(c.value);
|
|
8730
|
+
}, children: choices2.map((c, i) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("option", { value: String(i), disabled: lockEmpty && !c.available && i !== selected, children: c.available ? c.text : `${c.text}${notToday}` }, i)) })
|
|
8731
|
+
] });
|
|
8720
8732
|
}
|
|
8721
8733
|
function SendButton({ label, display, disabled, onClick }) {
|
|
8722
8734
|
return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("button", { type: "button", className: "ss-w-tool-send", "aria-label": `${label}: ${display}`, disabled, onClick, children: label });
|
|
@@ -8747,7 +8759,21 @@ function ComboPreview({ cell, formatKickoff }) {
|
|
|
8747
8759
|
function Unavailable({ text }) {
|
|
8748
8760
|
return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("p", { className: "ss-w-tool-unavailable", children: text });
|
|
8749
8761
|
}
|
|
8750
|
-
function
|
|
8762
|
+
function AskRow({ icon, ask, ready, send }) {
|
|
8763
|
+
return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("section", { className: "ss-w-tool-row ss-w-tool-row--ask", children: [
|
|
8764
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "ss-w-tool-icon", "aria-hidden": "true", children: icon }),
|
|
8765
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "ss-w-tool-main", children: [
|
|
8766
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("p", { className: "ss-w-tool-ask", children: ask }),
|
|
8767
|
+
ready ? /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "ss-w-tool-ready", children: ready }) : null
|
|
8768
|
+
] }),
|
|
8769
|
+
send
|
|
8770
|
+
] });
|
|
8771
|
+
}
|
|
8772
|
+
function RoundSend({ label, display, disabled, onClick }) {
|
|
8773
|
+
return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("button", { type: "button", className: "ss-w-tool-go", "aria-label": `${label}: ${display}`, disabled, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(SendIcon, {}) });
|
|
8774
|
+
}
|
|
8775
|
+
var BIG_COMBO = { total: 50, legs: 6 };
|
|
8776
|
+
function SetNumbersTool({ grid, strings, streaming, onSend, onClose }) {
|
|
8751
8777
|
const limits = singlesLimits(grid);
|
|
8752
8778
|
const floors = singlesFloors(grid);
|
|
8753
8779
|
const totals = comboTotals(grid);
|
|
@@ -8758,64 +8784,106 @@ function SetNumbersTool({ grid, strings, streaming, formatKickoff, onSend, onClo
|
|
|
8758
8784
|
const [start] = (0, import_react51.useState)(() => startCombo(grid, totals, legChoices, START.comboTotal, START.comboLegs));
|
|
8759
8785
|
const [total, setTotal] = (0, import_react51.useState)(start.total);
|
|
8760
8786
|
const [legs, setLegs] = (0, import_react51.useState)(start.legs);
|
|
8787
|
+
const [bigStart] = (0, import_react51.useState)(() => startCombo(grid, totals, legChoices, BIG_COMBO.total, BIG_COMBO.legs));
|
|
8788
|
+
const [bigTotal, setBigTotal] = (0, import_react51.useState)(bigStart.total);
|
|
8789
|
+
const [bigLegs, setBigLegs] = (0, import_react51.useState)(bigStart.legs);
|
|
8761
8790
|
const [announcement, setAnnouncement] = (0, import_react51.useState)("");
|
|
8762
8791
|
const maxCell = findSingles(grid.singles, maxPrice, count);
|
|
8763
8792
|
const minCell = findSingles(grid.singlesFrom, minPrice, count);
|
|
8764
8793
|
const comboCell = findCombo(grid, total, legs);
|
|
8794
|
+
const bigCell = findCombo(grid, bigTotal, bigLegs);
|
|
8765
8795
|
const announce = (display, available) => setAnnouncement(available ? display : `${display}. ${strings.unavailable}`);
|
|
8766
|
-
const
|
|
8767
|
-
const v = cycle(limits, maxPrice);
|
|
8796
|
+
const chooseMax = (v) => {
|
|
8768
8797
|
setMaxPrice(v);
|
|
8769
8798
|
announce(strings.maxPriceDisplay(count, v), !!findSingles(grid.singles, v, count));
|
|
8770
8799
|
};
|
|
8771
|
-
const
|
|
8772
|
-
const v = cycle(floors, minPrice);
|
|
8800
|
+
const chooseMin = (v) => {
|
|
8773
8801
|
setMinPrice(v);
|
|
8774
8802
|
announce(strings.minPriceDisplay(count, v), !!findSingles(grid.singlesFrom, v, count));
|
|
8775
8803
|
};
|
|
8776
|
-
const
|
|
8777
|
-
const v = cycle(legChoices, legs);
|
|
8804
|
+
const chooseLegs = (v) => {
|
|
8778
8805
|
setLegs(v);
|
|
8779
8806
|
announce(strings.comboDisplay(v, total), !!findCombo(grid, total, v));
|
|
8780
8807
|
};
|
|
8781
|
-
const
|
|
8782
|
-
const v = cycle(totals, total);
|
|
8808
|
+
const chooseTotal = (v) => {
|
|
8783
8809
|
const l = legsForTotal(grid, v, legs);
|
|
8784
8810
|
setTotal(v);
|
|
8785
8811
|
setLegs(l);
|
|
8786
8812
|
announce(strings.comboDisplay(l, v), !!findCombo(grid, v, l));
|
|
8787
8813
|
};
|
|
8814
|
+
const chooseBigLegs = (v) => {
|
|
8815
|
+
setBigLegs(v);
|
|
8816
|
+
announce(strings.comboDisplay(v, bigTotal), !!findCombo(grid, bigTotal, v));
|
|
8817
|
+
};
|
|
8818
|
+
const chooseBigTotal = (v) => {
|
|
8819
|
+
const l = legsForTotal(grid, v, bigLegs);
|
|
8820
|
+
setBigTotal(v);
|
|
8821
|
+
setBigLegs(l);
|
|
8822
|
+
announce(strings.comboDisplay(l, v), !!findCombo(grid, v, l));
|
|
8823
|
+
};
|
|
8824
|
+
const maxChoices = limits.map((v) => ({ value: v, text: v.toFixed(2), available: !!findSingles(grid.singles, v, count) }));
|
|
8825
|
+
const minChoices = floors.map((v) => ({ value: v, text: v.toFixed(2), available: !!findSingles(grid.singlesFrom, v, count) }));
|
|
8826
|
+
const totalChoices = totals.map((v) => ({ value: v, text: v.toFixed(1), available: legChoices.some((n) => !!findCombo(grid, v, n)) }));
|
|
8827
|
+
const legChoicesFor = (t) => legChoices.map((n) => ({ value: n, text: String(n), available: !!findCombo(grid, t, n) }));
|
|
8828
|
+
const singlesReady = (cell) => cell ? strings.readyCount(cell.picks.length) : strings.unavailable;
|
|
8829
|
+
const comboReady = (cell) => cell ? strings.readyAt(cell.combo.total) : strings.unavailable;
|
|
8788
8830
|
return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(PresetToolModal, { title: strings.setNumbers, closeLabel: strings.close, onClose, children: [
|
|
8789
|
-
/* @__PURE__ */ (0, import_jsx_runtime90.
|
|
8790
|
-
|
|
8791
|
-
|
|
8792
|
-
|
|
8793
|
-
|
|
8794
|
-
|
|
8795
|
-
|
|
8796
|
-
|
|
8797
|
-
|
|
8798
|
-
|
|
8799
|
-
|
|
8800
|
-
|
|
8801
|
-
|
|
8802
|
-
|
|
8803
|
-
|
|
8804
|
-
|
|
8805
|
-
|
|
8806
|
-
|
|
8807
|
-
|
|
8808
|
-
|
|
8809
|
-
|
|
8810
|
-
|
|
8811
|
-
|
|
8812
|
-
|
|
8813
|
-
|
|
8814
|
-
|
|
8815
|
-
|
|
8816
|
-
|
|
8817
|
-
|
|
8818
|
-
|
|
8831
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
|
|
8832
|
+
AskRow,
|
|
8833
|
+
{
|
|
8834
|
+
icon: "\u{1F3AF}",
|
|
8835
|
+
ask: fillTemplate(strings.maxPriceRow, {
|
|
8836
|
+
count: String(count),
|
|
8837
|
+
price: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(NumberSelect, { current: maxPrice.toFixed(2), choices: maxChoices, label: strings.maxPriceName, notToday: strings.notToday, onChoose: chooseMax })
|
|
8838
|
+
}),
|
|
8839
|
+
ready: singlesReady(maxCell),
|
|
8840
|
+
send: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(RoundSend, { label: strings.send, display: strings.maxPriceDisplay(count, maxPrice), disabled: !maxCell || streaming, onClick: () => {
|
|
8841
|
+
if (maxCell) onSend(maxPriceAsk(maxCell, strings));
|
|
8842
|
+
} })
|
|
8843
|
+
}
|
|
8844
|
+
),
|
|
8845
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
|
|
8846
|
+
AskRow,
|
|
8847
|
+
{
|
|
8848
|
+
icon: "\u{1F4C8}",
|
|
8849
|
+
ask: fillTemplate(strings.minPriceRow, {
|
|
8850
|
+
count: String(count),
|
|
8851
|
+
price: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(NumberSelect, { current: minPrice.toFixed(2), choices: minChoices, label: strings.minPriceName, notToday: strings.notToday, onChoose: chooseMin })
|
|
8852
|
+
}),
|
|
8853
|
+
ready: singlesReady(minCell),
|
|
8854
|
+
send: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(RoundSend, { label: strings.send, display: strings.minPriceDisplay(count, minPrice), disabled: !minCell || streaming, onClick: () => {
|
|
8855
|
+
if (minCell) onSend(minPriceAsk(minCell, strings));
|
|
8856
|
+
} })
|
|
8857
|
+
}
|
|
8858
|
+
),
|
|
8859
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
|
|
8860
|
+
AskRow,
|
|
8861
|
+
{
|
|
8862
|
+
icon: "\u2728",
|
|
8863
|
+
ask: fillTemplate(strings.comboRow, {
|
|
8864
|
+
legs: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(NumberSelect, { current: String(legs), choices: legChoicesFor(total), label: strings.matchesLabel, notToday: strings.notToday, lockEmpty: false, onChoose: chooseLegs }),
|
|
8865
|
+
total: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(NumberSelect, { current: total.toFixed(1), choices: totalChoices, label: strings.totalLabel, notToday: strings.notToday, onChoose: chooseTotal })
|
|
8866
|
+
}),
|
|
8867
|
+
ready: comboReady(comboCell),
|
|
8868
|
+
send: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(RoundSend, { label: strings.send, display: strings.comboDisplay(legs, total), disabled: !comboCell || streaming, onClick: () => {
|
|
8869
|
+
if (comboCell) onSend(comboAsk(comboCell, strings));
|
|
8870
|
+
} })
|
|
8871
|
+
}
|
|
8872
|
+
),
|
|
8873
|
+
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
|
|
8874
|
+
AskRow,
|
|
8875
|
+
{
|
|
8876
|
+
icon: "\u{1F3C6}",
|
|
8877
|
+
ask: fillTemplate(strings.bigComboRow, {
|
|
8878
|
+
legs: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(NumberSelect, { current: String(bigLegs), choices: legChoicesFor(bigTotal), label: strings.matchesLabel, notToday: strings.notToday, lockEmpty: false, onChoose: chooseBigLegs }),
|
|
8879
|
+
total: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(NumberSelect, { current: bigTotal.toFixed(1), choices: totalChoices, label: strings.totalLabel, notToday: strings.notToday, onChoose: chooseBigTotal })
|
|
8880
|
+
}),
|
|
8881
|
+
ready: comboReady(bigCell),
|
|
8882
|
+
send: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(RoundSend, { label: strings.send, display: strings.comboDisplay(bigLegs, bigTotal), disabled: !bigCell || streaming, onClick: () => {
|
|
8883
|
+
if (bigCell) onSend(comboAsk(bigCell, strings));
|
|
8884
|
+
} })
|
|
8885
|
+
}
|
|
8886
|
+
),
|
|
8819
8887
|
/* @__PURE__ */ (0, import_jsx_runtime90.jsx)("p", { className: "ss-w-vh", "aria-live": "polite", children: announcement })
|
|
8820
8888
|
] });
|
|
8821
8889
|
}
|
|
@@ -9090,7 +9158,7 @@ function ChatPanel({ controller, ui, slip, onDashboardTap, monitor, discovery, g
|
|
|
9090
9158
|
buttonRef: dialButtonRef
|
|
9091
9159
|
}
|
|
9092
9160
|
) : null,
|
|
9093
|
-
tool && presetGrid && onChatTab ? tool.kind === "numbers" ? /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(SetNumbersTool, { grid: presetGrid, strings: ui.presets, streaming: state.isStreaming,
|
|
9161
|
+
tool && presetGrid && onChatTab ? tool.kind === "numbers" ? /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(SetNumbersTool, { grid: presetGrid, strings: ui.presets, streaming: state.isStreaming, onSend: sendAsk, onClose: closeTool }) : /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(BuildComboTool, { grid: presetGrid, strings: ui.presets, streaming: state.isStreaming, formatKickoff, initialTotal: tool.total, initialLegs: tool.legs, onSend: sendAsk, onClose: closeTool }) : null
|
|
9094
9162
|
] }),
|
|
9095
9163
|
monitor && discovery && monitor.activeTab === "today" && /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(TodayPanel, { discovery, ui, monitor }),
|
|
9096
9164
|
monitor && monitor.activeTab === "following" && /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(MatchesPanel, { monitor, ui, slip, onAsk: handleAsk }),
|
|
@@ -9581,7 +9649,13 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
|
|
|
9581
9649
|
.ss-w-tool-foot { flex: none; padding: 10px 14px 12px; border-top: 1px solid var(--ss-w-line); }
|
|
9582
9650
|
.ss-w-tool-row { display: flex; flex-direction: column; gap: 8px; padding: 10px 11px; border: 1px solid var(--ss-w-line); border-left: 3px solid var(--ss-w-accent); border-radius: 12px; }
|
|
9583
9651
|
.ss-w-tool-ask { font-size: 14px; font-weight: 650; line-height: 1.7; color: var(--ss-w-ink); overflow-wrap: anywhere; }
|
|
9584
|
-
.ss-w-tool-num { display: inline-block;
|
|
9652
|
+
.ss-w-tool-num { position: relative; display: inline-block; vertical-align: middle; margin: 0 2px; font-variant-numeric: tabular-nums; font-weight: 800; color: var(--ss-w-accent); }
|
|
9653
|
+
.ss-w-tool-num-size { display: block; font-size: max(16px, 1em); user-select: none; -webkit-user-select: none; visibility: hidden; box-sizing: border-box; min-width: 44px; min-height: 32px; padding: 6px 26px 6px 10px; line-height: 1.3; white-space: pre; }
|
|
9654
|
+
.ss-w-tool-num-select { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; padding: 0 22px 0 10px; font: inherit; font-size: max(16px, 1em); font-variant-numeric: tabular-nums; font-weight: 800; color: var(--ss-w-accent); background-color: color-mix(in srgb, var(--ss-w-accent) 10%, var(--ss-w-panel)); border: 1.5px solid color-mix(in srgb, var(--ss-w-accent) 65%, var(--ss-w-line)); border-radius: 8px; cursor: pointer; appearance: none; -webkit-appearance: none; }
|
|
9655
|
+
.ss-w-tool-num::after { content: ""; position: absolute; right: 9px; top: 50%; width: 5px; height: 5px; margin-top: -4px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); pointer-events: none; }
|
|
9656
|
+
.ss-w-tool-num-select:focus-visible { outline: 2px solid var(--ss-w-accent); outline-offset: 2px; }
|
|
9657
|
+
.ss-w-tool-num-select option { font-weight: 600; color: var(--ss-w-ink); background: var(--ss-w-panel); }
|
|
9658
|
+
.ss-w-tool-num-select option:disabled { color: var(--ss-w-faint); }
|
|
9585
9659
|
.ss-w-tool-picks { list-style: none; display: flex; flex-direction: column; gap: 4px; }
|
|
9586
9660
|
.ss-w-tool-pick { display: grid; grid-template-columns: 1fr auto; column-gap: 8px; padding: 5px 8px; font-size: 12px; line-height: 1.35; background: var(--ss-w-bubble); border-radius: 8px; }
|
|
9587
9661
|
.ss-w-tool-pick-match { grid-column: 1; font-weight: 650; color: var(--ss-w-ink); overflow-wrap: anywhere; }
|
|
@@ -9590,6 +9664,13 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
|
|
|
9590
9664
|
.ss-w-tool-pick-price { grid-column: 2; grid-row: 1 / span 3; align-self: center; font-family: ui-monospace, monospace; font-variant-numeric: tabular-nums; font-size: 14px; font-weight: 800; color: var(--ss-w-accent); }
|
|
9591
9665
|
.ss-w-tool-math { padding: 6px 8px; font-family: ui-monospace, monospace; font-variant-numeric: tabular-nums; font-size: 13px; font-weight: 700; text-align: right; color: var(--ss-w-ink); background: color-mix(in srgb, var(--ss-w-accent) 9%, var(--ss-w-panel)); border-radius: 8px; overflow-wrap: anywhere; }
|
|
9592
9666
|
.ss-w-tool-unavailable { padding: 6px 8px; font-size: 12px; color: var(--ss-w-faint); border: 1px dashed var(--ss-w-line); border-radius: 8px; }
|
|
9667
|
+
.ss-w-tool-row--ask { flex-direction: row; align-items: center; gap: 10px; border-left-width: 1px; }
|
|
9668
|
+
.ss-w-tool-icon { flex: none; font-size: 20px; line-height: 1; }
|
|
9669
|
+
.ss-w-tool-main { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 4px; }
|
|
9670
|
+
.ss-w-tool-ready { padding: 2px 8px; font-size: 11.5px; font-weight: 650; color: var(--ss-w-accent); background: color-mix(in srgb, var(--ss-w-accent) 12%, transparent); border-radius: 10px; }
|
|
9671
|
+
.ss-w-tool-go { flex: none; width: 44px; height: 44px; display: grid; place-items: center; font-size: 17px; color: #fff; background: var(--ss-w-accent); border: none; border-radius: 50%; cursor: pointer; }
|
|
9672
|
+
.ss-w-tool-go:disabled { color: var(--ss-w-faint); background: var(--ss-w-bubble); cursor: not-allowed; }
|
|
9673
|
+
.ss-w-tool-go:focus-visible { outline: 2px solid var(--ss-w-accent); outline-offset: 2px; }
|
|
9593
9674
|
.ss-w-tool-send { align-self: flex-end; min-height: 40px; padding: 8px 18px; font: inherit; font-size: 13px; font-weight: 700; color: #fff; background: var(--ss-w-accent); border: none; border-radius: 20px; cursor: pointer; }
|
|
9594
9675
|
.ss-w-tool-send:disabled { color: var(--ss-w-faint); background: var(--ss-w-bubble); cursor: not-allowed; }
|
|
9595
9676
|
.ss-w-tool-foot .ss-w-tool-send { width: 100%; }
|