@salla.sa/ui-ai-kit-core 2.2.1 → 2.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/cjs/ai-card.cjs.entry.js +2 -2
  2. package/dist/cjs/ai-chat-header.cjs.entry.js +19 -2
  3. package/dist/cjs/ai-chat-message.cjs.entry.js +1 -1
  4. package/dist/cjs/ai-conversation-list.cjs.entry.js +10 -4
  5. package/dist/cjs/ai-conversation-summary.cjs.entry.js +1 -1
  6. package/dist/cjs/ai-in-chat-browser.cjs.entry.js +1 -1
  7. package/dist/cjs/ai-link.cjs.entry.js +1 -1
  8. package/dist/cjs/ai-route-decision.cjs.entry.js +1 -1
  9. package/dist/cjs/ai-suggestion.cjs.entry.js +2 -2
  10. package/dist/cjs/ai-voice-input.cjs.entry.js +1 -1
  11. package/dist/cjs/loader.cjs.js +1 -1
  12. package/dist/cjs/ui-ai-kit.cjs.js +1 -1
  13. package/dist/collection/components/ai-card/ai-card.css +22 -0
  14. package/dist/collection/components/ai-card/ai-card.js +1 -1
  15. package/dist/collection/components/ai-chat-header/ai-chat-header.js +133 -2
  16. package/dist/collection/components/ai-chat-message/ai-chat-message.js +1 -1
  17. package/dist/collection/components/ai-conversation-list/ai-conversation-list.css +20 -0
  18. package/dist/collection/components/ai-conversation-list/ai-conversation-list.js +29 -3
  19. package/dist/collection/components/ai-conversation-summary/ai-conversation-summary.js +1 -1
  20. package/dist/collection/components/ai-in-chat-browser/ai-in-chat-browser.js +1 -1
  21. package/dist/collection/components/ai-link/ai-link.js +1 -1
  22. package/dist/collection/components/ai-route-decision/ai-route-decision.js +1 -1
  23. package/dist/collection/components/ai-suggestion/ai-suggestion.js +2 -2
  24. package/dist/collection/components/ai-voice-input/ai-voice-input.js +1 -1
  25. package/dist/components/ai-card.js +1 -1
  26. package/dist/components/ai-chat-header.js +1 -1
  27. package/dist/components/ai-chat-message.js +1 -1
  28. package/dist/components/ai-conversation-list.js +1 -1
  29. package/dist/components/ai-conversation-summary.js +1 -1
  30. package/dist/components/ai-in-chat-browser.js +1 -1
  31. package/dist/components/ai-link.js +1 -1
  32. package/dist/components/ai-message-input.js +1 -1
  33. package/dist/components/ai-rating.js +1 -1
  34. package/dist/components/ai-route-decision.js +1 -1
  35. package/dist/components/ai-suggestion.js +1 -1
  36. package/dist/components/ai-voice-input.js +1 -1
  37. package/dist/components/{p-bGFmyIp1.js → p-BlCeQ9Hu.js} +1 -1
  38. package/dist/components/p-CFSr3KcL.js +1 -0
  39. package/dist/components/p-DCJWSYj-.js +1 -0
  40. package/dist/esm/ai-card.entry.js +2 -2
  41. package/dist/esm/ai-chat-header.entry.js +19 -2
  42. package/dist/esm/ai-chat-message.entry.js +1 -1
  43. package/dist/esm/ai-conversation-list.entry.js +10 -4
  44. package/dist/esm/ai-conversation-summary.entry.js +1 -1
  45. package/dist/esm/ai-in-chat-browser.entry.js +1 -1
  46. package/dist/esm/ai-link.entry.js +1 -1
  47. package/dist/esm/ai-route-decision.entry.js +1 -1
  48. package/dist/esm/ai-suggestion.entry.js +2 -2
  49. package/dist/esm/ai-voice-input.entry.js +1 -1
  50. package/dist/esm/loader.js +1 -1
  51. package/dist/esm/ui-ai-kit.js +1 -1
  52. package/dist/types/components/ai-chat-header/ai-chat-header.d.ts +13 -0
  53. package/dist/types/components/ai-conversation-list/ai-conversation-list.d.ts +2 -0
  54. package/dist/types/components.d.ts +71 -0
  55. package/dist/ui-ai-kit/{p-5f005ec5.entry.js → p-11c960d8.entry.js} +1 -1
  56. package/dist/ui-ai-kit/p-17e5d542.entry.js +1 -0
  57. package/dist/ui-ai-kit/p-2fd7529e.entry.js +1 -0
  58. package/dist/ui-ai-kit/{p-d02f2db5.entry.js → p-79309690.entry.js} +1 -1
  59. package/dist/ui-ai-kit/{p-6bd54e29.entry.js → p-9a8614d0.entry.js} +1 -1
  60. package/dist/ui-ai-kit/{p-062cad02.entry.js → p-9af03dbd.entry.js} +1 -1
  61. package/dist/ui-ai-kit/{p-83f46030.entry.js → p-a1ee6005.entry.js} +1 -1
  62. package/dist/ui-ai-kit/{p-187db371.entry.js → p-a5f53c8c.entry.js} +1 -1
  63. package/dist/ui-ai-kit/p-cde479ea.entry.js +1 -0
  64. package/dist/ui-ai-kit/{p-e6236df2.entry.js → p-e1a2a622.entry.js} +1 -1
  65. package/dist/ui-ai-kit/ui-ai-kit.esm.js +1 -1
  66. package/package.json +1 -1
  67. package/dist/components/p-Ba0urr6Q.js +0 -1
  68. package/dist/components/p-CJzVwMlS.js +0 -1
  69. package/dist/ui-ai-kit/p-8ac8febb.entry.js +0 -1
  70. package/dist/ui-ai-kit/p-8fabdbe8.entry.js +0 -1
  71. package/dist/ui-ai-kit/p-953d4348.entry.js +0 -1
@@ -2,7 +2,7 @@
2
2
 
3
3
  var index = require('./index-Cc05u4ND.js');
4
4
 
5
- const aiCardCss = () => `:host{--ai-card-border:1px solid var(--ai-border-default);--ai-card-radius:16px;--ai-card-padding:16px;--ai-card-gap:12px;--ai-card-shadow:var(--ai-shadow-sm);display:block}.card{background:var(--ai-bg-card);border:var(--ai-card-border);border-radius:var(--ai-card-radius);padding:var(--ai-card-padding);box-shadow:var(--ai-card-shadow);box-sizing:border-box;overflow:hidden;color:var(--ai-text-primary);width:100%;display:flex;flex-direction:column;gap:var(--ai-card-gap);text-align:start;font-size:14px;line-height:20px}.card--no-padding{padding:0}.card--no-shadow{box-shadow:none}`;
5
+ const aiCardCss = () => `:host{--ai-card-border:1px solid var(--ai-border-default);--ai-card-radius:16px;--ai-card-padding:16px;--ai-card-gap:12px;--ai-card-shadow:var(--ai-shadow-sm);--ai-card-header-padding:16px;--ai-card-footer-padding:16px;display:block}.card{background:var(--ai-bg-card);border:var(--ai-card-border);border-radius:var(--ai-card-radius);padding:var(--ai-card-padding);box-shadow:var(--ai-card-shadow);box-sizing:border-box;overflow:hidden;color:var(--ai-text-primary);width:100%;display:flex;flex-direction:column;gap:var(--ai-card-gap);text-align:start;font-size:14px;line-height:20px}.card--no-padding{padding:0}.card--no-shadow{box-shadow:none}::slotted([slot="header"]){padding:var(--ai-card-header-padding);margin:calc(var(--ai-card-padding) * -1) calc(var(--ai-card-padding) * -1) 0}::slotted([slot="footer"]){padding:var(--ai-card-footer-padding);margin:0 calc(var(--ai-card-padding) * -1) calc(var(--ai-card-padding) * -1)}.card--no-padding ::slotted([slot="header"]){margin:0}.card--no-padding ::slotted([slot="footer"]){margin:0}`;
6
6
 
7
7
  const AiCard = class {
8
8
  constructor(hostRef) {
@@ -17,7 +17,7 @@ const AiCard = class {
17
17
  card: true,
18
18
  'card--no-padding': this.noPadding,
19
19
  'card--no-shadow': this.noShadow,
20
- } }, index.h("slot", { key: 'f604568228c02514ff0f569cfa4fd706c247652e' }))));
20
+ } }, index.h("slot", { key: '149e85041e3318ea8e5dfa7ddf67e6236e49e6e8', name: "header" }), index.h("slot", { key: '774d0408e091a0603e5feac3bc5927cf698b5c8c' }), index.h("slot", { key: 'be0157314b280caa5c9b4f038ca6ca4aec2f8c8f', name: "footer" }))));
21
21
  }
22
22
  };
23
23
  AiCard.style = aiCardCss();
@@ -18,6 +18,7 @@ const AiChatHeader = class {
18
18
  this.openExternal = index.createEvent(this, "openExternal");
19
19
  this.conversationSelect = index.createEvent(this, "conversationSelect");
20
20
  this.conversationDelete = index.createEvent(this, "conversationDelete");
21
+ this.conversationRetry = index.createEvent(this, "conversationRetry");
21
22
  }
22
23
  get el() { return index.getElement(this); }
23
24
  /** Layout variant */
