@dsh-workbench/core 1.1.2 → 1.1.4

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.
Files changed (34) hide show
  1. package/client.js +1094 -520
  2. package/dist/client/client.body.js +1094 -520
  3. package/dist/client/index.js +946 -372
  4. package/dist/host/index.js +322 -9
  5. package/dist/types/app/layouts/market/discover-confirm.d.ts +4 -3
  6. package/dist/types/app/layouts/market/discover-detail.d.ts +1 -0
  7. package/dist/types/app/layouts/market/discover-installing.d.ts +8 -0
  8. package/dist/types/app/layouts/market/discover-rows.d.ts +4 -2
  9. package/dist/types/app/layouts/market/discover-states.d.ts +6 -0
  10. package/dist/types/app/layouts/market/discover-transport.d.ts +7 -0
  11. package/dist/types/app/layouts/market/discover-versions.d.ts +2 -1
  12. package/dist/types/app/layouts/market/market-check.d.ts +10 -0
  13. package/dist/types/app/layouts/market/market-header.d.ts +1 -3
  14. package/dist/types/app/layouts/market/use-discover.d.ts +10 -2
  15. package/dist/types/app/layouts/market/use-git-transport.d.ts +19 -0
  16. package/dist/types/app/layouts/market/use-module-versions.d.ts +4 -0
  17. package/dist/types/app/layouts/market/use-settling-modules.d.ts +1 -0
  18. package/dist/types/app/layouts/rightbar/MarketView.d.ts +3 -1
  19. package/dist/types/app/layouts/rightbar/market-freshness.d.ts +1 -0
  20. package/dist/types/app/layouts/rightbar/market-row-types.d.ts +4 -1
  21. package/dist/types/app/layouts/rightbar/market-rows.d.ts +2 -0
  22. package/dist/types/app/layouts/rightbar/market-section.d.ts +4 -2
  23. package/dist/types/app/layouts/rightbar/use-market-default.d.ts +12 -0
  24. package/dist/types/kernel/contract/market-index.d.ts +2 -2
  25. package/dist/types/modules/panels/model/market-installed.d.ts +19 -0
  26. package/dist/types/modules/panels/model/market-installed.test.d.ts +1 -0
  27. package/dist/types/modules/panels/model/market-route.d.ts +1 -0
  28. package/dist/types/shared/api/host/git-exec.d.ts +2 -0
  29. package/dist/types/shared/api/host/git-probe.d.ts +9 -0
  30. package/dist/types/shared/api/host/git-routes.d.ts +3 -0
  31. package/dist/types/shared/api/host/market-sources-store.d.ts +2 -1
  32. package/dist/types/shared/api/host/profile-dependencies.d.ts +1 -0
  33. package/dist/types/shared/hooks/market-queries.d.ts +3 -1
  34. package/package.json +3 -3
