@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.
package/client.js CHANGED
@@ -24,6 +24,51 @@ window.__ModuleLoader__.load({
24
24
  return parts.filter(Boolean).join(" ");
25
25
  }
26
26
  var MINUTE = 6e4;
27
+ var HOUR = 60 * MINUTE;
28
+ var DAY = 24 * HOUR;
29
+ var MONTH = 30 * DAY;
30
+ var YEAR = 365 * DAY;
31
+ function relativeTimeBucket(epochMs, now = Date.now()) {
32
+ if (!Number.isFinite(epochMs) || !Number.isFinite(now)) return null;
33
+ const diff = Math.max(0, now - epochMs);
34
+ if (diff < MINUTE) return {
35
+ unit: "now",
36
+ n: 0
37
+ };
38
+ if (diff < HOUR) return {
39
+ unit: "minutes",
40
+ n: Math.floor(diff / MINUTE)
41
+ };
42
+ if (diff < DAY) return {
43
+ unit: "hours",
44
+ n: Math.floor(diff / HOUR)
45
+ };
46
+ if (diff < MONTH) return {
47
+ unit: "days",
48
+ n: Math.floor(diff / DAY)
49
+ };
50
+ if (diff < YEAR) return {
51
+ unit: "months",
52
+ n: Math.floor(diff / MONTH)
53
+ };
54
+ return {
55
+ unit: "years",
56
+ n: Math.floor(diff / YEAR)
57
+ };
58
+ }
59
+ function bucketLabel(bucket, t) {
60
+ return bucket.unit === "now" ? t("time.now") : t(`time.short.${bucket.unit}`, { n: bucket.n });
61
+ }
62
+ function relativeTimeCompact(epochMs, t, now) {
63
+ const bucket = relativeTimeBucket(epochMs, now);
64
+ return bucket === null ? "" : bucketLabel(bucket, t);
65
+ }
66
+ function relativeTimeAgo(epochMs, t, now) {
67
+ const bucket = relativeTimeBucket(epochMs, now);
68
+ if (bucket === null) return "";
69
+ const label = bucketLabel(bucket, t);
70
+ return bucket.unit === "now" ? label : t("time.ago", { t: label });
71
+ }
27
72
  function relativeTime(epochMs, t) {
28
73
  if (!Number.isFinite(epochMs)) return "";
29
74
  const diff = Date.now() - epochMs;
@@ -1260,20 +1305,32 @@ window.__ModuleLoader__.load({
1260
1305
  "session.new.label": "Start a session in the current project",
1261
1306
  "session.empty": "No sessions in this project yet.",
1262
1307
  "session.noProject": "Add a project first.",
1308
+ "session.list.label": "Sessions",
1309
+ "session.copy": "Copy",
1263
1310
  "session.pinned": "Pinned",
1264
1311
  "session.actions": "Actions for {name}",
1265
1312
  "status.idle": "Idle",
1266
1313
  "status.running": "Running",
1267
1314
  "status.waitingApproval": "Waiting for approval",
1268
- "status.planReview": "Waiting for plan review",
1315
+ "status.planReview": "Plan awaiting review",
1269
1316
  "status.waitingAnswer": "Waiting for your answer",
1317
+ "status.compact.approval": "Approval",
1318
+ "status.compact.planReview": "Plan review",
1319
+ "status.compact.answer": "Answer",
1270
1320
  "status.completed": "Completed",
1271
1321
  "status.subagentsRunning.one": "{n} subagent running",
1272
1322
  "status.subagentsRunning.other": "{n} subagents running",
1323
+ "hover.copied": "Copied",
1273
1324
  "time.now": "just now",
1274
1325
  "time.minutes": "{n} min ago",
1275
1326
  "time.hours": "{n} h ago",
1276
1327
  "time.days": "{n} d ago",
1328
+ "time.ago": "{t} ago",
1329
+ "time.short.minutes": "{n}min",
1330
+ "time.short.hours": "{n}h",
1331
+ "time.short.days": "{n}d",
1332
+ "time.short.months": "{n}mo",
1333
+ "time.short.years": "{n}y",
1277
1334
  "panels.title": "Panel modules",
1278
1335
  "panels.groupBoardless": "No-board modules",
1279
1336
  "panels.groupPlugins": "opencli plugins",
@@ -1608,20 +1665,32 @@ window.__ModuleLoader__.load({
1608
1665
  "session.new.label": "在当前项目新建会话",
1609
1666
  "session.empty": "这个项目还没有会话。",
1610
1667
  "session.noProject": "先添加一个项目。",
1668
+ "session.list.label": "会话",
1669
+ "session.copy": "复制",
1611
1670
  "session.pinned": "已置顶",
1612
1671
  "session.actions": "{name} 的操作",
1613
1672
  "status.idle": "空闲",
1614
- "status.running": "运行中",
1615
- "status.waitingApproval": "等待授权",
1616
- "status.planReview": "等待计划确认",
1673
+ "status.running": "进行中",
1674
+ "status.waitingApproval": "等待审批",
1675
+ "status.planReview": "计划待审",
1617
1676
  "status.waitingAnswer": "等待回答",
1677
+ "status.compact.approval": "待审批",
1678
+ "status.compact.planReview": "计划待审",
1679
+ "status.compact.answer": "待回答",
1618
1680
  "status.completed": "已完成",
1619
1681
  "status.subagentsRunning.one": "{n} 个子代理运行中",
1620
1682
  "status.subagentsRunning.other": "{n} 个子代理运行中",
1683
+ "hover.copied": "已复制",
1621
1684
  "time.now": "刚刚",
1622
1685
  "time.minutes": "{n} 分钟前",
1623
1686
  "time.hours": "{n} 小时前",
1624
1687
  "time.days": "{n} 天前",
1688
+ "time.ago": "{t}前",
1689
+ "time.short.minutes": "{n}分钟",
1690
+ "time.short.hours": "{n}小时",
1691
+ "time.short.days": "{n}天",
1692
+ "time.short.months": "{n}个月",
1693
+ "time.short.years": "{n}年",
1625
1694
  "panels.title": "面板模块",
1626
1695
  "panels.groupBoardless": "无看板模块",
1627
1696
  "panels.groupPlugins": "opencli 插件",
@@ -2379,6 +2448,9 @@ window.__ModuleLoader__.load({
2379
2448
  readFlag: () => readFlag,
2380
2449
  readText: () => readText,
2381
2450
  relativeTime: () => relativeTime,
2451
+ relativeTimeAgo: () => relativeTimeAgo,
2452
+ relativeTimeBucket: () => relativeTimeBucket,
2453
+ relativeTimeCompact: () => relativeTimeCompact,
2382
2454
  runsRouteOf: () => runsRouteOf,
2383
2455
  scopePrefixOf: () => scopePrefixOf,
2384
2456
  shortenPath: () => shortenPath,
@@ -5040,19 +5112,22 @@ window.__ModuleLoader__.load({
5040
5112
  case "approval":
5041
5113
  pending = {
5042
5114
  state: "warning",
5043
- label: t("status.waitingApproval")
5115
+ label: t("status.waitingApproval"),
5116
+ trailingLabel: t("status.compact.approval")
5044
5117
  };
5045
5118
  break;
5046
5119
  case "plan-review":
5047
5120
  pending = {
5048
5121
  state: "warning",
5049
- label: t("status.planReview")
5122
+ label: t("status.planReview"),
5123
+ trailingLabel: t("status.compact.planReview")
5050
5124
  };
5051
5125
  break;
5052
5126
  case "question":
5053
5127
  pending = {
5054
5128
  state: "warning",
5055
- label: t("status.waitingAnswer")
5129
+ label: t("status.waitingAnswer"),
5130
+ trailingLabel: t("status.compact.answer")
5056
5131
  };
5057
5132
  break;
5058
5133
  default: pending = void 0;
@@ -5108,6 +5183,16 @@ window.__ModuleLoader__.load({
5108
5183
  return rows;
5109
5184
  }
5110
5185
  //#endregion
5186
+ //#region src/modules/sessions/model/scroll-edges.ts
5187
+ var EDGE_SLACK_PX = 1;
5188
+ function scrollEdgesOf(metrics) {
5189
+ const rest = metrics.scrollHeight - metrics.clientHeight;
5190
+ return {
5191
+ canScrollUp: metrics.scrollTop > EDGE_SLACK_PX,
5192
+ canScrollDown: metrics.scrollTop < rest - EDGE_SLACK_PX
5193
+ };
5194
+ }
5195
+ //#endregion
5111
5196
  //#region src/app/layouts/project-selection.ts
5112
5197
  var listeners$1 = /* @__PURE__ */ new Set();
5113
5198
  function selectedProjectId() {
@@ -9014,6 +9099,64 @@ window.__ModuleLoader__.load({
9014
9099
  }
9015
9100
  //#endregion
9016
9101
  //#region src/app/layouts/sidebar/SessionList.tsx
9102
+ var MIN_TITLE_REVEAL_PX = 8;
9103
+ var TITLE_MARQUEE_PX_PER_MS = .03;
9104
+ var REST_EDGES = {
9105
+ canScrollUp: false,
9106
+ canScrollDown: false
9107
+ };
9108
+ function placeTitle(title, left, range) {
9109
+ title.scrollTo({
9110
+ left,
9111
+ behavior: "instant"
9112
+ });
9113
+ if (left > 0) title.dataset.scrolled = "";
9114
+ else delete title.dataset.scrolled;
9115
+ if (left < range) title.dataset.clipped = "";
9116
+ else delete title.dataset.clipped;
9117
+ }
9118
+ function restTitle(title) {
9119
+ title.scrollTo({
9120
+ left: 0,
9121
+ behavior: "instant"
9122
+ });
9123
+ delete title.dataset.scrolled;
9124
+ delete title.dataset.clipped;
9125
+ }
9126
+ function useTitleMarquee(title) {
9127
+ const frame = useRef(0);
9128
+ useEffect(() => () => {
9129
+ cancelAnimationFrame(frame.current);
9130
+ }, []);
9131
+ return useMemo(() => ({
9132
+ enter: () => {
9133
+ const element = title.current;
9134
+ if (element === null) return;
9135
+ const range = element.scrollWidth - element.clientWidth;
9136
+ if (range <= MIN_TITLE_REVEAL_PX) return;
9137
+ if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
9138
+ placeTitle(element, range, range);
9139
+ return;
9140
+ }
9141
+ cancelAnimationFrame(frame.current);
9142
+ let previous;
9143
+ let position = 0;
9144
+ const step = (now) => {
9145
+ position += previous === void 0 ? 0 : (now - previous) * TITLE_MARQUEE_PX_PER_MS;
9146
+ previous = now;
9147
+ placeTitle(element, Math.min(position, range), range);
9148
+ if (position < range) frame.current = requestAnimationFrame(step);
9149
+ };
9150
+ frame.current = requestAnimationFrame(step);
9151
+ },
9152
+ leave: () => {
9153
+ cancelAnimationFrame(frame.current);
9154
+ const element = title.current;
9155
+ if (element === null) return;
9156
+ restTitle(element);
9157
+ }
9158
+ }), [title]);
9159
+ }
9017
9160
  function SessionLeading({ node, statuses, renderSlot }) {
9018
9161
  if (node.blank) return null;
9019
9162
  const primary = statuses[0];
@@ -9023,43 +9166,98 @@ window.__ModuleLoader__.load({
9023
9166
  key: status.label
9024
9167
  }, status.label)));
9025
9168
  }
9169
+ function SessionHoverContent({ node, statuses, renderSlot, t }) {
9170
+ 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", {
9171
+ className: "wb-sessionHoverStatus",
9172
+ key: status.label
9173
+ }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: status.state }), /* @__PURE__ */ h("span", null, status.label))));
9174
+ }
9026
9175
  function SessionRow({ node, active, onOpen, renderSlot, t }) {
9027
9176
  const [menuOpen, setMenuOpen] = useState(false);
9028
9177
  const menuState = useMemo(() => [menuOpen, setMenuOpen], [menuOpen]);
9029
9178
  const statuses = sessionStatuses(node, t);
9030
9179
  const label = node.blank ? t("session.new") : node.title;
9180
+ const titleRef = useRef(null);
9181
+ const marquee = useTitleMarquee(titleRef);
9182
+ const trailing = statuses[0]?.trailingLabel;
9031
9183
  const owner = {
9032
9184
  sessionId: node.id,
9033
- displayTitle: label
9034
- };
9035
- return /* @__PURE__ */ h("div", {
9036
- className: cx("wb-sessionRow", active && "wb-selected", menuOpen && "wb-menuOpen"),
9037
- "aria-current": active ? "true" : void 0,
9038
- onClick: () => onOpen(node.id)
9039
- }, /* @__PURE__ */ h("span", { className: "wb-sessionLeading" }, /* @__PURE__ */ h(SessionLeading, {
9040
- node,
9041
- statuses,
9042
- renderSlot
9043
- })), /* @__PURE__ */ h("span", { className: "wb-sessionTitle" }, label), node.pinned ? /* @__PURE__ */ h(Tip, { label: t("session.pinned") }, /* @__PURE__ */ h("span", {
9044
- className: "wb-sessionPin",
9045
- role: "img",
9046
- "aria-label": t("session.pinned")
9047
- }, /* @__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, {
9048
- open: menuOpen,
9049
- portal: true,
9050
- anchor: /* @__PURE__ */ h("button", {
9051
- type: "button",
9052
- className: "wb-iconButton",
9053
- "aria-haspopup": "menu",
9054
- "aria-expanded": menuOpen,
9055
- "aria-label": t("session.actions", { name: label }),
9056
- onClick: (event) => {
9057
- event.stopPropagation();
9058
- setMenuOpen((value) => !value);
9059
- }
9060
- }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconEllipsisOutlineRegular, { size: 16 })),
9061
- onClose: () => setMenuOpen(false)
9062
- }, renderSlot("sidebar.workspaces.session.menu.item", owner, { hookContext: menuState })), renderSlot("sidebar.workspaces.session.row.action", owner)));
9185
+ displayTitle: node.title
9186
+ };
9187
+ return /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.HoverCard, {
9188
+ anchor: /* @__PURE__ */ h("div", {
9189
+ className: cx("wb-sessionRow", active && "wb-selected", menuOpen && "wb-menuOpen"),
9190
+ role: "treeitem",
9191
+ "aria-selected": active,
9192
+ onClick: () => onOpen(node.id),
9193
+ onPointerEnter: marquee.enter,
9194
+ onPointerLeave: marquee.leave
9195
+ }, /* @__PURE__ */ h("span", { className: "wb-sessionLeading" }, /* @__PURE__ */ h(SessionLeading, {
9196
+ node,
9197
+ statuses,
9198
+ renderSlot
9199
+ })), /* @__PURE__ */ h("span", {
9200
+ className: "wb-sessionTitle",
9201
+ ref: titleRef
9202
+ }, label), node.blank ? null : /* @__PURE__ */ h("span", {
9203
+ className: "wb-sessionTime",
9204
+ "aria-hidden": trailing === void 0 ? void 0 : true
9205
+ }, trailing ?? relativeTimeCompact(node.updatedAt, t)), node.pinned ? /* @__PURE__ */ h(Tip, { label: t("session.pinned") }, /* @__PURE__ */ h("span", {
9206
+ className: "wb-sessionPin",
9207
+ role: "img",
9208
+ "aria-label": t("session.pinned")
9209
+ }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconPinFillRegular, { size: 14 }))) : null, node.blank ? null : /* @__PURE__ */ h("span", {
9210
+ className: "wb-rowActions",
9211
+ onClick: (event) => event.stopPropagation()
9212
+ }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.Menu, {
9213
+ open: menuOpen,
9214
+ portal: true,
9215
+ closeOnPointerLeave: true,
9216
+ anchor: /* @__PURE__ */ h("button", {
9217
+ type: "button",
9218
+ className: "wb-iconButton",
9219
+ "aria-haspopup": "menu",
9220
+ "aria-expanded": menuOpen,
9221
+ "aria-label": t("session.actions", { name: label }),
9222
+ onClick: (event) => {
9223
+ event.stopPropagation();
9224
+ setMenuOpen((value) => !value);
9225
+ }
9226
+ }, /* @__PURE__ */ h(_deepseek_ai_dsh_client_ui_primitives.IconEllipsisOutlineRegular, { size: 16 })),
9227
+ onClose: () => setMenuOpen(false)
9228
+ }, renderSlot("sidebar.workspaces.session.menu.item", owner, { hookContext: menuState })), renderSlot("sidebar.workspaces.session.row.action", owner))),
9229
+ content: /* @__PURE__ */ h(SessionHoverContent, {
9230
+ node,
9231
+ statuses,
9232
+ renderSlot,
9233
+ t
9234
+ }),
9235
+ openDelayMs: 800,
9236
+ disabled: menuOpen,
9237
+ copyText: node.blank || node.title === "" ? void 0 : node.title,
9238
+ copyLabel: t("session.copy"),
9239
+ copiedLabel: t("hover.copied")
9240
+ });
9241
+ }
9242
+ function useScrollEdges(list, rows) {
9243
+ const [edges, setEdges] = useState(REST_EDGES);
9244
+ useEffect(() => {
9245
+ const element = list.current;
9246
+ if (element === null) return;
9247
+ const sync = () => {
9248
+ const next = scrollEdgesOf(element);
9249
+ setEdges((current) => current.canScrollUp === next.canScrollUp && current.canScrollDown === next.canScrollDown ? current : next);
9250
+ };
9251
+ sync();
9252
+ element.addEventListener("scroll", sync, { passive: true });
9253
+ const observer = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(sync);
9254
+ observer?.observe(element);
9255
+ return () => {
9256
+ element.removeEventListener("scroll", sync);
9257
+ observer?.disconnect();
9258
+ };
9259
+ }, [list, rows]);
9260
+ return edges;
9063
9261
  }