@@ -44,6 +45,16 @@ const AiChatHeader = class {
44
45
  conversationActiveId = '';
45
46
  /** Conversation list: show skeleton loading state */
46
47
  conversationLoading = false;
48
+ /** Conversation list: show error state */
49
+ conversationError = false;
50
+ /** Conversation list: error message text */
51
+ conversationErrorText = 'تعذّر تحميل المحادثات';
52
+ /** Conversation list: retry button label */
53
+ conversationRetryLabel = 'إعادة المحاولة';
54
+ /** Conversation list: empty state label */
55
+ conversationEmptyText = 'لا توجد محادثات';
56
+ /** Conversation list: ID of the conversation currently being deleted — shows a spinner on that item */
57
+ conversationDeletingId = '';
47
58
  /** Show a shimmer skeleton in place of the conversation title (e.g. while loading conversation) */
48
59
  titleLoading = false;
49
60
  avatarError = false;
@@ -77,6 +88,8 @@ const AiChatHeader = class {
77
88
  conversationSelect;
78
89
  /** Fired when a conversation delete button is clicked */
79
90
  conversationDelete;
91
+ /** Fired when the retry button is clicked in the conversation list error state */
92
+ conversationRetry;
80
93
  handleDocumentClick(event) {
81
94
  if (this.dropdownOpen && !this.el.contains(event.target)) {
82
95
  this.dropdownOpen = false;
@@ -150,10 +163,14 @@ const AiChatHeader = class {
150
163
  e.stopPropagation();
151
164
  this.conversationDelete.emit(e.detail);
152
165
  };
166
+ handleConversationRetry = (e) => {
167
+ e.stopPropagation();
168
+ this.conversationRetry.emit();
169
+ };
153
170
  renderConversationDropdown() {
154
171
  if (!this.dropdownOpen || this.mode !== 'agent')
155
172
  return null;
156
- return (index.h("div", { class: "conversation-dropdown" }, index.h("ai-conversation-list", { items: this.conversationItems, activeId: this.conversationActiveId, loading: this.conversationLoading, onConversationSelect: this.handleConversationSelect, onConversationDelete: this.handleConversationDelete })));
173
+ return (index.h("div", { class: "conversation-dropdown" }, index.h("ai-conversation-list", { items: this.conversationItems, activeId: this.conversationActiveId, loading: this.conversationLoading, error: this.conversationError, errorText: this.conversationErrorText, retryLabel: this.conversationRetryLabel, emptyText: this.conversationEmptyText, deletingId: this.conversationDeletingId, onConversationSelect: this.handleConversationSelect, onConversationDelete: this.handleConversationDelete, onRetryClick: this.handleConversationRetry })));
157
174
  }
158
175
  renderAgentMode() {
159
176
  return [
@@ -182,7 +199,7 @@ const AiChatHeader = class {
182
199
  ];
183
200
  }
184
201
  render() {
185
- return (index.h(index.Host, { key: 'b11b4d03d7f1980ec91b0fdba7db314971b7e7d3' }, index.h("div", { key: '47f40b54a6861b69adee00bea45ab8a6691c13f2', class: "header-wrapper" }, index.h("div", { key: 'dcc18d4cb88457c2eb959bfccb2c8d72655d610a', class: "header-container" }, this.mode === 'agent' ? this.renderAgentMode() : this.mode === 'human' ? this.renderHumanMode() : this.renderBrowserMode()), this.renderConversationDropdown())));
202
+ return (index.h(index.Host, { key: '80236bfcbfac98d3efa3955f03aab4ef68c9cfea' }, index.h("div", { key: 'dcc4142bba1d5f07782dbc7b0a3ec287e0154223', class: "header-wrapper" }, index.h("div", { key: 'ca0ff9a2946cead0b86cb82390624894ed414378', class: "header-container" }, this.mode === 'agent' ? this.renderAgentMode() : this.mode === 'human' ? this.renderHumanMode() : this.renderBrowserMode()), this.renderConversationDropdown())));
186
203
  }
187
204
  };
188
205
  AiChatHeader.style = aiChatHeaderCss();
@@ -1597,7 +1597,7 @@ const AiChatMessage = class {
1597
1597
  } })), index.h("slot", null), showActions && this.renderActionsBar()), (this.agentName || this.timestamp) && (index.h("div", { class: "agent-info" }, this.agentName && index.h("span", { class: "agent-info-name" }, this.agentName), this.agentName && this.timestamp && this.renderIcon('eclipse', 10), this.timestamp && index.h("span", { class: "agent-info-time" }, this.getRelativeTime()))))));
1598
1598
  }
1599
1599
  render() {
1600
- return index.h(index.Host, { key: 'b6fe466c9830e69c3ae6f405daa9e77ef3f75aca' }, this.role === 'user' ? this.renderUserMessage() : this.renderAgentMessage());
1600
+ return index.h(index.Host, { key: 'f8a49971896742ae952d84efb1527ed0db440876' }, this.role === 'user' ? this.renderUserMessage() : this.renderAgentMessage());
1601
1601
  }
1602
1602
  };
1603
1603
  AiChatMessage.style = aiChatMessageCss();
@@ -3,7 +3,7 @@
3
3
  var index = require('./index-Cc05u4ND.js');
4
4
  var iconRegistry = require('./icon-registry-D-m8GW4D.js');
5
5
 
6
- const aiConversationListCss = () => `:host{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.conversation-list{display:flex;flex-direction:column;gap:8px;flex:1;min-height:0;background:var(--ai-bg-surface)}.list-scroll{flex:1;min-height:0;overflow-y:auto;padding:0 8px 12px;scrollbar-width:thin;scrollbar-color:var(--ai-scrollbar-thumb) transparent}.list-scroll::-webkit-scrollbar{width:3px}.list-scroll::-webkit-scrollbar-track{background:transparent}.list-scroll::-webkit-scrollbar-thumb{background:var(--ai-scrollbar-thumb);border-radius:99px}.list-scroll::-webkit-scrollbar-thumb:hover{background:var(--ai-scrollbar-thumb-hover)}.conv-item{display:flex;align-items:flex-start;gap:6px;margin-top:6px;padding:10px 10px 10px 6px;border-radius:10px;cursor:pointer;transition:background 0.15s;position:relative}.conv-item:hover{background:var(--ai-bg-card)}.conv-item--active{background:var(--ai-bg-card);box-shadow:var(--ai-shadow-sm)}.conv-item__body{flex:1;min-width:0}.conv-item__title{margin:0 0 3px;font-size:13px;font-weight:600;color:var(--ai-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.conv-item__preview{margin:0 0 5px;font-size:12px;color:var(--ai-text-muted);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.conv-item__meta{display:flex;align-items:center;gap:8px}.conv-item__time{font-size:11px;color:var(--ai-text-muted);flex-shrink:0}.rating-dots{display:flex;align-items:center;gap:3px}.rating-dot{width:6px;height:6px;border-radius:50%;background:var(--ai-border-default);transition:background 0.15s}.rating-dot--filled{background:var(--ai-accent-warning, #ffaf44)}.delete-btn{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:transparent;border:none;border-radius:6px;cursor:pointer;color:var(--ai-text-muted);opacity:0;transition:opacity 0.15s, background 0.15s, color 0.15s;margin-block-start:2px}.conv-item:hover .delete-btn,.conv-item--active .delete-btn{opacity:1}.delete-btn:hover{background:var(--ai-status-danger-bg, rgba(239, 68, 68, 0.1));color:var(--ai-status-danger, #ef4444)}.delete-btn .icon-wrap{display:inline-flex;align-items:center;line-height:0}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:40px 16px;text-align:center}.empty-state__icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;background:var(--ai-bg-card);color:var(--ai-text-muted);line-height:0}.empty-state__icon .icon-wrap{display:inline-flex;align-items:center;line-height:0}.empty-state__text{margin:0;font-size:13px;color:var(--ai-text-muted);line-height:1.4}.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:40px 16px;text-align:center}.error-state__icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;background:var(--ai-status-danger-bg, rgba(239, 68, 68, 0.1));color:var(--ai-status-danger, #ef4444);line-height:0}.error-state__icon .icon-wrap{display:inline-flex;align-items:center;line-height:0}.error-state__text{margin:0;font-size:13px;color:var(--ai-text-muted);line-height:1.4}.error-state__retry{display:inline-flex;align-items:center;gap:4px;margin-top:4px;padding:6px 14px;font-size:12px;font-weight:600;color:var(--ai-text-primary);background:var(--ai-bg-card);border:1px solid var(--ai-border-default);border-radius:8px;cursor:pointer;transition:background 0.15s, box-shadow 0.15s}.error-state__retry:hover{box-shadow:var(--ai-shadow-sm)}.error-state__retry .icon-wrap{display:inline-flex;align-items:center;line-height:0}.skeleton-list{display:flex;flex-direction:column;gap:4px}.skeleton-item{padding:10px;border-radius:10px;display:flex;flex-direction:column;gap:6px}.skeleton-line{border-radius:6px;background:var(--ai-shimmer-gradient, linear-gradient(90deg, rgba(0, 0, 0, 0.06) 25%, rgba(0, 0, 0, 0.1) 50%, rgba(0, 0, 0, 0.06) 75%));background-size:200% 100%;animation:shimmer 2s linear infinite;height:12px}.skeleton-line--title{width:65%;height:13px}.skeleton-line--preview{width:100%}.skeleton-line--meta{width:35%;height:10px}@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}`;
6
+ const aiConversationListCss = () => `:host{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.conversation-list{display:flex;flex-direction:column;gap:8px;flex:1;min-height:0;background:var(--ai-bg-surface)}.list-scroll{flex:1;min-height:0;overflow-y:auto;padding:0 8px 12px;scrollbar-width:thin;scrollbar-color:var(--ai-scrollbar-thumb) transparent}.list-scroll::-webkit-scrollbar{width:3px}.list-scroll::-webkit-scrollbar-track{background:transparent}.list-scroll::-webkit-scrollbar-thumb{background:var(--ai-scrollbar-thumb);border-radius:99px}.list-scroll::-webkit-scrollbar-thumb:hover{background:var(--ai-scrollbar-thumb-hover)}.conv-item{display:flex;align-items:flex-start;gap:6px;margin-top:6px;padding:10px 10px 10px 6px;border-radius:10px;cursor:pointer;transition:background 0.15s;position:relative}.conv-item:hover{background:var(--ai-bg-card)}.conv-item--active{background:var(--ai-bg-card);box-shadow:var(--ai-shadow-sm)}.conv-item__body{flex:1;min-width:0}.conv-item__title{margin:0 0 3px;font-size:13px;font-weight:600;color:var(--ai-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.conv-item__preview{margin:0 0 5px;font-size:12px;color:var(--ai-text-muted);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.conv-item__meta{display:flex;align-items:center;gap:8px}.conv-item__time{font-size:11px;color:var(--ai-text-muted);flex-shrink:0}.rating-dots{display:flex;align-items:center;gap:3px}.rating-dot{width:6px;height:6px;border-radius:50%;background:var(--ai-border-default);transition:background 0.15s}.rating-dot--filled{background:var(--ai-accent-warning, #ffaf44)}.delete-btn{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:transparent;border:none;border-radius:6px;cursor:pointer;color:var(--ai-text-muted);opacity:0;transition:opacity 0.15s, background 0.15s, color 0.15s;margin-block-start:2px}.conv-item:hover .delete-btn,.conv-item--active .delete-btn{opacity:1}.delete-btn:hover{background:var(--ai-status-danger-bg, rgba(239, 68, 68, 0.1));color:var(--ai-status-danger, #ef4444)}.delete-btn .icon-wrap{display:inline-flex;align-items:center;line-height:0}.delete-btn--deleting{opacity:1;cursor:default;pointer-events:none}.delete-spinner{display:block;width:12px;height:12px;border:2px solid var(--ai-border-default);border-top-color:var(--ai-text-muted);border-radius:50%;animation:delete-spin 0.7s linear infinite}@keyframes delete-spin{to{transform:rotate(360deg)}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:40px 16px;text-align:center}.empty-state__icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;background:var(--ai-bg-card);color:var(--ai-text-muted);line-height:0}.empty-state__icon .icon-wrap{display:inline-flex;align-items:center;line-height:0}.empty-state__text{margin:0;font-size:13px;color:var(--ai-text-muted);line-height:1.4}.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:40px 16px;text-align:center}.error-state__icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;background:var(--ai-status-danger-bg, rgba(239, 68, 68, 0.1));color:var(--ai-status-danger, #ef4444);line-height:0}.error-state__icon .icon-wrap{display:inline-flex;align-items:center;line-height:0}.error-state__text{margin:0;font-size:13px;color:var(--ai-text-muted);line-height:1.4}.error-state__retry{display:inline-flex;align-items:center;gap:4px;margin-top:4px;padding:6px 14px;font-size:12px;font-weight:600;color:var(--ai-text-primary);background:var(--ai-bg-card);border:1px solid var(--ai-border-default);border-radius:8px;cursor:pointer;transition:background 0.15s, box-shadow 0.15s}.error-state__retry:hover{box-shadow:var(--ai-shadow-sm)}.error-state__retry .icon-wrap{display:inline-flex;align-items:center;line-height:0}.skeleton-list{display:flex;flex-direction:column;gap:4px}.skeleton-item{padding:10px;border-radius:10px;display:flex;flex-direction:column;gap:6px}.skeleton-line{border-radius:6px;background:var(--ai-shimmer-gradient, linear-gradient(90deg, rgba(0, 0, 0, 0.06) 25%, rgba(0, 0, 0, 0.1) 50%, rgba(0, 0, 0, 0.06) 75%));background-size:200% 100%;animation:shimmer 2s linear infinite;height:12px}.skeleton-line--title{width:65%;height:13px}.skeleton-line--preview{width:100%}.skeleton-line--meta{width:35%;height:10px}@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}`;
7
7
 
