dsh-ds-balance 3.1.1 → 3.2.1
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/lib/client.js +78 -96
- package/lib/types/client/icons.d.ts +9 -9
- package/lib/types/client/sidebar/BalancePopover.d.ts +6 -6
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +32 -31
package/lib/client.js
CHANGED
|
@@ -2010,6 +2010,7 @@ var import_dsh_client_ui_primitives4 = require("@deepseek-ai/dsh-client-ui-primi
|
|
|
2010
2010
|
// src/client/sidebar/BalancePopover.module.css
|
|
2011
2011
|
var BalancePopover_default = {
|
|
2012
2012
|
panel: "BalancePopover_panel",
|
|
2013
|
+
body: "BalancePopover_body",
|
|
2013
2014
|
title: "BalancePopover_title",
|
|
2014
2015
|
titleMain: "BalancePopover_titleMain",
|
|
2015
2016
|
titleLabel: "BalancePopover_titleLabel",
|
|
@@ -2061,7 +2062,6 @@ function BalancePopover(props) {
|
|
|
2061
2062
|
cooldownSeconds,
|
|
2062
2063
|
configSlotWarning,
|
|
2063
2064
|
panelRef,
|
|
2064
|
-
style,
|
|
2065
2065
|
onRefresh,
|
|
2066
2066
|
onUseShown,
|
|
2067
2067
|
useShownDisabled,
|
|
@@ -2084,86 +2084,80 @@ function BalancePopover(props) {
|
|
|
2084
2084
|
const pluginsLabel = t(
|
|
2085
2085
|
pluginsAction?.reachesConfig === true ? "popover.action.openPluginConfig" : "popover.action.openPlugins"
|
|
2086
2086
|
);
|
|
2087
|
-
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
2088
|
-
"
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
"
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
}
|
|
2162
|
-
) })
|
|
2163
|
-
] })
|
|
2164
|
-
]
|
|
2165
|
-
}
|
|
2166
|
-
);
|
|
2087
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("section", { ref: panelRef, className: BalancePopover_default.panel, role: "dialog", "aria-label": t("popover.title"), children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("section", { className: BalancePopover_default.body, children: [
|
|
2088
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: BalancePopover_default.title, children: [
|
|
2089
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { className: BalancePopover_default.titleMain, children: [
|
|
2090
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
2091
|
+
"a",
|
|
2092
|
+
{
|
|
2093
|
+
className: BalancePopover_default.titleLabel,
|
|
2094
|
+
href: "https://platform.deepseek.com/usage",
|
|
2095
|
+
target: "_blank",
|
|
2096
|
+
rel: "noopener noreferrer",
|
|
2097
|
+
children: [
|
|
2098
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_dsh_client_ui_primitives4.FishLogo, { size: 14 }),
|
|
2099
|
+
t("popover.title")
|
|
2100
|
+
]
|
|
2101
|
+
}
|
|
2102
|
+
),
|
|
2103
|
+
sourceLabel === null ? null : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: BalancePopover_default.sourceLabel, title: sourceLabel, children: sourceLabel })
|
|
2104
|
+
] }),
|
|
2105
|
+
pluginsAction === void 0 ? null : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_dsh_client_ui_primitives4.Tooltip, { label: pluginsLabel, side: "top", delayMs: 500, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
2106
|
+
"button",
|
|
2107
|
+
{
|
|
2108
|
+
type: "button",
|
|
2109
|
+
className: BalancePopover_default.iconButton,
|
|
2110
|
+
"aria-label": pluginsLabel,
|
|
2111
|
+
onClick: pluginsAction.open,
|
|
2112
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_dsh_client_ui_primitives4.IconPluginPinwheelOutlineRegular, { size: 16 })
|
|
2113
|
+
}
|
|
2114
|
+
) })
|
|
2115
|
+
] }),
|
|
2116
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: BalancePopover_default.titleRule, "aria-hidden": true }),
|
|
2117
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("dl", { className: BalancePopover_default.details, children: [
|
|
2118
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("dt", { children: t("popover.total") }),
|
|
2119
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("dd", { children: totalText }),
|
|
2120
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("dt", { children: t("popover.granted") }),
|
|
2121
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("dd", { children: grantedText }),
|
|
2122
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("dt", { children: t("popover.toppedUp") }),
|
|
2123
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("dd", { children: toppedUpText })
|
|
2124
|
+
] }),
|
|
2125
|
+
shown !== null && !selection.matchesPreference ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: BalancePopover_default.notice, children: [
|
|
2126
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: BalancePopover_default.noticeText, children: interpolate(t("popover.mismatch"), {
|
|
2127
|
+
wanted: displayCurrency,
|
|
2128
|
+
shown: shown.currency
|
|
2129
|
+
}) }),
|
|
2130
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: BalancePopover_default.noticeActions, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
2131
|
+
import_dsh_client_ui_primitives4.Button,
|
|
2132
|
+
{
|
|
2133
|
+
size: "sm",
|
|
2134
|
+
variant: "outline",
|
|
2135
|
+
disabled: useShownDisabled === true,
|
|
2136
|
+
onClick: onUseShown,
|
|
2137
|
+
children: interpolate(t("popover.action.useShown"), { shown: shown.currency })
|
|
2138
|
+
}
|
|
2139
|
+
) })
|
|
2140
|
+
] }) : null,
|
|
2141
|
+
configSlotWarning === null ? null : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: BalancePopover_default.notice, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: BalancePopover_default.noticeText, children: configSlotWarning }) }),
|
|
2142
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: BalancePopover_default.footer, children: [
|
|
2143
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: BalancePopover_default.updated, children: updatedText }),
|
|
2144
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: BalancePopover_default.status, role: "status", children: statusText }),
|
|
2145
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_dsh_client_ui_primitives4.Tooltip, { label: refreshLabel, side: "top", delayMs: 500, disabled: refreshing || cooling, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
2146
|
+
"button",
|
|
2147
|
+
{
|
|
2148
|
+
type: "button",
|
|
2149
|
+
className: BalancePopover_default.refresh,
|
|
2150
|
+
"aria-label": refreshLabel,
|
|
2151
|
+
"aria-busy": refreshing || void 0,
|
|
2152
|
+
disabled: refreshing || cooling,
|
|
2153
|
+
"data-refreshing": refreshing || void 0,
|
|
2154
|
+
"data-cooling": cooling || void 0,
|
|
2155
|
+
onClick: onRefresh,
|
|
2156
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_dsh_client_ui_primitives4.IconRefreshOutlineRegular, { size: 16 })
|
|
2157
|
+
}
|
|
2158
|
+
) })
|
|
2159
|
+
] })
|
|
2160
|
+
] }) });
|
|
2167
2161
|
}
|
|
2168
2162
|
|
|
2169
2163
|
// src/client/sidebar/PercentRing.module.css
|
|
@@ -2278,9 +2272,6 @@ var SidebarBalance_default = {
|
|
|
2278
2272
|
// src/client/sidebar/SidebarBalance.tsx
|
|
2279
2273
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
2280
2274
|
var REFRESH_SIMULATION_MS = 600;
|
|
2281
|
-
var PANEL_GAP = 8;
|
|
2282
|
-
var PANEL_MARGIN = 12;
|
|
2283
|
-
var MEASURE_STYLE = { visibility: "hidden", left: 0, top: 0 };
|
|
2284
2275
|
var MS_PER_SECOND2 = 1e3;
|
|
2285
2276
|
var TICK_MS = MS_PER_SECOND2;
|
|
2286
2277
|
function useConfigSlotState(probe) {
|
|
@@ -2420,14 +2411,6 @@ function SidebarBalance({
|
|
|
2420
2411
|
const toggleOpen = (0, import_react6.useCallback)(() => {
|
|
2421
2412
|
setOpen((value) => !value);
|
|
2422
2413
|
}, []);
|
|
2423
|
-
const pos = (0, import_dsh_client_ui_primitives5.useAnchoredPosition)({
|
|
2424
|
-
open,
|
|
2425
|
-
anchorRef: rootRef,
|
|
2426
|
-
panelRef,
|
|
2427
|
-
side: "top",
|
|
2428
|
-
gap: PANEL_GAP,
|
|
2429
|
-
margin: PANEL_MARGIN
|
|
2430
|
-
});
|
|
2431
2414
|
(0, import_react6.useLayoutEffect)(() => {
|
|
2432
2415
|
if (!open) return;
|
|
2433
2416
|
setNow(Date.now());
|
|
@@ -2565,7 +2548,7 @@ function SidebarBalance({
|
|
|
2565
2548
|
"aria-expanded": open,
|
|
2566
2549
|
onClick: toggleOpen,
|
|
2567
2550
|
children: wide ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
|
|
2568
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: SidebarBalance_default.icon, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(PercentRing, { state: ring.state, marker: ring.marker, ratio: ringRatio, size:
|
|
2551
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: SidebarBalance_default.icon, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(PercentRing, { state: ring.state, marker: ring.marker, ratio: ringRatio, size: 24 }) }),
|
|
2569
2552
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: SidebarBalance_default.label, children: t("sidebar.label") }),
|
|
2570
2553
|
markerLabel === null ? null : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_dsh_client_ui_primitives5.Tooltip, { label: markerHint, side: "bottom", delayMs: 500, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: SidebarBalance_default.marker, role: "img", "aria-label": markerLabel, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_dsh_client_ui_primitives5.IconWarningOutlineRegular, { size: 12 }) }) })
|
|
2571
2554
|
] }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
@@ -2574,7 +2557,7 @@ function SidebarBalance({
|
|
|
2574
2557
|
state: ring.state,
|
|
2575
2558
|
marker: ring.marker,
|
|
2576
2559
|
ratio: ringRatio,
|
|
2577
|
-
size:
|
|
2560
|
+
size: 24,
|
|
2578
2561
|
title: hoverText ?? void 0
|
|
2579
2562
|
}
|
|
2580
2563
|
)
|
|
@@ -2595,7 +2578,6 @@ function SidebarBalance({
|
|
|
2595
2578
|
cooldownSeconds,
|
|
2596
2579
|
configSlotWarning: configSlotState === "missing" ? CONFIG_SLOT_WARNING : null,
|
|
2597
2580
|
panelRef,
|
|
2598
|
-
style: pos ?? MEASURE_STYLE,
|
|
2599
2581
|
onRefresh: handleRefresh,
|
|
2600
2582
|
onUseShown: handleUseShown,
|
|
2601
2583
|
useShownDisabled: !config.writable,
|
|
@@ -2881,7 +2863,7 @@ function apply(ctx) {
|
|
|
2881
2863
|
);
|
|
2882
2864
|
});
|
|
2883
2865
|
}
|
|
2884
|
-
var __dsbCss = "/* src/client/settings/AccountAvatar.module.css */\n.AccountAvatar_avatar {\n box-sizing: border-box;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n corner-shape: round;\n overflow: hidden;\n background: var(--dsw-alias-bg-skeleton);\n}\n.AccountAvatar_image {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n corner-shape: round;\n object-fit: cover;\n}\n\n/* src/client/settings/fields.module.css */\n.fields_group {\n display: flex;\n flex-direction: column;\n width: 100%;\n min-width: 0;\n padding: 12px 0 0;\n}\n.fields_groupHead {\n position: relative;\n display: flex;\n align-items: center;\n height: calc(24px + var(--dsh-content-font-delta, 0px));\n min-width: 0;\n color: var(--dsw-alias-label-tertiary);\n transition: color 100ms ease;\n cursor: pointer;\n}\n.fields_groupHead:hover {\n color: var(--dsw-alias-label-secondary);\n}\n.fields_groupLeading {\n position: relative;\n flex: none;\n width: calc(16px + var(--dsh-content-font-delta, 0px));\n height: calc(16px + var(--dsh-content-font-delta, 0px));\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-right: 6px;\n}\n.fields_groupLeading svg {\n width: calc(14px + var(--dsh-content-font-delta, 0px));\n height: calc(14px + var(--dsh-content-font-delta, 0px));\n}\n.fields_groupIcon {\n display: inline-flex;\n opacity: 1;\n transition: opacity 100ms ease;\n}\n.fields_groupChevronClosed,\n.fields_groupChevronOpen {\n position: absolute;\n inset: 0;\n margin: auto;\n opacity: 0;\n pointer-events: none;\n transition: opacity 100ms ease;\n}\n.fields_groupHead[aria-expanded=false]:hover .fields_groupChevronClosed,\n.fields_groupHead[aria-expanded=false]:focus-visible .fields_groupChevronClosed,\n.fields_groupHead[aria-expanded=true]:hover .fields_groupChevronOpen,\n.fields_groupHead[aria-expanded=true]:focus-visible .fields_groupChevronOpen {\n opacity: 1;\n}\n.fields_groupHead:hover .fields_groupIcon,\n.fields_groupHead:focus-visible .fields_groupIcon {\n opacity: 0;\n}\n.fields_groupTitle {\n flex: none;\n font-size: var(--dsh-content-font-size-secondary, 13px);\n line-height: calc(24px + var(--dsh-content-font-delta, 0px));\n color: inherit;\n}\n@media (prefers-reduced-motion: reduce) {\n .fields_groupHead {\n transition: none;\n }\n .fields_groupIcon,\n .fields_groupChevronClosed,\n .fields_groupChevronOpen {\n transition: none;\n }\n}\n.fields_groupLast {\n padding-bottom: 12px;\n}\n.fields_groupNote {\n margin: 4px 0 0;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-label-tertiary);\n}\n.fields_fields {\n display: flex;\n flex-direction: column;\n}\n.fields_fields > * + * {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n.fields_details {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n margin-top: 12px;\n padding-top: 12px;\n}\n.fields_detailsBody {\n padding-top: 10px;\n}\n.fields_source {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 12px 0;\n}\n.fields_sourceHead {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.fields_dot {\n box-sizing: border-box;\n display: inline-block;\n flex: none;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n corner-shape: round;\n}\n.fields_dotOk {\n background: var(--dsw-alias-state-success-primary);\n}\n.fields_dotMissing {\n background: var(--dsw-alias-state-error-primary);\n}\n.fields_sourceName {\n flex: none;\n font-size: 13px;\n font-weight: 500;\n line-height: 1.5;\n color: var(--dsw-alias-label-primary);\n}\n.fields_sourceSlot {\n flex: 1 1 auto;\n min-width: 0;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 6px;\n}\n.fields_sourceIdentity,\n.fields_sourceLiveText {\n min-width: 0;\n font-size: 12px;\n line-height: 1.5;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--dsw-alias-label-tertiary);\n}\n.fields_sourceIdentityMono {\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Consolas,\n monospace;\n}\n.fields_sourceLive {\n flex: 0 1 auto;\n min-width: 0;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n.fields_sourceLiveIcon {\n flex: none;\n}\n.fields_sourceDetail {\n margin: 0;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-label-secondary);\n}\n.fields_field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 12px 0;\n}\n.fields_row {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 0;\n}\n.fields_rowText {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding-right: 48px;\n}\n.fields_rowTitleLine {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.fields_rowTitle {\n flex: 1;\n min-width: 0;\n font-size: 13px;\n font-weight: 500;\n line-height: 1.5;\n color: var(--dsw-alias-label-primary);\n}\n.fields_head {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.fields_label {\n flex: 1;\n min-width: 0;\n font-size: 13px;\n font-weight: 500;\n line-height: 1.5;\n color: var(--dsw-alias-label-primary);\n}\n.fields_badges {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n.fields_reset {\n border: none;\n background: none;\n padding: 0;\n font: inherit;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n.fields_reset:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n.fields_reset:disabled {\n cursor: default;\n}\n.fields_inputStatic,\n.fields_inputStatic:hover {\n pointer-events: none;\n}\n.fields_inputStatic input,\n.fields_inputStatic input:hover,\n.fields_inputStatic input:focus,\n.fields_inputStatic input:focus-visible,\n.fields_inputStatic input:active {\n border-color: var(--dsw-alias-border-l4);\n background: var(--dsw-alias-bg-layer-3);\n outline: none;\n box-shadow: none;\n cursor: default;\n}\n.fields_inputInvalid input {\n border: 1px solid var(--dsw-alias-state-error-primary);\n}\n.fields_inputInvalid input:focus-visible {\n border-color: var(--dsw-alias-brand-primary);\n}\n.fields_inputWithAction {\n position: relative;\n display: flex;\n align-items: center;\n}\n.fields_inputWithAction .fields_input,\n.fields_inputWithAction .fields_inputInvalid {\n padding-right: 38px;\n}\n.fields_reveal {\n position: absolute;\n right: 4px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n padding: 0;\n border: none;\n border-radius: 50%;\n corner-shape: round;\n background: transparent;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n.fields_reveal:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n.fields_revealOn {\n color: var(--dsw-alias-label-primary);\n}\n.fields_reveal:disabled {\n cursor: default;\n opacity: 0.4;\n}\n.fields_selectorAnchor {\n flex: none;\n}\n.fields_selector {\n display: inline-flex;\n align-items: center;\n gap: 12px;\n flex: none;\n max-width: 100%;\n height: 36px;\n padding: 0 14px;\n border: none;\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-module-platform);\n font: inherit;\n font-size: 14px;\n line-height: 22px;\n color: var(--dsw-alias-label-primary);\n text-align: left;\n cursor: pointer;\n}\n.fields_selector:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n.fields_selector:disabled {\n color: var(--dsw-alias-label-tertiary);\n cursor: default;\n}\n.fields_selectorChevron {\n flex: none;\n}\n.fields_hint {\n margin: 0;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-label-tertiary);\n}\n.fields_pairNote {\n display: flex;\n align-items: center;\n gap: 6px;\n margin: 0;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-state-warn-primary);\n}\n.fields_pairNote::before {\n content: \"\";\n flex: none;\n width: 5px;\n height: 5px;\n border-radius: 50%;\n corner-shape: round;\n background: currentColor;\n}\n.fields_invalid {\n margin: 0;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-state-error-primary);\n}\n.fields_actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n/* src/client/settings/BalanceSettingsCard.module.css */\n.BalanceSettingsCard_form {\n display: flex;\n flex-direction: column;\n}\n.BalanceSettingsCard_readOnly {\n margin: 0 0 12px;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-label-tertiary);\n}\n.BalanceSettingsCard_footer {\n display: flex;\n align-items: center;\n gap: 8px;\n padding-top: 16px;\n}\n.BalanceSettingsCard_save {\n appearance: none;\n border: 1px solid transparent;\n border-radius: var(--dsw-radius-md);\n padding: 5px 14px;\n font: inherit;\n font-size: 13px;\n line-height: 1.5;\n cursor: pointer;\n background: var(--dsw-alias-label-primary);\n color: var(--dsw-alias-bg-layer-3);\n}\n.BalanceSettingsCard_save:disabled {\n opacity: 0.4;\n cursor: default;\n}\n.BalanceSettingsCard_save:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color);\n outline-offset: 1px;\n}\n.BalanceSettingsCard_failed {\n flex: 1;\n min-width: 0;\n margin: 0;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-state-error-primary);\n}\n.BalanceSettingsCard_notice {\n flex: 1;\n min-width: 0;\n margin: 0;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-label-tertiary);\n}\n\n/* src/client/sidebar/BalancePopover.module.css */\n.BalancePopover_panel {\n position: fixed;\n isolation: isolate;\n z-index: 1100;\n box-sizing: border-box;\n width: max-content;\n min-width: min(300px, calc(100vw - 24px));\n max-width: min(440px, calc(100vw - 24px));\n padding: 16px;\n border: 0;\n border-radius: var(--dsw-radius-lg);\n --dsw-elevation-stroke-color: var(--dsw-alias-border-l1);\n box-shadow: var(--dsw-elevation-prominent);\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-secondary);\n cursor: default;\n}\n.BalancePopover_panel::before {\n position: absolute;\n z-index: -1;\n inset: 0;\n border-radius: inherit;\n background: var(--dsw-specific-menu);\n backdrop-filter: var(--dsw-menu-backdrop-filter);\n content: \"\";\n pointer-events: none;\n}\n.BalancePopover_title {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n margin-bottom: 8px;\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n.BalancePopover_titleMain {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n}\n.BalancePopover_titleLabel {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n cursor: pointer;\n color: inherit;\n text-decoration: underline;\n text-underline-offset: 2px;\n}\n.BalancePopover_titleLabel:hover,\n.BalancePopover_titleLabel:visited {\n color: inherit;\n}\n.BalancePopover_sourceLabel {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: var(--dsw-alias-label-tertiary);\n font-weight: 400;\n}\n.BalancePopover_titleLabel svg {\n flex: none;\n width: 14px;\n height: auto;\n}\n.BalancePopover_iconButton {\n position: relative;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n margin-block: -5px;\n border: none;\n border-radius: var(--dsw-radius-sm);\n padding: 0;\n background: transparent;\n cursor: pointer;\n color: var(--dsw-alias-label-secondary);\n}\n.BalancePopover_iconButton:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n.BalancePopover_iconButton:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color);\n outline-offset: -2px;\n}\n.BalancePopover_titleRule {\n margin-bottom: 10px;\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n.BalancePopover_details {\n display: grid;\n grid-template-columns: minmax(76px, auto) minmax(0, 1fr);\n gap: 6px 16px;\n margin: 0;\n color: var(--dsw-alias-label-tertiary);\n}\n.BalancePopover_details dt,\n.BalancePopover_details dd {\n min-width: 0;\n margin: 0;\n}\n.BalancePopover_details dd {\n color: var(--dsw-alias-label-secondary);\n font-variant-numeric: tabular-nums;\n text-align: right;\n}\n.BalancePopover_notice {\n margin-top: 12px;\n}\n.BalancePopover_noticeText {\n margin: 0 0 8px;\n color: var(--dsw-alias-label-tertiary);\n}\n.BalancePopover_noticeActions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n}\n.BalancePopover_footer {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 12px;\n}\n.BalancePopover_updated {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n.BalancePopover_status {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: right;\n color: var(--dsw-alias-label-tertiary);\n}\n.BalancePopover_refresh {\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n border: none;\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n.BalancePopover_refresh:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n.BalancePopover_refresh:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color);\n outline-offset: -2px;\n}\n.BalancePopover_refresh:disabled {\n opacity: 0.4;\n cursor: default;\n}\n.BalancePopover_refresh[data-cooling] {\n color: var(--dsw-alias-label-caption);\n}\n.BalancePopover_refresh[data-refreshing] svg {\n animation: BalancePopover_balance-refresh-spin 900ms linear infinite;\n}\n@keyframes BalancePopover_balance-refresh-spin {\n to {\n transform: rotate(360deg);\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .BalancePopover_refresh[data-refreshing] svg {\n animation-duration: 2400ms;\n }\n}\n\n/* src/client/sidebar/PercentRing.module.css */\n.PercentRing_ring {\n display: block;\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n.PercentRing_ring[data-state=done] {\n color: var(--dsw-alias-state-success-primary);\n}\n.PercentRing_ring[data-state=warning] {\n color: var(--dsw-alias-state-warn-primary);\n}\n.PercentRing_ring[data-state=error] {\n color: var(--dsw-alias-state-error-primary);\n}\n.PercentRing_ring[data-state=idle] {\n color: var(--dsw-alias-state-idle-primary);\n}\n.PercentRing_track {\n fill: none;\n stroke: var(--dsw-alias-border-l3);\n stroke-width: 1;\n}\n.PercentRing_fill {\n fill: none;\n stroke: currentColor;\n stroke-width: 1;\n stroke-linecap: round;\n}\n.PercentRing_marker {\n fill: none;\n stroke: currentColor;\n stroke-width: 1;\n stroke-linecap: round;\n}\n.PercentRing_spin {\n transform-origin: center;\n animation: PercentRing_dsb-ring-spin 1.5s linear infinite;\n}\n@keyframes PercentRing_dsb-ring-spin {\n to {\n transform: rotate(360deg);\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .PercentRing_spin {\n animation: none;\n }\n}\n\n/* src/client/sidebar/SidebarBalance.module.css */\n.SidebarBalance_root {\n position: relative;\n display: flex;\n min-width: 0;\n}\n.SidebarBalance_root[data-mode=wide] {\n flex: none;\n width: calc(100% + 4px);\n margin: 4px -2px 0;\n}\n.SidebarBalance_root[data-mode=rail] {\n flex: none;\n margin: 8px 0 0;\n}\n.SidebarBalance_trigger {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n border: none;\n background: transparent;\n color: var(--dsw-alias-label-primary);\n font-family: inherit;\n font-size: 14px;\n line-height: 22px;\n cursor: pointer;\n overflow: hidden;\n}\n.SidebarBalance_trigger:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n.SidebarBalance_trigger:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color);\n outline-offset: -2px;\n}\n.SidebarBalance_root[data-mode=wide] .SidebarBalance_trigger {\n flex: none;\n gap: 8px;\n width: 100%;\n height: 42px;\n padding: 0 10px 0 8px;\n border-radius: var(--dsw-radius-md);\n}\n.SidebarBalance_root[data-mode=rail] .SidebarBalance_trigger {\n flex: none;\n justify-content: center;\n width: 36px;\n height: 36px;\n padding: 0;\n border-radius: var(--dsw-radius-md);\n}\n.SidebarBalance_icon {\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n}\n.SidebarBalance_label {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.SidebarBalance_marker {\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n color: var(--dsw-alias-label-tertiary);\n position: relative;\n top: 1.63px;\n}\n\n/* src/client/sidebar/footer-stack.module.css */\ndiv:has(> [data-slot=\"sidebar.footer.action\"]) {\n flex-direction: column;\n}\n";
|
|
2866
|
+
var __dsbCss = "/* src/client/settings/AccountAvatar.module.css */\n.AccountAvatar_avatar {\n box-sizing: border-box;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n corner-shape: round;\n overflow: hidden;\n background: var(--dsw-alias-bg-skeleton);\n}\n.AccountAvatar_image {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n corner-shape: round;\n object-fit: cover;\n}\n\n/* src/client/settings/fields.module.css */\n.fields_group {\n display: flex;\n flex-direction: column;\n width: 100%;\n min-width: 0;\n padding: 12px 0 0;\n}\n.fields_groupHead {\n position: relative;\n display: flex;\n align-items: center;\n height: calc(24px + var(--dsh-content-font-delta, 0px));\n min-width: 0;\n color: var(--dsw-alias-label-tertiary);\n transition: color 100ms ease;\n cursor: pointer;\n}\n.fields_groupHead:hover {\n color: var(--dsw-alias-label-secondary);\n}\n.fields_groupLeading {\n position: relative;\n flex: none;\n width: calc(16px + var(--dsh-content-font-delta, 0px));\n height: calc(16px + var(--dsh-content-font-delta, 0px));\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-right: 6px;\n}\n.fields_groupLeading svg {\n width: calc(14px + var(--dsh-content-font-delta, 0px));\n height: calc(14px + var(--dsh-content-font-delta, 0px));\n}\n.fields_groupIcon {\n display: inline-flex;\n opacity: 1;\n transition: opacity 100ms ease;\n}\n.fields_groupChevronClosed,\n.fields_groupChevronOpen {\n position: absolute;\n inset: 0;\n margin: auto;\n opacity: 0;\n pointer-events: none;\n transition: opacity 100ms ease;\n}\n.fields_groupHead[aria-expanded=false]:hover .fields_groupChevronClosed,\n.fields_groupHead[aria-expanded=false]:focus-visible .fields_groupChevronClosed,\n.fields_groupHead[aria-expanded=true]:hover .fields_groupChevronOpen,\n.fields_groupHead[aria-expanded=true]:focus-visible .fields_groupChevronOpen {\n opacity: 1;\n}\n.fields_groupHead:hover .fields_groupIcon,\n.fields_groupHead:focus-visible .fields_groupIcon {\n opacity: 0;\n}\n.fields_groupTitle {\n flex: none;\n font-size: var(--dsh-content-font-size-secondary, 13px);\n line-height: calc(24px + var(--dsh-content-font-delta, 0px));\n color: inherit;\n}\n@media (prefers-reduced-motion: reduce) {\n .fields_groupHead {\n transition: none;\n }\n .fields_groupIcon,\n .fields_groupChevronClosed,\n .fields_groupChevronOpen {\n transition: none;\n }\n}\n.fields_groupLast {\n padding-bottom: 12px;\n}\n.fields_groupNote {\n margin: 4px 0 0;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-label-tertiary);\n}\n.fields_fields {\n display: flex;\n flex-direction: column;\n}\n.fields_fields > * + * {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n.fields_details {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n margin-top: 12px;\n padding-top: 12px;\n}\n.fields_detailsBody {\n padding-top: 10px;\n}\n.fields_source {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 12px 0;\n}\n.fields_sourceHead {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.fields_dot {\n box-sizing: border-box;\n display: inline-block;\n flex: none;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n corner-shape: round;\n}\n.fields_dotOk {\n background: var(--dsw-alias-state-success-primary);\n}\n.fields_dotMissing {\n background: var(--dsw-alias-state-error-primary);\n}\n.fields_sourceName {\n flex: none;\n font-size: 13px;\n font-weight: 500;\n line-height: 1.5;\n color: var(--dsw-alias-label-primary);\n}\n.fields_sourceSlot {\n flex: 1 1 auto;\n min-width: 0;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 6px;\n}\n.fields_sourceIdentity,\n.fields_sourceLiveText {\n min-width: 0;\n font-size: 12px;\n line-height: 1.5;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--dsw-alias-label-tertiary);\n}\n.fields_sourceIdentityMono {\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Consolas,\n monospace;\n}\n.fields_sourceLive {\n flex: 0 1 auto;\n min-width: 0;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n.fields_sourceLiveIcon {\n flex: none;\n}\n.fields_sourceDetail {\n margin: 0;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-label-secondary);\n}\n.fields_field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 12px 0;\n}\n.fields_row {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 0;\n}\n.fields_rowText {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding-right: 48px;\n}\n.fields_rowTitleLine {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.fields_rowTitle {\n flex: 1;\n min-width: 0;\n font-size: 13px;\n font-weight: 500;\n line-height: 1.5;\n color: var(--dsw-alias-label-primary);\n}\n.fields_head {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.fields_label {\n flex: 1;\n min-width: 0;\n font-size: 13px;\n font-weight: 500;\n line-height: 1.5;\n color: var(--dsw-alias-label-primary);\n}\n.fields_badges {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n.fields_reset {\n border: none;\n background: none;\n padding: 0;\n font: inherit;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n.fields_reset:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n.fields_reset:disabled {\n cursor: default;\n}\n.fields_inputStatic,\n.fields_inputStatic:hover {\n pointer-events: none;\n}\n.fields_inputStatic input,\n.fields_inputStatic input:hover,\n.fields_inputStatic input:focus,\n.fields_inputStatic input:focus-visible,\n.fields_inputStatic input:active {\n border-color: var(--dsw-alias-border-l4);\n background: var(--dsw-alias-bg-layer-3);\n outline: none;\n box-shadow: none;\n cursor: default;\n}\n.fields_inputInvalid input {\n border: 1px solid var(--dsw-alias-state-error-primary);\n}\n.fields_inputInvalid input:focus-visible {\n border-color: var(--dsw-alias-brand-primary);\n}\n.fields_inputWithAction {\n position: relative;\n display: flex;\n align-items: center;\n}\n.fields_inputWithAction .fields_input,\n.fields_inputWithAction .fields_inputInvalid {\n padding-right: 38px;\n}\n.fields_reveal {\n position: absolute;\n right: 4px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n padding: 0;\n border: none;\n border-radius: 50%;\n corner-shape: round;\n background: transparent;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n.fields_reveal:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n.fields_revealOn {\n color: var(--dsw-alias-label-primary);\n}\n.fields_reveal:disabled {\n cursor: default;\n opacity: 0.4;\n}\n.fields_selectorAnchor {\n flex: none;\n}\n.fields_selector {\n display: inline-flex;\n align-items: center;\n gap: 12px;\n flex: none;\n max-width: 100%;\n height: 36px;\n padding: 0 14px;\n border: none;\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-module-platform);\n font: inherit;\n font-size: 14px;\n line-height: 22px;\n color: var(--dsw-alias-label-primary);\n text-align: left;\n cursor: pointer;\n}\n.fields_selector:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n.fields_selector:disabled {\n color: var(--dsw-alias-label-tertiary);\n cursor: default;\n}\n.fields_selectorChevron {\n flex: none;\n}\n.fields_hint {\n margin: 0;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-label-tertiary);\n}\n.fields_pairNote {\n display: flex;\n align-items: center;\n gap: 6px;\n margin: 0;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-state-warn-primary);\n}\n.fields_pairNote::before {\n content: \"\";\n flex: none;\n width: 5px;\n height: 5px;\n border-radius: 50%;\n corner-shape: round;\n background: currentColor;\n}\n.fields_invalid {\n margin: 0;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-state-error-primary);\n}\n.fields_actions {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n/* src/client/settings/BalanceSettingsCard.module.css */\n.BalanceSettingsCard_form {\n display: flex;\n flex-direction: column;\n}\n.BalanceSettingsCard_readOnly {\n margin: 0 0 12px;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-label-tertiary);\n}\n.BalanceSettingsCard_footer {\n display: flex;\n align-items: center;\n gap: 8px;\n padding-top: 16px;\n}\n.BalanceSettingsCard_save {\n appearance: none;\n border: 1px solid transparent;\n border-radius: var(--dsw-radius-md);\n padding: 5px 14px;\n font: inherit;\n font-size: 13px;\n line-height: 1.5;\n cursor: pointer;\n background: var(--dsw-alias-label-primary);\n color: var(--dsw-alias-bg-layer-3);\n}\n.BalanceSettingsCard_save:disabled {\n opacity: 0.4;\n cursor: default;\n}\n.BalanceSettingsCard_save:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color);\n outline-offset: 1px;\n}\n.BalanceSettingsCard_failed {\n flex: 1;\n min-width: 0;\n margin: 0;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-state-error-primary);\n}\n.BalanceSettingsCard_notice {\n flex: 1;\n min-width: 0;\n margin: 0;\n font-size: 12px;\n line-height: 1.5;\n color: var(--dsw-alias-label-tertiary);\n}\n\n/* src/client/sidebar/BalancePopover.module.css */\nsection.BalancePopover_panel {\n position: fixed;\n position-anchor: --dsb-balance-anchor;\n bottom: calc(anchor(top) + 8px);\n left: clamp(12px, anchor(left), calc(100vw - 12px - min(440px, calc(100vw - 24px))));\n max-height: calc(100dvh - 12px - max(12px, var(--dsh-frame-overlay-top, 12px))) !important;\n position-try-fallbacks: --dsb-balance-window;\n display: flex;\n flex-direction: column;\n isolation: isolate;\n z-index: 1100;\n box-sizing: border-box;\n width: max-content !important;\n height: auto !important;\n min-width: min(300px, calc(100vw - 24px));\n max-width: min(440px, calc(100vw - 24px)) !important;\n padding: 11px 16px 16px !important;\n margin: 0;\n border: 0;\n border-radius: var(--dsw-radius-lg) !important;\n --dsw-elevation-stroke-color: var(--dsw-alias-border-l1);\n box-shadow: var(--dsw-elevation-prominent);\n font-size: 12px;\n line-height: 18px;\n color: var(--dsw-alias-label-secondary);\n cursor: default;\n}\n.BalancePopover_body {\n min-height: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n}\n@position-try --dsb-balance-window {\n position-area: none;\n top: max(12px, var(--dsh-frame-overlay-top, 12px));\n bottom: 12px;\n max-height: none;\n align-self: safe start;\n justify-self: safe end;\n}\n.BalancePopover_panel::before {\n position: absolute;\n z-index: -1;\n inset: 0;\n border-radius: inherit;\n background: var(--dsw-specific-menu);\n backdrop-filter: var(--dsw-menu-backdrop-filter);\n content: \"\";\n pointer-events: none;\n}\n.BalancePopover_title {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n margin-bottom: 3px;\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n.BalancePopover_titleMain {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n}\n.BalancePopover_titleLabel {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n cursor: pointer;\n color: inherit;\n text-decoration: underline;\n text-underline-offset: 2px;\n}\n.BalancePopover_titleLabel:hover,\n.BalancePopover_titleLabel:visited {\n color: inherit;\n}\n.BalancePopover_sourceLabel {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: var(--dsw-alias-label-tertiary);\n font-weight: 400;\n}\n.BalancePopover_titleLabel svg {\n flex: none;\n width: 14px;\n height: auto;\n}\n.BalancePopover_iconButton {\n position: relative;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: var(--dsw-radius-sm);\n padding: 0;\n background: transparent;\n cursor: pointer;\n color: var(--dsw-alias-label-secondary);\n}\n.BalancePopover_iconButton:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n.BalancePopover_iconButton:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color);\n outline-offset: -2px;\n}\n.BalancePopover_titleRule {\n margin-bottom: 10px;\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n.BalancePopover_details {\n display: grid;\n grid-template-columns: minmax(76px, auto) minmax(0, 1fr);\n gap: 6px 16px;\n margin: 0;\n color: var(--dsw-alias-label-tertiary);\n}\n.BalancePopover_details dt,\n.BalancePopover_details dd {\n min-width: 0;\n margin: 0;\n}\n.BalancePopover_details dd {\n color: var(--dsw-alias-label-secondary);\n font-variant-numeric: tabular-nums;\n text-align: right;\n}\n.BalancePopover_notice {\n margin-top: 12px;\n}\n.BalancePopover_noticeText {\n margin: 0 0 8px;\n color: var(--dsw-alias-label-tertiary);\n}\n.BalancePopover_noticeActions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n}\n.BalancePopover_footer {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 12px;\n}\n.BalancePopover_updated {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n.BalancePopover_status {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: right;\n color: var(--dsw-alias-label-tertiary);\n}\n.BalancePopover_refresh {\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n padding: 0;\n border: none;\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n.BalancePopover_refresh:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n.BalancePopover_refresh:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color);\n outline-offset: -2px;\n}\n.BalancePopover_refresh:disabled {\n opacity: 0.4;\n cursor: default;\n}\n.BalancePopover_refresh[data-cooling] {\n color: var(--dsw-alias-label-caption);\n}\n.BalancePopover_refresh[data-refreshing] svg {\n animation: BalancePopover_balance-refresh-spin 900ms linear infinite;\n}\n@keyframes BalancePopover_balance-refresh-spin {\n to {\n transform: rotate(360deg);\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .BalancePopover_refresh[data-refreshing] svg {\n animation-duration: 2400ms;\n }\n}\n\n/* src/client/sidebar/PercentRing.module.css */\n.PercentRing_ring {\n display: block;\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n.PercentRing_ring[data-state=done] {\n color: var(--dsw-alias-state-success-primary);\n}\n.PercentRing_ring[data-state=warning] {\n color: var(--dsw-alias-state-warn-primary);\n}\n.PercentRing_ring[data-state=error] {\n color: var(--dsw-alias-state-error-primary);\n}\n.PercentRing_ring[data-state=idle] {\n color: var(--dsw-alias-state-idle-primary);\n}\n.PercentRing_track {\n fill: none;\n stroke: var(--dsw-alias-border-l3);\n stroke-width: 1;\n}\n.PercentRing_fill {\n fill: none;\n stroke: currentColor;\n stroke-width: 1;\n stroke-linecap: round;\n}\n.PercentRing_marker {\n fill: none;\n stroke: currentColor;\n stroke-width: 1;\n stroke-linecap: round;\n}\n.PercentRing_spin {\n transform-origin: center;\n animation: PercentRing_dsb-ring-spin 1.5s linear infinite;\n}\n@keyframes PercentRing_dsb-ring-spin {\n to {\n transform: rotate(360deg);\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .PercentRing_spin {\n animation: none;\n }\n}\n\n/* src/client/sidebar/SidebarBalance.module.css */\n.SidebarBalance_root {\n position: relative;\n display: flex;\n min-width: 0;\n anchor-name: --dsb-balance-anchor;\n}\n.SidebarBalance_root[data-mode=wide] {\n flex: none;\n margin: 4px 2px 0;\n}\n.SidebarBalance_root[data-mode=rail] {\n flex: none;\n margin: 8px 0 0;\n}\n.SidebarBalance_trigger {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n border: none;\n background: transparent;\n color: var(--dsw-alias-label-primary);\n font-family: inherit;\n font-size: 14px;\n line-height: 22px;\n cursor: pointer;\n overflow: hidden;\n}\n.SidebarBalance_trigger:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n.SidebarBalance_trigger:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color);\n outline-offset: -2px;\n}\n.SidebarBalance_root[data-mode=wide] .SidebarBalance_trigger {\n flex: none;\n gap: 8px;\n width: 100%;\n height: 44px;\n padding: 6px;\n border-radius: var(--dsw-radius-md);\n}\n.SidebarBalance_root[data-mode=rail] .SidebarBalance_trigger {\n flex: none;\n justify-content: center;\n width: 36px;\n height: 36px;\n padding: 0;\n border-radius: var(--dsw-radius-md);\n}\n.SidebarBalance_icon {\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n}\n.SidebarBalance_label {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.SidebarBalance_marker {\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n color: var(--dsw-alias-label-tertiary);\n position: relative;\n top: 1.63px;\n}\n\n/* src/client/sidebar/footer-stack.module.css */\ndiv:has(> [data-slot=\"sidebar.footer.action\"]) {\n flex-direction: column;\n}\n";
|
|
2885
2867
|
var __dsbTagId = "dsh-ds-balance/client.css";
|
|
2886
2868
|
if (typeof document !== 'undefined' && document.querySelector('style[data-plugin-css="' + __dsbTagId + '"]') === null) {
|
|
2887
2869
|
var __dsbTag = document.createElement('style');
|
|
@@ -36,10 +36,10 @@ export type AppIcon = ComponentType<IconProps>;
|
|
|
36
36
|
* 仪表盘(`IconGaugeOutlineRegular`)语义偏「量程」,不选。
|
|
37
37
|
*/
|
|
38
38
|
export declare const GROUP_ICONS: {
|
|
39
|
-
readonly connection: (props: IconProps) =>
|
|
39
|
+
readonly connection: (props: IconProps) => React.JSX.Element;
|
|
40
40
|
readonly display: typeof CurrencyOutlineIcon;
|
|
41
|
-
readonly thresholds: (props: IconProps) =>
|
|
42
|
-
readonly refresh: (props: IconProps) =>
|
|
41
|
+
readonly thresholds: (props: IconProps) => React.JSX.Element;
|
|
42
|
+
readonly refresh: (props: IconProps) => React.JSX.Element;
|
|
43
43
|
};
|
|
44
44
|
/** 分组键,与 `BalanceSettingsCard` 的分组顺序一致。 */
|
|
45
45
|
export type GroupIconKey = keyof typeof GROUP_ICONS;
|
|
@@ -57,8 +57,8 @@ export type GroupIconKey = keyof typeof GROUP_ICONS;
|
|
|
57
57
|
* 引官方符号前先在声明下限那一档确认它存在 —— 这条规则就是这么生效的。
|
|
58
58
|
*/
|
|
59
59
|
export declare const RESULT_ICONS: {
|
|
60
|
-
readonly ok: (props: IconProps) =>
|
|
61
|
-
readonly fail: (props: IconProps) =>
|
|
60
|
+
readonly ok: (props: IconProps) => React.JSX.Element;
|
|
61
|
+
readonly fail: (props: IconProps) => React.JSX.Element;
|
|
62
62
|
};
|
|
63
63
|
/**
|
|
64
64
|
* 分组折叠头的两个箭头。
|
|
@@ -71,8 +71,8 @@ export declare const RESULT_ICONS: {
|
|
|
71
71
|
* 的唯一出处,`fields.tsx` 只该消费它。
|
|
72
72
|
*/
|
|
73
73
|
export declare const HEADER_CHEVRONS: {
|
|
74
|
-
readonly closed: (props: IconProps) =>
|
|
75
|
-
readonly open: (props: IconProps) =>
|
|
74
|
+
readonly closed: (props: IconProps) => React.JSX.Element;
|
|
75
|
+
readonly open: (props: IconProps) => React.JSX.Element;
|
|
76
76
|
};
|
|
77
77
|
/**
|
|
78
78
|
* 选择器 pill 右端的 chevron。
|
|
@@ -87,6 +87,6 @@ export declare const SELECTOR_ICON: AppIcon;
|
|
|
87
87
|
* 可以照引);`refresh` 与分组头的刷新同源。
|
|
88
88
|
*/
|
|
89
89
|
export declare const POPOVER_ICONS: {
|
|
90
|
-
readonly plugins: (props: IconProps) =>
|
|
91
|
-
readonly refresh: (props: IconProps) =>
|
|
90
|
+
readonly plugins: (props: IconProps) => React.JSX.Element;
|
|
91
|
+
readonly refresh: (props: IconProps) => React.JSX.Element;
|
|
92
92
|
};
|
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
* 余额浮层:点击条目后在条目的上方展开。
|
|
3
3
|
*
|
|
4
4
|
* 皮肤照抄官方「用量 / 用时」浮层(ui-chat 的 stat-dialog.module.css);
|
|
5
|
-
*
|
|
5
|
+
* **定位全在 CSS 里**:面板用 `position-anchor` 挂到触发区根节点的 `anchor-name` 上
|
|
6
|
+
* (CSS Anchor Positioning,见 BalancePopover.module.css 的 .panel),
|
|
7
|
+
* 父组件既不量尺寸也不传坐标 —— 传进来的只有数据与回调。
|
|
6
8
|
* 面板由父组件 createPortal 挂到 document.body,所以 panelRef 指向面板自身。
|
|
7
9
|
* @module dsh-ds-balance/client/sidebar/BalancePopover
|
|
8
10
|
*/
|
|
9
|
-
import type {
|
|
11
|
+
import type { RefObject } from 'react';
|
|
10
12
|
import { type LocaleKey } from '../locales.ts';
|
|
11
13
|
import { type CurrencySelection } from '../model.ts';
|
|
12
14
|
/** 没有可显示金额时的占位符;条目与浮层共用同一个字面量。 */
|
|
@@ -39,10 +41,8 @@ export interface BalancePopoverProps {
|
|
|
39
41
|
* 按兼容性硬约束两种语言下都照原文给,所以刻意不进双语词典。
|
|
40
42
|
*/
|
|
41
43
|
configSlotWarning: string | null;
|
|
42
|
-
/**
|
|
44
|
+
/** 面板自身的引用:外部点击判定用它算「内部」(定位不读它,坐标全在 CSS 里)。 */
|
|
43
45
|
panelRef: RefObject<HTMLElement>;
|
|
44
|
-
/** 由 useAnchoredPosition 给出的 fixed 坐标;首帧是 MEASURE_STYLE(隐藏待测)。 */
|
|
45
|
-
style: CSSProperties;
|
|
46
46
|
/** 刷新回调。 */
|
|
47
47
|
onRefresh: () => void;
|
|
48
48
|
/** 「改用 X」回调。 */
|
|
@@ -73,7 +73,7 @@ export interface PluginsAction {
|
|
|
73
73
|
}
|
|
74
74
|
/**
|
|
75
75
|
* 渲染余额浮层。
|
|
76
|
-
* @param props - 选择结果、时间、刷新状态、面板 ref
|
|
76
|
+
* @param props - 选择结果、时间、刷新状态、面板 ref 与三个动作回调。
|
|
77
77
|
* @returns 浮层元素。
|
|
78
78
|
*/
|
|
79
79
|
export declare function BalancePopover(props: BalancePopoverProps): JSX.Element;
|
package/lib/version.d.ts
CHANGED
|
@@ -8,5 +8,5 @@
|
|
|
8
8
|
/** 线上 schema 版本。响应里逐条回传,消费方据此判断兼容性。 */
|
|
9
9
|
export declare const SCHEMA_VERSION = 1;
|
|
10
10
|
/** 插件版本。与 `package.json` 的 `version` 一致(有测试兜底)。 */
|
|
11
|
-
export declare const PLUGIN_VERSION = "3.
|
|
11
|
+
export declare const PLUGIN_VERSION = "3.2.1";
|
|
12
12
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-ds-balance",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.1",
|
|
4
4
|
"icon": "./icon.svg",
|
|
5
5
|
"description": "DSH plugin: shows the DeepSeek account balance at the bottom of the sidebar, with a configuration card on the Plugins page.",
|
|
6
6
|
"keywords": [
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"LICENSE"
|
|
48
48
|
],
|
|
49
49
|
"engines": {
|
|
50
|
-
"dsh": "^0.
|
|
50
|
+
"dsh": "^0.2.2-rc.1",
|
|
51
51
|
"node": ">=20"
|
|
52
52
|
},
|
|
53
53
|
"dsh": {
|
|
@@ -74,38 +74,38 @@
|
|
|
74
74
|
"check:declaration": "node scripts/check-declaration.mjs"
|
|
75
75
|
},
|
|
76
76
|
"peerDependencies": {
|
|
77
|
-
"@deepseek-ai/cordis": "^4.0
|
|
78
|
-
"@deepseek-ai/dsh-client-connection": "^0.
|
|
79
|
-
"@deepseek-ai/dsh-client-locale": "^0.
|
|
80
|
-
"@deepseek-ai/dsh-client-ui-primitives": "^0.
|
|
81
|
-
"@deepseek-ai/dsh-client-ui-settings": "^0.
|
|
82
|
-
"@deepseek-ai/dsh-client-ui-slots": "^0.
|
|
83
|
-
"@deepseek-ai/dsh-credentials": "^0.
|
|
84
|
-
"@deepseek-ai/dsh-deepseek-account-platform": "^0.
|
|
85
|
-
"@deepseek-ai/dsh-home-paths": "^0.
|
|
86
|
-
"@deepseek-ai/dsh-settings": "^0.
|
|
87
|
-
"@deepseek-ai/dsh-storage-domain": "^0.
|
|
88
|
-
"@deepseek-ai/schemastery": "^3.
|
|
77
|
+
"@deepseek-ai/cordis": "^4.1.0",
|
|
78
|
+
"@deepseek-ai/dsh-client-connection": "^0.2.2-rc.1",
|
|
79
|
+
"@deepseek-ai/dsh-client-locale": "^0.2.2-rc.1",
|
|
80
|
+
"@deepseek-ai/dsh-client-ui-primitives": "^0.2.2-rc.1",
|
|
81
|
+
"@deepseek-ai/dsh-client-ui-settings": "^0.2.2-rc.1",
|
|
82
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.2.2-rc.1",
|
|
83
|
+
"@deepseek-ai/dsh-credentials": "^0.2.2-rc.1",
|
|
84
|
+
"@deepseek-ai/dsh-deepseek-account-platform": "^0.2.2-rc.1",
|
|
85
|
+
"@deepseek-ai/dsh-home-paths": "^0.2.2-rc.1",
|
|
86
|
+
"@deepseek-ai/dsh-settings": "^0.2.2-rc.1",
|
|
87
|
+
"@deepseek-ai/dsh-storage-domain": "^0.2.2-rc.1",
|
|
88
|
+
"@deepseek-ai/schemastery": "^3.19.0",
|
|
89
89
|
"react": "^18.3.1",
|
|
90
90
|
"react-dom": "^18.3.1"
|
|
91
91
|
},
|
|
92
92
|
"devDependencies": {
|
|
93
|
-
"@deepseek-ai/cordis": "^4.0
|
|
93
|
+
"@deepseek-ai/cordis": "^4.1.0",
|
|
94
94
|
"@deepseek-ai/cordis-plugin-loader": "^1.0.4",
|
|
95
|
-
"@deepseek-ai/dsh-client-connection": "^0.
|
|
96
|
-
"@deepseek-ai/dsh-client-locale": "^0.
|
|
97
|
-
"@deepseek-ai/dsh-client-ui-plugin-manager": "^0.
|
|
98
|
-
"@deepseek-ai/dsh-client-ui-primitives": "^0.
|
|
99
|
-
"@deepseek-ai/dsh-client-ui-renderer": "^0.
|
|
100
|
-
"@deepseek-ai/dsh-client-ui-settings": "^0.
|
|
101
|
-
"@deepseek-ai/dsh-client-ui-sidebar": "^0.
|
|
102
|
-
"@deepseek-ai/dsh-client-ui-slots": "^0.
|
|
103
|
-
"@deepseek-ai/dsh-credentials": "^0.
|
|
104
|
-
"@deepseek-ai/dsh-deepseek-account-platform": "^0.
|
|
105
|
-
"@deepseek-ai/dsh-home-paths": "^0.
|
|
106
|
-
"@deepseek-ai/dsh-settings": "^0.
|
|
107
|
-
"@deepseek-ai/dsh-storage-domain": "^0.
|
|
108
|
-
"@deepseek-ai/schemastery": "^3.
|
|
95
|
+
"@deepseek-ai/dsh-client-connection": "^0.2.2-rc.1",
|
|
96
|
+
"@deepseek-ai/dsh-client-locale": "^0.2.2-rc.1",
|
|
97
|
+
"@deepseek-ai/dsh-client-ui-plugin-manager": "^0.2.2-rc.1",
|
|
98
|
+
"@deepseek-ai/dsh-client-ui-primitives": "^0.2.2-rc.1",
|
|
99
|
+
"@deepseek-ai/dsh-client-ui-renderer": "^0.2.2-rc.1",
|
|
100
|
+
"@deepseek-ai/dsh-client-ui-settings": "^0.2.2-rc.1",
|
|
101
|
+
"@deepseek-ai/dsh-client-ui-sidebar": "^0.2.2-rc.1",
|
|
102
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.2.2-rc.1",
|
|
103
|
+
"@deepseek-ai/dsh-credentials": "^0.2.2-rc.1",
|
|
104
|
+
"@deepseek-ai/dsh-deepseek-account-platform": "^0.2.2-rc.1",
|
|
105
|
+
"@deepseek-ai/dsh-home-paths": "^0.2.2-rc.1",
|
|
106
|
+
"@deepseek-ai/dsh-settings": "^0.2.2-rc.1",
|
|
107
|
+
"@deepseek-ai/dsh-storage-domain": "^0.2.2-rc.1",
|
|
108
|
+
"@deepseek-ai/schemastery": "^3.19.0",
|
|
109
109
|
"@eslint/js": "^10.0.1",
|
|
110
110
|
"@types/node": "^20.0.0",
|
|
111
111
|
"@types/react": "~18.3.1",
|
|
@@ -120,9 +120,10 @@
|
|
|
120
120
|
"react-dom": "^18.3.1",
|
|
121
121
|
"typescript": "^5.4.0",
|
|
122
122
|
"typescript-eslint": "^8.70.1",
|
|
123
|
-
"vitest": "^4.1.11"
|
|
123
|
+
"vitest": "^4.1.11",
|
|
124
|
+
"yaml": "^2.9.1"
|
|
124
125
|
},
|
|
125
126
|
"dependencies": {
|
|
126
|
-
"zod": "4.
|
|
127
|
+
"zod": "4.6.6"
|
|
127
128
|
}
|
|
128
129
|
}
|