@dsh-workbench/core 1.1.1 → 1.1.3

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 (44) hide show
  1. package/README.md +14 -5
  2. package/bin/dsh-workbench +7 -1
  3. package/client.js +1118 -429
  4. package/dist/client/client.body.js +1118 -429
  5. package/dist/client/index.js +970 -281
  6. package/dist/host/index.js +788 -383
  7. package/dist/types/app/layouts/approval-detail.d.ts +2 -1
  8. package/dist/types/app/layouts/market/discover-confirm.d.ts +1 -1
  9. package/dist/types/app/layouts/market/discover-detail.d.ts +1 -0
  10. package/dist/types/app/layouts/market/discover-installing.d.ts +8 -0
  11. package/dist/types/app/layouts/market/discover-rows.d.ts +4 -2
  12. package/dist/types/app/layouts/market/discover-source-item.d.ts +26 -0
  13. package/dist/types/app/layouts/market/discover-sources-dialog.d.ts +4 -0
  14. package/dist/types/app/layouts/market/discover-states.d.ts +6 -0
  15. package/dist/types/app/layouts/market/discover-transport.d.ts +7 -0
  16. package/dist/types/app/layouts/market/discover-versions.d.ts +2 -1
  17. package/dist/types/app/layouts/market/discover-view.d.ts +2 -0
  18. package/dist/types/app/layouts/market/use-discover.d.ts +11 -1
  19. package/dist/types/app/layouts/market/use-git-transport.d.ts +19 -0
  20. package/dist/types/app/layouts/market/use-module-versions.d.ts +1 -0
  21. package/dist/types/kernel/contract/market-index.d.ts +2 -2
  22. package/dist/types/modules/panels/client.d.ts +1 -1
  23. package/dist/types/modules/panels/model/approval.d.ts +4 -2
  24. package/dist/types/modules/panels/model/diy-publish.d.ts +10 -0
  25. package/dist/types/modules/panels/model/diy-tools.d.ts +0 -1
  26. package/dist/types/modules/panels/model/market-sources-act.d.ts +2 -1
  27. package/dist/types/modules/panels/model/market-sources-tool.d.ts +3 -0
  28. package/dist/types/modules/panels/model/market-sources-tool.test.d.ts +1 -0
  29. package/dist/types/modules/panels/model/market-tools.d.ts +8 -1
  30. package/dist/types/modules/panels/model/publish-claim.d.ts +2 -0
  31. package/dist/types/modules/panels/unit.d.ts +7 -5
  32. package/dist/types/shared/api/host/diy-publish-preview.d.ts +2 -0
  33. package/dist/types/shared/api/host/git-exec.d.ts +2 -0
  34. package/dist/types/shared/api/host/git-probe.d.ts +6 -0
  35. package/dist/types/shared/api/host/git-routes.d.ts +3 -0
  36. package/dist/types/shared/api/host/market-source-init.d.ts +1 -0
  37. package/dist/types/shared/api/host/market-sources-store.d.ts +2 -0
  38. package/dist/types/shared/hooks/market-queries.d.ts +3 -2
  39. package/package.json +3 -3
  40. package/skills/workbench-module-diy/FAMILY.md +3 -4
  41. package/skills/workbench-module-diy/SKILL.md +4 -1
  42. package/skills/workbench-module-diy/WIRING.md +9 -2
  43. package/dist/types/modules/panels/model/diy-changelog.d.ts +0 -2
  44. package/dist/types/shared/api/host/diy-changelog.d.ts +0 -13
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$63 = react$1.createElement;
792
- var Fragment$20 = react$1.Fragment;
791
+ var h$66 = 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$35 = react$1.useState;
797
- var useEffect$28 = react$1.useEffect;
796
+ var useState$37 = react$1.useState;
797
+ var useEffect$29 = 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$23 = 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$63("div", { className: "wb-activityBlock" }, head === void 0 ? null : h$63("div", { className: "wb-activityBlockHead" }, head), children);
812
+ return h$66("div", { className: "wb-activityBlock" }, head === void 0 ? null : h$66("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$63("div", { className: "wb-activityLine" }, dot, h$63("span", { className: "wb-activityLineText" }, text), at === void 0 ? null : h$63("span", { className: "wb-activityLineAt" }, at), actions === void 0 ? null : h$63("span", { className: "wb-activityLineActions" }, actions));
823
+ return h$66("div", { className: "wb-activityLine" }, dot, h$66("span", { className: "wb-activityLineText" }, text), at === void 0 ? null : h$66("span", { className: "wb-activityLineAt" }, at), actions === void 0 ? null : h$66("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$63("a", {
837
+ if (href !== void 0) return h$66("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$63(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
845
+ return h$66(_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$63(_deepseek_ai_dsh_client_ui_primitives.Button, {
851
+ }, h$66(_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$63("span", {
873
+ return as === "span" ? h$66("span", {
874
874
  className,
875
875
  role
876
- }, children) : h$63("p", {
876
+ }, children) : h$66("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$63(Note, { tone: "problem" }, h$63("span", null, this.props.t("panels.cardBroken", {
920
+ return h$66(Note, { tone: "problem" }, h$66("span", null, this.props.t("panels.cardBroken", {
921
921
  unit: this.props.unit,
922
922
  reason
923
- })), " ", h$63(_deepseek_ai_dsh_client_ui_primitives.Button, {
923
+ })), " ", h$66(_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$63(CardBoundary, {
973
+ return h$66(CardBoundary, {
974
974
  unit: owner.unit,
975
975
  resetKey: props.callId ?? "",
976
976
  t
977
- }, h$63(Render, {
977
+ }, h$66(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$63(Fragment$20, null, shell);
983
+ if (shell !== void 0 && shell !== null) return h$66(Fragment$23, null, shell);
984
984
  if (command === "") return null;
985
- return h$63(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
985
+ return h$66(_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$63("div", { className: "wb-approvalPlan" }, hint === void 0 ? null : h$63("p", { className: "wb-approvalHint" }, hint), h$63("dl", { className: "wb-approvalRows" }, rows.map((row, index) => h$63("div", {
1003
+ return h$66("div", { className: "wb-approvalPlan" }, hint === void 0 ? null : h$66("p", { className: "wb-approvalHint" }, hint), h$66("dl", { className: "wb-approvalRows" }, rows.map((row, index) => h$66("div", {
1004
1004
  className: "wb-approvalRow",
1005
1005
  key: String(index)
1006
- }, h$63("dt", { className: "wb-approvalLabel" }, row.label), h$63("dd", { className: "wb-approvalValue" }, row.value)))), children, warn === void 0 ? null : h$63("p", { className: "wb-approvalWarn" }, warn));
1006
+ }, h$66("dt", { className: "wb-approvalLabel" }, row.label), h$66("dd", { className: "wb-approvalValue" }, row.value)))), children, warn === void 0 ? null : h$66("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$63("header", { className: "wb-cardHead" }, h$63("h2", { className: "wb-cardTitle" }, title), meta === void 0 ? null : h$63("span", { className: "wb-cardMeta" }, meta), platformHref === void 0 ? null : h$63(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1023
+ return h$66("header", { className: "wb-cardHead" }, h$66("h2", { className: "wb-cardTitle" }, title), meta === void 0 ? null : h$66("span", { className: "wb-cardMeta" }, meta), platformHref === void 0 ? null : h$66(_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$63("a", {
1029
+ }, h$66("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$63(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 14 }))), h$63(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1035
+ }, h$66(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 14 }))), h$66(_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$63(_deepseek_ai_dsh_client_ui_primitives.Button, {
1041
+ }, h$66(_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$63(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, { size: 14 }),
1048
+ icon: h$66(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, { size: 14 }),
1049
1049
  onClick: onRefresh
1050
- })), gear === void 0 || onToggleGear === void 0 ? null : h$63(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
1050
+ })), gear === void 0 || onToggleGear === void 0 ? null : h$66(_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$63(_deepseek_ai_dsh_client_ui_primitives.Button, {
1056
+ }, h$66(_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$63(_deepseek_ai_dsh_client_ui_primitives.IconSettingsOutlineRegular, { size: 15 }),
1063
+ icon: h$66(_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$63("section", { className: "wb-card" }, head === void 0 ? h$63(CardHead, {
1080
+ return h$66("section", { className: "wb-card" }, head === void 0 ? h$66(CardHead, {
1081
1081
  t,
1082
1082
  title,
1083
1083
  refreshing,
1084
1084
  onRefresh,
1085
1085
  meta
1086
- }) : head, h$63("div", { className: "wb-cardBody" }, children));
1086
+ }) : head, h$66("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$63("div", {
1106
+ return h$66("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$63("span", {
1120
+ return h$66("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$63(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
1126
+ }, h$66(_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$63("span", {
1134
+ const body = input.loading ? h$66("span", {
1135
1135
  className: "wb-choiceLoading",
1136
1136
  role: "status"
1137
- }, h$63(Spinner, { size: 14 }), h$63("span", { className: "wb-choiceLoadingText" }, input.loadingText ?? "…")) : input.options.length === 0 ? input.emptyText === void 0 ? null : h$63("span", { className: "wb-choiceEmpty" }, input.emptyText) : input.options.map((option) => {
1137
+ }, h$66(Spinner, { size: 14 }), h$66("span", { className: "wb-choiceLoadingText" }, input.loadingText ?? "…")) : input.options.length === 0 ? input.emptyText === void 0 ? null : h$66("span", { className: "wb-choiceEmpty" }, input.emptyText) : input.options.map((option) => {
1138
1138
  const row = input.rowOf(option.value);
1139
- return h$63(Fragment$20, { key: option.value }, h$63("label", { className: `wb-choiceOption${row.checked ? " wb-choiceOptionOn" : ""}` }, h$63("input", {
1139
+ return h$66(Fragment$23, { key: option.value }, h$66("label", { className: `wb-choiceOption${row.checked ? " wb-choiceOptionOn" : ""}` }, h$66("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$63("span", {
1146
+ }), input.multi ? h$66("span", {
1147
1147
  className: "wb-checkboxBox",
1148
1148
  "aria-hidden": "true"
1149
- }, row.checked ? h$63(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutlineRegular, { size: 12 }) : null) : null, h$63("span", { className: "wb-choiceLabel" }, h$63("span", { className: "wb-choiceLabelText" }, option.label), option.description === void 0 ? null : h$63("span", { className: "wb-choiceDescription" }, option.description))));
1149
+ }, row.checked ? h$66(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutlineRegular, { size: 12 }) : null) : null, h$66("span", { className: "wb-choiceLabel" }, h$66("span", { className: "wb-choiceLabelText" }, option.label), option.description === void 0 ? null : h$66("span", { className: "wb-choiceDescription" }, option.description))));
1150
1150
  });
1151
- return h$63("div", {
1151
+ return h$66("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$63(ChoiceMenu, {
1185
+ return h$66(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$63(ChoiceMenu, {
1205
+ return h$66(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$63("div", { className: "wb-formActions" }, ordered(actions).map((action) => {
1258
+ return h$66("div", { className: "wb-formActions" }, ordered(actions).map((action) => {
1259
1259
  const kind = kindOf(action);
1260
1260
  const busy = action.busy === true;
1261
- return h$63(_deepseek_ai_dsh_client_ui_primitives.Button, {
1261
+ return h$66(_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$63(Spinner, { size: 12 }) : void 0,
1268
+ icon: busy ? h$66(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$63("div", { className: "wb-rows" }, children);
1281
+ return h$66("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$63("div", { className: "wb-row" }, h$63("span", { className: "wb-rowKey" }, label), h$63("span", { className: "wb-rowValue" }, value));
1290
+ return h$66("div", { className: "wb-row" }, h$66("span", { className: "wb-rowKey" }, label), h$66("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$63("div", {
1307
+ return h$66("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$63("p", { className: "wb-confirmBarTitle" }, title), hint === void 0 ? null : h$63("p", { className: "wb-confirmBarHint" }, hint), rows === void 0 || rows.length === 0 ? null : h$63(Rows, null, rows.map((row) => h$63(Row, {
1312
+ }, h$66("p", { className: "wb-confirmBarTitle" }, title), hint === void 0 ? null : h$66("p", { className: "wb-confirmBarHint" }, hint), rows === void 0 || rows.length === 0 ? null : h$66(Rows, null, rows.map((row) => h$66(Row, {
1313
1313
  key: row.key,
1314
1314
  label: row.label,
1315
1315
  value: row.value
1316
- }))), problem === void 0 ? null : h$63(Note, {
1316
+ }))), problem === void 0 ? null : h$66(Note, {
1317
1317
  tone: "problem",
1318
1318
  role: "alert"
1319
- }, problem), h$63(FormActions, { actions }));
1319
+ }, problem), h$66(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$63("label", { className: "wb-field" }, h$63("span", { className: "wb-fieldLabel" }, label), children, hint === void 0 ? null : h$63("span", { className: "wb-fieldHint" }, hint));
1331
+ return h$66("label", { className: "wb-field" }, h$66("span", { className: "wb-fieldLabel" }, label), children, hint === void 0 ? null : h$66("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$63("div", { className: "wb-formRows" }, children);
1341
+ return h$66("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$63("div", {
1354
+ return h$66("div", {
1355
1355
  className: "wb-formRow",
1356
1356
  "data-layout": layout,
1357
1357
  "data-wb-problem": problem === void 0 ? void 0 : ""
1358
- }, h$63("label", {
1358
+ }, h$66("label", {
1359
1359
  className: "wb-formLabel",
1360
1360
  htmlFor
1361
- }, label), h$63("span", { className: "wb-formControl" }, children), problem === void 0 ? hint === void 0 ? null : h$63("span", { className: "wb-formHint" }, hint) : h$63("span", { className: "wb-formProblem" }, problem));
1361
+ }, label), h$66("span", { className: "wb-formControl" }, children), problem === void 0 ? hint === void 0 ? null : h$66("span", { className: "wb-formHint" }, hint) : h$66("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$63(FormRow, {
1508
+ return args.fields.map((field) => h$66(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$35(false);
1585
- const [reveal, setReveal] = useState$35(0);
1586
- const rootRef = useRef$22(null);
1584
+ const [done, setDone] = useState$37(false);
1585
+ const [reveal, setReveal] = useState$37(0);
1586
+ const rootRef = useRef$23(null);
1587
1587
  const shown = visibleFieldsOf(fields);
1588
1588
  const problems = formProblemsOf(shown, done);
1589
1589
  reportDuplicateKeys(shown);
1590
- useEffect$28(() => {
1590
+ useEffect$29(() => {
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$63("form", {
1605
+ return h$66("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$63(FormRows, null, formRowsOf({
1613
+ }, h$66(FormRows, null, formRowsOf({
1614
1614
  fields: shown,
1615
1615
  problems,
1616
1616
  showProblem: done,
1617
1617
  busy
1618
- })), problem === void 0 ? null : h$63(Note, {
1618
+ })), problem === void 0 ? null : h$66(Note, {
1619
1619
  tone: "problem",
1620
1620
  role: "alert"
1621
- }, problem), h$63(FormActions, { actions: formActionsOf({
1621
+ }, problem), h$66(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$63("a", {
1642
+ return h$66("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$63(_deepseek_ai_dsh_client_ui_primitives.IconRightUpOutlineRegular, { size: 12 }) : null);
1650
+ }, children, external ? h$66(_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$63(Link, {
1742
+ return h$66(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$35(false);
1763
- const [rawOpen, setRawOpen] = useState$35(false);
1764
- const [armed, setArmed] = useState$35(false);
1762
+ const [stepsOpen, setStepsOpen] = useState$37(false);
1763
+ const [rawOpen, setRawOpen] = useState$37(false);
1764
+ const [armed, setArmed] = useState$37(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$29(() => {
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$63("div", { className: "wb-longTask" }, h$63("p", { className: "wb-longTaskHead" }, h$63(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
1791
+ return h$66("div", { className: "wb-longTask" }, h$66("p", { className: "wb-longTaskHead" }, h$66(_deepseek_ai_dsh_client_ui_primitives.StateDot, {
1792
1792
  state: longTaskDot(props.status),
1793
1793
  size: 10
1794
- }), h$63("span", { className: "wb-longTaskHeadline" }, props.headline), (props.links ?? []).map((link) => h$63(RowLink, {
1794
+ }), h$66("span", { className: "wb-longTaskHeadline" }, props.headline), (props.links ?? []).map((link) => h$66(RowLink, {
1795
1795
  href: link.href,
1796
1796
  key: `${link.text}@${link.href}`,
1797
1797
  text: link.text
1798
- })), stop === void 0 ? null : h$63("button", {
1798
+ })), stop === void 0 ? null : h$66("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$63(_deepseek_ai_dsh_client_ui_primitives.IconStopFillRegular, { size: 12 }), armed ? h$63("span", { className: "wb-longTaskStopLabel" }, stop.askLabel) : null)), problem === "" ? null : h$63("p", { className: "wb-longTaskProblem" }, problem), stopWhy === "" ? null : h$63("p", { className: "wb-longTaskStopWhy" }, stopWhy), !failed ? null : h$63(Fragment$20, null, steps.length === 0 || props.stepsTitle === void 0 ? null : h$63(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
1809
+ }, h$66(_deepseek_ai_dsh_client_ui_primitives.IconStopFillRegular, { size: 12 }), armed ? h$66("span", { className: "wb-longTaskStopLabel" }, stop.askLabel) : null)), problem === "" ? null : h$66("p", { className: "wb-longTaskProblem" }, problem), stopWhy === "" ? null : h$66("p", { className: "wb-longTaskStopWhy" }, stopWhy), !failed ? null : h$66(Fragment$23, null, steps.length === 0 || props.stepsTitle === void 0 ? null : h$66(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
1810
1810
  className: "wb-longTaskDump",
1811
- icon: h$63(_deepseek_ai_dsh_client_ui_primitives.IconFlatListOutlineRegular, { size: 14 }),
1811
+ icon: h$66(_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$63(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
1818
+ }, h$66(_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$63(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
1824
+ })), raw === "" || props.rawTitle === void 0 ? null : h$66(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
1825
1825
  className: "wb-longTaskDump",
1826
- icon: h$63(_deepseek_ai_dsh_client_ui_primitives.IconCodeOutlineRegular, { size: 14 }),
1826
+ icon: h$66(_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$63(_deepseek_ai_dsh_client_ui_primitives.CodeBlock, {
1833
+ }, h$66(_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$63("div", {
1849
+ return h$66("div", {
1850
1850
  className: "wb-skeleton",
1851
1851
  "aria-hidden": "true"
1852
- }, Array.from({ length: rows }, (_, index) => h$63("span", {
1852
+ }, Array.from({ length: rows }, (_, index) => h$66("span", {
1853
1853
  key: index,
1854
1854
  className: "wb-skeletonRow"
1855
- }, h$63("span", { className: "wb-skeletonBar wb-skeletonBarTitle" }), h$63("span", { className: "wb-skeletonBar wb-skeletonBarMeta" }))));
1855
+ }, h$66("span", { className: "wb-skeletonBar wb-skeletonBarTitle" }), h$66("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$63("div", {
1868
+ return h$66("div", {
1869
1869
  className: compact ? "wb-centered wb-centeredCompact" : "wb-centered",
1870
1870
  role: "status"
1871
- }, icon === null ? null : h$63("span", {
1871
+ }, icon === null ? null : h$66("span", {
1872
1872
  className: "wb-centeredHero",
1873
1873
  "aria-hidden": "true"
1874
- }, icon), h$63("div", { className: "wb-centeredTitle" }, title), hint === void 0 ? null : h$63("div", { className: "wb-centeredHint" }, hint), detail === void 0 ? null : h$63("div", { className: "wb-centeredDetail" }, detail), action === void 0 ? null : h$63("div", { className: "wb-centeredAction" }, action));
1874
+ }, icon), h$66("div", { className: "wb-centeredTitle" }, title), hint === void 0 ? null : h$66("div", { className: "wb-centeredHint" }, hint), detail === void 0 ? null : h$66("div", { className: "wb-centeredDetail" }, detail), action === void 0 ? null : h$66("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$63(CenteredState, {
1884
+ return h$66(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$63(FormActions, { actions: [{
1902
+ return h$66(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$63("button", {
1935
+ return h$66("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$63("span", { className: "wb-selectIcon" }, args.icon) : h$63(Fragment$20, null, args.icon === void 0 ? null : h$63("span", { className: "wb-selectIcon" }, args.icon), h$63("span", { className: "wb-selectValue" }, args.value), h$63("span", { className: "wb-selectChevron" }, h$63(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, { size: 14 }))));
1946
+ }, args.iconOnly ? h$66("span", { className: "wb-selectIcon" }, args.icon) : h$66(Fragment$23, null, args.icon === void 0 ? null : h$66("span", { className: "wb-selectIcon" }, args.icon), h$66("span", { className: "wb-selectValue" }, args.value), h$66("span", { className: "wb-selectChevron" }, h$66(_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$63("button", {
1958
+ return h$66("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$63("span", { className: "wb-selectValue" }, h$63(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, { active: true }, args.loadingText ?? "…")), h$63("span", { className: "wb-selectChevron" }, h$63(Spinner, { size: 14 })));
1967
+ }, h$66("span", { className: "wb-selectValue" }, h$66(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, { active: true }, args.loadingText ?? "…")), h$66("span", { className: "wb-selectChevron" }, h$66(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$63("input", {
1977
+ return h$66("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$63("span", {
2000
+ const revealed = (node) => h$66("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$29(() => {
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$63("span", { className: "wb-selectPlaceholder" }, placeholder ?? "—");
2022
+ if (current === void 0) return h$66("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$63("span", {
2026
+ return h$66("span", {
2027
2027
  ref: args.boxRef,
2028
2028
  className: args.className
2029
- }, h$63("span", { className: "wb-selectSearchIcon" }, h$63(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { size: 14 })), h$63(TextField, {
2029
+ }, h$66("span", { className: "wb-selectSearchIcon" }, h$66(_deepseek_ai_dsh_client_ui_primitives.IconSearchOutlineRegular, { size: 14 })), h$66(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$63(_deepseek_ai_dsh_client_ui_primitives.Menu, {
2044
+ return h$66(_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$63("span", { className: "wb-select" }, control, h$63("span", { className: "wb-selectHint" }, hint)) : h$63(Field, {
2061
+ const inner = label === void 0 ? hint === void 0 ? control : h$66("span", { className: "wb-select" }, control, h$66("span", { className: "wb-selectHint" }, hint)) : h$66(Field, {
2062
2062
  label,
2063
2063
  hint
2064
2064
  }, control);
2065
- return className === void 0 ? inner : h$63("div", { className }, inner);
2065
+ return className === void 0 ? inner : h$66("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$35(false);
2118
- const [query, setQuery] = useState$35("");
2119
- const [cursor, setCursor] = useState$35(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$37(false);
2118
+ const [query, setQuery] = useState$37("");
2119
+ const [cursor, setCursor] = useState$37(null);
2120
+ const boxRef = useRef$23(null);
2121
+ const triggerRef = useRef$23(null);
2122
+ const wasOpenRef = useRef$23(false);
2123
+ const pickedRef = useRef$23(false);
2124
+ const closedByUsRef = useRef$23(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$29(() => {
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$29(() => {
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$63(TextField, {
2204
+ if (fallback !== void 0 && options.length === 0) return framed(label, hint, className, h$66(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$63("section", {
2287
+ return h$66("section", {
2288
2288
  className: "wb-settings",
2289
2289
  role: "group",
2290
2290
  "aria-label": label
2291
- }, h$63("header", { className: "wb-settingsHead" }, h$63("span", { className: "wb-settingsTitle" }, title), action), children);
2291
+ }, h$66("header", { className: "wb-settingsHead" }, h$66("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$63("div", { className: "wb-stack" }, children);
2301
+ return h$66("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$63("div", { className: "wb-stateBlock" }, title === void 0 && dot === void 0 ? null : h$63("p", { className: "wb-stateBlockTitle" }, dot, title), resolving === void 0 ? null : h$63("p", { className: "wb-stateBlockResolving" }, resolving), hint === void 0 ? null : h$63("p", { className: "wb-stateBlockHint" }, hint), children, actions === void 0 ? null : h$63("div", { className: "wb-stateBlockActions" }, actions));
2316
+ return h$66("div", { className: "wb-stateBlock" }, title === void 0 && dot === void 0 ? null : h$66("p", { className: "wb-stateBlockTitle" }, dot, title), resolving === void 0 ? null : h$66("p", { className: "wb-stateBlockResolving" }, resolving), hint === void 0 ? null : h$66("p", { className: "wb-stateBlockHint" }, hint), children, actions === void 0 ? null : h$66("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$63("svg", {
2321
+ return h$66("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$63(Shell, {
2338
+ return h$66(Shell, {
2339
2339
  size,
2340
2340
  strokeWidth: 1.3
2341
- }, h$63("path", {
2341
+ }, h$66("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$63(Shell, {
2356
+ return h$66(Shell, {
2357
2357
  size,
2358
2358
  viewBox: "0 0 64 64"
2359
- }, h$63("path", {
2359
+ }, h$66("path", {
2360
2360
  d: BRAND_FRAME,
2361
2361
  fill: "currentColor",
2362
2362
  fillRule: "evenodd"
2363
- }), h$63("rect", {
2363
+ }), h$66("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$63("rect", {
2369
+ }), h$66("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$63("g", { transform: BRAND_TAIL_TRANSFORM }, h$63("path", {
2376
+ }), h$66("g", { transform: BRAND_TAIL_TRANSFORM }, h$66("path", {
2377
2377
  d: BRAND_TAIL,
2378
2378
  fill: "currentColor"
2379
- }), h$63("circle", {
2379
+ }), h$66("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$63(Shell, {
2392
+ return h$66(Shell, {
2393
2393
  size,
2394
2394
  viewBox: "0 0 64 64"
2395
- }, h$63("defs", null, h$63("linearGradient", {
2395
+ }, h$66("defs", null, h$66("linearGradient", {
2396
2396
  id: "opencli-mark",
2397
2397
  x1: "0%",
2398
2398
  y1: "0%",
2399
2399
  x2: "100%",
2400
2400
  y2: "100%"
2401
- }, h$63("stop", {
2401
+ }, h$66("stop", {
2402
2402
  offset: "0%",
2403
2403
  stopColor: "#00e5a0"
2404
- }), h$63("stop", {
2404
+ }), h$66("stop", {
2405
2405
  offset: "50%",
2406
2406
  stopColor: "#00b4d8"
2407
- }), h$63("stop", {
2407
+ }), h$66("stop", {
2408
2408
  offset: "100%",
2409
2409
  stopColor: "#7b61ff"
2410
- }))), h$63("rect", {
2410
+ }))), h$66("rect", {
2411
2411
  width: 64,
2412
2412
  height: 64,
2413
2413
  rx: 14,
2414
2414
  fill: "#0a0a0f"
2415
- }), h$63("text", {
2415
+ }), h$66("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$63(Shell, {
2432
+ return h$66(Shell, {
2433
2433
  size,
2434
2434
  viewBox: "0 0 1024 1024"
2435
- }, h$63("path", {
2435
+ }, h$66("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$63(Shell, {
2446
+ return h$66(Shell, {
2447
2447
  size,
2448
2448
  viewBox: "0 0 24 24"
2449
- }, h$63("defs", null, h$63("linearGradient", {
2449
+ }, h$66("defs", null, h$66("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$63("stop", {
2455
+ }, h$66("stop", {
2456
2456
  offset: "0%",
2457
2457
  stopColor: "#3b82f6"
2458
- }), h$63("stop", {
2458
+ }), h$66("stop", {
2459
2459
  offset: "55%",
2460
2460
  stopColor: "#8b5cf6"
2461
- }), h$63("stop", {
2461
+ }), h$66("stop", {
2462
2462
  offset: "100%",
2463
2463
  stopColor: "#14b8a6"
2464
- }))), h$63("rect", {
2464
+ }))), h$66("rect", {
2465
2465
  width: 24,
2466
2466
  height: 24,
2467
2467
  rx: 7,
2468
2468
  fill: "url(#workbench-module-mark)"
2469
- }), h$63("rect", {
2469
+ }), h$66("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$63("rect", {
2476
+ }), h$66("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$63("rect", {
2484
+ }), h$66("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$63("rect", {
2492
+ }), h$66("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$63("svg", {
2507
+ return h$66("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$63("path", { d: "M939 112c17.673 0 32 14.327 32 32v554.667c0 17.673-14.327 32-32 32l-394.5-0.001v96c0 3.74-0.642 7.331-1.82 10.668H768.4c17.673 0 32 14.326 32 32 0 17.496-14.042 31.712-31.47 31.995l-0.53 0.004H256.6c-17.673 0-32-14.327-32-32 0-17.496 14.042-31.713 31.47-31.995l0.53-0.005h225.721a31.923 31.923 0 0 1-1.817-10.137l-0.004-0.53v-96H86c-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V144c0-17.673 14.327-32 32-32z m-32 64H118v490.666h789V176zM341.9 432c17.496 0 31.713 14.042 31.996 31.47l0.004 0.53v85.333c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V464c0-17.673 14.327-32 32-32z m170.6-85.333c17.496 0 31.713 14.041 31.996 31.47l0.004 0.53v170.666c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V378.667c0-17.673 14.327-32 32-32z m170.6-85.334c17.496 0 31.713 14.042 31.996 31.471l0.004 0.53v256c0 17.672-14.327 32-32 32-17.496 0-31.713-14.042-31.996-31.471l-0.004-0.53v-256c0-17.673 14.327-32 32-32z" }));
2518
+ }, h$66("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
@@ -3205,6 +3205,7 @@ window.__ModuleLoader__.load({
3205
3205
  "panels.market.add.failurePnpmMissing": "pnpm was not found, cannot install",
3206
3206
  "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
3207
  "panels.market.add.failureGeneric": "Something went wrong during install — see the install details",
3208
+ "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
3209
  "panels.market.add.approveTitle": "Your approval is needed for install scripts",
3209
3210
  "panels.market.add.approveCaution": "Only allow packages you trust: install scripts run on this machine with your permissions.",
3210
3211
  "panels.market.add.approveRun": "Allow and continue installing",
@@ -3246,10 +3247,16 @@ window.__ModuleLoader__.load({
3246
3247
  "panels.discover.addingSource": "Adding…",
3247
3248
  "panels.discover.addFirstSource": "Add index source",
3248
3249
  "panels.discover.removeSource": "Remove",
3249
- "panels.discover.removeSourceNamed": "Remove {url}",
3250
- "panels.discover.useSource": "Use",
3251
- "panels.discover.useSourceNamed": "Use {label}",
3252
- "panels.discover.sourceCurrent": "In use",
3250
+ "panels.discover.removeTitle": "Remove this index source?",
3251
+ "panels.discover.removeBody": "\"{label}\" will be removed from this list; the repository itself is not deleted, and you can add it back later.",
3252
+ "panels.discover.sourceActions": "Actions for {label}",
3253
+ "panels.discover.sourceStateWritable": "Publish target",
3254
+ "panels.discover.sourceStateReadOnly": "Read-only list",
3255
+ "panels.discover.sourceEnable": "Set up for publishing",
3256
+ "panels.discover.sourceDisable": "Set to read-only",
3257
+ "panels.discover.sourceWorking": "Updating…",
3258
+ "panels.discover.sourceEnabled": "\"{label}\" is ready for publishing",
3259
+ "panels.discover.sourceReadOnly": "\"{label}\" is now read-only",
3253
3260
  "panels.discover.refresh": "Refresh",
3254
3261
  "panels.discover.search": "Search modules",
3255
3262
  "panels.discover.clearSearch": "Clear search",
@@ -3271,12 +3278,13 @@ window.__ModuleLoader__.load({
3271
3278
  "panels.discover.noSourceHint": "Add a module market index (http address or git repository) to browse and install its modules here",
3272
3279
  "panels.discover.sourcesFailed": "Could not read the index sources.",
3273
3280
  "panels.discover.unreadable": "Could not read this index.",
3281
+ "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.",
3274
3282
  "panels.discover.invalid": "This index is not in a valid format.",
3275
3283
  "panels.discover.emptyRepo": "This repository has no commits yet.",
3276
3284
  "panels.discover.missingIndex": "This repository has no {path} yet.",
3277
3285
  "panels.discover.initTitle": "Initialize this repository as a module market index?",
3278
3286
  "panels.discover.initCta": "Initialize market index",
3279
- "panels.discover.initWhat": "It will write market.json and README.md on {branch}, commit once, and push. Modules you publish from this workbench will commit their build files under packages/<unit>/. The repository stays owned by its owner.",
3287
+ "panels.discover.initWhat": "It will write market.json and README.md on {branch}, commit once, and push. Modules you publish from this workbench will commit their build files under packages/<package-name>/. The repository stays owned by its owner.",
3280
3288
  "panels.discover.initBranch": "Branch",
3281
3289
  "panels.discover.initBranchHint": "The index and build files go to this branch; an empty repository gets it created.",
3282
3290
  "panels.discover.initBranchBad": "Use only letters, digits, dots, underscores, slashes, or dashes in a branch name.",
@@ -3294,8 +3302,23 @@ window.__ModuleLoader__.load({
3294
3302
  "panels.discover.badShellDetail": "This version is not compatible with the running workbench {current}; it requires {peer}",
3295
3303
  "panels.discover.unverified": "Workbench unverified",
3296
3304
  "panels.discover.installing": "Installing…",
3305
+ "panels.discover.installingNamed": "Installing {name}…",
3306
+ "panels.discover.cancelInstall": "Cancel install",
3307
+ "panels.discover.cancelling": "Cancelling…",
3308
+ "panels.discover.installCancelled": "Install cancelled: {name}",
3297
3309
  "panels.discover.installedDone": "Installed: {name}",
3298
3310
  "panels.discover.failed": "Failed: {reason}",
3311
+ "panels.discover.transportTitle": "Where to read this repository",
3312
+ "panels.discover.transportSsh": "SSH",
3313
+ "panels.discover.transportHttps": "HTTPS",
3314
+ "panels.discover.transportOk": "Readable",
3315
+ "panels.discover.transportAuth": "Needs credentials",
3316
+ "panels.discover.transportUnreachable": "Unreachable",
3317
+ "panels.discover.transportUnknown": "Not probed",
3318
+ "panels.discover.transportChecking": "Checking…",
3319
+ "panels.discover.transportTest": "Test this address",
3320
+ "panels.discover.transportPlaceholder": "Or paste another address (mirror, alias)",
3321
+ "panels.discover.transportNeedsAuth": "This repository needs credentials: clone it once in a terminal, or set up an SSH key / credential helper, then install again.",
3299
3322
  "panels.discover.expand": "Show versions",
3300
3323
  "panels.discover.collapse": "Hide versions",
3301
3324
  "panels.discover.versionCount": "{n} versions",
@@ -3586,6 +3609,13 @@ window.__ModuleLoader__.load({
3586
3609
  "approval.publish.version": "Version",
3587
3610
  "approval.publish.author": "Author",
3588
3611
  "approval.publish.authorMissing": "unsigned",
3612
+ "approval.publish.owner": "Owner",
3613
+ "approval.publish.ownerUnowned": "originally unattributed",
3614
+ "approval.publish.ownerTaken": "Owned by {owner}",
3615
+ "approval.publish.unit": "Module id",
3616
+ "approval.publish.unitTaken": "Taken by {entry}",
3617
+ "approval.publish.path": "Artifact dir",
3618
+ "approval.publish.pathTaken": "Taken by {entry}",
3589
3619
  "approval.publish.registry": "Registry",
3590
3620
  "approval.publish.repo": "Repository",
3591
3621
  "approval.publish.branch": "Branch",
@@ -3596,6 +3626,7 @@ window.__ModuleLoader__.load({
3596
3626
  "approval.publish.twoCommits": "build files + market.json in 2 commits, one push",
3597
3627
  "approval.publish.reading": "Reading…",
3598
3628
  "approval.publish.changelog": "Changelog for {version}",
3629
+ "approval.publish.changelogPending": "This release writes the {version} changelog entry",
3599
3630
  "approval.publish.changelogMissing": "No changelog entry for {version}; publishing will be blocked",
3600
3631
  "approval.publish.targetAuto": "configured default",
3601
3632
  "approval.publish.targetTeam": "team registry",
@@ -3604,6 +3635,15 @@ window.__ModuleLoader__.load({
3604
3635
  "approval.publish.targetGit": "git repository",
3605
3636
  "approval.publish.targetMarket": "module market index",
3606
3637
  "approval.publish.targetLocal": "keep local",
3638
+ "approval.market.source": "Index source",
3639
+ "approval.market.url": "URL",
3640
+ "approval.market.action": "This action",
3641
+ "approval.market.policy": "Current state",
3642
+ "approval.market.enable": "make it publishable",
3643
+ "approval.market.disable": "make it read-only",
3644
+ "approval.market.writable": "publishable",
3645
+ "approval.market.readOnly": "read-only module list",
3646
+ "approval.market.reading": "Reading…",
3607
3647
  "markdown.copy": "Copy",
3608
3648
  "markdown.copied": "Copied",
3609
3649
  "markdown.footnotes": "Footnotes",
@@ -3860,6 +3900,7 @@ window.__ModuleLoader__.load({
3860
3900
  "panels.market.add.failurePnpmMissing": "没有找到 pnpm,无法安装",
3861
3901
  "panels.market.add.failureInstalled": "它已经装在这份工作台里了。同一个包不能就地覆盖,得先卸载再装;这次卸载也没成功。",
3862
3902
  "panels.market.add.failureGeneric": "安装过程中出错,原因见安装详情",
3903
+ "panels.market.add.failureCredentials": "这个仓库要凭证:本机没有它的 git 凭据。先在终端里 clone 一次、配好凭据助手,或改用 SSH 地址,再装一次。",
3863
3904
  "panels.market.add.approveTitle": "需要你允许安装脚本",
3864
3905
  "panels.market.add.approveCaution": "只允许你信得过的包:安装脚本会以你的权限在这台机器上运行。",
3865
3906
  "panels.market.add.approveRun": "允许并继续安装",
@@ -3901,10 +3942,16 @@ window.__ModuleLoader__.load({
3901
3942
  "panels.discover.addingSource": "正在添加…",
3902
3943
  "panels.discover.addFirstSource": "添加索引源",
3903
3944
  "panels.discover.removeSource": "移除",
3904
- "panels.discover.removeSourceNamed": "移除 {url}",
3905
- "panels.discover.useSource": "使用",
3906
- "panels.discover.useSourceNamed": "使用 {label}",
3907
- "panels.discover.sourceCurrent": "当前使用",
3945
+ "panels.discover.removeTitle": "移除这个索引源?",
3946
+ "panels.discover.removeBody": "会把「{label}」从这份列表里移除;仓库本身不会被删,之后还能再添加。",
3947
+ "panels.discover.sourceActions": "「{label}」的操作",
3948
+ "panels.discover.sourceStateWritable": "可发布",
3949
+ "panels.discover.sourceStateReadOnly": "仅读取模块列表",
3950
+ "panels.discover.sourceEnable": "设为可发布",
3951
+ "panels.discover.sourceDisable": "设为只读",
3952
+ "panels.discover.sourceWorking": "设置中…",
3953
+ "panels.discover.sourceEnabled": "已把「{label}」设为可发布",
3954
+ "panels.discover.sourceReadOnly": "已把「{label}」设为只读",
3908
3955
  "panels.discover.refresh": "刷新",
3909
3956
  "panels.discover.search": "搜索模块",
3910
3957
  "panels.discover.clearSearch": "清除搜索",
@@ -3926,12 +3973,13 @@ window.__ModuleLoader__.load({
3926
3973
  "panels.discover.noSourceHint": "添加一个模块市场索引(http 地址或 git 仓库),即可在这里浏览和安装其中的模块",
3927
3974
  "panels.discover.sourcesFailed": "无法读取索引源",
3928
3975
  "panels.discover.unreadable": "无法读取此索引",
3976
+ "panels.discover.sourceAuth": "这个索引源读不了:本机没有它的 git 凭据。配好凭据(或在源里改用 SSH 地址),再点右上角的刷新。",
3929
3977
  "panels.discover.invalid": "此索引的格式无效",
3930
3978
  "panels.discover.emptyRepo": "这个仓库还没有任何提交",
3931
3979
  "panels.discover.missingIndex": "仓库里还没有索引文件 {path}",
3932
3980
  "panels.discover.initTitle": "把这个仓库初始化成模块市场索引?",
3933
3981
  "panels.discover.initCta": "初始化成市场索引",
3934
- "panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md,提交一次并推上去;之后从这个工作台发布的模块会把打包好的文件提交到 packages/<unit>/。仓库的写权限归它的所有者。",
3982
+ "panels.discover.initWhat": "会在 {branch} 分支写 market.json 与 README.md,提交一次并推上去;之后从这个工作台发布的模块会把打包好的文件提交到按包名分的 packages/<包名>/。仓库的写权限归它的所有者。",
3935
3983
  "panels.discover.initBranch": "分支",
3936
3984
  "panels.discover.initBranchHint": "索引和打包文件都发到这个分支;空仓库会新建它。",
3937
3985
  "panels.discover.initBranchBad": "分支名只能用字母、数字、点、下划线、斜杠或短横线",
@@ -3949,8 +3997,23 @@ window.__ModuleLoader__.load({
3949
3997
  "panels.discover.badShellDetail": "此版本与当前的工作台 {current} 不兼容,它要求 {peer}",
3950
3998
  "panels.discover.unverified": "工作台未验证",
3951
3999
  "panels.discover.installing": "正在安装…",
4000
+ "panels.discover.installingNamed": "正在安装「{name}」…",
4001
+ "panels.discover.cancelInstall": "取消安装",
4002
+ "panels.discover.cancelling": "正在取消…",
4003
+ "panels.discover.installCancelled": "已取消安装:{name}",
3952
4004
  "panels.discover.installedDone": "装好了:{name}",
3953
4005
  "panels.discover.failed": "操作失败:{reason}",
4006
+ "panels.discover.transportTitle": "从哪读这个仓库",
4007
+ "panels.discover.transportSsh": "SSH",
4008
+ "panels.discover.transportHttps": "HTTPS",
4009
+ "panels.discover.transportOk": "能读",
4010
+ "panels.discover.transportAuth": "要凭证",
4011
+ "panels.discover.transportUnreachable": "连不上",
4012
+ "panels.discover.transportUnknown": "没探成",
4013
+ "panels.discover.transportChecking": "正在探测…",
4014
+ "panels.discover.transportTest": "试这个地址",
4015
+ "panels.discover.transportPlaceholder": "或贴一个别的地址(公司镜像、别名)",
4016
+ "panels.discover.transportNeedsAuth": "这个仓库要凭证:先在终端里把它 clone 一次,或配好 SSH key / 凭据助手;配好后再点安装。",
3954
4017
  "panels.discover.expand": "展开版本",
3955
4018
  "panels.discover.collapse": "收起版本",
3956
4019
  "panels.discover.versionCount": "{n} 个版本",
@@ -4241,6 +4304,13 @@ window.__ModuleLoader__.load({
4241
4304
  "approval.publish.version": "版本",
4242
4305
  "approval.publish.author": "作者",
4243
4306
  "approval.publish.authorMissing": "未署名",
4307
+ "approval.publish.owner": "认领人",
4308
+ "approval.publish.ownerUnowned": "原来没署名",
4309
+ "approval.publish.ownerTaken": "已有主人:{owner}",
4310
+ "approval.publish.unit": "模块 id",
4311
+ "approval.publish.unitTaken": "已被 {entry} 占用",
4312
+ "approval.publish.path": "产物目录",
4313
+ "approval.publish.pathTaken": "已被 {entry} 占用",
4244
4314
  "approval.publish.registry": "源",
4245
4315
  "approval.publish.repo": "仓库",
4246
4316
  "approval.publish.branch": "分支",
@@ -4251,6 +4321,7 @@ window.__ModuleLoader__.load({
4251
4321
  "approval.publish.twoCommits": "打包文件 + market.json 两次提交,一次推送",
4252
4322
  "approval.publish.reading": "读取中…",
4253
4323
  "approval.publish.changelog": "{version} 的更新日志",
4324
+ "approval.publish.changelogPending": "{version} 这一版会写进更新日志,随包发布",
4254
4325
  "approval.publish.changelogMissing": "这一版还没有更新日志({version}),发布会被拦下",
4255
4326
  "approval.publish.targetAuto": "按配置默认",
4256
4327
  "approval.publish.targetTeam": "团队源",
@@ -4259,6 +4330,15 @@ window.__ModuleLoader__.load({
4259
4330
  "approval.publish.targetGit": "git 仓库",
4260
4331
  "approval.publish.targetMarket": "模块市场索引",
4261
4332
  "approval.publish.targetLocal": "留在本机",
4333
+ "approval.market.source": "索引源",
4334
+ "approval.market.url": "地址",
4335
+ "approval.market.action": "这次操作",
4336
+ "approval.market.policy": "当前状态",
4337
+ "approval.market.enable": "设为可发布",
4338
+ "approval.market.disable": "改回只读",
4339
+ "approval.market.writable": "可发布",
4340
+ "approval.market.readOnly": "仅读取模块列表",
4341
+ "approval.market.reading": "正在读取…",
4262
4342
  "markdown.copy": "复制",
4263
4343
  "markdown.copied": "已复制",
4264
4344
  "markdown.footnotes": "脚注",
@@ -4349,6 +4429,99 @@ window.__ModuleLoader__.load({
4349
4429
  return { spec: path === "" ? base : `${base}&path:/${path}` };
4350
4430
  }
4351
4431
  //#endregion
4432
+ //#region ../shared/dist/lib/git-address.js
4433
+ var SCP = /^(?:([A-Za-z0-9._-]+)@)?([A-Za-z0-9.-]+):(?!\/)(\S+)$/;
4434
+ function bare(url) {
4435
+ return url.trim().replace(/^git\+/, "");
4436
+ }
4437
+ function pathOf(pathname) {
4438
+ return pathname.replace(/^\/+/, "").replace(/\/+$/, "");
4439
+ }
4440
+ /**
4441
+ * 把一个 git 地址拆成「哪台主机 + 哪个路径」,不管发布者当初用的是 https、ssh 还是
4442
+ * scp 那种 `git@host:path` 写法;认不出来给 undefined。
4443
+ */
4444
+ function gitAddressOf(url) {
4445
+ const text = bare(url);
4446
+ if (text === "") return void 0;
4447
+ if (text.includes("://")) {
4448
+ let parsed;
4449
+ try {
4450
+ parsed = new URL(text);
4451
+ } catch {
4452
+ return;
4453
+ }
4454
+ if (parsed.protocol !== "https:" && parsed.protocol !== "http:" && parsed.protocol !== "ssh:") return;
4455
+ const path = pathOf(parsed.pathname);
4456
+ if (path === "") return void 0;
4457
+ const port = parsed.port === "" ? void 0 : Number(parsed.port);
4458
+ const shared = {
4459
+ host: parsed.hostname,
4460
+ path,
4461
+ ...port === void 0 ? {} : { port }
4462
+ };
4463
+ if (parsed.protocol !== "ssh:") return {
4464
+ kind: "https",
4465
+ ...shared
4466
+ };
4467
+ return {
4468
+ kind: "ssh",
4469
+ ...shared,
4470
+ ...parsed.username === "" ? {} : { user: parsed.username }
4471
+ };
4472
+ }
4473
+ const scp = SCP.exec(text);
4474
+ if (scp === null) return void 0;
4475
+ const path = pathOf(scp[3] ?? "");
4476
+ if (path === "") return void 0;
4477
+ return {
4478
+ kind: "ssh",
4479
+ host: scp[2] ?? "",
4480
+ path,
4481
+ ...scp[1] === void 0 ? {} : { user: scp[1] }
4482
+ };
4483
+ }
4484
+ /** 一份地址的规范写法:ssh 一律成 `ssh://user@host/path`(pnpm 认这个),https 原样。 */
4485
+ function gitAddressText(address) {
4486
+ const port = address.port === void 0 ? "" : `:${String(address.port)}`;
4487
+ if (address.kind === "ssh") return `ssh://${address.user === void 0 || address.user === "" ? "git" : address.user}@${address.host}${port}/${address.path}`;
4488
+ return `https://${address.host}${port}/${address.path}`;
4489
+ }
4490
+ /**
4491
+ * 同一个仓库的两种读法,发布者用的那种排前面。ssh 那条一律规范成 `ssh://` 形式,
4492
+ * 因为 `git@host:path` 拼进安装 spec 时 pnpm 不认;https 那条保留发布者的原样(含 http)。
4493
+ */
4494
+ function gitTransportCandidates(url) {
4495
+ const address = gitAddressOf(url);
4496
+ if (address === void 0) {
4497
+ const only = bare(url);
4498
+ return only === "" ? [] : [{
4499
+ kind: only.startsWith("ssh") ? "ssh" : "https",
4500
+ url: only
4501
+ }];
4502
+ }
4503
+ const primary = {
4504
+ kind: address.kind,
4505
+ url: address.kind === "ssh" ? gitAddressText(address) : bare(url)
4506
+ };
4507
+ const other = address.kind === "https" ? {
4508
+ kind: "ssh",
4509
+ url: gitAddressText({
4510
+ kind: "ssh",
4511
+ host: address.host,
4512
+ path: address.path
4513
+ })
4514
+ } : {
4515
+ kind: "https",
4516
+ url: gitAddressText({
4517
+ kind: "https",
4518
+ host: address.host,
4519
+ path: address.path
4520
+ })
4521
+ };
4522
+ return other.url === primary.url ? [primary] : [primary, other];
4523
+ }
4524
+ //#endregion
4352
4525
  //#region ../shared/dist/lib/board-fact.js
4353
4526
  /**
4354
4527
  * 判一个路径落不落在这个工作区里(按路径前缀比,不是字符串包含)。
@@ -4626,6 +4799,7 @@ window.__ModuleLoader__.load({
4626
4799
  silentNextProbe = true;
4627
4800
  }
4628
4801
  var probe$1 = NO_PROBE;
4802
+ var probing = 0;
4629
4803
  var probeListeners = /* @__PURE__ */ new Set();
4630
4804
  function probeValue() {
4631
4805
  return probe$1;
@@ -4659,8 +4833,10 @@ window.__ModuleLoader__.load({
4659
4833
  };
4660
4834
  }
4661
4835
  function setCapabilities(next, rechecked = false) {
4662
- if (next === null) setProbe(NO_PROBE);
4663
- else if (rechecked) setProbe({
4836
+ if (next === null) {
4837
+ probing = 0;
4838
+ setProbe(NO_PROBE);
4839
+ } else if (rechecked) setProbe({
4664
4840
  ...probe$1,
4665
4841
  checkedAt: Date.now()
4666
4842
  });
@@ -4669,13 +4845,17 @@ window.__ModuleLoader__.load({
4669
4845
  for (const listener of [...listeners$7]) listener();
4670
4846
  }
4671
4847
  function beginProbe() {
4672
- if (probe$1.checking) return;
4848
+ probing += 1;
4849
+ if (probing > 1) return;
4673
4850
  setProbe({
4674
4851
  ...probe$1,
4675
4852
  checking: true
4676
4853
  });
4677
4854
  }
4678
4855
  function endProbe() {
4856
+ if (probing === 0) return;
4857
+ probing -= 1;
4858
+ if (probing > 0) return;
4679
4859
  setProbe({
4680
4860
  ...probe$1,
4681
4861
  checking: false
@@ -4715,13 +4895,14 @@ window.__ModuleLoader__.load({
4715
4895
  const at = epoch$1;
4716
4896
  const seq = readSeq$1 += 1;
4717
4897
  if (force) newestForceSeq$1 = seq;
4718
- if (force && !silent) beginProbe();
4898
+ const shown = force && !silent;
4899
+ if (shown) beginProbe();
4719
4900
  return shareCapabilityFetch(force, load).then((result) => {
4720
4901
  if (at !== epoch$1) return;
4721
4902
  if (!force && seq < newestForceSeq$1) return;
4722
4903
  publishCapability(result, force);
4723
4904
  }).finally(() => {
4724
- if (force) endProbe();
4905
+ if (shown) endProbe();
4725
4906
  });
4726
4907
  }
4727
4908
  function useCapabilities(refreshToken, reloadToken = 0) {
@@ -5719,121 +5900,138 @@ window.__ModuleLoader__.load({
5719
5900
  };
5720
5901
  }
5721
5902
  var MarketPage_module_default = {
5722
- marketList: "_marketList_1idrk_1",
5723
- marketRow: "_marketRow_1idrk_10",
5724
- marketIcon: "_marketIcon_1idrk_20",
5725
- marketMain: "_marketMain_1idrk_32",
5726
- marketName: "_marketName_1idrk_39",
5727
- marketStatus: "_marketStatus_1idrk_48",
5728
- marketStateText: "_marketStateText_1idrk_58",
5729
- marketSep: "_marketSep_1idrk_62",
5730
- marketReason: "_marketReason_1idrk_66",
5731
- marketVersion: "_marketVersion_1idrk_72",
5732
- marketLocalTag: "_marketLocalTag_1idrk_94",
5733
- marketEnd: "_marketEnd_1idrk_105",
5734
- marketSwitchSeat: "_marketSwitchSeat_1idrk_112",
5735
- marketActions: "_marketActions_1idrk_125",
5736
- marketUpdateAction: "_marketUpdateAction_1idrk_131",
5737
- marketSelfDivider: "_marketSelfDivider_1idrk_137",
5738
- marketSection: "_marketSection_1idrk_143",
5739
- marketSectionHead: "_marketSectionHead_1idrk_150",
5740
- marketSectionIcon: "_marketSectionIcon_1idrk_156",
5741
- marketSectionTitle: "_marketSectionTitle_1idrk_163",
5742
- marketSectionCount: "_marketSectionCount_1idrk_169",
5743
- marketSectionQuiet: "_marketSectionQuiet_1idrk_175",
5744
- marketProgress: "_marketProgress_1idrk_188",
5745
- marketNote: "_marketNote_1idrk_198",
5746
- marketFailure: "_marketFailure_1idrk_205",
5747
- marketEmpty: "_marketEmpty_1idrk_212",
5748
- marketPage: "_marketPage_1idrk_217",
5749
- marketPageHead: "_marketPageHead_1idrk_235",
5750
- marketPageTitle: "_marketPageTitle_1idrk_243",
5751
- marketPageIntro: "_marketPageIntro_1idrk_248",
5752
- marketPageTools: "_marketPageTools_1idrk_254",
5753
- marketPanel: "_marketPanel_1idrk_263",
5754
- marketTabs: "_marketTabs_1idrk_273",
5755
- marketTabList: "_marketTabList_1idrk_278",
5756
- marketIconButton: "_marketIconButton_1idrk_283",
5757
- marketIconWrap: "_marketIconWrap_1idrk_308",
5758
- marketIconButtonSpinning: "_marketIconButtonSpinning_1idrk_312",
5759
- "wb-spin": "_wb-spin_1idrk_1",
5760
- marketAddButton: "_marketAddButton_1idrk_316",
5761
- marketEmptyTitle: "_marketEmptyTitle_1idrk_333",
5762
- discoverPage: "_discoverPage_1idrk_347",
5763
- discoverBar: "_discoverBar_1idrk_354",
5764
- discoverTools: "_discoverTools_1idrk_361",
5765
- discoverMarket: "_discoverMarket_1idrk_367",
5766
- discoverMarketButton: "_discoverMarketButton_1idrk_372",
5767
- discoverMarketName: "_discoverMarketName_1idrk_379",
5768
- discoverLabels: "_discoverLabels_1idrk_385",
5769
- discoverSort: "_discoverSort_1idrk_390",
5770
- discoverRefresh: "_discoverRefresh_1idrk_395",
5771
- discoverSearch: "_discoverSearch_1idrk_399",
5772
- discoverSearchField: "_discoverSearchField_1idrk_407",
5773
- discoverSearchFieldFilled: "_discoverSearchFieldFilled_1idrk_412",
5774
- discoverSearchClear: "_discoverSearchClear_1idrk_421",
5775
- discoverChips: "_discoverChips_1idrk_472",
5776
- discoverList: "_discoverList_1idrk_479",
5777
- discoverCard: "_discoverCard_1idrk_488",
5778
- discoverArtwork: "_discoverArtwork_1idrk_502",
5779
- discoverArtworkImage: "_discoverArtworkImage_1idrk_514",
5780
- discoverMain: "_discoverMain_1idrk_518",
5781
- discoverTitleRow: "_discoverTitleRow_1idrk_526",
5782
- discoverCardOpen: "_discoverCardOpen_1idrk_534",
5783
- discoverStrong: "_discoverStrong_1idrk_565",
5784
- discoverDesc: "_discoverDesc_1idrk_571",
5785
- discoverMeta: "_discoverMeta_1idrk_580",
5786
- discoverMuted: "_discoverMuted_1idrk_587",
5787
- discoverEnd: "_discoverEnd_1idrk_593",
5788
- discoverBlocked: "_discoverBlocked_1idrk_602",
5789
- discoverEmpty: "_discoverEmpty_1idrk_607",
5790
- discoverEmptyTitle: "_discoverEmptyTitle_1idrk_616",
5791
- discoverDetail: "_discoverDetail_1idrk_626",
5792
- discoverCrumb: "_discoverCrumb_1idrk_632",
5793
- discoverCrumbIcon: "_discoverCrumbIcon_1idrk_655",
5794
- discoverDetailHead: "_discoverDetailHead_1idrk_659",
5795
- discoverDetailTitle: "_discoverDetailTitle_1idrk_665",
5796
- discoverDetailText: "_discoverDetailText_1idrk_671",
5797
- discoverDetailPanel: "_discoverDetailPanel_1idrk_678",
5798
- discoverDetailTabs: "_discoverDetailTabs_1idrk_685",
5799
- discoverDetailTabList: "_discoverDetailTabList_1idrk_690",
5800
- discoverDocBody: "_discoverDocBody_1idrk_695",
5801
- discoverDocNotice: "_discoverDocNotice_1idrk_700",
5802
- discoverSection: "_discoverSection_1idrk_706",
5803
- discoverSectionTitle: "_discoverSectionTitle_1idrk_713",
5804
- discoverFacts: "_discoverFacts_1idrk_719",
5805
- discoverFactRow: "_discoverFactRow_1idrk_724",
5806
- discoverFactKind: "_discoverFactKind_1idrk_734",
5807
- discoverFactValue: "_discoverFactValue_1idrk_740",
5808
- discoverCode: "_discoverCode_1idrk_748",
5809
- discoverTags: "_discoverTags_1idrk_757",
5810
- discoverLink: "_discoverLink_1idrk_764",
5811
- discoverVersions: "_discoverVersions_1idrk_774",
5812
- discoverVersionRow: "_discoverVersionRow_1idrk_782",
5813
- discoverVersionName: "_discoverVersionName_1idrk_790",
5814
- discoverError: "_discoverError_1idrk_795",
5815
- discoverFailure: "_discoverFailure_1idrk_804",
5816
- discoverLoading: "_discoverLoading_1idrk_810",
5817
- discoverNotice: "_discoverNotice_1idrk_819",
5818
- discoverMore: "_discoverMore_1idrk_837",
5819
- discoverDialog: "_discoverDialog_1idrk_841",
5820
- discoverDialogBody: "_discoverDialogBody_1idrk_845",
5821
- discoverSourceList: "_discoverSourceList_1idrk_851",
5822
- discoverSourceRow: "_discoverSourceRow_1idrk_859",
5823
- discoverSourceCurrent: "_discoverSourceCurrent_1idrk_868",
5824
- discoverSourceLoading: "_discoverSourceLoading_1idrk_875",
5825
- discoverSourceHint: "_discoverSourceHint_1idrk_885",
5826
- discoverSourceError: "_discoverSourceError_1idrk_899",
5827
- discoverSourceForm: "_discoverSourceForm_1idrk_905",
5828
- discoverGrow: "_discoverGrow_1idrk_911",
5829
- discoverField: "_discoverField_1idrk_916",
5830
- discoverFieldLabel: "_discoverFieldLabel_1idrk_922",
5831
- discoverConfirmHead: "_discoverConfirmHead_1idrk_927",
5832
- discoverSkeletonFill: "_discoverSkeletonFill_1idrk_933",
5833
- "wb-skeleton": "_wb-skeleton_1idrk_1",
5834
- discoverSkeletonBar: "_discoverSkeletonBar_1idrk_942",
5835
- discoverSkeletonTitle: "_discoverSkeletonTitle_1idrk_949",
5836
- discoverSkeletonDesc: "_discoverSkeletonDesc_1idrk_953"
5903
+ marketList: "_marketList_jfyof_1",
5904
+ marketRow: "_marketRow_jfyof_10",
5905
+ marketIcon: "_marketIcon_jfyof_20",
5906
+ marketMain: "_marketMain_jfyof_32",
5907
+ marketName: "_marketName_jfyof_39",
5908
+ marketStatus: "_marketStatus_jfyof_48",
5909
+ marketStateText: "_marketStateText_jfyof_58",
5910
+ marketSep: "_marketSep_jfyof_62",
5911
+ marketReason: "_marketReason_jfyof_66",
5912
+ marketVersion: "_marketVersion_jfyof_72",
5913
+ marketLocalTag: "_marketLocalTag_jfyof_94",
5914
+ marketEnd: "_marketEnd_jfyof_105",
5915
+ marketSwitchSeat: "_marketSwitchSeat_jfyof_112",
5916
+ marketActions: "_marketActions_jfyof_125",
5917
+ marketUpdateAction: "_marketUpdateAction_jfyof_131",
5918
+ marketSelfDivider: "_marketSelfDivider_jfyof_137",
5919
+ marketSection: "_marketSection_jfyof_143",
5920
+ marketSectionHead: "_marketSectionHead_jfyof_150",
5921
+ marketSectionIcon: "_marketSectionIcon_jfyof_156",
5922
+ marketSectionTitle: "_marketSectionTitle_jfyof_163",
5923
+ marketSectionCount: "_marketSectionCount_jfyof_169",
5924
+ marketSectionQuiet: "_marketSectionQuiet_jfyof_175",
5925
+ marketProgress: "_marketProgress_jfyof_188",
5926
+ marketNote: "_marketNote_jfyof_198",
5927
+ marketFailure: "_marketFailure_jfyof_205",
5928
+ marketEmpty: "_marketEmpty_jfyof_212",
5929
+ marketPage: "_marketPage_jfyof_217",
5930
+ marketPageHead: "_marketPageHead_jfyof_235",
5931
+ marketPageTitle: "_marketPageTitle_jfyof_243",
5932
+ marketPageIntro: "_marketPageIntro_jfyof_248",
5933
+ marketPageTools: "_marketPageTools_jfyof_254",
5934
+ marketPanel: "_marketPanel_jfyof_263",
5935
+ marketTabs: "_marketTabs_jfyof_273",
5936
+ marketTabList: "_marketTabList_jfyof_278",
5937
+ marketIconButton: "_marketIconButton_jfyof_283",
5938
+ marketIconWrap: "_marketIconWrap_jfyof_308",
5939
+ marketIconButtonSpinning: "_marketIconButtonSpinning_jfyof_312",
5940
+ "wb-spin": "_wb-spin_jfyof_1",
5941
+ marketAddButton: "_marketAddButton_jfyof_316",
5942
+ marketEmptyTitle: "_marketEmptyTitle_jfyof_333",
5943
+ discoverPage: "_discoverPage_jfyof_347",
5944
+ discoverBar: "_discoverBar_jfyof_354",
5945
+ discoverTools: "_discoverTools_jfyof_361",
5946
+ discoverMarket: "_discoverMarket_jfyof_367",
5947
+ discoverMarketButton: "_discoverMarketButton_jfyof_372",
5948
+ discoverMarketName: "_discoverMarketName_jfyof_379",
5949
+ discoverLabels: "_discoverLabels_jfyof_385",
5950
+ discoverSort: "_discoverSort_jfyof_390",
5951
+ discoverRefresh: "_discoverRefresh_jfyof_395",
5952
+ discoverSearch: "_discoverSearch_jfyof_399",
5953
+ discoverSearchField: "_discoverSearchField_jfyof_407",
5954
+ discoverSearchFieldFilled: "_discoverSearchFieldFilled_jfyof_412",
5955
+ discoverSearchClear: "_discoverSearchClear_jfyof_421",
5956
+ discoverChips: "_discoverChips_jfyof_472",
5957
+ discoverList: "_discoverList_jfyof_479",
5958
+ discoverCard: "_discoverCard_jfyof_488",
5959
+ discoverArtwork: "_discoverArtwork_jfyof_502",
5960
+ discoverArtworkImage: "_discoverArtworkImage_jfyof_514",
5961
+ discoverMain: "_discoverMain_jfyof_518",
5962
+ discoverTitleRow: "_discoverTitleRow_jfyof_526",
5963
+ discoverCardOpen: "_discoverCardOpen_jfyof_534",
5964
+ discoverStrong: "_discoverStrong_jfyof_565",
5965
+ discoverDesc: "_discoverDesc_jfyof_571",
5966
+ discoverMeta: "_discoverMeta_jfyof_580",
5967
+ discoverMuted: "_discoverMuted_jfyof_587",
5968
+ discoverEnd: "_discoverEnd_jfyof_593",
5969
+ discoverBlocked: "_discoverBlocked_jfyof_602",
5970
+ discoverEmpty: "_discoverEmpty_jfyof_607",
5971
+ discoverEmptyTitle: "_discoverEmptyTitle_jfyof_616",
5972
+ discoverDetail: "_discoverDetail_jfyof_626",
5973
+ discoverCrumb: "_discoverCrumb_jfyof_632",
5974
+ discoverCrumbIcon: "_discoverCrumbIcon_jfyof_655",
5975
+ discoverDetailHead: "_discoverDetailHead_jfyof_659",
5976
+ discoverDetailTitle: "_discoverDetailTitle_jfyof_665",
5977
+ discoverDetailText: "_discoverDetailText_jfyof_671",
5978
+ discoverDetailPanel: "_discoverDetailPanel_jfyof_678",
5979
+ discoverDetailTabs: "_discoverDetailTabs_jfyof_685",
5980
+ discoverDetailTabList: "_discoverDetailTabList_jfyof_690",
5981
+ discoverDocBody: "_discoverDocBody_jfyof_695",
5982
+ discoverDocNotice: "_discoverDocNotice_jfyof_700",
5983
+ discoverSection: "_discoverSection_jfyof_706",
5984
+ discoverSectionTitle: "_discoverSectionTitle_jfyof_713",
5985
+ discoverFacts: "_discoverFacts_jfyof_719",
5986
+ discoverFactRow: "_discoverFactRow_jfyof_724",
5987
+ discoverFactKind: "_discoverFactKind_jfyof_734",
5988
+ discoverFactValue: "_discoverFactValue_jfyof_740",
5989
+ discoverCode: "_discoverCode_jfyof_748",
5990
+ discoverTags: "_discoverTags_jfyof_757",
5991
+ discoverLink: "_discoverLink_jfyof_764",
5992
+ discoverVersions: "_discoverVersions_jfyof_774",
5993
+ discoverVersionRow: "_discoverVersionRow_jfyof_782",
5994
+ discoverVersionName: "_discoverVersionName_jfyof_790",
5995
+ discoverError: "_discoverError_jfyof_795",
5996
+ discoverFailure: "_discoverFailure_jfyof_804",
5997
+ discoverLoading: "_discoverLoading_jfyof_810",
5998
+ discoverNotice: "_discoverNotice_jfyof_819",
5999
+ discoverMore: "_discoverMore_jfyof_837",
6000
+ discoverTransport: "_discoverTransport_jfyof_841",
6001
+ discoverTransportTitle: "_discoverTransportTitle_jfyof_847",
6002
+ discoverTransportRows: "_discoverTransportRows_jfyof_852",
6003
+ discoverTransportRow: "_discoverTransportRow_jfyof_852",
6004
+ discoverTransportRadio: "_discoverTransportRadio_jfyof_873",
6005
+ discoverTransportKind: "_discoverTransportKind_jfyof_887",
6006
+ discoverTransportState: "_discoverTransportState_jfyof_893",
6007
+ discoverTransportCustom: "_discoverTransportCustom_jfyof_913",
6008
+ discoverTransportInput: "_discoverTransportInput_jfyof_919",
6009
+ discoverInstallBar: "_discoverInstallBar_jfyof_924",
6010
+ discoverInstallText: "_discoverInstallText_jfyof_935",
6011
+ discoverDialog: "_discoverDialog_jfyof_941",
6012
+ discoverDialogBody: "_discoverDialogBody_jfyof_945",
6013
+ discoverSourceList: "_discoverSourceList_jfyof_951",
6014
+ discoverSourceRow: "_discoverSourceRow_jfyof_959",
6015
+ discoverSourceConfirm: "_discoverSourceConfirm_jfyof_968",
6016
+ discoverSourcePick: "_discoverSourcePick_jfyof_974",
6017
+ discoverSourceRadio: "_discoverSourceRadio_jfyof_983",
6018
+ discoverSourceMain: "_discoverSourceMain_jfyof_991",
6019
+ discoverSourceHead: "_discoverSourceHead_jfyof_999",
6020
+ discoverSourceUrl: "_discoverSourceUrl_jfyof_1007",
6021
+ discoverSourceMore: "_discoverSourceMore_jfyof_1017",
6022
+ discoverSourceLoading: "_discoverSourceLoading_jfyof_1021",
6023
+ discoverSourceHint: "_discoverSourceHint_jfyof_1031",
6024
+ discoverSourceError: "_discoverSourceError_jfyof_1045",
6025
+ discoverSourceForm: "_discoverSourceForm_jfyof_1051",
6026
+ discoverGrow: "_discoverGrow_jfyof_1057",
6027
+ discoverField: "_discoverField_jfyof_1062",
6028
+ discoverFieldLabel: "_discoverFieldLabel_jfyof_1068",
6029
+ discoverConfirmHead: "_discoverConfirmHead_jfyof_1073",
6030
+ discoverSkeletonFill: "_discoverSkeletonFill_jfyof_1079",
6031
+ "wb-skeleton": "_wb-skeleton_jfyof_1",
6032
+ discoverSkeletonBar: "_discoverSkeletonBar_jfyof_1088",
6033
+ discoverSkeletonTitle: "_discoverSkeletonTitle_jfyof_1095",
6034
+ discoverSkeletonDesc: "_discoverSkeletonDesc_jfyof_1099"
5837
6035
  };
5838
6036
  //#endregion
5839
6037
  //#region src/app/layouts/market/discover-states.tsx
@@ -5892,6 +6090,19 @@ window.__ModuleLoader__.load({
5892
6090
  onClick: onAdd
5893
6091
  }, t("panels.discover.addFirstSource")));
5894
6092
  }
6093
+ function DiscoverReadFailure({ t, text, auth, onRetry }) {
6094
+ return /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
6095
+ t,
6096
+ text,
6097
+ onRetry
6098
+ }), auth ? /* @__PURE__ */ (0, react.createElement)("p", {
6099
+ className: MarketPage_module_default.discoverNotice,
6100
+ role: "note"
6101
+ }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
6102
+ size: 14,
6103
+ "aria-hidden": "true"
6104
+ }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.sourceAuth"))) : null);
6105
+ }
5895
6106
  //#endregion
5896
6107
  //#region src/app/layouts/rightbar/MarketStates.tsx
5897
6108
  function MarketChecking({ t }) {
@@ -6461,7 +6672,9 @@ window.__ModuleLoader__.load({
6461
6672
  function heldWizardPhase(phase, classifying) {
6462
6673
  return classifying && (phase === "preview" || phase === "idle") ? "inspecting" : phase;
6463
6674
  }
6675
+ 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;
6464
6676
  var FAILURE_KEYS = {
6677
+ credentials: "panels.market.add.failureCredentials",
6465
6678
  network: "panels.market.add.failureNetwork",
6466
6679
  "spec-host": "panels.market.add.failureNetworkHost",
6467
6680
  "not-found": "panels.market.add.failureNotFound",
@@ -6483,9 +6696,15 @@ window.__ModuleLoader__.load({
6483
6696
  "stop-profile": "panels.market.add.failureGeneric",
6484
6697
  "stale-approval": "panels.market.add.failureGeneric"
6485
6698
  };
6699
+ function needsCredentials(change) {
6700
+ const text = `${change.errorDetail ?? ""}\n${change.packageResult?.output ?? ""}`;
6701
+ return CREDENTIAL_TEXT.test(text);
6702
+ }
6486
6703
  function failureCode(change) {
6487
6704
  if (change.failedAt === "spec-host") return "spec-host";
6488
- return change.errorCode ?? change.packageResult?.kind ?? change.application;
6705
+ const code = change.errorCode ?? change.packageResult?.kind ?? change.application;
6706
+ if (code === "operation-error" && needsCredentials(change)) return "credentials";
6707
+ return code;
6489
6708
  }
6490
6709
  function failureReasonKey(code) {
6491
6710
  return FAILURE_KEYS[code];
@@ -7146,6 +7365,9 @@ window.__ModuleLoader__.load({
7146
7365
  function sameSourceUrl(left, right) {
7147
7366
  return withoutTrailingSlash(left.trim()) === withoutTrailingSlash(right.trim());
7148
7367
  }
7368
+ function sourceStateOf(source) {
7369
+ return source.kind === "git" && source.policy === "artifacts-in-repo" ? "writable" : "read-only";
7370
+ }
7149
7371
  function sourceSuffix(url) {
7150
7372
  return (withoutTrailingSlash(url).split(/[/:]/).filter((part) => part !== "").pop() ?? "").replace(/\.git$/, "");
7151
7373
  }
@@ -7188,7 +7410,7 @@ window.__ModuleLoader__.load({
7188
7410
  onError: () => setFailed(src)
7189
7411
  });
7190
7412
  }
7191
- function EntryAction({ t, entry, title, onInstall, onShowInstalled }) {
7413
+ function EntryAction({ t, entry, title, onInstall, onShowInstalled, installDisabled = false }) {
7192
7414
  const latest = latestVersionOf(entry);
7193
7415
  if (latest === void 0) return null;
7194
7416
  if (latest.install === "installed" || latest.install === "update-available") return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
@@ -7215,11 +7437,12 @@ window.__ModuleLoader__.load({
7215
7437
  type: "button",
7216
7438
  variant: "outline",
7217
7439
  size: "sm",
7440
+ disabled: installDisabled,
7218
7441
  "aria-label": t("panels.discover.installTitle", { name: title }),
7219
7442
  onClick: () => onInstall(entry, latest)
7220
7443
  }, t("panels.discover.cardInstall"));
7221
7444
  }
7222
- function EntryCard({ t, locale, entry, onOpen, onInstall, onShowInstalled }) {
7445
+ function EntryCard({ t, locale, entry, onOpen, onInstall, onShowInstalled, installDisabled = false }) {
7223
7446
  const title = displayTitleOf(entry, locale);
7224
7447
  const latest = latestVersionOf(entry);
7225
7448
  const description = marketText(entry.description, locale);
@@ -7244,10 +7467,11 @@ window.__ModuleLoader__.load({
7244
7467
  entry,
7245
7468
  title,
7246
7469
  onInstall,
7247
- onShowInstalled
7470
+ onShowInstalled,
7471
+ installDisabled
7248
7472
  })));
7249
7473
  }
7250
- function DiscoverRows({ t, locale, entries, onOpen, onInstall, onShowInstalled }) {
7474
+ function DiscoverRows({ t, locale, entries, onOpen, onInstall, onShowInstalled, installDisabled }) {
7251
7475
  return /* @__PURE__ */ (0, react.createElement)("ul", { className: MarketPage_module_default.discoverList }, entries.map((entry) => /* @__PURE__ */ (0, react.createElement)(EntryCard, {
7252
7476
  key: entry.name,
7253
7477
  t,
@@ -7255,12 +7479,13 @@ window.__ModuleLoader__.load({
7255
7479
  entry,
7256
7480
  onOpen,
7257
7481
  onInstall,
7258
- onShowInstalled
7482
+ onShowInstalled,
7483
+ installDisabled: installDisabled === true
7259
7484
  })));
7260
7485
  }
7261
7486
  //#endregion
7262
7487
  //#region src/app/layouts/market/discover-versions.tsx
7263
- function DiscoverVersions({ t, locale, entry, onInstall }) {
7488
+ function DiscoverVersions({ t, locale, entry, onInstall, installDisabled = false }) {
7264
7489
  const latest = latestVersionOf(entry);
7265
7490
  return /* @__PURE__ */ (0, react.createElement)("ul", {
7266
7491
  className: MarketPage_module_default.discoverVersions,
@@ -7281,6 +7506,7 @@ window.__ModuleLoader__.load({
7281
7506
  type: "button",
7282
7507
  variant: "ghost",
7283
7508
  size: "sm",
7509
+ disabled: installDisabled,
7284
7510
  "aria-label": t("panels.discover.installVersionTitle", {
7285
7511
  name: entry.name,
7286
7512
  version: version.version
@@ -7293,6 +7519,7 @@ window.__ModuleLoader__.load({
7293
7519
  //#region ../shared/dist/contract/protocol/market-index.js
7294
7520
  var MARKET_DISCOVER_ROUTE = "panels/market-discover";
7295
7521
  var MARKET_DOC_ROUTE = "panels/market-doc";
7522
+ var MARKET_GIT_PROBE_ROUTE = "panels/git-probe";
7296
7523
  var MARKET_PUBLISH_PREVIEW_ROUTE = "panels/market-publish-preview";
7297
7524
  var MARKET_SOURCES_ROUTE = "panels/market-sources";
7298
7525
  //#endregion
@@ -7303,6 +7530,9 @@ window.__ModuleLoader__.load({
7303
7530
  function readMarketSources() {
7304
7531
  return apiGet(MARKET_SOURCES_ROUTE);
7305
7532
  }
7533
+ function readGitProbe(url) {
7534
+ return apiGet(MARKET_GIT_PROBE_ROUTE, { url });
7535
+ }
7306
7536
  function readMarketDoc(name, version, kind) {
7307
7537
  return apiGet(MARKET_DOC_ROUTE, {
7308
7538
  name,
@@ -7310,11 +7540,13 @@ window.__ModuleLoader__.load({
7310
7540
  kind
7311
7541
  });
7312
7542
  }
7313
- function readPublishPreview(unit, version, author) {
7543
+ function readPublishPreview(unit, version, author, changelog, changelogType) {
7314
7544
  return apiGet(MARKET_PUBLISH_PREVIEW_ROUTE, {
7315
7545
  unit,
7316
7546
  ...version === void 0 || version === "" ? {} : { version },
7317
- ...author === void 0 || author === "" ? {} : { author }
7547
+ ...author === void 0 || author === "" ? {} : { author },
7548
+ ...changelog === void 0 || changelog.trim() === "" ? {} : { changelog },
7549
+ ...changelogType === void 0 || changelogType === "" ? {} : { changelogType }
7318
7550
  });
7319
7551
  }
7320
7552
  //#endregion
@@ -7367,13 +7599,13 @@ window.__ModuleLoader__.load({
7367
7599
  }
7368
7600
  //#endregion
7369
7601
  //#region src/app/layouts/market/discover-detail.tsx
7370
- function factLabel(t, fact) {
7602
+ function factLabel$1(t, fact) {
7371
7603
  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");
7372
7604
  }
7373
7605
  function FactRow({ kind, children }) {
7374
7606
  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));
7375
7607
  }
7376
- function OverviewPanel({ t, locale, entry, latest, market, onInstall }) {
7608
+ function OverviewPanel({ t, locale, entry, latest, market, onInstall, installDisabled }) {
7377
7609
  const description = marketText(entry.description, locale);
7378
7610
  const date = publishDateText(latest?.publishTimestamp, locale, "long");
7379
7611
  const facts = latest === void 0 ? [] : sourceFactsOf(entry.name, latest);
@@ -7393,12 +7625,13 @@ window.__ModuleLoader__.load({
7393
7625
  rel: "noopener noreferrer"
7394
7626
  }, entry.homepage)), facts.map((fact) => /* @__PURE__ */ (0, react.createElement)(FactRow, {
7395
7627
  key: `${fact.kind}:${fact.value}`,
7396
- kind: factLabel(t, fact)
7628
+ kind: factLabel$1(t, fact)
7397
7629
  }, /* @__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, {
7398
7630
  t,
7399
7631
  locale,
7400
7632
  entry,
7401
- onInstall
7633
+ onInstall,
7634
+ installDisabled: installDisabled === true
7402
7635
  })));
7403
7636
  }
7404
7637
  function DiscoverDetail(props) {
@@ -7445,7 +7678,8 @@ window.__ModuleLoader__.load({
7445
7678
  entry,
7446
7679
  title,
7447
7680
  onInstall: props.onInstall,
7448
- onShowInstalled: props.onShowInstalled
7681
+ onShowInstalled: props.onShowInstalled,
7682
+ installDisabled: props.installDisabled === true
7449
7683
  })), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverDetailTabs }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.SegmentedTabs, {
7450
7684
  className: MarketPage_module_default.discoverDetailTabList,
7451
7685
  items: tabItems,
@@ -7463,7 +7697,8 @@ window.__ModuleLoader__.load({
7463
7697
  entry,
7464
7698
  latest,
7465
7699
  market: props.market,
7466
- onInstall: props.onInstall
7700
+ onInstall: props.onInstall,
7701
+ installDisabled: props.installDisabled === true
7467
7702
  })) : null, tab === "overview" || latest === void 0 ? null : /* @__PURE__ */ (0, react.createElement)("div", {
7468
7703
  className: MarketPage_module_default.discoverDetailPanel,
7469
7704
  id: `${idPrefix}-panel-${tab}`,
@@ -7478,12 +7713,164 @@ window.__ModuleLoader__.load({
7478
7713
  })));
7479
7714
  }
7480
7715
  //#endregion
7716
+ //#region src/app/layouts/market/discover-installing.tsx
7717
+ function DiscoverInstalling({ t, name, cancelling, onCancel }) {
7718
+ return /* @__PURE__ */ (0, react.createElement)("p", {
7719
+ className: MarketPage_module_default.discoverInstallBar,
7720
+ role: "status"
7721
+ }, /* @__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, {
7722
+ type: "button",
7723
+ variant: "outline",
7724
+ size: "sm",
7725
+ disabled: cancelling,
7726
+ "aria-busy": cancelling,
7727
+ onClick: onCancel
7728
+ }, t(cancelling ? "panels.discover.cancelling" : "panels.discover.cancelInstall")));
7729
+ }
7730
+ //#endregion
7731
+ //#region src/app/layouts/market/discover-transport.tsx
7732
+ function stateText(t, state) {
7733
+ if (state === "ok") return "";
7734
+ if (state === "auth") return t("panels.discover.transportAuth");
7735
+ if (state === "unreachable") return t("panels.discover.transportUnreachable");
7736
+ if (state === "unknown") return t("panels.discover.transportUnknown");
7737
+ return t("panels.discover.transportChecking");
7738
+ }
7739
+ function DiscoverTransport({ t, transport }) {
7740
+ const needsAuth = transport.rows.length > 0 && transport.rows.every((row) => transport.states[row.url] === "auth") && transport.customState !== "ok";
7741
+ const customBusy = transport.customState === "checking";
7742
+ return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverTransport }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverTransportTitle }, t("panels.discover.transportTitle")), /* @__PURE__ */ (0, react.createElement)("div", {
7743
+ className: MarketPage_module_default.discoverTransportRows,
7744
+ role: "radiogroup",
7745
+ "aria-label": t("panels.discover.transportTitle")
7746
+ }, transport.rows.map((row) => {
7747
+ const state = transport.states[row.url] ?? "checking";
7748
+ const label = stateText(t, state);
7749
+ return /* @__PURE__ */ (0, react.createElement)("label", {
7750
+ key: row.url,
7751
+ className: MarketPage_module_default.discoverTransportRow,
7752
+ "data-state": state,
7753
+ title: row.url
7754
+ }, /* @__PURE__ */ (0, react.createElement)("input", {
7755
+ type: "radio",
7756
+ className: MarketPage_module_default.discoverTransportRadio,
7757
+ name: "discover-git-transport",
7758
+ value: row.url,
7759
+ checked: transport.chosen === row.url,
7760
+ onChange: () => transport.setChosen(row.url)
7761
+ }), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverTransportKind }, t(row.kind === "ssh" ? "panels.discover.transportSsh" : "panels.discover.transportHttps")), label === "" ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverTransportState }, label));
7762
+ })), /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverTransportCustom }, /* @__PURE__ */ (0, react.createElement)(TextField, {
7763
+ type: "text",
7764
+ className: MarketPage_module_default.discoverTransportInput,
7765
+ value: transport.custom,
7766
+ placeholder: t("panels.discover.transportPlaceholder"),
7767
+ "aria-label": t("panels.discover.transportPlaceholder"),
7768
+ spellCheck: false,
7769
+ autoComplete: "off",
7770
+ onChange: (event) => transport.setCustom(event.target.value),
7771
+ onKeyDown: (event) => {
7772
+ if (event.key === "Enter") transport.checkCustom();
7773
+ }
7774
+ }), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
7775
+ type: "button",
7776
+ variant: "outline",
7777
+ size: "sm",
7778
+ disabled: transport.custom.trim() === "" || customBusy,
7779
+ "aria-busy": customBusy,
7780
+ onClick: transport.checkCustom
7781
+ }, 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))), needsAuth ? /* @__PURE__ */ (0, react.createElement)("p", {
7782
+ className: MarketPage_module_default.discoverNotice,
7783
+ role: "note"
7784
+ }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
7785
+ size: 14,
7786
+ "aria-hidden": "true"
7787
+ }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.transportNeedsAuth"))) : null);
7788
+ }
7789
+ //#endregion
7790
+ //#region src/app/layouts/market/use-git-transport.ts
7791
+ function probeOrUnknown(url) {
7792
+ return readGitProbe(url).then((response) => response.ok ? response.status : "unknown").catch(() => "unknown");
7793
+ }
7794
+ function usable(state) {
7795
+ return state !== void 0 && state !== "auth" && state !== "checking";
7796
+ }
7797
+ function defaultOf(rows, states) {
7798
+ const readable = rows.find((row) => states[row.url] === "ok");
7799
+ if (readable !== void 0) return readable.url;
7800
+ const fallback = rows.find((row) => usable(states[row.url]));
7801
+ return fallback === void 0 ? null : fallback.url;
7802
+ }
7803
+ function useGitTransport(source) {
7804
+ const rows = (0, react.useMemo)(() => source === null ? [] : gitTransportCandidates(source.url), [source]);
7805
+ const [results, setResults] = (0, react.useState)({});
7806
+ const [picked, setPicked] = (0, react.useState)(null);
7807
+ const [custom, setCustom] = (0, react.useState)("");
7808
+ const [customState, setCustomState] = (0, react.useState)(null);
7809
+ const generation = (0, react.useRef)(0);
7810
+ (0, react.useEffect)(() => {
7811
+ const mirror = ++generation.current;
7812
+ for (const row of rows) probeOrUnknown(row.url).then((state) => {
7813
+ if (generation.current !== mirror) return;
7814
+ setResults((current) => ({
7815
+ ...current,
7816
+ [row.url]: state
7817
+ }));
7818
+ });
7819
+ return () => {
7820
+ generation.current += 1;
7821
+ };
7822
+ }, [rows]);
7823
+ const checkCustom = (0, react.useCallback)(() => {
7824
+ const wanted = custom.trim();
7825
+ if (wanted === "") return;
7826
+ const mirror = ++generation.current;
7827
+ setCustomState("checking");
7828
+ probeOrUnknown(wanted).then((state) => {
7829
+ if (generation.current !== mirror) return;
7830
+ setCustomState(state);
7831
+ if (usable(state)) setPicked(wanted);
7832
+ });
7833
+ }, [custom]);
7834
+ const states = (0, react.useMemo)(() => {
7835
+ const next = {};
7836
+ for (const row of rows) next[row.url] = results[row.url] ?? "checking";
7837
+ return next;
7838
+ }, [results, rows]);
7839
+ const chosen = picked !== null && (rows.some((row) => row.url === picked) || picked === custom.trim()) ? picked : defaultOf(rows, states);
7840
+ return {
7841
+ rows,
7842
+ chosen,
7843
+ states,
7844
+ custom,
7845
+ customState,
7846
+ probing: rows.some((row) => states[row.url] === "checking"),
7847
+ ready: chosen !== null,
7848
+ setChosen: setPicked,
7849
+ setCustom,
7850
+ checkCustom
7851
+ };
7852
+ }
7853
+ //#endregion
7481
7854
  //#region src/app/layouts/market/discover-confirm.tsx
7482
7855
  function DiscoverConfirm({ t, locale, choice, onCancel, onConfirm }) {
7483
7856
  if (choice === null) return null;
7857
+ return /* @__PURE__ */ (0, react.createElement)(DiscoverConfirmBody, {
7858
+ t,
7859
+ locale,
7860
+ choice,
7861
+ onCancel,
7862
+ onConfirm
7863
+ });
7864
+ }
7865
+ function factLabel(t, kind) {
7866
+ 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");
7867
+ }
7868
+ function DiscoverConfirmBody({ t, locale, choice, onCancel, onConfirm }) {
7869
+ const git = choice.version.source.type === "git" ? choice.version.source : null;
7870
+ const transport = useGitTransport(git);
7484
7871
  const title = displayTitleOf(choice.entry, locale) || choice.entry.name;
7485
- const facts = sourceFactsOf(choice.entry.name, choice.version);
7486
- 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");
7872
+ const facts = sourceFactsOf(choice.entry.name, choice.version).filter((fact) => git === null || fact.kind !== "repository");
7873
+ const ready = git === null || transport.ready;
7487
7874
  return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
7488
7875
  open: true,
7489
7876
  onClose: onCancel,
@@ -7498,15 +7885,20 @@ window.__ModuleLoader__.load({
7498
7885
  type: "button",
7499
7886
  variant: "primary",
7500
7887
  autoFocus: true,
7501
- onClick: onConfirm
7888
+ disabled: !ready,
7889
+ "aria-busy": git !== null && transport.probing,
7890
+ onClick: () => onConfirm(transport.chosen ?? void 0)
7502
7891
  }, t("panels.discover.cardInstall")))
7503
7892
  }, /* @__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", {
7504
7893
  className: MarketPage_module_default.discoverArtwork,
7505
7894
  "aria-hidden": "true"
7506
- }, /* @__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", {
7895
+ }, /* @__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, {
7896
+ t,
7897
+ transport
7898
+ }), /* @__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", {
7507
7899
  key: `${fact.kind}:${fact.value}`,
7508
7900
  className: MarketPage_module_default.discoverFactRow
7509
- }, /* @__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", {
7901
+ }, /* @__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", {
7510
7902
  className: MarketPage_module_default.discoverNotice,
7511
7903
  role: "note"
7512
7904
  }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
@@ -7562,12 +7954,104 @@ window.__ModuleLoader__.load({
7562
7954
  }, t("panels.discover.initBranchBad")) : null));
7563
7955
  }
7564
7956
  //#endregion
7957
+ //#region src/app/layouts/market/discover-source-item.tsx
7958
+ function stateTextOf(source, t) {
7959
+ return sourceStateOf(source) === "writable" ? t("panels.discover.sourceStateWritable") : t("panels.discover.sourceStateReadOnly");
7960
+ }
7961
+ function DiscoverSourceItem(props) {
7962
+ const { t, source } = props;
7963
+ const [menuOpen, setMenuOpen] = (0, react.useState)(false);
7964
+ const menu = [];
7965
+ if (props.enable) menu.push({
7966
+ id: "enable",
7967
+ label: t("panels.discover.sourceEnable"),
7968
+ disabled: props.pending
7969
+ });
7970
+ if (props.disable) menu.push({
7971
+ id: "read-only",
7972
+ label: t("panels.discover.sourceDisable"),
7973
+ disabled: props.pending
7974
+ });
7975
+ if (menu.length > 0) menu.push({
7976
+ type: "separator",
7977
+ id: "separator"
7978
+ });
7979
+ menu.push({
7980
+ id: "remove",
7981
+ label: t("panels.discover.removeSource"),
7982
+ icon: /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconTrashOutlineRegular, { size: 14 }),
7983
+ danger: true,
7984
+ disabled: props.pending
7985
+ });
7986
+ const choose = (id) => {
7987
+ setMenuOpen(false);
7988
+ if (id === "enable") props.onEnable();
7989
+ else if (id === "read-only") props.onReadOnly();
7990
+ else if (id === "remove") props.onRemove();
7991
+ };
7992
+ return /* @__PURE__ */ (0, react.createElement)("li", { className: MarketPage_module_default.discoverSourceRow }, /* @__PURE__ */ (0, react.createElement)("label", { className: MarketPage_module_default.discoverSourcePick }, /* @__PURE__ */ (0, react.createElement)("input", {
7993
+ type: "radio",
7994
+ name: "market-source",
7995
+ className: MarketPage_module_default.discoverSourceRadio,
7996
+ checked: props.selected,
7997
+ disabled: props.pending,
7998
+ onChange: props.onSelect
7999
+ }), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceHead }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverStrong }, source.label), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Tag, { tone: sourceStateOf(source) === "writable" ? "success" : "neutral" }, stateTextOf(source, t)), props.selected && props.loading ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceLoading }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: "ongoing" }), t("panels.discover.loading")) : null, props.working ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceLoading }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: "ongoing" }), t("panels.discover.sourceWorking")) : null), /* @__PURE__ */ (0, react.createElement)("span", {
8000
+ className: MarketPage_module_default.discoverSourceUrl,
8001
+ title: source.url
8002
+ }, source.url), props.problem === null ? null : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceError }, props.problem))), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Menu, {
8003
+ className: MarketPage_module_default.discoverSourceMore,
8004
+ open: menuOpen,
8005
+ onClose: () => setMenuOpen(false),
8006
+ align: "end",
8007
+ portal: true,
8008
+ autoFocus: true,
8009
+ items: menu,
8010
+ onSelect: choose,
8011
+ anchor: /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
8012
+ type: "button",
8013
+ variant: "ghost",
8014
+ size: "sm",
8015
+ icon: /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconEllipsisOutlineRegular, { size: 14 }),
8016
+ "aria-label": t("panels.discover.sourceActions", { label: source.label }),
8017
+ "aria-haspopup": "menu",
8018
+ "aria-expanded": menuOpen,
8019
+ disabled: props.pending,
8020
+ onClick: () => setMenuOpen(!menuOpen)
8021
+ })
8022
+ }), props.selected && props.loading && props.slow ? /* @__PURE__ */ (0, react.createElement)("span", {
8023
+ className: MarketPage_module_default.discoverSourceHint,
8024
+ role: "note"
8025
+ }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
8026
+ size: 12,
8027
+ "aria-hidden": "true"
8028
+ }), t("panels.discover.slowHint")) : null);
8029
+ }
8030
+ function DiscoverSourceConfirm(props) {
8031
+ const { t } = props;
8032
+ return /* @__PURE__ */ (0, react.createElement)("li", { className: MarketPage_module_default.discoverSourceConfirm }, /* @__PURE__ */ (0, react.createElement)(ConfirmBar, {
8033
+ title: t("panels.discover.removeTitle"),
8034
+ hint: t("panels.discover.removeBody", { label: props.label }),
8035
+ actions: [{
8036
+ key: "cancel",
8037
+ label: t("panels.discover.cancel"),
8038
+ onClick: props.onCancel
8039
+ }, {
8040
+ key: "remove",
8041
+ label: t("panels.discover.removeSource"),
8042
+ kind: "danger",
8043
+ onClick: props.onConfirm
8044
+ }]
8045
+ }));
8046
+ }
8047
+ //#endregion
7565
8048
  //#region src/app/layouts/market/discover-sources-dialog.tsx
7566
8049
  function DiscoverSourcesDialog(props) {
7567
8050
  const { t } = props;
7568
8051
  const [url, setUrl] = (0, react.useState)("");
7569
8052
  const [problem, setProblem] = (0, react.useState)(null);
7570
- const pending = props.busy || props.adding;
8053
+ const [removing, setRemoving] = (0, react.useState)(null);
8054
+ const pending = props.busy || props.adding || props.pendingSourceId !== null;
7571
8055
  const selectedVisible = props.sources.some((source) => source.id === props.selected);
7572
8056
  const add = () => {
7573
8057
  if (pending) return;
@@ -7586,7 +8070,12 @@ window.__ModuleLoader__.load({
7586
8070
  };
7587
8071
  return /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Modal, {
7588
8072
  open: props.open,
7589
- onClose: props.onClose,
8073
+ onClose: () => {
8074
+ setUrl("");
8075
+ setProblem(null);
8076
+ setRemoving(null);
8077
+ props.onClose();
8078
+ },
7590
8079
  title: t("panels.discover.sourcesTitle"),
7591
8080
  closeLabel: t("panels.discover.close"),
7592
8081
  description: t("panels.discover.sourcesIntro"),
@@ -7600,39 +8089,30 @@ window.__ModuleLoader__.load({
7600
8089
  }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.slowHint"))) : /* @__PURE__ */ (0, react.createElement)(DiscoverLoading, { label: t("panels.discover.loading") }) : null, props.sources.length === 0 ? null : /* @__PURE__ */ (0, react.createElement)("ul", {
7601
8090
  className: MarketPage_module_default.discoverSourceList,
7602
8091
  "aria-label": t("panels.discover.sourcesLabel")
7603
- }, props.sources.map((source) => /* @__PURE__ */ (0, react.createElement)("li", {
7604
- key: source.id,
7605
- className: MarketPage_module_default.discoverSourceRow
7606
- }, /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverMain }, /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverStrong }, source.label), /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverMeta }, source.url), !props.loading && props.problem?.id === source.id ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceError }, props.problem.detail) : null), source.id === props.selected ? props.loading ? /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceLoading }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: "ongoing" }), t("panels.discover.loading")) : /* @__PURE__ */ (0, react.createElement)("span", { className: MarketPage_module_default.discoverSourceCurrent }, t("panels.discover.sourceCurrent")) : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
7607
- type: "button",
7608
- variant: "ghost",
7609
- size: "sm",
7610
- "aria-label": t("panels.discover.useSourceNamed", { label: source.label }),
7611
- disabled: pending,
7612
- onClick: () => {
7613
- props.onSelect(source.id);
7614
- props.onClose();
8092
+ }, props.sources.map((source) => /* @__PURE__ */ (0, react.createElement)(react.Fragment, { key: source.id }, /* @__PURE__ */ (0, react.createElement)(DiscoverSourceItem, {
8093
+ t,
8094
+ source,
8095
+ selected: source.id === props.selected,
8096
+ loading: props.loading,
8097
+ slow: props.slow,
8098
+ problem: !props.loading && props.problem?.id === source.id ? props.problem.detail : null,
8099
+ pending,
8100
+ enable: source.kind === "git" && source.policy !== "artifacts-in-repo",
8101
+ disable: source.kind === "git" && source.policy === "artifacts-in-repo",
8102
+ working: source.id === props.pendingSourceId,
8103
+ onSelect: () => props.onSelect(source.id),
8104
+ onRemove: () => setRemoving(source.id),
8105
+ onEnable: () => props.onEnable(source.id),
8106
+ onReadOnly: () => props.onReadOnly(source.id)
8107
+ }), removing === source.id ? /* @__PURE__ */ (0, react.createElement)(DiscoverSourceConfirm, {
8108
+ t,
8109
+ label: source.label,
8110
+ onCancel: () => setRemoving(null),
8111
+ onConfirm: () => {
8112
+ props.onRemove(source.id);
8113
+ setRemoving(null);
7615
8114
  }
7616
- }, t("panels.discover.useSource")), /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
7617
- label: t("panels.discover.removeSource"),
7618
- side: "bottom",
7619
- portal: true,
7620
- delayMs: 300
7621
- }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
7622
- type: "button",
7623
- variant: "ghost",
7624
- size: "sm",
7625
- icon: /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconTrashOutlineRegular, { size: 13 }),
7626
- "aria-label": t("panels.discover.removeSourceNamed", { url: source.url }),
7627
- disabled: pending,
7628
- onClick: () => props.onRemove(source.id)
7629
- })), source.id === props.selected && props.loading && props.slow ? /* @__PURE__ */ (0, react.createElement)("span", {
7630
- className: MarketPage_module_default.discoverSourceHint,
7631
- role: "note"
7632
- }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
7633
- size: 12,
7634
- "aria-hidden": "true"
7635
- }), t("panels.discover.slowHint")) : null))), /* @__PURE__ */ (0, react.createElement)("form", {
8115
+ }) : null))), /* @__PURE__ */ (0, react.createElement)("form", {
7636
8116
  className: MarketPage_module_default.discoverSourceForm,
7637
8117
  onSubmit: (event) => {
7638
8118
  event.preventDefault();
@@ -7656,7 +8136,10 @@ window.__ModuleLoader__.load({
7656
8136
  "aria-busy": props.adding,
7657
8137
  icon: props.adding ? /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: "ongoing" }) : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconPlusOutlineRegular, { size: 13 }),
7658
8138
  disabled: pending || url.trim() === ""
7659
- }, props.adding ? t("panels.discover.addingSource") : t("panels.discover.addSource"))), problem === null ? null : /* @__PURE__ */ (0, react.createElement)("p", {
8139
+ }, props.adding ? t("panels.discover.addingSource") : t("panels.discover.addSource"))), props.failure === null ? null : /* @__PURE__ */ (0, react.createElement)("p", {
8140
+ className: MarketPage_module_default.discoverError,
8141
+ role: "alert"
8142
+ }, props.failure), problem === null ? null : /* @__PURE__ */ (0, react.createElement)("p", {
7660
8143
  className: MarketPage_module_default.discoverError,
7661
8144
  role: "alert"
7662
8145
  }, problem === "duplicate" ? t("panels.discover.sourceDuplicate") : t("panels.discover.sourceBadUrl")), /* @__PURE__ */ (0, react.createElement)("p", {
@@ -7671,7 +8154,6 @@ window.__ModuleLoader__.load({
7671
8154
  //#region src/app/layouts/market/discover-dialogs.tsx
7672
8155
  function DiscoverDialogs({ t, d }) {
7673
8156
  return /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, /* @__PURE__ */ (0, react.createElement)(DiscoverSourcesDialog, {
7674
- key: d.manageOpen ? "open" : "closed",
7675
8157
  t,
7676
8158
  open: d.manageOpen,
7677
8159
  sources: d.sources,
@@ -7679,12 +8161,16 @@ window.__ModuleLoader__.load({
7679
8161
  loading: d.loading,
7680
8162
  slow: d.slow,
7681
8163
  problem: d.problem,
8164
+ failure: d.writeFailed,
7682
8165
  busy: d.busy,
7683
8166
  adding: d.addingSource,
8167
+ pendingSourceId: d.pendingSourceId,
7684
8168
  onClose: () => d.setManageOpen(false),
7685
8169
  onAdd: d.addSource,
7686
8170
  onRemove: d.removeSourceById,
7687
- onSelect: d.selectSource
8171
+ onSelect: d.selectSource,
8172
+ onEnable: d.enableSource,
8173
+ onReadOnly: d.readOnlySource
7688
8174
  }), /* @__PURE__ */ (0, react.createElement)(DiscoverConfirm, {
7689
8175
  t,
7690
8176
  locale: d.locale,
@@ -7903,6 +8389,7 @@ window.__ModuleLoader__.load({
7903
8389
  const change = changeOf(value);
7904
8390
  if (change === void 0) return { kind: "quiet" };
7905
8391
  if (SHIPPED.includes(change.application)) return { kind: "done" };
8392
+ if (change.application === "cancelled") return { kind: "cancelled" };
7906
8393
  if (change.application !== "failed") return { kind: "quiet" };
7907
8394
  return {
7908
8395
  kind: "failed",
@@ -7923,8 +8410,11 @@ window.__ModuleLoader__.load({
7923
8410
  const [manageOpen, setManageOpen] = (0, react.useState)(false);
7924
8411
  const [initOpen, setInitOpen] = (0, react.useState)(false);
7925
8412
  const [choice, setChoice] = (0, react.useState)(null);
8413
+ const [installing, setInstalling] = (0, react.useState)(null);
8414
+ const [cancelling, setCancelling] = (0, react.useState)(false);
7926
8415
  const [notice, setNotice] = (0, react.useState)(null);
7927
8416
  const [addingSource, setAddingSource] = (0, react.useState)(false);
8417
+ const [pendingSourceId, setPendingSourceId] = (0, react.useState)(null);
7928
8418
  const [knownSources, setKnownSources] = (0, react.useState)(null);
7929
8419
  const loaded = (0, react.useRef)(false);
7930
8420
  const loadTicket = (0, react.useRef)(0);
@@ -7939,6 +8429,10 @@ window.__ModuleLoader__.load({
7939
8429
  channel: "provision",
7940
8430
  networkText: t("panels.discover.failed")
7941
8431
  });
8432
+ const cancel = useHostWrite({
8433
+ channel: "provision",
8434
+ networkText: t("panels.discover.failed")
8435
+ });
7942
8436
  const loadSources = (0, react.useCallback)(async () => {
7943
8437
  const ticket = sourceTicket.current + 1;
7944
8438
  sourceTicket.current = ticket;
@@ -7965,6 +8459,10 @@ window.__ModuleLoader__.load({
7965
8459
  return;
7966
8460
  }
7967
8461
  setPayload(response);
8462
+ setKnownSources({
8463
+ sources: response.sources,
8464
+ selected: response.selected
8465
+ });
7968
8466
  setLimit(50);
7969
8467
  }, [t]);
7970
8468
  const beginSwitch = () => {
@@ -8015,6 +8513,7 @@ window.__ModuleLoader__.load({
8015
8513
  if (payload?.problem === void 0 || payload.selected === null) return null;
8016
8514
  return {
8017
8515
  id: payload.selected,
8516
+ kind: payload.problem.kind,
8018
8517
  detail: payload.problem.detail ?? ""
8019
8518
  };
8020
8519
  }, [payload]);
@@ -8029,6 +8528,35 @@ window.__ModuleLoader__.load({
8029
8528
  };
8030
8529
  }, [payload, selectedSource]);
8031
8530
  const defaultBranch = payload?.problem?.branch ?? selectedSource?.ref ?? "main";
8531
+ const enableSource = (id) => {
8532
+ setNotice(null);
8533
+ setPendingSourceId(id);
8534
+ sources.send({
8535
+ action: "init",
8536
+ id,
8537
+ stampOnly: true
8538
+ }).then(async (outcome) => {
8539
+ if (!outcome.ok) return;
8540
+ const label = payload?.sources.find((one) => one.id === id)?.label ?? id;
8541
+ setNotice(t("panels.discover.sourceEnabled", { label }));
8542
+ await loadSources();
8543
+ await load(true);
8544
+ }).finally(() => setPendingSourceId(null));
8545
+ };
8546
+ const readOnlySource = (id) => {
8547
+ setNotice(null);
8548
+ setPendingSourceId(id);
8549
+ sources.send({
8550
+ action: "read-only",
8551
+ id
8552
+ }).then(async (outcome) => {
8553
+ if (!outcome.ok) return;
8554
+ const label = payload?.sources.find((one) => one.id === id)?.label ?? id;
8555
+ setNotice(t("panels.discover.sourceReadOnly", { label }));
8556
+ await loadSources();
8557
+ await load(true);
8558
+ }).finally(() => setPendingSourceId(null));
8559
+ };
8032
8560
  const initialize = (branch) => {
8033
8561
  if (payload === null || payload.selected === null) return;
8034
8562
  const id = payload.selected;
@@ -8060,27 +8588,32 @@ window.__ModuleLoader__.load({
8060
8588
  source: {
8061
8589
  ...parsed.source,
8062
8590
  id
8063
- },
8064
- select: true
8591
+ }
8065
8592
  }).then((outcome) => {
8066
8593
  if (!outcome.ok) return;
8067
- beginSwitch();
8594
+ const value = typeof outcome.value === "object" && outcome.value !== null ? outcome.value : void 0;
8068
8595
  loadSources();
8069
- load(true);
8596
+ if (value?.["selected"] === id) load(true);
8070
8597
  }).finally(() => setAddingSource(false));
8071
8598
  };
8072
8599
  const removeSourceById = (id) => {
8073
8600
  setNotice(null);
8074
8601
  setInitOpen(false);
8602
+ const wasSelected = (payload?.selected ?? knownSources?.selected ?? null) === id;
8075
8603
  sources.send({
8076
8604
  action: "remove",
8077
8605
  id
8078
8606
  }).then(async (outcome) => {
8079
8607
  if (!outcome.ok) return;
8080
- setDetail(null);
8081
- beginSwitch();
8608
+ if (wasSelected) {
8609
+ setQuery("");
8610
+ setCategory(null);
8611
+ setSelectedLabels([]);
8612
+ setSort("default");
8613
+ setDetail(null);
8614
+ }
8082
8615
  await loadSources();
8083
- await load(true);
8616
+ if (wasSelected) await load(true);
8084
8617
  });
8085
8618
  };
8086
8619
  const selectSource = (id) => {
@@ -8111,14 +8644,25 @@ window.__ModuleLoader__.load({
8111
8644
  await load(true);
8112
8645
  });
8113
8646
  };
8114
- const install = () => {
8115
- if (choice === null) return;
8116
- const target = marketInstallTarget(choice.entry.name, choice.version.version, choice.version.source);
8647
+ const install = (url) => {
8648
+ if (choice === null || installing !== null) return;
8649
+ const source = choice.version.source;
8650
+ const target = marketInstallTarget(choice.entry.name, choice.version.version, source.type === "git" && url !== void 0 ? {
8651
+ ...source,
8652
+ url
8653
+ } : source);
8654
+ const name = displayTitleOf(choice.entry, locale);
8655
+ const requestId = globalThis.crypto.randomUUID();
8117
8656
  setChoice(null);
8118
8657
  setNotice(null);
8658
+ setInstalling({
8659
+ name,
8660
+ requestId
8661
+ });
8119
8662
  provision.send({
8120
8663
  action: "install-version",
8121
8664
  spec: target.spec,
8665
+ requestId,
8122
8666
  ...target.registry === void 0 ? {} : { registry: target.registry }
8123
8667
  }).then((outcome) => {
8124
8668
  if (!outcome.ok) return;
@@ -8128,9 +8672,25 @@ window.__ModuleLoader__.load({
8128
8672
  onInstalled();
8129
8673
  return;
8130
8674
  }
8675
+ if (verdict.kind === "cancelled") {
8676
+ setNotice(t("panels.discover.installCancelled", { name }));
8677
+ onInstalled();
8678
+ return;
8679
+ }
8131
8680
  if (verdict.kind !== "done") return;
8132
- setNotice(t("panels.discover.installedDone", { name: choice.entry.name }));
8681
+ setNotice(t("panels.discover.installedDone", { name }));
8133
8682
  onInstalled();
8683
+ }).finally(() => {
8684
+ setInstalling(null);
8685
+ setCancelling(false);
8686
+ });
8687
+ };
8688
+ const cancelInstall = () => {
8689
+ if (installing === null || cancelling) return;
8690
+ setCancelling(true);
8691
+ cancel.send({
8692
+ action: "cancel-install",
8693
+ requestId: installing.requestId
8134
8694
  });
8135
8695
  };
8136
8696
  const reload = () => {
@@ -8145,8 +8705,8 @@ window.__ModuleLoader__.load({
8145
8705
  loading,
8146
8706
  slow,
8147
8707
  failure,
8148
- sources: payload?.sources ?? knownSources?.sources ?? [],
8149
- selected: payload?.selected ?? knownSources?.selected ?? null,
8708
+ sources: knownSources?.sources ?? payload?.sources ?? [],
8709
+ selected: knownSources?.selected ?? payload?.selected ?? null,
8150
8710
  entries,
8151
8711
  shown,
8152
8712
  total: sorted.length,
@@ -8162,11 +8722,15 @@ window.__ModuleLoader__.load({
8162
8722
  writeFailed: sources.failed,
8163
8723
  provisionFailed: provision.failed,
8164
8724
  busy: sources.busy,
8725
+ installing: installing === null ? null : installing.name,
8726
+ cancelling,
8727
+ installDisabled: installing !== null,
8165
8728
  addingSource,
8166
8729
  manageOpen,
8167
8730
  problem,
8168
8731
  uninitialized,
8169
8732
  defaultBranch,
8733
+ pendingSourceId,
8170
8734
  initOpen,
8171
8735
  reload,
8172
8736
  setQuery,
@@ -8178,14 +8742,20 @@ window.__ModuleLoader__.load({
8178
8742
  openDetail: (name) => setDetail(name),
8179
8743
  closeDetail: () => setDetail(null),
8180
8744
  setDetailEntry: setDetail,
8181
- setChoice,
8745
+ setChoice: (value) => {
8746
+ if (value !== null && installing !== null) return;
8747
+ setChoice(value);
8748
+ },
8182
8749
  setManageOpen,
8183
8750
  setInitOpen,
8184
8751
  initialize,
8752
+ enableSource,
8753
+ readOnlySource,
8185
8754
  addSource,
8186
8755
  removeSourceById,
8187
8756
  selectSource,
8188
- install
8757
+ install,
8758
+ cancelInstall
8189
8759
  };
8190
8760
  }
8191
8761
  //#endregion
@@ -8224,73 +8794,85 @@ window.__ModuleLoader__.load({
8224
8794
  size: 14,
8225
8795
  "aria-hidden": "true"
8226
8796
  }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.slowHint"))) : null;
8227
- if (d.payload === null) return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, d.sources.length === 0 ? null : toolbar, d.loading ? /* @__PURE__ */ (0, react.createElement)(DiscoverSkeleton, { label: t("panels.discover.loading") }) : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
8797
+ let body;
8798
+ if (d.payload === null) body = /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, d.sources.length === 0 ? null : toolbar, d.loading ? /* @__PURE__ */ (0, react.createElement)(DiscoverSkeleton, { label: t("panels.discover.loading") }) : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
8228
8799
  t,
8229
8800
  text: t("panels.discover.sourcesFailed"),
8230
8801
  onRetry: d.reload
8231
- }), slowHint, d.writeFailed === null ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverError }, d.writeFailed), dialogs);
8232
- if (d.payload.state === "no-source") return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, /* @__PURE__ */ (0, react.createElement)(DiscoverNoSource, {
8802
+ }), slowHint, d.writeFailed === null ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverError }, d.writeFailed));
8803
+ else if (d.payload.state === "no-source") body = /* @__PURE__ */ (0, react.createElement)(DiscoverNoSource, {
8233
8804
  t,
8234
8805
  onAdd: () => d.setManageOpen(true)
8235
- }), dialogs);
8236
- const failed = d.payload.state === "invalid" || d.payload.state === "unreadable";
8237
- const readFailed = !d.loading && failed ? d.payload.state === "invalid" ? t("panels.discover.invalid") : t("panels.discover.unreadable") : null;
8238
- const uninitialized = d.loading ? null : d.uninitialized;
8239
- const retrying = d.loading && failed;
8240
- const emptyText = unfiltered({
8241
- query: d.query,
8242
- category: d.category,
8243
- labels: d.selectedLabels
8244
- }) ? t("panels.discover.empty") : t("panels.discover.noMatch");
8245
- return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, toolbar, d.loading && !d.manageOpen ? /* @__PURE__ */ (0, react.createElement)(DiscoverLoading, { label: t("panels.discover.loading") }) : null, slowHint, !d.loading && d.payload.stale === true ? /* @__PURE__ */ (0, react.createElement)("p", {
8246
- className: MarketPage_module_default.discoverNotice,
8247
- role: "note"
8248
- }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
8249
- size: 14,
8250
- "aria-hidden": "true"
8251
- }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.stale"))) : null, uninitialized === null ? readFailed === null ? null : /* @__PURE__ */ (0, react.createElement)(DiscoverFailure, {
8252
- t,
8253
- text: readFailed,
8254
- onRetry: d.reload
8255
- }) : /* @__PURE__ */ (0, react.createElement)(DiscoverUninitialized, {
8256
- t,
8257
- path: uninitialized.path,
8258
- empty: uninitialized.empty,
8259
- onInit: () => d.setInitOpen(true)
8260
- }), d.notice === null ? null : /* @__PURE__ */ (0, react.createElement)("p", {
8261
- className: MarketPage_module_default.discoverNotice,
8262
- role: "note"
8263
- }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
8264
- size: 14,
8265
- "aria-hidden": "true"
8266
- }), /* @__PURE__ */ (0, react.createElement)("span", null, d.notice)), d.writeFailed === null ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverError }, d.writeFailed), d.provisionFailed === null ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverError }, d.provisionFailed), d.detailEntry !== null ? /* @__PURE__ */ (0, react.createElement)(DiscoverDetail, {
8267
- t,
8268
- locale: d.locale,
8269
- entry: d.detailEntry,
8270
- market: marketLabel,
8271
- onBack: d.closeDetail,
8272
- onInstall: (entry, version) => d.setChoice({
8273
- entry,
8274
- version
8275
- }),
8276
- onShowInstalled
8277
- }) : readFailed !== null || uninitialized !== null || retrying ? null : d.shown.length === 0 ? /* @__PURE__ */ (0, react.createElement)(DiscoverEmptyText, { text: emptyText }) : /* @__PURE__ */ (0, react.createElement)(DiscoverRows, {
8278
- t,
8279
- locale: d.locale,
8280
- entries: d.shown,
8281
- onOpen: d.openDetail,
8282
- onInstall: (entry, version) => d.setChoice({
8283
- entry,
8284
- version
8285
- }),
8286
- onShowInstalled
8287
- }), d.detailEntry !== null || d.total <= d.shown.length ? null : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
8288
- type: "button",
8289
- variant: "outline",
8290
- size: "sm",
8291
- className: MarketPage_module_default.discoverMore,
8292
- onClick: d.showMore
8293
- }, t("panels.discover.showMore")), dialogs);
8806
+ });
8807
+ else {
8808
+ const failed = d.payload.state === "invalid" || d.payload.state === "unreadable";
8809
+ const readFailed = !d.loading && failed ? d.payload.state === "invalid" ? t("panels.discover.invalid") : t("panels.discover.unreadable") : null;
8810
+ const uninitialized = d.loading ? null : d.uninitialized;
8811
+ const retrying = d.loading && failed;
8812
+ const emptyText = unfiltered({
8813
+ query: d.query,
8814
+ category: d.category,
8815
+ labels: d.selectedLabels
8816
+ }) ? t("panels.discover.empty") : t("panels.discover.noMatch");
8817
+ body = /* @__PURE__ */ (0, react.createElement)(react.Fragment, null, d.detailEntry === null ? toolbar : null, d.loading && !d.manageOpen ? /* @__PURE__ */ (0, react.createElement)(DiscoverLoading, { label: t("panels.discover.loading") }) : null, slowHint, !d.loading && d.payload.stale === true ? /* @__PURE__ */ (0, react.createElement)("p", {
8818
+ className: MarketPage_module_default.discoverNotice,
8819
+ role: "note"
8820
+ }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
8821
+ size: 14,
8822
+ "aria-hidden": "true"
8823
+ }), /* @__PURE__ */ (0, react.createElement)("span", null, t("panels.discover.stale"))) : null, uninitialized === null ? readFailed === null ? null : /* @__PURE__ */ (0, react.createElement)(DiscoverReadFailure, {
8824
+ t,
8825
+ text: readFailed,
8826
+ auth: d.problem?.kind === "git-auth",
8827
+ onRetry: d.reload
8828
+ }) : /* @__PURE__ */ (0, react.createElement)(DiscoverUninitialized, {
8829
+ t,
8830
+ path: uninitialized.path,
8831
+ empty: uninitialized.empty,
8832
+ onInit: () => d.setInitOpen(true)
8833
+ }), d.installing === null ? null : /* @__PURE__ */ (0, react.createElement)(DiscoverInstalling, {
8834
+ t,
8835
+ name: d.installing,
8836
+ cancelling: d.cancelling,
8837
+ onCancel: d.cancelInstall
8838
+ }), d.notice === null ? null : /* @__PURE__ */ (0, react.createElement)("p", {
8839
+ className: MarketPage_module_default.discoverNotice,
8840
+ role: "note"
8841
+ }, /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconWarningOutlineRegular, {
8842
+ size: 14,
8843
+ "aria-hidden": "true"
8844
+ }), /* @__PURE__ */ (0, react.createElement)("span", null, d.notice)), d.writeFailed === null ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverError }, d.writeFailed), d.provisionFailed === null ? null : /* @__PURE__ */ (0, react.createElement)("p", { className: MarketPage_module_default.discoverError }, d.provisionFailed), d.detailEntry !== null ? /* @__PURE__ */ (0, react.createElement)(DiscoverDetail, {
8845
+ t,
8846
+ locale: d.locale,
8847
+ entry: d.detailEntry,
8848
+ market: marketLabel,
8849
+ onBack: d.closeDetail,
8850
+ onInstall: (entry, version) => d.setChoice({
8851
+ entry,
8852
+ version
8853
+ }),
8854
+ onShowInstalled,
8855
+ installDisabled: d.installDisabled
8856
+ }) : readFailed !== null || uninitialized !== null || retrying ? null : d.shown.length === 0 ? /* @__PURE__ */ (0, react.createElement)(DiscoverEmptyText, { text: emptyText }) : /* @__PURE__ */ (0, react.createElement)(DiscoverRows, {
8857
+ t,
8858
+ locale: d.locale,
8859
+ entries: d.shown,
8860
+ onOpen: d.openDetail,
8861
+ onInstall: (entry, version) => d.setChoice({
8862
+ entry,
8863
+ version
8864
+ }),
8865
+ onShowInstalled,
8866
+ installDisabled: d.installDisabled
8867
+ }), d.detailEntry !== null || d.total <= d.shown.length ? null : /* @__PURE__ */ (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Button, {
8868
+ type: "button",
8869
+ variant: "outline",
8870
+ size: "sm",
8871
+ className: MarketPage_module_default.discoverMore,
8872
+ onClick: d.showMore
8873
+ }, t("panels.discover.showMore")));
8874
+ }
8875
+ return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.discoverPage }, body, dialogs);
8294
8876
  }
8295
8877
  //#endregion
8296
8878
  //#region src/app/layouts/market/market-header.tsx
@@ -8721,6 +9303,7 @@ window.__ModuleLoader__.load({
8721
9303
  workbench: null,
8722
9304
  selfUpdate: null,
8723
9305
  read: false,
9306
+ checking: false,
8724
9307
  checkedAt: null
8725
9308
  };
8726
9309
  var listeners$2 = /* @__PURE__ */ new Set();
@@ -8749,6 +9332,10 @@ window.__ModuleLoader__.load({
8749
9332
  if (!fresh && inFlight !== null && inFlight.force === force && inFlight.epoch === at) return inFlight.promise;
8750
9333
  const seq = readSeq += 1;
8751
9334
  if (force) newestForceSeq = seq;
9335
+ if (!state.checking) publish$1({
9336
+ ...state,
9337
+ checking: true
9338
+ });
8752
9339
  const promise = Promise.all([readModuleVersions(force), readInstalledPlugins(force)]).catch(() => null).then((responses) => {
8753
9340
  if (at !== epoch) return;
8754
9341
  if (!force && seq < newestForceSeq) return;
@@ -8760,6 +9347,7 @@ window.__ModuleLoader__.load({
8760
9347
  workbench: versions?.ok === true ? versions.workbench ?? null : state.workbench,
8761
9348
  selfUpdate: versions?.ok === true ? versions.selfUpdate ?? null : state.selfUpdate,
8762
9349
  read: true,
9350
+ checking: false,
8763
9351
  checkedAt: Date.now()
8764
9352
  });
8765
9353
  }).finally(() => {
@@ -8795,6 +9383,7 @@ window.__ModuleLoader__.load({
8795
9383
  workbench: value.workbench,
8796
9384
  selfUpdate: value.selfUpdate,
8797
9385
  read: value.read,
9386
+ checking: value.checking,
8798
9387
  checkedAt: value.checkedAt,
8799
9388
  reload
8800
9389
  };
@@ -9383,7 +9972,7 @@ window.__ModuleLoader__.load({
9383
9972
  const manifests = useLiveManifests(units);
9384
9973
  const installable = useInstallableUnits(units);
9385
9974
  const { capabilities, checkedAt, checking, forceProbe, reload: reloadCapability } = useCapabilityMap(0);
9386
- const { modules, plugins, workbench, selfUpdate, read: installedRead, reload: reloadVersions } = useModuleVersions();
9975
+ const { modules, plugins, workbench, selfUpdate, checking: versionsChecking, read: installedRead, reload: reloadVersions } = useModuleVersions();
9387
9976
  const machineBoard = useEnabledUnits(0, null);
9388
9977
  const [adding, setAdding] = (0, react.useState)(false);
9389
9978
  const [acting, setActing] = (0, react.useState)(false);
@@ -9459,13 +10048,14 @@ window.__ModuleLoader__.load({
9459
10048
  const mockNonce = devMarket.pick.nonce;
9460
10049
  const shownFreshness = mock === void 0 ? freshness : mock.loaded === false ? pendingFreshness : MOCK_FRESHNESS;
9461
10050
  const shownRead = mock === void 0 ? installedRead : mock.installedRead ?? true;
9462
- const busy = !marketSettled(shownFreshness, shownRead) || shownFreshness.checking || acting;
10051
+ const shownChecking = shownFreshness.checking || mock === void 0 && versionsChecking;
10052
+ const busy = !marketSettled(shownFreshness, shownRead) || shownChecking || acting;
9463
10053
  return /* @__PURE__ */ (0, react.createElement)("div", { className: MarketPage_module_default.marketPage }, /* @__PURE__ */ (0, react.createElement)(MarketHeader, {
9464
10054
  t,
9465
10055
  idPrefix: MARKET_PANEL_ID,
9466
10056
  tab,
9467
10057
  busy,
9468
- checking: shownFreshness.checking,
10058
+ checking: shownChecking,
9469
10059
  onTab: setTab,
9470
10060
  onReload: () => reload({ force: true }),
9471
10061
  onAdd: openAddModule
@@ -11557,12 +12147,14 @@ window.__ModuleLoader__.load({
11557
12147
  var MODULES_UPDATE_PLUGIN_TOOL = "workbench_modules_update_plugin";
11558
12148
  var MODULES_UNINSTALL_PLUGIN_TOOL = "workbench_modules_uninstall_plugin";
11559
12149
  var MODULES_UPDATE_WORKBENCH_TOOL = "workbench_modules_update_workbench";
12150
+ var MARKET_SOURCES_TOOL = "workbench_market_sources";
12151
+ var MARKET_ENABLE_TOOL = "workbench_market_enable";
12152
+ var MARKET_DISABLE_TOOL = "workbench_market_disable";
11560
12153
  var DIY_STATUS_TOOL = "workbench_diy_status";
11561
12154
  var DIY_PANEL_TOOL = "workbench_diy_panel";
11562
12155
  var DIY_COMPONENTS_TOOL = "workbench_diy_components";
11563
12156
  var DIY_RECON_TOOL = "workbench_diy_recon";
11564
12157
  var DIY_SPEC_TOOL = "workbench_diy_spec";
11565
- var DIY_CHANGELOG_TOOL = "workbench_diy_changelog";
11566
12158
  var DIY_INSTALL_TOOL = "workbench_diy_install";
11567
12159
  var DIY_PUBLISH_TOOL = "workbench_diy_publish";
11568
12160
  var DIY_SHOW_TOOL = "workbench_diy_show";
@@ -11609,12 +12201,14 @@ window.__ModuleLoader__.load({
11609
12201
  MODULES_UPDATE_PLUGIN_TOOL,
11610
12202
  MODULES_UNINSTALL_PLUGIN_TOOL,
11611
12203
  MODULES_UPDATE_WORKBENCH_TOOL,
12204
+ MARKET_SOURCES_TOOL,
12205
+ MARKET_ENABLE_TOOL,
12206
+ MARKET_DISABLE_TOOL,
11612
12207
  DIY_STATUS_TOOL,
11613
12208
  DIY_PANEL_TOOL,
11614
12209
  DIY_COMPONENTS_TOOL,
11615
12210
  DIY_RECON_TOOL,
11616
12211
  DIY_SPEC_TOOL,
11617
- DIY_CHANGELOG_TOOL,
11618
12212
  DIY_INSTALL_TOOL,
11619
12213
  DIY_PUBLISH_TOOL,
11620
12214
  DIY_SHOW_TOOL,
@@ -11649,6 +12243,7 @@ window.__ModuleLoader__.load({
11649
12243
  var READ_TOOLS = [
11650
12244
  PANELS_LIST_TOOL,
11651
12245
  MODULES_LIST_TOOL,
12246
+ MARKET_SOURCES_TOOL,
11652
12247
  DIY_STATUS_TOOL,
11653
12248
  DIY_PANEL_TOOL,
11654
12249
  DIY_COMPONENTS_TOOL,
@@ -11690,7 +12285,8 @@ window.__ModuleLoader__.load({
11690
12285
  MODULES_UPDATE_PLUGIN_TOOL,
11691
12286
  MODULES_UNINSTALL_PLUGIN_TOOL,
11692
12287
  MODULES_UPDATE_WORKBENCH_TOOL,
11693
- DIY_CHANGELOG_TOOL,
12288
+ MARKET_ENABLE_TOOL,
12289
+ MARKET_DISABLE_TOOL,
11694
12290
  DIY_INSTALL_TOOL,
11695
12291
  DIY_PUBLISH_TOOL,
11696
12292
  DIY_SHOW_TOOL,
@@ -11791,6 +12387,21 @@ window.__ModuleLoader__.load({
11791
12387
  value: author !== "" ? author : preview === void 0 ? t("approval.publish.reading") : preview?.author === void 0 || preview.author === "" ? t("approval.publish.authorMissing") : preview.author
11792
12388
  }
11793
12389
  ];
12390
+ const claim = preview?.claim;
12391
+ if (claim !== void 0 && claim.state !== "new" && claim.state !== "unknown") {
12392
+ if (claim.state === "unit-taken") rows.push({
12393
+ label: t("approval.publish.unit"),
12394
+ value: t("approval.publish.unitTaken", { entry: claim.entry })
12395
+ });
12396
+ else if (claim.state === "path-taken") rows.push({
12397
+ label: t("approval.publish.path"),
12398
+ value: t("approval.publish.pathTaken", { entry: claim.entry })
12399
+ });
12400
+ else rows.push({
12401
+ label: t("approval.publish.owner"),
12402
+ value: claim.state === "owned" ? claim.owner : claim.state === "unowned" ? t("approval.publish.ownerUnowned") : t("approval.publish.ownerTaken", { owner: claim.owner })
12403
+ });
12404
+ }
11794
12405
  const market = preview?.market;
11795
12406
  if (market !== void 0) rows.push({
11796
12407
  label: t("approval.publish.repo"),
@@ -11820,7 +12431,7 @@ window.__ModuleLoader__.load({
11820
12431
  className: approval_detail_module_default.changelogMissing,
11821
12432
  role: "note"
11822
12433
  }, t("approval.publish.changelogMissing", { version: changelog.version }));
11823
- return (0, react.createElement)("section", { className: approval_detail_module_default.changelog }, (0, react.createElement)("p", { className: approval_detail_module_default.changelogTitle }, t("approval.publish.changelog", { version: changelog.version })), (0, react.createElement)("div", { className: approval_detail_module_default.changelogBody }, (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.MarkdownText, {
12434
+ return (0, react.createElement)("section", { className: approval_detail_module_default.changelog }, (0, react.createElement)("p", { className: approval_detail_module_default.changelogTitle }, changelog.pending === true ? t("approval.publish.changelogPending", { version: changelog.version }) : t("approval.publish.changelog", { version: changelog.version })), (0, react.createElement)("div", { className: approval_detail_module_default.changelogBody }, (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.MarkdownText, {
11824
12435
  text: changelog.text,
11825
12436
  variant: "compact",
11826
12437
  labels: {
@@ -11836,11 +12447,13 @@ window.__ModuleLoader__.load({
11836
12447
  const unit = textOf(args, "unit");
11837
12448
  const version = textOf(args, "version");
11838
12449
  const author = textOf(args, "author");
12450
+ const changelog = typeof args["changelogNote"] === "string" ? args["changelogNote"] : "";
12451
+ const changelogType = textOf(args, "changelogType");
11839
12452
  const [preview, setPreview] = (0, react.useState)(() => unit === "" ? null : void 0);
11840
12453
  (0, react.useEffect)(() => {
11841
12454
  if (unit === "") return;
11842
12455
  let live = true;
11843
- readPublishPreview(unit, version, author).then((response) => {
12456
+ readPublishPreview(unit, version, author, changelog, changelogType).then((response) => {
11844
12457
  if (live) setPreview(response.ok ? response.preview : null);
11845
12458
  });
11846
12459
  return () => {
@@ -11849,13 +12462,55 @@ window.__ModuleLoader__.load({
11849
12462
  }, [
11850
12463
  unit,
11851
12464
  version,
11852
- author
12465
+ author,
12466
+ changelog,
12467
+ changelogType
11853
12468
  ]);
11854
12469
  return (0, react.createElement)(ApprovalPlan, { rows: publishRows(args, preview, t) }, (0, react.createElement)(PublishChangelogSeat, {
11855
12470
  changelog: preview?.changelog,
11856
12471
  t
11857
12472
  }));
11858
12473
  }
12474
+ function marketSourceRows(tool, args, payload, t) {
12475
+ const id = textOf(args, "id");
12476
+ const source = payload === void 0 || payload === null ? void 0 : payload.sources.find((one) => one.id === (id === "" ? payload.selected : id));
12477
+ const reading = t("approval.market.reading");
12478
+ const rows = [
12479
+ {
12480
+ label: t("approval.market.source"),
12481
+ value: payload === void 0 ? reading : source === void 0 ? id === "" ? "—" : id : `${source.label}(${source.id})`
12482
+ },
12483
+ {
12484
+ label: t("approval.market.url"),
12485
+ value: source?.url ?? (payload === void 0 ? reading : "—")
12486
+ },
12487
+ {
12488
+ label: t("approval.market.action"),
12489
+ value: tool === "workbench_market_enable" ? t("approval.market.enable") : t("approval.market.disable")
12490
+ }
12491
+ ];
12492
+ if (source !== void 0) rows.push({
12493
+ label: t("approval.market.policy"),
12494
+ value: source.policy === "artifacts-in-repo" ? t("approval.market.writable") : t("approval.market.readOnly")
12495
+ });
12496
+ return rows;
12497
+ }
12498
+ function MarketSourceApprovalSeat({ tool, args, t }) {
12499
+ const [payload, setPayload] = (0, react.useState)(void 0);
12500
+ (0, react.useEffect)(() => {
12501
+ let live = true;
12502
+ readMarketSources().then((response) => {
12503
+ if (live) setPayload(response.ok ? {
12504
+ sources: response.sources,
12505
+ selected: response.selected
12506
+ } : null);
12507
+ });
12508
+ return () => {
12509
+ live = false;
12510
+ };
12511
+ }, []);
12512
+ return (0, react.createElement)(ApprovalPlan, { rows: marketSourceRows(tool, args, payload, t) });
12513
+ }
11859
12514
  function shellClaimsApprovalDetail(tool) {
11860
12515
  return ALL_TOOLS.includes(tool);
11861
12516
  }
@@ -11883,6 +12538,11 @@ window.__ModuleLoader__.load({
11883
12538
  args: input.args,
11884
12539
  t
11885
12540
  });
12541
+ if (input.tool === "workbench_market_enable" || input.tool === "workbench_market_disable") return (0, react.createElement)(MarketSourceApprovalSeat, {
12542
+ tool: input.tool,
12543
+ args: input.args,
12544
+ t
12545
+ });
11886
12546
  const plan = shellApprovalPlan(input, t);
11887
12547
  if (plan === void 0) return void 0;
11888
12548
  if (plan.rows.length === 0) return (0, react.createElement)(react.Fragment, null);
@@ -12054,20 +12714,37 @@ window.__ModuleLoader__.load({
12054
12714
  }
12055
12715
  function createDshSurfaceWatch(read, onReady, intervalMs) {
12056
12716
  let timer;
12717
+ let observer;
12057
12718
  const disarm = () => {
12058
- if (timer === void 0) return;
12059
- clearInterval(timer);
12060
- timer = void 0;
12719
+ if (timer !== void 0) {
12720
+ clearInterval(timer);
12721
+ timer = void 0;
12722
+ }
12723
+ observer?.disconnect();
12724
+ observer = void 0;
12061
12725
  };
12062
12726
  const tick = () => {
12063
12727
  if (!read()) return;
12064
12728
  disarm();
12065
12729
  onReady();
12066
12730
  };
12731
+ const observe = () => {
12732
+ if (observer !== void 0 || typeof MutationObserver === "undefined") return;
12733
+ const root = typeof document === "undefined" ? void 0 : document.documentElement;
12734
+ if (root === void 0 || root === null) return;
12735
+ observer = new MutationObserver(tick);
12736
+ observer.observe(root, {
12737
+ attributes: true,
12738
+ attributeFilter: [DSH_SEAT_ATTRIBUTE],
12739
+ childList: true,
12740
+ subtree: true
12741
+ });
12742
+ };
12067
12743
  return {
12068
12744
  arm() {
12069
12745
  if (timer !== void 0) return;
12070
12746
  timer = setInterval(tick, intervalMs);
12747
+ observe();
12071
12748
  },
12072
12749
  disarm
12073
12750
  };
@@ -12080,18 +12757,30 @@ window.__ModuleLoader__.load({
12080
12757
  let unsubscribe;
12081
12758
  let restore;
12082
12759
  let shimmed = false;
12760
+ const expand = (official) => {
12761
+ if (official.isExpanded()) return true;
12762
+ try {
12763
+ official.toggleExpanded();
12764
+ return true;
12765
+ } catch {
12766
+ return false;
12767
+ }
12768
+ };
12083
12769
  const flush = () => {
12084
12770
  const official = host.official();
12085
- if (official === void 0 || !dshSeatOnScreen(document)) return;
12771
+ if (official === void 0) return;
12086
12772
  if (pendingOpen) {
12773
+ if (!expand(official)) {
12774
+ watch.arm();
12775
+ return;
12776
+ }
12087
12777
  pendingOpen = false;
12088
- if (!official.isExpanded()) official.toggleExpanded();
12089
12778
  }
12090
12779
  const call = pendingCall;
12091
12780
  pendingCall = void 0;
12092
12781
  call?.();
12093
12782
  };
12094
- const watch = createDshSurfaceWatch(() => dshSeatOnScreen(document), flush, 60);
12783
+ const watch = createDshSurfaceWatch(() => host.official()?.mounted.getSnapshot() !== void 0, flush, 60);
12095
12784
  const subscribe = () => {
12096
12785
  const official = host.official();
12097
12786
  if (official === void 0 || unsubscribe !== void 0) return;
@@ -14390,7 +15079,7 @@ window.__ModuleLoader__.load({
14390
15079
  var palette_default = ":root {\n --wb-static-mask-opaque: #000;\n --wb-static-shadow-ghost: 0 8px 20px rgba(0, 0, 0, 0.4);\n}\n";
14391
15080
  //#endregion
14392
15081
  //#region src/shared/styles/tokens/scale.css?raw
14393
- var scale_default = ":root {\n --wb-dur-0-12: 0.12s;\n --wb-dur-0-9: 0.9s;\n --wb-dur-1-4: 1.4s;\n --wb-dur-1-5: 1.5s;\n --wb-font-10: 10px;\n --wb-font-11-5: 11.5px;\n --wb-font-12-5: 12.5px;\n --wb-font-18: 18px;\n --wb-len-0-5: 0.5px;\n --wb-len-1: 1px;\n --wb-len-10: 10px;\n --wb-len-12: 12px;\n --wb-len-120: 120px;\n --wb-len-13: 13px;\n --wb-len-132: 132px;\n --wb-len-14: 14px;\n --wb-len-144: 144px;\n --wb-len-15: 15px;\n --wb-len-16: 16px;\n --wb-len-18: 18px;\n --wb-len-2: 2px;\n --wb-len-20: 20px;\n --wb-len-22: 22px;\n --wb-len-220: 220px;\n --wb-len-24: 24px;\n --wb-len-240: 240px;\n --wb-len-26: 26px;\n --wb-len-28: 28px;\n --wb-len-280: 280px;\n --wb-len-3: 3px;\n --wb-len-3-4em: 3.4em;\n --wb-len-30: 30px;\n --wb-len-300: 300px;\n --wb-len-32: 32px;\n --wb-len-320: 320px;\n --wb-len-34: 34px;\n --wb-len-36: 36px;\n --wb-len-360: 360px;\n --wb-len-38: 38px;\n --wb-len-4: 4px;\n --wb-len-440: 440px;\n --wb-len-40: 40px;\n --wb-len-420: 420px;\n --wb-len-42em: 42em;\n --wb-len-44: 44px;\n --wb-len-48: 48px;\n --wb-len-480: 480px;\n --wb-len-5: 5px;\n --wb-len-52: 52px;\n --wb-len-520: 520px;\n --wb-len-56: 56px;\n --wb-len-560: 560px;\n --wb-len-6: 6px;\n --wb-len-60: 60px;\n --wb-len-64: 64px;\n --wb-len-7: 7px;\n --wb-len-72: 72px;\n --wb-len-8: 8px;\n --wb-len-800: 800px;\n --wb-len-9: 9px;\n --wb-len-96: 96px;\n --wb-len-960: 960px;\n --wb-len-neg-0-5: -0.5px;\n --wb-len-neg-1-5: -1.5px;\n --wb-len-neg-2: -2px;\n --wb-len-neg-3: -3px;\n --wb-len-neg-4: -4px;\n --wb-len-neg-8: -8px;\n --wb-line-14: 14px;\n --wb-line-15: 15px;\n --wb-line-16: 16px;\n --wb-line-17: 17px;\n --wb-line-18: 18px;\n --wb-line-19: 19px;\n --wb-line-20: 20px;\n --wb-line-22: 22px;\n --wb-line-24: 24px;\n --wb-radius-14: 14px;\n --wb-radius-6: 6px;\n --wb-radius-pill: 999px;\n --wb-track-brand: .04em;\n --wb-z-1100: 1100;\n --wb-z-10: 10;\n --wb-z-30: 30;\n --wb-z-40: 40;\n --wb-z-top: 2147483000;\n}\n";
15082
+ var scale_default = ":root {\n --wb-dur-0-12: 0.12s;\n --wb-dur-0-9: 0.9s;\n --wb-dur-1-4: 1.4s;\n --wb-dur-1-5: 1.5s;\n --wb-font-10: 10px;\n --wb-font-11-5: 11.5px;\n --wb-font-12-5: 12.5px;\n --wb-font-18: 18px;\n --wb-len-0-5: 0.5px;\n --wb-len-1: 1px;\n --wb-len-10: 10px;\n --wb-len-12: 12px;\n --wb-len-120: 120px;\n --wb-len-13: 13px;\n --wb-len-132: 132px;\n --wb-len-14: 14px;\n --wb-len-144: 144px;\n --wb-len-15: 15px;\n --wb-len-16: 16px;\n --wb-len-18: 18px;\n --wb-len-2: 2px;\n --wb-len-20: 20px;\n --wb-len-22: 22px;\n --wb-len-220: 220px;\n --wb-len-24: 24px;\n --wb-len-240: 240px;\n --wb-len-26: 26px;\n --wb-len-28: 28px;\n --wb-len-280: 280px;\n --wb-len-3: 3px;\n --wb-len-3-4em: 3.4em;\n --wb-len-30: 30px;\n --wb-len-300: 300px;\n --wb-len-32: 32px;\n --wb-len-320: 320px;\n --wb-len-34: 34px;\n --wb-len-36: 36px;\n --wb-len-360: 360px;\n --wb-len-38: 38px;\n --wb-len-4: 4px;\n --wb-len-440: 440px;\n --wb-len-40: 40px;\n --wb-len-420: 420px;\n --wb-len-42em: 42em;\n --wb-len-44: 44px;\n --wb-len-48: 48px;\n --wb-len-5: 5px;\n --wb-len-52: 52px;\n --wb-len-520: 520px;\n --wb-len-56: 56px;\n --wb-len-560: 560px;\n --wb-len-6: 6px;\n --wb-len-60: 60px;\n --wb-len-64: 64px;\n --wb-len-7: 7px;\n --wb-len-72: 72px;\n --wb-len-8: 8px;\n --wb-len-800: 800px;\n --wb-len-9: 9px;\n --wb-len-96: 96px;\n --wb-len-960: 960px;\n --wb-len-neg-0-5: -0.5px;\n --wb-len-neg-1-5: -1.5px;\n --wb-len-neg-2: -2px;\n --wb-len-neg-3: -3px;\n --wb-len-neg-4: -4px;\n --wb-len-neg-8: -8px;\n --wb-line-14: 14px;\n --wb-line-15: 15px;\n --wb-line-16: 16px;\n --wb-line-17: 17px;\n --wb-line-18: 18px;\n --wb-line-19: 19px;\n --wb-line-20: 20px;\n --wb-line-22: 22px;\n --wb-line-24: 24px;\n --wb-radius-14: 14px;\n --wb-radius-6: 6px;\n --wb-radius-pill: 999px;\n --wb-track-brand: .04em;\n --wb-z-1100: 1100;\n --wb-z-10: 10;\n --wb-z-30: 30;\n --wb-z-40: 40;\n --wb-z-top: 2147483000;\n}\n";
14394
15083
  //#endregion
14395
15084
  //#region src/shared/styles/sidebar-app.css?raw
14396
15085
  var sidebar_app_default = ".wb-wsSection {\n position: relative;\n flex: none;\n --dsh-session-list-edge-inset: var(--dsh-sidebar-inline-padding);\n --dsh-session-list-scrollbar-width: 5px;\n --dsh-session-list-scrollbar-offset: 2px;\n margin: 0 var(--dsh-session-list-scrollbar-offset) var(--wb-len-4) 0;\n padding-right: calc( var(--dsh-session-list-edge-inset) - var(--dsh-session-list-scrollbar-width) - var(--dsh-session-list-scrollbar-offset) );\n}.wb-sectionHeader {\n box-sizing: border-box;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n gap: var(--wb-len-4);\n height: var(--wb-len-36);\n flex: none;\n margin-bottom: var(--wb-len-4);\n padding-left: var(--wb-len-8);\n padding-right: var(--wb-len-2);\n border-radius: var(--dsw-radius-md);\n color: var(--dsw-alias-label-tertiary);\n overflow: hidden;\n}.wb-wsNew {\n margin-left: auto;\n}.wb-sectionLabel {\n flex: none;\n min-width: 0;\n max-width: 45%;\n overflow: hidden;\n white-space: nowrap;\n line-height: var(--wb-line-20);\n}.wb-collapsed .wb-wsSection {\n margin: 0 0 var(--wb-len-12);\n padding-right: 0;\n}.wb-collapsed .wb-sectionHeader {\n justify-content: flex-start;\n gap: 0;\n margin-bottom: 0;\n padding-left: 0;\n padding-right: 0;\n}.wb-collapsed .wb-wsNew {\n margin-left: 0;\n}.wb-sessions {\n --dsh-session-list-edge-inset: var(--dsh-sidebar-inline-padding);\n --dsh-session-list-scrollbar-width: 5px;\n --dsh-session-list-scrollbar-offset: 2px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n margin-left: var(--wb-len-neg-4);\n margin-right: var(--dsh-session-list-scrollbar-offset);\n padding-left: var(--wb-len-4);\n padding-right: calc( var(--dsh-session-list-edge-inset) - var(--dsh-session-list-scrollbar-width) - var(--dsh-session-list-scrollbar-offset) );\n padding-bottom: var(--wb-len-16);\n scrollbar-gutter: stable;\n --dsh-scrollbar-thumb: var(--dsw-alias-scrollbar-bg-l2);\n --dsh-scrollbar-thumb-hover: var(--dsw-alias-scrollbar-hover-l2);\n}.wb-sessions.wb-fadeTop {\n mask-image: linear-gradient(\n to bottom,\n transparent 0,\n var(--wb-static-mask-opaque) var(--wb-len-24),\n var(--wb-static-mask-opaque) 100%\n );\n}.wb-sessions.wb-fadeBottom {\n mask-image: linear-gradient(\n to bottom,\n var(--wb-static-mask-opaque) 0,\n var(--wb-static-mask-opaque) calc(100% - var(--wb-len-24)),\n transparent 100%\n );\n}.wb-sessions.wb-fadeTop.wb-fadeBottom {\n mask-image: linear-gradient(\n to bottom,\n transparent 0,\n var(--wb-static-mask-opaque) var(--wb-len-24),\n var(--wb-static-mask-opaque) calc(100% - var(--wb-len-24)),\n transparent 100%\n );\n}.wb-sessions > * {\n flex: none;\n}.wb-sessions > * + * {\n margin-top: var(--wb-len-2);\n}.wb-sessionLeading {\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}.wb-sessionPin {\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 margin-left: var(--wb-len-6);\n color: var(--dsw-alias-label-caption);\n}.wb-rowActions {\n flex: none;\n display: none;\n align-items: center;\n gap: var(--wb-len-15);\n}.wb-rowActions .wb-iconButton {\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n border-radius: var(--dsw-radius-xs);\n color: var(--dsw-alias-label-tertiary);\n}.wb-rowActions .wb-iconButton:hover {\n background: transparent;\n color: var(--dsw-alias-label-primary);\n}.wb-sessionRow:hover .wb-rowActions,\n.wb-sessionRow.wb-menuOpen .wb-rowActions {\n display: inline-flex;\n}.wb-sessionRow:hover .wb-sessionTime,\n.wb-sessionRow.wb-menuOpen .wb-sessionTime,\n.wb-sessionRow:hover .wb-sessionPin,\n.wb-sessionRow.wb-menuOpen .wb-sessionPin {\n display: none;\n}.wb-sessionRow.wb-menuOpen {\n background: var(--dsw-alias-interactive-bg-hover);\n}.wb-sessionRow {\n position: relative;\n flex: none;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 0;\n width: 100%;\n height: var(--wb-len-32);\n padding: 0 var(--wb-len-8);\n border: none;\n border-radius: var(--dsw-radius-md);\n background: transparent;\n color: var(--dsw-alias-label-primary);\n font: inherit;\n text-align: left;\n cursor: pointer;\n user-select: none;\n}.wb-sessionRow:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}.wb-sessionRow: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}.wb-visuallyHidden {\n clip: rect(0 0 0 0);\n white-space: nowrap;\n width: var(--wb-len-1);\n height: var(--wb-len-1);\n position: absolute;\n overflow: hidden;\n}.wb-sessionTitle {\n flex: 1;\n min-width: 0;\n margin: 0 var(--wb-len-6) 0 var(--wb-len-4);\n font-size: var(--wb-font-row);\n line-height: var(--wb-line-20);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}.wb-sessionTitle[data-scrolled] {\n mask-image: linear-gradient(90deg, transparent, var(--wb-static-mask-opaque) var(--wb-len-12));\n}.wb-sessionTitle[data-clipped] {\n mask-image: linear-gradient(270deg, transparent, var(--wb-static-mask-opaque) var(--wb-len-12));\n}.wb-sessionTitle[data-scrolled][data-clipped] {\n mask-image: linear-gradient(\n 90deg,\n transparent,\n var(--wb-static-mask-opaque) var(--wb-len-12) calc(100% - var(--wb-len-12)),\n transparent\n );\n}@media (hover: hover) {\n .wb-sessionRow:hover .wb-sessionTitle,\n .wb-sessionRow.wb-menuOpen .wb-sessionTitle {\n text-overflow: clip;\n }\n}.wb-sessionHover {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n}.wb-sessionHoverTitle {\n color: var(--dsw-static-neutral-bluish-00);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n overflow-wrap: break-word;\n}.wb-sessionHoverTime {\n color: var(--dsw-static-neutral-bluish-300);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-16);\n}.wb-sessionHoverStatus {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n color: var(--dsw-static-neutral-bluish-400);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-20);\n}.wb-sessionTime {\n flex: none;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}.wb-workspaceBusy {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: var(--wb-len-4) var(--wb-len-8) 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}.wb-workspaceError {\n margin: var(--wb-len-4) var(--wb-len-8) 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}.wb-empty {\n padding: var(--wb-len-16) var(--wb-len-12);\n font-size: var(--dsw-font-xs-13-font-size);\n color: var(--dsw-alias-label-tertiary);\n}.wb-sessionRow.wb-selected {\n background: var(--dsw-alias-interactive-bg-hover);\n}.wb-panelTag {\n flex: none;\n margin-left: auto;\n}.wb-panelGlyph {\n position: relative;\n}.wb-panelDot {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: var(--wb-len-neg-3);\n right: var(--wb-len-neg-3);\n}button[class$=_workspace] {\n display: none;\n}\n";
@@ -14767,7 +15456,7 @@ window.__ModuleLoader__.load({
14767
15456
  ...face.messages === void 0 ? {} : { messages: face.messages }
14768
15457
  }));
14769
15458
  }
14770
- var COMPONENT_CSS_MARKER = ".wb-activityBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding-top: var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n.wb-activityBlock:first-child {\n padding-top: 0;\n border-top: none;\n}\n\n.wb-activityBlockHead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8);\n}\n\n.wb-activityLine {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-activityLineText {\n flex: none;\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n max-height: var(--wb-len-72);\n overflow-y: auto;\n}\n\n.wb-activityLineAt {\n flex: none;\n margin-left: auto;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-16);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-activityLine > .wb-activityLineAt,\n.wb-activityLine > .wb-activityLineActions {\n margin-left: auto;\n}\n\n.wb-activityLine > .wb-activityLineAt + .wb-activityLineActions {\n margin-left: 0;\n}\n\n.wb-activityLineActions {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n.wb-activityActionFailed {\n color: var(--dsw-alias-state-error-primary);\n}\n.wb-note {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-problem {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalCommand {\n max-width: 100%;\n}\n.wb-approvalPlan {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-approvalHint {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n.wb-approvalRows {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n}\n.wb-approvalRow {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n.wb-approvalLabel {\n flex: none;\n width: var(--wb-len-56);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-approvalValue {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-approvalWarn {\n color: var(--dsw-alias-label-secondary);\n}\n.wb-cardHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-8) var(--wb-card-gutter);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-cardTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-cardMeta {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-cardMeta::before {\n content: '\\00b7';\n margin-right: var(--wb-len-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardOpen ~ .wb-cardRefresh {\n margin-left: 0;\n}\n\n.wb-cardOpen:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh {\n margin-left: auto;\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-4);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardRefresh:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-cardRefresh:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-cardGear {\n flex: none;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: var(--wb-len-3);\n border-radius: var(--wb-radius-6);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-cardGear:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n.wb-card {\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-bg-layer-1);\n overflow: hidden;\n display: flex;\n flex-direction: column;\n flex: none;\n}\n.wb-cardBody {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-card-gutter);\n font-size: var(--dsw-font-xxs-12-font-size);\n}\n.wb-cardBleed {\n margin-inline: calc(-1 * var(--wb-card-gutter));\n}\n._anchor_yq4s2_1 {\n display: contents;\n}\n.wb-spinner {\n display: inline-flex;\n align-items: center;\n flex: none;\n}\n.wb-choiceMenu {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n background: transparent;\n}\n\n.wb-choiceMenu[data-variant='boxed'] {\n padding: var(--wb-len-4);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-choiceOption {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: pointer;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-choiceOptionOn {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-checkbox {\n position: absolute;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: 0;\n opacity: 0;\n pointer-events: none;\n}\n\n.wb-checkboxBox {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-xs);\n corner-shape: round;\n color: var(--dsw-alias-label-primary-foreground);\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-choiceOption:hover .wb-checkboxBox {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-checkbox:checked + .wb-checkboxBox {\n border-color: var(--dsw-alias-brand-primary);\n background: var(--dsw-alias-brand-primary);\n}\n\n.wb-checkbox:disabled + .wb-checkboxBox {\n cursor: default;\n}\n\n.wb-checkbox:focus-visible + .wb-checkboxBox {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n.wb-choiceOption:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-choiceOption:has(:disabled) {\n cursor: default;\n opacity: 0.5;\n}\n\n.wb-choiceOption:has(:disabled),\n.wb-choiceOption:has(:disabled):hover {\n background: transparent;\n}\n\n.wb-choiceLabel {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.wb-choiceLabelText {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceLabel:has(.wb-choiceDescription) .wb-choiceLabelText {\n overflow: visible;\n white-space: normal;\n overflow-wrap: anywhere;\n}\n\n.wb-choiceDescription {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n.wb-choiceLoading {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-choiceLoadingText {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.wb-choiceEmpty {\n display: flex;\n align-items: center;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-8);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio {\n appearance: none;\n -webkit-appearance: none;\n flex: none;\n box-sizing: border-box;\n width: var(--wb-len-12);\n height: var(--wb-len-12);\n margin: 0;\n border: 1px solid var(--dsw-alias-border-l3);\n border-radius: 50%;\n corner-shape: round;\n background-color: transparent;\n cursor: pointer;\n transition:\n background-color var(--wb-dur-0-12) ease, border-color var(--wb-dur-0-12) ease;\n}\n\n.wb-radio:not(:checked):hover {\n border-color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-radio:checked {\n border-color: var(--dsw-alias-brand-primary);\n background-image: radial-gradient(\n circle at center,\n var(--dsw-alias-brand-primary) 0 3px,\n transparent 3px\n );\n}\n\n.wb-radio:disabled {\n cursor: default;\n}\n\n.wb-radio:focus-visible {\n outline: var(--dsw-focus-ring-width, var(--wb-len-2)) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n.wb-formActions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n}\n\n.wb-formActionDanger {\n color: var(--dsw-alias-state-error-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);\n}\n.wb-rows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n}\n.wb-rows > :not(.wb-row) {\n grid-column: 1 / -1;\n}\n.wb-row {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: baseline;\n gap: var(--wb-len-8);\n padding: var(--wb-len-4) 0;\n}\n.wb-row + .wb-row {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n.wb-rowKey {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-rowValue {\n min-width: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-rows > .wb-row {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-rows > .wb-row {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-confirmBar {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n width: 100%;\n box-sizing: border-box;\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n}\n.wb-confirmBarTitle {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 600;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n overflow-wrap: anywhere;\n}\n.wb-confirmBarHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n.wb-field {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n.wb-fieldLabel {\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-fieldHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-field:has(:disabled) .wb-fieldLabel {\n opacity: 0.4;\n}\n.wb-formRows {\n display: grid;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-12);\n}\n\n.wb-formRows > :not(.wb-formRow) {\n grid-column: 1 / -1;\n}\n\n.wb-formRow {\n display: grid;\n grid-column: 1 / -1;\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n align-items: center;\n column-gap: var(--wb-len-8);\n row-gap: var(--wb-len-8);\n}\n\n.wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n align-items: stretch;\n gap: var(--wb-len-6);\n}\n\n.wb-formRows > .wb-formRow[data-layout='stacked'] {\n grid-template-columns: minmax(0, 1fr);\n}\n\n.wb-formLabel {\n justify-self: start;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: nowrap;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formLabel {\n white-space: normal;\n}\n\n.wb-formRow[data-layout='stacked'] .wb-formHint,\n.wb-formRow[data-layout='stacked'] .wb-formProblem {\n grid-column: 1 / -1;\n}\n\n.wb-formControl {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.wb-formControl\n > :where(\n .wb-selectAnchor,\n .wb-choiceMenu,\n input:not(\n [type='checkbox'],\n [type='radio'],\n [type='button'],\n [type='submit'],\n [type='reset'],\n [type='image'],\n [type='color'],\n [type='range']\n ),\n select,\n textarea\n ) {\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n}\n\n.wb-formHint {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-formProblem {\n grid-column: 2;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(.wb-formProblem) .wb-formLabel {\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-formRow:has(:disabled) .wb-formLabel {\n opacity: 0.4;\n}\n\n.wb-formRows > .wb-formRow {\n grid-template-columns: subgrid;\n}\n\n@supports not (grid-template-columns: subgrid) {\n .wb-formRows > .wb-formRow {\n grid-template-columns: minmax(72px, max-content) minmax(0, 1fr);\n }\n}\n.wb-form {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n width: 100%;\n}\n:where(.wb-link) {\n margin-left: var(--wb-len-2);\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n white-space: nowrap;\n vertical-align: baseline;\n}\n\n:where(.wb-link:hover) {\n text-decoration: underline;\n}\n\n:where(.wb-link:focus-visible) {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n.wb-longTask {\n padding-top: var(--wb-len-12);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n.wb-longTaskHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n}\n\n.wb-longTaskLink {\n flex: none;\n}\n\n.wb-longTaskHeadline {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-secondary);\n}\n\n.wb-longTaskProblem {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n.wb-longTaskDump {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-longTaskDump pre {\n margin: var(--wb-len-4) 0 0;\n max-height: var(--wb-len-220);\n overflow: auto;\n}\n\n.wb-longTaskStop {\n display: inline-flex;\n flex: none;\n align-items: center;\n align-self: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n padding: 0;\n margin-left: auto;\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-specific-menu);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n.wb-longTaskStop:hover:not(:disabled),\n.wb-longTaskStop:focus-visible {\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStop:disabled {\n cursor: default;\n}\n\n.wb-longTaskStopArmed,\n.wb-longTaskStopArmed:hover:not(:disabled),\n.wb-longTaskStopArmed:focus-visible {\n gap: var(--wb-len-4);\n width: auto;\n padding: 0 var(--wb-len-7);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 45%, transparent);\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-longTaskStopLabel {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n.wb-longTaskStopWhy {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n.wb-centered.wb-centeredCompact {\n flex: none;\n min-height: 0;\n gap: var(--wb-len-8);\n padding: var(--wb-len-20) var(--wb-len-16);\n}\n\n.wb-centered.wb-centeredCompact .wb-centeredHero {\n margin-bottom: var(--wb-len-4);\n}\n\n.wb-skeleton {\n display: flex;\n flex-direction: column;\n}\n\n.wb-skeletonRow {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n}\n\n.wb-skeletonRow + .wb-skeletonRow::before {\n content: '';\n align-self: stretch;\n height: var(--wb-len-0-5);\n margin: 0 var(--wb-len-8) var(--wb-len-neg-0-5);\n background: var(--dsw-alias-border-l2);\n}\n\n.wb-skeletonBar {\n display: block;\n height: var(--wb-len-13);\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-bg-skeleton);\n animation: wb-skeleton-pulse var(--wb-dur-1-4) var(--ds-ease-in-out) infinite;\n}\n\n.wb-skeletonBarTitle {\n width: 62%;\n}\n\n.wb-skeletonBarMeta {\n width: 32%;\n height: var(--wb-len-10);\n}\n\n.wb-skeletonRow:nth-child(2n) .wb-skeletonBarTitle {\n width: 74%;\n}\n\n.wb-skeletonRow:nth-child(3n) .wb-skeletonBarTitle {\n width: 52%;\n}\n\n@keyframes wb-skeleton-pulse {\n 50% {\n opacity: 0.45;\n }\n}\n\n.wb-centered {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: var(--wb-len-14);\n flex: 1;\n min-height: var(--wb-len-240);\n padding: 0 var(--wb-len-24) var(--wb-len-24);\n text-align: center;\n}\n\n.wb-centeredHero {\n display: flex;\n margin-bottom: var(--wb-len-16);\n color: var(--dsw-alias-label-dimmed);\n}\n\n.wb-centeredTitle {\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-centeredHint {\n max-width: var(--wb-len-300);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-centeredDetail {\n max-width: var(--wb-len-320);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-dimmed);\n word-break: break-all;\n}\n\n.wb-centeredAction {\n display: flex;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n@media (prefers-reduced-motion: reduce) {\n .wb-skeletonBar {\n animation: none;\n }}\n.wb-textField {\n box-sizing: border-box;\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n outline: none;\n}\n\n.wb-textField:focus {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-textField:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-textField[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-textField[aria-invalid='true']:focus {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n:where(.wb-textField) {\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n}\n:where(.wb-selectTrigger) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-primary);\n text-align: left;\n cursor: pointer;\n}\n\n.wb-selectTrigger:focus-visible {\n outline: none;\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true'] {\n border-color: var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger[aria-invalid='true']:focus-visible {\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-error-primary);\n}\n\n.wb-selectTrigger:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n.wb-selectLoading:disabled {\n cursor: default;\n opacity: 1;\n}\n\n.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: none;\n background: transparent;\n font-size: var(--wb-font-row);\n}\n\n.wb-selectGhost:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-selectGhost:focus-visible {\n outline: var(--dsw-focus-ring-width) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n border-color: transparent;\n box-shadow: none;\n}\n\n.wb-selectIconOnly {\n width: var(--wb-len-36);\n height: var(--wb-len-36);\n min-height: 0;\n gap: 0;\n padding: 0;\n justify-content: center;\n}\n\n.wb-selectReveal {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.wb-selectIconOnly .wb-selectIcon {\n width: 100%;\n height: 100%;\n}\n\n.wb-selectAnchor {\n display: block;\n width: 100%;\n}\n\n.wb-selectIcon {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectValue {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n.wb-selectPlaceholder {\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-selectChevron {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-caption);\n}\n\n.wb-selectMenu {\n min-width: var(--wb-len-240);\n max-width: var(--wb-len-360);\n max-height: min(var(--wb-len-320), calc(100vh - var(--wb-len-24)));\n}\n\n:where(.wb-selectSearch) {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n width: 100%;\n min-height: var(--wb-len-28);\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n.wb-selectSearch:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: inset 0 0 0 0.5px var(--dsw-alias-state-business-primary);\n}\n\n.wb-selectSearch.wb-selectGhost {\n gap: var(--wb-gap-xs);\n min-height: 0;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: 0.5px solid var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n.wb-selectSearch.wb-selectGhost:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n box-shadow: none;\n}\n\n.wb-selectSearchIcon {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-textField.wb-selectSearchInput {\n flex: 1;\n min-width: 0;\n min-height: 0;\n padding: 0;\n border: none;\n background: transparent;\n}\n\n.wb-textField.wb-selectSearchInput:focus {\n box-shadow: none;\n}\n\n.wb-selectFallback {\n width: 100%;\n}\n\n.wb-selectHint {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\nsection.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12) var(--wb-len-16);\n border: 0;\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-settings-card-fill);\n}\n.wb-settingsHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n.wb-settings .wb-settingsTitle {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-strong-14-font-size);\n line-height: var(--wb-line-24);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n.wb-stack {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\n}\n.wb-stateBlock {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n.wb-stateBlockTitle {\n margin: 0;\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n.wb-stateBlockHint {\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n.wb-stateBlockActions {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}\n.wb-stateBlockResolving {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._marketList_1idrk_1 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._marketRow_1idrk_10 {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: center;\n column-gap: var(--wb-len-14);\n row-gap: var(--wb-len-4);\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-lg);\n}\n\n._marketIcon_1idrk_20 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketMain_1idrk_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_1idrk_39 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketStatus_1idrk_48 {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketStateText_1idrk_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_1idrk_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_1idrk_66 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._marketName_1idrk_39 ._marketVersion_1idrk_72 {\n margin-left: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n}\n\n._marketVersion_1idrk_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_1idrk_72::before {\n content: '';\n display: inline-block;\n width: var(--wb-len-1);\n height: var(--wb-len-10);\n margin: 0 var(--wb-len-8) 0 var(--wb-len-2);\n vertical-align: -1px;\n background: var(--dsw-alias-border-l2);\n}\n\n._marketLocalTag_1idrk_94 {\n margin-left: var(--wb-len-8);\n padding: 0 var(--wb-len-6);\n border: var(--wb-len-1) solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n font-weight: 400;\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-caption);\n}\n\n._marketEnd_1idrk_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_1idrk_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_1idrk_112::before {\n content: '';\n width: 0;\n height: var(--wb-len-14);\n border-left: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketActions_1idrk_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_1idrk_131 {\n color: var(--dsw-alias-state-warn-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._marketSelfDivider_1idrk_137 {\n height: 0;\n margin-top: calc(0px - var(--wb-len-16));\n border-top: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n._marketSection_1idrk_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_1idrk_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_1idrk_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_1idrk_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_1idrk_169 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionQuiet_1idrk_175 ._marketSectionTitle_1idrk_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_1idrk_175 ._marketName_1idrk_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_1idrk_175 ._marketIcon_1idrk_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_1idrk_188 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-height: var(--wb-len-32);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketNote_1idrk_198 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-warn-primary);\n overflow-wrap: anywhere;\n}\n\n._marketFailure_1idrk_205 {\n grid-column: 2 / -1;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._marketEmpty_1idrk_212 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_1idrk_217 {\n box-sizing: border-box;\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-32);\n padding: 0 clamp(var(--wb-len-24), 4vw, var(--wb-len-48)) var(--wb-len-48);\n overflow-x: hidden;\n overflow-y: auto;\n color: var(--dsw-alias-label-primary);\n}\n\n._marketPage_1idrk_217 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_1idrk_235 {\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-16);\n padding-top: var(--wb-len-28);\n}\n\n._marketPageTitle_1idrk_243 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_1idrk_248 {\n margin: var(--wb-len-4) 0 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketPageTools_1idrk_254 {\n flex: none;\n align-self: center;\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: var(--wb-len-16);\n}\n\n._marketPanel_1idrk_263 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_1idrk_263[hidden] {\n display: none;\n}\n\n._marketTabs_1idrk_273 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_1idrk_278 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketIconButton_1idrk_283 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n color: var(--dsw-alias-label-caption);\n cursor: pointer;\n}\n\n._marketIconButton_1idrk_283:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_1idrk_283:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_1idrk_308 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_1idrk_312 svg {\n animation: _wb-spin_1idrk_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_1idrk_316 {\n height: var(--wb-len-32);\n padding: 0 var(--wb-len-12);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n border-radius: var(--dsw-radius-md);\n}\n\n._marketEmpty_1idrk_212 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) var(--wb-len-16);\n text-align: center;\n}\n\n._marketEmptyTitle_1idrk_333 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_1idrk_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n._discoverPage_1idrk_347 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_1idrk_354 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_1idrk_361 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_1idrk_367 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_1idrk_372 {\n min-width: 0;\n max-width: var(--wb-len-240);\n margin-left: calc(0px - var(--wb-len-8));\n font-weight: 500;\n}\n\n._discoverMarketName_1idrk_379 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_1idrk_385 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_1idrk_390 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_1idrk_395 {\n flex: none;\n}\n\n._discoverSearch_1idrk_399 {\n position: relative;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 var(--wb-len-120);\n min-width: var(--wb-len-120);\n}\n\n._discoverSearchField_1idrk_407 {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._discoverSearchFieldFilled_1idrk_412 input {\n padding-inline-end: var(--wb-len-20);\n}\n\n._discoverSearchField_1idrk_407 input::-webkit-search-cancel-button {\n appearance: none;\n -webkit-appearance: none;\n}\n\n._discoverSearch_1idrk_399 ._discoverSearchClear_1idrk_421 {\n position: absolute;\n top: 50%;\n inset-inline-end: var(--wb-len-4);\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-tertiary);\n transform: translateY(-50%);\n}\n\n._discoverSearchClear_1idrk_421:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_1idrk_361 {\n display: grid;\n grid-template-columns: minmax(0, auto) minmax(var(--wb-len-120), 1fr) auto;\n grid-template-areas:\n 'market search refresh'\n 'labels sort sort';\n }\n\n ._discoverMarket_1idrk_367 {\n grid-area: market;\n }\n\n ._discoverMarketButton_1idrk_372 {\n margin-left: 0;\n }\n\n ._discoverLabels_1idrk_385 {\n grid-area: labels;\n }\n\n ._discoverSearch_1idrk_399 {\n grid-area: search;\n }\n\n ._discoverSort_1idrk_390 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_1idrk_395 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_1idrk_472 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_1idrk_479 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._discoverCard_1idrk_488 {\n position: relative;\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n margin: 0 calc(0px - var(--wb-len-8));\n padding: var(--wb-len-8);\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCard_1idrk_488:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_1idrk_502 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-48);\n height: var(--wb-len-48);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverArtworkImage_1idrk_514 {\n object-fit: contain;\n}\n\n._discoverMain_1idrk_518 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-2);\n min-width: 0;\n}\n\n._discoverTitleRow_1idrk_526 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._discoverCardOpen_1idrk_534 {\n max-width: 100%;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n text-align: left;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n cursor: pointer;\n}\n\n._discoverCardOpen_1idrk_534::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_1idrk_534:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_1idrk_534:focus-visible::after {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverStrong_1idrk_565 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_1idrk_571 {\n display: -webkit-box;\n overflow: hidden;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverMeta_1idrk_580 {\n margin: 0;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._discoverMuted_1idrk_587 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_1idrk_593 {\n position: relative;\n z-index: var(--wb-z-10);\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverBlocked_1idrk_602 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_1idrk_607 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-64) 0;\n text-align: center;\n}\n\n._discoverEmptyTitle_1idrk_616 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_1idrk_607 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_1idrk_626 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_1idrk_632 {\n align-self: flex-start;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n padding: 0;\n border: 0;\n background: 0 0;\n color: var(--dsw-alias-label-tertiary);\n font: inherit;\n font-size: var(--wb-font-12-5);\n cursor: pointer;\n}\n\n._discoverCrumb_1idrk_632:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_1idrk_632:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: 2px;\n}\n\n._discoverCrumbIcon_1idrk_655 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_1idrk_659 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_1idrk_665 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_1idrk_671 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._discoverDetailPanel_1idrk_678 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_1idrk_685 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_1idrk_690 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_1idrk_695 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_1idrk_700 {\n margin: var(--wb-len-16) 0 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverSection_1idrk_706 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n margin-top: var(--wb-len-16);\n}\n\n._discoverSectionTitle_1idrk_713 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_1idrk_719 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_1idrk_724 {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--wb-len-16);\n min-height: var(--wb-len-44);\n padding: var(--wb-len-8) var(--wb-len-2);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverFactKind_1idrk_734 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_1idrk_740 {\n min-width: 0;\n margin: 0;\n text-align: end;\n overflow-wrap: anywhere;\n font: var(--dsw-font-xs-13);\n}\n\n._discoverCode_1idrk_748 {\n padding: var(--wb-len-2) var(--wb-len-6);\n border-radius: var(--wb-radius-6);\n background: var(--dsw-alias-bg-module-platform);\n font-family: var(--ds-font-family-code);\n font-size: var(--dsw-font-xxs-12-font-size);\n box-decoration-break: clone;\n}\n\n._discoverTags_1idrk_757 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_1idrk_764 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_1idrk_764:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_1idrk_774 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_1idrk_782 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverVersionName_1idrk_790 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_1idrk_795 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverFailure_1idrk_804 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverLoading_1idrk_810 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin: 0;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xs-13);\n}\n\n._discoverNotice_1idrk_819 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverNotice_1idrk_819 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_1idrk_837 {\n align-self: center;\n}\n\n._discoverDialog_1idrk_841 {\n width: min(var(--wb-len-480), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_1idrk_845 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_1idrk_851 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_1idrk_859 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) 0;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._discoverSourceCurrent_1idrk_868 {\n flex: none;\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n white-space: nowrap;\n}\n\n._discoverSourceLoading_1idrk_875 {\n display: flex;\n flex: none;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n white-space: nowrap;\n}\n\n._discoverSourceHint_1idrk_885 {\n display: flex;\n flex-basis: 100%;\n align-items: center;\n gap: var(--wb-len-6);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-12);\n}\n\n._discoverSourceHint_1idrk_885 svg {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverSourceError_1idrk_899 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_1idrk_905 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_1idrk_911 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_1idrk_916 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_1idrk_922 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_1idrk_927 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_1idrk_933 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_1idrk_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_1idrk_502._discoverSkeletonFill_1idrk_933 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_1idrk_942 {\n display: block;\n height: var(--wb-len-12);\n margin: var(--wb-len-4) 0;\n border-radius: var(--dsw-radius-xs);\n}\n\n._discoverSkeletonTitle_1idrk_949 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_1idrk_953 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_1idrk_1 {\n 0% {\n opacity: 1;\n }\n 40% {\n opacity: 0.6;\n }\n 80%,\n to {\n opacity: 1;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._discoverSkeletonFill_1idrk_933 {\n animation: none;\n }\n}\n\n._foot_1ud1j_1 {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-10);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._footText_1ud1j_13 {\n flex: 1;\n min-width: 0;\n}\n\n._footTextMd_1ud1j_18 {\n flex: 1;\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n._wide_1lv8f_1 {\n justify-content: center;\n width: 100%;\n height: var(--wb-len-40);\n border-radius: var(--dsw-radius-md);\n}\n\n._dialog_1lv8f_8 {\n width: min(var(--wb-len-560), 100%);\n max-height: min(var(--wb-len-800), 100%);\n}\n\n._content_1lv8f_13 {\n min-height: 0;\n overflow: auto;\n}\n\n._stack_1lv8f_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._body_1lv8f_25 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._field_1lv8f_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._input_1lv8f_39 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-14);\n}\n\n._registryField_1lv8f_45 {\n height: var(--wb-len-32);\n margin-left: var(--wb-len-26);\n padding: 0 var(--wb-len-10);\n}\n\n._options_1lv8f_51 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8) var(--wb-len-12);\n}\n\n._guideToggle_1lv8f_59 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-4);\n align-self: flex-start;\n margin-top: var(--wb-len-4);\n padding: 0;\n border: 0;\n background: transparent;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._guideToggle_1lv8f_59:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._guideToggle_1lv8f_59 svg,\n._registryToggle_1lv8f_78 svg {\n transition: transform var(--wb-dur-0-12) ease;\n}\n\n._guideToggle_1lv8f_59[aria-expanded='true'] svg,\n._registryToggle_1lv8f_78[aria-expanded='true'] svg {\n transform: rotate(180deg);\n}\n\n._registryWrap_1lv8f_87 {\n position: relative;\n flex: none;\n}\n\n._registryToggle_1lv8f_78 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n height: var(--wb-len-26);\n padding: 0 var(--wb-len-8) 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n font: inherit;\n font-size: var(--wb-font-12-5);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n._registryToggle_1lv8f_78:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._registryToggle_1lv8f_78:disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n._registryToggle_1lv8f_78[aria-expanded='true'] {\n border-color: var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n._registryChosen_1lv8f_121 {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\n._registry_1lv8f_45 {\n position: fixed;\n z-index: var(--wb-z-1100);\n box-sizing: border-box;\n width: min(var(--wb-len-440), 100vw - var(--wb-len-24));\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10) var(--wb-len-12);\n border: 0;\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-2);\n --dsw-elevation-stroke-color: var(--dsw-alias-border-l3);\n box-shadow: var(--dsw-elevation-prominent);\n}\n\n._registryOption_1lv8f_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid transparent;\n border-radius: var(--dsw-radius-lg);\n cursor: pointer;\n}\n\nlabel._registryOption_1lv8f_143 {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--wb-len-10);\n}\n\n._registryPick_1lv8f_159 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n cursor: pointer;\n}\n\n._registryOption_1lv8f_143[data-checked='true'] {\n border-color: color-mix(in srgb, var(--dsw-alias-brand-primary) 40%, transparent);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._registryOption_1lv8f_143 input[type='radio'] {\n flex: none;\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n margin: var(--wb-len-2) 0 0;\n accent-color: var(--dsw-alias-brand-primary);\n}\n\n._registryTitle_1lv8f_179 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n font: var(--dsw-font-xs-13);\n line-height: var(--wb-line-20);\n color: var(--dsw-alias-label-primary);\n}\n\n._registryHint_1lv8f_189 {\n margin-left: var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._inputError_1lv8f_197 {\n margin: var(--wb-len-neg-4) 0 0 var(--wb-len-26);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._guide_1lv8f_59 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) var(--wb-len-14) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._guideList_1lv8f_214 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._guideItem_1lv8f_223 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0;\n}\n\n._guideIndex_1lv8f_230 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n border-radius: var(--wb-radius-pill);\n corner-shape: round;\n background: var(--dsw-alias-bg-module-platform);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._guideMain_1lv8f_244 {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 0;\n min-width: 0;\n}\n\n._guideTitle_1lv8f_252 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._guideHint_1lv8f_258 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._guideExample_1lv8f_264 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._guideExample_1lv8f_264 code {\n font-family: var(--dsw-font-mono, monospace);\n}\n\n._guideExampleLabel_1lv8f_274 {\n color: var(--dsw-alias-label-caption);\n}\n\n._footer_1lv8f_278 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-20);\n width: 100%;\n}\n\n._hero_1lv8f_285 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-10);\n padding: var(--wb-len-8) 0 var(--wb-len-4);\n text-align: center;\n}\n\n._heroIcon_1lv8f_294 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-44);\n height: var(--wb-len-44);\n color: var(--dsw-alias-label-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='done'] {\n color: var(--dsw-alias-state-success-secondary);\n}\n\n._heroIcon_1lv8f_294[data-state='error'] {\n color: var(--dsw-alias-state-warn-label);\n}\n\n._pendingTitle_1lv8f_311 {\n margin: 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 500;\n color: var(--dsw-alias-label-secondary);\n}\n\n._wizardTitle_1lv8f_319 {\n margin: 0;\n font-size: var(--wb-font-18);\n line-height: var(--wb-len-26);\n font-weight: 600;\n}\n\n._subject_1lv8f_326 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n text-align: center;\n}\n\n._subjectName_1lv8f_337 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n overflow-wrap: anywhere;\n}\n\n._subjectMeta_1lv8f_343,\n._subjectDesc_1lv8f_344 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._result_1lv8f_351,\n._resultWarn_1lv8f_352 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._resultWarn_1lv8f_352 {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);\n}\n\n._resultMeta_1lv8f_365 {\n margin: 0;\n padding: 0 var(--wb-len-12);\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._approval_1lv8f_373 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-state-warn-primary);\n border-radius: var(--dsw-radius-lg);\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 8%, transparent);\n}\n\n._approvalTitle_1lv8f_383 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._approvalText_1lv8f_390 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._approvalCaution_1lv8f_396 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n font-weight: 600;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._note_1lv8f_403 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._noteWarn_1lv8f_410 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._noteError_1lv8f_414 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._problem_1lv8f_418 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._detailLabel_1lv8f_425 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._detail_1lv8f_425 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-3);\n font-family: var(--dsw-font-mono, monospace);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n white-space: pre-wrap;\n}\n._note_1enlz_1 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-8);\n margin: 0;\n padding: var(--wb-len-10) var(--wb-len-12);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-state-warn-tertiary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._note_1enlz_1 > svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n._slot_1t7dx_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1t7dx_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1t7dx_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1t7dx_31 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._paused_1t7dx_35 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._trouble_1t7dx_39 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._pulse_1t7dx_43 {\n animation: _wb-debug-breathe_1t7dx_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-debug-breathe_1t7dx_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1t7dx_43 {\n animation: none;\n }\n}\n\n._entry_1t7dx_64 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1t7dx_71 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1t7dx_78 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1t7dx_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-22);\n height: var(--wb-len-22);\n padding: 0;\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n}\n\n._act_1t7dx_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1t7dx_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._actStop_1t7dx_110:hover,\n._actStop_1t7dx_110:focus-visible {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._actArmed_1t7dx_115,\n._actArmed_1t7dx_115:hover,\n._actArmed_1t7dx_115:focus-visible {\n background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent);\n width: auto;\n color: var(--dsw-alias-state-error-primary);\n gap: var(--wb-len-4);\n padding: 0 var(--wb-len-7);\n}\n\n._actLabel_1t7dx_125 {\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._entryLine_1t7dx_131 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1t7dx_138 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1t7dx_150 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1t7dx_156 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1t7dx_162 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._slot_1gkj9_1 {\n display: flex;\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._slot_1gkj9_1 > * {\n flex: 0 0 100%;\n min-width: 0;\n}\n\n._action_1gkj9_12 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n flex: 1 1 0;\n width: 100%;\n min-width: 0;\n min-height: var(--wb-len-36);\n margin: 0 var(--wb-len-2);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n cursor: default;\n overflow: hidden;\n gap: var(--wb-len-4);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n}\n\n._live_1gkj9_31 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._done_1gkj9_35 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._pulse_1gkj9_39 {\n animation: _wb-record-breathe_1gkj9_1 var(--wb-dur-1-5) var(--ds-ease-in-out, ease-in-out) infinite;\n}\n\n@keyframes _wb-record-breathe_1gkj9_1 {\n 0%,\n 100% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.35;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._pulse_1gkj9_39 {\n animation: none;\n }\n}\n\n._entry_1gkj9_60 {\n display: flex;\n align-items: center;\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._entryInner_1gkj9_67 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._acts_1gkj9_74 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-2);\n flex: none;\n}\n\n._act_1gkj9_12 {\n appearance: none;\n border: 0;\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-22);\n padding: 0 var(--wb-len-7);\n border-radius: var(--dsw-radius-sm, var(--wb-len-6));\n flex: none;\n cursor: pointer;\n white-space: nowrap;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-18);\n}\n\n._act_1gkj9_12:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._act_1gkj9_12:focus-visible {\n outline: var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}\n\n._entryLine_1gkj9_108 {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._actionRail_1gkj9_115 {\n justify-content: center;\n flex: none;\n width: var(--wb-len-36);\n min-width: var(--wb-len-36);\n height: var(--wb-len-36);\n margin: 0;\n padding: 0;\n corner-shape: round;\n border-radius: 50%;\n}\n\n._card_1gkj9_127 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._cardTitle_1gkj9_133 {\n color: var(--dsw-alias-label-primary);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n}\n\n._cardNote_1gkj9_139 {\n color: var(--dsw-alias-label-secondary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n._item_lyox9_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n}\n\n._item_lyox9_1 + ._item_lyox9_1 {\n padding-top: var(--wb-len-14);\n border-top: var(--wb-len-0-5) solid var(--dsw-alias-settings-card-stroke);\n}\n\n._head_lyox9_12 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._title_lyox9_19 {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._description_lyox9_31 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._rows_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n._row_85r3w_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n padding: var(--wb-len-12) var(--wb-len-14);\n border: 0.5px solid var(--dsw-alias-settings-card-stroke);\n border-radius: var(--dsw-radius-xl);\n background: var(--dsw-alias-settings-card-fill);\n}\n\n._head_85r3w_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._pick_85r3w_27 {\n flex: 0 1 auto;\n min-width: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n}\n\n._pick_85r3w_27 > span {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._code_85r3w_39 {\n --dsl-code-block-background: var(--dsw-alias-bg-layer-1);\n margin: 0;\n}\n\n._missing_85r3w_44,\n._conflict_85r3w_45 {\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-state-warn-primary);\n}\n._body_11oac_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._sources_11oac_7 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._sourcesLabel_11oac_14 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\nbutton._sourceOn_11oac_19 {\n border-color: var(--dsw-alias-brand-primary);\n}\n._sourceCount_11oac_22 {\n margin-left: var(--wb-len-4);\n font-variant-numeric: tabular-nums;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._reading_11oac_29 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n}\n\n._status_11oac_35 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failure_11oac_45 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n column-gap: var(--wb-len-10);\n row-gap: var(--wb-len-2);\n color: var(--dsw-alias-state-error-primary);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n}\n\n._failureTitle_11oac_55 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._failureHint_11oac_62 {\n grid-column: 1;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._failureAction_11oac_67 {\n grid-column: 2;\n grid-row: 1;\n justify-self: end;\n}\n\n._foot_11oac_73 {\n display: flex;\n justify-content: flex-end;\n}\n._body_lox98_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._field_lox98_7 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._input_lox98_13 {\n width: 100%;\n}\n\n._label_lox98_17 {\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-secondary);\n}\n\n._hint_lox98_22 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._copy_lox98_28 {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wb-len-8) var(--wb-len-16);\n margin: 0;\n padding: 0;\n border: 0;\n}\n\n._copy_lox98_28 legend {\n padding: 0;\n margin-bottom: var(--wb-len-6);\n}\n\n._actions_lox98_42 {\n display: flex;\n justify-content: flex-end;\n}\n\n._commandLabel_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n}\n\n._command_lox98_47 {\n display: block;\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-6) var(--wb-len-8);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow-wrap: anywhere;\n}\n._body_zi2j5_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._lead_zi2j5_7 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n\n._title_zi2j5_14 {\n font-size: var(--wb-font-18);\n line-height: var(--wb-line-24);\n}\n._hint_zyzt3_1[hidden],\n._actions_zyzt3_2[hidden],\n._progress_zyzt3_3[hidden],\n._commandRow_zyzt3_4[hidden],\n._bridge_zyzt3_5[hidden],\n._raw_zyzt3_6[hidden] {\n display: none;\n}\n\n._gate_zyzt3_10 {\n position: fixed;\n inset: 0;\n z-index: var(--wb-z-top);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--wb-len-24);\n background: var(--dsw-alias-bg-base);\n}\n\n._card_zyzt3_21 {\n width: 100%;\n max-width: var(--wb-len-420);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-16);\n text-align: center;\n}\n\n._card_zyzt3_21:has(._actions_zyzt3_2:not([hidden])),\n._card_zyzt3_21:has(._bridge_zyzt3_5:not([hidden])) {\n max-width: var(--wb-len-520);\n}\n\n._title_zyzt3_36 {\n margin: 0;\n font-size: var(--dsw-font-base-16-font-size);\n line-height: var(--wb-line-24);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._steps_zyzt3_51 {\n list-style: none;\n margin: var(--wb-len-6) 0 0;\n padding: 0;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n text-align: left;\n}\n\n._step_zyzt3_51 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-6) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._step_zyzt3_51[data-status='running'] {\n color: var(--dsw-alias-label-primary);\n}\n\n._mark_zyzt3_78 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-14);\n height: var(--wb-len-14);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._step_zyzt3_51[data-status='ok'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._step_zyzt3_51[data-status='warn'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._step_zyzt3_51[data-status='failed'] ._mark_zyzt3_78 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._label_zyzt3_103 {\n flex: none;\n}\n\n._detail_zyzt3_107 {\n margin-left: auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._progress_zyzt3_3 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._elapsed_zyzt3_125 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n font-variant-numeric: tabular-nums;\n}\n\n._error_zyzt3_133 {\n margin: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n max-height: var(--wb-len-120);\n overflow: auto;\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n white-space: pre-wrap;\n word-break: break-all;\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._commandRow_zyzt3_4 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n margin: 0 0 var(--wb-len-8);\n padding-right: var(--wb-len-4);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._copy_zyzt3_159 {\n flex: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n padding: 0;\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._copy_zyzt3_159:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._command_zyzt3_4 {\n flex: 1;\n min-width: 0;\n padding: var(--wb-len-8) var(--wb-len-10);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font-family: var(--ds-font-family-code, monospace);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n overflow-wrap: anywhere;\n color: var(--dsw-alias-label-primary);\n}\n\n._buttons_zyzt3_192 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-12);\n}\n\n._mockSlot_zyzt3_199 {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n justify-content: center;\n background: var(--dsw-alias-bg-base);\n}\n\n._button_zyzt3_192 {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n font: inherit;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n}\n\n._button_zyzt3_192:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._button_zyzt3_192:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n._actions_zyzt3_2,\n._bridge_zyzt3_5 {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-4);\n padding: var(--wb-len-14) var(--wb-len-16);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-1);\n text-align: left;\n}\n\n._fixTitle_zyzt3_250 {\n margin: 0;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._actions_zyzt3_2 ._hint_zyzt3_1,\n._bridge_zyzt3_5 ._hint_zyzt3_1 {\n margin: 0;\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._actions_zyzt3_2 ._commandRow_zyzt3_4,\n._bridge_zyzt3_5 ._commandRow_zyzt3_4 {\n margin: 0;\n}\n\n._actions_zyzt3_2 ._buttons_zyzt3_192,\n._bridge_zyzt3_5 ._buttons_zyzt3_192 {\n justify-content: flex-start;\n}\n\n._raw_zyzt3_6 {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: left;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._rawSummary_zyzt3_286 {\n cursor: pointer;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._actions_zyzt3_2 ._error_zyzt3_133,\n._bridge_zyzt3_5 ._error_zyzt3_133 {\n margin-top: var(--wb-len-6);\n}\n\n._bridgeLines_zyzt3_296 {\n margin: 0;\n padding-left: var(--wb-len-18);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-19);\n color: var(--dsw-alias-label-secondary);\n}\n\n._bridgeLine_zyzt3_296 a {\n display: block;\n margin-top: var(--wb-len-4);\n width: fit-content;\n}\n\n._link_zyzt3_313 {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n\n._link_zyzt3_313::after {\n content: '↗';\n margin-left: var(--wb-len-2);\n}\n\n._link_zyzt3_313:hover {\n text-decoration: underline;\n}\n\n._loading_zyzt3_327 {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._loading_zyzt3_327[hidden] {\n display: none;\n}\n\n._loadingMotion_zyzt3_336 {\n transform-origin: center;\n animation: _wb-spin_zyzt3_1 var(--wb-dur-1-5) linear infinite;\n}\n\n._loadingTrack_zyzt3_341,\n._loadingArc_zyzt3_342 {\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n._loadingTrack_zyzt3_341 {\n opacity: 0.25;\n}\n\n._loadingArc_zyzt3_342 {\n stroke-dasharray: 12 150;\n animation: _wb-dash_zyzt3_1 var(--wb-dur-1-5) ease-in-out infinite;\n}\n\n@keyframes _wb-spin_zyzt3_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes _wb-dash_zyzt3_1 {\n 0% {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 24 150;\n stroke-dashoffset: -6;\n }\n to {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n ._loadingMotion_zyzt3_336,\n ._loadingArc_zyzt3_342 {\n animation: none;\n }\n}\n._changelog_1q6pj_1 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-10);\n min-width: 0;\n}\n\n._changelogTitle_1q6pj_9 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._changelogMissing_1q6pj_15 {\n margin: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-primary);\n}\n\n._changelogBody_1q6pj_21 {\n max-height: var(--wb-len-320);\n overflow: auto;\n padding: var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-lg);\n}\n._group_1hxis_1 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n}\n\n._button_1hxis_7 {\n flex: none;\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n color: var(--dsw-alias-label-secondary);\n}\n\n._button_1hxis_7:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._active_1hxis_19 {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._icon_1hxis_23 {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n._icon_1hxis_23 svg {\n display: block;\n width: var(--wb-len-15);\n height: var(--wb-len-15);\n}\n\n._mirror_1hxis_35 {\n transform: scaleX(-1);\n}\n._stripTabs_1dqp4_1 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n min-width: 0;\n overflow: hidden;\n}\n\n._tab_1dqp4_9 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n flex: none;\n height: var(--wb-len-28);\n padding: 0 var(--wb-len-10);\n border: 0;\n border-radius: var(--dsw-radius-sm);\n background: none;\n font: inherit;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-16);\n max-width: 100%;\n}\n\n._tabActive_1dqp4_25 {\n color: var(--dsw-alias-label-primary);\n}\n\n._tabQuiet_1dqp4_29 {\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._tabQuiet_1dqp4_29:hover {\n color: var(--dsw-alias-label-primary);\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._tabTitle_1dqp4_39 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._sep_1dqp4_49 {\n flex: none;\n color: var(--dsw-alias-label-dimmed);\n}\n._trigger_15ptp_1 {\n display: flex;\n align-items: center;\n}\n\n._pop_15ptp_6 {\n position: absolute;\n top: calc(var(--wb-len-38) + var(--wb-len-8));\n right: var(--wb-len-6);\n z-index: var(--wb-z-30);\n width: min(var(--wb-len-360), calc(100% - var(--wb-len-12)));\n max-width: calc(100vw - var(--wb-len-48));\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-14);\n background: var(--dsw-alias-bg-layer-2);\n box-shadow: var(--dsw-shadow-lv3);\n overflow: hidden;\n}\n\n._head_15ptp_20 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-10) var(--wb-len-12) var(--wb-len-9) var(--wb-len-14);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._title_15ptp_28 {\n flex: 1;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._rowControls_15ptp_36 {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._reset_15ptp_43 {\n flex: none;\n padding: var(--wb-len-3) var(--wb-len-8);\n border: none;\n border-radius: var(--wb-radius-6);\n background: transparent;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n cursor: pointer;\n}\n\n._reset_15ptp_43:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_15ptp_43:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._list_15ptp_65 {\n list-style: none;\n margin: 0;\n padding: var(--wb-len-6);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n}\n\n._row_15ptp_36 {\n position: relative;\n display: grid;\n grid-template-columns: 12px minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--wb-len-8);\n padding: var(--wb-len-7) var(--wb-len-8);\n border-radius: var(--dsw-radius-sm);\n cursor: default;\n}\n\n._rowDragging_15ptp_85 {\n cursor: grabbing;\n}\n\n._rowBlocked_15ptp_89 {\n cursor: not-allowed;\n}\n\n._listDragging_15ptp_93 ._rowControls_15ptp_36 {\n pointer-events: none;\n}\n\n._row_15ptp_36:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._rowOff_15ptp_101 {\n opacity: 0.55;\n}\n\n._rowOff_15ptp_101:hover {\n opacity: 1;\n}\n\n._rowOver_15ptp_109::before {\n content: '';\n position: absolute;\n top: var(--wb-len-neg-3);\n left: var(--wb-len-8);\n right: var(--wb-len-8);\n height: var(--wb-len-2);\n background: var(--dsw-alias-brand-primary);\n}\n\n._ghost_15ptp_119 {\n position: fixed;\n z-index: var(--wb-z-40);\n pointer-events: none;\n padding: var(--wb-len-4) var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: var(--wb-static-shadow-ghost);\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n white-space: nowrap;\n}\n\n._grip_15ptp_134 {\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n text-align: center;\n color: var(--dsw-alias-label-tertiary);\n user-select: none;\n cursor: grab;\n touch-action: none;\n}\n\n._gripDragging_15ptp_144 {\n cursor: grabbing;\n}\n\n._gripBlocked_15ptp_148 {\n cursor: not-allowed;\n}\n\n._label_15ptp_152 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._name_15ptp_159 {\n min-width: 0;\n flex: 0 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-primary);\n}\n\n._error_15ptp_170 {\n margin: 0;\n padding: 0 var(--wb-len-14) var(--wb-len-10);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n}\n\n._dep_15ptp_178 {\n flex: none;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n white-space: nowrap;\n}\n\n._group_15ptp_186 {\n padding-top: var(--wb-len-6);\n border-top: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n._groupTitle_15ptp_191 {\n margin: 0;\n padding: var(--wb-len-2) var(--wb-len-8) 0 var(--wb-len-14);\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n font-weight: 400;\n color: var(--dsw-alias-label-tertiary);\n}\n._panel_1whum_1 {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n z-index: var(--wb-z-10);\n visibility: hidden;\n}\n\n._panel_1whum_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_1whum_1[data-open] {\n visibility: visible;\n}\n\n._columns_1whum_18 {\n display: block;\n column-gap: var(--wb-len-12);\n}\n\n._cell_1whum_23 {\n display: flow-root;\n min-width: 0;\n break-inside: avoid;\n margin-bottom: var(--wb-len-12);\n}\n._root_1cmz0_1 {\n position: relative;\n flex: none;\n margin: 0 var(--wb-len-2) var(--wb-len-4);\n}\n\n._rail_1cmz0_7 {\n margin: 0 0 var(--wb-len-4);\n}\n\n._glyphBox_1cmz0_11 {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n}\n\n._glyph_1cmz0_11 {\n position: relative;\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._glyphActive_1cmz0_30 {\n color: var(--dsw-alias-state-business-primary);\n}\n\n._triggerName_1cmz0_34 {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-6);\n font-size: var(--wb-font-row);\n line-height: var(--wb-line-20);\n overflow: hidden;\n}\n\n._dir_1cmz0_45 {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._name_1cmz0_53 {\n flex: 0 1 auto;\n max-width: 50%;\n font-size: var(--dsw-font-xxs-12-font-size);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._triggerName_1cmz0_34 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._row_1cmz0_66 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n width: 100%;\n min-width: 0;\n}\n\n._trailing_1cmz0_74 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-20);\n height: var(--wb-len-20);\n margin-inline-start: auto;\n}\n\n._trailing_1cmz0_74 ._rowAction_1cmz0_84 {\n width: var(--wb-len-20);\n min-width: var(--wb-len-20);\n height: var(--wb-len-20);\n min-height: var(--wb-len-20);\n padding: 0;\n border-radius: var(--dsw-radius-sm);\n}\n\n._row_1cmz0_66 ._name_1cmz0_53 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._current_1cmz0_97 {\n flex: none;\n display: inline-flex;\n align-items: center;\n color: var(--dsw-alias-label-primary);\n}\n._dot_sosf1_1 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n._overlay_sosf1_8 {\n position: absolute;\n inset-block-start: var(--wb-len-neg-3);\n inset-inline-end: var(--wb-len-neg-3);\n}\n._tag_g9dg8_1 {\n flex: none;\n margin-inline-start: auto;\n}\n._dialog_1vye5_1 {\n width: min(var(--wb-len-420), 100%);\n}\n\n._stack_1vye5_5 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._input_1vye5_12 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-12);\n}\n\n._meta_1vye5_18 {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n._dot_14w1n_1 {\n display: inline-flex;\n align-items: center;\n}\n\n._hover_14w1n_6 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-secondary);\n}\n._blocker_1oaj0_1 {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--wb-len-6);\n padding: var(--wb-len-20) var(--wb-len-16);\n text-align: center;\n}\n\n._icon_1oaj0_10 {\n display: flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._title_1oaj0_15 {\n margin: var(--wb-len-2) 0 0;\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-22);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._hint_1oaj0_23 {\n margin: 0;\n max-width: var(--wb-len-42em);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-18);\n color: var(--dsw-alias-label-tertiary);\n text-wrap: pretty;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 {\n align-items: flex-start;\n gap: var(--wb-len-6);\n padding: var(--wb-len-4) 0 var(--wb-len-2);\n text-align: left;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._title_1oaj0_15 {\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._hint_1oaj0_23 {\n max-width: 100%;\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._actions_1oaj0_48 {\n margin-top: var(--wb-len-8);\n}\n\n._blocker_1oaj0_1._blockerInline_1oaj0_32 ._raw_1oaj0_52 {\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._actions_1oaj0_48 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n margin-top: var(--wb-len-6);\n}\n\n._raw_1oaj0_52 {\n margin-top: var(--wb-len-10);\n width: 100%;\n max-width: var(--wb-len-360);\n text-align: left;\n}\n\n._notice_1oaj0_71 {\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: start;\n column-gap: var(--wb-len-10);\n margin: 0 0 var(--wb-len-10);\n padding: var(--wb-len-10) var(--wb-len-12);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-left: 2px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-sm);\n background: var(--dsw-alias-bg-layer-1);\n}\n\n._notice_1oaj0_71._noticeFlat_1oaj0_84 {\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n\n._noticeText_1oaj0_91 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-3);\n min-width: 0;\n}\n\n._noticeTitle_1oaj0_98 {\n font-size: var(--wb-font-12-5);\n line-height: var(--wb-line-18);\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n\n._noticeHint_1oaj0_105 {\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-label-tertiary);\n overflow-wrap: anywhere;\n}\n\n._noticeActions_1oaj0_112 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin-top: var(--wb-len-neg-2);\n}\n\n._failure_1oaj0_119 {\n margin: var(--wb-len-8) 0 0;\n font-size: var(--wb-font-11-5);\n line-height: var(--wb-line-17);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._failureDetail_1oaj0_127 {\n display: block;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-label-tertiary);\n white-space: pre-wrap;\n}\n\n._inlineAction_1oaj0_134 {\n padding: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n}\n\n._inlineAction_1oaj0_134:disabled {\n opacity: 0.6;\n cursor: default;\n}\n\n._rawText_1oaj0_146 {\n margin: var(--wb-len-6) 0 0;\n max-width: 100%;\n}\n/*$vite$:1*/";
15459
+ 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_jfyof_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_jfyof_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_jfyof_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_jfyof_32 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_jfyof_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_jfyof_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_jfyof_58 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSep_jfyof_62 {\n color: var(--dsw-alias-label-caption);\n}\n\n._marketReason_jfyof_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_jfyof_39 ._marketVersion_jfyof_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_jfyof_72 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_jfyof_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_jfyof_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_jfyof_105 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_jfyof_112 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._marketSwitchSeat_jfyof_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_jfyof_125 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketUpdateAction_jfyof_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_jfyof_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_jfyof_143 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_jfyof_150 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionIcon_jfyof_156 {\n display: inline-flex;\n align-items: center;\n align-self: center;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketSectionTitle_jfyof_163 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_jfyof_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_jfyof_175 ._marketSectionTitle_jfyof_163 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_jfyof_175 ._marketName_jfyof_39 {\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketSectionQuiet_jfyof_175 ._marketIcon_jfyof_20 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n._marketProgress_jfyof_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_jfyof_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_jfyof_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_jfyof_212 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_jfyof_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_jfyof_217 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_jfyof_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_jfyof_243 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_jfyof_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_jfyof_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_jfyof_263 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-32);\n}\n\n._marketPanel_jfyof_263[hidden] {\n display: none;\n}\n\n._marketTabs_jfyof_273 {\n display: flex;\n margin: calc(0px - var(--wb-len-16)) 0;\n}\n\n._marketTabList_jfyof_278 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._marketIconButton_jfyof_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_jfyof_283:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_jfyof_283:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_jfyof_308 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_jfyof_312 svg {\n animation: _wb-spin_jfyof_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_jfyof_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_jfyof_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_jfyof_333 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_jfyof_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n._discoverPage_jfyof_347 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverBar_jfyof_354 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n container-type: inline-size;\n}\n\n._discoverTools_jfyof_361 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverMarket_jfyof_367 {\n flex: 0 1 auto;\n min-width: 0;\n}\n\n._discoverMarketButton_jfyof_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_jfyof_379 {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._discoverLabels_jfyof_385 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverSort_jfyof_390 {\n flex: none;\n white-space: nowrap;\n}\n\n._discoverRefresh_jfyof_395 {\n flex: none;\n}\n\n._discoverSearch_jfyof_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_jfyof_407 {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n._discoverSearchFieldFilled_jfyof_412 input {\n padding-inline-end: var(--wb-len-20);\n}\n\n._discoverSearchField_jfyof_407 input::-webkit-search-cancel-button {\n appearance: none;\n -webkit-appearance: none;\n}\n\n._discoverSearch_jfyof_399 ._discoverSearchClear_jfyof_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_jfyof_421:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n@container (max-width: 560px) {\n ._discoverTools_jfyof_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_jfyof_367 {\n grid-area: market;\n }\n\n ._discoverMarketButton_jfyof_372 {\n margin-left: 0;\n }\n\n ._discoverLabels_jfyof_385 {\n grid-area: labels;\n }\n\n ._discoverSearch_jfyof_399 {\n grid-area: search;\n }\n\n ._discoverSort_jfyof_390 {\n grid-area: sort;\n justify-self: end;\n }\n\n ._discoverRefresh_jfyof_395 {\n grid-area: refresh;\n }\n}\n\n._discoverChips_jfyof_472 {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n._discoverList_jfyof_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_jfyof_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_jfyof_488:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._discoverArtwork_jfyof_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_jfyof_514 {\n object-fit: contain;\n}\n\n._discoverMain_jfyof_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_jfyof_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_jfyof_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_jfyof_534::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--dsw-radius-xl);\n}\n\n._discoverCardOpen_jfyof_534:focus-visible {\n outline: none;\n}\n\n._discoverCardOpen_jfyof_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_jfyof_565 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n overflow-wrap: anywhere;\n}\n\n._discoverDesc_jfyof_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_jfyof_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_jfyof_587 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-tertiary);\n}\n\n._discoverEnd_jfyof_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_jfyof_602 {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n._discoverEmpty_jfyof_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_jfyof_616 {\n margin: var(--wb-len-8) 0 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverEmpty_jfyof_607 > button {\n margin-top: var(--wb-len-8);\n}\n\n._discoverDetail_jfyof_626 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n}\n\n._discoverCrumb_jfyof_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_jfyof_632:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._discoverCrumb_jfyof_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_jfyof_655 {\n transform: rotate(90deg);\n}\n\n._discoverDetailHead_jfyof_659 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverDetailTitle_jfyof_665 {\n margin: 0;\n font: var(--dsw-font-l-20);\n font-weight: 500;\n}\n\n._discoverDetailText_jfyof_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_jfyof_678 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-16);\n min-width: 0;\n}\n\n._discoverDetailTabs_jfyof_685 {\n display: flex;\n margin-bottom: calc(0px - var(--wb-len-4));\n}\n\n._discoverDetailTabList_jfyof_690 {\n width: fit-content;\n min-width: var(--wb-len-240);\n}\n\n._discoverDocBody_jfyof_695 {\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDocNotice_jfyof_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_jfyof_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_jfyof_713 {\n margin: 0;\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverFacts_jfyof_719 {\n margin: 0;\n padding: 0;\n}\n\n._discoverFactRow_jfyof_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_jfyof_734 {\n flex: none;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverFactValue_jfyof_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_jfyof_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_jfyof_757 {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--wb-len-6);\n}\n\n._discoverLink_jfyof_764 {\n color: var(--dsw-alias-link);\n overflow-wrap: anywhere;\n text-decoration: none;\n}\n\n._discoverLink_jfyof_764:hover {\n text-decoration: underline;\n}\n\n._discoverVersions_jfyof_774 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverVersionRow_jfyof_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_jfyof_790 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n}\n\n._discoverError_jfyof_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_jfyof_804 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-10);\n}\n\n._discoverLoading_jfyof_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_jfyof_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_jfyof_819 svg {\n flex: none;\n margin-top: var(--wb-len-2);\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverMore_jfyof_837 {\n align-self: center;\n}\n\n._discoverTransport_jfyof_841 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportTitle_jfyof_847 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverTransportRows_jfyof_852 {\n display: flex;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportRow_jfyof_852 {\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_jfyof_852:hover {\n border-color: var(--dsw-alias-border-l3);\n}\n\n._discoverTransportRow_jfyof_852:has(._discoverTransportRadio_jfyof_873:checked) {\n border-color: var(--dsw-alias-label-primary);\n}\n\n._discoverTransportRow_jfyof_852:has(._discoverTransportRadio_jfyof_873:focus-visible) {\n outline: 2px solid var(--dsw-alias-label-primary);\n outline-offset: 1px;\n}\n\n._discoverTransportRadio_jfyof_873 {\n flex: none;\n margin: 0;\n}\n\n._discoverTransportKind_jfyof_887 {\n flex: none;\n font: var(--dsw-font-xs-13);\n font-weight: 500;\n}\n\n._discoverTransportState_jfyof_893 {\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_jfyof_852[data-state='ok'] ._discoverTransportState_jfyof_893 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._discoverTransportRow_jfyof_852[data-state='auth'] ._discoverTransportState_jfyof_893 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._discoverTransportRow_jfyof_852[data-state='unreachable'] ._discoverTransportState_jfyof_893,\n._discoverTransportRow_jfyof_852[data-state='unknown'] ._discoverTransportState_jfyof_893 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverTransportCustom_jfyof_913 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverTransportInput_jfyof_919 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverInstallBar_jfyof_924 {\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_jfyof_935 {\n flex: 1;\n min-width: 0;\n overflow-wrap: anywhere;\n}\n\n._discoverDialog_jfyof_941 {\n width: min(var(--wb-len-560), calc(100vw - var(--wb-len-32)));\n}\n\n._discoverDialogBody_jfyof_945 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n._discoverSourceList_jfyof_951 {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n._discoverSourceRow_jfyof_959 {\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_jfyof_968 {\n margin: 0;\n padding: var(--wb-len-2) 0 var(--wb-len-10);\n list-style: none;\n}\n\n._discoverSourcePick_jfyof_974 {\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_jfyof_983 {\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_jfyof_991 {\n display: flex;\n flex: 1;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._discoverSourceHead_jfyof_999 {\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_jfyof_1007 {\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_jfyof_1017 {\n flex: none;\n}\n\n._discoverSourceLoading_jfyof_1021 {\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_jfyof_1031 {\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_jfyof_1031 svg {\n flex: none;\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._discoverSourceError_jfyof_1045 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-state-error-primary);\n overflow-wrap: anywhere;\n}\n\n._discoverSourceForm_jfyof_1051 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._discoverGrow_jfyof_1057 {\n flex: 1;\n min-width: 0;\n}\n\n._discoverField_jfyof_1062 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}\n\n._discoverFieldLabel_jfyof_1068 {\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-secondary);\n}\n\n._discoverConfirmHead_jfyof_1073 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-14);\n}\n\n._discoverSkeletonFill_jfyof_1079 {\n background: var(--dsw-alias-bg-skeleton);\n animation: _wb-skeleton_jfyof_1 var(--wb-dur-1-5) cubic-bezier(0.36, 0, 0.64, 1) infinite;\n}\n\n._discoverArtwork_jfyof_502._discoverSkeletonFill_jfyof_1079 {\n border-color: transparent;\n}\n\n._discoverSkeletonBar_jfyof_1088 {\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_jfyof_1095 {\n width: min(var(--wb-len-144), 60%);\n}\n\n._discoverSkeletonDesc_jfyof_1099 {\n width: min(var(--wb-len-280), 85%);\n}\n\n@keyframes _wb-skeleton_jfyof_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_jfyof_1079 {\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*/";
14771
15460
  function workbenchCss() {
14772
15461
  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}`;
14773
15462
  }