@memberjunction/ng-conversations 2.127.0 → 2.129.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 (43) hide show
  1. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +2 -1
  2. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
  3. package/dist/lib/components/conversation/conversation-chat-area.component.js +166 -138
  4. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
  5. package/dist/lib/components/conversation/conversation-list.component.d.ts +11 -1
  6. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
  7. package/dist/lib/components/conversation/conversation-list.component.js +225 -119
  8. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
  9. package/dist/lib/components/message/agent-response-form.component.d.ts +18 -0
  10. package/dist/lib/components/message/agent-response-form.component.d.ts.map +1 -1
  11. package/dist/lib/components/message/agent-response-form.component.js +149 -26
  12. package/dist/lib/components/message/agent-response-form.component.js.map +1 -1
  13. package/dist/lib/components/message/form-question.component.js +3 -3
  14. package/dist/lib/components/message/message-input.component.d.ts +4 -1
  15. package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
  16. package/dist/lib/components/message/message-input.component.js +78 -61
  17. package/dist/lib/components/message/message-input.component.js.map +1 -1
  18. package/dist/lib/components/message/message-item.component.d.ts +7 -2
  19. package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
  20. package/dist/lib/components/message/message-item.component.js +56 -13
  21. package/dist/lib/components/message/message-item.component.js.map +1 -1
  22. package/dist/lib/components/message/message-list.component.d.ts +3 -1
  23. package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
  24. package/dist/lib/components/message/message-list.component.js +7 -3
  25. package/dist/lib/components/message/message-list.component.js.map +1 -1
  26. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +7 -1
  27. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -1
  28. package/dist/lib/components/sidebar/conversation-sidebar.component.js +28 -6
  29. package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -1
  30. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +42 -0
  31. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
  32. package/dist/lib/components/workspace/conversation-workspace.component.js +253 -40
  33. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
  34. package/dist/lib/models/conversation-state.model.d.ts +2 -1
  35. package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
  36. package/dist/lib/services/conversation-agent.service.d.ts +2 -1
  37. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
  38. package/dist/lib/services/conversation-agent.service.js.map +1 -1
  39. package/dist/lib/services/mention-autocomplete.service.d.ts +1 -1
  40. package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -1
  41. package/dist/lib/services/mention-parser.service.d.ts +1 -1
  42. package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
  43. package/package.json +17 -17
@@ -10,110 +10,155 @@ import * as i5 from "@angular/forms";
10
10
  import * as i6 from "@progress/kendo-angular-dialog";
11
11
  import * as i7 from "../notification/notification-badge.component";
12
12
  const _forTrack0 = ($index, $item) => $item.ID;
13
+ function ConversationListComponent_Conditional_4_Conditional_3_Conditional_5_Conditional_0_Template(rf, ctx) { if (rf & 1) {
14
+ const _r4 = i0.ɵɵgetCurrentView();
15
+ i0.ɵɵelementStart(0, "button", 19);
16
+ i0.ɵɵlistener("click", function ConversationListComponent_Conditional_4_Conditional_3_Conditional_5_Conditional_0_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onUnpinSidebarClick($event)); });
17
+ i0.ɵɵelement(1, "i", 22);
18
+ i0.ɵɵelementStart(2, "span");
19
+ i0.ɵɵtext(3, "Unpin Sidebar");
20
+ i0.ɵɵelementEnd()();
21
+ } }
22
+ function ConversationListComponent_Conditional_4_Conditional_3_Conditional_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
23
+ const _r5 = i0.ɵɵgetCurrentView();
24
+ i0.ɵɵelementStart(0, "button", 19);
25
+ i0.ɵɵlistener("click", function ConversationListComponent_Conditional_4_Conditional_3_Conditional_5_Conditional_1_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onPinSidebarClick($event)); });
26
+ i0.ɵɵelement(1, "i", 23);
27
+ i0.ɵɵelementStart(2, "span");
28
+ i0.ɵɵtext(3, "Pin Sidebar");
29
+ i0.ɵɵelementEnd()();
30
+ } }
31
+ function ConversationListComponent_Conditional_4_Conditional_3_Conditional_5_Template(rf, ctx) { if (rf & 1) {
32
+ i0.ɵɵtemplate(0, ConversationListComponent_Conditional_4_Conditional_3_Conditional_5_Conditional_0_Template, 4, 0, "button", 21)(1, ConversationListComponent_Conditional_4_Conditional_3_Conditional_5_Conditional_1_Template, 4, 0, "button", 21);
33
+ } if (rf & 2) {
34
+ const ctx_r1 = i0.ɵɵnextContext(3);
35
+ i0.ɵɵconditional(ctx_r1.isSidebarPinned ? 0 : 1);
36
+ } }
37
+ function ConversationListComponent_Conditional_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
38
+ const _r3 = i0.ɵɵgetCurrentView();
39
+ i0.ɵɵelementStart(0, "div", 18)(1, "button", 19);
40
+ i0.ɵɵlistener("click", function ConversationListComponent_Conditional_4_Conditional_3_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onSelectConversationsClick($event)); });
41
+ i0.ɵɵelement(2, "i", 20);
42
+ i0.ɵɵelementStart(3, "span");
43
+ i0.ɵɵtext(4, "Select Conversations");
44
+ i0.ɵɵelementEnd()();
45
+ i0.ɵɵtemplate(5, ConversationListComponent_Conditional_4_Conditional_3_Conditional_5_Template, 2, 1);
46
+ i0.ɵɵelementEnd();
47
+ } if (rf & 2) {
48
+ const ctx_r1 = i0.ɵɵnextContext(2);
49
+ i0.ɵɵadvance(5);
50
+ i0.ɵɵconditional(!ctx_r1.isMobileView ? 5 : -1);
51
+ } }
13
52
  function ConversationListComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
14
53
  const _r1 = i0.ɵɵgetCurrentView();
15
- i0.ɵɵelementStart(0, "button", 16);
16
- i0.ɵɵlistener("click", function ConversationListComponent_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleSelectionMode()); });
17
- i0.ɵɵelement(1, "i", 17);
54
+ i0.ɵɵelementStart(0, "div", 4)(1, "button", 16);
55
+ i0.ɵɵlistener("click", function ConversationListComponent_Conditional_4_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleHeaderMenu($event)); });
56
+ i0.ɵɵelement(2, "i", 17);
57
+ i0.ɵɵelementEnd();
58
+ i0.ɵɵtemplate(3, ConversationListComponent_Conditional_4_Conditional_3_Template, 6, 1, "div", 18);
18
59
  i0.ɵɵelementEnd();
60
+ } if (rf & 2) {
61
+ const ctx_r1 = i0.ɵɵnextContext();
62
+ i0.ɵɵadvance(3);
63
+ i0.ɵɵconditional(ctx_r1.isHeaderMenuOpen ? 3 : -1);
19
64
  } }
20
65
  function ConversationListComponent_Conditional_10_For_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
21
- const _r6 = i0.ɵɵgetCurrentView();
22
- i0.ɵɵelementStart(0, "div", 20)(1, "input", 29);
23
- i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_1_Template_input_click_1_listener($event) { i0.ɵɵrestoreView(_r6); const conversation_r5 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); $event.stopPropagation(); return i0.ɵɵresetView(ctx_r1.toggleConversationSelection(conversation_r5.ID)); });
66
+ const _r9 = i0.ɵɵgetCurrentView();
67
+ i0.ɵɵelementStart(0, "div", 26)(1, "input", 35);
68
+ i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_1_Template_input_click_1_listener($event) { i0.ɵɵrestoreView(_r9); const conversation_r8 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); $event.stopPropagation(); return i0.ɵɵresetView(ctx_r1.toggleConversationSelection(conversation_r8.ID)); });
24
69
  i0.ɵɵelementEnd()();
25
70
  } if (rf & 2) {
26
- const conversation_r5 = i0.ɵɵnextContext().$implicit;
71
+ const conversation_r8 = i0.ɵɵnextContext().$implicit;
27
72
  const ctx_r1 = i0.ɵɵnextContext(2);
28
73
  i0.ɵɵadvance();
29
- i0.ɵɵproperty("checked", ctx_r1.selectedConversationIds.has(conversation_r5.ID));
74
+ i0.ɵɵproperty("checked", ctx_r1.selectedConversationIds.has(conversation_r8.ID));
30
75
  } }
31
76
  function ConversationListComponent_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
32
- i0.ɵɵelementStart(0, "div", 22);
33
- i0.ɵɵelement(1, "i", 30);
77
+ i0.ɵɵelementStart(0, "div", 28);
78
+ i0.ɵɵelement(1, "i", 36);
34
79
  i0.ɵɵelementEnd();
35
80
  } }
36
81
  function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template(rf, ctx) { if (rf & 1) {
37
- const _r8 = i0.ɵɵgetCurrentView();
38
- i0.ɵɵelementStart(0, "div", 34);
39
- i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r8); return i0.ɵɵresetView($event.stopPropagation()); });
40
- i0.ɵɵelementStart(1, "button", 35);
41
- i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r8); const conversation_r5 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.togglePin(conversation_r5, $event)); });
42
- i0.ɵɵelement(2, "i", 36);
82
+ const _r11 = i0.ɵɵgetCurrentView();
83
+ i0.ɵɵelementStart(0, "div", 40);
84
+ i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r11); return i0.ɵɵresetView($event.stopPropagation()); });
85
+ i0.ɵɵelementStart(1, "button", 41);
86
+ i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r11); const conversation_r8 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.togglePin(conversation_r8, $event)); });
87
+ i0.ɵɵelement(2, "i", 23);
43
88
  i0.ɵɵelementStart(3, "span");
44
89
  i0.ɵɵtext(4, "Unpin");
45
90
  i0.ɵɵelementEnd()();
46
- i0.ɵɵelementStart(5, "button", 35);
47
- i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r8); const conversation_r5 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); ctx_r1.renameConversation(conversation_r5); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
48
- i0.ɵɵelement(6, "i", 37);
91
+ i0.ɵɵelementStart(5, "button", 41);
92
+ i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r11); const conversation_r8 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); ctx_r1.renameConversation(conversation_r8); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
93
+ i0.ɵɵelement(6, "i", 42);
49
94
  i0.ɵɵelementStart(7, "span");
50
95
  i0.ɵɵtext(8, "Rename");
51
96
  i0.ɵɵelementEnd()();
52
- i0.ɵɵelement(9, "div", 38);
53
- i0.ɵɵelementStart(10, "button", 39);
54
- i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r8); const conversation_r5 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); ctx_r1.deleteConversation(conversation_r5); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
55
- i0.ɵɵelement(11, "i", 40);
97
+ i0.ɵɵelement(9, "div", 43);
98
+ i0.ɵɵelementStart(10, "button", 44);
99
+ i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r11); const conversation_r8 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); ctx_r1.deleteConversation(conversation_r8); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
100
+ i0.ɵɵelement(11, "i", 45);
56
101
  i0.ɵɵelementStart(12, "span");
57
102
  i0.ɵɵtext(13, "Delete");
58
103
  i0.ɵɵelementEnd()()();
59
104
  } }