8
8
  const AiConversationList = class {
9
9
  constructor(hostRef) {
@@ -26,6 +26,8 @@ const AiConversationList = class {
26
26
  errorText = 'تعذّر تحميل المحادثات';
27
27
  /** Retry button label for error state */
28
28
  retryLabel = 'إعادة المحاولة';
29
+ /** ID of the conversation currently being deleted — shows a spinner on that item */
30
+ deletingId = '';
29
31
  conversationSelect;
30
32
  conversationDelete;
31
33
  retryClick;
@@ -76,7 +78,7 @@ const AiConversationList = class {
76
78
  }
77
79
  render() {
78
80
  const showEmpty = !this.loading && !this.error && this.items.length === 0;
79
- return (index.h(index.Host, { key: '9be146c657629a6f7ac7f4325e1fbfdbea27f4de' }, index.h("div", { key: '2e7f5daebdde0c69c5e22d581f9f31fc9f232308', class: "conversation-list" }, index.h("div", { key: 'f87e9462d0cac6e5d601528ada588aa18385b252', class: "list-scroll", role: "list" }, this.loading
81
+ return (index.h(index.Host, { key: '8cf17cedd5c41f0d6ffd2d06e557dc370041d1aa' }, index.h("div", { key: '50f5eeb57228f55d72acf517ed5eeb5d79e13a4b', class: "conversation-list" }, index.h("div", { key: '763f7cb557fb9abea75e08379d0ea9090b00ac1e', class: "list-scroll", role: "list" }, this.loading
80
82
  ? this.renderSkeleton()
81
83
  : this.error
82
84
  ? this.renderError()
@@ -84,10 +86,14 @@ const AiConversationList = class {
84
86
  ? this.renderEmpty()
85
87
  : this.items.map(item => {
86
88
  const isActive = item.id === this.activeId;
87
- return (index.h("div", { key: item.id, class: { 'conv-item': true, 'conv-item--active': isActive }, role: "listitem", "aria-current": isActive ? 'true' : undefined, onClick: () => this.conversationSelect.emit(item.id) }, index.h("div", { class: "conv-item__body" }, index.h("p", { class: "conv-item__title" }, item.title), index.h("p", { class: "conv-item__preview" }, item.preview), index.h("div", { class: "conv-item__meta" }, index.h("span", { class: "conv-item__time" }, this.formatRelativeTime(item.timestamp)), item.rating != null && this.renderRatingDots(item.rating))), index.h("button", { class: "delete-btn", "aria-label": "\u062D\u0630\u0641 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629", onClick: e => {
89
+ return (index.h("div", { key: item.id, class: { 'conv-item': true, 'conv-item--active': isActive }, role: "listitem", "aria-current": isActive ? 'true' : undefined, onClick: () => this.conversationSelect.emit(item.id) }, index.h("div", { class: "conv-item__body" }, index.h("p", { class: "conv-item__title" }, item.title), index.h("p", { class: "conv-item__preview" }, item.preview), index.h("div", { class: "conv-item__meta" }, index.h("span", { class: "conv-item__time" }, this.formatRelativeTime(item.timestamp)), item.rating != null && this.renderRatingDots(item.rating))), index.h("button", { class: { 'delete-btn': true, 'delete-btn--deleting': this.deletingId === item.id }, "aria-label": "\u062D\u0630\u0641 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0629", disabled: this.deletingId === item.id, onClick: e => {
88
90
  e.stopPropagation();
91
+ if (this.deletingId === item.id)
92
+ return;
89
93
  this.conversationDelete.emit(item.id);
90
- } }, this.renderIcon('cancel', 14, 14))));
94
+ } }, this.deletingId === item.id
95
+ ? index.h("span", { class: "delete-spinner", "aria-label": "\u062C\u0627\u0631\u064A \u0627\u0644\u062D\u0630\u0641" })
96
+ : this.renderIcon('cancel', 14, 14))));
91
97
  })))));
92
98
  }
93
99
  };
@@ -25,7 +25,7 @@ const AiConversationSummary = class {
25
25
  return index.h("span", { class: "icon-wrap", innerHTML: svg });
26
26
  }
27
27
  render() {
28
- return (index.h(index.Host, { key: 'd8dd368f17be91aaef528ae8092cce78bb19e35a' }, index.h("div", { key: '0460dcf3531e947c8ad6ea9d38fc76a1f0ec687d', class: "summary-card" }, index.h("div", { key: '01d46505f838f90ccc4c2d6e57f7b92982f45bd9', class: "summary-header" }, index.h("div", { key: '33afcdbe1f575a31a04ac7a1de948ab32dc76a83', class: "sparkle-avatar" }, this.renderIcon('sparkle', 14, 14)), index.h("span", { key: 'a645e52868e63ddcc8be501ae4d2a680ec6b3b27', class: "summary-title" }, this.conversation), index.h("div", { key: '14ade251a1136afae789c4d097013686f50a18f7', class: "summary-badges" }, this.messageCount > 0 && (index.h("span", { key: '70bf7e43f5d8f2ee38b2627d7f011d686bbb1b49', class: "badge" }, this.renderIcon('list', 12, 12), this.messageCount)), this.language && (index.h("span", { key: '9ad21900a26a59dabb2a25809995500363768692', class: "badge lang-badge" }, this.language)))), this.summary && (index.h("p", { key: '342007bc9de432fb64f71c84b301fbc802f9d119', class: "summary-body", ref: el => el && (el.textContent = this.summary) })), index.h("div", { key: 'c0ca1841f37918e0e1a805b34f53e2f0b204bbda', class: "summary-slot" }, index.h("slot", { key: '24cf0b383924109ed50aded7929320c1d66f3ea1' })))));
28
+ return (index.h(index.Host, { key: 'f69a767b9111f035799fbad9e26f6cd278d2cd5e' }, index.h("div", { key: '2b598f0ebcf118c75d58a92173d31250b7b71aaa', class: "summary-card" }, index.h("div", { key: 'fba36d83ef95feaaff7a88847c2ad8eed7b2a009', class: "summary-header" }, index.h("div", { key: 'f2840d65175456326a9f2c2d389b788f4dfc6622', class: "sparkle-avatar" }, this.renderIcon('sparkle', 14, 14)), index.h("span", { key: 'e90eca9ddf0b1b610a05d3a68fba69853c3c87e5', class: "summary-title" }, this.conversation), index.h("div", { key: 'ab9dd453aab0b04b00493dac0a7b5ad74b194190', class: "summary-badges" }, this.messageCount > 0 && (index.h("span", { key: 'e5664fb004a19d72334f157121125a01ff09f56a', class: "badge" }, this.renderIcon('list', 12, 12), this.messageCount)), this.language && (index.h("span", { key: 'af0784ee45ed3169514d198dc1236e781fe48ac6', class: "badge lang-badge" }, this.language)))), this.summary && (index.h("p", { key: 'c0c2be2118abbe62a31adc65e6fa8907f155bb49', class: "summary-body", ref: el => el && (el.textContent = this.summary) })), index.h("div", { key: '61c139e33e9e247508e830e319fc9cc014451526', class: "summary-slot" }, index.h("slot", { key: '5ebbbdb3319c6a8ca9f8e98a58c6336e7a25c159' })))));
29
29
  }
30
30
  };
31
31
  AiConversationSummary.style = aiConversationSummaryCss();
@@ -37,7 +37,7 @@ const AiInChatBrowser = class {
37
37
  };
38
38
  render() {
39
39
  const displayTitle = this.getDisplayTitle();
40
- return (index.h(index.Host, { key: '2d3bb12516396aaf8ca4df1e63e954cc06b2f01d' }, index.h("div", { key: '3c6f179eb59c982ab299910b5a1941d9b9d17d09', class: "browser-content" }, this.isLoading && (index.h("div", { key: '0228954a8cfaafed42f1efb5eb1ca5f160bc29e0', class: "browser-loading" }, index.h("div", { key: 'ccc49943a0af13afdbf1dcee8be0e3d712ac54d6', class: "loading-bar" }))), this.hasError ? (index.h("div", { class: "browser-error" }, index.h("span", { class: "error-text" }, "\u062A\u0639\u0630\u0651\u0631 \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0635\u0641\u062D\u0629"), index.h("span", { class: "error-url" }, this.url))) : (this.url && (index.h("iframe", { class: "browser-iframe", src: this.url, onLoad: this.handleIframeLoad, onError: this.handleIframeError, sandbox: "allow-scripts allow-same-origin allow-forms allow-popups", referrerPolicy: "no-referrer", title: displayTitle }))))));
40
+ return (index.h(index.Host, { key: 'd79ede7857bc7edc13a4c8cdbbf5b4f7312d9766' }, index.h("div", { key: '57ccda6f9670e9ae2ca76b768f31ecf62b9ec8e9', class: "browser-content" }, this.isLoading && (index.h("div", { key: 'f868050d91fc24f9a13a760d34805b6a443ff865', class: "browser-loading" }, index.h("div", { key: 'b90a07a822a1978875fd5590783d9e9a6ac319b9', class: "loading-bar" }))), this.hasError ? (index.h("div", { class: "browser-error" }, index.h("span", { class: "error-text" }, "\u062A\u0639\u0630\u0651\u0631 \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0635\u0641\u062D\u0629"), index.h("span", { class: "error-url" }, this.url))) : (this.url && (index.h("iframe", { class: "browser-iframe", src: this.url, onLoad: this.handleIframeLoad, onError: this.handleIframeError, sandbox: "allow-scripts allow-same-origin allow-forms allow-popups", referrerPolicy: "no-referrer", title: displayTitle }))))));
41
41
  }
42
42
  static get watchers() { return {
43
43
  "url": [{
@@ -26,7 +26,7 @@ const AiLink = class {
26
26
  }
27
27
  render() {
28
28
  const rel = this.rel || (this.target === '_blank' ? 'noopener noreferrer' : undefined);
29
- return (index.h(index.Host, { key: '98087503b9a0803425b23f7ee00c95025493679d' }, index.h("span", { key: '41495d6375d1c539b777b3cd38e7b7af8fcbbb9b', class: "link__label" }, this.label, index.h("slot", { key: 'f416955b31900039f03b0e7ee2e537a22964d553' })), index.h("a", { key: '4f1d74ff6c600d17fcf80686aeebc5a92a4c7305', class: "link", href: this.href, target: this.target, rel: rel }, this.renderShareIcon())));
29
+ return (index.h(index.Host, { key: 'e0e34a4c2a3534a3b449bac613c6f7cb512420d3' }, index.h("span", { key: '5776ddc64676ecaabb4f36a0e9833026dc730c23', class: "link__label" }, this.label, index.h("slot", { key: '436a334a51bea342b839d5fad9743aaf6b66a94d' })), index.h("a", { key: '3880c1429a8a24a9dee700c9f0592ac673ce68f0', class: "link", href: this.href, target: this.target, rel: rel }, this.renderShareIcon())));
30
30
  }
31
31
  };
32
32
  AiLink.style = aiLinkCss();
@@ -40,7 +40,7 @@ const AiRouteDecision = class {
40
40
  this.routeExpand.emit(this._expanded);
41
41
  }
42
42
  render() {
43
- return (index.h(index.Host, { key: 'fa9b966cf28225fa458fb00d1114fade995258c5' }, index.h("div", { key: '5263c969fd1672e1d302f06173dcdbe4450b162e', class: `route-pill ${this._expanded ? 'expanded' : ''}` }, index.h("button", { key: 'bf7800e828b0b61174f75343fcf9bca3134dfb2a', class: "route-pill-main", onClick: () => this.handleToggle() }, index.h("span", { key: '8531aeab0872f59417a37294e780d46962b21ead', class: "route-icon" }, this.renderIcon('route', 14, 14)), index.h("span", { key: '754529860d90a3ceb4f226ff85b1aecb40f4649e', class: "agent-label" }, this.agentIcon && index.h("span", { key: '39682d3a761d2cd6fae794fcb6036b0044f8f2dc', class: "agent-emoji", "aria-hidden": "true" }, this.agentIcon), this.selectedAgent), this.confidence > 0 && (index.h("span", { key: '36b3a921ab75c1faa0ece5f286703bf1b0aaca16', class: "confidence-badge" }, this.confidence, "%")), index.h("span", { key: 'c5199e986bf35d187cad16027f23e62addc45ecb', class: `expand-icon ${this._expanded ? 'expanded' : ''}` }, this.renderIcon('arrow-right', 12, 12))), this._expanded && (index.h("div", { key: '2a18ae8297ad0d71b14d01d250e15cff452c4b07', class: "route-details" }, this.reason && index.h("p", { key: '55f5123399929c590fc5c2122fd7220209e5ecac', class: "reason-text" }, this.reason), this.confidence > 0 && (index.h("div", { key: 'fbc69e8cb7820c87764f46630af8f4a77d2d879b', class: "confidence-bar-wrap" }, index.h("div", { key: '1db1d454ef64dcf9e4c673d0a26780bd55f563d2', class: "confidence-bar", style: { width: `${this.confidence}%` } }))), this.detectedLanguage && (index.h("div", { key: '8553d1a20678252b8d4f9a1e9f8b64ce3f509ae5', class: "meta-row" }, this.renderIcon('list', 12, 12), index.h("span", { key: 'ec104948a04498d06ed73be89778c5b6d84582a2', class: "lang-chip" }, this.detectedLanguage))))))));
43
+ return (index.h(index.Host, { key: 'f12718d142cff27d62c0a0299b029be2e2d88b86' }, index.h("div", { key: '4fcef90f887300c4884cd981737bf8ce8b796eca', class: `route-pill ${this._expanded ? 'expanded' : ''}` }, index.h("button", { key: '09eadc07b41b96fb56b4bcd937165de92507ac84', class: "route-pill-main", onClick: () => this.handleToggle() }, index.h("span", { key: 'd13744692a45c74976f89b582142ae09339015f5', class: "route-icon" }, this.renderIcon('route', 14, 14)), index.h("span", { key: '4f995cc09a72ba74310df17cf78735c27a910314', class: "agent-label" }, this.agentIcon && index.h("span", { key: '272dd78f38bbbb4ef845b7a41530d205368faf7e', class: "agent-emoji", "aria-hidden": "true" }, this.agentIcon), this.selectedAgent), this.confidence > 0 && (index.h("span", { key: 'a061317c9d5b8dad243dce0bb80e927eae04eb3d', class: "confidence-badge" }, this.confidence, "%")), index.h("span", { key: '4342bdf38aa85a5c5d6bd054504c91bccc7901e9', class: `expand-icon ${this._expanded ? 'expanded' : ''}` }, this.renderIcon('arrow-right', 12, 12))), this._expanded && (index.h("div", { key: 'ab5340148e832baafdd38e17a748a52b83b25c96', class: "route-details" }, this.reason && index.h("p", { key: '7854838ea405c5fdb5ebe11fb3df36a9898be445', class: "reason-text" }, this.reason), this.confidence > 0 && (index.h("div", { key: 'baf946426ad7cda94d2acfbb9f8945b5b40a823c', class: "confidence-bar-wrap" }, index.h("div", { key: 'a6e08f412706ce18e16030dd4d475d57befdd9e7', class: "confidence-bar", style: { width: `${this.confidence}%` } }))), this.detectedLanguage && (index.h("div", { key: '58af2dbca56082dcf2910cc44ac553d6f2af015a', class: "meta-row" }, this.renderIcon('list', 12, 12), index.h("span", { key: '63517ed8802764542de330897372c6a01348d0a6', class: "lang-chip" }, this.detectedLanguage))))))));
44
44
  }
45
45
  };
46
46
  AiRouteDecision.style = aiRouteDecisionCss();
@@ -20,10 +20,10 @@ const AiSuggestion = class {
20
20
  this.suggestionClick.emit(this.label);
21
21
  }
22
22
  render() {
23
- return (index.h(index.Host, { key: '510e649f8778e2298270d320f0555c4d960fb056' }, index.h("button", { key: 'a4ee17cbd432596804279d8a852635608125452a', class: {
23
+ return (index.h(index.Host, { key: 'c2eb388d152586755e9cc10ac57b519e8ff84b4d' }, index.h("button", { key: '0b9f6ec6d8c57365e2c29bfe1bfc33993d3cb498', class: {
24
24
  chip: true,
25
25
  'chip--disabled': this.disabled,
26
- }, disabled: this.disabled, onClick: () => this.handleClick() }, index.h("span", { key: 'cb2d97459b0dd6effe83bbfb81a0af9144759477', class: "chip__label" }, this.label, index.h("slot", { key: 'ce84f07883f24c216c45da9266af5160baea9cdc' })))));
26
+ }, disabled: this.disabled, onClick: () => this.handleClick() }, index.h("span", { key: 'd4fabc4c8176cd6837e609bad369e8edfc779855', class: "chip__label" }, this.label, index.h("slot", { key: 'a1074453e53982f10fd2115c2b15d7a7b20eda07' })))));
27
27
  }
28
28
  };
29
29
  AiSuggestion.style = aiSuggestionCss();
@@ -279,7 +279,7 @@ const VoiceInput = class {
279
279
  };
280
280
  render() {
281
281
  const remaining = MAX_RECORDING_TIME - this.recordingDuration;
282
- return (index.h(index.Host, { key: '93565ead1262f192811d4783ac4567b8eb7d59de' }, index.h("div", { key: '9317e2a24533435e5ac967f3eddaad3d1f6c4613', class: "wrapper" }, index.h("div", { key: '35631eb88e495be9b2bdabf1b8f15d237d327c4b', class: `glow${this.state === 'recording' ? ' visible' : ''}`, "aria-hidden": "true" }), index.h("div", { key: 'c65050758e58402c5b341c8d24a0ca58f9f53361', class: "input-container" }, this.state === 'idle' ? (index.h("div", { class: "recording-row" }, index.h("button", { type: "button", class: "submit-button", onClick: this.startRecording, disabled: this.disabled, "aria-label": "Start recording" }, index.h("ai-icon", { name: "mic", size: 16 })), this.error && (index.h("div", { class: "error-message", role: "alert" }, this.error)))) : (index.h("div", { class: "recording-row" }, index.h("button", { type: "button", class: "cancel-button", onClick: this.cancelRecording, "aria-label": "Cancel" }, index.h("ai-icon", { name: "cancel", size: 14 })), index.h("div", { class: `timer${remaining <= 5 ? ' warning' : ''}` }, this.formatDuration(this.recordingDuration)), this.showWaveform && index.h("canvas", { ref: el => (this.canvasRef = el), class: "waveform", height: "32" }), index.h("button", { type: "button", class: `submit-button${this.submitPulse ? ' pulse' : ''}`, onClick: this.stopRecording, "aria-label": "Send" }, index.h("ai-icon", { name: "arrow-up", size: 14 }))))))));
282
+ return (index.h(index.Host, { key: 'ca20fe9dda634af0da1ef6da59880279f0775a9f' }, index.h("div", { key: 'dc3328cc1ef74e9683bc6c34e1d3279b2ca2ffa2', class: "wrapper" }, index.h("div", { key: 'b4a4d2799b8c541dc03679686107cc486373e76b', class: `glow${this.state === 'recording' ? ' visible' : ''}`, "aria-hidden": "true" }), index.h("div", { key: 'f4fa8c638e68528dffd96db627bd80d4c7103143', class: "input-container" }, this.state === 'idle' ? (index.h("div", { class: "recording-row" }, index.h("button", { type: "button", class: "submit-button", onClick: this.startRecording, disabled: this.disabled, "aria-label": "Start recording" }, index.h("ai-icon", { name: "mic", size: 16 })), this.error && (index.h("div", { class: "error-message", role: "alert" }, this.error)))) : (index.h("div", { class: "recording-row" }, index.h("button", { type: "button", class: "cancel-button", onClick: this.cancelRecording, "aria-label": "Cancel" }, index.h("ai-icon", { name: "cancel", size: 14 })), index.h("div", { class: `timer${remaining <= 5 ? ' warning' : ''}` }, this.formatDuration(this.recordingDuration)), this.showWaveform && index.h("canvas", { ref: el => (this.canvasRef = el), class: "waveform", height: "32" }), index.h("button", { type: "button", class: `submit-button${this.submitPulse ? ' pulse' : ''}`, onClick: this.stopRecording, "aria-label": "Send" }, index.h("ai-icon", { name: "arrow-up", size: 14 }))))))));
283
283
  }
284
284
  };
285
285
  VoiceInput.style = aiVoiceInputCss();
@@ -5,7 +5,7 @@ var index = require('./index-Cc05u4ND.js');
5
5
  const defineCustomElements = async (win, options) => {
6
6
  if (typeof window === 'undefined') return undefined;
7
7
  await index.globalScripts();
8
- return index.bootstrapLazy([["ai-message-input.cjs",[[513,"ai-message-input",{"placeholder":[1],"disabled":[4],"showVoiceButton":[4,"show-voice-button"],"maxLength":[2,"max-length"],"isRecording":[4,"is-recording"],"inputValue":[32],"showVoiceRecorder":[32],"isMultiline":[32],"setInputValue":[64]},null,{"isRecording":[{"onIsRecordingChange":0}]}]]],["ai-rating.cjs",[[513,"ai-rating",{"question":[1],"subtitle":[1],"successMessage":[1,"success-message"],"value":[1026],"disabled":[4],"hovered":[32],"submitted":[32]}]]],["ai-chat-header.cjs",[[513,"ai-chat-header",{"mode":[1],"conversation":[1],"agentName":[1,"agent-name"],"agentStatus":[1,"agent-status"],"agentAvatar":[1,"agent-avatar"],"showBack":[4,"show-back"],"statusIndicator":[1,"status-indicator"],"pageTitle":[1,"page-title"],"pageUrl":[1,"page-url"],"conversationItems":[16],"conversationActiveId":[1,"conversation-active-id"],"conversationLoading":[4,"conversation-loading"],"titleLoading":[4,"title-loading"],"avatarError":[32],"dropdownOpen":[32],"isFloating":[32]},[[4,"click","handleDocumentClick"]]]]],["ai-agent-error.cjs",[[513,"ai-agent-error",{"headline":[1],"message":[1],"errorCode":[1,"error-code"],"retryable":[4],"retryLabel":[1,"retry-label"],"dismissible":[4]}]]],["ai-chat-container.cjs",[[769,"ai-chat-container",{"isOpen":[4,"is-open"],"position":[1537],"width":[1],"autoScroll":[4,"auto-scroll"],"showWatermark":[4,"show-watermark"],"floatHeight":[1,"float-height"],"theme":[1],"loading":[4],"error":[4],"errorText":[1,"error-text"],"retryLabel":[1,"retry-label"],"direction":[513],"isMobile":[32],"floatLeft":[32],"floatTop":[32],"scrollToBottom":[64],"cyclePosition":[64]},[[0,"headerPositionClick","handleHeaderPositionClick"]],{"isOpen":[{"isOpenChanged":0}],"position":[{"positionChanged":0}]}]]],["ai-chat-message.cjs",[[769,"ai-chat-message",{"role":[1],"content":[1],"format":[1],"agentName":[1,"agent-name"],"timestamp":[1],"showActions":[4,"show-actions"],"enableRegenerate":[4,"enable-regenerate"],"feedbackValue":[1025,"feedback-value"],"copySuccess":[32]}]]],["ai-conversation-summary.cjs",[[769,"ai-conversation-summary",{"conversation":[1],"summary":[1],"messageCount":[2,"message-count"],"language":[1]}]]],["ai-in-chat-browser.cjs",[[513,"ai-in-chat-browser",{"url":[1],"pageTitle":[1,"page-title"],"isLoading":[32],"hasError":[32]},null,{"url":[{"onUrlChange":0}]}]]],["ai-link.cjs",[[769,"ai-link",{"label":[1],"href":[1],"target":[1],"rel":[1]}]]],["ai-loading.cjs",[[513,"ai-loading",{"mode":[1],"statusText":[1,"status-text"],"thinkingSubtext":[1,"thinking-subtext"],"steps":[16],"headerTitle":[1,"header-title"],"currentAgent":[1,"current-agent"],"showAgentBadges":[4,"show-agent-badges"],"expanded":[1028],"collapsible":[4],"_expanded":[32]}]]],["ai-route-decision.cjs",[[513,"ai-route-decision",{"selectedAgent":[1,"selected-agent"],"agentIcon":[1,"agent-icon"],"reason":[1],"confidence":[2],"detectedLanguage":[1,"detected-language"],"expanded":[1028],"_expanded":[32]}]]],["ai-suggestion.cjs",[[769,"ai-suggestion",{"label":[1],"disabled":[4]}]]],["ai-voice-input.cjs",[[513,"ai-voice-input",{"disabled":[4],"showWaveform":[4,"show-waveform"],"autoStart":[4,"auto-start"],"errorText":[1,"error-text"],"waveformColor":[1,"waveform-color"],"state":[32],"error":[32],"recordingDuration":[32],"submitPulse":[32]}]]],["ai-card.cjs",[[769,"ai-card",{"noPadding":[4,"no-padding"],"noShadow":[4,"no-shadow"]}]]],["ai-conversation-list.cjs",[[513,"ai-conversation-list",{"items":[16],"activeId":[1,"active-id"],"loading":[4],"emptyText":[1,"empty-text"],"error":[4],"errorText":[1,"error-text"],"retryLabel":[1,"retry-label"]}]]],["ai-icon.cjs",[[513,"ai-icon",{"name":[1],"size":[2]}]]]], options);
8
+ return index.bootstrapLazy([["ai-message-input.cjs",[[513,"ai-message-input",{"placeholder":[1],"disabled":[4],"showVoiceButton":[4,"show-voice-button"],"maxLength":[2,"max-length"],"isRecording":[4,"is-recording"],"inputValue":[32],"showVoiceRecorder":[32],"isMultiline":[32],"setInputValue":[64]},null,{"isRecording":[{"onIsRecordingChange":0}]}]]],["ai-rating.cjs",[[513,"ai-rating",{"question":[1],"subtitle":[1],"successMessage":[1,"success-message"],"value":[1026],"disabled":[4],"hovered":[32],"submitted":[32]}]]],["ai-chat-header.cjs",[[513,"ai-chat-header",{"mode":[1],"conversation":[1],"agentName":[1,"agent-name"],"agentStatus":[1,"agent-status"],"agentAvatar":[1,"agent-avatar"],"showBack":[4,"show-back"],"statusIndicator":[1,"status-indicator"],"pageTitle":[1,"page-title"],"pageUrl":[1,"page-url"],"conversationItems":[16],"conversationActiveId":[1,"conversation-active-id"],"conversationLoading":[4,"conversation-loading"],"conversationError":[4,"conversation-error"],"conversationErrorText":[1,"conversation-error-text"],"conversationRetryLabel":[1,"conversation-retry-label"],"conversationEmptyText":[1,"conversation-empty-text"],"conversationDeletingId":[1,"conversation-deleting-id"],"titleLoading":[4,"title-loading"],"avatarError":[32],"dropdownOpen":[32],"isFloating":[32]},[[4,"click","handleDocumentClick"]]]]],["ai-agent-error.cjs",[[513,"ai-agent-error",{"headline":[1],"message":[1],"errorCode":[1,"error-code"],"retryable":[4],"retryLabel":[1,"retry-label"],"dismissible":[4]}]]],["ai-chat-container.cjs",[[769,"ai-chat-container",{"isOpen":[4,"is-open"],"position":[1537],"width":[1],"autoScroll":[4,"auto-scroll"],"showWatermark":[4,"show-watermark"],"floatHeight":[1,"float-height"],"theme":[1],"loading":[4],"error":[4],"errorText":[1,"error-text"],"retryLabel":[1,"retry-label"],"direction":[513],"isMobile":[32],"floatLeft":[32],"floatTop":[32],"scrollToBottom":[64],"cyclePosition":[64]},[[0,"headerPositionClick","handleHeaderPositionClick"]],{"isOpen":[{"isOpenChanged":0}],"position":[{"positionChanged":0}]}]]],["ai-chat-message.cjs",[[769,"ai-chat-message",{"role":[1],"content":[1],"format":[1],"agentName":[1,"agent-name"],"timestamp":[1],"showActions":[4,"show-actions"],"enableRegenerate":[4,"enable-regenerate"],"feedbackValue":[1025,"feedback-value"],"copySuccess":[32]}]]],["ai-conversation-summary.cjs",[[769,"ai-conversation-summary",{"conversation":[1],"summary":[1],"messageCount":[2,"message-count"],"language":[1]}]]],["ai-in-chat-browser.cjs",[[513,"ai-in-chat-browser",{"url":[1],"pageTitle":[1,"page-title"],"isLoading":[32],"hasError":[32]},null,{"url":[{"onUrlChange":0}]}]]],["ai-link.cjs",[[769,"ai-link",{"label":[1],"href":[1],"target":[1],"rel":[1]}]]],["ai-loading.cjs",[[513,"ai-loading",{"mode":[1],"statusText":[1,"status-text"],"thinkingSubtext":[1,"thinking-subtext"],"steps":[16],"headerTitle":[1,"header-title"],"currentAgent":[1,"current-agent"],"showAgentBadges":[4,"show-agent-badges"],"expanded":[1028],"collapsible":[4],"_expanded":[32]}]]],["ai-route-decision.cjs",[[513,"ai-route-decision",{"selectedAgent":[1,"selected-agent"],"agentIcon":[1,"agent-icon"],"reason":[1],"confidence":[2],"detectedLanguage":[1,"detected-language"],"expanded":[1028],"_expanded":[32]}]]],["ai-suggestion.cjs",[[769,"ai-suggestion",{"label":[1],"disabled":[4]}]]],["ai-voice-input.cjs",[[513,"ai-voice-input",{"disabled":[4],"showWaveform":[4,"show-waveform"],"autoStart":[4,"auto-start"],"errorText":[1,"error-text"],"waveformColor":[1,"waveform-color"],"state":[32],"error":[32],"recordingDuration":[32],"submitPulse":[32]}]]],["ai-card.cjs",[[769,"ai-card",{"noPadding":[4,"no-padding"],"noShadow":[4,"no-shadow"]}]]],["ai-conversation-list.cjs",[[513,"ai-conversation-list",{"items":[16],"activeId":[1,"active-id"],"loading":[4],"emptyText":[1,"empty-text"],"error":[4],"errorText":[1,"error-text"],"retryLabel":[1,"retry-label"],"deletingId":[1,"deleting-id"]}]]],["ai-icon.cjs",[[513,"ai-icon",{"name":[1],"size":[2]}]]]], options);
9
9
  };
10
10
 
11
11
  exports.setNonce = index.setNonce;
@@ -18,7 +18,7 @@ var patchBrowser = () => {
18
18
 
19
19
  patchBrowser().then(async (options) => {
20
20
  await index.globalScripts();
21
- return index.bootstrapLazy([["ai-message-input.cjs",[[513,"ai-message-input",{"placeholder":[1],"disabled":[4],"showVoiceButton":[4,"show-voice-button"],"maxLength":[2,"max-length"],"isRecording":[4,"is-recording"],"inputValue":[32],"showVoiceRecorder":[32],"isMultiline":[32],"setInputValue":[64]},null,{"isRecording":[{"onIsRecordingChange":0}]}]]],["ai-rating.cjs",[[513,"ai-rating",{"question":[1],"subtitle":[1],"successMessage":[1,"success-message"],"value":[1026],"disabled":[4],"hovered":[32],"submitted":[32]}]]],["ai-chat-header.cjs",[[513,"ai-chat-header",{"mode":[1],"conversation":[1],"agentName":[1,"agent-name"],"agentStatus":[1,"agent-status"],"agentAvatar":[1,"agent-avatar"],"showBack":[4,"show-back"],"statusIndicator":[1,"status-indicator"],"pageTitle":[1,"page-title"],"pageUrl":[1,"page-url"],"conversationItems":[16],"conversationActiveId":[1,"conversation-active-id"],"conversationLoading":[4,"conversation-loading"],"titleLoading":[4,"title-loading"],"avatarError":[32],"dropdownOpen":[32],"isFloating":[32]},[[4,"click","handleDocumentClick"]]]]],["ai-agent-error.cjs",[[513,"ai-agent-error",{"headline":[1],"message":[1],"errorCode":[1,"error-code"],"retryable":[4],"retryLabel":[1,"retry-label"],"dismissible":[4]}]]],["ai-chat-container.cjs",[[769,"ai-chat-container",{"isOpen":[4,"is-open"],"position":[1537],"width":[1],"autoScroll":[4,"auto-scroll"],"showWatermark":[4,"show-watermark"],"floatHeight":[1,"float-height"],"theme":[1],"loading":[4],"error":[4],"errorText":[1,"error-text"],"retryLabel":[1,"retry-label"],"direction":[513],"isMobile":[32],"floatLeft":[32],"floatTop":[32],"scrollToBottom":[64],"cyclePosition":[64]},[[0,"headerPositionClick","handleHeaderPositionClick"]],{"isOpen":[{"isOpenChanged":0}],"position":[{"positionChanged":0}]}]]],["ai-chat-message.cjs",[[769,"ai-chat-message",{"role":[1],"content":[1],"format":[1],"agentName":[1,"agent-name"],"timestamp":[1],"showActions":[4,"show-actions"],"enableRegenerate":[4,"enable-regenerate"],"feedbackValue":[1025,"feedback-value"],"copySuccess":[32]}]]],["ai-conversation-summary.cjs",[[769,"ai-conversation-summary",{"conversation":[1],"summary":[1],"messageCount":[2,"message-count"],"language":[1]}]]],["ai-in-chat-browser.cjs",[[513,"ai-in-chat-browser",{"url":[1],"pageTitle":[1,"page-title"],"isLoading":[32],"hasError":[32]},null,{"url":[{"onUrlChange":0}]}]]],["ai-link.cjs",[[769,"ai-link",{"label":[1],"href":[1],"target":[1],"rel":[1]}]]],["ai-loading.cjs",[[513,"ai-loading",{"mode":[1],"statusText":[1,"status-text"],"thinkingSubtext":[1,"thinking-subtext"],"steps":[16],"headerTitle":[1,"header-title"],"currentAgent":[1,"current-agent"],"showAgentBadges":[4,"show-agent-badges"],"expanded":[1028],"collapsible":[4],"_expanded":[32]}]]],["ai-route-decision.cjs",[[513,"ai-route-decision",{"selectedAgent":[1,"selected-agent"],"agentIcon":[1,"agent-icon"],"reason":[1],"confidence":[2],"detectedLanguage":[1,"detected-language"],"expanded":[1028],"_expanded":[32]}]]],["ai-suggestion.cjs",[[769,"ai-suggestion",{"label":[1],"disabled":[4]}]]],["ai-voice-input.cjs",[[513,"ai-voice-input",{"disabled":[4],"showWaveform":[4,"show-waveform"],"autoStart":[4,"auto-start"],"errorText":[1,"error-text"],"waveformColor":[1,"waveform-color"],"state":[32],"error":[32],"recordingDuration":[32],"submitPulse":[32]}]]],["ai-card.cjs",[[769,"ai-card",{"noPadding":[4,"no-padding"],"noShadow":[4,"no-shadow"]}]]],["ai-conversation-list.cjs",[[513,"ai-conversation-list",{"items":[16],"activeId":[1,"active-id"],"loading":[4],"emptyText":[1,"empty-text"],"error":[4],"errorText":[1,"error-text"],"retryLabel":[1,"retry-label"]}]]],["ai-icon.cjs",[[513,"ai-icon",{"name":[1],"size":[2]}]]]], options);
21
+ return index.bootstrapLazy([["ai-message-input.cjs",[[513,"ai-message-input",{"placeholder":[1],"disabled":[4],"showVoiceButton":[4,"show-voice-button"],"maxLength":[2,"max-length"],"isRecording":[4,"is-recording"],"inputValue":[32],"showVoiceRecorder":[32],"isMultiline":[32],"setInputValue":[64]},null,{"isRecording":[{"onIsRecordingChange":0}]}]]],["ai-rating.cjs",[[513,"ai-rating",{"question":[1],"subtitle":[1],"successMessage":[1,"success-message"],"value":[1026],"disabled":[4],"hovered":[32],"submitted":[32]}]]],["ai-chat-header.cjs",[[513,"ai-chat-header",{"mode":[1],"conversation":[1],"agentName":[1,"agent-name"],"agentStatus":[1,"agent-status"],"agentAvatar":[1,"agent-avatar"],"showBack":[4,"show-back"],"statusIndicator":[1,"status-indicator"],"pageTitle":[1,"page-title"],"pageUrl":[1,"page-url"],"conversationItems":[16],"conversationActiveId":[1,"conversation-active-id"],"conversationLoading":[4,"conversation-loading"],"conversationError":[4,"conversation-error"],"conversationErrorText":[1,"conversation-error-text"],"conversationRetryLabel":[1,"conversation-retry-label"],"conversationEmptyText":[1,"conversation-empty-text"],"conversationDeletingId":[1,"conversation-deleting-id"],"titleLoading":[4,"title-loading"],"avatarError":[32],"dropdownOpen":[32],"isFloating":[32]},[[4,"click","handleDocumentClick"]]]]],["ai-agent-error.cjs",[[513,"ai-agent-error",{"headline":[1],"message":[1],"errorCode":[1,"error-code"],"retryable":[4],"retryLabel":[1,"retry-label"],"dismissible":[4]}]]],["ai-chat-container.cjs",[[769,"ai-chat-container",{"isOpen":[4,"is-open"],"position":[1537],"width":[1],"autoScroll":[4,"auto-scroll"],"showWatermark":[4,"show-watermark"],"floatHeight":[1,"float-height"],"theme":[1],"loading":[4],"error":[4],"errorText":[1,"error-text"],"retryLabel":[1,"retry-label"],"direction":[513],"isMobile":[32],"floatLeft":[32],"floatTop":[32],"scrollToBottom":[64],"cyclePosition":[64]},[[0,"headerPositionClick","handleHeaderPositionClick"]],{"isOpen":[{"isOpenChanged":0}],"position":[{"positionChanged":0}]}]]],["ai-chat-message.cjs",[[769,"ai-chat-message",{"role":[1],"content":[1],"format":[1],"agentName":[1,"agent-name"],"timestamp":[1],"showActions":[4,"show-actions"],"enableRegenerate":[4,"enable-regenerate"],"feedbackValue":[1025,"feedback-value"],"copySuccess":[32]}]]],["ai-conversation-summary.cjs",[[769,"ai-conversation-summary",{"conversation":[1],"summary":[1],"messageCount":[2,"message-count"],"language":[1]}]]],["ai-in-chat-browser.cjs",[[513,"ai-in-chat-browser",{"url":[1],"pageTitle":[1,"page-title"],"isLoading":[32],"hasError":[32]},null,{"url":[{"onUrlChange":0}]}]]],["ai-link.cjs",[[769,"ai-link",{"label":[1],"href":[1],"target":[1],"rel":[1]}]]],["ai-loading.cjs",[[513,"ai-loading",{"mode":[1],"statusText":[1,"status-text"],"thinkingSubtext":[1,"thinking-subtext"],"steps":[16],"headerTitle":[1,"header-title"],"currentAgent":[1,"current-agent"],"showAgentBadges":[4,"show-agent-badges"],"expanded":[1028],"collapsible":[4],"_expanded":[32]}]]],["ai-route-decision.cjs",[[513,"ai-route-decision",{"selectedAgent":[1,"selected-agent"],"agentIcon":[1,"agent-icon"],"reason":[1],"confidence":[2],"detectedLanguage":[1,"detected-language"],"expanded":[1028],"_expanded":[32]}]]],["ai-suggestion.cjs",[[769,"ai-suggestion",{"label":[1],"disabled":[4]}]]],["ai-voice-input.cjs",[[513,"ai-voice-input",{"disabled":[4],"showWaveform":[4,"show-waveform"],"autoStart":[4,"auto-start"],"errorText":[1,"error-text"],"waveformColor":[1,"waveform-color"],"state":[32],"error":[32],"recordingDuration":[32],"submitPulse":[32]}]]],["ai-card.cjs",[[769,"ai-card",{"noPadding":[4,"no-padding"],"noShadow":[4,"no-shadow"]}]]],["ai-conversation-list.cjs",[[513,"ai-conversation-list",{"items":[16],"activeId":[1,"active-id"],"loading":[4],"emptyText":[1,"empty-text"],"error":[4],"errorText":[1,"error-text"],"retryLabel":[1,"retry-label"],"deletingId":[1,"deleting-id"]}]]],["ai-icon.cjs",[[513,"ai-icon",{"name":[1],"size":[2]}]]]], options);
22
22
  });
23
23
 
24
24
  exports.setNonce = index.setNonce;
@@ -5,6 +5,8 @@
5
5
  --ai-card-padding: 16px;
6
6
  --ai-card-gap: 12px;
7
7
  --ai-card-shadow: var(--ai-shadow-sm);
8
+ --ai-card-header-padding: 16px;
9
+ --ai-card-footer-padding: 16px;
8
10
  display: block;
9
11
  }
10
12
 
@@ -35,3 +37,23 @@
35
37
  .card--no-shadow {
36
38
  box-shadow: none;
37
39
  }
40
+
41
+ /* ─── Card Header & Footer ───────────────────────────────────────────────── */
42
+ ::slotted([slot="header"]) {
43
+ padding: var(--ai-card-header-padding);
44
+ margin: calc(var(--ai-card-padding) * -1) calc(var(--ai-card-padding) * -1) 0;
45
+ }
46
+
47
+ ::slotted([slot="footer"]) {
48
+ padding: var(--ai-card-footer-padding);
49
+ margin: 0 calc(var(--ai-card-padding) * -1) calc(var(--ai-card-padding) * -1);
50
+ }
51
+
52
+ /* When card has no padding, header and footer shouldn't have negative margins */
53
+ .card--no-padding ::slotted([slot="header"]) {
54
+ margin: 0;
55
+ }
56
+
57
+ .card--no-padding ::slotted([slot="footer"]) {
58
+ margin: 0;
59
+ }
@@ -9,7 +9,7 @@ export class AiCard {
9
9
  card: true,
10
10
  'card--no-padding': this.noPadding,
11
11
  'card--no-shadow': this.noShadow,
12
- } }, h("slot", { key: 'f604568228c02514ff0f569cfa4fd706c247652e' }))));
12
+ } }, h("slot", { key: '149e85041e3318ea8e5dfa7ddf67e6236e49e6e8', name: "header" }), h("slot", { key: '774d0408e091a0603e5feac3bc5927cf698b5c8c' }), h("slot", { key: 'be0157314b280caa5c9b4f038ca6ca4aec2f8c8f', name: "footer" }))));
13
13
  }
