@dsh-workbench/core 0.2.4 → 0.2.5

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.
@@ -17,6 +17,51 @@ function cx(...parts) {
17
17
  return parts.filter(Boolean).join(" ");
18
18
  }
19
19
  var MINUTE = 6e4;
20
+ var HOUR = 60 * MINUTE;
21
+ var DAY = 24 * HOUR;
22
+ var MONTH = 30 * DAY;
23
+ var YEAR = 365 * DAY;
24
+ function relativeTimeBucket(epochMs, now = Date.now()) {
25
+ if (!Number.isFinite(epochMs) || !Number.isFinite(now)) return null;
26
+ const diff = Math.max(0, now - epochMs);
27
+ if (diff < MINUTE) return {
28
+ unit: "now",
29
+ n: 0
30
+ };
31
+ if (diff < HOUR) return {
32
+ unit: "minutes",
33
+ n: Math.floor(diff / MINUTE)
34
+ };
35
+ if (diff < DAY) return {
36
+ unit: "hours",
37
+ n: Math.floor(diff / HOUR)
38
+ };
39
+ if (diff < MONTH) return {
40
+ unit: "days",
41
+ n: Math.floor(diff / DAY)
42
+ };
43
+ if (diff < YEAR) return {
44
+ unit: "months",
45
+ n: Math.floor(diff / MONTH)
46
+ };
47
+ return {
48
+ unit: "years",
49
+ n: Math.floor(diff / YEAR)
50
+ };
51
+ }
52
+ function bucketLabel(bucket, t) {
53
+ return bucket.unit === "now" ? t("time.now") : t(`time.short.${bucket.unit}`, { n: bucket.n });
54
+ }
55
+ function relativeTimeCompact(epochMs, t, now) {
56
+ const bucket = relativeTimeBucket(epochMs, now);
57
+ return bucket === null ? "" : bucketLabel(bucket, t);
58
+ }
59
+ function relativeTimeAgo(epochMs, t, now) {
60
+ const bucket = relativeTimeBucket(epochMs, now);
61
+ if (bucket === null) return "";
62
+ const label = bucketLabel(bucket, t);
63
+ return bucket.unit === "now" ? label : t("time.ago", { t: label });
64
+ }
20
65
  function relativeTime(epochMs, t) {
21
66
  if (!Number.isFinite(epochMs)) return "";
22
67
  const diff = Date.now() - epochMs;
@@ -1253,20 +1298,32 @@ var en = {
1253
1298
  "session.new.label": "Start a session in the current project",
1254
1299
  "session.empty": "No sessions in this project yet.",
1255
1300
  "session.noProject": "Add a project first.",
1301
+ "session.list.label": "Sessions",
1302
+ "session.copy": "Copy",
1256
1303
  "session.pinned": "Pinned",
1257
1304
  "session.actions": "Actions for {name}",
1258
1305
  "status.idle": "Idle",
1259
1306
  "status.running": "Running",
1260
1307
  "status.waitingApproval": "Waiting for approval",
1261
- "status.planReview": "Waiting for plan review",
1308
+ "status.planReview": "Plan awaiting review",
1262
1309
  "status.waitingAnswer": "Waiting for your answer",
1310
+ "status.compact.approval": "Approval",
1311
+ "status.compact.planReview": "Plan review",
1312
+ "status.compact.answer": "Answer",
1263
1313
  "status.completed": "Completed",
1264
1314
  "status.subagentsRunning.one": "{n} subagent running",
1265
1315
  "status.subagentsRunning.other": "{n} subagents running",
1316
+ "hover.copied": "Copied",
1266
1317
  "time.now": "just now",
1267
1318
  "time.minutes": "{n} min ago",
1268
1319
  "time.hours": "{n} h ago",
1269
1320
  "time.days": "{n} d ago",
1321
+ "time.ago": "{t} ago",
1322
+ "time.short.minutes": "{n}min",
1323
+ "time.short.hours": "{n}h",
1324
+ "time.short.days": "{n}d",
1325
+ "time.short.months": "{n}mo",
1326
+ "time.short.years": "{n}y",
1270
1327
  "panels.title": "Panel modules",
1271
1328
  "panels.groupBoardless": "No-board modules",
1272
1329
  "panels.groupPlugins": "opencli plugins",
@@ -1601,20 +1658,32 @@ var zh = {
1601
1658
  "session.new.label": "在当前项目新建会话",
1602
1659
  "session.empty": "这个项目还没有会话。",
1603
1660
  "session.noProject": "先添加一个项目。",
1661
+ "session.list.label": "会话",
1662
+ "session.copy": "复制",
1604
1663
  "session.pinned": "已置顶",
1605
1664
  "session.actions": "{name} 的操作",
1606
1665
  "status.idle": "空闲",
1607
- "status.running": "运行中",
1608
- "status.waitingApproval": "等待授权",
1609
- "status.planReview": "等待计划确认",
1666
+ "status.running": "进行中",
1667
+ "status.waitingApproval": "等待审批",
1668
+ "status.planReview": "计划待审",
1610
1669
  "status.waitingAnswer": "等待回答",
1670
+ "status.compact.approval": "待审批",
1671
+ "status.compact.planReview": "计划待审",
1672
+ "status.compact.answer": "待回答",
1611
1673
  "status.completed": "已完成",
1612
1674
  "status.subagentsRunning.one": "{n} 个子代理运行中",
1613
1675
  "status.subagentsRunning.other": "{n} 个子代理运行中",
1676
+ "hover.copied": "已复制",
1614
1677
  "time.now": "刚刚",
1615
1678
  "time.minutes": "{n} 分钟前",
1616
1679
  "time.hours": "{n} 小时前",
1617
1680
  "time.days": "{n} 天前",
1681
+ "time.ago": "{t}前",
1682
+ "time.short.minutes": "{n}分钟",
1683
+ "time.short.hours": "{n}小时",
1684
+ "time.short.days": "{n}天",
1685
+ "time.short.months": "{n}个月",
1686
+ "time.short.years": "{n}年",
1618
1687
  "panels.title": "面板模块",
1619
1688
  "panels.groupBoardless": "无看板模块",
1620
1689
  "panels.groupPlugins": "opencli 插件",
@@ -2372,6 +2441,9 @@ var dist_exports = /* @__PURE__ */ __exportAll({
2372
2441
  readFlag: () => readFlag,
2373
2442
  readText: () => readText,
2374
2443
  relativeTime: () => relativeTime,
2444
+ relativeTimeAgo: () => relativeTimeAgo,
2445
+ relativeTimeBucket: () => relativeTimeBucket,
2446
+ relativeTimeCompact: () => relativeTimeCompact,
2375
2447
  runsRouteOf: () => runsRouteOf,
2376
2448
  scopePrefixOf: () => scopePrefixOf,
2377
2449
  shortenPath: () => shortenPath,
@@ -5033,19 +5105,22 @@ function sessionStatuses(node, t) {
5033
5105
  case "approval":
5034
5106
  pending = {
5035
5107
  state: "warning",
5036
- label: t("status.waitingApproval")
5108
+ label: t("status.waitingApproval"),
5109
+ trailingLabel: t("status.compact.approval")
5037
5110
  };
5038
5111
  break;
5039
5112
  case "plan-review":
5040
5113
  pending = {
5041
5114
  state: "warning",
5042
- label: t("status.planReview")
5115
+ label: t("status.planReview"),
5116
+ trailingLabel: t("status.compact.planReview")
5043
5117
  };
5044
5118
  break;
5045
5119
  case "question":
5046
5120
  pending = {
5047
5121
  state: "warning",
5048
- label: t("status.waitingAnswer")
5122
+ label: t("status.waitingAnswer"),
5123
+ trailingLabel: t("status.compact.answer")
5049
5124
  };
5050
5125
  break;
5051
5126
  default: pending = void 0;
@@ -5101,6 +5176,16 @@ function sessionRows(workspaceSessionIds, list, archivedIds, current) {
5101
5176
  return rows;
5102
5177
  }
5103
5178
  //#endregion
5179
+ //#region src/modules/sessions/model/scroll-edges.ts
5180
+ var EDGE_SLACK_PX = 1;
5181
+ function scrollEdgesOf(metrics) {
5182
+ const rest = metrics.scrollHeight - metrics.clientHeight;
5183
+ return {
5184
+ canScrollUp: metrics.scrollTop > EDGE_SLACK_PX,
5185
+ canScrollDown: metrics.scrollTop < rest - EDGE_SLACK_PX
5186
+ };
5187
+ }
5188
+ //#endregion
5104
5189
  //#region src/app/layouts/project-selection.ts
5105
5190
  var listeners$1 = /* @__PURE__ */ new Set();
5106
5191
  function selectedProjectId() {
@@ -9007,6 +9092,64 @@ function ProjectSwitcher({ items, current, onPick, onAdd, onRename, t }) {
9007
9092
  }
9008
9093
  //#endregion
9009
9094
  //#region src/app/layouts/sidebar/SessionList.tsx
9095
+ var MIN_TITLE_REVEAL_PX = 8;
9096
+ var TITLE_MARQUEE_PX_PER_MS = .03;
9097
+ var REST_EDGES = {
9098
+ canScrollUp: false,
9099
+ canScrollDown: false
9100
+ };
9101
+ function placeTitle(title, left, range) {
9102
+ title.scrollTo({
9103
+ left,
9104
+ behavior: "instant"
9105
+ });
9106
+ if (left > 0) title.dataset.scrolled = "";
9107
+ else delete title.dataset.scrolled;
9108
+ if (left < range) title.dataset.clipped = "";
9109
+ else delete title.dataset.clipped;
9110
+ }
9111
+ function restTitle(title) {
9112
+ title.scrollTo({
9113
+ left: 0,
9114
+ behavior: "instant"
9115
+ });
9116
+ delete title.dataset.scrolled;
9117
+ delete title.dataset.clipped;
9118
+ }
9119
+ function useTitleMarquee(title) {
9120
+ const frame = useRef(0);
9121
+ useEffect(() => () => {
9122
+ cancelAnimationFrame(frame.current);
9123
+ }, []);
9124
+ return useMemo(() => ({
9125
+ enter: () => {
9126
+ const element = title.current;
9127
+ if (element === null) return;
9128
+ const range = element.scrollWidth - element.clientWidth;
9129
+ if (range <= MIN_TITLE_REVEAL_PX) return;
9130
+ if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
9131
+ placeTitle(element, range, range);
9132
+ return;
9133
+ }
9134
+ cancelAnimationFrame(frame.current);
9135
+ let previous;
9136
+ let position = 0;
9137
+ const step = (now) => {
9138
+ position += previous === void 0 ? 0 : (now - previous) * TITLE_MARQUEE_PX_PER_MS;
9139
+ previous = now;
9140
+ placeTitle(element, Math.min(position, range), range);
9141
+ if (position < range) frame.current = requestAnimationFrame(step);
9142
+ };
9143
+ frame.current = requestAnimationFrame(step);
9144
+ },
9145
+ leave: () => {
9146
+ cancelAnimationFrame(frame.current);
9147
+ const element = title.current;
9148
+ if (element === null) return;
9149
+ restTitle(element);
9150
+ }
9151
+ }), [title]);
9152
+ }
9010
9153
  function SessionLeading({ node, statuses, renderSlot }) {
9011
9154
  if (node.blank) return null;
9012
9155
  const primary = statuses[0];
@@ -9016,43 +9159,98 @@ function SessionLeading({ node, statuses, renderSlot }) {
9016
9159
  key: status.label
9017
9160
  }, status.label)));
9018
9161
  }
9162
+ function SessionHoverContent({ node, statuses, renderSlot, t }) {
9163
+ return /* @__PURE__ */ h("div", { className: "wb-sessionHover" }, /* @__PURE__ */ h("div", { className: "wb-sessionHoverTitle" }, node.blank ? t("session.new") : node.title), node.blank ? null : /* @__PURE__ */ h("div", { className: "wb-sessionHoverTime" }, relativeTimeAgo(node.updatedAt, t)), renderSlot("sidebar.session.row.hover", { sessionId: node.id }), statuses.map((status) => /* @__PURE__ */ h("div", {
9164
+ className: "wb-sessionHoverStatus",
9165
+ key: status.label
9166
+ }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: status.state }), /* @__PURE__ */ h("span", null, status.label))));
9167
+ }
9019
9168
  function SessionRow({ node, active, onOpen, renderSlot, t }) {
9020
9169
  const [menuOpen, setMenuOpen] = useState(false);
9021
9170
  const menuState = useMemo(() => [menuOpen, setMenuOpen], [menuOpen]);
9022
9171
  const statuses = sessionStatuses(node, t);
9023
9172
  const label = node.blank ? t("session.new") : node.title;
9173
+ const titleRef = useRef(null);
9174
+ const marquee = useTitleMarquee(titleRef);
9175
+ const trailing = statuses[0]?.trailingLabel;
9024
9176
  const owner = {
9025
9177
  sessionId: node.id,
9026
- displayTitle: label
9027
- };
9028
- return /* @__PURE__ */ h("div", {
9029
- className: cx("wb-sessionRow", active && "wb-selected", menuOpen && "wb-menuOpen"),
9030
- "aria-current": active ? "true" : void 0,
9031
- onClick: () => onOpen(node.id)
9032
- }, /* @__PURE__ */ h("span", { className: "wb-sessionLeading" }, /* @__PURE__ */ h(SessionLeading, {
9033
- node,
9034
- statuses,
9035
- renderSlot
9036
- })), /* @__PURE__ */ h("span", { className: "wb-sessionTitle" }, label), node.pinned ? /* @__PURE__ */ h(Tip, { label: t("session.pinned") }, /* @__PURE__ */ h("span", {
9037
- className: "wb-sessionPin",
9038
- role: "img",
9039
- "aria-label": t("session.pinned")
9040
- }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconPinOutlineRegular, { size: 14 }))) : null, /* @__PURE__ */ h("span", { className: "wb-sessionTime" }, relativeTime(node.updatedAt, t)), /* @__PURE__ */ h("span", { className: "wb-rowActions" }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Menu, {
9041
- open: menuOpen,
9042
- portal: true,
9043
- anchor: /* @__PURE__ */ h("button", {
9044
- type: "button",
9045
- className: "wb-iconButton",
9046
- "aria-haspopup": "menu",
9047
- "aria-expanded": menuOpen,
9048
- "aria-label": t("session.actions", { name: label }),
9049
- onClick: (event) => {
9050
- event.stopPropagation();
9051
- setMenuOpen((value) => !value);
9052
- }
9053
- }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconEllipsisOutlineRegular, { size: 16 })),
9054
- onClose: () => setMenuOpen(false)
9055
- }, renderSlot("sidebar.workspaces.session.menu.item", owner, { hookContext: menuState })), renderSlot("sidebar.workspaces.session.row.action", owner)));
9178
+ displayTitle: node.title
9179
+ };
9180
+ return /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.HoverCard, {
9181
+ anchor: /* @__PURE__ */ h("div", {
9182
+ className: cx("wb-sessionRow", active && "wb-selected", menuOpen && "wb-menuOpen"),
9183
+ role: "treeitem",
9184
+ "aria-selected": active,
9185
+ onClick: () => onOpen(node.id),
9186
+ onPointerEnter: marquee.enter,
9187
+ onPointerLeave: marquee.leave
9188
+ }, /* @__PURE__ */ h("span", { className: "wb-sessionLeading" }, /* @__PURE__ */ h(SessionLeading, {
9189
+ node,
9190
+ statuses,
9191
+ renderSlot
9192
+ })), /* @__PURE__ */ h("span", {
9193
+ className: "wb-sessionTitle",
9194
+ ref: titleRef
9195
+ }, label), node.blank ? null : /* @__PURE__ */ h("span", {
9196
+ className: "wb-sessionTime",
9197
+ "aria-hidden": trailing === void 0 ? void 0 : true
9198
+ }, trailing ?? relativeTimeCompact(node.updatedAt, t)), node.pinned ? /* @__PURE__ */ h(Tip, { label: t("session.pinned") }, /* @__PURE__ */ h("span", {
9199
+ className: "wb-sessionPin",
9200
+ role: "img",
9201
+ "aria-label": t("session.pinned")
9202
+ }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconPinFillRegular, { size: 14 }))) : null, node.blank ? null : /* @__PURE__ */ h("span", {
9203
+ className: "wb-rowActions",
9204
+ onClick: (event) => event.stopPropagation()
9205
+ }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Menu, {
9206
+ open: menuOpen,
9207
+ portal: true,
9208
+ closeOnPointerLeave: true,
9209
+ anchor: /* @__PURE__ */ h("button", {
9210
+ type: "button",
9211
+ className: "wb-iconButton",
9212
+ "aria-haspopup": "menu",
9213
+ "aria-expanded": menuOpen,
9214
+ "aria-label": t("session.actions", { name: label }),
9215
+ onClick: (event) => {
9216
+ event.stopPropagation();
9217
+ setMenuOpen((value) => !value);
9218
+ }
9219
+ }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconEllipsisOutlineRegular, { size: 16 })),
9220
+ onClose: () => setMenuOpen(false)
9221
+ }, renderSlot("sidebar.workspaces.session.menu.item", owner, { hookContext: menuState })), renderSlot("sidebar.workspaces.session.row.action", owner))),
9222
+ content: /* @__PURE__ */ h(SessionHoverContent, {
9223
+ node,
9224
+ statuses,
9225
+ renderSlot,
9226
+ t
9227
+ }),
9228
+ openDelayMs: 800,
9229
+ disabled: menuOpen,
9230
+ copyText: node.blank || node.title === "" ? void 0 : node.title,
9231
+ copyLabel: t("session.copy"),
9232
+ copiedLabel: t("hover.copied")
9233
+ });
9234
+ }
9235
+ function useScrollEdges(list, rows) {
9236
+ const [edges, setEdges] = useState(REST_EDGES);
9237
+ useEffect(() => {
9238
+ const element = list.current;
9239
+ if (element === null) return;
9240
+ const sync = () => {
9241
+ const next = scrollEdgesOf(element);
9242
+ setEdges((current) => current.canScrollUp === next.canScrollUp && current.canScrollDown === next.canScrollDown ? current : next);
9243
+ };
9244
+ sync();
9245
+ element.addEventListener("scroll", sync, { passive: true });
9246
+ const observer = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(sync);
9247
+ observer?.observe(element);
9248
+ return () => {
9249
+ element.removeEventListener("scroll", sync);
9250
+ observer?.disconnect();
9251
+ };
9252
+ }, [list, rows]);
9253
+ return edges;
9056
9254
  }
