@memberjunction/ng-conversations 5.49.0 → 5.50.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.
Files changed (52) hide show
  1. package/README.md +64 -3
  2. package/dist/lib/components/collection/collections-full-view.component.d.ts +10 -0
  3. package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
  4. package/dist/lib/components/collection/collections-full-view.component.js +74 -14
  5. package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
  6. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +31 -5
  7. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  8. package/dist/lib/components/conversation/conversation-chat-area.component.js +169 -101
  9. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  10. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts +5 -1
  11. package/dist/lib/components/conversation/conversation-empty-state.component.d.ts.map +1 -1
  12. package/dist/lib/components/conversation/conversation-empty-state.component.js +13 -3
  13. package/dist/lib/components/conversation/conversation-empty-state.component.js.map +1 -1
  14. package/dist/lib/components/conversation/conversation-list.component.d.ts +16 -1
  15. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
  16. package/dist/lib/components/conversation/conversation-list.component.js +439 -351
  17. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
  18. package/dist/lib/components/export/export-modal.component.d.ts +25 -3
  19. package/dist/lib/components/export/export-modal.component.d.ts.map +1 -1
  20. package/dist/lib/components/export/export-modal.component.js +172 -34
  21. package/dist/lib/components/export/export-modal.component.js.map +1 -1
  22. package/dist/lib/components/message/message-input.component.d.ts +4 -1
  23. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  24. package/dist/lib/components/message/message-input.component.js +15 -3
  25. package/dist/lib/components/message/message-input.component.js.map +1 -1
  26. package/dist/lib/components/message/message-item.component.d.ts +46 -1
  27. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  28. package/dist/lib/components/message/message-item.component.js +295 -201
  29. package/dist/lib/components/message/message-item.component.js.map +1 -1
  30. package/dist/lib/components/message/message-list.component.d.ts +19 -1
  31. package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
  32. package/dist/lib/components/message/message-list.component.js +55 -1
  33. package/dist/lib/components/message/message-list.component.js.map +1 -1
  34. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +14 -1
  35. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -1
  36. package/dist/lib/components/sidebar/conversation-sidebar.component.js +38 -5
  37. package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -1
  38. package/dist/lib/components/slots/slot-interfaces.d.ts +23 -1
  39. package/dist/lib/components/slots/slot-interfaces.d.ts.map +1 -1
  40. package/dist/lib/components/slots/slot-interfaces.js.map +1 -1
  41. package/dist/lib/directives/chat-slot.directive.d.ts +10 -2
  42. package/dist/lib/directives/chat-slot.directive.d.ts.map +1 -1
  43. package/dist/lib/directives/chat-slot.directive.js.map +1 -1
  44. package/dist/lib/models/lazy-artifact-info.d.ts +8 -7
  45. package/dist/lib/models/lazy-artifact-info.d.ts.map +1 -1
  46. package/dist/lib/models/lazy-artifact-info.js +12 -11
  47. package/dist/lib/models/lazy-artifact-info.js.map +1 -1
  48. package/dist/lib/services/export.service.d.ts +149 -0
  49. package/dist/lib/services/export.service.d.ts.map +1 -1
  50. package/dist/lib/services/export.service.js +270 -36
  51. package/dist/lib/services/export.service.js.map +1 -1
  52. package/package.json +29 -29
@@ -8,6 +8,10 @@ export declare class ConversationEmptyStateComponent {
8
8
  showSidebarToggle: boolean;
9
9
  enableAttachments: boolean;
10
10
  enableMentions: boolean;
11
+ /** Per-type mention caps under enableMentions (all default true) — forwarded to the composer. */
12
+ enableAgentMentions: boolean;
13
+ enableEntityMentions: boolean;
14
+ enableSkillCommands: boolean;
11
15
  /** Show the built-in suggested-prompt chips. Hosts that don't want the default prompt vocabulary set false. */
12
16
  showSuggestedPrompts: boolean;
13
17
  maxAttachments: number;
@@ -61,6 +65,6 @@ export declare class ConversationEmptyStateComponent {
61
65
  }): void;
62
66
  onSuggestedPromptClicked(prompt: string): void;
63
67
  static ɵfac: i0.ɵɵFactoryDeclaration<ConversationEmptyStateComponent, never>;