14
14
  static get is() { return "ai-card"; }
15
15
  static get encapsulation() { return "shadow"; }
@@ -26,6 +26,16 @@ export class AiChatHeader {
26
26
  conversationActiveId = '';
27
27
  /** Conversation list: show skeleton loading state */
28
28
  conversationLoading = false;
29
+ /** Conversation list: show error state */
30
+ conversationError = false;
31
+ /** Conversation list: error message text */
32
+ conversationErrorText = 'تعذّر تحميل المحادثات';
33
+ /** Conversation list: retry button label */
34
+ conversationRetryLabel = 'إعادة المحاولة';
35
+ /** Conversation list: empty state label */
36
+ conversationEmptyText = 'لا توجد محادثات';
37
+ /** Conversation list: ID of the conversation currently being deleted — shows a spinner on that item */
38
+ conversationDeletingId = '';
29
39
  /** Show a shimmer skeleton in place of the conversation title (e.g. while loading conversation) */
30
40
  titleLoading = false;
31
41
  avatarError = false;
@@ -59,6 +69,8 @@ export class AiChatHeader {
59
69
  conversationSelect;
60
70
  /** Fired when a conversation delete button is clicked */
61
71
  conversationDelete;
72
+ /** Fired when the retry button is clicked in the conversation list error state */
73
+ conversationRetry;
62
74
  handleDocumentClick(event) {
63
75
  if (this.dropdownOpen && !this.el.contains(event.target)) {
64
76
  this.dropdownOpen = false;
@@ -132,10 +144,14 @@ export class AiChatHeader {
132
144
  e.stopPropagation();
133
145
  this.conversationDelete.emit(e.detail);
134
146
  };
147
+ handleConversationRetry = (e) => {
148
+ e.stopPropagation();
149
+ this.conversationRetry.emit();
150
+ };
135
151
  renderConversationDropdown() {
136
152
  if (!this.dropdownOpen || this.mode !== 'agent')
137
153
  return null;
138
- return (h("div", { class: "conversation-dropdown" }, h("ai-conversation-list", { items: this.conversationItems, activeId: this.conversationActiveId, loading: this.conversationLoading, onConversationSelect: this.handleConversationSelect, onConversationDelete: this.handleConversationDelete })));
154
+ return (h("div", { class: "conversation-dropdown" }, h("ai-conversation-list", { items: this.conversationItems, activeId: this.conversationActiveId, loading: this.conversationLoading, error: this.conversationError, errorText: this.conversationErrorText, retryLabel: this.conversationRetryLabel, emptyText: this.conversationEmptyText, deletingId: this.conversationDeletingId, onConversationSelect: this.handleConversationSelect, onConversationDelete: this.handleConversationDelete, onRetryClick: this.handleConversationRetry })));
139
155
  }
140
156
  renderAgentMode() {
141
157
  return [
@@ -164,7 +180,7 @@ export class AiChatHeader {
164
180
  ];
165
181
  }
166
182
  render() {
167
- return (h(Host, { key: 'b11b4d03d7f1980ec91b0fdba7db314971b7e7d3' }, h("div", { key: '47f40b54a6861b69adee00bea45ab8a6691c13f2', class: "header-wrapper" }, h("div", { key: 'dcc18d4cb88457c2eb959bfccb2c8d72655d610a', class: "header-container" }, this.mode === 'agent' ? this.renderAgentMode() : this.mode === 'human' ? this.renderHumanMode() : this.renderBrowserMode()), this.renderConversationDropdown())));
183
+ return (h(Host, { key: '80236bfcbfac98d3efa3955f03aab4ef68c9cfea' }, h("div", { key: 'dcc4142bba1d5f07782dbc7b0a3ec287e0154223', class: "header-wrapper" }, h("div", { key: 'ca0ff9a2946cead0b86cb82390624894ed414378', class: "header-container" }, this.mode === 'agent' ? this.renderAgentMode() : this.mode === 'human' ? this.renderHumanMode() : this.renderBrowserMode()), this.renderConversationDropdown())));
168
184
  }
169
185
  static get is() { return "ai-chat-header"; }
170
186
  static get encapsulation() { return "shadow"; }
@@ -425,6 +441,106 @@ export class AiChatHeader {
425
441
  "attribute": "conversation-loading",
426
442
  "defaultValue": "false"
427
443
  },
444
+ "conversationError": {
445
+ "type": "boolean",
446
+ "mutable": false,
447
+ "complexType": {
448
+ "original": "boolean",
449
+ "resolved": "boolean",
450
+ "references": {}
451
+ },
452
+ "required": false,
453
+ "optional": false,
454
+ "docs": {
455
+ "tags": [],
456
+ "text": "Conversation list: show error state"
457
+ },
458
+ "getter": false,
459
+ "setter": false,
460
+ "reflect": false,
461
+ "attribute": "conversation-error",
462
+ "defaultValue": "false"
463
+ },
464
+ "conversationErrorText": {
465
+ "type": "string",
466
+ "mutable": false,
467
+ "complexType": {
468
+ "original": "string",
469
+ "resolved": "string",
470
+ "references": {}
471
+ },
472
+ "required": false,
473
+ "optional": false,
474
+ "docs": {
475
+ "tags": [],
476
+ "text": "Conversation list: error message text"
477
+ },
478
+ "getter": false,
479
+ "setter": false,
480
+ "reflect": false,
481
+ "attribute": "conversation-error-text",
482
+ "defaultValue": "'\u062A\u0639\u0630\u0651\u0631 \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u062D\u0627\u062F\u062B\u0627\u062A'"
483
+ },
484
+ "conversationRetryLabel": {
485
+ "type": "string",
486
+ "mutable": false,
487
+ "complexType": {
488
+ "original": "string",
489
+ "resolved": "string",
490
+ "references": {}
491
+ },
492
+ "required": false,
493
+ "optional": false,
494
+ "docs": {
495
+ "tags": [],
496
+ "text": "Conversation list: retry button label"
497
+ },
498
+ "getter": false,
499
+ "setter": false,
500
+ "reflect": false,
501
+ "attribute": "conversation-retry-label",
502
+ "defaultValue": "'\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629'"
503
+ },
504
+ "conversationEmptyText": {
505
+ "type": "string",
506
+ "mutable": false,
507
+ "complexType": {
508
+ "original": "string",
509
+ "resolved": "string",
510
+ "references": {}
511
+ },
512
+ "required": false,
513
+ "optional": false,
514
+ "docs": {
515
+ "tags": [],
516
+ "text": "Conversation list: empty state label"
517
+ },
518
+ "getter": false,
519
+ "setter": false,
520
+ "reflect": false,
521
+ "attribute": "conversation-empty-text",
522
+ "defaultValue": "'\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u062D\u0627\u062F\u062B\u0627\u062A'"
523
+ },
524
+ "conversationDeletingId": {
525
+ "type": "string",
526
+ "mutable": false,
527
+ "complexType": {
528
+ "original": "string",
529
+ "resolved": "string",
530
+ "references": {}
531
+ },
532
+ "required": false,
533
+ "optional": false,
534
+ "docs": {
535
+ "tags": [],
536
+ "text": "Conversation list: ID of the conversation currently being deleted \u2014 shows a spinner on that item"
537
+ },
538
+ "getter": false,
539
+ "setter": false,
540
+ "reflect": false,
541
+ "attribute": "conversation-deleting-id",
542
+ "defaultValue": "''"
543
+ },
428
544
  "titleLoading": {
429
545
  "type": "boolean",
430
546
  "mutable": false,
@@ -605,6 +721,21 @@ export class AiChatHeader {
605
721
  "resolved": "string",
606
722
  "references": {}
607
723
  }
724
+ }, {
725
+ "method": "conversationRetry",
726
+ "name": "conversationRetry",
727
+ "bubbles": true,
728
+ "cancelable": true,
729
+ "composed": true,
730
+ "docs": {
731
+ "tags": [],
732
+ "text": "Fired when the retry button is clicked in the conversation list error state"
733
+ },
734
+ "complexType": {
735
+ "original": "void",
736
+ "resolved": "void",
737
+ "references": {}
738
+ }
608
739
  }];
609
740
  }
610
741
  static get elementRef() { return "el"; }
@@ -201,7 +201,7 @@ export class AiChatMessage {
201
201
  } })), h("slot", null), showActions && this.renderActionsBar()), (this.agentName || this.timestamp) && (h("div", { class: "agent-info" }, this.agentName && h("span", { class: "agent-info-name" }, this.agentName), this.agentName && this.timestamp && this.renderIcon('eclipse', 10), this.timestamp && h("span", { class: "agent-info-time" }, this.getRelativeTime()))))));