60
105
  function ConversationListComponent_Conditional_10_For_9_Conditional_11_Template(rf, ctx) { if (rf & 1) {
61
- const _r7 = i0.ɵɵgetCurrentView();
62
- i0.ɵɵelementStart(0, "div", 28)(1, "button", 31);
63
- i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r7); const conversation_r5 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleMenu(conversation_r5.ID, $event)); });
64
- i0.ɵɵelement(2, "i", 32);
106
+ const _r10 = i0.ɵɵgetCurrentView();
107
+ i0.ɵɵelementStart(0, "div", 34)(1, "button", 37);
108
+ i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Conditional_11_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r10); const conversation_r8 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleMenu(conversation_r8.ID, $event)); });
109
+ i0.ɵɵelement(2, "i", 38);
65
110
  i0.ɵɵelementEnd();
66
- i0.ɵɵtemplate(3, ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template, 14, 0, "div", 33);
111
+ i0.ɵɵtemplate(3, ConversationListComponent_Conditional_10_For_9_Conditional_11_Conditional_3_Template, 14, 0, "div", 39);
67
112
  i0.ɵɵelementEnd();
68
113
  } if (rf & 2) {
69
- const conversation_r5 = i0.ɵɵnextContext().$implicit;
114
+ const conversation_r8 = i0.ɵɵnextContext().$implicit;
70
115
  const ctx_r1 = i0.ɵɵnextContext(2);
71
116
  i0.ɵɵadvance(3);
72
- i0.ɵɵconditional(ctx_r1.openMenuConversationId === conversation_r5.ID ? 3 : -1);
117
+ i0.ɵɵconditional(ctx_r1.openMenuConversationId === conversation_r8.ID ? 3 : -1);
73
118
  } }
74
119
  function ConversationListComponent_Conditional_10_For_9_Template(rf, ctx) { if (rf & 1) {
75
- const _r4 = i0.ɵɵgetCurrentView();
76
- i0.ɵɵelementStart(0, "div", 19);
77
- i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Template_div_click_0_listener() { const conversation_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.handleConversationClick(conversation_r5)); });
78
- i0.ɵɵtemplate(1, ConversationListComponent_Conditional_10_For_9_Conditional_1_Template, 2, 1, "div", 20);
79
- i0.ɵɵelementStart(2, "div", 21);
80
- i0.ɵɵtemplate(3, ConversationListComponent_Conditional_10_For_9_Conditional_3_Template, 2, 0, "div", 22);
81
- i0.ɵɵelementStart(4, "div", 23);
82
- i0.ɵɵelement(5, "mj-notification-badge", 24);
120
+ const _r7 = i0.ɵɵgetCurrentView();
121
+ i0.ɵɵelementStart(0, "div", 25);
122
+ i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_For_9_Template_div_click_0_listener() { const conversation_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.handleConversationClick(conversation_r8)); });
123
+ i0.ɵɵtemplate(1, ConversationListComponent_Conditional_10_For_9_Conditional_1_Template, 2, 1, "div", 26);
124
+ i0.ɵɵelementStart(2, "div", 27);
125
+ i0.ɵɵtemplate(3, ConversationListComponent_Conditional_10_For_9_Conditional_3_Template, 2, 0, "div", 28);
126
+ i0.ɵɵelementStart(4, "div", 29);
127
+ i0.ɵɵelement(5, "mj-notification-badge", 30);
83
128
  i0.ɵɵelementEnd()();
84
- i0.ɵɵelementStart(6, "div", 25)(7, "div", 26);
129
+ i0.ɵɵelementStart(6, "div", 31)(7, "div", 32);
85
130
  i0.ɵɵtext(8);
86
131
  i0.ɵɵelementEnd();
87
- i0.ɵɵelementStart(9, "div", 27);
132
+ i0.ɵɵelementStart(9, "div", 33);
88
133
  i0.ɵɵtext(10);
89
134
  i0.ɵɵelementEnd()();
90
- i0.ɵɵtemplate(11, ConversationListComponent_Conditional_10_For_9_Conditional_11_Template, 4, 1, "div", 28);
135
+ i0.ɵɵtemplate(11, ConversationListComponent_Conditional_10_For_9_Conditional_11_Template, 4, 1, "div", 34);
91
136
  i0.ɵɵelementEnd();
92
137
  } if (rf & 2) {
93
- const conversation_r5 = ctx.$implicit;
138
+ const conversation_r8 = ctx.$implicit;
94
139
  const ctx_r1 = i0.ɵɵnextContext(2);
95
- i0.ɵɵclassProp("active", conversation_r5.ID === ctx_r1.selectedConversationId)("renamed", conversation_r5.ID === ctx_r1.renamedConversationId);
140
+ i0.ɵɵclassProp("active", conversation_r8.ID === ctx_r1.selectedConversationId)("renamed", conversation_r8.ID === ctx_r1.renamedConversationId);
96
141
  i0.ɵɵadvance();
97
142
  i0.ɵɵconditional(ctx_r1.isSelectionMode ? 1 : -1);
98
143
  i0.ɵɵadvance(2);
99
- i0.ɵɵconditional(ctx_r1.hasActiveTasks(conversation_r5.ID) ? 3 : -1);
144
+ i0.ɵɵconditional(ctx_r1.hasActiveTasks(conversation_r8.ID) ? 3 : -1);
100
145
  i0.ɵɵadvance(2);
101
- i0.ɵɵproperty("conversationId", conversation_r5.ID);
146
+ i0.ɵɵproperty("conversationId", conversation_r8.ID);
102
147
  i0.ɵɵadvance();
103
- i0.ɵɵproperty("title", conversation_r5.Name + (conversation_r5.Description ? "\n" + conversation_r5.Description : ""));
148
+ i0.ɵɵproperty("title", conversation_r8.Name + (conversation_r8.Description ? "\n" + conversation_r8.Description : ""));
104
149
  i0.ɵɵadvance(2);
105
- i0.ɵɵtextInterpolate(conversation_r5.Name);
150
+ i0.ɵɵtextInterpolate(conversation_r8.Name);
106
151
  i0.ɵɵadvance(2);
107
- i0.ɵɵtextInterpolate(conversation_r5.Description);
152
+ i0.ɵɵtextInterpolate(conversation_r8.Description);
108
153
  i0.ɵɵadvance();
109
154
  i0.ɵɵconditional(!ctx_r1.isSelectionMode ? 11 : -1);
110
155
  } }
111
156
  function ConversationListComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
112
- const _r3 = i0.ɵɵgetCurrentView();
157
+ const _r6 = i0.ɵɵgetCurrentView();
113
158
  i0.ɵɵelementStart(0, "div", 8)(1, "div", 10);
114
- i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.togglePinned()); });
159
+ i0.ɵɵlistener("click", function ConversationListComponent_Conditional_10_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.togglePinned()); });
115
160
  i0.ɵɵelementStart(2, "div", 11);
116
- i0.ɵɵelement(3, "i", 12)(4, "i", 18);
161
+ i0.ɵɵelement(3, "i", 12)(4, "i", 24);
117
162
  i0.ɵɵelementStart(5, "span");
118
163
  i0.ɵɵtext(6, "Pinned");
119
164
  i0.ɵɵelementEnd()()();
@@ -130,124 +175,124 @@ function ConversationListComponent_Conditional_10_Template(rf, ctx) { if (rf & 1
130
175
  i0.ɵɵrepeater(ctx_r1.pinnedConversations);
131
176
  } }
132
177
  function ConversationListComponent_For_19_Conditional_1_Template(rf, ctx) { if (rf & 1) {
133
- const _r11 = i0.ɵɵgetCurrentView();
134
- i0.ɵɵelementStart(0, "div", 20)(1, "input", 29);
135
- i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_1_Template_input_click_1_listener($event) { i0.ɵɵrestoreView(_r11); const conversation_r10 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); $event.stopPropagation(); return i0.ɵɵresetView(ctx_r1.toggleConversationSelection(conversation_r10.ID)); });
178
+ const _r14 = i0.ɵɵgetCurrentView();
179
+ i0.ɵɵelementStart(0, "div", 26)(1, "input", 35);
180
+ i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_1_Template_input_click_1_listener($event) { i0.ɵɵrestoreView(_r14); const conversation_r13 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); $event.stopPropagation(); return i0.ɵɵresetView(ctx_r1.toggleConversationSelection(conversation_r13.ID)); });
136
181
  i0.ɵɵelementEnd()();
137
182
  } if (rf & 2) {
138
- const conversation_r10 = i0.ɵɵnextContext().$implicit;
183
+ const conversation_r13 = i0.ɵɵnextContext().$implicit;
139
184
  const ctx_r1 = i0.ɵɵnextContext();
140
185
  i0.ɵɵadvance();
141
- i0.ɵɵproperty("checked", ctx_r1.selectedConversationIds.has(conversation_r10.ID));
186
+ i0.ɵɵproperty("checked", ctx_r1.selectedConversationIds.has(conversation_r13.ID));
142
187
  } }
143
188
  function ConversationListComponent_For_19_Conditional_3_Template(rf, ctx) { if (rf & 1) {
144
- i0.ɵɵelementStart(0, "div", 22);
145
- i0.ɵɵelement(1, "i", 30);
189
+ i0.ɵɵelementStart(0, "div", 28);
190
+ i0.ɵɵelement(1, "i", 36);
146
191
  i0.ɵɵelementEnd();
147
192
  } }
148
193
  function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template(rf, ctx) { if (rf & 1) {
149
- const _r13 = i0.ɵɵgetCurrentView();
150
- i0.ɵɵelementStart(0, "div", 34);
151
- i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r13); return i0.ɵɵresetView($event.stopPropagation()); });
152
- i0.ɵɵelementStart(1, "button", 35);
153
- i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r13); const conversation_r10 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.togglePin(conversation_r10, $event)); });
154
- i0.ɵɵelement(2, "i", 36);
194
+ const _r16 = i0.ɵɵgetCurrentView();
195
+ i0.ɵɵelementStart(0, "div", 40);
196
+ i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r16); return i0.ɵɵresetView($event.stopPropagation()); });
197
+ i0.ɵɵelementStart(1, "button", 41);
198
+ i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r16); const conversation_r13 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.togglePin(conversation_r13, $event)); });
199
+ i0.ɵɵelement(2, "i", 23);
155
200
  i0.ɵɵelementStart(3, "span");
156
201
  i0.ɵɵtext(4, "Pin");
157
202
  i0.ɵɵelementEnd()();
158
- i0.ɵɵelementStart(5, "button", 35);
159
- i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r13); const conversation_r10 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.renameConversation(conversation_r10); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
160
- i0.ɵɵelement(6, "i", 37);
203
+ i0.ɵɵelementStart(5, "button", 41);
204
+ i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r16); const conversation_r13 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.renameConversation(conversation_r13); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
205
+ i0.ɵɵelement(6, "i", 42);
161
206
  i0.ɵɵelementStart(7, "span");
162
207
  i0.ɵɵtext(8, "Rename");
163
208
  i0.ɵɵelementEnd()();
