@dsh-workbench/core 0.1.9 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/dsh-workbench +23 -0
- package/client.js +609 -84
- package/cordis.patch.yml +11 -3
- package/dist/client/client.body.js +609 -84
- package/dist/client/index.js +610 -85
- package/dist/host/index.js +406 -276
- package/dist/types/app/client.d.ts +140 -6
- package/dist/types/app/layouts/rightbar/BoardEmpty.d.ts +2 -1
- package/dist/types/app/layouts/rightbar/Rightbar.d.ts +1 -0
- package/dist/types/app/layouts/rightbar/board-plan.d.ts +2 -0
- package/dist/types/app/layouts/sidebar/ProjectSwitcher.d.ts +2 -2
- package/dist/types/app/layouts/sidebar/Sidebar.d.ts +1 -1
- package/dist/types/app/layouts/sidebar/WorkspaceRenameDialog.d.ts +8 -0
- package/dist/types/app/layouts/sidebar/WorkspaceRowAction.d.ts +7 -0
- package/dist/types/app/layouts/sidebar/WorkspaceRowLabel.d.ts +8 -0
- package/dist/types/app/layouts/sidebar/WorkspaceSearchField.d.ts +9 -0
- package/dist/types/app/layouts/sidebar/__tests__/workspace-name.test.d.ts +1 -0
- package/dist/types/app/layouts/sidebar/workspace-items.d.ts +11 -0
- package/dist/types/app/layouts/sidebar/workspace-name.d.ts +16 -0
- package/dist/types/app/units/__tests__/registry.test.d.ts +1 -0
- package/dist/types/app/units/fixture-unit-mock.d.ts +3 -1
- package/dist/types/modules/panels/__tests__/approval.test.d.ts +1 -0
- package/dist/types/modules/panels/model/approval.d.ts +2 -0
- package/dist/types/shared/api/diy.d.ts +3 -0
- package/dist/types/shared/api/diy.test.d.ts +1 -0
- package/dist/types/shared/api/host/__tests__/approval-legacy.test.d.ts +1 -0
- package/dist/types/shared/api/host/approval-legacy.d.ts +2 -0
- package/dist/types/shared/api/host/diy.d.ts +3 -0
- package/dist/types/shared/api/host/diy.test.d.ts +1 -0
- package/dist/types/shared/api/host/mount-units.d.ts +13 -6
- package/dist/types/shared/hooks/mock-mode.d.ts +1 -0
- package/package.json +13 -5
- package/preset/diy.patch.yml +156 -0
- package/scripts/seed-profile.sh +116 -0
- package/skills/workbench-module-diy/BUILD.md +179 -0
- package/skills/workbench-module-diy/DESIGN.md +81 -0
- package/skills/workbench-module-diy/LINKAGE.md +113 -0
- package/skills/workbench-module-diy/PANEL.md +124 -0
- package/skills/workbench-module-diy/REVIEW.md +31 -0
- package/skills/workbench-module-diy/SKILL.md +54 -0
- package/skills/workbench-module-diy/STEPS.md +93 -0
- package/skills/workbench-module-diy/TOOLS.md +112 -0
package/dist/client/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Button, CodeBlock, DisclosureRow, IconCheckCircleFillRegular, IconChevronDownOutlineRegular, IconCodeOutlineRegular, IconEllipsisOutlineRegular, IconFlatListOutlineRegular, IconFolderCloseRegular, IconFolderOpenRegular, IconInfoOutlineRegular, IconNewChatOutlineRegular, IconPanelLeftOutlineRegular, IconPinOutlineRegular, IconPlusOutlineRegular, IconRefreshOutlineRegular, IconRightUpOutlineRegular, IconSettingsOutlineRegular, IconTrashOutlineRegular, IconWarningOutlineRegular, Menu, Modal, RiskConfirmation, StateDot, Switch, Tag, TextShimmer, Tooltip, useAnchoredPosition, useDismissOnOutsidePointer, writeClipboard } from "@deepseek-ai/dsh-client-ui-primitives";
|
|
1
|
+
import { Button, CodeBlock, DisclosureRow, IconCheckCircleFillRegular, IconCheckOutlineRegular, IconChevronDownOutlineRegular, IconCodeOutlineRegular, IconEditOutlineRegular, IconEllipsisOutlineRegular, IconFlatListOutlineRegular, IconFolderCloseRegular, IconFolderOpenRegular, IconInfoOutlineRegular, IconNewChatOutlineRegular, IconPanelLeftOutlineRegular, IconPinOutlineRegular, IconPlusOutlineRegular, IconRefreshOutlineRegular, IconRightUpOutlineRegular, IconSearchOutlineRegular, IconSettingsOutlineRegular, IconTrashOutlineRegular, IconWarningOutlineRegular, Menu, Modal, RiskConfirmation, StateDot, Switch, Tag, TextShimmer, Tooltip, useAnchoredPosition, useDismissOnOutsidePointer, writeClipboard } from "@deepseek-ai/dsh-client-ui-primitives";
|
|
2
2
|
//#region \0rolldown/runtime.js
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __exportAll = (all, no_symbols) => {
|
|
@@ -142,6 +142,14 @@ function blockerOfCapability(capability, t) {
|
|
|
142
142
|
}] : [],
|
|
143
143
|
...capability.command === void 0 || sourceUnknown ? [] : [copyAction(t, capability.command)]
|
|
144
144
|
];
|
|
145
|
+
if (capability.status === "failed") return {
|
|
146
|
+
id: "unit-mount-failed",
|
|
147
|
+
severity: "block",
|
|
148
|
+
title: t("env.unit.failed"),
|
|
149
|
+
hint: t("env.unit.failedHint"),
|
|
150
|
+
...capability.detail === void 0 ? {} : { detail: capability.detail },
|
|
151
|
+
actions: [retryAction(t)]
|
|
152
|
+
};
|
|
145
153
|
if (capability.status === "missing-plugin") return {
|
|
146
154
|
id: "unit-missing-plugin",
|
|
147
155
|
severity: "block",
|
|
@@ -478,6 +486,7 @@ async function apiPost(route, body) {
|
|
|
478
486
|
var react = __require("react");
|
|
479
487
|
var h = react.createElement;
|
|
480
488
|
var Fragment = react.Fragment;
|
|
489
|
+
var Component = react.Component;
|
|
481
490
|
var useState = react.useState;
|
|
482
491
|
var useEffect = react.useEffect;
|
|
483
492
|
var useLayoutEffect = react.useLayoutEffect;
|
|
@@ -520,6 +529,46 @@ function ActivityAction({ label, hint, icon, href, onClick, failed }) {
|
|
|
520
529
|
}));
|
|
521
530
|
}
|
|
522
531
|
//#endregion
|
|
532
|
+
//#region ../shared/dist/components/Note.js
|
|
533
|
+
function Note({ tone = "muted", as, children }) {
|
|
534
|
+
const className = tone === "problem" ? "wb-problem" : "wb-note";
|
|
535
|
+
return as === "span" ? h("span", { className }, children) : h("p", { className }, children);
|
|
536
|
+
}
|
|
537
|
+
//#endregion
|
|
538
|
+
//#region ../shared/dist/components/CardBoundary.js
|
|
539
|
+
function errorReasonOf(error) {
|
|
540
|
+
if (error instanceof Error) return error.message;
|
|
541
|
+
return typeof error === "string" ? error : JSON.stringify(error) ?? String(error);
|
|
542
|
+
}
|
|
543
|
+
var CardBoundary = class extends Component {
|
|
544
|
+
state = { reason: null };
|
|
545
|
+
static getDerivedStateFromError(error) {
|
|
546
|
+
return { reason: errorReasonOf(error) };
|
|
547
|
+
}
|
|
548
|
+
componentDidCatch(error) {
|
|
549
|
+
console.error(`[dsh-workbench] 模块 ${this.props.unit} 渲染失败:${errorReasonOf(error)}`, error);
|
|
550
|
+
}
|
|
551
|
+
componentDidUpdate(previous) {
|
|
552
|
+
if (previous.resetKey !== this.props.resetKey && this.state.reason !== null) this.setState({ reason: null });
|
|
553
|
+
}
|
|
554
|
+
retry = () => {
|
|
555
|
+
this.setState({ reason: null });
|
|
556
|
+
};
|
|
557
|
+
render() {
|
|
558
|
+
const { reason } = this.state;
|
|
559
|
+
if (reason === null) return this.props.children;
|
|
560
|
+
return h(Note, { tone: "problem" }, h("span", null, this.props.t("panels.cardBroken", {
|
|
561
|
+
unit: this.props.unit,
|
|
562
|
+
reason
|
|
563
|
+
})), " ", h(Button, {
|
|
564
|
+
type: "button",
|
|
565
|
+
variant: "outline",
|
|
566
|
+
size: "sm",
|
|
567
|
+
onClick: this.retry
|
|
568
|
+
}, this.props.t("panels.cardRetry")));
|
|
569
|
+
}
|
|
570
|
+
};
|
|
571
|
+
//#endregion
|
|
523
572
|
//#region ../shared/dist/components/ApprovalDetail.js
|
|
524
573
|
function callOf(snapshot, callId) {
|
|
525
574
|
if (callId === void 0) return void 0;
|
|
@@ -550,10 +599,17 @@ function ApprovalDetail(props) {
|
|
|
550
599
|
};
|
|
551
600
|
const command = typeof args.command === "string" ? args.command : "";
|
|
552
601
|
const owner = (props.units ?? []).find((face) => face.approval?.tools.includes(input.tool) === true);
|
|
553
|
-
if (owner?.approval !== void 0)
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
602
|
+
if (owner?.approval !== void 0) {
|
|
603
|
+
const Render = owner.approval.render;
|
|
604
|
+
return h(CardBoundary, {
|
|
605
|
+
unit: owner.manifest.id,
|
|
606
|
+
resetKey: props.callId ?? "",
|
|
607
|
+
t
|
|
608
|
+
}, h(Render, {
|
|
609
|
+
input,
|
|
610
|
+
t
|
|
611
|
+
}));
|
|
612
|
+
}
|
|
557
613
|
if (command === "") return null;
|
|
558
614
|
return h(CodeBlock, {
|
|
559
615
|
code: command,
|
|
@@ -716,12 +772,6 @@ function MockStrip({ mocks, index, onPick, note, real }) {
|
|
|
716
772
|
}, mock.label)));
|
|
717
773
|
}
|
|
718
774
|
//#endregion
|
|
719
|
-
//#region ../shared/dist/components/Note.js
|
|
720
|
-
function Note({ tone = "muted", as, children }) {
|
|
721
|
-
const className = tone === "problem" ? "wb-problem" : "wb-note";
|
|
722
|
-
return as === "span" ? h("span", { className }, children) : h("p", { className }, children);
|
|
723
|
-
}
|
|
724
|
-
//#endregion
|
|
725
775
|
//#region ../shared/dist/components/ResourceStates.js
|
|
726
776
|
function SkeletonRows({ rows = 4 }) {
|
|
727
777
|
return h("div", {
|
|
@@ -932,6 +982,20 @@ var en = {
|
|
|
932
982
|
"project.none": "No project",
|
|
933
983
|
"project.empty": "No projects yet. Use “Add project” below.",
|
|
934
984
|
"project.add": "Add project…",
|
|
985
|
+
"project.search.label": "Search workspaces",
|
|
986
|
+
"project.search.placeholder": "Search workspaces (folder / name / path)",
|
|
987
|
+
"project.search.empty": "No workspace matches “{query}”.",
|
|
988
|
+
"project.rename.row": "Rename “{name}”",
|
|
989
|
+
"project.rename.current": "Give this workspace a display name…",
|
|
990
|
+
"project.rename.title": "Give “{name}” a display name",
|
|
991
|
+
"project.rename.description": "Shown after the folder name. It renames the workspace itself.",
|
|
992
|
+
"project.rename.field": "Display name",
|
|
993
|
+
"project.rename.placeholder": "e.g. Workbench shell",
|
|
994
|
+
"project.rename.hint": "Empty = folder name only",
|
|
995
|
+
"project.rename.save": "Save",
|
|
996
|
+
"project.rename.saving": "Saving…",
|
|
997
|
+
"project.rename.cancel": "Cancel",
|
|
998
|
+
"project.rename.failed": "Rename failed. Try again.",
|
|
935
999
|
"session.new": "New session",
|
|
936
1000
|
"session.new.label": "Start a session in the current project",
|
|
937
1001
|
"session.empty": "No sessions in this project yet.",
|
|
@@ -955,11 +1019,13 @@ var en = {
|
|
|
955
1019
|
"panels.enabled": "enabled in this project",
|
|
956
1020
|
"panels.disabled": "not enabled in this project",
|
|
957
1021
|
"panels.choose": "Choose modules",
|
|
1022
|
+
"panels.buildModule": "Build a module",
|
|
958
1023
|
"panels.failed": "Could not save the change. Try again.",
|
|
959
1024
|
"panels.hintEffect": "Disabling = the agent cannot reach that data",
|
|
960
1025
|
"panels.dragHint": "Drag to reorder",
|
|
961
1026
|
"panels.unknownStep": "No suite provides this view",
|
|
962
1027
|
"panels.labelWithHint": "{label} ({hint})",
|
|
1028
|
+
"panels.dep.failed": "⚠ failed to start",
|
|
963
1029
|
"panels.dep.missingPlugin": "⚠ not ready yet",
|
|
964
1030
|
"panels.dep.missingCommands": "⚠ needs an update",
|
|
965
1031
|
"panels.dep.unchecked": "⚠ cannot check",
|
|
@@ -1153,6 +1219,8 @@ var en = {
|
|
|
1153
1219
|
"blocker.exec.hint": "Make sure opencli is installed and on PATH (which opencli).",
|
|
1154
1220
|
"blocker.unknown.title": "Something went wrong",
|
|
1155
1221
|
"panels.reading": "Reading the panel setup…",
|
|
1222
|
+
"panels.cardBroken": "This module will not render: {unit} ({reason})",
|
|
1223
|
+
"panels.cardRetry": "Retry",
|
|
1156
1224
|
"panels.empty": "No modules on the panel yet",
|
|
1157
1225
|
"panels.emptyHint": "You can also just tell the agent: “add a module to the panel”.",
|
|
1158
1226
|
"env.title": "Preparing the workbench",
|
|
@@ -1191,6 +1259,8 @@ var en = {
|
|
|
1191
1259
|
"env.step.warm": "Warming up site sessions",
|
|
1192
1260
|
"env.warm.done": "{n} site(s) warmed up",
|
|
1193
1261
|
"env.warm.short": "Not warmed this time — harmless; the panel heals on first read",
|
|
1262
|
+
"env.unit.failed": "This module cannot start",
|
|
1263
|
+
"env.unit.failedHint": "It failed while assembling itself; other modules are unaffected.",
|
|
1194
1264
|
"env.unit.missingPlugin": "This module is not ready yet",
|
|
1195
1265
|
"env.unit.missingCommandsHint": "Updating it should fix this.",
|
|
1196
1266
|
"env.unit.unchecked": "Cannot check: no shell channel",
|
|
@@ -1224,6 +1294,20 @@ var zh = {
|
|
|
1224
1294
|
"project.none": "未选择项目",
|
|
1225
1295
|
"project.empty": "还没有项目。用下面的「添加项目」选一个目录。",
|
|
1226
1296
|
"project.add": "添加项目…",
|
|
1297
|
+
"project.search.label": "搜索工作区",
|
|
1298
|
+
"project.search.placeholder": "搜索工作区(目录名 / 中文名 / 路径)",
|
|
1299
|
+
"project.search.empty": "没有匹配「{query}」的工作区。",
|
|
1300
|
+
"project.rename.row": "改「{name}」的中文名",
|
|
1301
|
+
"project.rename.current": "改当前工作区的中文名…",
|
|
1302
|
+
"project.rename.title": "给「{name}」配一个中文名",
|
|
1303
|
+
"project.rename.description": "显示在目录名后面。改的是工作区本身的名字。",
|
|
1304
|
+
"project.rename.field": "中文名",
|
|
1305
|
+
"project.rename.placeholder": "例如:工作台外壳",
|
|
1306
|
+
"project.rename.hint": "留空 = 只显示目录名",
|
|
1307
|
+
"project.rename.save": "保存",
|
|
1308
|
+
"project.rename.saving": "保存中…",
|
|
1309
|
+
"project.rename.cancel": "取消",
|
|
1310
|
+
"project.rename.failed": "改名失败了,再试一次。",
|
|
1227
1311
|
"session.new": "新会话",
|
|
1228
1312
|
"session.new.label": "在当前项目新建会话",
|
|
1229
1313
|
"session.empty": "这个项目还没有会话。",
|
|
@@ -1247,11 +1331,13 @@ var zh = {
|
|
|
1247
1331
|
"panels.enabled": "这个项目已启用",
|
|
1248
1332
|
"panels.disabled": "这个项目未启用",
|
|
1249
1333
|
"panels.choose": "选择模块",
|
|
1334
|
+
"panels.buildModule": "造一个模块",
|
|
1250
1335
|
"panels.failed": "改配置失败了,再试一次。",
|
|
1251
1336
|
"panels.hintEffect": "停用 = agent 拿不到相关数据",
|
|
1252
1337
|
"panels.dragHint": "拖动调整顺序",
|
|
1253
1338
|
"panels.unknownStep": "这一层没有套件提供",
|
|
1254
1339
|
"panels.labelWithHint": "{label}({hint})",
|
|
1340
|
+
"panels.dep.failed": "⚠ 起不来",
|
|
1255
1341
|
"panels.dep.missingPlugin": "⚠ 还没装好",
|
|
1256
1342
|
"panels.dep.missingCommands": "⚠ 需要更新",
|
|
1257
1343
|
"panels.dep.unchecked": "⚠ 检测不了",
|
|
@@ -1445,6 +1531,8 @@ var zh = {
|
|
|
1445
1531
|
"blocker.exec.hint": "确认 opencli 已安装且在 PATH 里(which opencli)。",
|
|
1446
1532
|
"blocker.unknown.title": "出了点问题",
|
|
1447
1533
|
"panels.reading": "正在读取面板配置…",
|
|
1534
|
+
"panels.cardBroken": "这个模块起不来:{unit}({reason})",
|
|
1535
|
+
"panels.cardRetry": "重试",
|
|
1448
1536
|
"panels.empty": "面板里还没有模块",
|
|
1449
1537
|
"panels.emptyHint": "也可以直接跟 agent 说:「把某个模块加到面板」。",
|
|
1450
1538
|
"env.title": "准备工作台",
|
|
@@ -1483,6 +1571,8 @@ var zh = {
|
|
|
1483
1571
|
"env.step.warm": "预热站点登录态",
|
|
1484
1572
|
"env.warm.done": "已预热 {n} 个站点",
|
|
1485
1573
|
"env.warm.short": "这次没热上 —— 不影响用,面板第一次读取会自己补",
|
|
1574
|
+
"env.unit.failed": "这个模块起不来",
|
|
1575
|
+
"env.unit.failedHint": "它自己装配时报了错,别的模块不受影响。",
|
|
1486
1576
|
"env.unit.missingPlugin": "这个模块还没装好",
|
|
1487
1577
|
"env.unit.missingCommandsHint": "更新之后就能用了。",
|
|
1488
1578
|
"env.unit.unchecked": "检测不了:拿不到执行通道",
|
|
@@ -1541,6 +1631,31 @@ function mergeMessages(base, contributions) {
|
|
|
1541
1631
|
en
|
|
1542
1632
|
};
|
|
1543
1633
|
}
|
|
1634
|
+
function reasonOf(error) {
|
|
1635
|
+
if (error instanceof Error) return error.message;
|
|
1636
|
+
return typeof error === "string" ? error : String(error);
|
|
1637
|
+
}
|
|
1638
|
+
function mergeMessagesSkipping(base, contributions) {
|
|
1639
|
+
let dictionaries = base;
|
|
1640
|
+
const accepted = [];
|
|
1641
|
+
const problems = [];
|
|
1642
|
+
for (const item of contributions) {
|
|
1643
|
+
if (item.messages === void 0) continue;
|
|
1644
|
+
try {
|
|
1645
|
+
dictionaries = mergeMessages(base, [...accepted, item]);
|
|
1646
|
+
accepted.push(item);
|
|
1647
|
+
} catch (error) {
|
|
1648
|
+
problems.push({
|
|
1649
|
+
unit: item.unit,
|
|
1650
|
+
reason: reasonOf(error)
|
|
1651
|
+
});
|
|
1652
|
+
}
|
|
1653
|
+
}
|
|
1654
|
+
return {
|
|
1655
|
+
dictionaries,
|
|
1656
|
+
problems
|
|
1657
|
+
};
|
|
1658
|
+
}
|
|
1544
1659
|
//#endregion
|
|
1545
1660
|
//#region ../shared/dist/lib/blocker-action.js
|
|
1546
1661
|
function blockerPending(busy, running) {
|
|
@@ -1616,9 +1731,11 @@ var dist_exports = /* @__PURE__ */ __exportAll({
|
|
|
1616
1731
|
CODING_ISSUES_SERVICE: () => CODING_ISSUES_SERVICE,
|
|
1617
1732
|
CONTEXT_MARKER_NAME: () => CONTEXT_MARKER_NAME,
|
|
1618
1733
|
Card: () => Card,
|
|
1734
|
+
CardBoundary: () => CardBoundary,
|
|
1619
1735
|
CardHead: () => CardHead,
|
|
1620
1736
|
CenteredState: () => CenteredState,
|
|
1621
1737
|
ChoiceGroup: () => ChoiceGroup,
|
|
1738
|
+
Component: () => Component,
|
|
1622
1739
|
DEFAULT_WORKSPACE_TITLE: () => DEFAULT_WORKSPACE_TITLE,
|
|
1623
1740
|
EVENTS_PATH: () => EVENTS_PATH,
|
|
1624
1741
|
EmptyState: () => EmptyState,
|
|
@@ -1678,6 +1795,7 @@ var dist_exports = /* @__PURE__ */ __exportAll({
|
|
|
1678
1795
|
dictionaries: () => dictionaries,
|
|
1679
1796
|
en: () => en,
|
|
1680
1797
|
encodeRef: () => encodeRef,
|
|
1798
|
+
errorReasonOf: () => errorReasonOf,
|
|
1681
1799
|
excerpt: () => excerpt,
|
|
1682
1800
|
factOfRoute: () => factOfRoute,
|
|
1683
1801
|
gateOf: () => gateOf,
|
|
@@ -1689,6 +1807,7 @@ var dist_exports = /* @__PURE__ */ __exportAll({
|
|
|
1689
1807
|
longTaskRunsOf: () => longTaskRunsOf,
|
|
1690
1808
|
markerBody: () => markerBody,
|
|
1691
1809
|
mergeMessages: () => mergeMessages,
|
|
1810
|
+
mergeMessagesSkipping: () => mergeMessagesSkipping,
|
|
1692
1811
|
parseFactFrame: () => parseFactFrame,
|
|
1693
1812
|
parseJsonLoose: () => parseJsonLoose,
|
|
1694
1813
|
parseLocalTimestamp: () => parseLocalTimestamp,
|
|
@@ -1848,10 +1967,10 @@ function setProbe(next) {
|
|
|
1848
1967
|
}
|
|
1849
1968
|
var CAPABILITY_FACT = "capability";
|
|
1850
1969
|
var shared = null;
|
|
1851
|
-
var current = null;
|
|
1970
|
+
var current$1 = null;
|
|
1852
1971
|
var listeners$2 = /* @__PURE__ */ new Set();
|
|
1853
1972
|
function capabilityValue() {
|
|
1854
|
-
return current;
|
|
1973
|
+
return current$1;
|
|
1855
1974
|
}
|
|
1856
1975
|
function subscribeCapabilities(listener) {
|
|
1857
1976
|
listeners$2.add(listener);
|
|
@@ -1865,8 +1984,8 @@ function setCapabilities(next, rechecked = false) {
|
|
|
1865
1984
|
...probe$2,
|
|
1866
1985
|
checkedAt: Date.now()
|
|
1867
1986
|
});
|
|
1868
|
-
if (next === current) return;
|
|
1869
|
-
current = next;
|
|
1987
|
+
if (next === current$1) return;
|
|
1988
|
+
current$1 = next;
|
|
1870
1989
|
for (const listener of [...listeners$2]) listener();
|
|
1871
1990
|
}
|
|
1872
1991
|
function beginProbe() {
|
|
@@ -1975,10 +2094,16 @@ function useCapabilityMap(refreshToken) {
|
|
|
1975
2094
|
}
|
|
1976
2095
|
//#endregion
|
|
1977
2096
|
//#region src/shared/hooks/mock-mode.ts
|
|
1978
|
-
var mock_mode_exports = /* @__PURE__ */ __exportAll({
|
|
2097
|
+
var mock_mode_exports = /* @__PURE__ */ __exportAll({
|
|
2098
|
+
crashModeOn: () => crashModeOn,
|
|
2099
|
+
mockModeOn: () => mockModeOn
|
|
2100
|
+
});
|
|
1979
2101
|
function mockModeOn(search) {
|
|
1980
2102
|
return /(?:^|[?&])(?:wbMock|wbMarketMock)=1(?:&|$)/.test(search);
|
|
1981
2103
|
}
|
|
2104
|
+
function crashModeOn(search) {
|
|
2105
|
+
return /(?:^|[?&])wbCrash=1(?:&|$)/.test(search);
|
|
2106
|
+
}
|
|
1982
2107
|
//#endregion
|
|
1983
2108
|
//#region src/shared/hooks/use-fixture-pick.ts
|
|
1984
2109
|
var use_fixture_pick_exports = /* @__PURE__ */ __exportAll({ useFixturePick: () => useFixturePick });
|
|
@@ -2572,7 +2697,11 @@ function createClientUnitRegistry() {
|
|
|
2572
2697
|
let manifestsCache;
|
|
2573
2698
|
function notify() {
|
|
2574
2699
|
revision += 1;
|
|
2575
|
-
for (const listener of listeners)
|
|
2700
|
+
for (const listener of [...listeners]) try {
|
|
2701
|
+
listener();
|
|
2702
|
+
} catch (error) {
|
|
2703
|
+
console.warn(`[dsh-workbench] 套件注册的订阅者报错(不影响其它订阅者与这次注册):${String(error)}`);
|
|
2704
|
+
}
|
|
2576
2705
|
}
|
|
2577
2706
|
return {
|
|
2578
2707
|
register(face) {
|
|
@@ -2607,6 +2736,7 @@ function createClientUnitRegistry() {
|
|
|
2607
2736
|
//#endregion
|
|
2608
2737
|
//#region src/app/units/fixture-unit-mock.tsx
|
|
2609
2738
|
var FIXTURE_UNIT_ID = "wb-fixture";
|
|
2739
|
+
var CRASH_UNIT_ID = "wb-fixture-crash";
|
|
2610
2740
|
var KEY = {
|
|
2611
2741
|
cardTitle: `${FIXTURE_UNIT_ID}.cardTitle`,
|
|
2612
2742
|
cardMeta: `${FIXTURE_UNIT_ID}.cardMeta`,
|
|
@@ -2660,6 +2790,39 @@ var FIXTURE_FACE = {
|
|
|
2660
2790
|
messages,
|
|
2661
2791
|
card: FixtureCard
|
|
2662
2792
|
};
|
|
2793
|
+
var CRASH_KEY = {
|
|
2794
|
+
cardTitle: `${CRASH_UNIT_ID}.cardTitle`,
|
|
2795
|
+
cardMeta: `${CRASH_UNIT_ID}.cardMeta`
|
|
2796
|
+
};
|
|
2797
|
+
var crashMessages = {
|
|
2798
|
+
zh: {
|
|
2799
|
+
[CRASH_KEY.cardTitle]: "崩溃的卡片",
|
|
2800
|
+
[CRASH_KEY.cardMeta]: "夹具:渲染时抛错"
|
|
2801
|
+
},
|
|
2802
|
+
en: {
|
|
2803
|
+
[CRASH_KEY.cardTitle]: "Crashing card",
|
|
2804
|
+
[CRASH_KEY.cardMeta]: "Fixture: throws while rendering"
|
|
2805
|
+
}
|
|
2806
|
+
};
|
|
2807
|
+
var crashManifest = {
|
|
2808
|
+
id: CRASH_UNIT_ID,
|
|
2809
|
+
kind: "board",
|
|
2810
|
+
card: {
|
|
2811
|
+
titleKey: CRASH_KEY.cardTitle,
|
|
2812
|
+
order: 899,
|
|
2813
|
+
enabledByDefault: true
|
|
2814
|
+
},
|
|
2815
|
+
tools: [],
|
|
2816
|
+
host: { inject: [] }
|
|
2817
|
+
};
|
|
2818
|
+
function CrashingCard() {
|
|
2819
|
+
throw new Error("夹具:这张卡片按 wbCrash=1 故意渲染失败(守「一张卡片崩溃不带走面板」)");
|
|
2820
|
+
}
|
|
2821
|
+
var CRASH_FACE = {
|
|
2822
|
+
manifest: crashManifest,
|
|
2823
|
+
messages: crashMessages,
|
|
2824
|
+
card: CrashingCard
|
|
2825
|
+
};
|
|
2663
2826
|
var SAMPLE_ROSTER = [manifest];
|
|
2664
2827
|
function hasCard(roster) {
|
|
2665
2828
|
return roster.some((item) => item.card !== null);
|
|
@@ -2667,8 +2830,9 @@ function hasCard(roster) {
|
|
|
2667
2830
|
function fixtureRoster(roster) {
|
|
2668
2831
|
return hasCard(roster) ? roster : SAMPLE_ROSTER;
|
|
2669
2832
|
}
|
|
2670
|
-
function fixtureSeed(roster, all) {
|
|
2671
|
-
|
|
2833
|
+
function fixtureSeed(roster, all, crash = false) {
|
|
2834
|
+
const base = hasCard(roster) ? all : [toBoardModule(FIXTURE_FACE)];
|
|
2835
|
+
return crash ? [toBoardModule(CRASH_FACE), ...base] : base;
|
|
2672
2836
|
}
|
|
2673
2837
|
//#endregion
|
|
2674
2838
|
//#region src/app/layouts/rightbar/market-rows.ts
|
|
@@ -4414,6 +4578,30 @@ function registerMarketPanel(ctx, units) {
|
|
|
4414
4578
|
}, MarketPanel));
|
|
4415
4579
|
}
|
|
4416
4580
|
//#endregion
|
|
4581
|
+
//#region src/app/layouts/project-selection.ts
|
|
4582
|
+
var listeners = /* @__PURE__ */ new Set();
|
|
4583
|
+
function selectedProjectId() {
|
|
4584
|
+
const stored = readText(STORAGE_KEY_PROJECT);
|
|
4585
|
+
return stored === "" ? null : stored;
|
|
4586
|
+
}
|
|
4587
|
+
function selectProject(workspaceId) {
|
|
4588
|
+
writeText(STORAGE_KEY_PROJECT, workspaceId);
|
|
4589
|
+
for (const listener of [...listeners]) try {
|
|
4590
|
+
listener();
|
|
4591
|
+
} catch {}
|
|
4592
|
+
}
|
|
4593
|
+
function subscribeProject(listener) {
|
|
4594
|
+
listeners.add(listener);
|
|
4595
|
+
return () => {
|
|
4596
|
+
listeners.delete(listener);
|
|
4597
|
+
};
|
|
4598
|
+
}
|
|
4599
|
+
//#endregion
|
|
4600
|
+
//#region src/shared/api/diy.ts
|
|
4601
|
+
var DIY_PRESET_ID = "workbench-diy";
|
|
4602
|
+
var WORKSHOP_TITLE = "工作台DIY";
|
|
4603
|
+
var WORKSHOP_PAST_TITLES = ["DIY 工坊", "工作台自带 · DIY 模块住这儿"];
|
|
4604
|
+
//#endregion
|
|
4417
4605
|
//#region src/app/units/index.ts
|
|
4418
4606
|
var CLIENT_UNITS = [];
|
|
4419
4607
|
function assembleClientUnits(registry) {
|
|
@@ -5275,7 +5463,7 @@ function Breadcrumbs({ trail, onGoTo, titleKeyOf, t }) {
|
|
|
5275
5463
|
}
|
|
5276
5464
|
//#endregion
|
|
5277
5465
|
//#region src/app/layouts/rightbar/BoardEmpty.tsx
|
|
5278
|
-
function BoardEmpty({ t, onOpenModules, onOpenMarket }) {
|
|
5466
|
+
function BoardEmpty({ t, onBuildModule, onOpenModules, onOpenMarket }) {
|
|
5279
5467
|
return /* @__PURE__ */ h(CenteredState, {
|
|
5280
5468
|
icon: /* @__PURE__ */ h(IconBrandMark, { size: 32 }),
|
|
5281
5469
|
title: t("panels.empty"),
|
|
@@ -5284,6 +5472,11 @@ function BoardEmpty({ t, onOpenModules, onOpenMarket }) {
|
|
|
5284
5472
|
type: "button",
|
|
5285
5473
|
size: "sm",
|
|
5286
5474
|
variant: "primary",
|
|
5475
|
+
onClick: onBuildModule
|
|
5476
|
+
}, t("panels.buildModule")), /* @__PURE__ */ h(Button, {
|
|
5477
|
+
type: "button",
|
|
5478
|
+
size: "sm",
|
|
5479
|
+
variant: "toolbar",
|
|
5287
5480
|
onClick: onOpenModules
|
|
5288
5481
|
}, t("panels.choose")), /* @__PURE__ */ h(Button, {
|
|
5289
5482
|
type: "button",
|
|
@@ -5323,7 +5516,7 @@ var ModulesPage_module_default = {
|
|
|
5323
5516
|
};
|
|
5324
5517
|
//#endregion
|
|
5325
5518
|
//#region src/app/layouts/rightbar/panel-mock.ts
|
|
5326
|
-
function row(id, titleKey, shown) {
|
|
5519
|
+
function row$1(id, titleKey, shown) {
|
|
5327
5520
|
return {
|
|
5328
5521
|
id,
|
|
5329
5522
|
titleKey,
|
|
@@ -5352,10 +5545,10 @@ function buildPanelMocks(roster) {
|
|
|
5352
5545
|
}];
|
|
5353
5546
|
const titleKey = found.card?.titleKey ?? found.id;
|
|
5354
5547
|
const id = found.id;
|
|
5355
|
-
const on = row(id, titleKey, true);
|
|
5356
|
-
const off = row(id, titleKey, false);
|
|
5357
|
-
const twin = row(`${id}-b`, titleKey, true);
|
|
5358
|
-
const third = row(`${id}-c`, titleKey, false);
|
|
5548
|
+
const on = row$1(id, titleKey, true);
|
|
5549
|
+
const off = row$1(id, titleKey, false);
|
|
5550
|
+
const twin = row$1(`${id}-b`, titleKey, true);
|
|
5551
|
+
const third = row$1(`${id}-c`, titleKey, false);
|
|
5359
5552
|
return [
|
|
5360
5553
|
{
|
|
5361
5554
|
id: "one",
|
|
@@ -5437,7 +5630,7 @@ function buildPanelMocks(roster) {
|
|
|
5437
5630
|
{
|
|
5438
5631
|
id: "long",
|
|
5439
5632
|
label: "超长模块名",
|
|
5440
|
-
units: [row(id, "一个名字特别特别长的模块用来验证省略号会不会把开关挤下去", true)],
|
|
5633
|
+
units: [row$1(id, "一个名字特别特别长的模块用来验证省略号会不会把开关挤下去", true)],
|
|
5441
5634
|
capabilities: probe(id, "ok"),
|
|
5442
5635
|
expect: {
|
|
5443
5636
|
rows: 1,
|
|
@@ -5503,13 +5696,14 @@ function buildPanelMocks(roster) {
|
|
|
5503
5696
|
function available(capability) {
|
|
5504
5697
|
if (capability === void 0) return true;
|
|
5505
5698
|
if (capability.released === true) return false;
|
|
5506
|
-
return capability.status === "ok" || capability.status === "unchecked";
|
|
5699
|
+
return capability.status === "ok" || capability.status === "unchecked" || capability.status === "failed";
|
|
5507
5700
|
}
|
|
5508
5701
|
function selectPanelUnits(units, capabilities) {
|
|
5509
5702
|
return units.filter((unit) => available(capabilities?.[unit.id]));
|
|
5510
5703
|
}
|
|
5511
5704
|
function panelBadgeKey(capability) {
|
|
5512
5705
|
if (capability === void 0 || capability.status === "ok") return void 0;
|
|
5706
|
+
if (capability.status === "failed") return "panels.dep.failed";
|
|
5513
5707
|
if (capability.status === "missing-plugin") return "panels.dep.missingPlugin";
|
|
5514
5708
|
if (capability.status === "missing-commands") return "panels.dep.missingCommands";
|
|
5515
5709
|
return "panels.dep.unchecked";
|
|
@@ -5768,6 +5962,16 @@ function buildBoardMocks(roster) {
|
|
|
5768
5962
|
cards: 8,
|
|
5769
5963
|
empty: false
|
|
5770
5964
|
}
|
|
5965
|
+
},
|
|
5966
|
+
{
|
|
5967
|
+
id: "crash",
|
|
5968
|
+
label: "坏卡 + 好卡",
|
|
5969
|
+
note: "一张渲染必炸的卡 + 你装的模块(配 ?wbCrash=1 才摆得出来):要看到坏的那张只剩一句\"这个模块起不来\",别的卡与面板壳都还在。",
|
|
5970
|
+
shape: { kind: "all" },
|
|
5971
|
+
expect: {
|
|
5972
|
+
cards: 1,
|
|
5973
|
+
empty: false
|
|
5974
|
+
}
|
|
5771
5975
|
}
|
|
5772
5976
|
],
|
|
5773
5977
|
EMPTY,
|
|
@@ -5812,6 +6016,15 @@ function planBoard(shape, real, all) {
|
|
|
5812
6016
|
reading: true,
|
|
5813
6017
|
repeated: false
|
|
5814
6018
|
};
|
|
6019
|
+
if (shape.kind === "all") return {
|
|
6020
|
+
modules: all.map((module) => ({
|
|
6021
|
+
key: module.id,
|
|
6022
|
+
module
|
|
6023
|
+
})),
|
|
6024
|
+
empty: false,
|
|
6025
|
+
reading: false,
|
|
6026
|
+
repeated: all.length > 1
|
|
6027
|
+
};
|
|
5815
6028
|
const seed = all[0];
|
|
5816
6029
|
const modules = seed === void 0 ? [] : Array.from({ length: Math.max(0, shape.count) }, (_unused, at) => ({
|
|
5817
6030
|
key: `${seed.id}#${at}`,
|
|
@@ -5958,25 +6171,6 @@ function createSuiteWorld(input) {
|
|
|
5958
6171
|
};
|
|
5959
6172
|
}
|
|
5960
6173
|
//#endregion
|
|
5961
|
-
//#region src/app/layouts/project-selection.ts
|
|
5962
|
-
var listeners = /* @__PURE__ */ new Set();
|
|
5963
|
-
function selectedProjectId() {
|
|
5964
|
-
const stored = readText(STORAGE_KEY_PROJECT);
|
|
5965
|
-
return stored === "" ? null : stored;
|
|
5966
|
-
}
|
|
5967
|
-
function selectProject(workspaceId) {
|
|
5968
|
-
writeText(STORAGE_KEY_PROJECT, workspaceId);
|
|
5969
|
-
for (const listener of [...listeners]) try {
|
|
5970
|
-
listener();
|
|
5971
|
-
} catch {}
|
|
5972
|
-
}
|
|
5973
|
-
function subscribeProject(listener) {
|
|
5974
|
-
listeners.add(listener);
|
|
5975
|
-
return () => {
|
|
5976
|
-
listeners.delete(listener);
|
|
5977
|
-
};
|
|
5978
|
-
}
|
|
5979
|
-
//#endregion
|
|
5980
6174
|
//#region src/app/layouts/rightbar/use-panels.ts
|
|
5981
6175
|
function shouldDropPanels(workspace, previous) {
|
|
5982
6176
|
return workspace !== previous;
|
|
@@ -6022,6 +6216,9 @@ function useBoardWorkspace(workspaces, sessions) {
|
|
|
6022
6216
|
var Rightbar_module_default = { panel: "_panel_1oyh4_1" };
|
|
6023
6217
|
//#endregion
|
|
6024
6218
|
//#region src/app/layouts/rightbar/Rightbar.tsx
|
|
6219
|
+
function workspacePathOf(world) {
|
|
6220
|
+
return world.current.workspace?.path ?? "";
|
|
6221
|
+
}
|
|
6025
6222
|
function ModuleHost({ module, step, panelToken, onPanelRefresh, onSummary, ...rest }) {
|
|
6026
6223
|
const [ownToken, setOwnToken] = useState(0);
|
|
6027
6224
|
return /* @__PURE__ */ h(step === void 0 ? module.View : module.steps?.[step]?.View ?? module.View, {
|
|
@@ -6065,15 +6262,20 @@ function PanelHeader({ t, trail, onGoTo, titleKeyOf, refreshing, at, refreshEnab
|
|
|
6065
6262
|
onClick: onCollapse
|
|
6066
6263
|
})))));
|
|
6067
6264
|
}
|
|
6068
|
-
function BoardContent({ top, plan, world, board, panelToken, onPanelRefresh, onNavigate, onOpenMarket, onSummary, onOpenModules, t }) {
|
|
6265
|
+
function BoardContent({ top, plan, world, board, panelToken, onPanelRefresh, onNavigate, onOpenMarket, onSummary, onOpenModules, buildModule, t }) {
|
|
6069
6266
|
if (top.kind !== "board") {
|
|
6070
6267
|
const owner = board.stepOwner(top.kind);
|
|
6071
6268
|
if (owner === void 0) return /* @__PURE__ */ h(CenteredState, {
|
|
6072
6269
|
icon: /* @__PURE__ */ h(IconBrandMark, { size: 32 }),
|
|
6073
6270
|
title: t("panels.unknownStep")
|
|
6074
6271
|
});
|
|
6075
|
-
|
|
6076
|
-
|
|
6272
|
+
const key = `${owner.id}:${top.kind}`;
|
|
6273
|
+
return /* @__PURE__ */ h(CardBoundary, {
|
|
6274
|
+
key,
|
|
6275
|
+
unit: owner.id,
|
|
6276
|
+
resetKey: `${key}:${panelToken}:${workspacePathOf(world)}`,
|
|
6277
|
+
t
|
|
6278
|
+
}, /* @__PURE__ */ h(ModuleHost, {
|
|
6077
6279
|
module: owner,
|
|
6078
6280
|
step: top.kind,
|
|
6079
6281
|
world,
|
|
@@ -6083,17 +6285,22 @@ function BoardContent({ top, plan, world, board, panelToken, onPanelRefresh, onN
|
|
|
6083
6285
|
onOpenMarket,
|
|
6084
6286
|
onSummary,
|
|
6085
6287
|
t
|
|
6086
|
-
});
|
|
6288
|
+
}));
|
|
6087
6289
|
}
|
|
6088
6290
|
return /* @__PURE__ */ h(Fragment, null, plan.reading ? /* @__PURE__ */ h(CenteredState, {
|
|
6089
6291
|
icon: null,
|
|
6090
6292
|
title: /* @__PURE__ */ h(TextShimmer, { active: true }, t("panels.reading"))
|
|
6091
6293
|
}) : null, plan.empty ? /* @__PURE__ */ h(BoardEmpty, {
|
|
6092
6294
|
t,
|
|
6295
|
+
onBuildModule: buildModule,
|
|
6093
6296
|
onOpenModules,
|
|
6094
6297
|
onOpenMarket
|
|
6095
|
-
}) : null, plan.modules.map(({ key, module }) => /* @__PURE__ */ h(
|
|
6298
|
+
}) : null, plan.modules.map(({ key, module }) => /* @__PURE__ */ h(CardBoundary, {
|
|
6096
6299
|
key,
|
|
6300
|
+
unit: module.id,
|
|
6301
|
+
resetKey: `${key}:${panelToken}:${workspacePathOf(world)}`,
|
|
6302
|
+
t
|
|
6303
|
+
}, /* @__PURE__ */ h(ModuleHost, {
|
|
6097
6304
|
module,
|
|
6098
6305
|
world,
|
|
6099
6306
|
panelToken,
|
|
@@ -6102,7 +6309,7 @@ function BoardContent({ top, plan, world, board, panelToken, onPanelRefresh, onN
|
|
|
6102
6309
|
onOpenMarket,
|
|
6103
6310
|
onSummary,
|
|
6104
6311
|
t
|
|
6105
|
-
})));
|
|
6312
|
+
}))));
|
|
6106
6313
|
}
|
|
6107
6314
|
function Rightbar(props) {
|
|
6108
6315
|
const units = props.units;
|
|
@@ -6125,7 +6332,7 @@ function Rightbar(props) {
|
|
|
6125
6332
|
const plan = planBoard(fixtures.shape, {
|
|
6126
6333
|
modules: visibleModules,
|
|
6127
6334
|
configRead: enabledUnits !== null
|
|
6128
|
-
}, fixtureSeed(manifests, modules.all()));
|
|
6335
|
+
}, fixtureSeed(manifests, modules.all(), crashModeOn(window.location.search)));
|
|
6129
6336
|
const world = createSuiteWorld({
|
|
6130
6337
|
workspaces,
|
|
6131
6338
|
sessions,
|
|
@@ -6204,6 +6411,7 @@ function Rightbar(props) {
|
|
|
6204
6411
|
onOpenMarket: openMarket,
|
|
6205
6412
|
onSummary,
|
|
6206
6413
|
onOpenModules: () => setModulesOpen(true),
|
|
6414
|
+
buildModule: props.buildModule,
|
|
6207
6415
|
t: props.t
|
|
6208
6416
|
})));
|
|
6209
6417
|
}
|
|
@@ -6365,59 +6573,324 @@ function PanelRow({ id, label, active, wide, onSelect, fallbackGlyph, renderEntr
|
|
|
6365
6573
|
className: "wb-panelTag"
|
|
6366
6574
|
}, t(hint.labelKey))));
|
|
6367
6575
|
}
|
|
6576
|
+
var ProjectSwitcher_module_default = {
|
|
6577
|
+
root: "_root_1vd78_1",
|
|
6578
|
+
anchor: "_anchor_1vd78_7",
|
|
6579
|
+
menu: "_menu_1vd78_12",
|
|
6580
|
+
trigger: "_trigger_1vd78_17",
|
|
6581
|
+
glyph: "_glyph_1vd78_44",
|
|
6582
|
+
glyphActive: "_glyphActive_1vd78_54",
|
|
6583
|
+
triggerName: "_triggerName_1vd78_58",
|
|
6584
|
+
dir: "_dir_1vd78_69",
|
|
6585
|
+
name: "_name_1vd78_77",
|
|
6586
|
+
chevron: "_chevron_1vd78_90",
|
|
6587
|
+
row: "_row_1vd78_96",
|
|
6588
|
+
trailing: "_trailing_1vd78_104",
|
|
6589
|
+
rowAction: "_rowAction_1vd78_114",
|
|
6590
|
+
current: "_current_1vd78_127",
|
|
6591
|
+
field: "_field_1vd78_134",
|
|
6592
|
+
searchIcon: "_searchIcon_1vd78_151",
|
|
6593
|
+
search: "_search_1vd78_151"
|
|
6594
|
+
};
|
|
6595
|
+
var WorkspaceRenameDialog_module_default = {
|
|
6596
|
+
dialog: "_dialog_1vye5_1",
|
|
6597
|
+
stack: "_stack_1vye5_5",
|
|
6598
|
+
input: "_input_1vye5_12",
|
|
6599
|
+
meta: "_meta_1vye5_18"
|
|
6600
|
+
};
|
|
6601
|
+
function basenameOf(value) {
|
|
6602
|
+
const trimmed = value.replace(/[/\\]+$/, "");
|
|
6603
|
+
const at = Math.max(trimmed.lastIndexOf("/"), trimmed.lastIndexOf("\\"));
|
|
6604
|
+
return at === -1 ? trimmed : trimmed.slice(at + 1);
|
|
6605
|
+
}
|
|
6606
|
+
function displayNameOf(workspace) {
|
|
6607
|
+
const dir = basenameOf(workspace.path) || workspace.path;
|
|
6608
|
+
const title = workspace.title.trim();
|
|
6609
|
+
return {
|
|
6610
|
+
dir,
|
|
6611
|
+
name: title !== "" && title !== dir && title !== "default-workspace" ? title : ""
|
|
6612
|
+
};
|
|
6613
|
+
}
|
|
6614
|
+
function matchWorkspaces(items, query) {
|
|
6615
|
+
const needle = query.trim().toLowerCase();
|
|
6616
|
+
if (needle === "") return [...items];
|
|
6617
|
+
return items.filter((workspace) => {
|
|
6618
|
+
const { dir, name } = displayNameOf(workspace);
|
|
6619
|
+
return `${dir} ${name} ${workspace.path}`.toLowerCase().includes(needle);
|
|
6620
|
+
});
|
|
6621
|
+
}
|
|
6622
|
+
function titleFor(workspace, draft) {
|
|
6623
|
+
const trimmed = draft.trim();
|
|
6624
|
+
if (trimmed === "") return basenameOf(workspace.path) || workspace.path;
|
|
6625
|
+
return trimmed;
|
|
6626
|
+
}
|
|
6627
|
+
function nameTooLong(draft) {
|
|
6628
|
+
return draft.trim().length > 20;
|
|
6629
|
+
}
|
|
6630
|
+
//#endregion
|
|
6631
|
+
//#region src/app/layouts/sidebar/WorkspaceRenameDialog.tsx
|
|
6632
|
+
function WorkspaceRenameDialog({ workspace, t, onClose, onSubmit }) {
|
|
6633
|
+
const [draft, setDraft] = useState(() => displayNameOf(workspace).name);
|
|
6634
|
+
const [busy, setBusy] = useState(false);
|
|
6635
|
+
const [failed, setFailed] = useState(false);
|
|
6636
|
+
const dir = displayNameOf(workspace).dir;
|
|
6637
|
+
const tooLong = nameTooLong(draft);
|
|
6638
|
+
const save = () => {
|
|
6639
|
+
if (busy || tooLong) return;
|
|
6640
|
+
setBusy(true);
|
|
6641
|
+
setFailed(false);
|
|
6642
|
+
onSubmit(titleFor(workspace, draft)).then((ok) => {
|
|
6643
|
+
setBusy(false);
|
|
6644
|
+
if (ok) onClose();
|
|
6645
|
+
else setFailed(true);
|
|
6646
|
+
});
|
|
6647
|
+
};
|
|
6648
|
+
return /* @__PURE__ */ h(Modal, {
|
|
6649
|
+
open: true,
|
|
6650
|
+
onClose: () => {
|
|
6651
|
+
if (!busy) onClose();
|
|
6652
|
+
},
|
|
6653
|
+
title: t("project.rename.title", { name: dir }),
|
|
6654
|
+
description: t("project.rename.description"),
|
|
6655
|
+
closeLabel: t("project.rename.cancel"),
|
|
6656
|
+
className: WorkspaceRenameDialog_module_default.dialog,
|
|
6657
|
+
footer: /* @__PURE__ */ h(Fragment, null, /* @__PURE__ */ h(Button, {
|
|
6658
|
+
type: "button",
|
|
6659
|
+
variant: "outline",
|
|
6660
|
+
size: "md",
|
|
6661
|
+
disabled: busy,
|
|
6662
|
+
onClick: onClose
|
|
6663
|
+
}, t("project.rename.cancel")), /* @__PURE__ */ h(Button, {
|
|
6664
|
+
type: "button",
|
|
6665
|
+
variant: "primary",
|
|
6666
|
+
size: "md",
|
|
6667
|
+
disabled: busy || tooLong,
|
|
6668
|
+
"aria-busy": busy,
|
|
6669
|
+
onClick: save
|
|
6670
|
+
}, t(busy ? "project.rename.saving" : "project.rename.save")))
|
|
6671
|
+
}, /* @__PURE__ */ h("div", { className: WorkspaceRenameDialog_module_default.stack }, /* @__PURE__ */ h(TextField, {
|
|
6672
|
+
className: WorkspaceRenameDialog_module_default.input,
|
|
6673
|
+
"data-modal-autofocus": "",
|
|
6674
|
+
id: "wb-workspace-name",
|
|
6675
|
+
name: "wb-workspace-name",
|
|
6676
|
+
"aria-label": t("project.rename.field"),
|
|
6677
|
+
"aria-invalid": tooLong ? "true" : void 0,
|
|
6678
|
+
placeholder: t("project.rename.placeholder"),
|
|
6679
|
+
maxLength: 40,
|
|
6680
|
+
value: draft,
|
|
6681
|
+
onChange: (event) => setDraft(event.currentTarget.value),
|
|
6682
|
+
onKeyDown: (event) => {
|
|
6683
|
+
if (event.key !== "Enter" || event.nativeEvent.isComposing) return;
|
|
6684
|
+
event.preventDefault();
|
|
6685
|
+
save();
|
|
6686
|
+
}
|
|
6687
|
+
}), /* @__PURE__ */ h("div", { className: WorkspaceRenameDialog_module_default.meta }, /* @__PURE__ */ h(Note, { as: "span" }, t("project.rename.hint")), /* @__PURE__ */ h(Note, {
|
|
6688
|
+
as: "span",
|
|
6689
|
+
tone: tooLong ? "problem" : "muted"
|
|
6690
|
+
}, `${draft.trim().length}/20`)), failed ? /* @__PURE__ */ h(Note, { tone: "problem" }, t("project.rename.failed")) : null));
|
|
6691
|
+
}
|
|
6692
|
+
//#endregion
|
|
6693
|
+
//#region src/app/layouts/sidebar/WorkspaceSearchField.tsx
|
|
6694
|
+
function WorkspaceSearchField({ t, query, onQuery, onCursor, onSubmit }) {
|
|
6695
|
+
const boxRef = useRef(null);
|
|
6696
|
+
useEffect(() => {
|
|
6697
|
+
boxRef.current?.querySelector("input")?.focus();
|
|
6698
|
+
}, []);
|
|
6699
|
+
return /* @__PURE__ */ h("span", {
|
|
6700
|
+
ref: boxRef,
|
|
6701
|
+
className: ProjectSwitcher_module_default.field
|
|
6702
|
+
}, /* @__PURE__ */ h("span", { className: ProjectSwitcher_module_default.searchIcon }, /* @__PURE__ */ h(IconSearchOutlineRegular, { size: 14 })), /* @__PURE__ */ h(TextField, {
|
|
6703
|
+
className: ProjectSwitcher_module_default.search,
|
|
6704
|
+
id: "wb-workspace-search",
|
|
6705
|
+
name: "wb-workspace-search",
|
|
6706
|
+
"aria-label": t("project.search.label"),
|
|
6707
|
+
placeholder: t("project.search.placeholder"),
|
|
6708
|
+
value: query,
|
|
6709
|
+
onChange: (event) => onQuery(event.currentTarget.value),
|
|
6710
|
+
onKeyDown: (event) => {
|
|
6711
|
+
if (event.nativeEvent.isComposing) return;
|
|
6712
|
+
if (event.key === "ArrowDown" || event.key === "ArrowUp") {
|
|
6713
|
+
event.stopPropagation();
|
|
6714
|
+
event.preventDefault();
|
|
6715
|
+
onCursor(event.key === "ArrowDown" ? 1 : -1);
|
|
6716
|
+
return;
|
|
6717
|
+
}
|
|
6718
|
+
if (event.key !== "Enter") return;
|
|
6719
|
+
event.stopPropagation();
|
|
6720
|
+
onSubmit();
|
|
6721
|
+
}
|
|
6722
|
+
}));
|
|
6723
|
+
}
|
|
6724
|
+
//#endregion
|
|
6725
|
+
//#region src/app/layouts/sidebar/WorkspaceRowAction.tsx
|
|
6726
|
+
function WorkspaceRowAction({ workspace, t, onEdit }) {
|
|
6727
|
+
return /* @__PURE__ */ h(Button, {
|
|
6728
|
+
type: "button",
|
|
6729
|
+
variant: "ghost",
|
|
6730
|
+
size: "sm",
|
|
6731
|
+
className: ProjectSwitcher_module_default.rowAction,
|
|
6732
|
+
icon: /* @__PURE__ */ h(IconEditOutlineRegular, { size: 14 }),
|
|
6733
|
+
"aria-label": t("project.rename.row", { name: displayNameOf(workspace).dir }),
|
|
6734
|
+
onClick: (event) => {
|
|
6735
|
+
event.stopPropagation();
|
|
6736
|
+
onEdit();
|
|
6737
|
+
}
|
|
6738
|
+
});
|
|
6739
|
+
}
|
|
6740
|
+
//#endregion
|
|
6741
|
+
//#region src/app/layouts/sidebar/WorkspaceRowLabel.tsx
|
|
6742
|
+
function WorkspaceRowLabel({ workspace, current, action, onHover }) {
|
|
6743
|
+
const { dir, name } = displayNameOf(workspace);
|
|
6744
|
+
const hostRef = useRef(null);
|
|
6745
|
+
const hoverRef = useRef(onHover);
|
|
6746
|
+
useEffect(() => {
|
|
6747
|
+
hoverRef.current = onHover;
|
|
6748
|
+
});
|
|
6749
|
+
useEffect(() => {
|
|
6750
|
+
const row = hostRef.current?.closest("[role=\"menuitem\"]");
|
|
6751
|
+
if (row === null || row === void 0) return;
|
|
6752
|
+
const enter = () => hoverRef.current?.(true);
|
|
6753
|
+
const leave = () => hoverRef.current?.(false);
|
|
6754
|
+
row.addEventListener("mouseenter", enter);
|
|
6755
|
+
row.addEventListener("mouseleave", leave);
|
|
6756
|
+
return () => {
|
|
6757
|
+
row.removeEventListener("mouseenter", enter);
|
|
6758
|
+
row.removeEventListener("mouseleave", leave);
|
|
6759
|
+
};
|
|
6760
|
+
}, []);
|
|
6761
|
+
return /* @__PURE__ */ h("span", {
|
|
6762
|
+
ref: hostRef,
|
|
6763
|
+
className: ProjectSwitcher_module_default.row
|
|
6764
|
+
}, /* @__PURE__ */ h("span", { className: ProjectSwitcher_module_default.dir }, dir), name === "" ? null : /* @__PURE__ */ h("span", {
|
|
6765
|
+
className: ProjectSwitcher_module_default.name,
|
|
6766
|
+
title: name
|
|
6767
|
+
}, name), /* @__PURE__ */ h("span", { className: ProjectSwitcher_module_default.trailing }, action ?? (current ? /* @__PURE__ */ h("span", { className: ProjectSwitcher_module_default.current }, /* @__PURE__ */ h(IconCheckOutlineRegular, { size: 12 })) : null)));
|
|
6768
|
+
}
|
|
6769
|
+
//#endregion
|
|
6770
|
+
//#region src/app/layouts/sidebar/workspace-items.tsx
|
|
6771
|
+
function workspaceMenuItems(options) {
|
|
6772
|
+
const { results, currentId, hoverId, t, onHover, onEdit } = options;
|
|
6773
|
+
return results.map((workspace) => ({
|
|
6774
|
+
id: workspace.workspaceId,
|
|
6775
|
+
icon: /* @__PURE__ */ h(IconFolderOpenRegular, { size: 16 }),
|
|
6776
|
+
label: /* @__PURE__ */ h(WorkspaceRowLabel, {
|
|
6777
|
+
workspace,
|
|
6778
|
+
current: workspace.workspaceId === currentId,
|
|
6779
|
+
onHover: (hovering) => onHover(hovering ? workspace.workspaceId : null),
|
|
6780
|
+
action: hoverId === workspace.workspaceId ? /* @__PURE__ */ h(WorkspaceRowAction, {
|
|
6781
|
+
workspace,
|
|
6782
|
+
t,
|
|
6783
|
+
onEdit: () => onEdit(workspace)
|
|
6784
|
+
}) : void 0
|
|
6785
|
+
})
|
|
6786
|
+
}));
|
|
6787
|
+
}
|
|
6368
6788
|
//#endregion
|
|
6369
6789
|
//#region src/app/layouts/sidebar/ProjectSwitcher.tsx
|
|
6370
6790
|
var ADD_WORKSPACE_ID = "__wb-add-workspace__";
|
|
6371
|
-
function
|
|
6791
|
+
function triggerName(current, t) {
|
|
6792
|
+
if (current === null) return t("project.none");
|
|
6793
|
+
const { dir, name } = displayNameOf(current);
|
|
6794
|
+
return /* @__PURE__ */ h(Fragment, null, /* @__PURE__ */ h("span", { className: ProjectSwitcher_module_default.dir }, dir), name === "" ? null : /* @__PURE__ */ h("span", { className: ProjectSwitcher_module_default.name }, name));
|
|
6795
|
+
}
|
|
6796
|
+
function ProjectSwitcher({ items, current, onPick, onAdd, onRename, t }) {
|
|
6372
6797
|
const [open, setOpen] = useState(false);
|
|
6798
|
+
const [query, setQuery] = useState("");
|
|
6799
|
+
const [cursor, setCursor] = useState(null);
|
|
6800
|
+
const [hoverId, setHoverId] = useState(null);
|
|
6801
|
+
const [naming, setNaming] = useState(null);
|
|
6373
6802
|
const triggerRef = useRef(null);
|
|
6374
|
-
const
|
|
6803
|
+
const wasOpenRef = useRef(false);
|
|
6375
6804
|
const currentId = current?.workspaceId ?? null;
|
|
6376
|
-
const
|
|
6805
|
+
const results = useMemo(() => matchWorkspaces(items, query), [items, query]);
|
|
6806
|
+
const cursorId = cursor === null || results.length === 0 ? null : results[Math.min(cursor, results.length - 1)]?.workspaceId ?? null;
|
|
6807
|
+
useEffect(() => {
|
|
6808
|
+
if (open) {
|
|
6809
|
+
wasOpenRef.current = true;
|
|
6810
|
+
return;
|
|
6811
|
+
}
|
|
6812
|
+
setQuery("");
|
|
6813
|
+
setCursor(null);
|
|
6814
|
+
setHoverId(null);
|
|
6815
|
+
if (wasOpenRef.current && naming === null) {
|
|
6816
|
+
wasOpenRef.current = false;
|
|
6817
|
+
triggerRef.current?.focus();
|
|
6818
|
+
}
|
|
6819
|
+
}, [open, naming]);
|
|
6820
|
+
const close = () => setOpen(false);
|
|
6821
|
+
const anchor = open ? /* @__PURE__ */ h(WorkspaceSearchField, {
|
|
6822
|
+
t,
|
|
6823
|
+
query,
|
|
6824
|
+
onQuery: (next) => {
|
|
6825
|
+
setQuery(next);
|
|
6826
|
+
setCursor(null);
|
|
6827
|
+
},
|
|
6828
|
+
onCursor: (step) => {
|
|
6829
|
+
if (results.length === 0) return;
|
|
6830
|
+
setCursor((at) => at === null ? step === 1 ? 0 : results.length - 1 : (at + step + results.length) % results.length);
|
|
6831
|
+
},
|
|
6832
|
+
onSubmit: () => {
|
|
6833
|
+
const pick = results[Math.min(cursor ?? 0, results.length - 1)];
|
|
6834
|
+
if (pick === void 0) return;
|
|
6835
|
+
close();
|
|
6836
|
+
onPick(pick.workspaceId);
|
|
6837
|
+
}
|
|
6838
|
+
}) : /* @__PURE__ */ h("button", {
|
|
6377
6839
|
type: "button",
|
|
6378
6840
|
ref: triggerRef,
|
|
6379
|
-
className:
|
|
6841
|
+
className: ProjectSwitcher_module_default.trigger,
|
|
6380
6842
|
"aria-haspopup": "listbox",
|
|
6381
6843
|
"aria-expanded": open,
|
|
6382
6844
|
"aria-label": t("project.label"),
|
|
6383
|
-
title: current
|
|
6384
|
-
onClick: () =>
|
|
6385
|
-
|
|
6386
|
-
|
|
6387
|
-
}
|
|
6388
|
-
}, /* @__PURE__ */ h("span", { className: "wb-projectGlyph wb-projectGlyphActive" }, open ? /* @__PURE__ */ h(IconFolderOpenRegular, { size: 16 }) : /* @__PURE__ */ h(IconFolderCloseRegular, { size: 16 })), /* @__PURE__ */ h("span", { className: "wb-projectName" }, title), /* @__PURE__ */ h("span", { className: cx("wb-projectChevron", open && "wb-projectChevronOpen") }, /* @__PURE__ */ h(IconChevronDownOutlineRegular, { size: 14 })));
|
|
6389
|
-
return /* @__PURE__ */ h("div", { className: "wb-project" }, /* @__PURE__ */ h(Menu, {
|
|
6845
|
+
title: current?.path ?? void 0,
|
|
6846
|
+
onClick: () => setOpen(true)
|
|
6847
|
+
}, /* @__PURE__ */ h("span", { className: cx(ProjectSwitcher_module_default.glyph, ProjectSwitcher_module_default.glyphActive) }, /* @__PURE__ */ h(IconFolderCloseRegular, { size: 16 })), /* @__PURE__ */ h("span", { className: ProjectSwitcher_module_default.triggerName }, triggerName(current, t)), /* @__PURE__ */ h("span", { className: ProjectSwitcher_module_default.chevron }, /* @__PURE__ */ h(IconChevronDownOutlineRegular, { size: 14 })));
|
|
6848
|
+
return /* @__PURE__ */ h("div", { className: ProjectSwitcher_module_default.root }, /* @__PURE__ */ h(Menu, {
|
|
6390
6849
|
open,
|
|
6391
6850
|
portal: true,
|
|
6392
|
-
className:
|
|
6393
|
-
|
|
6851
|
+
className: ProjectSwitcher_module_default.anchor,
|
|
6852
|
+
listClassName: ProjectSwitcher_module_default.menu,
|
|
6853
|
+
anchor,
|
|
6394
6854
|
align: "start",
|
|
6395
6855
|
side: "bottom",
|
|
6396
|
-
selection: "
|
|
6397
|
-
selectedId:
|
|
6398
|
-
items: [...
|
|
6856
|
+
selection: "fill",
|
|
6857
|
+
selectedId: cursorId ?? void 0,
|
|
6858
|
+
items: [...results.length === 0 ? [{
|
|
6399
6859
|
type: "label",
|
|
6400
6860
|
id: "empty",
|
|
6401
|
-
text: t("project.empty")
|
|
6402
|
-
}] : [], ...
|
|
6403
|
-
|
|
6404
|
-
|
|
6405
|
-
|
|
6406
|
-
|
|
6861
|
+
text: t("project.search.empty", { query: query.trim() })
|
|
6862
|
+
}] : [], ...workspaceMenuItems({
|
|
6863
|
+
results,
|
|
6864
|
+
currentId,
|
|
6865
|
+
hoverId,
|
|
6866
|
+
t,
|
|
6867
|
+
onHover: setHoverId,
|
|
6868
|
+
onEdit: (workspace) => {
|
|
6869
|
+
close();
|
|
6870
|
+
setNaming(workspace);
|
|
6871
|
+
}
|
|
6872
|
+
})],
|
|
6407
6873
|
footer: [{
|
|
6408
6874
|
id: ADD_WORKSPACE_ID,
|
|
6409
6875
|
label: t("project.add"),
|
|
6410
6876
|
icon: /* @__PURE__ */ h(IconPlusOutlineRegular, { size: 14 })
|
|
6411
6877
|
}],
|
|
6412
6878
|
onSelect: (id) => {
|
|
6413
|
-
setOpen(false);
|
|
6414
6879
|
if (id === ADD_WORKSPACE_ID) {
|
|
6880
|
+
close();
|
|
6415
6881
|
onAdd();
|
|
6416
6882
|
return;
|
|
6417
6883
|
}
|
|
6884
|
+
close();
|
|
6418
6885
|
onPick(id);
|
|
6419
6886
|
},
|
|
6420
|
-
onClose:
|
|
6887
|
+
onClose: close
|
|
6888
|
+
}), naming === null ? null : /* @__PURE__ */ h(WorkspaceRenameDialog, {
|
|
6889
|
+
key: naming.workspaceId,
|
|
6890
|
+
workspace: naming,
|
|
6891
|
+
t,
|
|
6892
|
+
onClose: () => setNaming(null),
|
|
6893
|
+
onSubmit: (title) => onRename(naming.workspaceId, title)
|
|
6421
6894
|
}));
|
|
6422
6895
|
}
|
|
6423
6896
|
//#endregion
|
|
@@ -6514,6 +6987,7 @@ function Sidebar(props) {
|
|
|
6514
6987
|
const [storedId, setStoredId] = useState(() => selectedProjectId());
|
|
6515
6988
|
const [panelEntries, setPanelEntries] = useState(() => props.listPanels());
|
|
6516
6989
|
useEffect(() => props.subscribePanels(() => setPanelEntries(props.listPanels())), [props]);
|
|
6990
|
+
useEffect(() => subscribeProject(() => setStoredId(selectedProjectId())), []);
|
|
6517
6991
|
const current = items.find((workspace) => workspace.workspaceId === storedId) ?? items[0] ?? null;
|
|
6518
6992
|
const pickProject = (workspaceId) => {
|
|
6519
6993
|
setStoredId(workspaceId);
|
|
@@ -6567,9 +7041,9 @@ function Sidebar(props) {
|
|
|
6567
7041
|
}))), wide ? /* @__PURE__ */ h(ProjectSwitcher, {
|
|
6568
7042
|
items,
|
|
6569
7043
|
current,
|
|
6570
|
-
workspaceTitle: props.workspaceDisplayTitle,
|
|
6571
7044
|
onPick: pickProject,
|
|
6572
7045
|
onAdd: addProject,
|
|
7046
|
+
onRename: props.renameWorkspace,
|
|
6573
7047
|
t
|
|
6574
7048
|
}) : null, /* @__PURE__ */ h(WorkspaceSection, {
|
|
6575
7049
|
t,
|
|
@@ -7018,12 +7492,12 @@ var kit = {
|
|
|
7018
7492
|
}
|
|
7019
7493
|
};
|
|
7020
7494
|
function messagesOf(units) {
|
|
7021
|
-
return
|
|
7495
|
+
return units.map((face) => ({
|
|
7022
7496
|
unit: face.manifest.id,
|
|
7023
7497
|
...face.messages === void 0 ? {} : { messages: face.messages }
|
|
7024
|
-
}))
|
|
7498
|
+
}));
|
|
7025
7499
|
}
|
|
7026
|
-
var COMPONENT_CSS_MARKER = "\n.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 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\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\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-len-20);\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\n.wb-cardRefresh.wb-spinning svg {\n animation: wb-spin var(--wb-dur-0-9) linear infinite;\n}\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);\n}\n.wb-cardBody > :not([data-wb-bleed]) {\n padding-left: var(--wb-len-8);\n padding-right: var(--wb-len-8);\n}\n\n.wb-choiceMenu {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n padding: var(--wb-len-4);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: transparent;\n}\n\n.wb-choiceOption {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-30);\n padding: var(--wb-len-6) 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-choiceOption:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-choiceLabel {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\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 opacity: 0.5;\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-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 display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n color: var(--dsw-alias-label-secondary);\n text-decoration: none;\n white-space: nowrap;\n}\n.wb-longTaskLink:hover,\n.wb-longTaskLink:focus-visible {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n.wb-longTaskLink: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.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.wb-mockStrip {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wb-len-4);\n padding: var(--wb-len-8) var(--wb-len-12);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n flex: none;\n}\n\n.wb-mockNote {\n flex: 1 0 100%;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-14);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-mockChip {\n flex: none;\n padding: var(--wb-len-2) var(--wb-len-7);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-pill);\n corner-shape: round;\n background: transparent;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-14);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n.wb-mockChip:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-mockChipOn {\n border-color: transparent;\n background: var(--dsw-alias-brand-primary);\n color: var(--dsw-alias-label-primary-foreground);\n}\n.wb-note {\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-problem {\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-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\n.wb-row:has(> [data-wb-dot]) {\n grid-template-columns: 84px minmax(0, 1fr);\n}\n.wb-rows {\n display: flex;\n flex-direction: column;\n}\n.wb-row {\n display: grid;\n grid-template-columns: 56px 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 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-formActions {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n}\n.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n}\n.wb-settingsHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n.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-xxs-12-font-size);\n line-height: var(--wb-line-18);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-stack {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\n}\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.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[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._marketList_7yq35_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 max-height: var(--wb-len-320);\n overflow-y: auto;\n}\n\n._marketRow_7yq35_12 {\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_7yq35_22 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-40);\n height: var(--wb-len-40);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketMain_7yq35_34 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_7yq35_41 {\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._marketDesc_7yq35_50 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n overflow: hidden;\n white-space: nowrap;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketUsedBy_7yq35_61 {\n margin-left: var(--wb-len-8);\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 opacity: 0.75;\n}\n\n._marketUsedBy_7yq35_61::before {\n content: '·';\n margin-right: var(--wb-len-6);\n opacity: 0.8;\n}\n\n._marketName_7yq35_41 ._marketVersion_7yq35_75 {\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_7yq35_75 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_7yq35_75::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._marketEnd_7yq35_97 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._marketActions_7yq35_104 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketSection_7yq35_110 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_7yq35_117 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionTitle_7yq35_123 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_7yq35_129 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketProgress_7yq35_135 {\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_7yq35_145 {\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_7yq35_152 {\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_7yq35_159 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_7yq35_164 {\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: auto;\n color: var(--dsw-alias-label-primary);\n}\n\n._marketPage_7yq35_164 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_7yq35_181 {\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_7yq35_189 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_7yq35_194 {\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_7yq35_200 {\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._marketIconButton_7yq35_209 {\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_7yq35_209:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_7yq35_209:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_7yq35_234 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_7yq35_238 svg {\n animation: _wb-spin_7yq35_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_7yq35_242 {\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_7yq35_159 {\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._marketChecking_7yq35_259 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketEmptyTitle_7yq35_267 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_7yq35_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n._foot_1us83_1 {\n display: flex;\n align-items: center;\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_1us83_12 {\n flex: 1;\n min-width: 0;\n}\n\n._footTextMd_1us83_17 {\n flex: 1;\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n._wide_1coeb_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_1coeb_8 {\n width: min(var(--wb-len-560), 100%);\n max-height: min(var(--wb-len-800), 100%);\n}\n\n._content_1coeb_13 {\n min-height: 0;\n overflow: auto;\n}\n\n._stack_1coeb_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._body_1coeb_25 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._field_1coeb_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_1coeb_39 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-14);\n}\n\n._registryField_1coeb_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_1coeb_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_1coeb_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_1coeb_59:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._guideToggle_1coeb_59 svg,\n._registryToggle_1coeb_78 svg {\n transition: transform var(--wb-dur-0-12) ease;\n}\n\n._guideToggle_1coeb_59[aria-expanded='true'] svg,\n._registryToggle_1coeb_78[aria-expanded='true'] svg {\n transform: rotate(180deg);\n}\n\n._registryWrap_1coeb_87 {\n position: relative;\n flex: none;\n}\n\n._registryToggle_1coeb_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_1coeb_78:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._registryToggle_1coeb_78:disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n._registryToggle_1coeb_78[aria-expanded='true'] {\n border-color: var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n._registryChosen_1coeb_121 {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\n._registry_1coeb_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_1coeb_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_1coeb_143 {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--wb-len-10);\n}\n\n._registryPick_1coeb_159 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n cursor: pointer;\n}\n\n._registryOption_1coeb_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_1coeb_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_1coeb_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_1coeb_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_1coeb_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_1coeb_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_1coeb_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_1coeb_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_1coeb_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_1coeb_244 {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 0;\n min-width: 0;\n}\n\n._guideTitle_1coeb_252 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._guideHint_1coeb_258 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._guideExample_1coeb_264 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._guideExample_1coeb_264 code {\n font-family: var(--dsw-font-mono, monospace);\n}\n\n._guideExampleLabel_1coeb_274 {\n color: var(--dsw-alias-label-caption);\n}\n\n._footer_1coeb_278 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-20);\n width: 100%;\n}\n\n._hero_1coeb_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_1coeb_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_1coeb_294[data-state='done'] {\n color: var(--dsw-alias-state-success-secondary);\n}\n\n._heroIcon_1coeb_294[data-state='error'] {\n color: var(--dsw-alias-state-warn-label);\n}\n\n._pendingTitle_1coeb_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_1coeb_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_1coeb_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_1coeb_337 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n overflow-wrap: anywhere;\n}\n\n._subjectMeta_1coeb_343,\n._subjectDesc_1coeb_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_1coeb_351,\n._resultWarn_1coeb_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_1coeb_352 {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);\n}\n\n._approval_1coeb_365 {\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_1coeb_375 {\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_1coeb_382 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._approvalCaution_1coeb_388 {\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_1coeb_395 {\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_1coeb_402 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._noteError_1coeb_406 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._problem_1coeb_410 {\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_1coeb_417 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._detail_1coeb_417 {\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._actions_jlw8j_1[hidden],\n._progress_jlw8j_2[hidden],\n._commandRow_jlw8j_3[hidden],\n._bridge_jlw8j_4[hidden],\n._raw_jlw8j_5[hidden] {\n display: none;\n}\n\n._gate_jlw8j_9 {\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_jlw8j_20 {\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_jlw8j_20:has(._actions_jlw8j_1:not([hidden])),\n._card_jlw8j_20:has(._bridge_jlw8j_4:not([hidden])) {\n max-width: var(--wb-len-520);\n}\n\n._title_jlw8j_35 {\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_jlw8j_43 {\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_jlw8j_50 {\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_jlw8j_50 {\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_jlw8j_50[data-status='running'] {\n color: var(--dsw-alias-label-primary);\n}\n\n._mark_jlw8j_77 {\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_jlw8j_50[data-status='ok'] ._mark_jlw8j_77 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._step_jlw8j_50[data-status='warn'] ._mark_jlw8j_77 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._step_jlw8j_50[data-status='failed'] ._mark_jlw8j_77 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._label_jlw8j_102 {\n flex: none;\n}\n\n._detail_jlw8j_106 {\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_jlw8j_2 {\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_jlw8j_124 {\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_jlw8j_132 {\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_jlw8j_3 {\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_jlw8j_158 {\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_jlw8j_158:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._command_jlw8j_3 {\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_jlw8j_191 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-12);\n}\n\n._mockSlot_jlw8j_198 {\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_jlw8j_191 {\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_jlw8j_191:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._button_jlw8j_191:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n._actions_jlw8j_1,\n._bridge_jlw8j_4 {\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_jlw8j_249 {\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_jlw8j_1 ._hint_jlw8j_43,\n._bridge_jlw8j_4 ._hint_jlw8j_43 {\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_jlw8j_1 ._commandRow_jlw8j_3,\n._bridge_jlw8j_4 ._commandRow_jlw8j_3 {\n margin: 0;\n}\n\n._actions_jlw8j_1 ._buttons_jlw8j_191,\n._bridge_jlw8j_4 ._buttons_jlw8j_191 {\n justify-content: flex-start;\n}\n\n._raw_jlw8j_5 {\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\n._rawSummary_jlw8j_282 {\n cursor: pointer;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._actions_jlw8j_1 ._error_jlw8j_132,\n._bridge_jlw8j_4 ._error_jlw8j_132 {\n margin-top: var(--wb-len-6);\n}\n\n._bridgeLines_jlw8j_292 {\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_jlw8j_292 a {\n display: block;\n margin-top: var(--wb-len-4);\n width: fit-content;\n}\n\n._link_jlw8j_309 {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n\n._link_jlw8j_309::after {\n content: '↗';\n margin-left: var(--wb-len-2);\n}\n\n._link_jlw8j_309:hover {\n text-decoration: underline;\n}\n\n._loading_jlw8j_323 {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._loading_jlw8j_323[hidden] {\n display: none;\n}\n\n._loadingMotion_jlw8j_332 {\n transform-origin: center;\n animation: _wb-spin_jlw8j_1 var(--wb-dur-1-5) linear infinite;\n}\n\n._loadingTrack_jlw8j_337,\n._loadingArc_jlw8j_338 {\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n._loadingTrack_jlw8j_337 {\n opacity: 0.25;\n}\n\n._loadingArc_jlw8j_338 {\n stroke-dasharray: 12 150;\n animation: _wb-dash_jlw8j_1 var(--wb-dur-1-5) ease-in-out infinite;\n}\n\n@keyframes _wb-spin_jlw8j_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes _wb-dash_jlw8j_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_jlw8j_332,\n ._loadingArc_jlw8j_338 {\n animation: none;\n }\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_1weg4_1 {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n._pop_1weg4_7 {\n position: absolute;\n top: calc(100% + var(--wb-len-8));\n right: 0;\n z-index: var(--wb-z-30);\n width: var(--wb-len-360);\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_1weg4_21 {\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_1weg4_29 {\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._reset_1weg4_37 {\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_1weg4_37:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_1weg4_37:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._list_1weg4_59 {\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_1weg4_68 {\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: grab;\n}\n\n._row_1weg4_68:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._rowOver_1weg4_83::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_1weg4_93 {\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_1weg4_108 {\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}\n\n._label_1weg4_116 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._name_1weg4_123 {\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_1weg4_134 {\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_1weg4_142 {\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._panel_1oyh4_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_1oyh4_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_1oyh4_1[data-open] {\n visibility: visible;\n}\n._blocker_cfaak_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_cfaak_10 {\n display: flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._title_cfaak_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_cfaak_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_cfaak_1._blockerInline_cfaak_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_cfaak_1._blockerInline_cfaak_32 ._title_cfaak_15 {\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n}\n\n._blocker_cfaak_1._blockerInline_cfaak_32 ._hint_cfaak_23 {\n max-width: 100%;\n}\n\n._blocker_cfaak_1._blockerInline_cfaak_32 ._actions_cfaak_48 {\n margin-top: var(--wb-len-8);\n}\n\n._blocker_cfaak_1._blockerInline_cfaak_32 ._raw_cfaak_52 {\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._actions_cfaak_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_cfaak_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_cfaak_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_cfaak_71._noticeFlat_cfaak_84 {\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n\n._noticeText_cfaak_91 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-3);\n min-width: 0;\n}\n\n._noticeTitle_cfaak_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_cfaak_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_cfaak_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_cfaak_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_cfaak_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._inlineLink_cfaak_134 {\n margin-left: var(--wb-len-2);\n padding: 0;\n border: none;\n background: transparent;\n font: inherit;\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n vertical-align: baseline;\n}\n\n._inlineLink_cfaak_134:hover {\n text-decoration: underline;\n}\n\n._inlineLink_cfaak_134:disabled {\n opacity: 0.6;\n cursor: default;\n}\n._rawText_cfaak_156 {\n margin: var(--wb-len-6) 0 0;\n max-width: 100%;\n}\n/*$vite$:1*/";
|
|
7500
|
+
var COMPONENT_CSS_MARKER = "\n.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 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\n.wb-note {\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-problem {\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-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\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-len-20);\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\n.wb-cardRefresh.wb-spinning svg {\n animation: wb-spin var(--wb-dur-0-9) linear infinite;\n}\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);\n}\n.wb-cardBody > :not([data-wb-bleed]) {\n padding-left: var(--wb-len-8);\n padding-right: var(--wb-len-8);\n}\n\n.wb-choiceMenu {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n padding: var(--wb-len-4);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: transparent;\n}\n\n.wb-choiceOption {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-height: var(--wb-len-30);\n padding: var(--wb-len-6) 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-choiceOption:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n.wb-choiceLabel {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\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 opacity: 0.5;\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-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 display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n color: var(--dsw-alias-label-secondary);\n text-decoration: none;\n white-space: nowrap;\n}\n.wb-longTaskLink:hover,\n.wb-longTaskLink:focus-visible {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n.wb-longTaskLink: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.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.wb-mockStrip {\n display: flex;\n flex-wrap: wrap;\n gap: var(--wb-len-4);\n padding: var(--wb-len-8) var(--wb-len-12);\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n flex: none;\n}\n\n.wb-mockNote {\n flex: 1 0 100%;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-14);\n color: var(--dsw-alias-label-tertiary);\n}\n\n.wb-mockChip {\n flex: none;\n padding: var(--wb-len-2) var(--wb-len-7);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--wb-radius-pill);\n corner-shape: round;\n background: transparent;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-14);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n}\n\n.wb-mockChip:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-mockChipOn {\n border-color: transparent;\n background: var(--dsw-alias-brand-primary);\n color: var(--dsw-alias-label-primary-foreground);\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\n.wb-row:has(> [data-wb-dot]) {\n grid-template-columns: 84px minmax(0, 1fr);\n}\n.wb-rows {\n display: flex;\n flex-direction: column;\n}\n.wb-row {\n display: grid;\n grid-template-columns: 56px 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 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-formActions {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\n}\n.wb-settings {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n padding: var(--wb-len-10);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n}\n.wb-settingsHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n.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-xxs-12-font-size);\n line-height: var(--wb-line-18);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-stack {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\n}\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.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[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._marketList_7yq35_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 max-height: var(--wb-len-320);\n overflow-y: auto;\n}\n\n._marketRow_7yq35_12 {\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_7yq35_22 {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-40);\n height: var(--wb-len-40);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketMain_7yq35_34 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-4);\n min-width: 0;\n}\n\n._marketName_7yq35_41 {\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._marketDesc_7yq35_50 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n overflow: hidden;\n white-space: nowrap;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketUsedBy_7yq35_61 {\n margin-left: var(--wb-len-8);\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 opacity: 0.75;\n}\n\n._marketUsedBy_7yq35_61::before {\n content: '·';\n margin-right: var(--wb-len-6);\n opacity: 0.8;\n}\n\n._marketName_7yq35_41 ._marketVersion_7yq35_75 {\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_7yq35_75 {\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketVersion_7yq35_75::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._marketEnd_7yq35_97 {\n flex: none;\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n}\n\n._marketActions_7yq35_104 {\n flex: none;\n display: flex;\n gap: var(--wb-len-6);\n}\n\n._marketSection_7yq35_110 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n min-width: 0;\n}\n\n._marketSectionHead_7yq35_117 {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\n}\n\n._marketSectionTitle_7yq35_123 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n._marketSectionCount_7yq35_129 {\n font: var(--dsw-font-s-14);\n font-variant-numeric: tabular-nums;\n color: var(--dsw-alias-label-caption);\n}\n\n._marketProgress_7yq35_135 {\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_7yq35_145 {\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_7yq35_152 {\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_7yq35_159 {\n padding: var(--wb-len-18) var(--wb-len-16);\n text-align: center;\n}\n\n._marketPage_7yq35_164 {\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: auto;\n color: var(--dsw-alias-label-primary);\n}\n\n._marketPage_7yq35_164 > * {\n width: 100%;\n max-width: var(--wb-len-960);\n}\n\n._marketPageHead_7yq35_181 {\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_7yq35_189 {\n margin: 0;\n font: var(--dsw-font-l-20);\n}\n\n._marketPageIntro_7yq35_194 {\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_7yq35_200 {\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._marketIconButton_7yq35_209 {\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_7yq35_209:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketIconButton_7yq35_209:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._marketIconWrap_7yq35_234 {\n display: inline-flex;\n}\n\n._marketIconButtonSpinning_7yq35_238 svg {\n animation: _wb-spin_7yq35_1 var(--wb-dur-0-9) linear infinite;\n}\n\n._marketAddButton_7yq35_242 {\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_7yq35_159 {\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._marketChecking_7yq35_259 {\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n\n._marketEmptyTitle_7yq35_267 {\n font: var(--dsw-font-base-strong-16);\n color: var(--dsw-alias-label-primary);\n}\n\n@keyframes _wb-spin_7yq35_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n._foot_1us83_1 {\n display: flex;\n align-items: center;\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_1us83_12 {\n flex: 1;\n min-width: 0;\n}\n\n._footTextMd_1us83_17 {\n flex: 1;\n min-width: 0;\n font: var(--dsw-font-s-14);\n color: var(--dsw-alias-label-secondary);\n}\n._wide_1coeb_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_1coeb_8 {\n width: min(var(--wb-len-560), 100%);\n max-height: min(var(--wb-len-800), 100%);\n}\n\n._content_1coeb_13 {\n min-height: 0;\n overflow: auto;\n}\n\n._stack_1coeb_18 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._body_1coeb_25 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n min-width: 0;\n}\n\n._field_1coeb_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_1coeb_39 {\n width: 100%;\n height: var(--wb-len-40);\n padding: 0 var(--wb-len-14);\n}\n\n._registryField_1coeb_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_1coeb_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_1coeb_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_1coeb_59:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n._guideToggle_1coeb_59 svg,\n._registryToggle_1coeb_78 svg {\n transition: transform var(--wb-dur-0-12) ease;\n}\n\n._guideToggle_1coeb_59[aria-expanded='true'] svg,\n._registryToggle_1coeb_78[aria-expanded='true'] svg {\n transform: rotate(180deg);\n}\n\n._registryWrap_1coeb_87 {\n position: relative;\n flex: none;\n}\n\n._registryToggle_1coeb_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_1coeb_78:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._registryToggle_1coeb_78:disabled {\n cursor: default;\n opacity: 0.6;\n}\n\n._registryToggle_1coeb_78[aria-expanded='true'] {\n border-color: var(--dsw-alias-border-l3);\n background: var(--dsw-alias-bg-layer-3);\n}\n\n._registryChosen_1coeb_121 {\n color: var(--dsw-alias-label-primary);\n font-weight: 500;\n}\n\n._registry_1coeb_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_1coeb_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_1coeb_143 {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--wb-len-10);\n}\n\n._registryPick_1coeb_159 {\n display: flex;\n align-items: flex-start;\n gap: var(--wb-len-10);\n cursor: pointer;\n}\n\n._registryOption_1coeb_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_1coeb_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_1coeb_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_1coeb_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_1coeb_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_1coeb_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_1coeb_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_1coeb_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_1coeb_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_1coeb_244 {\n display: flex;\n flex-direction: column;\n flex: 1;\n gap: 0;\n min-width: 0;\n}\n\n._guideTitle_1coeb_252 {\n font: var(--dsw-font-s-14);\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n\n._guideHint_1coeb_258 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._guideExample_1coeb_264 {\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n overflow-wrap: anywhere;\n}\n\n._guideExample_1coeb_264 code {\n font-family: var(--dsw-font-mono, monospace);\n}\n\n._guideExampleLabel_1coeb_274 {\n color: var(--dsw-alias-label-caption);\n}\n\n._footer_1coeb_278 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-20);\n width: 100%;\n}\n\n._hero_1coeb_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_1coeb_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_1coeb_294[data-state='done'] {\n color: var(--dsw-alias-state-success-secondary);\n}\n\n._heroIcon_1coeb_294[data-state='error'] {\n color: var(--dsw-alias-state-warn-label);\n}\n\n._pendingTitle_1coeb_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_1coeb_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_1coeb_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_1coeb_337 {\n margin: 0;\n font: var(--dsw-font-base-strong-16);\n overflow-wrap: anywhere;\n}\n\n._subjectMeta_1coeb_343,\n._subjectDesc_1coeb_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_1coeb_351,\n._resultWarn_1coeb_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_1coeb_352 {\n background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);\n}\n\n._approval_1coeb_365 {\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_1coeb_375 {\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_1coeb_382 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-secondary);\n}\n\n._approvalCaution_1coeb_388 {\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_1coeb_395 {\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_1coeb_402 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._noteError_1coeb_406 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._problem_1coeb_410 {\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_1coeb_417 {\n margin: 0;\n font: var(--dsw-font-xs-13);\n color: var(--dsw-alias-label-caption);\n}\n\n._detail_1coeb_417 {\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._actions_jlw8j_1[hidden],\n._progress_jlw8j_2[hidden],\n._commandRow_jlw8j_3[hidden],\n._bridge_jlw8j_4[hidden],\n._raw_jlw8j_5[hidden] {\n display: none;\n}\n\n._gate_jlw8j_9 {\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_jlw8j_20 {\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_jlw8j_20:has(._actions_jlw8j_1:not([hidden])),\n._card_jlw8j_20:has(._bridge_jlw8j_4:not([hidden])) {\n max-width: var(--wb-len-520);\n}\n\n._title_jlw8j_35 {\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_jlw8j_43 {\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_jlw8j_50 {\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_jlw8j_50 {\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_jlw8j_50[data-status='running'] {\n color: var(--dsw-alias-label-primary);\n}\n\n._mark_jlw8j_77 {\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_jlw8j_50[data-status='ok'] ._mark_jlw8j_77 {\n color: var(--dsw-alias-state-success-primary);\n}\n\n._step_jlw8j_50[data-status='warn'] ._mark_jlw8j_77 {\n color: var(--dsw-alias-state-warn-primary);\n}\n\n._step_jlw8j_50[data-status='failed'] ._mark_jlw8j_77 {\n color: var(--dsw-alias-state-error-primary);\n}\n\n._label_jlw8j_102 {\n flex: none;\n}\n\n._detail_jlw8j_106 {\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_jlw8j_2 {\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_jlw8j_124 {\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_jlw8j_132 {\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_jlw8j_3 {\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_jlw8j_158 {\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_jlw8j_158:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._command_jlw8j_3 {\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_jlw8j_191 {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--wb-len-12);\n}\n\n._mockSlot_jlw8j_198 {\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_jlw8j_191 {\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_jlw8j_191:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._button_jlw8j_191:disabled {\n cursor: not-allowed;\n opacity: 0.4;\n}\n\n._actions_jlw8j_1,\n._bridge_jlw8j_4 {\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_jlw8j_249 {\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_jlw8j_1 ._hint_jlw8j_43,\n._bridge_jlw8j_4 ._hint_jlw8j_43 {\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_jlw8j_1 ._commandRow_jlw8j_3,\n._bridge_jlw8j_4 ._commandRow_jlw8j_3 {\n margin: 0;\n}\n\n._actions_jlw8j_1 ._buttons_jlw8j_191,\n._bridge_jlw8j_4 ._buttons_jlw8j_191 {\n justify-content: flex-start;\n}\n\n._raw_jlw8j_5 {\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\n._rawSummary_jlw8j_282 {\n cursor: pointer;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._actions_jlw8j_1 ._error_jlw8j_132,\n._bridge_jlw8j_4 ._error_jlw8j_132 {\n margin-top: var(--wb-len-6);\n}\n\n._bridgeLines_jlw8j_292 {\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_jlw8j_292 a {\n display: block;\n margin-top: var(--wb-len-4);\n width: fit-content;\n}\n\n._link_jlw8j_309 {\n color: var(--dsw-alias-label-primary);\n text-decoration: none;\n}\n\n._link_jlw8j_309::after {\n content: '↗';\n margin-left: var(--wb-len-2);\n}\n\n._link_jlw8j_309:hover {\n text-decoration: underline;\n}\n\n._loading_jlw8j_323 {\n flex: none;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._loading_jlw8j_323[hidden] {\n display: none;\n}\n\n._loadingMotion_jlw8j_332 {\n transform-origin: center;\n animation: _wb-spin_jlw8j_1 var(--wb-dur-1-5) linear infinite;\n}\n\n._loadingTrack_jlw8j_337,\n._loadingArc_jlw8j_338 {\n fill: none;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n}\n\n._loadingTrack_jlw8j_337 {\n opacity: 0.25;\n}\n\n._loadingArc_jlw8j_338 {\n stroke-dasharray: 12 150;\n animation: _wb-dash_jlw8j_1 var(--wb-dur-1-5) ease-in-out infinite;\n}\n\n@keyframes _wb-spin_jlw8j_1 {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes _wb-dash_jlw8j_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_jlw8j_332,\n ._loadingArc_jlw8j_338 {\n animation: none;\n }\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_1weg4_1 {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n._pop_1weg4_7 {\n position: absolute;\n top: calc(100% + var(--wb-len-8));\n right: 0;\n z-index: var(--wb-z-30);\n width: var(--wb-len-360);\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_1weg4_21 {\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_1weg4_29 {\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._reset_1weg4_37 {\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_1weg4_37:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n\n._reset_1weg4_37:disabled {\n cursor: default;\n opacity: 0.5;\n}\n\n._list_1weg4_59 {\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_1weg4_68 {\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: grab;\n}\n\n._row_1weg4_68:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._rowOver_1weg4_83::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_1weg4_93 {\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_1weg4_108 {\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}\n\n._label_1weg4_116 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n min-width: 0;\n}\n\n._name_1weg4_123 {\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_1weg4_134 {\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_1weg4_142 {\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._panel_1oyh4_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_1oyh4_1[data-fullscreen] {\n z-index: var(--wb-z-40);\n}\n\n._panel_1oyh4_1[data-open] {\n visibility: visible;\n}\n._root_1vd78_1 {\n position: relative;\n flex: none;\n margin: 0 var(--wb-len-2) var(--wb-len-4);\n}\n\n._anchor_1vd78_7 {\n display: block;\n width: 100%;\n}\n\n._menu_1vd78_12 {\n min-width: var(--wb-len-240);\n max-width: var(--wb-len-360);\n}\n\n._trigger_1vd78_17 {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-gap-xs);\n width: 100%;\n height: var(--wb-len-34);\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}\n\n._trigger_1vd78_17:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n\n._trigger_1vd78_17: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}\n\n._glyph_1vd78_44 {\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_1vd78_54 {\n color: var(--dsw-alias-state-business-primary);\n}\n\n._triggerName_1vd78_58 {\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_1vd78_69 {\n flex: 0 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n._name_1vd78_77 {\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_1vd78_58 ._name_1vd78_77 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._chevron_1vd78_90 {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-caption);\n}\n\n._row_1vd78_96 {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n width: 100%;\n min-width: 0;\n}\n\n._trailing_1vd78_104 {\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_1vd78_104 ._rowAction_1vd78_114 {\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_1vd78_96 ._name_1vd78_77 {\n color: var(--dsw-alias-label-tertiary);\n}\n\n._current_1vd78_127 {\n flex: none;\n display: inline-flex;\n align-items: center;\n color: var(--dsw-alias-label-primary);\n}\n\n._field_1vd78_134 {\n display: flex;\n align-items: center;\n gap: var(--wb-gap-xs);\n box-sizing: border-box;\n width: 100%;\n height: var(--wb-len-34);\n padding: 0 var(--wb-len-8);\n border: 0.5px solid var(--dsw-alias-border-l3);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-2);\n}\n\n._field_1vd78_134:focus-within {\n border-color: var(--dsw-alias-state-business-primary);\n}\n\n._searchIcon_1vd78_151 {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._field_1vd78_134 ._search_1vd78_151 {\n flex: 1;\n min-width: 0;\n height: var(--wb-len-24);\n border: none;\n background: transparent;\n}\n\n._field_1vd78_134 ._search_1vd78_151:focus {\n border-color: transparent;\n box-shadow: none;\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._blocker_cfaak_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_cfaak_10 {\n display: flex;\n color: var(--dsw-alias-label-tertiary);\n}\n\n._title_cfaak_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_cfaak_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_cfaak_1._blockerInline_cfaak_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_cfaak_1._blockerInline_cfaak_32 ._title_cfaak_15 {\n font-size: var(--dsw-font-xs-13-font-size);\n line-height: var(--wb-line-20);\n}\n\n._blocker_cfaak_1._blockerInline_cfaak_32 ._hint_cfaak_23 {\n max-width: 100%;\n}\n\n._blocker_cfaak_1._blockerInline_cfaak_32 ._actions_cfaak_48 {\n margin-top: var(--wb-len-8);\n}\n\n._blocker_cfaak_1._blockerInline_cfaak_32 ._raw_cfaak_52 {\n margin-top: var(--wb-len-4);\n max-width: 100%;\n}\n\n._actions_cfaak_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_cfaak_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_cfaak_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_cfaak_71._noticeFlat_cfaak_84 {\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n}\n\n._noticeText_cfaak_91 {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-3);\n min-width: 0;\n}\n\n._noticeTitle_cfaak_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_cfaak_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_cfaak_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_cfaak_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_cfaak_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._inlineLink_cfaak_134 {\n margin-left: var(--wb-len-2);\n padding: 0;\n border: none;\n background: transparent;\n font: inherit;\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-2);\n vertical-align: baseline;\n}\n\n._inlineLink_cfaak_134:hover {\n text-decoration: underline;\n}\n\n._inlineLink_cfaak_134:disabled {\n opacity: 0.6;\n cursor: default;\n}\n._rawText_cfaak_156 {\n margin: var(--wb-len-6) 0 0;\n max-width: 100%;\n}\n/*$vite$:1*/";
|
|
7027
7501
|
function installStyles() {
|
|
7028
7502
|
const style = document.createElement("style");
|
|
7029
7503
|
style.setAttribute(STYLE_MARKER, "");
|
|
@@ -7052,7 +7526,8 @@ var inject = [
|
|
|
7052
7526
|
"layout",
|
|
7053
7527
|
"uiWorkspace",
|
|
7054
7528
|
"workspaces",
|
|
7055
|
-
"shortcuts"
|
|
7529
|
+
"shortcuts",
|
|
7530
|
+
"remote"
|
|
7056
7531
|
];
|
|
7057
7532
|
function apply(ctx) {
|
|
7058
7533
|
try {
|
|
@@ -7083,7 +7558,9 @@ function mount(ctx) {
|
|
|
7083
7558
|
let disposeDictionary;
|
|
7084
7559
|
const publish = () => {
|
|
7085
7560
|
disposeDictionary?.();
|
|
7086
|
-
|
|
7561
|
+
const { dictionaries: merged, problems } = mergeMessagesSkipping(dictionaries, messagesOf(units.all()));
|
|
7562
|
+
for (const problem of problems) console.warn(`[dsh-workbench] 套件 ${problem.unit} 的文案没并进来(只有它少了这几句):${problem.reason}`);
|
|
7563
|
+
disposeDictionary = ctx.locale.register(LOCALE_NS, merged);
|
|
7087
7564
|
};
|
|
7088
7565
|
publish();
|
|
7089
7566
|
const unsubscribe = units.subscribe(publish);
|
|
@@ -7092,6 +7569,36 @@ function mount(ctx) {
|
|
|
7092
7569
|
disposeDictionary?.();
|
|
7093
7570
|
};
|
|
7094
7571
|
}, "dsh-workbench: dictionaries");
|
|
7572
|
+
const workshopWorkspace = () => ctx.workspaces.list.getSnapshot().items.find((item) => item.path.endsWith("/workbench/diy"));
|
|
7573
|
+
const buildModule = () => {
|
|
7574
|
+
const workshop = workshopWorkspace();
|
|
7575
|
+
if (workshop === void 0) {
|
|
7576
|
+
console.warn("[dsh-workbench] 工坊还没登记成工作区 —— 重启一次工作台");
|
|
7577
|
+
return;
|
|
7578
|
+
}
|
|
7579
|
+
selectProject(workshop.workspaceId);
|
|
7580
|
+
const open = () => {
|
|
7581
|
+
ctx.uiWorkspace.startSession(workshop.workspaceId);
|
|
7582
|
+
};
|
|
7583
|
+
const remoteCreate = sessionCreateOf(ctx.remote);
|
|
7584
|
+
try {
|
|
7585
|
+
if (remoteCreate === void 0) throw new Error("session 那一组拿不到");
|
|
7586
|
+
remoteCreate({
|
|
7587
|
+
workspaceId: workshop.workspaceId,
|
|
7588
|
+
agentPreset: DIY_PRESET_ID
|
|
7589
|
+
}).then((created) => {
|
|
7590
|
+
const id = created.sessionId;
|
|
7591
|
+
if (id === void 0) throw new Error("没有 sessionId");
|
|
7592
|
+
ctx.uiWorkspace.openSession(id);
|
|
7593
|
+
}).catch((error) => {
|
|
7594
|
+
console.warn(`[dsh-workbench] 落 DIY 模式失败,仍切工作区 —— ${String(error)}`);
|
|
7595
|
+
open();
|
|
7596
|
+
});
|
|
7597
|
+
} catch (error) {
|
|
7598
|
+
console.warn(`[dsh-workbench] ctx.remote 拿不到 —— ${String(error)}`);
|
|
7599
|
+
open();
|
|
7600
|
+
}
|
|
7601
|
+
};
|
|
7095
7602
|
const rightbarActions = {
|
|
7096
7603
|
openMarket: () => ctx.layout.selectPanel(MARKET_PANEL_ID),
|
|
7097
7604
|
applyRightbar: ({ shown, track, fullscreen }) => {
|
|
@@ -7110,7 +7617,8 @@ function mount(ctx) {
|
|
|
7110
7617
|
ctx.layout.openRightbar(true, false);
|
|
7111
7618
|
},
|
|
7112
7619
|
openPanel: (step) => store.open(step),
|
|
7113
|
-
goToPanel: (index) => store.goTo(index)
|
|
7620
|
+
goToPanel: (index) => store.goTo(index),
|
|
7621
|
+
buildModule
|
|
7114
7622
|
};
|
|
7115
7623
|
const rightbarHooks = { hooks: { rightbar: observable } };
|
|
7116
7624
|
const sidebarRight = () => ctx.get("sidebarRight");
|
|
@@ -7235,7 +7743,14 @@ function mount(ctx) {
|
|
|
7235
7743
|
inject: () => ({
|
|
7236
7744
|
listPanels: () => readPanels(ctx),
|
|
7237
7745
|
subscribePanels: (callback) => ctx.slots.subscribe("sidebar.panellist", callback),
|
|
7238
|
-
|
|
7746
|
+
renameWorkspace: async (workspaceId, title) => {
|
|
7747
|
+
try {
|
|
7748
|
+
await ctx.workspaces.rename(workspaceId, title);
|
|
7749
|
+
return true;
|
|
7750
|
+
} catch {
|
|
7751
|
+
return false;
|
|
7752
|
+
}
|
|
7753
|
+
},
|
|
7239
7754
|
openWorkspace: (workspaceId) => {
|
|
7240
7755
|
ctx.uiWorkspace.openWorkspace(workspaceId);
|
|
7241
7756
|
},
|
|
@@ -7248,6 +7763,12 @@ function mount(ctx) {
|
|
|
7248
7763
|
})
|
|
7249
7764
|
}, Sidebar));
|
|
7250
7765
|
registerMarketPanel(ctx, units);
|
|
7766
|
+
ctx.effect(() => {
|
|
7767
|
+
const workshop = workshopWorkspace();
|
|
7768
|
+
if (workshop === void 0) return;
|
|
7769
|
+
const title = ctx.workspaces.list.getSnapshot().items.find((item) => item.workspaceId === workshop.workspaceId)?.title;
|
|
7770
|
+
if (title !== void 0 && WORKSHOP_PAST_TITLES.includes(title) && title !== "工作台DIY") ctx.workspaces.rename(workshop.workspaceId, WORKSHOP_TITLE).catch(() => void 0);
|
|
7771
|
+
}, "dsh-workbench: 工坊那一行的旧名字换成新名字");
|
|
7251
7772
|
const gate = createBootGate(ctx);
|
|
7252
7773
|
ctx.effect(() => () => gate.close(), "dsh-workbench: env gate");
|
|
7253
7774
|
ctx.slots.inject("conversation.approval.detail", () => ctx.slots.register({
|
|
@@ -7317,5 +7838,9 @@ function sidebarChildren(ctx) {
|
|
|
7317
7838
|
function menuOpenStateFactory(_standard, state) {
|
|
7318
7839
|
return () => state;
|
|
7319
7840
|
}
|
|
7841
|
+
function sessionCreateOf(remote) {
|
|
7842
|
+
const namespaces = remote?.namespaces;
|
|
7843
|
+
return namespaces?.get?.("session")?.service?.create?.bind(namespaces.get("session")?.service);
|
|
7844
|
+
}
|
|
7320
7845
|
//#endregion
|
|
7321
7846
|
export { apply, inject, kit };
|