@memberjunction/ng-conversations 2.104.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 (226) hide show
  1. package/README.md +197 -0
  2. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +20 -0
  3. package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -0
  4. package/dist/lib/components/active-tasks/active-tasks-panel.component.js +125 -0
  5. package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -0
  6. package/dist/lib/components/agent/active-agent-indicator.component.d.ts +48 -0
  7. package/dist/lib/components/agent/active-agent-indicator.component.d.ts.map +1 -0
  8. package/dist/lib/components/agent/active-agent-indicator.component.js +199 -0
  9. package/dist/lib/components/agent/active-agent-indicator.component.js.map +1 -0
  10. package/dist/lib/components/agent/agent-process-panel.component.d.ts +30 -0
  11. package/dist/lib/components/agent/agent-process-panel.component.d.ts.map +1 -0
  12. package/dist/lib/components/agent/agent-process-panel.component.js +333 -0
  13. package/dist/lib/components/agent/agent-process-panel.component.js.map +1 -0
  14. package/dist/lib/components/artifact/artifact-panel.component.d.ts +22 -0
  15. package/dist/lib/components/artifact/artifact-panel.component.d.ts.map +1 -0
  16. package/dist/lib/components/artifact/artifact-panel.component.js +237 -0
  17. package/dist/lib/components/artifact/artifact-panel.component.js.map +1 -0
  18. package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts +39 -0
  19. package/dist/lib/components/artifact/artifact-upload-modal.component.d.ts.map +1 -0
  20. package/dist/lib/components/artifact/artifact-upload-modal.component.js +384 -0
  21. package/dist/lib/components/artifact/artifact-upload-modal.component.js.map +1 -0
  22. package/dist/lib/components/artifact/artifact-version-history.component.d.ts +28 -0
  23. package/dist/lib/components/artifact/artifact-version-history.component.d.ts.map +1 -0
  24. package/dist/lib/components/artifact/artifact-version-history.component.js +280 -0
  25. package/dist/lib/components/artifact/artifact-version-history.component.js.map +1 -0
  26. package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts +22 -0
  27. package/dist/lib/components/artifact/artifact-viewer-panel.component.d.ts.map +1 -0
  28. package/dist/lib/components/artifact/artifact-viewer-panel.component.js +182 -0
  29. package/dist/lib/components/artifact/artifact-viewer-panel.component.js.map +1 -0
  30. package/dist/lib/components/artifact/artifact-viewer.component.d.ts +27 -0
  31. package/dist/lib/components/artifact/artifact-viewer.component.d.ts.map +1 -0
  32. package/dist/lib/components/artifact/artifact-viewer.component.js +266 -0
  33. package/dist/lib/components/artifact/artifact-viewer.component.js.map +1 -0
  34. package/dist/lib/components/artifact/inline-artifact.component.d.ts +46 -0
  35. package/dist/lib/components/artifact/inline-artifact.component.d.ts.map +1 -0
  36. package/dist/lib/components/artifact/inline-artifact.component.js +447 -0
  37. package/dist/lib/components/artifact/inline-artifact.component.js.map +1 -0
  38. package/dist/lib/components/collection/collection-artifact-card.component.d.ts +18 -0
  39. package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -0
  40. package/dist/lib/components/collection/collection-artifact-card.component.js +147 -0
  41. package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -0
  42. package/dist/lib/components/collection/collection-form-modal.component.d.ts +33 -0
  43. package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -0
  44. package/dist/lib/components/collection/collection-form-modal.component.js +245 -0
  45. package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -0
  46. package/dist/lib/components/collection/collection-tree.component.d.ts +42 -0
  47. package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -0
  48. package/dist/lib/components/collection/collection-tree.component.js +482 -0
  49. package/dist/lib/components/collection/collection-tree.component.js.map +1 -0
  50. package/dist/lib/components/collection/collection-view.component.d.ts +31 -0
  51. package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -0
  52. package/dist/lib/components/collection/collection-view.component.js +254 -0
  53. package/dist/lib/components/collection/collection-view.component.js.map +1 -0
  54. package/dist/lib/components/collection/collections-full-view.component.d.ts +55 -0
  55. package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -0
  56. package/dist/lib/components/collection/collections-full-view.component.js +578 -0
  57. package/dist/lib/components/collection/collections-full-view.component.js.map +1 -0
  58. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +160 -0
  59. package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -0
  60. package/dist/lib/components/conversation/conversation-chat-area.component.js +891 -0
  61. package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -0
  62. package/dist/lib/components/conversation/conversation-list.component.d.ts +29 -0
  63. package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -0
  64. package/dist/lib/components/conversation/conversation-list.component.js +255 -0
  65. package/dist/lib/components/conversation/conversation-list.component.js.map +1 -0
  66. package/dist/lib/components/dialogs/input-dialog.component.d.ts +17 -0
  67. package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -0
  68. package/dist/lib/components/dialogs/input-dialog.component.js +122 -0
  69. package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -0
  70. package/dist/lib/components/export/export-modal.component.d.ts +37 -0
  71. package/dist/lib/components/export/export-modal.component.d.ts.map +1 -0
  72. package/dist/lib/components/export/export-modal.component.js +414 -0
  73. package/dist/lib/components/export/export-modal.component.js.map +1 -0
  74. package/dist/lib/components/library/library-full-view.component.d.ts +36 -0
  75. package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -0
  76. package/dist/lib/components/library/library-full-view.component.js +270 -0
  77. package/dist/lib/components/library/library-full-view.component.js.map +1 -0
  78. package/dist/lib/components/members/members-modal.component.d.ts +42 -0
  79. package/dist/lib/components/members/members-modal.component.d.ts.map +1 -0
  80. package/dist/lib/components/members/members-modal.component.js +352 -0
  81. package/dist/lib/components/members/members-modal.component.js.map +1 -0
  82. package/dist/lib/components/mention/mention-dropdown.component.d.ts +44 -0
  83. package/dist/lib/components/mention/mention-dropdown.component.d.ts.map +1 -0
  84. package/dist/lib/components/mention/mention-dropdown.component.js +194 -0
  85. package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -0
  86. package/dist/lib/components/message/message-input.component.d.ts +137 -0
  87. package/dist/lib/components/message/message-input.component.d.ts.map +1 -0
  88. package/dist/lib/components/message/message-input.component.js +1159 -0
  89. package/dist/lib/components/message/message-input.component.js.map +1 -0
  90. package/dist/lib/components/message/message-item.component.d.ts +140 -0
  91. package/dist/lib/components/message/message-item.component.d.ts.map +1 -0
  92. package/dist/lib/components/message/message-item.component.js +817 -0
  93. package/dist/lib/components/message/message-item.component.js.map +1 -0
  94. package/dist/lib/components/message/message-list.component.d.ts +77 -0
  95. package/dist/lib/components/message/message-list.component.d.ts.map +1 -0
  96. package/dist/lib/components/message/message-list.component.js +316 -0
  97. package/dist/lib/components/message/message-list.component.js.map +1 -0
  98. package/dist/lib/components/navigation/conversation-navigation.component.d.ts +13 -0
  99. package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -0
  100. package/dist/lib/components/navigation/conversation-navigation.component.js +88 -0
  101. package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -0
  102. package/dist/lib/components/notification/activity-indicator.component.d.ts +11 -0
  103. package/dist/lib/components/notification/activity-indicator.component.d.ts.map +1 -0
  104. package/dist/lib/components/notification/activity-indicator.component.js +56 -0
  105. package/dist/lib/components/notification/activity-indicator.component.js.map +1 -0
  106. package/dist/lib/components/notification/notification-badge.component.d.ts +27 -0
  107. package/dist/lib/components/notification/notification-badge.component.d.ts.map +1 -0
  108. package/dist/lib/components/notification/notification-badge.component.js +160 -0
  109. package/dist/lib/components/notification/notification-badge.component.js.map +1 -0
  110. package/dist/lib/components/project/project-form-modal.component.d.ts +34 -0
  111. package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -0
  112. package/dist/lib/components/project/project-form-modal.component.js +357 -0
  113. package/dist/lib/components/project/project-form-modal.component.js.map +1 -0
  114. package/dist/lib/components/project/project-selector.component.d.ts +36 -0
  115. package/dist/lib/components/project/project-selector.component.d.ts.map +1 -0
  116. package/dist/lib/components/project/project-selector.component.js +317 -0
  117. package/dist/lib/components/project/project-selector.component.js.map +1 -0
  118. package/dist/lib/components/search/search-panel.component.d.ts +120 -0
  119. package/dist/lib/components/search/search-panel.component.d.ts.map +1 -0
  120. package/dist/lib/components/search/search-panel.component.js +714 -0
  121. package/dist/lib/components/search/search-panel.component.js.map +1 -0
  122. package/dist/lib/components/share/share-modal.component.d.ts +46 -0
  123. package/dist/lib/components/share/share-modal.component.d.ts.map +1 -0
  124. package/dist/lib/components/share/share-modal.component.js +431 -0
  125. package/dist/lib/components/share/share-modal.component.js.map +1 -0
  126. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +18 -0
  127. package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -0
  128. package/dist/lib/components/sidebar/conversation-sidebar.component.js +81 -0
  129. package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -0
  130. package/dist/lib/components/task/task-form-modal.component.d.ts +42 -0
  131. package/dist/lib/components/task/task-form-modal.component.d.ts.map +1 -0
  132. package/dist/lib/components/task/task-form-modal.component.js +329 -0
  133. package/dist/lib/components/task/task-form-modal.component.js.map +1 -0
  134. package/dist/lib/components/task/task-item.component.d.ts +22 -0
  135. package/dist/lib/components/task/task-item.component.d.ts.map +1 -0
  136. package/dist/lib/components/task/task-item.component.js +234 -0
  137. package/dist/lib/components/task/task-item.component.js.map +1 -0
  138. package/dist/lib/components/task/task-list.component.d.ts +32 -0
  139. package/dist/lib/components/task/task-list.component.d.ts.map +1 -0
  140. package/dist/lib/components/task/task-list.component.js +290 -0
  141. package/dist/lib/components/task/task-list.component.js.map +1 -0
  142. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +27 -0
  143. package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -0
  144. package/dist/lib/components/tasks/tasks-dropdown.component.js +254 -0
  145. package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -0
  146. package/dist/lib/components/thread/thread-panel.component.d.ts +65 -0
  147. package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -0
  148. package/dist/lib/components/thread/thread-panel.component.js +325 -0
  149. package/dist/lib/components/thread/thread-panel.component.js.map +1 -0
  150. package/dist/lib/components/toast/toast.component.d.ts +26 -0
  151. package/dist/lib/components/toast/toast.component.d.ts.map +1 -0
  152. package/dist/lib/components/toast/toast.component.js +108 -0
  153. package/dist/lib/components/toast/toast.component.js.map +1 -0
  154. package/dist/lib/components/workspace/conversation-workspace.component.d.ts +75 -0
  155. package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -0
  156. package/dist/lib/components/workspace/conversation-workspace.component.js +299 -0
  157. package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -0
  158. package/dist/lib/conversations.module.d.ts +62 -0
  159. package/dist/lib/conversations.module.d.ts.map +1 -0
  160. package/dist/lib/conversations.module.js +248 -0
  161. package/dist/lib/conversations.module.js.map +1 -0
  162. package/dist/lib/directives/search-shortcut.directive.d.ts +17 -0
  163. package/dist/lib/directives/search-shortcut.directive.d.ts.map +1 -0
  164. package/dist/lib/directives/search-shortcut.directive.js +39 -0
  165. package/dist/lib/directives/search-shortcut.directive.js.map +1 -0
  166. package/dist/lib/models/conversation-state.model.d.ts +72 -0
  167. package/dist/lib/models/conversation-state.model.d.ts.map +1 -0
  168. package/dist/lib/models/conversation-state.model.js +2 -0
  169. package/dist/lib/models/conversation-state.model.js.map +1 -0
  170. package/dist/lib/models/notification.model.d.ts +89 -0
  171. package/dist/lib/models/notification.model.d.ts.map +1 -0
  172. package/dist/lib/models/notification.model.js +11 -0
  173. package/dist/lib/models/notification.model.js.map +1 -0
  174. package/dist/lib/services/active-tasks.service.d.ts +65 -0
  175. package/dist/lib/services/active-tasks.service.d.ts.map +1 -0
  176. package/dist/lib/services/active-tasks.service.js +95 -0
  177. package/dist/lib/services/active-tasks.service.js.map +1 -0
  178. package/dist/lib/services/agent-state.service.d.ts +78 -0
  179. package/dist/lib/services/agent-state.service.d.ts.map +1 -0
  180. package/dist/lib/services/agent-state.service.js +213 -0
  181. package/dist/lib/services/agent-state.service.js.map +1 -0
  182. package/dist/lib/services/artifact-state.service.d.ts +114 -0
  183. package/dist/lib/services/artifact-state.service.d.ts.map +1 -0
  184. package/dist/lib/services/artifact-state.service.js +288 -0
  185. package/dist/lib/services/artifact-state.service.js.map +1 -0
  186. package/dist/lib/services/conversation-agent.service.d.ts +79 -0
  187. package/dist/lib/services/conversation-agent.service.d.ts.map +1 -0
  188. package/dist/lib/services/conversation-agent.service.js +259 -0
  189. package/dist/lib/services/conversation-agent.service.js.map +1 -0
  190. package/dist/lib/services/conversation-state.service.d.ts +122 -0
  191. package/dist/lib/services/conversation-state.service.d.ts.map +1 -0
  192. package/dist/lib/services/conversation-state.service.js +255 -0
  193. package/dist/lib/services/conversation-state.service.js.map +1 -0
  194. package/dist/lib/services/dialog.service.d.ts +54 -0
  195. package/dist/lib/services/dialog.service.d.ts.map +1 -0
  196. package/dist/lib/services/dialog.service.js +157 -0
  197. package/dist/lib/services/dialog.service.js.map +1 -0
  198. package/dist/lib/services/export.service.d.ts +25 -0
  199. package/dist/lib/services/export.service.d.ts.map +1 -0
  200. package/dist/lib/services/export.service.js +237 -0
  201. package/dist/lib/services/export.service.js.map +1 -0
  202. package/dist/lib/services/mention-autocomplete.service.d.ts +59 -0
  203. package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -0
  204. package/dist/lib/services/mention-autocomplete.service.js +160 -0
  205. package/dist/lib/services/mention-autocomplete.service.js.map +1 -0
  206. package/dist/lib/services/mention-parser.service.d.ts +46 -0
  207. package/dist/lib/services/mention-parser.service.d.ts.map +1 -0
  208. package/dist/lib/services/mention-parser.service.js +156 -0
  209. package/dist/lib/services/mention-parser.service.js.map +1 -0
  210. package/dist/lib/services/notification.service.d.ts +108 -0
  211. package/dist/lib/services/notification.service.d.ts.map +1 -0
  212. package/dist/lib/services/notification.service.js +431 -0
  213. package/dist/lib/services/notification.service.js.map +1 -0
  214. package/dist/lib/services/search.service.d.ts +144 -0
  215. package/dist/lib/services/search.service.d.ts.map +1 -0
  216. package/dist/lib/services/search.service.js +370 -0
  217. package/dist/lib/services/search.service.js.map +1 -0
  218. package/dist/lib/services/toast.service.d.ts +46 -0
  219. package/dist/lib/services/toast.service.d.ts.map +1 -0
  220. package/dist/lib/services/toast.service.js +76 -0
  221. package/dist/lib/services/toast.service.js.map +1 -0
  222. package/dist/public-api.d.ts +42 -0
  223. package/dist/public-api.d.ts.map +1 -0
  224. package/dist/public-api.js +49 -0
  225. package/dist/public-api.js.map +1 -0
  226. package/package.json +54 -0