164
- i0.ɵɵelement(9, "div", 38);
165
- i0.ɵɵelementStart(10, "button", 39);
166
- i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r13); const conversation_r10 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.deleteConversation(conversation_r10); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
167
- i0.ɵɵelement(11, "i", 40);
209
+ i0.ɵɵelement(9, "div", 43);
210
+ i0.ɵɵelementStart(10, "button", 44);
211
+ i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Conditional_3_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r16); const conversation_r13 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.deleteConversation(conversation_r13); return i0.ɵɵresetView(ctx_r1.closeMenu()); });
212
+ i0.ɵɵelement(11, "i", 45);
168
213
  i0.ɵɵelementStart(12, "span");
169
214
  i0.ɵɵtext(13, "Delete");
170
215
  i0.ɵɵelementEnd()()();
171
216
  } }
172
217
  function ConversationListComponent_For_19_Conditional_11_Template(rf, ctx) { if (rf & 1) {
173
- const _r12 = i0.ɵɵgetCurrentView();
174
- i0.ɵɵelementStart(0, "div", 28)(1, "button", 31);
175
- i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r12); const conversation_r10 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleMenu(conversation_r10.ID, $event)); });
176
- i0.ɵɵelement(2, "i", 32);
218
+ const _r15 = i0.ɵɵgetCurrentView();
219
+ i0.ɵɵelementStart(0, "div", 34)(1, "button", 37);
220
+ i0.ɵɵlistener("click", function ConversationListComponent_For_19_Conditional_11_Template_button_click_1_listener($event) { i0.ɵɵrestoreView(_r15); const conversation_r13 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleMenu(conversation_r13.ID, $event)); });
221
+ i0.ɵɵelement(2, "i", 38);
177
222
  i0.ɵɵelementEnd();
178
- i0.ɵɵtemplate(3, ConversationListComponent_For_19_Conditional_11_Conditional_3_Template, 14, 0, "div", 33);
223
+ i0.ɵɵtemplate(3, ConversationListComponent_For_19_Conditional_11_Conditional_3_Template, 14, 0, "div", 39);
179
224
  i0.ɵɵelementEnd();
180
225
  } if (rf & 2) {
181
- const conversation_r10 = i0.ɵɵnextContext().$implicit;
226
+ const conversation_r13 = i0.ɵɵnextContext().$implicit;
182
227
  const ctx_r1 = i0.ɵɵnextContext();
183
228
  i0.ɵɵadvance(3);
184
- i0.ɵɵconditional(ctx_r1.openMenuConversationId === conversation_r10.ID ? 3 : -1);
229
+ i0.ɵɵconditional(ctx_r1.openMenuConversationId === conversation_r13.ID ? 3 : -1);
185
230
  } }
186
231
  function ConversationListComponent_For_19_Template(rf, ctx) { if (rf & 1) {
187
- const _r9 = i0.ɵɵgetCurrentView();
188
- i0.ɵɵelementStart(0, "div", 19);
189
- i0.ɵɵlistener("click", function ConversationListComponent_For_19_Template_div_click_0_listener() { const conversation_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleConversationClick(conversation_r10)); });
190
- i0.ɵɵtemplate(1, ConversationListComponent_For_19_Conditional_1_Template, 2, 1, "div", 20);
191
- i0.ɵɵelementStart(2, "div", 21);
192
- i0.ɵɵtemplate(3, ConversationListComponent_For_19_Conditional_3_Template, 2, 0, "div", 22);
193
- i0.ɵɵelementStart(4, "div", 23);
194
- i0.ɵɵelement(5, "mj-notification-badge", 24);
232
+ const _r12 = i0.ɵɵgetCurrentView();
233
+ i0.ɵɵelementStart(0, "div", 25);
234
+ i0.ɵɵlistener("click", function ConversationListComponent_For_19_Template_div_click_0_listener() { const conversation_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleConversationClick(conversation_r13)); });
235
+ i0.ɵɵtemplate(1, ConversationListComponent_For_19_Conditional_1_Template, 2, 1, "div", 26);
236
+ i0.ɵɵelementStart(2, "div", 27);
237
+ i0.ɵɵtemplate(3, ConversationListComponent_For_19_Conditional_3_Template, 2, 0, "div", 28);
238
+ i0.ɵɵelementStart(4, "div", 29);
239
+ i0.ɵɵelement(5, "mj-notification-badge", 30);
195
240
  i0.ɵɵelementEnd()();
196
- i0.ɵɵelementStart(6, "div", 25)(7, "div", 26);
241
+ i0.ɵɵelementStart(6, "div", 31)(7, "div", 32);
197
242
  i0.ɵɵtext(8);
198
243
  i0.ɵɵelementEnd();
199
- i0.ɵɵelementStart(9, "div", 27);
244
+ i0.ɵɵelementStart(9, "div", 33);
200
245
  i0.ɵɵtext(10);
201
246
  i0.ɵɵelementEnd()();
202
- i0.ɵɵtemplate(11, ConversationListComponent_For_19_Conditional_11_Template, 4, 1, "div", 28);
247
+ i0.ɵɵtemplate(11, ConversationListComponent_For_19_Conditional_11_Template, 4, 1, "div", 34);
203
248
  i0.ɵɵelementEnd();
204
249
  } if (rf & 2) {
205
- const conversation_r10 = ctx.$implicit;
250
+ const conversation_r13 = ctx.$implicit;
206
251
  const ctx_r1 = i0.ɵɵnextContext();
207
- i0.ɵɵclassProp("active", conversation_r10.ID === ctx_r1.selectedConversationId)("renamed", conversation_r10.ID === ctx_r1.renamedConversationId);
252
+ i0.ɵɵclassProp("active", conversation_r13.ID === ctx_r1.selectedConversationId)("renamed", conversation_r13.ID === ctx_r1.renamedConversationId);
208
253
  i0.ɵɵadvance();
209
254
  i0.ɵɵconditional(ctx_r1.isSelectionMode ? 1 : -1);
210
255
  i0.ɵɵadvance(2);
211
- i0.ɵɵconditional(ctx_r1.hasActiveTasks(conversation_r10.ID) ? 3 : -1);
256
+ i0.ɵɵconditional(ctx_r1.hasActiveTasks(conversation_r13.ID) ? 3 : -1);
212
257
  i0.ɵɵadvance(2);
213
- i0.ɵɵproperty("conversationId", conversation_r10.ID);
258
+ i0.ɵɵproperty("conversationId", conversation_r13.ID);
214
259
  i0.ɵɵadvance();
215
- i0.ɵɵproperty("title", conversation_r10.Name + (conversation_r10.Description ? "\n" + conversation_r10.Description : ""));
260
+ i0.ɵɵproperty("title", conversation_r13.Name + (conversation_r13.Description ? "\n" + conversation_r13.Description : ""));
216
261
  i0.ɵɵadvance(2);
217
- i0.ɵɵtextInterpolate(conversation_r10.Name);
262
+ i0.ɵɵtextInterpolate(conversation_r13.Name);
218
263
  i0.ɵɵadvance(2);
219
- i0.ɵɵtextInterpolate(conversation_r10.Description);
264
+ i0.ɵɵtextInterpolate(conversation_r13.Description);
220
265
  i0.ɵɵadvance();
221
266
  i0.ɵɵconditional(!ctx_r1.isSelectionMode ? 11 : -1);
222
267
  } }
223
268
  function ConversationListComponent_Conditional_20_Conditional_4_Template(rf, ctx) { if (rf & 1) {
224
- const _r15 = i0.ɵɵgetCurrentView();
225
- i0.ɵɵelementStart(0, "button", 47);
226
- i0.ɵɵlistener("click", function ConversationListComponent_Conditional_20_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.selectAll()); });
269
+ const _r18 = i0.ɵɵgetCurrentView();
270
+ i0.ɵɵelementStart(0, "button", 52);
271
+ i0.ɵɵlistener("click", function ConversationListComponent_Conditional_20_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.selectAll()); });
227
272
  i0.ɵɵtext(1, "Select All");
228
273
  i0.ɵɵelementEnd();
229
274
  } }
230
275
  function ConversationListComponent_Conditional_20_Conditional_5_Template(rf, ctx) { if (rf & 1) {
231
- const _r16 = i0.ɵɵgetCurrentView();
232
- i0.ɵɵelementStart(0, "button", 47);
233
- i0.ɵɵlistener("click", function ConversationListComponent_Conditional_20_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.deselectAll()); });
276
+ const _r19 = i0.ɵɵgetCurrentView();
277
+ i0.ɵɵelementStart(0, "button", 52);
278
+ i0.ɵɵlistener("click", function ConversationListComponent_Conditional_20_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.deselectAll()); });
234
279
  i0.ɵɵtext(1, "Deselect All");
235
280
  i0.ɵɵelementEnd();
236
281
  } }
237
282
  function ConversationListComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
238
- const _r14 = i0.ɵɵgetCurrentView();
239
- i0.ɵɵelementStart(0, "div", 15)(1, "div", 41)(2, "span", 42);
283
+ const _r17 = i0.ɵɵgetCurrentView();
284
+ i0.ɵɵelementStart(0, "div", 15)(1, "div", 46)(2, "span", 47);
240
285
  i0.ɵɵtext(3);
241
286
  i0.ɵɵelementEnd();
242
- i0.ɵɵtemplate(4, ConversationListComponent_Conditional_20_Conditional_4_Template, 2, 0, "button", 43)(5, ConversationListComponent_Conditional_20_Conditional_5_Template, 2, 0, "button", 43);
287
+ i0.ɵɵtemplate(4, ConversationListComponent_Conditional_20_Conditional_4_Template, 2, 0, "button", 48)(5, ConversationListComponent_Conditional_20_Conditional_5_Template, 2, 0, "button", 48);
243
288
  i0.ɵɵelementEnd();
244
- i0.ɵɵelementStart(6, "div", 44)(7, "button", 45);
245
- i0.ɵɵlistener("click", function ConversationListComponent_Conditional_20_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.bulkDeleteConversations()); });
246
- i0.ɵɵelement(8, "i", 40);
289
+ i0.ɵɵelementStart(6, "div", 49)(7, "button", 50);
290
+ i0.ɵɵlistener("click", function ConversationListComponent_Conditional_20_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.bulkDeleteConversations()); });
291
+ i0.ɵɵelement(8, "i", 45);
247
292
  i0.ɵɵtext(9);
248
293
  i0.ɵɵelementEnd();
249
- i0.ɵɵelementStart(10, "button", 46);
250
- i0.ɵɵlistener("click", function ConversationListComponent_Conditional_20_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleSelectionMode()); });
294
+ i0.ɵɵelementStart(10, "button", 51);
295
+ i0.ɵɵlistener("click", function ConversationListComponent_Conditional_20_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleSelectionMode()); });
251
296
  i0.ɵɵtext(11, " Cancel ");
252
297
  i0.ɵɵelementEnd()()();
