@dsh-workbench/core 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/client.js +858 -408
  2. package/dist/client/client.body.js +858 -408
  3. package/dist/client/index.js +858 -408
  4. package/dist/host/index.js +154 -6
  5. package/dist/types/app/client.d.ts +78 -15
  6. package/dist/types/app/layouts/env-gate/__tests__/gate-deadline.test.d.ts +1 -0
  7. package/dist/types/app/layouts/env-gate/gate-deadline.d.ts +4 -0
  8. package/dist/types/app/layouts/rightbar/ColumnSwitch.d.ts +10 -0
  9. package/dist/types/app/layouts/rightbar/MarketStates.d.ts +7 -0
  10. package/dist/types/app/layouts/rightbar/MarketView.d.ts +2 -1
  11. package/dist/types/app/layouts/rightbar/Rightbar.d.ts +3 -1
  12. package/dist/types/app/layouts/rightbar/SharedSection.d.ts +11 -0
  13. package/dist/types/app/layouts/rightbar/__tests__/market-change.test.d.ts +1 -0
  14. package/dist/types/app/layouts/rightbar/__tests__/market-live.test.d.ts +1 -0
  15. package/dist/types/app/layouts/rightbar/__tests__/market-settle.test.d.ts +1 -0
  16. package/dist/types/app/layouts/rightbar/dsh-column-source.d.ts +6 -0
  17. package/dist/types/app/layouts/rightbar/dsh-column-source.test.d.ts +1 -0
  18. package/dist/types/app/layouts/rightbar/market-change.d.ts +4 -0
  19. package/dist/types/app/layouts/rightbar/market-rows.d.ts +3 -1
  20. package/dist/types/app/layouts/rightbar/market-settle.d.ts +2 -0
  21. package/dist/types/app/layouts/rightbar/market-view-text.d.ts +10 -0
  22. package/dist/types/app/layouts/rightbar/presentation.d.ts +9 -0
  23. package/dist/types/app/layouts/rightbar/presentation.test.d.ts +1 -0
  24. package/dist/types/app/layouts/rightbar/store.d.ts +9 -0
  25. package/dist/types/modules/panels/__tests__/market-registries.test.d.ts +1 -0
  26. package/dist/types/modules/panels/model/market.d.ts +2 -0
  27. package/dist/types/shared/api/host/__tests__/profile-registries.test.d.ts +1 -0
  28. package/dist/types/shared/api/host/profile-registries.d.ts +21 -0
  29. package/docs/OPERATIONS.md +2 -0
  30. package/package.json +2 -2
  31. package/dist/types/app/layouts/rightbar/ExpandButton.d.ts +0 -9
@@ -431,6 +431,7 @@ var PANEL_POLL_MS = 2e3;
431
431
  var DEFAULT_WORKSPACE_TITLE = "default-workspace";
432
432
  var STORAGE_KEY_PROJECT = "dsh-workbench.project";
433
433
  var STORAGE_KEY_RIGHTBAR = "dsh-workbench.rightbar.expanded";
434
+ var STORAGE_KEY_RIGHTBAR_COLUMN = "dsh-workbench.rightbar.column";
434
435
  var LOCALE_NS = "workbench";
435
436
  var LOCALES = ["zh", "en"];
436
437
  //#endregion
@@ -479,11 +480,46 @@ var h = react.createElement;
479
480
  var Fragment = react.Fragment;
480
481
  var useState = react.useState;
481
482
  var useEffect = react.useEffect;
483
+ var useLayoutEffect = react.useLayoutEffect;
482
484
  var useMemo = react.useMemo;
483
485
  var useCallback = react.useCallback;
484
486
  var useRef = react.useRef;
485
487
  var useSyncExternalStore = react.useSyncExternalStore;
486
488
  //#endregion
489
+ //#region ../shared/dist/components/Activity.js
490
+ function ActivityBlock({ head, children }) {
491
+ return h("div", { className: "wb-activityBlock" }, head === void 0 ? null : h("div", { className: "wb-activityBlockHead" }, head), children);
492
+ }
493
+ function ActivityLine({ dot, text, at, actions }) {
494
+ return h("div", { className: "wb-activityLine" }, dot, h("span", { className: "wb-activityLineText" }, text), at === void 0 ? null : h("span", { className: "wb-activityLineAt" }, at), actions === void 0 ? null : h("span", { className: "wb-activityLineActions" }, actions));
495
+ }
496
+ function ActivityAction({ label, hint, icon, href, onClick, failed }) {
497
+ const tip = hint ?? label;
498
+ if (href !== void 0) return h("a", {
499
+ className: "wb-iconButton",
500
+ href,
501
+ target: "_blank",
502
+ rel: "noreferrer noopener",
503
+ title: tip,
504
+ "aria-label": label
505
+ }, icon);
506
+ return h(Tooltip, {
507
+ side: "bottom",
508
+ align: "end",
509
+ gap: 6,
510
+ portal: true,
511
+ label: tip
512
+ }, h(Button, {
513
+ type: "button",
514
+ variant: "ghost",
515
+ size: "sm",
516
+ className: failed === true ? "wb-iconButton wb-activityActionFailed" : "wb-iconButton",
517
+ "aria-label": label,
518
+ icon,
519
+ onClick
520
+ }));
521
+ }
522
+ //#endregion
487
523
  //#region ../shared/dist/components/ApprovalDetail.js
488
524
  function callOf(snapshot, callId) {
489
525
  if (callId === void 0) return void 0;
@@ -527,6 +563,14 @@ function ApprovalDetail(props) {
527
563
  });
528
564
  }
529
565
  //#endregion
566
+ //#region ../shared/dist/components/ApprovalPlan.js
567
+ function ApprovalPlan({ rows, hint, warn, children }) {
568
+ return h("div", { className: "wb-approvalPlan" }, hint === void 0 ? null : h("p", { className: "wb-approvalHint" }, hint), h("dl", { className: "wb-approvalRows" }, rows.map((row, index) => h("div", {
569
+ className: "wb-approvalRow",
570
+ key: String(index)
571
+ }, h("dt", { className: "wb-approvalLabel" }, row.label), h("dd", { className: "wb-approvalValue" }, row.value)))), children, warn === void 0 ? null : h("p", { className: "wb-approvalWarn" }, warn));
572
+ }
573
+ //#endregion
530
574
  //#region ../shared/dist/components/CardHead.js
531
575
  function CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onToggleGear, platformHref, platform, platformTitle }) {
532
576
  const refreshLabel = refreshing ? t("rightbar.refreshing") : t("rightbar.refresh");
@@ -575,6 +619,17 @@ function CardHead({ t, title, meta, refreshing, onRefresh, gear, gearOpen, onTog
575
619
  })));
576
620
  }
577
621
  //#endregion
622
+ //#region ../shared/dist/components/Card.js
623
+ function Card({ t, title, refreshing, onRefresh, meta, head, children }) {
624
+ return h("section", { className: "wb-card" }, head === void 0 ? h(CardHead, {
625
+ t,
626
+ title,
627
+ refreshing,
628
+ onRefresh,
629
+ meta
630
+ }) : head, h("div", { className: "wb-cardBody" }, children));
631
+ }
632
+ //#endregion
578
633
  //#region ../shared/dist/components/ChoiceGroup.js
579
634
  function ChoiceGroup({ label, name, value, options, disabled, onChange }) {
580
635
  return h("div", {
@@ -661,6 +716,12 @@ function MockStrip({ mocks, index, onPick, note, real }) {
661
716
  }, mock.label)));
662
717
  }
663
718
  //#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
664
725
  //#region ../shared/dist/components/ResourceStates.js