64
- static ɵcmp: i0.ɵɵComponentDeclaration<ConversationEmptyStateComponent, "mj-conversation-empty-state", never, { "currentUser": { "alias": "currentUser"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "showSidebarToggle": { "alias": "showSidebarToggle"; "required": false; }; "enableAttachments": { "alias": "enableAttachments"; "required": false; }; "enableMentions": { "alias": "enableMentions"; "required": false; }; "showSuggestedPrompts": { "alias": "showSuggestedPrompts"; "required": false; }; "maxAttachments": { "alias": "maxAttachments"; "required": false; }; "maxAttachmentSizeBytes": { "alias": "maxAttachmentSizeBytes"; "required": false; }; "acceptedFileTypes": { "alias": "acceptedFileTypes"; "required": false; }; "greeting": { "alias": "greeting"; "required": false; }; "overlayMode": { "alias": "overlayMode"; "required": false; }; "initialDraft": { "alias": "initialDraft"; "required": false; }; }, { "initialDraftApplied": "initialDraftApplied"; "DraftStateChanged": "DraftStateChanged"; "ComposerBlurred": "ComposerBlurred"; "messageSent": "messageSent"; "sidebarToggleClicked": "sidebarToggleClicked"; }, never, never, false, never>;
68
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConversationEmptyStateComponent, "mj-conversation-empty-state", never, { "currentUser": { "alias": "currentUser"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "showSidebarToggle": { "alias": "showSidebarToggle"; "required": false; }; "enableAttachments": { "alias": "enableAttachments"; "required": false; }; "enableMentions": { "alias": "enableMentions"; "required": false; }; "enableAgentMentions": { "alias": "enableAgentMentions"; "required": false; }; "enableEntityMentions": { "alias": "enableEntityMentions"; "required": false; }; "enableSkillCommands": { "alias": "enableSkillCommands"; "required": false; }; "showSuggestedPrompts": { "alias": "showSuggestedPrompts"; "required": false; }; "maxAttachments": { "alias": "maxAttachments"; "required": false; }; "maxAttachmentSizeBytes": { "alias": "maxAttachmentSizeBytes"; "required": false; }; "acceptedFileTypes": { "alias": "acceptedFileTypes"; "required": false; }; "greeting": { "alias": "greeting"; "required": false; }; "overlayMode": { "alias": "overlayMode"; "required": false; }; "initialDraft": { "alias": "initialDraft"; "required": false; }; }, { "initialDraftApplied": "initialDraftApplied"; "DraftStateChanged": "DraftStateChanged"; "ComposerBlurred": "ComposerBlurred"; "messageSent": "messageSent"; "sidebarToggleClicked": "sidebarToggleClicked"; }, never, never, false, never>;
65
69
  }
66
70
  //# sourceMappingURL=conversation-empty-state.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-empty-state.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/conversation/conversation-empty-state.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAa,MAAM,eAAe,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;;AAGhE,qBAMa,+BAA+B;IACjC,WAAW,EAAG,QAAQ,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAS;IAC1B,iBAAiB,EAAE,OAAO,CAAS;IACnC,iBAAiB,EAAE,OAAO,CAAS;IACnC,cAAc,EAAE,OAAO,CAAQ;IACxC,+GAA+G;IACtG,oBAAoB,EAAE,OAAO,CAAQ;IACrC,cAAc,EAAE,MAAM,CAAM;IAC5B,sBAAsB,EAAE,MAAM,CAAoB;IAClD,iBAAiB,EAAE,MAAM,CAAa;IAE/C,2FAA2F;IAClF,QAAQ,EAAE,MAAM,CAAyB;IAElD,8EAA8E;IAC9E,OAAO,CAAC,YAAY,CAAS;IAC7B,IACI,WAAW,CAAC,KAAK,EAAE,OAAO,EAK7B;IACD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEiC,OAAO,CAAC,YAAY,CAAC,CAAwB;IAE/E,wFAAwF;IAC/E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,mBAAmB,qBAA4B;IACzD,kFAAkF;IACxE,iBAAiB,uBAA8B;IACzD,qEAAqE;IAC3D,eAAe,qBAA4B;IAE3C,WAAW;cAA2B,MAAM;qBAAe,iBAAiB,EAAE;OAAK;IACnF,oBAAoB,qBAA4B;IAEnD,WAAW,EAAE,MAAM,CAAM;IAGhC,OAAO,CAAC,mBAAmB,CA0GzB;IAGK,gBAAgB,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAAM;;IAOnF;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;;OAGG;IACH;;;;OAIG;IACU,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,OAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAOpF,UAAU,IAAI,IAAI;IAQzB,kBAAkB,CAAC,KAAK,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,iBAAiB,EAAE,CAAA;KAAC,GAAG,IAAI;IAIjF,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;yCApMnC,+BAA+B;2CAA/B,+BAA+B;CAyM3C"}
1
+ {"version":3,"file":"conversation-empty-state.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/conversation/conversation-empty-state.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAa,MAAM,eAAe,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;;AAGhE,qBAMa,+BAA+B;IACjC,WAAW,EAAG,QAAQ,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAS;IAC1B,iBAAiB,EAAE,OAAO,CAAS;IACnC,iBAAiB,EAAE,OAAO,CAAS;IACnC,cAAc,EAAE,OAAO,CAAQ;IACxC,iGAAiG;IACxF,mBAAmB,EAAE,OAAO,CAAQ;IACpC,oBAAoB,EAAE,OAAO,CAAQ;IACrC,mBAAmB,EAAE,OAAO,CAAQ;IAC7C,+GAA+G;IACtG,oBAAoB,EAAE,OAAO,CAAQ;IACrC,cAAc,EAAE,MAAM,CAAM;IAC5B,sBAAsB,EAAE,MAAM,CAAoB;IAClD,iBAAiB,EAAE,MAAM,CAAa;IAE/C,2FAA2F;IAClF,QAAQ,EAAE,MAAM,CAAyB;IAElD,8EAA8E;IAC9E,OAAO,CAAC,YAAY,CAAS;IAC7B,IACI,WAAW,CAAC,KAAK,EAAE,OAAO,EAK7B;IACD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEiC,OAAO,CAAC,YAAY,CAAC,CAAwB;IAE/E,wFAAwF;IAC/E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,mBAAmB,qBAA4B;IACzD,kFAAkF;IACxE,iBAAiB,uBAA8B;IACzD,qEAAqE;IAC3D,eAAe,qBAA4B;IAE3C,WAAW;cAA2B,MAAM;qBAAe,iBAAiB,EAAE;OAAK;IACnF,oBAAoB,qBAA4B;IAEnD,WAAW,EAAE,MAAM,CAAM;IAGhC,OAAO,CAAC,mBAAmB,CA0GzB;IAGK,gBAAgB,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAAM;;IAOnF;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;;OAGG;IACH;;;;OAIG;IACU,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,OAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAOpF,UAAU,IAAI,IAAI;IAQzB,kBAAkB,CAAC,KAAK,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,iBAAiB,EAAE,CAAA;KAAC,GAAG,IAAI;IAIjF,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;yCAxMnC,+BAA+B;2CAA/B,+BAA+B;CA6M3C"}
@@ -99,6 +99,10 @@ export class ConversationEmptyStateComponent {
99
99
  showSidebarToggle = false;
100
100
  enableAttachments = false;
101
101
  enableMentions = true;
102
+ /** Per-type mention caps under enableMentions (all default true) — forwarded to the composer. */
103
+ enableAgentMentions = true;
104
+ enableEntityMentions = true;
105
+ enableSkillCommands = true;
102
106
  /** Show the built-in suggested-prompt chips. Hosts that don't want the default prompt vocabulary set false. */
103
107
  showSuggestedPrompts = true;
104
108
  maxAttachments = 10;
@@ -283,7 +287,7 @@ export class ConversationEmptyStateComponent {
283
287
  } if (rf & 2) {
284
288
  let _t;
285
289
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.messageInput = _t.first);
286
- } }, inputs: { currentUser: "currentUser", disabled: "disabled", showSidebarToggle: "showSidebarToggle", enableAttachments: "enableAttachments", enableMentions: "enableMentions", showSuggestedPrompts: "showSuggestedPrompts", maxAttachments: "maxAttachments", maxAttachmentSizeBytes: "maxAttachmentSizeBytes", acceptedFileTypes: "acceptedFileTypes", greeting: "greeting", overlayMode: "overlayMode", initialDraft: "initialDraft" }, outputs: { initialDraftApplied: "initialDraftApplied", DraftStateChanged: "DraftStateChanged", ComposerBlurred: "ComposerBlurred", messageSent: "messageSent", sidebarToggleClicked: "sidebarToggleClicked" }, standalone: false, decls: 9, vars: 19, consts: [[1, "conversation-empty-state"], [1, "loading-overlay"], [1, "empty-state-container"], [1, "greeting-section"], [1, "suggested-prompts"], [1, "overlay-greeting"], [1, "message-input-wrapper"], [3, "initialDraftApplied", "DraftStateChanged", "ComposerBlurred", "emptyStateSubmit", "initialDraft", "placeholder", "disabled", "currentUser", "emptyStateMode", "enableMentions", "enableAttachments", "maxAttachments", "maxAttachmentSizeBytes", "acceptedFileTypes"], [1, "tips-section"], ["text", "Creating your conversation...", "size", "large"], [1, "greeting-icon"], [1, "fa-solid", "fa-comments", "fa-3x"], [1, "greeting-title"], [1, "greeting-subtitle"], [1, "prompt-grid"], [1, "prompt-card", 3, "disabled"], [1, "prompt-card", 3, "click"], [1, "prompt-icon"], [1, "prompt-content"], [1, "prompt-title"], [1, "prompt-text"], [1, "overlay-greeting-text"], [1, "tip-item"], [1, "fa-solid", "fa-keyboard"], [1, "fa-solid", "fa-at"]], template: function ConversationEmptyStateComponent_Template(rf, ctx) { if (rf & 1) {
290
+ } }, inputs: { currentUser: "currentUser", disabled: "disabled", showSidebarToggle: "showSidebarToggle", enableAttachments: "enableAttachments", enableMentions: "enableMentions", enableAgentMentions: "enableAgentMentions", enableEntityMentions: "enableEntityMentions", enableSkillCommands: "enableSkillCommands", showSuggestedPrompts: "showSuggestedPrompts", maxAttachments: "maxAttachments", maxAttachmentSizeBytes: "maxAttachmentSizeBytes", acceptedFileTypes: "acceptedFileTypes", greeting: "greeting", overlayMode: "overlayMode", initialDraft: "initialDraft" }, outputs: { initialDraftApplied: "initialDraftApplied", DraftStateChanged: "DraftStateChanged", ComposerBlurred: "ComposerBlurred", messageSent: "messageSent", sidebarToggleClicked: "sidebarToggleClicked" }, standalone: false, decls: 9, vars: 22, consts: [[1, "conversation-empty-state"], [1, "loading-overlay"], [1, "empty-state-container"], [1, "greeting-section"], [1, "suggested-prompts"], [1, "overlay-greeting"], [1, "message-input-wrapper"], [3, "initialDraftApplied", "DraftStateChanged", "ComposerBlurred", "emptyStateSubmit", "initialDraft", "placeholder", "disabled", "currentUser", "emptyStateMode", "enableMentions", "enableAgentMentions", "enableEntityMentions", "enableSkillCommands", "enableAttachments", "maxAttachments", "maxAttachmentSizeBytes", "acceptedFileTypes"], [1, "tips-section"], ["text", "Creating your conversation...", "size", "large"], [1, "greeting-icon"], [1, "fa-solid", "fa-comments", "fa-3x"], [1, "greeting-title"], [1, "greeting-subtitle"], [1, "prompt-grid"], [1, "prompt-card", 3, "disabled"], [1, "prompt-card", 3, "click"], [1, "prompt-icon"], [1, "prompt-content"], [1, "prompt-title"], [1, "prompt-text"], [1, "overlay-greeting-text"], [1, "tip-item"], [1, "fa-solid", "fa-keyboard"], [1, "fa-solid", "fa-at"]], template: function ConversationEmptyStateComponent_Template(rf, ctx) { if (rf & 1) {
287
291
  i0.ɵɵelementStart(0, "div", 0);
288
292
  i0.ɵɵconditionalCreate(1, ConversationEmptyStateComponent_Conditional_1_Template, 2, 0, "div", 1);
289
293
  i0.ɵɵelementStart(2, "div", 2);
@@ -308,14 +312,14 @@ export class ConversationEmptyStateComponent {
308
312
  i0.ɵɵadvance();
309
313
  i0.ɵɵconditional(ctx.overlayMode ? 5 : -1);
310
314
  i0.ɵɵadvance(2);
311
- i0.ɵɵproperty("initialDraft", ctx.initialDraft)("placeholder", ctx.overlayMode ? "Type a message..." : "Type your message to start a new conversation...")("disabled", ctx.disabled)("currentUser", ctx.currentUser)("emptyStateMode", true)("enableMentions", ctx.enableMentions)("enableAttachments", ctx.enableAttachments)("maxAttachments", ctx.maxAttachments)("maxAttachmentSizeBytes", ctx.maxAttachmentSizeBytes)("acceptedFileTypes", ctx.acceptedFileTypes);
315
+ i0.ɵɵproperty("initialDraft", ctx.initialDraft)("placeholder", ctx.overlayMode ? "Type a message..." : "Type your message to start a new conversation...")("disabled", ctx.disabled)("currentUser", ctx.currentUser)("emptyStateMode", true)("enableMentions", ctx.enableMentions)("enableAgentMentions", ctx.enableAgentMentions)("enableEntityMentions", ctx.enableEntityMentions)("enableSkillCommands", ctx.enableSkillCommands)("enableAttachments", ctx.enableAttachments)("maxAttachments", ctx.maxAttachments)("maxAttachmentSizeBytes", ctx.maxAttachmentSizeBytes)("acceptedFileTypes", ctx.acceptedFileTypes);
312
316
  i0.ɵɵadvance();
313
317
  i0.ɵɵconditional(!ctx.overlayMode ? 8 : -1);
314
318
  } }, dependencies: [i1.LoadingComponent, i2.MessageInputComponent], styles: ["[_nghost-%COMP%] {\n display: flex;\n flex: 1;\n height: 100%;\n min-height: 0;\n}\n\n.conversation-empty-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n width: 100%;\n padding: 2rem;\n overflow-y: auto;\n position: relative;\n}\n\n@media (max-width: 768px) {\n .conversation-empty-state[_ngcontent-%COMP%] {\n align-items: flex-start;\n padding: 1rem 0.75rem;\n }\n}\n\n.loading-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: color-mix(in srgb, var(--mj-bg-surface-card) 95%, transparent);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 100;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease-in;\n}\n\n.loading-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1rem;\n padding: 2rem;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 4px 20px color-mix(in srgb, var(--mj-text-primary) 10%, transparent);\n}\n.loading-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.loading-message[_ngcontent-%COMP%] {\n font-size: 1rem;\n color: var(--mj-text-primary);\n font-weight: 500;\n margin: 0;\n}\n\n.empty-state-container[_ngcontent-%COMP%] {\n max-width: 800px;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 1.25rem;\n animation: _ngcontent-%COMP%_fadeIn 0.3s ease-in;\n transition: opacity 0.2s ease;\n}\n.empty-state-container.loading[_ngcontent-%COMP%] {\n opacity: 0.4;\n pointer-events: none;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n\n.greeting-section[_ngcontent-%COMP%] {\n text-align: center;\n padding: 0.5rem 0;\n}\n\n.greeting-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n margin-bottom: 0.5rem;\n opacity: 0.8;\n}\n\n.greeting-title[_ngcontent-%COMP%] {\n font-size: 2rem;\n font-weight: 600;\n margin: 0 0 0.5rem 0;\n color: var(--mj-text-primary);\n}\n\n.greeting-subtitle[_ngcontent-%COMP%] {\n font-size: 1rem;\n color: var(--mj-text-secondary);\n margin: 0;\n line-height: 1.5;\n}\n\n\n\n.suggested-prompts[_ngcontent-%COMP%] {\n margin: 0;\n}\n\n.prompt-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 1rem;\n}\n\n.prompt-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 1rem;\n padding: 1.25rem;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n.prompt-card[_ngcontent-%COMP%]:hover:not(.disabled) {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-brand-primary);\n transform: translateY(-2px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-text-primary) 10%, transparent);\n}\n.prompt-card.disabled[_ngcontent-%COMP%] {\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.prompt-icon[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-radius: 8px;\n font-size: 1.2rem;\n}\n\n.prompt-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.prompt-title[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 0.95rem;\n color: var(--mj-text-primary);\n margin-bottom: 0.25rem;\n}\n\n.prompt-text[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n\n\n.message-input-wrapper[_ngcontent-%COMP%] {\n margin: 0;\n width: 100%;\n}\n\n\n\n.tips-section[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: 0.75rem 0 0;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.tip-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 0.875rem;\n color: var(--mj-text-secondary);\n}\n.tip-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n flex-shrink: 0;\n width: 24px;\n text-align: center;\n color: var(--mj-brand-primary);\n opacity: 0.7;\n}\n.tip-item[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n\n\n.conversation-empty-state.overlay-mode[_ngcontent-%COMP%] {\n padding: 1rem;\n align-items: center;\n justify-content: center;\n}\n\n.overlay-mode[_ngcontent-%COMP%] .empty-state-container[_ngcontent-%COMP%] {\n gap: 0.75rem;\n max-width: 100%;\n justify-content: center;\n}\n\n.overlay-greeting[_ngcontent-%COMP%] {\n text-align: center;\n padding: 1rem 0 0;\n}\n\n.overlay-greeting-text[_ngcontent-%COMP%] {\n font-size: 1.1rem;\n font-weight: 500;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n.overlay-mode[_ngcontent-%COMP%] .message-input-wrapper[_ngcontent-%COMP%] {\n margin: 0.5rem 0;\n}\n\n\n\n\n@media (max-height: 820px) {\n .conversation-empty-state[_ngcontent-%COMP%] {\n padding: 1rem;\n }\n .empty-state-container[_ngcontent-%COMP%] {\n gap: 0.75rem;\n }\n .greeting-section[_ngcontent-%COMP%] {\n padding: 0;\n }\n .greeting-icon[_ngcontent-%COMP%] {\n margin-bottom: 0.25rem;\n }\n .greeting-icon[_ngcontent-%COMP%] .fa-3x[_ngcontent-%COMP%] {\n font-size: 2em;\n }\n .greeting-title[_ngcontent-%COMP%] {\n font-size: 1.5rem;\n }\n .tips-section[_ngcontent-%COMP%] {\n padding: 0.5rem 0 0;\n }\n}\n\n\n\n@media (max-width: 768px) {\n .empty-state-container[_ngcontent-%COMP%] {\n gap: 0.75rem;\n }\n .greeting-section[_ngcontent-%COMP%] {\n padding: 0.25rem 0;\n }\n .greeting-icon[_ngcontent-%COMP%] {\n font-size: 1.5rem;\n margin-bottom: 0.25rem;\n }\n .greeting-title[_ngcontent-%COMP%] {\n font-size: 1.1rem;\n }\n .greeting-subtitle[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n padding: 0 0.5rem;\n }\n .prompt-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n gap: 0.5rem;\n }\n .prompt-card[_ngcontent-%COMP%] {\n padding: 0.5rem;\n flex-direction: column;\n gap: 0.5rem;\n }\n .prompt-icon[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n font-size: 0.85rem;\n }\n .prompt-title[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n }\n .prompt-text[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n -webkit-line-clamp: 1;\n }\n .message-input-wrapper[_ngcontent-%COMP%] {\n margin: 0.5rem 0;\n }\n .tips-section[_ngcontent-%COMP%] {\n display: none;\n }\n .loading-content[_ngcontent-%COMP%] {\n padding: 1rem;\n }\n .loading-message[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n }\n}\n\n\n@media (max-width: 480px) {\n .empty-state-container[_ngcontent-%COMP%] {\n gap: 0.5rem;\n }\n .greeting-section[_ngcontent-%COMP%] {\n padding: 0.25rem 0;\n }\n .greeting-icon[_ngcontent-%COMP%] {\n font-size: 1.25rem;\n margin-bottom: 0.25rem;\n }\n .greeting-title[_ngcontent-%COMP%] {\n font-size: 1rem;\n }\n .greeting-subtitle[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n padding: 0 0.25rem;\n }\n .prompt-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n gap: 0.4rem;\n }\n .prompt-card[_ngcontent-%COMP%] {\n padding: 0.4rem;\n flex-direction: column;\n gap: 0.4rem;\n }\n .prompt-icon[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n font-size: 0.75rem;\n border-radius: 4px;\n }\n .prompt-title[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n }\n .prompt-text[_ngcontent-%COMP%] {\n font-size: 0.65rem;\n -webkit-line-clamp: 1;\n }\n .message-input-wrapper[_ngcontent-%COMP%] {\n margin: 0.4rem 0;\n }\n .tips-section[_ngcontent-%COMP%] {\n display: none;\n }\n .loading-content[_ngcontent-%COMP%] {\n padding: 1rem;\n }\n .loading-message[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n }\n}"] });