253
298
  } if (rf & 2) {
@@ -271,8 +316,12 @@ export class ConversationListComponent {
271
316
  currentUser;
272
317
  selectedConversationId = null;
273
318
  renamedConversationId = null;
319
+ isSidebarPinned = true; // Whether sidebar is pinned (stays open after selection)
320
+ isMobileView = false; // Whether we're on mobile (no pin options)
274
321
  conversationSelected = new EventEmitter();
275
322
  newConversationRequested = new EventEmitter();
323
+ pinSidebarRequested = new EventEmitter(); // Request to pin sidebar
324
+ unpinSidebarRequested = new EventEmitter(); // Request to unpin (collapse) sidebar
276
325
  directMessagesExpanded = true;
277
326
  pinnedExpanded = true;
278
327
  openMenuConversationId = null;
@@ -280,6 +329,7 @@ export class ConversationListComponent {
280
329
  isSelectionMode = false;
281
330
  selectedConversationIds = new Set();
282
331
  searchQuery = '';
332
+ isHeaderMenuOpen = false;
283
333
  destroy$ = new Subject();
284
334
  constructor(conversationData, dialogService, notificationService, activeTasksService, cdr) {
285
335
  this.conversationData = conversationData;
@@ -316,10 +366,35 @@ export class ConversationListComponent {
316
366
  this.destroy$.complete();
317
367
  }
318
368
  onDocumentClick() {
319
- // Close menu when clicking outside
369
+ // Close menus when clicking outside
320
370
  if (this.openMenuConversationId) {
321
371
  this.closeMenu();
322
372
  }
373
+ if (this.isHeaderMenuOpen) {
374
+ this.closeHeaderMenu();
375
+ }
376
+ }
377
+ toggleHeaderMenu(event) {
378
+ event.stopPropagation();
379
+ this.isHeaderMenuOpen = !this.isHeaderMenuOpen;
380
+ }
381
+ closeHeaderMenu() {
382
+ this.isHeaderMenuOpen = false;
383
+ }
384
+ onSelectConversationsClick(event) {
385
+ event.stopPropagation();
386
+ this.toggleSelectionMode();
387
+ this.closeHeaderMenu();
388
+ }
389
+ onPinSidebarClick(event) {
390
+ event.stopPropagation();
391
+ this.closeHeaderMenu();
392
+ this.pinSidebarRequested.emit();
393
+ }
394
+ onUnpinSidebarClick(event) {
395
+ event.stopPropagation();
396
+ this.closeHeaderMenu();
397
+ this.unpinSidebarRequested.emit();
323
398
  }
324
399
  toggleDirectMessages() {
325
400
  this.directMessagesExpanded = !this.directMessagesExpanded;
@@ -464,11 +539,11 @@ export class ConversationListComponent {
464
539
  static ɵfac = function ConversationListComponent_Factory(t) { return new (t || ConversationListComponent)(i0.ɵɵdirectiveInject(i1.ConversationDataService), i0.ɵɵdirectiveInject(i2.DialogService), i0.ɵɵdirectiveInject(i3.NotificationService), i0.ɵɵdirectiveInject(i4.ActiveTasksService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
465
540
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ConversationListComponent, selectors: [["mj-conversation-list"]], hostBindings: function ConversationListComponent_HostBindings(rf, ctx) { if (rf & 1) {
466
541
  i0.ɵɵlistener("click", function ConversationListComponent_click_HostBindingHandler() { return ctx.onDocumentClick(); }, false, i0.ɵɵresolveDocument);
467
- } }, inputs: { environmentId: "environmentId", currentUser: "currentUser", selectedConversationId: "selectedConversationId", renamedConversationId: "renamedConversationId" }, outputs: { conversationSelected: "conversationSelected", newConversationRequested: "newConversationRequested" }, decls: 21, vars: 8, consts: [["kendoDialogContainer", "", 1, "conversation-list"], [1, "list-header"], [1, "header-top"], ["type", "text", "placeholder", "Search conversations...", 1, "search-input", 3, "ngModelChange", "ngModel"], ["title", "Select conversations", 1, "btn-select"], ["title", "New Conversation", 1, "btn-new-conversation", 3, "click"], [1, "fas", "fa-plus"], [1, "list-content"], [1, "sidebar-section", "pinned-section"], [1, "sidebar-section"], [1, "section-header", 3, "click"], [1, "section-title"], [1, "fas", "fa-chevron-right"], [1, "chat-list"], [1, "conversation-item", 3, "active", "renamed"], [1, "selection-action-bar"], ["title", "Select conversations", 1, "btn-select", 3, "click"], [1, "fas", "fa-check-square"], [1, "fas", "fa-thumbtack", "section-icon"], [1, "conversation-item", 3, "click"], [1, "conversation-checkbox"], [1, "conversation-icon-wrapper"], [1, "conversation-icon", "has-tasks"], [1, "badge-overlay"], [3, "conversationId"], [1, "conversation-info", 3, "title"], [1, "conversation-name"], [1, "conversation-preview"], [1, "conversation-actions"], ["type", "checkbox", 3, "click", "checked"], [1, "fas", "fa-spinner", "fa-pulse"], ["title", "More options", 1, "menu-btn", 3, "click"], [1, "fas", "fa-ellipsis"], [1, "context-menu"], [1, "context-menu", 3, "click"], [1, "menu-item", 3, "click"], [1, "fas", "fa-thumbtack"], [1, "fas", "fa-edit"], [1, "menu-divider"], [1, "menu-item", "danger", 3, "click"], [1, "fas", "fa-trash"], [1, "selection-info"], [1, "selection-count"], [1, "link-btn"], [1, "selection-actions"], [1, "btn-delete-bulk", 3, "click", "disabled"], [1, "btn-cancel", 3, "click"], [1, "link-btn", 3, "click"]], template: function ConversationListComponent_Template(rf, ctx) { if (rf & 1) {
542
+ } }, inputs: { environmentId: "environmentId", currentUser: "currentUser", selectedConversationId: "selectedConversationId", renamedConversationId: "renamedConversationId", isSidebarPinned: "isSidebarPinned", isMobileView: "isMobileView" }, outputs: { conversationSelected: "conversationSelected", newConversationRequested: "newConversationRequested", pinSidebarRequested: "pinSidebarRequested", unpinSidebarRequested: "unpinSidebarRequested" }, decls: 21, vars: 8, consts: [["kendoDialogContainer", "", 1, "conversation-list"], [1, "list-header"], [1, "header-top"], ["type", "text", "placeholder", "Search conversations...", 1, "search-input", 3, "ngModelChange", "ngModel"], [1, "header-menu-container"], ["title", "New Conversation", 1, "btn-new-conversation", 3, "click"], [1, "fas", "fa-plus"], [1, "list-content"], [1, "sidebar-section", "pinned-section"], [1, "sidebar-section"], [1, "section-header", 3, "click"], [1, "section-title"], [1, "fas", "fa-chevron-right"], [1, "chat-list"], [1, "conversation-item", 3, "active", "renamed"], [1, "selection-action-bar"], ["title", "Options", 1, "btn-menu", 3, "click"], [1, "fas", "fa-ellipsis-v"], [1, "header-dropdown-menu"], [1, "dropdown-item", 3, "click"], [1, "fas", "fa-check-square"], [1, "dropdown-item"], [1, "fas", "fa-thumbtack-slash"], [1, "fas", "fa-thumbtack"], [1, "fas", "fa-thumbtack", "section-icon"], [1, "conversation-item", 3, "click"], [1, "conversation-checkbox"], [1, "conversation-icon-wrapper"], [1, "conversation-icon", "has-tasks"], [1, "badge-overlay"], [3, "conversationId"], [1, "conversation-info", 3, "title"], [1, "conversation-name"], [1, "conversation-preview"], [1, "conversation-actions"], ["type", "checkbox", 3, "click", "checked"], [1, "fas", "fa-spinner", "fa-pulse"], ["title", "More options", 1, "menu-btn", 3, "click"], [1, "fas", "fa-ellipsis"], [1, "context-menu"], [1, "context-menu", 3, "click"], [1, "menu-item", 3, "click"], [1, "fas", "fa-edit"], [1, "menu-divider"], [1, "menu-item", "danger", 3, "click"], [1, "fas", "fa-trash"], [1, "selection-info"], [1, "selection-count"], [1, "link-btn"], [1, "selection-actions"], [1, "btn-delete-bulk", 3, "click", "disabled"], [1, "btn-cancel", 3, "click"], [1, "link-btn", 3, "click"]], template: function ConversationListComponent_Template(rf, ctx) { if (rf & 1) {
468
543
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "input", 3);
469
544
  i0.ɵɵtwoWayListener("ngModelChange", function ConversationListComponent_Template_input_ngModelChange_3_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.searchQuery, $event) || (ctx.searchQuery = $event); return $event; });
470
545
  i0.ɵɵelementEnd();
471
- i0.ɵɵtemplate(4, ConversationListComponent_Conditional_4_Template, 2, 0, "button", 4);
546
+ i0.ɵɵtemplate(4, ConversationListComponent_Conditional_4_Template, 4, 1, "div", 4);
472
547
  i0.ɵɵelementEnd()();
473
548
  i0.ɵɵelementStart(5, "button", 5);
474
549
  i0.ɵɵlistener("click", function ConversationListComponent_Template_button_click_5_listener() { return ctx.createNewConversation(); });
@@ -505,7 +580,7 @@ export class ConversationListComponent {
505
580
  i0.ɵɵrepeater(ctx.unpinnedConversations);
506
581
  i0.ɵɵadvance(2);
507
582
  i0.ɵɵconditional(ctx.isSelectionMode ? 20 : -1);
508
- } }, dependencies: [i5.DefaultValueAccessor, i5.NgControlStatus, i5.NgModel, i6.DialogContainerDirective, i7.NotificationBadgeComponent], styles: ["[_nghost-%COMP%] { display: block; height: 100%; }\n .conversation-list[_ngcontent-%COMP%] { display: flex; flex-direction: column; height: 100%; background: #092340; }\n .list-header[_ngcontent-%COMP%] { padding: 8px; border-bottom: 1px solid rgba(255,255,255,0.1); }\n .search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px;\n background: rgba(255,255,255,0.1);\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: white;\n font-size: 13px;\n transition: all 0.2s;\n }\n .search-input[_ngcontent-%COMP%]::placeholder { color: rgba(255,255,255,0.5); }\n .search-input[_ngcontent-%COMP%]:focus { outline: none; background: rgba(255,255,255,0.15); border-color: #0076B6; }\n .btn-new-conversation[_ngcontent-%COMP%] {\n width: calc(100% - 16px);\n margin: 8px;\n padding: 10px;\n background: #0076B6;\n color: white;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: background 0.2s;\n flex-shrink: 0;\n }\n .btn-new-conversation[_ngcontent-%COMP%]:hover { background: #005A8C; }\n .btn-new-conversation[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 14px; }\n .list-content[_ngcontent-%COMP%] { flex: 1; min-height: 0; overflow-y: auto; padding: 4px 0; }\n\n \n\n .sidebar-section[_ngcontent-%COMP%] { margin-bottom: 20px; }\n .pinned-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] {\n background: rgba(255, 193, 7, 0.08);\n border-radius: 4px;\n margin: 0 4px;\n }\n .pinned-section[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%] .section-icon[_ngcontent-%COMP%] {\n color: #FFC107;\n font-size: 11px;\n margin-left: 2px;\n }\n .section-header[_ngcontent-%COMP%] {\n padding: 4px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.7);\n font-size: 13px;\n font-weight: 500;\n transition: color 0.2s;\n user-select: none;\n }\n .section-header[_ngcontent-%COMP%]:hover { color: white; }\n .section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n transition: transform 0.2s;\n }\n .section-header.expanded[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { transform: rotate(90deg); }\n .chat-list[_ngcontent-%COMP%] {\n padding: 4px 0;\n display: none;\n }\n .chat-list.expanded[_ngcontent-%COMP%] { display: block; }\n\n .conversation-item[_ngcontent-%COMP%] {\n padding: 6px 5px 6px 16px;\n cursor: pointer;\n display: flex;\n gap: 8px;\n align-items: center;\n transition: all 0.2s;\n position: relative;\n color: rgba(255,255,255,0.7);\n font-size: 14px;\n min-height: 45px;\n }\n .conversation-item[_ngcontent-%COMP%]:hover { background: rgba(255,255,255,0.08); color: white; }\n .conversation-item[_ngcontent-%COMP%]:hover .conversation-actions[_ngcontent-%COMP%] { opacity: 1; }\n .conversation-item.active[_ngcontent-%COMP%] { background: #0076B6; color: white; }\n .conversation-icon-wrapper[_ngcontent-%COMP%] { position: relative; flex-shrink: 0; }\n .conversation-icon[_ngcontent-%COMP%] { font-size: 12px; width: 16px; text-align: center; }\n .conversation-icon.has-tasks[_ngcontent-%COMP%] { color: #fb923c; }\n .badge-overlay[_ngcontent-%COMP%] { position: absolute; top: -4px; right: -4px; }\n .conversation-info[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n .conversation-name[_ngcontent-%COMP%] { font-weight: 600; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .conversation-preview[_ngcontent-%COMP%] { font-size: 12px; color: rgba(255,255,255,0.5); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .conversation-item.active[_ngcontent-%COMP%] .conversation-preview[_ngcontent-%COMP%] { color: rgba(255,255,255,0.8); }\n .conversation-meta[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 4px; flex-shrink: 0; }\n\n \n\n .project-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n margin-left: auto;\n background-color: rgba(255, 255, 255, 0.1);\n color: rgba(255, 255, 255, 0.6);\n white-space: nowrap;\n max-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .conversation-item[_ngcontent-%COMP%]:hover .project-badge[_ngcontent-%COMP%] {\n background-color: rgba(255, 255, 255, 0.15);\n color: rgba(255, 255, 255, 0.8);\n }\n .conversation-item.active[_ngcontent-%COMP%] .project-badge[_ngcontent-%COMP%] {\n background-color: rgba(255, 255, 255, 0.2);\n color: white;\n }\n\n .conversation-actions[_ngcontent-%COMP%] {\n position: absolute;\n right: 5px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s;\n z-index: 10;\n }\n .conversation-item[_ngcontent-%COMP%]:hover .conversation-actions[_ngcontent-%COMP%] { opacity: 1; pointer-events: auto; }\n .conversation-item.active[_ngcontent-%COMP%] .conversation-actions[_ngcontent-%COMP%] { opacity: 1; pointer-events: auto; }\n .conversation-actions[_ngcontent-%COMP%] > *[_ngcontent-%COMP%] { pointer-events: auto; }\n .pinned-icon[_ngcontent-%COMP%] { color: #AAE7FD; font-size: 12px; }\n\n \n\n .task-indicator[_ngcontent-%COMP%] {\n color: #fb923c;\n font-size: 12px;\n margin-right: 8px;\n flex-shrink: 0;\n animation: _ngcontent-%COMP%_pulse-glow 2s ease-in-out infinite;\n }\n @keyframes _ngcontent-%COMP%_pulse-glow {\n 0%, 100% {\n opacity: 1;\n filter: drop-shadow(0 0 2px #fb923c);\n }\n 50% {\n opacity: 0.6;\n filter: drop-shadow(0 0 4px #fb923c);\n }\n }\n .conversation-item.active[_ngcontent-%COMP%] .task-indicator[_ngcontent-%COMP%] {\n color: #fbbf24;\n }\n\n .menu-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n background: #092340 !important;\n border: none;\n cursor: pointer;\n transition: all 0.2s;\n }\n .menu-btn[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.15) !important;\n color: white;\n }\n .conversation-item.active[_ngcontent-%COMP%] .menu-btn[_ngcontent-%COMP%] {\n background: #005A8C !important;\n color: white;\n }\n .menu-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 14px; }\n\n .context-menu[_ngcontent-%COMP%] {\n position: absolute;\n top: 100%;\n right: 0;\n margin-top: 4px;\n min-width: 160px;\n background: #0A2742;\n border: 1px solid rgba(255,255,255,0.15);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n z-index: 1001;\n overflow: hidden;\n pointer-events: auto;\n }\n\n .menu-item[_ngcontent-%COMP%] {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 14px;\n background: transparent;\n border: none;\n color: rgba(255,255,255,0.85);\n font-size: 14px;\n text-align: left;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .menu-item[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .menu-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n font-size: 13px;\n color: rgba(255,255,255,0.6);\n }\n\n .menu-item[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: white;\n }\n\n .menu-item.danger[_ngcontent-%COMP%] {\n color: rgba(239, 68, 68, 0.9);\n }\n\n .menu-item.danger[_ngcontent-%COMP%]:hover {\n background: rgba(239, 68, 68, 0.15);\n color: #ff6b6b;\n }\n\n .menu-item.danger[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: rgba(239, 68, 68, 0.8);\n }\n\n .menu-item.danger[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: #ff6b6b;\n }\n\n .menu-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: rgba(255,255,255,0.1);\n margin: 4px 0;\n }\n\n \n\n .conversation-item.renamed[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_renameHighlight 1500ms cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n @keyframes _ngcontent-%COMP%_renameHighlight {\n 0% {\n background: linear-gradient(90deg, rgba(59, 130, 246, 0.4), rgba(147, 51, 234, 0.4));\n transform: scale(1.03);\n box-shadow: 0 0 20px rgba(59, 130, 246, 0.5);\n }\n 25% {\n background: linear-gradient(90deg, rgba(59, 130, 246, 0.35), rgba(147, 51, 234, 0.35));\n box-shadow: 0 0 15px rgba(59, 130, 246, 0.4);\n }\n 50% {\n background: linear-gradient(90deg, rgba(16, 185, 129, 0.3), rgba(59, 130, 246, 0.3));\n transform: scale(1.02);\n box-shadow: 0 0 10px rgba(16, 185, 129, 0.3);\n }\n 75% {\n background: linear-gradient(90deg, rgba(16, 185, 129, 0.2), rgba(59, 130, 246, 0.2));\n box-shadow: 0 0 5px rgba(16, 185, 129, 0.2);\n }\n 100% {\n background: transparent;\n transform: scale(1);\n box-shadow: none;\n }\n }\n\n \n\n .header-top[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n }\n\n .btn-select[_ngcontent-%COMP%] {\n padding: 8px 12px;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n font-size: 13px;\n font-weight: 500;\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n transition: all 0.2s;\n white-space: nowrap;\n flex-shrink: 0;\n }\n\n .btn-select[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n border-color: rgba(255,255,255,0.3);\n }\n\n .conversation-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n margin-right: 8px;\n flex-shrink: 0;\n }\n\n .conversation-checkbox[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n accent-color: #0076B6;\n }\n\n .selection-action-bar[_ngcontent-%COMP%] {\n position: sticky;\n bottom: 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: #0A2742;\n border-top: 1px solid rgba(255,255,255,0.15);\n gap: 12px;\n flex-wrap: wrap;\n flex-shrink: 0;\n }\n\n .selection-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n color: rgba(255,255,255,0.9);\n font-size: 14px;\n font-weight: 500;\n flex: 1 1 auto;\n min-width: 150px;\n }\n\n .selection-count[_ngcontent-%COMP%] {\n color: white;\n }\n\n .link-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: #AAE7FD;\n cursor: pointer;\n font-size: 13px;\n text-decoration: underline;\n padding: 0;\n transition: color 0.2s;\n }\n\n .link-btn[_ngcontent-%COMP%]:hover {\n color: white;\n }\n\n .selection-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex: 0 0 auto;\n }\n\n .btn-cancel[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all 0.2s;\n }\n\n .btn-cancel[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: #DC2626;\n border: none;\n border-radius: 6px;\n color: white;\n cursor: pointer;\n font-size: 13px;\n font-weight: 600;\n transition: all 0.2s;\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #B91C1C;\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n }"] });
583
+ } }, dependencies: [i5.DefaultValueAccessor, i5.NgControlStatus, i5.NgModel, i6.DialogContainerDirective, i7.NotificationBadgeComponent], styles: ["[_nghost-%COMP%] { display: block; height: 100%; }\n .conversation-list[_ngcontent-%COMP%] { display: flex; flex-direction: column; height: 100%; background: #092340; }\n .list-header[_ngcontent-%COMP%] { padding: 8px; border-bottom: 1px solid rgba(255,255,255,0.1); }\n .search-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 12px;\n background: rgba(255,255,255,0.1);\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: white;\n font-size: 13px;\n transition: all 0.2s;\n }\n .search-input[_ngcontent-%COMP%]::placeholder { color: rgba(255,255,255,0.5); }\n .search-input[_ngcontent-%COMP%]:focus { outline: none; background: rgba(255,255,255,0.15); border-color: #0076B6; }\n .btn-new-conversation[_ngcontent-%COMP%] {\n width: calc(100% - 16px);\n margin: 8px;\n padding: 10px;\n background: #0076B6;\n color: white;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: background 0.2s;\n flex-shrink: 0;\n }\n .btn-new-conversation[_ngcontent-%COMP%]:hover { background: #005A8C; }\n .btn-new-conversation[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 14px; }\n .list-content[_ngcontent-%COMP%] { flex: 1; min-height: 0; overflow-y: auto; padding: 4px 0; }\n\n \n\n .sidebar-section[_ngcontent-%COMP%] { margin-bottom: 20px; }\n .pinned-section[_ngcontent-%COMP%] .section-header[_ngcontent-%COMP%] {\n background: rgba(255, 193, 7, 0.08);\n border-radius: 4px;\n margin: 0 4px;\n }\n .pinned-section[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%] .section-icon[_ngcontent-%COMP%] {\n color: #FFC107;\n font-size: 11px;\n margin-left: 2px;\n }\n .section-header[_ngcontent-%COMP%] {\n padding: 4px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.7);\n font-size: 13px;\n font-weight: 500;\n transition: color 0.2s;\n user-select: none;\n }\n .section-header[_ngcontent-%COMP%]:hover { color: white; }\n .section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n transition: transform 0.2s;\n }\n .section-header.expanded[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { transform: rotate(90deg); }\n .chat-list[_ngcontent-%COMP%] {\n padding: 4px 0;\n display: none;\n }\n .chat-list.expanded[_ngcontent-%COMP%] { display: block; }\n\n .conversation-item[_ngcontent-%COMP%] {\n padding: 6px 5px 6px 16px;\n cursor: pointer;\n display: flex;\n gap: 8px;\n align-items: center;\n transition: all 0.2s;\n position: relative;\n color: rgba(255,255,255,0.7);\n font-size: 14px;\n min-height: 45px;\n }\n .conversation-item[_ngcontent-%COMP%]:hover { background: rgba(255,255,255,0.08); color: white; }\n .conversation-item[_ngcontent-%COMP%]:hover .conversation-actions[_ngcontent-%COMP%] { opacity: 1; }\n .conversation-item.active[_ngcontent-%COMP%] { background: #0076B6; color: white; }\n .conversation-icon-wrapper[_ngcontent-%COMP%] { position: relative; flex-shrink: 0; }\n .conversation-icon[_ngcontent-%COMP%] { font-size: 12px; width: 16px; text-align: center; }\n .conversation-icon.has-tasks[_ngcontent-%COMP%] { color: #fb923c; }\n .badge-overlay[_ngcontent-%COMP%] { position: absolute; top: -4px; right: -4px; }\n .conversation-info[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n .conversation-name[_ngcontent-%COMP%] { font-weight: 600; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .conversation-preview[_ngcontent-%COMP%] { font-size: 12px; color: rgba(255,255,255,0.5); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .conversation-item.active[_ngcontent-%COMP%] .conversation-preview[_ngcontent-%COMP%] { color: rgba(255,255,255,0.8); }\n .conversation-meta[_ngcontent-%COMP%] { display: flex; align-items: center; gap: 4px; flex-shrink: 0; }\n\n \n\n .project-badge[_ngcontent-%COMP%] {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n margin-left: auto;\n background-color: rgba(255, 255, 255, 0.1);\n color: rgba(255, 255, 255, 0.6);\n white-space: nowrap;\n max-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .conversation-item[_ngcontent-%COMP%]:hover .project-badge[_ngcontent-%COMP%] {\n background-color: rgba(255, 255, 255, 0.15);\n color: rgba(255, 255, 255, 0.8);\n }\n .conversation-item.active[_ngcontent-%COMP%] .project-badge[_ngcontent-%COMP%] {\n background-color: rgba(255, 255, 255, 0.2);\n color: white;\n }\n\n .conversation-actions[_ngcontent-%COMP%] {\n position: absolute;\n right: 5px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s;\n z-index: 10;\n }\n .conversation-item[_ngcontent-%COMP%]:hover .conversation-actions[_ngcontent-%COMP%] { opacity: 1; pointer-events: auto; }\n .conversation-item.active[_ngcontent-%COMP%] .conversation-actions[_ngcontent-%COMP%] { opacity: 1; pointer-events: auto; }\n .conversation-actions[_ngcontent-%COMP%] > *[_ngcontent-%COMP%] { pointer-events: auto; }\n .pinned-icon[_ngcontent-%COMP%] { color: #AAE7FD; font-size: 12px; }\n\n \n\n .task-indicator[_ngcontent-%COMP%] {\n color: #fb923c;\n font-size: 12px;\n margin-right: 8px;\n flex-shrink: 0;\n animation: _ngcontent-%COMP%_pulse-glow 2s ease-in-out infinite;\n }\n @keyframes _ngcontent-%COMP%_pulse-glow {\n 0%, 100% {\n opacity: 1;\n filter: drop-shadow(0 0 2px #fb923c);\n }\n 50% {\n opacity: 0.6;\n filter: drop-shadow(0 0 4px #fb923c);\n }\n }\n .conversation-item.active[_ngcontent-%COMP%] .task-indicator[_ngcontent-%COMP%] {\n color: #fbbf24;\n }\n\n .menu-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n background: #092340 !important;\n border: none;\n cursor: pointer;\n transition: all 0.2s;\n }\n .menu-btn[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.15) !important;\n color: white;\n }\n .conversation-item.active[_ngcontent-%COMP%] .menu-btn[_ngcontent-%COMP%] {\n background: #005A8C !important;\n color: white;\n }\n .menu-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 14px; }\n\n .context-menu[_ngcontent-%COMP%] {\n position: absolute;\n top: 100%;\n right: 0;\n margin-top: 4px;\n min-width: 160px;\n background: #0A2742;\n border: 1px solid rgba(255,255,255,0.15);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n z-index: 1001;\n overflow: hidden;\n pointer-events: auto;\n }\n\n .menu-item[_ngcontent-%COMP%] {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 14px;\n background: transparent;\n border: none;\n color: rgba(255,255,255,0.85);\n font-size: 14px;\n text-align: left;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .menu-item[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .menu-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n font-size: 13px;\n color: rgba(255,255,255,0.6);\n }\n\n .menu-item[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: white;\n }\n\n .menu-item.danger[_ngcontent-%COMP%] {\n color: rgba(239, 68, 68, 0.9);\n }\n\n .menu-item.danger[_ngcontent-%COMP%]:hover {\n background: rgba(239, 68, 68, 0.15);\n color: #ff6b6b;\n }\n\n .menu-item.danger[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: rgba(239, 68, 68, 0.8);\n }\n\n .menu-item.danger[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: #ff6b6b;\n }\n\n .menu-divider[_ngcontent-%COMP%] {\n height: 1px;\n background: rgba(255,255,255,0.1);\n margin: 4px 0;\n }\n\n \n\n .conversation-item.renamed[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_renameHighlight 1500ms cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n @keyframes _ngcontent-%COMP%_renameHighlight {\n 0% {\n background: linear-gradient(90deg, rgba(59, 130, 246, 0.4), rgba(147, 51, 234, 0.4));\n transform: scale(1.03);\n box-shadow: 0 0 20px rgba(59, 130, 246, 0.5);\n }\n 25% {\n background: linear-gradient(90deg, rgba(59, 130, 246, 0.35), rgba(147, 51, 234, 0.35));\n box-shadow: 0 0 15px rgba(59, 130, 246, 0.4);\n }\n 50% {\n background: linear-gradient(90deg, rgba(16, 185, 129, 0.3), rgba(59, 130, 246, 0.3));\n transform: scale(1.02);\n box-shadow: 0 0 10px rgba(16, 185, 129, 0.3);\n }\n 75% {\n background: linear-gradient(90deg, rgba(16, 185, 129, 0.2), rgba(59, 130, 246, 0.2));\n box-shadow: 0 0 5px rgba(16, 185, 129, 0.2);\n }\n 100% {\n background: transparent;\n transform: scale(1);\n box-shadow: none;\n }\n }\n\n \n\n .header-top[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n }\n\n \n\n .header-menu-container[_ngcontent-%COMP%] {\n position: relative;\n flex-shrink: 0;\n }\n\n .btn-menu[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n transition: all 0.2s;\n }\n\n .btn-menu[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n border-color: rgba(255,255,255,0.3);\n }\n\n .header-dropdown-menu[_ngcontent-%COMP%] {\n position: absolute;\n top: calc(100% + 4px);\n right: 0;\n min-width: 200px;\n background: #0A2742;\n border: 1px solid rgba(255,255,255,0.15);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n z-index: 1001;\n overflow: hidden;\n padding: 4px 0;\n }\n\n .header-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%] {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n background: transparent;\n border: none;\n color: rgba(255,255,255,0.85);\n font-size: 13px;\n text-align: left;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .header-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .header-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n width: 16px;\n font-size: 13px;\n color: rgba(255,255,255,0.6);\n }\n\n .header-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%]:hover i[_ngcontent-%COMP%] {\n color: white;\n }\n\n .header-dropdown-menu[_ngcontent-%COMP%] .dropdown-item[_ngcontent-%COMP%] .shortcut[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 11px;\n color: rgba(255,255,255,0.4);\n font-family: system-ui, -apple-system, sans-serif;\n }\n\n .btn-select[_ngcontent-%COMP%] {\n padding: 8px 12px;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n font-size: 13px;\n font-weight: 500;\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n transition: all 0.2s;\n white-space: nowrap;\n flex-shrink: 0;\n }\n\n .btn-select[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n border-color: rgba(255,255,255,0.3);\n }\n\n .conversation-checkbox[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n margin-right: 8px;\n flex-shrink: 0;\n }\n\n .conversation-checkbox[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n accent-color: #0076B6;\n }\n\n .selection-action-bar[_ngcontent-%COMP%] {\n position: sticky;\n bottom: 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: #0A2742;\n border-top: 1px solid rgba(255,255,255,0.15);\n gap: 12px;\n flex-wrap: wrap;\n flex-shrink: 0;\n }\n\n .selection-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n color: rgba(255,255,255,0.9);\n font-size: 14px;\n font-weight: 500;\n flex: 1 1 auto;\n min-width: 150px;\n }\n\n .selection-count[_ngcontent-%COMP%] {\n color: white;\n }\n\n .link-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: #AAE7FD;\n cursor: pointer;\n font-size: 13px;\n text-decoration: underline;\n padding: 0;\n transition: color 0.2s;\n }\n\n .link-btn[_ngcontent-%COMP%]:hover {\n color: white;\n }\n\n .selection-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n flex: 0 0 auto;\n }\n\n .btn-cancel[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all 0.2s;\n }\n\n .btn-cancel[_ngcontent-%COMP%]:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: #DC2626;\n border: none;\n border-radius: 6px;\n color: white;\n cursor: pointer;\n font-size: 13px;\n font-weight: 600;\n transition: all 0.2s;\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #B91C1C;\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-delete-bulk[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n }"] });
509
584
  }