665
726
  function SkeletonRows({ rows = 4 }) {
666
727
  return h("div", {
@@ -688,6 +749,14 @@ function EmptyState({ text, icon = null, compact = false }) {
688
749
  });
689
750
  }
690
751
  //#endregion
752
+ //#region ../shared/dist/components/Rows.js
753
+ function Rows({ children }) {
754
+ return h("div", { className: "wb-rows" }, children);
755
+ }
756
+ function Row({ label, value }) {
757
+ return h("div", { className: "wb-row" }, h("span", { className: "wb-rowKey" }, label), h("span", { className: "wb-rowValue" }, value));
758
+ }
759
+ //#endregion
691
760
  //#region ../shared/dist/components/SaveBar.js
692
761
  function SaveBar({ busy, disabled, labels, onCancel, onSave }) {
693
762
  return h("div", { className: "wb-formActions" }, h(Button, {
@@ -705,6 +774,25 @@ function SaveBar({ busy, disabled, labels, onCancel, onSave }) {
705
774
  }, busy ? labels.saving : labels.save));
706
775
  }
707
776
  //#endregion
777
+ //#region ../shared/dist/components/SettingsSection.js
778
+ function SettingsSection({ label, title, action, children }) {
779
+ return h("section", {
780
+ className: "wb-settings",
781
+ role: "group",
782
+ "aria-label": label
783
+ }, h("header", { className: "wb-settingsHead" }, h("span", { className: "wb-settingsTitle" }, title), action), children);
784
+ }
785
+ //#endregion
786
+ //#region ../shared/dist/components/Stack.js
787
+ function Stack({ children }) {
788
+ return h("div", { className: "wb-stack" }, children);
789
+ }
790
+ //#endregion
791
+ //#region ../shared/dist/components/StateBlock.js
792
+ function StateBlock({ title, dot, hint, actions, resolving, children }) {
793
+ return h("div", { className: "wb-stateBlock" }, title === void 0 && dot === void 0 ? null : h("p", { className: "wb-stateBlockTitle" }, dot, title), resolving === void 0 ? null : h("p", { className: "wb-stateBlockResolving" }, resolving), hint === void 0 ? null : h("p", { className: "wb-stateBlockHint" }, hint), children, actions === void 0 ? null : h("div", { className: "wb-stateBlockActions" }, actions));
794
+ }
795
+ //#endregion
708
796
  //#region ../shared/dist/components/TextField.js
709
797
  function TextField({ invalid = false, className, ...rest }) {
710
798
  return h("input", {
@@ -796,6 +884,20 @@ function IconModules({ size = 16 }) {
796
884
  strokeWidth: "1.2"
797
885
  }));
798
886
  }
887
+ function IconPanelScreen({ size = 16 }) {
888
+ return h("svg", {
889
+ width: size,
890
+ height: size,
891
+ viewBox: "0 0 1024 1024",
892
+ fill: "currentColor",
893
+ xmlns: "http://www.w3.org/2000/svg",
894
+ "aria-hidden": "true",
895
+ style: {
896
+ display: "block",
897
+ overflow: "hidden"
898
+ }
899
+ }, h("path", { d: "M939 112c17.673 0 32 14.327 32 32v554.667c0 17.673-14.327 32-32 32l-394.5-0.001v96c0 3.74-0.642 7.331-1.82 10.668H768.4c17.673 0 32 14.326 32 32 0 17.496-14.042 31.712-31.47 31.995l-0.53 0.004H256.6c-17.673 0-32-14.327-32-32 0-17.496 14.042-31.713 31.47-31.995l0.53-0.005h225.721a31.923 31.923 0 0 1-1.817-10.137l-0.004-0.53v-96H86c-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V144c0-17.673 14.327-32 32-32z m-32 64H118v490.666h789V176zM341.9 432c17.496 0 31.713 14.042 31.996 31.47l0.004 0.53v85.333c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V464c0-17.673 14.327-32 32-32z m170.6-85.333c17.496 0 31.713 14.041 31.996 31.47l0.004 0.53v170.666c0 17.673-14.327 32-32 32-17.496 0-31.713-14.041-31.996-31.47l-0.004-0.53V378.667c0-17.673 14.327-32 32-32z m170.6-85.334c17.496 0 31.713 14.042 31.996 31.471l0.004 0.53v256c0 17.672-14.327 32-32 32-17.496 0-31.713-14.042-31.996-31.471l-0.004-0.53v-256c0-17.673 14.327-32 32-32z" }));
900
+ }
799
901
  //#endregion
800
902
  //#region ../shared/dist/config/storage.js
801
903
  function readText(key) {
@@ -902,7 +1004,7 @@ var en = {
902
1004
  "panels.market.empty": "No modules available",
903
1005
  "panels.market.installedSection": "Installed",
904
1006
  "panels.market.moduleOutdated": "update available",
905
- "panels.market.moduleRestartHint": "it may need a restart after installing",
1007
+ "panels.market.moduleRestartHint": "installed but not active — restart dsh once to bring it up",
906
1008
  "panels.market.restartNeeded": "The new version is installed — restart once to pick it up.",
907
1009
  "panels.market.foot": "After installing, enable it in the panel page of that project.",
908
1010
  "panels.market.recheck": "Check for updates",
@@ -1098,13 +1200,16 @@ var en = {
1098
1200
  "rightbar.label": "Data panels",
1099
1201
  "rightbar.expand": "Expand the data panel",
1100
1202
  "rightbar.collapse": "Collapse the data panel",
1203
+ "rightbar.column.label": "Right column",
1204
+ "rightbar.column.workbench": "Workbench panel",
1205
+ "rightbar.column.dsh": "dsh panel",
1101
1206
  "rightbar.refresh": "Refresh",
1102
1207
  "rightbar.refreshing": "Refreshing…",
1103
1208
  "rightbar.updatedAt": "updated {time}",
1104
1209
  "rightbar.noProject": "The current session has no workspace",
1105
1210
  "coding.notARepo.title": "This workspace is not a Coding repository",
1106
1211
  "error.unknown": "Something went wrong",
1107
- "board.title": "Board",
1212
+ "board.title": "Workbench panel",
1108
1213
  "panel.conversation": "Conversation",
1109
1214
  "panels.label": "Global panels"
1110
1215
  };
@@ -1191,7 +1296,7 @@ var zh = {
1191
1296
  "panels.market.empty": "暂无可用模块",
1192
1297
  "panels.market.installedSection": "已装",
1193
1298
  "panels.market.moduleOutdated": "有新版",
1194
- "panels.market.moduleRestartHint": "安装完成后可能需要重启才生效",
1299
+ "panels.market.moduleRestartHint": "装好了但还没生效 —— 重启一次 dsh 就会出来",
1195
1300
  "panels.market.restartNeeded": "新版装好了,重启一次才生效。",
1196
1301
  "panels.market.foot": "装好后到那个项目的面板页勾选它,模块才会出现。",
1197
1302
  "panels.market.recheck": "重新检查更新",
@@ -1387,13 +1492,16 @@ var zh = {
1387
1492
  "rightbar.label": "数据面板",
1388
1493
  "rightbar.expand": "展开数据面板",
1389
1494
  "rightbar.collapse": "收起数据面板",
1495
+ "rightbar.column.label": "右侧栏",
1496
+ "rightbar.column.workbench": "工作台面板",
1497
+ "rightbar.column.dsh": "dsh 面板",
1390
1498
  "rightbar.refresh": "刷新",
1391
1499
  "rightbar.refreshing": "刷新中…",
1392
1500
  "rightbar.updatedAt": "更新于 {time}",
1393
1501
  "rightbar.noProject": "当前会话没有所属项目",
1394
1502
  "coding.notARepo.title": "这个项目不是 Coding 仓库",
1395
1503
  "error.unknown": "出错了",
1396
- "board.title": "看板",
1504
+ "board.title": "工作台面板",
1397
1505
  "panel.conversation": "对话",
1398
1506
  "panels.label": "全局面板"
1399
1507
  };
@@ -1500,9 +1608,14 @@ function excerpt(text, limit = 80) {
1500
1608
  var dist_exports = /* @__PURE__ */ __exportAll({
1501
1609
  ACTIONS_PREFIX: () => ACTIONS_PREFIX,
1502
1610
  API_PREFIX: () => API_PREFIX,
1611
+ ActivityAction: () => ActivityAction,
1612
+ ActivityBlock: () => ActivityBlock,
1613
+ ActivityLine: () => ActivityLine,
1503
1614
  ApprovalDetail: () => ApprovalDetail,
1615
+ ApprovalPlan: () => ApprovalPlan,
1504
1616
  CODING_ISSUES_SERVICE: () => CODING_ISSUES_SERVICE,
1505
1617
  CONTEXT_MARKER_NAME: () => CONTEXT_MARKER_NAME,
1618
+ Card: () => Card,
1506
1619
  CardHead: () => CardHead,
1507
1620
  CenteredState: () => CenteredState,
1508
1621
  ChoiceGroup: () => ChoiceGroup,
@@ -1517,6 +1630,7 @@ var dist_exports = /* @__PURE__ */ __exportAll({
1517
1630
  IconBrandMark: () => IconBrandMark,
1518
1631
  IconConversation: () => IconConversation,
1519
1632
  IconModules: () => IconModules,
1633
+ IconPanelScreen: () => IconPanelScreen,
1520
1634
  LOCALES: () => LOCALES,
1521
1635
  LOCALE_NS: () => LOCALE_NS,
1522
1636
  LONG_TASK_IDLE_MS: () => LONG_TASK_IDLE_MS,
@@ -1524,6 +1638,7 @@ var dist_exports = /* @__PURE__ */ __exportAll({
1524
1638
  LongTaskRow: () => LongTaskRow,
1525
1639
  MIN_BUSY_MS: () => 500,
1526
1640
  MockStrip: () => MockStrip,
1641
+ Note: () => Note,
1527
1642
  OPENCLI_MAX_CONCURRENT: () => 4,
1528
1643
  OPENCLI_PIN: () => OPENCLI_PIN,
1529
1644
  OPENCLI_TIMEOUT_MS: () => OPENCLI_TIMEOUT_MS,
@@ -1534,10 +1649,17 @@ var dist_exports = /* @__PURE__ */ __exportAll({
1534
1649
  PREFS_PREFIX: () => PREFS_PREFIX,
1535
1650
  PROBE_TTL_MS: () => PROBE_TTL_MS,
1536
1651
  PROVISION_PREFIX: () => PROVISION_PREFIX,
1652
+ RIGHTBAR_FULLSCREEN_WIDTH: () => 768,
1653
+ Row: () => Row,
1654
+ Rows: () => Rows,
1537
1655
  STORAGE_KEY_PROJECT: () => STORAGE_KEY_PROJECT,
1538
1656
  STORAGE_KEY_RIGHTBAR: () => STORAGE_KEY_RIGHTBAR,
1657
+ STORAGE_KEY_RIGHTBAR_COLUMN: () => STORAGE_KEY_RIGHTBAR_COLUMN,
1539
1658
  SaveBar: () => SaveBar,
1659
+ SettingsSection: () => SettingsSection,
1540
1660
  SkeletonRows: () => SkeletonRows,
1661
+ Stack: () => Stack,
1662
+ StateBlock: () => StateBlock,
1541
1663
  TextField: () => TextField,
1542
1664
  UNITS_SERVICE: () => UNITS_SERVICE,
1543
1665
  VERSION_CHECK_TIMEOUT_MS: () => VERSION_CHECK_TIMEOUT_MS,
@@ -1584,6 +1706,7 @@ var dist_exports = /* @__PURE__ */ __exportAll({
1584
1706
  unitFactScope: () => unitFactScope,
1585
1707
  useCallback: () => useCallback,
1586
1708
  useEffect: () => useEffect,
1709
+ useLayoutEffect: () => useLayoutEffect,
1587
1710
  useMemo: () => useMemo,
1588
1711
  useRef: () => useRef,
1589
1712
  useState: () => useState,
@@ -1917,6 +2040,14 @@ function shouldProbeOnEnter(input) {
1917
2040
  return input.now - input.checkedAt >= input.staleMs;
1918
2041
  }
1919
2042
  //#endregion
2043
+ //#region src/app/layouts/rightbar/market-settle.ts
2044
+ var MODULE_SETTLE_MS = 15e3;
2045
+ function holdBack(installed, roster, active, previous) {
2046
+ const pending = installed.filter((unit) => !roster.has(unit));
2047
+ const fresh = previous === null ? [] : pending.filter((unit) => !previous.has(unit));
2048
+ return pending.filter((unit) => active.has(unit) || fresh.includes(unit));
2049
+ }
2050
+ //#endregion
1920
2051
  //#region src/app/layouts/rightbar/market-mock.ts
1921
2052
  function installable(manifest) {
1922
2053
  return {
@@ -2508,20 +2639,21 @@ var manifest = {
2508
2639
  host: { inject: [] }
2509
2640
  };
2510
2641
  function FixtureCard({ t, onRefresh }) {
2511
- return /* @__PURE__ */ h("section", { className: "wb-card" }, /* @__PURE__ */ h(CardHead, {
2642
+ return /* @__PURE__ */ h(Card, {
2512
2643
  t,
2513
2644
  title: t(KEY.cardTitle),
2514
2645
  meta: t(KEY.cardMeta),
2515
2646
  refreshing: false,
2516
2647
  onRefresh
2517
- }), /* @__PURE__ */ h("div", { className: "wb-cardBody" }, /* @__PURE__ */ h("div", { className: "wb-rows" }, [
2648
+ }, /* @__PURE__ */ h(Rows, null, [
2518
2649
  1,
2519
2650
  2,
2520
2651
  3
2521
- ].map((n) => /* @__PURE__ */ h("div", {
2522
- className: "wb-row",
2523
- key: String(n)
2524
- }, /* @__PURE__ */ h("span", { className: "wb-rowKey" }, t(KEY.rowKey)), /* @__PURE__ */ h("span", { className: "wb-rowValue" }, t(KEY.rowValue, { n: String(n) })))))));
2652
+ ].map((n) => /* @__PURE__ */ h(Row, {
2653
+ key: String(n),
2654
+ label: t(KEY.rowKey),
2655
+ value: t(KEY.rowValue, { n: String(n) })
2656
+ }))));
2525
2657
  }
2526
2658
  var FIXTURE_FACE = {
2527
2659
  manifest,
@@ -2556,7 +2688,17 @@ var MARKET_DOT = {
2556
2688
  unchecked: "idle",
2557
2689
  unknown: "idle"
2558
2690
  };
2559
- function installedRows(modules, manifests, listed) {
2691
+ function mergeTitles(known, manifests) {
2692
+ let next = null;
2693
+ for (const manifest of manifests) {
2694
+ const titleKey = manifest.card?.titleKey;
2695
+ if (titleKey === void 0 || known.has(manifest.id)) continue;
2696
+ next ??= new Map(known);
2697
+ next.set(manifest.id, titleKey);
2698
+ }
2699
+ return next ?? known;
2700
+ }
2701
+ function installedRows(modules, manifests, listed, known) {
2560
2702
  const titles = new Map(manifests.map((manifest) => [manifest.id, manifest.card?.titleKey]));
2561
2703
  const rows = [];
2562
2704
  for (const module of modules) {
@@ -2565,8 +2707,9 @@ function installedRows(modules, manifests, listed) {
2565
2707
  const outdated = latest !== void 0 && latest !== module.installed;
2566
2708
  rows.push({
2567
2709
  id: module.unit,
2568
- titleKey: titles.get(module.unit) ?? module.pkg,
2710
+ titleKey: titles.get(module.unit) ?? known?.get(module.unit) ?? module.pkg,
2569
2711
  state: outdated ? "outdated" : "installed",
2712
+ hint: "panels.market.moduleRestartHint",
2570
2713
  pkg: module.pkg,
2571
2714
  canInstall: false,
2572
2715
  canUpdate: outdated,
@@ -2625,6 +2768,12 @@ function noteOf(state, install, manifest) {
2625
2768
  function isOnMachine(state) {
2626
2769
  return state === "installed" || state === "outdated";
2627
2770
  }
2771
+ function liveManifests(manifests, capabilities, installed) {
2772
+ if (capabilities === null || installed === null) return manifests;
2773
+ const gone = new Set(marketRows(manifests, capabilities).filter((row) => !installed.has(row.id) && marketActions$1(row).length === 0 && (row.state === "unknown" || row.state === "unchecked")).map((row) => row.id));
2774
+ if (gone.size === 0) return manifests;
2775
+ return manifests.filter((manifest) => !gone.has(manifest.id));
2776
+ }
2628
2777
  function marketHasUpdates(rows, shared = []) {
2629
2778
  return rows.some((row) => row.state === "outdated" || row.moduleUpdate !== void 0) || shared.some((row) => row.state === "outdated" || row.state === "unsatisfied");
2630
2779
  }
@@ -2754,6 +2903,7 @@ function sharedRows(manifests, capabilities) {
2754
2903
  ...bucket.installed === void 0 ? {} : { installed: bucket.installed },
2755
2904
  ...bucket.latest === void 0 ? {} : { latest: bucket.latest }
2756
2905
  };
2906
+ const detail = bucket.purpose === void 0 && bucket.command === void 0 ? void 0 : `${bucket.label}${bucket.purpose === void 0 ? "" : ` —— ${bucket.purpose}`}${bucket.command === void 0 ? "" : ` · ${bucket.command}`}`;
2757
2907
  rows.push({
2758
2908
  id: `${bucket.kind}:${bucket.name}`,
2759
2909
  label: bucket.label,
@@ -2761,7 +2911,7 @@ function sharedRows(manifests, capabilities) {
2761
2911
  state,
2762
2912
  canUpdate: state === "outdated" || state === "unsatisfied",
2763
2913
  ...version === void 0 ? {} : { version },
2764
- detail: `${bucket.label}${bucket.purpose === void 0 ? "" : ` —— ${bucket.purpose}`}${bucket.command === void 0 ? "" : ` · ${bucket.command}`}`
2914
+ ...detail === void 0 ? {} : { detail }
2765
2915
  });
2766
2916
  }
2767
2917
  return rows;
@@ -2818,15 +2968,188 @@ function useHostWrite(options) {
2818
2968
  clear
2819
2969
  };
2820
2970
  }
2821
- var PanelFoot_module_default = {
2822
- foot: "_foot_1us83_1",
2823
- footText: "_footText_1us83_12",
2824
- footTextMd: "_footTextMd_1us83_17"
2971
+ //#endregion
2972
+ //#region src/app/layouts/market/add-module-text.ts
2973
+ var GUIDE_ITEMS = [
2974
+ {
2975
+ titleKey: "panels.market.add.guideIdTitle",
2976
+ exampleKey: "panels.market.add.guideIdExample",
2977
+ hintKey: "panels.market.add.guideIdHint"
2978
+ },
2979
+ {
2980
+ titleKey: "panels.market.add.guideGitTitle",
2981
+ exampleKey: "panels.market.add.guideGitExample",
2982
+ hintKey: "panels.market.add.guideGitHint"
2983
+ },
2984
+ {
2985
+ titleKey: "panels.market.add.guidePathTitle",
2986
+ exampleKey: "panels.market.add.guidePathExample",
2987
+ hintKey: "panels.market.add.guidePathHint"
2988
+ }
2989
+ ];
2990
+ function hostOf(url) {
2991
+ try {
2992
+ return new URL(url).host;
2993
+ } catch {
2994
+ return url;
2995
+ }
2996
+ }
2997
+ var OFFICIAL_NPM_HOST = "registry.npmjs.org";
2998
+ var KNOWN_HOSTS = {
2999
+ [OFFICIAL_NPM_HOST]: "panels.market.add.registryOfficial",
3000
+ "registry.npmmirror.com": "panels.market.add.registryMirror"
3001
+ };
3002
+ function registryNameKey(host) {
3003
+ return KNOWN_HOSTS[host];
3004
+ }
3005
+ function normalizeRegistry(url) {
3006
+ const parsed = new URL(url);
3007
+ if (!parsed.pathname.endsWith("/")) parsed.pathname += "/";
3008
+ return parsed.href;
3009
+ }
3010
+ function registryKey(url, resolved) {
3011
+ const target = url ?? resolved;
3012
+ if (target === null) return "";
3013
+ try {
3014
+ return normalizeRegistry(target);
3015
+ } catch {
3016
+ return target;
3017
+ }
3018
+ }
3019
+ function registryOptions(registries) {
3020
+ const resolved = registries === null ? null : registries.resolved;
3021
+ const entries = [
3022
+ registries === null ? null : registries.registry,
3023
+ ...registries === null ? [] : registries.fallbackRegistries,
3024
+ null
3025
+ ];
3026
+ const offered = [];
3027
+ const keys = /* @__PURE__ */ new Set();
3028
+ for (const entry of entries) {
3029
+ const key = registryKey(entry, resolved);
3030
+ if (keys.has(key)) continue;
3031
+ keys.add(key);
3032
+ const url = entry ?? resolved;
3033
+ if (url === null) {
3034
+ offered.push({
3035
+ choice: {
3036
+ kind: "default",
3037
+ value: ""
3038
+ },
3039
+ host: OFFICIAL_NPM_HOST,
3040
+ nameKey: "panels.market.add.registryDefault"
3041
+ });
3042
+ continue;
3043
+ }
3044
+ const host = hostOf(url);
3045
+ const nameKey = registryNameKey(host);
3046
+ offered.push({
3047
+ choice: entry === null ? {
3048
+ kind: "default",
3049
+ value: ""
3050
+ } : {
3051
+ kind: "url",
3052
+ value: entry
3053
+ },
3054
+ host,
3055
+ ...nameKey === void 0 ? {} : { nameKey }
3056
+ });
3057
+ }
3058
+ offered.push({ choice: {
3059
+ kind: "custom",
3060
+ value: ""
3061
+ } });
3062
+ return offered;
3063
+ }
3064
+ function customRegistryAllowed(value) {
3065
+ return /^https?:\/\//.test(value.trim());
3066
+ }
3067
+ function registryOf(choice, custom) {
3068
+ if (choice.kind === "custom") return customRegistryAllowed(custom) ? custom.trim() : void 0;
3069
+ return choice.value === "" ? void 0 : choice.value;
3070
+ }
3071
+ function registryName(option, t) {
3072
+ if (option.choice.kind === "custom") return t("panels.market.add.registryCustom");
3073
+ if (option.nameKey !== void 0) return t(option.nameKey);
3074
+ return option.host ?? t("panels.market.add.registryDefault");
3075
+ }
3076
+ function optionLabel(option, t) {
3077
+ if (option.choice.kind === "custom") return t("panels.market.add.registryCustom");
3078
+ if (option.host === void 0) return t("panels.market.add.registryDefault");
3079
+ return option.nameKey === void 0 ? option.host : t("panels.market.add.registryWithHost", {
3080
+ name: t(option.nameKey),
3081
+ host: option.host
3082
+ });
3083
+ }
3084
+ var PROBLEM_KEYS = {
3085
+ "invalid-spec": "panels.market.add.problemInvalid",
3086
+ "already-installed": "panels.market.add.problemInstalled",
3087
+ "not-found": "panels.market.add.problemNotFound",
3088
+ "not-a-package": "panels.market.add.problemNotPackage",
3089
+ "not-a-bundle": "panels.market.add.problemNotBundle",
3090
+ network: "panels.market.add.problemNetwork",
3091
+ unknown: "panels.market.add.problemUnknown"
3092
+ };
3093
+ function problemKey(problem) {
3094
+ return PROBLEM_KEYS[problem] ?? PROBLEM_KEYS.unknown;
3095
+ }
3096
+ var FAILURE_KEYS = {
3097
+ network: "panels.market.add.failureNetwork",
3098
+ "spec-host": "panels.market.add.failureNetworkHost",
3099
+ "not-found": "panels.market.add.failureNotFound",
3100
+ "no-matching-version": "panels.market.add.failureNoMatchingVersion",
3101
+ "disk-full": "panels.market.add.failureDiskFull",
3102
+ permission: "panels.market.add.failurePermission",
3103
+ "build-blocked": "panels.market.add.failureBuildBlocked",
3104
+ integrity: "panels.market.add.failureIntegrity",
3105
+ timeout: "panels.market.add.failureTimeout",
3106
+ "pnpm-missing": "panels.market.add.failurePnpmMissing",
3107
+ "operation-error": "panels.market.add.failureGeneric",
3108
+ "incompatible-version": "panels.market.add.failureGeneric",
3109
+ "not-bundle": "panels.market.add.failureGeneric",
3110
+ "invalid-spec": "panels.market.add.failureGeneric",
3111
+ "bundle-in-use": "panels.market.add.failureGeneric",
3112
+ "not-removable": "panels.market.add.failureGeneric",
3113
+ "stop-profile": "panels.market.add.failureGeneric",
3114
+ "stale-approval": "panels.market.add.failureGeneric"
3115
+ };
3116
+ function failureCode(change) {
3117
+ if (change.failedAt === "spec-host") return "spec-host";
3118
+ return change.errorCode ?? change.packageResult?.kind ?? change.application;
3119
+ }
3120
+ function failureReasonKey(code) {
3121
+ return FAILURE_KEYS[code];
3122
+ }
3123
+ function failureReason(code, application, t) {
3124
+ const key = failureReasonKey(code);
3125
+ if (key !== void 0) return t(key);
3126
+ if (code === application) return t("panels.market.add.reason.unknown");
3127
+ return code;
3128
+ }
3129
+ var SUPPLY_KEYS = {
3130
+ "pending-restart": "panels.market.add.supplyPending",
3131
+ failed: "panels.market.add.supplyFailed",
3132
+ "not-a-module": "panels.market.add.notModule",
3133
+ "no-needs": void 0
2825
3134
  };
3135
+ function supplyKey(state) {
3136
+ return SUPPLY_KEYS[state];
3137
+ }
2826
3138
  //#endregion
2827
- //#region src/shared/components/PanelFoot.tsx
2828
- function PanelFoot({ text, size = "sm", children }) {
2829
- return /* @__PURE__ */ h("footer", { className: PanelFoot_module_default.foot }, /* @__PURE__ */ h("span", { className: size === "md" ? PanelFoot_module_default.footTextMd : PanelFoot_module_default.footText }, text), children ?? null);
3139
+ //#region src/app/layouts/rightbar/market-change.ts
3140
+ var SHIPPED = [
3141
+ "applied",
3142
+ "restart-required",
3143
+ "overridden"
3144
+ ];
3145
+ function changeOf(value) {
3146
+ const change = value?.change;
3147
+ if (typeof change !== "object" || change === null) return void 0;
3148
+ return typeof change.application === "string" ? change : void 0;
3149
+ }
3150
+ function changeFailure(change, t) {
3151
+ if (change === void 0 || SHIPPED.includes(change.application)) return void 0;
3152
+ return failureReason(failureCode(change), change.application, t);
2830
3153
  }
2831
3154
  var MarketPage_module_default = {
2832
3155
  marketList: "_marketList_7yq35_1",
@@ -2861,7 +3184,18 @@ var MarketPage_module_default = {
2861
3184
  marketEmptyTitle: "_marketEmptyTitle_7yq35_267"
2862
3185
  };
2863
3186
  //#endregion
2864
- //#region src/app/layouts/rightbar/MarketView.tsx
3187
+ //#region src/app/layouts/rightbar/MarketStates.tsx
3188
+ function MarketChecking({ t }) {
3189
+ return /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEmpty }, /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketChecking }, /* @__PURE__ */ h(StateDot, {
3190
+ state: "ongoing",
3191
+ size: 14
3192
+ }), t("panels.market.checking")));
3193
+ }
3194
+ function MarketEmpty({ t }) {
3195
+ return /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEmpty }, /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEmptyTitle }, t("panels.market.empty")));
3196
+ }
3197
+ //#endregion
3198
+ //#region src/app/layouts/rightbar/market-view-text.ts
2865
3199
  var PROGRESS_KEY = {
2866
3200
  install: "panels.market.installing",
2867
3201
  update: "panels.market.updating",
@@ -2878,18 +3212,22 @@ var ACTION_LABEL_KEY = {
2878
3212
  uninstall: "panels.market.uninstall",
2879
3213
  "update-dependency": "panels.market.update"
2880
3214
  };
2881
- function MarketLine({ t, row, pending, failure, onAct }) {
3215
+ //#endregion
3216
+ //#region src/app/layouts/rightbar/SharedSection.tsx
3217
+ function SharedLine({ t, row, pending, failure, onAct }) {
2882
3218
  const running = pending !== null && pending.id === row.id ? pending : null;
2883
3219
  const locked = pending !== null;
2884
- const actions = marketActions$1(row);
2885
- const stateText = t(row.moduleUpdate === void 0 ? MARKET_STATE_KEY[row.state] : "panels.market.moduleOutdated");
3220
+ const actions = sharedActions(row);
3221
+ const stateText = t(SHARED_STATE_KEY[row.state]);
3222
+ const version = row.version;
3223
+ const name = /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketName }, row.label, version === void 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketVersion }, version.installed !== void 0 && version.latest !== void 0 && version.installed !== version.latest ? t("panels.market.versionArrow", {
3224
+ from: version.installed,
3225
+ to: version.latest
3226
+ }) : version.installed ?? version.latest ?? ""));
2886
3227
  return /* @__PURE__ */ h("li", { className: MarketPage_module_default.marketRow }, /* @__PURE__ */ h("span", {
2887
3228
  className: MarketPage_module_default.marketIcon,
2888
3229
  "aria-hidden": "true"
2889
- }, /* @__PURE__ */ h(IconModules, { size: 18 })), /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketMain }, /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketName }, t(row.titleKey), row.version === void 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketVersion }, row.version.installed !== void 0 && row.version.latest !== void 0 && row.version.installed !== row.version.latest ? t("panels.market.versionArrow", {
2890
- from: row.version.installed,
2891
- to: row.version.latest
2892
- }) : row.version.installed ?? row.version.latest ?? "")), /* @__PURE__ */ h(Tip, { label: stateText }, /* @__PURE__ */ h("span", {
3230
+ }, /* @__PURE__ */ h(IconModules, { size: 18 })), /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketMain }, row.detail === void 0 ? name : /* @__PURE__ */ h(Tip, { label: row.detail }, name), /* @__PURE__ */ h("span", {
2893
3231
  className: MarketPage_module_default.marketDesc,
2894
3232
  role: "img",
2895
3233
  "aria-label": stateText
@@ -2897,39 +3235,57 @@ function MarketLine({ t, row, pending, failure, onAct }) {
2897
3235
  state: "ongoing",
2898
3236
  size: 14
2899
3237
  }) : /* @__PURE__ */ h(StateDot, {
2900
- state: MARKET_DOT[row.state],
3238
+ state: SHARED_DOT[row.state],
2901
3239
  size: 9
2902
- }), stateText, row.hint === void 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketUsedBy }, t(row.hint))))), /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ h(StateDot, {
3240
+ }), stateText, /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketUsedBy }, t("panels.market.sharedUsedBy", { modules: row.usedByKeys.map((key) => t(key)).join(t("panels.market.listSeparator")) })))), /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ h(StateDot, {
2903
3241
  state: "ongoing",
2904
3242
  size: 14
2905
- }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
2906
- const danger = action === "uninstall" || action === "remove-bundle";
2907
- return /* @__PURE__ */ h(Button, {
2908
- key: action,
2909
- type: "button",
2910
- size: "sm",
2911
- variant: action === "install" ? "primary" : "outline",
2912
- className: danger ? "wb-dangerAction" : void 0,
2913
- icon: danger ? /* @__PURE__ */ h(IconTrashOutlineRegular, { size: 13 }) : void 0,
2914
- "aria-label": danger ? t("panels.market.uninstallLabel", { name: t(row.titleKey) }) : void 0,
2915
- disabled: locked,
2916
- onClick: () => onAct(action)
2917
- }, t(ACTION_LABEL_KEY[action]));
2918
- }))), row.note === void 0 ? null : /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketNote }, t(row.note.key, row.note.params)), failure === null ? null : /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketFailure }, failure));
3243
+ }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => /* @__PURE__ */ h(Button, {
3244
+ key: action,
3245
+ type: "button",
3246
+ size: "sm",
3247
+ variant: "outline",
3248
+ disabled: locked,
3249
+ onClick: () => onAct(action)
3250
+ }, t(ACTION_LABEL_KEY[action]))))), failure === null ? null : /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketFailure }, failure));
2919
3251
  }
