@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/dist/index.js
CHANGED
|
@@ -129,7 +129,10 @@ var STRINGS = {
|
|
|
129
129
|
dialName: "Set the numbers and Build a combo",
|
|
130
130
|
maxPriceRow: "{count} picks, max {price}",
|
|
131
131
|
minPriceRow: "Picks from {price} up",
|
|
132
|
-
comboRow: "
|
|
132
|
+
comboRow: "Combo of {legs} paying {total}",
|
|
133
|
+
bigComboRow: "Total {total} with {legs} matches",
|
|
134
|
+
readyCount: (n) => `${n} ready`,
|
|
135
|
+
readyAt: (total) => `ready at ${total.toFixed(2)}`,
|
|
133
136
|
maxPriceDisplay: (count, price) => `${count} picks, max ${price.toFixed(2)}`,
|
|
134
137
|
maxPriceMessage: (count, price) => `Show me ${count} picks priced at ${price.toFixed(2)} or less.`,
|
|
135
138
|
minPriceDisplay: (count, price) => `${count} picks from ${price.toFixed(2)} up`,
|
|
@@ -143,7 +146,9 @@ var STRINGS = {
|
|
|
143
146
|
matchesLabel: "Matches",
|
|
144
147
|
fewerMatches: "Fewer matches",
|
|
145
148
|
moreMatches: "More matches",
|
|
146
|
-
|
|
149
|
+
maxPriceName: "Max price",
|
|
150
|
+
minPriceName: "Lowest price",
|
|
151
|
+
notToday: " \xB7 not today",
|
|
147
152
|
changeCombo: "Change total or matches"
|
|
148
153
|
},
|
|
149
154
|
games: {
|
|
@@ -459,6 +464,9 @@ var STRINGS = {
|
|
|
459
464
|
maxPriceRow: "{count} se\xE7im, en fazla {price}",
|
|
460
465
|
minPriceRow: "{price} ve \xFCzeri se\xE7imler",
|
|
461
466
|
comboRow: "Yakla\u015F\u0131k {total} oranl\u0131 {legs} ma\xE7l\u0131k kombin",
|
|
467
|
+
bigComboRow: "{legs} ma\xE7la toplam {total}",
|
|
468
|
+
readyCount: (n) => `${n} haz\u0131r`,
|
|
469
|
+
readyAt: (total) => `${total.toFixed(2)} ile haz\u0131r`,
|
|
462
470
|
maxPriceDisplay: (count, price) => `${count} se\xE7im, en fazla ${price.toFixed(2)}`,
|
|
463
471
|
maxPriceMessage: (count, price) => `${price.toFixed(2)} veya alt\u0131 oranl\u0131 ${count} se\xE7im g\xF6ster.`,
|
|
464
472
|
minPriceDisplay: (count, price) => `${count} se\xE7im, ${price.toFixed(2)} ve \xFCzeri`,
|
|
@@ -472,7 +480,9 @@ var STRINGS = {
|
|
|
472
480
|
matchesLabel: "Ma\xE7 say\u0131s\u0131",
|
|
473
481
|
fewerMatches: "Daha az ma\xE7",
|
|
474
482
|
moreMatches: "Daha fazla ma\xE7",
|
|
475
|
-
|
|
483
|
+
maxPriceName: "En y\xFCksek oran",
|
|
484
|
+
minPriceName: "En d\xFC\u015F\xFCk oran",
|
|
485
|
+
notToday: " \xB7 bug\xFCn yok",
|
|
476
486
|
changeCombo: "Toplam\u0131 veya ma\xE7lar\u0131 de\u011Fi\u015Ftir"
|
|
477
487
|
},
|
|
478
488
|
games: {
|
|
@@ -2845,11 +2855,6 @@ function comboLegChoices(grid) {
|
|
|
2845
2855
|
for (let n = MIN_COMBO_LEGS; n <= max; n++) out.push(n);
|
|
2846
2856
|
return out;
|
|
2847
2857
|
}
|
|
2848
|
-
function cycle(values, current) {
|
|
2849
|
-
if (values.length === 0) return current;
|
|
2850
|
-
const i = values.findIndex((v) => samePrice(v, current));
|
|
2851
|
-
return values[(i + 1) % values.length] ?? current;
|
|
2852
|
-
}
|
|
2853
2858
|
function startValue(values, preferred) {
|
|
2854
2859
|
return values.find((v) => samePrice(v, preferred)) ?? values[0] ?? preferred;
|
|
2855
2860
|
}
|
|
@@ -8677,8 +8682,15 @@ function fillTemplate(template, slots) {
|
|
|
8677
8682
|
return /* @__PURE__ */ jsx90(Fragment20, { children: key !== void 0 && key in slots ? slots[key] : part }, i);
|
|
8678
8683
|
});
|
|
8679
8684
|
}
|
|
8680
|
-
function
|
|
8681
|
-
|
|
8685
|
+
function NumberSelect({ current, choices: choices2, label, notToday, lockEmpty = true, onChoose }) {
|
|
8686
|
+
const selected = Math.max(0, choices2.findIndex((c) => c.text === current));
|
|
8687
|
+
return /* @__PURE__ */ jsxs75("span", { className: "ss-w-tool-num", children: [
|
|
8688
|
+
/* @__PURE__ */ jsx90("span", { className: "ss-w-tool-num-size", "aria-hidden": "true", children: current }),
|
|
8689
|
+
/* @__PURE__ */ jsx90("select", { className: "ss-w-tool-num-select", "aria-label": label, value: String(selected), onChange: (e) => {
|
|
8690
|
+
const c = choices2[Number(e.target.value)];
|
|
8691
|
+
if (c) onChoose(c.value);
|
|
8692
|
+
}, children: choices2.map((c, i) => /* @__PURE__ */ jsx90("option", { value: String(i), disabled: lockEmpty && !c.available && i !== selected, children: c.available ? c.text : `${c.text}${notToday}` }, i)) })
|
|
8693
|
+
] });
|
|
8682
8694
|
}
|
|
8683
8695
|
function SendButton({ label, display, disabled, onClick }) {
|
|
8684
8696
|
return /* @__PURE__ */ jsx90("button", { type: "button", className: "ss-w-tool-send", "aria-label": `${label}: ${display}`, disabled, onClick, children: label });
|
|
@@ -8709,7 +8721,21 @@ function ComboPreview({ cell, formatKickoff }) {
|
|
|
8709
8721
|
function Unavailable({ text }) {
|
|
8710
8722
|
return /* @__PURE__ */ jsx90("p", { className: "ss-w-tool-unavailable", children: text });
|
|
8711
8723
|
}
|
|
8712
|
-
function
|
|
8724
|
+
function AskRow({ icon, ask, ready, send }) {
|
|
8725
|
+
return /* @__PURE__ */ jsxs75("section", { className: "ss-w-tool-row ss-w-tool-row--ask", children: [
|
|
8726
|
+
/* @__PURE__ */ jsx90("span", { className: "ss-w-tool-icon", "aria-hidden": "true", children: icon }),
|
|
8727
|
+
/* @__PURE__ */ jsxs75("div", { className: "ss-w-tool-main", children: [
|
|
8728
|
+
/* @__PURE__ */ jsx90("p", { className: "ss-w-tool-ask", children: ask }),
|
|
8729
|
+
ready ? /* @__PURE__ */ jsx90("span", { className: "ss-w-tool-ready", children: ready }) : null
|
|
8730
|
+
] }),
|
|
8731
|
+
send
|
|
8732
|
+
] });
|
|
8733
|
+
}
|
|
8734
|
+
function RoundSend({ label, display, disabled, onClick }) {
|
|
8735
|
+
return /* @__PURE__ */ jsx90("button", { type: "button", className: "ss-w-tool-go", "aria-label": `${label}: ${display}`, disabled, onClick, children: /* @__PURE__ */ jsx90(SendIcon, {}) });
|
|
8736
|
+
}
|
|
8737
|
+
var BIG_COMBO = { total: 50, legs: 6 };
|
|
8738
|
+
function SetNumbersTool({ grid, strings, streaming, onSend, onClose }) {
|
|
8713
8739
|
const limits = singlesLimits(grid);
|
|
8714
8740
|
const floors = singlesFloors(grid);
|
|
8715
8741
|
const totals = comboTotals(grid);
|
|
@@ -8720,64 +8746,106 @@ function SetNumbersTool({ grid, strings, streaming, formatKickoff, onSend, onClo
|
|
|
8720
8746
|
const [start] = useState41(() => startCombo(grid, totals, legChoices, START.comboTotal, START.comboLegs));
|
|
8721
8747
|
const [total, setTotal] = useState41(start.total);
|
|
8722
8748
|
const [legs, setLegs] = useState41(start.legs);
|
|
8749
|
+
const [bigStart] = useState41(() => startCombo(grid, totals, legChoices, BIG_COMBO.total, BIG_COMBO.legs));
|
|
8750
|
+
const [bigTotal, setBigTotal] = useState41(bigStart.total);
|
|
8751
|
+
const [bigLegs, setBigLegs] = useState41(bigStart.legs);
|
|
8723
8752
|
const [announcement, setAnnouncement] = useState41("");
|
|
8724
8753
|
const maxCell = findSingles(grid.singles, maxPrice, count);
|
|
8725
8754
|
const minCell = findSingles(grid.singlesFrom, minPrice, count);
|
|
8726
8755
|
const comboCell = findCombo(grid, total, legs);
|
|
8756
|
+
const bigCell = findCombo(grid, bigTotal, bigLegs);
|
|
8727
8757
|
const announce = (display, available) => setAnnouncement(available ? display : `${display}. ${strings.unavailable}`);
|
|
8728
|
-
const
|
|
8729
|
-
const v = cycle(limits, maxPrice);
|
|
8758
|
+
const chooseMax = (v) => {
|
|
8730
8759
|
setMaxPrice(v);
|
|
8731
8760
|
announce(strings.maxPriceDisplay(count, v), !!findSingles(grid.singles, v, count));
|
|
8732
8761
|
};
|
|
8733
|
-
const
|
|
8734
|
-
const v = cycle(floors, minPrice);
|
|
8762
|
+
const chooseMin = (v) => {
|
|
8735
8763
|
setMinPrice(v);
|
|
8736
8764
|
announce(strings.minPriceDisplay(count, v), !!findSingles(grid.singlesFrom, v, count));
|
|
8737
8765
|
};
|
|
8738
|
-
const
|
|
8739
|
-
const v = cycle(legChoices, legs);
|
|
8766
|
+
const chooseLegs = (v) => {
|
|
8740
8767
|
setLegs(v);
|
|
8741
8768
|
announce(strings.comboDisplay(v, total), !!findCombo(grid, total, v));
|
|
8742
8769
|
};
|
|
8743
|
-
const
|
|
8744
|
-
const v = cycle(totals, total);
|
|
8770
|
+
const chooseTotal = (v) => {
|
|
8745
8771
|
const l = legsForTotal(grid, v, legs);
|
|
8746
8772
|
setTotal(v);
|
|
8747
8773
|
setLegs(l);
|
|
8748
8774
|
announce(strings.comboDisplay(l, v), !!findCombo(grid, v, l));
|
|
8749
8775
|
};
|
|
8776
|
+
const chooseBigLegs = (v) => {
|
|
8777
|
+
setBigLegs(v);
|
|
8778
|
+
announce(strings.comboDisplay(v, bigTotal), !!findCombo(grid, bigTotal, v));
|
|
8779
|
+
};
|
|
8780
|
+
const chooseBigTotal = (v) => {
|
|
8781
|
+
const l = legsForTotal(grid, v, bigLegs);
|
|
8782
|
+
setBigTotal(v);
|
|
8783
|
+
setBigLegs(l);
|
|
8784
|
+
announce(strings.comboDisplay(l, v), !!findCombo(grid, v, l));
|
|
8785
|
+
};
|
|
8786
|
+
const maxChoices = limits.map((v) => ({ value: v, text: v.toFixed(2), available: !!findSingles(grid.singles, v, count) }));
|
|
8787
|
+
const minChoices = floors.map((v) => ({ value: v, text: v.toFixed(2), available: !!findSingles(grid.singlesFrom, v, count) }));
|
|
8788
|
+
const totalChoices = totals.map((v) => ({ value: v, text: v.toFixed(1), available: legChoices.some((n) => !!findCombo(grid, v, n)) }));
|
|
8789
|
+
const legChoicesFor = (t) => legChoices.map((n) => ({ value: n, text: String(n), available: !!findCombo(grid, t, n) }));
|
|
8790
|
+
const singlesReady = (cell) => cell ? strings.readyCount(cell.picks.length) : strings.unavailable;
|
|
8791
|
+
const comboReady = (cell) => cell ? strings.readyAt(cell.combo.total) : strings.unavailable;
|
|
8750
8792
|
return /* @__PURE__ */ jsxs75(PresetToolModal, { title: strings.setNumbers, closeLabel: strings.close, onClose, children: [
|
|
8751
|
-
/* @__PURE__ */
|
|
8752
|
-
|
|
8753
|
-
|
|
8754
|
-
|
|
8755
|
-
|
|
8756
|
-
|
|
8757
|
-
|
|
8758
|
-
|
|
8759
|
-
|
|
8760
|
-
|
|
8761
|
-
|
|
8762
|
-
|
|
8763
|
-
|
|
8764
|
-
|
|
8765
|
-
|
|
8766
|
-
|
|
8767
|
-
|
|
8768
|
-
|
|
8769
|
-
|
|
8770
|
-
|
|
8771
|
-
|
|
8772
|
-
|
|
8773
|
-
|
|
8774
|
-
|
|
8775
|
-
|
|
8776
|
-
|
|
8777
|
-
|
|
8778
|
-
|
|
8779
|
-
|
|
8780
|
-
|
|
8793
|
+
/* @__PURE__ */ jsx90(
|
|
8794
|
+
AskRow,
|
|
8795
|
+
{
|
|
8796
|
+
icon: "\u{1F3AF}",
|
|
8797
|
+
ask: fillTemplate(strings.maxPriceRow, {
|
|
8798
|
+
count: String(count),
|
|
8799
|
+
price: /* @__PURE__ */ jsx90(NumberSelect, { current: maxPrice.toFixed(2), choices: maxChoices, label: strings.maxPriceName, notToday: strings.notToday, onChoose: chooseMax })
|
|
8800
|
+
}),
|
|
8801
|
+
ready: singlesReady(maxCell),
|
|
8802
|
+
send: /* @__PURE__ */ jsx90(RoundSend, { label: strings.send, display: strings.maxPriceDisplay(count, maxPrice), disabled: !maxCell || streaming, onClick: () => {
|
|
8803
|
+
if (maxCell) onSend(maxPriceAsk(maxCell, strings));
|
|
8804
|
+
} })
|
|
8805
|
+
}
|
|
8806
|
+
),
|
|
8807
|
+
/* @__PURE__ */ jsx90(
|
|
8808
|
+
AskRow,
|
|
8809
|
+
{
|
|
8810
|
+
icon: "\u{1F4C8}",
|
|
8811
|
+
ask: fillTemplate(strings.minPriceRow, {
|
|
8812
|
+
count: String(count),
|
|
8813
|
+
price: /* @__PURE__ */ jsx90(NumberSelect, { current: minPrice.toFixed(2), choices: minChoices, label: strings.minPriceName, notToday: strings.notToday, onChoose: chooseMin })
|
|
8814
|
+
}),
|
|
8815
|
+
ready: singlesReady(minCell),
|
|
8816
|
+
send: /* @__PURE__ */ jsx90(RoundSend, { label: strings.send, display: strings.minPriceDisplay(count, minPrice), disabled: !minCell || streaming, onClick: () => {
|
|
8817
|
+
if (minCell) onSend(minPriceAsk(minCell, strings));
|
|
8818
|
+
} })
|
|
8819
|
+
}
|
|
8820
|
+
),
|
|
8821
|
+
/* @__PURE__ */ jsx90(
|
|
8822
|
+
AskRow,
|
|
8823
|
+
{
|
|
8824
|
+
icon: "\u2728",
|
|
8825
|
+
ask: fillTemplate(strings.comboRow, {
|
|
8826
|
+
legs: /* @__PURE__ */ jsx90(NumberSelect, { current: String(legs), choices: legChoicesFor(total), label: strings.matchesLabel, notToday: strings.notToday, lockEmpty: false, onChoose: chooseLegs }),
|
|
8827
|
+
total: /* @__PURE__ */ jsx90(NumberSelect, { current: total.toFixed(1), choices: totalChoices, label: strings.totalLabel, notToday: strings.notToday, onChoose: chooseTotal })
|
|
8828
|
+
}),
|
|
8829
|
+
ready: comboReady(comboCell),
|
|
8830
|
+
send: /* @__PURE__ */ jsx90(RoundSend, { label: strings.send, display: strings.comboDisplay(legs, total), disabled: !comboCell || streaming, onClick: () => {
|
|
8831
|
+
if (comboCell) onSend(comboAsk(comboCell, strings));
|
|
8832
|
+
} })
|
|
8833
|
+
}
|
|
8834
|
+
),
|
|
8835
|
+
/* @__PURE__ */ jsx90(
|
|
8836
|
+
AskRow,
|
|
8837
|
+
{
|
|
8838
|
+
icon: "\u{1F3C6}",
|
|
8839
|
+
ask: fillTemplate(strings.bigComboRow, {
|
|
8840
|
+
legs: /* @__PURE__ */ jsx90(NumberSelect, { current: String(bigLegs), choices: legChoicesFor(bigTotal), label: strings.matchesLabel, notToday: strings.notToday, lockEmpty: false, onChoose: chooseBigLegs }),
|
|
8841
|
+
total: /* @__PURE__ */ jsx90(NumberSelect, { current: bigTotal.toFixed(1), choices: totalChoices, label: strings.totalLabel, notToday: strings.notToday, onChoose: chooseBigTotal })
|
|
8842
|
+
}),
|
|
8843
|
+
ready: comboReady(bigCell),
|
|
8844
|
+
send: /* @__PURE__ */ jsx90(RoundSend, { label: strings.send, display: strings.comboDisplay(bigLegs, bigTotal), disabled: !bigCell || streaming, onClick: () => {
|
|
8845
|
+
if (bigCell) onSend(comboAsk(bigCell, strings));
|
|
8846
|
+
} })
|
|
8847
|
+
}
|
|
8848
|
+
),
|
|
8781
8849
|
/* @__PURE__ */ jsx90("p", { className: "ss-w-vh", "aria-live": "polite", children: announcement })
|
|
8782
8850
|
] });
|
|
8783
8851
|
}
|
|
@@ -9052,7 +9120,7 @@ function ChatPanel({ controller, ui, slip, onDashboardTap, monitor, discovery, g
|
|
|
9052
9120
|
buttonRef: dialButtonRef
|
|
9053
9121
|
}
|
|
9054
9122
|
) : null,
|
|
9055
|
-
tool && presetGrid && onChatTab ? tool.kind === "numbers" ? /* @__PURE__ */ jsx91(SetNumbersTool, { grid: presetGrid, strings: ui.presets, streaming: state.isStreaming,
|
|
9123
|
+
tool && presetGrid && onChatTab ? tool.kind === "numbers" ? /* @__PURE__ */ jsx91(SetNumbersTool, { grid: presetGrid, strings: ui.presets, streaming: state.isStreaming, onSend: sendAsk, onClose: closeTool }) : /* @__PURE__ */ jsx91(BuildComboTool, { grid: presetGrid, strings: ui.presets, streaming: state.isStreaming, formatKickoff, initialTotal: tool.total, initialLegs: tool.legs, onSend: sendAsk, onClose: closeTool }) : null
|
|
9056
9124
|
] }),
|
|
9057
9125
|
monitor && discovery && monitor.activeTab === "today" && /* @__PURE__ */ jsx91(TodayPanel, { discovery, ui, monitor }),
|
|
9058
9126
|
monitor && monitor.activeTab === "following" && /* @__PURE__ */ jsx91(MatchesPanel, { monitor, ui, slip, onAsk: handleAsk }),
|
|
@@ -9543,7 +9611,13 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
|
|
|
9543
9611
|
.ss-w-tool-foot { flex: none; padding: 10px 14px 12px; border-top: 1px solid var(--ss-w-line); }
|
|
9544
9612
|
.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; }
|
|
9545
9613
|
.ss-w-tool-ask { font-size: 14px; font-weight: 650; line-height: 1.7; color: var(--ss-w-ink); overflow-wrap: anywhere; }
|
|
9546
|
-
.ss-w-tool-num { display: inline-block;
|
|
9614
|
+
.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); }
|
|
9615
|
+
.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; }
|
|
9616
|
+
.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; }
|
|
9617
|
+
.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; }
|
|
9618
|
+
.ss-w-tool-num-select:focus-visible { outline: 2px solid var(--ss-w-accent); outline-offset: 2px; }
|
|
9619
|
+
.ss-w-tool-num-select option { font-weight: 600; color: var(--ss-w-ink); background: var(--ss-w-panel); }
|
|
9620
|
+
.ss-w-tool-num-select option:disabled { color: var(--ss-w-faint); }
|
|
9547
9621
|
.ss-w-tool-picks { list-style: none; display: flex; flex-direction: column; gap: 4px; }
|
|
9548
9622
|
.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; }
|
|
9549
9623
|
.ss-w-tool-pick-match { grid-column: 1; font-weight: 650; color: var(--ss-w-ink); overflow-wrap: anywhere; }
|
|
@@ -9552,6 +9626,13 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
|
|
|
9552
9626
|
.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); }
|
|
9553
9627
|
.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; }
|
|
9554
9628
|
.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; }
|
|
9629
|
+
.ss-w-tool-row--ask { flex-direction: row; align-items: center; gap: 10px; border-left-width: 1px; }
|
|
9630
|
+
.ss-w-tool-icon { flex: none; font-size: 20px; line-height: 1; }
|
|
9631
|
+
.ss-w-tool-main { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 4px; }
|
|
9632
|
+
.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; }
|
|
9633
|
+
.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; }
|
|
9634
|
+
.ss-w-tool-go:disabled { color: var(--ss-w-faint); background: var(--ss-w-bubble); cursor: not-allowed; }
|
|
9635
|
+
.ss-w-tool-go:focus-visible { outline: 2px solid var(--ss-w-accent); outline-offset: 2px; }
|
|
9555
9636
|
.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; }
|
|
9556
9637
|
.ss-w-tool-send:disabled { color: var(--ss-w-faint); background: var(--ss-w-bubble); cursor: not-allowed; }
|
|
9557
9638
|
.ss-w-tool-foot .ss-w-tool-send { width: 100%; }
|