@dsh-workbench/core 1.0.1 → 1.1.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/README.md +3 -0
- package/client.js +849 -460
- package/dist/client/client.body.js +849 -460
- package/dist/client/index.js +720 -331
- package/dist/host/index.js +448 -41
- package/dist/types/app/layouts/market/discover-search.d.ts +8 -0
- package/dist/types/app/layouts/market/discover-sources-dialog.d.ts +4 -0
- package/dist/types/app/layouts/market/discover-states.d.ts +3 -0
- package/dist/types/app/layouts/market/use-add-module.d.ts +0 -1
- package/dist/types/app/layouts/market/use-discover.d.ts +1 -0
- package/dist/types/app/layouts/rightbar/MarketView.d.ts +3 -1
- package/dist/types/app/layouts/rightbar/market-names.d.ts +8 -0
- package/dist/types/app/layouts/rightbar/market-row-types.d.ts +11 -3
- package/dist/types/app/layouts/rightbar/market-rows.d.ts +6 -4
- package/dist/types/app/layouts/rightbar/market-view-text.d.ts +4 -3
- package/dist/types/app/units/unit-titles.d.ts +3 -0
- package/dist/types/kernel/contract/bundle-install.d.ts +1 -1
- package/dist/types/kernel/contract/market-index.d.ts +1 -1
- package/dist/types/modules/panels/model/diy-tools.d.ts +1 -1
- package/dist/types/modules/panels/model/market-dispatch.d.ts +8 -0
- package/dist/types/modules/panels/model/market-follow-up.d.ts +16 -0
- package/dist/types/modules/panels/model/market-sources-act.d.ts +2 -0
- package/dist/types/modules/panels/model/market-types.d.ts +5 -0
- package/dist/types/modules/panels/model/market.d.ts +2 -0
- package/dist/types/modules/panels/model/publish-preview-routes.d.ts +1 -1
- package/dist/types/shared/api/host/diy-publish-preview.d.ts +11 -0
- package/dist/types/shared/api/host/follow-up-dismiss.d.ts +2 -0
- package/dist/types/shared/api/host/migrate-workbench.d.ts +20 -0
- package/dist/types/shared/api/host/migration-follow-up.d.ts +12 -0
- package/dist/types/shared/hooks/market-queries.d.ts +3 -2
- package/dist/types/shared/hooks/resource-view.d.ts +14 -0
- package/dist/types/shared/hooks/use-api-resource.d.ts +3 -7
- package/package.json +3 -3
- package/skills/workbench-module-diy/FAMILY.md +1 -1
- package/skills/workbench-module-diy/REVIEW.md +2 -2
- package/skills/workbench-module-diy/SKILL.md +1 -0
- package/skills/workbench-module-diy/TOOLS.md +1 -1
- package/skills/workbench-module-diy/WIRING.md +3 -1
- package/skills/workbench-module-diy/WRITES.md +1 -1
|
@@ -781,7 +781,7 @@ async function apiPost(route, body) {
|
|
|
781
781
|
//#endregion
|
|
782
782
|
//#region ../shared/dist/lib/react.js
|
|
783
783
|
var react$1 = require("react");
|
|
784
|
-
var h$
|
|
784
|
+
var h$63 = react$1.createElement;
|
|
785
785
|
var Fragment$20 = react$1.Fragment;
|
|
786
786
|
var Component = react$1.Component;
|
|
787
787
|
react$1.createContext;
|
|
@@ -791,7 +791,7 @@ var useEffect$28 = react$1.useEffect;
|
|
|
791
791
|
react$1.useLayoutEffect;
|
|
792
792
|
var useMemo$9 = react$1.useMemo;
|
|
793
793
|
react$1.useCallback;
|
|
794
|
-
var useRef$
|
|
794
|
+
var useRef$22 = react$1.useRef;
|
|
795
795
|
react$1.useSyncExternalStore;
|
|
796
796
|
//#endregion
|
|
797
797
|
//#region ../shared/dist/components/Activity.js
|
|
@@ -802,7 +802,7 @@ react$1.useSyncExternalStore;
|
|
|
802
802
|
* @returns 一个 div。
|
|
803
803
|
*/
|
|
804
804
|
function ActivityBlock({ head, children }) {
|
|
805
|
-
return h$
|
|
805
|
+
return h$63("div", { className: "wb-activityBlock" }, head === void 0 ? null : h$63("div", { className: "wb-activityBlockHead" }, head), children);
|
|
806
806
|
}
|
|
807
807
|
/**
|
|
808
808
|
* 一条活动:状态点 + 正文 + 时间,行尾可挂动作;时间一律用它,别自己拼。
|
|
@@ -813,7 +813,7 @@ function ActivityBlock({ head, children }) {
|
|
|
813
813
|
* @returns 一行。
|
|
814
814
|
*/
|
|
815
815
|
function ActivityLine({ dot, text, at, actions }) {
|
|
816
|
-
return h$
|
|
816
|
+
return h$63("div", { className: "wb-activityLine" }, dot, h$63("span", { className: "wb-activityLineText" }, text), at === void 0 ? null : h$63("span", { className: "wb-activityLineAt" }, at), actions === void 0 ? null : h$63("span", { className: "wb-activityLineActions" }, actions));
|
|
817
817
|
}
|
|
818
818
|
/**
|
|
819
819
|
* 活动行尾那颗动作:给 `href` 就是外链,否则是图标钮并带上 tooltip。
|
|
@@ -827,7 +827,7 @@ function ActivityLine({ dot, text, at, actions }) {
|
|
|
827
827
|
*/
|
|
828
828
|
function ActivityAction({ label, hint, icon, href, onClick, failed }) {
|
|
829
829
|
const tip = hint ?? label;
|
|
830
|
-
if (href !== void 0) return h$
|
|
830
|
+
if (href !== void 0) return h$63("a", {
|
|
831
831
|
className: "wb-iconButton",
|
|
832
832
|
href,
|
|
833
833
|
target: "_blank",
|
|
@@ -835,13 +835,13 @@ function ActivityAction({ label, hint, icon, href, onClick, failed }) {
|
|
|
835
835
|
title: tip,
|
|
836
836
|
"aria-label": label
|
|
837
837
|
}, icon);
|
|
838
|
-
return h$
|
|
838
|
+
return h$63(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
839
839
|
side: "bottom",
|
|
840
840
|
align: "end",
|
|
841
841
|
gap: 6,
|
|
842
842
|
portal: true,
|
|
843
843
|
label: tip
|
|
844
|
-
}, h$
|
|
844
|
+
}, h$63(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
845
845
|
type: "button",
|
|
846
846
|
variant: "ghost",
|
|
847
847
|
size: "sm",
|
|
@@ -863,10 +863,10 @@ function ActivityAction({ label, hint, icon, href, onClick, failed }) {
|
|
|
863
863
|
*/
|
|
864
864
|
function Note({ tone = "muted", as, role, children }) {
|
|
865
865
|
const className = tone === "problem" ? "wb-problem" : "wb-note";
|
|
866
|
-
return as === "span" ? h$
|
|
866
|
+
return as === "span" ? h$63("span", {
|
|
867
867
|
className,
|
|
868
868
|
role
|
|
869
|
-
}, children) : h$
|
|
869
|
+
}, children) : h$63("p", {
|
|
870
870
|
className,
|
|
871
871
|
role
|
|
872
872
|
}, children);
|
|
@@ -910,10 +910,10 @@ var CardBoundary = class extends Component {
|
|
|
910
910
|
render() {
|
|
911
911
|
const { reason } = this.state;
|
|
912
912
|
if (reason === null) return this.props.children;
|
|
913
|
-
return h$
|
|
913
|
+
return h$63(Note, { tone: "problem" }, h$63("span", null, this.props.t("panels.cardBroken", {
|
|
914
914
|
unit: this.props.unit,
|
|
915
915
|
reason
|
|
916
|
-
})), " ", h$
|
|
916
|
+
})), " ", h$63(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
917
917
|
type: "button",
|
|
918
918
|
variant: "outline",
|
|
919
919
|
size: "sm",
|
|
@@ -963,19 +963,19 @@ function ApprovalDetail(props) {
|
|
|
963
963
|
const owner = (props.units ?? []).find((face) => face.approval?.tools.includes(input.tool) === true);
|
|
964
964
|
if (owner?.approval !== void 0) {
|
|
965
965
|
const Render = owner.approval.render;
|
|
966
|
-
return h$
|
|
966
|
+
return h$63(CardBoundary, {
|
|
967
967
|
unit: owner.unit,
|
|
968
968
|
resetKey: props.callId ?? "",
|
|
969
969
|
t
|
|
970
|
-
}, h$
|
|
970
|
+
}, h$63(Render, {
|
|
971
971
|
input,
|
|
972
972
|
t
|
|
973
973
|
}));
|
|
974
974
|
}
|
|
975
975
|
const shell = props.renderShell?.(input, t);
|
|
976
|
-
if (shell !== void 0 && shell !== null) return h$
|
|
976
|
+
if (shell !== void 0 && shell !== null) return h$63(Fragment$20, null, shell);
|
|
977
977
|
if (command === "") return null;
|
|
978
|
-
return h$
|
|
978
|
+
return h$63(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
|
|
979
979
|
code: command,
|
|
980
980
|
className: "wb-approvalCommand",
|
|
981
981
|
copyLabel: t("blocker.copy"),
|
|
@@ -993,10 +993,10 @@ function ApprovalDetail(props) {
|
|
|
993
993
|
* @returns 一个 div。
|
|
994
994
|
*/
|
|
995
995
|
function ApprovalPlan({ rows, hint, warn, children }) {
|
|
996
|
-
return h$
|
|
996
|
+
return h$63("div", { className: "wb-approvalPlan" }, hint === void 0 ? null : h$63("p", { className: "wb-approvalHint" }, hint), h$63("dl", { className: "wb-approvalRows" }, rows.map((row, index) => h$63("div", {
|
|
997
997
|
className: "wb-approvalRow",
|
|
998
998
|
key: String(index)
|
|
999
|
-
}, h$
|
|
999
|
+
}, h$63("dt", { className: "wb-approvalLabel" }, row.label), h$63("dd", { className: "wb-approvalValue" }, row.value)))), children, warn === void 0 ? null : h$63("p", { className: "wb-approvalWarn" }, warn));
|
|
1000
1000
|
}
|
|
1001
1001
|
//#endregion
|
|
1002
1002
|
//#region ../shared/dist/components/CardHead.js
|
|
@@ -1013,47 +1013,47 @@ function ApprovalPlan({ rows, hint, warn, children }) {
|
|
|
1013
1013
|
function CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle }) {
|
|
1014
1014
|
const refreshLabel = refreshing ? t("rightbar.refreshing") : t("rightbar.refresh");
|
|
1015
1015
|
const platformLabel = platformTitle ?? platform ?? t("rightbar.openPlatform");
|
|
1016
|
-
return h$
|
|
1016
|
+
return h$63("header", { className: "wb-cardHead" }, h$63("h2", { className: "wb-cardTitle" }, title), meta === void 0 ? null : h$63("span", { className: "wb-cardMeta" }, meta), platformHref === void 0 ? null : h$63(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
1017
1017
|
side: "bottom",
|
|
1018
1018
|
align: "end",
|
|
1019
1019
|
gap: 6,
|
|
1020
1020
|
portal: true,
|
|
1021
1021
|
label: platformLabel
|
|
1022
|
-
}, h$
|
|
1022
|
+
}, h$63("a", {
|
|
1023
1023
|
className: "wb-iconButton wb-cardOpen",
|
|
1024
1024
|
href: platformHref,
|
|
1025
1025
|
target: "_blank",
|
|
1026
1026
|
rel: "noreferrer noopener",
|
|
1027
1027
|
"aria-label": platform ?? platformLabel
|
|
1028
|
-
}, h$
|
|
1028
|
+
}, h$63(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 14 }))), h$63(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
1029
1029
|
side: "bottom",
|
|
1030
1030
|
align: "end",
|
|
1031
1031
|
gap: 6,
|
|
1032
1032
|
portal: true,
|
|
1033
1033
|
label: refreshLabel
|
|
1034
|
-
}, h$
|
|
1034
|
+
}, h$63(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
1035
1035
|
type: "button",
|
|
1036
1036
|
size: "sm",
|
|
1037
1037
|
variant: "ghost",
|
|
1038
1038
|
className: `wb-cardRefresh${refreshing ? " wb-spinning" : ""}`,
|
|
1039
1039
|
"aria-label": refreshLabel,
|
|
1040
1040
|
disabled: refreshing,
|
|
1041
|
-
icon: h$
|
|
1041
|
+
icon: h$63(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, { size: 14 }),
|
|
1042
1042
|
onClick: onRefresh
|
|
1043
|
-
})), gear === void 0 || onToggleGear === void 0 ? null : h$
|
|
1043
|
+
})), gear === void 0 || onToggleGear === void 0 ? null : h$63(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
1044
1044
|
side: "bottom",
|
|
1045
1045
|
align: "end",
|
|
1046
1046
|
gap: 6,
|
|
1047
1047
|
portal: true,
|
|
1048
1048
|
label: gear
|
|
1049
|
-
}, h$
|
|
1049
|
+
}, h$63(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
1050
1050
|
type: "button",
|
|
1051
1051
|
size: "sm",
|
|
1052
1052
|
variant: "ghost",
|
|
1053
1053
|
className: `wb-cardGear${gearOpen === true ? " wb-iconButtonActive" : ""}`,
|
|
1054
1054
|
"aria-label": gear,
|
|
1055
1055
|
"aria-expanded": gearOpen === true,
|
|
1056
|
-
icon: h$
|
|
1056
|
+
icon: h$63(_deepseek_ai_dsh_client_ui_primitives.IconSettingsOutlineRegular, { size: 15 }),
|
|
1057
1057
|
onClick: onToggleGear
|
|
1058
1058
|
})));
|
|
1059
1059
|
}
|
|
@@ -1070,13 +1070,13 @@ function CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onTog
|
|
|
1070
1070
|
* @returns 一个 `<section>`。
|
|
1071
1071
|
*/
|
|
1072
1072
|
function Card({ t, title, refreshing, onRefresh, meta, head, children }) {
|
|
1073
|
-
return h$
|
|
1073
|
+
return h$63("section", { className: "wb-card" }, head === void 0 ? h$63(CardHead, {
|
|
1074
1074
|
t,
|
|
1075
1075
|
title,
|
|
1076
1076
|
refreshing,
|
|
1077
1077
|
onRefresh,
|
|
1078
1078
|
meta
|
|
1079
|
-
}) : head, h$
|
|
1079
|
+
}) : head, h$63("div", { className: "wb-cardBody" }, children));
|
|
1080
1080
|
}
|
|
1081
1081
|
var CardAnchor_module_default = { anchor: "_anchor_yq4s2_1" };
|
|
1082
1082
|
//#endregion
|
|
@@ -1096,7 +1096,7 @@ function cardIdOf(unit) {
|
|
|
1096
1096
|
* @returns 带 id 的占位 div。
|
|
1097
1097
|
*/
|
|
1098
1098
|
function CardAnchor({ unit, children }) {
|
|
1099
|
-
return h$
|
|
1099
|
+
return h$63("div", {
|
|
1100
1100
|
id: cardIdOf(unit),
|
|
1101
1101
|
className: CardAnchor_module_default.anchor
|
|
1102
1102
|
}, children);
|
|
@@ -1110,13 +1110,13 @@ function CardAnchor({ unit, children }) {
|
|
|
1110
1110
|
* @returns 一枚 `StateDot state="ongoing"`,自身不带文字。
|
|
1111
1111
|
*/
|
|
1112
1112
|
function Spinner({ size = 14, label }) {
|
|
1113
|
-
return h$
|
|
1113
|
+
return h$63("span", {
|
|
1114
1114
|
className: "wb-spinner",
|
|
1115
1115
|
...label === void 0 ? { "aria-hidden": true } : {
|
|
1116
1116
|
role: "status",
|
|
1117
1117
|
"aria-label": label
|
|
1118
1118
|
}
|
|
1119
|
-
}, h$
|
|
1119
|
+
}, h$63(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
1120
1120
|
state: "ongoing",
|
|
1121
1121
|
size
|
|
1122
1122
|
}));
|
|
@@ -1124,24 +1124,24 @@ function Spinner({ size = 14, label }) {
|
|
|
1124
1124
|
//#endregion
|
|
1125
1125
|
//#region ../shared/dist/components/ChoiceGroup.js
|
|
1126
1126
|
function ChoiceMenu(input) {
|
|
1127
|
-
const body = input.loading ? h$
|
|
1127
|
+
const body = input.loading ? h$63("span", {
|
|
1128
1128
|
className: "wb-choiceLoading",
|
|
1129
1129
|
role: "status"
|
|
1130
|
-
}, h$
|
|
1130
|
+
}, h$63(Spinner, { size: 14 }), h$63("span", { className: "wb-choiceLoadingText" }, input.loadingText ?? "…")) : input.options.length === 0 ? input.emptyText === void 0 ? null : h$63("span", { className: "wb-choiceEmpty" }, input.emptyText) : input.options.map((option) => {
|
|
1131
1131
|
const row = input.rowOf(option.value);
|
|
1132
|
-
return h$
|
|
1132
|
+
return h$63(Fragment$20, { key: option.value }, h$63("label", { className: `wb-choiceOption${row.checked ? " wb-choiceOptionOn" : ""}` }, h$63("input", {
|
|
1133
1133
|
className: input.multi ? "wb-checkbox" : "wb-radio",
|
|
1134
1134
|
type: input.multi ? "checkbox" : "radio",
|
|
1135
1135
|
name: input.name,
|
|
1136
1136
|
checked: row.checked,
|
|
1137
1137
|
disabled: input.disabled,
|
|
1138
1138
|
onChange: row.onSelect
|
|
1139
|
-
}), input.multi ? h$
|
|
1139
|
+
}), input.multi ? h$63("span", {
|
|
1140
1140
|
className: "wb-checkboxBox",
|
|
1141
1141
|
"aria-hidden": "true"
|
|
1142
|
-
}, row.checked ? h$
|
|
1142
|
+
}, row.checked ? h$63(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutlineRegular, { size: 12 }) : null) : null, h$63("span", { className: "wb-choiceLabel" }, h$63("span", { className: "wb-choiceLabelText" }, option.label), option.description === void 0 ? null : h$63("span", { className: "wb-choiceDescription" }, option.description))));
|
|
1143
1143
|
});
|
|
1144
|
-
return h$
|
|
1144
|
+
return h$63("div", {
|
|
1145
1145
|
className: "wb-choiceMenu",
|
|
1146
1146
|
"data-variant": input.variant,
|
|
1147
1147
|
role: input.multi ? "group" : "radiogroup",
|
|
@@ -1175,7 +1175,7 @@ function ChoiceGroup(props) {
|
|
|
1175
1175
|
if (props.multi === true) {
|
|
1176
1176
|
const values = props.values;
|
|
1177
1177
|
const onChange = props.onChange;
|
|
1178
|
-
return h$
|
|
1178
|
+
return h$63(ChoiceMenu, {
|
|
1179
1179
|
label: common.label,
|
|
1180
1180
|
name: common.name,
|
|
1181
1181
|
options: common.options,
|
|
@@ -1195,7 +1195,7 @@ function ChoiceGroup(props) {
|
|
|
1195
1195
|
}
|
|
1196
1196
|
const value = props.value;
|
|
1197
1197
|
const onChange = props.onChange;
|
|
1198
|
-
return h$
|
|
1198
|
+
return h$63(ChoiceMenu, {
|
|
1199
1199
|
label: common.label,
|
|
1200
1200
|
name: common.name,
|
|
1201
1201
|
options: common.options,
|
|
@@ -1248,17 +1248,17 @@ function variantOf(kind) {
|
|
|
1248
1248
|
function FormActions({ actions }) {
|
|
1249
1249
|
if (actions.length === 0) return null;
|
|
1250
1250
|
reportExtraPrimaries(actions);
|
|
1251
|
-
return h$
|
|
1251
|
+
return h$63("div", { className: "wb-formActions" }, ordered(actions).map((action) => {
|
|
1252
1252
|
const kind = kindOf(action);
|
|
1253
1253
|
const busy = action.busy === true;
|
|
1254
|
-
return h$
|
|
1254
|
+
return h$63(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
1255
1255
|
key: action.key,
|
|
1256
1256
|
type: "button",
|
|
1257
1257
|
size: "sm",
|
|
1258
1258
|
variant: variantOf(kind),
|
|
1259
1259
|
className: kind === "danger" ? "wb-formActionDanger" : void 0,
|
|
1260
1260
|
disabled: busy || action.disabled === true,
|
|
1261
|
-
icon: busy ? h$
|
|
1261
|
+
icon: busy ? h$63(Spinner, { size: 12 }) : void 0,
|
|
1262
1262
|
onClick: action.onClick
|
|
1263
1263
|
}, action.label);
|
|
1264
1264
|
}));
|
|
@@ -1271,7 +1271,7 @@ function FormActions({ actions }) {
|
|
|
1271
1271
|
* @returns 竖排的 div。
|
|
1272
1272
|
*/
|
|
1273
1273
|
function Rows({ children }) {
|
|
1274
|
-
return h$
|
|
1274
|
+
return h$63("div", { className: "wb-rows" }, children);
|
|
1275
1275
|
}
|
|
1276
1276
|
/**
|
|
1277
1277
|
* 一行键值:左边名字、右边值;要成对说明一项数据就用它,别自己写两栏。
|
|
@@ -1280,7 +1280,7 @@ function Rows({ children }) {
|
|
|
1280
1280
|
* @returns 一行两格。
|
|
1281
1281
|
*/
|
|
1282
1282
|
function Row({ label, value }) {
|
|
1283
|
-
return h$
|
|
1283
|
+
return h$63("div", { className: "wb-row" }, h$63("span", { className: "wb-rowKey" }, label), h$63("span", { className: "wb-rowValue" }, value));
|
|
1284
1284
|
}
|
|
1285
1285
|
//#endregion
|
|
1286
1286
|
//#region ../shared/dist/components/ConfirmBar.js
|
|
@@ -1297,19 +1297,19 @@ function Row({ label, value }) {
|
|
|
1297
1297
|
* @returns 一个 `role="group"` 的条;`actions` 空数组时最后那一块不渲染。
|
|
1298
1298
|
*/
|
|
1299
1299
|
function ConfirmBar({ title, hint, rows, actions, problem, busy, label }) {
|
|
1300
|
-
return h$
|
|
1300
|
+
return h$63("div", {
|
|
1301
1301
|
className: "wb-confirmBar",
|
|
1302
1302
|
role: "group",
|
|
1303
1303
|
"aria-label": label ?? (typeof title === "string" ? title : void 0),
|
|
1304
1304
|
"aria-busy": busy
|
|
1305
|
-
}, h$
|
|
1305
|
+
}, h$63("p", { className: "wb-confirmBarTitle" }, title), hint === void 0 ? null : h$63("p", { className: "wb-confirmBarHint" }, hint), rows === void 0 || rows.length === 0 ? null : h$63(Rows, null, rows.map((row) => h$63(Row, {
|
|
1306
1306
|
key: row.key,
|
|
1307
1307
|
label: row.label,
|
|
1308
1308
|
value: row.value
|
|
1309
|
-
}))), problem === void 0 ? null : h$
|
|
1309
|
+
}))), problem === void 0 ? null : h$63(Note, {
|
|
1310
1310
|
tone: "problem",
|
|
1311
1311
|
role: "alert"
|
|
1312
|
-
}, problem), h$
|
|
1312
|
+
}, problem), h$63(FormActions, { actions }));
|
|
1313
1313
|
}
|
|
1314
1314
|
//#endregion
|
|
1315
1315
|
//#region ../shared/dist/components/Field.js
|
|
@@ -1321,7 +1321,7 @@ function ConfirmBar({ title, hint, rows, actions, problem, busy, label }) {
|
|
|
1321
1321
|
* @returns 一个 `<label>`,点标签会聚焦里面的控件。
|
|
1322
1322
|
*/
|
|
1323
1323
|
function Field({ label, hint, children }) {
|
|
1324
|
-
return h$
|
|
1324
|
+
return h$63("label", { className: "wb-field" }, h$63("span", { className: "wb-fieldLabel" }, label), children, hint === void 0 ? null : h$63("span", { className: "wb-fieldHint" }, hint));
|
|
1325
1325
|
}
|
|
1326
1326
|
//#endregion
|
|
1327
1327
|
//#region ../shared/dist/components/FormRows.js
|
|
@@ -1331,7 +1331,7 @@ function Field({ label, hint, children }) {
|
|
|
1331
1331
|
* @returns 竖排的 div。
|
|
1332
1332
|
*/
|
|
1333
1333
|
function FormRows({ children }) {
|
|
1334
|
-
return h$
|
|
1334
|
+
return h$63("div", { className: "wb-formRows" }, children);
|
|
1335
1335
|
}
|
|
1336
1336
|
/**
|
|
1337
1337
|
* 表单一行:左边标签、右边控件,提示与错误占控件下面那一格。
|
|
@@ -1344,14 +1344,14 @@ function FormRows({ children }) {
|
|
|
1344
1344
|
* @returns 一个 `<div>`:里面的 `<label>` 只包标签文字,不包控件、提示与整行的空白。
|
|
1345
1345
|
*/
|
|
1346
1346
|
function FormRow({ label, htmlFor, hint, problem, layout = "inline", children }) {
|
|
1347
|
-
return h$
|
|
1347
|
+
return h$63("div", {
|
|
1348
1348
|
className: "wb-formRow",
|
|
1349
1349
|
"data-layout": layout,
|
|
1350
1350
|
"data-wb-problem": problem === void 0 ? void 0 : ""
|
|
1351
|
-
}, h$
|
|
1351
|
+
}, h$63("label", {
|
|
1352
1352
|
className: "wb-formLabel",
|
|
1353
1353
|
htmlFor
|
|
1354
|
-
}, label), h$
|
|
1354
|
+
}, label), h$63("span", { className: "wb-formControl" }, children), problem === void 0 ? hint === void 0 ? null : h$63("span", { className: "wb-formHint" }, hint) : h$63("span", { className: "wb-formProblem" }, problem));
|
|
1355
1355
|
}
|
|
1356
1356
|
//#endregion
|
|
1357
1357
|
//#region ../shared/dist/components/FormNodes.js
|
|
@@ -1498,7 +1498,7 @@ function formActionsOf(args) {
|
|
|
1498
1498
|
* @returns `FormRow` 组成的数组;没有可画的格子时给空数组。
|
|
1499
1499
|
*/
|
|
1500
1500
|
function formRowsOf(args) {
|
|
1501
|
-
return args.fields.map((field) => h$
|
|
1501
|
+
return args.fields.map((field) => h$63(FormRow, {
|
|
1502
1502
|
key: field.key,
|
|
1503
1503
|
label: field.label,
|
|
1504
1504
|
htmlFor: controlIdOf(field.key),
|
|
@@ -1576,7 +1576,7 @@ function Form(props) {
|
|
|
1576
1576
|
const { fields, onSubmit, submit, cancel, extra, busy = false, disabled = false, problem } = props;
|
|
1577
1577
|
const [done, setDone] = useState$35(false);
|
|
1578
1578
|
const [reveal, setReveal] = useState$35(0);
|
|
1579
|
-
const rootRef = useRef$
|
|
1579
|
+
const rootRef = useRef$22(null);
|
|
1580
1580
|
const shown = visibleFieldsOf(fields);
|
|
1581
1581
|
const problems = formProblemsOf(shown, done);
|
|
1582
1582
|
reportDuplicateKeys(shown);
|
|
@@ -1595,7 +1595,7 @@ function Form(props) {
|
|
|
1595
1595
|
}
|
|
1596
1596
|
onSubmit(outcome.values);
|
|
1597
1597
|
};
|
|
1598
|
-
return h$
|
|
1598
|
+
return h$63("form", {
|
|
1599
1599
|
className: "wb-form",
|
|
1600
1600
|
ref: rootRef,
|
|
1601
1601
|
noValidate: true,
|
|
@@ -1603,15 +1603,15 @@ function Form(props) {
|
|
|
1603
1603
|
event.preventDefault();
|
|
1604
1604
|
submitForm();
|
|
1605
1605
|
}
|
|
1606
|
-
}, h$
|
|
1606
|
+
}, h$63(FormRows, null, formRowsOf({
|
|
1607
1607
|
fields: shown,
|
|
1608
1608
|
problems,
|
|
1609
1609
|
showProblem: done,
|
|
1610
1610
|
busy
|
|
1611
|
-
})), problem === void 0 ? null : h$
|
|
1611
|
+
})), problem === void 0 ? null : h$63(Note, {
|
|
1612
1612
|
tone: "problem",
|
|
1613
1613
|
role: "alert"
|
|
1614
|
-
}, problem), h$
|
|
1614
|
+
}, problem), h$63(FormActions, { actions: formActionsOf({
|
|
1615
1615
|
extra,
|
|
1616
1616
|
cancel,
|
|
1617
1617
|
submit,
|
|
@@ -1632,7 +1632,7 @@ function Form(props) {
|
|
|
1632
1632
|
* @returns 一个 `<a>`。
|
|
1633
1633
|
*/
|
|
1634
1634
|
function Link({ href, children, title, external = true, className }) {
|
|
1635
|
-
return h$
|
|
1635
|
+
return h$63("a", {
|
|
1636
1636
|
className: className === void 0 ? "wb-link" : `wb-link ${className}`,
|
|
1637
1637
|
href,
|
|
1638
1638
|
...title === void 0 ? {} : { title },
|
|
@@ -1640,7 +1640,7 @@ function Link({ href, children, title, external = true, className }) {
|
|
|
1640
1640
|
target: "_blank",
|
|
1641
1641
|
rel: "noopener noreferrer"
|
|
1642
1642
|
} : {}
|
|
1643
|
-
}, children, external ? h$
|
|
1643
|
+
}, children, external ? h$63(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 12 }) : null);
|
|
1644
1644
|
}
|
|
1645
1645
|
//#endregion
|
|
1646
1646
|
//#region ../shared/dist/contract/long-task.js
|
|
@@ -1732,7 +1732,7 @@ var LONG_TASK_STOP_ARM_MS = 3e3;
|
|
|
1732
1732
|
//#endregion
|
|
1733
1733
|
//#region ../shared/dist/components/LongTaskRow.js
|
|
1734
1734
|
function RowLink({ href, text }) {
|
|
1735
|
-
return h$
|
|
1735
|
+
return h$63(Link, {
|
|
1736
1736
|
href,
|
|
1737
1737
|
className: "wb-longTaskLink"
|
|
1738
1738
|
}, text);
|
|
@@ -1781,14 +1781,14 @@ function LongTaskRow(props) {
|
|
|
1781
1781
|
setArmed(false);
|
|
1782
1782
|
stop.onStop();
|
|
1783
1783
|
};
|
|
1784
|
-
return h$
|
|
1784
|
+
return h$63("div", { className: "wb-longTask" }, h$63("p", { className: "wb-longTaskHead" }, h$63(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
1785
1785
|
state: longTaskDot(props.status),
|
|
1786
1786
|
size: 10
|
|
1787
|
-
}), h$
|
|
1787
|
+
}), h$63("span", { className: "wb-longTaskHeadline" }, props.headline), (props.links ?? []).map((link) => h$63(RowLink, {
|
|
1788
1788
|
href: link.href,
|
|
1789
1789
|
key: `${link.text}@${link.href}`,
|
|
1790
1790
|
text: link.text
|
|
1791
|
-
})), stop === void 0 ? null : h$
|
|
1791
|
+
})), stop === void 0 ? null : h$63("button", {
|
|
1792
1792
|
type: "button",
|
|
1793
1793
|
className: `wb-longTaskStop${armed ? " wb-longTaskStopArmed" : ""}`,
|
|
1794
1794
|
"data-stop-state": longTaskStopStage({
|
|
@@ -1799,31 +1799,31 @@ function LongTaskRow(props) {
|
|
|
1799
1799
|
disabled: busy,
|
|
1800
1800
|
onClick: onStopPress,
|
|
1801
1801
|
onBlur: () => setArmed(false)
|
|
1802
|
-
}, h$
|
|
1802
|
+
}, h$63(_deepseek_ai_dsh_client_ui_primitives.IconStopFillRegular, { size: 12 }), armed ? h$63("span", { className: "wb-longTaskStopLabel" }, stop.askLabel) : null)), problem === "" ? null : h$63("p", { className: "wb-longTaskProblem" }, problem), stopWhy === "" ? null : h$63("p", { className: "wb-longTaskStopWhy" }, stopWhy), !failed ? null : h$63(Fragment$20, null, steps.length === 0 || props.stepsTitle === void 0 ? null : h$63(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
|
|
1803
1803
|
className: "wb-longTaskDump",
|
|
1804
|
-
icon: h$
|
|
1804
|
+
icon: h$63(_deepseek_ai_dsh_client_ui_primitives.IconFlatListOutlineRegular, { size: 14 }),
|
|
1805
1805
|
title: props.stepsTitle,
|
|
1806
1806
|
open: stepsOpen,
|
|
1807
1807
|
expandable: true,
|
|
1808
1808
|
expandOnRowClick: true,
|
|
1809
1809
|
previewChevron: true,
|
|
1810
1810
|
onToggle: () => setStepsOpen(!stepsOpen)
|
|
1811
|
-
}, h$
|
|
1811
|
+
}, h$63(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
|
|
1812
1812
|
code: steps.join("\n"),
|
|
1813
1813
|
className: "wb-longTaskDump",
|
|
1814
1814
|
showHeader: props.copyLabel !== void 0,
|
|
1815
1815
|
copyLabel: props.copyLabel ?? "",
|
|
1816
1816
|
copiedLabel: props.copiedLabel ?? ""
|
|
1817
|
-
})), raw === "" || props.rawTitle === void 0 ? null : h$
|
|
1817
|
+
})), raw === "" || props.rawTitle === void 0 ? null : h$63(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
|
|
1818
1818
|
className: "wb-longTaskDump",
|
|
1819
|
-
icon: h$
|
|
1819
|
+
icon: h$63(_deepseek_ai_dsh_client_ui_primitives.IconCodeOutlineRegular, { size: 14 }),
|
|
1820
1820
|
title: props.rawTitle,
|
|
1821
1821
|
open: rawOpen,
|
|
1822
1822
|
expandable: true,
|
|
1823
1823
|
expandOnRowClick: true,
|
|
1824
1824
|
previewChevron: true,
|
|
1825
1825
|
onToggle: () => setRawOpen(!rawOpen)
|
|
1826
|
-
}, h$
|
|
1826
|
+
}, h$63(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
|
|
1827
1827
|
code: raw,
|
|
1828
1828
|
className: "wb-longTaskDump",
|
|
1829
1829
|
showHeader: props.copyLabel !== void 0,
|
|
@@ -1839,13 +1839,13 @@ function LongTaskRow(props) {
|
|
|
1839
1839
|
* @returns 一叠占位条。
|
|
1840
1840
|
*/
|
|
1841
1841
|
function SkeletonRows({ rows = 4 }) {
|
|
1842
|
-
return h$
|
|
1842
|
+
return h$63("div", {
|
|
1843
1843
|
className: "wb-skeleton",
|
|
1844
1844
|
"aria-hidden": "true"
|
|
1845
|
-
}, Array.from({ length: rows }, (_, index) => h$
|
|
1845
|
+
}, Array.from({ length: rows }, (_, index) => h$63("span", {
|
|
1846
1846
|
key: index,
|
|
1847
1847
|
className: "wb-skeletonRow"
|
|
1848
|
-
}, h$
|
|
1848
|
+
}, h$63("span", { className: "wb-skeletonBar wb-skeletonBarTitle" }), h$63("span", { className: "wb-skeletonBar wb-skeletonBarMeta" }))));
|
|
1849
1849
|
}
|
|
1850
1850
|
/**
|
|
1851
1851
|
* 居中一屏:要他先选一个 / 正在读 / 读不到时用它占住卡片版面。
|
|
@@ -1858,13 +1858,13 @@ function SkeletonRows({ rows = 4 }) {
|
|
|
1858
1858
|
* @returns 一个 `role="status"` 的居中块。
|
|
1859
1859
|
*/
|
|
1860
1860
|
function CenteredState({ icon, title, hint, detail, action, compact = false }) {
|
|
1861
|
-
return h$
|
|
1861
|
+
return h$63("div", {
|
|
1862
1862
|
className: compact ? "wb-centered wb-centeredCompact" : "wb-centered",
|
|
1863
1863
|
role: "status"
|
|
1864
|
-
}, icon === null ? null : h$
|
|
1864
|
+
}, icon === null ? null : h$63("span", {
|
|
1865
1865
|
className: "wb-centeredHero",
|
|
1866
1866
|
"aria-hidden": "true"
|
|
1867
|
-
}, icon), h$
|
|
1867
|
+
}, icon), h$63("div", { className: "wb-centeredTitle" }, title), hint === void 0 ? null : h$63("div", { className: "wb-centeredHint" }, hint), detail === void 0 ? null : h$63("div", { className: "wb-centeredDetail" }, detail), action === void 0 ? null : h$63("div", { className: "wb-centeredAction" }, action));
|
|
1868
1868
|
}
|
|
1869
1869
|
/**
|
|
1870
1870
|
* 就绪但空:它只是 `CenteredState` 的简写,标题就是那句空态文案。
|
|
@@ -1874,7 +1874,7 @@ function CenteredState({ icon, title, hint, detail, action, compact = false }) {
|
|
|
1874
1874
|
* @returns 一个居中块。
|
|
1875
1875
|
*/
|
|
1876
1876
|
function EmptyState({ text, icon = null, compact = false }) {
|
|
1877
|
-
return h$
|
|
1877
|
+
return h$63(CenteredState, {
|
|
1878
1878
|
icon,
|
|
1879
1879
|
title: text,
|
|
1880
1880
|
compact
|
|
@@ -1892,7 +1892,7 @@ function EmptyState({ text, icon = null, compact = false }) {
|
|
|
1892
1892
|
* @returns 一组按钮。
|
|
1893
1893
|
*/
|
|
1894
1894
|
function SaveBar({ busy, disabled, labels, onCancel, onSave }) {
|
|
1895
|
-
return h$
|
|
1895
|
+
return h$63(FormActions, { actions: [{
|
|
1896
1896
|
key: "cancel",
|
|
1897
1897
|
label: labels.cancel,
|
|
1898
1898
|
kind: "default",
|
|
@@ -1925,7 +1925,7 @@ function SaveBar({ busy, disabled, labels, onCancel, onSave }) {
|
|
|
1925
1925
|
* @returns 一颗 `<button>`。
|
|
1926
1926
|
*/
|
|
1927
1927
|
function selectTriggerNode(args) {
|
|
1928
|
-
return h$
|
|
1928
|
+
return h$63("button", {
|
|
1929
1929
|
type: "button",
|
|
1930
1930
|
id: args.id,
|
|
1931
1931
|
className: args.className,
|
|
@@ -1936,7 +1936,7 @@ function selectTriggerNode(args) {
|
|
|
1936
1936
|
"aria-label": args.ariaLabel,
|
|
1937
1937
|
title: args.title,
|
|
1938
1938
|
onClick: args.onOpen
|
|
1939
|
-
}, args.iconOnly ? h$
|
|
1939
|
+
}, args.iconOnly ? h$63("span", { className: "wb-selectIcon" }, args.icon) : h$63(Fragment$20, null, args.icon === void 0 ? null : h$63("span", { className: "wb-selectIcon" }, args.icon), h$63("span", { className: "wb-selectValue" }, args.value), h$63("span", { className: "wb-selectChevron" }, h$63(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, { size: 14 }))));
|
|
1940
1940
|
}
|
|
1941
1941
|
/**
|
|
1942
1942
|
* 名单还没读到时的触发器:禁用 + `aria-busy` 的按钮,`SelectField` 在 `loading` 那档画它。
|
|
@@ -1948,7 +1948,7 @@ function selectTriggerNode(args) {
|
|
|
1948
1948
|
* @returns 一颗禁用且 `aria-busy` 的按钮。
|
|
1949
1949
|
*/
|
|
1950
1950
|
function selectLoadingNode(args) {
|
|
1951
|
-
return h$
|
|
1951
|
+
return h$63("button", {
|
|
1952
1952
|
type: "button",
|
|
1953
1953
|
id: args.id,
|
|
1954
1954
|
className: `${args.className} wb-selectLoading`,
|
|
@@ -1957,7 +1957,7 @@ function selectLoadingNode(args) {
|
|
|
1957
1957
|
"aria-invalid": args.invalid || void 0,
|
|
1958
1958
|
"aria-label": args.ariaLabel,
|
|
1959
1959
|
title: args.loadingText
|
|
1960
|
-
}, h$
|
|
1960
|
+
}, h$63("span", { className: "wb-selectValue" }, h$63(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, { active: true }, args.loadingText ?? "…")), h$63("span", { className: "wb-selectChevron" }, h$63(Spinner, { size: 14 })));
|
|
1961
1961
|
}
|
|
1962
1962
|
//#endregion
|
|
1963
1963
|
//#region ../shared/dist/components/TextField.js
|
|
@@ -1967,7 +1967,7 @@ function selectLoadingNode(args) {
|
|
|
1967
1967
|
* @returns 输入框元素;`className` 是追加在基础类名之后,而不是替换它。
|
|
1968
1968
|
*/
|
|
1969
1969
|
function TextField({ invalid = false, className, ...rest }) {
|
|
1970
|
-
return h$
|
|
1970
|
+
return h$63("input", {
|
|
1971
1971
|
...rest,
|
|
1972
1972
|
className: className === void 0 ? "wb-textField" : `wb-textField ${className}`,
|
|
1973
1973
|
"aria-invalid": invalid || void 0
|
|
@@ -1990,7 +1990,7 @@ function itemOf(option, revealId) {
|
|
|
1990
1990
|
...option.icon === void 0 ? {} : { icon: option.icon },
|
|
1991
1991
|
...option.disabled === true ? { disabled: true } : {}
|
|
1992
1992
|
};
|
|
1993
|
-
const revealed = (node) => h$
|
|
1993
|
+
const revealed = (node) => h$63("span", {
|
|
1994
1994
|
className: "wb-selectReveal",
|
|
1995
1995
|
"data-wb-select-reveal": ""
|
|
1996
1996
|
}, node);
|
|
@@ -2012,14 +2012,14 @@ function useRevealOnOpen(open, revealId) {
|
|
|
2012
2012
|
}, [open, revealId]);
|
|
2013
2013
|
}
|
|
2014
2014
|
function selectValueNode(current, renderValue, placeholder) {
|
|
2015
|
-
if (current === void 0) return h$
|
|
2015
|
+
if (current === void 0) return h$63("span", { className: "wb-selectPlaceholder" }, placeholder ?? "—");
|
|
2016
2016
|
return renderValue === void 0 ? current.label : renderValue(current);
|
|
2017
2017
|
}
|
|
2018
2018
|
function searchNode(args) {
|
|
2019
|
-
return h$
|
|
2019
|
+
return h$63("span", {
|
|
2020
2020
|
ref: args.boxRef,
|
|
2021
2021
|
className: args.className
|
|
2022
|
-
}, h$
|
|
2022
|
+
}, h$63("span", { className: "wb-selectSearchIcon" }, h$63(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { size: 14 })), h$63(TextField, {
|
|
2023
2023
|
id: args.id,
|
|
2024
2024
|
name: args.name,
|
|
2025
2025
|
className: "wb-selectSearchInput",
|
|
@@ -2034,7 +2034,7 @@ function searchNode(args) {
|
|
|
2034
2034
|
}));
|
|
2035
2035
|
}
|
|
2036
2036
|
function menuNode(args) {
|
|
2037
|
-
return h$
|
|
2037
|
+
return h$63(_deepseek_ai_dsh_client_ui_primitives.Menu, {
|
|
2038
2038
|
open: args.open,
|
|
2039
2039
|
portal: true,
|
|
2040
2040
|
className: "wb-selectAnchor",
|
|
@@ -2051,11 +2051,11 @@ function menuNode(args) {
|
|
|
2051
2051
|
});
|
|
2052
2052
|
}
|
|
2053
2053
|
function framed(label, hint, className, control) {
|
|
2054
|
-
const inner = label === void 0 ? hint === void 0 ? control : h$
|
|
2054
|
+
const inner = label === void 0 ? hint === void 0 ? control : h$63("span", { className: "wb-select" }, control, h$63("span", { className: "wb-selectHint" }, hint)) : h$63(Field, {
|
|
2055
2055
|
label,
|
|
2056
2056
|
hint
|
|
2057
2057
|
}, control);
|
|
2058
|
-
return className === void 0 ? inner : h$
|
|
2058
|
+
return className === void 0 ? inner : h$63("div", { className }, inner);
|
|
2059
2059
|
}
|
|
2060
2060
|
/** 算候选项用来匹配搜索的文本:有 `searchText` 就用它,否则取字符串标签;标签不是字符串又没给它是空串(这项搜不到)。 */
|
|
2061
2061
|
function searchTextOf(option) {
|
|
@@ -2110,11 +2110,11 @@ function useSelectState(props) {
|
|
|
2110
2110
|
const [openState, setOpenState] = useState$35(false);
|
|
2111
2111
|
const [query, setQuery] = useState$35("");
|
|
2112
2112
|
const [cursor, setCursor] = useState$35(null);
|
|
2113
|
-
const boxRef = useRef$
|
|
2114
|
-
const triggerRef = useRef$
|
|
2115
|
-
const wasOpenRef = useRef$
|
|
2116
|
-
const pickedRef = useRef$
|
|
2117
|
-
const closedByUsRef = useRef$
|
|
2113
|
+
const boxRef = useRef$22(null);
|
|
2114
|
+
const triggerRef = useRef$22(null);
|
|
2115
|
+
const wasOpenRef = useRef$22(false);
|
|
2116
|
+
const pickedRef = useRef$22(false);
|
|
2117
|
+
const closedByUsRef = useRef$22(false);
|
|
2118
2118
|
const open = openProp ?? openState;
|
|
2119
2119
|
const setOpen = (next) => {
|
|
2120
2120
|
if (openProp === void 0) setOpenState(next);
|
|
@@ -2194,7 +2194,7 @@ function SelectField(props) {
|
|
|
2194
2194
|
ariaLabel,
|
|
2195
2195
|
loadingText
|
|
2196
2196
|
}));
|
|
2197
|
-
if (fallback !== void 0 && options.length === 0) return framed(label, hint, className, h$
|
|
2197
|
+
if (fallback !== void 0 && options.length === 0) return framed(label, hint, className, h$63(TextField, {
|
|
2198
2198
|
id,
|
|
2199
2199
|
name,
|
|
2200
2200
|
className: "wb-selectFallback",
|
|
@@ -2277,11 +2277,11 @@ function SelectField(props) {
|
|
|
2277
2277
|
* @returns 一个 `role="group"` 的 section。
|
|
2278
2278
|
*/
|
|
2279
2279
|
function SettingsSection({ label, title, action, children }) {
|
|
2280
|
-
return h$
|
|
2280
|
+
return h$63("section", {
|
|
2281
2281
|
className: "wb-settings",
|
|
2282
2282
|
role: "group",
|
|
2283
2283
|
"aria-label": label
|
|
2284
|
-
}, h$
|
|
2284
|
+
}, h$63("header", { className: "wb-settingsHead" }, h$63("span", { className: "wb-settingsTitle" }, title), action), children);
|
|
2285
2285
|
}
|
|
2286
2286
|
//#endregion
|
|
2287
2287
|
//#region ../shared/dist/components/Stack.js
|
|
@@ -2291,7 +2291,7 @@ function SettingsSection({ label, title, action, children }) {
|
|
|
2291
2291
|
* @returns 竖排的 div。
|
|
2292
2292
|
*/
|
|
2293
2293
|
function Stack({ children }) {
|
|
2294
|
-
return h$
|
|
2294
|
+
return h$63("div", { className: "wb-stack" }, children);
|
|
2295
2295
|
}
|
|
2296
2296
|
//#endregion
|
|
2297
2297
|
//#region ../shared/dist/components/StateBlock.js
|
|
@@ -2306,12 +2306,12 @@ function Stack({ children }) {
|
|
|
2306
2306
|
* @returns 一个 div。
|
|
2307
2307
|
*/
|
|
2308
2308
|
function StateBlock({ title, dot, hint, actions, resolving, children }) {
|
|
2309
|
-
return h$
|
|
2309
|
+
return h$63("div", { className: "wb-stateBlock" }, title === void 0 && dot === void 0 ? null : h$63("p", { className: "wb-stateBlockTitle" }, dot, title), resolving === void 0 ? null : h$63("p", { className: "wb-stateBlockResolving" }, resolving), hint === void 0 ? null : h$63("p", { className: "wb-stateBlockHint" }, hint), children, actions === void 0 ? null : h$63("div", { className: "wb-stateBlockActions" }, actions));
|
|
2310
2310
|
}
|
|
2311
2311
|
//#endregion
|
|
2312
2312
|
//#region ../shared/dist/components/icons.js
|
|
2313
2313
|
function Shell({ size, strokeWidth = 1, viewBox = "0 0 16 16", children }) {
|
|
2314
|
-
return h$
|
|
2314
|
+
return h$63("svg", {
|
|
2315
2315
|
width: size,
|
|
2316
2316
|
height: size,
|
|
2317
2317
|
viewBox,
|
|
@@ -2328,10 +2328,10 @@ function Shell({ size, strokeWidth = 1, viewBox = "0 0 16 16", children }) {
|
|
|
2328
2328
|
* @returns 一枚 `aria-hidden` 的 svg。
|
|
2329
2329
|
*/
|
|
2330
2330
|
function IconConversation({ size = 16 }) {
|
|
2331
|
-
return h$
|
|
2331
|
+
return h$63(Shell, {
|
|
2332
2332
|
size,
|
|
2333
2333
|
strokeWidth: 1.3
|
|
2334
|
-
}, h$
|
|
2334
|
+
}, h$63("path", {
|
|
2335
2335
|
d: "M2.5 7.2c0-2.3 2.1-4.2 4.8-4.2h1.4c2.7 0 4.8 1.9 4.8 4.2s-2.1 4.2-4.8 4.2H7.5l-3.2 2v-2.3c-1.1-.8-1.8-2-1.8-3.9Z",
|
|
2336
2336
|
stroke: "currentColor",
|
|
2337
2337
|
strokeLinejoin: "round"
|
|
@@ -2346,30 +2346,30 @@ var BRAND_TAIL_TRANSFORM = "translate(14.6263 10.5853) scale(1.95)";
|
|
|
2346
2346
|
* @returns 一枚 `aria-hidden` 的 svg。
|
|
2347
2347
|
*/
|
|
2348
2348
|
function IconBrandMark({ size = 24 }) {
|
|
2349
|
-
return h$
|
|
2349
|
+
return h$63(Shell, {
|
|
2350
2350
|
size,
|
|
2351
2351
|
viewBox: "0 0 64 64"
|
|
2352
|
-
}, h$
|
|
2352
|
+
}, h$63("path", {
|
|
2353
2353
|
d: BRAND_FRAME,
|
|
2354
2354
|
fill: "currentColor",
|
|
2355
2355
|
fillRule: "evenodd"
|
|
2356
|
-
}), h$
|
|
2356
|
+
}), h$63("rect", {
|
|
2357
2357
|
x: 27.5,
|
|
2358
2358
|
y: 48,
|
|
2359
2359
|
width: 9,
|
|
2360
2360
|
height: 4.75,
|
|
2361
2361
|
fill: "currentColor"
|
|
2362
|
-
}), h$
|
|
2362
|
+
}), h$63("rect", {
|
|
2363
2363
|
x: 19,
|
|
2364
2364
|
y: 52.75,
|
|
2365
2365
|
width: 26,
|
|
2366
2366
|
height: 4.75,
|
|
2367
2367
|
rx: 2.375,
|
|
2368
2368
|
fill: "currentColor"
|
|
2369
|
-
}), h$
|
|
2369
|
+
}), h$63("g", { transform: BRAND_TAIL_TRANSFORM }, h$63("path", {
|
|
2370
2370
|
d: BRAND_TAIL,
|
|
2371
2371
|
fill: "currentColor"
|
|
2372
|
-
}), h$
|
|
2372
|
+
}), h$63("circle", {
|
|
2373
2373
|
cx: 6.885,
|
|
2374
2374
|
cy: 13.742,
|
|
2375
2375
|
r: 1.95,
|
|
@@ -2382,30 +2382,30 @@ function IconBrandMark({ size = 24 }) {
|
|
|
2382
2382
|
* @returns 一枚 `aria-hidden` 的 svg。
|
|
2383
2383
|
*/
|
|
2384
2384
|
function IconOpencli({ size = 16 }) {
|
|
2385
|
-
return h$
|
|
2385
|
+
return h$63(Shell, {
|
|
2386
2386
|
size,
|
|
2387
2387
|
viewBox: "0 0 64 64"
|
|
2388
|
-
}, h$
|
|
2388
|
+
}, h$63("defs", null, h$63("linearGradient", {
|
|
2389
2389
|
id: "opencli-mark",
|
|
2390
2390
|
x1: "0%",
|
|
2391
2391
|
y1: "0%",
|
|
2392
2392
|
x2: "100%",
|
|
2393
2393
|
y2: "100%"
|
|
2394
|
-
}, h$
|
|
2394
|
+
}, h$63("stop", {
|
|
2395
2395
|
offset: "0%",
|
|
2396
2396
|
stopColor: "#00e5a0"
|
|
2397
|
-
}), h$
|
|
2397
|
+
}), h$63("stop", {
|
|
2398
2398
|
offset: "50%",
|
|
2399
2399
|
stopColor: "#00b4d8"
|
|
2400
|
-
}), h$
|
|
2400
|
+
}), h$63("stop", {
|
|
2401
2401
|
offset: "100%",
|
|
2402
2402
|
stopColor: "#7b61ff"
|
|
2403
|
-
}))), h$
|
|
2403
|
+
}))), h$63("rect", {
|
|
2404
2404
|
width: 64,
|
|
2405
2405
|
height: 64,
|
|
2406
2406
|
rx: 14,
|
|
2407
2407
|
fill: "#0a0a0f"
|
|
2408
|
-
}), h$
|
|
2408
|
+
}), h$63("text", {
|
|
2409
2409
|
x: "50%",
|
|
2410
2410
|
y: "54%",
|
|
2411
2411
|
dominantBaseline: "middle",
|
|
@@ -2422,10 +2422,10 @@ function IconOpencli({ size = 16 }) {
|
|
|
2422
2422
|
* @returns 一枚 `aria-hidden` 的 svg。
|
|
2423
2423
|
*/
|
|
2424
2424
|
function IconNpm({ size = 16 }) {
|
|
2425
|
-
return h$
|
|
2425
|
+
return h$63(Shell, {
|
|
2426
2426
|
size,
|
|
2427
2427
|
viewBox: "0 0 1024 1024"
|
|
2428
|
-
}, h$
|
|
2428
|
+
}, h$63("path", {
|
|
2429
2429
|
d: "M64 337.76h896v298.72H512v49.792H312.896v-49.824H64z m49.792 248.928h99.552v-149.376h49.76v149.344h49.792v-199.104H113.792z m248.896-199.136v248.928h99.552v-49.792h99.552v-199.136z m99.552 49.792H512v99.584h-49.792z m149.344-49.792v199.136h99.552v-149.376h49.792v149.344h49.792v-149.344h49.792v149.344h49.792v-199.104z",
|
|
2430
2430
|
fill: "#CB3837"
|
|
2431
2431
|
}));
|
|
@@ -2436,37 +2436,37 @@ function IconNpm({ size = 16 }) {
|
|
|
2436
2436
|
* @returns 一枚 `aria-hidden` 的 svg。
|
|
2437
2437
|
*/
|
|
2438
2438
|
function IconModuleMark({ size = 16 }) {
|
|
2439
|
-
return h$
|
|
2439
|
+
return h$63(Shell, {
|
|
2440
2440
|
size,
|
|
2441
2441
|
viewBox: "0 0 24 24"
|
|
2442
|
-
}, h$
|
|
2442
|
+
}, h$63("defs", null, h$63("linearGradient", {
|
|
2443
2443
|
id: "workbench-module-mark",
|
|
2444
2444
|
x1: "0%",
|
|
2445
2445
|
y1: "0%",
|
|
2446
2446
|
x2: "100%",
|
|
2447
2447
|
y2: "100%"
|
|
2448
|
-
}, h$
|
|
2448
|
+
}, h$63("stop", {
|
|
2449
2449
|
offset: "0%",
|
|
2450
2450
|
stopColor: "#3b82f6"
|
|
2451
|
-
}), h$
|
|
2451
|
+
}), h$63("stop", {
|
|
2452
2452
|
offset: "55%",
|
|
2453
2453
|
stopColor: "#8b5cf6"
|
|
2454
|
-
}), h$
|
|
2454
|
+
}), h$63("stop", {
|
|
2455
2455
|
offset: "100%",
|
|
2456
2456
|
stopColor: "#14b8a6"
|
|
2457
|
-
}))), h$
|
|
2457
|
+
}))), h$63("rect", {
|
|
2458
2458
|
width: 24,
|
|
2459
2459
|
height: 24,
|
|
2460
2460
|
rx: 7,
|
|
2461
2461
|
fill: "url(#workbench-module-mark)"
|
|
2462
|
-
}), h$
|
|
2462
|
+
}), h$63("rect", {
|
|
2463
2463
|
x: "4.6",
|
|
2464
2464
|
y: "4.6",
|
|
2465
2465
|
width: "6.2",
|
|
2466
2466
|
height: "6.2",
|
|
2467
2467
|
rx: "1.9",
|
|
2468
2468
|
fill: "#ffffff"
|
|
2469
|
-
}), h$
|
|
2469
|
+
}), h$63("rect", {
|
|
2470
2470
|
x: "13.2",
|
|
2471
2471
|
y: "4.6",
|
|
2472
2472
|
width: "6.2",
|
|
@@ -2474,7 +2474,7 @@ function IconModuleMark({ size = 16 }) {
|
|
|
2474
2474
|
rx: "1.9",
|
|
2475
2475
|
fill: "#ffffff",
|
|
2476
2476
|
fillOpacity: .78
|
|
2477
|
-
}), h$
|
|
2477
|
+
}), h$63("rect", {
|
|
2478
2478
|
x: "4.6",
|
|
2479
2479
|
y: "13.2",
|
|
2480
2480
|
width: "6.2",
|
|
@@ -2482,7 +2482,7 @@ function IconModuleMark({ size = 16 }) {
|
|
|
2482
2482
|
rx: "1.9",
|
|
2483
2483
|
fill: "#ffffff",
|
|
2484
2484
|
fillOpacity: .78
|
|
2485
|
-
}), h$
|
|
2485
|
+
}), h$63("rect", {
|
|
2486
2486
|
x: "13.2",
|
|
2487
2487
|
y: "13.2",
|
|
2488
2488
|
width: "6.2",
|
|
@@ -2497,7 +2497,7 @@ function IconModuleMark({ size = 16 }) {
|
|
|
2497
2497
|
* @returns 一枚 `aria-hidden` 的 svg。
|
|
2498
2498
|
*/
|
|
2499
2499
|
function IconPanelScreen({ size = 16 }) {
|
|
2500
|
-
return h$
|
|
2500
|
+
return h$63("svg", {
|
|
2501
2501
|
width: size,
|
|
2502
2502
|
height: size,
|
|
2503
2503
|
viewBox: "0 0 1024 1024",
|
|
@@ -2508,7 +2508,7 @@ function IconPanelScreen({ size = 16 }) {
|
|
|
2508
2508
|
display: "block",
|
|
2509
2509
|
overflow: "hidden"
|
|
2510
2510
|
}
|
|
2511
|
-
}, h$
|
|
2511
|
+
}, h$63("path", { d: "M939 112c17.673 0 32 14.327 32 32v554.667c0 17.673-14.327 32-32 32l-394.5-0.001v96c0 3.74-0.642 7.331-1.82 10.668H768.4c17.673 0 32 14.326 32 32 0 17.496-14.042 31.712-31.47 31.995l-0.53 0.004H256.6c-17.673 0-32-14.327-32-32 0-17.496 14.042-31.713 31.47-31.995l0.53-0.005h225.721a31.923 31.923 0 0 1-1.817-10.137l-0.004-0.53v-96H86c-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V144c0-17.673 14.327-32 32-32z m-32 64H118v490.666h789V176zM341.9 432c17.496 0 31.713 14.042 31.996 31.47l0.004 0.53v85.333c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V464c0-17.673 14.327-32 32-32z m170.6-85.333c17.496 0 31.713 14.041 31.996 31.47l0.004 0.53v170.666c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V378.667c0-17.673 14.327-32 32-32z m170.6-85.334c17.496 0 31.713 14.042 31.996 31.471l0.004 0.53v256c0 17.672-14.327 32-32 32-17.496 0-31.713-14.042-31.996-31.471l-0.004-0.53v-256c0-17.673 14.327-32 32-32z" }));
|
|
2512
2512
|
}
|
|
2513
2513
|
//#endregion
|
|
2514
2514
|
//#region ../shared/dist/config/storage.js
|
|
@@ -2723,6 +2723,32 @@ var SIDEBAR_EDITION_RESOURCE = "sidebarEdition";
|
|
|
2723
2723
|
//#region ../shared/dist/contract/protocol/unit-manifests.js
|
|
2724
2724
|
var UNIT_MANIFESTS_ROUTE = "unit-manifests";
|
|
2725
2725
|
//#endregion
|
|
2726
|
+
//#region ../shared/dist/contract/unit.js
|
|
2727
|
+
/**
|
|
2728
|
+
* 外壳替模块名合成的词表键:模块自己不必写名字键,名字直接从清单里的 title 注册进来。
|
|
2729
|
+
* @param unit 单元 id。
|
|
2730
|
+
* @returns 该单元名字在词表里的键。
|
|
2731
|
+
*/
|
|
2732
|
+
function unitTitleKey(unit) {
|
|
2733
|
+
return `dsh-workbench.unit.${unit}.title`;
|
|
2734
|
+
}
|
|
2735
|
+
/**
|
|
2736
|
+
* 模块声明的全部环境需要(没写就是空表)。
|
|
2737
|
+
* @param manifest 模块清单。
|
|
2738
|
+
* @returns need 列表。
|
|
2739
|
+
*/
|
|
2740
|
+
function needsOf(manifest) {
|
|
2741
|
+
return manifest.needs ?? [];
|
|
2742
|
+
}
|
|
2743
|
+
/**
|
|
2744
|
+
* 市场门槛要看的那些需要:声明了 extension / lib 就算(不要求写了来源)。
|
|
2745
|
+
* @param manifest 模块清单。
|
|
2746
|
+
* @returns extension / lib 的 need 列表。
|
|
2747
|
+
*/
|
|
2748
|
+
function supplyNeedsOf(manifest) {
|
|
2749
|
+
return needsOf(manifest).filter((need) => need.kind === "extension" || need.kind === "lib");
|
|
2750
|
+
}
|
|
2751
|
+
//#endregion
|
|
2726
2752
|
//#region ../shared/dist/contract/needs.js
|
|
2727
2753
|
function text(value) {
|
|
2728
2754
|
return typeof value === "string" ? value.trim() : "";
|
|
@@ -2785,24 +2811,6 @@ Object.freeze({
|
|
|
2785
2811
|
})
|
|
2786
2812
|
});
|
|
2787
2813
|
//#endregion
|
|
2788
|
-
//#region ../shared/dist/contract/unit.js
|
|
2789
|
-
/**
|
|
2790
|
-
* 模块声明的全部环境需要(没写就是空表)。
|
|
2791
|
-
* @param manifest 模块清单。
|
|
2792
|
-
* @returns need 列表。
|
|
2793
|
-
*/
|
|
2794
|
-
function needsOf(manifest) {
|
|
2795
|
-
return manifest.needs ?? [];
|
|
2796
|
-
}
|
|
2797
|
-
/**
|
|
2798
|
-
* 市场门槛要看的那些需要:声明了 extension / lib 就算(不要求写了来源)。
|
|
2799
|
-
* @param manifest 模块清单。
|
|
2800
|
-
* @returns extension / lib 的 need 列表。
|
|
2801
|
-
*/
|
|
2802
|
-
function supplyNeedsOf(manifest) {
|
|
2803
|
-
return needsOf(manifest).filter((need) => need.kind === "extension" || need.kind === "lib");
|
|
2804
|
-
}
|
|
2805
|
-
//#endregion
|
|
2806
2814
|
//#region ../shared/dist/i18n/settings.js
|
|
2807
2815
|
/** 「工作台设置」这一组的词条:配置同步 / 新建工作台。 */
|
|
2808
2816
|
var zhSettings = {
|
|
@@ -3071,15 +3079,14 @@ var en = {
|
|
|
3071
3079
|
"panels.market.update": "Update",
|
|
3072
3080
|
"panels.market.swapSlow": "Not swapped yet — maybe a slow or failed download. Press Update again; if it stays like this, restart dsh.",
|
|
3073
3081
|
"panels.market.removeSlow": "Not removed yet — maybe a slow network or an uninstall that did not finish. Check again in a moment; if it stays like this, restart dsh.",
|
|
3074
|
-
"panels.market.updateNoChange": "
|
|
3082
|
+
"panels.market.updateNoChange": "Update failed: still {from}. The newest on the registry is {latest} — press Update again.",
|
|
3075
3083
|
"panels.market.updateUnknownVersion": "(unknown)",
|
|
3076
|
-
"panels.market.updateGone": "
|
|
3077
|
-
"panels.market.updateRestored": "
|
|
3084
|
+
"panels.market.updateGone": "Update failed: the module is gone after the update.",
|
|
3085
|
+
"panels.market.updateRestored": "Update failed: the new version could not be found after the update, so {version} was put back.",
|
|
3078
3086
|
"panels.market.updateBehind": "Installed {installed}, but the newest on the registry is {latest} — not the latest; you can update once more.",
|
|
3079
|
-
"panels.market.selfUpdateFailed": "
|
|
3087
|
+
"panels.market.selfUpdateFailed": "Workbench update failed: {reason}",
|
|
3080
3088
|
"panels.market.selfUpdateUnknown": "the outside process left no reason (see ~/.dsh/workbench/self-update.log)",
|
|
3081
|
-
"panels.market.selfUpdateRolledBack": "
|
|
3082
|
-
"panels.market.selfUpdateNeedsMigrate": "Workbench updated. Old sessions and projects are not merged automatically: quit every dsh, then run dsh-workbench migrate (--force to merge again).",
|
|
3089
|
+
"panels.market.selfUpdateRolledBack": "Workbench update failed; rolled back to {version}.",
|
|
3083
3090
|
"panels.market.uninstall": "Uninstall",
|
|
3084
3091
|
"panels.market.uninstallLabel": "Uninstall {name}",
|
|
3085
3092
|
"panels.market.installing": "Installing…",
|
|
@@ -3101,9 +3108,27 @@ var en = {
|
|
|
3101
3108
|
"panels.market.empty": "No modules available",
|
|
3102
3109
|
"panels.market.sectionPlugins": "Installed opencli plugins",
|
|
3103
3110
|
"panels.market.moduleOutdated": "update available",
|
|
3111
|
+
"panels.market.updateNeedsWorkbench": "this version needs a newer workbench first",
|
|
3112
|
+
"panels.market.updateIncompatible": "the new version does not match this workbench, so it cannot be installed now",
|
|
3104
3113
|
"panels.market.moduleRefused": "This module does not match this workbench, so it cannot be used for now.",
|
|
3105
3114
|
"panels.market.moduleRestartHint": "restart dsh once to bring it up",
|
|
3106
3115
|
"panels.market.pendingRestart": "restart required",
|
|
3116
|
+
"panels.market.pendingFollowUp": "old data to migrate",
|
|
3117
|
+
"panels.market.migrationHint": "old sessions and projects are not merged yet",
|
|
3118
|
+
"panels.market.migrateAction": "Migrate old data",
|
|
3119
|
+
"panels.market.migrating": "Migrating…",
|
|
3120
|
+
"panels.market.migrateConfirmTitle": "Migrate old data?",
|
|
3121
|
+
"panels.market.migrateConfirmDetail": "Quit dsh web / Desktop first. Only missing data is added; nothing is overwritten.",
|
|
3122
|
+
"panels.market.migrateConfirmAck": "I've quit dsh web / Desktop",
|
|
3123
|
+
"panels.market.migrateConfirmYes": "Start migration",
|
|
3124
|
+
"panels.market.migrateDone": "Migration complete: {added} projects added; restart the workbench and dsh web to see them.",
|
|
3125
|
+
"panels.market.dismissFollowUp": "Don't remind me",
|
|
3126
|
+
"panels.market.dismissing": "Dismissing…",
|
|
3127
|
+
"panels.market.dismissFollowUpTitle": "Stop reminding about this?",
|
|
3128
|
+
"panels.market.dismissFollowUpDetail": "The reminder will be hidden from the market, but old data will not be migrated or deleted. Old sessions and projects stay in the old directory and won't appear in the new version; you can still run dsh-workbench migrate later.",
|
|
3129
|
+
"panels.market.dismissFollowUpAck": "I understand the old data won't appear automatically",
|
|
3130
|
+
"panels.market.dismissFollowUpYes": "Don't remind me",
|
|
3131
|
+
"panels.market.dismissed": "No longer reminded; old data stays in the old directory and can still be migrated with dsh-workbench migrate.",
|
|
3107
3132
|
"panels.market.workbenchName": "Workbench",
|
|
3108
3133
|
"panels.market.pluginBroken": "This plugin install is broken: it cannot be identified. Uninstall it first, then ask the agent to reinstall it by package name.",
|
|
3109
3134
|
"panels.market.restartNeeded": "The new version is installed — restart once to pick it up.",
|
|
@@ -3187,7 +3212,7 @@ var en = {
|
|
|
3187
3212
|
"panels.market.add.exampleTitle": "Examples",
|
|
3188
3213
|
"panels.market.add.exampleFill": "Fill in an example",
|
|
3189
3214
|
"panels.market.add.registryLabel": "Source",
|
|
3190
|
-
"panels.market.add.registryProfile": "This
|
|
3215
|
+
"panels.market.add.registryProfile": "This workbench's registry",
|
|
3191
3216
|
"panels.market.add.registryPnpm": "pnpm's own registry",
|
|
3192
3217
|
"panels.market.add.check": "Check",
|
|
3193
3218
|
"panels.market.add.checking": "Checking…",
|
|
@@ -3208,14 +3233,19 @@ var en = {
|
|
|
3208
3233
|
"panels.market.tabs": "The two faces of the module market",
|
|
3209
3234
|
"panels.tab.discover": "Discover",
|
|
3210
3235
|
"panels.discover.loading": "Reading the index",
|
|
3236
|
+
"panels.discover.slowHint": "Slow to load: finish any authorization prompt, or switch sources.",
|
|
3211
3237
|
"panels.discover.lead": "Browse modules from an index source; install and go.",
|
|
3212
3238
|
"panels.discover.addSource": "Add",
|
|
3213
3239
|
"panels.discover.addingSource": "Adding…",
|
|
3214
3240
|
"panels.discover.addFirstSource": "Add index source",
|
|
3215
3241
|
"panels.discover.removeSource": "Remove",
|
|
3216
3242
|
"panels.discover.removeSourceNamed": "Remove {url}",
|
|
3243
|
+
"panels.discover.useSource": "Use",
|
|
3244
|
+
"panels.discover.useSourceNamed": "Use {label}",
|
|
3245
|
+
"panels.discover.sourceCurrent": "In use",
|
|
3217
3246
|
"panels.discover.refresh": "Refresh",
|
|
3218
3247
|
"panels.discover.search": "Search modules",
|
|
3248
|
+
"panels.discover.clearSearch": "Clear search",
|
|
3219
3249
|
"panels.discover.all": "All",
|
|
3220
3250
|
"panels.discover.sourceLabel": "Name",
|
|
3221
3251
|
"panels.discover.sourceKind": "Type",
|
|
@@ -3225,8 +3255,8 @@ var en = {
|
|
|
3225
3255
|
"panels.discover.sourcePlaceholder": "https://example.com/index.json or git@git.example.com:wb/market.git",
|
|
3226
3256
|
"panels.discover.sourceRef": "Branch",
|
|
3227
3257
|
"panels.discover.sourcePath": "Index file",
|
|
3228
|
-
"panels.discover.sourceLocal": "Local
|
|
3229
|
-
"panels.discover.sourceLocalHint": "Leave empty to
|
|
3258
|
+
"panels.discover.sourceLocal": "Local copy folder (optional)",
|
|
3259
|
+
"panels.discover.sourceLocalHint": "Leave empty to keep it in ~/.dsh/workbench/market-index/.",
|
|
3230
3260
|
"panels.discover.save": "Save and refresh",
|
|
3231
3261
|
"panels.discover.cancel": "Cancel",
|
|
3232
3262
|
"panels.discover.retry": "Retry",
|
|
@@ -3239,9 +3269,9 @@ var en = {
|
|
|
3239
3269
|
"panels.discover.missingIndex": "This repository has no {path} yet.",
|
|
3240
3270
|
"panels.discover.initTitle": "Initialize this repository as a module market index?",
|
|
3241
3271
|
"panels.discover.initCta": "Initialize market index",
|
|
3242
|
-
"panels.discover.initWhat": "It will write market.json and README.md on {branch}, commit once, and push. Modules you publish from this workbench will commit their
|
|
3272
|
+
"panels.discover.initWhat": "It will write market.json and README.md on {branch}, commit once, and push. Modules you publish from this workbench will commit their build files under packages/<unit>/. The repository stays owned by its owner.",
|
|
3243
3273
|
"panels.discover.initBranch": "Branch",
|
|
3244
|
-
"panels.discover.initBranchHint": "The index and
|
|
3274
|
+
"panels.discover.initBranchHint": "The index and build files go to this branch; an empty repository gets it created.",
|
|
3245
3275
|
"panels.discover.initBranchBad": "Use only letters, digits, dots, underscores, slashes, or dashes in a branch name.",
|
|
3246
3276
|
"panels.discover.initOk": "Initialize",
|
|
3247
3277
|
"panels.discover.initBusy": "Initializing…",
|
|
@@ -3345,11 +3375,11 @@ var en = {
|
|
|
3345
3375
|
"panels.market.add.doneApplied": "Installed and live.",
|
|
3346
3376
|
"panels.market.add.doneRestart": "Installed — restart once to pick it up.",
|
|
3347
3377
|
"panels.market.add.restartWhy": "Why this needs a restart: {reason}",
|
|
3348
|
-
"panels.market.add.restartWhy.no-hmr": "this configuration only
|
|
3378
|
+
"panels.market.add.restartWhy.no-hmr": "this configuration is only read at startup, so a restart is needed",
|
|
3349
3379
|
"panels.market.add.restartWhy.package-moved": "an installed package now resolves to another directory, or the change replaced something dsh itself provides",
|
|
3350
3380
|
"panels.market.add.restartWhy.host-module": "the change reaches modules dsh itself loaded",
|
|
3351
|
-
"panels.market.add.restartWhy.unmanaged-plugin": "the change reaches a plugin running
|
|
3352
|
-
"panels.market.add.restartWhy.module-comparison": "dsh could not
|
|
3381
|
+
"panels.market.add.restartWhy.unmanaged-plugin": "the change reaches a plugin that is running but not on the install list",
|
|
3382
|
+
"panels.market.add.restartWhy.module-comparison": "dsh could not confirm that the running plugin is the copy installed on this machine",
|
|
3353
3383
|
"panels.market.add.cancelled": "Cancelled.",
|
|
3354
3384
|
"panels.market.add.failed": "Didn't work: {reason}",
|
|
3355
3385
|
"panels.market.add.removed": "It has been removed.",
|
|
@@ -3359,10 +3389,10 @@ var en = {
|
|
|
3359
3389
|
"panels.market.add.removedRestart": "Removed — restart once to finish.",
|
|
3360
3390
|
"panels.market.add.remove": "Remove it",
|
|
3361
3391
|
"panels.market.add.problem.invalidSpec": "That is not a spec we accept: it cannot be empty or start with a dash.",
|
|
3362
|
-
"panels.market.add.problem.alreadyInstalled": "That package is already in
|
|
3392
|
+
"panels.market.add.problem.alreadyInstalled": "That package is already in this workbench (add @version to switch versions).",
|
|
3363
3393
|
"panels.market.add.problem.notFound": "No such package on that source. Try another name or version.",
|
|
3364
3394
|
"panels.market.add.problem.notAPackage": "There is no package at that location. Pick a folder that contains a package.json.",
|
|
3365
|
-
"panels.market.add.problem.notABundle": "It is an npm package, but not a dsh plugin (
|
|
3395
|
+
"panels.market.add.problem.notABundle": "It is an npm package, but not a dsh plugin (dsh cannot find what to load inside it).",
|
|
3366
3396
|
"panels.market.add.problem.network": "The source is unreachable. Check the network and retry.",
|
|
3367
3397
|
"panels.market.add.problem.unknown": "The check did not pass (reason unknown). Open the install details for the raw output, or retry.",
|
|
3368
3398
|
"panels.market.add.reason.invalidSpec": "the spec is not accepted",
|
|
@@ -3370,7 +3400,7 @@ var en = {
|
|
|
3370
3400
|
"panels.market.add.reason.notBundle": "it is not a dsh plugin package",
|
|
3371
3401
|
"panels.market.add.reason.notRemovable": "it ships with the installation and cannot be removed",
|
|
3372
3402
|
"panels.market.add.reason.bundleInUse": "something is still using it",
|
|
3373
|
-
"panels.market.add.reason.stopProfile": "this configuration
|
|
3403
|
+
"panels.market.add.reason.stopProfile": "this configuration needs a restart, so stop the workbench first",
|
|
3374
3404
|
"panels.market.add.reason.staleApproval": "the scripts to allow changed — start over",
|
|
3375
3405
|
"panels.market.add.reason.operationError": "pnpm failed (see the install output)",
|
|
3376
3406
|
"panels.market.add.reason.buildBlocked": "pnpm blocked install scripts",
|
|
@@ -3400,8 +3430,8 @@ var en = {
|
|
|
3400
3430
|
"blocker.forbidden.titleGeneric": "No access",
|
|
3401
3431
|
"blocker.forbidden.hint": "You are signed in, but this project/repo is not permitted for your account.",
|
|
3402
3432
|
"blocker.forbidden.open": "Open permissions page",
|
|
3403
|
-
"blocker.timeout.hint": "The
|
|
3404
|
-
"blocker.exec.hint": "Make sure opencli is installed and
|
|
3433
|
+
"blocker.timeout.hint": "The background browser may not have started; retrying usually helps.",
|
|
3434
|
+
"blocker.exec.hint": "Make sure opencli is installed and runs from your terminal (which opencli).",
|
|
3405
3435
|
"blocker.unknown.title": "Something went wrong",
|
|
3406
3436
|
"panels.reading": "Reading the panel setup…",
|
|
3407
3437
|
"panels.cardBroken": "This module will not render: {unit} ({reason})",
|
|
@@ -3415,7 +3445,7 @@ var en = {
|
|
|
3415
3445
|
"env.elapsed": "Waiting {seconds}s",
|
|
3416
3446
|
"env.stepFailed.install": "install failed",
|
|
3417
3447
|
"env.stepFailed.path": "installed but not found",
|
|
3418
|
-
"env.stepFailed.shell": "
|
|
3448
|
+
"env.stepFailed.shell": "cannot reach the command line",
|
|
3419
3449
|
"env.toolchain.ok": "Looks good",
|
|
3420
3450
|
"env.toolchain.warn": "Almost ready",
|
|
3421
3451
|
"env.opencli.ok": "Ready",
|
|
@@ -3432,10 +3462,10 @@ var en = {
|
|
|
3432
3462
|
"env.fix.title": "How to fix it",
|
|
3433
3463
|
"env.fix.why": "The workbench uses its own background tool (installed separately from the one in your terminal), and it is not set up on this machine yet.",
|
|
3434
3464
|
"env.fix.whyPath": "The background tool is installed, but this environment cannot find it — usually a PATH or shell-session issue.",
|
|
3435
|
-
"env.fix.whyShell": "The workbench
|
|
3465
|
+
"env.fix.whyShell": "The workbench cannot reach the command line on this machine, so it cannot fetch data — you cannot install this from here; someone needs to fix the background environment.",
|
|
3436
3466
|
"env.fix.step": "Run this in a terminal, then hit Retry:",
|
|
3437
3467
|
"env.fix.stepPath": "Open a new terminal window (or make sure npm’s global bin directory is on PATH), then hit Retry.",
|
|
3438
|
-
"env.fix.stepShell": "Restart the workbench (or dsh); if it keeps happening, the
|
|
3468
|
+
"env.fix.stepShell": "Restart the workbench (or dsh); if it keeps happening, the workbench still cannot reach the command line.",
|
|
3439
3469
|
"env.fix.permission": "Permission denied: rerun with sudo, or point npm’s global directory at your home.",
|
|
3440
3470
|
"env.fix.network": "Network unreachable: check your network or proxy, then retry.",
|
|
3441
3471
|
"env.fix.details": "Details (for troubleshooting)",
|
|
@@ -3464,9 +3494,9 @@ var en = {
|
|
|
3464
3494
|
"env.warm.done": "Ready ({n} sites)",
|
|
3465
3495
|
"env.warm.short": "Could not sign in early this time — nothing breaks; the first read fills it in",
|
|
3466
3496
|
"env.unit.failed": "This module cannot start",
|
|
3467
|
-
"env.unit.failedHint": "It failed while
|
|
3468
|
-
"env.unit.unchecked": "Cannot check: no
|
|
3469
|
-
"env.unit.uncheckedHint": "The module is not the problem — the
|
|
3497
|
+
"env.unit.failedHint": "It failed while starting up; other modules are unaffected.",
|
|
3498
|
+
"env.unit.unchecked": "Cannot check: no command line",
|
|
3499
|
+
"env.unit.uncheckedHint": "The module is not the problem — the workbench cannot reach the command line. Restart the workbench.",
|
|
3470
3500
|
"adapterSet.not-configured": "No adapter set configured; using the default.",
|
|
3471
3501
|
"adapterSet.no-profile": "No profile found, so the adapter set cannot load; using the default.",
|
|
3472
3502
|
"adapterSet.malformed": "An adapter set must be a package name (for example @acme/adapters-set); using the default.",
|
|
@@ -3509,7 +3539,7 @@ var en = {
|
|
|
3509
3539
|
"sidebarEdition.official": "Official",
|
|
3510
3540
|
"sidebarEdition.officialHint": "Matches dsh exactly and stays stable: search, view options, show more, archive, add workspace — no waiting for us to catch up. Pick it to keep things simple.",
|
|
3511
3541
|
"sidebarEdition.custom": "Custom",
|
|
3512
|
-
"sidebarEdition.customHint": "Built for multi-project work: one project per dropdown, recency-first sessions,
|
|
3542
|
+
"sidebarEdition.customHint": "Built for multi-project work: one project per dropdown, recency-first sessions, long names scroll, edges fade, DIY new session. Easier when you juggle projects.",
|
|
3513
3543
|
"sidebarEdition.saving": "Configuring…",
|
|
3514
3544
|
"sidebarEdition.reloadRequired": "Saved. Reload the page to apply — no workbench restart needed.",
|
|
3515
3545
|
"sidebarEdition.reload": "Reload page",
|
|
@@ -3538,25 +3568,25 @@ var en = {
|
|
|
3538
3568
|
"record.act.halt": "Halt",
|
|
3539
3569
|
"approval.record.site": "Site",
|
|
3540
3570
|
"approval.record.what": "Records",
|
|
3541
|
-
"approval.record.lands": "
|
|
3571
|
+
"approval.record.lands": "Saves to",
|
|
3542
3572
|
"approval.record.noUrl": "no site given (this call gets refused)",
|
|
3543
3573
|
"approval.record.oneAction": "one action",
|
|
3544
3574
|
"approval.record.noSwitch": "it will not switch you back (the leftbar footer shows the state)",
|
|
3545
|
-
"approval.longTask.what": "
|
|
3546
|
-
"approval.longTask.signal": "stopping only sends an interrupt signal —
|
|
3575
|
+
"approval.longTask.what": "Task to stop",
|
|
3576
|
+
"approval.longTask.signal": "stopping only sends an interrupt signal — wrapping up the run is up to the module",
|
|
3547
3577
|
"approval.publish.module": "Module",
|
|
3548
3578
|
"approval.publish.target": "Target",
|
|
3549
3579
|
"approval.publish.version": "Version",
|
|
3550
3580
|
"approval.publish.author": "Author",
|
|
3551
|
-
"approval.publish.authorMissing": "unsigned
|
|
3581
|
+
"approval.publish.authorMissing": "unsigned",
|
|
3552
3582
|
"approval.publish.registry": "Registry",
|
|
3553
3583
|
"approval.publish.repo": "Repository",
|
|
3554
3584
|
"approval.publish.branch": "Branch",
|
|
3555
3585
|
"approval.publish.defaultBranch": "default branch",
|
|
3556
|
-
"approval.publish.artifacts": "
|
|
3586
|
+
"approval.publish.artifacts": "Build files",
|
|
3557
3587
|
"approval.publish.index": "Index",
|
|
3558
3588
|
"approval.publish.commits": "Commits",
|
|
3559
|
-
"approval.publish.twoCommits": "
|
|
3589
|
+
"approval.publish.twoCommits": "build files + market.json in 2 commits, one push",
|
|
3560
3590
|
"approval.publish.reading": "Reading…",
|
|
3561
3591
|
"approval.publish.changelog": "Changelog for {version}",
|
|
3562
3592
|
"approval.publish.changelogMissing": "No changelog entry for {version}; publishing will be blocked",
|
|
@@ -3704,15 +3734,14 @@ var dictionaries = {
|
|
|
3704
3734
|
"panels.market.update": "更新",
|
|
3705
3735
|
"panels.market.swapSlow": "还没换上:可能网慢或没装上。再点一次「更新」;一直这样就把 dsh 重启一遍。",
|
|
3706
3736
|
"panels.market.removeSlow": "还没卸掉:可能网慢或卸载没走完。等一下再看;一直这样就把 dsh 重启一遍。",
|
|
3707
|
-
"panels.market.updateNoChange": "
|
|
3737
|
+
"panels.market.updateNoChange": "更新失败:还是 {from};源上最新是 {latest},可以再点一次「更新」。",
|
|
3708
3738
|
"panels.market.updateUnknownVersion": "(问不到)",
|
|
3709
|
-
"panels.market.updateGone": "
|
|
3710
|
-
"panels.market.updateRestored": "
|
|
3739
|
+
"panels.market.updateGone": "更新失败:更新后找不到这个模块。",
|
|
3740
|
+
"panels.market.updateRestored": "更新失败:更新后找不到新版本,已把 {version} 装回去。",
|
|
3711
3741
|
"panels.market.updateBehind": "装上了 {installed},但源上最新是 {latest} —— 没更到最新,可以再点一次。",
|
|
3712
|
-
"panels.market.selfUpdateFailed": "
|
|
3742
|
+
"panels.market.selfUpdateFailed": "工作台更新失败:{reason}",
|
|
3713
3743
|
"panels.market.selfUpdateUnknown": "外部进程没留下原因(看 ~/.dsh/workbench/self-update.log)",
|
|
3714
|
-
"panels.market.selfUpdateRolledBack": "
|
|
3715
|
-
"panels.market.selfUpdateNeedsMigrate": "工作台已更新。旧会话 / 项目不会自动并:先退出所有 dsh,再运行 dsh-workbench migrate(--force 可补并)。",
|
|
3744
|
+
"panels.market.selfUpdateRolledBack": "工作台更新失败,已回滚到 {version}。",
|
|
3716
3745
|
"panels.market.uninstall": "卸载",
|
|
3717
3746
|
"panels.market.uninstallLabel": "卸载 {name}",
|
|
3718
3747
|
"panels.market.installing": "正在安装…",
|
|
@@ -3734,9 +3763,27 @@ var dictionaries = {
|
|
|
3734
3763
|
"panels.market.empty": "暂无可用模块",
|
|
3735
3764
|
"panels.market.sectionPlugins": "已安装 opencli 插件",
|
|
3736
3765
|
"panels.market.moduleOutdated": "有新版",
|
|
3766
|
+
"panels.market.updateNeedsWorkbench": "新版本要先把工作台升级才能用",
|
|
3767
|
+
"panels.market.updateIncompatible": "新版本和当前的工作台不匹配,暂时不能更新",
|
|
3737
3768
|
"panels.market.moduleRefused": "模块版本与工作台不匹配,暂时无法使用",
|
|
3738
3769
|
"panels.market.moduleRestartHint": "重启后生效",
|
|
3739
3770
|
"panels.market.pendingRestart": "重启后生效",
|
|
3771
|
+
"panels.market.pendingFollowUp": "旧数据待迁移",
|
|
3772
|
+
"panels.market.migrationHint": "旧会话和项目还没搬过来",
|
|
3773
|
+
"panels.market.migrateAction": "迁移旧数据",
|
|
3774
|
+
"panels.market.migrating": "正在迁移…",
|
|
3775
|
+
"panels.market.migrateConfirmTitle": "迁移旧数据?",
|
|
3776
|
+
"panels.market.migrateConfirmDetail": "先退出 dsh web / Desktop。迁移只补缺、不覆盖;旧目录保留。",
|
|
3777
|
+
"panels.market.migrateConfirmAck": "我已经退出 dsh web / Desktop",
|
|
3778
|
+
"panels.market.migrateConfirmYes": "开始迁移",
|
|
3779
|
+
"panels.market.migrateDone": "迁移完成:补了 {added} 个项目;重启工作台和 dsh web 后出现。",
|
|
3780
|
+
"panels.market.dismissFollowUp": "不再提醒",
|
|
3781
|
+
"panels.market.dismissing": "正在收起…",
|
|
3782
|
+
"panels.market.dismissFollowUpTitle": "不再提醒这件事?",
|
|
3783
|
+
"panels.market.dismissFollowUpDetail": "提示会从模块市场收起,但不会迁移或删除旧数据。旧会话和项目仍留在旧目录,新版本里看不到;以后需要时仍可运行 dsh-workbench migrate。",
|
|
3784
|
+
"panels.market.dismissFollowUpAck": "我知道旧数据不会自动出现",
|
|
3785
|
+
"panels.market.dismissFollowUpYes": "不再提醒",
|
|
3786
|
+
"panels.market.dismissed": "已不再提醒;旧数据仍在旧目录,需要时仍可运行 dsh-workbench migrate。",
|
|
3740
3787
|
"panels.market.workbenchName": "工作台",
|
|
3741
3788
|
"panels.market.pluginBroken": "这份插件装坏了:认不出它是什么。可以先卸载,再让 agent 按包名重装一次。",
|
|
3742
3789
|
"panels.market.restartNeeded": "新版装好了,重启一次才生效。",
|
|
@@ -3820,7 +3867,7 @@ var dictionaries = {
|
|
|
3820
3867
|
"panels.market.add.exampleTitle": "示例",
|
|
3821
3868
|
"panels.market.add.exampleFill": "填入示例",
|
|
3822
3869
|
"panels.market.add.registryLabel": "安装源",
|
|
3823
|
-
"panels.market.add.registryProfile": "
|
|
3870
|
+
"panels.market.add.registryProfile": "这份工作台配的源",
|
|
3824
3871
|
"panels.market.add.registryPnpm": "pnpm 自己配的源",
|
|
3825
3872
|
"panels.market.add.check": "预检",
|
|
3826
3873
|
"panels.market.add.checking": "正在预检…",
|
|
@@ -3841,14 +3888,19 @@ var dictionaries = {
|
|
|
3841
3888
|
"panels.market.tabs": "模块市场的两个面",
|
|
3842
3889
|
"panels.tab.discover": "发现",
|
|
3843
3890
|
"panels.discover.loading": "正在读取索引",
|
|
3891
|
+
"panels.discover.slowHint": "读取较慢:如有授权提示,先完成它,或换一个索引源。",
|
|
3844
3892
|
"panels.discover.lead": "从索引源浏览模块;装上就能用。",
|
|
3845
3893
|
"panels.discover.addSource": "添加",
|
|
3846
3894
|
"panels.discover.addingSource": "正在添加…",
|
|
3847
3895
|
"panels.discover.addFirstSource": "添加索引源",
|
|
3848
3896
|
"panels.discover.removeSource": "移除",
|
|
3849
3897
|
"panels.discover.removeSourceNamed": "移除 {url}",
|
|
3898
|
+
"panels.discover.useSource": "使用",
|
|
3899
|
+
"panels.discover.useSourceNamed": "使用 {label}",
|
|
3900
|
+
"panels.discover.sourceCurrent": "当前使用",
|
|
3850
3901
|
"panels.discover.refresh": "刷新",
|
|
3851
3902
|
"panels.discover.search": "搜索模块",
|
|
3903
|
+
"panels.discover.clearSearch": "清除搜索",
|
|
3852
3904
|
"panels.discover.all": "全部",
|
|
3853
3905
|
"panels.discover.sourceLabel": "名字",
|
|
3854
3906
|
"panels.discover.sourceKind": "类型",
|
|
@@ -3858,8 +3910,8 @@ var dictionaries = {
|
|
|
3858
3910
|
"panels.discover.sourcePlaceholder": "https://example.com/index.json 或 git@git.example.com:wb/market.git",
|
|
3859
3911
|
"panels.discover.sourceRef": "分支",
|
|
3860
3912
|
"panels.discover.sourcePath": "索引文件",
|
|
3861
|
-
"panels.discover.sourceLocal": "
|
|
3862
|
-
"panels.discover.sourceLocalHint": "
|
|
3913
|
+
"panels.discover.sourceLocal": "本地副本目录(可选)",
|
|
3914
|
+
"panels.discover.sourceLocalHint": "不填就放到 ~/.dsh/workbench/market-index/。",
|
|
3863
3915
|
"panels.discover.save": "保存并刷新",
|
|
3864
3916
|
"panels.discover.cancel": "取消",
|
|
3865
3917
|
"panels.discover.retry": "重试",
|
|
@@ -3872,9 +3924,9 @@ var dictionaries = {
|
|
|
3872
3924
|
"panels.discover.missingIndex": "仓库里还没有索引文件 {path}",
|
|
3873
3925
|
"panels.discover.initTitle": "把这个仓库初始化成模块市场索引?",
|
|
3874
3926
|
"panels.discover.initCta": "初始化成市场索引",
|
|
3875
|
-
"panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md
|
|
3927
|
+
"panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md,提交一次并推上去;之后从这个工作台发布的模块会把打包好的文件提交到 packages/<unit>/。仓库的写权限归它的所有者。",
|
|
3876
3928
|
"panels.discover.initBranch": "分支",
|
|
3877
|
-
"panels.discover.initBranchHint": "
|
|
3929
|
+
"panels.discover.initBranchHint": "索引和打包文件都发到这个分支;空仓库会新建它。",
|
|
3878
3930
|
"panels.discover.initBranchBad": "分支名只能用字母、数字、点、下划线、斜杠或短横线",
|
|
3879
3931
|
"panels.discover.initOk": "初始化",
|
|
3880
3932
|
"panels.discover.initBusy": "正在初始化…",
|
|
@@ -3978,11 +4030,11 @@ var dictionaries = {
|
|
|
3978
4030
|
"panels.market.add.doneApplied": "装好了,已经生效。",
|
|
3979
4031
|
"panels.market.add.doneRestart": "装好了,重启一次才生效。",
|
|
3980
4032
|
"panels.market.add.restartWhy": "为什么这一版要重启:{reason}",
|
|
3981
|
-
"panels.market.add.restartWhy.no-hmr": "
|
|
4033
|
+
"panels.market.add.restartWhy.no-hmr": "这份配置只在启动时读一次,改了得重启",
|
|
3982
4034
|
"panels.market.add.restartWhy.package-moved": "某个已经装着的包换到了新的目录,或者这一下换掉了 dsh 自己提供的那份",
|
|
3983
4035
|
"panels.market.add.restartWhy.host-module": "这一下动到了 dsh 自己加载的模块",
|
|
3984
|
-
"panels.market.add.restartWhy.unmanaged-plugin": "
|
|
3985
|
-
"panels.market.add.restartWhy.module-comparison": "dsh
|
|
4036
|
+
"panels.market.add.restartWhy.unmanaged-plugin": "这一下动到了没登记过、正在运行的插件",
|
|
4037
|
+
"panels.market.add.restartWhy.module-comparison": "dsh 没法确认正在跑的插件就是这台机器上装好的那一份",
|
|
3986
4038
|
"panels.market.add.cancelled": "已取消。",
|
|
3987
4039
|
"panels.market.add.failed": "没成功:{reason}",
|
|
3988
4040
|
"panels.market.add.removed": "已经移除了。",
|
|
@@ -3992,10 +4044,10 @@ var dictionaries = {
|
|
|
3992
4044
|
"panels.market.add.removedRestart": "卸掉了,重启一次才彻底生效。",
|
|
3993
4045
|
"panels.market.add.remove": "移除它",
|
|
3994
4046
|
"panels.market.add.problem.invalidSpec": "这个写法不认:不能是空的,也不能以横杠开头。",
|
|
3995
|
-
"panels.market.add.problem.alreadyInstalled": "
|
|
4047
|
+
"panels.market.add.problem.alreadyInstalled": "这个包已经在这份工作台里了(要换版本请带上 @版本)。",
|
|
3996
4048
|
"panels.market.add.problem.notFound": "源上没有这个包。换个包名或版本再试。",
|
|
3997
4049
|
"panels.market.add.problem.notAPackage": "这个位置没有包。选一个包含 package.json 的目录。",
|
|
3998
|
-
"panels.market.add.problem.notABundle": "它是一个 npm 包,但不是 dsh
|
|
4050
|
+
"panels.market.add.problem.notABundle": "它是一个 npm 包,但不是 dsh 插件包(dsh 在里面找不到该加载什么)。",
|
|
3999
4051
|
"panels.market.add.problem.network": "源连不上。检查网络后重试。",
|
|
4000
4052
|
"panels.market.add.problem.unknown": "预检没通过(原因未知)。展开安装详情看原始输出,或重试。",
|
|
4001
4053
|
"panels.market.add.reason.invalidSpec": "写法不认",
|
|
@@ -4003,7 +4055,7 @@ var dictionaries = {
|
|
|
4003
4055
|
"panels.market.add.reason.notBundle": "它不是一个 dsh 插件包",
|
|
4004
4056
|
"panels.market.add.reason.notRemovable": "它是安装自带的组合包,不能卸",
|
|
4005
4057
|
"panels.market.add.reason.bundleInUse": "还有东西在用它,卸不掉",
|
|
4006
|
-
"panels.market.add.reason.stopProfile": "
|
|
4058
|
+
"panels.market.add.reason.stopProfile": "这份配置改了要重启,得先停掉工作台",
|
|
4007
4059
|
"panels.market.add.reason.staleApproval": "要允许的安装脚本已经变了,重新来一次",
|
|
4008
4060
|
"panels.market.add.reason.operationError": "pnpm 执行出错(详情见安装输出)",
|
|
4009
4061
|
"panels.market.add.reason.buildBlocked": "pnpm 拦下了安装脚本",
|
|
@@ -4026,15 +4078,15 @@ var dictionaries = {
|
|
|
4026
4078
|
"blocker.market.open": "去模块市场",
|
|
4027
4079
|
"blocker.login.title": "需要登录 {platform}",
|
|
4028
4080
|
"blocker.login.titleGeneric": "需要登录",
|
|
4029
|
-
"blocker.login.hint": "
|
|
4081
|
+
"blocker.login.hint": "工作台借你浏览器里的登录状态;登录一次就行,之后不用再登。",
|
|
4030
4082
|
"blocker.login.go": "去登录",
|
|
4031
4083
|
"blocker.login.manual": "在终端执行该插件的登录命令(见插件的文档),按提示完成登录后重试。",
|
|
4032
4084
|
"blocker.forbidden.title": "没有权限访问 {platform}",
|
|
4033
4085
|
"blocker.forbidden.titleGeneric": "没有权限",
|
|
4034
4086
|
"blocker.forbidden.hint": "账号已登录,但没有这个项目/仓库的权限;申请之后再试。",
|
|
4035
4087
|
"blocker.forbidden.open": "打开权限页",
|
|
4036
|
-
"blocker.timeout.hint": "
|
|
4037
|
-
"blocker.exec.hint": "确认 opencli
|
|
4088
|
+
"blocker.timeout.hint": "后台浏览器没起来,重试一次通常就好。",
|
|
4089
|
+
"blocker.exec.hint": "确认 opencli 已经装好、在终端里能直接运行(which opencli)。",
|
|
4038
4090
|
"blocker.unknown.title": "出了点问题",
|
|
4039
4091
|
"panels.reading": "正在读取面板配置…",
|
|
4040
4092
|
"panels.cardBroken": "这个模块起不来:{unit}({reason})",
|
|
@@ -4048,7 +4100,7 @@ var dictionaries = {
|
|
|
4048
4100
|
"env.elapsed": "已等待 {seconds} 秒",
|
|
4049
4101
|
"env.stepFailed.install": "装不上",
|
|
4050
4102
|
"env.stepFailed.path": "装了但还找不到",
|
|
4051
|
-
"env.stepFailed.shell": "
|
|
4103
|
+
"env.stepFailed.shell": "连不上命令行",
|
|
4052
4104
|
"env.toolchain.ok": "正常",
|
|
4053
4105
|
"env.toolchain.warn": "还没完全准备好",
|
|
4054
4106
|
"env.opencli.ok": "已就绪",
|
|
@@ -4065,10 +4117,10 @@ var dictionaries = {
|
|
|
4065
4117
|
"env.fix.title": "怎么解决",
|
|
4066
4118
|
"env.fix.why": "工作台用它自己那份后台工具(与你在终端里那套分开装,互不影响),这台机器上还没装好它。",
|
|
4067
4119
|
"env.fix.whyPath": "后台工具装上了,但当前环境还找不到它 —— 通常是 PATH 或终端会话的问题。",
|
|
4068
|
-
"env.fix.whyShell": "
|
|
4120
|
+
"env.fix.whyShell": "工作台拿不到这台机器的命令行,所以取不了数据 —— 这一步你装不了,需要有人处理后台环境。",
|
|
4069
4121
|
"env.fix.step": "在终端里运行下面这条命令,装好之后点「重试」:",
|
|
4070
4122
|
"env.fix.stepPath": "新开一个终端窗口(或确认 npm 的全局 bin 目录在 PATH 里),然后点「重试」。",
|
|
4071
|
-
"env.fix.stepShell": "重启一次工作台(或 dsh
|
|
4123
|
+
"env.fix.stepShell": "重启一次工作台(或 dsh);如果反复出现,说明工作台还是拿不到命令行。",
|
|
4072
4124
|
"env.fix.permission": "权限不够:在命令前加 sudo 重跑,或先把 npm 的全局目录配到你的用户目录。",
|
|
4073
4125
|
"env.fix.network": "网络不通:检查网络或代理设置后重试。",
|
|
4074
4126
|
"env.fix.details": "详细输出(排障用)",
|
|
@@ -4097,9 +4149,9 @@ var dictionaries = {
|
|
|
4097
4149
|
"env.warm.done": "已就绪({n} 个站点)",
|
|
4098
4150
|
"env.warm.short": "这次没提前连上 —— 不影响用,第一次取数会自己补",
|
|
4099
4151
|
"env.unit.failed": "这个模块起不来",
|
|
4100
|
-
"env.unit.failedHint": "
|
|
4101
|
-
"env.unit.unchecked": "
|
|
4102
|
-
"env.unit.uncheckedHint": "
|
|
4152
|
+
"env.unit.failedHint": "它自己启动时报了错,别的模块不受影响。",
|
|
4153
|
+
"env.unit.unchecked": "检测不了:拿不到命令行",
|
|
4154
|
+
"env.unit.uncheckedHint": "不是这个模块的问题,是工作台拿不到命令行 —— 重启一次工作台再试。",
|
|
4103
4155
|
"adapterSet.not-configured": "没配置适配器集合,用默认的。",
|
|
4104
4156
|
"adapterSet.no-profile": "找不到 profile,没法加载适配器集合;先用默认的。",
|
|
4105
4157
|
"adapterSet.malformed": "适配器集合要写包名(如 @acme/adapters-set);先用默认的。",
|
|
@@ -4142,7 +4194,7 @@ var dictionaries = {
|
|
|
4142
4194
|
"sidebarEdition.official": "官方",
|
|
4143
4195
|
"sidebarEdition.officialHint": "跟 dsh 官方一致、最稳:搜索、视图选项、显示更多、归档、添加工作区都齐,升级也不等我们适配。想省心就选它。",
|
|
4144
4196
|
"sidebarEdition.custom": "自定义",
|
|
4145
|
-
"sidebarEdition.customHint": "
|
|
4197
|
+
"sidebarEdition.customHint": "为多项目工作流做的:项目下拉一屏一个项目,会话按最近更新排,名字自动滚动、两侧渐隐,工坊 DIY 新会话。项目多时更顺手。",
|
|
4146
4198
|
"sidebarEdition.saving": "配置中…",
|
|
4147
4199
|
"sidebarEdition.reloadRequired": "已写入。刷新页面后生效(不用重启工作台)。",
|
|
4148
4200
|
"sidebarEdition.reload": "刷新页面",
|
|
@@ -4171,25 +4223,25 @@ var dictionaries = {
|
|
|
4171
4223
|
"record.act.halt": "停",
|
|
4172
4224
|
"approval.record.site": "站点",
|
|
4173
4225
|
"approval.record.what": "录制功能",
|
|
4174
|
-
"approval.record.lands": "
|
|
4226
|
+
"approval.record.lands": "保存到",
|
|
4175
4227
|
"approval.record.noUrl": "没给站点地址(这次会被当场拒)",
|
|
4176
4228
|
"approval.record.oneAction": "一次操作",
|
|
4177
4229
|
"approval.record.noSwitch": "录完不会替你切回来(左栏底部会亮一条状态)",
|
|
4178
|
-
"approval.longTask.what": "
|
|
4179
|
-
"approval.longTask.signal": "停了只是让工作台发出中断信号 ——
|
|
4230
|
+
"approval.longTask.what": "要停的那次任务",
|
|
4231
|
+
"approval.longTask.signal": "停了只是让工作台发出中断信号 —— 这次任务怎么收尾由模块自己负责",
|
|
4180
4232
|
"approval.publish.module": "模块",
|
|
4181
4233
|
"approval.publish.target": "目标",
|
|
4182
4234
|
"approval.publish.version": "版本",
|
|
4183
4235
|
"approval.publish.author": "作者",
|
|
4184
|
-
"approval.publish.authorMissing": "
|
|
4236
|
+
"approval.publish.authorMissing": "未署名",
|
|
4185
4237
|
"approval.publish.registry": "源",
|
|
4186
4238
|
"approval.publish.repo": "仓库",
|
|
4187
4239
|
"approval.publish.branch": "分支",
|
|
4188
4240
|
"approval.publish.defaultBranch": "默认分支",
|
|
4189
|
-
"approval.publish.artifacts": "
|
|
4241
|
+
"approval.publish.artifacts": "打包文件",
|
|
4190
4242
|
"approval.publish.index": "索引",
|
|
4191
4243
|
"approval.publish.commits": "提交",
|
|
4192
|
-
"approval.publish.twoCommits": "
|
|
4244
|
+
"approval.publish.twoCommits": "打包文件 + market.json 两次提交,一次推送",
|
|
4193
4245
|
"approval.publish.reading": "读取中…",
|
|
4194
4246
|
"approval.publish.changelog": "{version} 的更新日志",
|
|
4195
4247
|
"approval.publish.changelogMissing": "这一版还没有更新日志({version}),发布会被拦下",
|
|
@@ -4947,7 +4999,11 @@ function sharedRows(manifests, capabilities) {
|
|
|
4947
4999
|
id: `${bucket.kind}:${bucket.name}`,
|
|
4948
5000
|
kind: bucket.kind,
|
|
4949
5001
|
label: bucket.label,
|
|
4950
|
-
usedByKeys: bucket.users.map((unit) =>
|
|
5002
|
+
usedByKeys: bucket.users.map((unit) => {
|
|
5003
|
+
const manifest = byId.get(unit);
|
|
5004
|
+
if (manifest === void 0) return unit;
|
|
5005
|
+
return manifest.titleKey;
|
|
5006
|
+
}),
|
|
4951
5007
|
state,
|
|
4952
5008
|
canUpdate: state === "outdated" || state === "unsatisfied",
|
|
4953
5009
|
...version === void 0 ? {} : { version }
|
|
@@ -4965,6 +5021,7 @@ var MARKET_STATE_KEY = {
|
|
|
4965
5021
|
broken: "panels.market.broken",
|
|
4966
5022
|
outdated: "panels.market.moduleOutdated",
|
|
4967
5023
|
"pending-restart": "panels.market.pendingRestart",
|
|
5024
|
+
"pending-followup": "panels.market.pendingFollowUp",
|
|
4968
5025
|
missing: "panels.market.missing",
|
|
4969
5026
|
unchecked: "panels.market.unchecked",
|
|
4970
5027
|
unknown: "panels.market.unchecked"
|
|
@@ -4977,6 +5034,7 @@ var MARKET_DOT = {
|
|
|
4977
5034
|
broken: "error",
|
|
4978
5035
|
outdated: "warning",
|
|
4979
5036
|
"pending-restart": "warning",
|
|
5037
|
+
"pending-followup": "warning",
|
|
4980
5038
|
missing: "idle",
|
|
4981
5039
|
unchecked: "idle",
|
|
4982
5040
|
unknown: "idle"
|
|
@@ -5001,35 +5059,32 @@ function refusalReasons(host, client) {
|
|
|
5001
5059
|
if (reported.length > 0) return reported;
|
|
5002
5060
|
return [...new Set(client ?? [])];
|
|
5003
5061
|
}
|
|
5004
|
-
function
|
|
5005
|
-
|
|
5006
|
-
for (const manifest of manifests) {
|
|
5007
|
-
const titleKey = manifest.card?.titleKey;
|
|
5008
|
-
if (titleKey === void 0 || known.has(manifest.id)) continue;
|
|
5009
|
-
next ??= new Map(known);
|
|
5010
|
-
next.set(manifest.id, titleKey);
|
|
5011
|
-
}
|
|
5012
|
-
return next ?? known;
|
|
5062
|
+
function updateBlockHintOf(block) {
|
|
5063
|
+
return block === "needs-workbench" ? "panels.market.updateNeedsWorkbench" : "panels.market.updateIncompatible";
|
|
5013
5064
|
}
|
|
5014
5065
|
function installedIdSet(installed) {
|
|
5015
5066
|
if (installed === void 0) return null;
|
|
5016
5067
|
return new Set(installed.map((item) => item.unit));
|
|
5017
5068
|
}
|
|
5018
|
-
function installedRows(modules, manifests, listed,
|
|
5019
|
-
const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.
|
|
5069
|
+
function installedRows(modules, manifests, listed, names, defaults = /* @__PURE__ */ new Set(), changed = {}) {
|
|
5070
|
+
const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.titleKey]));
|
|
5020
5071
|
const rows = [];
|
|
5021
5072
|
for (const module of modules) {
|
|
5022
5073
|
if (listed.has(module.unit)) continue;
|
|
5023
5074
|
const latest = module.local === true ? void 0 : module.latest;
|
|
5024
5075
|
const outdated = latest !== void 0 && latest !== module.installed;
|
|
5076
|
+
const blocked = outdated ? module.latestBlocked : void 0;
|
|
5025
5077
|
const loaded = titles.has(module.unit);
|
|
5026
5078
|
const refused = refusalReasons(module.refused, module.clientRefused);
|
|
5027
5079
|
const pending = !loaded && refused.length === 0;
|
|
5080
|
+
const titleKey = titles.get(module.unit);
|
|
5081
|
+
const remembered = titleKey === void 0 ? names?.get(module.unit) : void 0;
|
|
5028
5082
|
rows.push({
|
|
5029
5083
|
id: module.unit,
|
|
5030
|
-
titleKey:
|
|
5084
|
+
titleKey: titleKey ?? module.unit,
|
|
5085
|
+
...remembered === void 0 ? {} : { label: remembered },
|
|
5031
5086
|
state: outdated ? "outdated" : refused.length > 0 ? "unusable" : pending ? "inactive" : "installed",
|
|
5032
|
-
...pending ? { hint: "panels.market.moduleRestartHint" } : {},
|
|
5087
|
+
...pending ? { hint: "panels.market.moduleRestartHint" } : blocked === void 0 ? {} : { hint: updateBlockHintOf(blocked) },
|
|
5033
5088
|
...refused.length === 0 ? {} : { note: {
|
|
5034
5089
|
key: "panels.market.moduleRefused",
|
|
5035
5090
|
params: {}
|
|
@@ -5037,7 +5092,7 @@ function installedRows(modules, manifests, listed, known, defaults = /* @__PURE_
|
|
|
5037
5092
|
...module.local === true ? { local: true } : {},
|
|
5038
5093
|
pkg: module.pkg,
|
|
5039
5094
|
canInstall: false,
|
|
5040
|
-
canUpdate: outdated,
|
|
5095
|
+
canUpdate: outdated && blocked === void 0,
|
|
5041
5096
|
canUninstall: true,
|
|
5042
5097
|
version: {
|
|
5043
5098
|
installed: module.installed,
|
|
@@ -5045,7 +5100,8 @@ function installedRows(modules, manifests, listed, known, defaults = /* @__PURE_
|
|
|
5045
5100
|
},
|
|
5046
5101
|
...outdated ? { moduleUpdate: {
|
|
5047
5102
|
installed: module.installed,
|
|
5048
|
-
latest
|
|
5103
|
+
latest,
|
|
5104
|
+
...blocked === void 0 ? {} : { blocked }
|
|
5049
5105
|
} } : {},
|
|
5050
5106
|
defaultShown: defaults.has(module.unit),
|
|
5051
5107
|
defaultChanged: changed[module.unit] ?? 0
|
|
@@ -5058,11 +5114,14 @@ function marketSwitchLocked(row) {
|
|
|
5058
5114
|
return SWITCH_LOCKED.has(row.state);
|
|
5059
5115
|
}
|
|
5060
5116
|
function marketActions$1(row) {
|
|
5061
|
-
if (row.workbench === true)
|
|
5117
|
+
if (row.workbench === true) {
|
|
5118
|
+
if (row.followUp !== void 0 && row.state === "pending-followup") return row.followUp.hard ? ["migrate-workbench"] : ["migrate-workbench", "dismiss-followup"];
|
|
5119
|
+
return row.canUpdate ? ["update-workbench"] : [];
|
|
5120
|
+
}
|
|
5062
5121
|
if (row.plugin === true) return [...row.canUpdate ? ["update-plugin"] : [], ...row.canUninstall ? ["uninstall-plugin"] : []];
|
|
5063
5122
|
return [
|
|
5064
5123
|
...row.canInstall ? ["install"] : [],
|
|
5065
|
-
...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : ["update-bundle"],
|
|
5124
|
+
...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : row.moduleUpdate.blocked === void 0 ? ["update-bundle"] : [],
|
|
5066
5125
|
...row.canUninstall ? [row.pkg === void 0 ? "uninstall" : "remove-bundle"] : []
|
|
5067
5126
|
];
|
|
5068
5127
|
}
|
|
@@ -5140,7 +5199,7 @@ function liveManifests(manifests, capabilities, installed) {
|
|
|
5140
5199
|
return manifests.filter((manifest) => !gone.has(manifest.id));
|
|
5141
5200
|
}
|
|
5142
5201
|
function marketHasUpdates(rows, shared = []) {
|
|
5143
|
-
return rows.some((row) => row.state === "outdated"
|
|
5202
|
+
return rows.some((row) => row.moduleUpdate === void 0 ? row.state === "outdated" : row.moduleUpdate.blocked === void 0) || shared.some((row) => row.state === "outdated" || row.state === "unsatisfied");
|
|
5144
5203
|
}
|
|
5145
5204
|
function marketUpdatesOf(modules) {
|
|
5146
5205
|
if (modules === null) return {};
|
|
@@ -5150,6 +5209,7 @@ function marketUpdatesOf(modules) {
|
|
|
5150
5209
|
next[module.unit] = {
|
|
5151
5210
|
installed: module.installed,
|
|
5152
5211
|
...local || module.latest === void 0 ? {} : { latest: module.latest },
|
|
5212
|
+
...local || module.latest === void 0 || module.latestBlocked === void 0 ? {} : { blocked: module.latestBlocked },
|
|
5153
5213
|
...local ? { local: true } : {}
|
|
5154
5214
|
};
|
|
5155
5215
|
}
|
|
@@ -5188,17 +5248,19 @@ function marketRows(manifests, capabilities, updates = {}, defaults = /* @__PURE
|
|
|
5188
5248
|
const reAdopt = capability?.released === true && !installDeclared;
|
|
5189
5249
|
const moduleUpdate = entry === void 0 || entry.latest === void 0 || entry.latest === entry.installed ? void 0 : {
|
|
5190
5250
|
installed: entry.installed,
|
|
5191
|
-
latest: entry.latest
|
|
5251
|
+
latest: entry.latest,
|
|
5252
|
+
...entry.blocked === void 0 ? {} : { blocked: entry.blocked }
|
|
5192
5253
|
};
|
|
5193
5254
|
const shown = moduleUpdate === void 0 ? state : "outdated";
|
|
5255
|
+
const hint = moduleUpdate?.blocked === void 0 ? shown === "unknown" || shown === "unchecked" ? "panels.market.uncheckedHint" : void 0 : updateBlockHintOf(moduleUpdate.blocked);
|
|
5194
5256
|
rows.push({
|
|
5195
5257
|
id: manifest.id,
|
|
5196
|
-
titleKey: manifest.
|
|
5258
|
+
titleKey: manifest.titleKey,
|
|
5197
5259
|
state: shown,
|
|
5198
5260
|
canInstall: state !== "installed" && (install || reAdopt),
|
|
5199
5261
|
canUpdate: onMachine && isOutdated(capability),
|
|
5200
5262
|
canUninstall: onMachine,
|
|
5201
|
-
...
|
|
5263
|
+
...hint === void 0 ? {} : { hint },
|
|
5202
5264
|
...entry === void 0 ? {} : { version: {
|
|
5203
5265
|
installed: entry.installed,
|
|
5204
5266
|
...entry.latest === void 0 ? {} : { latest: entry.latest }
|
|
@@ -5263,11 +5325,14 @@ function workbenchRow(version) {
|
|
|
5263
5325
|
installed: version.installed,
|
|
5264
5326
|
latest
|
|
5265
5327
|
} : void 0;
|
|
5328
|
+
const stale = !local && version.running !== void 0 && version.running !== version.installed;
|
|
5329
|
+
const followUp = version.followUp;
|
|
5330
|
+
const followUpState = !stale && followUp !== void 0;
|
|
5266
5331
|
return {
|
|
5267
5332
|
id: WORKBENCH_ROW_ID,
|
|
5268
5333
|
titleKey: WORKBENCH_TITLE_KEY,
|
|
5269
5334
|
workbench: true,
|
|
5270
|
-
state:
|
|
5335
|
+
state: stale ? "pending-restart" : followUpState ? "pending-followup" : update === void 0 ? "installed" : "outdated",
|
|
5271
5336
|
canInstall: false,
|
|
5272
5337
|
canUpdate: update !== void 0,
|
|
5273
5338
|
canUninstall: false,
|
|
@@ -5277,6 +5342,8 @@ function workbenchRow(version) {
|
|
|
5277
5342
|
...latest === void 0 ? {} : { latest }
|
|
5278
5343
|
},
|
|
5279
5344
|
...update === void 0 ? {} : { moduleUpdate: update },
|
|
5345
|
+
...followUp === void 0 ? {} : { followUp },
|
|
5346
|
+
...followUpState ? { hint: "panels.market.migrationHint" } : {},
|
|
5280
5347
|
pkg: version.pkg
|
|
5281
5348
|
};
|
|
5282
5349
|
}
|
|
@@ -5284,6 +5351,7 @@ function workbenchRow(version) {
|
|
|
5284
5351
|
//#region src/app/layouts/rightbar/market-hint.ts
|
|
5285
5352
|
var PROBLEM_KEY = "panels.market.hasProblem";
|
|
5286
5353
|
var RESTART_KEY = "panels.market.pendingRestart";
|
|
5354
|
+
var FOLLOWUP_KEY = "panels.market.pendingFollowUp";
|
|
5287
5355
|
var UNKNOWN_KEY = "panels.market.unchecked";
|
|
5288
5356
|
var UPDATES_KEY = "panels.market.hasNew";
|
|
5289
5357
|
function isProblem(row) {
|
|
@@ -5314,12 +5382,14 @@ function marketHintOf(input) {
|
|
|
5314
5382
|
];
|
|
5315
5383
|
const problem = rows.some(isProblem);
|
|
5316
5384
|
const restart = rows.some(isRestart) || awaitsRestart(input.manifests, installed);
|
|
5385
|
+
const followUp = rows.some((row) => row.state === "pending-followup");
|
|
5317
5386
|
const rosterRead = input.modules !== null;
|
|
5318
5387
|
const unknown = rows.some((row) => isUnknown(row, rosterRead));
|
|
5319
5388
|
const updates = marketHasUpdates(rows, sharedRows(marketable, input.capabilities));
|
|
5320
5389
|
const more = [];
|
|
5321
5390
|
if (problem) {
|
|
5322
5391
|
if (restart) more.push(RESTART_KEY);
|
|
5392
|
+
if (followUp) more.push(FOLLOWUP_KEY);
|
|
5323
5393
|
if (unknown) more.push(UNKNOWN_KEY);
|
|
5324
5394
|
if (updates) more.push(UPDATES_KEY);
|
|
5325
5395
|
return {
|
|
@@ -5329,6 +5399,7 @@ function marketHintOf(input) {
|
|
|
5329
5399
|
};
|
|
5330
5400
|
}
|
|
5331
5401
|
if (restart) {
|
|
5402
|
+
if (followUp) more.push(FOLLOWUP_KEY);
|
|
5332
5403
|
if (unknown) more.push(UNKNOWN_KEY);
|
|
5333
5404
|
if (updates) more.push(UPDATES_KEY);
|
|
5334
5405
|
return {
|
|
@@ -5337,6 +5408,15 @@ function marketHintOf(input) {
|
|
|
5337
5408
|
...more.length === 0 ? {} : { moreKeys: more }
|
|
5338
5409
|
};
|
|
5339
5410
|
}
|
|
5411
|
+
if (followUp) {
|
|
5412
|
+
if (unknown) more.push(UNKNOWN_KEY);
|
|
5413
|
+
if (updates) more.push(UPDATES_KEY);
|
|
5414
|
+
return {
|
|
5415
|
+
labelKey: FOLLOWUP_KEY,
|
|
5416
|
+
tone: "warning",
|
|
5417
|
+
...more.length === 0 ? {} : { moreKeys: more }
|
|
5418
|
+
};
|
|
5419
|
+
}
|
|
5340
5420
|
if (unknown) {
|
|
5341
5421
|
if (updates) more.push(UPDATES_KEY);
|
|
5342
5422
|
return {
|
|
@@ -5632,114 +5712,121 @@ function useMarketTransient(input) {
|
|
|
5632
5712
|
};
|
|
5633
5713
|
}
|
|
5634
5714
|
var MarketPage_module_default = {
|
|
5635
|
-
marketList: "
|
|
5636
|
-
marketRow: "
|
|
5637
|
-
marketIcon: "
|
|
5638
|
-
marketMain: "
|
|
5639
|
-
marketName: "
|
|
5640
|
-
marketStatus: "
|
|
5641
|
-
marketStateText: "
|
|
5642
|
-
marketSep: "
|
|
5643
|
-
marketReason: "
|
|
5644
|
-
marketVersion: "
|
|
5645
|
-
marketLocalTag: "
|
|
5646
|
-
marketEnd: "
|
|
5647
|
-
marketSwitchSeat: "
|
|
5648
|
-
marketActions: "
|
|
5649
|
-
marketUpdateAction: "
|
|
5650
|
-
marketSelfDivider: "
|
|
5651
|
-
marketSection: "
|
|
5652
|
-
marketSectionHead: "
|
|
5653
|
-
marketSectionIcon: "
|
|
5654
|
-
marketSectionTitle: "
|
|
5655
|
-
marketSectionCount: "
|
|
5656
|
-
marketSectionQuiet: "
|
|
5657
|
-
marketProgress: "
|
|
5658
|
-
marketNote: "
|
|
5659
|
-
marketFailure: "
|
|
5660
|
-
marketEmpty: "
|
|
5661
|
-
marketPage: "
|
|
5662
|
-
marketPageHead: "
|
|
5663
|
-
marketPageTitle: "
|
|
5664
|
-
marketPageIntro: "
|
|
5665
|
-
marketPageTools: "
|
|
5666
|
-
marketPanel: "
|
|
5667
|
-
marketTabs: "
|
|
5668
|
-
marketTabList: "
|
|
5669
|
-
marketIconButton: "
|
|
5670
|
-
marketIconWrap: "
|
|
5671
|
-
marketIconButtonSpinning: "
|
|
5672
|
-
"wb-spin": "_wb-
|
|
5673
|
-
marketAddButton: "
|
|
5674
|
-
marketEmptyTitle: "
|
|
5675
|
-
discoverPage: "
|
|
5676
|
-
discoverBar: "
|
|
5677
|
-
discoverTools: "
|
|
5678
|
-
discoverMarket: "
|
|
5679
|
-
discoverMarketButton: "
|
|
5680
|
-
discoverMarketName: "
|
|
5681
|
-
discoverLabels: "
|
|
5682
|
-
discoverSort: "
|
|
5683
|
-
discoverRefresh: "
|
|
5684
|
-
discoverSearch: "
|
|
5685
|
-
|
|
5686
|
-
|
|
5687
|
-
|
|
5688
|
-
|
|
5689
|
-
|
|
5690
|
-
|
|
5691
|
-
|
|
5692
|
-
|
|
5693
|
-
|
|
5694
|
-
|
|
5695
|
-
|
|
5696
|
-
|
|
5697
|
-
|
|
5698
|
-
|
|
5699
|
-
|
|
5700
|
-
|
|
5701
|
-
|
|
5702
|
-
|
|
5703
|
-
|
|
5704
|
-
|
|
5705
|
-
|
|
5706
|
-
|
|
5707
|
-
|
|
5708
|
-
|
|
5709
|
-
|
|
5710
|
-
|
|
5711
|
-
|
|
5712
|
-
|
|
5713
|
-
|
|
5714
|
-
|
|
5715
|
-
|
|
5716
|
-
|
|
5717
|
-
|
|
5718
|
-
|
|
5719
|
-
|
|
5720
|
-
|
|
5721
|
-
|
|
5722
|
-
|
|
5723
|
-
|
|
5724
|
-
|
|
5725
|
-
|
|
5726
|
-
|
|
5727
|
-
|
|
5728
|
-
|
|
5729
|
-
|
|
5730
|
-
|
|
5731
|
-
|
|
5732
|
-
|
|
5733
|
-
|
|
5734
|
-
|
|
5735
|
-
|
|
5736
|
-
|
|
5737
|
-
|
|
5738
|
-
|
|
5739
|
-
|
|
5740
|
-
|
|
5741
|
-
|
|
5742
|
-
|
|
5715
|
+
marketList: "_marketList_1idrk_1",
|
|
5716
|
+
marketRow: "_marketRow_1idrk_10",
|
|
5717
|
+
marketIcon: "_marketIcon_1idrk_20",
|
|
5718
|
+
marketMain: "_marketMain_1idrk_32",
|
|
5719
|
+
marketName: "_marketName_1idrk_39",
|
|
5720
|
+
marketStatus: "_marketStatus_1idrk_48",
|
|
5721
|
+
marketStateText: "_marketStateText_1idrk_58",
|
|
5722
|
+
marketSep: "_marketSep_1idrk_62",
|
|
5723
|
+
marketReason: "_marketReason_1idrk_66",
|
|
5724
|
+
marketVersion: "_marketVersion_1idrk_72",
|
|
5725
|
+
marketLocalTag: "_marketLocalTag_1idrk_94",
|
|
5726
|
+
marketEnd: "_marketEnd_1idrk_105",
|
|
5727
|
+
marketSwitchSeat: "_marketSwitchSeat_1idrk_112",
|
|
5728
|
+
marketActions: "_marketActions_1idrk_125",
|
|
5729
|
+
marketUpdateAction: "_marketUpdateAction_1idrk_131",
|
|
5730
|
+
marketSelfDivider: "_marketSelfDivider_1idrk_137",
|
|
5731
|
+
marketSection: "_marketSection_1idrk_143",
|
|
5732
|
+
marketSectionHead: "_marketSectionHead_1idrk_150",
|
|
5733
|
+
marketSectionIcon: "_marketSectionIcon_1idrk_156",
|
|
5734
|
+
marketSectionTitle: "_marketSectionTitle_1idrk_163",
|
|
5735
|
+
marketSectionCount: "_marketSectionCount_1idrk_169",
|
|
5736
|
+
marketSectionQuiet: "_marketSectionQuiet_1idrk_175",
|
|
5737
|
+
marketProgress: "_marketProgress_1idrk_188",
|
|
5738
|
+
marketNote: "_marketNote_1idrk_198",
|
|
5739
|
+
marketFailure: "_marketFailure_1idrk_205",
|
|
5740
|
+
marketEmpty: "_marketEmpty_1idrk_212",
|
|
5741
|
+
marketPage: "_marketPage_1idrk_217",
|
|
5742
|
+
marketPageHead: "_marketPageHead_1idrk_235",
|
|
5743
|
+
marketPageTitle: "_marketPageTitle_1idrk_243",
|
|
5744
|
+
marketPageIntro: "_marketPageIntro_1idrk_248",
|
|
5745
|
+
marketPageTools: "_marketPageTools_1idrk_254",
|
|
5746
|
+
marketPanel: "_marketPanel_1idrk_263",
|
|
5747
|
+
marketTabs: "_marketTabs_1idrk_273",
|
|
5748
|
+
marketTabList: "_marketTabList_1idrk_278",
|
|
5749
|
+
marketIconButton: "_marketIconButton_1idrk_283",
|
|
5750
|
+
marketIconWrap: "_marketIconWrap_1idrk_308",
|
|
5751
|
+
marketIconButtonSpinning: "_marketIconButtonSpinning_1idrk_312",
|
|
5752
|
+
"wb-spin": "_wb-spin_1idrk_1",
|
|
5753
|
+
marketAddButton: "_marketAddButton_1idrk_316",
|
|
5754
|
+
marketEmptyTitle: "_marketEmptyTitle_1idrk_333",
|
|
5755
|
+
discoverPage: "_discoverPage_1idrk_347",
|
|
5756
|
+
discoverBar: "_discoverBar_1idrk_354",
|
|
5757
|
+
discoverTools: "_discoverTools_1idrk_361",
|
|
5758
|
+
discoverMarket: "_discoverMarket_1idrk_367",
|
|
5759
|
+
discoverMarketButton: "_discoverMarketButton_1idrk_372",
|
|
5760
|
+
discoverMarketName: "_discoverMarketName_1idrk_379",
|
|
5761
|
+
discoverLabels: "_discoverLabels_1idrk_385",
|
|
5762
|
+
discoverSort: "_discoverSort_1idrk_390",
|
|
5763
|
+
discoverRefresh: "_discoverRefresh_1idrk_395",
|
|
5764
|
+
discoverSearch: "_discoverSearch_1idrk_399",
|
|
5765
|
+
discoverSearchField: "_discoverSearchField_1idrk_407",
|
|
5766
|
+
discoverSearchFieldFilled: "_discoverSearchFieldFilled_1idrk_412",
|
|
5767
|
+
discoverSearchClear: "_discoverSearchClear_1idrk_421",
|
|
5768
|
+
discoverChips: "_discoverChips_1idrk_472",
|
|
5769
|
+
discoverList: "_discoverList_1idrk_479",
|
|
5770
|
+
discoverCard: "_discoverCard_1idrk_488",
|
|
5771
|
+
discoverArtwork: "_discoverArtwork_1idrk_502",
|
|
5772
|
+
discoverArtworkImage: "_discoverArtworkImage_1idrk_514",
|
|
5773
|
+
discoverMain: "_discoverMain_1idrk_518",
|
|
5774
|
+
discoverTitleRow: "_discoverTitleRow_1idrk_526",
|
|
5775
|
+
discoverCardOpen: "_discoverCardOpen_1idrk_534",
|
|
5776
|
+
discoverStrong: "_discoverStrong_1idrk_565",
|
|
5777
|
+
discoverDesc: "_discoverDesc_1idrk_571",
|
|
5778
|
+
discoverMeta: "_discoverMeta_1idrk_580",
|
|
5779
|
+
discoverMuted: "_discoverMuted_1idrk_587",
|
|
5780
|
+
discoverEnd: "_discoverEnd_1idrk_593",
|
|
5781
|
+
discoverBlocked: "_discoverBlocked_1idrk_602",
|
|
5782
|
+
discoverEmpty: "_discoverEmpty_1idrk_607",
|
|
5783
|
+
discoverEmptyTitle: "_discoverEmptyTitle_1idrk_616",
|
|
5784
|
+
discoverDetail: "_discoverDetail_1idrk_626",
|
|
5785
|
+
discoverCrumb: "_discoverCrumb_1idrk_632",
|
|
5786
|
+
discoverCrumbIcon: "_discoverCrumbIcon_1idrk_655",
|
|
5787
|
+
discoverDetailHead: "_discoverDetailHead_1idrk_659",
|
|
5788
|
+
discoverDetailTitle: "_discoverDetailTitle_1idrk_665",
|
|
5789
|
+
discoverDetailText: "_discoverDetailText_1idrk_671",
|
|
5790
|
+
discoverDetailPanel: "_discoverDetailPanel_1idrk_678",
|
|
5791
|
+
discoverDetailTabs: "_discoverDetailTabs_1idrk_685",
|
|
5792
|
+
discoverDetailTabList: "_discoverDetailTabList_1idrk_690",
|
|
5793
|
+
discoverDocBody: "_discoverDocBody_1idrk_695",
|
|
5794
|
+
discoverDocNotice: "_discoverDocNotice_1idrk_700",
|
|
5795
|
+
discoverSection: "_discoverSection_1idrk_706",
|
|
5796
|
+
discoverSectionTitle: "_discoverSectionTitle_1idrk_713",
|
|
5797
|
+
discoverFacts: "_discoverFacts_1idrk_719",
|
|
5798
|
+
discoverFactRow: "_discoverFactRow_1idrk_724",
|
|
5799
|
+
discoverFactKind: "_discoverFactKind_1idrk_734",
|
|
5800
|
+
discoverFactValue: "_discoverFactValue_1idrk_740",
|
|
5801
|
+
discoverCode: "_discoverCode_1idrk_748",
|
|
5802
|
+
discoverTags: "_discoverTags_1idrk_757",
|
|
5803
|
+
discoverLink: "_discoverLink_1idrk_764",
|
|
5804
|
+
discoverVersions: "_discoverVersions_1idrk_774",
|
|
5805
|
+
discoverVersionRow: "_discoverVersionRow_1idrk_782",
|
|
5806
|
+
discoverVersionName: "_discoverVersionName_1idrk_790",
|
|
5807
|
+
discoverError: "_discoverError_1idrk_795",
|
|
5808
|
+
discoverFailure: "_discoverFailure_1idrk_804",
|
|
5809
|
+
discoverLoading: "_discoverLoading_1idrk_810",
|
|
5810
|
+
discoverNotice: "_discoverNotice_1idrk_819",
|
|
5811
|
+
discoverMore: "_discoverMore_1idrk_837",
|
|
5812
|
+
discoverDialog: "_discoverDialog_1idrk_841",
|
|
5813
|
+
discoverDialogBody: "_discoverDialogBody_1idrk_845",
|
|
5814
|
+
discoverSourceList: "_discoverSourceList_1idrk_851",
|
|
5815
|
+
discoverSourceRow: "_discoverSourceRow_1idrk_859",
|
|
5816
|
+
discoverSourceCurrent: "_discoverSourceCurrent_1idrk_868",
|
|
5817
|
+
discoverSourceLoading: "_discoverSourceLoading_1idrk_875",
|
|
5818
|
+
discoverSourceHint: "_discoverSourceHint_1idrk_885",
|
|
5819
|
+
discoverSourceError: "_discoverSourceError_1idrk_899",
|
|
5820
|
+
discoverSourceForm: "_discoverSourceForm_1idrk_905",
|
|
5821
|
+
discoverGrow: "_discoverGrow_1idrk_911",
|
|
5822
|
+
discoverField: "_discoverField_1idrk_916",
|
|
5823
|
+
discoverFieldLabel: "_discoverFieldLabel_1idrk_922",
|
|
5824
|
+
discoverConfirmHead: "_discoverConfirmHead_1idrk_927",
|
|
5825
|
+
discoverSkeletonFill: "_discoverSkeletonFill_1idrk_933",
|
|
5826
|
+
"wb-skeleton": "_wb-skeleton_1idrk_1",
|
|
5827
|
+
discoverSkeletonBar: "_discoverSkeletonBar_1idrk_942",
|
|
5828
|
+
discoverSkeletonTitle: "_discoverSkeletonTitle_1idrk_949",
|
|
5829
|
+
discoverSkeletonDesc: "_discoverSkeletonDesc_1idrk_953"
|
|
5743
5830
|
};
|
|
5744
5831
|
//#endregion
|
|
5745
5832
|
//#region src/app/layouts/market/discover-states.tsx
|
|
@@ -5763,6 +5850,13 @@ function DiscoverSkeleton({ label }) {
|
|
|
5763
5850
|
function DiscoverEmptyText({ text }) {
|
|
5764
5851
|
return /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverMuted }, text);
|
|
5765
5852
|
}
|
|
5853
|
+
function DiscoverLoading({ label }) {
|
|
5854
|
+
return /* @__PURE__ */ (0, react.createElement)("p", {
|
|
5855
|
+
className: MarketPage_module_default.discoverLoading,
|
|
5856
|
+
role: "status",
|
|
5857
|
+
"aria-live": "polite"
|
|
5858
|
+
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: "ongoing" }), label);
|
|
5859
|
+
}
|
|
5766
5860
|
function DiscoverFailure({ t, text, onRetry }) {
|
|
5767
5861
|
return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverFailure }, /* @__PURE__ */ (0, react.createElement)("p", {
|
|
5768
5862
|
className: MarketPage_module_default.discoverError,
|
|
@@ -5831,6 +5925,18 @@ function sharedRowKind(row) {
|
|
|
5831
5925
|
return row.kind === "extension" ? "plugin" : "lib";
|
|
5832
5926
|
}
|
|
5833
5927
|
//#endregion
|
|
5928
|
+
//#region src/app/layouts/rightbar/market-names.ts
|
|
5929
|
+
function namesOf(t, modules, titleOf) {
|
|
5930
|
+
const shown = /* @__PURE__ */ new Map();
|
|
5931
|
+
for (const module of modules) {
|
|
5932
|
+
const key = unitTitleKey(module.unit);
|
|
5933
|
+
const live = t(key);
|
|
5934
|
+
const name = live !== key && live !== "" ? live : titleOf(module.title);
|
|
5935
|
+
if (name !== "") shown.set(module.unit, name);
|
|
5936
|
+
}
|
|
5937
|
+
return shown;
|
|
5938
|
+
}
|
|
5939
|
+
//#endregion
|
|
5834
5940
|
//#region src/app/layouts/rightbar/market-view-text.ts
|
|
5835
5941
|
var PROGRESS_KEY = {
|
|
5836
5942
|
install: "panels.market.installing",
|
|
@@ -5841,7 +5947,9 @@ var PROGRESS_KEY = {
|
|
|
5841
5947
|
"update-dependency": "panels.market.updating",
|
|
5842
5948
|
"update-plugin": "panels.market.updating",
|
|
5843
5949
|
"uninstall-plugin": "panels.market.uninstalling",
|
|
5844
|
-
"update-workbench": "panels.market.updating"
|
|
5950
|
+
"update-workbench": "panels.market.updating",
|
|
5951
|
+
"migrate-workbench": "panels.market.migrating",
|
|
5952
|
+
"dismiss-followup": "panels.market.dismissing"
|
|
5845
5953
|
};
|
|
5846
5954
|
var ACTION_LABEL_KEY = {
|
|
5847
5955
|
install: "panels.market.install",
|
|
@@ -5852,7 +5960,9 @@ var ACTION_LABEL_KEY = {
|
|
|
5852
5960
|
"update-dependency": "panels.market.update",
|
|
5853
5961
|
"update-plugin": "panels.market.update",
|
|
5854
5962
|
"uninstall-plugin": "panels.market.uninstall",
|
|
5855
|
-
"update-workbench": "panels.market.update"
|
|
5963
|
+
"update-workbench": "panels.market.update",
|
|
5964
|
+
"migrate-workbench": "panels.market.migrateAction",
|
|
5965
|
+
"dismiss-followup": "panels.market.dismissFollowUp"
|
|
5856
5966
|
};
|
|
5857
5967
|
function holdOf(pending, application) {
|
|
5858
5968
|
if (pending === null || pending.row === void 0) return void 0;
|
|
@@ -5900,12 +6010,9 @@ function withPinnedRow(rows, pinned) {
|
|
|
5900
6010
|
function marketFootVisible(shown, installed) {
|
|
5901
6011
|
return shown.length > 0 || installed.length > 0;
|
|
5902
6012
|
}
|
|
5903
|
-
|
|
5904
|
-
|
|
5905
|
-
(
|
|
5906
|
-
if (!mocked) setTitles((known) => mergeTitles(known, manifests));
|
|
5907
|
-
}, [manifests, mocked]);
|
|
5908
|
-
return titles;
|
|
6013
|
+
var NO_NAMES = /* @__PURE__ */ new Map();
|
|
6014
|
+
function marketNamesOf(t, modules, titleOf, mocked) {
|
|
6015
|
+
return mocked ? NO_NAMES : namesOf(t, modules, titleOf);
|
|
5909
6016
|
}
|
|
5910
6017
|
function useHeldRow(pending, backInRoster) {
|
|
5911
6018
|
const [held, setHeld] = (0, react.useState)(void 0);
|
|
@@ -5941,10 +6048,11 @@ function pendingRowOf(input) {
|
|
|
5941
6048
|
const { pending, removing } = input;
|
|
5942
6049
|
if (removing === null || pending === null) return void 0;
|
|
5943
6050
|
if (input.rows.some((row) => row.id === removing)) return void 0;
|
|
6051
|
+
const name = pending.label ?? input.names.get(removing);
|
|
5944
6052
|
return {
|
|
5945
6053
|
id: removing,
|
|
5946
|
-
titleKey: pending.titleKey ??
|
|
5947
|
-
...
|
|
6054
|
+
titleKey: pending.titleKey ?? removing,
|
|
6055
|
+
...name === void 0 ? {} : { label: name },
|
|
5948
6056
|
state: "installed",
|
|
5949
6057
|
canInstall: false,
|
|
5950
6058
|
canUpdate: false,
|
|
@@ -6061,49 +6169,120 @@ var updateActions = [
|
|
|
6061
6169
|
"update-plugin",
|
|
6062
6170
|
"update-workbench"
|
|
6063
6171
|
];
|
|
6172
|
+
function MigrationConfirm({ t, onConfirm, onCancel }) {
|
|
6173
|
+
const [acknowledged, setAcknowledged] = (0, react.useState)(false);
|
|
6174
|
+
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
|
|
6175
|
+
open: true,
|
|
6176
|
+
title: t("panels.market.migrateConfirmTitle"),
|
|
6177
|
+
description: t("panels.market.migrateConfirmDetail"),
|
|
6178
|
+
acknowledgeLabel: t("panels.market.migrateConfirmAck"),
|
|
6179
|
+
cancelLabel: t("panels.market.confirmNo"),
|
|
6180
|
+
closeLabel: t("panels.market.confirmNo"),
|
|
6181
|
+
confirmLabel: t("panels.market.migrateConfirmYes"),
|
|
6182
|
+
acknowledged,
|
|
6183
|
+
onAcknowledgedChange: setAcknowledged,
|
|
6184
|
+
onCancel,
|
|
6185
|
+
onConfirm
|
|
6186
|
+
});
|
|
6187
|
+
}
|
|
6188
|
+
function DismissFollowUpConfirm({ t, onConfirm, onCancel }) {
|
|
6189
|
+
const [acknowledged, setAcknowledged] = (0, react.useState)(false);
|
|
6190
|
+
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
|
|
6191
|
+
open: true,
|
|
6192
|
+
title: t("panels.market.dismissFollowUpTitle"),
|
|
6193
|
+
description: t("panels.market.dismissFollowUpDetail"),
|
|
6194
|
+
acknowledgeLabel: t("panels.market.dismissFollowUpAck"),
|
|
6195
|
+
cancelLabel: t("panels.market.confirmNo"),
|
|
6196
|
+
closeLabel: t("panels.market.confirmNo"),
|
|
6197
|
+
confirmLabel: t("panels.market.dismissFollowUpYes"),
|
|
6198
|
+
acknowledged,
|
|
6199
|
+
onAcknowledgedChange: setAcknowledged,
|
|
6200
|
+
onCancel,
|
|
6201
|
+
onConfirm
|
|
6202
|
+
});
|
|
6203
|
+
}
|
|
6204
|
+
function MarketLineDialogs({ t, migrationOpen, dismissOpen, onMigrationCancel, onMigrationConfirm, onDismissCancel, onDismissConfirm }) {
|
|
6205
|
+
return /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, migrationOpen ? /* @__PURE__ */ (0, react.createElement)(MigrationConfirm, {
|
|
6206
|
+
t,
|
|
6207
|
+
onCancel: onMigrationCancel,
|
|
6208
|
+
onConfirm: onMigrationConfirm
|
|
6209
|
+
}) : null, dismissOpen ? /* @__PURE__ */ (0, react.createElement)(DismissFollowUpConfirm, {
|
|
6210
|
+
t,
|
|
6211
|
+
onCancel: onDismissCancel,
|
|
6212
|
+
onConfirm: onDismissConfirm
|
|
6213
|
+
}) : null);
|
|
6214
|
+
}
|
|
6215
|
+
function MarketLineStatus({ t, row, quiet }) {
|
|
6216
|
+
const stateText = t(MARKET_STATE_KEY[row.state]);
|
|
6217
|
+
const noteText = row.note === void 0 ? null : t(row.note.key, row.note.params);
|
|
6218
|
+
if (quiet) return null;
|
|
6219
|
+
return /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketStatus }, row.state === "checking" ? /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }) : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
|
|
6220
|
+
state: MARKET_DOT[row.state],
|
|
6221
|
+
size: 9
|
|
6222
|
+
}), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketStateText }, stateText), row.hint === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("span", {
|
|
6223
|
+
className: MarketPage_module_default.marketSep,
|
|
6224
|
+
"aria-hidden": "true"
|
|
6225
|
+
}, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, t(row.hint))), noteText === null ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("span", {
|
|
6226
|
+
className: MarketPage_module_default.marketSep,
|
|
6227
|
+
"aria-hidden": "true"
|
|
6228
|
+
}, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, noteText)));
|
|
6229
|
+
}
|
|
6064
6230
|
function MarketLine({ t, row, pending, failure, onAct, onDefault, boardBusy }) {
|
|
6065
6231
|
const running = pending !== null && pending.id === row.id ? pending : null;
|
|
6066
6232
|
const locked = pending !== null;
|
|
6233
|
+
const [migrationOpen, setMigrationOpen] = (0, react.useState)(false);
|
|
6234
|
+
const [dismissOpen, setDismissOpen] = (0, react.useState)(false);
|
|
6067
6235
|
const quiet = row.workbench === true && row.state === "installed" && row.hint === void 0;
|
|
6068
6236
|
const actions = marketActions$1(row);
|
|
6069
6237
|
const switchLocked = marketSwitchLocked(row);
|
|
6070
|
-
const stateText = t(MARKET_STATE_KEY[row.state]);
|
|
6071
|
-
const noteText = row.note === void 0 ? null : t(row.note.key, row.note.params);
|
|
6072
6238
|
return /* @__PURE__ */ (0, react.createElement)("li", { className: MarketPage_module_default.marketRow }, /* @__PURE__ */ (0, react.createElement)("span", {
|
|
6073
6239
|
className: MarketPage_module_default.marketIcon,
|
|
6074
6240
|
"aria-hidden": "true"
|
|
6075
6241
|
}, packageIcon(marketRowKind(row))), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketName }, marketRowTitle(row, t), row.versionLabel === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketVersion }, row.versionLabel), row.version === void 0 || row.versionLabel !== void 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketVersion }, row.version.installed !== void 0 && row.version.latest !== void 0 && row.version.installed !== row.version.latest ? t("panels.market.versionArrow", {
|
|
6076
6242
|
from: row.version.installed,
|
|
6077
6243
|
to: row.version.latest
|
|
6078
|
-
}) : row.version.installed ?? row.version.latest ?? ""), row.local === true ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketLocalTag }, t("panels.market.localMark")) : null),
|
|
6079
|
-
|
|
6080
|
-
|
|
6081
|
-
|
|
6082
|
-
|
|
6083
|
-
"aria-hidden": "true"
|
|
6084
|
-
}, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, t(row.hint))), noteText === null ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("span", {
|
|
6085
|
-
className: MarketPage_module_default.marketSep,
|
|
6086
|
-
"aria-hidden": "true"
|
|
6087
|
-
}, "·"), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketReason }, noteText)))), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
|
|
6244
|
+
}) : row.version.installed ?? row.version.latest ?? ""), row.local === true ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketLocalTag }, t("panels.market.localMark")) : null), /* @__PURE__ */ (0, react.createElement)(MarketLineStatus, {
|
|
6245
|
+
t,
|
|
6246
|
+
row,
|
|
6247
|
+
quiet
|
|
6248
|
+
})), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
|
|
6088
6249
|
const danger = dangerActions.includes(action);
|
|
6089
6250
|
const update = updateActions.includes(action);
|
|
6090
6251
|
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
6091
6252
|
key: action,
|
|
6092
6253
|
type: "button",
|
|
6093
6254
|
size: "sm",
|
|
6094
|
-
variant: action === "install" ? "primary" : "outline",
|
|
6255
|
+
variant: action === "install" || action === "migrate-workbench" ? "primary" : "outline",
|
|
6095
6256
|
className: danger ? "wb-dangerAction" : update ? MarketPage_module_default.marketUpdateAction : void 0,
|
|
6096
6257
|
icon: danger ? /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconTrashOutlineRegular, { size: 13 }) : void 0,
|
|
6097
6258
|
"aria-label": danger ? t("panels.market.uninstallLabel", { name: marketRowTitle(row, t) }) : void 0,
|
|
6098
6259
|
disabled: locked,
|
|
6099
|
-
onClick: () =>
|
|
6260
|
+
onClick: () => {
|
|
6261
|
+
if (action === "migrate-workbench") setMigrationOpen(true);
|
|
6262
|
+
else if (action === "dismiss-followup") setDismissOpen(true);
|
|
6263
|
+
else onAct(action);
|
|
6264
|
+
}
|
|
6100
6265
|
}, t(ACTION_LABEL_KEY[action]));
|
|
6101
6266
|
})), row.defaultShown === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(Tip, { label: t(switchLocked ? "panels.market.defaultLocked" : "panels.market.defaultHint") }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketSwitchSeat }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Switch, {
|
|
6102
6267
|
checked: row.defaultShown,
|
|
6103
6268
|
disabled: boardBusy === true || locked || switchLocked,
|
|
6104
6269
|
label: `${marketRowTitle(row, t)} · ${t("panels.market.defaultLabel")}`,
|
|
6105
6270
|
onChange: (next) => onDefault?.(next)
|
|
6106
|
-
})))), failure === null ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure))
|
|
6271
|
+
})))), failure === null ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketFailure }, failure), /* @__PURE__ */ (0, react.createElement)(MarketLineDialogs, {
|
|
6272
|
+
t,
|
|
6273
|
+
migrationOpen,
|
|
6274
|
+
dismissOpen,
|
|
6275
|
+
onMigrationCancel: () => setMigrationOpen(false),
|
|
6276
|
+
onMigrationConfirm: () => {
|
|
6277
|
+
setMigrationOpen(false);
|
|
6278
|
+
onAct("migrate-workbench");
|
|
6279
|
+
},
|
|
6280
|
+
onDismissCancel: () => setDismissOpen(false),
|
|
6281
|
+
onDismissConfirm: () => {
|
|
6282
|
+
setDismissOpen(false);
|
|
6283
|
+
onAct("dismiss-followup");
|
|
6284
|
+
}
|
|
6285
|
+
}));
|
|
6107
6286
|
}
|
|
6108
6287
|
function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy }) {
|
|
6109
6288
|
if (rows.length === 0) return null;
|
|
@@ -6418,10 +6597,13 @@ function marketActOf(options) {
|
|
|
6418
6597
|
seats.setConfirming(null);
|
|
6419
6598
|
seats.setFailed(null);
|
|
6420
6599
|
seats.setNotice(null);
|
|
6421
|
-
const outcome = await send(action === "
|
|
6600
|
+
const outcome = await send(action === "dismiss-followup" ? {
|
|
6601
|
+
action,
|
|
6602
|
+
id: row?.followUp?.id ?? ""
|
|
6603
|
+
} : action === "update-dependency" ? {
|
|
6422
6604
|
action,
|
|
6423
6605
|
id
|
|
6424
|
-
} : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" ? {
|
|
6606
|
+
} : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" || action === "migrate-workbench" ? {
|
|
6425
6607
|
action,
|
|
6426
6608
|
name: row?.pkg ?? ""
|
|
6427
6609
|
} : {
|
|
@@ -6439,6 +6621,21 @@ function marketActOf(options) {
|
|
|
6439
6621
|
return;
|
|
6440
6622
|
}
|
|
6441
6623
|
const value = outcome.value;
|
|
6624
|
+
if (action === "dismiss-followup") {
|
|
6625
|
+
onChanged({ force: true });
|
|
6626
|
+
seats.setPending(null);
|
|
6627
|
+
seats.setHeld(void 0);
|
|
6628
|
+
seats.setNotice(t("panels.market.dismissed"));
|
|
6629
|
+
return;
|
|
6630
|
+
}
|
|
6631
|
+
if (action === "migrate-workbench") {
|
|
6632
|
+
const added = recordOf(value)?.["added"];
|
|
6633
|
+
onChanged({ force: true });
|
|
6634
|
+
seats.setPending(null);
|
|
6635
|
+
seats.setHeld(void 0);
|
|
6636
|
+
seats.setNotice(t("panels.market.migrateDone", { added: typeof added === "number" ? String(added) : "0" }));
|
|
6637
|
+
return;
|
|
6638
|
+
}
|
|
6442
6639
|
const change = changeOf(value);
|
|
6443
6640
|
const failure = updateVerdictText(updateVerdictOf({
|
|
6444
6641
|
action,
|
|
@@ -6493,9 +6690,6 @@ var CONFIRM_UNINSTALL = [
|
|
|
6493
6690
|
"remove-bundle",
|
|
6494
6691
|
"uninstall-plugin"
|
|
6495
6692
|
];
|
|
6496
|
-
function marketMigrationNotice(t, update) {
|
|
6497
|
-
return update?.migration === "needed" ? t("panels.market.selfUpdateNeedsMigrate") : null;
|
|
6498
|
-
}
|
|
6499
6693
|
function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
|
|
6500
6694
|
const [acknowledged, setAcknowledged] = (0, react.useState)(false);
|
|
6501
6695
|
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
|
|
@@ -6565,8 +6759,8 @@ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending
|
|
|
6565
6759
|
}));
|
|
6566
6760
|
}
|
|
6567
6761
|
function useMarketScene(input) {
|
|
6568
|
-
const { manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
|
|
6569
|
-
const
|
|
6762
|
+
const { t, titleOf, manifests, installable, capabilities, updates, installed, settling, mock, defaults, changed, pending, failed } = input;
|
|
6763
|
+
const names = marketNamesOf(t, installed ?? [], titleOf, mock !== void 0);
|
|
6570
6764
|
const catalog = mock?.manifests ?? manifests;
|
|
6571
6765
|
const marketable = mock === void 0 ? marketCatalog(manifests, installable) : catalog;
|
|
6572
6766
|
const effective = mock === void 0 ? capabilities : mock.capabilities;
|
|
@@ -6580,13 +6774,13 @@ function useMarketScene(input) {
|
|
|
6580
6774
|
const pinned = pinnedRowOf(pending, steady.held);
|
|
6581
6775
|
const busyId = heldIdOf(pending, steady.held);
|
|
6582
6776
|
return {
|
|
6583
|
-
|
|
6777
|
+
names,
|
|
6584
6778
|
catalog,
|
|
6585
6779
|
effective,
|
|
6586
6780
|
updateMap,
|
|
6587
6781
|
rows,
|
|
6588
6782
|
shared,
|
|
6589
|
-
installedList: installedRows((mock?.installed ?? installed ?? []).filter((module) => module.unit !== pinned?.id && (!(settling?.has(module.unit) ?? false) || module.unit === busyId) && module.unit !== removing), catalog, new Set(rows.map((row) => row.id)),
|
|
6783
|
+
installedList: installedRows((mock?.installed ?? installed ?? []).filter((module) => module.unit !== pinned?.id && (!(settling?.has(module.unit) ?? false) || module.unit === busyId) && module.unit !== removing), catalog, new Set(rows.map((row) => row.id)), mock === void 0 ? names : void 0, byDefault, changed),
|
|
6590
6784
|
byDefault,
|
|
6591
6785
|
steady,
|
|
6592
6786
|
pinned,
|
|
@@ -6594,12 +6788,14 @@ function useMarketScene(input) {
|
|
|
6594
6788
|
busyId
|
|
6595
6789
|
};
|
|
6596
6790
|
}
|
|
6597
|
-
function MarketView({ t, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
|
|
6791
|
+
function MarketView({ t, titleOf, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
|
|
6598
6792
|
const { pending, setPending, confirming, setConfirming, failed, setFailed, notice, setNotice } = useMarketTransient({
|
|
6599
6793
|
mock,
|
|
6600
6794
|
onPending
|
|
6601
6795
|
});
|
|
6602
|
-
const {
|
|
6796
|
+
const { names, effective, updateMap, rows, shared, installedList, byDefault, steady, pinned, removing, busyId } = useMarketScene({
|
|
6797
|
+
t,
|
|
6798
|
+
titleOf,
|
|
6603
6799
|
manifests,
|
|
6604
6800
|
installable,
|
|
6605
6801
|
capabilities,
|
|
@@ -6644,7 +6840,7 @@ function MarketView({ t, manifests, installable, capabilities, freshness, onChan
|
|
|
6644
6840
|
pending,
|
|
6645
6841
|
removing,
|
|
6646
6842
|
rows,
|
|
6647
|
-
|
|
6843
|
+
names
|
|
6648
6844
|
});
|
|
6649
6845
|
const self = workbenchRow(mock === void 0 ? workbench : mock.workbench);
|
|
6650
6846
|
const shown = withPinnedRow(pendingRow === void 0 ? rows : [...rows, pendingRow], pinned);
|
|
@@ -6672,21 +6868,18 @@ function MarketView({ t, manifests, installable, capabilities, freshness, onChan
|
|
|
6672
6868
|
send: (body) => provision.send(body),
|
|
6673
6869
|
onChanged
|
|
6674
6870
|
});
|
|
6675
|
-
const landed = pendingLanded(pending, updateMap, effective, workbench?.installed, shared, pluginSource === null ? null : pluginList, {
|
|
6676
|
-
units: installed === void 0 ? null : new Set(installed.map((module) => module.unit)),
|
|
6677
|
-
plugins: pluginSource === null ? null : new Set(pluginList.map((row) => row.id))
|
|
6678
|
-
});
|
|
6679
|
-
const effectiveSelfUpdate = mock?.selfUpdate ?? selfUpdate;
|
|
6680
6871
|
useSettleHold({
|
|
6681
6872
|
pending,
|
|
6682
|
-
landed,
|
|
6873
|
+
landed: pendingLanded(pending, updateMap, effective, workbench?.installed, shared, pluginSource === null ? null : pluginList, {
|
|
6874
|
+
units: installed === void 0 ? null : new Set(installed.map((module) => module.unit)),
|
|
6875
|
+
plugins: pluginSource === null ? null : new Set(pluginList.map((row) => row.id))
|
|
6876
|
+
}),
|
|
6683
6877
|
t,
|
|
6684
6878
|
onChanged,
|
|
6685
|
-
selfUpdate:
|
|
6879
|
+
selfUpdate: mock?.selfUpdate ?? selfUpdate,
|
|
6686
6880
|
setPending,
|
|
6687
6881
|
setFailed
|
|
6688
6882
|
});
|
|
6689
|
-
const migrationNotice = marketMigrationNotice(t, effectiveSelfUpdate);
|
|
6690
6883
|
const settled = marketSettled(freshness, installedRead);
|
|
6691
6884
|
const nothing = shown.length === 0 && self === void 0 && installedList.length === 0 && pluginList.length === 0;
|
|
6692
6885
|
if (!settled || (settling?.size ?? 0) > 0 && shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ (0, react.createElement)(MarketChecking, { t });
|
|
@@ -6700,7 +6893,7 @@ function MarketView({ t, manifests, installable, capabilities, freshness, onChan
|
|
|
6700
6893
|
shared,
|
|
6701
6894
|
pending,
|
|
6702
6895
|
failed,
|
|
6703
|
-
notice
|
|
6896
|
+
notice,
|
|
6704
6897
|
act,
|
|
6705
6898
|
onConfirming: setConfirming,
|
|
6706
6899
|
setDefault,
|
|
@@ -6916,7 +7109,7 @@ function sourceFromUrl(raw) {
|
|
|
6916
7109
|
if (url === "" || url.includes("#") || hasCredentials(url)) return { ok: false };
|
|
6917
7110
|
if (HTTP.test(url)) {
|
|
6918
7111
|
const asGit = REPO_FILE.test(url);
|
|
6919
|
-
const label = hostOf(url);
|
|
7112
|
+
const label = asGit ? sourceSuffix(url) || hostOf(url) : hostOf(url);
|
|
6920
7113
|
if (label === "") return { ok: false };
|
|
6921
7114
|
return {
|
|
6922
7115
|
ok: true,
|
|
@@ -6949,6 +7142,13 @@ function sameSourceUrl(left, right) {
|
|
|
6949
7142
|
function sourceSuffix(url) {
|
|
6950
7143
|
return (withoutTrailingSlash(url).split(/[/:]/).filter((part) => part !== "").pop() ?? "").replace(/\.git$/, "");
|
|
6951
7144
|
}
|
|
7145
|
+
function sourceTransport(url) {
|
|
7146
|
+
if (GIT_SSH.test(url) || /^ssh:\/\//i.test(url) || /^git\+ssh:\/\//i.test(url)) return "ssh";
|
|
7147
|
+
if (/^git:\/\//i.test(url)) return "git";
|
|
7148
|
+
if (/^https:\/\//i.test(url)) return "https";
|
|
7149
|
+
if (/^http:\/\//i.test(url)) return "http";
|
|
7150
|
+
return "";
|
|
7151
|
+
}
|
|
6952
7152
|
function sourceLabelsOf(sources) {
|
|
6953
7153
|
const counts = /* @__PURE__ */ new Map();
|
|
6954
7154
|
for (const source of sources) counts.set(source.label, (counts.get(source.label) ?? 0) + 1);
|
|
@@ -6959,7 +7159,8 @@ function sourceLabelsOf(sources) {
|
|
|
6959
7159
|
continue;
|
|
6960
7160
|
}
|
|
6961
7161
|
const suffix = sourceSuffix(source.url);
|
|
6962
|
-
|
|
7162
|
+
const detail = suffix !== "" && suffix !== source.label ? suffix : sourceTransport(source.url);
|
|
7163
|
+
labels.set(source.id, detail === "" ? source.url : `${detail} · ${source.label}`);
|
|
6963
7164
|
}
|
|
6964
7165
|
return labels;
|
|
6965
7166
|
}
|
|
@@ -7086,11 +7287,15 @@ function DiscoverVersions({ t, locale, entry, onInstall }) {
|
|
|
7086
7287
|
var MARKET_DISCOVER_ROUTE = "panels/market-discover";
|
|
7087
7288
|
var MARKET_DOC_ROUTE = "panels/market-doc";
|
|
7088
7289
|
var MARKET_PUBLISH_PREVIEW_ROUTE = "panels/market-publish-preview";
|
|
7290
|
+
var MARKET_SOURCES_ROUTE = "panels/market-sources";
|
|
7089
7291
|
//#endregion
|
|
7090
7292
|
//#region src/shared/hooks/market-queries.ts
|
|
7091
7293
|
function readMarketDiscover(options = {}) {
|
|
7092
7294
|
return apiGet(MARKET_DISCOVER_ROUTE, options.force === true ? { force: "1" } : {});
|
|
7093
7295
|
}
|
|
7296
|
+
function readMarketSources() {
|
|
7297
|
+
return apiGet(MARKET_SOURCES_ROUTE);
|
|
7298
|
+
}
|
|
7094
7299
|
function readMarketDoc(name, version, kind) {
|
|
7095
7300
|
return apiGet(MARKET_DOC_ROUTE, {
|
|
7096
7301
|
name,
|
|
@@ -7098,10 +7303,11 @@ function readMarketDoc(name, version, kind) {
|
|
|
7098
7303
|
kind
|
|
7099
7304
|
});
|
|
7100
7305
|
}
|
|
7101
|
-
function readPublishPreview(unit, version) {
|
|
7306
|
+
function readPublishPreview(unit, version, author) {
|
|
7102
7307
|
return apiGet(MARKET_PUBLISH_PREVIEW_ROUTE, {
|
|
7103
7308
|
unit,
|
|
7104
|
-
...version === void 0 || version === "" ? {} : { version }
|
|
7309
|
+
...version === void 0 || version === "" ? {} : { version },
|
|
7310
|
+
...author === void 0 || author === "" ? {} : { author }
|
|
7105
7311
|
});
|
|
7106
7312
|
}
|
|
7107
7313
|
//#endregion
|
|
@@ -7355,6 +7561,7 @@ function DiscoverSourcesDialog(props) {
|
|
|
7355
7561
|
const [url, setUrl] = (0, react.useState)("");
|
|
7356
7562
|
const [problem, setProblem] = (0, react.useState)(null);
|
|
7357
7563
|
const pending = props.busy || props.adding;
|
|
7564
|
+
const selectedVisible = props.sources.some((source) => source.id === props.selected);
|
|
7358
7565
|
const add = () => {
|
|
7359
7566
|
if (pending) return;
|
|
7360
7567
|
const parsed = sourceFromUrl(url);
|
|
@@ -7377,13 +7584,29 @@ function DiscoverSourcesDialog(props) {
|
|
|
7377
7584
|
closeLabel: t("panels.discover.close"),
|
|
7378
7585
|
description: t("panels.discover.sourcesIntro"),
|
|
7379
7586
|
className: MarketPage_module_default.discoverDialog
|
|
7380
|
-
}, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverDialogBody }, props.
|
|
7587
|
+
}, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverDialogBody }, props.loading && !selectedVisible ? props.slow ? /* @__PURE__ */ (0, react.createElement)("p", {
|
|
7588
|
+
className: MarketPage_module_default.discoverNotice,
|
|
7589
|
+
role: "note"
|
|
7590
|
+
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
|
|
7591
|
+
size: 14,
|
|
7592
|
+
"aria-hidden": "true"
|
|
7593
|
+
}), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.slowHint"))) : /* @__PURE__ */ (0, react.createElement)(DiscoverLoading, { label: t("panels.discover.loading") }) : null, props.sources.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("ul", {
|
|
7381
7594
|
className: MarketPage_module_default.discoverSourceList,
|
|
7382
7595
|
"aria-label": t("panels.discover.sourcesLabel")
|
|
7383
7596
|
}, props.sources.map((source) => /* @__PURE__ */ (0, react.createElement)("li", {
|
|
7384
7597
|
key: source.id,
|
|
7385
7598
|
className: MarketPage_module_default.discoverSourceRow
|
|
7386
|
-
}, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverStrong }, source.label), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverMeta }, source.url), props.problem?.id === source.id ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceError }, props.problem.detail) : null), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.
|
|
7599
|
+
}, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverStrong }, source.label), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverMeta }, source.url), !props.loading && props.problem?.id === source.id ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceError }, props.problem.detail) : null), source.id === props.selected ? props.loading ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceLoading }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: "ongoing" }), t("panels.discover.loading")) : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceCurrent }, t("panels.discover.sourceCurrent")) : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
7600
|
+
type: "button",
|
|
7601
|
+
variant: "ghost",
|
|
7602
|
+
size: "sm",
|
|
7603
|
+
"aria-label": t("panels.discover.useSourceNamed", { label: source.label }),
|
|
7604
|
+
disabled: pending,
|
|
7605
|
+
onClick: () => {
|
|
7606
|
+
props.onSelect(source.id);
|
|
7607
|
+
props.onClose();
|
|
7608
|
+
}
|
|
7609
|
+
}, t("panels.discover.useSource")), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
7387
7610
|
label: t("panels.discover.removeSource"),
|
|
7388
7611
|
side: "bottom",
|
|
7389
7612
|
portal: true,
|
|
@@ -7396,7 +7619,13 @@ function DiscoverSourcesDialog(props) {
|
|
|
7396
7619
|
"aria-label": t("panels.discover.removeSourceNamed", { url: source.url }),
|
|
7397
7620
|
disabled: pending,
|
|
7398
7621
|
onClick: () => props.onRemove(source.id)
|
|
7399
|
-
}))
|
|
7622
|
+
})), source.id === props.selected && props.loading && props.slow ? /* @__PURE__ */ (0, react.createElement)("span", {
|
|
7623
|
+
className: MarketPage_module_default.discoverSourceHint,
|
|
7624
|
+
role: "note"
|
|
7625
|
+
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
|
|
7626
|
+
size: 12,
|
|
7627
|
+
"aria-hidden": "true"
|
|
7628
|
+
}), t("panels.discover.slowHint")) : null))), /* @__PURE__ */ (0, react.createElement)("form", {
|
|
7400
7629
|
className: MarketPage_module_default.discoverSourceForm,
|
|
7401
7630
|
onSubmit: (event) => {
|
|
7402
7631
|
event.preventDefault();
|
|
@@ -7439,12 +7668,16 @@ function DiscoverDialogs({ t, d }) {
|
|
|
7439
7668
|
t,
|
|
7440
7669
|
open: d.manageOpen,
|
|
7441
7670
|
sources: d.sources,
|
|
7671
|
+
selected: d.selected,
|
|
7672
|
+
loading: d.loading,
|
|
7673
|
+
slow: d.slow,
|
|
7442
7674
|
problem: d.problem,
|
|
7443
7675
|
busy: d.busy,
|
|
7444
7676
|
adding: d.addingSource,
|
|
7445
7677
|
onClose: () => d.setManageOpen(false),
|
|
7446
7678
|
onAdd: d.addSource,
|
|
7447
|
-
onRemove: d.removeSourceById
|
|
7679
|
+
onRemove: d.removeSourceById,
|
|
7680
|
+
onSelect: d.selectSource
|
|
7448
7681
|
}), /* @__PURE__ */ (0, react.createElement)(DiscoverConfirm, {
|
|
7449
7682
|
t,
|
|
7450
7683
|
locale: d.locale,
|
|
@@ -7481,6 +7714,34 @@ function DiscoverCategories({ t, categories, category, onCategory }) {
|
|
|
7481
7714
|
}, item)));
|
|
7482
7715
|
}
|
|
7483
7716
|
//#endregion
|
|
7717
|
+
//#region src/app/layouts/market/discover-search.tsx
|
|
7718
|
+
function DiscoverSearch({ t, value, disabled, onChange }) {
|
|
7719
|
+
const field = (0, react.useRef)(null);
|
|
7720
|
+
return /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSearch }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Input, {
|
|
7721
|
+
ref: field,
|
|
7722
|
+
className: value === "" ? MarketPage_module_default.discoverSearchField : `${MarketPage_module_default.discoverSearchField} ${MarketPage_module_default.discoverSearchFieldFilled}`,
|
|
7723
|
+
type: "search",
|
|
7724
|
+
icon: /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { size: 14 }),
|
|
7725
|
+
value,
|
|
7726
|
+
placeholder: t("panels.discover.search"),
|
|
7727
|
+
"aria-label": t("panels.discover.search"),
|
|
7728
|
+
disabled,
|
|
7729
|
+
onChange: (event) => onChange(event.currentTarget.value)
|
|
7730
|
+
}), value === "" ? null : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
7731
|
+
type: "button",
|
|
7732
|
+
size: "sm",
|
|
7733
|
+
variant: "ghost",
|
|
7734
|
+
className: MarketPage_module_default.discoverSearchClear,
|
|
7735
|
+
"aria-label": t("panels.discover.clearSearch"),
|
|
7736
|
+
disabled,
|
|
7737
|
+
icon: /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconCloseOutlineRegular, { size: 14 }),
|
|
7738
|
+
onClick: () => {
|
|
7739
|
+
onChange("");
|
|
7740
|
+
field.current?.focus();
|
|
7741
|
+
}
|
|
7742
|
+
}));
|
|
7743
|
+
}
|
|
7744
|
+
//#endregion
|
|
7484
7745
|
//#region src/app/layouts/market/discover-toolbar.tsx
|
|
7485
7746
|
var TEXT_DELAY_MS = 250;
|
|
7486
7747
|
function DiscoverToolbar(props) {
|
|
@@ -7534,14 +7795,11 @@ function DiscoverToolbar(props) {
|
|
|
7534
7795
|
size: 12,
|
|
7535
7796
|
"aria-hidden": "true"
|
|
7536
7797
|
}))
|
|
7537
|
-
}), /* @__PURE__ */ (0, react.createElement)(
|
|
7538
|
-
|
|
7539
|
-
type: "search",
|
|
7540
|
-
icon: /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { size: 14 }),
|
|
7798
|
+
}), /* @__PURE__ */ (0, react.createElement)(DiscoverSearch, {
|
|
7799
|
+
t,
|
|
7541
7800
|
value: text,
|
|
7542
|
-
|
|
7543
|
-
|
|
7544
|
-
onChange: (event) => setText(event.currentTarget.value)
|
|
7801
|
+
disabled: props.loading,
|
|
7802
|
+
onChange: setText
|
|
7545
7803
|
}), props.labels.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Menu, {
|
|
7546
7804
|
className: MarketPage_module_default.discoverLabels,
|
|
7547
7805
|
open: open === "filter",
|
|
@@ -7589,6 +7847,7 @@ function DiscoverToolbar(props) {
|
|
|
7589
7847
|
variant: "ghost",
|
|
7590
7848
|
"aria-haspopup": "menu",
|
|
7591
7849
|
"aria-expanded": open === "sort",
|
|
7850
|
+
disabled: props.loading,
|
|
7592
7851
|
onClick: () => setOpen(open === "sort" ? null : "sort")
|
|
7593
7852
|
}, t("panels.discover.sortWith", { label: sortName }), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, {
|
|
7594
7853
|
size: 12,
|
|
@@ -7627,6 +7886,12 @@ var SHIPPED = [
|
|
|
7627
7886
|
"restart-required",
|
|
7628
7887
|
"overridden"
|
|
7629
7888
|
];
|
|
7889
|
+
function sourceRowsOf(sources) {
|
|
7890
|
+
return sources.map((source) => ({
|
|
7891
|
+
...source,
|
|
7892
|
+
writable: source.kind === "http" ? false : null
|
|
7893
|
+
}));
|
|
7894
|
+
}
|
|
7630
7895
|
function installVerdictOf(value, t) {
|
|
7631
7896
|
const change = changeOf(value);
|
|
7632
7897
|
if (change === void 0) return { kind: "quiet" };
|
|
@@ -7640,6 +7905,7 @@ function installVerdictOf(value, t) {
|
|
|
7640
7905
|
function useDiscover(t, active, onInstalled) {
|
|
7641
7906
|
const [payload, setPayload] = (0, react.useState)(null);
|
|
7642
7907
|
const [loading, setLoading] = (0, react.useState)(true);
|
|
7908
|
+
const [slow, setSlow] = (0, react.useState)(false);
|
|
7643
7909
|
const [failure, setFailure] = (0, react.useState)(null);
|
|
7644
7910
|
const [query, setQuery] = (0, react.useState)("");
|
|
7645
7911
|
const [category, setCategory] = (0, react.useState)(null);
|
|
@@ -7652,7 +7918,10 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7652
7918
|
const [choice, setChoice] = (0, react.useState)(null);
|
|
7653
7919
|
const [notice, setNotice] = (0, react.useState)(null);
|
|
7654
7920
|
const [addingSource, setAddingSource] = (0, react.useState)(false);
|
|
7921
|
+
const [knownSources, setKnownSources] = (0, react.useState)(null);
|
|
7655
7922
|
const loaded = (0, react.useRef)(false);
|
|
7923
|
+
const loadTicket = (0, react.useRef)(0);
|
|
7924
|
+
const sourceTicket = (0, react.useRef)(0);
|
|
7656
7925
|
const locale = (0, react.useMemo)(() => localeNow(), []);
|
|
7657
7926
|
const sources = useHostWrite({
|
|
7658
7927
|
channel: "actions",
|
|
@@ -7663,11 +7932,27 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7663
7932
|
channel: "provision",
|
|
7664
7933
|
networkText: t("panels.discover.failed")
|
|
7665
7934
|
});
|
|
7935
|
+
const loadSources = (0, react.useCallback)(async () => {
|
|
7936
|
+
const ticket = sourceTicket.current + 1;
|
|
7937
|
+
sourceTicket.current = ticket;
|
|
7938
|
+
const response = await readMarketSources().catch(() => null);
|
|
7939
|
+
if (sourceTicket.current !== ticket) return;
|
|
7940
|
+
if (response === null || !response.ok) return;
|
|
7941
|
+
setKnownSources({
|
|
7942
|
+
sources: sourceRowsOf(response.sources),
|
|
7943
|
+
selected: response.selected
|
|
7944
|
+
});
|
|
7945
|
+
}, []);
|
|
7666
7946
|
const load = (0, react.useCallback)(async (force = false) => {
|
|
7947
|
+
const ticket = loadTicket.current + 1;
|
|
7948
|
+
loadTicket.current = ticket;
|
|
7667
7949
|
setLoading(true);
|
|
7950
|
+
setSlow(false);
|
|
7668
7951
|
setFailure(null);
|
|
7669
7952
|
const response = await readMarketDiscover({ force }).catch(() => null);
|
|
7953
|
+
if (loadTicket.current !== ticket) return;
|
|
7670
7954
|
setLoading(false);
|
|
7955
|
+
setSlow(false);
|
|
7671
7956
|
if (response === null || !response.ok) {
|
|
7672
7957
|
setFailure(t("panels.discover.unreadable"));
|
|
7673
7958
|
return;
|
|
@@ -7675,11 +7960,29 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7675
7960
|
setPayload(response);
|
|
7676
7961
|
setLimit(50);
|
|
7677
7962
|
}, [t]);
|
|
7963
|
+
const beginSwitch = () => {
|
|
7964
|
+
loadTicket.current += 1;
|
|
7965
|
+
sourceTicket.current += 1;
|
|
7966
|
+
setFailure(null);
|
|
7967
|
+
setPayload(null);
|
|
7968
|
+
setLoading(true);
|
|
7969
|
+
setSlow(false);
|
|
7970
|
+
};
|
|
7678
7971
|
(0, react.useEffect)(() => {
|
|
7679
7972
|
if (!active || loaded.current) return;
|
|
7680
7973
|
loaded.current = true;
|
|
7974
|
+
loadSources();
|
|
7681
7975
|
load();
|
|
7682
|
-
}, [
|
|
7976
|
+
}, [
|
|
7977
|
+
active,
|
|
7978
|
+
load,
|
|
7979
|
+
loadSources
|
|
7980
|
+
]);
|
|
7981
|
+
(0, react.useEffect)(() => {
|
|
7982
|
+
if (!loading) return void 0;
|
|
7983
|
+
const timer = setTimeout(() => setSlow(true), 8e3);
|
|
7984
|
+
return () => clearTimeout(timer);
|
|
7985
|
+
}, [loading]);
|
|
7683
7986
|
(0, react.useEffect)(() => subscribeFactRevision(CAPABILITY_FACT, () => {
|
|
7684
7987
|
if (!loaded.current) return;
|
|
7685
7988
|
load(true);
|
|
@@ -7733,6 +8036,8 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7733
8036
|
const done = typeof value?.["branch"] === "string" ? value["branch"] : branch;
|
|
7734
8037
|
setInitOpen(false);
|
|
7735
8038
|
setNotice(t("panels.discover.initDone", { branch: done }));
|
|
8039
|
+
beginSwitch();
|
|
8040
|
+
await loadSources();
|
|
7736
8041
|
await load(true);
|
|
7737
8042
|
});
|
|
7738
8043
|
};
|
|
@@ -7750,8 +8055,11 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7750
8055
|
id
|
|
7751
8056
|
},
|
|
7752
8057
|
select: true
|
|
7753
|
-
}).then(
|
|
7754
|
-
if (outcome.ok)
|
|
8058
|
+
}).then((outcome) => {
|
|
8059
|
+
if (!outcome.ok) return;
|
|
8060
|
+
beginSwitch();
|
|
8061
|
+
loadSources();
|
|
8062
|
+
load(true);
|
|
7755
8063
|
}).finally(() => setAddingSource(false));
|
|
7756
8064
|
};
|
|
7757
8065
|
const removeSourceById = (id) => {
|
|
@@ -7763,6 +8071,8 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7763
8071
|
}).then(async (outcome) => {
|
|
7764
8072
|
if (!outcome.ok) return;
|
|
7765
8073
|
setDetail(null);
|
|
8074
|
+
beginSwitch();
|
|
8075
|
+
await loadSources();
|
|
7766
8076
|
await load(true);
|
|
7767
8077
|
});
|
|
7768
8078
|
};
|
|
@@ -7775,11 +8085,23 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7775
8085
|
setSelectedLabels([]);
|
|
7776
8086
|
setSort("default");
|
|
7777
8087
|
setDetail(null);
|
|
8088
|
+
beginSwitch();
|
|
8089
|
+
setKnownSources((current) => current === null ? current : {
|
|
8090
|
+
sources: current.sources,
|
|
8091
|
+
selected: id
|
|
8092
|
+
});
|
|
7778
8093
|
sources.send({
|
|
7779
8094
|
action: "select",
|
|
7780
8095
|
id
|
|
7781
8096
|
}).then(async (outcome) => {
|
|
7782
|
-
if (outcome.ok)
|
|
8097
|
+
if (!outcome.ok) {
|
|
8098
|
+
setLoading(false);
|
|
8099
|
+
setSlow(false);
|
|
8100
|
+
loadSources();
|
|
8101
|
+
return;
|
|
8102
|
+
}
|
|
8103
|
+
await loadSources();
|
|
8104
|
+
await load(true);
|
|
7783
8105
|
});
|
|
7784
8106
|
};
|
|
7785
8107
|
const install = () => {
|
|
@@ -7814,9 +8136,10 @@ function useDiscover(t, active, onInstalled) {
|
|
|
7814
8136
|
locale,
|
|
7815
8137
|
payload,
|
|
7816
8138
|
loading,
|
|
8139
|
+
slow,
|
|
7817
8140
|
failure,
|
|
7818
|
-
sources: payload?.sources ?? [],
|
|
7819
|
-
selected: payload?.selected ?? null,
|
|
8141
|
+
sources: payload?.sources ?? knownSources?.sources ?? [],
|
|
8142
|
+
selected: payload?.selected ?? knownSources?.selected ?? null,
|
|
7820
8143
|
entries,
|
|
7821
8144
|
shown,
|
|
7822
8145
|
total: sorted.length,
|
|
@@ -7887,35 +8210,45 @@ function DiscoverPanel({ t, active, onInstalled, onShowInstalled }) {
|
|
|
7887
8210
|
t,
|
|
7888
8211
|
d
|
|
7889
8212
|
});
|
|
7890
|
-
|
|
8213
|
+
const slowHint = !d.manageOpen && d.loading && d.slow ? /* @__PURE__ */ (0, react.createElement)("p", {
|
|
8214
|
+
className: MarketPage_module_default.discoverNotice,
|
|
8215
|
+
role: "note"
|
|
8216
|
+
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
|
|
8217
|
+
size: 14,
|
|
8218
|
+
"aria-hidden": "true"
|
|
8219
|
+
}), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.slowHint"))) : null;
|
|
8220
|
+
if (d.payload === null) return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, d.sources.length === 0 ? null : toolbar, d.loading ? /* @__PURE__ */ (0, react.createElement)(DiscoverSkeleton, { label: t("panels.discover.loading") }) : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
|
|
7891
8221
|
t,
|
|
7892
8222
|
text: t("panels.discover.sourcesFailed"),
|
|
7893
8223
|
onRetry: d.reload
|
|
7894
|
-
}), dialogs);
|
|
8224
|
+
}), slowHint, d.writeFailed === null ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverError }, d.writeFailed), dialogs);
|
|
7895
8225
|
if (d.payload.state === "no-source") return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, /* @__PURE__ */ (0, react.createElement)(DiscoverNoSource, {
|
|
7896
8226
|
t,
|
|
7897
8227
|
onAdd: () => d.setManageOpen(true)
|
|
7898
8228
|
}), dialogs);
|
|
7899
|
-
const
|
|
8229
|
+
const failed = d.payload.state === "invalid" || d.payload.state === "unreadable";
|
|
8230
|
+
const readFailed = !d.loading && failed ? d.payload.state === "invalid" ? t("panels.discover.invalid") : t("panels.discover.unreadable") : null;
|
|
8231
|
+
const uninitialized = d.loading ? null : d.uninitialized;
|
|
8232
|
+
const retrying = d.loading && failed;
|
|
7900
8233
|
const emptyText = unfiltered({
|
|
7901
8234
|
query: d.query,
|
|
7902
8235
|
category: d.category,
|
|
7903
8236
|
labels: d.selectedLabels
|
|
7904
8237
|
}) ? t("panels.discover.empty") : t("panels.discover.noMatch");
|
|
7905
|
-
return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, toolbar, d.payload.stale === true ? /* @__PURE__ */ (0, react.createElement)("p", {
|
|
8238
|
+
return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, toolbar, d.loading && !d.manageOpen ? /* @__PURE__ */ (0, react.createElement)(DiscoverLoading, { label: t("panels.discover.loading") }) : null, slowHint, !d.loading && d.payload.stale === true ? /* @__PURE__ */ (0, react.createElement)("p", {
|
|
7906
8239
|
className: MarketPage_module_default.discoverNotice,
|
|
7907
8240
|
role: "note"
|
|
7908
8241
|
}, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
|
|
7909
8242
|
size: 14,
|
|
7910
8243
|
"aria-hidden": "true"
|
|
7911
|
-
}), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.stale"))) : null,
|
|
8244
|
+
}), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.stale"))) : null, uninitialized === null ? readFailed === null ? null : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
|
|
7912
8245
|
t,
|
|
7913
8246
|
text: readFailed,
|
|
7914
8247
|
onRetry: d.reload
|
|
7915
8248
|
}) : /* @__PURE__ */ (0, react.createElement)(DiscoverUninitialized, {
|
|
7916
8249
|
t,
|
|
7917
|
-
path:
|
|
7918
|
-
empty:
|
|
8250
|
+
path: uninitialized.path,
|
|
8251
|
+
empty: uninitialized.empty,
|
|
7919
8252
|
onInit: () => d.setInitOpen(true)
|
|
7920
8253
|
}), d.notice === null ? null : /* @__PURE__ */ (0, react.createElement)("p", {
|
|
7921
8254
|
className: MarketPage_module_default.discoverNotice,
|
|
@@ -7934,7 +8267,7 @@ function DiscoverPanel({ t, active, onInstalled, onShowInstalled }) {
|
|
|
7934
8267
|
version
|
|
7935
8268
|
}),
|
|
7936
8269
|
onShowInstalled
|
|
7937
|
-
}) : readFailed !== null ||
|
|
8270
|
+
}) : readFailed !== null || uninitialized !== null || retrying ? null : d.shown.length === 0 ? /* @__PURE__ */ (0, react.createElement)(DiscoverEmptyText, { text: emptyText }) : /* @__PURE__ */ (0, react.createElement)(DiscoverRows, {
|
|
7938
8271
|
t,
|
|
7939
8272
|
locale: d.locale,
|
|
7940
8273
|
entries: d.shown,
|
|
@@ -8715,7 +9048,7 @@ function newRequestId() {
|
|
|
8715
9048
|
return crypto.randomUUID();
|
|
8716
9049
|
}
|
|
8717
9050
|
function useAddModule(options) {
|
|
8718
|
-
const {
|
|
9051
|
+
const { onInstalled, failedText } = options;
|
|
8719
9052
|
const [spec, setSpec] = (0, react.useState)("");
|
|
8720
9053
|
const [choice, setChoice] = (0, react.useState)({
|
|
8721
9054
|
kind: "default",
|
|
@@ -8746,7 +9079,6 @@ function useAddModule(options) {
|
|
|
8746
9079
|
networkText: failedText
|
|
8747
9080
|
});
|
|
8748
9081
|
(0, react.useEffect)(() => {
|
|
8749
|
-
if (!open) return void 0;
|
|
8750
9082
|
let alive = true;
|
|
8751
9083
|
readBundleRegistries().then((response) => {
|
|
8752
9084
|
if (!alive) return;
|
|
@@ -8755,19 +9087,8 @@ function useAddModule(options) {
|
|
|
8755
9087
|
return () => {
|
|
8756
9088
|
alive = false;
|
|
8757
9089
|
};
|
|
8758
|
-
}, [
|
|
9090
|
+
}, []);
|
|
8759
9091
|
const registry = registryOf(choice, custom);
|
|
8760
|
-
(0, react.useEffect)(() => {
|
|
8761
|
-
if (open) return;
|
|
8762
|
-
generationRef.current += 1;
|
|
8763
|
-
setGuideOpen(false);
|
|
8764
|
-
setRegistryOpen(false);
|
|
8765
|
-
setProblem(null);
|
|
8766
|
-
setPreview(null);
|
|
8767
|
-
setOutcome(null);
|
|
8768
|
-
setFailure(null);
|
|
8769
|
-
setPhase("idle");
|
|
8770
|
-
}, [open]);
|
|
8771
9092
|
const check = (0, react.useCallback)(() => {
|
|
8772
9093
|
const wanted = spec.trim();
|
|
8773
9094
|
if (wanted === "") return;
|
|
@@ -8904,15 +9225,21 @@ function useAddModule(options) {
|
|
|
8904
9225
|
//#endregion
|
|
8905
9226
|
//#region src/app/layouts/market/AddModuleDialog.tsx
|
|
8906
9227
|
function AddModuleDialog({ t, open, onClose, onInstalled }) {
|
|
9228
|
+
if (!open) return null;
|
|
9229
|
+
return /* @__PURE__ */ (0, react.createElement)(AddModuleContent, {
|
|
9230
|
+
t,
|
|
9231
|
+
onClose,
|
|
9232
|
+
onInstalled
|
|
9233
|
+
});
|
|
9234
|
+
}
|
|
9235
|
+
function AddModuleContent({ t, onClose, onInstalled }) {
|
|
8907
9236
|
const real = useAddModule({
|
|
8908
|
-
open,
|
|
8909
9237
|
onInstalled,
|
|
8910
9238
|
failedText: t("panels.failed")
|
|
8911
9239
|
});
|
|
8912
9240
|
const devAdd = devSurface.useStrips("addModule", []);
|
|
8913
9241
|
const mock = devAdd.current;
|
|
8914
9242
|
const state = mock === void 0 ? real : devSurface.addModuleState(real, mock);
|
|
8915
|
-
if (!open) return null;
|
|
8916
9243
|
const installing = state.phase === "installing";
|
|
8917
9244
|
const checking = state.phase === "inspecting";
|
|
8918
9245
|
const empty = state.spec.trim() === "";
|
|
@@ -8972,7 +9299,7 @@ function AddModuleDialog({ t, open, onClose, onInstalled }) {
|
|
|
8972
9299
|
onClick: () => state.install()
|
|
8973
9300
|
}, t("panels.market.add.retry")) : null) : null);
|
|
8974
9301
|
return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
|
|
8975
|
-
open,
|
|
9302
|
+
open: true,
|
|
8976
9303
|
onClose: () => {
|
|
8977
9304
|
if (!installing) onClose();
|
|
8978
9305
|
},
|
|
@@ -9045,7 +9372,7 @@ function makeMarketEntryIcon(units) {
|
|
|
9045
9372
|
return /* @__PURE__ */ (0, react.createElement)(IconModules, { size });
|
|
9046
9373
|
};
|
|
9047
9374
|
}
|
|
9048
|
-
function MarketPanel({ t, units }) {
|
|
9375
|
+
function MarketPanel({ t, units, titleOf }) {
|
|
9049
9376
|
const manifests = useLiveManifests(units);
|
|
9050
9377
|
const installable = useInstallableUnits(units);
|
|
9051
9378
|
const { capabilities, checkedAt, checking, forceProbe, reload: reloadCapability } = useCapabilityMap(0);
|
|
@@ -9143,6 +9470,7 @@ function MarketPanel({ t, units }) {
|
|
|
9143
9470
|
}, /* @__PURE__ */ (0, react.createElement)(MarketView, {
|
|
9144
9471
|
key: `${mock?.id ?? "real-market"}-${mockNonce}`,
|
|
9145
9472
|
t,
|
|
9473
|
+
titleOf,
|
|
9146
9474
|
manifests,
|
|
9147
9475
|
installable,
|
|
9148
9476
|
capabilities,
|
|
@@ -9178,6 +9506,10 @@ function MarketPanel({ t, units }) {
|
|
|
9178
9506
|
}
|
|
9179
9507
|
function registerMarketPanel(ctx, units) {
|
|
9180
9508
|
const t = ctx.locale.bind(LOCALE_NS);
|
|
9509
|
+
const titleOf = (title) => title === void 0 ? "" : ctx.locale.resolveText?.({
|
|
9510
|
+
zh: title.zh,
|
|
9511
|
+
en: title.en
|
|
9512
|
+
}) ?? title.zh;
|
|
9181
9513
|
ctx.slots.inject("sidebar.panellist", () => ctx.slots.register({
|
|
9182
9514
|
name: "sidebar.panellist",
|
|
9183
9515
|
id: MARKET_PANEL_ID,
|
|
@@ -9189,7 +9521,10 @@ function registerMarketPanel(ctx, units) {
|
|
|
9189
9521
|
name: "main",
|
|
9190
9522
|
key: MARKET_PANEL_ID,
|
|
9191
9523
|
locale: LOCALE_NS,
|
|
9192
|
-
inject: () => ({
|
|
9524
|
+
inject: () => ({
|
|
9525
|
+
units,
|
|
9526
|
+
titleOf
|
|
9527
|
+
})
|
|
9193
9528
|
}, MarketPanel));
|
|
9194
9529
|
}
|
|
9195
9530
|
//#endregion
|
|
@@ -9241,6 +9576,14 @@ function flush() {
|
|
|
9241
9576
|
}).catch(() => void 0);
|
|
9242
9577
|
}
|
|
9243
9578
|
//#endregion
|
|
9579
|
+
//#region src/shared/hooks/resource-view.ts
|
|
9580
|
+
var IDLE = { phase: "idle" };
|
|
9581
|
+
var LOADING = { phase: "loading" };
|
|
9582
|
+
function resourceViewOf(enabled, current, identity) {
|
|
9583
|
+
if (!enabled) return IDLE;
|
|
9584
|
+
return current.identity === identity ? current.state : LOADING;
|
|
9585
|
+
}
|
|
9586
|
+
//#endregion
|
|
9244
9587
|
//#region src/shared/hooks/use-api-resource.ts
|
|
9245
9588
|
var use_api_resource_exports = /* @__PURE__ */ __exportAll({
|
|
9246
9589
|
readKeyOf: () => readKeyOf,
|
|
@@ -9312,7 +9655,10 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9312
9655
|
const identity = resourceIdentity(route, query, options.key);
|
|
9313
9656
|
const factRev = useFactRevision(options.fact ?? factOfRoute(route));
|
|
9314
9657
|
const key = readKeyOf(identity, refreshToken, factRev);
|
|
9315
|
-
const [
|
|
9658
|
+
const [current, setCurrent] = (0, react.useState)(() => ({
|
|
9659
|
+
identity,
|
|
9660
|
+
state: enabled ? LOADING : IDLE
|
|
9661
|
+
}));
|
|
9316
9662
|
const lastIdentity = (0, react.useRef)(null);
|
|
9317
9663
|
const queryRef = (0, react.useRef)(query);
|
|
9318
9664
|
(0, react.useEffect)(() => {
|
|
@@ -9321,17 +9667,23 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9321
9667
|
(0, react.useEffect)(() => {
|
|
9322
9668
|
if (!enabled) {
|
|
9323
9669
|
lastIdentity.current = null;
|
|
9324
|
-
setState({ phase: "idle" });
|
|
9325
9670
|
return;
|
|
9326
9671
|
}
|
|
9327
9672
|
let cancelled = false;
|
|
9673
|
+
const put = (state) => setCurrent({
|
|
9674
|
+
identity,
|
|
9675
|
+
state
|
|
9676
|
+
});
|
|
9328
9677
|
const sameIdentity = lastIdentity.current === identity;
|
|
9329
9678
|
lastIdentity.current = identity;
|
|
9330
|
-
|
|
9331
|
-
|
|
9332
|
-
|
|
9333
|
-
|
|
9334
|
-
|
|
9679
|
+
setCurrent((prev) => ({
|
|
9680
|
+
identity,
|
|
9681
|
+
state: sameIdentity && prev.state.value !== void 0 ? {
|
|
9682
|
+
phase: "loading",
|
|
9683
|
+
value: prev.state.value,
|
|
9684
|
+
...prev.state.at === void 0 ? {} : { at: prev.state.at }
|
|
9685
|
+
} : LOADING
|
|
9686
|
+
}));
|
|
9335
9687
|
const flight = requestResource(route, queryRef.current, key);
|
|
9336
9688
|
const owner = options.report === false ? null : unitOfRoute(route);
|
|
9337
9689
|
if (owner !== null) reportPanelRead({
|
|
@@ -9342,7 +9694,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9342
9694
|
flight.task.then((response) => {
|
|
9343
9695
|
if (cancelled) return;
|
|
9344
9696
|
if (response.ok) {
|
|
9345
|
-
|
|
9697
|
+
put({
|
|
9346
9698
|
phase: "ready",
|
|
9347
9699
|
value: response,
|
|
9348
9700
|
at: Date.now()
|
|
@@ -9354,7 +9706,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9354
9706
|
});
|
|
9355
9707
|
return;
|
|
9356
9708
|
}
|
|
9357
|
-
|
|
9709
|
+
put({
|
|
9358
9710
|
phase: "error",
|
|
9359
9711
|
error: response.error
|
|
9360
9712
|
});
|
|
@@ -9370,7 +9722,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9370
9722
|
}).catch((reason) => {
|
|
9371
9723
|
if (cancelled) return;
|
|
9372
9724
|
const message = reason instanceof Error ? reason.message : String(reason);
|
|
9373
|
-
|
|
9725
|
+
put({
|
|
9374
9726
|
phase: "error",
|
|
9375
9727
|
error: {
|
|
9376
9728
|
code: "network",
|
|
@@ -9401,7 +9753,7 @@ function useApiResource(route, query, refreshToken, options = {}) {
|
|
|
9401
9753
|
options.fact,
|
|
9402
9754
|
options.report
|
|
9403
9755
|
]);
|
|
9404
|
-
return
|
|
9756
|
+
return resourceViewOf(enabled, current, identity);
|
|
9405
9757
|
}
|
|
9406
9758
|
//#endregion
|
|
9407
9759
|
//#region src/shared/hooks/use-diy-debug.ts
|
|
@@ -10448,6 +10800,26 @@ function assembleClientUnits(registry) {
|
|
|
10448
10800
|
for (const face of CLIENT_UNITS) registry.register(face);
|
|
10449
10801
|
}
|
|
10450
10802
|
//#endregion
|
|
10803
|
+
//#region src/app/units/unit-titles.ts
|
|
10804
|
+
var UNIT_TITLES_OWNER = "dsh-workbench";
|
|
10805
|
+
function unitTitlesOf(manifests) {
|
|
10806
|
+
const zh = {};
|
|
10807
|
+
const en = {};
|
|
10808
|
+
for (const manifest of manifests) {
|
|
10809
|
+
const title = manifest.title;
|
|
10810
|
+
if (title === void 0 || title.zh.trim() === "" || title.en.trim() === "") continue;
|
|
10811
|
+
zh[unitTitleKey(manifest.id)] = title.zh;
|
|
10812
|
+
en[unitTitleKey(manifest.id)] = title.en;
|
|
10813
|
+
}
|
|
10814
|
+
return {
|
|
10815
|
+
unit: UNIT_TITLES_OWNER,
|
|
10816
|
+
messages: {
|
|
10817
|
+
zh,
|
|
10818
|
+
en
|
|
10819
|
+
}
|
|
10820
|
+
};
|
|
10821
|
+
}
|
|
10822
|
+
//#endregion
|
|
10451
10823
|
//#region src/kernel/client/board-registry.ts
|
|
10452
10824
|
function createBoardRegistry() {
|
|
10453
10825
|
const modules = [];
|
|
@@ -10508,7 +10880,7 @@ function toBoardModule(face, manifest) {
|
|
|
10508
10880
|
if (View === void 0) return void 0;
|
|
10509
10881
|
return {
|
|
10510
10882
|
id: manifest.id,
|
|
10511
|
-
titleKey: manifest.
|
|
10883
|
+
titleKey: manifest.titleKey,
|
|
10512
10884
|
order: manifest.card?.order ?? 100,
|
|
10513
10885
|
View,
|
|
10514
10886
|
...face.steps === void 0 ? {} : { steps: face.steps }
|
|
@@ -10523,6 +10895,10 @@ function createClientUnitRegistry(options = {}) {
|
|
|
10523
10895
|
let installableIds = null;
|
|
10524
10896
|
let revision = 0;
|
|
10525
10897
|
let manifestsCache;
|
|
10898
|
+
let titleSignature = "";
|
|
10899
|
+
function titlesOf(manifests) {
|
|
10900
|
+
return manifests.flatMap((manifest) => manifest.title === void 0 ? [] : [`${manifest.id}=${manifest.title.zh}/${manifest.title.en}`]).join("|");
|
|
10901
|
+
}
|
|
10526
10902
|
function notify() {
|
|
10527
10903
|
revision += 1;
|
|
10528
10904
|
for (const listener of [...listeners]) try {
|
|
@@ -10602,7 +10978,10 @@ function createClientUnitRegistry(options = {}) {
|
|
|
10602
10978
|
for (const entry of registrations) {
|
|
10603
10979
|
const next = known.get(entry.unit);
|
|
10604
10980
|
if (entry.mounted === null) {
|
|
10605
|
-
if (next !== void 0
|
|
10981
|
+
if (next !== void 0) {
|
|
10982
|
+
attach(entry);
|
|
10983
|
+
changed = true;
|
|
10984
|
+
}
|
|
10606
10985
|
continue;
|
|
10607
10986
|
}
|
|
10608
10987
|
if (next === void 0) {
|
|
@@ -10611,6 +10990,11 @@ function createClientUnitRegistry(options = {}) {
|
|
|
10611
10990
|
changed = true;
|
|
10612
10991
|
}
|
|
10613
10992
|
}
|
|
10993
|
+
const titles = titlesOf(manifests);
|
|
10994
|
+
if (titles !== titleSignature) {
|
|
10995
|
+
titleSignature = titles;
|
|
10996
|
+
changed = true;
|
|
10997
|
+
}
|
|
10614
10998
|
if (!changed) return;
|
|
10615
10999
|
manifestsCache = void 0;
|
|
10616
11000
|
notify();
|
|
@@ -11381,6 +11765,7 @@ function publishRows(args, preview, t) {
|
|
|
11381
11765
|
const unit = textOf(args, "unit");
|
|
11382
11766
|
const target = textOf(args, "target");
|
|
11383
11767
|
const version = textOf(args, "version");
|
|
11768
|
+
const author = textOf(args, "author");
|
|
11384
11769
|
const rows = [
|
|
11385
11770
|
{
|
|
11386
11771
|
label: t("approval.publish.module"),
|
|
@@ -11396,7 +11781,7 @@ function publishRows(args, preview, t) {
|
|
|
11396
11781
|
},
|
|
11397
11782
|
{
|
|
11398
11783
|
label: t("approval.publish.author"),
|
|
11399
|
-
value: preview === void 0 ? t("approval.publish.reading") : preview?.author === void 0 || preview.author === "" ? t("approval.publish.authorMissing") : preview.author
|
|
11784
|
+
value: author !== "" ? author : preview === void 0 ? t("approval.publish.reading") : preview?.author === void 0 || preview.author === "" ? t("approval.publish.authorMissing") : preview.author
|
|
11400
11785
|
}
|
|
11401
11786
|
];
|
|
11402
11787
|
const market = preview?.market;
|
|
@@ -11443,17 +11828,22 @@ function PublishChangelogSeat({ changelog, t }) {
|
|
|
11443
11828
|
function PublishApprovalSeat({ args, t }) {
|
|
11444
11829
|
const unit = textOf(args, "unit");
|
|
11445
11830
|
const version = textOf(args, "version");
|
|
11831
|
+
const author = textOf(args, "author");
|
|
11446
11832
|
const [preview, setPreview] = (0, react.useState)(() => unit === "" ? null : void 0);
|
|
11447
11833
|
(0, react.useEffect)(() => {
|
|
11448
11834
|
if (unit === "") return;
|
|
11449
11835
|
let live = true;
|
|
11450
|
-
readPublishPreview(unit, version).then((response) => {
|
|
11836
|
+
readPublishPreview(unit, version, author).then((response) => {
|
|
11451
11837
|
if (live) setPreview(response.ok ? response.preview : null);
|
|
11452
11838
|
});
|
|
11453
11839
|
return () => {
|
|
11454
11840
|
live = false;
|
|
11455
11841
|
};
|
|
11456
|
-
}, [
|
|
11842
|
+
}, [
|
|
11843
|
+
unit,
|
|
11844
|
+
version,
|
|
11845
|
+
author
|
|
11846
|
+
]);
|
|
11457
11847
|
return (0, react.createElement)(ApprovalPlan, { rows: publishRows(args, preview, t) }, (0, react.createElement)(PublishChangelogSeat, {
|
|
11458
11848
|
changelog: preview?.changelog,
|
|
11459
11849
|
t
|
|
@@ -12218,10 +12608,10 @@ function dismissPanelByPointer(next, scope, onOpenChange) {
|
|
|
12218
12608
|
//#region src/app/layouts/rightbar/PanelModules.tsx
|
|
12219
12609
|
function PanelModules({ t, open, onOpenChange, enabledUnits, workspace, refreshToken, manifests, onOpenMarket }) {
|
|
12220
12610
|
const { capabilities, checkedAt, forceProbe } = useCapabilityMap(refreshToken);
|
|
12221
|
-
const
|
|
12611
|
+
const decided = (0, react.useRef)(false);
|
|
12222
12612
|
(0, react.useEffect)(() => {
|
|
12223
|
-
if (!open || decided) return;
|
|
12224
|
-
|
|
12613
|
+
if (!open || decided.current) return;
|
|
12614
|
+
decided.current = true;
|
|
12225
12615
|
if (!shouldProbeOnEnter({
|
|
12226
12616
|
checkedAt,
|
|
12227
12617
|
now: Date.now(),
|
|
@@ -12231,7 +12621,6 @@ function PanelModules({ t, open, onOpenChange, enabledUnits, workspace, refreshT
|
|
|
12231
12621
|
forceProbe();
|
|
12232
12622
|
}, [
|
|
12233
12623
|
open,
|
|
12234
|
-
decided,
|
|
12235
12624
|
checkedAt,
|
|
12236
12625
|
forceProbe
|
|
12237
12626
|
]);
|
|
@@ -14371,7 +14760,7 @@ function messagesOf(units) {
|
|
|
14371
14760
|
...face.messages === void 0 ? {} : { messages: face.messages }
|
|
14372
14761
|
}));
|
|
14373
14762
|
}
|
|
14374
|
-
var COMPONENT_CSS_MARKER = ".wb-activityBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding-top: var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n.wb-activityBlock:first-child {\n padding-top: 0;\n border-top: none;\n}\n\n.wb-activityBlockHead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8);\n}\n\n.wb-activityLine {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-activityLineText {\n flex: none;\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n max-height: var(--wb-len-72);\n overflow-y: auto;\n}\n\n.wb-activityLineAt {\n flex: none;\n margin-left: auto;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-16);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-activityLine > .wb-activityLineAt,\n.wb-activityLine > .wb-activityLineActions {\n margin-left: auto;\n}\n\n.wb-activityLine > .wb-activityLineAt + .wb-activityLineActions {\n margin-left: 0;\n}\n\n.wb-activityLineActions {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n.wb-activityActionFailed {\n color: var(--dsw-alias-state-error-primary);\n}\n.wb-note {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-problem {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalCommand {\n max-width: 100%;\n}\n.wb-approvalPlan {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-approvalHint {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n.wb-approvalRows {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n}\n.wb-approvalRow {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n.wb-approvalLabel {\n flex: none;\n width: var(--wb-len-56);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-approvalValue {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalWarn {\n color: var(--dsw-alias-label-secondary);\n}\n.wb-cardHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-8) var(--wb-card-gutter);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-cardTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-cardMeta {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-cardMeta::before {\n content: '\\00b7';\n margin-right: var(--wb-len-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen ~ .wb-cardRefresh {\n margin-left: 0;\n}\n\n.wb-cardOpen:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh {\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardRefresh:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-cardGear {\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-3);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardGear:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n.wb-card {\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-bg-layer-1);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: none;\n}\n.wb-cardBody {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-card-gutter);\n font-size: var(--dsw-font-xxs-12-font-size);\n}\n.wb-cardBleed {\n margin-inline: calc(-1 * var(--wb-card-gutter));\n}\n._anchor_yq4s2_1 {\n display: contents;\n}\n.wb-spinner {\n display: inline-flex;\n align-items: center;\n flex: none;\n}\n.wb-choiceMenu {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n background: transparent;\n}\n\n.wb-choiceMenu[data-variant='boxed'] {\n padding: var(--wb-len-4);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-choiceOption {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-choiceOptionOn {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-checkbox {\n position: absolute;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.wb-checkboxBox {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xs);\n corner-shape: round;\n color: var(--dsw-alias-label-primary-foreground);\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-choiceOption:hover .wb-checkboxBox {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-checkbox:checked + .wb-checkboxBox {\n border-color: var(--dsw-alias-brand-primary);\n background: var(--dsw-alias-brand-primary);\n}\n\n.wb-checkbox:disabled + .wb-checkboxBox {\n cursor: default;\n}\n\n.wb-checkbox:focus-visible + .wb-checkboxBox {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n.wb-choiceOption:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-choiceOption:has(:disabled) {\n cursor: default;\n opacity: 0.5;\n}\n\n.wb-choiceOption:has(:disabled),\n.wb-choiceOption:has(:disabled):hover {\n background: transparent;\n}\n\n.wb-choiceLabel {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.wb-choiceLabelText {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceLabel:has(.wb-choiceDescription) .wb-choiceLabelText {\n overflow: visible;\n white-space: normal;\n overflow-wrap: anywhere;\n}\n\n.wb-choiceDescription {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n.wb-choiceLoading {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-choiceLoadingText {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceEmpty {\n display: flex;\n align-items: center;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio {\n appearance: none;\n -webkit-appearance: none;\n flex: none;\n box-sizing: border-box;\n width: var(--wb-len-12);\n height: var(--wb-len-12);\n margin: 0;\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: 50%;\n corner-shape: round;\n background-color: transparent;\n cursor: pointer;\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-radio:not(:checked):hover {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio:checked {\n border-color: var(--dsw-alias-brand-primary);\n background-image: radial-gradient(\n circle at center,\n var(--dsw-alias-brand-primary) 0 3px,\n transparent 3px\n );\n}\n\n.wb-radio:disabled {\n cursor: default;\n}\n\n.wb-radio:focus-visible {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n.wb-formActions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n}\n\n.wb-formActionDanger {\n color: var(--dsw-alias-state-error-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);\n}\n.wb-rows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n}\n.wb-rows > :not(.wb-row) {\n grid-column: 1 / -1;\n}\n.wb-row {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: baseline;\n gap: var(--wb-len-8);\n padding: var(--wb-len-4) 0;\n}\n.wb-row + .wb-row {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n.wb-rowKey {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-rowValue {\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-rows > .wb-row {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-rows > .wb-row {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-confirmBar {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n width: 100%;\n box-sizing: border-box;\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n}\n.wb-confirmBarTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 600;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-confirmBarHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n.wb-field {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n.wb-fieldLabel {\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-fieldHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-field:has(:disabled) .wb-fieldLabel {\n opacity: 0.4;\n}\n.wb-formRows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-12);\n}\n\n.wb-formRows > :not(.wb-formRow) {\n grid-column: 1 / -1;\n}\n\n.wb-formRow {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: center;\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-8);\n}\n\n.wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n align-items: stretch;\n gap: var(--wb-len-6);\n}\n\n.wb-formRows > .wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.wb-formLabel {\n justify-self: start;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: nowrap;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formLabel {\n white-space: normal;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formHint,\n.wb-formRow[data-layout='stacked'] .wb-formProblem {\n grid-column: 1 / -1;\n}\n\n.wb-formControl {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.wb-formControl\n > :where(\n .wb-selectAnchor,\n .wb-choiceMenu,\n input:not(\n [type='checkbox'],\n [type='radio'],\n [type='button'],\n [type='submit'],\n [type='reset'],\n [type='image'],\n [type='color'],\n [type='range']\n ),\n select,\n textarea\n ) {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n}\n\n.wb-formHint {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-formProblem {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(.wb-formProblem) .wb-formLabel {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(:disabled) .wb-formLabel {\n opacity: 0.4;\n}\n\n.wb-formRows > .wb-formRow {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-formRows > .wb-formRow {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-form {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n width: 100%;\n}\n:where(.wb-link) {\n margin-left: var(--wb-len-2);\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n white-space: nowrap;\n vertical-align: baseline;\n}\n\n:where(.wb-link:hover) {\n text-decoration: underline;\n}\n\n:where(.wb-link:focus-visible) {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n.wb-longTask {\n padding-top: var(--wb-len-12);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n.wb-longTaskHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n}\n\n.wb-longTaskLink {\n flex: none;\n}\n\n.wb-longTaskHeadline {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-longTaskProblem {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-longTaskDump {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-longTaskDump pre {\n margin: var(--wb-len-4) 0 0;\n max-height: var(--wb-len-220);\n overflow: auto;\n}\n\n.wb-longTaskStop {\n display: inline-flex;\n flex: none;\n align-items: center;\n align-self: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n padding: 0;\n margin-left: auto;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-specific-menu);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n.wb-longTaskStop:hover:not(:disabled),\n.wb-longTaskStop:focus-visible {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStop:disabled {\n cursor: default;\n}\n\n.wb-longTaskStopArmed,\n.wb-longTaskStopArmed:hover:not(:disabled),\n.wb-longTaskStopArmed:focus-visible {\n gap: var(--wb-len-4);\n width: auto;\n padding: 0 var(--wb-len-7);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStopLabel {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n.wb-longTaskStopWhy {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-centered.wb-centeredCompact {\n flex: none;\n min-height: 0;\n gap: var(--wb-len-8);\n padding: var(--wb-len-20) var(--wb-len-16);\n}\n\n.wb-centered.wb-centeredCompact .wb-centeredHero {\n margin-bottom: var(--wb-len-4);\n}\n\n.wb-skeleton {\n display: flex;\n flex-direction: column;\n}\n\n.wb-skeletonRow {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-skeletonRow + .wb-skeletonRow::before {\n content: '';\n align-self: stretch;\n height: var(--wb-len-0-5);\n margin: 0 var(--wb-len-8) var(--wb-len-neg-0-5);\n background: var(--dsw-alias-border-l2);\n}\n\n.wb-skeletonBar {\n display: block;\n height: var(--wb-len-13);\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-bg-skeleton);\n animation: wb-skeleton-pulse var(--wb-dur-1-4) var(--ds-ease-in-out) infinite;\n}\n\n.wb-skeletonBarTitle {\n width: 62%;\n}\n\n.wb-skeletonBarMeta {\n width: 32%;\n height: var(--wb-len-10);\n}\n\n.wb-skeletonRow:nth-child(2n) .wb-skeletonBarTitle {\n width: 74%;\n}\n\n.wb-skeletonRow:nth-child(3n) .wb-skeletonBarTitle {\n width: 52%;\n}\n\n@keyframes wb-skeleton-pulse {\n 50% {\n opacity: 0.45;\n }\n}\n\n.wb-centered {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: var(--wb-len-14);\n flex: 1;\n min-height: var(--wb-len-240);\n padding: 0 var(--wb-len-24) var(--wb-len-24);\n text-align: center;\n}\n\n.wb-centeredHero {\n display: flex;\n margin-bottom: var(--wb-len-16);\n color: var(--dsw-alias-label-dimmed);\n}\n\n.wb-centeredTitle {\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-centeredHint {\n max-width: var(--wb-len-300);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-centeredDetail {\n max-width: var(--wb-len-320);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-dimmed);\n word-break: break-all;\n}\n\n.wb-centeredAction {\n display: flex;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n@media (prefers-reduced-motion: reduce) {\n .wb-skeletonBar {\n animation: none;\n }}\n.wb-textField {\n box-sizing: border-box;\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n outline: none;\n}\n\n.wb-textField:focus {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-textField:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-textField[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-textField[aria-invalid='true']:focus {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n:where(.wb-textField) {\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n}\n:where(.wb-selectTrigger) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n text-align: left;\n cursor: pointer;\n}\n\n.wb-selectTrigger:focus-visible {\n outline: none;\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true']:focus-visible {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-selectLoading:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: none;\n background: transparent;\n font-size: var(--wb-font-row);\n}\n\n.wb-selectGhost:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-selectGhost:focus-visible {\n outline: var(--dsw-focus-ring-width) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n border-color: transparent;\n box-shadow: none;\n}\n\n.wb-selectIconOnly {\n width: var(--wb-len-36);\n height: var(--wb-len-36);\n min-height: 0;\n gap: 0;\n padding: 0;\n justify-content: center;\n}\n\n.wb-selectReveal {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.wb-selectIconOnly .wb-selectIcon {\n width: 100%;\n height: 100%;\n}\n\n.wb-selectAnchor {\n display: block;\n width: 100%;\n}\n\n.wb-selectIcon {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectValue {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n.wb-selectPlaceholder {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectChevron {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-caption);\n}\n\n.wb-selectMenu {\n min-width: var(--wb-len-240);\n max-width: var(--wb-len-360);\n max-height: min(var(--wb-len-320), calc(100vh - var(--wb-len-24)));\n}\n\n:where(.wb-selectSearch) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n.wb-selectSearch:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectSearch.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: 0.5px solid var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-selectSearch.wb-selectGhost:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: none;\n}\n\n.wb-selectSearchIcon {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-textField.wb-selectSearchInput {\n flex: 1;\n min-width: 0;\n min-height: 0;\n padding: 0;\n border: none;\n background: transparent;\n}\n\n.wb-textField.wb-selectSearchInput:focus {\n box-shadow: none;\n}\n\n.wb-selectFallback {\n width: 100%;\n}\n\n.wb-selectHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\nsection.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-len-16);\n border: 0;\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-settings-card-fill);\n}\n.wb-settingsHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n.wb-settings .wb-settingsTitle {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-strong-14-font-size);\n line-height: var(--wb-line-24);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n.wb-stack {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\n}\n.wb-stateBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-stateBlockTitle {\n margin: 0;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n.wb-stateBlockHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-stateBlockActions {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n.wb-stateBlockResolving {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._marketList_9dzu9_1 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._marketRow_9dzu9_10 {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n column-gap: var(--wb-len-14);\n row-gap: var(--wb-len-4);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-lg);\n}\n\n._marketIcon_9dzu9_20 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketMain_9dzu9_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_9dzu9_39 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketStatus_9dzu9_48 {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketStateText_9dzu9_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_9dzu9_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_9dzu9_66 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._marketName_9dzu9_39 ._marketVersion_9dzu9_72 {\n margin-left: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n}\n\n._marketVersion_9dzu9_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_9dzu9_72::before {\n content: '';\n display: inline-block;\n width: var(--wb-len-1);\n height: var(--wb-len-10);\n margin: 0 var(--wb-len-8) 0 var(--wb-len-2);\n vertical-align: -1px;\n background: var(--dsw-alias-border-l2);\n}\n\n._marketLocalTag_9dzu9_94 {\n margin-left: var(--wb-len-8);\n padding: 0 var(--wb-len-6);\n border: var(--wb-len-1) solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-caption);\n}\n\n._marketEnd_9dzu9_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_9dzu9_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_9dzu9_112::before {\n content: '';\n width: 0;\n height: var(--wb-len-14);\n border-left: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketActions_9dzu9_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_9dzu9_131 {\n color: var(--dsw-alias-state-warn-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._marketSelfDivider_9dzu9_137 {\n height: 0;\n margin-top: calc(0px - var(--wb-len-16));\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketSection_9dzu9_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_9dzu9_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_9dzu9_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_9dzu9_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_9dzu9_169 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionQuiet_9dzu9_175 ._marketSectionTitle_9dzu9_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_9dzu9_175 ._marketName_9dzu9_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_9dzu9_175 ._marketIcon_9dzu9_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_9dzu9_188 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-height: var(--wb-len-32);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketNote_9dzu9_198 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-warn-primary);\n overflow-wrap: anywhere;\n}\n\n._marketFailure_9dzu9_205 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._marketEmpty_9dzu9_212 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_9dzu9_217 {\n box-sizing: border-box;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-32);\n padding: 0 clamp(var(--wb-len-24), 4vw, var(--wb-len-48)) var(--wb-len-48);\n overflow-x: hidden;\n overflow-y: auto;\n color: var(--dsw-alias-label-primary);\n}\n\n._marketPage_9dzu9_217 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_9dzu9_235 {\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-16);\n padding-top: var(--wb-len-28);\n}\n\n._marketPageTitle_9dzu9_243 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_9dzu9_248 {\n margin: var(--wb-len-4) 0 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketPageTools_9dzu9_254 {\n flex: none;\n align-self: center;\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: var(--wb-len-16);\n}\n\n._marketPanel_9dzu9_263 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_9dzu9_263[hidden] {\n display: none;\n}\n\n._marketTabs_9dzu9_273 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_9dzu9_278 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketIconButton_9dzu9_283 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n color: var(--dsw-alias-label-caption);\n cursor: pointer;\n}\n\n._marketIconButton_9dzu9_283:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_9dzu9_283:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_9dzu9_308 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_9dzu9_312 svg {\n animation: _wb-spin_9dzu9_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_9dzu9_316 {\n height: var(--wb-len-32);\n padding: 0 var(--wb-len-12);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n border-radius: var(--dsw-radius-md);\n}\n\n._marketEmpty_9dzu9_212 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) var(--wb-len-16);\n text-align: center;\n}\n\n._marketEmptyTitle_9dzu9_333 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_9dzu9_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n._discoverPage_9dzu9_347 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_9dzu9_354 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_9dzu9_361 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_9dzu9_367 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_9dzu9_372 {\n min-width: 0;\n max-width: var(--wb-len-240);\n margin-left: calc(0px - var(--wb-len-8));\n font-weight: 500;\n}\n\n._discoverMarketName_9dzu9_379 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_9dzu9_385 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_9dzu9_390 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_9dzu9_395 {\n flex: none;\n}\n\n._discoverSearch_9dzu9_399 {\n box-sizing: border-box;\n flex: 1 1 var(--wb-len-120);\n min-width: var(--wb-len-120);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_9dzu9_361 {\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(var(--wb-len-120), 1fr) auto;\n grid-template-areas:\n 'market search refresh'\n 'labels sort sort';\n }\n\n ._discoverMarket_9dzu9_367 {\n grid-area: market;\n }\n\n ._discoverMarketButton_9dzu9_372 {\n margin-left: 0;\n }\n\n ._discoverLabels_9dzu9_385 {\n grid-area: labels;\n }\n\n ._discoverSearch_9dzu9_399 {\n grid-area: search;\n }\n\n ._discoverSort_9dzu9_390 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_9dzu9_395 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_9dzu9_440 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_9dzu9_447 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._discoverCard_9dzu9_456 {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n margin: 0 calc(0px - var(--wb-len-8));\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCard_9dzu9_456:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_9dzu9_470 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverArtworkImage_9dzu9_482 {\n object-fit: contain;\n}\n\n._discoverMain_9dzu9_486 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_9dzu9_494 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverCardOpen_9dzu9_502 {\n max-width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n cursor: pointer;\n}\n\n._discoverCardOpen_9dzu9_502::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_9dzu9_502:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_9dzu9_502:focus-visible::after {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverStrong_9dzu9_533 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_9dzu9_539 {\n display: -webkit-box;\n overflow: hidden;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverMeta_9dzu9_548 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._discoverMuted_9dzu9_555 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_9dzu9_561 {\n position: relative;\n z-index: var(--wb-z-10);\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverBlocked_9dzu9_570 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_9dzu9_575 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) 0;\n text-align: center;\n}\n\n._discoverEmptyTitle_9dzu9_584 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_9dzu9_575 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_9dzu9_594 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_9dzu9_600 {\n align-self: flex-start;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n padding: 0;\n border: 0;\n background: 0 0;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n font-size: var(--wb-font-12-5);\n cursor: pointer;\n}\n\n._discoverCrumb_9dzu9_600:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_9dzu9_600:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverCrumbIcon_9dzu9_623 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_9dzu9_627 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_9dzu9_633 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_9dzu9_639 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._discoverDetailPanel_9dzu9_646 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_9dzu9_653 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_9dzu9_658 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_9dzu9_663 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_9dzu9_668 {\n margin: var(--wb-len-16) 0 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverSection_9dzu9_674 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_9dzu9_681 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_9dzu9_687 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_9dzu9_692 {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--wb-len-16);\n min-height: var(--wb-len-44);\n padding: var(--wb-len-8) var(--wb-len-2);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverFactKind_9dzu9_702 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_9dzu9_708 {\n min-width: 0;\n margin: 0;\n text-align: end;\n overflow-wrap: anywhere;\n font: var(--dsw-font-xs-13);\n}\n\n._discoverCode_9dzu9_716 {\n padding: var(--wb-len-2) var(--wb-len-6);\n border-radius: var(--wb-radius-6);\n background: var(--dsw-alias-bg-module-platform);\n font-family: var(--ds-font-family-code);\n font-size: var(--dsw-font-xxs-12-font-size);\n box-decoration-break: clone;\n}\n\n._discoverTags_9dzu9_725 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_9dzu9_732 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_9dzu9_732:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_9dzu9_742 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_9dzu9_750 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverVersionName_9dzu9_758 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_9dzu9_763 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverFailure_9dzu9_772 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverNotice_9dzu9_778 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverNotice_9dzu9_778 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_9dzu9_796 {\n align-self: center;\n}\n\n._discoverDialog_9dzu9_800 {\n width: min(var(--wb-len-480), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_9dzu9_804 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_9dzu9_810 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_9dzu9_818 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverSourceError_9dzu9_826 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_9dzu9_832 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_9dzu9_838 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_9dzu9_843 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_9dzu9_849 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_9dzu9_854 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_9dzu9_860 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_9dzu9_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_9dzu9_470._discoverSkeletonFill_9dzu9_860 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_9dzu9_869 {\n display: block;\n height: var(--wb-len-12);\n margin: var(--wb-len-4) 0;\n border-radius: var(--dsw-radius-xs);\n}\n\n._discoverSkeletonTitle_9dzu9_876 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_9dzu9_880 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_9dzu9_1 {\n 0% {\n opacity: 1;\n }\n 40% {\n opacity: 0.6;\n }\n 80%,\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._discoverSkeletonFill_9dzu9_860 {\n animation: none;\n }\n}\n\n._foot_1ud1j_1 {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._footText_1ud1j_13 {\n flex: 1;\n min-width: 0;\n}\n\n._footTextMd_1ud1j_18 {\n flex: 1;\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n._wide_1lv8f_1 {\n justify-content: center;\n width: 100%;\n height: var(--wb-len-40);\n border-radius: var(--dsw-radius-md);\n}\n\n._dialog_1lv8f_8 {\n width: min(var(--wb-len-560), 100%);\n max-height: min(var(--wb-len-800), 100%);\n}\n\n._content_1lv8f_13 {\n min-height: 0;\n overflow: auto;\n}\n\n._stack_1lv8f_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._body_1lv8f_25 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._field_1lv8f_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._input_1lv8f_39 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-14);\n}\n\n._registryField_1lv8f_45 {\n height: var(--wb-len-32);\n margin-left: var(--wb-len-26);\n padding: 0 var(--wb-len-10);\n}\n\n._options_1lv8f_51 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8) var(--wb-len-12);\n}\n\n._guideToggle_1lv8f_59 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-4);\n align-self: flex-start;\n margin-top: var(--wb-len-4);\n padding: 0;\n border: 0;\n background: transparent;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._guideToggle_1lv8f_59:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._guideToggle_1lv8f_59 svg,\n._registryToggle_1lv8f_78 svg {\n transition: transform var(--wb-dur-0-12) ease;\n}\n\n._guideToggle_1lv8f_59[aria-expanded='true'] svg,\n._registryToggle_1lv8f_78[aria-expanded='true'] svg {\n transform: rotate(180deg);\n}\n\n._registryWrap_1lv8f_87 {\n position: relative;\n flex: none;\n}\n\n._registryToggle_1lv8f_78 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n height: var(--wb-len-26);\n padding: 0 var(--wb-len-8) 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n font: inherit;\n font-size: var(--wb-font-12-5);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._registryToggle_1lv8f_78:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._registryToggle_1lv8f_78:disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n._registryToggle_1lv8f_78[aria-expanded='true'] {\n border-color: var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n._registryChosen_1lv8f_121 {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\n._registry_1lv8f_45 {\n position: fixed;\n z-index: var(--wb-z-1100);\n box-sizing: border-box;\n width: min(var(--wb-len-440), 100vw - var(--wb-len-24));\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-12);\n border: 0;\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-2);\n --dsw-elevation-stroke-color: var(--dsw-alias-border-l3);\n box-shadow: var(--dsw-elevation-prominent);\n}\n\n._registryOption_1lv8f_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid transparent;\n border-radius: var(--dsw-radius-lg);\n cursor: pointer;\n}\n\nlabel._registryOption_1lv8f_143 {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--wb-len-10);\n}\n\n._registryPick_1lv8f_159 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n cursor: pointer;\n}\n\n._registryOption_1lv8f_143[data-checked='true'] {\n border-color: color-mix(in srgb, var(--dsw-alias-brand-primary) 40%, transparent);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._registryOption_1lv8f_143 input[type='radio'] {\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: var(--wb-len-2) 0 0;\n accent-color: var(--dsw-alias-brand-primary);\n}\n\n._registryTitle_1lv8f_179 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n font: var(--dsw-font-xs-13);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n._registryHint_1lv8f_189 {\n margin-left: var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._inputError_1lv8f_197 {\n margin: var(--wb-len-neg-4) 0 0 var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._guide_1lv8f_59 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._guideList_1lv8f_214 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._guideItem_1lv8f_223 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0;\n}\n\n._guideIndex_1lv8f_230 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n border-radius: var(--wb-radius-pill);\n corner-shape: round;\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._guideMain_1lv8f_244 {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 0;\n min-width: 0;\n}\n\n._guideTitle_1lv8f_252 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._guideHint_1lv8f_258 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._guideExample_1lv8f_264 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._guideExample_1lv8f_264 code {\n font-family: var(--dsw-font-mono, monospace);\n}\n\n._guideExampleLabel_1lv8f_274 {\n color: var(--dsw-alias-label-caption);\n}\n\n._footer_1lv8f_278 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-20);\n width: 100%;\n}\n\n._hero_1lv8f_285 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0 var(--wb-len-4);\n text-align: center;\n}\n\n._heroIcon_1lv8f_294 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-44);\n height: var(--wb-len-44);\n color: var(--dsw-alias-label-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='done'] {\n color: var(--dsw-alias-state-success-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='error'] {\n color: var(--dsw-alias-state-warn-label);\n}\n\n._pendingTitle_1lv8f_311 {\n margin: 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 500;\n color: var(--dsw-alias-label-secondary);\n}\n\n._wizardTitle_1lv8f_319 {\n margin: 0;\n font-size: var(--wb-font-18);\n line-height: var(--wb-len-26);\n font-weight: 600;\n}\n\n._subject_1lv8f_326 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n text-align: center;\n}\n\n._subjectName_1lv8f_337 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n overflow-wrap: anywhere;\n}\n\n._subjectMeta_1lv8f_343,\n._subjectDesc_1lv8f_344 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._result_1lv8f_351,\n._resultWarn_1lv8f_352 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._resultWarn_1lv8f_352 {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);\n}\n\n._resultMeta_1lv8f_365 {\n margin: 0;\n padding: 0 var(--wb-len-12);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._approval_1lv8f_373 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-state-warn-primary);\n border-radius: var(--dsw-radius-lg);\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._approvalTitle_1lv8f_383 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._approvalText_1lv8f_390 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._approvalCaution_1lv8f_396 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n font-weight: 600;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._note_1lv8f_403 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._noteWarn_1lv8f_410 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._noteError_1lv8f_414 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._problem_1lv8f_418 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._detailLabel_1lv8f_425 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._detail_1lv8f_425 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-3);\n font-family: var(--dsw-font-mono, monospace);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n}\n._note_1enlz_1 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._note_1enlz_1 > svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n._slot_1t7dx_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1t7dx_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1t7dx_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1t7dx_31 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._paused_1t7dx_35 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._trouble_1t7dx_39 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._pulse_1t7dx_43 {\n animation: _wb-debug-breathe_1t7dx_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-debug-breathe_1t7dx_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1t7dx_43 {\n animation: none;\n }\n}\n\n._entry_1t7dx_64 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1t7dx_71 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1t7dx_78 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1t7dx_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: 0;\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n}\n\n._act_1t7dx_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1t7dx_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._actStop_1t7dx_110:hover,\n._actStop_1t7dx_110:focus-visible {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._actArmed_1t7dx_115,\n._actArmed_1t7dx_115:hover,\n._actArmed_1t7dx_115:focus-visible {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n width: auto;\n color: var(--dsw-alias-state-error-primary);\n gap: var(--wb-len-4);\n padding: 0 var(--wb-len-7);\n}\n\n._actLabel_1t7dx_125 {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._entryLine_1t7dx_131 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1t7dx_138 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1t7dx_150 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1t7dx_156 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1t7dx_162 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._slot_1gkj9_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1gkj9_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1gkj9_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1gkj9_31 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._done_1gkj9_35 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._pulse_1gkj9_39 {\n animation: _wb-record-breathe_1gkj9_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-record-breathe_1gkj9_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1gkj9_39 {\n animation: none;\n }\n}\n\n._entry_1gkj9_60 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1gkj9_67 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1gkj9_74 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1gkj9_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-22);\n padding: 0 var(--wb-len-7);\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._act_1gkj9_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1gkj9_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._entryLine_1gkj9_108 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1gkj9_115 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1gkj9_127 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1gkj9_133 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1gkj9_139 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._item_lyox9_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n}\n\n._item_lyox9_1 + ._item_lyox9_1 {\n padding-top: var(--wb-len-14);\n border-top: var(--wb-len-0-5) solid var(--dsw-alias-settings-card-stroke);\n}\n\n._head_lyox9_12 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._title_lyox9_19 {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._description_lyox9_31 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._rows_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._row_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-settings-card-stroke);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-settings-card-fill);\n}\n\n._head_85r3w_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._pick_85r3w_27 {\n flex: 0 1 auto;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._pick_85r3w_27 > span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._code_85r3w_39 {\n --dsl-code-block-background: var(--dsw-alias-bg-layer-1);\n margin: 0;\n}\n\n._missing_85r3w_44,\n._conflict_85r3w_45 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-warn-primary);\n}\n._body_11oac_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._sources_11oac_7 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._sourcesLabel_11oac_14 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\nbutton._sourceOn_11oac_19 {\n border-color: var(--dsw-alias-brand-primary);\n}\n._sourceCount_11oac_22 {\n margin-left: var(--wb-len-4);\n font-variant-numeric: tabular-nums;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._reading_11oac_29 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._status_11oac_35 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failure_11oac_45 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n column-gap: var(--wb-len-10);\n row-gap: var(--wb-len-2);\n color: var(--dsw-alias-state-error-primary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n\n._failureTitle_11oac_55 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._failureHint_11oac_62 {\n grid-column: 1;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failureAction_11oac_67 {\n grid-column: 2;\n grid-row: 1;\n justify-self: end;\n}\n\n._foot_11oac_73 {\n display: flex;\n justify-content: flex-end;\n}\n._body_lox98_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._field_lox98_7 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._input_lox98_13 {\n width: 100%;\n}\n\n._label_lox98_17 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\n._hint_lox98_22 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._copy_lox98_28 {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wb-len-8) var(--wb-len-16);\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n._copy_lox98_28 legend {\n padding: 0;\n margin-bottom: var(--wb-len-6);\n}\n\n._actions_lox98_42 {\n display: flex;\n justify-content: flex-end;\n}\n\n._commandLabel_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n}\n\n._command_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-6) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow-wrap: anywhere;\n}\n._body_zi2j5_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._lead_zi2j5_7 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._title_zi2j5_14 {\n font-size: var(--wb-font-18);\n line-height: var(--wb-line-24);\n}\n._hint_zyzt3_1[hidden],\n._actions_zyzt3_2[hidden],\n._progress_zyzt3_3[hidden],\n._commandRow_zyzt3_4[hidden],\n._bridge_zyzt3_5[hidden],\n._raw_zyzt3_6[hidden] {\n display: none;\n}\n\n._gate_zyzt3_10 {\n position: fixed;\n inset: 0;\n z-index: var(--wb-z-top);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--wb-len-24);\n background: var(--dsw-alias-bg-base);\n}\n\n._card_zyzt3_21 {\n width: 100%;\n max-width: var(--wb-len-420);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-16);\n text-align: center;\n}\n\n._card_zyzt3_21:has(._actions_zyzt3_2:not([hidden])),\n._card_zyzt3_21:has(._bridge_zyzt3_5:not([hidden])) {\n max-width: var(--wb-len-520);\n}\n\n._title_zyzt3_36 {\n margin: 0;\n font-size: var(--dsw-font-base-16-font-size);\n line-height: var(--wb-line-24);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._steps_zyzt3_51 {\n list-style: none;\n margin: var(--wb-len-6) 0 0;\n padding: 0;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n text-align: left;\n}\n\n._step_zyzt3_51 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-6) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._step_zyzt3_51[data-status='running'] {\n color: var(--dsw-alias-label-primary);\n}\n\n._mark_zyzt3_78 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-14);\n height: var(--wb-len-14);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._step_zyzt3_51[data-status='ok'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._step_zyzt3_51[data-status='warn'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._step_zyzt3_51[data-status='failed'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._label_zyzt3_103 {\n flex: none;\n}\n\n._detail_zyzt3_107 {\n margin-left: auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._progress_zyzt3_3 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._elapsed_zyzt3_125 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._error_zyzt3_133 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n max-height: var(--wb-len-120);\n overflow: auto;\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n white-space: pre-wrap;\n word-break: break-all;\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._commandRow_zyzt3_4 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n margin: 0 0 var(--wb-len-8);\n padding-right: var(--wb-len-4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._copy_zyzt3_159 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._copy_zyzt3_159:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._command_zyzt3_4 {\n flex: 1;\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-primary);\n}\n\n._buttons_zyzt3_192 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-12);\n}\n\n._mockSlot_zyzt3_199 {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n justify-content: center;\n background: var(--dsw-alias-bg-base);\n}\n\n._button_zyzt3_192 {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n}\n\n._button_zyzt3_192:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._button_zyzt3_192:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n._actions_zyzt3_2,\n._bridge_zyzt3_5 {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-14) var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-1);\n text-align: left;\n}\n\n._fixTitle_zyzt3_250 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._actions_zyzt3_2 ._hint_zyzt3_1,\n._bridge_zyzt3_5 ._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._actions_zyzt3_2 ._commandRow_zyzt3_4,\n._bridge_zyzt3_5 ._commandRow_zyzt3_4 {\n margin: 0;\n}\n\n._actions_zyzt3_2 ._buttons_zyzt3_192,\n._bridge_zyzt3_5 ._buttons_zyzt3_192 {\n justify-content: flex-start;\n}\n\n._raw_zyzt3_6 {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._rawSummary_zyzt3_286 {\n cursor: pointer;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._actions_zyzt3_2 ._error_zyzt3_133,\n._bridge_zyzt3_5 ._error_zyzt3_133 {\n margin-top: var(--wb-len-6);\n}\n\n._bridgeLines_zyzt3_296 {\n margin: 0;\n padding-left: var(--wb-len-18);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._bridgeLine_zyzt3_296 a {\n display: block;\n margin-top: var(--wb-len-4);\n width: fit-content;\n}\n\n._link_zyzt3_313 {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n\n._link_zyzt3_313::after {\n content: '↗';\n margin-left: var(--wb-len-2);\n}\n\n._link_zyzt3_313:hover {\n text-decoration: underline;\n}\n\n._loading_zyzt3_327 {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._loading_zyzt3_327[hidden] {\n display: none;\n}\n\n._loadingMotion_zyzt3_336 {\n transform-origin: center;\n animation: _wb-spin_zyzt3_1 var(--wb-dur-1-5) linear infinite;\n}\n\n._loadingTrack_zyzt3_341,\n._loadingArc_zyzt3_342 {\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n._loadingTrack_zyzt3_341 {\n opacity: 0.25;\n}\n\n._loadingArc_zyzt3_342 {\n stroke-dasharray: 12 150;\n animation: _wb-dash_zyzt3_1 var(--wb-dur-1-5) ease-in-out infinite;\n}\n\n@keyframes _wb-spin_zyzt3_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes _wb-dash_zyzt3_1 {\n 0% {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 24 150;\n stroke-dashoffset: -6;\n }\n to {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._loadingMotion_zyzt3_336,\n ._loadingArc_zyzt3_342 {\n animation: none;\n }\n}\n._changelog_1q6pj_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-10);\n min-width: 0;\n}\n\n._changelogTitle_1q6pj_9 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._changelogMissing_1q6pj_15 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._changelogBody_1q6pj_21 {\n max-height: var(--wb-len-320);\n overflow: auto;\n padding: var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n}\n._group_1hxis_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n}\n\n._button_1hxis_7 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n color: var(--dsw-alias-label-secondary);\n}\n\n._button_1hxis_7:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._active_1hxis_19 {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._icon_1hxis_23 {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n._icon_1hxis_23 svg {\n display: block;\n width: var(--wb-len-15);\n height: var(--wb-len-15);\n}\n\n._mirror_1hxis_35 {\n transform: scaleX(-1);\n}\n._stripTabs_1dqp4_1 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n min-width: 0;\n overflow: hidden;\n}\n\n._tab_1dqp4_9 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: none;\n font: inherit;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-16);\n max-width: 100%;\n}\n\n._tabActive_1dqp4_25 {\n color: var(--dsw-alias-label-primary);\n}\n\n._tabQuiet_1dqp4_29 {\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._tabQuiet_1dqp4_29:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._tabTitle_1dqp4_39 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._sep_1dqp4_49 {\n flex: none;\n color: var(--dsw-alias-label-dimmed);\n}\n._trigger_15ptp_1 {\n display: flex;\n align-items: center;\n}\n\n._pop_15ptp_6 {\n position: absolute;\n top: calc(var(--wb-len-38) + var(--wb-len-8));\n right: var(--wb-len-6);\n z-index: var(--wb-z-30);\n width: min(var(--wb-len-360), calc(100% - var(--wb-len-12)));\n max-width: calc(100vw - var(--wb-len-48));\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-2);\n box-shadow: var(--dsw-shadow-lv3);\n overflow: hidden;\n}\n\n._head_15ptp_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-10) var(--wb-len-12) var(--wb-len-9) var(--wb-len-14);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._title_15ptp_28 {\n flex: 1;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._rowControls_15ptp_36 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._reset_15ptp_43 {\n flex: none;\n padding: var(--wb-len-3) var(--wb-len-8);\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._reset_15ptp_43:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_15ptp_43:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._list_15ptp_65 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._row_15ptp_36 {\n position: relative;\n display: grid;\n grid-template-columns: 12px minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-sm);\n cursor: default;\n}\n\n._rowDragging_15ptp_85 {\n cursor: grabbing;\n}\n\n._rowBlocked_15ptp_89 {\n cursor: not-allowed;\n}\n\n._listDragging_15ptp_93 ._rowControls_15ptp_36 {\n pointer-events: none;\n}\n\n._row_15ptp_36:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._rowOff_15ptp_101 {\n opacity: 0.55;\n}\n\n._rowOff_15ptp_101:hover {\n opacity: 1;\n}\n\n._rowOver_15ptp_109::before {\n content: '';\n position: absolute;\n top: var(--wb-len-neg-3);\n left: var(--wb-len-8);\n right: var(--wb-len-8);\n height: var(--wb-len-2);\n background: var(--dsw-alias-brand-primary);\n}\n\n._ghost_15ptp_119 {\n position: fixed;\n z-index: var(--wb-z-40);\n pointer-events: none;\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: var(--wb-static-shadow-ghost);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n white-space: nowrap;\n}\n\n._grip_15ptp_134 {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: center;\n color: var(--dsw-alias-label-tertiary);\n user-select: none;\n cursor: grab;\n touch-action: none;\n}\n\n._gripDragging_15ptp_144 {\n cursor: grabbing;\n}\n\n._gripBlocked_15ptp_148 {\n cursor: not-allowed;\n}\n\n._label_15ptp_152 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._name_15ptp_159 {\n min-width: 0;\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n\n._error_15ptp_170 {\n margin: 0;\n padding: 0 var(--wb-len-14) var(--wb-len-10);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._dep_15ptp_178 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n}\n\n._group_15ptp_186 {\n padding-top: var(--wb-len-6);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._groupTitle_15ptp_191 {\n margin: 0;\n padding: var(--wb-len-2) var(--wb-len-8) 0 var(--wb-len-14);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n font-weight: 400;\n color: var(--dsw-alias-label-tertiary);\n}\n._panel_1whum_1 {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: var(--wb-z-10);\n visibility: hidden;\n}\n\n._panel_1whum_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_1whum_1[data-open] {\n visibility: visible;\n}\n\n._columns_1whum_18 {\n display: block;\n column-gap: var(--wb-len-12);\n}\n\n._cell_1whum_23 {\n display: flow-root;\n min-width: 0;\n break-inside: avoid;\n margin-bottom: var(--wb-len-12);\n}\n._root_1cmz0_1 {\n position: relative;\n flex: none;\n margin: 0 var(--wb-len-2) var(--wb-len-4);\n}\n\n._rail_1cmz0_7 {\n margin: 0 0 var(--wb-len-4);\n}\n\n._glyphBox_1cmz0_11 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n._glyph_1cmz0_11 {\n position: relative;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._glyphActive_1cmz0_30 {\n color: var(--dsw-alias-state-business-primary);\n}\n\n._triggerName_1cmz0_34 {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n font-size: var(--wb-font-row);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n._dir_1cmz0_45 {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._name_1cmz0_53 {\n flex: 0 1 auto;\n max-width: 50%;\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._triggerName_1cmz0_34 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._row_1cmz0_66 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n width: 100%;\n min-width: 0;\n}\n\n._trailing_1cmz0_74 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n margin-inline-start: auto;\n}\n\n._trailing_1cmz0_74 ._rowAction_1cmz0_84 {\n width: var(--wb-len-20);\n min-width: var(--wb-len-20);\n height: var(--wb-len-20);\n min-height: var(--wb-len-20);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n}\n\n._row_1cmz0_66 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._current_1cmz0_97 {\n flex: none;\n display: inline-flex;\n align-items: center;\n color: var(--dsw-alias-label-primary);\n}\n._dot_sosf1_1 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n._overlay_sosf1_8 {\n position: absolute;\n inset-block-start: var(--wb-len-neg-3);\n inset-inline-end: var(--wb-len-neg-3);\n}\n._tag_g9dg8_1 {\n flex: none;\n margin-inline-start: auto;\n}\n._dialog_1vye5_1 {\n width: min(var(--wb-len-420), 100%);\n}\n\n._stack_1vye5_5 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._input_1vye5_12 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-12);\n}\n\n._meta_1vye5_18 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n._dot_14w1n_1 {\n display: inline-flex;\n align-items: center;\n}\n\n._hover_14w1n_6 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._blocker_1oaj0_1 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-20) var(--wb-len-16);\n text-align: center;\n}\n\n._icon_1oaj0_10 {\n display: flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._title_1oaj0_15 {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_1oaj0_23 {\n margin: 0;\n max-width: var(--wb-len-42em);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n text-wrap: pretty;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 {\n align-items: flex-start;\n gap: var(--wb-len-6);\n padding: var(--wb-len-4) 0 var(--wb-len-2);\n text-align: left;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._title_1oaj0_15 {\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._hint_1oaj0_23 {\n max-width: 100%;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._actions_1oaj0_48 {\n margin-top: var(--wb-len-8);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._raw_1oaj0_52 {\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._actions_1oaj0_48 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-6);\n}\n\n._raw_1oaj0_52 {\n margin-top: var(--wb-len-10);\n width: 100%;\n max-width: var(--wb-len-360);\n text-align: left;\n}\n\n._notice_1oaj0_71 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: start;\n column-gap: var(--wb-len-10);\n margin: 0 0 var(--wb-len-10);\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-left: 2px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._notice_1oaj0_71._noticeFlat_1oaj0_84 {\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n\n._noticeText_1oaj0_91 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-3);\n min-width: 0;\n}\n\n._noticeTitle_1oaj0_98 {\n font-size: var(--wb-font-12-5);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._noticeHint_1oaj0_105 {\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._noticeActions_1oaj0_112 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-neg-2);\n}\n\n._failure_1oaj0_119 {\n margin: var(--wb-len-8) 0 0;\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._failureDetail_1oaj0_127 {\n display: block;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-label-tertiary);\n white-space: pre-wrap;\n}\n\n._inlineAction_1oaj0_134 {\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n._inlineAction_1oaj0_134:disabled {\n opacity: 0.6;\n cursor: default;\n}\n\n._rawText_1oaj0_146 {\n margin: var(--wb-len-6) 0 0;\n max-width: 100%;\n}\n/*$vite$:1*/";
|
|
14763
|
+
var COMPONENT_CSS_MARKER = ".wb-activityBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding-top: var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n.wb-activityBlock:first-child {\n padding-top: 0;\n border-top: none;\n}\n\n.wb-activityBlockHead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8);\n}\n\n.wb-activityLine {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-activityLineText {\n flex: none;\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n max-height: var(--wb-len-72);\n overflow-y: auto;\n}\n\n.wb-activityLineAt {\n flex: none;\n margin-left: auto;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-16);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-activityLine > .wb-activityLineAt,\n.wb-activityLine > .wb-activityLineActions {\n margin-left: auto;\n}\n\n.wb-activityLine > .wb-activityLineAt + .wb-activityLineActions {\n margin-left: 0;\n}\n\n.wb-activityLineActions {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n.wb-activityActionFailed {\n color: var(--dsw-alias-state-error-primary);\n}\n.wb-note {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-problem {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalCommand {\n max-width: 100%;\n}\n.wb-approvalPlan {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-approvalHint {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n.wb-approvalRows {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n}\n.wb-approvalRow {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n.wb-approvalLabel {\n flex: none;\n width: var(--wb-len-56);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-approvalValue {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalWarn {\n color: var(--dsw-alias-label-secondary);\n}\n.wb-cardHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-8) var(--wb-card-gutter);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-cardTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-cardMeta {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-cardMeta::before {\n content: '\\00b7';\n margin-right: var(--wb-len-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen ~ .wb-cardRefresh {\n margin-left: 0;\n}\n\n.wb-cardOpen:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh {\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardRefresh:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-cardGear {\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-3);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardGear:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n.wb-card {\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-bg-layer-1);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: none;\n}\n.wb-cardBody {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-card-gutter);\n font-size: var(--dsw-font-xxs-12-font-size);\n}\n.wb-cardBleed {\n margin-inline: calc(-1 * var(--wb-card-gutter));\n}\n._anchor_yq4s2_1 {\n display: contents;\n}\n.wb-spinner {\n display: inline-flex;\n align-items: center;\n flex: none;\n}\n.wb-choiceMenu {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n background: transparent;\n}\n\n.wb-choiceMenu[data-variant='boxed'] {\n padding: var(--wb-len-4);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-choiceOption {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-choiceOptionOn {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-checkbox {\n position: absolute;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.wb-checkboxBox {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xs);\n corner-shape: round;\n color: var(--dsw-alias-label-primary-foreground);\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-choiceOption:hover .wb-checkboxBox {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-checkbox:checked + .wb-checkboxBox {\n border-color: var(--dsw-alias-brand-primary);\n background: var(--dsw-alias-brand-primary);\n}\n\n.wb-checkbox:disabled + .wb-checkboxBox {\n cursor: default;\n}\n\n.wb-checkbox:focus-visible + .wb-checkboxBox {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n.wb-choiceOption:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-choiceOption:has(:disabled) {\n cursor: default;\n opacity: 0.5;\n}\n\n.wb-choiceOption:has(:disabled),\n.wb-choiceOption:has(:disabled):hover {\n background: transparent;\n}\n\n.wb-choiceLabel {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.wb-choiceLabelText {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceLabel:has(.wb-choiceDescription) .wb-choiceLabelText {\n overflow: visible;\n white-space: normal;\n overflow-wrap: anywhere;\n}\n\n.wb-choiceDescription {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n.wb-choiceLoading {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-choiceLoadingText {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceEmpty {\n display: flex;\n align-items: center;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio {\n appearance: none;\n -webkit-appearance: none;\n flex: none;\n box-sizing: border-box;\n width: var(--wb-len-12);\n height: var(--wb-len-12);\n margin: 0;\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: 50%;\n corner-shape: round;\n background-color: transparent;\n cursor: pointer;\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-radio:not(:checked):hover {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio:checked {\n border-color: var(--dsw-alias-brand-primary);\n background-image: radial-gradient(\n circle at center,\n var(--dsw-alias-brand-primary) 0 3px,\n transparent 3px\n );\n}\n\n.wb-radio:disabled {\n cursor: default;\n}\n\n.wb-radio:focus-visible {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n.wb-formActions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n}\n\n.wb-formActionDanger {\n color: var(--dsw-alias-state-error-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);\n}\n.wb-rows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n}\n.wb-rows > :not(.wb-row) {\n grid-column: 1 / -1;\n}\n.wb-row {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: baseline;\n gap: var(--wb-len-8);\n padding: var(--wb-len-4) 0;\n}\n.wb-row + .wb-row {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n.wb-rowKey {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-rowValue {\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-rows > .wb-row {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-rows > .wb-row {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-confirmBar {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n width: 100%;\n box-sizing: border-box;\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n}\n.wb-confirmBarTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 600;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-confirmBarHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n.wb-field {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n.wb-fieldLabel {\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-fieldHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-field:has(:disabled) .wb-fieldLabel {\n opacity: 0.4;\n}\n.wb-formRows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-12);\n}\n\n.wb-formRows > :not(.wb-formRow) {\n grid-column: 1 / -1;\n}\n\n.wb-formRow {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: center;\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-8);\n}\n\n.wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n align-items: stretch;\n gap: var(--wb-len-6);\n}\n\n.wb-formRows > .wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.wb-formLabel {\n justify-self: start;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: nowrap;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formLabel {\n white-space: normal;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formHint,\n.wb-formRow[data-layout='stacked'] .wb-formProblem {\n grid-column: 1 / -1;\n}\n\n.wb-formControl {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.wb-formControl\n > :where(\n .wb-selectAnchor,\n .wb-choiceMenu,\n input:not(\n [type='checkbox'],\n [type='radio'],\n [type='button'],\n [type='submit'],\n [type='reset'],\n [type='image'],\n [type='color'],\n [type='range']\n ),\n select,\n textarea\n ) {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n}\n\n.wb-formHint {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-formProblem {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(.wb-formProblem) .wb-formLabel {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(:disabled) .wb-formLabel {\n opacity: 0.4;\n}\n\n.wb-formRows > .wb-formRow {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-formRows > .wb-formRow {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-form {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n width: 100%;\n}\n:where(.wb-link) {\n margin-left: var(--wb-len-2);\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n white-space: nowrap;\n vertical-align: baseline;\n}\n\n:where(.wb-link:hover) {\n text-decoration: underline;\n}\n\n:where(.wb-link:focus-visible) {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n.wb-longTask {\n padding-top: var(--wb-len-12);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n.wb-longTaskHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n}\n\n.wb-longTaskLink {\n flex: none;\n}\n\n.wb-longTaskHeadline {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-longTaskProblem {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-longTaskDump {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-longTaskDump pre {\n margin: var(--wb-len-4) 0 0;\n max-height: var(--wb-len-220);\n overflow: auto;\n}\n\n.wb-longTaskStop {\n display: inline-flex;\n flex: none;\n align-items: center;\n align-self: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n padding: 0;\n margin-left: auto;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-specific-menu);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n.wb-longTaskStop:hover:not(:disabled),\n.wb-longTaskStop:focus-visible {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStop:disabled {\n cursor: default;\n}\n\n.wb-longTaskStopArmed,\n.wb-longTaskStopArmed:hover:not(:disabled),\n.wb-longTaskStopArmed:focus-visible {\n gap: var(--wb-len-4);\n width: auto;\n padding: 0 var(--wb-len-7);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStopLabel {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n.wb-longTaskStopWhy {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-centered.wb-centeredCompact {\n flex: none;\n min-height: 0;\n gap: var(--wb-len-8);\n padding: var(--wb-len-20) var(--wb-len-16);\n}\n\n.wb-centered.wb-centeredCompact .wb-centeredHero {\n margin-bottom: var(--wb-len-4);\n}\n\n.wb-skeleton {\n display: flex;\n flex-direction: column;\n}\n\n.wb-skeletonRow {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-skeletonRow + .wb-skeletonRow::before {\n content: '';\n align-self: stretch;\n height: var(--wb-len-0-5);\n margin: 0 var(--wb-len-8) var(--wb-len-neg-0-5);\n background: var(--dsw-alias-border-l2);\n}\n\n.wb-skeletonBar {\n display: block;\n height: var(--wb-len-13);\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-bg-skeleton);\n animation: wb-skeleton-pulse var(--wb-dur-1-4) var(--ds-ease-in-out) infinite;\n}\n\n.wb-skeletonBarTitle {\n width: 62%;\n}\n\n.wb-skeletonBarMeta {\n width: 32%;\n height: var(--wb-len-10);\n}\n\n.wb-skeletonRow:nth-child(2n) .wb-skeletonBarTitle {\n width: 74%;\n}\n\n.wb-skeletonRow:nth-child(3n) .wb-skeletonBarTitle {\n width: 52%;\n}\n\n@keyframes wb-skeleton-pulse {\n 50% {\n opacity: 0.45;\n }\n}\n\n.wb-centered {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: var(--wb-len-14);\n flex: 1;\n min-height: var(--wb-len-240);\n padding: 0 var(--wb-len-24) var(--wb-len-24);\n text-align: center;\n}\n\n.wb-centeredHero {\n display: flex;\n margin-bottom: var(--wb-len-16);\n color: var(--dsw-alias-label-dimmed);\n}\n\n.wb-centeredTitle {\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-centeredHint {\n max-width: var(--wb-len-300);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-centeredDetail {\n max-width: var(--wb-len-320);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-dimmed);\n word-break: break-all;\n}\n\n.wb-centeredAction {\n display: flex;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n@media (prefers-reduced-motion: reduce) {\n .wb-skeletonBar {\n animation: none;\n }}\n.wb-textField {\n box-sizing: border-box;\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n outline: none;\n}\n\n.wb-textField:focus {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-textField:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-textField[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-textField[aria-invalid='true']:focus {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n:where(.wb-textField) {\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n}\n:where(.wb-selectTrigger) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n text-align: left;\n cursor: pointer;\n}\n\n.wb-selectTrigger:focus-visible {\n outline: none;\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true']:focus-visible {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-selectLoading:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: none;\n background: transparent;\n font-size: var(--wb-font-row);\n}\n\n.wb-selectGhost:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-selectGhost:focus-visible {\n outline: var(--dsw-focus-ring-width) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n border-color: transparent;\n box-shadow: none;\n}\n\n.wb-selectIconOnly {\n width: var(--wb-len-36);\n height: var(--wb-len-36);\n min-height: 0;\n gap: 0;\n padding: 0;\n justify-content: center;\n}\n\n.wb-selectReveal {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.wb-selectIconOnly .wb-selectIcon {\n width: 100%;\n height: 100%;\n}\n\n.wb-selectAnchor {\n display: block;\n width: 100%;\n}\n\n.wb-selectIcon {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectValue {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n.wb-selectPlaceholder {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectChevron {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-caption);\n}\n\n.wb-selectMenu {\n min-width: var(--wb-len-240);\n max-width: var(--wb-len-360);\n max-height: min(var(--wb-len-320), calc(100vh - var(--wb-len-24)));\n}\n\n:where(.wb-selectSearch) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n.wb-selectSearch:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectSearch.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: 0.5px solid var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-selectSearch.wb-selectGhost:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: none;\n}\n\n.wb-selectSearchIcon {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-textField.wb-selectSearchInput {\n flex: 1;\n min-width: 0;\n min-height: 0;\n padding: 0;\n border: none;\n background: transparent;\n}\n\n.wb-textField.wb-selectSearchInput:focus {\n box-shadow: none;\n}\n\n.wb-selectFallback {\n width: 100%;\n}\n\n.wb-selectHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\nsection.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-len-16);\n border: 0;\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-settings-card-fill);\n}\n.wb-settingsHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n.wb-settings .wb-settingsTitle {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-strong-14-font-size);\n line-height: var(--wb-line-24);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n.wb-stack {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\n}\n.wb-stateBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-stateBlockTitle {\n margin: 0;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n.wb-stateBlockHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-stateBlockActions {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n.wb-stateBlockResolving {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._marketList_1idrk_1 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._marketRow_1idrk_10 {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n column-gap: var(--wb-len-14);\n row-gap: var(--wb-len-4);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-lg);\n}\n\n._marketIcon_1idrk_20 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketMain_1idrk_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_1idrk_39 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketStatus_1idrk_48 {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketStateText_1idrk_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_1idrk_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_1idrk_66 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._marketName_1idrk_39 ._marketVersion_1idrk_72 {\n margin-left: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n}\n\n._marketVersion_1idrk_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_1idrk_72::before {\n content: '';\n display: inline-block;\n width: var(--wb-len-1);\n height: var(--wb-len-10);\n margin: 0 var(--wb-len-8) 0 var(--wb-len-2);\n vertical-align: -1px;\n background: var(--dsw-alias-border-l2);\n}\n\n._marketLocalTag_1idrk_94 {\n margin-left: var(--wb-len-8);\n padding: 0 var(--wb-len-6);\n border: var(--wb-len-1) solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-caption);\n}\n\n._marketEnd_1idrk_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_1idrk_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_1idrk_112::before {\n content: '';\n width: 0;\n height: var(--wb-len-14);\n border-left: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketActions_1idrk_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_1idrk_131 {\n color: var(--dsw-alias-state-warn-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._marketSelfDivider_1idrk_137 {\n height: 0;\n margin-top: calc(0px - var(--wb-len-16));\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketSection_1idrk_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_1idrk_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_1idrk_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_1idrk_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_1idrk_169 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionQuiet_1idrk_175 ._marketSectionTitle_1idrk_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_1idrk_175 ._marketName_1idrk_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_1idrk_175 ._marketIcon_1idrk_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_1idrk_188 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-height: var(--wb-len-32);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketNote_1idrk_198 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-warn-primary);\n overflow-wrap: anywhere;\n}\n\n._marketFailure_1idrk_205 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._marketEmpty_1idrk_212 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_1idrk_217 {\n box-sizing: border-box;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-32);\n padding: 0 clamp(var(--wb-len-24), 4vw, var(--wb-len-48)) var(--wb-len-48);\n overflow-x: hidden;\n overflow-y: auto;\n color: var(--dsw-alias-label-primary);\n}\n\n._marketPage_1idrk_217 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_1idrk_235 {\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-16);\n padding-top: var(--wb-len-28);\n}\n\n._marketPageTitle_1idrk_243 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_1idrk_248 {\n margin: var(--wb-len-4) 0 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketPageTools_1idrk_254 {\n flex: none;\n align-self: center;\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: var(--wb-len-16);\n}\n\n._marketPanel_1idrk_263 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_1idrk_263[hidden] {\n display: none;\n}\n\n._marketTabs_1idrk_273 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_1idrk_278 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketIconButton_1idrk_283 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n color: var(--dsw-alias-label-caption);\n cursor: pointer;\n}\n\n._marketIconButton_1idrk_283:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_1idrk_283:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_1idrk_308 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_1idrk_312 svg {\n animation: _wb-spin_1idrk_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_1idrk_316 {\n height: var(--wb-len-32);\n padding: 0 var(--wb-len-12);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n border-radius: var(--dsw-radius-md);\n}\n\n._marketEmpty_1idrk_212 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) var(--wb-len-16);\n text-align: center;\n}\n\n._marketEmptyTitle_1idrk_333 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_1idrk_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n._discoverPage_1idrk_347 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_1idrk_354 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_1idrk_361 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_1idrk_367 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_1idrk_372 {\n min-width: 0;\n max-width: var(--wb-len-240);\n margin-left: calc(0px - var(--wb-len-8));\n font-weight: 500;\n}\n\n._discoverMarketName_1idrk_379 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_1idrk_385 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_1idrk_390 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_1idrk_395 {\n flex: none;\n}\n\n._discoverSearch_1idrk_399 {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 var(--wb-len-120);\n min-width: var(--wb-len-120);\n}\n\n._discoverSearchField_1idrk_407 {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._discoverSearchFieldFilled_1idrk_412 input {\n padding-inline-end: var(--wb-len-20);\n}\n\n._discoverSearchField_1idrk_407 input::-webkit-search-cancel-button {\n appearance: none;\n -webkit-appearance: none;\n}\n\n._discoverSearch_1idrk_399 ._discoverSearchClear_1idrk_421 {\n position: absolute;\n top: 50%;\n inset-inline-end: var(--wb-len-4);\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-tertiary);\n transform: translateY(-50%);\n}\n\n._discoverSearchClear_1idrk_421:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_1idrk_361 {\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(var(--wb-len-120), 1fr) auto;\n grid-template-areas:\n 'market search refresh'\n 'labels sort sort';\n }\n\n ._discoverMarket_1idrk_367 {\n grid-area: market;\n }\n\n ._discoverMarketButton_1idrk_372 {\n margin-left: 0;\n }\n\n ._discoverLabels_1idrk_385 {\n grid-area: labels;\n }\n\n ._discoverSearch_1idrk_399 {\n grid-area: search;\n }\n\n ._discoverSort_1idrk_390 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_1idrk_395 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_1idrk_472 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_1idrk_479 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._discoverCard_1idrk_488 {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n margin: 0 calc(0px - var(--wb-len-8));\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCard_1idrk_488:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_1idrk_502 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverArtworkImage_1idrk_514 {\n object-fit: contain;\n}\n\n._discoverMain_1idrk_518 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_1idrk_526 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverCardOpen_1idrk_534 {\n max-width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n cursor: pointer;\n}\n\n._discoverCardOpen_1idrk_534::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_1idrk_534:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_1idrk_534:focus-visible::after {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverStrong_1idrk_565 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_1idrk_571 {\n display: -webkit-box;\n overflow: hidden;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverMeta_1idrk_580 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._discoverMuted_1idrk_587 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_1idrk_593 {\n position: relative;\n z-index: var(--wb-z-10);\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverBlocked_1idrk_602 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_1idrk_607 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) 0;\n text-align: center;\n}\n\n._discoverEmptyTitle_1idrk_616 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_1idrk_607 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_1idrk_626 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_1idrk_632 {\n align-self: flex-start;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n padding: 0;\n border: 0;\n background: 0 0;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n font-size: var(--wb-font-12-5);\n cursor: pointer;\n}\n\n._discoverCrumb_1idrk_632:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_1idrk_632:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverCrumbIcon_1idrk_655 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_1idrk_659 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_1idrk_665 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_1idrk_671 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._discoverDetailPanel_1idrk_678 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_1idrk_685 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_1idrk_690 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_1idrk_695 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_1idrk_700 {\n margin: var(--wb-len-16) 0 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverSection_1idrk_706 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_1idrk_713 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_1idrk_719 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_1idrk_724 {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--wb-len-16);\n min-height: var(--wb-len-44);\n padding: var(--wb-len-8) var(--wb-len-2);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverFactKind_1idrk_734 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_1idrk_740 {\n min-width: 0;\n margin: 0;\n text-align: end;\n overflow-wrap: anywhere;\n font: var(--dsw-font-xs-13);\n}\n\n._discoverCode_1idrk_748 {\n padding: var(--wb-len-2) var(--wb-len-6);\n border-radius: var(--wb-radius-6);\n background: var(--dsw-alias-bg-module-platform);\n font-family: var(--ds-font-family-code);\n font-size: var(--dsw-font-xxs-12-font-size);\n box-decoration-break: clone;\n}\n\n._discoverTags_1idrk_757 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_1idrk_764 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_1idrk_764:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_1idrk_774 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_1idrk_782 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverVersionName_1idrk_790 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_1idrk_795 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverFailure_1idrk_804 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverLoading_1idrk_810 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xs-13);\n}\n\n._discoverNotice_1idrk_819 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverNotice_1idrk_819 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_1idrk_837 {\n align-self: center;\n}\n\n._discoverDialog_1idrk_841 {\n width: min(var(--wb-len-480), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_1idrk_845 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_1idrk_851 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_1idrk_859 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverSourceCurrent_1idrk_868 {\n flex: none;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n white-space: nowrap;\n}\n\n._discoverSourceLoading_1idrk_875 {\n display: flex;\n flex: none;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n white-space: nowrap;\n}\n\n._discoverSourceHint_1idrk_885 {\n display: flex;\n flex-basis: 100%;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverSourceHint_1idrk_885 svg {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverSourceError_1idrk_899 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_1idrk_905 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_1idrk_911 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_1idrk_916 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_1idrk_922 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_1idrk_927 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_1idrk_933 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_1idrk_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_1idrk_502._discoverSkeletonFill_1idrk_933 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_1idrk_942 {\n display: block;\n height: var(--wb-len-12);\n margin: var(--wb-len-4) 0;\n border-radius: var(--dsw-radius-xs);\n}\n\n._discoverSkeletonTitle_1idrk_949 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_1idrk_953 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_1idrk_1 {\n 0% {\n opacity: 1;\n }\n 40% {\n opacity: 0.6;\n }\n 80%,\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._discoverSkeletonFill_1idrk_933 {\n animation: none;\n }\n}\n\n._foot_1ud1j_1 {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._footText_1ud1j_13 {\n flex: 1;\n min-width: 0;\n}\n\n._footTextMd_1ud1j_18 {\n flex: 1;\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n._wide_1lv8f_1 {\n justify-content: center;\n width: 100%;\n height: var(--wb-len-40);\n border-radius: var(--dsw-radius-md);\n}\n\n._dialog_1lv8f_8 {\n width: min(var(--wb-len-560), 100%);\n max-height: min(var(--wb-len-800), 100%);\n}\n\n._content_1lv8f_13 {\n min-height: 0;\n overflow: auto;\n}\n\n._stack_1lv8f_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._body_1lv8f_25 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._field_1lv8f_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._input_1lv8f_39 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-14);\n}\n\n._registryField_1lv8f_45 {\n height: var(--wb-len-32);\n margin-left: var(--wb-len-26);\n padding: 0 var(--wb-len-10);\n}\n\n._options_1lv8f_51 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8) var(--wb-len-12);\n}\n\n._guideToggle_1lv8f_59 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-4);\n align-self: flex-start;\n margin-top: var(--wb-len-4);\n padding: 0;\n border: 0;\n background: transparent;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._guideToggle_1lv8f_59:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._guideToggle_1lv8f_59 svg,\n._registryToggle_1lv8f_78 svg {\n transition: transform var(--wb-dur-0-12) ease;\n}\n\n._guideToggle_1lv8f_59[aria-expanded='true'] svg,\n._registryToggle_1lv8f_78[aria-expanded='true'] svg {\n transform: rotate(180deg);\n}\n\n._registryWrap_1lv8f_87 {\n position: relative;\n flex: none;\n}\n\n._registryToggle_1lv8f_78 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n height: var(--wb-len-26);\n padding: 0 var(--wb-len-8) 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n font: inherit;\n font-size: var(--wb-font-12-5);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._registryToggle_1lv8f_78:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._registryToggle_1lv8f_78:disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n._registryToggle_1lv8f_78[aria-expanded='true'] {\n border-color: var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n._registryChosen_1lv8f_121 {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\n._registry_1lv8f_45 {\n position: fixed;\n z-index: var(--wb-z-1100);\n box-sizing: border-box;\n width: min(var(--wb-len-440), 100vw - var(--wb-len-24));\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-12);\n border: 0;\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-2);\n --dsw-elevation-stroke-color: var(--dsw-alias-border-l3);\n box-shadow: var(--dsw-elevation-prominent);\n}\n\n._registryOption_1lv8f_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid transparent;\n border-radius: var(--dsw-radius-lg);\n cursor: pointer;\n}\n\nlabel._registryOption_1lv8f_143 {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--wb-len-10);\n}\n\n._registryPick_1lv8f_159 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n cursor: pointer;\n}\n\n._registryOption_1lv8f_143[data-checked='true'] {\n border-color: color-mix(in srgb, var(--dsw-alias-brand-primary) 40%, transparent);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._registryOption_1lv8f_143 input[type='radio'] {\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: var(--wb-len-2) 0 0;\n accent-color: var(--dsw-alias-brand-primary);\n}\n\n._registryTitle_1lv8f_179 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n font: var(--dsw-font-xs-13);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n._registryHint_1lv8f_189 {\n margin-left: var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._inputError_1lv8f_197 {\n margin: var(--wb-len-neg-4) 0 0 var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._guide_1lv8f_59 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._guideList_1lv8f_214 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._guideItem_1lv8f_223 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0;\n}\n\n._guideIndex_1lv8f_230 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n border-radius: var(--wb-radius-pill);\n corner-shape: round;\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._guideMain_1lv8f_244 {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 0;\n min-width: 0;\n}\n\n._guideTitle_1lv8f_252 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._guideHint_1lv8f_258 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._guideExample_1lv8f_264 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._guideExample_1lv8f_264 code {\n font-family: var(--dsw-font-mono, monospace);\n}\n\n._guideExampleLabel_1lv8f_274 {\n color: var(--dsw-alias-label-caption);\n}\n\n._footer_1lv8f_278 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-20);\n width: 100%;\n}\n\n._hero_1lv8f_285 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0 var(--wb-len-4);\n text-align: center;\n}\n\n._heroIcon_1lv8f_294 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-44);\n height: var(--wb-len-44);\n color: var(--dsw-alias-label-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='done'] {\n color: var(--dsw-alias-state-success-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='error'] {\n color: var(--dsw-alias-state-warn-label);\n}\n\n._pendingTitle_1lv8f_311 {\n margin: 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 500;\n color: var(--dsw-alias-label-secondary);\n}\n\n._wizardTitle_1lv8f_319 {\n margin: 0;\n font-size: var(--wb-font-18);\n line-height: var(--wb-len-26);\n font-weight: 600;\n}\n\n._subject_1lv8f_326 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n text-align: center;\n}\n\n._subjectName_1lv8f_337 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n overflow-wrap: anywhere;\n}\n\n._subjectMeta_1lv8f_343,\n._subjectDesc_1lv8f_344 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._result_1lv8f_351,\n._resultWarn_1lv8f_352 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._resultWarn_1lv8f_352 {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);\n}\n\n._resultMeta_1lv8f_365 {\n margin: 0;\n padding: 0 var(--wb-len-12);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._approval_1lv8f_373 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-state-warn-primary);\n border-radius: var(--dsw-radius-lg);\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._approvalTitle_1lv8f_383 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._approvalText_1lv8f_390 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._approvalCaution_1lv8f_396 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n font-weight: 600;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._note_1lv8f_403 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._noteWarn_1lv8f_410 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._noteError_1lv8f_414 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._problem_1lv8f_418 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._detailLabel_1lv8f_425 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._detail_1lv8f_425 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-3);\n font-family: var(--dsw-font-mono, monospace);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n}\n._note_1enlz_1 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._note_1enlz_1 > svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n._slot_1t7dx_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1t7dx_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1t7dx_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1t7dx_31 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._paused_1t7dx_35 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._trouble_1t7dx_39 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._pulse_1t7dx_43 {\n animation: _wb-debug-breathe_1t7dx_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-debug-breathe_1t7dx_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1t7dx_43 {\n animation: none;\n }\n}\n\n._entry_1t7dx_64 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1t7dx_71 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1t7dx_78 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1t7dx_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: 0;\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n}\n\n._act_1t7dx_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1t7dx_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._actStop_1t7dx_110:hover,\n._actStop_1t7dx_110:focus-visible {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._actArmed_1t7dx_115,\n._actArmed_1t7dx_115:hover,\n._actArmed_1t7dx_115:focus-visible {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n width: auto;\n color: var(--dsw-alias-state-error-primary);\n gap: var(--wb-len-4);\n padding: 0 var(--wb-len-7);\n}\n\n._actLabel_1t7dx_125 {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._entryLine_1t7dx_131 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1t7dx_138 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1t7dx_150 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1t7dx_156 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1t7dx_162 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._slot_1gkj9_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1gkj9_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1gkj9_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1gkj9_31 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._done_1gkj9_35 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._pulse_1gkj9_39 {\n animation: _wb-record-breathe_1gkj9_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-record-breathe_1gkj9_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1gkj9_39 {\n animation: none;\n }\n}\n\n._entry_1gkj9_60 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1gkj9_67 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1gkj9_74 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1gkj9_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-22);\n padding: 0 var(--wb-len-7);\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._act_1gkj9_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1gkj9_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._entryLine_1gkj9_108 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1gkj9_115 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1gkj9_127 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1gkj9_133 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1gkj9_139 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._item_lyox9_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n}\n\n._item_lyox9_1 + ._item_lyox9_1 {\n padding-top: var(--wb-len-14);\n border-top: var(--wb-len-0-5) solid var(--dsw-alias-settings-card-stroke);\n}\n\n._head_lyox9_12 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._title_lyox9_19 {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._description_lyox9_31 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._rows_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._row_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-settings-card-stroke);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-settings-card-fill);\n}\n\n._head_85r3w_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._pick_85r3w_27 {\n flex: 0 1 auto;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._pick_85r3w_27 > span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._code_85r3w_39 {\n --dsl-code-block-background: var(--dsw-alias-bg-layer-1);\n margin: 0;\n}\n\n._missing_85r3w_44,\n._conflict_85r3w_45 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-warn-primary);\n}\n._body_11oac_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._sources_11oac_7 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._sourcesLabel_11oac_14 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\nbutton._sourceOn_11oac_19 {\n border-color: var(--dsw-alias-brand-primary);\n}\n._sourceCount_11oac_22 {\n margin-left: var(--wb-len-4);\n font-variant-numeric: tabular-nums;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._reading_11oac_29 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._status_11oac_35 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failure_11oac_45 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n column-gap: var(--wb-len-10);\n row-gap: var(--wb-len-2);\n color: var(--dsw-alias-state-error-primary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n\n._failureTitle_11oac_55 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._failureHint_11oac_62 {\n grid-column: 1;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failureAction_11oac_67 {\n grid-column: 2;\n grid-row: 1;\n justify-self: end;\n}\n\n._foot_11oac_73 {\n display: flex;\n justify-content: flex-end;\n}\n._body_lox98_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._field_lox98_7 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._input_lox98_13 {\n width: 100%;\n}\n\n._label_lox98_17 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\n._hint_lox98_22 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._copy_lox98_28 {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wb-len-8) var(--wb-len-16);\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n._copy_lox98_28 legend {\n padding: 0;\n margin-bottom: var(--wb-len-6);\n}\n\n._actions_lox98_42 {\n display: flex;\n justify-content: flex-end;\n}\n\n._commandLabel_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n}\n\n._command_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-6) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow-wrap: anywhere;\n}\n._body_zi2j5_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._lead_zi2j5_7 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._title_zi2j5_14 {\n font-size: var(--wb-font-18);\n line-height: var(--wb-line-24);\n}\n._hint_zyzt3_1[hidden],\n._actions_zyzt3_2[hidden],\n._progress_zyzt3_3[hidden],\n._commandRow_zyzt3_4[hidden],\n._bridge_zyzt3_5[hidden],\n._raw_zyzt3_6[hidden] {\n display: none;\n}\n\n._gate_zyzt3_10 {\n position: fixed;\n inset: 0;\n z-index: var(--wb-z-top);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--wb-len-24);\n background: var(--dsw-alias-bg-base);\n}\n\n._card_zyzt3_21 {\n width: 100%;\n max-width: var(--wb-len-420);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-16);\n text-align: center;\n}\n\n._card_zyzt3_21:has(._actions_zyzt3_2:not([hidden])),\n._card_zyzt3_21:has(._bridge_zyzt3_5:not([hidden])) {\n max-width: var(--wb-len-520);\n}\n\n._title_zyzt3_36 {\n margin: 0;\n font-size: var(--dsw-font-base-16-font-size);\n line-height: var(--wb-line-24);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._steps_zyzt3_51 {\n list-style: none;\n margin: var(--wb-len-6) 0 0;\n padding: 0;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n text-align: left;\n}\n\n._step_zyzt3_51 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-6) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._step_zyzt3_51[data-status='running'] {\n color: var(--dsw-alias-label-primary);\n}\n\n._mark_zyzt3_78 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-14);\n height: var(--wb-len-14);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._step_zyzt3_51[data-status='ok'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._step_zyzt3_51[data-status='warn'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._step_zyzt3_51[data-status='failed'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._label_zyzt3_103 {\n flex: none;\n}\n\n._detail_zyzt3_107 {\n margin-left: auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._progress_zyzt3_3 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._elapsed_zyzt3_125 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._error_zyzt3_133 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n max-height: var(--wb-len-120);\n overflow: auto;\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n white-space: pre-wrap;\n word-break: break-all;\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._commandRow_zyzt3_4 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n margin: 0 0 var(--wb-len-8);\n padding-right: var(--wb-len-4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._copy_zyzt3_159 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._copy_zyzt3_159:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._command_zyzt3_4 {\n flex: 1;\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-primary);\n}\n\n._buttons_zyzt3_192 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-12);\n}\n\n._mockSlot_zyzt3_199 {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n justify-content: center;\n background: var(--dsw-alias-bg-base);\n}\n\n._button_zyzt3_192 {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n}\n\n._button_zyzt3_192:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._button_zyzt3_192:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n._actions_zyzt3_2,\n._bridge_zyzt3_5 {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-14) var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-1);\n text-align: left;\n}\n\n._fixTitle_zyzt3_250 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._actions_zyzt3_2 ._hint_zyzt3_1,\n._bridge_zyzt3_5 ._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._actions_zyzt3_2 ._commandRow_zyzt3_4,\n._bridge_zyzt3_5 ._commandRow_zyzt3_4 {\n margin: 0;\n}\n\n._actions_zyzt3_2 ._buttons_zyzt3_192,\n._bridge_zyzt3_5 ._buttons_zyzt3_192 {\n justify-content: flex-start;\n}\n\n._raw_zyzt3_6 {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._rawSummary_zyzt3_286 {\n cursor: pointer;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._actions_zyzt3_2 ._error_zyzt3_133,\n._bridge_zyzt3_5 ._error_zyzt3_133 {\n margin-top: var(--wb-len-6);\n}\n\n._bridgeLines_zyzt3_296 {\n margin: 0;\n padding-left: var(--wb-len-18);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._bridgeLine_zyzt3_296 a {\n display: block;\n margin-top: var(--wb-len-4);\n width: fit-content;\n}\n\n._link_zyzt3_313 {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n\n._link_zyzt3_313::after {\n content: '↗';\n margin-left: var(--wb-len-2);\n}\n\n._link_zyzt3_313:hover {\n text-decoration: underline;\n}\n\n._loading_zyzt3_327 {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._loading_zyzt3_327[hidden] {\n display: none;\n}\n\n._loadingMotion_zyzt3_336 {\n transform-origin: center;\n animation: _wb-spin_zyzt3_1 var(--wb-dur-1-5) linear infinite;\n}\n\n._loadingTrack_zyzt3_341,\n._loadingArc_zyzt3_342 {\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n._loadingTrack_zyzt3_341 {\n opacity: 0.25;\n}\n\n._loadingArc_zyzt3_342 {\n stroke-dasharray: 12 150;\n animation: _wb-dash_zyzt3_1 var(--wb-dur-1-5) ease-in-out infinite;\n}\n\n@keyframes _wb-spin_zyzt3_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes _wb-dash_zyzt3_1 {\n 0% {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 24 150;\n stroke-dashoffset: -6;\n }\n to {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._loadingMotion_zyzt3_336,\n ._loadingArc_zyzt3_342 {\n animation: none;\n }\n}\n._changelog_1q6pj_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-10);\n min-width: 0;\n}\n\n._changelogTitle_1q6pj_9 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._changelogMissing_1q6pj_15 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._changelogBody_1q6pj_21 {\n max-height: var(--wb-len-320);\n overflow: auto;\n padding: var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n}\n._group_1hxis_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n}\n\n._button_1hxis_7 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n color: var(--dsw-alias-label-secondary);\n}\n\n._button_1hxis_7:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._active_1hxis_19 {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._icon_1hxis_23 {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n._icon_1hxis_23 svg {\n display: block;\n width: var(--wb-len-15);\n height: var(--wb-len-15);\n}\n\n._mirror_1hxis_35 {\n transform: scaleX(-1);\n}\n._stripTabs_1dqp4_1 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n min-width: 0;\n overflow: hidden;\n}\n\n._tab_1dqp4_9 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: none;\n font: inherit;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-16);\n max-width: 100%;\n}\n\n._tabActive_1dqp4_25 {\n color: var(--dsw-alias-label-primary);\n}\n\n._tabQuiet_1dqp4_29 {\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._tabQuiet_1dqp4_29:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._tabTitle_1dqp4_39 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._sep_1dqp4_49 {\n flex: none;\n color: var(--dsw-alias-label-dimmed);\n}\n._trigger_15ptp_1 {\n display: flex;\n align-items: center;\n}\n\n._pop_15ptp_6 {\n position: absolute;\n top: calc(var(--wb-len-38) + var(--wb-len-8));\n right: var(--wb-len-6);\n z-index: var(--wb-z-30);\n width: min(var(--wb-len-360), calc(100% - var(--wb-len-12)));\n max-width: calc(100vw - var(--wb-len-48));\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-2);\n box-shadow: var(--dsw-shadow-lv3);\n overflow: hidden;\n}\n\n._head_15ptp_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-10) var(--wb-len-12) var(--wb-len-9) var(--wb-len-14);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._title_15ptp_28 {\n flex: 1;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._rowControls_15ptp_36 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._reset_15ptp_43 {\n flex: none;\n padding: var(--wb-len-3) var(--wb-len-8);\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._reset_15ptp_43:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_15ptp_43:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._list_15ptp_65 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._row_15ptp_36 {\n position: relative;\n display: grid;\n grid-template-columns: 12px minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-sm);\n cursor: default;\n}\n\n._rowDragging_15ptp_85 {\n cursor: grabbing;\n}\n\n._rowBlocked_15ptp_89 {\n cursor: not-allowed;\n}\n\n._listDragging_15ptp_93 ._rowControls_15ptp_36 {\n pointer-events: none;\n}\n\n._row_15ptp_36:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._rowOff_15ptp_101 {\n opacity: 0.55;\n}\n\n._rowOff_15ptp_101:hover {\n opacity: 1;\n}\n\n._rowOver_15ptp_109::before {\n content: '';\n position: absolute;\n top: var(--wb-len-neg-3);\n left: var(--wb-len-8);\n right: var(--wb-len-8);\n height: var(--wb-len-2);\n background: var(--dsw-alias-brand-primary);\n}\n\n._ghost_15ptp_119 {\n position: fixed;\n z-index: var(--wb-z-40);\n pointer-events: none;\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: var(--wb-static-shadow-ghost);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n white-space: nowrap;\n}\n\n._grip_15ptp_134 {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: center;\n color: var(--dsw-alias-label-tertiary);\n user-select: none;\n cursor: grab;\n touch-action: none;\n}\n\n._gripDragging_15ptp_144 {\n cursor: grabbing;\n}\n\n._gripBlocked_15ptp_148 {\n cursor: not-allowed;\n}\n\n._label_15ptp_152 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._name_15ptp_159 {\n min-width: 0;\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n\n._error_15ptp_170 {\n margin: 0;\n padding: 0 var(--wb-len-14) var(--wb-len-10);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._dep_15ptp_178 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n}\n\n._group_15ptp_186 {\n padding-top: var(--wb-len-6);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._groupTitle_15ptp_191 {\n margin: 0;\n padding: var(--wb-len-2) var(--wb-len-8) 0 var(--wb-len-14);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n font-weight: 400;\n color: var(--dsw-alias-label-tertiary);\n}\n._panel_1whum_1 {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: var(--wb-z-10);\n visibility: hidden;\n}\n\n._panel_1whum_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_1whum_1[data-open] {\n visibility: visible;\n}\n\n._columns_1whum_18 {\n display: block;\n column-gap: var(--wb-len-12);\n}\n\n._cell_1whum_23 {\n display: flow-root;\n min-width: 0;\n break-inside: avoid;\n margin-bottom: var(--wb-len-12);\n}\n._root_1cmz0_1 {\n position: relative;\n flex: none;\n margin: 0 var(--wb-len-2) var(--wb-len-4);\n}\n\n._rail_1cmz0_7 {\n margin: 0 0 var(--wb-len-4);\n}\n\n._glyphBox_1cmz0_11 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n._glyph_1cmz0_11 {\n position: relative;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._glyphActive_1cmz0_30 {\n color: var(--dsw-alias-state-business-primary);\n}\n\n._triggerName_1cmz0_34 {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n font-size: var(--wb-font-row);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n._dir_1cmz0_45 {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._name_1cmz0_53 {\n flex: 0 1 auto;\n max-width: 50%;\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._triggerName_1cmz0_34 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._row_1cmz0_66 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n width: 100%;\n min-width: 0;\n}\n\n._trailing_1cmz0_74 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n margin-inline-start: auto;\n}\n\n._trailing_1cmz0_74 ._rowAction_1cmz0_84 {\n width: var(--wb-len-20);\n min-width: var(--wb-len-20);\n height: var(--wb-len-20);\n min-height: var(--wb-len-20);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n}\n\n._row_1cmz0_66 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._current_1cmz0_97 {\n flex: none;\n display: inline-flex;\n align-items: center;\n color: var(--dsw-alias-label-primary);\n}\n._dot_sosf1_1 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n._overlay_sosf1_8 {\n position: absolute;\n inset-block-start: var(--wb-len-neg-3);\n inset-inline-end: var(--wb-len-neg-3);\n}\n._tag_g9dg8_1 {\n flex: none;\n margin-inline-start: auto;\n}\n._dialog_1vye5_1 {\n width: min(var(--wb-len-420), 100%);\n}\n\n._stack_1vye5_5 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._input_1vye5_12 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-12);\n}\n\n._meta_1vye5_18 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n._dot_14w1n_1 {\n display: inline-flex;\n align-items: center;\n}\n\n._hover_14w1n_6 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._blocker_1oaj0_1 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-20) var(--wb-len-16);\n text-align: center;\n}\n\n._icon_1oaj0_10 {\n display: flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._title_1oaj0_15 {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_1oaj0_23 {\n margin: 0;\n max-width: var(--wb-len-42em);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n text-wrap: pretty;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 {\n align-items: flex-start;\n gap: var(--wb-len-6);\n padding: var(--wb-len-4) 0 var(--wb-len-2);\n text-align: left;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._title_1oaj0_15 {\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._hint_1oaj0_23 {\n max-width: 100%;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._actions_1oaj0_48 {\n margin-top: var(--wb-len-8);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._raw_1oaj0_52 {\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._actions_1oaj0_48 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-6);\n}\n\n._raw_1oaj0_52 {\n margin-top: var(--wb-len-10);\n width: 100%;\n max-width: var(--wb-len-360);\n text-align: left;\n}\n\n._notice_1oaj0_71 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: start;\n column-gap: var(--wb-len-10);\n margin: 0 0 var(--wb-len-10);\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-left: 2px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._notice_1oaj0_71._noticeFlat_1oaj0_84 {\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n\n._noticeText_1oaj0_91 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-3);\n min-width: 0;\n}\n\n._noticeTitle_1oaj0_98 {\n font-size: var(--wb-font-12-5);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._noticeHint_1oaj0_105 {\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._noticeActions_1oaj0_112 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-neg-2);\n}\n\n._failure_1oaj0_119 {\n margin: var(--wb-len-8) 0 0;\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._failureDetail_1oaj0_127 {\n display: block;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-label-tertiary);\n white-space: pre-wrap;\n}\n\n._inlineAction_1oaj0_134 {\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n._inlineAction_1oaj0_134:disabled {\n opacity: 0.6;\n cursor: default;\n}\n\n._rawText_1oaj0_146 {\n margin: var(--wb-len-6) 0 0;\n max-width: 100%;\n}\n/*$vite$:1*/";
|
|
14375
14764
|
function workbenchCss() {
|
|
14376
14765
|
return `${tokens_default}\n${palette_default}\n${scale_default}\n${sidebar_default}\n${sidebar_app_default}\n${rightbar_default}\n${chrome_default}\n${board_default}\n${motion_default}\n${COMPONENT_CSS_MARKER}`;
|
|
14377
14766
|
}
|
|
@@ -14423,7 +14812,7 @@ function mount(ctx) {
|
|
|
14423
14812
|
let disposeDictionary;
|
|
14424
14813
|
const publish = () => {
|
|
14425
14814
|
disposeDictionary?.();
|
|
14426
|
-
const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, messagesOf(units.all()));
|
|
14815
|
+
const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, [unitTitlesOf(units.manifests()), ...messagesOf(units.all())]);
|
|
14427
14816
|
for (const problem of problems) console.warn(`[dsh-workbench] 套件 ${problem.unit} 的文案没并进来(只有它少了这几句):${problem.reason}`);
|
|
14428
14817
|
disposeDictionary = ctx.locale.register(LOCALE_NS, merged);
|
|
14429
14818
|
};
|