202
202
  }
203
203
  render() {
204
- return h(Host, { key: 'b6fe466c9830e69c3ae6f405daa9e77ef3f75aca' }, this.role === 'user' ? this.renderUserMessage() : this.renderAgentMessage());
204
+ return h(Host, { key: 'f8a49971896742ae952d84efb1527ed0db440876' }, this.role === 'user' ? this.renderUserMessage() : this.renderAgentMessage());
205
205
  }
206
206
  static get is() { return "ai-chat-message"; }
207
207
  static get encapsulation() { return "shadow"; }
@@ -161,6 +161,26 @@
161
161
  line-height: 0;
162
162
  }
163
163
 
164
+ .delete-btn--deleting {
165
+ opacity: 1;
166
+ cursor: default;
167
+ pointer-events: none;
168
+ }
169
+
170
+ .delete-spinner {
171
+ display: block;
172
+ width: 12px;
173
+ height: 12px;
174
+ border: 2px solid var(--ai-border-default);
175
+ border-top-color: var(--ai-text-muted);
176
+ border-radius: 50%;
177
+ animation: delete-spin 0.7s linear infinite;
178
+ }
179
+
180
+ @keyframes delete-spin {
181
+ to { transform: rotate(360deg); }
182
+ }
183
+
164
184
  /* ── Empty state ───────────────────────────────────────── */
165
185
 
166
186
  .empty-state {