315
319
  }
316
320
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConversationEmptyStateComponent, [{
317
321
  type: Component,
318
- args: [{ standalone: false, selector: 'mj-conversation-empty-state', template: "<div class=\"conversation-empty-state\" [class.overlay-mode]=\"overlayMode\">\n <!-- Loading Overlay -->\n @if (disabled) {\n <div class=\"loading-overlay\">\n <mj-loading text=\"Creating your conversation...\" size=\"large\"></mj-loading>\n </div>\n }\n\n <div class=\"empty-state-container\" [class.loading]=\"disabled\">\n <!-- Greeting Header (hidden in overlay mode) -->\n @if (!overlayMode) {\n <div class=\"greeting-section\">\n <div class=\"greeting-icon\">\n <i class=\"fa-solid fa-comments fa-3x\"></i>\n </div>\n <h1 class=\"greeting-title\">Welcome to Conversations</h1>\n <p class=\"greeting-subtitle\">\n Start a new conversation by typing a message below, or choose a suggested prompt to get started.\n </p>\n </div>\n }\n\n <!-- Suggested Prompts (hidden in overlay mode) -->\n @if (showSuggestedPrompts && suggestedPrompts.length > 0) {\n <div class=\"suggested-prompts\">\n <div class=\"prompt-grid\">\n @for (prompt of suggestedPrompts; track prompt) {\n <div\n class=\"prompt-card\"\n (click)=\"onSuggestedPromptClicked(prompt.prompt)\"\n [class.disabled]=\"disabled\"\n >\n <div class=\"prompt-icon\">\n <i class=\"{{prompt.icon}}\"></i>\n </div>\n <div class=\"prompt-content\">\n <div class=\"prompt-title\">{{prompt.title}}</div>\n <div class=\"prompt-text\">{{prompt.prompt}}</div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Compact greeting for overlay mode -->\n @if (overlayMode) {\n <div class=\"overlay-greeting\">\n <p class=\"overlay-greeting-text\">{{ greeting }}</p>\n </div>\n }\n\n <!-- Message Input (using full mj-message-input in empty state mode) -->\n <div class=\"message-input-wrapper\">\n <mj-message-input\n [initialDraft]=\"initialDraft\"\n (initialDraftApplied)=\"initialDraftApplied.emit()\"\n (DraftStateChanged)=\"DraftStateChanged.emit($event)\"\n (ComposerBlurred)=\"ComposerBlurred.emit()\"\n [placeholder]=\"overlayMode ? 'Type a message...' : 'Type your message to start a new conversation...'\"\n [disabled]=\"disabled\"\n [currentUser]=\"currentUser\"\n [emptyStateMode]=\"true\"\n [enableMentions]=\"enableMentions\"\n [enableAttachments]=\"enableAttachments\"\n [maxAttachments]=\"maxAttachments\"\n [maxAttachmentSizeBytes]=\"maxAttachmentSizeBytes\"\n [acceptedFileTypes]=\"acceptedFileTypes\"\n (emptyStateSubmit)=\"onEmptyStateSubmit($event)\">\n </mj-message-input>\n </div>\n\n <!-- Footer Tips (hidden in overlay mode) -->\n @if (!overlayMode) {\n <div class=\"tips-section\">\n @if (enableMentions) {\n <div class=\"tip-item\">\n <i class=\"fa-solid fa-at\"></i>\n <span>Use <strong>&#64;AgentName</strong> to directly invoke a specific agent</span>\n </div>\n }\n <div class=\"tip-item\">\n <i class=\"fa-solid fa-keyboard\"></i>\n <span>Press <strong>Enter</strong> to send, <strong>Shift+Enter</strong> for new line</span>\n </div>\n </div>\n }\n </div>\n</div>\n", styles: [":host {\n display: flex;\n flex: 1;\n height: 100%;\n min-height: 0;\n}\n\n.conversation-empty-state {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n width: 100%;\n padding: 2rem;\n overflow-y: auto;\n position: relative;\n}\n\n@media (max-width: 768px) {\n .conversation-empty-state {\n align-items: flex-start;\n padding: 1rem 0.75rem;\n }\n}\n\n.loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: color-mix(in srgb, var(--mj-bg-surface-card) 95%, transparent);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 100;\n animation: fadeIn 0.2s ease-in;\n}\n\n.loading-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1rem;\n padding: 2rem;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 4px 20px color-mix(in srgb, var(--mj-text-primary) 10%, transparent);\n}\n.loading-content i {\n color: var(--mj-brand-primary);\n}\n\n.loading-message {\n font-size: 1rem;\n color: var(--mj-text-primary);\n font-weight: 500;\n margin: 0;\n}\n\n.empty-state-container {\n max-width: 800px;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 1.25rem;\n animation: fadeIn 0.3s ease-in;\n transition: opacity 0.2s ease;\n}\n.empty-state-container.loading {\n opacity: 0.4;\n pointer-events: none;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n/* Greeting Section */\n.greeting-section {\n text-align: center;\n padding: 0.5rem 0;\n}\n\n.greeting-icon {\n color: var(--mj-brand-primary);\n margin-bottom: 0.5rem;\n opacity: 0.8;\n}\n\n.greeting-title {\n font-size: 2rem;\n font-weight: 600;\n margin: 0 0 0.5rem 0;\n color: var(--mj-text-primary);\n}\n\n.greeting-subtitle {\n font-size: 1rem;\n color: var(--mj-text-secondary);\n margin: 0;\n line-height: 1.5;\n}\n\n/* Suggested Prompts */\n.suggested-prompts {\n margin: 0;\n}\n\n.prompt-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 1rem;\n}\n\n.prompt-card {\n display: flex;\n align-items: flex-start;\n gap: 1rem;\n padding: 1.25rem;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n.prompt-card:hover:not(.disabled) {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-brand-primary);\n transform: translateY(-2px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-text-primary) 10%, transparent);\n}\n.prompt-card.disabled {\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.prompt-icon {\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-radius: 8px;\n font-size: 1.2rem;\n}\n\n.prompt-content {\n flex: 1;\n min-width: 0;\n}\n\n.prompt-title {\n font-weight: 600;\n font-size: 0.95rem;\n color: var(--mj-text-primary);\n margin-bottom: 0.25rem;\n}\n\n.prompt-text {\n font-size: 0.85rem;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n/* Message Input Wrapper */\n.message-input-wrapper {\n margin: 0;\n width: 100%;\n}\n\n/* Tips Section */\n.tips-section {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: 0.75rem 0 0;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.tip-item {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 0.875rem;\n color: var(--mj-text-secondary);\n}\n.tip-item i {\n flex-shrink: 0;\n width: 24px;\n text-align: center;\n color: var(--mj-brand-primary);\n opacity: 0.7;\n}\n.tip-item strong {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n/* Overlay Mode \u2014 compact layout for floating chat widget */\n.conversation-empty-state.overlay-mode {\n padding: 1rem;\n align-items: center;\n justify-content: center;\n}\n\n.overlay-mode .empty-state-container {\n gap: 0.75rem;\n max-width: 100%;\n justify-content: center;\n}\n\n.overlay-greeting {\n text-align: center;\n padding: 1rem 0 0;\n}\n\n.overlay-greeting-text {\n font-size: 1.1rem;\n font-weight: 500;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n.overlay-mode .message-input-wrapper {\n margin: 0.5rem 0;\n}\n\n/* Short-viewport fallback \u2014 keep the welcome screen scroll-free when the\n available height is reduced (browser chrome, app header, smaller laptops). */\n@media (max-height: 820px) {\n .conversation-empty-state {\n padding: 1rem;\n }\n .empty-state-container {\n gap: 0.75rem;\n }\n .greeting-section {\n padding: 0;\n }\n .greeting-icon {\n margin-bottom: 0.25rem;\n }\n .greeting-icon .fa-3x {\n font-size: 2em;\n }\n .greeting-title {\n font-size: 1.5rem;\n }\n .tips-section {\n padding: 0.5rem 0 0;\n }\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n .empty-state-container {\n gap: 0.75rem;\n }\n .greeting-section {\n padding: 0.25rem 0;\n }\n .greeting-icon {\n font-size: 1.5rem;\n margin-bottom: 0.25rem;\n }\n .greeting-title {\n font-size: 1.1rem;\n }\n .greeting-subtitle {\n font-size: 0.75rem;\n padding: 0 0.5rem;\n }\n .prompt-grid {\n grid-template-columns: repeat(2, 1fr);\n gap: 0.5rem;\n }\n .prompt-card {\n padding: 0.5rem;\n flex-direction: column;\n gap: 0.5rem;\n }\n .prompt-icon {\n width: 28px;\n height: 28px;\n font-size: 0.85rem;\n }\n .prompt-title {\n font-size: 0.75rem;\n }\n .prompt-text {\n font-size: 0.7rem;\n -webkit-line-clamp: 1;\n }\n .message-input-wrapper {\n margin: 0.5rem 0;\n }\n .tips-section {\n display: none;\n }\n .loading-content {\n padding: 1rem;\n }\n .loading-message {\n font-size: 0.85rem;\n }\n}\n/* Small Phone adjustments */\n@media (max-width: 480px) {\n .empty-state-container {\n gap: 0.5rem;\n }\n .greeting-section {\n padding: 0.25rem 0;\n }\n .greeting-icon {\n font-size: 1.25rem;\n margin-bottom: 0.25rem;\n }\n .greeting-title {\n font-size: 1rem;\n }\n .greeting-subtitle {\n font-size: 0.7rem;\n padding: 0 0.25rem;\n }\n .prompt-grid {\n grid-template-columns: repeat(2, 1fr);\n gap: 0.4rem;\n }\n .prompt-card {\n padding: 0.4rem;\n flex-direction: column;\n gap: 0.4rem;\n }\n .prompt-icon {\n width: 24px;\n height: 24px;\n font-size: 0.75rem;\n border-radius: 4px;\n }\n .prompt-title {\n font-size: 0.7rem;\n }\n .prompt-text {\n font-size: 0.65rem;\n -webkit-line-clamp: 1;\n }\n .message-input-wrapper {\n margin: 0.4rem 0;\n }\n .tips-section {\n display: none;\n }\n .loading-content {\n padding: 1rem;\n }\n .loading-message {\n font-size: 0.8rem;\n }\n}\n"] }]
322
+ args: [{ standalone: false, selector: 'mj-conversation-empty-state', template: "<div class=\"conversation-empty-state\" [class.overlay-mode]=\"overlayMode\">\n <!-- Loading Overlay -->\n @if (disabled) {\n <div class=\"loading-overlay\">\n <mj-loading text=\"Creating your conversation...\" size=\"large\"></mj-loading>\n </div>\n }\n\n <div class=\"empty-state-container\" [class.loading]=\"disabled\">\n <!-- Greeting Header (hidden in overlay mode) -->\n @if (!overlayMode) {\n <div class=\"greeting-section\">\n <div class=\"greeting-icon\">\n <i class=\"fa-solid fa-comments fa-3x\"></i>\n </div>\n <h1 class=\"greeting-title\">Welcome to Conversations</h1>\n <p class=\"greeting-subtitle\">\n Start a new conversation by typing a message below, or choose a suggested prompt to get started.\n </p>\n </div>\n }\n\n <!-- Suggested Prompts (hidden in overlay mode) -->\n @if (showSuggestedPrompts && suggestedPrompts.length > 0) {\n <div class=\"suggested-prompts\">\n <div class=\"prompt-grid\">\n @for (prompt of suggestedPrompts; track prompt) {\n <div\n class=\"prompt-card\"\n (click)=\"onSuggestedPromptClicked(prompt.prompt)\"\n [class.disabled]=\"disabled\"\n >\n <div class=\"prompt-icon\">\n <i class=\"{{prompt.icon}}\"></i>\n </div>\n <div class=\"prompt-content\">\n <div class=\"prompt-title\">{{prompt.title}}</div>\n <div class=\"prompt-text\">{{prompt.prompt}}</div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Compact greeting for overlay mode -->\n @if (overlayMode) {\n <div class=\"overlay-greeting\">\n <p class=\"overlay-greeting-text\">{{ greeting }}</p>\n </div>\n }\n\n <!-- Message Input (using full mj-message-input in empty state mode) -->\n <div class=\"message-input-wrapper\">\n <mj-message-input\n [initialDraft]=\"initialDraft\"\n (initialDraftApplied)=\"initialDraftApplied.emit()\"\n (DraftStateChanged)=\"DraftStateChanged.emit($event)\"\n (ComposerBlurred)=\"ComposerBlurred.emit()\"\n [placeholder]=\"overlayMode ? 'Type a message...' : 'Type your message to start a new conversation...'\"\n [disabled]=\"disabled\"\n [currentUser]=\"currentUser\"\n [emptyStateMode]=\"true\"\n [enableMentions]=\"enableMentions\"\n [enableAgentMentions]=\"enableAgentMentions\"\n [enableEntityMentions]=\"enableEntityMentions\"\n [enableSkillCommands]=\"enableSkillCommands\"\n [enableAttachments]=\"enableAttachments\"\n [maxAttachments]=\"maxAttachments\"\n [maxAttachmentSizeBytes]=\"maxAttachmentSizeBytes\"\n [acceptedFileTypes]=\"acceptedFileTypes\"\n (emptyStateSubmit)=\"onEmptyStateSubmit($event)\">\n </mj-message-input>\n </div>\n\n <!-- Footer Tips (hidden in overlay mode) -->\n @if (!overlayMode) {\n <div class=\"tips-section\">\n @if (enableMentions) {\n <div class=\"tip-item\">\n <i class=\"fa-solid fa-at\"></i>\n <span>Use <strong>&#64;AgentName</strong> to directly invoke a specific agent</span>\n </div>\n }\n <div class=\"tip-item\">\n <i class=\"fa-solid fa-keyboard\"></i>\n <span>Press <strong>Enter</strong> to send, <strong>Shift+Enter</strong> for new line</span>\n </div>\n </div>\n }\n </div>\n</div>\n", styles: [":host {\n display: flex;\n flex: 1;\n height: 100%;\n min-height: 0;\n}\n\n.conversation-empty-state {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n width: 100%;\n padding: 2rem;\n overflow-y: auto;\n position: relative;\n}\n\n@media (max-width: 768px) {\n .conversation-empty-state {\n align-items: flex-start;\n padding: 1rem 0.75rem;\n }\n}\n\n.loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: color-mix(in srgb, var(--mj-bg-surface-card) 95%, transparent);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 100;\n animation: fadeIn 0.2s ease-in;\n}\n\n.loading-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 1rem;\n padding: 2rem;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 4px 20px color-mix(in srgb, var(--mj-text-primary) 10%, transparent);\n}\n.loading-content i {\n color: var(--mj-brand-primary);\n}\n\n.loading-message {\n font-size: 1rem;\n color: var(--mj-text-primary);\n font-weight: 500;\n margin: 0;\n}\n\n.empty-state-container {\n max-width: 800px;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 1.25rem;\n animation: fadeIn 0.3s ease-in;\n transition: opacity 0.2s ease;\n}\n.empty-state-container.loading {\n opacity: 0.4;\n pointer-events: none;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n/* Greeting Section */\n.greeting-section {\n text-align: center;\n padding: 0.5rem 0;\n}\n\n.greeting-icon {\n color: var(--mj-brand-primary);\n margin-bottom: 0.5rem;\n opacity: 0.8;\n}\n\n.greeting-title {\n font-size: 2rem;\n font-weight: 600;\n margin: 0 0 0.5rem 0;\n color: var(--mj-text-primary);\n}\n\n.greeting-subtitle {\n font-size: 1rem;\n color: var(--mj-text-secondary);\n margin: 0;\n line-height: 1.5;\n}\n\n/* Suggested Prompts */\n.suggested-prompts {\n margin: 0;\n}\n\n.prompt-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 1rem;\n}\n\n.prompt-card {\n display: flex;\n align-items: flex-start;\n gap: 1rem;\n padding: 1.25rem;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n.prompt-card:hover:not(.disabled) {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-brand-primary);\n transform: translateY(-2px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-text-primary) 10%, transparent);\n}\n.prompt-card.disabled {\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.prompt-icon {\n flex-shrink: 0;\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-radius: 8px;\n font-size: 1.2rem;\n}\n\n.prompt-content {\n flex: 1;\n min-width: 0;\n}\n\n.prompt-title {\n font-weight: 600;\n font-size: 0.95rem;\n color: var(--mj-text-primary);\n margin-bottom: 0.25rem;\n}\n\n.prompt-text {\n font-size: 0.85rem;\n color: var(--mj-text-secondary);\n line-height: 1.4;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n/* Message Input Wrapper */\n.message-input-wrapper {\n margin: 0;\n width: 100%;\n}\n\n/* Tips Section */\n.tips-section {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n padding: 0.75rem 0 0;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.tip-item {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 0.875rem;\n color: var(--mj-text-secondary);\n}\n.tip-item i {\n flex-shrink: 0;\n width: 24px;\n text-align: center;\n color: var(--mj-brand-primary);\n opacity: 0.7;\n}\n.tip-item strong {\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n/* Overlay Mode \u2014 compact layout for floating chat widget */\n.conversation-empty-state.overlay-mode {\n padding: 1rem;\n align-items: center;\n justify-content: center;\n}\n\n.overlay-mode .empty-state-container {\n gap: 0.75rem;\n max-width: 100%;\n justify-content: center;\n}\n\n.overlay-greeting {\n text-align: center;\n padding: 1rem 0 0;\n}\n\n.overlay-greeting-text {\n font-size: 1.1rem;\n font-weight: 500;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n.overlay-mode .message-input-wrapper {\n margin: 0.5rem 0;\n}\n\n/* Short-viewport fallback \u2014 keep the welcome screen scroll-free when the\n available height is reduced (browser chrome, app header, smaller laptops). */\n@media (max-height: 820px) {\n .conversation-empty-state {\n padding: 1rem;\n }\n .empty-state-container {\n gap: 0.75rem;\n }\n .greeting-section {\n padding: 0;\n }\n .greeting-icon {\n margin-bottom: 0.25rem;\n }\n .greeting-icon .fa-3x {\n font-size: 2em;\n }\n .greeting-title {\n font-size: 1.5rem;\n }\n .tips-section {\n padding: 0.5rem 0 0;\n }\n}\n\n/* Responsive Design */\n@media (max-width: 768px) {\n .empty-state-container {\n gap: 0.75rem;\n }\n .greeting-section {\n padding: 0.25rem 0;\n }\n .greeting-icon {\n font-size: 1.5rem;\n margin-bottom: 0.25rem;\n }\n .greeting-title {\n font-size: 1.1rem;\n }\n .greeting-subtitle {\n font-size: 0.75rem;\n padding: 0 0.5rem;\n }\n .prompt-grid {\n grid-template-columns: repeat(2, 1fr);\n gap: 0.5rem;\n }\n .prompt-card {\n padding: 0.5rem;\n flex-direction: column;\n gap: 0.5rem;\n }\n .prompt-icon {\n width: 28px;\n height: 28px;\n font-size: 0.85rem;\n }\n .prompt-title {\n font-size: 0.75rem;\n }\n .prompt-text {\n font-size: 0.7rem;\n -webkit-line-clamp: 1;\n }\n .message-input-wrapper {\n margin: 0.5rem 0;\n }\n .tips-section {\n display: none;\n }\n .loading-content {\n padding: 1rem;\n }\n .loading-message {\n font-size: 0.85rem;\n }\n}\n/* Small Phone adjustments */\n@media (max-width: 480px) {\n .empty-state-container {\n gap: 0.5rem;\n }\n .greeting-section {\n padding: 0.25rem 0;\n }\n .greeting-icon {\n font-size: 1.25rem;\n margin-bottom: 0.25rem;\n }\n .greeting-title {\n font-size: 1rem;\n }\n .greeting-subtitle {\n font-size: 0.7rem;\n padding: 0 0.25rem;\n }\n .prompt-grid {\n grid-template-columns: repeat(2, 1fr);\n gap: 0.4rem;\n }\n .prompt-card {\n padding: 0.4rem;\n flex-direction: column;\n gap: 0.4rem;\n }\n .prompt-icon {\n width: 24px;\n height: 24px;\n font-size: 0.75rem;\n border-radius: 4px;\n }\n .prompt-title {\n font-size: 0.7rem;\n }\n .prompt-text {\n font-size: 0.65rem;\n -webkit-line-clamp: 1;\n }\n .message-input-wrapper {\n margin: 0.4rem 0;\n }\n .tips-section {\n display: none;\n }\n .loading-content {\n padding: 1rem;\n }\n .loading-message {\n font-size: 0.8rem;\n }\n}\n"] }]
319
323
  }], () => [], { currentUser: [{
320
324
  type: Input
321
325
  }], disabled: [{
@@ -326,6 +330,12 @@ export class ConversationEmptyStateComponent {
326
330
  type: Input
327
331
  }], enableMentions: [{
328
332
  type: Input
333
+ }], enableAgentMentions: [{
334
+ type: Input
335
+ }], enableEntityMentions: [{
336
+ type: Input
337
+ }], enableSkillCommands: [{
338
+ type: Input
329
339
  }], showSuggestedPrompts: [{
330
340
  type: Input
331
341
  }], maxAttachments: [{
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-empty-state.component.js","sourceRoot":"","sources":["../../../../src/lib/components/conversation/conversation-empty-state.component.ts","../../../../src/lib/components/conversation/conversation-empty-state.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';\nimport { UserInfo } from '@memberjunction/core';\nimport { PendingAttachment } from '@memberjunction/ng-composer';\nimport { MessageInputComponent } from '../message/message-input.component';\n\n@Component({\n standalone: false,\n selector: 'mj-conversation-empty-state',\n templateUrl: './conversation-empty-state.component.html',\n styleUrls: ['./conversation-empty-state.component.css']\n})\nexport class ConversationEmptyStateComponent {\n @Input() currentUser!: UserInfo;\n @Input() disabled: boolean = false;\n @Input() showSidebarToggle: boolean = false;\n @Input() enableAttachments: boolean = false;\n @Input() enableMentions: boolean = true;\n /** Show the built-in suggested-prompt chips. Hosts that don't want the default prompt vocabulary set false. */\n @Input() showSuggestedPrompts: boolean = true;\n @Input() maxAttachments: number = 10;\n @Input() maxAttachmentSizeBytes: number = 20 * 1024 * 1024;\n @Input() acceptedFileTypes: string = 'image/*';\n\n /** Greeting text shown in the empty state. Set by host app via overlay/chat-area chain. */\n @Input() greeting: string = 'How can I help you?';\n\n /** When true (overlay context), suggested prompts are hidden to save space */\n private _overlayMode = false;\n @Input()\n set overlayMode(value: boolean) {\n this._overlayMode = value;\n if (value) {\n this.suggestedPrompts = [];\n }\n }\n get overlayMode(): boolean {\n return this._overlayMode;\n }\n\n @ViewChild(MessageInputComponent) private messageInput?: MessageInputComponent;\n\n /** Draft staged into the composer on mount (see MessageInputComponent.initialDraft). */\n @Input() initialDraft: string | null = null;\n @Output() initialDraftApplied = new EventEmitter<void>();\n /** Forwarded from the inner composer — serialized draft on every value change. */\n @Output() DraftStateChanged = new EventEmitter<string>();\n /** Forwarded from the inner composer — persist-drafts save point. */\n @Output() ComposerBlurred = new EventEmitter<void>();\n\n @Output() messageSent = new EventEmitter<{text: string; attachments: PendingAttachment[]}>();\n @Output() sidebarToggleClicked = new EventEmitter<void>();\n\n public messageText: string = '';\n\n // All available suggested prompts (business user focused)\n private allSuggestedPrompts: Array<{icon: string; title: string; prompt: string}> = [\n // Data Analysis & Insights\n {\n icon: 'fa-solid fa-clock-rotate-left',\n title: 'Recent changes',\n prompt: 'Show me what\\'s changed in my data recently'\n },\n {\n icon: 'fa-solid fa-list-check',\n title: 'Pending items',\n prompt: 'Find all my incomplete or pending items'\n },\n {\n icon: 'fa-solid fa-magnifying-glass',\n title: 'Search everything',\n prompt: 'Search everything in my system for a specific topic'\n },\n {\n icon: 'fa-solid fa-clipboard-check',\n title: 'Data quality',\n prompt: 'Analyze my data and find duplicates or inconsistencies'\n },\n {\n icon: 'fa-solid fa-inbox',\n title: 'Catch up',\n prompt: 'Create a summary of activity while I was away'\n },\n\n // Research & Information Gathering\n {\n icon: 'fa-solid fa-download',\n title: 'Research & save',\n prompt: 'Research a topic and save the findings to my database'\n },\n {\n icon: 'fa-solid fa-code-compare',\n title: 'Compare sources',\n prompt: 'Compare my data with information from the web'\n },\n {\n icon: 'fa-solid fa-folder-open',\n title: 'Search files',\n prompt: 'Search my files and documents for related information'\n },\n {\n icon: 'fa-solid fa-layer-group',\n title: 'Multi-source search',\n prompt: 'Find relevant information across all my data sources'\n },\n {\n icon: 'fa-solid fa-sitemap',\n title: 'Comprehensive research',\n prompt: 'Gather information on a topic from multiple sources'\n },\n\n // Automation & Agent Building\n {\n icon: 'fa-solid fa-calendar-day',\n title: 'Daily summaries',\n prompt: 'Create an agent to send me daily data summaries'\n },\n {\n icon: 'fa-solid fa-bell',\n title: 'Change alerts',\n prompt: 'Build an agent that monitors data changes and alerts me'\n },\n {\n icon: 'fa-solid fa-chart-column',\n title: 'Automated reports',\n prompt: 'Design an agent to aggregate data and create reports'\n },\n {\n icon: 'fa-solid fa-arrows-rotate',\n title: 'Data sync',\n prompt: 'Help me create an agent that syncs data with external systems'\n },\n {\n icon: 'fa-solid fa-file-import',\n title: 'File processor',\n prompt: 'Build an agent that processes files and updates my database'\n },\n {\n icon: 'fa-brands fa-slack',\n title: 'Slack notifications',\n prompt: 'Create an agent to post updates to Slack when data changes'\n },\n {\n icon: 'fa-solid fa-broom',\n title: 'Data cleanup',\n prompt: 'Design an agent that validates and cleans up my data regularly'\n },\n {\n icon: 'fa-solid fa-chart-pie',\n title: 'Auto visualizations',\n prompt: 'Build an agent that generates visualizations from my data'\n },\n {\n icon: 'fa-solid fa-graduation-cap',\n title: 'Research compiler',\n prompt: 'Create an agent to research topics and compile findings'\n },\n {\n icon: 'fa-solid fa-diagram-project',\n title: 'Workflow automation',\n prompt: 'Help me design a workflow agent with approval steps'\n }\n ];\n\n // Randomly selected prompts to display (refreshed on each load)\n public suggestedPrompts: Array<{icon: string; title: string; prompt: string}> = [];\n\n constructor() {\n // Select 4 random prompts on initialization\n this.suggestedPrompts = this.selectRandomPrompts(4);\n }\n\n /**\n * Select random prompts from the full list\n */\n private selectRandomPrompts(count: number): Array<{icon: string; title: string; prompt: string}> {\n const shuffled = [...this.allSuggestedPrompts].sort(() => Math.random() - 0.5);\n return shuffled.slice(0, count);\n }\n\n /**\n * Focus the message input programmatically.\n * Called by parent when the user clicks \"New Conversation\" while already on the empty state.\n */\n /**\n * Pre-addresses the composer to an agent as a resolved mention pill (delegates to\n * MessageInputComponent.InsertAgentMention). Returns false while the input isn't\n * mounted — callers may retry.\n */\n public async InsertAgentMention(agentName: string, focus: boolean = true): Promise<boolean> {\n if (!this.messageInput) {\n return false;\n }\n return this.messageInput.InsertAgentMention(agentName, focus);\n }\n\n public FocusInput(): void {\n setTimeout(() => {\n if (this.messageInput) {\n this.messageInput.inputBox?.focus();\n }\n }, 100);\n }\n\n onEmptyStateSubmit(event: {text: string; attachments: PendingAttachment[]}): void {\n this.messageSent.emit(event);\n }\n\n onSuggestedPromptClicked(prompt: string): void {\n if (!this.disabled) {\n this.messageSent.emit({ text: prompt, attachments: [] });\n }\n }\n}\n","<div class=\"conversation-empty-state\" [class.overlay-mode]=\"overlayMode\">\n <!-- Loading Overlay -->\n @if (disabled) {\n <div class=\"loading-overlay\">\n <mj-loading text=\"Creating your conversation...\" size=\"large\"></mj-loading>\n </div>\n }\n\n <div class=\"empty-state-container\" [class.loading]=\"disabled\">\n <!-- Greeting Header (hidden in overlay mode) -->\n @if (!overlayMode) {\n <div class=\"greeting-section\">\n <div class=\"greeting-icon\">\n <i class=\"fa-solid fa-comments fa-3x\"></i>\n </div>\n <h1 class=\"greeting-title\">Welcome to Conversations</h1>\n <p class=\"greeting-subtitle\">\n Start a new conversation by typing a message below, or choose a suggested prompt to get started.\n </p>\n </div>\n }\n\n <!-- Suggested Prompts (hidden in overlay mode) -->\n @if (showSuggestedPrompts && suggestedPrompts.length > 0) {\n <div class=\"suggested-prompts\">\n <div class=\"prompt-grid\">\n @for (prompt of suggestedPrompts; track prompt) {\n <div\n class=\"prompt-card\"\n (click)=\"onSuggestedPromptClicked(prompt.prompt)\"\n [class.disabled]=\"disabled\"\n >\n <div class=\"prompt-icon\">\n <i class=\"{{prompt.icon}}\"></i>\n </div>\n <div class=\"prompt-content\">\n <div class=\"prompt-title\">{{prompt.title}}</div>\n <div class=\"prompt-text\">{{prompt.prompt}}</div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Compact greeting for overlay mode -->\n @if (overlayMode) {\n <div class=\"overlay-greeting\">\n <p class=\"overlay-greeting-text\">{{ greeting }}</p>\n </div>\n }\n\n <!-- Message Input (using full mj-message-input in empty state mode) -->\n <div class=\"message-input-wrapper\">\n <mj-message-input\n [initialDraft]=\"initialDraft\"\n (initialDraftApplied)=\"initialDraftApplied.emit()\"\n (DraftStateChanged)=\"DraftStateChanged.emit($event)\"\n (ComposerBlurred)=\"ComposerBlurred.emit()\"\n [placeholder]=\"overlayMode ? 'Type a message...' : 'Type your message to start a new conversation...'\"\n [disabled]=\"disabled\"\n [currentUser]=\"currentUser\"\n [emptyStateMode]=\"true\"\n [enableMentions]=\"enableMentions\"\n [enableAttachments]=\"enableAttachments\"\n [maxAttachments]=\"maxAttachments\"\n [maxAttachmentSizeBytes]=\"maxAttachmentSizeBytes\"\n [acceptedFileTypes]=\"acceptedFileTypes\"\n (emptyStateSubmit)=\"onEmptyStateSubmit($event)\">\n </mj-message-input>\n </div>\n\n <!-- Footer Tips (hidden in overlay mode) -->\n @if (!overlayMode) {\n <div class=\"tips-section\">\n @if (enableMentions) {\n <div class=\"tip-item\">\n <i class=\"fa-solid fa-at\"></i>\n <span>Use <strong>&#64;AgentName</strong> to directly invoke a specific agent</span>\n </div>\n }\n <div class=\"tip-item\">\n <i class=\"fa-solid fa-keyboard\"></i>\n <span>Press <strong>Enter</strong> to send, <strong>Shift+Enter</strong> for new line</span>\n </div>\n </div>\n }\n </div>\n</div>\n"]}
1
+ {"version":3,"file":"conversation-empty-state.component.js","sourceRoot":"","sources":["../../../../src/lib/components/conversation/conversation-empty-state.component.ts","../../../../src/lib/components/conversation/conversation-empty-state.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';\nimport { UserInfo } from '@memberjunction/core';\nimport { PendingAttachment } from '@memberjunction/ng-composer';\nimport { MessageInputComponent } from '../message/message-input.component';\n\n@Component({\n standalone: false,\n selector: 'mj-conversation-empty-state',\n templateUrl: './conversation-empty-state.component.html',\n styleUrls: ['./conversation-empty-state.component.css']\n})\nexport class ConversationEmptyStateComponent {\n @Input() currentUser!: UserInfo;\n @Input() disabled: boolean = false;\n @Input() showSidebarToggle: boolean = false;\n @Input() enableAttachments: boolean = false;\n @Input() enableMentions: boolean = true;\n /** Per-type mention caps under enableMentions (all default true) — forwarded to the composer. */\n @Input() enableAgentMentions: boolean = true;\n @Input() enableEntityMentions: boolean = true;\n @Input() enableSkillCommands: boolean = true;\n /** Show the built-in suggested-prompt chips. Hosts that don't want the default prompt vocabulary set false. */\n @Input() showSuggestedPrompts: boolean = true;\n @Input() maxAttachments: number = 10;\n @Input() maxAttachmentSizeBytes: number = 20 * 1024 * 1024;\n @Input() acceptedFileTypes: string = 'image/*';\n\n /** Greeting text shown in the empty state. Set by host app via overlay/chat-area chain. */\n @Input() greeting: string = 'How can I help you?';\n\n /** When true (overlay context), suggested prompts are hidden to save space */\n private _overlayMode = false;\n @Input()\n set overlayMode(value: boolean) {\n this._overlayMode = value;\n if (value) {\n this.suggestedPrompts = [];\n }\n }\n get overlayMode(): boolean {\n return this._overlayMode;\n }\n\n @ViewChild(MessageInputComponent) private messageInput?: MessageInputComponent;\n\n /** Draft staged into the composer on mount (see MessageInputComponent.initialDraft). */\n @Input() initialDraft: string | null = null;\n @Output() initialDraftApplied = new EventEmitter<void>();\n /** Forwarded from the inner composer — serialized draft on every value change. */\n @Output() DraftStateChanged = new EventEmitter<string>();\n /** Forwarded from the inner composer — persist-drafts save point. */\n @Output() ComposerBlurred = new EventEmitter<void>();\n\n @Output() messageSent = new EventEmitter<{text: string; attachments: PendingAttachment[]}>();\n @Output() sidebarToggleClicked = new EventEmitter<void>();\n\n public messageText: string = '';\n\n // All available suggested prompts (business user focused)\n private allSuggestedPrompts: Array<{icon: string; title: string; prompt: string}> = [\n // Data Analysis & Insights\n {\n icon: 'fa-solid fa-clock-rotate-left',\n title: 'Recent changes',\n prompt: 'Show me what\\'s changed in my data recently'\n },\n {\n icon: 'fa-solid fa-list-check',\n title: 'Pending items',\n prompt: 'Find all my incomplete or pending items'\n },\n {\n icon: 'fa-solid fa-magnifying-glass',\n title: 'Search everything',\n prompt: 'Search everything in my system for a specific topic'\n },\n {\n icon: 'fa-solid fa-clipboard-check',\n title: 'Data quality',\n prompt: 'Analyze my data and find duplicates or inconsistencies'\n },\n {\n icon: 'fa-solid fa-inbox',\n title: 'Catch up',\n prompt: 'Create a summary of activity while I was away'\n },\n\n // Research & Information Gathering\n {\n icon: 'fa-solid fa-download',\n title: 'Research & save',\n prompt: 'Research a topic and save the findings to my database'\n },\n {\n icon: 'fa-solid fa-code-compare',\n title: 'Compare sources',\n prompt: 'Compare my data with information from the web'\n },\n {\n icon: 'fa-solid fa-folder-open',\n title: 'Search files',\n prompt: 'Search my files and documents for related information'\n },\n {\n icon: 'fa-solid fa-layer-group',\n title: 'Multi-source search',\n prompt: 'Find relevant information across all my data sources'\n },\n {\n icon: 'fa-solid fa-sitemap',\n title: 'Comprehensive research',\n prompt: 'Gather information on a topic from multiple sources'\n },\n\n // Automation & Agent Building\n {\n icon: 'fa-solid fa-calendar-day',\n title: 'Daily summaries',\n prompt: 'Create an agent to send me daily data summaries'\n },\n {\n icon: 'fa-solid fa-bell',\n title: 'Change alerts',\n prompt: 'Build an agent that monitors data changes and alerts me'\n },\n {\n icon: 'fa-solid fa-chart-column',\n title: 'Automated reports',\n prompt: 'Design an agent to aggregate data and create reports'\n },\n {\n icon: 'fa-solid fa-arrows-rotate',\n title: 'Data sync',\n prompt: 'Help me create an agent that syncs data with external systems'\n },\n {\n icon: 'fa-solid fa-file-import',\n title: 'File processor',\n prompt: 'Build an agent that processes files and updates my database'\n },\n {\n icon: 'fa-brands fa-slack',\n title: 'Slack notifications',\n prompt: 'Create an agent to post updates to Slack when data changes'\n },\n {\n icon: 'fa-solid fa-broom',\n title: 'Data cleanup',\n prompt: 'Design an agent that validates and cleans up my data regularly'\n },\n {\n icon: 'fa-solid fa-chart-pie',\n title: 'Auto visualizations',\n prompt: 'Build an agent that generates visualizations from my data'\n },\n {\n icon: 'fa-solid fa-graduation-cap',\n title: 'Research compiler',\n prompt: 'Create an agent to research topics and compile findings'\n },\n {\n icon: 'fa-solid fa-diagram-project',\n title: 'Workflow automation',\n prompt: 'Help me design a workflow agent with approval steps'\n }\n ];\n\n // Randomly selected prompts to display (refreshed on each load)\n public suggestedPrompts: Array<{icon: string; title: string; prompt: string}> = [];\n\n constructor() {\n // Select 4 random prompts on initialization\n this.suggestedPrompts = this.selectRandomPrompts(4);\n }\n\n /**\n * Select random prompts from the full list\n */\n private selectRandomPrompts(count: number): Array<{icon: string; title: string; prompt: string}> {\n const shuffled = [...this.allSuggestedPrompts].sort(() => Math.random() - 0.5);\n return shuffled.slice(0, count);\n }\n\n /**\n * Focus the message input programmatically.\n * Called by parent when the user clicks \"New Conversation\" while already on the empty state.\n */\n /**\n * Pre-addresses the composer to an agent as a resolved mention pill (delegates to\n * MessageInputComponent.InsertAgentMention). Returns false while the input isn't\n * mounted — callers may retry.\n */\n public async InsertAgentMention(agentName: string, focus: boolean = true): Promise<boolean> {\n if (!this.messageInput) {\n return false;\n }\n return this.messageInput.InsertAgentMention(agentName, focus);\n }\n\n public FocusInput(): void {\n setTimeout(() => {\n if (this.messageInput) {\n this.messageInput.inputBox?.focus();\n }\n }, 100);\n }\n\n onEmptyStateSubmit(event: {text: string; attachments: PendingAttachment[]}): void {\n this.messageSent.emit(event);\n }\n\n onSuggestedPromptClicked(prompt: string): void {\n if (!this.disabled) {\n this.messageSent.emit({ text: prompt, attachments: [] });\n }\n }\n}\n","<div class=\"conversation-empty-state\" [class.overlay-mode]=\"overlayMode\">\n <!-- Loading Overlay -->\n @if (disabled) {\n <div class=\"loading-overlay\">\n <mj-loading text=\"Creating your conversation...\" size=\"large\"></mj-loading>\n </div>\n }\n\n <div class=\"empty-state-container\" [class.loading]=\"disabled\">\n <!-- Greeting Header (hidden in overlay mode) -->\n @if (!overlayMode) {\n <div class=\"greeting-section\">\n <div class=\"greeting-icon\">\n <i class=\"fa-solid fa-comments fa-3x\"></i>\n </div>\n <h1 class=\"greeting-title\">Welcome to Conversations</h1>\n <p class=\"greeting-subtitle\">\n Start a new conversation by typing a message below, or choose a suggested prompt to get started.\n </p>\n </div>\n }\n\n <!-- Suggested Prompts (hidden in overlay mode) -->\n @if (showSuggestedPrompts && suggestedPrompts.length > 0) {\n <div class=\"suggested-prompts\">\n <div class=\"prompt-grid\">\n @for (prompt of suggestedPrompts; track prompt) {\n <div\n class=\"prompt-card\"\n (click)=\"onSuggestedPromptClicked(prompt.prompt)\"\n [class.disabled]=\"disabled\"\n >\n <div class=\"prompt-icon\">\n <i class=\"{{prompt.icon}}\"></i>\n </div>\n <div class=\"prompt-content\">\n <div class=\"prompt-title\">{{prompt.title}}</div>\n <div class=\"prompt-text\">{{prompt.prompt}}</div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Compact greeting for overlay mode -->\n @if (overlayMode) {\n <div class=\"overlay-greeting\">\n <p class=\"overlay-greeting-text\">{{ greeting }}</p>\n </div>\n }\n\n <!-- Message Input (using full mj-message-input in empty state mode) -->\n <div class=\"message-input-wrapper\">\n <mj-message-input\n [initialDraft]=\"initialDraft\"\n (initialDraftApplied)=\"initialDraftApplied.emit()\"\n (DraftStateChanged)=\"DraftStateChanged.emit($event)\"\n (ComposerBlurred)=\"ComposerBlurred.emit()\"\n [placeholder]=\"overlayMode ? 'Type a message...' : 'Type your message to start a new conversation...'\"\n [disabled]=\"disabled\"\n [currentUser]=\"currentUser\"\n [emptyStateMode]=\"true\"\n [enableMentions]=\"enableMentions\"\n [enableAgentMentions]=\"enableAgentMentions\"\n [enableEntityMentions]=\"enableEntityMentions\"\n [enableSkillCommands]=\"enableSkillCommands\"\n [enableAttachments]=\"enableAttachments\"\n [maxAttachments]=\"maxAttachments\"\n [maxAttachmentSizeBytes]=\"maxAttachmentSizeBytes\"\n [acceptedFileTypes]=\"acceptedFileTypes\"\n (emptyStateSubmit)=\"onEmptyStateSubmit($event)\">\n </mj-message-input>\n </div>\n\n <!-- Footer Tips (hidden in overlay mode) -->\n @if (!overlayMode) {\n <div class=\"tips-section\">\n @if (enableMentions) {\n <div class=\"tip-item\">\n <i class=\"fa-solid fa-at\"></i>\n <span>Use <strong>&#64;AgentName</strong> to directly invoke a specific agent</span>\n </div>\n }\n <div class=\"tip-item\">\n <i class=\"fa-solid fa-keyboard\"></i>\n <span>Press <strong>Enter</strong> to send, <strong>Shift+Enter</strong> for new line</span>\n </div>\n </div>\n }\n </div>\n</div>\n"]}
@@ -34,6 +34,21 @@ export declare class ConversationListComponent implements OnInit, OnDestroy {
34
34
  renamedConversationId: string | null;
35
35
  isSidebarPinned: boolean;
36
36
  isMobileView: boolean;
37
+ /** Show the search box in the list header. Flipping to false clears any active
38
+ * search so a hidden filter can't keep silently narrowing the list. */
39
+ set showSearch(value: boolean);
40
+ get showSearch(): boolean;
41
+ private _showSearch;
42
+ /** Show the "New Conversation" button. */
43
+ showNewConversationButton: boolean;
44
+ /** Show the ⋯ header options menu (refresh / select / group-by / hide sidebar). */
45
+ showHeaderMenu: boolean;
46
+ /** Show the collapsible Pinned / Folders / Messages section headers. When false,
47
+ * the list renders FLAT and fully expanded: folder grouping is bypassed (the
48
+ * folder tree's root drop-zone and New Folder action live in the section
49
+ * header, so a headerless tree would allow one-way folder nesting) — the
50
+ * chrome-less rendering for embedded hosts. */
51
+ showSectionHeaders: boolean;
37
52
  conversationSelected: EventEmitter<string>;
38
53
  conversationDeleted: EventEmitter<string>;
39
54
  newConversationRequested: EventEmitter<void>;
@@ -163,7 +178,7 @@ export declare class ConversationListComponent implements OnInit, OnDestroy {
163
178
  bulkDeleteConversations(): Promise<void>;
164
179
  handleConversationClick(conversation: MJConversationEntity): void;
165
180
  static ɵfac: i0.ɵɵFactoryDeclaration<ConversationListComponent, never>;
166
- static ɵcmp: i0.ɵɵComponentDeclaration<ConversationListComponent, "mj-conversation-list", never, { "environmentId": { "alias": "environmentId"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "selectedConversationId": { "alias": "selectedConversationId"; "required": false; }; "renamedConversationId": { "alias": "renamedConversationId"; "required": false; }; "isSidebarPinned": { "alias": "isSidebarPinned"; "required": false; }; "isMobileView": { "alias": "isMobileView"; "required": false; }; }, { "conversationSelected": "conversationSelected"; "conversationDeleted": "conversationDeleted"; "newConversationRequested": "newConversationRequested"; "pinSidebarRequested": "pinSidebarRequested"; "unpinSidebarRequested": "unpinSidebarRequested"; "refreshRequested": "refreshRequested"; }, never, never, false, never>;
181
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConversationListComponent, "mj-conversation-list", never, { "environmentId": { "alias": "environmentId"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "selectedConversationId": { "alias": "selectedConversationId"; "required": false; }; "renamedConversationId": { "alias": "renamedConversationId"; "required": false; }; "isSidebarPinned": { "alias": "isSidebarPinned"; "required": false; }; "isMobileView": { "alias": "isMobileView"; "required": false; }; "showSearch": { "alias": "showSearch"; "required": false; }; "showNewConversationButton": { "alias": "showNewConversationButton"; "required": false; }; "showHeaderMenu": { "alias": "showHeaderMenu"; "required": false; }; "showSectionHeaders": { "alias": "showSectionHeaders"; "required": false; }; }, { "conversationSelected": "conversationSelected"; "conversationDeleted": "conversationDeleted"; "newConversationRequested": "newConversationRequested"; "pinSidebarRequested": "pinSidebarRequested"; "unpinSidebarRequested": "unpinSidebarRequested"; "refreshRequested": "refreshRequested"; }, never, never, false, never>;
167
182
  }
168
183
  export {};
169
184
  //# sourceMappingURL=conversation-list.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-list.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/conversation/conversation-list.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation-list.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/conversation/conversation-list.component.ts"],"names":[],"mappings":"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"}