2920
- function SharedLine({ t, row, pending, failure, onAct }) {
3252
+ function SharedSection({ t, rows, pending, failureOf, act }) {
3253
+ if (rows.length === 0) return null;
3254
+ return /* @__PURE__ */ h("section", { className: MarketPage_module_default.marketSection }, /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketSectionHead }, /* @__PURE__ */ h("h2", { className: MarketPage_module_default.marketSectionTitle }, t("panels.market.sectionShared")), /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketSectionCount }, rows.length)), /* @__PURE__ */ h("ul", { className: MarketPage_module_default.marketList }, rows.map((row) => /* @__PURE__ */ h(SharedLine, {
3255
+ key: row.id,
3256
+ t,
3257
+ row,
3258
+ pending,
3259
+ failure: failureOf(row.id),
3260
+ onAct: (action) => void act(row.id, action)
3261
+ }))));
3262
+ }
3263
+ var PanelFoot_module_default = {
3264
+ foot: "_foot_1us83_1",
3265
+ footText: "_footText_1us83_12",
3266
+ footTextMd: "_footTextMd_1us83_17"
3267
+ };
3268
+ //#endregion
3269
+ //#region src/shared/components/PanelFoot.tsx
3270
+ function PanelFoot({ text, size = "sm", children }) {
3271
+ return /* @__PURE__ */ h("footer", { className: PanelFoot_module_default.foot }, /* @__PURE__ */ h("span", { className: size === "md" ? PanelFoot_module_default.footTextMd : PanelFoot_module_default.footText }, text), children ?? null);
3272
+ }
3273
+ //#endregion
3274
+ //#region src/app/layouts/rightbar/MarketView.tsx
3275
+ var CONFIRM_UNINSTALL = ["uninstall", "remove-bundle"];
3276
+ var CONFIRM_REMOVE = ["remove-bundle"];
3277
+ function MarketLine({ t, row, pending, failure, onAct }) {
2921
3278
  const running = pending !== null && pending.id === row.id ? pending : null;
2922
3279
  const locked = pending !== null;
2923
- const actions = sharedActions(row);
2924
- const stateText = t(SHARED_STATE_KEY[row.state]);
2925
- const version = row.version;
3280
+ const actions = marketActions$1(row);
3281
+ const stateText = t(row.moduleUpdate === void 0 ? MARKET_STATE_KEY[row.state] : "panels.market.moduleOutdated");
2926
3282
  return /* @__PURE__ */ h("li", { className: MarketPage_module_default.marketRow }, /* @__PURE__ */ h("span", {
2927
3283
  className: MarketPage_module_default.marketIcon,
2928
3284
  "aria-hidden": "true"
2929
- }, /* @__PURE__ */ h(IconModules, { size: 18 })), /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketMain }, /* @__PURE__ */ h(Tip, { label: row.detail ?? "" }, /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketName }, row.label, version === void 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketVersion }, version.installed !== void 0 && version.latest !== void 0 && version.installed !== version.latest ? t("panels.market.versionArrow", {
2930
- from: version.installed,
2931
- to: version.latest
2932
- }) : version.installed ?? version.latest ?? ""))), /* @__PURE__ */ h(Tip, { label: stateText }, /* @__PURE__ */ h("span", {
3285
+ }, /* @__PURE__ */ h(IconModules, { size: 18 })), /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketMain }, /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketName }, t(row.titleKey), row.version === void 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketVersion }, row.version.installed !== void 0 && row.version.latest !== void 0 && row.version.installed !== row.version.latest ? t("panels.market.versionArrow", {
3286
+ from: row.version.installed,
3287
+ to: row.version.latest
3288
+ }) : row.version.installed ?? row.version.latest ?? "")), /* @__PURE__ */ h("span", {
2933
3289
  className: MarketPage_module_default.marketDesc,
2934
3290
  role: "img",
2935
3291
  "aria-label": stateText
@@ -2937,19 +3293,25 @@ function SharedLine({ t, row, pending, failure, onAct }) {
2937
3293
  state: "ongoing",
2938
3294
  size: 14
2939
3295
  }) : /* @__PURE__ */ h(StateDot, {
2940
- state: SHARED_DOT[row.state],
3296
+ state: MARKET_DOT[row.state],
2941
3297
  size: 9
2942
- }), stateText, /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketUsedBy }, t("panels.market.sharedUsedBy", { modules: row.usedByKeys.map((key) => t(key)).join(t("panels.market.listSeparator")) }))))), /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ h(StateDot, {
3298
+ }), stateText, row.hint === void 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketUsedBy }, t(row.hint)))), /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEnd }, running !== null ? /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketProgress }, /* @__PURE__ */ h(StateDot, {
2943
3299
  state: "ongoing",
2944
3300
  size: 14
2945
- }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => /* @__PURE__ */ h(Button, {
2946
- key: action,
2947
- type: "button",
2948
- size: "sm",
2949
- variant: "outline",
2950
- disabled: locked,
2951
- onClick: () => onAct(action)
2952
- }, t(ACTION_LABEL_KEY[action]))))), failure === null ? null : /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketFailure }, failure));
3301
+ }), t(PROGRESS_KEY[running.action])) : actions.length === 0 ? null : /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketActions }, actions.map((action) => {
3302
+ const danger = action === "uninstall" || action === "remove-bundle";
3303
+ return /* @__PURE__ */ h(Button, {
3304
+ key: action,
3305
+ type: "button",
3306
+ size: "sm",
3307
+ variant: action === "install" ? "primary" : "outline",
3308
+ className: danger ? "wb-dangerAction" : void 0,
3309
+ icon: danger ? /* @__PURE__ */ h(IconTrashOutlineRegular, { size: 13 }) : void 0,
3310
+ "aria-label": danger ? t("panels.market.uninstallLabel", { name: t(row.titleKey) }) : void 0,
3311
+ disabled: locked,
3312
+ onClick: () => onAct(action)
3313
+ }, t(ACTION_LABEL_KEY[action]));
3314
+ }))), row.note === void 0 ? null : /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketNote }, t(row.note.key, row.note.params)), failure === null ? null : /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketFailure }, failure));
2953
3315
  }
