@design.estate/dees-catalog 4.8.1 → 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
  }
@@ -174440,7 +174440,12 @@ var _DeesHarnessMessage = class _DeesHarnessMessage extends (_a81 = DeesElement,
174440
174440
  <div class="roleRow">
174441
174441
  ${this.showRole ? b2`<span class="roleLabel">${message2.role}</span>` : ""}
174442
174442
  ${this.showTimestamp && message2.createdAt ? b2`<span class="timestamp">${harnessFormatClockTime(message2.createdAt)}</span>` : ""}
174443
- ${message2.model ? b2`<span class="modelLabel" title=${message2.model}>${message2.model}</span>` : ""}
174443
+ ${message2.model ? b2`
174444
+ <span
174445
+ class="modelLabel"
174446
+ title=${message2.effort ? `${message2.model} \xB7 ${message2.effort}` : message2.model}
174447
+ >${message2.model}${message2.effort ? b2`<span class="effortLabel">${message2.effort}</span>` : ""}</span>
174448
+ ` : ""}
174444
174449
  </div>
174445
174450
  ` : ""}
174446
174451
  ${message2.reasoning?.length ? b2`
@@ -174694,6 +174699,15 @@ __publicField(_DeesHarnessMessage, "styles", [
174694
174699
 
174695
174700
  /* Which model produced this message — trails the role/time so a
174696
174701
  mid-conversation model switch is visible in the transcript. */
174702
+ /* reasoning effort rides with the model as a subtle pill */
174703
+ .effortLabel {
174704
+ margin-left: 5px;
174705
+ padding: 0 5px;
174706
+ border-radius: var(--dees-radius-full);
174707
+ background: var(--dees-color-fill-secondary);
174708
+ color: var(--dees-color-text-secondary);
174709
+ }
174710
+
174697
174711
  .modelLabel {
174698
174712
  margin-left: auto;
174699
174713
  color: var(--dees-color-text-muted);
@@ -177025,8 +177039,14 @@ var demoSessions = Array.from({ length: 24 }, (_3, index3) => ({
177025
177039
  createdAt: Date.now() - (index3 + 2) * 36e5,
177026
177040
  updatedAt: Date.now() - (index3 + 1) * 35e5,
177027
177041
  messageCount: 4 + index3 % 9,
177028
- 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
177029
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
+ ];
177030
177050
  var openModal = /* @__PURE__ */ __name(async () => {
177031
177051
  const { DeesModal: DeesModal2 } = await Promise.resolve().then(() => (init_dees_modal(), dees_modal_exports));
177032
177052
  const content3 = document.createElement("dees-harness-session-list");
@@ -177061,6 +177081,9 @@ var demoFunc63 = /* @__PURE__ */ __name(() => b2`
177061
177081
  <dees-button @clicked=${openModal}>Open in a DeesModal</dees-button>
177062
177082
  <dees-harness-session-list
177063
177083
  .sessions=${demoSessions}
177084
+ .groups=${demoGroups}
177085
+ .ungroupedSessionIds=${demoSessions.slice(5).map((session) => session.id)}
177086
+ .enableGrouping=${true}
177064
177087
  selectedSessionId="session-2"
177065
177088
  @harness-session-select=${(event) => console.log("select", event.detail.session)}
177066
177089
  ></dees-harness-session-list>
@@ -177071,9 +177094,10 @@ var demoFunc63 = /* @__PURE__ */ __name(() => b2`
177071
177094
  init_dist_ts25();
177072
177095
  init_theme();
177073
177096
  init_dees_icon();
177074
- 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;
177075
177099
  _DeesHarnessSessionList_decorators = [customElement("dees-harness-session-list")];
177076
- 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) {
177077
177101
  constructor() {
177078
177102
  super(...arguments);
177079
177103
  __privateAdd(this, _sessions, __runInitializers(_init90, 8, this, [])), __runInitializers(_init90, 11, this);
@@ -177082,10 +177106,16 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177082
177106
  __privateAdd(this, _emptyText2, __runInitializers(_init90, 20, this, "No conversations yet.")), __runInitializers(_init90, 23, this);
177083
177107
  __privateAdd(this, _groups2, __runInitializers(_init90, 24, this, [])), __runInitializers(_init90, 27, this);
177084
177108
  __privateAdd(this, _enableGrouping, __runInitializers(_init90, 28, this, false)), __runInitializers(_init90, 31, this);
177085
- __privateAdd(this, _search, __runInitializers(_init90, 32, this, "")), __runInitializers(_init90, 35, this);
177086
- __privateAdd(this, _draggingSessionId, __runInitializers(_init90, 36, this, "")), __runInitializers(_init90, 39, this);
177087
- __privateAdd(this, _dropSlot, __runInitializers(_init90, 40, this)), __runInitializers(_init90, 43, this);
177088
- __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");
177089
177119
  }
177090
177120
  get sessionsById() {
177091
177121
  return new Map(this.sessions.map((session) => [session.id, session]));
@@ -177097,12 +177127,25 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177097
177127
  }
177098
177128
  return ids;
177099
177129
  }
177100
- /** Ungrouped sessions, most recent first. */
177130
+ /** Pinned entries first, followed by explicitly ordered sortable sessions. */
177101
177131
  get ungroupedSessions() {
177102
177132
  const grouped = this.groupedSessionIds;
177103
- 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(
177104
177146
  (left, right) => (right.updatedAt ?? right.createdAt ?? 0) - (left.updatedAt ?? left.createdAt ?? 0)
177105
177147
  );
177148
+ return [...pinned, ...ordered, ...newSessions];
177106
177149
  }
177107
177150
  get filteredSessions() {
177108
177151
  const query3 = this.search.trim().toLowerCase();
@@ -177117,10 +177160,40 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177117
177160
  focusSearch() {
177118
177161
  this.shadowRoot?.querySelector(".searchRow input")?.focus();
177119
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
+ }
177120
177192
  render() {
177121
177193
  const groupingActive = this.enableGrouping && !this.search.trim();
177122
177194
  return b2`
177123
177195
  <div class="searchRow">
177196
+ <dees-icon class="searchIcon" icon="lucide:Search" iconSize="13"></dees-icon>
177124
177197
  <input
177125
177198
  placeholder="Search conversations"
177126
177199
  .value=${this.search}
@@ -177160,7 +177233,15 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177160
177233
  ${this.sessions.length ? "No conversations match this search." : this.emptyText}
177161
177234
  </div>`;
177162
177235
  }
177163
- 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
+ `;
177164
177245
  }
177165
177246
  renderGroupedList() {
177166
177247
  const byId = this.sessionsById;
@@ -177172,7 +177253,7 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177172
177253
  ${this.groups.map((group) => {
177173
177254
  const members = group.sessionIds.map((id) => byId.get(id)).filter((session) => session !== void 0);
177174
177255
  const collapsed = this.collapsedGroupIds.has(group.id);
177175
- 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;
177176
177257
  return b2`
177177
177258
  <button
177178
177259
  class="groupHeader ${collapsed ? "collapsed" : ""} ${isHeaderDrop ? "dropTarget" : ""}"
@@ -177190,8 +177271,16 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177190
177271
  new CustomEvent("harness-group-context", { detail, bubbles: true, composed: true })
177191
177272
  );
177192
177273
  }}
177193
- @dragover=${(event) => this.handleDragOverSlot(event, group.id, members.length)}
177194
- @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
+ )}
177195
177284
  >
177196
177285
  <dees-icon class="chevron" icon="lucide:ChevronDown" iconSize="12"></dees-icon>
177197
177286
  <span>${group.name}</span>
@@ -177200,7 +177289,7 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177200
177289
  ${collapsed ? "" : this.renderSection(members, group.id)}
177201
177290
  `;
177202
177291
  })}
177203
- ${this.groups.length && ungrouped.length ? b2`
177292
+ ${this.groups.length && (ungrouped.length || this.draggingSessionId) ? b2`
177204
177293
  <button
177205
177294
  class="groupHeader"
177206
177295
  type="button"
@@ -177217,29 +177306,69 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177217
177306
  }
177218
177307
  renderSection(sessions, groupId) {
177219
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");
177220
177329
  return b2`
177221
- ${sessions.map(
177222
- (session, index3) => b2`
177223
- ${slot && slot.groupId === groupId && slot.index === index3 ? b2`<div class="dropLine"></div>` : ""}
177224
- ${this.renderItem(session, groupId, index3)}
177225
- `
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)
177226
177335
  )}
177227
- ${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>
177228
177354
  `;
177229
177355
  }
177230
177356
  renderItem(session, groupId, index3) {
177231
- 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}`;
177232
177361
  return b2`
177233
- <button
177234
- class="item ${session.id === this.selectedSessionId ? "selected" : ""} ${this.draggingSessionId === session.id ? "dragging" : ""}"
177235
- type="button"
177236
- draggable=${draggable ? "true" : "false"}
177237
- @click=${() => this.emit("harness-session-select", session)}
177238
- @dblclick=${() => this.emit("harness-session-open", session)}
177239
- @keydown=${(event) => {
177240
- 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);
177241
177369
  }}
177242
177370
  @contextmenu=${(event) => {
177371
+ if (this.eventTargetsExpandToggle(event)) return;
177243
177372
  event.preventDefault();
177244
177373
  const detail = {
177245
177374
  session,
@@ -177252,38 +177381,99 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177252
177381
  );
177253
177382
  }}
177254
177383
  @dragstart=${(event) => {
177255
- if (!draggable) return;
177256
- this.draggingSessionId = session.id;
177257
- event.dataTransfer?.setData("text/plain", session.id);
177258
- if (event.dataTransfer) event.dataTransfer.effectAllowed = "move";
177259
- }}
177260
- @dragend=${() => {
177261
- this.draggingSessionId = "";
177262
- this.dropSlot = void 0;
177384
+ this.handleDragStart(event, session, groupId, index3, draggable);
177263
177385
  }}
177386
+ @dragend=${() => this.clearDragState()}
177264
177387
  @dragover=${(event) => {
177265
- if (!this.draggingSessionId || index3 < 0) return;
177388
+ if (!this.draggingSessionId || index3 < 0 || session.id === this.draggingSessionId) return;
177266
177389
  event.preventDefault();
177267
177390
  const rect = event.currentTarget.getBoundingClientRect();
177268
177391
  const before = event.clientY < rect.top + rect.height / 2;
177269
177392
  this.setDropSlot(groupId, before ? index3 : index3 + 1);
177270
177393
  }}
177271
177394
  @drop=${(event) => {
177272
- if (index3 < 0) return;
177395
+ if (index3 < 0 || session.id === this.draggingSessionId) return;
177273
177396
  const rect = event.currentTarget.getBoundingClientRect();
177274
177397
  const before = event.clientY < rect.top + rect.height / 2;
177275
177398
  this.handleDrop(event, groupId, before ? index3 : index3 + 1);
177276
177399
  }}
177277
177400
  >
177278
- <span class="itemTitle">
177279
- ${session.icon ? b2`<dees-icon class="itemIcon" icon=${session.icon} iconSize="12"></dees-icon>` : ""}
177280
- <span class="titleText">${session.title || session.id}</span>
177281
- <span class="itemTime">${harnessFormatRelativeTime(session.updatedAt ?? session.createdAt)}</span>
177282
- </span>
177283
- ${session.preview ? b2`<span class="itemPreview">${session.preview}${session.messageCount ? ` \xB7 ${session.messageCount} messages` : ""}</span>` : ""}
177284
- </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>
177285
177450
  `;
177286
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
+ }
177287
177477
  toggleGroupCollapsed(groupIdArg) {
177288
177478
  const next2 = new Set(this.collapsedGroupIds);
177289
177479
  if (next2.has(groupIdArg)) {
@@ -177293,32 +177483,116 @@ var _DeesHarnessSessionList = class _DeesHarnessSessionList extends (_a89 = Dees
177293
177483
  }
177294
177484
  this.collapsedGroupIds = next2;
177295
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
+ }
177296
177512
  setDropSlot(groupIdArg, indexArg) {
177297
177513
  const current = this.dropSlot;
177298
177514
  if (current && current.groupId === groupIdArg && current.index === indexArg) return;
177515
+ const previousRects = this.captureCardRects();
177516
+ const generation = ++this.reflowGeneration;
177299
177517
  this.dropSlot = { groupId: groupIdArg, index: indexArg };
177518
+ void this.animateCardReflow(previousRects, generation);
177300
177519
  }
177301
177520
  handleDragOverSlot(event, groupIdArg, indexArg) {
177302
177521
  if (!this.draggingSessionId) return;
177303
177522
  event.preventDefault();
177523
+ if (event.dataTransfer) event.dataTransfer.dropEffect = "move";
177304
177524
  this.setDropSlot(groupIdArg, indexArg);
177305
177525
  }
177306
177526
  handleDrop(event, groupIdArg, indexArg) {
177307
177527
  event.preventDefault();
177308
177528
  event.stopPropagation();
177309
177529
  const sessionId = this.draggingSessionId || event.dataTransfer?.getData("text/plain") || "";
177310
- this.draggingSessionId = "";
177311
- this.dropSlot = void 0;
177312
- 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;
177313
177540
  const detail = {
177314
177541
  sessionId,
177315
177542
  groupId: groupIdArg,
177316
- index: Math.max(0, indexArg)
177543
+ index: Math.max(0, compatibilityIndex),
177544
+ ...beforeSessionId ? { beforeSessionId } : {}
177317
177545
  };
177546
+ this.clearDragState();
177318
177547
  this.dispatchEvent(
177319
177548
  new CustomEvent("harness-session-move", { detail, bubbles: true, composed: true })
177320
177549
  );
177321
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
+ }
177322
177596
  emit(name, session) {
177323
177597
  this.dispatchEvent(new CustomEvent(name, { detail: { session }, bubbles: true, composed: true }));
177324
177598
  }
@@ -177330,9 +177604,12 @@ _loading4 = new WeakMap();
177330
177604
  _emptyText2 = new WeakMap();
177331
177605
  _groups2 = new WeakMap();
177332
177606
  _enableGrouping = new WeakMap();
177607
+ _ungroupedSessionIds = new WeakMap();
177333
177608
  _search = new WeakMap();
177334
177609
  _draggingSessionId = new WeakMap();
177335
177610
  _dropSlot = new WeakMap();
177611
+ _draggedItemHeight = new WeakMap();
177612
+ _expandedSessionIds = new WeakMap();
177336
177613
  _collapsedGroupIds = new WeakMap();
177337
177614
  __decorateElement(_init90, 4, "sessions", _sessions_dec, _DeesHarnessSessionList, _sessions);
177338
177615
  __decorateElement(_init90, 4, "selectedSessionId", _selectedSessionId_dec, _DeesHarnessSessionList, _selectedSessionId);
@@ -177340,9 +177617,12 @@ __decorateElement(_init90, 4, "loading", _loading_dec4, _DeesHarnessSessionList,
177340
177617
  __decorateElement(_init90, 4, "emptyText", _emptyText_dec2, _DeesHarnessSessionList, _emptyText2);
177341
177618
  __decorateElement(_init90, 4, "groups", _groups_dec2, _DeesHarnessSessionList, _groups2);
177342
177619
  __decorateElement(_init90, 4, "enableGrouping", _enableGrouping_dec, _DeesHarnessSessionList, _enableGrouping);
177620
+ __decorateElement(_init90, 4, "ungroupedSessionIds", _ungroupedSessionIds_dec, _DeesHarnessSessionList, _ungroupedSessionIds);
177343
177621
  __decorateElement(_init90, 4, "search", _search_dec, _DeesHarnessSessionList, _search);
177344
177622
  __decorateElement(_init90, 4, "draggingSessionId", _draggingSessionId_dec, _DeesHarnessSessionList, _draggingSessionId);
177345
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);
177346
177626
  __decorateElement(_init90, 4, "collapsedGroupIds", _collapsedGroupIds_dec, _DeesHarnessSessionList, _collapsedGroupIds);
177347
177627
  _DeesHarnessSessionList = __decorateElement(_init90, 0, "DeesHarnessSessionList", _DeesHarnessSessionList_decorators, _DeesHarnessSessionList);
177348
177628
  __name(_DeesHarnessSessionList, "DeesHarnessSessionList");
@@ -177357,26 +177637,48 @@ __publicField(_DeesHarnessSessionList, "styles", [
177357
177637
  flex-direction: column;
177358
177638
  min-height: 0;
177359
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;
177360
177649
  }
177361
177650
 
177362
177651
  .searchRow {
177652
+ position: relative;
177363
177653
  flex: 0 0 auto;
177364
- 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;
177365
177664
  }
177366
177665
 
177367
177666
  .searchRow input {
177368
177667
  width: 100%;
177369
- height: var(--dees-control-height-sm);
177370
- padding: 0 var(--dees-spacing-md);
177668
+ height: var(--dees-control-height-lg);
177669
+ padding: 0 var(--dees-spacing-md) 0 34px;
177371
177670
  border: 1px solid var(--dees-color-border-default);
177372
- border-radius: var(--dees-radius-md);
177671
+ border-radius: var(--dees-radius-lg);
177373
177672
  corner-shape: var(--dees-corner-shape);
177374
- background: var(--dees-color-bg-primary);
177673
+ background: color-mix(in srgb, var(--dees-color-bg-primary) 78%, transparent);
177375
177674
  color: var(--dees-color-text-primary);
177376
177675
  font-family: inherit;
177377
- font-size: var(--dees-font-control-size, 13px);
177676
+ font-size: var(--dees-font-control-size-sm, 12px);
177378
177677
  outline: none;
177379
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);
177380
177682
  }
177381
177683
 
177382
177684
  .searchRow input:focus {
@@ -177390,46 +177692,146 @@ __publicField(_DeesHarnessSessionList, "styles", [
177390
177692
  overflow-y: auto;
177391
177693
  scrollbar-width: thin;
177392
177694
  scrollbar-color: var(--dees-color-scrollbar-thumb) transparent;
177393
- 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;
177394
177700
  display: grid;
177395
- gap: 2px;
177701
+ gap: var(--dees-spacing-sm);
177396
177702
  align-content: start;
177397
177703
  }
177398
177704
 
177399
177705
  .item {
177706
+ --card-accent: var(--session-normal);
177707
+ position: relative;
177400
177708
  width: 100%;
177401
- display: block;
177402
- padding: var(--dees-spacing-xs) var(--dees-spacing-sm);
177403
- border: 0;
177404
- 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);
177405
177713
  corner-shape: var(--dees-corner-shape);
177406
- background: transparent;
177714
+ background: color-mix(in srgb, var(--dees-color-bg-primary) 90%, transparent);
177407
177715
  color: var(--dees-color-text-primary);
177408
- cursor: pointer;
177409
- font-family: inherit;
177410
- text-align: left;
177411
- 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);
177412
177724
  }
177413
177725
 
177414
177726
  .item:hover {
177415
- 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%);
177416
177729
  }
177417
177730
 
177418
177731
  .item.selected {
177419
- background: var(--dees-color-active);
177420
- 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);
177421
177737
  }
177422
177738
 
177423
177739
  .item.dragging {
177424
- opacity: 0.4;
177740
+ position: absolute;
177741
+ inset-inline: 0;
177742
+ z-index: -1;
177743
+ opacity: 0;
177744
+ pointer-events: none;
177425
177745
  }
177426
177746
 
177427
- .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 {
177428
177798
  display: flex;
177429
- align-items: baseline;
177799
+ min-width: 0;
177800
+ align-items: center;
177430
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;
177431
177833
  font-size: var(--dees-font-control-size-sm, 12px);
177432
- font-weight: 500;
177834
+ font-weight: 590;
177433
177835
  }
177434
177836
 
177435
177837
  .itemTitle .titleText {
@@ -177441,24 +177843,99 @@ __publicField(_DeesHarnessSessionList, "styles", [
177441
177843
 
177442
177844
  .itemTitle .itemIcon {
177443
177845
  flex: 0 0 auto;
177444
- align-self: center;
177445
177846
  color: var(--dees-color-text-secondary);
177446
177847
  }
177447
177848
 
177448
177849
  .itemTime {
177449
- margin-left: auto;
177450
- flex: 0 0 auto;
177850
+ margin-top: 2px;
177451
177851
  color: var(--dees-color-text-muted);
177452
177852
  font-size: var(--dees-font-caption2-size, 10px);
177453
177853
  }
177454
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
+
177455
177895
  .itemPreview {
177456
- margin-top: 1px;
177457
177896
  color: var(--dees-color-text-secondary);
177458
177897
  font-size: var(--dees-font-caption1-size, 11px);
177459
177898
  overflow: hidden;
177460
- 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);
177461
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;
177462
177939
  }
177463
177940
 
177464
177941
  .emptyNote {
@@ -177473,8 +177950,8 @@ __publicField(_DeesHarnessSessionList, "styles", [
177473
177950
  align-items: center;
177474
177951
  gap: var(--dees-spacing-xs);
177475
177952
  width: 100%;
177476
- margin-top: var(--dees-spacing-xs);
177477
- padding: 2px var(--dees-spacing-sm);
177953
+ margin: var(--dees-spacing-md) 0 7px;
177954
+ padding: var(--dees-spacing-xs) 6px;
177478
177955
  border: 0;
177479
177956
  border-radius: var(--dees-radius-md);
177480
177957
  background: transparent;
@@ -177514,15 +177991,12 @@ __publicField(_DeesHarnessSessionList, "styles", [
177514
177991
  }
177515
177992
 
177516
177993
  .dropLine {
177517
- height: 2px;
177518
- margin: 0 var(--dees-spacing-sm);
177519
- border-radius: 1px;
177520
- background: var(--dees-color-accent-primary);
177994
+ display: none;
177521
177995
  }
177522
177996
 
177523
177997
  .newGroupRow {
177524
177998
  flex: 0 0 auto;
177525
- padding: var(--dees-spacing-xs) var(--dees-spacing-sm) var(--dees-spacing-sm);
177999
+ padding: 0 var(--dees-spacing-md) var(--dees-spacing-md);
177526
178000
  }
177527
178001
 
177528
178002
  .newGroupButton {
@@ -177530,10 +178004,12 @@ __publicField(_DeesHarnessSessionList, "styles", [
177530
178004
  align-items: center;
177531
178005
  gap: var(--dees-spacing-xs);
177532
178006
  width: 100%;
178007
+ min-height: 34px;
178008
+ justify-content: center;
177533
178009
  padding: var(--dees-spacing-xs) var(--dees-spacing-sm);
177534
178010
  border: 1px dashed var(--dees-color-border-default);
177535
- border-radius: var(--dees-radius-md);
177536
- background: transparent;
178011
+ border-radius: 11px;
178012
+ background: color-mix(in srgb, var(--dees-color-bg-primary) 55%, transparent);
177537
178013
  color: var(--dees-color-text-secondary);
177538
178014
  cursor: pointer;
177539
178015
  font-family: inherit;
@@ -177544,6 +178020,15 @@ __publicField(_DeesHarnessSessionList, "styles", [
177544
178020
  border-color: var(--dees-color-accent-primary);
177545
178021
  color: var(--dees-color-text-primary);
177546
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
+ }
177547
178032
  `
177548
178033
  ]);
177549
178034
  __runInitializers(_init90, 1, _DeesHarnessSessionList);
@@ -199625,7 +200110,7 @@ init_group_runtime();
199625
200110
  // ts_web/00_commitinfo_data.ts
199626
200111
  var commitinfo = {
199627
200112
  name: "@design.estate/dees-catalog",
199628
- version: "4.8.1",
200113
+ version: "4.10.0",
199629
200114
  description: "A comprehensive library that provides dynamic web components for building sophisticated and modern web applications using JavaScript and TypeScript."
199630
200115
  };
199631
200116