package/client.js CHANGED
@@ -788,17 +788,17 @@ window.__ModuleLoader__.load({
788
788
  //#endregion
789
789
  //#region ../shared/dist/lib/react.js
790
790
  var react$1 = require("react");
791
- var h$64 = react$1.createElement;
792
- var Fragment$22 = react$1.Fragment;
791
+ var h$67 = react$1.createElement;
792
+ var Fragment$23 = react$1.Fragment;
793
793
  var Component = react$1.Component;
794
794
  react$1.createContext;
795
795
  react$1.useContext;
796
- var useState$36 = react$1.useState;
797
- var useEffect$28 = react$1.useEffect;
796
+ var useState$40 = react$1.useState;
797
+ var useEffect$30 = react$1.useEffect;
798
798
  react$1.useLayoutEffect;
799
- var useMemo$9 = react$1.useMemo;
799
+ var useMemo$10 = react$1.useMemo;
800
800
  react$1.useCallback;
801
- var useRef$22 = react$1.useRef;
801
+ var useRef$24 = react$1.useRef;
802
802
  react$1.useSyncExternalStore;
803
803
  //#endregion
804
804
  //#region ../shared/dist/components/Activity.js
@@ -809,7 +809,7 @@ window.__ModuleLoader__.load({
809
809
  * @returns 一个 div。
810
810
  */
811
811
  function ActivityBlock({ head, children }) {
812
- return h$64("div", { className: "wb-activityBlock" }, head === void 0 ? null : h$64("div", { className: "wb-activityBlockHead" }, head), children);
812
+ return h$67("div", { className: "wb-activityBlock" }, head === void 0 ? null : h$67("div", { className: "wb-activityBlockHead" }, head), children);
813
813
  }
814
814
  /**
815
815
  * 一条活动:状态点 + 正文 + 时间,行尾可挂动作;时间一律用它,别自己拼。
@@ -820,7 +820,7 @@ window.__ModuleLoader__.load({
820
820
  * @returns 一行。
821
821
  */
822
822
  function ActivityLine({ dot, text, at, actions }) {
823
- return h$64("div", { className: "wb-activityLine" }, dot, h$64("span", { className: "wb-activityLineText" }, text), at === void 0 ? null : h$64("span", { className: "wb-activityLineAt" }, at), actions === void 0 ? null : h$64("span", { className: "wb-activityLineActions" }, actions));
823
+ return h$67("div", { className: "wb-activityLine" }, dot, h$67("span", { className: "wb-activityLineText" }, text), at === void 0 ? null : h$67("span", { className: "wb-activityLineAt" }, at), actions === void 0 ? null : h$67("span", { className: "wb-activityLineActions" }, actions));
824
824
  }
825
825
  /**
826
826
  * 活动行尾那颗动作:给 `href` 就是外链,否则是图标钮并带上 tooltip。
@@ -834,7 +834,7 @@ window.__ModuleLoader__.load({
834
834
  */
835
835
  function ActivityAction({ label, hint, icon, href, onClick, failed }) {
836
836
  const tip = hint ?? label;
837
- if (href !== void 0) return h$64("a", {
837
+ if (href !== void 0) return h$67("a", {
838
838
  className: "wb-iconButton",
839
839
  href,
840
840
  target: "_blank",
@@ -842,13 +842,13 @@ window.__ModuleLoader__.load({
842
842
  title: tip,
843
843
  "aria-label": label
844
844
  }, icon);
845
- return h$64(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
845
+ return h$67(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
846
846
  side: "bottom",
847
847
  align: "end",
848
848
  gap: 6,
849
849
  portal: true,
850
850
  label: tip
851
- }, h$64(_deepseek_ai_dsh_client_ui_primitives.Button, {
851
+ }, h$67(_deepseek_ai_dsh_client_ui_primitives.Button, {
852
852
  type: "button",
853
853
  variant: "ghost",
854
854
  size: "sm",
@@ -870,10 +870,10 @@ window.__ModuleLoader__.load({
870
870
  */
871
871
  function Note({ tone = "muted", as, role, children }) {
872
872
  const className = tone === "problem" ? "wb-problem" : "wb-note";
873
- return as === "span" ? h$64("span", {
873
+ return as === "span" ? h$67("span", {
874
874
  className,
875
875
  role
876
- }, children) : h$64("p", {
876
+ }, children) : h$67("p", {
877
877
  className,
878
878
  role
879
879
  }, children);
@@ -917,10 +917,10 @@ window.__ModuleLoader__.load({
917
917
  render() {
918
918
  const { reason } = this.state;
919
919
  if (reason === null) return this.props.children;
920
- return h$64(Note, { tone: "problem" }, h$64("span", null, this.props.t("panels.cardBroken", {
920
+ return h$67(Note, { tone: "problem" }, h$67("span", null, this.props.t("panels.cardBroken", {
921
921
  unit: this.props.unit,
922
922
  reason
923
- })), " ", h$64(_deepseek_ai_dsh_client_ui_primitives.Button, {
923
+ })), " ", h$67(_deepseek_ai_dsh_client_ui_primitives.Button, {
924
924
  type: "button",
925
925
  variant: "outline",
926
926
  size: "sm",
@@ -970,19 +970,19 @@ window.__ModuleLoader__.load({
970
970
  const owner = (props.units ?? []).find((face) => face.approval?.tools.includes(input.tool) === true);
971
971
  if (owner?.approval !== void 0) {
972
972
  const Render = owner.approval.render;
973
- return h$64(CardBoundary, {
973
+ return h$67(CardBoundary, {
974
974
  unit: owner.unit,
975
975
  resetKey: props.callId ?? "",
976
976
  t
977
- }, h$64(Render, {
977
+ }, h$67(Render, {
978
978
  input,
979
979
  t
980
980
  }));
981
981
  }
982
982
  const shell = props.renderShell?.(input, t);
983
- if (shell !== void 0 && shell !== null) return h$64(Fragment$22, null, shell);
983
+ if (shell !== void 0 && shell !== null) return h$67(Fragment$23, null, shell);
984
984
  if (command === "") return null;
985
- return h$64(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
985
+ return h$67(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
986
986
  code: command,
987
987
  className: "wb-approvalCommand",
988
988
  copyLabel: t("blocker.copy"),
@@ -1000,10 +1000,10 @@ window.__ModuleLoader__.load({
1000
1000
  * @returns 一个 div。
1001
1001
  */
1002
1002
  function ApprovalPlan({ rows, hint, warn, children }) {
1003
- return h$64("div", { className: "wb-approvalPlan" }, hint === void 0 ? null : h$64("p", { className: "wb-approvalHint" }, hint), h$64("dl", { className: "wb-approvalRows" }, rows.map((row, index) => h$64("div", {
1003
+ return h$67("div", { className: "wb-approvalPlan" }, hint === void 0 ? null : h$67("p", { className: "wb-approvalHint" }, hint), h$67("dl", { className: "wb-approvalRows" }, rows.map((row, index) => h$67("div", {
1004
1004
  className: "wb-approvalRow",
1005
1005
  key: String(index)
1006
- }, h$64("dt", { className: "wb-approvalLabel" }, row.label), h$64("dd", { className: "wb-approvalValue" }, row.value)))), children, warn === void 0 ? null : h$64("p", { className: "wb-approvalWarn" }, warn));
1006
+ }, h$67("dt", { className: "wb-approvalLabel" }, row.label), h$67("dd", { className: "wb-approvalValue" }, row.value)))), children, warn === void 0 ? null : h$67("p", { className: "wb-approvalWarn" }, warn));
1007
1007
  }
1008
1008
  //#endregion
1009
1009
  //#region ../shared/dist/components/CardHead.js
@@ -1020,47 +1020,47 @@ window.__ModuleLoader__.load({
1020
1020
  function CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle }) {
1021
1021
  const refreshLabel = refreshing ? t("rightbar.refreshing") : t("rightbar.refresh");
1022
1022
  const platformLabel = platformTitle ?? platform ?? t("rightbar.openPlatform");
1023
- return h$64("header", { className: "wb-cardHead" }, h$64("h2", { className: "wb-cardTitle" }, title), meta === void 0 ? null : h$64("span", { className: "wb-cardMeta" }, meta), platformHref === void 0 ? null : h$64(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1023
+ return h$67("header", { className: "wb-cardHead" }, h$67("h2", { className: "wb-cardTitle" }, title), meta === void 0 ? null : h$67("span", { className: "wb-cardMeta" }, meta), platformHref === void 0 ? null : h$67(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1024
1024
  side: "bottom",
1025
1025
  align: "end",
1026
1026
  gap: 6,
1027
1027
  portal: true,
1028
1028
  label: platformLabel
1029
- }, h$64("a", {
1029
+ }, h$67("a", {
1030
1030
  className: "wb-iconButton wb-cardOpen",
1031
1031
  href: platformHref,
1032
1032
  target: "_blank",
1033
1033
  rel: "noreferrer noopener",
1034
1034
  "aria-label": platform ?? platformLabel
1035
- }, h$64(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 14 }))), h$64(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1035
+ }, h$67(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 14 }))), h$67(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1036
1036
  side: "bottom",
1037
1037
  align: "end",
1038
1038
  gap: 6,
1039
1039
  portal: true,
1040
1040
  label: refreshLabel
1041
- }, h$64(_deepseek_ai_dsh_client_ui_primitives.Button, {
1041
+ }, h$67(_deepseek_ai_dsh_client_ui_primitives.Button, {
1042
1042
  type: "button",
1043
1043
  size: "sm",
1044
1044
  variant: "ghost",
1045
1045
  className: `wb-cardRefresh${refreshing ? " wb-spinning" : ""}`,
1046
1046
  "aria-label": refreshLabel,
1047
1047
  disabled: refreshing,
1048
- icon: h$64(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, { size: 14 }),
1048
+ icon: h$67(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, { size: 14 }),
1049
1049
  onClick: onRefresh
1050
- })), gear === void 0 || onToggleGear === void 0 ? null : h$64(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1050
+ })), gear === void 0 || onToggleGear === void 0 ? null : h$67(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1051
1051
  side: "bottom",
1052
1052
  align: "end",
1053
1053
  gap: 6,
1054
1054
  portal: true,
1055
1055
  label: gear
1056
- }, h$64(_deepseek_ai_dsh_client_ui_primitives.Button, {
1056
+ }, h$67(_deepseek_ai_dsh_client_ui_primitives.Button, {
1057
1057
  type: "button",
1058
1058
  size: "sm",
1059
1059
  variant: "ghost",
1060
1060
  className: `wb-cardGear${gearOpen === true ? " wb-iconButtonActive" : ""}`,
1061
1061
  "aria-label": gear,
1062
1062
  "aria-expanded": gearOpen === true,
1063
- icon: h$64(_deepseek_ai_dsh_client_ui_primitives.IconSettingsOutlineRegular, { size: 15 }),
1063
+ icon: h$67(_deepseek_ai_dsh_client_ui_primitives.IconSettingsOutlineRegular, { size: 15 }),
1064
1064
  onClick: onToggleGear
1065
1065
  })));
1066
1066
  }
@@ -1077,13 +1077,13 @@ window.__ModuleLoader__.load({
1077
1077
  * @returns 一个 `<section>`。
1078
1078
  */
1079
1079
  function Card({ t, title, refreshing, onRefresh, meta, head, children }) {
1080
- return h$64("section", { className: "wb-card" }, head === void 0 ? h$64(CardHead, {
1080
+ return h$67("section", { className: "wb-card" }, head === void 0 ? h$67(CardHead, {
1081
1081
  t,
1082
1082
  title,
1083
1083
  refreshing,
1084
1084
  onRefresh,
1085
1085
  meta
1086
- }) : head, h$64("div", { className: "wb-cardBody" }, children));
1086
+ }) : head, h$67("div", { className: "wb-cardBody" }, children));
1087
1087
  }
1088
1088
  var CardAnchor_module_default = { anchor: "_anchor_yq4s2_1" };
1089
1089
  //#endregion
@@ -1103,7 +1103,7 @@ window.__ModuleLoader__.load({
1103
1103
  * @returns 带 id 的占位 div。
1104
1104
  */
1105
1105
  function CardAnchor({ unit, children }) {
1106
- return h$64("div", {
1106
+ return h$67("div", {
1107
1107
  id: cardIdOf(unit),
1108
1108
  className: CardAnchor_module_default.anchor
1109
1109
  }, children);
@@ -1117,13 +1117,13 @@ window.__ModuleLoader__.load({
1117
1117
  * @returns 一枚 `StateDot state="ongoing"`,自身不带文字。
1118
1118
  */
1119
1119
  function Spinner({ size = 14, label }) {
1120
- return h$64("span", {
1120
+ return h$67("span", {
1121
1121
  className: "wb-spinner",
1122
1122
  ...label === void 0 ? { "aria-hidden": true } : {
1123
1123
  role: "status",
1124
1124
  "aria-label": label
1125
1125
  }
1126
- }, h$64(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
1126
+ }, h$67(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
1127
1127
  state: "ongoing",
1128
1128
  size
1129
1129
  }));
@@ -1131,24 +1131,24 @@ window.__ModuleLoader__.load({
1131
1131
  //#endregion
1132
1132
  //#region ../shared/dist/components/ChoiceGroup.js
1133
1133
  function ChoiceMenu(input) {
1134
- const body = input.loading ? h$64("span", {
1134
+ const body = input.loading ? h$67("span", {
1135
1135
  className: "wb-choiceLoading",
1136
1136
  role: "status"
1137
- }, h$64(Spinner, { size: 14 }), h$64("span", { className: "wb-choiceLoadingText" }, input.loadingText ?? "…")) : input.options.length === 0 ? input.emptyText === void 0 ? null : h$64("span", { className: "wb-choiceEmpty" }, input.emptyText) : input.options.map((option) => {
1137
+ }, h$67(Spinner, { size: 14 }), h$67("span", { className: "wb-choiceLoadingText" }, input.loadingText ?? "…")) : input.options.length === 0 ? input.emptyText === void 0 ? null : h$67("span", { className: "wb-choiceEmpty" }, input.emptyText) : input.options.map((option) => {
1138
1138
  const row = input.rowOf(option.value);
1139
- return h$64(Fragment$22, { key: option.value }, h$64("label", { className: `wb-choiceOption${row.checked ? " wb-choiceOptionOn" : ""}` }, h$64("input", {
1139
+ return h$67(Fragment$23, { key: option.value }, h$67("label", { className: `wb-choiceOption${row.checked ? " wb-choiceOptionOn" : ""}` }, h$67("input", {
1140
1140
  className: input.multi ? "wb-checkbox" : "wb-radio",
1141
1141
  type: input.multi ? "checkbox" : "radio",
1142
1142
  name: input.name,
1143
1143
  checked: row.checked,
1144
1144
  disabled: input.disabled,
1145
1145
  onChange: row.onSelect
1146
- }), input.multi ? h$64("span", {
1146
+ }), input.multi ? h$67("span", {
1147
1147
  className: "wb-checkboxBox",
1148
1148
  "aria-hidden": "true"
1149
- }, row.checked ? h$64(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutlineRegular, { size: 12 }) : null) : null, h$64("span", { className: "wb-choiceLabel" }, h$64("span", { className: "wb-choiceLabelText" }, option.label), option.description === void 0 ? null : h$64("span", { className: "wb-choiceDescription" }, option.description))));
1149
+ }, row.checked ? h$67(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutlineRegular, { size: 12 }) : null) : null, h$67("span", { className: "wb-choiceLabel" }, h$67("span", { className: "wb-choiceLabelText" }, option.label), option.description === void 0 ? null : h$67("span", { className: "wb-choiceDescription" }, option.description))));
1150
1150
  });
1151
- return h$64("div", {
1151
+ return h$67("div", {
1152
1152
  className: "wb-choiceMenu",
1153
1153
  "data-variant": input.variant,
1154
1154
  role: input.multi ? "group" : "radiogroup",
@@ -1182,7 +1182,7 @@ window.__ModuleLoader__.load({
1182
1182
  if (props.multi === true) {
1183
1183
  const values = props.values;
1184
1184
  const onChange = props.onChange;
1185
- return h$64(ChoiceMenu, {
1185
+ return h$67(ChoiceMenu, {
1186
1186
  label: common.label,
1187
1187
  name: common.name,
1188
1188
  options: common.options,
@@ -1202,7 +1202,7 @@ window.__ModuleLoader__.load({
1202
1202
  }
1203
1203
  const value = props.value;
1204
1204
  const onChange = props.onChange;
1205
- return h$64(ChoiceMenu, {
1205
+ return h$67(ChoiceMenu, {
1206
1206
  label: common.label,
1207
1207
  name: common.name,
1208
1208
  options: common.options,
@@ -1255,17 +1255,17 @@ window.__ModuleLoader__.load({
1255
1255
  function FormActions({ actions }) {
1256
1256
  if (actions.length === 0) return null;
1257
1257
  reportExtraPrimaries(actions);
1258
- return h$64("div", { className: "wb-formActions" }, ordered(actions).map((action) => {
1258
+ return h$67("div", { className: "wb-formActions" }, ordered(actions).map((action) => {
1259
1259
  const kind = kindOf(action);
1260
1260
  const busy = action.busy === true;
1261
- return h$64(_deepseek_ai_dsh_client_ui_primitives.Button, {
1261
+ return h$67(_deepseek_ai_dsh_client_ui_primitives.Button, {
1262
1262
  key: action.key,
1263
1263
  type: "button",
1264
1264
  size: "sm",
1265
1265
  variant: variantOf(kind),
1266
1266
  className: kind === "danger" ? "wb-formActionDanger" : void 0,
1267
1267
  disabled: busy || action.disabled === true,
1268
- icon: busy ? h$64(Spinner, { size: 12 }) : void 0,
1268
+ icon: busy ? h$67(Spinner, { size: 12 }) : void 0,
1269
1269
  onClick: action.onClick
1270
1270
  }, action.label);
1271
1271
  }));
@@ -1278,7 +1278,7 @@ window.__ModuleLoader__.load({
1278
1278
  * @returns 竖排的 div。
1279
1279
  */
1280
1280
  function Rows({ children }) {
1281
- return h$64("div", { className: "wb-rows" }, children);
1281
+ return h$67("div", { className: "wb-rows" }, children);
1282
1282
  }
1283
1283
  /**
1284
1284
  * 一行键值:左边名字、右边值;要成对说明一项数据就用它,别自己写两栏。
@@ -1287,7 +1287,7 @@ window.__ModuleLoader__.load({
1287
1287
  * @returns 一行两格。
1288
1288
  */
1289
1289
  function Row({ label, value }) {
1290
- return h$64("div", { className: "wb-row" }, h$64("span", { className: "wb-rowKey" }, label), h$64("span", { className: "wb-rowValue" }, value));
1290
+ return h$67("div", { className: "wb-row" }, h$67("span", { className: "wb-rowKey" }, label), h$67("span", { className: "wb-rowValue" }, value));
1291
1291
  }
1292
1292
  //#endregion
1293
1293
  //#region ../shared/dist/components/ConfirmBar.js
@@ -1304,19 +1304,19 @@ window.__ModuleLoader__.load({
1304
1304
  * @returns 一个 `role="group"` 的条;`actions` 空数组时最后那一块不渲染。
1305
1305
  */
1306
1306
  function ConfirmBar({ title, hint, rows, actions, problem, busy, label }) {
1307
- return h$64("div", {
1307
+ return h$67("div", {
1308
1308
  className: "wb-confirmBar",
1309
1309
  role: "group",
1310
1310
  "aria-label": label ?? (typeof title === "string" ? title : void 0),
1311
1311
  "aria-busy": busy
1312
- }, h$64("p", { className: "wb-confirmBarTitle" }, title), hint === void 0 ? null : h$64("p", { className: "wb-confirmBarHint" }, hint), rows === void 0 || rows.length === 0 ? null : h$64(Rows, null, rows.map((row) => h$64(Row, {
1312
+ }, h$67("p", { className: "wb-confirmBarTitle" }, title), hint === void 0 ? null : h$67("p", { className: "wb-confirmBarHint" }, hint), rows === void 0 || rows.length === 0 ? null : h$67(Rows, null, rows.map((row) => h$67(Row, {
1313
1313
  key: row.key,
1314
1314
  label: row.label,
1315
1315
  value: row.value
1316
- }))), problem === void 0 ? null : h$64(Note, {
1316
+ }))), problem === void 0 ? null : h$67(Note, {
1317
1317
  tone: "problem",
1318
1318
  role: "alert"
1319
- }, problem), h$64(FormActions, { actions }));
1319
+ }, problem), h$67(FormActions, { actions }));
1320
1320
  }
1321
1321
  //#endregion
1322
1322
  //#region ../shared/dist/components/Field.js
@@ -1328,7 +1328,7 @@ window.__ModuleLoader__.load({
1328
1328
  * @returns 一个 `<label>`,点标签会聚焦里面的控件。
1329
1329
  */
1330
1330
  function Field({ label, hint, children }) {
1331
- return h$64("label", { className: "wb-field" }, h$64("span", { className: "wb-fieldLabel" }, label), children, hint === void 0 ? null : h$64("span", { className: "wb-fieldHint" }, hint));
1331
+ return h$67("label", { className: "wb-field" }, h$67("span", { className: "wb-fieldLabel" }, label), children, hint === void 0 ? null : h$67("span", { className: "wb-fieldHint" }, hint));
1332
1332
  }
1333
1333
  //#endregion
1334
1334
  //#region ../shared/dist/components/FormRows.js
@@ -1338,7 +1338,7 @@ window.__ModuleLoader__.load({
1338
1338
  * @returns 竖排的 div。
1339
1339
  */
1340
1340
  function FormRows({ children }) {
1341
- return h$64("div", { className: "wb-formRows" }, children);
1341
+ return h$67("div", { className: "wb-formRows" }, children);
1342
1342
  }
1343
1343
  /**
1344
1344
  * 表单一行:左边标签、右边控件,提示与错误占控件下面那一格。
@@ -1351,14 +1351,14 @@ window.__ModuleLoader__.load({
1351
1351
  * @returns 一个 `<div>`:里面的 `<label>` 只包标签文字,不包控件、提示与整行的空白。
1352
1352
  */
1353
1353
  function FormRow({ label, htmlFor, hint, problem, layout = "inline", children }) {
1354
- return h$64("div", {
1354
+ return h$67("div", {
1355
1355
  className: "wb-formRow",
1356
1356
  "data-layout": layout,
1357
1357
  "data-wb-problem": problem === void 0 ? void 0 : ""
1358
- }, h$64("label", {
1358
+ }, h$67("label", {
1359
1359
  className: "wb-formLabel",
1360
1360
  htmlFor
1361
- }, label), h$64("span", { className: "wb-formControl" }, children), problem === void 0 ? hint === void 0 ? null : h$64("span", { className: "wb-formHint" }, hint) : h$64("span", { className: "wb-formProblem" }, problem));
1361
+ }, label), h$67("span", { className: "wb-formControl" }, children), problem === void 0 ? hint === void 0 ? null : h$67("span", { className: "wb-formHint" }, hint) : h$67("span", { className: "wb-formProblem" }, problem));
1362
1362
  }
1363
1363
  //#endregion
1364
1364
  //#region ../shared/dist/components/FormNodes.js
@@ -1505,7 +1505,7 @@ window.__ModuleLoader__.load({
1505
1505
  * @returns `FormRow` 组成的数组;没有可画的格子时给空数组。
1506
1506
  */
1507
1507
  function formRowsOf(args) {
1508
- return args.fields.map((field) => h$64(FormRow, {
1508
+ return args.fields.map((field) => h$67(FormRow, {
1509
1509
  key: field.key,
1510
1510
  label: field.label,
1511
1511
  htmlFor: controlIdOf(field.key),
@@ -1581,13 +1581,13 @@ window.__ModuleLoader__.load({
1581
1581
  */
1582
1582
  function Form(props) {
1583
1583
  const { fields, onSubmit, submit, cancel, extra, busy = false, disabled = false, problem } = props;
1584
- const [done, setDone] = useState$36(false);
1585
- const [reveal, setReveal] = useState$36(0);
1586
- const rootRef = useRef$22(null);
1584
+ const [done, setDone] = useState$40(false);
1585
+ const [reveal, setReveal] = useState$40(0);
1586
+ const rootRef = useRef$24(null);
1587
1587
  const shown = visibleFieldsOf(fields);
1588
1588
  const problems = formProblemsOf(shown, done);
1589
1589
  reportDuplicateKeys(shown);
1590
- useEffect$28(() => {
1590
+ useEffect$30(() => {
1591
1591
  if (reveal === 0) return;
1592
1592
  const root = rootRef.current;
1593
1593
  if (root !== null) revealFirstProblem(root);
@@ -1602,7 +1602,7 @@ window.__ModuleLoader__.load({
1602
1602
  }
1603
1603
  onSubmit(outcome.values);
1604
1604
  };
1605
- return h$64("form", {
1605
+ return h$67("form", {
1606
1606
  className: "wb-form",
1607
1607
  ref: rootRef,
1608
1608
  noValidate: true,
@@ -1610,15 +1610,15 @@ window.__ModuleLoader__.load({
1610
1610
  event.preventDefault();
1611
1611
  submitForm();
1612
1612
  }
1613
- }, h$64(FormRows, null, formRowsOf({
1613
+ }, h$67(FormRows, null, formRowsOf({
1614
1614
  fields: shown,
1615
1615
  problems,
1616
1616
  showProblem: done,
1617
1617
  busy
1618
- })), problem === void 0 ? null : h$64(Note, {
1618
+ })), problem === void 0 ? null : h$67(Note, {
1619
1619
  tone: "problem",
1620
1620
  role: "alert"
1621
- }, problem), h$64(FormActions, { actions: formActionsOf({
1621
+ }, problem), h$67(FormActions, { actions: formActionsOf({
1622
1622
  extra,
1623
1623
  cancel,
1624
1624
  submit,
@@ -1639,7 +1639,7 @@ window.__ModuleLoader__.load({
1639
1639
  * @returns 一个 `<a>`。
1640
1640
  */
1641
1641
  function Link({ href, children, title, external = true, className }) {
1642
- return h$64("a", {
1642
+ return h$67("a", {
1643
1643
  className: className === void 0 ? "wb-link" : `wb-link ${className}`,
1644
1644
  href,
1645
1645
  ...title === void 0 ? {} : { title },
@@ -1647,7 +1647,7 @@ window.__ModuleLoader__.load({
1647
1647
  target: "_blank",
1648
1648
  rel: "noopener noreferrer"
1649
1649
  } : {}
1650
- }, children, external ? h$64(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 12 }) : null);
1650
+ }, children, external ? h$67(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 12 }) : null);
1651
1651
  }
1652
1652
  //#endregion
1653
1653
  //#region ../shared/dist/contract/long-task.js
@@ -1739,7 +1739,7 @@ window.__ModuleLoader__.load({
1739
1739
  //#endregion
1740
1740
  //#region ../shared/dist/components/LongTaskRow.js
1741
1741
  function RowLink({ href, text }) {
1742
- return h$64(Link, {
1742
+ return h$67(Link, {
1743
1743
  href,
1744
1744
  className: "wb-longTaskLink"
1745
1745
  }, text);
@@ -1759,9 +1759,9 @@ window.__ModuleLoader__.load({
1759
1759
  * @returns 一行长任务。
1760
1760
  */
1761
1761
  function LongTaskRow(props) {
1762
- const [stepsOpen, setStepsOpen] = useState$36(false);
1763
- const [rawOpen, setRawOpen] = useState$36(false);
1764
- const [armed, setArmed] = useState$36(false);
1762
+ const [stepsOpen, setStepsOpen] = useState$40(false);
1763
+ const [rawOpen, setRawOpen] = useState$40(false);
1764
+ const [armed, setArmed] = useState$40(false);
1765
1765
  const failed = props.status === "failed";
1766
1766
  const problem = props.problem ?? "";
1767
1767
  const raw = (props.raw ?? "").trim();
@@ -1769,7 +1769,7 @@ window.__ModuleLoader__.load({
1769
1769
  const stop = props.stop;
1770
1770
  const busy = stop?.busy === true;
1771
1771
  const stopWhy = stop?.failed ?? "";
1772
- useEffect$28(() => {
1772
+ useEffect$30(() => {
1773
1773
  if (!armed) return void 0;
1774
1774
  const timer = setTimeout(() => setArmed(false), LONG_TASK_STOP_ARM_MS);
1775
1775
  return () => clearTimeout(timer);
@@ -1788,14 +1788,14 @@ window.__ModuleLoader__.load({
1788
1788
  setArmed(false);
1789
1789
  stop.onStop();
1790
1790
  };
1791
- return h$64("div", { className: "wb-longTask" }, h$64("p", { className: "wb-longTaskHead" }, h$64(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
1791
+ return h$67("div", { className: "wb-longTask" }, h$67("p", { className: "wb-longTaskHead" }, h$67(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
1792
1792
  state: longTaskDot(props.status),
1793
1793
  size: 10
1794
- }), h$64("span", { className: "wb-longTaskHeadline" }, props.headline), (props.links ?? []).map((link) => h$64(RowLink, {
1794
+ }), h$67("span", { className: "wb-longTaskHeadline" }, props.headline), (props.links ?? []).map((link) => h$67(RowLink, {
1795
1795
  href: link.href,
1796
1796
  key: `${link.text}@${link.href}`,
1797
1797
  text: link.text
1798
- })), stop === void 0 ? null : h$64("button", {
1798
+ })), stop === void 0 ? null : h$67("button", {
1799
1799
  type: "button",
1800
1800
  className: `wb-longTaskStop${armed ? " wb-longTaskStopArmed" : ""}`,
1801
1801
  "data-stop-state": longTaskStopStage({
@@ -1806,31 +1806,31 @@ window.__ModuleLoader__.load({
1806
1806
  disabled: busy,
1807
1807
  onClick: onStopPress,
1808
1808
  onBlur: () => setArmed(false)
1809
- }, h$64(_deepseek_ai_dsh_client_ui_primitives.IconStopFillRegular, { size: 12 }), armed ? h$64("span", { className: "wb-longTaskStopLabel" }, stop.askLabel) : null)), problem === "" ? null : h$64("p", { className: "wb-longTaskProblem" }, problem), stopWhy === "" ? null : h$64("p", { className: "wb-longTaskStopWhy" }, stopWhy), !failed ? null : h$64(Fragment$22, null, steps.length === 0 || props.stepsTitle === void 0 ? null : h$64(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
1809
+ }, h$67(_deepseek_ai_dsh_client_ui_primitives.IconStopFillRegular, { size: 12 }), armed ? h$67("span", { className: "wb-longTaskStopLabel" }, stop.askLabel) : null)), problem === "" ? null : h$67("p", { className: "wb-longTaskProblem" }, problem), stopWhy === "" ? null : h$67("p", { className: "wb-longTaskStopWhy" }, stopWhy), !failed ? null : h$67(Fragment$23, null, steps.length === 0 || props.stepsTitle === void 0 ? null : h$67(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
1810
1810
  className: "wb-longTaskDump",
1811
- icon: h$64(_deepseek_ai_dsh_client_ui_primitives.IconFlatListOutlineRegular, { size: 14 }),
1811
+ icon: h$67(_deepseek_ai_dsh_client_ui_primitives.IconFlatListOutlineRegular, { size: 14 }),
1812
1812
  title: props.stepsTitle,
1813
1813
  open: stepsOpen,
1814
1814
  expandable: true,
1815
1815
  expandOnRowClick: true,
1816
1816
  previewChevron: true,
1817
1817
  onToggle: () => setStepsOpen(!stepsOpen)
1818
- }, h$64(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
1818
+ }, h$67(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
1819
1819
  code: steps.join("\n"),
1820
1820
  className: "wb-longTaskDump",
1821
1821
  showHeader: props.copyLabel !== void 0,
1822
1822
  copyLabel: props.copyLabel ?? "",
1823
1823
  copiedLabel: props.copiedLabel ?? ""
1824
- })), raw === "" || props.rawTitle === void 0 ? null : h$64(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
1824
+ })), raw === "" || props.rawTitle === void 0 ? null : h$67(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
1825
1825
  className: "wb-longTaskDump",
1826
- icon: h$64(_deepseek_ai_dsh_client_ui_primitives.IconCodeOutlineRegular, { size: 14 }),
1826
+ icon: h$67(_deepseek_ai_dsh_client_ui_primitives.IconCodeOutlineRegular, { size: 14 }),
1827
1827
  title: props.rawTitle,
1828
1828
  open: rawOpen,
1829
1829
  expandable: true,
1830
1830
  expandOnRowClick: true,
1831
1831
  previewChevron: true,
1832
1832
  onToggle: () => setRawOpen(!rawOpen)
1833
- }, h$64(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
1833
+ }, h$67(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
1834
1834
  code: raw,
1835
1835
  className: "wb-longTaskDump",
1836
1836
  showHeader: props.copyLabel !== void 0,
@@ -1846,13 +1846,13 @@ window.__ModuleLoader__.load({
1846
1846
  * @returns 一叠占位条。
1847
1847
  */
1848
1848
  function SkeletonRows({ rows = 4 }) {
1849
- return h$64("div", {
1849
+ return h$67("div", {
1850
1850
  className: "wb-skeleton",
1851
1851
  "aria-hidden": "true"
1852
- }, Array.from({ length: rows }, (_, index) => h$64("span", {
1852
+ }, Array.from({ length: rows }, (_, index) => h$67("span", {
1853
1853
  key: index,
1854
1854
  className: "wb-skeletonRow"
1855
- }, h$64("span", { className: "wb-skeletonBar wb-skeletonBarTitle" }), h$64("span", { className: "wb-skeletonBar wb-skeletonBarMeta" }))));
1855
+ }, h$67("span", { className: "wb-skeletonBar wb-skeletonBarTitle" }), h$67("span", { className: "wb-skeletonBar wb-skeletonBarMeta" }))));
1856
1856
  }
1857
1857
  /**
1858
1858
  * 居中一屏:要他先选一个 / 正在读 / 读不到时用它占住卡片版面。
@@ -1865,13 +1865,13 @@ window.__ModuleLoader__.load({
1865
1865
  * @returns 一个 `role="status"` 的居中块。
1866
1866
  */
1867
1867
  function CenteredState({ icon, title, hint, detail, action, compact = false }) {
1868
- return h$64("div", {
1868
+ return h$67("div", {
1869
1869
  className: compact ? "wb-centered wb-centeredCompact" : "wb-centered",
1870
1870
  role: "status"
1871
- }, icon === null ? null : h$64("span", {
1871
+ }, icon === null ? null : h$67("span", {
1872
1872
  className: "wb-centeredHero",
1873
1873
  "aria-hidden": "true"
1874
- }, icon), h$64("div", { className: "wb-centeredTitle" }, title), hint === void 0 ? null : h$64("div", { className: "wb-centeredHint" }, hint), detail === void 0 ? null : h$64("div", { className: "wb-centeredDetail" }, detail), action === void 0 ? null : h$64("div", { className: "wb-centeredAction" }, action));
1874
+ }, icon), h$67("div", { className: "wb-centeredTitle" }, title), hint === void 0 ? null : h$67("div", { className: "wb-centeredHint" }, hint), detail === void 0 ? null : h$67("div", { className: "wb-centeredDetail" }, detail), action === void 0 ? null : h$67("div", { className: "wb-centeredAction" }, action));
1875
1875
  }
1876
1876
  /**
1877
1877
  * 就绪但空:它只是 `CenteredState` 的简写,标题就是那句空态文案。
@@ -1881,7 +1881,7 @@ window.__ModuleLoader__.load({
1881
1881
  * @returns 一个居中块。
1882
1882
  */
1883
1883
  function EmptyState({ text, icon = null, compact = false }) {
1884
- return h$64(CenteredState, {
1884
+ return h$67(CenteredState, {
1885
1885
  icon,
1886
1886
  title: text,
1887
1887
  compact
@@ -1899,7 +1899,7 @@ window.__ModuleLoader__.load({
1899
1899
  * @returns 一组按钮。
1900
1900
  */
1901
1901
  function SaveBar({ busy, disabled, labels, onCancel, onSave }) {
1902
- return h$64(FormActions, { actions: [{
1902
+ return h$67(FormActions, { actions: [{
1903
1903
  key: "cancel",
1904
1904
  label: labels.cancel,
1905
1905
  kind: "default",
@@ -1932,7 +1932,7 @@ window.__ModuleLoader__.load({
1932
1932
  * @returns 一颗 `<button>`。
1933
1933
  */
1934
1934
  function selectTriggerNode(args) {
1935
- return h$64("button", {
1935
+ return h$67("button", {
1936
1936
  type: "button",
1937
1937
  id: args.id,
1938
1938
  className: args.className,
@@ -1943,7 +1943,7 @@ window.__ModuleLoader__.load({
1943
1943
  "aria-label": args.ariaLabel,
1944
1944
  title: args.title,
1945
1945
  onClick: args.onOpen
1946
- }, args.iconOnly ? h$64("span", { className: "wb-selectIcon" }, args.icon) : h$64(Fragment$22, null, args.icon === void 0 ? null : h$64("span", { className: "wb-selectIcon" }, args.icon), h$64("span", { className: "wb-selectValue" }, args.value), h$64("span", { className: "wb-selectChevron" }, h$64(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, { size: 14 }))));
1946
+ }, args.iconOnly ? h$67("span", { className: "wb-selectIcon" }, args.icon) : h$67(Fragment$23, null, args.icon === void 0 ? null : h$67("span", { className: "wb-selectIcon" }, args.icon), h$67("span", { className: "wb-selectValue" }, args.value), h$67("span", { className: "wb-selectChevron" }, h$67(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, { size: 14 }))));
1947
1947
  }
1948
1948
  /**
1949
1949
  * 名单还没读到时的触发器:禁用 + `aria-busy` 的按钮,`SelectField` 在 `loading` 那档画它。
@@ -1955,7 +1955,7 @@ window.__ModuleLoader__.load({
1955
1955
  * @returns 一颗禁用且 `aria-busy` 的按钮。
1956
1956
  */
1957
1957
  function selectLoadingNode(args) {
1958
- return h$64("button", {
1958
+ return h$67("button", {
1959
1959
  type: "button",
1960
1960
  id: args.id,
1961
1961
  className: `${args.className} wb-selectLoading`,
@@ -1964,7 +1964,7 @@ window.__ModuleLoader__.load({
1964
1964
  "aria-invalid": args.invalid || void 0,
1965
1965
  "aria-label": args.ariaLabel,
1966
1966
  title: args.loadingText
1967
- }, h$64("span", { className: "wb-selectValue" }, h$64(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, { active: true }, args.loadingText ?? "…")), h$64("span", { className: "wb-selectChevron" }, h$64(Spinner, { size: 14 })));
1967
+ }, h$67("span", { className: "wb-selectValue" }, h$67(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, { active: true }, args.loadingText ?? "…")), h$67("span", { className: "wb-selectChevron" }, h$67(Spinner, { size: 14 })));
1968
1968
  }
1969
1969
  //#endregion
1970
1970
  //#region ../shared/dist/components/TextField.js
@@ -1974,7 +1974,7 @@ window.__ModuleLoader__.load({
1974
1974
  * @returns 输入框元素;`className` 是追加在基础类名之后,而不是替换它。
1975
1975
  */
1976
1976
  function TextField({ invalid = false, className, ...rest }) {
1977
- return h$64("input", {
1977
+ return h$67("input", {
1978
1978
  ...rest,
1979
1979
  className: className === void 0 ? "wb-textField" : `wb-textField ${className}`,
1980
1980
  "aria-invalid": invalid || void 0
@@ -1997,7 +1997,7 @@ window.__ModuleLoader__.load({
1997
1997
  ...option.icon === void 0 ? {} : { icon: option.icon },
1998
1998
  ...option.disabled === true ? { disabled: true } : {}
1999
1999
  };
2000
- const revealed = (node) => h$64("span", {
2000
+ const revealed = (node) => h$67("span", {
2001
2001
  className: "wb-selectReveal",
2002
2002
  "data-wb-select-reveal": ""
2003
2003
  }, node);
@@ -2013,20 +2013,20 @@ window.__ModuleLoader__.load({
2013
2013
  return found instanceof HTMLElement ? found : null;
2014
2014
  }
2015
2015
  function useRevealOnOpen(open, revealId) {
2016
- useEffect$28(() => {
2016
+ useEffect$30(() => {
2017
2017
  if (!open || revealId === void 0) return;
2018
2018
  revealNode()?.scrollIntoView({ block: "nearest" });
2019
2019
  }, [open, revealId]);
2020
2020
  }
2021
2021
  function selectValueNode(current, renderValue, placeholder) {
2022
- if (current === void 0) return h$64("span", { className: "wb-selectPlaceholder" }, placeholder ?? "—");
2022
+ if (current === void 0) return h$67("span", { className: "wb-selectPlaceholder" }, placeholder ?? "—");
2023
2023
  return renderValue === void 0 ? current.label : renderValue(current);
2024
2024
  }
2025
2025
  function searchNode(args) {
2026
- return h$64("span", {
2026
+ return h$67("span", {
2027
2027
  ref: args.boxRef,
2028
2028
  className: args.className
2029
- }, h$64("span", { className: "wb-selectSearchIcon" }, h$64(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { size: 14 })), h$64(TextField, {
2029
+ }, h$67("span", { className: "wb-selectSearchIcon" }, h$67(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { size: 14 })), h$67(TextField, {
2030
2030
  id: args.id,
2031
2031
  name: args.name,
2032
2032
  className: "wb-selectSearchInput",
@@ -2041,7 +2041,7 @@ window.__ModuleLoader__.load({
2041
2041
  }));
2042
2042
  }
2043
2043
  function menuNode(args) {
2044
- return h$64(_deepseek_ai_dsh_client_ui_primitives.Menu, {
2044
+ return h$67(_deepseek_ai_dsh_client_ui_primitives.Menu, {
2045
2045
  open: args.open,
2046
2046
  portal: true,
2047
2047
  className: "wb-selectAnchor",
@@ -2058,11 +2058,11 @@ window.__ModuleLoader__.load({
2058
2058
  });
2059
2059
  }
2060
2060
  function framed(label, hint, className, control) {
2061
- const inner = label === void 0 ? hint === void 0 ? control : h$64("span", { className: "wb-select" }, control, h$64("span", { className: "wb-selectHint" }, hint)) : h$64(Field, {
2061
+ const inner = label === void 0 ? hint === void 0 ? control : h$67("span", { className: "wb-select" }, control, h$67("span", { className: "wb-selectHint" }, hint)) : h$67(Field, {
2062
2062
  label,
2063
2063
  hint
2064
2064
  }, control);
2065
- return className === void 0 ? inner : h$64("div", { className }, inner);
2065
+ return className === void 0 ? inner : h$67("div", { className }, inner);
2066
2066
  }
2067
2067
  /** 算候选项用来匹配搜索的文本:有 `searchText` 就用它,否则取字符串标签;标签不是字符串又没给它是空串(这项搜不到)。 */
2068
2068
  function searchTextOf(option) {
@@ -2114,24 +2114,24 @@ window.__ModuleLoader__.load({
2114
2114
  }
2115
2115
  function useSelectState(props) {
2116
2116
  const { options, filter = defaultSelectFilter, emptyText, open: openProp, onOpenChange } = props;
2117
- const [openState, setOpenState] = useState$36(false);
2118
- const [query, setQuery] = useState$36("");
2119
- const [cursor, setCursor] = useState$36(null);
2120
- const boxRef = useRef$22(null);
2121
- const triggerRef = useRef$22(null);
2122
- const wasOpenRef = useRef$22(false);
2123
- const pickedRef = useRef$22(false);
2124
- const closedByUsRef = useRef$22(false);
2117
+ const [openState, setOpenState] = useState$40(false);
2118
+ const [query, setQuery] = useState$40("");
2119
+ const [cursor, setCursor] = useState$40(null);
2120
+ const boxRef = useRef$24(null);
2121
+ const triggerRef = useRef$24(null);
2122
+ const wasOpenRef = useRef$24(false);
2123
+ const pickedRef = useRef$24(false);
2124
+ const closedByUsRef = useRef$24(false);
2125
2125
  const open = openProp ?? openState;
2126
2126
  const setOpen = (next) => {
2127
2127
  if (openProp === void 0) setOpenState(next);
2128
2128
  onOpenChange?.(next);
2129
2129
  };
2130
- useEffect$28(() => {
2130
+ useEffect$30(() => {
2131
2131
  if (!open || props.search === false) return;
2132
2132
  boxRef.current?.querySelector("input")?.focus();
2133
2133
  }, [open, props.search]);
2134
- useEffect$28(() => {
2134
+ useEffect$30(() => {
2135
2135
  if (open) {
2136
2136
  wasOpenRef.current = true;
2137
2137
  return;
@@ -2145,7 +2145,7 @@ window.__ModuleLoader__.load({
2145
2145
  if (!closedByUs || picked) return;
2146
2146
  triggerRef.current?.focus();
2147
2147
  }, [open]);
2148
- const shown = useMemo$9(() => filterSelectOptions(options, query, filter), [
2148
+ const shown = useMemo$10(() => filterSelectOptions(options, query, filter), [
2149
2149
  options,
2150
2150
  query,
2151
2151
  filter
@@ -2201,7 +2201,7 @@ window.__ModuleLoader__.load({
2201
2201
  ariaLabel,
2202
2202
  loadingText
2203
2203
  }));
2204
- if (fallback !== void 0 && options.length === 0) return framed(label, hint, className, h$64(TextField, {
2204
+ if (fallback !== void 0 && options.length === 0) return framed(label, hint, className, h$67(TextField, {
2205
2205
  id,
2206
2206
  name,
2207
2207
  className: "wb-selectFallback",
@@ -2284,11 +2284,11 @@ window.__ModuleLoader__.load({
2284
2284
  * @returns 一个 `role="group"` 的 section。
2285
2285
  */
2286
2286
  function SettingsSection({ label, title, action, children }) {
2287
- return h$64("section", {
2287
+ return h$67("section", {
2288
2288
  className: "wb-settings",
2289
2289
  role: "group",
2290
2290
  "aria-label": label
2291
- }, h$64("header", { className: "wb-settingsHead" }, h$64("span", { className: "wb-settingsTitle" }, title), action), children);
2291
+ }, h$67("header", { className: "wb-settingsHead" }, h$67("span", { className: "wb-settingsTitle" }, title), action), children);
2292
2292
  }
2293
2293
  //#endregion
2294
2294
  //#region ../shared/dist/components/Stack.js
@@ -2298,7 +2298,7 @@ window.__ModuleLoader__.load({
2298
2298
  * @returns 竖排的 div。
2299
2299
  */
2300
2300
  function Stack({ children }) {
2301
- return h$64("div", { className: "wb-stack" }, children);
2301
+ return h$67("div", { className: "wb-stack" }, children);
2302
2302
  }
2303
2303
  //#endregion
2304
2304
  //#region ../shared/dist/components/StateBlock.js
@@ -2313,12 +2313,12 @@ window.__ModuleLoader__.load({
2313
2313
  * @returns 一个 div。
2314
2314
  */
2315
2315
  function StateBlock({ title, dot, hint, actions, resolving, children }) {
2316
- return h$64("div", { className: "wb-stateBlock" }, title === void 0 && dot === void 0 ? null : h$64("p", { className: "wb-stateBlockTitle" }, dot, title), resolving === void 0 ? null : h$64("p", { className: "wb-stateBlockResolving" }, resolving), hint === void 0 ? null : h$64("p", { className: "wb-stateBlockHint" }, hint), children, actions === void 0 ? null : h$64("div", { className: "wb-stateBlockActions" }, actions));
2316
+ return h$67("div", { className: "wb-stateBlock" }, title === void 0 && dot === void 0 ? null : h$67("p", { className: "wb-stateBlockTitle" }, dot, title), resolving === void 0 ? null : h$67("p", { className: "wb-stateBlockResolving" }, resolving), hint === void 0 ? null : h$67("p", { className: "wb-stateBlockHint" }, hint), children, actions === void 0 ? null : h$67("div", { className: "wb-stateBlockActions" }, actions));
2317
2317
  }
2318
2318
  //#endregion
2319
2319
  //#region ../shared/dist/components/icons.js
2320
2320
  function Shell({ size, strokeWidth = 1, viewBox = "0 0 16 16", children }) {
2321
- return h$64("svg", {
2321
+ return h$67("svg", {
2322
2322
  width: size,
2323
2323
  height: size,
2324
2324
  viewBox,
@@ -2335,10 +2335,10 @@ window.__ModuleLoader__.load({
2335
2335
  * @returns 一枚 `aria-hidden` 的 svg。
2336
2336
  */
2337
2337
  function IconConversation({ size = 16 }) {
2338
- return h$64(Shell, {
2338
+ return h$67(Shell, {
2339
2339
  size,
2340
2340
  strokeWidth: 1.3
2341
- }, h$64("path", {
2341
+ }, h$67("path", {
2342
2342
  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",
2343
2343
  stroke: "currentColor",
2344
2344
  strokeLinejoin: "round"
@@ -2353,30 +2353,30 @@ window.__ModuleLoader__.load({
2353
2353
  * @returns 一枚 `aria-hidden` 的 svg。
2354
2354
  */
2355
2355
  function IconBrandMark({ size = 24 }) {
2356
- return h$64(Shell, {
2356
+ return h$67(Shell, {
2357
2357
  size,
2358
2358
  viewBox: "0 0 64 64"
2359
- }, h$64("path", {
2359
+ }, h$67("path", {
2360
2360
  d: BRAND_FRAME,
2361
2361
  fill: "currentColor",
2362
2362
  fillRule: "evenodd"
2363
- }), h$64("rect", {
2363
+ }), h$67("rect", {
2364
2364
  x: 27.5,
2365
2365
  y: 48,
2366
2366
  width: 9,
2367
2367
  height: 4.75,
2368
2368
  fill: "currentColor"
2369
- }), h$64("rect", {
2369
+ }), h$67("rect", {
2370
2370
  x: 19,
2371
2371
  y: 52.75,
2372
2372
  width: 26,
2373
2373
  height: 4.75,
2374
2374
  rx: 2.375,
2375
2375
  fill: "currentColor"
2376
- }), h$64("g", { transform: BRAND_TAIL_TRANSFORM }, h$64("path", {
2376
+ }), h$67("g", { transform: BRAND_TAIL_TRANSFORM }, h$67("path", {
2377
2377
  d: BRAND_TAIL,
2378
2378
  fill: "currentColor"
2379
- }), h$64("circle", {
2379
+ }), h$67("circle", {
2380
2380
  cx: 6.885,
2381
2381
  cy: 13.742,
2382
2382
  r: 1.95,
@@ -2389,30 +2389,30 @@ window.__ModuleLoader__.load({
2389
2389
  * @returns 一枚 `aria-hidden` 的 svg。
2390
2390
  */
2391
2391
  function IconOpencli({ size = 16 }) {
2392
- return h$64(Shell, {
2392
+ return h$67(Shell, {
2393
2393
  size,
2394
2394
  viewBox: "0 0 64 64"
2395
- }, h$64("defs", null, h$64("linearGradient", {
2395
+ }, h$67("defs", null, h$67("linearGradient", {
2396
2396
  id: "opencli-mark",
2397
2397
  x1: "0%",
2398
2398
  y1: "0%",
2399
2399
  x2: "100%",
2400
2400
  y2: "100%"
2401
- }, h$64("stop", {
2401
+ }, h$67("stop", {
2402
2402
  offset: "0%",
2403
2403
  stopColor: "#00e5a0"
2404
- }), h$64("stop", {
2404
+ }), h$67("stop", {
2405
2405
  offset: "50%",
2406
2406
  stopColor: "#00b4d8"
2407
- }), h$64("stop", {
2407
+ }), h$67("stop", {
2408
2408
  offset: "100%",
2409
2409
  stopColor: "#7b61ff"
2410
- }))), h$64("rect", {
2410
+ }))), h$67("rect", {
2411
2411
  width: 64,
2412
2412
  height: 64,
2413
2413
  rx: 14,
2414
2414
  fill: "#0a0a0f"
2415
- }), h$64("text", {
2415
+ }), h$67("text", {
2416
2416
  x: "50%",
2417
2417
  y: "54%",
2418
2418
  dominantBaseline: "middle",
@@ -2429,10 +2429,10 @@ window.__ModuleLoader__.load({
2429
2429
  * @returns 一枚 `aria-hidden` 的 svg。
2430
2430
  */
2431
2431
  function IconNpm({ size = 16 }) {
2432
- return h$64(Shell, {
2432
+ return h$67(Shell, {
2433
2433
  size,
2434
2434
  viewBox: "0 0 1024 1024"
2435
- }, h$64("path", {
2435
+ }, h$67("path", {
2436
2436
  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",
2437
2437
  fill: "#CB3837"
2438
2438
  }));
@@ -2443,37 +2443,37 @@ window.__ModuleLoader__.load({
2443
2443
  * @returns 一枚 `aria-hidden` 的 svg。
2444
2444
  */
2445
2445
  function IconModuleMark({ size = 16 }) {
2446
- return h$64(Shell, {
2446
+ return h$67(Shell, {
2447
2447
  size,
2448
2448
  viewBox: "0 0 24 24"
2449
- }, h$64("defs", null, h$64("linearGradient", {
2449
+ }, h$67("defs", null, h$67("linearGradient", {
2450
2450
  id: "workbench-module-mark",
2451
2451
  x1: "0%",
2452
2452
  y1: "0%",
2453
2453
  x2: "100%",
2454
2454
  y2: "100%"
2455
- }, h$64("stop", {
2455
+ }, h$67("stop", {
2456
2456
  offset: "0%",
2457
2457
  stopColor: "#3b82f6"
2458
- }), h$64("stop", {
2458
+ }), h$67("stop", {
2459
2459
  offset: "55%",
2460
2460
  stopColor: "#8b5cf6"
2461
- }), h$64("stop", {
2461
+ }), h$67("stop", {
2462
2462
  offset: "100%",
2463
2463
  stopColor: "#14b8a6"
2464
- }))), h$64("rect", {
2464
+ }))), h$67("rect", {
2465
2465
  width: 24,
2466
2466
  height: 24,
2467
2467
  rx: 7,
2468
2468
  fill: "url(#workbench-module-mark)"
2469
- }), h$64("rect", {
2469
+ }), h$67("rect", {
2470
2470
  x: "4.6",
2471
2471
  y: "4.6",
2472
2472
  width: "6.2",
2473
2473
  height: "6.2",
2474
2474
  rx: "1.9",
2475
2475
  fill: "#ffffff"
2476
- }), h$64("rect", {
2476
+ }), h$67("rect", {
2477
2477
  x: "13.2",
2478
2478
  y: "4.6",
2479
2479
  width: "6.2",
@@ -2481,7 +2481,7 @@ window.__ModuleLoader__.load({
2481
2481
  rx: "1.9",
2482
2482
  fill: "#ffffff",
2483
2483
  fillOpacity: .78
2484
- }), h$64("rect", {
2484
+ }), h$67("rect", {
2485
2485
  x: "4.6",
2486
2486
  y: "13.2",
2487
2487
  width: "6.2",
@@ -2489,7 +2489,7 @@ window.__ModuleLoader__.load({
2489
2489
  rx: "1.9",
2490
2490
  fill: "#ffffff",
2491
2491
  fillOpacity: .78
2492
- }), h$64("rect", {
2492
+ }), h$67("rect", {
2493
2493
  x: "13.2",
2494
2494
  y: "13.2",
2495
2495
  width: "6.2",
@@ -2504,7 +2504,7 @@ window.__ModuleLoader__.load({
2504
2504
  * @returns 一枚 `aria-hidden` 的 svg。
2505
2505
  */
2506
2506
  function IconPanelScreen({ size = 16 }) {
2507
- return h$64("svg", {
2507
+ return h$67("svg", {
2508
2508
  width: size,
2509
2509
  height: size,
2510
2510
  viewBox: "0 0 1024 1024",
@@ -2515,7 +2515,7 @@ window.__ModuleLoader__.load({
2515
2515
  display: "block",
2516
2516
  overflow: "hidden"
2517
2517
  }
2518
- }, h$64("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" }));
2518
+ }, h$67("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" }));
2519
2519
  }
2520
2520
  //#endregion
2521
2521
  //#region ../shared/dist/config/storage.js
@@ -3104,6 +3104,7 @@ window.__ModuleLoader__.load({
3104
3104
  "panels.market.confirmUninstallAck": "I understand: using it again means reinstalling it.",
3105
3105
  "panels.market.confirmYes": "Uninstall",
3106
3106
  "panels.market.confirmNo": "Cancel",
3107
+ "panels.market.noMarketSource": "The index has no newer version of this module (refresh the index and retry)",
3107
3108
  "panels.market.failed": "Failed: {reason}",
3108
3109
  "panels.market.needEnv": "Set {env} in the terminal that started the workbench first",
3109
3110
  "panels.market.needCommands": "Missing commands: {commands}",
@@ -3140,8 +3141,9 @@ window.__ModuleLoader__.load({
3140
3141
  "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.",
3141
3142
  "panels.market.restartNeeded": "The new version is installed — restart once to pick it up.",
3142
3143
  "panels.market.foot": "After installing, enable it in the panel page of that project.",
3143
- "panels.market.recheck": "Check for updates",
3144
3144
  "panels.market.checkUpdates": "Check for updates",
3145
+ "panels.market.checkingNow": "Checking…",
3146
+ "panels.market.checkFailed": "The last check failed. Check your connection and retry.",
3145
3147
  "panels.market.checkedAt": "Last checked: {time}",
3146
3148
  "panels.market.justNow": "just now",
3147
3149
  "panels.market.minutesAgo": "{n} min ago",
@@ -3205,6 +3207,7 @@ window.__ModuleLoader__.load({
3205
3207
  "panels.market.add.failurePnpmMissing": "pnpm was not found, cannot install",
3206
3208
  "panels.market.add.failureInstalled": "It is already installed in this workbench. The same package cannot be installed over itself: uninstall it first, then install again. The uninstall did not succeed this time.",
3207
3209
  "panels.market.add.failureGeneric": "Something went wrong during install — see the install details",
3210
+ "panels.market.add.failureCredentials": "This repository needs credentials: this machine has none for it. Clone it once in a terminal, set up a credential helper, or install from the SSH address.",
3208
3211
  "panels.market.add.approveTitle": "Your approval is needed for install scripts",
3209
3212
  "panels.market.add.approveCaution": "Only allow packages you trust: install scripts run on this machine with your permissions.",
3210
3213
  "panels.market.add.approveRun": "Allow and continue installing",
@@ -3277,6 +3280,7 @@ window.__ModuleLoader__.load({
3277
3280
  "panels.discover.noSourceHint": "Add a module market index (http address or git repository) to browse and install its modules here",
3278
3281
  "panels.discover.sourcesFailed": "Could not read the index sources.",
3279
3282
  "panels.discover.unreadable": "Could not read this index.",
3283
+ "panels.discover.sourceAuth": "This index source could not be read: this machine has no git credentials for it. Set up credentials (or switch the source to its SSH address), then refresh.",
3280
3284
  "panels.discover.invalid": "This index is not in a valid format.",
3281
3285
  "panels.discover.emptyRepo": "This repository has no commits yet.",
3282
3286
  "panels.discover.missingIndex": "This repository has no {path} yet.",
@@ -3300,8 +3304,26 @@ window.__ModuleLoader__.load({
3300
3304
  "panels.discover.badShellDetail": "This version is not compatible with the running workbench {current}; it requires {peer}",
3301
3305
  "panels.discover.unverified": "Workbench unverified",
3302
3306
  "panels.discover.installing": "Installing…",
3307
+ "panels.discover.installingNamed": "Installing {name}…",
3308
+ "panels.discover.cancelInstall": "Cancel install",
3309
+ "panels.discover.cancelling": "Cancelling…",
3310
+ "panels.discover.installCancelled": "Install cancelled: {name}",
3303
3311
  "panels.discover.installedDone": "Installed: {name}",
3304
3312
  "panels.discover.failed": "Failed: {reason}",
3313
+ "panels.discover.transportTitle": "Where to read this repository",
3314
+ "panels.discover.transportSsh": "SSH",
3315
+ "panels.discover.transportHttps": "HTTPS",
3316
+ "panels.discover.transportOk": "Readable",
3317
+ "panels.discover.transportAuth": "Needs credentials",
3318
+ "panels.discover.transportUnreachable": "Unreachable",
3319
+ "panels.discover.transportUnknown": "Not probed",
3320
+ "panels.discover.transportChecking": "Checking…",
3321
+ "panels.discover.transportTest": "Test this address",
3322
+ "panels.discover.transportPlaceholder": "Or paste another address (mirror, alias)",
3323
+ "panels.discover.transportNeedsAuth": "This repository needs credentials: clone it once in a terminal, or set up an SSH key / credential helper, then install again.",
3324
+ "panels.discover.transportChange": "Change address",
3325
+ "panels.discover.transportChangeHide": "Hide",
3326
+ "panels.discover.transportNone": "No readable address",
3305
3327
  "panels.discover.expand": "Show versions",
3306
3328
  "panels.discover.collapse": "Hide versions",
3307
3329
  "panels.discover.versionCount": "{n} versions",
@@ -3782,6 +3804,7 @@ window.__ModuleLoader__.load({
3782
3804
  "panels.market.confirmUninstallAck": "我明白:卸载后想再用,得重新装一遍。",
3783
3805
  "panels.market.confirmYes": "卸载",
3784
3806
  "panels.market.confirmNo": "取消",
3807
+ "panels.market.noMarketSource": "索引里没有这个模块的新版本(刷新一次索引再试)",
3785
3808
  "panels.market.failed": "没成功:{reason}",
3786
3809
  "panels.market.needEnv": "先在启动工作台的终端里设 {env}",
3787
3810
  "panels.market.needCommands": "缺这几条命令:{commands}",
@@ -3818,8 +3841,9 @@ window.__ModuleLoader__.load({
3818
3841
  "panels.market.pluginBroken": "这份插件装坏了:认不出它是什么。可以先卸载,再让 agent 按包名重装一次。",
3819
3842
  "panels.market.restartNeeded": "新版装好了,重启一次才生效。",
3820
3843
  "panels.market.foot": "装好后到那个项目的面板页勾选它,模块才会出现。",
3821
- "panels.market.recheck": "重新检查更新",
3822
3844
  "panels.market.checkUpdates": "检查更新",
3845
+ "panels.market.checkingNow": "正在检查…",
3846
+ "panels.market.checkFailed": "最近一次没查到,检查网络后重试",
3823
3847
  "panels.market.checkedAt": "最近检查:{time}",
3824
3848
  "panels.market.justNow": "刚刚",
3825
3849
  "panels.market.minutesAgo": "{n} 分钟前",
@@ -3883,6 +3907,7 @@ window.__ModuleLoader__.load({
3883
3907
  "panels.market.add.failurePnpmMissing": "没有找到 pnpm,无法安装",
3884
3908
  "panels.market.add.failureInstalled": "它已经装在这份工作台里了。同一个包不能就地覆盖,得先卸载再装;这次卸载也没成功。",
3885
3909
  "panels.market.add.failureGeneric": "安装过程中出错,原因见安装详情",
3910
+ "panels.market.add.failureCredentials": "这个仓库要凭证:本机没有它的 git 凭据。先在终端里 clone 一次、配好凭据助手,或改用 SSH 地址,再装一次。",
3886
3911
  "panels.market.add.approveTitle": "需要你允许安装脚本",
3887
3912
  "panels.market.add.approveCaution": "只允许你信得过的包:安装脚本会以你的权限在这台机器上运行。",
3888
3913
  "panels.market.add.approveRun": "允许并继续安装",
@@ -3955,6 +3980,7 @@ window.__ModuleLoader__.load({
3955
3980
  "panels.discover.noSourceHint": "添加一个模块市场索引(http 地址或 git 仓库),即可在这里浏览和安装其中的模块",
3956
3981
  "panels.discover.sourcesFailed": "无法读取索引源",
3957
3982
  "panels.discover.unreadable": "无法读取此索引",
3983
+ "panels.discover.sourceAuth": "这个索引源读不了:本机没有它的 git 凭据。配好凭据(或在源里改用 SSH 地址),再点右上角的刷新。",
3958
3984
  "panels.discover.invalid": "此索引的格式无效",
3959
3985
  "panels.discover.emptyRepo": "这个仓库还没有任何提交",
3960
3986
  "panels.discover.missingIndex": "仓库里还没有索引文件 {path}",
@@ -3978,8 +4004,26 @@ window.__ModuleLoader__.load({
3978
4004
  "panels.discover.badShellDetail": "此版本与当前的工作台 {current} 不兼容,它要求 {peer}",
3979
4005
  "panels.discover.unverified": "工作台未验证",
3980
4006
  "panels.discover.installing": "正在安装…",
4007
+ "panels.discover.installingNamed": "正在安装「{name}」…",
4008
+ "panels.discover.cancelInstall": "取消安装",
4009
+ "panels.discover.cancelling": "正在取消…",
4010
+ "panels.discover.installCancelled": "已取消安装:{name}",
3981
4011
  "panels.discover.installedDone": "装好了:{name}",
3982
4012
  "panels.discover.failed": "操作失败:{reason}",
4013
+ "panels.discover.transportTitle": "从哪读这个仓库",
4014
+ "panels.discover.transportSsh": "SSH",
4015
+ "panels.discover.transportHttps": "HTTPS",
4016
+ "panels.discover.transportOk": "能读",
4017
+ "panels.discover.transportAuth": "要凭证",
4018
+ "panels.discover.transportUnreachable": "连不上",
4019
+ "panels.discover.transportUnknown": "没探成",
4020
+ "panels.discover.transportChecking": "正在探测…",
4021
+ "panels.discover.transportTest": "试这个地址",
4022
+ "panels.discover.transportPlaceholder": "或贴一个别的地址(公司镜像、别名)",
4023
+ "panels.discover.transportNeedsAuth": "这个仓库要凭证:先在终端里把它 clone 一次,或配好 SSH key / 凭据助手;配好后再点安装。",
4024
+ "panels.discover.transportChange": "换一个地址",
4025
+ "panels.discover.transportChangeHide": "收起",
4026
+ "panels.discover.transportNone": "没有可读的地址",
3983
4027
  "panels.discover.expand": "展开版本",
3984
4028
  "panels.discover.collapse": "收起版本",
3985
4029
  "panels.discover.versionCount": "{n} 个版本",
@@ -4395,6 +4439,99 @@ window.__ModuleLoader__.load({
4395
4439
  return { spec: path === "" ? base : `${base}&path:/${path}` };
4396
4440
  }
4397
4441
  //#endregion
4442
+ //#region ../shared/dist/lib/git-address.js
4443
+ var SCP = /^(?:([A-Za-z0-9._-]+)@)?([A-Za-z0-9.-]+):(?!\/)(\S+)$/;
4444
+ function bare(url) {
4445
+ return url.trim().replace(/^git\+/, "");
4446
+ }
4447
+ function pathOf(pathname) {
4448
+ return pathname.replace(/^\/+/, "").replace(/\/+$/, "");
4449
+ }
4450
+ /**
4451
+ * 把一个 git 地址拆成「哪台主机 + 哪个路径」,不管发布者当初用的是 https、ssh 还是
4452
+ * scp 那种 `git@host:path` 写法;认不出来给 undefined。
4453
+ */
4454
+ function gitAddressOf(url) {
4455
+ const text = bare(url);
4456
+ if (text === "") return void 0;
4457
+ if (text.includes("://")) {
4458
+ let parsed;
4459
+ try {
4460
+ parsed = new URL(text);
4461
+ } catch {
4462
+ return;
4463
+ }
4464
+ if (parsed.protocol !== "https:" && parsed.protocol !== "http:" && parsed.protocol !== "ssh:") return;
4465
+ const path = pathOf(parsed.pathname);
4466
+ if (path === "") return void 0;
4467
+ const port = parsed.port === "" ? void 0 : Number(parsed.port);
4468
+ const shared = {
4469
+ host: parsed.hostname,
4470
+ path,
4471
+ ...port === void 0 ? {} : { port }
4472
+ };
4473
+ if (parsed.protocol !== "ssh:") return {
4474
+ kind: "https",
4475
+ ...shared
4476
+ };
4477
+ return {
4478
+ kind: "ssh",
4479
+ ...shared,
4480
+ ...parsed.username === "" ? {} : { user: parsed.username }
4481
+ };
4482
+ }
4483
+ const scp = SCP.exec(text);
4484
+ if (scp === null) return void 0;
4485
+ const path = pathOf(scp[3] ?? "");
4486
+ if (path === "") return void 0;
4487
+ return {
4488
+ kind: "ssh",
4489
+ host: scp[2] ?? "",
4490
+ path,
4491
+ ...scp[1] === void 0 ? {} : { user: scp[1] }
4492
+ };
4493
+ }
4494
+ /** 一份地址的规范写法:ssh 一律成 `ssh://user@host/path`(pnpm 认这个),https 原样。 */
4495
+ function gitAddressText(address) {
4496
+ const port = address.port === void 0 ? "" : `:${String(address.port)}`;
4497
+ if (address.kind === "ssh") return `ssh://${address.user === void 0 || address.user === "" ? "git" : address.user}@${address.host}${port}/${address.path}`;
4498
+ return `https://${address.host}${port}/${address.path}`;
4499
+ }
4500
+ /**
4501
+ * 同一个仓库的两种读法,发布者用的那种排前面。ssh 那条一律规范成 `ssh://` 形式,
4502
+ * 因为 `git@host:path` 拼进安装 spec 时 pnpm 不认;https 那条保留发布者的原样(含 http)。
4503
+ */
4504
+ function gitTransportCandidates(url) {
4505
+ const address = gitAddressOf(url);
4506
+ if (address === void 0) {
4507
+ const only = bare(url);
4508
+ return only === "" ? [] : [{
4509
+ kind: only.startsWith("ssh") ? "ssh" : "https",
4510
+ url: only
4511
+ }];
4512
+ }
4513
+ const primary = {
4514
+ kind: address.kind,
4515
+ url: address.kind === "ssh" ? gitAddressText(address) : bare(url)
4516
+ };
4517
+ const other = address.kind === "https" ? {
4518
+ kind: "ssh",
4519
+ url: gitAddressText({
4520
+ kind: "ssh",
4521
+ host: address.host,
4522
+ path: address.path
4523
+ })
4524
+ } : {
4525
+ kind: "https",
4526
+ url: gitAddressText({
4527
+ kind: "https",
4528
+ host: address.host,
4529
+ path: address.path
4530
+ })
4531
+ };
4532
+ return other.url === primary.url ? [primary] : [primary, other];
4533
+ }
4534
+ //#endregion
4398
4535
  //#region ../shared/dist/lib/board-fact.js
4399
4536
  /**
4400
4537
  * 判一个路径落不落在这个工作区里(按路径前缀比,不是字符串包含)。
@@ -4672,6 +4809,7 @@ window.__ModuleLoader__.load({
4672
4809
  silentNextProbe = true;
4673
4810
  }
4674
4811
  var probe$1 = NO_PROBE;
4812
+ var probing = 0;
4675
4813
  var probeListeners = /* @__PURE__ */ new Set();
4676
4814
  function probeValue() {
4677
4815
  return probe$1;
@@ -4705,8 +4843,10 @@ window.__ModuleLoader__.load({
4705
4843
  };
4706
4844
  }
4707
4845
  function setCapabilities(next, rechecked = false) {
4708
- if (next === null) setProbe(NO_PROBE);
4709
- else if (rechecked) setProbe({
4846
+ if (next === null) {
4847
+ probing = 0;
4848
+ setProbe(NO_PROBE);
4849
+ } else if (rechecked) setProbe({
4710
4850
  ...probe$1,
4711
4851
  checkedAt: Date.now()
4712
4852
  });
@@ -4715,13 +4855,17 @@ window.__ModuleLoader__.load({
4715
4855
  for (const listener of [...listeners$7]) listener();
4716
4856
  }
4717
4857
  function beginProbe() {
4718
- if (probe$1.checking) return;
4858
+ probing += 1;
4859
+ if (probing > 1) return;
4719
4860
  setProbe({
4720
4861
  ...probe$1,
4721
4862
  checking: true
4722
4863
  });
4723
4864
  }
4724
4865
  function endProbe() {
4866
+ if (probing === 0) return;
4867
+ probing -= 1;
4868
+ if (probing > 0) return;
4725
4869
  setProbe({
4726
4870
  ...probe$1,
4727
4871
  checking: false
@@ -4761,13 +4905,14 @@ window.__ModuleLoader__.load({
4761
4905
  const at = epoch$1;
4762
4906
  const seq = readSeq$1 += 1;
4763
4907
  if (force) newestForceSeq$1 = seq;
4764
- if (force && !silent) beginProbe();
4908
+ const shown = force && !silent;
4909
+ if (shown) beginProbe();
4765
4910
  return shareCapabilityFetch(force, load).then((result) => {
4766
4911
  if (at !== epoch$1) return;
4767
4912
  if (!force && seq < newestForceSeq$1) return;
4768
4913
  publishCapability(result, force);
4769
4914
  }).finally(() => {
4770
- if (force) endProbe();
4915
+ if (shown) endProbe();
4771
4916
  });
4772
4917
  }
4773
4918
  function useCapabilities(refreshToken, reloadToken = 0) {
@@ -4898,6 +5043,16 @@ window.__ModuleLoader__.load({
4898
5043
  //#endregion
4899
5044
  //#region src/app/layouts/rightbar/market-freshness.ts
4900
5045
  var MARKET_STALE_MS = VERSION_CHECK_TTL_MS;
5046
+ function checkedAgoText(at, now, t) {
5047
+ const seconds = Math.max(0, Math.floor((now - at) / 1e3));
5048
+ if (seconds < 60) return t("panels.market.justNow");
5049
+ const minutes = Math.floor(seconds / 60);
5050
+ if (minutes < 60) return t("panels.market.minutesAgo", { n: String(minutes) });
5051
+ return t("panels.market.hoursAgo", { n: String(Math.floor(minutes / 60)) });
5052
+ }
5053
+ function checkedAgo(at, t) {
5054
+ return checkedAgoText(at, Date.now(), t);
5055
+ }
4901
5056
  function marketSettled(freshness, installedRead) {
4902
5057
  return freshness.loaded && installedRead !== false;
4903
5058
  }
@@ -4906,85 +5061,6 @@ window.__ModuleLoader__.load({
4906
5061
  return input.now - input.checkedAt >= input.staleMs;
4907
5062
  }
4908
5063
  //#endregion
4909
- //#region src/app/layouts/rightbar/market-settle.ts
4910
- var MODULE_SETTLE_MS = 15e3;
4911
- function holdBack(installed, roster, active, previous) {
4912
- const pending = installed.filter((unit) => !roster.has(unit));
4913
- const fresh = previous === null ? [] : pending.filter((unit) => !previous.has(unit));
4914
- return pending.filter((unit) => active.has(unit) || fresh.includes(unit));
4915
- }
4916
- var WORKBENCH_SWAP_MS = 18e4;
4917
- function swapLanded(until, installed) {
4918
- return until !== void 0 && installed === until;
4919
- }
4920
- function swapUntil(action, application, latest) {
4921
- if (action !== "update-workbench" || application !== "restart-required") return void 0;
4922
- return latest;
4923
- }
4924
- var READ_BACK_ACTIONS = /* @__PURE__ */ new Set([
4925
- "update",
4926
- "update-bundle",
4927
- "update-dependency",
4928
- "update-plugin"
4929
- ]);
4930
- var REMOVAL_ACTIONS = /* @__PURE__ */ new Set([
4931
- "remove-bundle",
4932
- "uninstall",
4933
- "uninstall-plugin"
4934
- ]);
4935
- function awaitsReadBack(action, application, version) {
4936
- if (application !== "applied") return false;
4937
- if (REMOVAL_ACTIONS.has(action)) return true;
4938
- if (!READ_BACK_ACTIONS.has(action)) return false;
4939
- return action === "update-bundle" ? version !== void 0 : true;
4940
- }
4941
- function readBackDone(input) {
4942
- if (input.action === "update") return !input.outdated;
4943
- if (input.entry === void 0 || input.entry.local === true || input.entry.latest === void 0) return true;
4944
- if (input.entry.latest === input.entry.installed) return true;
4945
- if (input.clicked === void 0) return true;
4946
- return input.entry.installed !== input.clicked;
4947
- }
4948
- function settleLanded(input) {
4949
- if (input.until !== void 0) return swapLanded(input.until, input.installed);
4950
- if (input.readBack !== true) return true;
4951
- if (input.action === "remove-bundle" || input.action === "uninstall") return input.unitGone === true;
4952
- if (input.action === "uninstall-plugin") return input.pluginGone === true;
4953
- const settled = (state) => state !== void 0 && state !== "outdated" && state !== "unsatisfied" && state !== "checking" && state !== "unchecked";
4954
- if (input.action === "update-dependency") return settled(input.sharedState);
4955
- if (input.action === "update-plugin") return input.pluginOutdated === false;
4956
- return readBackDone({
4957
- action: input.action,
4958
- entry: input.entry,
4959
- clicked: input.clicked,
4960
- outdated: input.outdated
4961
- });
4962
- }
4963
- function tailReason(tail) {
4964
- if (tail === void 0) return void 0;
4965
- const last = tail.split(" / ").map((part) => part.trim()).filter((part) => part !== "").at(-1);
4966
- if (last === void 0) return void 0;
4967
- return last.length <= 240 ? last : `${last.slice(0, 240)}…`;
4968
- }
4969
- function selfUpdateStop(input) {
4970
- const { until, since, update } = input;
4971
- if (until === void 0 || update === void 0 || update === null) return void 0;
4972
- if (update.state !== "failed" && update.state !== "rolled-back") return void 0;
4973
- if (update.to !== until && update.version !== until) return void 0;
4974
- if (since !== void 0 && update.at !== void 0) {
4975
- const at = (0, import_dayjs_min.default)(update.at).valueOf();
4976
- if (Number.isFinite(at) && at < since - 5e3) return void 0;
4977
- }
4978
- return {
4979
- kind: update.state,
4980
- ...update.version === void 0 ? {} : { version: update.version },
4981
- ...update.state === "failed" && tailReason(update.tail) !== void 0 ? { reason: tailReason(update.tail) } : {}
4982
- };
4983
- }
4984
- function holdWindowMs(until) {
4985
- return until === void 0 ? MODULE_SETTLE_MS : WORKBENCH_SWAP_MS;
4986
- }
4987
- //#endregion
4988
5064
  //#region src/app/layouts/rightbar/market-shared-rows.ts
4989
5065
  var SHARED_STATE_KEY = {
4990
5066
  checking: "panels.market.checking",
@@ -5154,8 +5230,10 @@ window.__ModuleLoader__.load({
5154
5230
  ...outdated ? { moduleUpdate: {
5155
5231
  installed: module.installed,
5156
5232
  latest,
5157
- ...blocked === void 0 ? {} : { blocked }
5233
+ ...blocked === void 0 ? {} : { blocked },
5234
+ ...module.market === void 0 ? {} : { market: module.market }
5158
5235
  } } : {},
5236
+ ...module.market === void 0 ? {} : { market: module.market },
5159
5237
  defaultShown: defaults.has(module.unit),
5160
5238
  defaultChanged: changed[module.unit] ?? 0
5161
5239
  });
@@ -5174,7 +5252,7 @@ window.__ModuleLoader__.load({
5174
5252
  if (row.plugin === true) return [...row.canUpdate ? ["update-plugin"] : [], ...row.canUninstall ? ["uninstall-plugin"] : []];
5175
5253
  return [
5176
5254
  ...row.canInstall ? ["install"] : [],
5177
- ...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : row.moduleUpdate.blocked === void 0 ? ["update-bundle"] : [],
5255
+ ...row.moduleUpdate === void 0 ? row.canUpdate ? ["update"] : [] : row.moduleUpdate.blocked === void 0 ? [row.market === void 0 || row.pkg === void 0 ? "update-bundle" : "install-version"] : [],
5178
5256
  ...row.canUninstall ? [row.pkg === void 0 ? "uninstall" : "remove-bundle"] : []
5179
5257
  ];
5180
5258
  }
@@ -5263,7 +5341,8 @@ window.__ModuleLoader__.load({
5263
5341
  installed: module.installed,
5264
5342
  ...local || module.latest === void 0 ? {} : { latest: module.latest },
5265
5343
  ...local || module.latest === void 0 || module.latestBlocked === void 0 ? {} : { blocked: module.latestBlocked },
5266
- ...local ? { local: true } : {}
5344
+ ...local ? { local: true } : {},
5345
+ ...local || module.market === void 0 ? {} : { market: module.market }
5267
5346
  };
5268
5347
  }
5269
5348
  return next;
@@ -5302,7 +5381,8 @@ window.__ModuleLoader__.load({
5302
5381
  const moduleUpdate = entry === void 0 || entry.latest === void 0 || entry.latest === entry.installed ? void 0 : {
5303
5382
  installed: entry.installed,
5304
5383
  latest: entry.latest,
5305
- ...entry.blocked === void 0 ? {} : { blocked: entry.blocked }
5384
+ ...entry.blocked === void 0 ? {} : { blocked: entry.blocked },
5385
+ ...entry.market === void 0 ? {} : { market: entry.market }
5306
5386
  };
5307
5387
  const shown = moduleUpdate === void 0 ? state : "outdated";
5308
5388
  const hint = moduleUpdate?.blocked === void 0 ? shown === "unknown" || shown === "unchecked" ? "panels.market.uncheckedHint" : void 0 : updateBlockHintOf(moduleUpdate.blocked);
@@ -5319,6 +5399,10 @@ window.__ModuleLoader__.load({
5319
5399
  ...entry.latest === void 0 ? {} : { latest: entry.latest }
5320
5400
  } },
5321
5401
  ...moduleUpdate === void 0 ? {} : { moduleUpdate },
5402
+ ...entry?.market === void 0 ? {} : {
5403
+ market: entry.market,
5404
+ pkg: entry.market.pkg
5405
+ },
5322
5406
  ...moduleUpdate === void 0 ? note === void 0 ? {} : { note } : {},
5323
5407
  ...local ? { local: true } : {},
5324
5408
  defaultShown: defaults.has(manifest.id),
@@ -5485,6 +5569,86 @@ window.__ModuleLoader__.load({
5485
5569
  return null;
5486
5570
  }
5487
5571
  //#endregion
5572
+ //#region src/app/layouts/rightbar/market-settle.ts
5573
+ var MODULE_SETTLE_MS = 15e3;
5574
+ function holdBack(installed, roster, active, previous) {
5575
+ const pending = installed.filter((unit) => !roster.has(unit));
5576
+ const fresh = previous === null ? [] : pending.filter((unit) => !previous.has(unit));
5577
+ return pending.filter((unit) => active.has(unit) || fresh.includes(unit));
5578
+ }
5579
+ var WORKBENCH_SWAP_MS = 18e4;
5580
+ function swapLanded(until, installed) {
5581
+ return until !== void 0 && installed === until;
5582
+ }
5583
+ function swapUntil(action, application, latest) {
5584
+ if (action !== "update-workbench" || application !== "restart-required") return void 0;
5585
+ return latest;
5586
+ }
5587
+ var READ_BACK_ACTIONS = /* @__PURE__ */ new Set([
5588
+ "update",
5589
+ "update-bundle",
5590
+ "install-version",
5591
+ "update-dependency",
5592
+ "update-plugin"
5593
+ ]);
5594
+ var REMOVAL_ACTIONS = /* @__PURE__ */ new Set([
5595
+ "remove-bundle",
5596
+ "uninstall",
5597
+ "uninstall-plugin"
5598
+ ]);
5599
+ function awaitsReadBack(action, application, version) {
5600
+ if (application !== "applied") return false;
5601
+ if (REMOVAL_ACTIONS.has(action)) return true;
5602
+ if (!READ_BACK_ACTIONS.has(action)) return false;
5603
+ return action === "update-bundle" || action === "install-version" ? version !== void 0 : true;
5604
+ }
5605
+ function readBackDone(input) {
5606
+ if (input.action === "update") return !input.outdated;
5607
+ if (input.entry === void 0 || input.entry.local === true || input.entry.latest === void 0) return true;
5608
+ if (input.entry.latest === input.entry.installed) return true;
5609
+ if (input.clicked === void 0) return true;
5610
+ return input.entry.installed !== input.clicked;
5611
+ }
5612
+ function settleLanded(input) {
5613
+ if (input.until !== void 0) return swapLanded(input.until, input.installed);
5614
+ if (input.readBack !== true) return true;
5615
+ if (input.action === "remove-bundle" || input.action === "uninstall") return input.unitGone === true;
5616
+ if (input.action === "uninstall-plugin") return input.pluginGone === true;
5617
+ const settled = (state) => state !== void 0 && state !== "outdated" && state !== "unsatisfied" && state !== "checking" && state !== "unchecked";
5618
+ if (input.action === "update-dependency") return settled(input.sharedState);
5619
+ if (input.action === "update-plugin") return input.pluginOutdated === false;
5620
+ return readBackDone({
5621
+ action: input.action,
5622
+ entry: input.entry,
5623
+ clicked: input.clicked,
5624
+ outdated: input.outdated
5625
+ });
5626
+ }
5627
+ function tailReason(tail) {
5628
+ if (tail === void 0) return void 0;
5629
+ const last = tail.split(" / ").map((part) => part.trim()).filter((part) => part !== "").at(-1);
5630
+ if (last === void 0) return void 0;
5631
+ return last.length <= 240 ? last : `${last.slice(0, 240)}…`;
5632
+ }
5633
+ function selfUpdateStop(input) {
5634
+ const { until, since, update } = input;
5635
+ if (until === void 0 || update === void 0 || update === null) return void 0;
5636
+ if (update.state !== "failed" && update.state !== "rolled-back") return void 0;
5637
+ if (update.to !== until && update.version !== until) return void 0;
5638
+ if (since !== void 0 && update.at !== void 0) {
5639
+ const at = (0, import_dayjs_min.default)(update.at).valueOf();
5640
+ if (Number.isFinite(at) && at < since - 5e3) return void 0;
5641
+ }
5642
+ return {
5643
+ kind: update.state,
5644
+ ...update.version === void 0 ? {} : { version: update.version },
5645
+ ...update.state === "failed" && tailReason(update.tail) !== void 0 ? { reason: tailReason(update.tail) } : {}
5646
+ };
5647
+ }
5648
+ function holdWindowMs(until) {
5649
+ return until === void 0 ? MODULE_SETTLE_MS : WORKBENCH_SWAP_MS;
5650
+ }
5651
+ //#endregion
5488
5652
  //#region src/app/layouts/rightbar/market-busy.ts
5489
5653
  var listeners$5 = /* @__PURE__ */ new Set();
5490
5654
  var published = /* @__PURE__ */ new Map();
@@ -5765,127 +5929,137 @@ window.__ModuleLoader__.load({
5765
5929
  };
5766
5930
  }
5767
5931
  var MarketPage_module_default = {
5768
- marketList: "_marketList_14s5s_1",
5769
- marketRow: "_marketRow_14s5s_10",
5770
- marketIcon: "_marketIcon_14s5s_20",
5771
- marketMain: "_marketMain_14s5s_32",
5772
- marketName: "_marketName_14s5s_39",
5773
- marketStatus: "_marketStatus_14s5s_48",
5774
- marketStateText: "_marketStateText_14s5s_58",
5775
- marketSep: "_marketSep_14s5s_62",
5776
- marketReason: "_marketReason_14s5s_66",
5777
- marketVersion: "_marketVersion_14s5s_72",
5778
- marketLocalTag: "_marketLocalTag_14s5s_94",
5779
- marketEnd: "_marketEnd_14s5s_105",
5780
- marketSwitchSeat: "_marketSwitchSeat_14s5s_112",
5781
- marketActions: "_marketActions_14s5s_125",
5782
- marketUpdateAction: "_marketUpdateAction_14s5s_131",
5783
- marketSelfDivider: "_marketSelfDivider_14s5s_137",
5784
- marketSection: "_marketSection_14s5s_143",
5785
- marketSectionHead: "_marketSectionHead_14s5s_150",
5786
- marketSectionIcon: "_marketSectionIcon_14s5s_156",
5787
- marketSectionTitle: "_marketSectionTitle_14s5s_163",
5788
- marketSectionCount: "_marketSectionCount_14s5s_169",
5789
- marketSectionQuiet: "_marketSectionQuiet_14s5s_175",
5790
- marketProgress: "_marketProgress_14s5s_188",
5791
- marketNote: "_marketNote_14s5s_198",
5792
- marketFailure: "_marketFailure_14s5s_205",
5793
- marketEmpty: "_marketEmpty_14s5s_212",
5794
- marketPage: "_marketPage_14s5s_217",
5795
- marketPageHead: "_marketPageHead_14s5s_235",
5796
- marketPageTitle: "_marketPageTitle_14s5s_243",
5797
- marketPageIntro: "_marketPageIntro_14s5s_248",
5798
- marketPageTools: "_marketPageTools_14s5s_254",
5799
- marketPanel: "_marketPanel_14s5s_263",
5800
- marketTabs: "_marketTabs_14s5s_273",
5801
- marketTabList: "_marketTabList_14s5s_278",
5802
- marketIconButton: "_marketIconButton_14s5s_283",
5803
- marketIconWrap: "_marketIconWrap_14s5s_308",
5804
- marketIconButtonSpinning: "_marketIconButtonSpinning_14s5s_312",
5805
- "wb-spin": "_wb-spin_14s5s_1",
5806
- marketAddButton: "_marketAddButton_14s5s_316",
5807
- marketEmptyTitle: "_marketEmptyTitle_14s5s_333",
5808
- discoverPage: "_discoverPage_14s5s_347",
5809
- discoverBar: "_discoverBar_14s5s_354",
5810
- discoverTools: "_discoverTools_14s5s_361",
5811
- discoverMarket: "_discoverMarket_14s5s_367",
5812
- discoverMarketButton: "_discoverMarketButton_14s5s_372",
5813
- discoverMarketName: "_discoverMarketName_14s5s_379",
5814
- discoverLabels: "_discoverLabels_14s5s_385",
5815
- discoverSort: "_discoverSort_14s5s_390",
5816
- discoverRefresh: "_discoverRefresh_14s5s_395",
5817
- discoverSearch: "_discoverSearch_14s5s_399",
5818
- discoverSearchField: "_discoverSearchField_14s5s_407",
5819
- discoverSearchFieldFilled: "_discoverSearchFieldFilled_14s5s_412",
5820
- discoverSearchClear: "_discoverSearchClear_14s5s_421",
5821
- discoverChips: "_discoverChips_14s5s_472",
5822
- discoverList: "_discoverList_14s5s_479",
5823
- discoverCard: "_discoverCard_14s5s_488",
5824
- discoverArtwork: "_discoverArtwork_14s5s_502",
5825
- discoverArtworkImage: "_discoverArtworkImage_14s5s_514",
5826
- discoverMain: "_discoverMain_14s5s_518",
5827
- discoverTitleRow: "_discoverTitleRow_14s5s_526",
5828
- discoverCardOpen: "_discoverCardOpen_14s5s_534",
5829
- discoverStrong: "_discoverStrong_14s5s_565",
5830
- discoverDesc: "_discoverDesc_14s5s_571",
5831
- discoverMeta: "_discoverMeta_14s5s_580",
5832
- discoverMuted: "_discoverMuted_14s5s_587",
5833
- discoverEnd: "_discoverEnd_14s5s_593",
5834
- discoverBlocked: "_discoverBlocked_14s5s_602",
5835
- discoverEmpty: "_discoverEmpty_14s5s_607",
5836
- discoverEmptyTitle: "_discoverEmptyTitle_14s5s_616",
5837
- discoverDetail: "_discoverDetail_14s5s_626",
5838
- discoverCrumb: "_discoverCrumb_14s5s_632",
5839
- discoverCrumbIcon: "_discoverCrumbIcon_14s5s_655",
5840
- discoverDetailHead: "_discoverDetailHead_14s5s_659",
5841
- discoverDetailTitle: "_discoverDetailTitle_14s5s_665",
5842
- discoverDetailText: "_discoverDetailText_14s5s_671",
5843
- discoverDetailPanel: "_discoverDetailPanel_14s5s_678",
5844
- discoverDetailTabs: "_discoverDetailTabs_14s5s_685",
5845
- discoverDetailTabList: "_discoverDetailTabList_14s5s_690",
5846
- discoverDocBody: "_discoverDocBody_14s5s_695",
5847
- discoverDocNotice: "_discoverDocNotice_14s5s_700",
5848
- discoverSection: "_discoverSection_14s5s_706",
5849
- discoverSectionTitle: "_discoverSectionTitle_14s5s_713",
5850
- discoverFacts: "_discoverFacts_14s5s_719",
5851
- discoverFactRow: "_discoverFactRow_14s5s_724",
5852
- discoverFactKind: "_discoverFactKind_14s5s_734",
5853
- discoverFactValue: "_discoverFactValue_14s5s_740",
5854
- discoverCode: "_discoverCode_14s5s_748",
5855
- discoverTags: "_discoverTags_14s5s_757",
5856
- discoverLink: "_discoverLink_14s5s_764",
5857
- discoverVersions: "_discoverVersions_14s5s_774",
5858
- discoverVersionRow: "_discoverVersionRow_14s5s_782",
5859
- discoverVersionName: "_discoverVersionName_14s5s_790",
5860
- discoverError: "_discoverError_14s5s_795",
5861
- discoverFailure: "_discoverFailure_14s5s_804",
5862
- discoverLoading: "_discoverLoading_14s5s_810",
5863
- discoverNotice: "_discoverNotice_14s5s_819",
5864
- discoverMore: "_discoverMore_14s5s_837",
5865
- discoverDialog: "_discoverDialog_14s5s_841",
5866
- discoverDialogBody: "_discoverDialogBody_14s5s_845",
5867
- discoverSourceList: "_discoverSourceList_14s5s_851",
5868
- discoverSourceRow: "_discoverSourceRow_14s5s_859",
5869
- discoverSourceConfirm: "_discoverSourceConfirm_14s5s_868",
5870
- discoverSourcePick: "_discoverSourcePick_14s5s_874",
5871
- discoverSourceRadio: "_discoverSourceRadio_14s5s_883",
5872
- discoverSourceMain: "_discoverSourceMain_14s5s_891",
5873
- discoverSourceHead: "_discoverSourceHead_14s5s_899",
5874
- discoverSourceUrl: "_discoverSourceUrl_14s5s_907",
5875
- discoverSourceMore: "_discoverSourceMore_14s5s_917",
5876
- discoverSourceLoading: "_discoverSourceLoading_14s5s_921",
5877
- discoverSourceHint: "_discoverSourceHint_14s5s_931",
5878
- discoverSourceError: "_discoverSourceError_14s5s_945",
5879
- discoverSourceForm: "_discoverSourceForm_14s5s_951",
5880
- discoverGrow: "_discoverGrow_14s5s_957",
5881
- discoverField: "_discoverField_14s5s_962",
5882
- discoverFieldLabel: "_discoverFieldLabel_14s5s_968",
5883
- discoverConfirmHead: "_discoverConfirmHead_14s5s_973",
5884
- discoverSkeletonFill: "_discoverSkeletonFill_14s5s_979",
5885
- "wb-skeleton": "_wb-skeleton_14s5s_1",
5886
- discoverSkeletonBar: "_discoverSkeletonBar_14s5s_988",
5887
- discoverSkeletonTitle: "_discoverSkeletonTitle_14s5s_995",
5888
- discoverSkeletonDesc: "_discoverSkeletonDesc_14s5s_999"
5932
+ marketList: "_marketList_yups9_1",
5933
+ marketRow: "_marketRow_yups9_10",
5934
+ marketIcon: "_marketIcon_yups9_20",
5935
+ marketMain: "_marketMain_yups9_32",
5936
+ marketName: "_marketName_yups9_39",
5937
+ marketStatus: "_marketStatus_yups9_48",
5938
+ marketStateText: "_marketStateText_yups9_58",
5939
+ marketSep: "_marketSep_yups9_62",
5940
+ marketReason: "_marketReason_yups9_66",
5941
+ marketVersion: "_marketVersion_yups9_72",
5942
+ marketLocalTag: "_marketLocalTag_yups9_94",
5943
+ marketEnd: "_marketEnd_yups9_105",
5944
+ marketSwitchSeat: "_marketSwitchSeat_yups9_112",
5945
+ marketActions: "_marketActions_yups9_125",
5946
+ marketUpdateAction: "_marketUpdateAction_yups9_131",
5947
+ marketSelfDivider: "_marketSelfDivider_yups9_137",
5948
+ marketSection: "_marketSection_yups9_143",
5949
+ marketSectionHead: "_marketSectionHead_yups9_150",
5950
+ marketSectionIcon: "_marketSectionIcon_yups9_156",
5951
+ marketSectionTitle: "_marketSectionTitle_yups9_163",
5952
+ marketSectionCount: "_marketSectionCount_yups9_169",
5953
+ marketSectionAction: "_marketSectionAction_yups9_175",
5954
+ marketSectionQuiet: "_marketSectionQuiet_yups9_183",
5955
+ marketProgress: "_marketProgress_yups9_196",
5956
+ marketNote: "_marketNote_yups9_206",
5957
+ marketFailure: "_marketFailure_yups9_213",
5958
+ marketEmpty: "_marketEmpty_yups9_220",
5959
+ marketPage: "_marketPage_yups9_225",
5960
+ marketPageHead: "_marketPageHead_yups9_243",
5961
+ marketPageTitle: "_marketPageTitle_yups9_251",
5962
+ marketPageIntro: "_marketPageIntro_yups9_256",
5963
+ marketPageTools: "_marketPageTools_yups9_262",
5964
+ marketPanel: "_marketPanel_yups9_271",
5965
+ marketTabs: "_marketTabs_yups9_281",
5966
+ marketTabList: "_marketTabList_yups9_286",
5967
+ marketAddButton: "_marketAddButton_yups9_291",
5968
+ marketEmptyTitle: "_marketEmptyTitle_yups9_308",
5969
+ discoverPage: "_discoverPage_yups9_313",
5970
+ discoverBar: "_discoverBar_yups9_320",
5971
+ discoverTools: "_discoverTools_yups9_327",
5972
+ discoverMarket: "_discoverMarket_yups9_333",
5973
+ discoverMarketButton: "_discoverMarketButton_yups9_338",
5974
+ discoverMarketName: "_discoverMarketName_yups9_345",
5975
+ discoverLabels: "_discoverLabels_yups9_351",
5976
+ discoverSort: "_discoverSort_yups9_356",
5977
+ discoverRefresh: "_discoverRefresh_yups9_361",
5978
+ discoverSearch: "_discoverSearch_yups9_365",
5979
+ discoverSearchField: "_discoverSearchField_yups9_373",
5980
+ discoverSearchFieldFilled: "_discoverSearchFieldFilled_yups9_378",
5981
+ discoverSearchClear: "_discoverSearchClear_yups9_387",
5982
+ discoverChips: "_discoverChips_yups9_438",
5983
+ discoverList: "_discoverList_yups9_445",
5984
+ discoverCard: "_discoverCard_yups9_454",
5985
+ discoverArtwork: "_discoverArtwork_yups9_468",
5986
+ discoverArtworkImage: "_discoverArtworkImage_yups9_480",
5987
+ discoverMain: "_discoverMain_yups9_484",
5988
+ discoverTitleRow: "_discoverTitleRow_yups9_492",
5989
+ discoverCardOpen: "_discoverCardOpen_yups9_500",
5990
+ discoverStrong: "_discoverStrong_yups9_531",
5991
+ discoverDesc: "_discoverDesc_yups9_537",
5992
+ discoverMeta: "_discoverMeta_yups9_546",
5993
+ discoverMuted: "_discoverMuted_yups9_553",
5994
+ discoverEnd: "_discoverEnd_yups9_559",
5995
+ discoverUpdateAction: "_discoverUpdateAction_yups9_568",
5996
+ discoverBlocked: "_discoverBlocked_yups9_573",
5997
+ discoverEmpty: "_discoverEmpty_yups9_578",
5998
+ discoverEmptyTitle: "_discoverEmptyTitle_yups9_587",
5999
+ discoverDetail: "_discoverDetail_yups9_597",
6000
+ discoverCrumb: "_discoverCrumb_yups9_603",
6001
+ discoverCrumbIcon: "_discoverCrumbIcon_yups9_626",
6002
+ discoverDetailHead: "_discoverDetailHead_yups9_630",
6003
+ discoverDetailTitle: "_discoverDetailTitle_yups9_636",
6004
+ discoverDetailText: "_discoverDetailText_yups9_642",
6005
+ discoverDetailPanel: "_discoverDetailPanel_yups9_649",
6006
+ discoverDetailTabs: "_discoverDetailTabs_yups9_656",
6007
+ discoverDetailTabList: "_discoverDetailTabList_yups9_661",
6008
+ discoverDocBody: "_discoverDocBody_yups9_666",
6009
+ discoverDocNotice: "_discoverDocNotice_yups9_671",
6010
+ discoverSection: "_discoverSection_yups9_677",
6011
+ discoverSectionTitle: "_discoverSectionTitle_yups9_684",
6012
+ discoverFacts: "_discoverFacts_yups9_690",
6013
+ discoverFactRow: "_discoverFactRow_yups9_695",
6014
+ discoverFactKind: "_discoverFactKind_yups9_705",
6015
+ discoverFactValue: "_discoverFactValue_yups9_711",
6016
+ discoverCode: "_discoverCode_yups9_719",
6017
+ discoverTags: "_discoverTags_yups9_728",
6018
+ discoverLink: "_discoverLink_yups9_735",
6019
+ discoverVersions: "_discoverVersions_yups9_745",
6020
+ discoverVersionRow: "_discoverVersionRow_yups9_753",
6021
+ discoverVersionName: "_discoverVersionName_yups9_761",
6022
+ discoverError: "_discoverError_yups9_766",
6023
+ discoverFailure: "_discoverFailure_yups9_775",
6024
+ discoverLoading: "_discoverLoading_yups9_781",
6025
+ discoverNotice: "_discoverNotice_yups9_790",
6026
+ discoverMore: "_discoverMore_yups9_808",
6027
+ discoverTransport: "_discoverTransport_yups9_812",
6028
+ discoverTransportHead: "_discoverTransportHead_yups9_818",
6029
+ discoverTransportTitle: "_discoverTransportTitle_yups9_825",
6030
+ discoverTransportKind: "_discoverTransportKind_yups9_830",
6031
+ discoverTransportState: "_discoverTransportState_yups9_835",
6032
+ discoverTransportRows: "_discoverTransportRows_yups9_843",
6033
+ discoverTransportRow: "_discoverTransportRow_yups9_843",
6034
+ discoverTransportRadio: "_discoverTransportRadio_yups9_864",
6035
+ discoverTransportCustom: "_discoverTransportCustom_yups9_904",
6036
+ discoverTransportInput: "_discoverTransportInput_yups9_910",
6037
+ discoverInstallBar: "_discoverInstallBar_yups9_915",
6038
+ discoverInstallText: "_discoverInstallText_yups9_926",
6039
+ discoverDialog: "_discoverDialog_yups9_932",
6040
+ discoverDialogBody: "_discoverDialogBody_yups9_936",
6041
+ discoverSourceList: "_discoverSourceList_yups9_942",
6042
+ discoverSourceRow: "_discoverSourceRow_yups9_950",
6043
+ discoverSourceConfirm: "_discoverSourceConfirm_yups9_959",
6044
+ discoverSourcePick: "_discoverSourcePick_yups9_965",
6045
+ discoverSourceRadio: "_discoverSourceRadio_yups9_974",
6046
+ discoverSourceMain: "_discoverSourceMain_yups9_982",
6047
+ discoverSourceHead: "_discoverSourceHead_yups9_990",
6048
+ discoverSourceUrl: "_discoverSourceUrl_yups9_998",
6049
+ discoverSourceMore: "_discoverSourceMore_yups9_1008",
6050
+ discoverSourceLoading: "_discoverSourceLoading_yups9_1012",
6051
+ discoverSourceHint: "_discoverSourceHint_yups9_1022",
6052
+ discoverSourceError: "_discoverSourceError_yups9_1036",
6053
+ discoverSourceForm: "_discoverSourceForm_yups9_1042",
6054
+ discoverGrow: "_discoverGrow_yups9_1048",
6055
+ discoverField: "_discoverField_yups9_1053",
6056
+ discoverFieldLabel: "_discoverFieldLabel_yups9_1059",
6057
+ discoverConfirmHead: "_discoverConfirmHead_yups9_1064",
6058
+ discoverSkeletonFill: "_discoverSkeletonFill_yups9_1070",
6059
+ "wb-skeleton": "_wb-skeleton_yups9_1",
6060
+ discoverSkeletonBar: "_discoverSkeletonBar_yups9_1079",
6061
+ discoverSkeletonTitle: "_discoverSkeletonTitle_yups9_1086",
6062
+ discoverSkeletonDesc: "_discoverSkeletonDesc_yups9_1090"
5889
6063
  };
5890
6064
  //#endregion
5891
6065
  //#region src/app/layouts/market/discover-states.tsx
@@ -5944,6 +6118,19 @@ window.__ModuleLoader__.load({
5944
6118
  onClick: onAdd
5945
6119
  }, t("panels.discover.addFirstSource")));
5946
6120
  }
6121
+ function DiscoverReadFailure({ t, text, auth, onRetry }) {
6122
+ return /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
6123
+ t,
6124
+ text,
6125
+ onRetry
6126
+ }), auth ? /* @__PURE__ */ (0, react.createElement)("p", {
6127
+ className: MarketPage_module_default.discoverNotice,
6128
+ role: "note"
6129
+ }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
6130
+ size: 14,
6131
+ "aria-hidden": "true"
6132
+ }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.sourceAuth"))) : null);
6133
+ }
5947
6134
  //#endregion
5948
6135
  //#region src/app/layouts/rightbar/MarketStates.tsx
5949
6136
  function MarketChecking({ t }) {
@@ -6001,6 +6188,7 @@ window.__ModuleLoader__.load({
6001
6188
  install: "panels.market.installing",
6002
6189
  update: "panels.market.updating",
6003
6190
  "update-bundle": "panels.market.updating",
6191
+ "install-version": "panels.market.updating",
6004
6192
  "remove-bundle": "panels.market.uninstalling",
6005
6193
  uninstall: "panels.market.uninstalling",
6006
6194
  "update-dependency": "panels.market.updating",
@@ -6014,6 +6202,7 @@ window.__ModuleLoader__.load({
6014
6202
  install: "panels.market.install",
6015
6203
  update: "panels.market.update",
6016
6204
  "update-bundle": "panels.market.update",
6205
+ "install-version": "panels.market.update",
6017
6206
  "remove-bundle": "panels.market.uninstall",
6018
6207
  uninstall: "panels.market.uninstall",
6019
6208
  "update-dependency": "panels.market.update",
@@ -6162,41 +6351,6 @@ window.__ModuleLoader__.load({
6162
6351
  }))));
6163
6352
  }
6164
6353
  //#endregion
6165
- //#region src/app/layouts/rightbar/panel-write.ts
6166
- var PANEL_SETTLE_MS = 4e3;
6167
- function rowKey(row) {
6168
- return `${row.id}:${row.shown ? "1" : "0"}:${row.source}`;
6169
- }
6170
- function rowKeys(rows) {
6171
- return rows.map(rowKey).join(",");
6172
- }
6173
- function panelBoardSignature(units, plugins, own) {
6174
- return `${rowKeys(units)}|${rowKeys(plugins)}|${own ? "1" : "0"}`;
6175
- }
6176
- function machineBoardSignature(defaults, changed) {
6177
- const counts = Object.entries(changed).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0).map(([id, count]) => `${id}:${String(count)}`);
6178
- return `${[...defaults].sort().join(",")}|${counts.join(",")}`;
6179
- }
6180
- function nextPending(pending, signature) {
6181
- return pending !== null && pending !== signature ? null : pending;
6182
- }
6183
- function useBoardSettle(signature) {
6184
- const [held, setHeld] = (0, react.useState)(null);
6185
- (0, react.useEffect)(() => {
6186
- setHeld((current) => nextPending(current, signature));
6187
- }, [signature]);
6188
- (0, react.useEffect)(() => {
6189
- if (held === null) return void 0;
6190
- const timer = setTimeout(() => setHeld(null), PANEL_SETTLE_MS);
6191
- return () => clearTimeout(timer);
6192
- }, [held]);
6193
- return {
6194
- pending: held !== null,
6195
- begin: () => setHeld(signature),
6196
- clear: () => setHeld(null)
6197
- };
6198
- }
6199
- //#endregion
6200
6354
  //#region src/shared/components/Tip.tsx
6201
6355
  /**
6202
6356
  * dsh `Tooltip` 的外壳默认值版:说明统一按右栏习惯(`bottom` / `end` / `gap 6` / 挂 body)来,其余 prop 原样转给 `Tooltip`。
@@ -6343,12 +6497,12 @@ window.__ModuleLoader__.load({
6343
6497
  }
6344
6498
  }));
6345
6499
  }
6346
- function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy }) {
6347
- if (rows.length === 0) return null;
6500
+ function MarketSection({ t, titleKey, icon, rows, pending, failureOf, act, confirmActions, onConfirming, onDefault, boardBusy, headAction, keepHead }) {
6501
+ if (rows.length === 0 && keepHead !== true) return null;
6348
6502
  return /* @__PURE__ */ (0, react.createElement)("section", { className: MarketPage_module_default.marketSection }, titleKey === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketSectionHead }, /* @__PURE__ */ (0, react.createElement)("span", {
6349
6503
  className: MarketPage_module_default.marketSectionIcon,
6350
6504
  "aria-hidden": "true"
6351
- }, icon), /* @__PURE__ */ (0, react.createElement)("h2", { className: MarketPage_module_default.marketSectionTitle }, t(titleKey)), rows.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketSectionCount }, rows.length)), rows.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("ul", { className: MarketPage_module_default.marketList }, rows.map((row) => /* @__PURE__ */ (0, react.createElement)(MarketLine, {
6505
+ }, icon), /* @__PURE__ */ (0, react.createElement)("h2", { className: MarketPage_module_default.marketSectionTitle }, t(titleKey)), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketSectionCount }, rows.length), headAction === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.marketSectionAction }, headAction)), rows.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("ul", { className: MarketPage_module_default.marketList }, rows.map((row) => /* @__PURE__ */ (0, react.createElement)(MarketLine, {
6352
6506
  key: row.id,
6353
6507
  t,
6354
6508
  row,
@@ -6513,7 +6667,9 @@ window.__ModuleLoader__.load({
6513
6667
  function heldWizardPhase(phase, classifying) {
6514
6668
  return classifying && (phase === "preview" || phase === "idle") ? "inspecting" : phase;
6515
6669
  }
6670
+ var CREDENTIAL_TEXT = /authentication failed|could not read (username|password)|permission denied \(publickey\)|terminal prompts disabled|host key verification failed|repository not found|no such identity/i;
6516
6671
  var FAILURE_KEYS = {
6672
+ credentials: "panels.market.add.failureCredentials",
6517
6673
  network: "panels.market.add.failureNetwork",
6518
6674
  "spec-host": "panels.market.add.failureNetworkHost",
6519
6675
  "not-found": "panels.market.add.failureNotFound",
@@ -6535,9 +6691,15 @@ window.__ModuleLoader__.load({
6535
6691
  "stop-profile": "panels.market.add.failureGeneric",
6536
6692
  "stale-approval": "panels.market.add.failureGeneric"
6537
6693
  };
6694
+ function needsCredentials(change) {
6695
+ const text = `${change.errorDetail ?? ""}\n${change.packageResult?.output ?? ""}`;
6696
+ return CREDENTIAL_TEXT.test(text);
6697
+ }
6538
6698
  function failureCode(change) {
6539
6699
  if (change.failedAt === "spec-host") return "spec-host";
6540
- return change.errorCode ?? change.packageResult?.kind ?? change.application;
6700
+ const code = change.errorCode ?? change.packageResult?.kind ?? change.application;
6701
+ if (code === "operation-error" && needsCredentials(change)) return "credentials";
6702
+ return code;
6541
6703
  }
6542
6704
  function failureReasonKey(code) {
6543
6705
  return FAILURE_KEYS[code];
@@ -6612,7 +6774,11 @@ window.__ModuleLoader__.load({
6612
6774
  }
6613
6775
  //#endregion
6614
6776
  //#region src/app/layouts/rightbar/market-act.ts
6615
- var STEADY_ACTIONS = /* @__PURE__ */ new Set(["update", "update-bundle"]);
6777
+ var STEADY_ACTIONS = /* @__PURE__ */ new Set([
6778
+ "update",
6779
+ "update-bundle",
6780
+ "install-version"
6781
+ ]);
6616
6782
  function assumedApplied(action) {
6617
6783
  return action === "update" || action === "update-dependency" || action === "update-plugin" || REMOVAL_ACTIONS.has(action);
6618
6784
  }
@@ -6656,18 +6822,34 @@ window.__ModuleLoader__.load({
6656
6822
  seats.setConfirming(null);
6657
6823
  seats.setFailed(null);
6658
6824
  seats.setNotice(null);
6825
+ const dependency = action === "update-dependency";
6826
+ const byName = action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" || action === "migrate-workbench";
6827
+ const market = action === "install-version" ? row?.market : void 0;
6828
+ const marketSpec = market === void 0 || row?.pkg === void 0 ? void 0 : marketInstallTarget(row.pkg, market.version, market.source).spec;
6829
+ if (action === "install-version" && marketSpec === void 0) {
6830
+ seats.setPending(null);
6831
+ seats.setFailed({
6832
+ id,
6833
+ message: t("panels.market.failed", { reason: t("panels.market.noMarketSource") })
6834
+ });
6835
+ return;
6836
+ }
6659
6837
  const outcome = await send(action === "dismiss-followup" ? {
6660
6838
  action,
6661
6839
  id: row?.followUp?.id ?? ""
6662
- } : action === "update-dependency" ? {
6840
+ } : dependency ? {
6663
6841
  action,
6664
6842
  id
6665
- } : action === "remove-bundle" || action === "update-plugin" || action === "uninstall-plugin" || action === "update-workbench" || action === "migrate-workbench" ? {
6843
+ } : byName ? {
6666
6844
  action,
6667
6845
  name: row?.pkg ?? ""
6668
- } : {
6846
+ } : marketSpec === void 0 ? {
6669
6847
  action,
6670
6848
  unit: id
6849
+ } : {
6850
+ action,
6851
+ spec: marketSpec,
6852
+ requestId: globalThis.crypto.randomUUID()
6671
6853
  });
6672
6854
  if (!outcome.ok) {
6673
6855
  onChanged({ force: true });
@@ -6732,6 +6914,99 @@ window.__ModuleLoader__.load({
6732
6914
  });
6733
6915
  };
6734
6916
  }
6917
+ //#endregion
6918
+ //#region src/app/layouts/rightbar/panel-write.ts
6919
+ var PANEL_SETTLE_MS = 4e3;
6920
+ function rowKey(row) {
6921
+ return `${row.id}:${row.shown ? "1" : "0"}:${row.source}`;
6922
+ }
6923
+ function rowKeys(rows) {
6924
+ return rows.map(rowKey).join(",");
6925
+ }
6926
+ function panelBoardSignature(units, plugins, own) {
6927
+ return `${rowKeys(units)}|${rowKeys(plugins)}|${own ? "1" : "0"}`;
6928
+ }
6929
+ function machineBoardSignature(defaults, changed) {
6930
+ const counts = Object.entries(changed).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0).map(([id, count]) => `${id}:${String(count)}`);
6931
+ return `${[...defaults].sort().join(",")}|${counts.join(",")}`;
6932
+ }
6933
+ function nextPending(pending, signature) {
6934
+ return pending !== null && pending !== signature ? null : pending;
6935
+ }
6936
+ function useBoardSettle(signature) {
6937
+ const [held, setHeld] = (0, react.useState)(null);
6938
+ (0, react.useEffect)(() => {
6939
+ setHeld((current) => nextPending(current, signature));
6940
+ }, [signature]);
6941
+ (0, react.useEffect)(() => {
6942
+ if (held === null) return void 0;
6943
+ const timer = setTimeout(() => setHeld(null), PANEL_SETTLE_MS);
6944
+ return () => clearTimeout(timer);
6945
+ }, [held]);
6946
+ return {
6947
+ pending: held !== null,
6948
+ begin: () => setHeld(signature),
6949
+ clear: () => setHeld(null)
6950
+ };
6951
+ }
6952
+ //#endregion
6953
+ //#region src/app/layouts/rightbar/use-market-default.ts
6954
+ function useMarketDefault(input) {
6955
+ const { t, mocked, defaults, changed, setNotice } = input;
6956
+ const boardWrite = useHostWrite({
6957
+ channel: "prefs",
6958
+ resource: "panels",
6959
+ networkText: t("panels.failed")
6960
+ });
6961
+ const [writing, setWriting] = (0, react.useState)(false);
6962
+ const settle = useBoardSettle(machineBoardSignature(defaults, changed));
6963
+ const setDefault = async (id, next) => {
6964
+ if (mocked) return;
6965
+ setWriting(true);
6966
+ settle.begin();
6967
+ const outcome = await boardWrite.send({
6968
+ action: next ? "show" : "hide",
6969
+ id,
6970
+ scope: "machine"
6971
+ });
6972
+ setWriting(false);
6973
+ if (!outcome.ok) {
6974
+ settle.clear();
6975
+ setNotice(t("panels.failed"));
6976
+ }
6977
+ };
6978
+ return {
6979
+ pending: writing || settle.pending,
6980
+ setDefault
6981
+ };
6982
+ }
6983
+ var market_check_module_default = {
6984
+ check: "_check_1g6tv_1",
6985
+ status: "_status_1g6tv_8",
6986
+ button: "_button_1g6tv_15",
6987
+ icon: "_icon_1g6tv_22"
6988
+ };
6989
+ //#endregion
6990
+ //#region src/app/layouts/market/market-check.tsx
6991
+ function MarketCheck({ t, checkedAt, checking, failed, disabled, onCheck }) {
6992
+ const status = checking ? t("panels.market.checkingNow") : failed ? t("panels.market.checkFailed") : checkedAt === null ? null : t("panels.market.checkedAt", { time: checkedAgo(checkedAt, t) });
6993
+ return /* @__PURE__ */ (0, react.createElement)("span", { className: market_check_module_default.check }, status === null ? null : /* @__PURE__ */ (0, react.createElement)("span", {
6994
+ className: market_check_module_default.status,
6995
+ "aria-live": "polite"
6996
+ }, status), /* @__PURE__ */ (0, react.createElement)(Tip, { label: t("panels.market.checkUpdates") }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
6997
+ type: "button",
6998
+ variant: "ghost",
6999
+ size: "sm",
7000
+ className: market_check_module_default.button,
7001
+ "aria-label": t("panels.market.checkUpdates"),
7002
+ disabled: disabled || checking,
7003
+ icon: /* @__PURE__ */ (0, react.createElement)("span", {
7004
+ className: `${market_check_module_default.icon}${checking ? " wb-spinning" : ""}`,
7005
+ "aria-hidden": "true"
7006
+ }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, { size: 14 })),
7007
+ onClick: onCheck
7008
+ })));
7009
+ }
6735
7010
  var PanelFoot_module_default = {
6736
7011
  foot: "_foot_1ud1j_1",
6737
7012
  footText: "_footText_1ud1j_13",
@@ -6749,6 +7024,7 @@ window.__ModuleLoader__.load({
6749
7024
  "remove-bundle",
6750
7025
  "uninstall-plugin"
6751
7026
  ];
7027
+ var NO_ROWS = [];
6752
7028
  function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
6753
7029
  const [acknowledged, setAcknowledged] = (0, react.useState)(false);
6754
7030
  return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.RiskConfirmation, {
@@ -6765,9 +7041,12 @@ window.__ModuleLoader__.load({
6765
7041
  onConfirm
6766
7042
  });
6767
7043
  }
6768
- function MarketBody({ t, self, shown, pluginList, installedList, shared, pending, failed, notice, act, onConfirming, setDefault, boardBusy }) {
7044
+ function MarketBody({ t, self, shown, pluginList, installedList, shared, pending, failed, notice, act, onConfirming, setDefault, boardBusy, check }) {
6769
7045
  const failureOf = (id) => failed?.id === id ? failed.message : null;
6770
7046
  const foot = marketFootVisible(shown, installedList);
7047
+ const sections = marketSections(marketOrder([...shown, ...installedList], (row) => marketRowTitle(row, t)));
7048
+ const installed = sections.find((section) => section.id === "installed");
7049
+ const pendingSection = sections.find((section) => section.id === "not-installed");
6771
7050
  return /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, notice === null ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketNote }, notice), /* @__PURE__ */ (0, react.createElement)(MarketSection, {
6772
7051
  t,
6773
7052
  rows: self === void 0 ? [] : [self],
@@ -6781,12 +7060,25 @@ window.__ModuleLoader__.load({
6781
7060
  }), self === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("div", {
6782
7061
  className: MarketPage_module_default.marketSelfDivider,
6783
7062
  "aria-hidden": "true"
6784
- }), marketSections(marketOrder([...shown, ...installedList], (row) => marketRowTitle(row, t))).map((section) => /* @__PURE__ */ (0, react.createElement)(MarketSection, {
6785
- key: section.id,
7063
+ }), /* @__PURE__ */ (0, react.createElement)(MarketSection, {
7064
+ t,
7065
+ titleKey: "panels.market.sectionInstalled",
7066
+ icon: marketSectionIcon("installed"),
7067
+ rows: installed?.rows ?? NO_ROWS,
7068
+ keepHead: true,
7069
+ headAction: check,
7070
+ onDefault: setDefault,
7071
+ boardBusy,
7072
+ pending,
7073
+ failureOf,
7074
+ act,
7075
+ confirmActions: CONFIRM_UNINSTALL,
7076
+ onConfirming
7077
+ }), pendingSection === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(MarketSection, {
6786
7078
  t,
6787
- titleKey: section.titleKey,
6788
- icon: marketSectionIcon(section.id === "installed" ? "installed" : "pending"),
6789
- rows: section.rows,
7079
+ titleKey: pendingSection.titleKey,
7080
+ icon: marketSectionIcon("pending"),
7081
+ rows: pendingSection.rows,
6790
7082
  onDefault: setDefault,
6791
7083
  boardBusy,
6792
7084
  pending,
@@ -6794,11 +7086,12 @@ window.__ModuleLoader__.load({
6794
7086
  act,
6795
7087
  confirmActions: CONFIRM_UNINSTALL,
6796
7088
  onConfirming
6797
- })), /* @__PURE__ */ (0, react.createElement)(MarketSection, {
7089
+ }), /* @__PURE__ */ (0, react.createElement)(MarketSection, {
6798
7090
  t,
6799
7091
  titleKey: "panels.market.sectionPlugins",
6800
7092
  icon: marketSectionIcon("plugins"),
6801
7093
  rows: pluginList,
7094
+ headAction: check,
6802
7095
  onDefault: setDefault,
6803
7096
  boardBusy,
6804
7097
  pending,
@@ -6847,7 +7140,7 @@ window.__ModuleLoader__.load({
6847
7140
  busyId
6848
7141
  };
6849
7142
  }
6850
- function MarketView({ t, titleOf, manifests, installable, capabilities, freshness, onChanged, onPending, updates, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
7143
+ function MarketView({ t, titleOf, manifests, installable, capabilities, freshness, onChanged, onPending, updates, updatesCheckedAt = null, updatesFailed = false, installed, installedRead, workbench, selfUpdate, plugins, settling, mock, defaults = [], changed = {} }) {
6851
7144
  const { pending, setPending, confirming, setConfirming, failed, setFailed, notice, setNotice } = useMarketTransient({
6852
7145
  mock,
6853
7146
  onPending
@@ -6872,29 +7165,14 @@ window.__ModuleLoader__.load({
6872
7165
  channel: "provision",
6873
7166
  networkText: t("panels.failed")
6874
7167
  });
6875
- const boardWrite = useHostWrite({
6876
- channel: "prefs",
6877
- resource: "panels",
6878
- networkText: t("panels.failed")
7168
+ const { pending: defaultPending, setDefault } = useMarketDefault({
7169
+ t,
7170
+ mocked: mock !== void 0,
7171
+ defaults,
7172
+ changed,
7173
+ setNotice
6879
7174
  });
6880
- const [writingDefault, setWritingDefault] = (0, react.useState)(false);
6881
- const settleDefault = useBoardSettle(machineBoardSignature(defaults, changed));
6882
- const { busy: boardBusy } = useVisibleBusy(writingDefault || settleDefault.pending, 500);
6883
- const setDefault = async (id, next) => {
6884
- if (mock !== void 0) return;
6885
- setWritingDefault(true);
6886
- settleDefault.begin();
6887
- const outcome = await boardWrite.send({
6888
- action: next ? "show" : "hide",
6889
- id,
6890
- scope: "machine"
6891
- });
6892
- setWritingDefault(false);
6893
- if (!outcome.ok) {
6894
- settleDefault.clear();
6895
- setNotice(t("panels.failed"));
6896
- }
6897
- };
7175
+ const { busy: boardBusy } = useVisibleBusy(defaultPending, 500);
6898
7176
  const pendingRow = pendingRowOf({
6899
7177
  pending,
6900
7178
  removing,
@@ -6941,6 +7219,15 @@ window.__ModuleLoader__.load({
6941
7219
  });
6942
7220
  const settled = marketSettled(freshness, installedRead);
6943
7221
  const nothing = shown.length === 0 && self === void 0 && installedList.length === 0 && pluginList.length === 0;
7222
+ const { busy: checkingShown } = useVisibleBusy(freshness.checking, 500);
7223
+ const check = /* @__PURE__ */ (0, react.createElement)(MarketCheck, {
7224
+ t,
7225
+ checkedAt: updatesCheckedAt,
7226
+ checking: checkingShown,
7227
+ failed: updatesFailed,
7228
+ disabled: pending !== null,
7229
+ onCheck: () => onChanged({ force: true })
7230
+ });
6944
7231
  if (!settled || (settling?.size ?? 0) > 0 && shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ (0, react.createElement)(MarketChecking, { t });
6945
7232
  if (nothing) return /* @__PURE__ */ (0, react.createElement)(MarketEmpty, { t });
6946
7233
  return /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)(MarketBody, {
@@ -6956,20 +7243,31 @@ window.__ModuleLoader__.load({
6956
7243
  act,
6957
7244
  onConfirming: setConfirming,
6958
7245
  setDefault,
6959
- boardBusy
6960
- }), /* @__PURE__ */ (0, react.createElement)(ConfirmUninstall, {
7246
+ boardBusy,
7247
+ check
7248
+ }), /* @__PURE__ */ (0, react.createElement)(UninstallConfirm, {
7249
+ t,
7250
+ confirming,
7251
+ row: confirmingRow,
7252
+ onClose: () => setConfirming(null),
7253
+ act,
7254
+ rowById
7255
+ }));
7256
+ }
7257
+ function UninstallConfirm({ t, confirming, row, onClose, act, rowById }) {
7258
+ return /* @__PURE__ */ (0, react.createElement)(ConfirmUninstall, {
6961
7259
  key: confirming ?? "",
6962
7260
  t,
6963
- name: confirmingRow === void 0 ? null : marketRowTitle(confirmingRow, t),
6964
- onCancel: () => setConfirming(null),
7261
+ name: row === void 0 ? null : marketRowTitle(row, t),
7262
+ onCancel: onClose,
6965
7263
  onConfirm: () => {
6966
7264
  const id = confirming;
6967
- setConfirming(null);
7265
+ onClose();
6968
7266
  if (id === null) return;
6969
- const row = rowById.get(id);
6970
- act(id, row?.plugin === true ? "uninstall-plugin" : row?.pkg === void 0 ? "uninstall" : "remove-bundle");
7267
+ const target = rowById.get(id);
7268
+ act(id, target?.plugin === true ? "uninstall-plugin" : target?.pkg === void 0 ? "uninstall" : "remove-bundle");
6971
7269
  }
6972
- }));
7270
+ });
6973
7271
  }
6974
7272
  //#endregion
6975
7273
  //#region ../../node_modules/.pnpm/dayjs@1.11.23/node_modules/dayjs/plugin/localizedFormat.js
@@ -7243,16 +7541,20 @@ window.__ModuleLoader__.load({
7243
7541
  onError: () => setFailed(src)
7244
7542
  });
7245
7543
  }
7246
- function EntryAction({ t, entry, title, onInstall, onShowInstalled }) {
7544
+ function EntryAction({ t, entry, title, onInstall, onShowInstalled, installDisabled = false }) {
7247
7545
  const latest = latestVersionOf(entry);
7248
7546
  if (latest === void 0) return null;
7249
- if (latest.install === "installed" || latest.install === "update-available") return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
7250
- type: "button",
7251
- variant: "ghost",
7252
- size: "sm",
7253
- "aria-label": t("panels.discover.openInstalled", { name: title }),
7254
- onClick: () => onShowInstalled(entry.name)
7255
- }, t(latest.install === "update-available" ? "panels.discover.cardUpdate" : "panels.discover.cardInstalled"));
7547
+ if (latest.install === "installed" || latest.install === "update-available") {
7548
+ const update = latest.install === "update-available";
7549
+ return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
7550
+ type: "button",
7551
+ variant: "ghost",
7552
+ size: "sm",
7553
+ className: update ? MarketPage_module_default.discoverUpdateAction : void 0,
7554
+ "aria-label": t("panels.discover.openInstalled", { name: title }),
7555
+ onClick: () => onShowInstalled(entry.name)
7556
+ }, t(update ? "panels.discover.cardUpdate" : "panels.discover.cardInstalled"));
7557
+ }
7256
7558
  if (latest.compat === "incompatible") return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
7257
7559
  label: t("panels.discover.noCompatibleVersion", { runtime: latest.engines?.dsh ?? "" }),
7258
7560
  side: "bottom",
@@ -7270,11 +7572,12 @@ window.__ModuleLoader__.load({
7270
7572
  type: "button",
7271
7573
  variant: "outline",
7272
7574
  size: "sm",
7575
+ disabled: installDisabled,
7273
7576
  "aria-label": t("panels.discover.installTitle", { name: title }),
7274
7577
  onClick: () => onInstall(entry, latest)
7275
7578
  }, t("panels.discover.cardInstall"));
7276
7579
  }
7277
- function EntryCard({ t, locale, entry, onOpen, onInstall, onShowInstalled }) {
7580
+ function EntryCard({ t, locale, entry, onOpen, onInstall, onShowInstalled, installDisabled = false }) {
7278
7581
  const title = displayTitleOf(entry, locale);
7279
7582
  const latest = latestVersionOf(entry);
7280
7583
  const description = marketText(entry.description, locale);
@@ -7299,10 +7602,11 @@ window.__ModuleLoader__.load({
7299
7602
  entry,
7300
7603
  title,
7301
7604
  onInstall,
7302
- onShowInstalled
7605
+ onShowInstalled,
7606
+ installDisabled
7303
7607
  })));
7304
7608
  }
7305
- function DiscoverRows({ t, locale, entries, onOpen, onInstall, onShowInstalled }) {
7609
+ function DiscoverRows({ t, locale, entries, onOpen, onInstall, onShowInstalled, installDisabled }) {
7306
7610
  return /* @__PURE__ */ (0, react.createElement)("ul", { className: MarketPage_module_default.discoverList }, entries.map((entry) => /* @__PURE__ */ (0, react.createElement)(EntryCard, {
7307
7611
  key: entry.name,
7308
7612
  t,
@@ -7310,12 +7614,13 @@ window.__ModuleLoader__.load({
7310
7614
  entry,
7311
7615
  onOpen,
7312
7616
  onInstall,
7313
- onShowInstalled
7617
+ onShowInstalled,
7618
+ installDisabled: installDisabled === true
7314
7619
  })));
7315
7620
  }
7316
7621
  //#endregion
7317
7622
  //#region src/app/layouts/market/discover-versions.tsx
7318
- function DiscoverVersions({ t, locale, entry, onInstall }) {
7623
+ function DiscoverVersions({ t, locale, entry, onInstall, installDisabled = false }) {
7319
7624
  const latest = latestVersionOf(entry);
7320
7625
  return /* @__PURE__ */ (0, react.createElement)("ul", {
7321
7626
  className: MarketPage_module_default.discoverVersions,
@@ -7336,6 +7641,7 @@ window.__ModuleLoader__.load({
7336
7641
  type: "button",
7337
7642
  variant: "ghost",
7338
7643
  size: "sm",
7644
+ disabled: installDisabled,
7339
7645
  "aria-label": t("panels.discover.installVersionTitle", {
7340
7646
  name: entry.name,
7341
7647
  version: version.version
@@ -7348,6 +7654,8 @@ window.__ModuleLoader__.load({
7348
7654
  //#region ../shared/dist/contract/protocol/market-index.js
7349
7655
  var MARKET_DISCOVER_ROUTE = "panels/market-discover";
7350
7656
  var MARKET_DOC_ROUTE = "panels/market-doc";
7657
+ var MARKET_GIT_PROBE_ROUTE = "panels/git-probe";
7658
+ var MARKET_INSTALLED_ROUTE = "panels/market-installed";
7351
7659
  var MARKET_PUBLISH_PREVIEW_ROUTE = "panels/market-publish-preview";
7352
7660
  var MARKET_SOURCES_ROUTE = "panels/market-sources";
7353
7661
  //#endregion
@@ -7358,6 +7666,12 @@ window.__ModuleLoader__.load({
7358
7666
  function readMarketSources() {
7359
7667
  return apiGet(MARKET_SOURCES_ROUTE);
7360
7668
  }
7669
+ function readGitProbe(url) {
7670
+ return apiGet(MARKET_GIT_PROBE_ROUTE, { url });
7671
+ }
7672
+ function readMarketInstalled() {
7673
+ return apiGet(MARKET_INSTALLED_ROUTE);
7674
+ }
7361
7675
  function readMarketDoc(name, version, kind) {
7362
7676
  return apiGet(MARKET_DOC_ROUTE, {
7363
7677
  name,
@@ -7424,13 +7738,13 @@ window.__ModuleLoader__.load({
7424
7738
  }
7425
7739
  //#endregion
7426
7740
  //#region src/app/layouts/market/discover-detail.tsx
7427
- function factLabel(t, fact) {
7741
+ function factLabel$1(t, fact) {
7428
7742
  return t(fact.kind === "package" ? "panels.discover.factPackage" : fact.kind === "registry" ? "panels.discover.factRegistry" : fact.kind === "repository" ? "panels.discover.factRepository" : fact.kind === "commit" ? "panels.discover.factCommit" : "panels.discover.factDirectory");
7429
7743
  }
7430
7744
  function FactRow({ kind, children }) {
7431
7745
  return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverFactRow }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverFactKind }, kind), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverFactValue }, children));
7432
7746
  }
7433
- function OverviewPanel({ t, locale, entry, latest, market, onInstall }) {
7747
+ function OverviewPanel({ t, locale, entry, latest, market, onInstall, installDisabled }) {
7434
7748
  const description = marketText(entry.description, locale);
7435
7749
  const date = publishDateText(latest?.publishTimestamp, locale, "long");
7436
7750
  const facts = latest === void 0 ? [] : sourceFactsOf(entry.name, latest);
@@ -7450,12 +7764,13 @@ window.__ModuleLoader__.load({
7450
7764
  rel: "noopener noreferrer"
7451
7765
  }, entry.homepage)), facts.map((fact) => /* @__PURE__ */ (0, react.createElement)(FactRow, {
7452
7766
  key: `${fact.kind}:${fact.value}`,
7453
- kind: factLabel(t, fact)
7767
+ kind: factLabel$1(t, fact)
7454
7768
  }, /* @__PURE__ */ (0, react.createElement)("code", { className: MarketPage_module_default.discoverCode }, fact.value))), latest === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(FactRow, { kind: t("panels.discover.factPublished") }, date), entry.category === void 0 ? null : /* @__PURE__ */ (0, react.createElement)(FactRow, { kind: t("panels.discover.factCategory") }, entry.category), entry.labels.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)(FactRow, { kind: t("panels.discover.factLabels") }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverTags }, entry.labels.map((label) => /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Tag, { key: label }, label)))), /* @__PURE__ */ (0, react.createElement)(FactRow, { kind: t("panels.discover.factMarket") }, market))), latest === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("section", { className: MarketPage_module_default.discoverSection }, /* @__PURE__ */ (0, react.createElement)("h4", { className: MarketPage_module_default.discoverSectionTitle }, t("panels.discover.detailVersions")), /* @__PURE__ */ (0, react.createElement)(DiscoverVersions, {
7455
7769
  t,
7456
7770
  locale,
7457
7771
  entry,
7458
- onInstall
7772
+ onInstall,
7773
+ installDisabled: installDisabled === true
7459
7774
  })));
7460
7775
  }
7461
7776
  function DiscoverDetail(props) {
@@ -7502,7 +7817,8 @@ window.__ModuleLoader__.load({
7502
7817
  entry,
7503
7818
  title,
7504
7819
  onInstall: props.onInstall,
7505
- onShowInstalled: props.onShowInstalled
7820
+ onShowInstalled: props.onShowInstalled,
7821
+ installDisabled: props.installDisabled === true
7506
7822
  })), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverDetailTabs }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.SegmentedTabs, {
7507
7823
  className: MarketPage_module_default.discoverDetailTabList,
7508
7824
  items: tabItems,
@@ -7520,7 +7836,8 @@ window.__ModuleLoader__.load({
7520
7836
  entry,
7521
7837
  latest,
7522
7838
  market: props.market,
7523
- onInstall: props.onInstall
7839
+ onInstall: props.onInstall,
7840
+ installDisabled: props.installDisabled === true
7524
7841
  })) : null, tab === "overview" || latest === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("div", {
7525
7842
  className: MarketPage_module_default.discoverDetailPanel,
7526
7843
  id: `${idPrefix}-panel-${tab}`,
@@ -7535,12 +7852,185 @@ window.__ModuleLoader__.load({
7535
7852
  })));
7536
7853
  }
7537
7854
  //#endregion
7855
+ //#region src/app/layouts/market/discover-installing.tsx
7856
+ function DiscoverInstalling({ t, name, cancelling, onCancel }) {
7857
+ return /* @__PURE__ */ (0, react.createElement)("p", {
7858
+ className: MarketPage_module_default.discoverInstallBar,
7859
+ role: "status"
7860
+ }, /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 14 }), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverInstallText }, t("panels.discover.installingNamed", { name })), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
7861
+ type: "button",
7862
+ variant: "outline",
7863
+ size: "sm",
7864
+ disabled: cancelling,
7865
+ "aria-busy": cancelling,
7866
+ onClick: onCancel
7867
+ }, t(cancelling ? "panels.discover.cancelling" : "panels.discover.cancelInstall")));
7868
+ }
7869
+ //#endregion
7870
+ //#region src/app/layouts/market/discover-transport.tsx
7871
+ function stateText(t, state) {
7872
+ if (state === "ok") return "";
7873
+ if (state === "auth") return t("panels.discover.transportAuth");
7874
+ if (state === "unreachable") return t("panels.discover.transportUnreachable");
7875
+ if (state === "unknown") return t("panels.discover.transportUnknown");
7876
+ return t("panels.discover.transportChecking");
7877
+ }
7878
+ function kindText(t, kind) {
7879
+ return t(kind === "ssh" ? "panels.discover.transportSsh" : "panels.discover.transportHttps");
7880
+ }
7881
+ function DiscoverTransport({ t, transport }) {
7882
+ const [open, setOpen] = (0, react.useState)(false);
7883
+ const chosenRow = transport.rows.find((row) => row.url === transport.chosen);
7884
+ const chosenState = chosenRow === void 0 ? void 0 : transport.states[chosenRow.url] ?? "checking";
7885
+ const probing = transport.probing;
7886
+ const summary = chosenRow !== void 0 ? kindText(t, chosenRow.kind) : probing ? t("panels.discover.transportChecking") : t("panels.discover.transportNone");
7887
+ const summaryState = probing || chosenState === void 0 ? "" : stateText(t, chosenState);
7888
+ const needsAuth = transport.rows.length > 0 && transport.rows.every((row) => transport.states[row.url] === "auth") && transport.customState !== "ok";
7889
+ const customBusy = transport.customState === "checking";
7890
+ return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverTransport }, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverTransportHead }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverTransportTitle }, t("panels.discover.transportTitle")), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverTransportKind }, summary), summaryState === "" ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverTransportState }, summaryState), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
7891
+ type: "button",
7892
+ variant: "ghost",
7893
+ size: "sm",
7894
+ onClick: () => setOpen((value) => !value)
7895
+ }, t(open ? "panels.discover.transportChangeHide" : "panels.discover.transportChange"))), open ? /* @__PURE__ */ (0, react.createElement)("div", {
7896
+ className: MarketPage_module_default.discoverTransportRows,
7897
+ role: "radiogroup",
7898
+ "aria-label": t("panels.discover.transportTitle")
7899
+ }, transport.rows.map((row) => {
7900
+ const state = transport.states[row.url] ?? "checking";
7901
+ const label = stateText(t, state);
7902
+ return /* @__PURE__ */ (0, react.createElement)("label", {
7903
+ key: row.url,
7904
+ className: MarketPage_module_default.discoverTransportRow,
7905
+ "data-state": state,
7906
+ title: row.url
7907
+ }, /* @__PURE__ */ (0, react.createElement)("input", {
7908
+ type: "radio",
7909
+ className: MarketPage_module_default.discoverTransportRadio,
7910
+ name: "discover-git-transport",
7911
+ value: row.url,
7912
+ checked: transport.chosen === row.url,
7913
+ onChange: () => transport.setChosen(row.url)
7914
+ }), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverTransportKind }, kindText(t, row.kind)), label === "" ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverTransportState }, label));
7915
+ })) : null, open ? /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverTransportCustom }, /* @__PURE__ */ (0, react.createElement)(TextField, {
7916
+ type: "text",
7917
+ className: MarketPage_module_default.discoverTransportInput,
7918
+ value: transport.custom,
7919
+ placeholder: t("panels.discover.transportPlaceholder"),
7920
+ "aria-label": t("panels.discover.transportPlaceholder"),
7921
+ spellCheck: false,
7922
+ autoComplete: "off",
7923
+ onChange: (event) => transport.setCustom(event.target.value),
7924
+ onKeyDown: (event) => {
7925
+ if (event.key === "Enter") transport.checkCustom();
7926
+ }
7927
+ }), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
7928
+ type: "button",
7929
+ variant: "outline",
7930
+ size: "sm",
7931
+ disabled: transport.custom.trim() === "" || customBusy,
7932
+ "aria-busy": customBusy,
7933
+ onClick: transport.checkCustom
7934
+ }, t(customBusy ? "panels.discover.transportChecking" : "panels.discover.transportTest")), transport.customState === null || stateText(t, transport.customState) === "" ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverTransportState }, stateText(t, transport.customState))) : null, needsAuth ? /* @__PURE__ */ (0, react.createElement)("p", {
7935
+ className: MarketPage_module_default.discoverNotice,
7936
+ role: "note"
7937
+ }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
7938
+ size: 14,
7939
+ "aria-hidden": "true"
7940
+ }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.transportNeedsAuth"))) : null);
7941
+ }
7942
+ //#endregion
7943
+ //#region src/app/layouts/market/use-git-transport.ts
7944
+ function probeOrUnknown(url) {
7945
+ return readGitProbe(url).then((response) => response.ok ? response.status : "unknown").catch(() => "unknown");
7946
+ }
7947
+ function usable(state) {
7948
+ return state !== void 0 && state !== "auth" && state !== "checking";
7949
+ }
7950
+ function defaultOf(rows, states) {
7951
+ const readable = rows.find((row) => states[row.url] === "ok");
7952
+ if (readable !== void 0) return readable.url;
7953
+ const fallback = rows.find((row) => usable(states[row.url]));
7954
+ return fallback === void 0 ? null : fallback.url;
7955
+ }
7956
+ function useGitTransport(source, preferredKind) {
7957
+ const rows = (0, react.useMemo)(() => {
7958
+ if (source === null) return [];
7959
+ const candidates = gitTransportCandidates(source.url);
7960
+ if (preferredKind === void 0) return candidates;
7961
+ return [...candidates].sort((left, right) => Number(right.kind === preferredKind) - Number(left.kind === preferredKind));
7962
+ }, [source, preferredKind]);
7963
+ const [results, setResults] = (0, react.useState)({});
7964
+ const [picked, setPicked] = (0, react.useState)(null);
7965
+ const [custom, setCustom] = (0, react.useState)("");
7966
+ const [customState, setCustomState] = (0, react.useState)(null);
7967
+ const generation = (0, react.useRef)(0);
7968
+ (0, react.useEffect)(() => {
7969
+ const mirror = ++generation.current;
7970
+ for (const row of rows) probeOrUnknown(row.url).then((state) => {
7971
+ if (generation.current !== mirror) return;
7972
+ setResults((current) => ({
7973
+ ...current,
7974
+ [row.url]: state
7975
+ }));
7976
+ });
7977
+ return () => {
7978
+ generation.current += 1;
7979
+ };
7980
+ }, [rows]);
7981
+ const checkCustom = (0, react.useCallback)(() => {
7982
+ const wanted = custom.trim();
7983
+ if (wanted === "") return;
7984
+ const mirror = ++generation.current;
7985
+ setCustomState("checking");
7986
+ probeOrUnknown(wanted).then((state) => {
7987
+ if (generation.current !== mirror) return;
7988
+ setCustomState(state);
7989
+ if (usable(state)) setPicked(wanted);
7990
+ });
7991
+ }, [custom]);
7992
+ const states = (0, react.useMemo)(() => {
7993
+ const next = {};
7994
+ for (const row of rows) next[row.url] = results[row.url] ?? "checking";
7995
+ return next;
7996
+ }, [results, rows]);
7997
+ const chosen = picked !== null && (rows.some((row) => row.url === picked) || picked === custom.trim()) ? picked : defaultOf(rows, states);
7998
+ return {
7999
+ rows,
8000
+ chosen,
8001
+ states,
8002
+ custom,
8003
+ customState,
8004
+ probing: rows.some((row) => states[row.url] === "checking"),
8005
+ ready: chosen !== null,
8006
+ setChosen: setPicked,
8007
+ setCustom,
8008
+ checkCustom
8009
+ };
8010
+ }
8011
+ //#endregion
7538
8012
  //#region src/app/layouts/market/discover-confirm.tsx
7539
- function DiscoverConfirm({ t, locale, choice, onCancel, onConfirm }) {
8013
+ function DiscoverConfirm({ t, locale, choice, transports, onCancel, onConfirm }) {
7540
8014
  if (choice === null) return null;
8015
+ return /* @__PURE__ */ (0, react.createElement)(DiscoverConfirmBody, {
8016
+ t,
8017
+ locale,
8018
+ choice,
8019
+ transports,
8020
+ onCancel,
8021
+ onConfirm
8022
+ });
8023
+ }
8024
+ function factLabel(t, kind) {
8025
+ return t(kind === "package" ? "panels.discover.factPackage" : kind === "registry" ? "panels.discover.factRegistry" : kind === "repository" ? "panels.discover.factRepository" : kind === "commit" ? "panels.discover.factCommit" : "panels.discover.factDirectory");
8026
+ }
8027
+ function DiscoverConfirmBody({ t, locale, choice, transports, onCancel, onConfirm }) {
8028
+ const git = choice.version.source.type === "git" ? choice.version.source : null;
8029
+ const host = git === null ? void 0 : gitAddressOf(git.url)?.host;
8030
+ const transport = useGitTransport(git, host === void 0 ? void 0 : transports[host]);
7541
8031
  const title = displayTitleOf(choice.entry, locale) || choice.entry.name;
7542
- const facts = sourceFactsOf(choice.entry.name, choice.version);
7543
- const factLabel = (kind) => t(kind === "package" ? "panels.discover.factPackage" : kind === "registry" ? "panels.discover.factRegistry" : kind === "repository" ? "panels.discover.factRepository" : kind === "commit" ? "panels.discover.factCommit" : "panels.discover.factDirectory");
8032
+ const facts = sourceFactsOf(choice.entry.name, choice.version).filter((fact) => git === null || fact.kind !== "repository");
8033
+ const ready = git === null || transport.ready;
7544
8034
  return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
7545
8035
  open: true,
7546
8036
  onClose: onCancel,
@@ -7555,15 +8045,20 @@ window.__ModuleLoader__.load({
7555
8045
  type: "button",
7556
8046
  variant: "primary",
7557
8047
  autoFocus: true,
7558
- onClick: onConfirm
7559
- }, t("panels.discover.cardInstall")))
8048
+ disabled: !ready,
8049
+ "aria-busy": git !== null && transport.probing,
8050
+ onClick: () => onConfirm(transport.chosen ?? void 0)
8051
+ }, git !== null && transport.probing ? /* @__PURE__ */ (0, react.createElement)(Spinner, { size: 12 }) : null, t(git !== null && transport.probing ? "panels.discover.transportChecking" : "panels.discover.cardInstall")))
7560
8052
  }, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverDialogBody }, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverConfirmHead }, /* @__PURE__ */ (0, react.createElement)("span", {
7561
8053
  className: MarketPage_module_default.discoverArtwork,
7562
8054
  "aria-hidden": "true"
7563
- }, /* @__PURE__ */ (0, react.createElement)(MarketIcon, { src: choice.entry.icon })), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverStrong }, title), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverMeta }, choice.version.version))), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverFacts }, choice.entry.author === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverFactRow }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverFactKind }, t("panels.discover.factAuthor")), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverFactValue }, choice.entry.author)), facts.map((fact) => /* @__PURE__ */ (0, react.createElement)("div", {
8055
+ }, /* @__PURE__ */ (0, react.createElement)(MarketIcon, { src: choice.entry.icon })), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverStrong }, title), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverMeta }, choice.version.version))), git === null ? null : /* @__PURE__ */ (0, react.createElement)(DiscoverTransport, {
8056
+ t,
8057
+ transport
8058
+ }), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverFacts }, choice.entry.author === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverFactRow }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverFactKind }, t("panels.discover.factAuthor")), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverFactValue }, choice.entry.author)), facts.map((fact) => /* @__PURE__ */ (0, react.createElement)("div", {
7564
8059
  key: `${fact.kind}:${fact.value}`,
7565
8060
  className: MarketPage_module_default.discoverFactRow
7566
- }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverFactKind }, factLabel(fact.kind)), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverFactValue }, /* @__PURE__ */ (0, react.createElement)("code", { className: MarketPage_module_default.discoverCode }, fact.value))))), /* @__PURE__ */ (0, react.createElement)("p", {
8061
+ }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverFactKind }, factLabel(t, fact.kind)), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverFactValue }, /* @__PURE__ */ (0, react.createElement)("code", { className: MarketPage_module_default.discoverCode }, fact.value))))), /* @__PURE__ */ (0, react.createElement)("p", {
7567
8062
  className: MarketPage_module_default.discoverNotice,
7568
8063
  role: "note"
7569
8064
  }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
@@ -7840,6 +8335,7 @@ window.__ModuleLoader__.load({
7840
8335
  t,
7841
8336
  locale: d.locale,
7842
8337
  choice: d.choice,
8338
+ transports: d.transports,
7843
8339
  onCancel: () => d.setChoice(null),
7844
8340
  onConfirm: d.install
7845
8341
  }), /* @__PURE__ */ (0, react.createElement)(DiscoverInitDialog, {
@@ -8054,6 +8550,7 @@ window.__ModuleLoader__.load({
8054
8550
  const change = changeOf(value);
8055
8551
  if (change === void 0) return { kind: "quiet" };
8056
8552
  if (SHIPPED.includes(change.application)) return { kind: "done" };
8553
+ if (change.application === "cancelled") return { kind: "cancelled" };
8057
8554
  if (change.application !== "failed") return { kind: "quiet" };
8058
8555
  return {
8059
8556
  kind: "failed",
@@ -8074,6 +8571,8 @@ window.__ModuleLoader__.load({
8074
8571
  const [manageOpen, setManageOpen] = (0, react.useState)(false);
8075
8572
  const [initOpen, setInitOpen] = (0, react.useState)(false);
8076
8573
  const [choice, setChoice] = (0, react.useState)(null);
8574
+ const [installing, setInstalling] = (0, react.useState)(null);
8575
+ const [cancelling, setCancelling] = (0, react.useState)(false);
8077
8576
  const [notice, setNotice] = (0, react.useState)(null);
8078
8577
  const [addingSource, setAddingSource] = (0, react.useState)(false);
8079
8578
  const [pendingSourceId, setPendingSourceId] = (0, react.useState)(null);
@@ -8091,6 +8590,10 @@ window.__ModuleLoader__.load({
8091
8590
  channel: "provision",
8092
8591
  networkText: t("panels.discover.failed")
8093
8592
  });
8593
+ const cancel = useHostWrite({
8594
+ channel: "provision",
8595
+ networkText: t("panels.discover.failed")
8596
+ });
8094
8597
  const loadSources = (0, react.useCallback)(async () => {
8095
8598
  const ticket = sourceTicket.current + 1;
8096
8599
  sourceTicket.current = ticket;
@@ -8099,7 +8602,8 @@ window.__ModuleLoader__.load({
8099
8602
  if (response === null || !response.ok) return;
8100
8603
  setKnownSources({
8101
8604
  sources: sourceRowsOf(response.sources),
8102
- selected: response.selected
8605
+ selected: response.selected,
8606
+ transports: response.transports ?? {}
8103
8607
  });
8104
8608
  }, []);
8105
8609
  const load = (0, react.useCallback)(async (force = false) => {
@@ -8119,7 +8623,8 @@ window.__ModuleLoader__.load({
8119
8623
  setPayload(response);
8120
8624
  setKnownSources({
8121
8625
  sources: response.sources,
8122
- selected: response.selected
8626
+ selected: response.selected,
8627
+ transports: {}
8123
8628
  });
8124
8629
  setLimit(50);
8125
8630
  }, [t]);
@@ -8171,6 +8676,7 @@ window.__ModuleLoader__.load({
8171
8676
  if (payload?.problem === void 0 || payload.selected === null) return null;
8172
8677
  return {
8173
8678
  id: payload.selected,
8679
+ kind: payload.problem.kind,
8174
8680
  detail: payload.problem.detail ?? ""
8175
8681
  };
8176
8682
  }, [payload]);
@@ -8284,7 +8790,7 @@ window.__ModuleLoader__.load({
8284
8790
  setDetail(null);
8285
8791
  beginSwitch();
8286
8792
  setKnownSources((current) => current === null ? current : {
8287
- sources: current.sources,
8793
+ ...current,
8288
8794
  selected: id
8289
8795
  });
8290
8796
  sources.send({
@@ -8301,14 +8807,25 @@ window.__ModuleLoader__.load({
8301
8807
  await load(true);
8302
8808
  });
8303
8809
  };
8304
- const install = () => {
8305
- if (choice === null) return;
8306
- const target = marketInstallTarget(choice.entry.name, choice.version.version, choice.version.source);
8810
+ const install = (url) => {
8811
+ if (choice === null || installing !== null) return;
8812
+ const source = choice.version.source;
8813
+ const target = marketInstallTarget(choice.entry.name, choice.version.version, source.type === "git" && url !== void 0 ? {
8814
+ ...source,
8815
+ url
8816
+ } : source);
8817
+ const name = displayTitleOf(choice.entry, locale);
8818
+ const requestId = globalThis.crypto.randomUUID();
8307
8819
  setChoice(null);
8308
8820
  setNotice(null);
8821
+ setInstalling({
8822
+ name,
8823
+ requestId
8824
+ });
8309
8825
  provision.send({
8310
8826
  action: "install-version",
8311
8827
  spec: target.spec,
8828
+ requestId,
8312
8829
  ...target.registry === void 0 ? {} : { registry: target.registry }
8313
8830
  }).then((outcome) => {
8314
8831
  if (!outcome.ok) return;
@@ -8318,9 +8835,25 @@ window.__ModuleLoader__.load({
8318
8835
  onInstalled();
8319
8836
  return;
8320
8837
  }
8838
+ if (verdict.kind === "cancelled") {
8839
+ setNotice(t("panels.discover.installCancelled", { name }));
8840
+ onInstalled();
8841
+ return;
8842
+ }
8321
8843
  if (verdict.kind !== "done") return;
8322
- setNotice(t("panels.discover.installedDone", { name: choice.entry.name }));
8844
+ setNotice(t("panels.discover.installedDone", { name }));
8323
8845
  onInstalled();
8846
+ }).finally(() => {
8847
+ setInstalling(null);
8848
+ setCancelling(false);
8849
+ });
8850
+ };
8851
+ const cancelInstall = () => {
8852
+ if (installing === null || cancelling) return;
8853
+ setCancelling(true);
8854
+ cancel.send({
8855
+ action: "cancel-install",
8856
+ requestId: installing.requestId
8324
8857
  });
8325
8858
  };
8326
8859
  const reload = () => {
@@ -8337,6 +8870,7 @@ window.__ModuleLoader__.load({
8337
8870
  failure,
8338
8871
  sources: knownSources?.sources ?? payload?.sources ?? [],
8339
8872
  selected: knownSources?.selected ?? payload?.selected ?? null,
8873
+ transports: knownSources?.transports ?? {},
8340
8874
  entries,
8341
8875
  shown,
8342
8876
  total: sorted.length,
@@ -8352,6 +8886,9 @@ window.__ModuleLoader__.load({
8352
8886
  writeFailed: sources.failed,
8353
8887
  provisionFailed: provision.failed,
8354
8888
  busy: sources.busy,
8889
+ installing: installing === null ? null : installing.name,
8890
+ cancelling,
8891
+ installDisabled: installing !== null,
8355
8892
  addingSource,
8356
8893
  manageOpen,
8357
8894
  problem,
@@ -8369,7 +8906,10 @@ window.__ModuleLoader__.load({
8369
8906
  openDetail: (name) => setDetail(name),
8370
8907
  closeDetail: () => setDetail(null),
8371
8908
  setDetailEntry: setDetail,
8372
- setChoice,
8909
+ setChoice: (value) => {
8910
+ if (value !== null && installing !== null) return;
8911
+ setChoice(value);
8912
+ },
8373
8913
  setManageOpen,
8374
8914
  setInitOpen,
8375
8915
  initialize,
@@ -8378,7 +8918,8 @@ window.__ModuleLoader__.load({
8378
8918
  addSource,
8379
8919
  removeSourceById,
8380
8920
  selectSource,
8381
- install
8921
+ install,
8922
+ cancelInstall
8382
8923
  };
8383
8924
  }
8384
8925
  //#endregion
@@ -8443,15 +8984,21 @@ window.__ModuleLoader__.load({
8443
8984
  }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
8444
8985
  size: 14,
8445
8986
  "aria-hidden": "true"
8446
- }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.stale"))) : null, uninitialized === null ? readFailed === null ? null : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
8987
+ }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.stale"))) : null, uninitialized === null ? readFailed === null ? null : /* @__PURE__ */ (0, react.createElement)(DiscoverReadFailure, {
8447
8988
  t,
8448
8989
  text: readFailed,
8990
+ auth: d.problem?.kind === "git-auth",
8449
8991
  onRetry: d.reload
8450
8992
  }) : /* @__PURE__ */ (0, react.createElement)(DiscoverUninitialized, {
8451
8993
  t,
8452
8994
  path: uninitialized.path,
8453
8995
  empty: uninitialized.empty,
8454
8996
  onInit: () => d.setInitOpen(true)
8997
+ }), d.installing === null ? null : /* @__PURE__ */ (0, react.createElement)(DiscoverInstalling, {
8998
+ t,
8999
+ name: d.installing,
9000
+ cancelling: d.cancelling,
9001
+ onCancel: d.cancelInstall
8455
9002
  }), d.notice === null ? null : /* @__PURE__ */ (0, react.createElement)("p", {
8456
9003
  className: MarketPage_module_default.discoverNotice,
8457
9004
  role: "note"
@@ -8468,7 +9015,8 @@ window.__ModuleLoader__.load({
8468
9015
  entry,
8469
9016
  version
8470
9017
  }),
8471
- onShowInstalled
9018
+ onShowInstalled,
9019
+ installDisabled: d.installDisabled
8472
9020
  }) : readFailed !== null || uninitialized !== null || retrying ? null : d.shown.length === 0 ? /* @__PURE__ */ (0, react.createElement)(DiscoverEmptyText, { text: emptyText }) : /* @__PURE__ */ (0, react.createElement)(DiscoverRows, {
8473
9021
  t,
8474
9022
  locale: d.locale,
@@ -8478,7 +9026,8 @@ window.__ModuleLoader__.load({
8478
9026
  entry,
8479
9027
  version
8480
9028
  }),
8481
- onShowInstalled
9029
+ onShowInstalled,
9030
+ installDisabled: d.installDisabled
8482
9031
  }), d.detailEntry !== null || d.total <= d.shown.length ? null : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
8483
9032
  type: "button",
8484
9033
  variant: "outline",
@@ -8491,7 +9040,7 @@ window.__ModuleLoader__.load({
8491
9040
  }
8492
9041
  //#endregion
8493
9042
  //#region src/app/layouts/market/market-header.tsx
8494
- function MarketHeader({ t, idPrefix, tab, busy, checking, onTab, onReload, onAdd }) {
9043
+ function MarketHeader({ t, idPrefix, tab, busy, onTab, onAdd }) {
8495
9044
  const tabItems = (0, react.useMemo)(() => [{
8496
9045
  value: "installed",
8497
9046
  label: t("panels.market.tabInstalled"),
@@ -8503,23 +9052,14 @@ window.__ModuleLoader__.load({
8503
9052
  id: `${idPrefix}-tab-discover`,
8504
9053
  panelId: `${idPrefix}-panel-discover`
8505
9054
  }], [idPrefix, t]);
8506
- return /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("header", { className: MarketPage_module_default.marketPageHead }, /* @__PURE__ */ (0, react.createElement)("div", null, /* @__PURE__ */ (0, react.createElement)("h1", { className: MarketPage_module_default.marketPageTitle }, t("panels.tab.market")), /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.marketPageIntro }, t("panels.market.lead"))), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketPageTools }, tab !== "installed" ? null : /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)(Tip, { label: t("panels.market.recheck") }, /* @__PURE__ */ (0, react.createElement)("button", {
8507
- type: "button",
8508
- className: `${MarketPage_module_default.marketIconButton}${checking ? ` ${MarketPage_module_default.marketIconButtonSpinning}` : ""}`,
8509
- "aria-label": t("panels.market.checkUpdates"),
8510
- disabled: busy,
8511
- onClick: onReload
8512
- }, /* @__PURE__ */ (0, react.createElement)("span", {
8513
- className: MarketPage_module_default.marketIconWrap,
8514
- "aria-hidden": "true"
8515
- }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, null)))), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
9055
+ return /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)("header", { className: MarketPage_module_default.marketPageHead }, /* @__PURE__ */ (0, react.createElement)("div", null, /* @__PURE__ */ (0, react.createElement)("h1", { className: MarketPage_module_default.marketPageTitle }, t("panels.tab.market")), /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.marketPageIntro }, t("panels.market.lead"))), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketPageTools }, tab !== "installed" ? null : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
8516
9056
  variant: "primary",
8517
9057
  size: "sm",
8518
9058
  className: MarketPage_module_default.marketAddButton,
8519
9059
  icon: /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconPlusOutlineRegular, { size: 13 }),
8520
9060
  disabled: busy,
8521
9061
  onClick: onAdd
8522
- }, t("panels.market.add.open"))))), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketTabs }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.SegmentedTabs, {
9062
+ }, t("panels.market.add.open")))), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketTabs }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.SegmentedTabs, {
8523
9063
  className: MarketPage_module_default.marketTabList,
8524
9064
  items: tabItems,
8525
9065
  value: tab,
@@ -8893,6 +9433,30 @@ window.__ModuleLoader__.load({
8893
9433
  };
8894
9434
  }
8895
9435
  //#endregion
9436
+ //#region src/app/layouts/market/use-settling-modules.ts
9437
+ var NO_UNITS = /* @__PURE__ */ new Set();
9438
+ function unitsOf(key) {
9439
+ return key === "" ? [] : key.split("|");
9440
+ }
9441
+ function useSettlingModules(installedKey, rosterKey, activeKey) {
9442
+ const seenRef = (0, react.useRef)(null);
9443
+ const [settling, setSettling] = (0, react.useState)(NO_UNITS);
9444
+ (0, react.useEffect)(() => {
9445
+ const units = unitsOf(installedKey);
9446
+ const held = holdBack(units, new Set(unitsOf(rosterKey)), new Set(unitsOf(activeKey)), seenRef.current);
9447
+ seenRef.current = new Set(units);
9448
+ setSettling(held.length === 0 ? NO_UNITS : new Set(held));
9449
+ if (held.length === 0) return;
9450
+ const timer = setTimeout(() => setSettling(NO_UNITS), MODULE_SETTLE_MS);
9451
+ return () => clearTimeout(timer);
9452
+ }, [
9453
+ installedKey,
9454
+ rosterKey,
9455
+ activeKey
9456
+ ]);
9457
+ return settling;
9458
+ }
9459
+ //#endregion
8896
9460
  //#region src/shared/api/installed-plugins.ts
8897
9461
  var INSTALLED_PLUGINS_ROUTE = "panels/plugins";
8898
9462
  //#endregion
@@ -8918,6 +9482,8 @@ window.__ModuleLoader__.load({
8918
9482
  workbench: null,
8919
9483
  selfUpdate: null,
8920
9484
  read: false,
9485
+ checking: false,
9486
+ failed: false,
8921
9487
  checkedAt: null
8922
9488
  };
8923
9489
  var listeners$2 = /* @__PURE__ */ new Set();
@@ -8937,6 +9503,18 @@ window.__ModuleLoader__.load({
8937
9503
  listeners$2.delete(listener);
8938
9504
  };
8939
9505
  }
9506
+ function withMarketUpdates(modules, rows) {
9507
+ if (rows.length === 0) return modules;
9508
+ const byPkg = new Map(rows.map((row) => [row.pkg, row]));
9509
+ return modules.map((module) => {
9510
+ const row = byPkg.get(module.pkg);
9511
+ return row === void 0 ? module : {
9512
+ ...module,
9513
+ latest: row.version,
9514
+ market: row
9515
+ };
9516
+ });
9517
+ }
8940
9518
  function publish$1(next) {
8941
9519
  state = next;
8942
9520
  for (const listener of [...listeners$2]) listener();
@@ -8946,18 +9524,30 @@ window.__ModuleLoader__.load({
8946
9524
  if (!fresh && inFlight !== null && inFlight.force === force && inFlight.epoch === at) return inFlight.promise;
8947
9525
  const seq = readSeq += 1;
8948
9526
  if (force) newestForceSeq = seq;
8949
- const promise = Promise.all([readModuleVersions(force), readInstalledPlugins(force)]).catch(() => null).then((responses) => {
9527
+ if (!state.checking) publish$1({
9528
+ ...state,
9529
+ checking: true
9530
+ });
9531
+ const promise = Promise.all([
9532
+ readModuleVersions(force),
9533
+ readInstalledPlugins(force),
9534
+ readMarketInstalled()
9535
+ ]).catch(() => null).then((responses) => {
8950
9536
  if (at !== epoch) return;
8951
9537
  if (!force && seq < newestForceSeq) return;
8952
9538
  const versions = responses?.[0];
8953
9539
  const plugins = responses?.[1];
9540
+ const market = responses?.[2];
9541
+ const read = versions?.ok === true;
8954
9542
  publish$1({
8955
- modules: versions?.ok === true ? versions.modules : state.modules,
9543
+ modules: read ? withMarketUpdates(versions.modules, market?.ok === true ? market.modules : []) : state.modules,
8956
9544
  plugins: plugins?.ok === true ? plugins.plugins : state.plugins,
8957
- workbench: versions?.ok === true ? versions.workbench ?? null : state.workbench,
8958
- selfUpdate: versions?.ok === true ? versions.selfUpdate ?? null : state.selfUpdate,
9545
+ workbench: read ? versions.workbench ?? null : state.workbench,
9546
+ selfUpdate: read ? versions.selfUpdate ?? null : state.selfUpdate,
8959
9547
  read: true,
8960
- checkedAt: Date.now()
9548
+ checking: false,
9549
+ failed: !read,
9550
+ checkedAt: read ? Date.now() : state.checkedAt
8961
9551
  });
8962
9552
  }).finally(() => {
8963
9553
  if (inFlight?.promise === promise) inFlight = null;
@@ -8992,6 +9582,8 @@ window.__ModuleLoader__.load({
8992
9582
  workbench: value.workbench,
8993
9583
  selfUpdate: value.selfUpdate,
8994
9584
  read: value.read,
9585
+ checking: value.checking,
9586
+ failed: value.failed,
8995
9587
  checkedAt: value.checkedAt,
8996
9588
  reload
8997
9589
  };
@@ -9538,7 +10130,6 @@ window.__ModuleLoader__.load({
9538
10130
  checking: false,
9539
10131
  checkedAt: null
9540
10132
  };
9541
- var NO_UNITS = /* @__PURE__ */ new Set();
9542
10133
  function useLiveManifests(units) {
9543
10134
  const subscribe = (0, react.useCallback)((listener) => units.subscribe(listener), [units]);
9544
10135
  const revision = (0, react.useCallback)(() => units.version(), [units]);
@@ -9580,7 +10171,7 @@ window.__ModuleLoader__.load({
9580
10171
  const manifests = useLiveManifests(units);
9581
10172
  const installable = useInstallableUnits(units);
9582
10173
  const { capabilities, checkedAt, checking, forceProbe, reload: reloadCapability } = useCapabilityMap(0);
9583
- const { modules, plugins, workbench, selfUpdate, read: installedRead, reload: reloadVersions } = useModuleVersions();
10174
+ const { modules, plugins, workbench, selfUpdate, checking: versionsChecking, failed: versionsFailed, checkedAt: versionsCheckedAt, read: installedRead, reload: reloadVersions } = useModuleVersions();
9584
10175
  const machineBoard = useEnabledUnits(0, null);
9585
10176
  const [adding, setAdding] = (0, react.useState)(false);
9586
10177
  const [acting, setActing] = (0, react.useState)(false);
@@ -9623,27 +10214,10 @@ window.__ModuleLoader__.load({
9623
10214
  forceProbe,
9624
10215
  reloadVersions
9625
10216
  ]);
9626
- const installedKey = (installed ?? []).map((module) => module.unit).join("|");
9627
- const rosterKey = manifests.map((manifest) => manifest.id).join("|");
9628
- const activeKey = Object.keys(capabilities ?? {}).join("|");
9629
- const seenRef = (0, react.useRef)(null);
9630
- const [settling, setSettling] = (0, react.useState)(NO_UNITS);
9631
- (0, react.useEffect)(() => {
9632
- const units = installedKey === "" ? [] : installedKey.split("|");
9633
- const held = holdBack(units, new Set(rosterKey === "" ? [] : rosterKey.split("|")), new Set(activeKey === "" ? [] : activeKey.split("|")), seenRef.current);
9634
- seenRef.current = new Set(units);
9635
- setSettling(held.length === 0 ? NO_UNITS : new Set(held));
9636
- if (held.length === 0) return;
9637
- const timer = setTimeout(() => setSettling(NO_UNITS), MODULE_SETTLE_MS);
9638
- return () => clearTimeout(timer);
9639
- }, [
9640
- installedKey,
9641
- rosterKey,
9642
- activeKey
9643
- ]);
10217
+ const settling = useSettlingModules((installed ?? []).map((module) => module.unit).join("|"), manifests.map((manifest) => manifest.id).join("|"), Object.keys(capabilities ?? {}).join("|"));
9644
10218
  const freshness = {
9645
10219
  loaded: capabilities !== null,
9646
- checking,
10220
+ checking: checking || versionsChecking,
9647
10221
  checkedAt
9648
10222
  };
9649
10223
  const pendingFreshness = {
@@ -9656,15 +10230,13 @@ window.__ModuleLoader__.load({
9656
10230
  const mockNonce = devMarket.pick.nonce;
9657
10231
  const shownFreshness = mock === void 0 ? freshness : mock.loaded === false ? pendingFreshness : MOCK_FRESHNESS;
9658
10232
  const shownRead = mock === void 0 ? installedRead : mock.installedRead ?? true;
9659
- const busy = !marketSettled(shownFreshness, shownRead) || shownFreshness.checking || acting;
10233
+ const busy = !marketSettled(shownFreshness, shownRead) || acting;
9660
10234
  return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketPage }, /* @__PURE__ */ (0, react.createElement)(MarketHeader, {
9661
10235
  t,
9662
10236
  idPrefix: MARKET_PANEL_ID,
9663
10237
  tab,
9664
10238
  busy,
9665
- checking: shownFreshness.checking,
9666
10239
  onTab: setTab,
9667
- onReload: () => reload({ force: true }),
9668
10240
  onAdd: openAddModule
9669
10241
  }), devMarket.strip, /* @__PURE__ */ (0, react.createElement)("div", {
9670
10242
  id: `${MARKET_PANEL_ID}-panel-installed`,
@@ -9682,6 +10254,8 @@ window.__ModuleLoader__.load({
9682
10254
  onChanged: reload,
9683
10255
  onPending: setActing,
9684
10256
  updates,
10257
+ updatesCheckedAt: versionsCheckedAt,
10258
+ updatesFailed: versionsFailed,
9685
10259
  installed,
9686
10260
  installedRead: shownRead,
9687
10261
  workbench,
@@ -15063,7 +15637,7 @@ window.__ModuleLoader__.load({
15063
15637
  ...face.messages === void 0 ? {} : { messages: face.messages }
15064
15638
  }));
15065
15639
  }
15066
- 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_14s5s_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_14s5s_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_14s5s_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_14s5s_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_14s5s_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_14s5s_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_14s5s_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_14s5s_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_14s5s_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_14s5s_39 ._marketVersion_14s5s_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_14s5s_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_14s5s_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_14s5s_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_14s5s_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_14s5s_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_14s5s_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_14s5s_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_14s5s_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_14s5s_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_14s5s_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_14s5s_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_14s5s_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_14s5s_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_14s5s_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_14s5s_175 ._marketSectionTitle_14s5s_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_14s5s_175 ._marketName_14s5s_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_14s5s_175 ._marketIcon_14s5s_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_14s5s_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_14s5s_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_14s5s_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_14s5s_212 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_14s5s_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_14s5s_217 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_14s5s_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_14s5s_243 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_14s5s_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_14s5s_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_14s5s_263 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_14s5s_263[hidden] {\n display: none;\n}\n\n._marketTabs_14s5s_273 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_14s5s_278 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketIconButton_14s5s_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_14s5s_283:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_14s5s_283:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_14s5s_308 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_14s5s_312 svg {\n animation: _wb-spin_14s5s_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_14s5s_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_14s5s_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_14s5s_333 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_14s5s_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n._discoverPage_14s5s_347 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_14s5s_354 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_14s5s_361 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_14s5s_367 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_14s5s_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_14s5s_379 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_14s5s_385 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_14s5s_390 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_14s5s_395 {\n flex: none;\n}\n\n._discoverSearch_14s5s_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_14s5s_407 {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._discoverSearchFieldFilled_14s5s_412 input {\n padding-inline-end: var(--wb-len-20);\n}\n\n._discoverSearchField_14s5s_407 input::-webkit-search-cancel-button {\n appearance: none;\n -webkit-appearance: none;\n}\n\n._discoverSearch_14s5s_399 ._discoverSearchClear_14s5s_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_14s5s_421:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_14s5s_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_14s5s_367 {\n grid-area: market;\n }\n\n ._discoverMarketButton_14s5s_372 {\n margin-left: 0;\n }\n\n ._discoverLabels_14s5s_385 {\n grid-area: labels;\n }\n\n ._discoverSearch_14s5s_399 {\n grid-area: search;\n }\n\n ._discoverSort_14s5s_390 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_14s5s_395 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_14s5s_472 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_14s5s_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_14s5s_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_14s5s_488:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_14s5s_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_14s5s_514 {\n object-fit: contain;\n}\n\n._discoverMain_14s5s_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_14s5s_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_14s5s_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_14s5s_534::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_14s5s_534:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_14s5s_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_14s5s_565 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_14s5s_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_14s5s_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_14s5s_587 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_14s5s_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_14s5s_602 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_14s5s_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_14s5s_616 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_14s5s_607 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_14s5s_626 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_14s5s_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_14s5s_632:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_14s5s_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_14s5s_655 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_14s5s_659 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_14s5s_665 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_14s5s_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_14s5s_678 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_14s5s_685 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_14s5s_690 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_14s5s_695 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_14s5s_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_14s5s_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_14s5s_713 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_14s5s_719 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_14s5s_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_14s5s_734 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_14s5s_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_14s5s_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_14s5s_757 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_14s5s_764 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_14s5s_764:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_14s5s_774 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_14s5s_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_14s5s_790 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_14s5s_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_14s5s_804 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverLoading_14s5s_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_14s5s_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_14s5s_819 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_14s5s_837 {\n align-self: center;\n}\n\n._discoverDialog_14s5s_841 {\n width: min(var(--wb-len-560), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_14s5s_845 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_14s5s_851 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_14s5s_859 {\n display: flex;\n flex-wrap: wrap;\n align-items: flex-start;\n gap: var(--wb-len-12);\n padding: var(--wb-len-10) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverSourceConfirm_14s5s_868 {\n margin: 0;\n padding: var(--wb-len-2) 0 var(--wb-len-10);\n list-style: none;\n}\n\n._discoverSourcePick_14s5s_874 {\n display: flex;\n flex: 1;\n align-items: flex-start;\n gap: var(--wb-len-10);\n min-width: 0;\n cursor: pointer;\n}\n\n._discoverSourceRadio_14s5s_883 {\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._discoverSourceMain_14s5s_891 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._discoverSourceHead_14s5s_899 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverSourceUrl_14s5s_907 {\n display: block;\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverSourceMore_14s5s_917 {\n flex: none;\n}\n\n._discoverSourceLoading_14s5s_921 {\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_14s5s_931 {\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_14s5s_931 svg {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverSourceError_14s5s_945 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_14s5s_951 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_14s5s_957 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_14s5s_962 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_14s5s_968 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_14s5s_973 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_14s5s_979 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_14s5s_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_14s5s_502._discoverSkeletonFill_14s5s_979 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_14s5s_988 {\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_14s5s_995 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_14s5s_999 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_14s5s_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_14s5s_979 {\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*/";
15640
+ 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_yups9_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_yups9_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_yups9_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_yups9_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_yups9_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_yups9_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_yups9_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_yups9_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_yups9_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_yups9_39 ._marketVersion_yups9_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_yups9_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_yups9_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_yups9_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_yups9_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_yups9_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_yups9_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_yups9_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_yups9_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_yups9_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_yups9_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_yups9_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_yups9_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_yups9_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_yups9_169 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionAction_yups9_175 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n margin-left: auto;\n min-width: 0;\n}\n\n._marketSectionQuiet_yups9_183 ._marketSectionTitle_yups9_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_yups9_183 ._marketName_yups9_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_yups9_183 ._marketIcon_yups9_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_yups9_196 {\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_yups9_206 {\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_yups9_213 {\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_yups9_220 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_yups9_225 {\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_yups9_225 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_yups9_243 {\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_yups9_251 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_yups9_256 {\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_yups9_262 {\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_yups9_271 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_yups9_271[hidden] {\n display: none;\n}\n\n._marketTabs_yups9_281 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_yups9_286 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketAddButton_yups9_291 {\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_yups9_220 {\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_yups9_308 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverPage_yups9_313 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_yups9_320 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_yups9_327 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_yups9_333 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_yups9_338 {\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_yups9_345 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_yups9_351 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_yups9_356 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_yups9_361 {\n flex: none;\n}\n\n._discoverSearch_yups9_365 {\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_yups9_373 {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._discoverSearchFieldFilled_yups9_378 input {\n padding-inline-end: var(--wb-len-20);\n}\n\n._discoverSearchField_yups9_373 input::-webkit-search-cancel-button {\n appearance: none;\n -webkit-appearance: none;\n}\n\n._discoverSearch_yups9_365 ._discoverSearchClear_yups9_387 {\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_yups9_387:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_yups9_327 {\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_yups9_333 {\n grid-area: market;\n }\n\n ._discoverMarketButton_yups9_338 {\n margin-left: 0;\n }\n\n ._discoverLabels_yups9_351 {\n grid-area: labels;\n }\n\n ._discoverSearch_yups9_365 {\n grid-area: search;\n }\n\n ._discoverSort_yups9_356 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_yups9_361 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_yups9_438 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_yups9_445 {\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_yups9_454 {\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_yups9_454:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_yups9_468 {\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_yups9_480 {\n object-fit: contain;\n}\n\n._discoverMain_yups9_484 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_yups9_492 {\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_yups9_500 {\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_yups9_500::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_yups9_500:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_yups9_500: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_yups9_531 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_yups9_537 {\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_yups9_546 {\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_yups9_553 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_yups9_559 {\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._discoverUpdateAction_yups9_568 {\n color: var(--dsw-alias-state-warn-primary);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._discoverBlocked_yups9_573 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_yups9_578 {\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_yups9_587 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_yups9_578 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_yups9_597 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_yups9_603 {\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_yups9_603:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_yups9_603: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_yups9_626 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_yups9_630 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_yups9_636 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_yups9_642 {\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_yups9_649 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_yups9_656 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_yups9_661 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_yups9_666 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_yups9_671 {\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_yups9_677 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_yups9_684 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_yups9_690 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_yups9_695 {\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_yups9_705 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_yups9_711 {\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_yups9_719 {\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_yups9_728 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_yups9_735 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_yups9_735:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_yups9_745 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_yups9_753 {\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_yups9_761 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_yups9_766 {\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_yups9_775 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverLoading_yups9_781 {\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_yups9_790 {\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_yups9_790 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_yups9_808 {\n align-self: center;\n}\n\n._discoverTransport_yups9_812 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportHead_yups9_818 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportTitle_yups9_825 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverTransportHead_yups9_818 ._discoverTransportKind_yups9_830 {\n font: var(--dsw-font-xs-13);\n font-weight: 500;\n}\n\n._discoverTransportHead_yups9_818 ._discoverTransportState_yups9_835 {\n margin-left: 0;\n}\n\n._discoverTransportHead_yups9_818 > :last-child {\n margin-left: auto;\n}\n\n._discoverTransportRows_yups9_843 {\n display: flex;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportRow_yups9_843 {\n display: flex;\n flex: 1;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n}\n\n._discoverTransportRow_yups9_843:hover {\n border-color: var(--dsw-alias-border-l3);\n}\n\n._discoverTransportRow_yups9_843:has(._discoverTransportRadio_yups9_864:checked) {\n border-color: var(--dsw-alias-label-primary);\n}\n\n._discoverTransportRow_yups9_843:has(._discoverTransportRadio_yups9_864:focus-visible) {\n outline: 2px solid var(--dsw-alias-label-primary);\n outline-offset: 1px;\n}\n\n._discoverTransportRadio_yups9_864 {\n flex: none;\n margin: 0;\n}\n\n._discoverTransportKind_yups9_830 {\n flex: none;\n font: var(--dsw-font-xs-13);\n font-weight: 500;\n}\n\n._discoverTransportState_yups9_835 {\n flex: none;\n margin-left: auto;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverTransportRow_yups9_843[data-state='ok'] ._discoverTransportState_yups9_835 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._discoverTransportRow_yups9_843[data-state='auth'] ._discoverTransportState_yups9_835 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverTransportRow_yups9_843[data-state='unreachable'] ._discoverTransportState_yups9_835,\n._discoverTransportRow_yups9_843[data-state='unknown'] ._discoverTransportState_yups9_835 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverTransportCustom_yups9_904 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportInput_yups9_910 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverInstallBar_yups9_915 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n}\n\n._discoverInstallText_yups9_926 {\n flex: 1;\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDialog_yups9_932 {\n width: min(var(--wb-len-560), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_yups9_936 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_yups9_942 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_yups9_950 {\n display: flex;\n flex-wrap: wrap;\n align-items: flex-start;\n gap: var(--wb-len-12);\n padding: var(--wb-len-10) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverSourceConfirm_yups9_959 {\n margin: 0;\n padding: var(--wb-len-2) 0 var(--wb-len-10);\n list-style: none;\n}\n\n._discoverSourcePick_yups9_965 {\n display: flex;\n flex: 1;\n align-items: flex-start;\n gap: var(--wb-len-10);\n min-width: 0;\n cursor: pointer;\n}\n\n._discoverSourceRadio_yups9_974 {\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._discoverSourceMain_yups9_982 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._discoverSourceHead_yups9_990 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverSourceUrl_yups9_998 {\n display: block;\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverSourceMore_yups9_1008 {\n flex: none;\n}\n\n._discoverSourceLoading_yups9_1012 {\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_yups9_1022 {\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_yups9_1022 svg {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverSourceError_yups9_1036 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_yups9_1042 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_yups9_1048 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_yups9_1053 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_yups9_1059 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_yups9_1064 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_yups9_1070 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_yups9_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_yups9_468._discoverSkeletonFill_yups9_1070 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_yups9_1079 {\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_yups9_1086 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_yups9_1090 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_yups9_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_yups9_1070 {\n animation: none;\n }\n}\n\n._check_1g6tv_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n min-width: 0;\n}\n\n._status_1g6tv_8 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-caption);\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n}\n\n._button_1g6tv_15 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n}\n\n._icon_1g6tv_22 {\n display: inline-flex;\n}\n\n@media (max-width: 720px) {\n ._status_1g6tv_8 {\n display: none;\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*/";
15067
15641
  function workbenchCss() {
15068
15642
  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}`;
15069
15643
  }