2954
3316
  function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
2955
3317
  const [acknowledged, setAcknowledged] = useState(false);
@@ -2967,7 +3329,7 @@ function ConfirmUninstall({ t, name, onConfirm, onCancel }) {
2967
3329
  onConfirm
2968
3330
  });
2969
3331
  }
2970
- function MarketSection({ t, titleKey, rows, pending, failureOf, act, confirmAction, onConfirming }) {
3332
+ function MarketSection({ t, titleKey, rows, pending, failureOf, act, confirmActions, onConfirming }) {
2971
3333
  if (rows.length === 0) return null;
2972
3334
  return /* @__PURE__ */ h("section", { className: MarketPage_module_default.marketSection }, /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketSectionHead }, /* @__PURE__ */ h("h2", { className: MarketPage_module_default.marketSectionTitle }, t(titleKey)), /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketSectionCount }, rows.length)), /* @__PURE__ */ h("ul", { className: MarketPage_module_default.marketList }, rows.map((row) => /* @__PURE__ */ h(MarketLine, {
2973
3335
  key: row.id,
@@ -2975,29 +3337,50 @@ function MarketSection({ t, titleKey, rows, pending, failureOf, act, confirmActi
2975
3337
  row,
2976
3338
  pending,
2977
3339
  failure: failureOf(row.id),
2978
- onAct: (action) => action === confirmAction ? onConfirming(row.id) : void act(row.id, action)
3340
+ onAct: (action) => confirmActions.includes(action) ? onConfirming(row.id) : void act(row.id, action)
2979
3341
  }))));
2980
3342
  }