@@ -0,0 +1,56 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ function ActivityIndicatorComponent_Conditional_0_Conditional_5_Template(rf, ctx) { if (rf & 1) {
4
+ i0.ɵɵelementStart(0, "span", 4);
5
+ i0.ɵɵtext(1);
6
+ i0.ɵɵelementEnd();
7
+ } if (rf & 2) {
8
+ const ctx_r0 = i0.ɵɵnextContext(2);
9
+ i0.ɵɵadvance();
10
+ i0.ɵɵtextInterpolate(ctx_r0.config == null ? null : ctx_r0.config.text);
11
+ } }
12
+ function ActivityIndicatorComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
13
+ i0.ɵɵelementStart(0, "div", 1)(1, "div", 2);
14
+ i0.ɵɵelement(2, "span", 3)(3, "span", 3)(4, "span", 3);
15
+ i0.ɵɵelementEnd();
16
+ i0.ɵɵtemplate(5, ActivityIndicatorComponent_Conditional_0_Conditional_5_Template, 2, 1, "span", 4);
17
+ i0.ɵɵelementEnd();
18
+ } if (rf & 2) {
19
+ const ctx_r0 = i0.ɵɵnextContext();
20
+ i0.ɵɵclassProp("activity-agent", (ctx_r0.config == null ? null : ctx_r0.config.type) === "agent")("activity-processing", (ctx_r0.config == null ? null : ctx_r0.config.type) === "processing")("activity-typing", (ctx_r0.config == null ? null : ctx_r0.config.type) === "typing");
21
+ i0.ɵɵadvance(5);
22
+ i0.ɵɵconditional((ctx_r0.config == null ? null : ctx_r0.config.text) ? 5 : -1);
23
+ } }
24
+ /**
25
+ * Displays activity indicators for agent processes, typing, etc.
26
+ */
27
+ export class ActivityIndicatorComponent {
28
+ config;
29
+ static ɵfac = function ActivityIndicatorComponent_Factory(t) { return new (t || ActivityIndicatorComponent)(); };
30
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActivityIndicatorComponent, selectors: [["mj-activity-indicator"]], inputs: { config: "config" }, decls: 1, vars: 1, consts: [[1, "activity-indicator", 3, "activity-agent", "activity-processing", "activity-typing"], [1, "activity-indicator"], [1, "activity-dots"], [1, "dot"], [1, "activity-text"]], template: function ActivityIndicatorComponent_Template(rf, ctx) { if (rf & 1) {
31
+ i0.ɵɵtemplate(0, ActivityIndicatorComponent_Conditional_0_Template, 6, 7, "div", 0);
32
+ } if (rf & 2) {
33
+ i0.ɵɵconditional((ctx.config == null ? null : ctx.config.show) ? 0 : -1);
34
+ } }, styles: [".activity-indicator[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n color: #666;\n background: #F4F4F4;\n transition: all 150ms ease;\n }\n\n .activity-agent[_ngcontent-%COMP%] {\n background: #EFF6FF;\n color: #0076B6;\n }\n\n .activity-processing[_ngcontent-%COMP%] {\n background: #FEF3C7;\n color: #D97706;\n }\n\n .activity-typing[_ngcontent-%COMP%] {\n background: #F3F4F6;\n color: #6B7280;\n }\n\n .activity-dots[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 3px;\n }\n\n .dot[_ngcontent-%COMP%] {\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background: currentColor;\n animation: _ngcontent-%COMP%_dot-pulse 1.4s ease-in-out infinite;\n }\n\n .dot[_ngcontent-%COMP%]:nth-child(1) {\n animation-delay: 0s;\n }\n\n .dot[_ngcontent-%COMP%]:nth-child(2) {\n animation-delay: 0.2s;\n }\n\n .dot[_ngcontent-%COMP%]:nth-child(3) {\n animation-delay: 0.4s;\n }\n\n @keyframes _ngcontent-%COMP%_dot-pulse {\n 0%, 60%, 100% {\n opacity: 0.3;\n transform: scale(0.8);\n }\n 30% {\n opacity: 1;\n transform: scale(1.2);\n }\n }\n\n .activity-text[_ngcontent-%COMP%] {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 150px;\n }"] });
35
+ }
36
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActivityIndicatorComponent, [{
37
+ type: Component,
38
+ args: [{ selector: 'mj-activity-indicator', template: `
39
+ @if (config?.show) {
40
+ <div class="activity-indicator" [class.activity-agent]="config?.type === 'agent'" [class.activity-processing]="config?.type === 'processing'" [class.activity-typing]="config?.type === 'typing'">
41
+ <div class="activity-dots">
42
+ <span class="dot"></span>
43
+ <span class="dot"></span>
44
+ <span class="dot"></span>
45
+ </div>
46
+ @if (config?.text) {
47
+ <span class="activity-text">{{ config?.text }}</span>
48
+ }
49
+ </div>
50
+ }
51
+ `, styles: ["\n .activity-indicator {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 8px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 500;\n color: #666;\n background: #F4F4F4;\n transition: all 150ms ease;\n }\n\n .activity-agent {\n background: #EFF6FF;\n color: #0076B6;\n }\n\n .activity-processing {\n background: #FEF3C7;\n color: #D97706;\n }\n\n .activity-typing {\n background: #F3F4F6;\n color: #6B7280;\n }\n\n .activity-dots {\n display: flex;\n align-items: center;\n gap: 3px;\n }\n\n .dot {\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background: currentColor;\n animation: dot-pulse 1.4s ease-in-out infinite;\n }\n\n .dot:nth-child(1) {\n animation-delay: 0s;\n }\n\n .dot:nth-child(2) {\n animation-delay: 0.2s;\n }\n\n .dot:nth-child(3) {\n animation-delay: 0.4s;\n }\n\n @keyframes dot-pulse {\n 0%, 60%, 100% {\n opacity: 0.3;\n transform: scale(0.8);\n }\n 30% {\n opacity: 1;\n transform: scale(1.2);\n }\n }\n\n .activity-text {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 150px;\n }\n "] }]
52
+ }], null, { config: [{
53
+ type: Input
54
+ }] }); })();
55
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActivityIndicatorComponent, { className: "ActivityIndicatorComponent", filePath: "src/lib/components/notification/activity-indicator.component.ts", lineNumber: 97 }); })();
56
+ //# sourceMappingURL=activity-indicator.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-indicator.component.js","sourceRoot":"","sources":["../../../../src/lib/components/notification/activity-indicator.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;;IAiBvC,+BAA4B;IAAA,YAAkB;IAAA,iBAAO;;;IAAzB,cAAkB;IAAlB,uEAAkB;;;IANhD,AADF,8BAAkM,aACrK;IAGzB,AADA,AADA,0BAAyB,cACA,cACA;IAC3B,iBAAM;IACN,kGAAoB;IAGtB,iBAAM;;;IATwI,AAA5D,AAAlD,iGAAiD,6FAA4D,qFAAoD;IAM/L,eAEC;IAFD,8EAEC;;AAfT;;GAEG;AA2FH,MAAM,OAAO,0BAA0B;IAC5B,MAAM,CAA2B;oFAD/B,0BAA0B;6DAA1B,0BAA0B;YAvFnC,mFAAoB;;YAApB,wEAWC;;;iFA4EQ,0BAA0B;cA1FtC,SAAS;2BACE,uBAAuB,YACvB;;;;;;;;;;;;;GAaT;gBA4EQ,MAAM;kBAAd,KAAK;;kFADK,0BAA0B"}
@@ -0,0 +1,27 @@
1
+ import { OnInit, OnDestroy } from '@angular/core';
2
+ import { BadgeConfig } from '../../models/notification.model';
3
+ import { NotificationService } from '../../services/notification.service';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Displays notification badges with various styles and animations
7
+ * Supports count, dot, pulse, and new badge types
8
+ */
9
+ export declare class NotificationBadgeComponent implements OnInit, OnDestroy {
10
+ private notificationService;
11
+ conversationId?: string;
12
+ badgeConfig?: BadgeConfig;
13
+ private destroy$;
14
+ private _loadedBadgeConfig;
15
+ constructor(notificationService: NotificationService);
16
+ ngOnInit(): void;
17
+ ngOnDestroy(): void;
18
+ get displayConfig(): BadgeConfig | null;
19
+ /**
20
+ * Formats count for display
21
+ * Shows 99+ for counts over 99
22
+ */
23
+ formatCount(count: number): string;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<NotificationBadgeComponent, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<NotificationBadgeComponent, "mj-notification-badge", never, { "conversationId": { "alias": "conversationId"; "required": false; }; "badgeConfig": { "alias": "badgeConfig"; "required": false; }; }, {}, never, never, false, never>;
26
+ }
27
+ //# sourceMappingURL=notification-badge.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-badge.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/notification/notification-badge.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAGpE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;;AAE1E;;;GAGG;AACH,qBA6Na,0BAA2B,YAAW,MAAM,EAAE,SAAS;IAOtD,OAAO,CAAC,mBAAmB;IAN9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;IAEnC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,kBAAkB,CAA4B;gBAElC,mBAAmB,EAAE,mBAAmB;IAE5D,QAAQ,IAAI,IAAI;IAYhB,WAAW,IAAI,IAAI;IAKnB,IAAI,aAAa,IAAI,WAAW,GAAG,IAAI,CAEtC;IAED;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;yCAlCvB,0BAA0B;2CAA1B,0BAA0B;CAqCtC"}
@@ -0,0 +1,160 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../services/notification.service";
6
+ function NotificationBadgeComponent_Conditional_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
7
+ i0.ɵɵelementStart(0, "div", 5);
8
+ i0.ɵɵtext(1);
9
+ i0.ɵɵelementEnd();
10
+ } if (rf & 2) {
11
+ const ctx_r0 = i0.ɵɵnextContext(2);
12
+ i0.ɵɵclassProp("badge-high", (ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.priority) === "high")("badge-urgent", (ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.priority) === "urgent")("badge-animate", ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.animate);
13
+ i0.ɵɵadvance();
14
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.formatCount(ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.count), " ");
15
+ } }
16
+ function NotificationBadgeComponent_Conditional_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
17
+ i0.ɵɵelement(0, "div", 6);
18
+ } if (rf & 2) {
19
+ const ctx_r0 = i0.ɵɵnextContext(2);
20
+ i0.ɵɵclassProp("badge-high", (ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.priority) === "high")("badge-urgent", (ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.priority) === "urgent")("badge-animate", ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.animate);
21
+ } }
22
+ function NotificationBadgeComponent_Conditional_0_Conditional_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
23
+ i0.ɵɵelementStart(0, "span", 10);
24
+ i0.ɵɵtext(1);
25
+ i0.ɵɵelementEnd();
26
+ } if (rf & 2) {
27
+ const ctx_r0 = i0.ɵɵnextContext(3);
28
+ i0.ɵɵadvance();
29
+ i0.ɵɵtextInterpolate(ctx_r0.formatCount(ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.count));
30
+ } }
31
+ function NotificationBadgeComponent_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
32
+ i0.ɵɵelementStart(0, "div", 7);
33
+ i0.ɵɵelement(1, "span", 8)(2, "span", 9);
34
+ i0.ɵɵtemplate(3, NotificationBadgeComponent_Conditional_0_Conditional_3_Conditional_3_Template, 2, 1, "span", 10);
35
+ i0.ɵɵelementEnd();
36
+ } if (rf & 2) {
37
+ const ctx_r0 = i0.ɵɵnextContext(2);
38
+ i0.ɵɵclassProp("badge-high", (ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.priority) === "high")("badge-urgent", (ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.priority) === "urgent");
39
+ i0.ɵɵadvance(3);
40
+ i0.ɵɵconditional((ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.count) != null && (ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.count) > 0 ? 3 : -1);
41
+ } }
42
+ function NotificationBadgeComponent_Conditional_0_Conditional_4_Template(rf, ctx) { if (rf & 1) {
43
+ i0.ɵɵelementStart(0, "div", 11);
44
+ i0.ɵɵtext(1, " NEW ");
45
+ i0.ɵɵelementEnd();
46
+ } if (rf & 2) {
47
+ const ctx_r0 = i0.ɵɵnextContext(2);
48
+ i0.ɵɵclassProp("badge-animate", ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.animate);
49
+ } }
50
+ function NotificationBadgeComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
51
+ i0.ɵɵelementStart(0, "div", 0);
52
+ i0.ɵɵtemplate(1, NotificationBadgeComponent_Conditional_0_Conditional_1_Template, 2, 7, "div", 1)(2, NotificationBadgeComponent_Conditional_0_Conditional_2_Template, 1, 6, "div", 2)(3, NotificationBadgeComponent_Conditional_0_Conditional_3_Template, 4, 5, "div", 3)(4, NotificationBadgeComponent_Conditional_0_Conditional_4_Template, 2, 2, "div", 4);
53
+ i0.ɵɵelementEnd();
54
+ } if (rf & 2) {
55
+ const ctx_r0 = i0.ɵɵnextContext();
56
+ i0.ɵɵadvance();
57
+ i0.ɵɵconditional((ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.type) === "count" && (ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.count) != null && (ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.count) > 0 ? 1 : -1);
58
+ i0.ɵɵadvance();
59
+ i0.ɵɵconditional((ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.type) === "dot" ? 2 : -1);
60
+ i0.ɵɵadvance();
61
+ i0.ɵɵconditional((ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.type) === "pulse" ? 3 : -1);
62
+ i0.ɵɵadvance();
63
+ i0.ɵɵconditional((ctx_r0.badgeConfig == null ? null : ctx_r0.badgeConfig.type) === "new" ? 4 : -1);
64
+ } }
65
+ /**
66
+ * Displays notification badges with various styles and animations
67
+ * Supports count, dot, pulse, and new badge types
68
+ */
69
+ export class NotificationBadgeComponent {
70
+ notificationService;
71
+ conversationId;
72
+ badgeConfig;
73
+ destroy$ = new Subject();
74
+ _loadedBadgeConfig = null;
75
+ constructor(notificationService) {
76
+ this.notificationService = notificationService;
77
+ }
78
+ ngOnInit() {
79
+ // If badgeConfig not provided but conversationId is, load from service
80
+ if (!this.badgeConfig && this.conversationId) {
81
+ this.notificationService
82
+ .getBadgeConfig$(this.conversationId)
83
+ .pipe(takeUntil(this.destroy$))
84
+ .subscribe(config => {
85
+ this._loadedBadgeConfig = config;
86
+ });
87
+ }
88
+ }
89
+ ngOnDestroy() {
90
+ this.destroy$.next();
91
+ this.destroy$.complete();
92
+ }
93
+ get displayConfig() {
94
+ return this.badgeConfig || this._loadedBadgeConfig;
95
+ }
96
+ /**
97
+ * Formats count for display
98
+ * Shows 99+ for counts over 99
99
+ */
100
+ formatCount(count) {
101
+ return count > 99 ? '99+' : count.toString();
102
+ }
103
+ static ɵfac = function NotificationBadgeComponent_Factory(t) { return new (t || NotificationBadgeComponent)(i0.ɵɵdirectiveInject(i1.NotificationService)); };
104
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NotificationBadgeComponent, selectors: [["mj-notification-badge"]], inputs: { conversationId: "conversationId", badgeConfig: "badgeConfig" }, decls: 1, vars: 1, consts: [[1, "notification-badge-container"], [1, "notification-badge", "badge-count", 3, "badge-high", "badge-urgent", "badge-animate"], [1, "notification-badge", "badge-dot", 3, "badge-high", "badge-urgent", "badge-animate"], [1, "notification-badge", "badge-pulse", 3, "badge-high", "badge-urgent"], [1, "notification-badge", "badge-new", 3, "badge-animate"], [1, "notification-badge", "badge-count"], [1, "notification-badge", "badge-dot"], [1, "notification-badge", "badge-pulse"], [1, "pulse-ring"], [1, "pulse-ring-delay"], [1, "pulse-count"], [1, "notification-badge", "badge-new"]], template: function NotificationBadgeComponent_Template(rf, ctx) { if (rf & 1) {
105
+ i0.ɵɵtemplate(0, NotificationBadgeComponent_Conditional_0_Template, 5, 4, "div", 0);
106
+ } if (rf & 2) {
107
+ i0.ɵɵconditional((ctx.badgeConfig == null ? null : ctx.badgeConfig.show) ? 0 : -1);
108
+ } }, styles: [".notification-badge-container[_ngcontent-%COMP%] {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .notification-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 10px;\n font-weight: 700;\n line-height: 1;\n color: white;\n border-radius: 10px;\n white-space: nowrap;\n transition: all 150ms ease;\n }\n\n \n\n .badge-count[_ngcontent-%COMP%] {\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: #0076B6;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n .badge-count.badge-high[_ngcontent-%COMP%] {\n background: #F59E0B;\n }\n\n .badge-count.badge-urgent[_ngcontent-%COMP%] {\n background: #DC2626;\n }\n\n \n\n .badge-dot[_ngcontent-%COMP%] {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: #0076B6;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n .badge-dot.badge-high[_ngcontent-%COMP%] {\n background: #F59E0B;\n }\n\n .badge-dot.badge-urgent[_ngcontent-%COMP%] {\n background: #DC2626;\n }\n\n \n\n .badge-pulse[_ngcontent-%COMP%] {\n position: relative;\n width: 24px;\n height: 24px;\n background: #0076B6;\n border-radius: 50%;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);\n }\n\n .badge-pulse.badge-high[_ngcontent-%COMP%] {\n background: #F59E0B;\n }\n\n .badge-pulse.badge-urgent[_ngcontent-%COMP%] {\n background: #DC2626;\n }\n\n .pulse-ring[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 100%;\n height: 100%;\n border: 2px solid currentColor;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n animation: _ngcontent-%COMP%_pulse-ring 2s cubic-bezier(0.215, 0.61, 0.355, 1) infinite;\n opacity: 0;\n }\n\n .pulse-ring-delay[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 100%;\n height: 100%;\n border: 2px solid currentColor;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n animation: _ngcontent-%COMP%_pulse-ring 2s cubic-bezier(0.215, 0.61, 0.355, 1) infinite;\n animation-delay: 1s;\n opacity: 0;\n }\n\n @keyframes _ngcontent-%COMP%_pulse-ring {\n 0% {\n transform: translate(-50%, -50%) scale(0.8);\n opacity: 1;\n }\n 50% {\n transform: translate(-50%, -50%) scale(1.3);\n opacity: 0.5;\n }\n 100% {\n transform: translate(-50%, -50%) scale(1.5);\n opacity: 0;\n }\n }\n\n .pulse-count[_ngcontent-%COMP%] {\n position: relative;\n z-index: 1;\n font-size: 10px;\n font-weight: 700;\n color: white;\n }\n\n \n\n .badge-new[_ngcontent-%COMP%] {\n height: 18px;\n padding: 0 6px;\n background: linear-gradient(135deg, #10B981, #059669);\n font-size: 9px;\n font-weight: 800;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px rgba(16, 185, 129, 0.3);\n }\n\n \n\n .badge-animate[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_badge-pop 300ms cubic-bezier(0.68, -0.55, 0.265, 1.55);\n }\n\n @keyframes _ngcontent-%COMP%_badge-pop {\n 0% {\n transform: scale(0);\n opacity: 0;\n }\n 50% {\n transform: scale(1.2);\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n\n \n\n .badge-urgent.badge-animate[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_badge-pop 300ms cubic-bezier(0.68, -0.55, 0.265, 1.55),\n _ngcontent-%COMP%_badge-shake 400ms ease-in-out 300ms;\n }\n\n @keyframes _ngcontent-%COMP%_badge-shake {\n 0%, 100% { transform: translateX(0); }\n 10%, 30%, 50%, 70%, 90% { transform: translateX(-2px); }\n 20%, 40%, 60%, 80% { transform: translateX(2px); }\n }\n\n \n\n .notification-badge[_ngcontent-%COMP%]:hover {\n transform: scale(1.1);\n cursor: default;\n }\n\n .badge-pulse[_ngcontent-%COMP%]:hover .pulse-ring[_ngcontent-%COMP%], \n .badge-pulse[_ngcontent-%COMP%]:hover .pulse-ring-delay[_ngcontent-%COMP%] {\n animation-play-state: paused;\n }"] });
109
+ }
110
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NotificationBadgeComponent, [{
111
+ type: Component,
112
+ args: [{ selector: 'mj-notification-badge', template: `
113
+ @if (badgeConfig?.show) {
114
+ <div class="notification-badge-container">
115
+ @if (badgeConfig?.type === 'count' && badgeConfig?.count != null && badgeConfig?.count! > 0) {
116
+ <div
117
+ class="notification-badge badge-count"
118
+ [class.badge-high]="badgeConfig?.priority === 'high'"
119
+ [class.badge-urgent]="badgeConfig?.priority === 'urgent'"
120
+ [class.badge-animate]="badgeConfig?.animate">
121
+ {{ formatCount(badgeConfig?.count!) }}
122
+ </div>
123
+ }
124
+ @if (badgeConfig?.type === 'dot') {
125
+ <div
126
+ class="notification-badge badge-dot"
127
+ [class.badge-high]="badgeConfig?.priority === 'high'"
128
+ [class.badge-urgent]="badgeConfig?.priority === 'urgent'"
129
+ [class.badge-animate]="badgeConfig?.animate">
130
+ </div>
131
+ }
132
+ @if (badgeConfig?.type === 'pulse') {
133
+ <div
134
+ class="notification-badge badge-pulse"
135
+ [class.badge-high]="badgeConfig?.priority === 'high'"
136
+ [class.badge-urgent]="badgeConfig?.priority === 'urgent'">
137
+ <span class="pulse-ring"></span>
138
+ <span class="pulse-ring-delay"></span>
139
+ @if (badgeConfig?.count != null && badgeConfig?.count! > 0) {
140
+ <span class="pulse-count">{{ formatCount(badgeConfig?.count!) }}</span>
141
+ }
142
+ </div>
143
+ }
144
+ @if (badgeConfig?.type === 'new') {
145
+ <div
146
+ class="notification-badge badge-new"
147
+ [class.badge-animate]="badgeConfig?.animate">
148
+ NEW
149
+ </div>
150
+ }
151
+ </div>
152
+ }
153
+ `, styles: ["\n .notification-badge-container {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .notification-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 10px;\n font-weight: 700;\n line-height: 1;\n color: white;\n border-radius: 10px;\n white-space: nowrap;\n transition: all 150ms ease;\n }\n\n /* Count badge */\n .badge-count {\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: #0076B6;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n .badge-count.badge-high {\n background: #F59E0B;\n }\n\n .badge-count.badge-urgent {\n background: #DC2626;\n }\n\n /* Dot badge */\n .badge-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: #0076B6;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);\n }\n\n .badge-dot.badge-high {\n background: #F59E0B;\n }\n\n .badge-dot.badge-urgent {\n background: #DC2626;\n }\n\n /* Pulse badge with animated rings */\n .badge-pulse {\n position: relative;\n width: 24px;\n height: 24px;\n background: #0076B6;\n border-radius: 50%;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);\n }\n\n .badge-pulse.badge-high {\n background: #F59E0B;\n }\n\n .badge-pulse.badge-urgent {\n background: #DC2626;\n }\n\n .pulse-ring {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 100%;\n height: 100%;\n border: 2px solid currentColor;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n animation: pulse-ring 2s cubic-bezier(0.215, 0.61, 0.355, 1) infinite;\n opacity: 0;\n }\n\n .pulse-ring-delay {\n position: absolute;\n top: 50%;\n left: 50%;\n width: 100%;\n height: 100%;\n border: 2px solid currentColor;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n animation: pulse-ring 2s cubic-bezier(0.215, 0.61, 0.355, 1) infinite;\n animation-delay: 1s;\n opacity: 0;\n }\n\n @keyframes pulse-ring {\n 0% {\n transform: translate(-50%, -50%) scale(0.8);\n opacity: 1;\n }\n 50% {\n transform: translate(-50%, -50%) scale(1.3);\n opacity: 0.5;\n }\n 100% {\n transform: translate(-50%, -50%) scale(1.5);\n opacity: 0;\n }\n }\n\n .pulse-count {\n position: relative;\n z-index: 1;\n font-size: 10px;\n font-weight: 700;\n color: white;\n }\n\n /* New badge */\n .badge-new {\n height: 18px;\n padding: 0 6px;\n background: linear-gradient(135deg, #10B981, #059669);\n font-size: 9px;\n font-weight: 800;\n letter-spacing: 0.5px;\n box-shadow: 0 2px 4px rgba(16, 185, 129, 0.3);\n }\n\n /* Pop-in animation for badges */\n .badge-animate {\n animation: badge-pop 300ms cubic-bezier(0.68, -0.55, 0.265, 1.55);\n }\n\n @keyframes badge-pop {\n 0% {\n transform: scale(0);\n opacity: 0;\n }\n 50% {\n transform: scale(1.2);\n }\n 100% {\n transform: scale(1);\n opacity: 1;\n }\n }\n\n /* Shake animation for urgent badges */\n .badge-urgent.badge-animate {\n animation: badge-pop 300ms cubic-bezier(0.68, -0.55, 0.265, 1.55),\n badge-shake 400ms ease-in-out 300ms;\n }\n\n @keyframes badge-shake {\n 0%, 100% { transform: translateX(0); }\n 10%, 30%, 50%, 70%, 90% { transform: translateX(-2px); }\n 20%, 40%, 60%, 80% { transform: translateX(2px); }\n }\n\n /* Hover effects */\n .notification-badge:hover {\n transform: scale(1.1);\n cursor: default;\n }\n\n .badge-pulse:hover .pulse-ring,\n .badge-pulse:hover .pulse-ring-delay {\n animation-play-state: paused;\n }\n "] }]
154
+ }], () => [{ type: i1.NotificationService }], { conversationId: [{
155
+ type: Input
156
+ }], badgeConfig: [{
157
+ type: Input
158
+ }] }); })();
159
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NotificationBadgeComponent, { className: "NotificationBadgeComponent", filePath: "src/lib/components/notification/notification-badge.component.ts", lineNumber: 232 }); })();
160
+ //# sourceMappingURL=notification-badge.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-badge.component.js","sourceRoot":"","sources":["../../../../src/lib/components/notification/notification-badge.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAqB,MAAM,eAAe,CAAC;AACpE,OAAO,EAAc,OAAO,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;;;;IAcjC,8BAI+C;IAC7C,YACF;IAAA,iBAAM;;;IAFJ,AADA,AADA,0GAAqD,gGACI,iFACb;IAC5C,cACF;IADE,iHACF;;;IAGA,yBAKM;;;IADJ,AADA,AADA,0GAAqD,gGACI,iFACb;;;IAW1C,gCAA0B;IAAA,YAAsC;IAAA,iBAAO;;;IAA7C,cAAsC;IAAtC,sGAAsC;;;IAPpE,8BAG4D;IAE1D,AADA,0BAAgC,cACM;IACtC,iHAA6D;IAG/D,iBAAM;;;IANJ,AADA,0GAAqD,gGACI;IAGzD,eAEC;IAFD,uKAEC;;;IAIH,+BAE+C;IAC7C,qBACF;IAAA,iBAAM;;;IAFJ,+FAA4C;;;IAjClD,8BAA0C;IA8BxC,AAZA,AARA,AATA,iGAA8F,oFAS3D,oFAQE,oFAYF;IAOrC,iBAAM;;;IApCJ,cAQC;IARD,oPAQC;IACD,cAOC;IAPD,kGAOC;IACD,cAWC;IAXD,oGAWC;IACD,cAMC;IAND,kGAMC;;AA5CT;;;GAGG;AA8NH,MAAM,OAAO,0BAA0B;IAOjB;IANX,cAAc,CAAU;IACxB,WAAW,CAAe;IAE3B,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;IAC/B,kBAAkB,GAAuB,IAAI,CAAC;IAEtD,YAAoB,mBAAwC;QAAxC,wBAAmB,GAAnB,mBAAmB,CAAqB;IAAG,CAAC;IAEhE,QAAQ;QACN,uEAAuE;QACvE,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC7C,IAAI,CAAC,mBAAmB;iBACrB,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC;iBACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC9B,SAAS,CAAC,MAAM,CAAC,EAAE;gBAClB,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC;YACnC,CAAC,CAAC,CAAC;QACP,CAAC;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,kBAAkB,CAAC;IACrD,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,KAAa;QACvB,OAAO,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC/C,CAAC;oFApCU,0BAA0B;6DAA1B,0BAA0B;YA1NnC,mFAAyB;;YAAzB,kFAuCC;;;iFAmLQ,0BAA0B;cA7NtC,SAAS;2BACE,uBAAuB,YACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCT;oDAmLQ,cAAc;kBAAtB,KAAK;YACG,WAAW;kBAAnB,KAAK;;kFAFK,0BAA0B"}
@@ -0,0 +1,34 @@
1
+ import { EventEmitter, OnInit, ChangeDetectorRef } from '@angular/core';
2
+ import { DialogRef } from '@progress/kendo-angular-dialog';
3
+ import { ProjectEntity } from '@memberjunction/core-entities';
4
+ import { UserInfo } from '@memberjunction/core';
5
+ import * as i0 from "@angular/core";
6
+ export interface ProjectFormData {
7
+ name: string;
8
+ description: string;
9
+ color: string;
10
+ icon: string;
11
+ }
12
+ export declare class ProjectFormModalComponent implements OnInit {
13
+ private cdr;
14
+ dialogRef: DialogRef;
15
+ project: ProjectEntity | null;
16
+ environmentId: string;
17
+ currentUser: UserInfo;
18
+ projectSaved: EventEmitter<ProjectEntity>;
19
+ formData: ProjectFormData;
20
+ showNameError: boolean;
21
+ isEditMode: boolean;
22
+ availableColors: string[];
23
+ availableIcons: string[];
24
+ constructor(cdr: ChangeDetectorRef);
25
+ ngOnInit(): void;
26
+ private loadProjectData;
27
+ selectColor(color: string): void;
28
+ selectIcon(icon: string): void;
29
+ onSave(): Promise<void>;
30
+ onCancel(): void;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProjectFormModalComponent, never>;
32
+ static ɵcmp: i0.ɵɵComponentDeclaration<ProjectFormModalComponent, "mj-project-form-modal", never, { "dialogRef": { "alias": "dialogRef"; "required": false; }; "project": { "alias": "project"; "required": false; }; "environmentId": { "alias": "environmentId"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; }, { "projectSaved": "projectSaved"; }, never, never, false, never>;
33
+ }
34
+ //# sourceMappingURL=project-form-modal.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-form-modal.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/project/project-form-modal.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAa,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC7G,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAY,MAAM,sBAAsB,CAAC;;AAE1D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAgDD,qBA4Ra,yBAA0B,YAAW,MAAM;IAoB1C,OAAO,CAAC,GAAG;IAnBd,SAAS,EAAG,SAAS,CAAC;IACtB,OAAO,EAAE,aAAa,GAAG,IAAI,CAAQ;IACrC,aAAa,EAAG,MAAM,CAAC;IACvB,WAAW,EAAG,QAAQ,CAAC;IAEtB,YAAY,8BAAqC;IAEpD,QAAQ,EAAE,eAAe,CAK9B;IAEK,aAAa,UAAS;IACtB,UAAU,UAAS;IACnB,eAAe,WAA0B;IACzC,cAAc,WAAyB;gBAE1B,GAAG,EAAE,iBAAiB;IAE1C,QAAQ,IAAI,IAAI;IAQhB,OAAO,CAAC,eAAe;IAWvB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAqC7B,QAAQ,IAAI,IAAI;yCAxFL,yBAAyB;2CAAzB,yBAAyB;CA2FrC"}