@design.estate/dees-catalog 4.9.0 → 4.10.0

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.
@@ -3901,23 +3901,23 @@ var init_innerFrom = __esm({
3901
3901
  });
3902
3902
 
3903
3903
  // node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js
3904
- function executeSchedule(parentSubscription, scheduler, work, delay3, repeat5) {
3904
+ function executeSchedule(parentSubscription, scheduler, work, delay3, repeat6) {
3905
3905
  if (delay3 === void 0) {
3906
3906
  delay3 = 0;
3907
3907
  }
3908
- if (repeat5 === void 0) {
3909
- repeat5 = false;
3908
+ if (repeat6 === void 0) {
3909
+ repeat6 = false;
3910
3910
  }
3911
3911
  var scheduleSubscription = scheduler.schedule(function() {
3912
3912
  work();
3913
- if (repeat5) {
3913
+ if (repeat6) {
3914
3914
  parentSubscription.add(this.schedule(null, delay3));
3915
3915
  } else {
3916
3916
  this.unsubscribe();
3917
3917
  }
3918
3918
  }, delay3);
3919
3919
  parentSubscription.add(scheduleSubscription);
3920
- if (!repeat5) {
3920
+ if (!repeat6) {
3921
3921
  return scheduleSubscription;
3922
3922
  }
3923
3923
  }
@@ -177039,8 +177039,14 @@ var demoSessions = Array.from({ length: 24 }, (_3, index3) => ({
177039
177039
  createdAt: Date.now() - (index3 + 2) * 36e5,
177040
177040
  updatedAt: Date.now() - (index3 + 1) * 35e5,
177041
177041
  messageCount: 4 + index3 % 9,
177042
- preview: "Latest: the regression test asserts the cache key stays stable across\u2026"
177042
+ preview: "Latest: the regression test asserts the cache key stays stable across\u2026",
177043
+ state: ["normal", "working", "finished", "attention", "error"][index3 % 5],
177044
+ working: index3 % 5 === 1
177043
177045
  }));
177046
+ var demoGroups = [
177047
+ { id: "active", name: "Active work", sessionIds: ["session-0", "session-1", "session-2"] },
177048
+ { id: "review", name: "Review", sessionIds: ["session-3", "session-4"] }
177049
+ ];
177044
177050
  var openModal = /* @__PURE__ */ __name(async () => {
177045
177051
  const { DeesModal: DeesModal2 } = await Promise.resolve().then(() => (init_dees_modal(), dees_modal_exports));
177046
177052
  const content3 = document.createElement("dees-harness-session-list");
@@ -177075,6 +177081,9 @@ var demoFunc63 = /* @__PURE__ */ __name(() => b2`
177075
177081
  <dees-button @clicked=${openModal}>Open in a DeesModal</dees-button>
177076
177082
  <dees-harness-session-list
177077
177083
  .sessions=${demoSessions}
177084
+ .groups=${demoGroups}
177085
+ .ungroupedSessionIds=${demoSessions.slice(5).map((session) => session.id)}
177086
+ .enableGrouping=${true}
177078
177087
  selectedSessionId="session-2"
177079
177088
  @harness-session-select=${(event) => console.log("select", event.detail.session)}
177080
177089
  ></dees-harness-session-list>
@@ -177085,9 +177094,10 @@ var demoFunc63 = /* @__PURE__ */ __name(() => b2`
177085
177094
  init_dist_ts25();
177086
177095
  init_theme();
177087
177096
  init_dees_icon();
177088
- var _collapsedGroupIds_dec, _dropSlot_dec, _draggingSessionId_dec, _search_dec, _enableGrouping_dec, _groups_dec2, _emptyText_dec2, _loading_dec4, _selectedSessionId_dec, _sessions_dec, _a89, _DeesHarnessSessionList_decorators, _init90, _sessions, _selectedSessionId, _loading4, _emptyText2, _groups2, _enableGrouping, _search, _draggingSessionId, _dropSlot, _collapsedGroupIds;
177097
+ var _collapsedGroupIds_dec, _expandedSessionIds_dec, _draggedItemHeight_dec, _dropSlot_dec, _draggingSessionId_dec, _search_dec, _ungroupedSessionIds_dec, _enableGrouping_dec, _groups_dec2, _emptyText_dec2, _loading_dec4, _selectedSessionId_dec, _sessions_dec, _a89, _DeesHarnessSessionList_decorators, _init90, _sessions, _selectedSessionId, _loading4, _emptyText2, _groups2, _enableGrouping, _ungroupedSessionIds, _search, _draggingSessionId, _dropSlot, _draggedItemHeight, _expandedSessionIds, _collapsedGroupIds;
177098
+ var { repeat: repeat5 } = directives_exports;
177089
177099
  _DeesHarnessSessionList_decorators = [customElement("dees-harness-session-list")];
177090
- var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = DeesElement, _sessions_dec = [n5({ attribute: false })], _selectedSessionId_dec = [n5()], _loading_dec4 = [n5({ type: Boolean })], _emptyText_dec2 = [n5()], _groups_dec2 = [n5({ attribute: false })], _enableGrouping_dec = [n5({ type: Boolean })], _search_dec = [r5()], _draggingSessionId_dec = [r5()], _dropSlot_dec = [r5()], _collapsedGroupIds_dec = [r5()], _a89) {
177100
+ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = DeesElement, _sessions_dec = [n5({ attribute: false })], _selectedSessionId_dec = [n5()], _loading_dec4 = [n5({ type: Boolean })], _emptyText_dec2 = [n5()], _groups_dec2 = [n5({ attribute: false })], _enableGrouping_dec = [n5({ type: Boolean })], _ungroupedSessionIds_dec = [n5({ attribute: false })], _search_dec = [r5()], _draggingSessionId_dec = [r5()], _dropSlot_dec = [r5()], _draggedItemHeight_dec = [r5()], _expandedSessionIds_dec = [r5()], _collapsedGroupIds_dec = [r5()], _a89) {
177091
177101
  constructor() {
177092
177102
  super(...arguments);
177093
177103
  __privateAdd(this, _sessions, __runInitializers(_init90, 8, this, [])), __runInitializers(_init90, 11, this);
@@ -177096,10 +177106,16 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177096
177106
  __privateAdd(this, _emptyText2, __runInitializers(_init90, 20, this, "No conversations yet.")), __runInitializers(_init90, 23, this);
177097
177107
  __privateAdd(this, _groups2, __runInitializers(_init90, 24, this, [])), __runInitializers(_init90, 27, this);
177098
177108
  __privateAdd(this, _enableGrouping, __runInitializers(_init90, 28, this, false)), __runInitializers(_init90, 31, this);
177099
- __privateAdd(this, _search, __runInitializers(_init90, 32, this, "")), __runInitializers(_init90, 35, this);
177100
- __privateAdd(this, _draggingSessionId, __runInitializers(_init90, 36, this, "")), __runInitializers(_init90, 39, this);
177101
- __privateAdd(this, _dropSlot, __runInitializers(_init90, 40, this)), __runInitializers(_init90, 43, this);
177102
- __privateAdd(this, _collapsedGroupIds, __runInitializers(_init90, 44, this, /* @__PURE__ */ new Set())), __runInitializers(_init90, 47, this);
177109
+ __privateAdd(this, _ungroupedSessionIds, __runInitializers(_init90, 32, this, [])), __runInitializers(_init90, 35, this);
177110
+ __privateAdd(this, _search, __runInitializers(_init90, 36, this, "")), __runInitializers(_init90, 39, this);
177111
+ __privateAdd(this, _draggingSessionId, __runInitializers(_init90, 40, this, "")), __runInitializers(_init90, 43, this);
177112
+ __privateAdd(this, _dropSlot, __runInitializers(_init90, 44, this)), __runInitializers(_init90, 47, this);
177113
+ __privateAdd(this, _draggedItemHeight, __runInitializers(_init90, 48, this, 0)), __runInitializers(_init90, 51, this);
177114
+ __privateAdd(this, _expandedSessionIds, __runInitializers(_init90, 52, this, /* @__PURE__ */ new Set())), __runInitializers(_init90, 55, this);
177115
+ __privateAdd(this, _collapsedGroupIds, __runInitializers(_init90, 56, this, /* @__PURE__ */ new Set())), __runInitializers(_init90, 59, this);
177116
+ __publicField(this, "reflowGeneration", 0);
177117
+ __publicField(this, "reflowAnimations", /* @__PURE__ */ new Set());
177118
+ __publicField(this, "dragSourceElement");
177103
177119
  }
177104
177120
  get sessionsById() {
177105
177121
  return new Map(this.sessions.map((session) => [session.id, session]));
@@ -177111,12 +177127,25 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177111
177127
  }
177112
177128
  return ids;
177113
177129
  }
177114
- /** Ungrouped sessions, most recent first. */
177130
+ /** Pinned entries first, followed by explicitly ordered sortable sessions. */
177115
177131
  get ungroupedSessions() {
177116
177132
  const grouped = this.groupedSessionIds;
177117
- return [...this.sessions].filter((session) => !grouped.has(session.id)).sort(
177133
+ const available = this.sessions.filter((session) => !grouped.has(session.id));
177134
+ const pinned = available.filter((session) => session.draggable === false);
177135
+ const sortableById = new Map(
177136
+ available.filter((session) => session.draggable !== false).map((session) => [session.id, session])
177137
+ );
177138
+ const ordered = [];
177139
+ for (const sessionId of this.ungroupedSessionIds) {
177140
+ const session = sortableById.get(sessionId);
177141
+ if (!session) continue;
177142
+ ordered.push(session);
177143
+ sortableById.delete(sessionId);
177144
+ }
177145
+ const newSessions = [...sortableById.values()].sort(
177118
177146
  (left, right) => (right.updatedAt ?? right.createdAt ?? 0) - (left.updatedAt ?? left.createdAt ?? 0)
177119
177147
  );
177148
+ return [...pinned, ...ordered, ...newSessions];
177120
177149
  }
177121
177150
  get filteredSessions() {
177122
177151
  const query3 = this.search.trim().toLowerCase();
@@ -177131,10 +177160,40 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177131
177160
  focusSearch() {
177132
177161
  this.shadowRoot?.querySelector(".searchRow input")?.focus();
177133
177162
  }
177163
+ updated(changedProperties) {
177164
+ super.updated(changedProperties);
177165
+ if (this.draggingSessionId && !this.dragSourceElement?.isConnected) {
177166
+ this.clearDragState();
177167
+ }
177168
+ if (!changedProperties.has("sessions")) return;
177169
+ const previousSessions = changedProperties.get("sessions");
177170
+ const previousById = new Map((previousSessions ?? []).map((session) => [session.id, session]));
177171
+ const knownIds = new Set(this.sessions.map((session) => session.id));
177172
+ if (this.draggingSessionId && !knownIds.has(this.draggingSessionId)) {
177173
+ this.clearDragState();
177174
+ }
177175
+ const nextExpanded = new Set(
177176
+ [...this.expandedSessionIds].filter((sessionId) => knownIds.has(sessionId))
177177
+ );
177178
+ for (const session of this.sessions) {
177179
+ const previous3 = previousById.get(session.id);
177180
+ if (previous3 && previous3.working !== true && session.working === true) {
177181
+ nextExpanded.add(session.id);
177182
+ }
177183
+ }
177184
+ if (nextExpanded.size !== this.expandedSessionIds.size || [...nextExpanded].some((sessionId) => !this.expandedSessionIds.has(sessionId))) {
177185
+ this.expandedSessionIds = nextExpanded;
177186
+ }
177187
+ }
177188
+ async disconnectedCallback() {
177189
+ this.clearDragState();
177190
+ await super.disconnectedCallback();
177191
+ }
177134
177192
  render() {
177135
177193
  const groupingActive = this.enableGrouping && !this.search.trim();
177136
177194
  return b2`
177137
177195
  <div class="searchRow">
177196
+ <dees-icon class="searchIcon" icon="lucide:Search" iconSize="13"></dees-icon>
177138
177197
  <input
177139
177198
  placeholder="Search conversations"
177140
177199
  .value=${this.search}
@@ -177174,7 +177233,15 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177174
177233
  ${this.sessions.length ? "No conversations match this search." : this.emptyText}
177175
177234
  </div>`;
177176
177235
  }
177177
- return b2`${sessions.map((session) => this.renderItem(session, null, -1))}`;
177236
+ return b2`
177237
+ <div class="section">
177238
+ ${repeat5(
177239
+ sessions,
177240
+ (session) => session.id,
177241
+ (session) => this.renderItem(session, null, -1)
177242
+ )}
177243
+ </div>
177244
+ `;
177178
177245
  }
177179
177246
  renderGroupedList() {
177180
177247
  const byId = this.sessionsById;
@@ -177186,7 +177253,7 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177186
177253
  ${this.groups.map((group) => {
177187
177254
  const members = group.sessionIds.map((id) => byId.get(id)).filter((session) => session !== void 0);
177188
177255
  const collapsed = this.collapsedGroupIds.has(group.id);
177189
- const isHeaderDrop = this.dropSlot?.groupId === group.id && this.dropSlot.index === members.length && collapsed;
177256
+ const isHeaderDrop = this.dropSlot?.groupId === group.id && this.dropSlot.index === this.sortableSessions(members).length && collapsed;
177190
177257
  return b2`
177191
177258
  <button
177192
177259
  class="groupHeader ${collapsed ? "collapsed" : ""} ${isHeaderDrop ? "dropTarget" : ""}"
@@ -177204,8 +177271,16 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177204
177271
  new CustomEvent("harness-group-context", { detail, bubbles: true, composed: true })
177205
177272
  );
177206
177273
  }}
177207
- @dragover=${(event) => this.handleDragOverSlot(event, group.id, members.length)}
177208
- @drop=${(event) => this.handleDrop(event, group.id, members.length)}
177274
+ @dragover=${(event) => this.handleDragOverSlot(
177275
+ event,
177276
+ group.id,
177277
+ this.sortableSessions(members).length
177278
+ )}
177279
+ @drop=${(event) => this.handleDrop(
177280
+ event,
177281
+ group.id,
177282
+ this.sortableSessions(members).length
177283
+ )}
177209
177284
  >
177210
177285
  <dees-icon class="chevron" icon="lucide:ChevronDown" iconSize="12"></dees-icon>
177211
177286
  <span>${group.name}</span>
@@ -177214,7 +177289,7 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177214
177289
  ${collapsed ? "" : this.renderSection(members, group.id)}
177215
177290
  `;
177216
177291
  })}
177217
- ${this.groups.length && ungrouped.length ? b2`
177292
+ ${this.groups.length && (ungrouped.length || this.draggingSessionId) ? b2`
177218
177293
  <button
177219
177294
  class="groupHeader"
177220
177295
  type="button"
@@ -177231,29 +177306,69 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177231
177306
  }
177232
177307
  renderSection(sessions, groupId) {
177233
177308
  const slot = this.dropSlot;
177309
+ const entries = [];
177310
+ let logicalIndex = 0;
177311
+ for (const session of sessions) {
177312
+ const isDragging = session.id === this.draggingSessionId;
177313
+ const sortable = session.draggable !== false;
177314
+ if (slot && slot.groupId === groupId && slot.index === logicalIndex && !isDragging && sortable) {
177315
+ entries.push({ type: "placeholder", key: `placeholder:${groupId ?? "ungrouped"}` });
177316
+ }
177317
+ entries.push({
177318
+ type: "session",
177319
+ key: `session:${session.id}`,
177320
+ session,
177321
+ logicalIndex: sortable ? logicalIndex : -1
177322
+ });
177323
+ if (sortable && !isDragging) logicalIndex += 1;
177324
+ }
177325
+ if (slot && slot.groupId === groupId && slot.index === logicalIndex) {
177326
+ entries.push({ type: "placeholder", key: `placeholder:${groupId ?? "ungrouped"}` });
177327
+ }
177328
+ const hasPlaceholder = entries.some((entry) => entry.type === "placeholder");
177234
177329
  return b2`
177235
- ${sessions.map(
177236
- (session, index3) => b2`
177237
- ${slot && slot.groupId === groupId && slot.index === index3 ? b2`<div class="dropLine"></div>` : ""}
177238
- ${this.renderItem(session, groupId, index3)}
177239
- `
177330
+ <div class="section" data-group-id=${groupId ?? ""}>
177331
+ ${repeat5(
177332
+ entries,
177333
+ (entry) => entry.key,
177334
+ (entry) => entry.type === "placeholder" ? this.renderDropPlaceholder(groupId, slot?.index ?? 0) : this.renderItem(entry.session, groupId, entry.logicalIndex)
177240
177335
  )}
177241
- ${slot && slot.groupId === groupId && slot.index === sessions.length ? b2`<div class="dropLine"></div>` : ""}
177336
+ ${this.draggingSessionId && !hasPlaceholder && this.sortableSessions(sessions).length === 0 ? b2`
177337
+ <div
177338
+ class="emptyDropZone"
177339
+ @dragover=${(event) => this.handleDragOverSlot(event, groupId, 0)}
177340
+ @drop=${(event) => this.handleDrop(event, groupId, 0)}
177341
+ ></div>
177342
+ ` : ""}
177343
+ </div>
177344
+ `;
177345
+ }
177346
+ renderDropPlaceholder(groupId, index3) {
177347
+ return b2`
177348
+ <div
177349
+ class="dropPlaceholder"
177350
+ style=${`height: ${Math.max(46, this.draggedItemHeight)}px`}
177351
+ @dragover=${(event) => this.handleDragOverSlot(event, groupId, index3)}
177352
+ @drop=${(event) => this.handleDrop(event, groupId, index3)}
177353
+ ></div>
177242
177354
  `;
177243
177355
  }
177244
177356
  renderItem(session, groupId, index3) {
177245
- const draggable = this.enableGrouping && index3 >= 0;
177357
+ const draggable = this.enableGrouping && session.draggable !== false && index3 >= 0 && !globalThis.matchMedia?.("(pointer: coarse)").matches;
177358
+ const expanded = this.expandedSessionIds.has(session.id);
177359
+ const state5 = session.state ?? "normal";
177360
+ const detailsId = `session-details-${session.id}`;
177246
177361
  return b2`
177247
- <button
177248
- class="item ${session.id === this.selectedSessionId ? "selected" : ""} ${this.draggingSessionId === session.id ? "dragging" : ""}"
177249
- type="button"
177250
- draggable=${draggable ? "true" : "false"}
177251
- @click=${() => this.emit("harness-session-select", session)}
177252
- @dblclick=${() => this.emit("harness-session-open", session)}
177253
- @keydown=${(event) => {
177254
- if (event.key === "Enter") this.emit("harness-session-open", session);
177362
+ <article
177363
+ class="item state-${state5} ${expanded ? "expanded" : ""} ${session.id === this.selectedSessionId ? "selected" : ""} ${this.draggingSessionId === session.id ? "dragging" : ""}"
177364
+ data-session-id=${session.id}
177365
+ .draggable=${draggable}
177366
+ @dblclick=${(event) => {
177367
+ if (this.eventTargetsExpandToggle(event)) return;
177368
+ this.emit("harness-session-open", session);
177255
177369
  }}
177256
177370
  @contextmenu=${(event) => {
177371
+ if (this.eventTargetsExpandToggle(event)) return;
177257
177372
  event.preventDefault();
177258
177373
  const detail = {
177259
177374
  session,
@@ -177266,38 +177381,99 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177266
177381
  );
177267
177382
  }}
177268
177383
  @dragstart=${(event) => {
177269
- if (!draggable) return;
177270
- this.draggingSessionId = session.id;
177271
- event.dataTransfer?.setData("text/plain", session.id);
177272
- if (event.dataTransfer) event.dataTransfer.effectAllowed = "move";
177273
- }}
177274
- @dragend=${() => {
177275
- this.draggingSessionId = "";
177276
- this.dropSlot = void 0;
177384
+ this.handleDragStart(event, session, groupId, index3, draggable);
177277
177385
  }}
177386
+ @dragend=${() => this.clearDragState()}
177278
177387
  @dragover=${(event) => {
177279
- if (!this.draggingSessionId || index3 < 0) return;
177388
+ if (!this.draggingSessionId || index3 < 0 || session.id === this.draggingSessionId) return;
177280
177389
  event.preventDefault();
177281
177390
  const rect = event.currentTarget.getBoundingClientRect();
177282
177391
  const before = event.clientY < rect.top + rect.height / 2;
177283
177392
  this.setDropSlot(groupId, before ? index3 : index3 + 1);
177284
177393
  }}
177285
177394
  @drop=${(event) => {
177286
- if (index3 < 0) return;
177395
+ if (index3 < 0 || session.id === this.draggingSessionId) return;
177287
177396
  const rect = event.currentTarget.getBoundingClientRect();
177288
177397
  const before = event.clientY < rect.top + rect.height / 2;
177289
177398
  this.handleDrop(event, groupId, before ? index3 : index3 + 1);
177290
177399
  }}
177291
177400
  >
177292
- <span class="itemTitle">
177293
- ${session.icon ? b2`<dees-icon class="itemIcon" icon=${session.icon} iconSize="12"></dees-icon>` : ""}
177294
- <span class="titleText">${session.title || session.id}</span>
177295
- <span class="itemTime">${harnessFormatRelativeTime(session.updatedAt ?? session.createdAt)}</span>
177296
- </span>
177297
- ${session.preview ? b2`<span class="itemPreview">${session.preview}${session.messageCount ? ` \xB7 ${session.messageCount} messages` : ""}</span>` : ""}
177298
- </button>
177401
+ <div class="itemHeader">
177402
+ <button
177403
+ class="itemPrimary"
177404
+ type="button"
177405
+ aria-current=${session.id === this.selectedSessionId ? "true" : "false"}
177406
+ @click=${() => this.emit("harness-session-select", session)}
177407
+ @keydown=${(event) => {
177408
+ if (event.key !== "Enter") return;
177409
+ event.preventDefault();
177410
+ this.emit("harness-session-open", session);
177411
+ }}
177412
+ >
177413
+ <span class="stateDot"></span>
177414
+ <span class="itemCopy">
177415
+ <span class="itemTitle">
177416
+ ${session.icon ? b2`<dees-icon class="itemIcon" icon=${session.icon} iconSize="13"></dees-icon>` : ""}
177417
+ <span class="titleText">${session.title || session.id}</span>
177418
+ </span>
177419
+ <span class="itemTime">${harnessFormatRelativeTime(session.updatedAt ?? session.createdAt)}</span>
177420
+ <span class="visuallyHidden">Status: ${this.sessionStateLabel(state5)}</span>
177421
+ </span>
177422
+ </button>
177423
+ <button
177424
+ class="expandToggle"
177425
+ type="button"
177426
+ aria-expanded=${expanded ? "true" : "false"}
177427
+ aria-controls=${detailsId}
177428
+ title=${expanded ? "Collapse conversation card" : "Expand conversation card"}
177429
+ @click=${(event) => {
177430
+ event.stopPropagation();
177431
+ this.toggleSessionExpanded(session.id);
177432
+ }}
177433
+ >
177434
+ <dees-icon icon="lucide:ChevronDown" iconSize="15"></dees-icon>
177435
+ </button>
177436
+ </div>
177437
+ ${expanded ? b2`
177438
+ <div class="itemDetails" id=${detailsId}>
177439
+ <div class="stateLine">
177440
+ <span class="stateDot"></span>
177441
+ <span>${this.sessionStateLabel(state5)}</span>
177442
+ </div>
177443
+ ${session.preview ? b2`<div class="itemPreview">${session.preview}</div>` : ""}
177444
+ <div class="itemMeta">
177445
+ ${session.messageCount ? `${session.messageCount} messages \xB7 ` : ""}${session.id}
177446
+ </div>
177447
+ </div>
177448
+ ` : ""}
177449
+ </article>
177299
177450
  `;
177300
177451
  }
177452
+ eventTargetsExpandToggle(event) {
177453
+ return event.composedPath().some(
177454
+ (target) => target instanceof HTMLElement && target.classList.contains("expandToggle")
177455
+ );
177456
+ }
177457
+ sessionStateLabel(state5) {
177458
+ switch (state5) {
177459
+ case "working":
177460
+ return "Working";
177461
+ case "finished":
177462
+ return "Finished";
177463
+ case "attention":
177464
+ return "Needs attention";
177465
+ case "error":
177466
+ return "Error";
177467
+ default:
177468
+ return "Idle";
177469
+ }
177470
+ }
177471
+ toggleSessionExpanded(sessionIdArg) {
177472
+ const next2 = new Set(this.expandedSessionIds);
177473
+ if (next2.has(sessionIdArg)) next2.delete(sessionIdArg);
177474
+ else next2.add(sessionIdArg);
177475
+ this.expandedSessionIds = next2;
177476
+ }
177301
177477
  toggleGroupCollapsed(groupIdArg) {
177302
177478
  const next2 = new Set(this.collapsedGroupIds);
177303
177479
  if (next2.has(groupIdArg)) {
@@ -177307,32 +177483,116 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177307
177483
  }
177308
177484
  this.collapsedGroupIds = next2;
177309
177485
  }
177486
+ sortableSessions(sessionsArg, excludeDraggingArg = true) {
177487
+ return sessionsArg.filter((session) => session.draggable !== false && (!excludeDraggingArg || session.id !== this.draggingSessionId));
177488
+ }
177489
+ sessionsForGroup(groupIdArg) {
177490
+ if (groupIdArg === null) return this.ungroupedSessions;
177491
+ const group = this.groups.find((candidate) => candidate.id === groupIdArg);
177492
+ if (!group) return [];
177493
+ const byId = this.sessionsById;
177494
+ return group.sessionIds.map((sessionId) => byId.get(sessionId)).filter((session) => session !== void 0);
177495
+ }
177496
+ handleDragStart(event, session, groupId, logicalIndex, draggable) {
177497
+ if (!draggable || logicalIndex < 0) {
177498
+ event.preventDefault();
177499
+ return;
177500
+ }
177501
+ const item = event.currentTarget;
177502
+ this.reflowGeneration += 1;
177503
+ this.cancelReflowAnimations();
177504
+ this.draggedItemHeight = Math.ceil(item.getBoundingClientRect().height);
177505
+ this.dragSourceElement = item;
177506
+ this.draggingSessionId = session.id;
177507
+ const remainingCount = this.sortableSessions(this.sessionsForGroup(groupId)).length;
177508
+ this.dropSlot = { groupId, index: Math.min(logicalIndex, remainingCount) };
177509
+ event.dataTransfer?.setData("text/plain", session.id);
177510
+ if (event.dataTransfer) event.dataTransfer.effectAllowed = "move";
177511
+ }
177310
177512
  setDropSlot(groupIdArg, indexArg) {
177311
177513
  const current = this.dropSlot;
177312
177514
  if (current && current.groupId === groupIdArg && current.index === indexArg) return;
177515
+ const previousRects = this.captureCardRects();
177516
+ const generation = ++this.reflowGeneration;
177313
177517
  this.dropSlot = { groupId: groupIdArg, index: indexArg };
177518
+ void this.animateCardReflow(previousRects, generation);
177314
177519
  }
177315
177520
  handleDragOverSlot(event, groupIdArg, indexArg) {
177316
177521
  if (!this.draggingSessionId) return;
177317
177522
  event.preventDefault();
177523
+ if (event.dataTransfer) event.dataTransfer.dropEffect = "move";
177318
177524
  this.setDropSlot(groupIdArg, indexArg);
177319
177525
  }
177320
177526
  handleDrop(event, groupIdArg, indexArg) {
177321
177527
  event.preventDefault();
177322
177528
  event.stopPropagation();
177323
177529
  const sessionId = this.draggingSessionId || event.dataTransfer?.getData("text/plain") || "";
177324
- this.draggingSessionId = "";
177325
- this.dropSlot = void 0;
177326
- if (!sessionId) return;
177530
+ if (!sessionId) {
177531
+ this.clearDragState();
177532
+ return;
177533
+ }
177534
+ const targetSessions = this.sortableSessions(this.sessionsForGroup(groupIdArg));
177535
+ const beforeSessionId = targetSessions[Math.max(0, indexArg)]?.id;
177536
+ const sourceGroupId = this.groups.find((group) => group.sessionIds.includes(sessionId))?.id ?? null;
177537
+ const sourceSessions = this.sortableSessions(this.sessionsForGroup(sourceGroupId), false);
177538
+ const sourceIndex = sourceSessions.findIndex((session) => session.id === sessionId);
177539
+ const compatibilityIndex = sourceGroupId === groupIdArg && sourceIndex >= 0 && indexArg > sourceIndex ? indexArg + 1 : indexArg;
177327
177540
  const detail = {
177328
177541
  sessionId,
177329
177542
  groupId: groupIdArg,
177330
- index: Math.max(0, indexArg)
177543
+ index: Math.max(0, compatibilityIndex),
177544
+ ...beforeSessionId ? { beforeSessionId } : {}
177331
177545
  };
177546
+ this.clearDragState();
177332
177547
  this.dispatchEvent(
177333
177548
  new CustomEvent("harness-session-move", { detail, bubbles: true, composed: true })
177334
177549
  );
177335
177550
  }
177551
+ captureCardRects() {
177552
+ const result = /* @__PURE__ */ new Map();
177553
+ for (const item of this.shadowRoot?.querySelectorAll(".item[data-session-id]") ?? []) {
177554
+ if (item.dataset.sessionId === this.draggingSessionId) continue;
177555
+ result.set(item.dataset.sessionId ?? "", item.getBoundingClientRect());
177556
+ }
177557
+ return result;
177558
+ }
177559
+ async animateCardReflow(previousRectsArg, generationArg) {
177560
+ await this.updateComplete;
177561
+ if (generationArg !== this.reflowGeneration || !this.isConnected || globalThis.matchMedia?.("(prefers-reduced-motion: reduce)").matches) return;
177562
+ this.cancelReflowAnimations();
177563
+ for (const item of this.shadowRoot?.querySelectorAll(".item[data-session-id]") ?? []) {
177564
+ const sessionId = item.dataset.sessionId ?? "";
177565
+ if (!sessionId || sessionId === this.draggingSessionId) continue;
177566
+ const previous3 = previousRectsArg.get(sessionId);
177567
+ if (!previous3) continue;
177568
+ const current = item.getBoundingClientRect();
177569
+ const deltaY = previous3.top - current.top;
177570
+ if (Math.abs(deltaY) < 0.5) continue;
177571
+ const animation = item.animate(
177572
+ [
177573
+ { transform: `translateY(${deltaY}px)` },
177574
+ { transform: "translateY(0)" }
177575
+ ],
177576
+ { duration: 180, easing: "cubic-bezier(0.22, 1, 0.36, 1)" }
177577
+ );
177578
+ this.reflowAnimations.add(animation);
177579
+ void animation.finished.catch(() => void 0).finally(() => {
177580
+ this.reflowAnimations.delete(animation);
177581
+ });
177582
+ }
177583
+ }
177584
+ cancelReflowAnimations() {
177585
+ for (const animation of this.reflowAnimations) animation.cancel();
177586
+ this.reflowAnimations.clear();
177587
+ }
177588
+ clearDragState() {
177589
+ this.reflowGeneration += 1;
177590
+ this.cancelReflowAnimations();
177591
+ this.draggingSessionId = "";
177592
+ this.draggedItemHeight = 0;
177593
+ this.dropSlot = void 0;
177594
+ this.dragSourceElement = void 0;
177595
+ }
177336
177596
  emit(name, session) {
177337
177597
  this.dispatchEvent(new CustomEvent(name, { detail: { session }, bubbles: true, composed: true }));
177338
177598
  }
@@ -177344,9 +177604,12 @@ _loading4 = new WeakMap();
177344
177604
  _emptyText2 = new WeakMap();
177345
177605
  _groups2 = new WeakMap();
177346
177606
  _enableGrouping = new WeakMap();
177607
+ _ungroupedSessionIds = new WeakMap();
177347
177608
  _search = new WeakMap();
177348
177609
  _draggingSessionId = new WeakMap();
177349
177610
  _dropSlot = new WeakMap();
177611
+ _draggedItemHeight = new WeakMap();
177612
+ _expandedSessionIds = new WeakMap();
177350
177613
  _collapsedGroupIds = new WeakMap();
177351
177614
  __decorateElement(_init90, 4, "sessions", _sessions_dec, _DeesHarnessSessionList, _sessions);
177352
177615
  __decorateElement(_init90, 4, "selectedSessionId", _selectedSessionId_dec, _DeesHarnessSessionList, _selectedSessionId);
@@ -177354,9 +177617,12 @@ __decorateElement(_init90, 4, "loading", _loading_dec4, _DeesHarnessSessionList,
177354
177617
  __decorateElement(_init90, 4, "emptyText", _emptyText_dec2, _DeesHarnessSessionList, _emptyText2);
177355
177618
  __decorateElement(_init90, 4, "groups", _groups_dec2, _DeesHarnessSessionList, _groups2);
177356
177619
  __decorateElement(_init90, 4, "enableGrouping", _enableGrouping_dec, _DeesHarnessSessionList, _enableGrouping);
177620
+ __decorateElement(_init90, 4, "ungroupedSessionIds", _ungroupedSessionIds_dec, _DeesHarnessSessionList, _ungroupedSessionIds);
177357
177621
  __decorateElement(_init90, 4, "search", _search_dec, _DeesHarnessSessionList, _search);
177358
177622
  __decorateElement(_init90, 4, "draggingSessionId", _draggingSessionId_dec, _DeesHarnessSessionList, _draggingSessionId);
177359
177623
  __decorateElement(_init90, 4, "dropSlot", _dropSlot_dec, _DeesHarnessSessionList, _dropSlot);
177624
+ __decorateElement(_init90, 4, "draggedItemHeight", _draggedItemHeight_dec, _DeesHarnessSessionList, _draggedItemHeight);
177625
+ __decorateElement(_init90, 4, "expandedSessionIds", _expandedSessionIds_dec, _DeesHarnessSessionList, _expandedSessionIds);
177360
177626
  __decorateElement(_init90, 4, "collapsedGroupIds", _collapsedGroupIds_dec, _DeesHarnessSessionList, _collapsedGroupIds);
177361
177627
  _DeesHarnessSessionList = __decorateElement(_init90, 0, "DeesHarnessSessionList", _DeesHarnessSessionList_decorators, _DeesHarnessSessionList);
177362
177628
  __name(_DeesHarnessSessionList, "DeesHarnessSessionList");
@@ -177371,26 +177637,48 @@ __publicField(_DeesHarnessSessionList, "styles", [
177371
177637
  flex-direction: column;
177372
177638
  min-height: 0;
177373
177639
  font-family: var(--dees-font-family);
177640
+ --session-normal: var(--dees-color-text-muted);
177641
+ --session-working: var(--dees-color-accent-primary);
177642
+ --session-finished: var(--dees-color-accent-success);
177643
+ --session-attention: #bf5af2;
177644
+ --session-error: var(--dees-color-accent-error);
177645
+ }
177646
+
177647
+ :host([gobright]) {
177648
+ --session-attention: #af52de;
177374
177649
  }
177375
177650
 
177376
177651
  .searchRow {
177652
+ position: relative;
177377
177653
  flex: 0 0 auto;
177378
- padding: var(--dees-spacing-sm);
177654
+ padding: var(--dees-spacing-sm) var(--dees-spacing-md) var(--dees-spacing-md);
177655
+ }
177656
+
177657
+ .searchIcon {
177658
+ position: absolute;
177659
+ top: 50%;
177660
+ left: calc(var(--dees-spacing-md) + 10px);
177661
+ color: var(--dees-color-text-muted);
177662
+ transform: translateY(-62%);
177663
+ pointer-events: none;
177379
177664
  }
177380
177665
 
177381
177666
  .searchRow input {
177382
177667
  width: 100%;
177383
- height: var(--dees-control-height-sm);
177384
- padding: 0 var(--dees-spacing-md);
177668
+ height: var(--dees-control-height-lg);
177669
+ padding: 0 var(--dees-spacing-md) 0 34px;
177385
177670
  border: 1px solid var(--dees-color-border-default);
177386
- border-radius: var(--dees-radius-md);
177671
+ border-radius: var(--dees-radius-lg);
177387
177672
  corner-shape: var(--dees-corner-shape);
177388
- background: var(--dees-color-bg-primary);
177673
+ background: color-mix(in srgb, var(--dees-color-bg-primary) 78%, transparent);
177389
177674
  color: var(--dees-color-text-primary);
177390
177675
  font-family: inherit;
177391
- font-size: var(--dees-font-control-size, 13px);
177676
+ font-size: var(--dees-font-control-size-sm, 12px);
177392
177677
  outline: none;
177393
177678
  box-sizing: border-box;
177679
+ box-shadow: var(--dees-shadow-xs);
177680
+ transition: border-color var(--dees-transition-fast) var(--dees-ease-standard),
177681
+ box-shadow var(--dees-transition-fast) var(--dees-ease-standard);
177394
177682
  }
177395
177683
 
177396
177684
  .searchRow input:focus {
@@ -177404,46 +177692,146 @@ __publicField(_DeesHarnessSessionList, "styles", [
177404
177692
  overflow-y: auto;
177405
177693
  scrollbar-width: thin;
177406
177694
  scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
177407
- padding: 0 var(--dees-spacing-xs) var(--dees-spacing-xs);
177695
+ padding: 0 var(--dees-spacing-md) var(--dees-spacing-md);
177696
+ }
177697
+
177698
+ .section {
177699
+ position: relative;
177408
177700
  display: grid;
177409
- gap: 2px;
177701
+ gap: var(--dees-spacing-sm);
177410
177702
  align-content: start;
177411
177703
  }
177412
177704
 
177413
177705
  .item {
177706
+ --card-accent: var(--session-normal);
177707
+ position: relative;
177414
177708
  width: 100%;
177415
- display: block;
177416
- padding: var(--dees-spacing-xs) var(--dees-spacing-sm);
177417
- border: 0;
177418
- border-radius: var(--dees-radius-md);
177709
+ min-width: 0;
177710
+ overflow: hidden;
177711
+ border: 1px solid color-mix(in srgb, var(--card-accent) 24%, var(--dees-color-border-subtle));
177712
+ border-radius: var(--dees-radius-xl);
177419
177713
  corner-shape: var(--dees-corner-shape);
177420
- background: transparent;
177714
+ background: color-mix(in srgb, var(--dees-color-bg-primary) 90%, transparent);
177421
177715
  color: var(--dees-color-text-primary);
177422
- cursor: pointer;
177423
- font-family: inherit;
177424
- text-align: left;
177425
- transition: background var(--dees-transition-fast) var(--dees-ease-standard);
177716
+ box-shadow:
177717
+ var(--dees-shadow-sm),
177718
+ inset 3px 0 0 var(--card-accent);
177719
+ box-sizing: border-box;
177720
+ transition:
177721
+ border-color var(--dees-transition-fast) var(--dees-ease-standard),
177722
+ background var(--dees-transition-fast) var(--dees-ease-standard),
177723
+ box-shadow var(--dees-transition-fast) var(--dees-ease-standard);
177426
177724
  }
177427
177725
 
177428
177726
  .item:hover {
177429
- background: var(--dees-color-hover);
177727
+ border-color: color-mix(in srgb, var(--card-accent) 42%, var(--dees-color-border-default));
177728
+ background: color-mix(in srgb, var(--dees-color-bg-primary) 96%, var(--card-accent) 4%);
177430
177729
  }
177431
177730
 
177432
177731
  .item.selected {
177433
- background: var(--dees-color-active);
177434
- box-shadow: inset 2px 0 0 var(--dees-color-accent-primary);
177732
+ border-color: color-mix(in srgb, var(--dees-color-accent-primary) 65%, var(--dees-color-border-default));
177733
+ box-shadow:
177734
+ 0 0 0 2px color-mix(in srgb, var(--dees-color-accent-primary) 18%, transparent),
177735
+ var(--dees-shadow-sm),
177736
+ inset 3px 0 0 var(--card-accent);
177435
177737
  }
177436
177738
 
177437
177739
  .item.dragging {
177438
- opacity: 0.4;
177740
+ position: absolute;
177741
+ inset-inline: 0;
177742
+ z-index: -1;
177743
+ opacity: 0;
177744
+ pointer-events: none;
177439
177745
  }
177440
177746
 
177441
- .itemTitle {
177747
+ .item.state-working {
177748
+ --card-accent: var(--session-working);
177749
+ }
177750
+
177751
+ .item.state-finished {
177752
+ --card-accent: var(--session-finished);
177753
+ }
177754
+
177755
+ .item.state-attention {
177756
+ --card-accent: var(--session-attention);
177757
+ }
177758
+
177759
+ .item.state-error {
177760
+ --card-accent: var(--session-error);
177761
+ }
177762
+
177763
+ @keyframes attentionPulse {
177764
+ 0%, 100% {
177765
+ box-shadow:
177766
+ 0 0 0 0 color-mix(in srgb, var(--session-attention) 0%, transparent),
177767
+ var(--dees-shadow-sm),
177768
+ inset 3px 0 0 var(--session-attention);
177769
+ }
177770
+ 50% {
177771
+ box-shadow:
177772
+ 0 0 0 4px color-mix(in srgb, var(--session-attention) 26%, transparent),
177773
+ 0 7px 18px color-mix(in srgb, var(--session-attention) 16%, transparent),
177774
+ inset 3px 0 0 var(--session-attention);
177775
+ }
177776
+ }
177777
+
177778
+ .item.state-attention:not(.selected) {
177779
+ animation: attentionPulse 1.15s ease-in-out infinite;
177780
+ }
177781
+
177782
+ .itemHeader {
177783
+ display: grid;
177784
+ grid-template-columns: minmax(0, 1fr) 30px;
177785
+ min-height: 46px;
177786
+ }
177787
+
177788
+ .itemPrimary,
177789
+ .expandToggle {
177790
+ appearance: none;
177791
+ border: 0;
177792
+ background: transparent;
177793
+ color: inherit;
177794
+ font-family: inherit;
177795
+ }
177796
+
177797
+ .itemPrimary {
177442
177798
  display: flex;
177443
- align-items: baseline;
177799
+ min-width: 0;
177800
+ align-items: center;
177444
177801
  gap: var(--dees-spacing-sm);
177802
+ padding: var(--dees-spacing-sm) var(--dees-spacing-xs) var(--dees-spacing-sm) var(--dees-spacing-md);
177803
+ text-align: left;
177804
+ cursor: pointer;
177805
+ }
177806
+
177807
+ .itemPrimary:focus-visible,
177808
+ .expandToggle:focus-visible {
177809
+ outline: 2px solid var(--dees-color-accent-primary);
177810
+ outline-offset: -3px;
177811
+ border-radius: 9px;
177812
+ }
177813
+
177814
+ .stateDot {
177815
+ width: 8px;
177816
+ height: 8px;
177817
+ flex: 0 0 auto;
177818
+ border-radius: 50%;
177819
+ background: var(--card-accent);
177820
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--card-accent) 15%, transparent);
177821
+ }
177822
+
177823
+ .itemCopy {
177824
+ min-width: 0;
177825
+ flex: 1;
177826
+ }
177827
+
177828
+ .itemTitle {
177829
+ display: flex;
177830
+ min-width: 0;
177831
+ align-items: center;
177832
+ gap: 6px;
177445
177833
  font-size: var(--dees-font-control-size-sm, 12px);
177446
- font-weight: 500;
177834
+ font-weight: 590;
177447
177835
  }
177448
177836
 
177449
177837
  .itemTitle .titleText {
@@ -177455,24 +177843,99 @@ __publicField(_DeesHarnessSessionList, "styles", [
177455
177843
 
177456
177844
  .itemTitle .itemIcon {
177457
177845
  flex: 0 0 auto;
177458
- align-self: center;
177459
177846
  color: var(--dees-color-text-secondary);
177460
177847
  }
177461
177848
 
177462
177849
  .itemTime {
177463
- margin-left: auto;
177464
- flex: 0 0 auto;
177850
+ margin-top: 2px;
177465
177851
  color: var(--dees-color-text-muted);
177466
177852
  font-size: var(--dees-font-caption2-size, 10px);
177467
177853
  }
177468
177854
 
177855
+ .expandToggle {
177856
+ display: grid;
177857
+ place-items: center;
177858
+ margin: 7px 7px 7px 0;
177859
+ border-radius: 9px;
177860
+ color: var(--dees-color-text-muted);
177861
+ cursor: pointer;
177862
+ }
177863
+
177864
+ .expandToggle:hover {
177865
+ background: color-mix(in srgb, var(--card-accent) 11%, transparent);
177866
+ color: var(--dees-color-text-primary);
177867
+ }
177868
+
177869
+ .expandToggle dees-icon {
177870
+ transition: transform var(--dees-transition-fast) var(--dees-ease-standard);
177871
+ }
177872
+
177873
+ .item.expanded .expandToggle dees-icon {
177874
+ transform: rotate(180deg);
177875
+ }
177876
+
177877
+ .itemDetails {
177878
+ display: grid;
177879
+ gap: 6px;
177880
+ margin: 0 10px 10px 28px;
177881
+ padding: 9px 10px;
177882
+ border-top: 1px solid color-mix(in srgb, var(--card-accent) 20%, var(--dees-color-border-subtle));
177883
+ color: var(--dees-color-text-secondary);
177884
+ }
177885
+
177886
+ .stateLine {
177887
+ display: flex;
177888
+ align-items: center;
177889
+ gap: 6px;
177890
+ color: var(--card-accent);
177891
+ font-size: var(--dees-font-caption1-size, 11px);
177892
+ font-weight: 650;
177893
+ }
177894
+
177469
177895
  .itemPreview {
177470
- margin-top: 1px;
177471
177896
  color: var(--dees-color-text-secondary);
177472
177897
  font-size: var(--dees-font-caption1-size, 11px);
177473
177898
  overflow: hidden;
177474
- text-overflow: ellipsis;
177899
+ display: -webkit-box;
177900
+ -webkit-line-clamp: 2;
177901
+ -webkit-box-orient: vertical;
177902
+ }
177903
+
177904
+ .itemMeta {
177905
+ color: var(--dees-color-text-muted);
177906
+ font-size: var(--dees-font-caption2-size, 10px);
177907
+ }
177908
+
177909
+ .visuallyHidden {
177910
+ position: absolute;
177911
+ width: 1px;
177912
+ height: 1px;
177913
+ padding: 0;
177914
+ margin: -1px;
177915
+ overflow: hidden;
177916
+ clip: rect(0, 0, 0, 0);
177475
177917
  white-space: nowrap;
177918
+ border: 0;
177919
+ }
177920
+
177921
+ .dropPlaceholder,
177922
+ .emptyDropZone {
177923
+ display: grid;
177924
+ place-items: center;
177925
+ min-height: 46px;
177926
+ border: 1px dashed color-mix(in srgb, var(--dees-color-accent-primary) 68%, transparent);
177927
+ border-radius: var(--dees-radius-xl);
177928
+ background: color-mix(in srgb, var(--dees-color-accent-primary) 8%, transparent);
177929
+ color: var(--dees-color-accent-primary);
177930
+ box-sizing: border-box;
177931
+ }
177932
+
177933
+ .dropPlaceholder::after,
177934
+ .emptyDropZone::after {
177935
+ content: 'Drop conversation here';
177936
+ font-size: var(--dees-font-caption2-size, 10px);
177937
+ font-weight: 650;
177938
+ letter-spacing: 0.02em;
177476
177939
  }
177477
177940
 
177478
177941
  .emptyNote {
@@ -177487,8 +177950,8 @@ __publicField(_DeesHarnessSessionList, "styles", [
177487
177950
  align-items: center;
177488
177951
  gap: var(--dees-spacing-xs);
177489
177952
  width: 100%;
177490
- margin-top: var(--dees-spacing-xs);
177491
- padding: 2px var(--dees-spacing-sm);
177953
+ margin: var(--dees-spacing-md) 0 7px;
177954
+ padding: var(--dees-spacing-xs) 6px;
177492
177955
  border: 0;
177493
177956
  border-radius: var(--dees-radius-md);
177494
177957
  background: transparent;
@@ -177528,15 +177991,12 @@ __publicField(_DeesHarnessSessionList, "styles", [
177528
177991
  }
177529
177992
 
177530
177993
  .dropLine {
177531
- height: 2px;
177532
- margin: 0 var(--dees-spacing-sm);
177533
- border-radius: 1px;
177534
- background: var(--dees-color-accent-primary);
177994
+ display: none;
177535
177995
  }
177536
177996
 
177537
177997
  .newGroupRow {
177538
177998
  flex: 0 0 auto;
177539
- padding: var(--dees-spacing-xs) var(--dees-spacing-sm) var(--dees-spacing-sm);
177999
+ padding: 0 var(--dees-spacing-md) var(--dees-spacing-md);
177540
178000
  }
177541
178001
 
177542
178002
  .newGroupButton {
@@ -177544,10 +178004,12 @@ __publicField(_DeesHarnessSessionList, "styles", [
177544
178004
  align-items: center;
177545
178005
  gap: var(--dees-spacing-xs);
177546
178006
  width: 100%;
178007
+ min-height: 34px;
178008
+ justify-content: center;
177547
178009
  padding: var(--dees-spacing-xs) var(--dees-spacing-sm);
177548
178010
  border: 1px dashed var(--dees-color-border-default);
177549
- border-radius: var(--dees-radius-md);
177550
- background: transparent;
178011
+ border-radius: 11px;
178012
+ background: color-mix(in srgb, var(--dees-color-bg-primary) 55%, transparent);
177551
178013
  color: var(--dees-color-text-secondary);
177552
178014
  cursor: pointer;
177553
178015
  font-family: inherit;
@@ -177558,6 +178020,15 @@ __publicField(_DeesHarnessSessionList, "styles", [
177558
178020
  border-color: var(--dees-color-accent-primary);
177559
178021
  color: var(--dees-color-text-primary);
177560
178022
  }
178023
+
178024
+ @media (prefers-reduced-motion: reduce) {
178025
+ .item,
178026
+ .item.state-attention,
178027
+ .expandToggle dees-icon {
178028
+ animation: none;
178029
+ transition: none;
178030
+ }
178031
+ }
177561
178032
  `
177562
178033
  ]);
177563
178034
  __runInitializers(_init90, 1, _DeesHarnessSessionList);
@@ -199639,7 +200110,7 @@ init_group_runtime();
199639
200110
  // ts_web/00_commitinfo_data.ts
199640
200111
  var commitinfo = {
199641
200112
  name: "@design.estate/dees-catalog",
199642
- version: "4.9.0",
200113
+ version: "4.10.0",
199643
200114
  description: "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript."
199644
200115
  };
199645
200116