2981
- function MarketView({ t, manifests, capabilities, freshness, onChanged, updates, installed, installedRead, mock }) {
2982
- const source = mock?.manifests ?? manifests;
3343
+ function MarketView({ t, manifests, capabilities, freshness, onChanged, updates, installed, installedRead, settling, mock }) {
3344
+ const [titles, setTitles] = useState(/* @__PURE__ */ new Map());
3345
+ useEffect(() => {
3346
+ if (mock === void 0) setTitles((known) => mergeTitles(known, manifests));
3347
+ }, [manifests, mock]);
3348
+ const catalog = mock?.manifests ?? manifests;
2983
3349
  const effective = mock === void 0 ? capabilities : mock.capabilities;
3350
+ const source = liveManifests(catalog, effective, mock === void 0 && installed !== void 0 ? new Set(installed.map((item) => item.unit)) : null);
2984
3351
  const rows = marketRows(source, effective, mock?.updates ?? updates ?? {});
2985
3352
  const shared = sharedRows(source, effective);
2986
- const installedList = installedRows(mock?.installed ?? installed ?? [], source, new Set(rows.map((row) => row.id)));
2987
- const rowById = new Map([...rows, ...installedList].map((row) => [row.id, row]));
2988
3353
  const [pending, setPending] = useState(mock?.pending ?? null);
2989
3354
  const provision = useHostWrite({
2990
3355
  channel: "provision",
2991
3356
  networkText: t("panels.failed")
2992
3357
  });
2993
3358
  const [confirming, setConfirming] = useState(mock?.confirming ?? null);
2994
- const confirmingRow = confirming === null ? void 0 : rowById.get(confirming);
2995
3359
  const [failed, setFailed] = useState(mock?.failure ?? null);
3360
+ const removing = pending !== null && pending.action === "remove-bundle" && failed?.id !== pending.id ? pending.id : null;
3361
+ const installedList = installedRows((mock?.installed ?? installed ?? []).filter((module) => !(settling?.has(module.unit) ?? false) && module.unit !== removing), source, new Set(rows.map((row) => row.id)), titles);
3362
+ const pendingRow = removing === null || pending === null || rows.some((row) => row.id === removing) ? void 0 : {
3363
+ id: removing,
3364
+ titleKey: pending.titleKey ?? titles.get(removing) ?? removing,
3365
+ state: "installed",
3366
+ canInstall: false,
3367
+ canUpdate: false,
3368
+ canUninstall: true,
3369
+ ...pending.pkg === void 0 ? {} : { pkg: pending.pkg },
3370
+ ...pending.version === void 0 ? {} : { version: { installed: pending.version } }
3371
+ };
3372
+ const shown = pendingRow === void 0 ? rows : [...rows, pendingRow];
3373
+ const rowById = new Map([...shown, ...installedList].map((row) => [row.id, row]));
3374
+ const confirmingRow = confirming === null ? void 0 : rowById.get(confirming);
2996
3375
  const act = async (id, action) => {
2997
3376
  if (mock !== void 0) return;
3377
+ const row = rowById.get(id);
2998
3378
  setPending({
2999
3379
  id,
3000
- action
3380
+ action,
3381
+ ...row?.titleKey === void 0 ? {} : { titleKey: row.titleKey },
3382
+ ...row?.pkg === void 0 ? {} : { pkg: row.pkg },
3383
+ ...row?.version?.installed === void 0 ? {} : { version: row.version.installed }
3001
3384
  });
3002
3385
  setConfirming(null);
3003
3386
  setFailed(null);
@@ -3014,20 +3397,23 @@ function MarketView({ t, manifests, capabilities, freshness, onChanged, updates,
3014
3397
  });
3015
3398
  setPending(null);
3016
3399
  if (!outcome.ok) {
3400
+ onChanged();
3017
3401
  setFailed({
3018
3402
  id,
3019
3403
  message: t("panels.market.failed", { reason: outcome.message })
3020
3404
  });
3021
3405
  return;
3022
3406
  }
3407
+ const reason = changeFailure(changeOf(outcome.value), t);
3023
3408
  onChanged();
3409
+ if (reason !== void 0) setFailed({
3410
+ id,
3411
+ message: t("panels.market.failed", { reason })
3412
+ });
3024
3413
  };
3025
- if (!(freshness.loaded && installedRead !== false)) return /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEmpty }, /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketChecking }, /* @__PURE__ */ h(StateDot, {
3026
- state: "ongoing",
3027
- size: 14
3028
- }), t("panels.market.checking")));
3029
- if (rows.length === 0 && installedList.length === 0) return /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEmpty }, /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketEmptyTitle }, t("panels.market.empty")));
3030
- return /* @__PURE__ */ h(Fragment, null, marketSections(rows).map((section) => /* @__PURE__ */ h(MarketSection, {
3414
+ if (!(freshness.loaded && installedRead !== false) || (settling?.size ?? 0) > 0 && shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ h(MarketChecking, { t });
3415
+ if (shown.length === 0 && installedList.length === 0) return /* @__PURE__ */ h(MarketEmpty, { t });
3416
+ return /* @__PURE__ */ h(Fragment, null, marketSections(shown).map((section) => /* @__PURE__ */ h(MarketSection, {
3031
3417
  key: section.id,
3032
3418
  t,
3033
3419
  titleKey: section.titleKey,
@@ -3035,7 +3421,7 @@ function MarketView({ t, manifests, capabilities, freshness, onChanged, updates,
3035
3421
  pending,
3036
3422
  failureOf: (id) => failed?.id === id ? failed.message : null,
3037
3423
  act,
3038
- confirmAction: "uninstall",
3424
+ confirmActions: CONFIRM_UNINSTALL,
3039
3425
  onConfirming: setConfirming
3040
3426
  })), /* @__PURE__ */ h(MarketSection, {
3041
3427
  t,
@@ -3044,19 +3430,18 @@ function MarketView({ t, manifests, capabilities, freshness, onChanged, updates,
3044
3430
  pending,
3045
3431
  failureOf: (id) => failed?.id === id ? failed.message : null,
3046
3432
  act,
3047
- confirmAction: "remove-bundle",
3433
+ confirmActions: CONFIRM_REMOVE,
3048
3434
  onConfirming: setConfirming
3049
3435
  }), /* @__PURE__ */ h(PanelFoot, {
3050
3436
  size: "md",
3051
3437
  text: t("panels.market.foot")
3052
- }), shared.length === 0 ? null : /* @__PURE__ */ h("section", { className: MarketPage_module_default.marketSection }, /* @__PURE__ */ h("div", { className: MarketPage_module_default.marketSectionHead }, /* @__PURE__ */ h("h2", { className: MarketPage_module_default.marketSectionTitle }, t("panels.market.sectionShared")), /* @__PURE__ */ h("span", { className: MarketPage_module_default.marketSectionCount }, shared.length)), /* @__PURE__ */ h("ul", { className: MarketPage_module_default.marketList }, shared.map((row) => /* @__PURE__ */ h(SharedLine, {
3053
- key: row.id,
3438
+ }), /* @__PURE__ */ h(SharedSection, {
3054
3439
  t,
3055
- row,
3440
+ rows: shared,
3056
3441
  pending,
3057
- failure: failed?.id === row.id ? failed.message : null,
3058
- onAct: (action) => void act(row.id, action)
3059
- })))), /* @__PURE__ */ h(ConfirmUninstall, {
3442
+ failureOf: (id) => failed?.id === id ? failed.message : null,
3443
+ act
3444
+ }), /* @__PURE__ */ h(ConfirmUninstall, {
3060
3445
  key: confirming ?? "",
3061
3446
  t,
3062
3447
  name: confirmingRow === void 0 ? null : t(confirmingRow.titleKey),
@@ -3085,227 +3470,60 @@ function readBundleInspection(spec, registry) {
3085
3470
  ...registry === void 0 || registry === "" ? {} : { registry }
3086
3471
  });
3087
3472
  }
3088
- function readModuleVersions(force = false) {
3089
- return apiGet(MODULE_VERSIONS_ROUTE, force ? { force: "1" } : void 0);
3090
- }
3091
- var AddModule_module_default = {
3092
- wide: "_wide_1coeb_1",
3093
- dialog: "_dialog_1coeb_8",
3094
- content: "_content_1coeb_13",
3095
- stack: "_stack_1coeb_18",
3096
- body: "_body_1coeb_25",
3097
- field: "_field_1coeb_32",
3098
- input: "_input_1coeb_39",
3099
- registryField: "_registryField_1coeb_45",
3100
- options: "_options_1coeb_51",
3101
- guideToggle: "_guideToggle_1coeb_59",
3102
- registryToggle: "_registryToggle_1coeb_78",
3103
- registryWrap: "_registryWrap_1coeb_87",
3104
- registryChosen: "_registryChosen_1coeb_121",
3105
- registry: "_registry_1coeb_45",
3106
- registryOption: "_registryOption_1coeb_143",
3107
- registryPick: "_registryPick_1coeb_159",
3108
- registryTitle: "_registryTitle_1coeb_179",
3109
- registryHint: "_registryHint_1coeb_189",
3110
- inputError: "_inputError_1coeb_197",
3111
- guide: "_guide_1coeb_59",
3112
- guideList: "_guideList_1coeb_214",
3113
- guideItem: "_guideItem_1coeb_223",
3114
- guideIndex: "_guideIndex_1coeb_230",
3115
- guideMain: "_guideMain_1coeb_244",
3116
- guideTitle: "_guideTitle_1coeb_252",
3117
- guideHint: "_guideHint_1coeb_258",
3118
- guideExample: "_guideExample_1coeb_264",
3119
- guideExampleLabel: "_guideExampleLabel_1coeb_274",
3120
- footer: "_footer_1coeb_278",
3121
- hero: "_hero_1coeb_285",
3122
- heroIcon: "_heroIcon_1coeb_294",
3123
- pendingTitle: "_pendingTitle_1coeb_311",
3124
- wizardTitle: "_wizardTitle_1coeb_319",
3125
- subject: "_subject_1coeb_326",
3126
- subjectName: "_subjectName_1coeb_337",
3127
- subjectMeta: "_subjectMeta_1coeb_343",
3128
- subjectDesc: "_subjectDesc_1coeb_344",
3129
- result: "_result_1coeb_351",
3130
- resultWarn: "_resultWarn_1coeb_352",
3131
- approval: "_approval_1coeb_365",
3132
- approvalTitle: "_approvalTitle_1coeb_375",
3133
- approvalText: "_approvalText_1coeb_382",
3134
- approvalCaution: "_approvalCaution_1coeb_388",
3135
- note: "_note_1coeb_395",
3136
- noteWarn: "_noteWarn_1coeb_402",
3137
- noteError: "_noteError_1coeb_406",
3138
- problem: "_problem_1coeb_410",
3139
- detailLabel: "_detailLabel_1coeb_417",
3140
- detail: "_detail_1coeb_417"
3141
- };
3142
- //#endregion
3143
- //#region src/app/layouts/market/add-module-text.ts
3144
- var GUIDE_ITEMS = [
3145
- {
3146
- titleKey: "panels.market.add.guideIdTitle",
3147
- exampleKey: "panels.market.add.guideIdExample",
3148
- hintKey: "panels.market.add.guideIdHint"
3149
- },
3150
- {
3151
- titleKey: "panels.market.add.guideGitTitle",
3152
- exampleKey: "panels.market.add.guideGitExample",
3153
- hintKey: "panels.market.add.guideGitHint"
3154
- },
3155
- {
3156
- titleKey: "panels.market.add.guidePathTitle",
3157
- exampleKey: "panels.market.add.guidePathExample",
3158
- hintKey: "panels.market.add.guidePathHint"
3159
- }
3160
- ];
3161
- function hostOf(url) {
3162
- try {
3163
- return new URL(url).host;
3164
- } catch {
3165
- return url;
3166
- }
3167
- }
3168
- var OFFICIAL_NPM_HOST = "registry.npmjs.org";
3169
- var KNOWN_HOSTS = {
3170
- [OFFICIAL_NPM_HOST]: "panels.market.add.registryOfficial",
3171
- "registry.npmmirror.com": "panels.market.add.registryMirror"
3172
- };
3173
- function registryNameKey(host) {
3174
- return KNOWN_HOSTS[host];
3175
- }
3176
- function normalizeRegistry(url) {
3177
- const parsed = new URL(url);
3178
- if (!parsed.pathname.endsWith("/")) parsed.pathname += "/";
3179
- return parsed.href;
3180
- }
3181
- function registryKey(url, resolved) {
3182
- const target = url ?? resolved;
3183
- if (target === null) return "";
3184
- try {
3185
- return normalizeRegistry(target);
3186
- } catch {
3187
- return target;
3188
- }
3189
- }
3190
- function registryOptions(registries) {
3191
- const resolved = registries === null ? null : registries.resolved;
3192
- const entries = [
3193
- registries === null ? null : registries.registry,
3194
- ...registries === null ? [] : registries.fallbackRegistries,
3195
- null
3196
- ];
3197
- const offered = [];
3198
- const keys = /* @__PURE__ */ new Set();
3199
- for (const entry of entries) {
3200
- const key = registryKey(entry, resolved);
3201
- if (keys.has(key)) continue;
3202
- keys.add(key);
3203
- const url = entry ?? resolved;
3204
- if (url === null) {
3205
- offered.push({
3206
- choice: {
3207
- kind: "default",
3208
- value: ""
3209
- },
3210
- host: OFFICIAL_NPM_HOST,
3211
- nameKey: "panels.market.add.registryDefault"
3212
- });
3213
- continue;
3214
- }
3215
- const host = hostOf(url);
3216
- const nameKey = registryNameKey(host);
3217
- offered.push({
3218
- choice: entry === null ? {
3219
- kind: "default",
3220
- value: ""
3221
- } : {
3222
- kind: "url",
3223
- value: entry
3224
- },
3225
- host,
3226
- ...nameKey === void 0 ? {} : { nameKey }
3227
- });
3228
- }
3229
- offered.push({ choice: {
3230
- kind: "custom",
3231
- value: ""
3232
- } });
3233
- return offered;
3234
- }
3235
- function customRegistryAllowed(value) {
3236
- return /^https?:\/\//.test(value.trim());
3237
- }
3238
- function registryOf(choice, custom) {
3239
- if (choice.kind === "custom") return customRegistryAllowed(custom) ? custom.trim() : void 0;
3240
- return choice.value === "" ? void 0 : choice.value;
3241
- }
3242
- function registryName(option, t) {
3243
- if (option.choice.kind === "custom") return t("panels.market.add.registryCustom");
3244
- if (option.nameKey !== void 0) return t(option.nameKey);
3245
- return option.host ?? t("panels.market.add.registryDefault");
3246
- }
3247
- function optionLabel(option, t) {
3248
- if (option.choice.kind === "custom") return t("panels.market.add.registryCustom");
3249
- if (option.host === void 0) return t("panels.market.add.registryDefault");
3250
- return option.nameKey === void 0 ? option.host : t("panels.market.add.registryWithHost", {
3251
- name: t(option.nameKey),
3252
- host: option.host
3253
- });
3254
- }
3255
- var PROBLEM_KEYS = {
3256
- "invalid-spec": "panels.market.add.problemInvalid",
3257
- "already-installed": "panels.market.add.problemInstalled",
3258
- "not-found": "panels.market.add.problemNotFound",
3259
- "not-a-package": "panels.market.add.problemNotPackage",
3260
- "not-a-bundle": "panels.market.add.problemNotBundle",
3261
- network: "panels.market.add.problemNetwork",
3262
- unknown: "panels.market.add.problemUnknown"
3263
- };
3264
- function problemKey(problem) {
3265
- return PROBLEM_KEYS[problem] ?? PROBLEM_KEYS.unknown;
3266
- }
3267
- var FAILURE_KEYS = {
3268
- network: "panels.market.add.failureNetwork",
3269
- "spec-host": "panels.market.add.failureNetworkHost",
3270
- "not-found": "panels.market.add.failureNotFound",
3271
- "no-matching-version": "panels.market.add.failureNoMatchingVersion",
3272
- "disk-full": "panels.market.add.failureDiskFull",
3273
- permission: "panels.market.add.failurePermission",
3274
- "build-blocked": "panels.market.add.failureBuildBlocked",
3275
- integrity: "panels.market.add.failureIntegrity",
3276
- timeout: "panels.market.add.failureTimeout",
3277
- "pnpm-missing": "panels.market.add.failurePnpmMissing",
3278
- "operation-error": "panels.market.add.failureGeneric",
3279
- "incompatible-version": "panels.market.add.failureGeneric",
3280
- "not-bundle": "panels.market.add.failureGeneric",
3281
- "invalid-spec": "panels.market.add.failureGeneric",
3282
- "bundle-in-use": "panels.market.add.failureGeneric",
3283
- "not-removable": "panels.market.add.failureGeneric",
3284
- "stop-profile": "panels.market.add.failureGeneric",
3285
- "stale-approval": "panels.market.add.failureGeneric"
3286
- };
3287
- function failureCode(change) {
3288
- if (change.failedAt === "spec-host") return "spec-host";
3289
- return change.errorCode ?? change.packageResult?.kind ?? change.application;
3290
- }
3291
- function failureReasonKey(code) {
3292
- return FAILURE_KEYS[code];
3293
- }
3294
- function failureReason(code, application, t) {
3295
- const key = failureReasonKey(code);
3296
- if (key !== void 0) return t(key);
3297
- if (code === application) return t("panels.market.add.reason.unknown");
3298
- return code;
3299
- }
3300
- var SUPPLY_KEYS = {
3301
- "pending-restart": "panels.market.add.supplyPending",
3302
- failed: "panels.market.add.supplyFailed",
3303
- "not-a-module": "panels.market.add.notModule",
3304
- "no-needs": void 0
3305
- };
3306
- function supplyKey(state) {
3307
- return SUPPLY_KEYS[state];
3473
+ function readModuleVersions(force = false) {
3474
+ return apiGet(MODULE_VERSIONS_ROUTE, force ? { force: "1" } : void 0);
3308
3475
  }
3476
+ var AddModule_module_default = {
3477
+ wide: "_wide_1coeb_1",
3478
+ dialog: "_dialog_1coeb_8",
3479
+ content: "_content_1coeb_13",
3480
+ stack: "_stack_1coeb_18",
3481
+ body: "_body_1coeb_25",
3482
+ field: "_field_1coeb_32",
3483
+ input: "_input_1coeb_39",
3484
+ registryField: "_registryField_1coeb_45",
3485
+ options: "_options_1coeb_51",
3486
+ guideToggle: "_guideToggle_1coeb_59",
3487
+ registryToggle: "_registryToggle_1coeb_78",
3488
+ registryWrap: "_registryWrap_1coeb_87",
3489
+ registryChosen: "_registryChosen_1coeb_121",
3490
+ registry: "_registry_1coeb_45",
3491
+ registryOption: "_registryOption_1coeb_143",
3492
+ registryPick: "_registryPick_1coeb_159",
3493
+ registryTitle: "_registryTitle_1coeb_179",
3494
+ registryHint: "_registryHint_1coeb_189",
3495
+ inputError: "_inputError_1coeb_197",
3496
+ guide: "_guide_1coeb_59",
3497
+ guideList: "_guideList_1coeb_214",
3498
+ guideItem: "_guideItem_1coeb_223",
3499
+ guideIndex: "_guideIndex_1coeb_230",
3500
+ guideMain: "_guideMain_1coeb_244",
3501
+ guideTitle: "_guideTitle_1coeb_252",
3502
+ guideHint: "_guideHint_1coeb_258",
3503
+ guideExample: "_guideExample_1coeb_264",
3504
+ guideExampleLabel: "_guideExampleLabel_1coeb_274",
3505
+ footer: "_footer_1coeb_278",
3506
+ hero: "_hero_1coeb_285",
3507
+ heroIcon: "_heroIcon_1coeb_294",
3508
+ pendingTitle: "_pendingTitle_1coeb_311",
3509
+ wizardTitle: "_wizardTitle_1coeb_319",
3510
+ subject: "_subject_1coeb_326",
3511
+ subjectName: "_subjectName_1coeb_337",
3512
+ subjectMeta: "_subjectMeta_1coeb_343",
3513
+ subjectDesc: "_subjectDesc_1coeb_344",
3514
+ result: "_result_1coeb_351",
3515
+ resultWarn: "_resultWarn_1coeb_352",
3516
+ approval: "_approval_1coeb_365",
3517
+ approvalTitle: "_approvalTitle_1coeb_375",
3518
+ approvalText: "_approvalText_1coeb_382",
3519
+ approvalCaution: "_approvalCaution_1coeb_388",
3520
+ note: "_note_1coeb_395",
3521
+ noteWarn: "_noteWarn_1coeb_402",
3522
+ noteError: "_noteError_1coeb_406",
3523
+ problem: "_problem_1coeb_410",
3524
+ detailLabel: "_detailLabel_1coeb_417",
3525
+ detail: "_detail_1coeb_417"
3526
+ };
3309
3527
  //#endregion
3310
3528
  //#region src/app/layouts/market/AddModuleRegistry.tsx
3311
3529
  var REGISTRY_ID = "wb-add-module-registry";
@@ -3365,7 +3583,13 @@ function AddModuleRegistry({ t, state }) {
3365
3583
  return /* @__PURE__ */ h("div", {
3366
3584
  key: `${option.choice.kind}|${option.choice.value}`,
3367
3585
  className: AddModule_module_default.registryOption,
3368
- "data-checked": active
3586
+ "data-checked": active,
3587
+ onPointerDown: () => {
3588
+ if (!active) state.setChoice(option.choice);
3589
+ },
3590
+ onFocusCapture: () => {
3591
+ if (!active) state.setChoice(option.choice);
3592
+ }
3369
3593
  }, /* @__PURE__ */ h("label", { className: AddModule_module_default.registryPick }, /* @__PURE__ */ h("input", {
3370
3594
  type: "radio",
3371
3595
  name: REGISTRY_ID,
@@ -3377,7 +3601,6 @@ function AddModuleRegistry({ t, state }) {
3377
3601
  "aria-label": t("panels.market.add.registryCustom"),
3378
3602
  placeholder: t("panels.market.add.registryCustomPlaceholder"),
3379
3603
  value: state.custom,
3380
- disabled: !active,
3381
3604
  invalid: customBad,
3382
3605
  onChange: (event) => state.setCustom(event.target.value)
3383
3606
  }), customBad ? /* @__PURE__ */ h("span", {
@@ -3969,7 +4192,7 @@ function AddModuleDialog({ t, open, onClose, onInstalled }) {
3969
4192
  }, t("panels.market.add.run"))) : null, installing ? /* @__PURE__ */ h(Button, {
3970
4193
  type: "button",
3971
4194
  variant: "outline",
3972
- size: "sm",
4195
+ size: "md",
3973
4196
  onClick: state.cancelInstall
3974
4197
  }, t("panels.market.add.cancel")) : null, state.phase === "result" ? /* @__PURE__ */ h(Fragment, null, failed && builds.length === 0 ? /* @__PURE__ */ h(Button, {
3975
4198
  type: "button",
@@ -4039,6 +4262,7 @@ var MOCK_FRESHNESS = {
4039
4262
  checking: false,
4040
4263
  checkedAt: null
4041
4264
  };
4265
+ var NO_UNITS = /* @__PURE__ */ new Set();
4042
4266
  function useLiveManifests(units) {
4043
4267
  useSyncExternalStore(useCallback((listener) => units.subscribe(listener), [units]), useCallback(() => units.version(), [units]));
4044
4268
  return units.manifests();
@@ -4061,7 +4285,7 @@ function MarketPanel({ t, units }) {
4061
4285
  const [decided, setDecided] = useState(false);
4062
4286
  const [adding, setAdding] = useState(false);
4063
4287
  const [updates, setUpdates] = useState({});
4064
- const [installed, setInstalled] = useState([]);
4288
+ const [installed, setInstalled] = useState(void 0);
4065
4289
  const [installedRead, setInstalledRead] = useState(false);
4066
4290
  const loadUpdates = useCallback((force = false) => {
4067
4291
  readModuleVersions(force).then((response) => {
@@ -4097,6 +4321,24 @@ function MarketPanel({ t, units }) {
4097
4321
  forceProbe,
4098
4322
  loadUpdates
4099
4323
  ]);
4324
+ const installedKey = (installed ?? []).map((module) => module.unit).join("|");
4325
+ const rosterKey = manifests.map((manifest) => manifest.id).join("|");
4326
+ const activeKey = Object.keys(capabilities ?? {}).join("|");
4327
+ const seenRef = useRef(null);
4328
+ const [settling, setSettling] = useState(NO_UNITS);
4329
+ useEffect(() => {
4330
+ const units = installedKey === "" ? [] : installedKey.split("|");
4331
+ const held = holdBack(units, new Set(rosterKey === "" ? [] : rosterKey.split("|")), new Set(activeKey === "" ? [] : activeKey.split("|")), seenRef.current);
4332
+ seenRef.current = new Set(units);
4333
+ setSettling(held.length === 0 ? NO_UNITS : new Set(held));
4334
+ if (held.length === 0) return;
4335
+ const timer = setTimeout(() => setSettling(NO_UNITS), MODULE_SETTLE_MS);
4336
+ return () => clearTimeout(timer);
4337
+ }, [
4338
+ installedKey,
4339
+ rosterKey,
4340
+ activeKey
4341
+ ]);
4100
4342
  const freshness = {
4101
4343
  loaded: capabilities !== null,
4102
4344
  checking,
@@ -4146,6 +4388,7 @@ function MarketPanel({ t, units }) {
4146
4388
  updates,
4147
4389
  installed,
4148
4390
  installedRead: mock === void 0 ? installedRead : mock.installedRead ?? true,
4391
+ settling: mock === void 0 ? settling : void 0,
4149
4392
  mock
4150
4393
  }), /* @__PURE__ */ h(AddModuleDialog, {
4151
4394
  t,
@@ -4244,6 +4487,14 @@ function bridgeAdvice(issue) {
4244
4487
  return { textKey: "env.bridge.unknown" };
4245
4488
  }
4246
4489
  //#endregion
4490
+ //#region src/app/layouts/env-gate/gate-deadline.ts
4491
+ function createGateDeadline(giveUpMs, expire) {
4492
+ const timer = setTimeout(expire, giveUpMs);
4493
+ return { disarm() {
4494
+ clearTimeout(timer);
4495
+ } };
4496
+ }
4497
+ //#endregion
4247
4498
  //#region src/app/layouts/env-gate/gate-dom.ts
4248
4499
  var SVG_NS = "http://www.w3.org/2000/svg";
4249
4500
  function svgIcon(kind) {
@@ -4706,7 +4957,6 @@ function createBootGate(ctx, options = {}) {
4706
4957
  }
4707
4958
  let cancelled = false;
4708
4959
  const forcePlan = createForcePlan();
4709
- const startedAt = Date.now();
4710
4960
  let pinned = null;
4711
4961
  function close() {
4712
4962
  if (closed) return;
@@ -4714,9 +4964,11 @@ function createBootGate(ctx, options = {}) {
4714
4964
  cancelled = true;
4715
4965
  if (timer !== void 0) clearTimeout(timer);
4716
4966
  if (ticker !== void 0) clearInterval(ticker);
4967
+ deadline.disarm();
4717
4968
  overlay.remove();
4718
4969
  if (root !== null) root.inert = previousInert;
4719
4970
  }
4971
+ const deadline = createGateDeadline(GIVE_UP_MS, close);
4720
4972
  const rows = /* @__PURE__ */ new Map();
4721
4973
  let renderedOrder = "";
4722
4974
  function ensureRow(step) {
@@ -4810,10 +5062,6 @@ function createBootGate(ctx, options = {}) {
4810
5062
  return;
4811
5063
  }
4812
5064
  if (response.phase === "failed") return;
4813
- if (Date.now() - startedAt > GIVE_UP_MS) {
4814
- close();
4815
- return;
4816
- }
4817
5065
  timer = setTimeout(() => void poll(), POLL_MS);
4818
5066
  }
4819
5067
  function retryNow() {
@@ -4845,23 +5093,151 @@ function createBootGate(ctx, options = {}) {
4845
5093
  poll();
4846
5094
  return { close };
4847
5095
  }
4848
- var ExpandButton_module_default = {
4849
- button: "_button_ssnyt_1",
4850
- icon: "_icon_ssnyt_13"
5096
+ //#endregion
5097
+ //#region src/app/layouts/rightbar/store.ts
5098
+ var browserPersistence = {
5099
+ readFlag,
5100
+ writeFlag,
5101
+ readText,
5102
+ writeText
5103
+ };
5104
+ var RIGHTBAR_DEFAULT_COLUMN = "workbench";
5105
+ function pressedColumns(state, dshExpanded) {
5106
+ return {
5107
+ workbench: state.column === "workbench" && state.expanded,
5108
+ dsh: state.column === "dsh" && dshExpanded
5109
+ };
5110
+ }
5111
+ var BOARD_STEP = { kind: "board" };
5112
+ function readColumn(persistence) {
5113
+ return persistence.readText("dsh-workbench.rightbar.column") === "dsh" ? "dsh" : RIGHTBAR_DEFAULT_COLUMN;
5114
+ }
5115
+ function createRightbarStore(persistence = browserPersistence) {
5116
+ let state = {
5117
+ expanded: persistence.readFlag(STORAGE_KEY_RIGHTBAR, true),
5118
+ column: readColumn(persistence),
5119
+ trail: [BOARD_STEP]
5120
+ };
5121
+ const listeners = /* @__PURE__ */ new Set();
5122
+ function commit(next) {
5123
+ if (next.expanded === state.expanded && next.column === state.column && next.trail === state.trail) return;
5124
+ state = next;
5125
+ for (const listener of listeners) listener();
5126
+ }
5127
+ function setTrail(trail) {
5128
+ commit({
5129
+ expanded: state.expanded,
5130
+ column: state.column,
5131
+ trail: trail.length === 0 ? [BOARD_STEP] : trail
5132
+ });
5133
+ }
5134
+ return {
5135
+ getSnapshot: () => state,
5136
+ subscribe(listener) {
5137
+ listeners.add(listener);
5138
+ return () => listeners.delete(listener);
5139
+ },
5140
+ setExpanded(expanded) {
5141
+ if (expanded === state.expanded) return;
5142
+ persistence.writeFlag(STORAGE_KEY_RIGHTBAR, expanded);
5143
+ commit({
5144
+ expanded,
5145
+ column: state.column,
5146
+ trail: state.trail
5147
+ });
5148
+ },
5149
+ toggleExpanded() {
5150
+ this.setExpanded(!state.expanded);
5151
+ },
5152
+ setColumn(column) {
5153
+ if (column === state.column) return;
5154
+ persistence.writeText(STORAGE_KEY_RIGHTBAR_COLUMN, column);
5155
+ commit({
5156
+ expanded: state.expanded,
5157
+ column,
5158
+ trail: state.trail
5159
+ });
5160
+ },
5161
+ open(step) {
5162
+ const top = state.trail[state.trail.length - 1];
5163
+ if (top !== void 0 && sameStep(top, step)) return;
5164
+ setTrail([...state.trail, step]);
5165
+ },
5166
+ goTo(index) {
5167
+ if (index < 0 || index >= state.trail.length) return;
5168
+ setTrail(state.trail.slice(0, index + 1));
5169
+ },
5170
+ back() {
5171
+ if (state.trail.length <= 1) return;
5172
+ setTrail(state.trail.slice(0, -1));
5173
+ }
5174
+ };
5175
+ }
5176
+ function sameStep(a, b) {
5177
+ return a.kind === b.kind;
5178
+ }
5179
+ var ColumnSwitch_module_default = {
5180
+ group: "_group_1hxis_1",
5181
+ button: "_button_1hxis_7",
5182
+ active: "_active_1hxis_19",
5183
+ icon: "_icon_1hxis_23",
5184
+ mirror: "_mirror_1hxis_35"
4851
5185
  };
4852
5186
  //#endregion
4853
- //#region src/app/layouts/rightbar/ExpandButton.tsx
4854
- function ExpandButton({ useRightbar, toggleRightbar, t }) {
4855
- if (useRightbar((state) => state.expanded)) return null;
4856
- return /* @__PURE__ */ h(Tip, { label: t("rightbar.expand") }, /* @__PURE__ */ h(Button, {
5187
+ //#region src/app/layouts/rightbar/ColumnSwitch.tsx
5188
+ function ColumnSwitch({ useRightbar, selectColumn, dshColumn, t }) {
5189
+ const pressed = pressedColumns(useRightbar((snapshot) => snapshot), useSyncExternalStore(dshColumn.subscribe, dshColumn.getSnapshot));
5190
+ const workbenchLabel = pressed.workbench ? t("rightbar.collapse") : t("rightbar.column.workbench");
5191
+ return /* @__PURE__ */ h("span", {
5192
+ className: ColumnSwitch_module_default.group,
5193
+ role: "group",
5194
+ "aria-label": t("rightbar.column.label")
5195
+ }, /* @__PURE__ */ h(Tip, { label: workbenchLabel }, /* @__PURE__ */ h(Button, {
4857
5196
  type: "button",
4858
5197
  size: "sm",
4859
5198
  variant: "ghost",
4860
- className: ExpandButton_module_default.button,
4861
- "aria-label": t("rightbar.expand"),
4862
- icon: /* @__PURE__ */ h("span", { className: ExpandButton_module_default.icon }, /* @__PURE__ */ h(IconPanelLeftOutlineRegular, { size: 15 })),
4863
- onClick: toggleRightbar
4864
- }));
5199
+ className: pressed.workbench ? `${ColumnSwitch_module_default.button} ${ColumnSwitch_module_default.active}` : ColumnSwitch_module_default.button,
5200
+ "aria-pressed": pressed.workbench,
5201
+ "aria-label": workbenchLabel,
5202
+ icon: /* @__PURE__ */ h("span", { className: ColumnSwitch_module_default.icon }, /* @__PURE__ */ h(IconPanelScreen, { size: 15 })),
5203
+ onClick: () => selectColumn("workbench")
5204
+ })), /* @__PURE__ */ h(Tip, { label: t("rightbar.column.dsh") }, /* @__PURE__ */ h(Button, {
5205
+ type: "button",
5206
+ size: "sm",
5207
+ variant: "ghost",
5208
+ className: pressed.dsh ? `${ColumnSwitch_module_default.button} ${ColumnSwitch_module_default.active}` : ColumnSwitch_module_default.button,
5209
+ "aria-pressed": pressed.dsh,
5210
+ "aria-label": t("rightbar.column.dsh"),
5211
+ icon: /* @__PURE__ */ h("span", { className: `${ColumnSwitch_module_default.icon} ${ColumnSwitch_module_default.mirror}` }, /* @__PURE__ */ h(IconPanelLeftOutlineRegular, { size: 15 })),
5212
+ onClick: () => selectColumn("dsh")
5213
+ })));
5214
+ }
5215
+ //#endregion
5216
+ //#region src/app/layouts/rightbar/dsh-column-source.ts
5217
+ function createDshColumnSource(read, intervalMs) {
5218
+ let value = read();
5219
+ let timer;
5220
+ const listeners = /* @__PURE__ */ new Set();
5221
+ const sync = () => {
5222
+ const next = read();
5223
+ if (next === value) return;
5224
+ value = next;
5225
+ for (const listener of listeners) listener();
5226
+ };
5227
+ return {
5228
+ getSnapshot: () => value,
5229
+ subscribe(listener) {
5230
+ listeners.add(listener);
5231
+ if (timer === void 0) timer = setInterval(sync, intervalMs);
5232
+ return () => {
5233
+ listeners.delete(listener);
5234
+ if (listeners.size === 0 && timer !== void 0) {
5235
+ clearInterval(timer);
5236
+ timer = void 0;
5237
+ }
5238
+ };
5239
+ }
5240
+ };
4865
5241
  }
4866
5242
  var Breadcrumbs_module_default = {
4867
5243
  stripTabs: "_stripTabs_1dqp4_1",
@@ -5449,6 +5825,15 @@ function planBoard(shape, real, all) {
5449
5825
  };
5450
5826
  }
5451
5827
  //#endregion
5828
+ //#region src/app/layouts/rightbar/presentation.ts
5829
+ function rightbarPresentation(input) {
5830
+ const fullscreen = input.shown && (input.viewportWidth < 768 || !input.canShow);
5831
+ return {
5832
+ fullscreen,
5833
+ track: input.shown && !fullscreen
5834
+ };
5835
+ }
5836
+ //#endregion
5452
5837
  //#region src/modules/sessions/model/session-node.ts
5453
5838
  function visiblePendingKind(kind) {
5454
5839
  switch (kind) {
@@ -5634,6 +6019,7 @@ function useBoardWorkspace(workspaces, sessions) {
5634
6019
  path: workspace?.path ?? null
5635
6020
  };
5636
6021
  }
6022
+ var Rightbar_module_default = { panel: "_panel_1oyh4_1" };
5637
6023
  //#endregion
5638
6024
  //#region src/app/layouts/rightbar/Rightbar.tsx
5639
6025
  function ModuleHost({ module, step, panelToken, onPanelRefresh, onSummary, ...rest }) {
@@ -5758,17 +6144,34 @@ function Rightbar(props) {
5758
6144
  const summary = aggregateSummaries(plan.modules.map((entry) => summaries[entry.module.id]).filter((item) => item !== void 0));
5759
6145
  const feedEnabled = plan.modules.length > 0 || plan.reading;
5760
6146
  const shown = state.expanded;
5761
- props.applyRightbar({
6147
+ const presentation = rightbarPresentation({
5762
6148
  shown,
5763
- track: true,
5764
- fullscreen: shown && !props.canShow
6149
+ viewportWidth: props.viewportWidth,
6150
+ canShow: props.canShow
5765
6151
  });
5766
- if (!shown) return null;
6152
+ const { fullscreen } = presentation;
6153
+ const panelWidth = fullscreen ? "100vw" : props.width > 0 ? `${props.width}px` : "100%";
6154
+ const applyRightbar = props.applyRightbar;
6155
+ useLayoutEffect(() => {
6156
+ applyRightbar({
6157
+ shown,
6158
+ track: presentation.track,
6159
+ fullscreen: presentation.fullscreen
6160
+ });
6161
+ }, [
6162
+ applyRightbar,
6163
+ shown,
6164
+ presentation.track,
6165
+ presentation.fullscreen
6166
+ ]);
5767
6167
  const top = state.trail[state.trail.length - 1] ?? { kind: "board" };
5768
6168
  const navigate = (step) => props.openPanel(step);
5769
6169
  const openMarket = () => props.openMarket();
5770
6170
  return /* @__PURE__ */ h("aside", {
5771
- className: "wb-rightbar",
6171
+ className: `wb-rightbar ${Rightbar_module_default.panel}`,
6172
+ style: { width: panelWidth },
6173
+ "data-open": shown ? "" : void 0,
6174
+ "data-fullscreen": fullscreen ? "" : void 0,
5772
6175
  "aria-label": props.t("rightbar.label")
5773
6176
  }, /* @__PURE__ */ h(PanelHeader, {
5774
6177
  t: props.t,
@@ -5899,67 +6302,6 @@ function serializeChipRef(encoded) {
5899
6302
  });
5900
6303
  }
5901
6304
  //#endregion
5902
- //#region src/app/layouts/rightbar/store.ts
5903
- var browserPersistence = {
5904
- readFlag,
5905
- writeFlag,
5906
- readText,
5907
- writeText
5908
- };
5909
- var BOARD_STEP = { kind: "board" };
5910
- function createRightbarStore(persistence = browserPersistence) {
5911
- let state = {
5912
- expanded: persistence.readFlag(STORAGE_KEY_RIGHTBAR, true),
5913
- trail: [BOARD_STEP]
5914
- };
5915
- const listeners = /* @__PURE__ */ new Set();
5916
- function commit(next) {
5917
- if (next.expanded === state.expanded && next.trail === state.trail) return;
5918
- state = next;
5919
- for (const listener of listeners) listener();
5920
- }
5921
- function setTrail(trail) {
5922
- commit({
5923
- expanded: state.expanded,
5924
- trail: trail.length === 0 ? [BOARD_STEP] : trail
5925
- });
5926
- }
5927
- return {
5928
- getSnapshot: () => state,
5929
- subscribe(listener) {
5930
- listeners.add(listener);
5931
- return () => listeners.delete(listener);
5932
- },
5933
- setExpanded(expanded) {
5934
- if (expanded === state.expanded) return;
5935
- persistence.writeFlag(STORAGE_KEY_RIGHTBAR, expanded);
5936
- commit({
5937
- expanded,
5938
- trail: state.trail
5939
- });
5940
- },
5941
- toggleExpanded() {
5942
- this.setExpanded(!state.expanded);
5943
- },
5944
- open(step) {
5945
- const top = state.trail[state.trail.length - 1];
5946
- if (top !== void 0 && sameStep(top, step)) return;
5947
- setTrail([...state.trail, step]);
5948
- },
5949
- goTo(index) {
5950
- if (index < 0 || index >= state.trail.length) return;
5951
- setTrail(state.trail.slice(0, index + 1));
5952
- },
5953
- back() {
5954
- if (state.trail.length <= 1) return;
5955
- setTrail(state.trail.slice(0, -1));
5956
- }
5957
- };
5958
- }
5959
- function sameStep(a, b) {
5960
- return a.kind === b.kind;
5961
- }
5962
- //#endregion
5963
6305
  //#region src/app/layouts/sidebar/session-pick.ts
5964
6306
  function openPickedProject(input) {
5965
6307
  const first = firstSessionIdOf(input.items.find((item) => item.workspaceId === input.workspaceId) ?? null, input.sessions, input.archivedIds);
@@ -6256,7 +6598,7 @@ function Sidebar(props) {
6256
6598
  }
6257
6599
  //#endregion
6258
6600
  //#region src/shared/styles/rightbar.css?raw
6259
- var rightbar_default = ".wb-rightbar {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-width: 0;\n overflow: hidden;\n background: var(--dsw-alias-bg-base);\n border-left: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n.wb-panelHeader {\n flex: none;\n height: var(--wb-len-38);\n}\n\n.wb-tabStrip {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n height: var(--wb-len-38);\n padding: var(--wb-len-10) var(--wb-len-6) 0 var(--wb-len-10);\n}\n\n.wb-stripFill {\n flex: 1 1 0;\n min-width: 0;\n}\n\n.wb-rightbar :is(button, [role='tab']):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.wb-rightbar {\n container-type: inline-size;\n}\n\n.wb-dangerAction {\n color: var(--dsw-alias-state-error-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);\n}\n.wb-stripChrome {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n flex: none;\n margin-left: var(--wb-len-4);\n}\n\n.wb-panelBody {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n scrollbar-gutter: stable;\n padding: var(--wb-len-12);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n.wb-panelBody {\n --dsh-scrollbar-thumb: var(--dsw-alias-scrollbar-bg-l2);\n --dsh-scrollbar-thumb-hover: var(--dsw-alias-scrollbar-hover-l2);\n}";
6601
+ var rightbar_default = ".wb-rightbar {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-width: 0;\n overflow: hidden;\n background: var(--dsw-alias-bg-base);\n border-left: 0.5px solid var(--dsw-alias-border-l2);\n}\n\n.wb-panelHeader {\n flex: none;\n height: var(--wb-len-38);\n}\n\n.wb-tabStrip {\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: var(--wb-len-4);\n height: var(--wb-len-38);\n padding: var(--wb-len-10) var(--wb-len-6) 0 var(--wb-len-10);\n}\n\n.wb-stripFill {\n flex: 1 1 0;\n min-width: 0;\n}\n\n.wb-rightbar :is(button, [role='tab']):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.wb-rightbar {\n container-type: inline-size;\n}\n\n.wb-dangerAction {\n color: var(--dsw-alias-state-error-primary);\n border-color: color-mix(in srgb, var(--dsw-alias-state-error-primary) 30%, transparent);\n --dsw-alias-interactive-bg-hover: color-mix(in srgb, var(--dsw-alias-state-error-primary) 8%, transparent);\n}\n.wb-stripChrome {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n flex: none;\n margin-left: var(--wb-len-4);\n}\n\n.wb-panelBody {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n scrollbar-gutter: stable;\n padding: var(--wb-len-12);\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n}\n\n.wb-panelBody {\n --dsh-scrollbar-thumb: var(--dsw-alias-scrollbar-bg-l2);\n --dsh-scrollbar-thumb-hover: var(--dsw-alias-scrollbar-hover-l2);\n}\n@container (max-width: 340px) {\n .wb-panelBody {\n padding: var(--wb-len-8);\n }}\n";
6260
6602
  //#endregion
6261
6603
  //#region src/shared/styles/tokens.css?raw
6262
6604
  var tokens_default = ".wb-root,\n.wb-rightbar {\n --wb-bar-height: 36px;\n --wb-gap-xs: 6px;\n --wb-font-row: 14px;\n}\n";
@@ -6265,7 +6607,7 @@ var tokens_default = ".wb-root,\n.wb-rightbar {\n --wb-bar-height: 36px;\n --w
6265
6607
  var palette_default = ":root {\n --wb-static-titlebar-fill: #ffffff8c;\n --wb-static-titlebar-fill-hover: #ffffff4d;\n --wb-static-titlebar-fill-dark: #ffffff26;\n --wb-static-titlebar-fill-dark-hover: #fff3;\n --wb-static-mask-opaque: #000;\n --wb-static-shadow-ghost: 0 8px 20px rgba(0, 0, 0, 0.4);\n}\n";
6266
6608
  //#endregion
6267
6609
  //#region src/shared/styles/tokens/scale.css?raw
6268
- var scale_default = ":root {\n --wb-dur-0-12: 0.12s;\n --wb-dur-0-15: 0.15s;\n --wb-dur-0-9: 0.9s;\n --wb-dur-1-4: 1.4s;\n --wb-dur-1-5: 1.5s;\n --wb-font-10: 10px;\n --wb-font-11-5: 11.5px;\n --wb-font-12-5: 12.5px;\n --wb-font-17: 17px;\n --wb-font-18: 18px;\n --wb-font-6: 6px;\n --wb-len-0-5: 0.5px;\n --wb-len-1: 1px;\n --wb-len-10: 10px;\n --wb-len-12: 12px;\n --wb-len-120: 120px;\n --wb-len-13: 13px;\n --wb-len-132: 132px;\n --wb-len-14: 14px;\n --wb-len-144: 144px;\n --wb-len-15: 15px;\n --wb-len-16: 16px;\n --wb-len-18: 18px;\n --wb-len-2: 2px;\n --wb-len-20: 20px;\n --wb-len-200: 200px;\n --wb-len-22: 22px;\n --wb-len-220: 220px;\n --wb-len-24: 24px;\n --wb-len-240: 240px;\n --wb-len-26: 26px;\n --wb-len-260: 260px;\n --wb-len-28: 28px;\n --wb-len-3: 3px;\n --wb-len-3-4em: 3.4em;\n --wb-len-30: 30px;\n --wb-len-300: 300px;\n --wb-len-32: 32px;\n --wb-len-320: 320px;\n --wb-len-34: 34px;\n --wb-len-36: 36px;\n --wb-len-360: 360px;\n --wb-len-38: 38px;\n --wb-len-4: 4px;\n --wb-len-440: 440px;\n --wb-len-40: 40px;\n --wb-len-420: 420px;\n --wb-len-42em: 42em;\n --wb-len-44: 44px;\n --wb-len-48: 48px;\n --wb-len-5: 5px;\n --wb-len-52: 52px;\n --wb-len-520: 520px;\n --wb-len-56: 56px;\n --wb-len-560: 560px;\n --wb-len-6: 6px;\n --wb-len-60: 60px;\n --wb-len-64: 64px;\n --wb-len-7: 7px;\n --wb-len-72: 72px;\n --wb-len-8: 8px;\n --wb-len-800: 800px;\n --wb-len-9: 9px;\n --wb-len-96: 96px;\n --wb-len-960: 960px;\n --wb-len-neg-0-5: -0.5px;\n --wb-len-neg-1-5: -1.5px;\n --wb-len-neg-12: -12px;\n --wb-len-neg-2: -2px;\n --wb-len-neg-3: -3px;\n --wb-len-neg-4: -4px;\n --wb-len-neg-6: -6px;\n --wb-len-neg-8: -8px;\n --wb-line-10: 10px;\n --wb-line-13: 13px;\n --wb-line-14: 14px;\n --wb-line-15: 15px;\n --wb-line-16: 16px;\n --wb-line-17: 17px;\n --wb-line-18: 18px;\n --wb-line-19: 19px;\n --wb-line-20: 20px;\n --wb-line-22: 22px;\n --wb-line-24: 24px;\n --wb-radius-14: 14px;\n --wb-radius-2: 2px;\n --wb-radius-6: 6px;\n --wb-radius-pill: 999px;\n --wb-track-brand: .04em;\n --wb-z-100: 100;\n --wb-z-1100: 1100;\n --wb-z-30: 30;\n --wb-z-40: 40;\n --wb-z-top: 2147483000;\n --wb-project-menu-min-width: 0;\n}\n";
6610
+ var scale_default = ":root {\n --wb-dur-0-12: 0.12s;\n --wb-dur-0-15: 0.15s;\n --wb-dur-0-9: 0.9s;\n --wb-dur-1-4: 1.4s;\n --wb-dur-1-5: 1.5s;\n --wb-font-10: 10px;\n --wb-font-11-5: 11.5px;\n --wb-font-12-5: 12.5px;\n --wb-font-17: 17px;\n --wb-font-18: 18px;\n --wb-font-6: 6px;\n --wb-len-0-5: 0.5px;\n --wb-len-1: 1px;\n --wb-len-10: 10px;\n --wb-len-12: 12px;\n --wb-len-120: 120px;\n --wb-len-13: 13px;\n --wb-len-132: 132px;\n --wb-len-14: 14px;\n --wb-len-144: 144px;\n --wb-len-15: 15px;\n --wb-len-16: 16px;\n --wb-len-18: 18px;\n --wb-len-2: 2px;\n --wb-len-20: 20px;\n --wb-len-200: 200px;\n --wb-len-22: 22px;\n --wb-len-220: 220px;\n --wb-len-24: 24px;\n --wb-len-240: 240px;\n --wb-len-26: 26px;\n --wb-len-260: 260px;\n --wb-len-28: 28px;\n --wb-len-3: 3px;\n --wb-len-3-4em: 3.4em;\n --wb-len-30: 30px;\n --wb-len-300: 300px;\n --wb-len-32: 32px;\n --wb-len-320: 320px;\n --wb-len-34: 34px;\n --wb-len-36: 36px;\n --wb-len-360: 360px;\n --wb-len-38: 38px;\n --wb-len-4: 4px;\n --wb-len-440: 440px;\n --wb-len-40: 40px;\n --wb-len-420: 420px;\n --wb-len-42em: 42em;\n --wb-len-44: 44px;\n --wb-len-48: 48px;\n --wb-len-5: 5px;\n --wb-len-52: 52px;\n --wb-len-520: 520px;\n --wb-len-56: 56px;\n --wb-len-560: 560px;\n --wb-len-6: 6px;\n --wb-len-60: 60px;\n --wb-len-64: 64px;\n --wb-len-7: 7px;\n --wb-len-72: 72px;\n --wb-len-8: 8px;\n --wb-len-800: 800px;\n --wb-len-9: 9px;\n --wb-len-96: 96px;\n --wb-len-960: 960px;\n --wb-len-neg-0-5: -0.5px;\n --wb-len-neg-1-5: -1.5px;\n --wb-len-neg-12: -12px;\n --wb-len-neg-2: -2px;\n --wb-len-neg-3: -3px;\n --wb-len-neg-4: -4px;\n --wb-len-neg-6: -6px;\n --wb-len-neg-8: -8px;\n --wb-line-10: 10px;\n --wb-line-13: 13px;\n --wb-line-14: 14px;\n --wb-line-15: 15px;\n --wb-line-16: 16px;\n --wb-line-17: 17px;\n --wb-line-18: 18px;\n --wb-line-19: 19px;\n --wb-line-20: 20px;\n --wb-line-22: 22px;\n --wb-line-24: 24px;\n --wb-radius-14: 14px;\n --wb-radius-2: 2px;\n --wb-radius-6: 6px;\n --wb-radius-pill: 999px;\n --wb-track-brand: .04em;\n --wb-z-1100: 1100;\n --wb-z-10: 10;\n --wb-z-30: 30;\n --wb-z-40: 40;\n --wb-z-top: 2147483000;\n --wb-project-menu-min-width: 0;\n}\n";
6269
6611
  //#endregion
6270
6612
  //#region src/shared/styles/sidebar-app.css?raw
6271
6613
  var sidebar_app_default = ".wb-wsSection {\n position: relative;\n flex: none;\n --dsh-session-list-edge-inset: var(--dsh-sidebar-inline-padding);\n --dsh-session-list-scrollbar-width: 5px;\n --dsh-session-list-scrollbar-offset: 2px;\n margin: 0 var(--dsh-session-list-scrollbar-offset) var(--wb-len-4) 0;\n padding-right: calc( var(--dsh-session-list-edge-inset) - var(--dsh-session-list-scrollbar-width) - var(--dsh-session-list-scrollbar-offset) );\n}.wb-sectionHeader {\n box-sizing: border-box;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n gap: var(--wb-len-4);\n height: var(--wb-len-36);\n flex: none;\n margin-bottom: var(--wb-len-4);\n padding-left: var(--wb-len-8);\n padding-right: var(--wb-len-2);\n border-radius: var(--dsw-radius-md);\n color: var(--dsw-alias-label-tertiary);\n overflow: hidden;\n}.wb-wsNew {\n margin-left: auto;\n}.wb-sectionLabel {\n flex: none;\n min-width: 0;\n max-width: 45%;\n overflow: hidden;\n white-space: nowrap;\n line-height: var(--wb-line-20);\n}.wb-collapsed .wb-wsSection {\n margin: 0 0 var(--wb-len-12);\n padding-right: 0;\n}.wb-collapsed .wb-sectionHeader {\n justify-content: flex-start;\n gap: 0;\n margin-bottom: 0;\n padding-left: 0;\n padding-right: 0;\n}.wb-collapsed .wb-wsNew {\n margin-left: 0;\n}.wb-project {\n position: relative;\n flex: none;\n margin: 0 var(--wb-len-2) var(--wb-len-4);\n}.wb-projectAnchor {\n display: block;\n width: 100%;\n min-width: var(--wb-project-menu-min-width, 0);\n}.wb-projectButton {\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 user-select: none;\n}.wb-projectButton:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}.wb-projectButton:focus-visible {\n outline: var(--dsw-focus-ring-width) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}.wb-collapsed .wb-projectButton {\n justify-content: center;\n width: var(--wb-bar-height);\n height: var(--wb-bar-height);\n padding: 0;\n}.wb-collapsed .wb-projectName,\n.wb-collapsed .wb-projectChevron {\n display: none;\n}.wb-projectGlyph {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}.wb-projectGlyphActive {\n color: var(--dsw-alias-state-business-primary);\n}.wb-projectName {\n flex: 1;\n min-width: 0;\n font-size: var(--wb-font-row);\n line-height: var(--wb-line-20);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}.wb-projectChevron {\n flex: none;\n display: inline-flex;\n color: var(--dsw-alias-label-caption);\n transition: transform var(--wb-dur-0-15) var(--ds-ease-in-out);\n}.wb-projectChevronOpen {\n transform: rotate(180deg);\n}.wb-sessions {\n --dsh-session-list-edge-inset: var(--dsh-sidebar-inline-padding);\n --dsh-session-list-scrollbar-width: 5px;\n --dsh-session-list-scrollbar-offset: 2px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n margin-left: var(--wb-len-neg-4);\n margin-right: var(--dsh-session-list-scrollbar-offset);\n padding-left: var(--wb-len-4);\n padding-right: calc( var(--dsh-session-list-edge-inset) - var(--dsh-session-list-scrollbar-width) - var(--dsh-session-list-scrollbar-offset) );\n padding-bottom: var(--wb-len-16);\n scrollbar-gutter: stable;\n --dsh-scrollbar-thumb: var(--dsw-alias-scrollbar-bg-l2);\n --dsh-scrollbar-thumb-hover: var(--dsw-alias-scrollbar-hover-l2);\n}.wb-sessions > * + * {\n margin-top: var(--wb-len-2);\n}.wb-sessionLeading {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}.wb-sessionPin {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n margin-left: var(--wb-len-6);\n color: var(--dsw-alias-label-caption);\n}.wb-rowActions {\n flex: none;\n display: none;\n align-items: center;\n gap: var(--wb-len-10);\n}.wb-rowActions .wb-iconButton {\n width: var(--wb-len-24);\n height: var(--wb-len-24);\n}.wb-sessionRow:hover .wb-rowActions,\n.wb-sessionRow.wb-menuOpen .wb-rowActions {\n display: inline-flex;\n}.wb-sessionRow:hover .wb-sessionTime,\n.wb-sessionRow.wb-menuOpen .wb-sessionTime,\n.wb-sessionRow:hover .wb-sessionPin,\n.wb-sessionRow.wb-menuOpen .wb-sessionPin {\n display: none;\n}.wb-sessionRow.wb-menuOpen {\n background: var(--dsw-alias-interactive-bg-hover);\n}.wb-rowMenu {\n left: auto;\n right: 0;\n min-width: var(--wb-len-144);\n max-width: var(--wb-len-260);\n}.wb-sessionRow {\n position: relative;\n flex: none;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n gap: 0;\n width: 100%;\n height: var(--wb-len-32);\n padding: 0 var(--wb-len-8);\n border: none;\n border-radius: var(--dsw-radius-md);\n background: transparent;\n color: var(--dsw-alias-label-primary);\n font: inherit;\n text-align: left;\n cursor: pointer;\n user-select: none;\n}.wb-sessionRow:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}.wb-sessionRow:focus-visible {\n outline: var(--dsw-focus-ring-width) solid\n var(--dsw-focus-ring-color, var(--dsw-alias-state-business-primary));\n outline-offset: -2px;\n}.wb-visuallyHidden {\n clip: rect(0 0 0 0);\n white-space: nowrap;\n width: var(--wb-len-1);\n height: var(--wb-len-1);\n position: absolute;\n overflow: hidden;\n}.wb-sessionTitle {\n flex: 1;\n min-width: 0;\n margin: 0 var(--wb-len-6) 0 var(--wb-len-4);\n font-size: var(--wb-font-row);\n line-height: var(--wb-line-20);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}.wb-sessionTime {\n flex: none;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}.wb-empty {\n padding: var(--wb-len-16) var(--wb-len-12);\n font-size: var(--dsw-font-xs-13-font-size);\n color: var(--dsw-alias-label-tertiary);\n}@media (prefers-reduced-motion: reduce) {\n .wb-projectChevron {\n transition: none;\n }}.wb-sessionRow.wb-selected {\n background: var(--dsw-alias-interactive-bg-hover);\n}.wb-panelTag {\n flex: none;\n margin-left: auto;\n}.wb-panelGlyph {\n position: relative;\n}.wb-panelDot {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: var(--wb-len-neg-3);\n right: var(--wb-len-neg-3);\n}button.pXSMma_workspace {\n display: none;\n}";
@@ -6277,7 +6619,10 @@ var sidebar_default = ".wb-root{--dsh-sidebar-inline-padding:12px;height:100%;pa
6277
6619
  var chrome_default = ".wb-stripButton {\n width: var(--wb-len-28);\n height: var(--wb-len-28);\n padding: 0;\n color: var(--dsw-alias-label-secondary);\n}.wb-stripIconFlip {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n transform: scaleX(-1);\n}.wb-stripButton:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}.wb-stripButton:disabled {\n cursor: default;\n opacity: 1;\n}.wb-stripButtonActive {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}.wb-panelBody.wb-fixtureMany .wb-mockStrip {\n display: none;\n}@keyframes wb-spin {\n from {\n transform: rotate(0deg);\n }to {\n transform: rotate(360deg);\n }}";
6278
6620
  //#endregion
6279
6621
  //#region src/shared/styles/board.css?raw
6280
- var board_default = ".wb-view {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-10);\n min-height: 0;\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}.wb-cardBody {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-12);\n padding: var(--wb-len-12);\n}.wb-cardBody > :not([data-wb-bleed]) {\n padding-left: var(--wb-len-8);\n padding-right: var(--wb-len-8);\n}.wb-releaseState {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\n}.wb-releaseStateTitle {\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-primary);\n}.wb-releaseStateHint {\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}.wb-releaseActions {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n margin-top: var(--wb-len-2);\n}.wb-releaseResolving {\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}.wb-envBlock {\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.wb-envBlock:first-child {\n border-top: none;\n}.wb-envBlockHead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--wb-len-8);\n}.wb-envLine {\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}.wb-envLineText {\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}.wb-envLineAt {\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}.wb-envLineActions {\n flex: none;\n display: inline-flex;\n align-items: center;\n gap: var(--wb-len-6);\n}.wb-envChatFailed {\n color: var(--dsw-alias-state-error-primary);\n}[data-wb-dot] {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n}.wb-row:has(> [data-wb-dot]) {\n grid-template-columns: 84px minmax(0, 1fr);\n}@media (prefers-reduced-motion: reduce) {\n .wb-skeletonBar {\n animation: none;\n }}.wb-approvalPlan {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-6);\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}.wb-approvalRows {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-2);\n margin: 0;\n}.wb-approvalRow {\n display: flex;\n align-items: baseline;\n gap: var(--wb-len-8);\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}.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}.wb-approvalWarn {\n color: var(--dsw-alias-label-secondary);\n}@container (max-width: 340px) {\n .wb-panelBody {\n padding: var(--wb-len-8);\n }}@keyframes wb-dash {\n 0% {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }50% {\n stroke-dasharray: 24 150;\n stroke-dashoffset: -6;\n }to {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\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}.wb-settingsHead {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\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}.wb-menu {\n box-sizing: border-box;\n position: absolute;\n top: calc(100% + var(--wb-len-4));\n left: 0;\n right: 0;\n z-index: var(--wb-z-100);\n padding: var(--wb-len-4);\n display: flex;\n flex-direction: column;\n border: 0.5px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-lg);\n background: var(--dsw-menu-surface-fill, var(--dsw-alias-bg-layer-2));\n box-shadow: var(--dsw-elevation-prominent);\n backdrop-filter: var(--dsw-menu-backdrop-filter);\n max-height: var(--wb-len-240);\n overflow-y: auto;\n}.wb-formActions {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\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}.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}.wb-rows {\n display: flex;\n flex-direction: column;\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}.wb-row + .wb-row {\n border-top: 0.5px solid var(--dsw-alias-border-l2);\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}.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-envListTitle {\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.wb-iconButton:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-iconButton: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.wb-spinning svg {\n animation: wb-spin var(--wb-dur-0-9) linear infinite;\n}\n";
6622
+ var board_default = "[data-wb-dot] {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n}\n\n.wb-iconButton:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n.wb-iconButton: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.wb-spinning svg {\n animation: wb-spin var(--wb-dur-0-9) linear infinite;\n}\n\n@keyframes wb-dash {\n 0% {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }50% {\n stroke-dasharray: 24 150;\n stroke-dashoffset: -6;\n }to {\n stroke-dasharray: 12 150;\n stroke-dashoffset: 0;\n }}\n";
6623
+ //#endregion
6624
+ //#region src/shared/styles/motion.css?raw
6625
+ var motion_default = "[data-animating],\n[data-sidebar-right-panel] {\n --ds-transition-duration-slow: 0s;\n}\n";
6281
6626
  //#endregion
6282
6627
  //#region src/shared/hooks/use-api-resource.ts
6283
6628
  var use_api_resource_exports = /* @__PURE__ */ __exportAll({
@@ -6678,11 +7023,11 @@ function messagesOf(units) {
6678
7023
  ...face.messages === void 0 ? {} : { messages: face.messages }
6679
7024
  })));
6680
7025
  }
6681
- var COMPONENT_CSS_MARKER = "\n.wb-approvalCommand {\n max-width: 100%;\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-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.wb-formActions {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--wb-len-8);\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._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._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._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._button_ssnyt_1 {\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_ssnyt_1:hover:not(:disabled) {\n color: var(--dsw-alias-label-primary);\n}\n\n._icon_ssnyt_13 {\n display: block;\n transform: scaleX(-1);\n}\n\n._icon_ssnyt_13 svg {\n width: var(--wb-len-15);\n height: var(--wb-len-15);\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._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*/";
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*/";
6682
7027
  function installStyles() {
6683
7028
  const style = document.createElement("style");
6684
7029
  style.setAttribute(STYLE_MARKER, "");
6685
- style.textContent = `${tokens_default}\n${palette_default}\n${scale_default}\n${sidebar_default}\n${sidebar_app_default}\n${rightbar_default}\n${chrome_default}\n${board_default}\n${COMPONENT_CSS_MARKER}`;
7030
+ style.textContent = `${tokens_default}\n${palette_default}\n${scale_default}\n${sidebar_default}\n${sidebar_app_default}\n${rightbar_default}\n${chrome_default}\n${board_default}\n${motion_default}\n${COMPONENT_CSS_MARKER}`;
6686
7031
  document.head.appendChild(style);
6687
7032
  return () => style.remove();
6688
7033
  }
@@ -6768,6 +7113,120 @@ function mount(ctx) {
6768
7113
  goToPanel: (index) => store.goTo(index)
6769
7114
  };
6770
7115
  const rightbarHooks = { hooks: { rightbar: observable } };
7116
+ const sidebarRight = () => ctx.get("sidebarRight");
7117
+ const dshColumn = createDshColumnSource(() => {
7118
+ const official = sidebarRight();
7119
+ if (official === void 0) return false;
7120
+ return official.mounted.getSnapshot() === void 0 || official.isExpanded();
7121
+ }, 400);
7122
+ let pendingDshOpen = false;
7123
+ let pendingOfficialCall;
7124
+ let unsubscribeOfficial;
7125
+ let restoreOfficial;
7126
+ let officialShimmed = false;
7127
+ let workbenchColumnArmed = false;
7128
+ let disposeWorkbenchColumn;
7129
+ const armWorkbenchColumn = () => {
7130
+ if (workbenchColumnArmed) return;
7131
+ workbenchColumnArmed = true;
7132
+ disposeWorkbenchColumn = ctx.slots.inject("rightbar", () => ctx.slots.register({
7133
+ name: "rightbar",
7134
+ priority: -1,
7135
+ locale: LOCALE_NS,
7136
+ inject: () => ({
7137
+ ...rightbarActions,
7138
+ ...rightbarHooks,
7139
+ units
7140
+ })
7141
+ }, Rightbar));
7142
+ };
7143
+ const releaseWorkbenchColumn = () => {
7144
+ workbenchColumnArmed = false;
7145
+ disposeWorkbenchColumn?.();
7146
+ disposeWorkbenchColumn = void 0;
7147
+ };
7148
+ const flushOfficialCall = () => {
7149
+ const official = sidebarRight();
7150
+ if (official === void 0 || official.mounted.getSnapshot() === void 0) return;
7151
+ if (pendingDshOpen) {
7152
+ pendingDshOpen = false;
7153
+ if (!official.isExpanded()) official.toggleExpanded();
7154
+ }
7155
+ const call = pendingOfficialCall;
7156
+ pendingOfficialCall = void 0;
7157
+ call?.();
7158
+ };
7159
+ const watchOfficial = () => {
7160
+ const official = sidebarRight();
7161
+ if (official === void 0 || unsubscribeOfficial !== void 0) return;
7162
+ unsubscribeOfficial = official.mounted.subscribe(flushOfficialCall);
7163
+ };
7164
+ const armDshColumn = () => {
7165
+ const official = sidebarRight();
7166
+ if (official === void 0) return false;
7167
+ if (official.mounted.getSnapshot() !== void 0) {
7168
+ if (!official.isExpanded()) official.toggleExpanded();
7169
+ return true;
7170
+ }
7171
+ watchOfficial();
7172
+ store.setColumn("dsh");
7173
+ ctx.layout.closeRightbar();
7174
+ releaseWorkbenchColumn();
7175
+ pendingDshOpen = true;
7176
+ return false;
7177
+ };
7178
+ const openInDshColumn = (call) => {
7179
+ shimOfficialNavigation();
7180
+ if (sidebarRight() === void 0) return;
7181
+ if (armDshColumn()) {
7182
+ call();
7183
+ return;
7184
+ }
7185
+ pendingOfficialCall = call;
7186
+ };
7187
+ const shimOfficialNavigation = () => {
7188
+ const official = sidebarRight();
7189
+ if (official === void 0 || officialShimmed) return;
7190
+ const { openResource, openTab } = official;
7191
+ if (typeof openResource !== "function" || typeof openTab !== "function") return;
7192
+ officialShimmed = true;
7193
+ official.openResource = (address, options) => openInDshColumn(() => openResource.call(official, address, options));
7194
+ official.openTab = (kind, options) => openInDshColumn(() => openTab.call(official, kind, options));
7195
+ restoreOfficial = () => {
7196
+ official.openResource = openResource;
7197
+ official.openTab = openTab;
7198
+ officialShimmed = false;
7199
+ };
7200
+ };
7201
+ const selectColumn = (column) => {
7202
+ if (store.getSnapshot().column === column) {
7203
+ if (column === "workbench") {
7204
+ rightbarActions.toggleRightbar();
7205
+ return;
7206
+ }
7207
+ const current = sidebarRight();
7208
+ if (current === void 0 || current.mounted.getSnapshot() === void 0) return;
7209
+ current.toggleExpanded();
7210
+ return;
7211
+ }
7212
+ if (column === "workbench") {
7213
+ store.setColumn("workbench");
7214
+ pendingDshOpen = false;
7215
+ armWorkbenchColumn();
7216
+ store.setExpanded(true);
7217
+ return;
7218
+ }
7219
+ openInDshColumn(() => {});
7220
+ };
7221
+ ctx.effect(() => () => {
7222
+ unsubscribeOfficial?.();
7223
+ unsubscribeOfficial = void 0;
7224
+ restoreOfficial?.();
7225
+ restoreOfficial = void 0;
7226
+ }, "dsh-workbench: 官方椅面订阅与借道");
7227
+ shimOfficialNavigation();
7228
+ watchOfficial();
7229
+ if (store.getSnapshot().column === "workbench") armWorkbenchColumn();
6771
7230
  ctx.slots.inject("sidebar", () => ctx.slots.register({
6772
7231
  name: "sidebar",
6773
7232
  priority: -1,
@@ -6788,16 +7247,6 @@ function mount(ctx) {
6788
7247
  selectPanel: (panelId) => ctx.layout.selectPanel(panelId)
6789
7248
  })
6790
7249
  }, Sidebar));
6791
- ctx.slots.inject("rightbar", () => ctx.slots.register({
6792
- name: "rightbar",
6793
- priority: -1,
6794
- locale: LOCALE_NS,
6795
- inject: () => ({
6796
- ...rightbarActions,
6797
- ...rightbarHooks,
6798
- units
6799
- })
6800
- }, Rightbar));
6801
7250
  registerMarketPanel(ctx, units);
6802
7251
  const gate = createBootGate(ctx);
6803
7252
  ctx.effect(() => () => gate.close(), "dsh-workbench: env gate");
@@ -6815,10 +7264,11 @@ function mount(ctx) {
6815
7264
  priority: -1,
6816
7265
  locale: LOCALE_NS,
6817
7266
  inject: () => ({
6818
- toggleRightbar: rightbarActions.toggleRightbar,
7267
+ selectColumn,
7268
+ dshColumn,
6819
7269
  ...rightbarHooks
6820
7270
  })
6821
- }, ExpandButton));
7271
+ }, ColumnSwitch));
6822
7272
  }
6823
7273
  function sidebarChildren(ctx) {
6824
7274
  return {