9057
9255
  function SessionList({ workspace, pinnedIds, archived, panelActive, useSessions, useSessionStatus, onOpen, renderSlot, t }) {
9058
9256
  const list = useSessions((state) => state);
@@ -9070,9 +9268,16 @@ function SessionList({ workspace, pinnedIds, archived, panelActive, useSessions,
9070
9268
  currentId,
9071
9269
  pinned
9072
9270
  ]);
9271
+ const listRef = useRef(null);
9272
+ const edges = useScrollEdges(listRef, rows);
9073
9273
  if (workspace === null) return /* @__PURE__ */ h("div", { className: "wb-empty" }, t("session.noProject"));
9074
9274
  if (rows.length === 0) return /* @__PURE__ */ h("div", { className: "wb-empty" }, t("session.empty"));
9075
- return /* @__PURE__ */ h("div", { className: "wb-sessions" }, rows.map((row) => /* @__PURE__ */ h(SessionRow, {
9275
+ return /* @__PURE__ */ h("div", {
9276
+ ref: listRef,
9277
+ className: cx("wb-sessions", edges.canScrollUp && "wb-fadeTop", edges.canScrollDown && "wb-fadeBottom"),
9278
+ role: "tree",
9279
+ "aria-label": t("session.list.label")
9280
+ }, rows.map((row) => /* @__PURE__ */ h(SessionRow, {
9076
9281
  key: row.id,
9077
9282
  node: sessionNode(row, statusById, list, pinned, archivedSet),
9078
9283
  active: row.id === currentId,
@@ -9217,7 +9422,7 @@ var palette_default = ":root {\n --wb-static-titlebar-fill: #ffffff8c;\n --wb-
9217
9422
  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";
9218
9423
  //#endregion
9219
9424
  //#region src/shared/styles/sidebar-app.css?raw
9220
- 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-workspaceBusy {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: var(--wb-len-4) var(--wb-len-8) 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}.wb-workspaceError {\n margin: var(--wb-len-4) var(--wb-len-8) 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n}.wb-empty {\n padding: var(--wb-len-16) var(--wb-len-12);\n font-size: var(--dsw-font-xs-13-font-size);\n color: var(--dsw-alias-label-tertiary);\n}@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}";
9425
+ 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.wb-fadeTop {\n mask-image: linear-gradient(\n to bottom,\n transparent 0,\n var(--wb-static-mask-opaque) var(--wb-len-24),\n var(--wb-static-mask-opaque) 100%\n );\n}.wb-sessions.wb-fadeBottom {\n mask-image: linear-gradient(\n to bottom,\n var(--wb-static-mask-opaque) 0,\n var(--wb-static-mask-opaque) calc(100% - var(--wb-len-24)),\n transparent 100%\n );\n}.wb-sessions.wb-fadeTop.wb-fadeBottom {\n mask-image: linear-gradient(\n to bottom,\n transparent 0,\n var(--wb-static-mask-opaque) var(--wb-len-24),\n var(--wb-static-mask-opaque) calc(100% - var(--wb-len-24)),\n transparent 100%\n );\n}.wb-sessions > * {\n flex: none;\n}.wb-sessions > * + * {\n margin-top: var(--wb-len-2);\n}.wb-sessionLeading {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n color: var(--dsw-alias-label-tertiary);\n}.wb-sessionPin {\n flex: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--wb-len-16);\n height: var(--wb-len-20);\n margin-left: var(--wb-len-6);\n color: var(--dsw-alias-label-caption);\n}.wb-rowActions {\n flex: none;\n display: none;\n align-items: center;\n gap: var(--wb-len-15);\n}.wb-rowActions .wb-iconButton {\n width: var(--wb-len-16);\n height: var(--wb-len-16);\n border-radius: var(--dsw-radius-xs);\n color: var(--dsw-alias-label-tertiary);\n}.wb-rowActions .wb-iconButton:hover {\n background: transparent;\n color: var(--dsw-alias-label-primary);\n}.wb-sessionRow:hover .wb-rowActions,\n.wb-sessionRow.wb-menuOpen .wb-rowActions {\n display: inline-flex;\n}.wb-sessionRow:hover .wb-sessionTime,\n.wb-sessionRow.wb-menuOpen .wb-sessionTime,\n.wb-sessionRow:hover .wb-sessionPin,\n.wb-sessionRow.wb-menuOpen .wb-sessionPin {\n display: none;\n}.wb-sessionRow.wb-menuOpen {\n background: var(--dsw-alias-interactive-bg-hover);\n}.wb-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-sessionTitle[data-scrolled] {\n mask-image: linear-gradient(90deg, transparent, var(--wb-static-mask-opaque) var(--wb-len-12));\n}.wb-sessionTitle[data-clipped] {\n mask-image: linear-gradient(270deg, transparent, var(--wb-static-mask-opaque) var(--wb-len-12));\n}.wb-sessionTitle[data-scrolled][data-clipped] {\n mask-image: linear-gradient(\n 90deg,\n transparent,\n var(--wb-static-mask-opaque) var(--wb-len-12) calc(100% - var(--wb-len-12)),\n transparent\n );\n}@media (hover: hover) {\n .wb-sessionRow:hover .wb-sessionTitle,\n .wb-sessionRow.wb-menuOpen .wb-sessionTitle {\n text-overflow: clip;\n }\n}.wb-sessionHover {\n display: flex;\n flex-direction: column;\n gap: var(--wb-len-8);\n}.wb-sessionHoverTitle {\n color: var(--dsw-static-neutral-bluish-00);\n font-size: var(--dsw-font-s-14-font-size);\n line-height: var(--wb-line-20);\n overflow-wrap: break-word;\n}.wb-sessionHoverTime {\n color: var(--dsw-static-neutral-bluish-300);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-16);\n}.wb-sessionHoverStatus {\n display: flex;\n align-items: center;\n gap: var(--wb-len-8);\n color: var(--dsw-static-neutral-bluish-400);\n font-size: var(--dsw-font-xxs-12-font-size);\n line-height: var(--wb-line-20);\n}.wb-sessionTime {\n flex: none;\n font-size: var(--wb-font-10);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}.wb-workspaceBusy {\n display: flex;\n align-items: center;\n gap: var(--wb-len-6);\n margin: var(--wb-len-4) var(--wb-len-8) 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-label-tertiary);\n}.wb-workspaceError {\n margin: var(--wb-len-4) var(--wb-len-8) 0;\n font-size: var(--dsw-font-xxxs-11-font-size);\n line-height: var(--wb-line-16);\n color: var(--dsw-alias-state-error-primary);\n}.wb-empty {\n padding: var(--wb-len-16) var(--wb-len-12);\n font-size: var(--dsw-font-xs-13-font-size);\n color: var(--dsw-alias-label-tertiary);\n}@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}";
9221
9426
  //#endregion
9222
9427
  //#region src/shared/styles/sidebar.css?raw
9223
9428
  var sidebar_default = ".wb-root{--dsh-sidebar-inline-padding:12px;height:100%;padding:var(--wb-len-6) var(--dsh-sidebar-inline-padding);box-sizing:border-box;background:var(--dsw-specific-sidebar-fill);color:var(--dsw-alias-label-primary);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex-direction:column;font-size:var(--dsw-font-s-14-font-size);display:flex}[data-platform=darwin] .wb-root{background:0 0}.wb-root.wb-collapsed{padding:var(--wb-len-18) var(--wb-len-10) var(--wb-len-6)}[data-windows-titlebar] .wb-root .wb-logoRow{height:var(--wb-len-40);margin:0;padding:0}[data-windows-titlebar] .wb-toggle{top:calc((var(--dsh-windows-titlebar-height) - var(--wb-len-28)) / 2);z-index:var(--wb-z-30);-webkit-app-region:no-drag;position:fixed;left:var(--wb-len-12)}[data-windows-titlebar] .wb-root.wb-collapsed .wb-logoRow{height:0}[data-windows-titlebar] .wb-root:not(.wb-collapsed) .wb-brand{padding-left:var(--wb-len-4)}[data-windows-titlebar] .wb-brandIdentity{transform:translateY(1px)}[data-windows-titlebar] .wb-brandMark{transform:translate(1px)}[data-windows-titlebar] .wb-brandName{font-weight:400}[data-windows-titlebar] .wb-root.wb-collapsed{padding:0}[data-windows-titlebar] .wb-root:not(.wb-collapsed) .wb-newSession{margin-top:var(--wb-len-8);margin-left:0}[data-windows-titlebar] .wb-collapsed .wb-panelList,[data-windows-titlebar] .wb-collapsed .wb-regionArea,[data-windows-titlebar] .wb-collapsed .wb-footArea{display:none}html[data-windows-titlebar]:has([data-sidebar-collapsed=true]){--dsh-windows-menu-start:84px}[data-windows-titlebar] .wb-collapsed .wb-newSession{top:calc((var(--dsh-windows-titlebar-height) - var(--wb-len-28)) / 2);z-index:var(--wb-z-30);-webkit-app-region:no-drag;border:none;margin:0;padding:0;position:fixed;left:var(--wb-len-48)}[data-windows-titlebar] .wb-railIn .wb-iconButton,[data-windows-titlebar] .wb-railIn .wb-newSession{animation:none}[data-windows-titlebar] .wb-collapsed .wb-toggle,[data-windows-titlebar] .wb-collapsed .wb-newSession{corner-shape:round;width:var(--wb-len-28);height:var(--wb-len-28);color:var(--dsw-alias-label-secondary);border-radius:50%}[data-windows-titlebar] .wb-collapsed .wb-toggle .wb-panelIcon{display:inline-flex}.wb-root.wb-quietBars{--dsh-scrollbar-thumb:transparent;--dsh-scrollbar-thumb-hover:transparent}.wb-fading>*{opacity:0;transition:opacity var(--wb-dur-0-15) var(--ds-ease-in-out)}.wb-wide{animation:wb-wide-in var(--ds-transition-duration) var(--ds-ease-in-out)}@keyframes wb-wide-in{0%{opacity:0}}.wb-railIn .wb-iconButton,.wb-railIn .wb-newSession,.wb-railIn .wb-panelList,.wb-railIn .wb-regionArea{animation:wb-rail-in var(--wb-dur-0-15) var(--ds-ease-in-out) backwards}.wb-railIn .wb-footArea{animation:wb-rail-fade-in var(--wb-dur-0-15) var(--ds-ease-in-out) backwards}@keyframes wb-rail-in{0%{opacity:0;transform:translate(49px)}}@keyframes wb-rail-fade-in{0%{opacity:0}}.wb-topStrip{box-sizing:border-box;height:var(--wb-len-52);margin:var(--wb-len-neg-6) calc(-1 * var(--dsh-sidebar-inline-padding)) 0;flex:none;justify-content:flex-end;align-items:center;padding:0 var(--wb-len-12) var(--wb-len-2);display:flex}[data-fullscreen] .wb-topStrip{justify-content:flex-start}.wb-topStrip+.wb-logoRow{margin-top:var(--wb-len-neg-12)}.wb-logoRow{box-sizing:border-box;flex:none;justify-content:flex-end;align-items:center;gap:var(--wb-len-8);height:var(--wb-len-60);margin-bottom:var(--wb-len-4);padding:var(--wb-len-8) 0 var(--wb-len-8) var(--wb-len-4);display:flex;overflow:hidden}.wb-collapsed .wb-logoRow{justify-content:flex-start;height:var(--wb-len-36);margin-bottom:var(--wb-len-12);padding:0;overflow:visible}.wb-brand{min-width:0;color:inherit;cursor:pointer;background:0 0;border:none;flex:1;align-items:center;padding:0;display:inline-flex;overflow:hidden}[data-platform=darwin] .wb-brand{cursor:default}.wb-brandIdentity{align-items:center;gap:var(--wb-len-8);min-width:0;height:var(--wb-len-24);display:inline-flex}.wb-brandMark{flex:none;justify-content:center;align-items:center;display:inline-flex}.wb-brandName{letter-spacing:var(--wb-track-brand);align-items:center;gap:var(--wb-len-6);min-width:0;height:var(--wb-len-24);font-size:var(--wb-font-18);font-weight:600;line-height:var(--wb-line-24);display:inline-flex}.wb-fallbackBrandName{letter-spacing:0;white-space:nowrap;font-size:var(--wb-font-17)}.wb-localBuildBrand{white-space:nowrap;flex-direction:column;flex:none;justify-content:center;align-items:flex-start;gap:var(--wb-len-1);height:var(--wb-len-24);display:inline-flex}.wb-localBuildTitle{letter-spacing:0;font-size:var(--dsw-font-xxs-12-font-size);line-height:var(--wb-line-13)}.wb-panelIcon{display:inline-flex;align-items:center;justify-content:center}.wb-iconButton{border-radius:var(--dsw-radius-sm);cursor:pointer;width:var(--wb-len-28);height:var(--wb-len-28);color:var(--dsw-alias-label-secondary);background:0 0;border:none;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.wb-iconButton:hover{background:var(--dsw-alias-interactive-bg-hover)}.wb-iconButton.wb-toggle:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}.wb-collapsed .wb-iconButton{border-radius:var(--dsw-radius-md);width:var(--wb-len-36);height:var(--wb-len-36)}.wb-collapsed .wb-toggle .wb-panelIcon{display:none}.wb-collapsed .wb-toggle:hover .wb-panelIcon{display:inline}.wb-collapsed .wb-toggle:hover .wb-railMark{display:none}.wb-railMark{justify-content:center;align-items:center;display:inline-flex}.wb-collapsed .wb-iconButton{color:var(--dsw-alias-label-primary)}.wb-buildVersion{height:var(--wb-len-10);color:var(--dsw-alias-label-primary-inverted);background:var(--dsw-alias-label-primary);font-family:var(--ds-font-family-code);white-space:nowrap;border-radius:var(--wb-radius-2);flex:none;align-items:center;padding:0 var(--wb-len-3);font-size:var(--wb-font-6);font-weight:500;line-height:var(--wb-line-10);display:inline-flex}.wb-newSession{box-sizing:border-box;border:.5px solid var(--dsw-alias-border-l3);border-radius:var(--dsw-radius-md);background:var(--dsw-alias-button-elevated-fill);height:var(--wb-len-38);color:var(--dsw-alias-label-primary);cursor:pointer;flex:none;justify-content:center;align-items:center;gap:0;margin:0 var(--wb-len-2) var(--wb-len-12);padding:var(--wb-len-8) var(--wb-len-12);font-size:var(--dsw-font-s-14-font-size);font-weight:500;line-height:var(--wb-line-22);display:flex;position:relative;overflow:hidden;container-type:inline-size}.wb-newSession:hover{background:var(--dsw-alias-button-floating-hover)}[data-platform=darwin] .wb-newSession{background:var(--wb-static-titlebar-fill)}[data-platform=darwin] .wb-newSession:hover{background:var(--wb-static-titlebar-fill-hover)}[data-platform=darwin] [data-ds-dark-theme] .wb-newSession{background:var(--wb-static-titlebar-fill-dark)}[data-platform=darwin] [data-ds-dark-theme] .wb-newSession:hover{background:var(--wb-static-titlebar-fill-dark-hover)}.wb-collapsed .wb-newSession{background:0 0;border-color:transparent;align-self:flex-start;gap:0;width:var(--wb-len-36);height:var(--wb-len-36);margin:0 0 var(--wb-len-12);padding:0}.wb-collapsed .wb-newSession:hover{background:var(--dsw-alias-interactive-bg-hover)}.wb-newSessionLabel{white-space:nowrap;max-width:var(--wb-len-200);overflow:hidden}.wb-collapsed .wb-newSessionLabel{max-width:0}.wb-newSessionLabelMask{flex:1;min-width:0}.wb-newSession:is(:hover,:focus-visible) .wb-newSessionLabelMask:has(+.wb-newSessionShortcut){overflow:hidden;mask-image:linear-gradient(90deg,var(--wb-static-mask-opaque) calc(100% - var(--wb-len-16)),transparent)}.wb-newSessionContent{justify-content:center;align-items:center;gap:var(--wb-len-6);width:100cqw;display:flex}.wb-newSessionContent>svg{flex:none}.wb-newSessionShortcut{opacity:0;pointer-events:none;flex:none;font-weight:400;display:inline-flex}.wb-newSession:is(:hover,:focus-visible) .wb-newSessionShortcut{opacity:1}.wb-panelList{flex-direction:column;flex:none;gap:var(--wb-len-4);margin-bottom:var(--wb-len-8);display:flex}.wb-panelRow{box-sizing:border-box;border-radius:var(--dsw-radius-md);min-height:var(--wb-len-36);color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:var(--wb-len-8);margin:0 var(--wb-len-2);padding:var(--wb-len-7) var(--wb-len-8);line-height:var(--wb-line-22);display:flex}.wb-panelRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.wb-panelRow.wb-panelActive{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.wb-panelRow:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:-2px}.wb-panelGlyph{flex:none;justify-content:center;align-items:center;display:inline-flex}.wb-panelTitle{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.wb-collapsed .wb-panelList{gap:var(--wb-len-12);margin-bottom:var(--wb-len-12)}.wb-collapsed .wb-panelRow{width:var(--wb-len-36);height:var(--wb-len-36);color:var(--dsw-alias-label-primary);justify-content:center;margin:0;padding:0}.wb-regionArea{min-height:0;margin-left:var(--wb-len-neg-4);margin-right:calc(-1 * var(--dsh-sidebar-inline-padding));flex-direction:column;flex:1;padding-left:var(--wb-len-4);display:flex;overflow:hidden}.wb-collapsed .wb-regionArea{margin-left:0;margin-right:0;padding-left:0}.wb-footArea{flex-direction:column;flex:none;display:flex}.wb-settingsArea,.wb-footerActions{flex:none;width:100%;min-width:0}.wb-footerActions{display:flex}.wb-collapsed .wb-footArea{align-items:center}.wb-collapsed .wb-settingsArea,.wb-collapsed .wb-footerActions{justify-content:center;width:auto;display:flex}@media (prefers-reduced-motion:reduce){.wb-wide,.wb-fading>*,.wb-railIn .wb-iconButton,.wb-railIn .wb-newSession,.wb-railIn .wb-panelList,.wb-railIn .wb-footArea,.wb-railIn .wb-regionArea{transition:none;animation:none}}\n";
@@ -9907,6 +10112,10 @@ function sidebarChildren(ctx) {
9907
10112
  "sidebar.session.row.leading": {
9908
10113
  kind: "list",
9909
10114
  scope: "root"
10115
+ },
10116
+ "sidebar.session.row.hover": {
10117
+ kind: "list",
10118
+ scope: "root"
9910
10119
  }
9911
10120
  };
9912
10121
  }