510
585
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConversationListComponent, [{
511
586
  type: Component,
@@ -519,9 +594,32 @@ export class ConversationListComponent {
519
594
  placeholder="Search conversations..."
520
595
  [(ngModel)]="searchQuery">
521
596
  @if (!isSelectionMode) {
522
- <button class="btn-select" (click)="toggleSelectionMode()" title="Select conversations">
523
- <i class="fas fa-check-square"></i>
524
- </button>
597
+ <div class="header-menu-container">
598
+ <button class="btn-menu" (click)="toggleHeaderMenu($event)" title="Options">
599
+ <i class="fas fa-ellipsis-v"></i>
600
+ </button>
601
+ @if (isHeaderMenuOpen) {
602
+ <div class="header-dropdown-menu">
603
+ <button class="dropdown-item" (click)="onSelectConversationsClick($event)">
604
+ <i class="fas fa-check-square"></i>
605
+ <span>Select Conversations</span>
606
+ </button>
607
+ @if (!isMobileView) {
608
+ @if (isSidebarPinned) {
609
+ <button class="dropdown-item" (click)="onUnpinSidebarClick($event)">
610
+ <i class="fas fa-thumbtack-slash"></i>
611
+ <span>Unpin Sidebar</span>
612
+ </button>
613
+ } @else {
614
+ <button class="dropdown-item" (click)="onPinSidebarClick($event)">
615
+ <i class="fas fa-thumbtack"></i>
616
+ <span>Pin Sidebar</span>
617
+ </button>
618
+ }
619
+ }
620
+ </div>
621
+ }
622
+ </div>
525
623
  }
526
624
  </div>
527
625
  </div>
@@ -687,7 +785,7 @@ export class ConversationListComponent {
687
785
  </div>
688
786
  }
689
787
  </div>
690
- `, styles: ["\n :host { display: block; height: 100%; }\n .conversation-list { display: flex; flex-direction: column; height: 100%; background: #092340; }\n .list-header { padding: 8px; border-bottom: 1px solid rgba(255,255,255,0.1); }\n .search-input {\n width: 100%;\n padding: 8px 12px;\n background: rgba(255,255,255,0.1);\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: white;\n font-size: 13px;\n transition: all 0.2s;\n }\n .search-input::placeholder { color: rgba(255,255,255,0.5); }\n .search-input:focus { outline: none; background: rgba(255,255,255,0.15); border-color: #0076B6; }\n .btn-new-conversation {\n width: calc(100% - 16px);\n margin: 8px;\n padding: 10px;\n background: #0076B6;\n color: white;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: background 0.2s;\n flex-shrink: 0;\n }\n .btn-new-conversation:hover { background: #005A8C; }\n .btn-new-conversation i { font-size: 14px; }\n .list-content { flex: 1; min-height: 0; overflow-y: auto; padding: 4px 0; }\n\n /* Collapsible Sections */\n .sidebar-section { margin-bottom: 20px; }\n .pinned-section .section-header {\n background: rgba(255, 193, 7, 0.08);\n border-radius: 4px;\n margin: 0 4px;\n }\n .pinned-section .section-title .section-icon {\n color: #FFC107;\n font-size: 11px;\n margin-left: 2px;\n }\n .section-header {\n padding: 4px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.7);\n font-size: 13px;\n font-weight: 500;\n transition: color 0.2s;\n user-select: none;\n }\n .section-header:hover { color: white; }\n .section-title {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n .section-title i {\n font-size: 10px;\n transition: transform 0.2s;\n }\n .section-header.expanded .section-title i { transform: rotate(90deg); }\n .chat-list {\n padding: 4px 0;\n display: none;\n }\n .chat-list.expanded { display: block; }\n\n .conversation-item {\n padding: 6px 5px 6px 16px;\n cursor: pointer;\n display: flex;\n gap: 8px;\n align-items: center;\n transition: all 0.2s;\n position: relative;\n color: rgba(255,255,255,0.7);\n font-size: 14px;\n min-height: 45px;\n }\n .conversation-item:hover { background: rgba(255,255,255,0.08); color: white; }\n .conversation-item:hover .conversation-actions { opacity: 1; }\n .conversation-item.active { background: #0076B6; color: white; }\n .conversation-icon-wrapper { position: relative; flex-shrink: 0; }\n .conversation-icon { font-size: 12px; width: 16px; text-align: center; }\n .conversation-icon.has-tasks { color: #fb923c; }\n .badge-overlay { position: absolute; top: -4px; right: -4px; }\n .conversation-info { flex: 1; min-width: 0; }\n .conversation-name { font-weight: 600; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .conversation-preview { font-size: 12px; color: rgba(255,255,255,0.5); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .conversation-item.active .conversation-preview { color: rgba(255,255,255,0.8); }\n .conversation-meta { display: flex; align-items: center; gap: 4px; flex-shrink: 0; }\n\n /* Project Badge */\n .project-badge {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n margin-left: auto;\n background-color: rgba(255, 255, 255, 0.1);\n color: rgba(255, 255, 255, 0.6);\n white-space: nowrap;\n max-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .conversation-item:hover .project-badge {\n background-color: rgba(255, 255, 255, 0.15);\n color: rgba(255, 255, 255, 0.8);\n }\n .conversation-item.active .project-badge {\n background-color: rgba(255, 255, 255, 0.2);\n color: white;\n }\n\n .conversation-actions {\n position: absolute;\n right: 5px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s;\n z-index: 10;\n }\n .conversation-item:hover .conversation-actions { opacity: 1; pointer-events: auto; }\n .conversation-item.active .conversation-actions { opacity: 1; pointer-events: auto; }\n .conversation-actions > * { pointer-events: auto; }\n .pinned-icon { color: #AAE7FD; font-size: 12px; }\n\n /* Task Indicator */\n .task-indicator {\n color: #fb923c;\n font-size: 12px;\n margin-right: 8px;\n flex-shrink: 0;\n animation: pulse-glow 2s ease-in-out infinite;\n }\n @keyframes pulse-glow {\n 0%, 100% {\n opacity: 1;\n filter: drop-shadow(0 0 2px #fb923c);\n }\n 50% {\n opacity: 0.6;\n filter: drop-shadow(0 0 4px #fb923c);\n }\n }\n .conversation-item.active .task-indicator {\n color: #fbbf24;\n }\n\n .menu-btn {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n background: #092340 !important;\n border: none;\n cursor: pointer;\n transition: all 0.2s;\n }\n .menu-btn:hover {\n background: rgba(255,255,255,0.15) !important;\n color: white;\n }\n .conversation-item.active .menu-btn {\n background: #005A8C !important;\n color: white;\n }\n .menu-btn i { font-size: 14px; }\n\n .context-menu {\n position: absolute;\n top: 100%;\n right: 0;\n margin-top: 4px;\n min-width: 160px;\n background: #0A2742;\n border: 1px solid rgba(255,255,255,0.15);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n z-index: 1001;\n overflow: hidden;\n pointer-events: auto;\n }\n\n .menu-item {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 14px;\n background: transparent;\n border: none;\n color: rgba(255,255,255,0.85);\n font-size: 14px;\n text-align: left;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .menu-item:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .menu-item i {\n width: 16px;\n font-size: 13px;\n color: rgba(255,255,255,0.6);\n }\n\n .menu-item:hover i {\n color: white;\n }\n\n .menu-item.danger {\n color: rgba(239, 68, 68, 0.9);\n }\n\n .menu-item.danger:hover {\n background: rgba(239, 68, 68, 0.15);\n color: #ff6b6b;\n }\n\n .menu-item.danger i {\n color: rgba(239, 68, 68, 0.8);\n }\n\n .menu-item.danger:hover i {\n color: #ff6b6b;\n }\n\n .menu-divider {\n height: 1px;\n background: rgba(255,255,255,0.1);\n margin: 4px 0;\n }\n\n /* Rename Animation */\n .conversation-item.renamed {\n animation: renameHighlight 1500ms cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n @keyframes renameHighlight {\n 0% {\n background: linear-gradient(90deg, rgba(59, 130, 246, 0.4), rgba(147, 51, 234, 0.4));\n transform: scale(1.03);\n box-shadow: 0 0 20px rgba(59, 130, 246, 0.5);\n }\n 25% {\n background: linear-gradient(90deg, rgba(59, 130, 246, 0.35), rgba(147, 51, 234, 0.35));\n box-shadow: 0 0 15px rgba(59, 130, 246, 0.4);\n }\n 50% {\n background: linear-gradient(90deg, rgba(16, 185, 129, 0.3), rgba(59, 130, 246, 0.3));\n transform: scale(1.02);\n box-shadow: 0 0 10px rgba(16, 185, 129, 0.3);\n }\n 75% {\n background: linear-gradient(90deg, rgba(16, 185, 129, 0.2), rgba(59, 130, 246, 0.2));\n box-shadow: 0 0 5px rgba(16, 185, 129, 0.2);\n }\n 100% {\n background: transparent;\n transform: scale(1);\n box-shadow: none;\n }\n }\n\n /* Selection Mode Styles */\n .header-top {\n display: flex;\n gap: 8px;\n align-items: center;\n }\n\n .btn-select {\n padding: 8px 12px;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n font-size: 13px;\n font-weight: 500;\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n transition: all 0.2s;\n white-space: nowrap;\n flex-shrink: 0;\n }\n\n .btn-select:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n border-color: rgba(255,255,255,0.3);\n }\n\n .conversation-checkbox {\n display: flex;\n align-items: center;\n margin-right: 8px;\n flex-shrink: 0;\n }\n\n .conversation-checkbox input[type=\"checkbox\"] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n accent-color: #0076B6;\n }\n\n .selection-action-bar {\n position: sticky;\n bottom: 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: #0A2742;\n border-top: 1px solid rgba(255,255,255,0.15);\n gap: 12px;\n flex-wrap: wrap;\n flex-shrink: 0;\n }\n\n .selection-info {\n display: flex;\n align-items: center;\n gap: 12px;\n color: rgba(255,255,255,0.9);\n font-size: 14px;\n font-weight: 500;\n flex: 1 1 auto;\n min-width: 150px;\n }\n\n .selection-count {\n color: white;\n }\n\n .link-btn {\n background: none;\n border: none;\n color: #AAE7FD;\n cursor: pointer;\n font-size: 13px;\n text-decoration: underline;\n padding: 0;\n transition: color 0.2s;\n }\n\n .link-btn:hover {\n color: white;\n }\n\n .selection-actions {\n display: flex;\n gap: 8px;\n flex: 0 0 auto;\n }\n\n .btn-cancel {\n padding: 8px 16px;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all 0.2s;\n }\n\n .btn-cancel:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .btn-delete-bulk {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: #DC2626;\n border: none;\n border-radius: 6px;\n color: white;\n cursor: pointer;\n font-size: 13px;\n font-weight: 600;\n transition: all 0.2s;\n }\n\n .btn-delete-bulk:hover:not(:disabled) {\n background: #B91C1C;\n }\n\n .btn-delete-bulk:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-delete-bulk i {\n font-size: 12px;\n }\n "] }]
788
+ `, styles: ["\n :host { display: block; height: 100%; }\n .conversation-list { display: flex; flex-direction: column; height: 100%; background: #092340; }\n .list-header { padding: 8px; border-bottom: 1px solid rgba(255,255,255,0.1); }\n .search-input {\n width: 100%;\n padding: 8px 12px;\n background: rgba(255,255,255,0.1);\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: white;\n font-size: 13px;\n transition: all 0.2s;\n }\n .search-input::placeholder { color: rgba(255,255,255,0.5); }\n .search-input:focus { outline: none; background: rgba(255,255,255,0.15); border-color: #0076B6; }\n .btn-new-conversation {\n width: calc(100% - 16px);\n margin: 8px;\n padding: 10px;\n background: #0076B6;\n color: white;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n transition: background 0.2s;\n flex-shrink: 0;\n }\n .btn-new-conversation:hover { background: #005A8C; }\n .btn-new-conversation i { font-size: 14px; }\n .list-content { flex: 1; min-height: 0; overflow-y: auto; padding: 4px 0; }\n\n /* Collapsible Sections */\n .sidebar-section { margin-bottom: 20px; }\n .pinned-section .section-header {\n background: rgba(255, 193, 7, 0.08);\n border-radius: 4px;\n margin: 0 4px;\n }\n .pinned-section .section-title .section-icon {\n color: #FFC107;\n font-size: 11px;\n margin-left: 2px;\n }\n .section-header {\n padding: 4px 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n cursor: pointer;\n color: rgba(255, 255, 255, 0.7);\n font-size: 13px;\n font-weight: 500;\n transition: color 0.2s;\n user-select: none;\n }\n .section-header:hover { color: white; }\n .section-title {\n display: flex;\n align-items: center;\n gap: 6px;\n }\n .section-title i {\n font-size: 10px;\n transition: transform 0.2s;\n }\n .section-header.expanded .section-title i { transform: rotate(90deg); }\n .chat-list {\n padding: 4px 0;\n display: none;\n }\n .chat-list.expanded { display: block; }\n\n .conversation-item {\n padding: 6px 5px 6px 16px;\n cursor: pointer;\n display: flex;\n gap: 8px;\n align-items: center;\n transition: all 0.2s;\n position: relative;\n color: rgba(255,255,255,0.7);\n font-size: 14px;\n min-height: 45px;\n }\n .conversation-item:hover { background: rgba(255,255,255,0.08); color: white; }\n .conversation-item:hover .conversation-actions { opacity: 1; }\n .conversation-item.active { background: #0076B6; color: white; }\n .conversation-icon-wrapper { position: relative; flex-shrink: 0; }\n .conversation-icon { font-size: 12px; width: 16px; text-align: center; }\n .conversation-icon.has-tasks { color: #fb923c; }\n .badge-overlay { position: absolute; top: -4px; right: -4px; }\n .conversation-info { flex: 1; min-width: 0; }\n .conversation-name { font-weight: 600; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .conversation-preview { font-size: 12px; color: rgba(255,255,255,0.5); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n .conversation-item.active .conversation-preview { color: rgba(255,255,255,0.8); }\n .conversation-meta { display: flex; align-items: center; gap: 4px; flex-shrink: 0; }\n\n /* Project Badge */\n .project-badge {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 10px;\n font-weight: 600;\n margin-left: auto;\n background-color: rgba(255, 255, 255, 0.1);\n color: rgba(255, 255, 255, 0.6);\n white-space: nowrap;\n max-width: 80px;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .conversation-item:hover .project-badge {\n background-color: rgba(255, 255, 255, 0.15);\n color: rgba(255, 255, 255, 0.8);\n }\n .conversation-item.active .project-badge {\n background-color: rgba(255, 255, 255, 0.2);\n color: white;\n }\n\n .conversation-actions {\n position: absolute;\n right: 5px;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s;\n z-index: 10;\n }\n .conversation-item:hover .conversation-actions { opacity: 1; pointer-events: auto; }\n .conversation-item.active .conversation-actions { opacity: 1; pointer-events: auto; }\n .conversation-actions > * { pointer-events: auto; }\n .pinned-icon { color: #AAE7FD; font-size: 12px; }\n\n /* Task Indicator */\n .task-indicator {\n color: #fb923c;\n font-size: 12px;\n margin-right: 8px;\n flex-shrink: 0;\n animation: pulse-glow 2s ease-in-out infinite;\n }\n @keyframes pulse-glow {\n 0%, 100% {\n opacity: 1;\n filter: drop-shadow(0 0 2px #fb923c);\n }\n 50% {\n opacity: 0.6;\n filter: drop-shadow(0 0 4px #fb923c);\n }\n }\n .conversation-item.active .task-indicator {\n color: #fbbf24;\n }\n\n .menu-btn {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n background: #092340 !important;\n border: none;\n cursor: pointer;\n transition: all 0.2s;\n }\n .menu-btn:hover {\n background: rgba(255,255,255,0.15) !important;\n color: white;\n }\n .conversation-item.active .menu-btn {\n background: #005A8C !important;\n color: white;\n }\n .menu-btn i { font-size: 14px; }\n\n .context-menu {\n position: absolute;\n top: 100%;\n right: 0;\n margin-top: 4px;\n min-width: 160px;\n background: #0A2742;\n border: 1px solid rgba(255,255,255,0.15);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n z-index: 1001;\n overflow: hidden;\n pointer-events: auto;\n }\n\n .menu-item {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 10px 14px;\n background: transparent;\n border: none;\n color: rgba(255,255,255,0.85);\n font-size: 14px;\n text-align: left;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .menu-item:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .menu-item i {\n width: 16px;\n font-size: 13px;\n color: rgba(255,255,255,0.6);\n }\n\n .menu-item:hover i {\n color: white;\n }\n\n .menu-item.danger {\n color: rgba(239, 68, 68, 0.9);\n }\n\n .menu-item.danger:hover {\n background: rgba(239, 68, 68, 0.15);\n color: #ff6b6b;\n }\n\n .menu-item.danger i {\n color: rgba(239, 68, 68, 0.8);\n }\n\n .menu-item.danger:hover i {\n color: #ff6b6b;\n }\n\n .menu-divider {\n height: 1px;\n background: rgba(255,255,255,0.1);\n margin: 4px 0;\n }\n\n /* Rename Animation */\n .conversation-item.renamed {\n animation: renameHighlight 1500ms cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n @keyframes renameHighlight {\n 0% {\n background: linear-gradient(90deg, rgba(59, 130, 246, 0.4), rgba(147, 51, 234, 0.4));\n transform: scale(1.03);\n box-shadow: 0 0 20px rgba(59, 130, 246, 0.5);\n }\n 25% {\n background: linear-gradient(90deg, rgba(59, 130, 246, 0.35), rgba(147, 51, 234, 0.35));\n box-shadow: 0 0 15px rgba(59, 130, 246, 0.4);\n }\n 50% {\n background: linear-gradient(90deg, rgba(16, 185, 129, 0.3), rgba(59, 130, 246, 0.3));\n transform: scale(1.02);\n box-shadow: 0 0 10px rgba(16, 185, 129, 0.3);\n }\n 75% {\n background: linear-gradient(90deg, rgba(16, 185, 129, 0.2), rgba(59, 130, 246, 0.2));\n box-shadow: 0 0 5px rgba(16, 185, 129, 0.2);\n }\n 100% {\n background: transparent;\n transform: scale(1);\n box-shadow: none;\n }\n }\n\n /* Selection Mode Styles */\n .header-top {\n display: flex;\n gap: 8px;\n align-items: center;\n }\n\n /* Header menu button and dropdown */\n .header-menu-container {\n position: relative;\n flex-shrink: 0;\n }\n\n .btn-menu {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n transition: all 0.2s;\n }\n\n .btn-menu:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n border-color: rgba(255,255,255,0.3);\n }\n\n .header-dropdown-menu {\n position: absolute;\n top: calc(100% + 4px);\n right: 0;\n min-width: 200px;\n background: #0A2742;\n border: 1px solid rgba(255,255,255,0.15);\n border-radius: 8px;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n z-index: 1001;\n overflow: hidden;\n padding: 4px 0;\n }\n\n .header-dropdown-menu .dropdown-item {\n width: 100%;\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 14px;\n background: transparent;\n border: none;\n color: rgba(255,255,255,0.85);\n font-size: 13px;\n text-align: left;\n cursor: pointer;\n transition: all 0.15s;\n }\n\n .header-dropdown-menu .dropdown-item:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .header-dropdown-menu .dropdown-item i {\n width: 16px;\n font-size: 13px;\n color: rgba(255,255,255,0.6);\n }\n\n .header-dropdown-menu .dropdown-item:hover i {\n color: white;\n }\n\n .header-dropdown-menu .dropdown-item .shortcut {\n margin-left: auto;\n font-size: 11px;\n color: rgba(255,255,255,0.4);\n font-family: system-ui, -apple-system, sans-serif;\n }\n\n .btn-select {\n padding: 8px 12px;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n font-size: 13px;\n font-weight: 500;\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n transition: all 0.2s;\n white-space: nowrap;\n flex-shrink: 0;\n }\n\n .btn-select:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n border-color: rgba(255,255,255,0.3);\n }\n\n .conversation-checkbox {\n display: flex;\n align-items: center;\n margin-right: 8px;\n flex-shrink: 0;\n }\n\n .conversation-checkbox input[type=\"checkbox\"] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n accent-color: #0076B6;\n }\n\n .selection-action-bar {\n position: sticky;\n bottom: 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: #0A2742;\n border-top: 1px solid rgba(255,255,255,0.15);\n gap: 12px;\n flex-wrap: wrap;\n flex-shrink: 0;\n }\n\n .selection-info {\n display: flex;\n align-items: center;\n gap: 12px;\n color: rgba(255,255,255,0.9);\n font-size: 14px;\n font-weight: 500;\n flex: 1 1 auto;\n min-width: 150px;\n }\n\n .selection-count {\n color: white;\n }\n\n .link-btn {\n background: none;\n border: none;\n color: #AAE7FD;\n cursor: pointer;\n font-size: 13px;\n text-decoration: underline;\n padding: 0;\n transition: color 0.2s;\n }\n\n .link-btn:hover {\n color: white;\n }\n\n .selection-actions {\n display: flex;\n gap: 8px;\n flex: 0 0 auto;\n }\n\n .btn-cancel {\n padding: 8px 16px;\n background: transparent;\n border: 1px solid rgba(255,255,255,0.2);\n border-radius: 6px;\n color: rgba(255,255,255,0.7);\n cursor: pointer;\n font-size: 13px;\n font-weight: 500;\n transition: all 0.2s;\n }\n\n .btn-cancel:hover {\n background: rgba(255,255,255,0.1);\n color: white;\n }\n\n .btn-delete-bulk {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: #DC2626;\n border: none;\n border-radius: 6px;\n color: white;\n cursor: pointer;\n font-size: 13px;\n font-weight: 600;\n transition: all 0.2s;\n }\n\n .btn-delete-bulk:hover:not(:disabled) {\n background: #B91C1C;\n }\n\n .btn-delete-bulk:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-delete-bulk i {\n font-size: 12px;\n }\n "] }]
691
789
  }], () => [{ type: i1.ConversationDataService }, { type: i2.DialogService }, { type: i3.NotificationService }, { type: i4.ActiveTasksService }, { type: i0.ChangeDetectorRef }], { environmentId: [{
692
790
  type: Input
693
791
  }], currentUser: [{
@@ -696,13 +794,21 @@ export class ConversationListComponent {
696
794
  type: Input
697
795
  }], renamedConversationId: [{
698
796
  type: Input
797
+ }], isSidebarPinned: [{
798
+ type: Input
799
+ }], isMobileView: [{
800
+ type: Input
699
801
  }], conversationSelected: [{
700
802
  type: Output
701
803
  }], newConversationRequested: [{
702
804
  type: Output
805
+ }], pinSidebarRequested: [{
806
+ type: Output
807
+ }], unpinSidebarRequested: [{
808
+ type: Output
703
809
  }], onDocumentClick: [{
704
810
  type: HostListener,
705
811
  args: ['document:click']
706
812
  }] }); })();
707
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConversationListComponent, { className: "ConversationListComponent", filePath: "src/lib/components/conversation/conversation-list.component.ts", lineNumber: 621 }); })();
813
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConversationListComponent, { className: "ConversationListComponent", filePath: "src/lib/components/conversation/conversation-list.component.ts", lineNumber: 721 }); })();
708
814
  //# sourceMappingURL=conversation-list.component.js.map