9064
9262
  function SessionList({ workspace, pinnedIds, archived, panelActive, useSessions, useSessionStatus, onOpen, renderSlot, t }) {
9065
9263
  const list = useSessions((state) => state);
@@ -9077,9 +9275,16 @@ window.__ModuleLoader__.load({
9077
9275
  currentId,
9078
9276
  pinned
9079
9277
  ]);
9278
+ const listRef = useRef(null);
9279
+ const edges = useScrollEdges(listRef, rows);
9080
9280
  if (workspace === null) return /* @__PURE__ */ h("div", { className: "wb-empty" }, t("session.noProject"));
9081
9281
  if (rows.length === 0) return /* @__PURE__ */ h("div", { className: "wb-empty" }, t("session.empty"));
9082
- return /* @__PURE__ */ h("div", { className: "wb-sessions" }, rows.map((row) => /* @__PURE__ */ h(SessionRow, {
9282
+ return /* @__PURE__ */ h("div", {
9283
+ ref: listRef,
9284
+ className: cx("wb-sessions", edges.canScrollUp && "wb-fadeTop", edges.canScrollDown && "wb-fadeBottom"),
9285
+ role: "tree",
9286
+ "aria-label": t("session.list.label")
9287
+ }, rows.map((row) => /* @__PURE__ */ h(SessionRow, {
9083
9288
  key: row.id,
9084
9289
  node: sessionNode(row, statusById, list, pinned, archivedSet),
9085
9290
  active: row.id === currentId,
@@ -9224,7 +9429,7 @@ window.__ModuleLoader__.load({
9224
9429
  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";
9225
9430
  //#endregion
9226
9431
  //#region src/shared/styles/sidebar-app.css?raw
9227
- 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}";
9432
+ 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}";
9228
9433
  //#endregion
9229
9434
  //#region src/shared/styles/sidebar.css?raw
9230
9435
  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";
@@ -9914,6 +10119,10 @@ window.__ModuleLoader__.load({
9914
10119
  "sidebar.session.row.leading": {
9915
10120
  kind: "list",
9916
10121
  scope: "root"
10122
+ },
10123
+ "sidebar.session.row.hover": {
10124
+ kind: "list",
10125
+ scope: "root"
9917
10126
  }
9918
10127
  };
9919
10128
  }