@memberjunction/ng-core-entity-forms 5.11.0 → 5.13.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 (102) hide show
  1. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +2 -2
  2. package/dist/lib/custom/AIAgents/add-action-dialog.component.js +2 -2
  3. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +2 -2
  4. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +8 -0
  5. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  6. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +199 -139
  7. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  8. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +2 -2
  9. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +2 -2
  10. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +2 -2
  11. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +6 -6
  12. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
  13. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +2 -2
  14. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +6 -6
  15. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
  16. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +3 -3
  17. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  18. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +2 -2
  19. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +4 -4
  20. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  21. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +2 -2
  22. package/dist/lib/custom/Actions/action-execution-log-form.component.js +5 -5
  23. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  24. package/dist/lib/custom/Actions/action-form.component.js +22 -22
  25. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  26. package/dist/lib/custom/Entities/entity-form.component.d.ts +11 -0
  27. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  28. package/dist/lib/custom/Entities/entity-form.component.js +244 -217
  29. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  30. package/dist/lib/custom/EntityActions/entityaction.form.component.js +3 -3
  31. package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
  32. package/dist/lib/custom/Lists/list-form.component.js +8 -8
  33. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  34. package/dist/lib/custom/Queries/query-category-dialog.component.js +3 -3
  35. package/dist/lib/custom/Queries/query-category-dialog.component.js.map +1 -1
  36. package/dist/lib/custom/Queries/query-form.component.js +2 -2
  37. package/dist/lib/custom/Queries/query-run-dialog.component.js +3 -3
  38. package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
  39. package/dist/lib/custom/Templates/template-param-dialog.component.js +107 -111
  40. package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
  41. package/dist/lib/custom/Templates/template-params-grid.component.js +2 -2
  42. package/dist/lib/custom/Templates/templates-form.component.js +40 -43
  43. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  44. package/dist/lib/custom/Tests/entity-link-pill.component.js +2 -2
  45. package/dist/lib/custom/Tests/entity-link-pill.component.js.map +1 -1
  46. package/dist/lib/custom/Tests/test-form.component.js +2 -2
  47. package/dist/lib/custom/Tests/test-rubric-form.component.js +2 -2
  48. package/dist/lib/custom/Tests/test-rubric-form.component.js.map +1 -1
  49. package/dist/lib/custom/Tests/test-run-feedback-form.component.js +2 -2
  50. package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
  51. package/dist/lib/custom/Tests/test-run-form.component.js +2 -2
  52. package/dist/lib/custom/Tests/test-suite-form.component.js +2 -2
  53. package/dist/lib/custom/Tests/test-suite-run-form.component.js +2 -2
  54. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +2 -2
  55. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +2 -2
  56. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +2 -2
  57. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +2 -2
  58. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts +1 -0
  59. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +1 -1
  60. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +28 -18
  61. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -1
  62. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +2 -2
  63. package/dist/lib/custom/custom-forms.module.d.ts +2 -1
  64. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  65. package/dist/lib/custom/custom-forms.module.js +7 -3
  66. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  67. package/dist/lib/custom/shared/entity-selector-dialog.component.js +2 -2
  68. package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
  69. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +155 -153
  70. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  71. package/dist/lib/generated/Entities/MJAIAgentCategory/mjaiagentcategory.form.component.d.ts +10 -0
  72. package/dist/lib/generated/Entities/MJAIAgentCategory/mjaiagentcategory.form.component.d.ts.map +1 -0
  73. package/dist/lib/generated/Entities/MJAIAgentCategory/mjaiagentcategory.form.component.js +105 -0
  74. package/dist/lib/generated/Entities/MJAIAgentCategory/mjaiagentcategory.form.component.js.map +1 -0
  75. package/dist/lib/generated/Entities/MJAIAgentRequest/mjaiagentrequest.form.component.d.ts.map +1 -1
  76. package/dist/lib/generated/Entities/MJAIAgentRequest/mjaiagentrequest.form.component.js +31 -7
  77. package/dist/lib/generated/Entities/MJAIAgentRequest/mjaiagentrequest.form.component.js.map +1 -1
  78. package/dist/lib/generated/Entities/MJAIAgentRequestType/mjaiagentrequesttype.form.component.d.ts +10 -0
  79. package/dist/lib/generated/Entities/MJAIAgentRequestType/mjaiagentrequesttype.form.component.d.ts.map +1 -0
  80. package/dist/lib/generated/Entities/MJAIAgentRequestType/mjaiagentrequesttype.form.component.js +89 -0
  81. package/dist/lib/generated/Entities/MJAIAgentRequestType/mjaiagentrequesttype.form.component.js.map +1 -0
  82. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.d.ts.map +1 -1
  83. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +50 -14
  84. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
  85. package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.d.ts.map +1 -1
  86. package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.js +22 -4
  87. package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.js.map +1 -1
  88. package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js +13 -11
  89. package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js.map +1 -1
  90. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +83 -81
  91. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
  92. package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js +35 -33
  93. package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js.map +1 -1
  94. package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js +25 -19
  95. package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js.map +1 -1
  96. package/dist/lib/generated/generated-forms.module.d.ts +289 -287
  97. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  98. package/dist/lib/generated/generated-forms.module.js +102 -96
  99. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  100. package/dist/lib/shared/components/template-editor.component.js +85 -89
  101. package/dist/lib/shared/components/template-editor.component.js.map +1 -1
  102. package/package.json +31 -31
@@ -53,7 +53,7 @@ let FlowAgentFormSectionComponent = class FlowAgentFormSectionComponent extends
53
53
  i0.ɵɵconditionalCreate(0, FlowAgentFormSectionComponent_Conditional_0_Template, 1, 3, "mj-flow-agent-editor", 0)(1, FlowAgentFormSectionComponent_Conditional_1_Template, 4, 0, "div", 1);
54
54
  } if (rf & 2) {
55
55
  i0.ɵɵconditional(ctx.AgentID ? 0 : 1);
56
- } }, dependencies: [i1.FlowAgentEditorComponent], styles: ["\n\n[_nghost-%COMP%] {\n display: block;\n width: 100%;\n height: 100%;\n}\n\nmj-flow-agent-editor[_ngcontent-%COMP%] {\n display: block;\n width: 100%;\n \n\n\n\n\n height: calc(100vh - 300px);\n min-height: 400px;\n}\n\n.flow-empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n text-align: center;\n color: #94a3b8;\n}\n\n.flow-empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 12px;\n color: #cbd5e1;\n}\n\n.flow-empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n margin: 0;\n}"] }); }
56
+ } }, dependencies: [i1.FlowAgentEditorComponent], styles: ["\n\n[_nghost-%COMP%] {\n display: block;\n width: 100%;\n height: 100%;\n}\n\nmj-flow-agent-editor[_ngcontent-%COMP%] {\n display: block;\n width: 100%;\n \n\n\n\n\n height: calc(100vh - 300px);\n min-height: 400px;\n}\n\n.flow-empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.flow-empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n margin-bottom: 12px;\n color: var(--mj-border-strong);\n}\n\n.flow-empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n margin: 0;\n}"] }); }
57
57
  };
58
58
  FlowAgentFormSectionComponent = __decorate([
59
59
  RegisterClass(BaseFormSectionComponent, 'AI Agents.FlowAgentSection')
@@ -61,7 +61,7 @@ FlowAgentFormSectionComponent = __decorate([
61
61
  export { FlowAgentFormSectionComponent };
62
62
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FlowAgentFormSectionComponent, [{
63
63
  type: Component,
64
- args: [{ standalone: false, selector: 'mj-flow-agent-form-section', template: "@if (AgentID) {\n <mj-flow-agent-editor\n [AgentID]=\"AgentID\"\n [EditMode]=\"EditMode\"\n [FullScreen]=\"IsFullScreen\"\n (FlowSaved)=\"OnFlowSaved()\"\n (FullScreenToggled)=\"OnFullScreenToggled($event)\">\n </mj-flow-agent-editor>\n} @else {\n <div class=\"flow-empty-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>Save the agent first to configure the workflow.</p>\n </div>\n}\n", styles: ["/* Flow Agent Form Section - thin wrapper */\n:host {\n display: block;\n width: 100%;\n height: 100%;\n}\n\nmj-flow-agent-editor {\n display: block;\n width: 100%;\n /* Subtract the full stack of containers above:\n form-toolbar (~40px) + agent-header (~75px) + form-content padding (24px)\n + panelbar-item header (~52px) + panel-content padding (16px) + margins (~30px)\n + browser chrome (~50px) \u2248 290px. Use 300px with a safety buffer. */\n height: calc(100vh - 300px);\n min-height: 400px;\n}\n\n.flow-empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n text-align: center;\n color: #94a3b8;\n}\n\n.flow-empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n color: #cbd5e1;\n}\n\n.flow-empty-state p {\n font-size: 14px;\n margin: 0;\n}\n"] }]
64
+ args: [{ standalone: false, selector: 'mj-flow-agent-form-section', template: "@if (AgentID) {\n <mj-flow-agent-editor\n [AgentID]=\"AgentID\"\n [EditMode]=\"EditMode\"\n [FullScreen]=\"IsFullScreen\"\n (FlowSaved)=\"OnFlowSaved()\"\n (FullScreenToggled)=\"OnFullScreenToggled($event)\">\n </mj-flow-agent-editor>\n} @else {\n <div class=\"flow-empty-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>Save the agent first to configure the workflow.</p>\n </div>\n}\n", styles: ["/* Flow Agent Form Section - thin wrapper */\n:host {\n display: block;\n width: 100%;\n height: 100%;\n}\n\nmj-flow-agent-editor {\n display: block;\n width: 100%;\n /* Subtract the full stack of containers above:\n form-toolbar (~40px) + agent-header (~75px) + form-content padding (24px)\n + panelbar-item header (~52px) + panel-content padding (16px) + margins (~30px)\n + browser chrome (~50px) \u2248 290px. Use 300px with a safety buffer. */\n height: calc(100vh - 300px);\n min-height: 400px;\n}\n\n.flow-empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-disabled);\n}\n\n.flow-empty-state i {\n font-size: 32px;\n margin-bottom: 12px;\n color: var(--mj-border-strong);\n}\n\n.flow-empty-state p {\n font-size: 14px;\n margin: 0;\n}\n"] }]
65
65
  }], () => [{ type: i0.ChangeDetectorRef }], null); })();
66
66
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FlowAgentFormSectionComponent, { className: "FlowAgentFormSectionComponent", filePath: "src/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.ts", lineNumber: 18 }); })();
67
67
  //# sourceMappingURL=flow-agent-form-section.component.js.map
@@ -570,11 +570,11 @@ export class AddActionDialogComponent {
570
570
  i0.ɵɵproperty("disabled", ctx.selectedCount === 0);
571
571
  i0.ɵɵadvance(2);
572
572
  i0.ɵɵtextInterpolate1(" Add Selected (", ctx.selectedCount, ") ");
573
- } }, dependencies: [i2.NgControlStatus, i2.FormControlDirective, i3.TextBoxComponent, i3.TextBoxPrefixTemplateDirective, i4.ButtonComponent, i5.AsyncPipe], styles: [".add-action-dialog[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n\n\n[_nghost-%COMP%] .k-dialog, \n[_nghost-%COMP%] .k-window {\n z-index: 10000 !important;\n}\n\n[_nghost-%COMP%] .k-overlay {\n z-index: 9999 !important;\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem 1.5rem;\n border-bottom: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-header[_ngcontent-%COMP%] .search-section[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-header[_ngcontent-%COMP%] .search-section[_ngcontent-%COMP%] .search-input[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 400px;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-header[_ngcontent-%COMP%] .header-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-header[_ngcontent-%COMP%] .header-actions[_ngcontent-%COMP%] .stats[_ngcontent-%COMP%] .stat-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n color: #6c757d;\n font-size: 0.9rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-header[_ngcontent-%COMP%] .header-actions[_ngcontent-%COMP%] .stats[_ngcontent-%COMP%] .stat-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #28a745;\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-content[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n overflow: hidden;\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] {\n width: 250px;\n background: #f8f9fa;\n border-right: 1px solid #e0e0e0;\n overflow-y: auto;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .sidebar-header[_ngcontent-%COMP%] {\n padding: 1rem;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .sidebar-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n color: #495057;\n font-size: 1rem;\n font-weight: 600;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .sidebar-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0.5rem;\n color: #6c757d;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] {\n padding: 0.5rem 0;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] .category-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 0.75rem 1rem;\n cursor: pointer;\n transition: all 0.2s ease;\n border-left: 3px solid transparent;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] .category-item[_ngcontent-%COMP%]:hover {\n background: #e9ecef;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] .category-item.selected[_ngcontent-%COMP%] {\n background: #e3f2fd;\n border-left-color: #2196f3;\n color: #1976d2;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] .category-item.selected[_ngcontent-%COMP%] .category-icon[_ngcontent-%COMP%] {\n color: #1976d2;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] .category-item[_ngcontent-%COMP%] .category-icon[_ngcontent-%COMP%] {\n width: 16px;\n text-align: center;\n margin-right: 0.75rem;\n color: #6c757d;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] .category-item[_ngcontent-%COMP%] .category-name[_ngcontent-%COMP%] {\n flex: 1;\n font-weight: 500;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] .category-item[_ngcontent-%COMP%] .category-count[_ngcontent-%COMP%] {\n background: #dee2e6;\n color: #495057;\n padding: 0.25rem 0.5rem;\n border-radius: 12px;\n font-size: 0.8rem;\n font-weight: 600;\n min-width: 24px;\n text-align: center;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] .category-item.selected[_ngcontent-%COMP%] .category-count[_ngcontent-%COMP%] {\n background: #bbdefb;\n color: #1976d2;\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] {\n flex: 1;\n padding: 1.5rem;\n overflow-y: auto;\n background: white;\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 200px;\n color: #6c757d;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%] {\n margin-bottom: 1rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin-top: 1rem;\n font-size: 1.1rem;\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #6c757d;\n text-align: center;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3rem;\n margin-bottom: 1rem;\n color: #dee2e6;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem 0;\n color: #495057;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 1.5rem 0;\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 1.5rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] {\n position: relative;\n background: white;\n border: 2px solid #e0e0e0;\n border-radius: 8px;\n padding: 1.5rem;\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%]:hover {\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.15);\n transform: translateY(-2px);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card.selected[_ngcontent-%COMP%] {\n border-color: #28a745;\n background: #f8fff9;\n box-shadow: 0 4px 12px rgba(40, 167, 69, 0.15);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card.selected[_ngcontent-%COMP%] .selection-indicator[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #28a745;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card.existing[_ngcontent-%COMP%] {\n border-color: #6c757d;\n background: #f8f9fa;\n cursor: default;\n opacity: 0.7;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card.existing[_ngcontent-%COMP%]:hover {\n transform: none;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .selection-indicator[_ngcontent-%COMP%] {\n position: absolute;\n top: 1rem;\n right: 1rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .selection-indicator[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.25rem;\n color: #dee2e6;\n transition: color 0.2s ease;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n margin-bottom: 1rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] .action-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: #e3f2fd;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 1rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] .action-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.25rem;\n color: #1976d2;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] .action-name[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1rem;\n font-weight: 600;\n color: #212529;\n line-height: 1.2;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%] .action-description[_ngcontent-%COMP%] {\n margin: 0 0 1rem 0;\n color: #6c757d;\n line-height: 1.4;\n font-size: 0.9rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%] .category-badge[_ngcontent-%COMP%], \n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%] .type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n background: #f8f9fa;\n color: #495057;\n padding: 0.25rem 0.5rem;\n border-radius: 4px;\n font-size: 0.8rem;\n font-weight: 500;\n margin-right: 0.5rem;\n margin-bottom: 0.5rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%] .category-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%] .type-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%] .type-badge[_ngcontent-%COMP%] {\n background: #fff3cd;\n color: #856404;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .existing-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(108, 117, 125, 0.9);\n color: white;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .existing-overlay[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .existing-overlay[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 40px 1fr 150px 100px 2fr 120px;\n gap: 1rem;\n padding: 1rem;\n background: #f8f9fa;\n border-radius: 6px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 0.5rem;\n font-size: 0.9rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 40px 1fr 150px 100px 2fr 120px;\n gap: 1rem;\n padding: 1rem;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n margin-bottom: 0.5rem;\n cursor: pointer;\n transition: all 0.2s ease;\n align-items: center;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n border-color: #2196f3;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item.selected[_ngcontent-%COMP%] {\n background: #f8fff9;\n border-color: #28a745;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item.selected[_ngcontent-%COMP%] .col-select[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #28a745;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item.existing[_ngcontent-%COMP%] {\n background: #f8f9fa;\n opacity: 0.7;\n cursor: default;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item.existing[_ngcontent-%COMP%]:hover {\n background: #f8f9fa;\n border-color: #e0e0e0;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .col-select[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.25rem;\n color: #dee2e6;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .col-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 500;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .col-name[_ngcontent-%COMP%] .action-icon[_ngcontent-%COMP%] {\n color: #1976d2;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .col-description[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 0.9rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n border-radius: 4px;\n font-size: 0.8rem;\n font-weight: 500;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .status-badge.existing[_ngcontent-%COMP%] {\n background: #6c757d;\n color: white;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .status-badge.available[_ngcontent-%COMP%] {\n background: #d4edda;\n color: #155724;\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .selection-summary[_ngcontent-%COMP%] {\n padding: 1rem 1.5rem;\n background: #d4edda;\n border-top: 1px solid #c3e6cb;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .selection-summary[_ngcontent-%COMP%] .summary-content[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n color: #155724;\n font-weight: 500;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .selection-summary[_ngcontent-%COMP%] .summary-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #28a745;\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 1rem;\n padding: 1rem 1.5rem;\n border-top: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-footer[_ngcontent-%COMP%] button[kendoButton][_ngcontent-%COMP%] {\n min-width: 120px;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-footer[_ngcontent-%COMP%] button[kendoButton][look=\"primary\"][_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0.5rem;\n}\n\n\n\n@media (max-width: 768px) {\n .add-action-dialog[_ngcontent-%COMP%] .dialog-content[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] {\n width: 100%;\n max-height: 200px;\n }\n\n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%], \n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] {\n grid-template-columns: 40px 1fr 80px;\n gap: 0.5rem;\n }\n\n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .col-category[_ngcontent-%COMP%], \n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .col-type[_ngcontent-%COMP%], \n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .col-description[_ngcontent-%COMP%], \n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .col-category[_ngcontent-%COMP%], \n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .col-type[_ngcontent-%COMP%], \n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .col-description[_ngcontent-%COMP%] {\n display: none;\n }\n}"] }); }
573
+ } }, dependencies: [i2.NgControlStatus, i2.FormControlDirective, i3.TextBoxComponent, i3.TextBoxPrefixTemplateDirective, i4.ButtonComponent, i5.AsyncPipe], styles: [".add-action-dialog[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n\n\n[_nghost-%COMP%] .k-dialog, \n[_nghost-%COMP%] .k-window {\n z-index: 10000 !important;\n}\n\n[_nghost-%COMP%] .k-overlay {\n z-index: 9999 !important;\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem 1.5rem;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-header[_ngcontent-%COMP%] .search-section[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-header[_ngcontent-%COMP%] .search-section[_ngcontent-%COMP%] .search-input[_ngcontent-%COMP%] {\n width: 100%;\n max-width: 400px;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-header[_ngcontent-%COMP%] .header-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-header[_ngcontent-%COMP%] .header-actions[_ngcontent-%COMP%] .stats[_ngcontent-%COMP%] .stat-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-header[_ngcontent-%COMP%] .header-actions[_ngcontent-%COMP%] .stats[_ngcontent-%COMP%] .stat-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-content[_ngcontent-%COMP%] {\n display: flex;\n flex: 1;\n overflow: hidden;\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] {\n width: 250px;\n background: var(--mj-bg-surface-card);\n border-right: 1px solid var(--mj-border-default);\n overflow-y: auto;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .sidebar-header[_ngcontent-%COMP%] {\n padding: 1rem;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .sidebar-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n font-size: 1rem;\n font-weight: 600;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .sidebar-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0.5rem;\n color: var(--mj-text-muted);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] {\n padding: 0.5rem 0;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] .category-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 0.75rem 1rem;\n cursor: pointer;\n transition: all 0.2s ease;\n border-left: 3px solid transparent;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] .category-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] .category-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-left-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] .category-item.selected[_ngcontent-%COMP%] .category-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] .category-item[_ngcontent-%COMP%] .category-icon[_ngcontent-%COMP%] {\n width: 16px;\n text-align: center;\n margin-right: 0.75rem;\n color: var(--mj-text-muted);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] .category-item[_ngcontent-%COMP%] .category-name[_ngcontent-%COMP%] {\n flex: 1;\n font-weight: 500;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] .category-item[_ngcontent-%COMP%] .category-count[_ngcontent-%COMP%] {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n padding: 0.25rem 0.5rem;\n border-radius: 12px;\n font-size: 0.8rem;\n font-weight: 600;\n min-width: 24px;\n text-align: center;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] .category-list[_ngcontent-%COMP%] .category-item.selected[_ngcontent-%COMP%] .category-count[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] {\n flex: 1;\n padding: 1.5rem;\n overflow-y: auto;\n background: var(--mj-bg-surface);\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 200px;\n color: var(--mj-text-muted);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%] {\n margin-bottom: 1rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%] .loading-spinner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin-top: 1rem;\n font-size: 1.1rem;\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: var(--mj-text-muted);\n text-align: center;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3rem;\n margin-bottom: 1rem;\n color: var(--mj-border-default);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem 0;\n color: var(--mj-text-secondary);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 1.5rem 0;\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 1.5rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] {\n position: relative;\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 1.5rem;\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n transform: translateY(-2px);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card.selected[_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n background: color-mix(in srgb, var(--mj-status-success) 4%, var(--mj-bg-surface));\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-status-success) 15%, transparent);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card.selected[_ngcontent-%COMP%] .selection-indicator[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card.existing[_ngcontent-%COMP%] {\n border-color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n cursor: default;\n opacity: 0.7;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card.existing[_ngcontent-%COMP%]:hover {\n transform: none;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .selection-indicator[_ngcontent-%COMP%] {\n position: absolute;\n top: 1rem;\n right: 1rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .selection-indicator[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.25rem;\n color: var(--mj-border-default);\n transition: color 0.2s ease;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n margin-bottom: 1rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] .action-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 1rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] .action-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.25rem;\n color: var(--mj-brand-primary);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-header[_ngcontent-%COMP%] .action-name[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1.1rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n line-height: 1.2;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%] .action-description[_ngcontent-%COMP%] {\n margin: 0 0 1rem 0;\n color: var(--mj-text-muted);\n line-height: 1.4;\n font-size: 0.9rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%] .category-badge[_ngcontent-%COMP%], \n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%] .type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n padding: 0.25rem 0.5rem;\n border-radius: 4px;\n font-size: 0.8rem;\n font-weight: 500;\n margin-right: 0.5rem;\n margin-bottom: 0.5rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%] .category-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%] .type-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .card-body[_ngcontent-%COMP%] .type-badge[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .existing-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: color-mix(in srgb, var(--mj-text-muted) 90%, transparent);\n color: var(--mj-text-inverse);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .existing-overlay[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] .action-card[_ngcontent-%COMP%] .existing-overlay[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-weight: 600;\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 40px 1fr 150px 100px 2fr 120px;\n gap: 1rem;\n padding: 1rem;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 0.5rem;\n font-size: 0.9rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 40px 1fr 150px 100px 2fr 120px;\n gap: 1rem;\n padding: 1rem;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n margin-bottom: 0.5rem;\n cursor: pointer;\n transition: all 0.2s ease;\n align-items: center;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 4%, var(--mj-bg-surface));\n border-color: var(--mj-status-success);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item.selected[_ngcontent-%COMP%] .col-select[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item.existing[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n opacity: 0.7;\n cursor: default;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item.existing[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .col-select[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.25rem;\n color: var(--mj-border-default);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .col-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 500;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .col-name[_ngcontent-%COMP%] .action-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .col-description[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n border-radius: 4px;\n font-size: 0.8rem;\n font-weight: 500;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .status-badge.existing[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .status-badge.available[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .selection-summary[_ngcontent-%COMP%] {\n padding: 1rem 1.5rem;\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n border-top: 1px solid color-mix(in srgb, var(--mj-status-success) 25%, var(--mj-bg-surface));\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .selection-summary[_ngcontent-%COMP%] .summary-content[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n color: var(--mj-status-success);\n font-weight: 500;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .selection-summary[_ngcontent-%COMP%] .summary-content[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 1rem;\n padding: 1rem 1.5rem;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-footer[_ngcontent-%COMP%] button[kendoButton][_ngcontent-%COMP%] {\n min-width: 120px;\n}\n\n.add-action-dialog[_ngcontent-%COMP%] .dialog-footer[_ngcontent-%COMP%] button[kendoButton][look=\"primary\"][_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0.5rem;\n}\n\n\n\n@media (max-width: 768px) {\n .add-action-dialog[_ngcontent-%COMP%] .dialog-content[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .add-action-dialog[_ngcontent-%COMP%] .category-sidebar[_ngcontent-%COMP%] {\n width: 100%;\n max-height: 200px;\n }\n\n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%], \n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] {\n grid-template-columns: 40px 1fr 80px;\n gap: 0.5rem;\n }\n\n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .col-category[_ngcontent-%COMP%], \n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .col-type[_ngcontent-%COMP%], \n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-header[_ngcontent-%COMP%] .col-description[_ngcontent-%COMP%], \n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .col-category[_ngcontent-%COMP%], \n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .col-type[_ngcontent-%COMP%], \n .add-action-dialog[_ngcontent-%COMP%] .actions-container[_ngcontent-%COMP%] .actions-list[_ngcontent-%COMP%] .list-item[_ngcontent-%COMP%] .col-description[_ngcontent-%COMP%] {\n display: none;\n }\n}"] }); }
574
574
  }
575
575
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AddActionDialogComponent, [{
576
576
  type: Component,
577
- args: [{ standalone: false, selector: 'mj-add-action-dialog', template: "<!-- Add Action Dialog -->\n<div class=\"add-action-dialog\">\n \n <!-- Dialog Header -->\n <div class=\"dialog-header\">\n <div class=\"search-section\">\n <kendo-textbox \n [formControl]=\"searchControl\" \n placeholder=\"Search actions by name, description, or category...\"\n class=\"search-input\"\n [clearButton]=\"true\">\n <ng-template kendoTextBoxPrefixTemplate>\n <i class=\"fa-solid fa-search\"></i>\n </ng-template>\n </kendo-textbox>\n </div>\n \n <div class=\"header-actions\">\n <!-- View Toggle -->\n <button kendoButton \n [toggleable]=\"true\" \n [selected]=\"(viewMode$ | async) === 'grid'\"\n (click)=\"toggleViewMode()\"\n size=\"small\"\n kendoTooltip\n [title]=\"(viewMode$ | async) === 'grid' ? 'Switch to list view' : 'Switch to grid view'\">\n <i class=\"fa-solid\" \n [class.fa-th]=\"(viewMode$ | async) === 'grid'\" \n [class.fa-list]=\"(viewMode$ | async) === 'list'\"></i>\n </button>\n \n <!-- Stats -->\n <div class=\"stats\">\n <span class=\"stat-item\">\n <i class=\"fa-solid fa-bolt\"></i>\n {{ filteredCount }} of {{ totalActionCount }} actions\n </span>\n </div>\n </div>\n </div>\n\n <!-- Main Content -->\n <div class=\"dialog-content\">\n \n <!-- Category Sidebar -->\n <div class=\"category-sidebar\">\n <div class=\"sidebar-header\">\n <h4><i class=\"fa-solid fa-folder-tree\"></i> Categories</h4>\n </div>\n \n <div class=\"category-list\">\n @for (category of categoryTree$ | async; track category.id) {\n <div class=\"category-item\" \n [class.selected]=\"(selectedCategoryId$ | async) === category.id\"\n (click)=\"selectCategory(category.id)\">\n <i class=\"fa-solid {{ category.icon }} category-icon\"></i>\n <span class=\"category-name\">{{ category.name }}</span>\n <span class=\"category-count\">{{ category.count }}</span>\n </div>\n }\n </div>\n </div>\n\n <!-- Actions Display -->\n <div class=\"actions-container\">\n \n <!-- Loading State -->\n @if (isLoading$ | async) {\n <div class=\"loading-state\">\n <div class=\"loading-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin fa-2x\"></i>\n </div>\n <p>Loading actions...</p>\n </div>\n }\n\n <!-- Empty State -->\n @if (!(isLoading$ | async) && filteredCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-search-minus\"></i>\n <h3>No actions found</h3>\n <p>Try adjusting your search criteria or selecting a different category</p>\n <button kendoButton (click)=\"clearSearch()\">Clear Search</button>\n </div>\n }\n\n <!-- Grid View -->\n @if (!(isLoading$ | async) && (viewMode$ | async) === 'grid' && filteredCount > 0) {\n <div class=\"actions-grid\">\n @for (action of filteredActions$ | async; track action.ID) {\n <div class=\"action-card\" \n [class.selected]=\"action.selected\"\n [class.existing]=\"existingActionIds.includes(action.ID)\"\n (click)=\"toggleActionSelection(action)\">\n \n <!-- Selection Indicator -->\n <div class=\"selection-indicator\">\n <i class=\"fa-solid\" \n [class.fa-check-circle]=\"action.selected\" \n [class.fa-circle]=\"!action.selected\"></i>\n </div>\n \n <!-- Card Content -->\n <div class=\"card-header\">\n <div class=\"action-icon\">\n <i class=\"fa-solid {{ getActionIcon(action) }}\"></i>\n </div>\n <h3 class=\"action-name\">{{ action.Name }}</h3>\n </div>\n \n <div class=\"card-body\">\n <p class=\"action-description\">{{ action.Description || 'No description available' }}</p>\n \n @if (action.categoryName) {\n <div class=\"category-badge\">\n <i class=\"fa-solid fa-folder\"></i>\n {{ action.categoryName }}\n </div>\n }\n \n @if (action.Type) {\n <div class=\"type-badge\">\n <i class=\"fa-solid fa-tag\"></i>\n {{ action.Type }}\n </div>\n }\n </div>\n \n <!-- Existing Action Overlay -->\n @if (existingActionIds.includes(action.ID)) {\n <div class=\"existing-overlay\">\n <i class=\"fa-solid fa-check\"></i>\n <span>Already Added</span>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- List View -->\n @if (!(isLoading$ | async) && (viewMode$ | async) === 'list' && filteredCount > 0) {\n <div class=\"actions-list\">\n \n <!-- List Header -->\n <div class=\"list-header\">\n <span class=\"col-select\"></span>\n <span class=\"col-name\">Name</span>\n <span class=\"col-category\">Category</span>\n <span class=\"col-type\">Type</span>\n <span class=\"col-description\">Description</span>\n <span class=\"col-status\">Status</span>\n </div>\n \n <!-- List Items -->\n @for (action of filteredActions$ | async; track action.ID) {\n <div class=\"list-item\" \n [class.selected]=\"action.selected\"\n [class.existing]=\"existingActionIds.includes(action.ID)\"\n (click)=\"toggleActionSelection(action)\">\n \n <span class=\"col-select\">\n <i class=\"fa-solid\" \n [class.fa-check-circle]=\"action.selected\" \n [class.fa-circle]=\"!action.selected\"></i>\n </span>\n \n <span class=\"col-name\">\n <i class=\"fa-solid {{ getActionIcon(action) }} action-icon\"></i>\n {{ action.Name }}\n </span>\n \n <span class=\"col-category\">{{ action.categoryName || '-' }}</span>\n <span class=\"col-type\">{{ action.Type || '-' }}</span>\n <span class=\"col-description\">{{ action.Description || '-' }}</span>\n \n <span class=\"col-status\">\n @if (existingActionIds.includes(action.ID)) {\n <span class=\"status-badge existing\">\n <i class=\"fa-solid fa-check\"></i>\n Added\n </span>\n } @else {\n <span class=\"status-badge available\">\n <i class=\"fa-solid fa-plus\"></i>\n Available\n </span>\n }\n </span>\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Selected Actions Summary -->\n @if (selectedCount > 0) {\n <div class=\"selection-summary\">\n <div class=\"summary-content\">\n <i class=\"fa-solid fa-check-circle\"></i>\n <span>{{ selectedCount }} action{{ selectedCount === 1 ? '' : 's' }} selected</span>\n </div>\n </div>\n }\n\n <!-- Dialog Footer -->\n <div class=\"dialog-footer\">\n <button kendoButton \n look=\"flat\" \n (click)=\"cancel()\">\n Cancel\n </button>\n \n <button kendoButton \n themeColor=\"primary\" \n [disabled]=\"selectedCount === 0\"\n (click)=\"addSelectedActions()\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Selected ({{ selectedCount }})\n </button>\n </div>\n</div>", styles: [".add-action-dialog {\n display: flex;\n flex-direction: column;\n height: 100%;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n/* Ensure dialog appears above banner and other elements */\n:host ::ng-deep .k-dialog,\n:host ::ng-deep .k-window {\n z-index: 10000 !important;\n}\n\n:host ::ng-deep .k-overlay {\n z-index: 9999 !important;\n}\n\n/* === Dialog Header === */\n.add-action-dialog .dialog-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem 1.5rem;\n border-bottom: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.add-action-dialog .dialog-header .search-section {\n flex: 1;\n}\n\n.add-action-dialog .dialog-header .search-section .search-input {\n width: 100%;\n max-width: 400px;\n}\n\n.add-action-dialog .dialog-header .header-actions {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.add-action-dialog .dialog-header .header-actions .stats .stat-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n color: #6c757d;\n font-size: 0.9rem;\n}\n\n.add-action-dialog .dialog-header .header-actions .stats .stat-item i {\n color: #28a745;\n}\n\n/* === Main Content === */\n.add-action-dialog .dialog-content {\n display: flex;\n flex: 1;\n overflow: hidden;\n}\n\n/* === Category Sidebar === */\n.add-action-dialog .category-sidebar {\n width: 250px;\n background: #f8f9fa;\n border-right: 1px solid #e0e0e0;\n overflow-y: auto;\n}\n\n.add-action-dialog .category-sidebar .sidebar-header {\n padding: 1rem;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.add-action-dialog .category-sidebar .sidebar-header h4 {\n margin: 0;\n color: #495057;\n font-size: 1rem;\n font-weight: 600;\n}\n\n.add-action-dialog .category-sidebar .sidebar-header h4 i {\n margin-right: 0.5rem;\n color: #6c757d;\n}\n\n.add-action-dialog .category-sidebar .category-list {\n padding: 0.5rem 0;\n}\n\n.add-action-dialog .category-sidebar .category-list .category-item {\n display: flex;\n align-items: center;\n padding: 0.75rem 1rem;\n cursor: pointer;\n transition: all 0.2s ease;\n border-left: 3px solid transparent;\n}\n\n.add-action-dialog .category-sidebar .category-list .category-item:hover {\n background: #e9ecef;\n}\n\n.add-action-dialog .category-sidebar .category-list .category-item.selected {\n background: #e3f2fd;\n border-left-color: #2196f3;\n color: #1976d2;\n}\n\n.add-action-dialog .category-sidebar .category-list .category-item.selected .category-icon {\n color: #1976d2;\n}\n\n.add-action-dialog .category-sidebar .category-list .category-item .category-icon {\n width: 16px;\n text-align: center;\n margin-right: 0.75rem;\n color: #6c757d;\n}\n\n.add-action-dialog .category-sidebar .category-list .category-item .category-name {\n flex: 1;\n font-weight: 500;\n}\n\n.add-action-dialog .category-sidebar .category-list .category-item .category-count {\n background: #dee2e6;\n color: #495057;\n padding: 0.25rem 0.5rem;\n border-radius: 12px;\n font-size: 0.8rem;\n font-weight: 600;\n min-width: 24px;\n text-align: center;\n}\n\n.add-action-dialog .category-sidebar .category-list .category-item.selected .category-count {\n background: #bbdefb;\n color: #1976d2;\n}\n\n/* === Actions Container === */\n.add-action-dialog .actions-container {\n flex: 1;\n padding: 1.5rem;\n overflow-y: auto;\n background: white;\n}\n\n/* Loading State */\n.add-action-dialog .actions-container .loading-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 200px;\n color: #6c757d;\n}\n\n.add-action-dialog .actions-container .loading-state .loading-spinner {\n margin-bottom: 1rem;\n}\n\n.add-action-dialog .actions-container .loading-state .loading-spinner i {\n color: #2196f3;\n}\n\n.add-action-dialog .actions-container .loading-state p {\n margin-top: 1rem;\n font-size: 1.1rem;\n}\n\n/* Empty State */\n.add-action-dialog .actions-container .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #6c757d;\n text-align: center;\n}\n\n.add-action-dialog .actions-container .empty-state i {\n font-size: 3rem;\n margin-bottom: 1rem;\n color: #dee2e6;\n}\n\n.add-action-dialog .actions-container .empty-state h3 {\n margin: 0 0 0.5rem 0;\n color: #495057;\n}\n\n.add-action-dialog .actions-container .empty-state p {\n margin: 0 0 1.5rem 0;\n}\n\n/* === Grid View === */\n.add-action-dialog .actions-container .actions-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 1.5rem;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card {\n position: relative;\n background: white;\n border: 2px solid #e0e0e0;\n border-radius: 8px;\n padding: 1.5rem;\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card:hover {\n border-color: #2196f3;\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.15);\n transform: translateY(-2px);\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card.selected {\n border-color: #28a745;\n background: #f8fff9;\n box-shadow: 0 4px 12px rgba(40, 167, 69, 0.15);\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card.selected .selection-indicator i {\n color: #28a745;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card.existing {\n border-color: #6c757d;\n background: #f8f9fa;\n cursor: default;\n opacity: 0.7;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card.existing:hover {\n transform: none;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .selection-indicator {\n position: absolute;\n top: 1rem;\n right: 1rem;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .selection-indicator i {\n font-size: 1.25rem;\n color: #dee2e6;\n transition: color 0.2s ease;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .card-header {\n display: flex;\n align-items: center;\n margin-bottom: 1rem;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .card-header .action-icon {\n width: 40px;\n height: 40px;\n background: #e3f2fd;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 1rem;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .card-header .action-icon i {\n font-size: 1.25rem;\n color: #1976d2;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .card-header .action-name {\n margin: 0;\n font-size: 1.1rem;\n font-weight: 600;\n color: #212529;\n line-height: 1.2;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .card-body .action-description {\n margin: 0 0 1rem 0;\n color: #6c757d;\n line-height: 1.4;\n font-size: 0.9rem;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .card-body .category-badge,\n.add-action-dialog .actions-container .actions-grid .action-card .card-body .type-badge {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n background: #f8f9fa;\n color: #495057;\n padding: 0.25rem 0.5rem;\n border-radius: 4px;\n font-size: 0.8rem;\n font-weight: 500;\n margin-right: 0.5rem;\n margin-bottom: 0.5rem;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .card-body .category-badge i,\n.add-action-dialog .actions-container .actions-grid .action-card .card-body .type-badge i {\n font-size: 0.7rem;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .card-body .type-badge {\n background: #fff3cd;\n color: #856404;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .existing-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(108, 117, 125, 0.9);\n color: white;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .existing-overlay i {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .existing-overlay span {\n font-weight: 600;\n}\n\n/* === List View === */\n.add-action-dialog .actions-container .actions-list .list-header {\n display: grid;\n grid-template-columns: 40px 1fr 150px 100px 2fr 120px;\n gap: 1rem;\n padding: 1rem;\n background: #f8f9fa;\n border-radius: 6px;\n font-weight: 600;\n color: #495057;\n margin-bottom: 0.5rem;\n font-size: 0.9rem;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item {\n display: grid;\n grid-template-columns: 40px 1fr 150px 100px 2fr 120px;\n gap: 1rem;\n padding: 1rem;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n margin-bottom: 0.5rem;\n cursor: pointer;\n transition: all 0.2s ease;\n align-items: center;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item:hover {\n background: #f8f9fa;\n border-color: #2196f3;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item.selected {\n background: #f8fff9;\n border-color: #28a745;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item.selected .col-select i {\n color: #28a745;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item.existing {\n background: #f8f9fa;\n opacity: 0.7;\n cursor: default;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item.existing:hover {\n background: #f8f9fa;\n border-color: #e0e0e0;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item .col-select i {\n font-size: 1.25rem;\n color: #dee2e6;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item .col-name {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 500;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item .col-name .action-icon {\n color: #1976d2;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item .col-description {\n color: #6c757d;\n font-size: 0.9rem;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item .status-badge {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n border-radius: 4px;\n font-size: 0.8rem;\n font-weight: 500;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item .status-badge.existing {\n background: #6c757d;\n color: white;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item .status-badge.available {\n background: #d4edda;\n color: #155724;\n}\n\n/* === Selection Summary === */\n.add-action-dialog .selection-summary {\n padding: 1rem 1.5rem;\n background: #d4edda;\n border-top: 1px solid #c3e6cb;\n}\n\n.add-action-dialog .selection-summary .summary-content {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n color: #155724;\n font-weight: 500;\n}\n\n.add-action-dialog .selection-summary .summary-content i {\n color: #28a745;\n}\n\n/* === Dialog Footer === */\n.add-action-dialog .dialog-footer {\n display: flex;\n justify-content: flex-end;\n gap: 1rem;\n padding: 1rem 1.5rem;\n border-top: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.add-action-dialog .dialog-footer button[kendoButton] {\n min-width: 120px;\n}\n\n.add-action-dialog .dialog-footer button[kendoButton][look=\"primary\"] i {\n margin-right: 0.5rem;\n}\n\n/* === Responsive Design === */\n@media (max-width: 768px) {\n .add-action-dialog .dialog-content {\n flex-direction: column;\n }\n\n .add-action-dialog .category-sidebar {\n width: 100%;\n max-height: 200px;\n }\n\n .add-action-dialog .actions-container .actions-grid {\n grid-template-columns: 1fr;\n }\n\n .add-action-dialog .actions-container .actions-list .list-header,\n .add-action-dialog .actions-container .actions-list .list-item {\n grid-template-columns: 40px 1fr 80px;\n gap: 0.5rem;\n }\n\n .add-action-dialog .actions-container .actions-list .list-header .col-category,\n .add-action-dialog .actions-container .actions-list .list-header .col-type,\n .add-action-dialog .actions-container .actions-list .list-header .col-description,\n .add-action-dialog .actions-container .actions-list .list-item .col-category,\n .add-action-dialog .actions-container .actions-list .list-item .col-type,\n .add-action-dialog .actions-container .actions-list .list-item .col-description {\n display: none;\n }\n}"] }]
577
+ args: [{ standalone: false, selector: 'mj-add-action-dialog', template: "<!-- Add Action Dialog -->\n<div class=\"add-action-dialog\">\n \n <!-- Dialog Header -->\n <div class=\"dialog-header\">\n <div class=\"search-section\">\n <kendo-textbox \n [formControl]=\"searchControl\" \n placeholder=\"Search actions by name, description, or category...\"\n class=\"search-input\"\n [clearButton]=\"true\">\n <ng-template kendoTextBoxPrefixTemplate>\n <i class=\"fa-solid fa-search\"></i>\n </ng-template>\n </kendo-textbox>\n </div>\n \n <div class=\"header-actions\">\n <!-- View Toggle -->\n <button kendoButton \n [toggleable]=\"true\" \n [selected]=\"(viewMode$ | async) === 'grid'\"\n (click)=\"toggleViewMode()\"\n size=\"small\"\n kendoTooltip\n [title]=\"(viewMode$ | async) === 'grid' ? 'Switch to list view' : 'Switch to grid view'\">\n <i class=\"fa-solid\" \n [class.fa-th]=\"(viewMode$ | async) === 'grid'\" \n [class.fa-list]=\"(viewMode$ | async) === 'list'\"></i>\n </button>\n \n <!-- Stats -->\n <div class=\"stats\">\n <span class=\"stat-item\">\n <i class=\"fa-solid fa-bolt\"></i>\n {{ filteredCount }} of {{ totalActionCount }} actions\n </span>\n </div>\n </div>\n </div>\n\n <!-- Main Content -->\n <div class=\"dialog-content\">\n \n <!-- Category Sidebar -->\n <div class=\"category-sidebar\">\n <div class=\"sidebar-header\">\n <h4><i class=\"fa-solid fa-folder-tree\"></i> Categories</h4>\n </div>\n \n <div class=\"category-list\">\n @for (category of categoryTree$ | async; track category.id) {\n <div class=\"category-item\" \n [class.selected]=\"(selectedCategoryId$ | async) === category.id\"\n (click)=\"selectCategory(category.id)\">\n <i class=\"fa-solid {{ category.icon }} category-icon\"></i>\n <span class=\"category-name\">{{ category.name }}</span>\n <span class=\"category-count\">{{ category.count }}</span>\n </div>\n }\n </div>\n </div>\n\n <!-- Actions Display -->\n <div class=\"actions-container\">\n \n <!-- Loading State -->\n @if (isLoading$ | async) {\n <div class=\"loading-state\">\n <div class=\"loading-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin fa-2x\"></i>\n </div>\n <p>Loading actions...</p>\n </div>\n }\n\n <!-- Empty State -->\n @if (!(isLoading$ | async) && filteredCount === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-search-minus\"></i>\n <h3>No actions found</h3>\n <p>Try adjusting your search criteria or selecting a different category</p>\n <button kendoButton (click)=\"clearSearch()\">Clear Search</button>\n </div>\n }\n\n <!-- Grid View -->\n @if (!(isLoading$ | async) && (viewMode$ | async) === 'grid' && filteredCount > 0) {\n <div class=\"actions-grid\">\n @for (action of filteredActions$ | async; track action.ID) {\n <div class=\"action-card\" \n [class.selected]=\"action.selected\"\n [class.existing]=\"existingActionIds.includes(action.ID)\"\n (click)=\"toggleActionSelection(action)\">\n \n <!-- Selection Indicator -->\n <div class=\"selection-indicator\">\n <i class=\"fa-solid\" \n [class.fa-check-circle]=\"action.selected\" \n [class.fa-circle]=\"!action.selected\"></i>\n </div>\n \n <!-- Card Content -->\n <div class=\"card-header\">\n <div class=\"action-icon\">\n <i class=\"fa-solid {{ getActionIcon(action) }}\"></i>\n </div>\n <h3 class=\"action-name\">{{ action.Name }}</h3>\n </div>\n \n <div class=\"card-body\">\n <p class=\"action-description\">{{ action.Description || 'No description available' }}</p>\n \n @if (action.categoryName) {\n <div class=\"category-badge\">\n <i class=\"fa-solid fa-folder\"></i>\n {{ action.categoryName }}\n </div>\n }\n \n @if (action.Type) {\n <div class=\"type-badge\">\n <i class=\"fa-solid fa-tag\"></i>\n {{ action.Type }}\n </div>\n }\n </div>\n \n <!-- Existing Action Overlay -->\n @if (existingActionIds.includes(action.ID)) {\n <div class=\"existing-overlay\">\n <i class=\"fa-solid fa-check\"></i>\n <span>Already Added</span>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- List View -->\n @if (!(isLoading$ | async) && (viewMode$ | async) === 'list' && filteredCount > 0) {\n <div class=\"actions-list\">\n \n <!-- List Header -->\n <div class=\"list-header\">\n <span class=\"col-select\"></span>\n <span class=\"col-name\">Name</span>\n <span class=\"col-category\">Category</span>\n <span class=\"col-type\">Type</span>\n <span class=\"col-description\">Description</span>\n <span class=\"col-status\">Status</span>\n </div>\n \n <!-- List Items -->\n @for (action of filteredActions$ | async; track action.ID) {\n <div class=\"list-item\" \n [class.selected]=\"action.selected\"\n [class.existing]=\"existingActionIds.includes(action.ID)\"\n (click)=\"toggleActionSelection(action)\">\n \n <span class=\"col-select\">\n <i class=\"fa-solid\" \n [class.fa-check-circle]=\"action.selected\" \n [class.fa-circle]=\"!action.selected\"></i>\n </span>\n \n <span class=\"col-name\">\n <i class=\"fa-solid {{ getActionIcon(action) }} action-icon\"></i>\n {{ action.Name }}\n </span>\n \n <span class=\"col-category\">{{ action.categoryName || '-' }}</span>\n <span class=\"col-type\">{{ action.Type || '-' }}</span>\n <span class=\"col-description\">{{ action.Description || '-' }}</span>\n \n <span class=\"col-status\">\n @if (existingActionIds.includes(action.ID)) {\n <span class=\"status-badge existing\">\n <i class=\"fa-solid fa-check\"></i>\n Added\n </span>\n } @else {\n <span class=\"status-badge available\">\n <i class=\"fa-solid fa-plus\"></i>\n Available\n </span>\n }\n </span>\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- Selected Actions Summary -->\n @if (selectedCount > 0) {\n <div class=\"selection-summary\">\n <div class=\"summary-content\">\n <i class=\"fa-solid fa-check-circle\"></i>\n <span>{{ selectedCount }} action{{ selectedCount === 1 ? '' : 's' }} selected</span>\n </div>\n </div>\n }\n\n <!-- Dialog Footer -->\n <div class=\"dialog-footer\">\n <button kendoButton \n look=\"flat\" \n (click)=\"cancel()\">\n Cancel\n </button>\n \n <button kendoButton \n themeColor=\"primary\" \n [disabled]=\"selectedCount === 0\"\n (click)=\"addSelectedActions()\">\n <i class=\"fa-solid fa-plus\"></i>\n Add Selected ({{ selectedCount }})\n </button>\n </div>\n</div>", styles: [".add-action-dialog {\n display: flex;\n flex-direction: column;\n height: 100%;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n/* Ensure dialog appears above banner and other elements */\n:host ::ng-deep .k-dialog,\n:host ::ng-deep .k-window {\n z-index: 10000 !important;\n}\n\n:host ::ng-deep .k-overlay {\n z-index: 9999 !important;\n}\n\n/* === Dialog Header === */\n.add-action-dialog .dialog-header {\n display: flex;\n align-items: center;\n gap: 1rem;\n padding: 1rem 1.5rem;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.add-action-dialog .dialog-header .search-section {\n flex: 1;\n}\n\n.add-action-dialog .dialog-header .search-section .search-input {\n width: 100%;\n max-width: 400px;\n}\n\n.add-action-dialog .dialog-header .header-actions {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.add-action-dialog .dialog-header .header-actions .stats .stat-item {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.add-action-dialog .dialog-header .header-actions .stats .stat-item i {\n color: var(--mj-status-success);\n}\n\n/* === Main Content === */\n.add-action-dialog .dialog-content {\n display: flex;\n flex: 1;\n overflow: hidden;\n}\n\n/* === Category Sidebar === */\n.add-action-dialog .category-sidebar {\n width: 250px;\n background: var(--mj-bg-surface-card);\n border-right: 1px solid var(--mj-border-default);\n overflow-y: auto;\n}\n\n.add-action-dialog .category-sidebar .sidebar-header {\n padding: 1rem;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.add-action-dialog .category-sidebar .sidebar-header h4 {\n margin: 0;\n color: var(--mj-text-secondary);\n font-size: 1rem;\n font-weight: 600;\n}\n\n.add-action-dialog .category-sidebar .sidebar-header h4 i {\n margin-right: 0.5rem;\n color: var(--mj-text-muted);\n}\n\n.add-action-dialog .category-sidebar .category-list {\n padding: 0.5rem 0;\n}\n\n.add-action-dialog .category-sidebar .category-list .category-item {\n display: flex;\n align-items: center;\n padding: 0.75rem 1rem;\n cursor: pointer;\n transition: all 0.2s ease;\n border-left: 3px solid transparent;\n}\n\n.add-action-dialog .category-sidebar .category-list .category-item:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.add-action-dialog .category-sidebar .category-list .category-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-left-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n\n.add-action-dialog .category-sidebar .category-list .category-item.selected .category-icon {\n color: var(--mj-brand-primary);\n}\n\n.add-action-dialog .category-sidebar .category-list .category-item .category-icon {\n width: 16px;\n text-align: center;\n margin-right: 0.75rem;\n color: var(--mj-text-muted);\n}\n\n.add-action-dialog .category-sidebar .category-list .category-item .category-name {\n flex: 1;\n font-weight: 500;\n}\n\n.add-action-dialog .category-sidebar .category-list .category-item .category-count {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n padding: 0.25rem 0.5rem;\n border-radius: 12px;\n font-size: 0.8rem;\n font-weight: 600;\n min-width: 24px;\n text-align: center;\n}\n\n.add-action-dialog .category-sidebar .category-list .category-item.selected .category-count {\n background: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n/* === Actions Container === */\n.add-action-dialog .actions-container {\n flex: 1;\n padding: 1.5rem;\n overflow-y: auto;\n background: var(--mj-bg-surface);\n}\n\n/* Loading State */\n.add-action-dialog .actions-container .loading-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 200px;\n color: var(--mj-text-muted);\n}\n\n.add-action-dialog .actions-container .loading-state .loading-spinner {\n margin-bottom: 1rem;\n}\n\n.add-action-dialog .actions-container .loading-state .loading-spinner i {\n color: var(--mj-brand-primary);\n}\n\n.add-action-dialog .actions-container .loading-state p {\n margin-top: 1rem;\n font-size: 1.1rem;\n}\n\n/* Empty State */\n.add-action-dialog .actions-container .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: var(--mj-text-muted);\n text-align: center;\n}\n\n.add-action-dialog .actions-container .empty-state i {\n font-size: 3rem;\n margin-bottom: 1rem;\n color: var(--mj-border-default);\n}\n\n.add-action-dialog .actions-container .empty-state h3 {\n margin: 0 0 0.5rem 0;\n color: var(--mj-text-secondary);\n}\n\n.add-action-dialog .actions-container .empty-state p {\n margin: 0 0 1.5rem 0;\n}\n\n/* === Grid View === */\n.add-action-dialog .actions-container .actions-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 1.5rem;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card {\n position: relative;\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 1.5rem;\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n transform: translateY(-2px);\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card.selected {\n border-color: var(--mj-status-success);\n background: color-mix(in srgb, var(--mj-status-success) 4%, var(--mj-bg-surface));\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-status-success) 15%, transparent);\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card.selected .selection-indicator i {\n color: var(--mj-status-success);\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card.existing {\n border-color: var(--mj-text-muted);\n background: var(--mj-bg-surface-card);\n cursor: default;\n opacity: 0.7;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card.existing:hover {\n transform: none;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .selection-indicator {\n position: absolute;\n top: 1rem;\n right: 1rem;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .selection-indicator i {\n font-size: 1.25rem;\n color: var(--mj-border-default);\n transition: color 0.2s ease;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .card-header {\n display: flex;\n align-items: center;\n margin-bottom: 1rem;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .card-header .action-icon {\n width: 40px;\n height: 40px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-right: 1rem;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .card-header .action-icon i {\n font-size: 1.25rem;\n color: var(--mj-brand-primary);\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .card-header .action-name {\n margin: 0;\n font-size: 1.1rem;\n font-weight: 600;\n color: var(--mj-text-primary);\n line-height: 1.2;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .card-body .action-description {\n margin: 0 0 1rem 0;\n color: var(--mj-text-muted);\n line-height: 1.4;\n font-size: 0.9rem;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .card-body .category-badge,\n.add-action-dialog .actions-container .actions-grid .action-card .card-body .type-badge {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n padding: 0.25rem 0.5rem;\n border-radius: 4px;\n font-size: 0.8rem;\n font-weight: 500;\n margin-right: 0.5rem;\n margin-bottom: 0.5rem;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .card-body .category-badge i,\n.add-action-dialog .actions-container .actions-grid .action-card .card-body .type-badge i {\n font-size: 0.7rem;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .card-body .type-badge {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .existing-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: color-mix(in srgb, var(--mj-text-muted) 90%, transparent);\n color: var(--mj-text-inverse);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .existing-overlay i {\n font-size: 2rem;\n margin-bottom: 0.5rem;\n}\n\n.add-action-dialog .actions-container .actions-grid .action-card .existing-overlay span {\n font-weight: 600;\n}\n\n/* === List View === */\n.add-action-dialog .actions-container .actions-list .list-header {\n display: grid;\n grid-template-columns: 40px 1fr 150px 100px 2fr 120px;\n gap: 1rem;\n padding: 1rem;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n margin-bottom: 0.5rem;\n font-size: 0.9rem;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item {\n display: grid;\n grid-template-columns: 40px 1fr 150px 100px 2fr 120px;\n gap: 1rem;\n padding: 1rem;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n margin-bottom: 0.5rem;\n cursor: pointer;\n transition: all 0.2s ease;\n align-items: center;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-brand-primary);\n}\n\n.add-action-dialog .actions-container .actions-list .list-item.selected {\n background: color-mix(in srgb, var(--mj-status-success) 4%, var(--mj-bg-surface));\n border-color: var(--mj-status-success);\n}\n\n.add-action-dialog .actions-container .actions-list .list-item.selected .col-select i {\n color: var(--mj-status-success);\n}\n\n.add-action-dialog .actions-container .actions-list .list-item.existing {\n background: var(--mj-bg-surface-card);\n opacity: 0.7;\n cursor: default;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item.existing:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n}\n\n.add-action-dialog .actions-container .actions-list .list-item .col-select i {\n font-size: 1.25rem;\n color: var(--mj-border-default);\n}\n\n.add-action-dialog .actions-container .actions-list .list-item .col-name {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 500;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item .col-name .action-icon {\n color: var(--mj-brand-primary);\n}\n\n.add-action-dialog .actions-container .actions-list .list-item .col-description {\n color: var(--mj-text-muted);\n font-size: 0.9rem;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item .status-badge {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n padding: 0.25rem 0.5rem;\n border-radius: 4px;\n font-size: 0.8rem;\n font-weight: 500;\n}\n\n.add-action-dialog .actions-container .actions-list .list-item .status-badge.existing {\n background: var(--mj-text-muted);\n color: var(--mj-text-inverse);\n}\n\n.add-action-dialog .actions-container .actions-list .list-item .status-badge.available {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n/* === Selection Summary === */\n.add-action-dialog .selection-summary {\n padding: 1rem 1.5rem;\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n border-top: 1px solid color-mix(in srgb, var(--mj-status-success) 25%, var(--mj-bg-surface));\n}\n\n.add-action-dialog .selection-summary .summary-content {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n color: var(--mj-status-success);\n font-weight: 500;\n}\n\n.add-action-dialog .selection-summary .summary-content i {\n color: var(--mj-status-success);\n}\n\n/* === Dialog Footer === */\n.add-action-dialog .dialog-footer {\n display: flex;\n justify-content: flex-end;\n gap: 1rem;\n padding: 1rem 1.5rem;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.add-action-dialog .dialog-footer button[kendoButton] {\n min-width: 120px;\n}\n\n.add-action-dialog .dialog-footer button[kendoButton][look=\"primary\"] i {\n margin-right: 0.5rem;\n}\n\n/* === Responsive Design === */\n@media (max-width: 768px) {\n .add-action-dialog .dialog-content {\n flex-direction: column;\n }\n\n .add-action-dialog .category-sidebar {\n width: 100%;\n max-height: 200px;\n }\n\n .add-action-dialog .actions-container .actions-grid {\n grid-template-columns: 1fr;\n }\n\n .add-action-dialog .actions-container .actions-list .list-header,\n .add-action-dialog .actions-container .actions-list .list-item {\n grid-template-columns: 40px 1fr 80px;\n gap: 0.5rem;\n }\n\n .add-action-dialog .actions-container .actions-list .list-header .col-category,\n .add-action-dialog .actions-container .actions-list .list-header .col-type,\n .add-action-dialog .actions-container .actions-list .list-header .col-description,\n .add-action-dialog .actions-container .actions-list .list-item .col-category,\n .add-action-dialog .actions-container .actions-list .list-item .col-type,\n .add-action-dialog .actions-container .actions-list .list-item .col-description {\n display: none;\n }\n}\n"] }]
578
578
  }], () => [{ type: i1.WindowRef }, { type: i0.ChangeDetectorRef }], null); })();
579
579
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AddActionDialogComponent, { className: "AddActionDialogComponent", filePath: "src/lib/custom/AIAgents/add-action-dialog.component.ts", lineNumber: 33 }); })();
580
580
  //# sourceMappingURL=add-action-dialog.component.js.map
@@ -392,11 +392,11 @@ export class AgentPromptAdvancedSettingsDialogComponent {
392
392
  i0.ɵɵproperty("disabled", i0.ɵɵpipeBind1(9, 8, ctx.isSaving$) || false || (i0.ɵɵpipeBind1(10, 10, ctx.isLoading$) || false) || ctx.hasExecutionOrderError());
393
393
  i0.ɵɵadvance(3);
394
394
  i0.ɵɵconditional(i0.ɵɵpipeBind1(12, 12, ctx.isSaving$) ? 11 : 13);
395
- } }, dependencies: [i2.ɵNgNoValidate, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormGroupDirective, i2.FormControlName, i3.TextBoxComponent, i3.NumericTextBoxComponent, i4.ItemTemplateDirective, i4.DropDownListComponent, i5.ButtonComponent, i6.AsyncPipe], styles: [".prompt-advanced-settings-dialog[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n\n\n[_nghost-%COMP%] .k-dialog, \n[_nghost-%COMP%] .k-window {\n z-index: 10000 !important;\n}\n\n[_nghost-%COMP%] .k-overlay {\n z-index: 9999 !important;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #6c757d;\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n margin-bottom: 1rem;\n}\n\n.loading-spinner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin-top: 1rem;\n font-size: 1.1rem;\n}\n\n\n\n.advanced-form[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 1.5rem;\n}\n\n.form-section[_ngcontent-%COMP%] {\n margin-bottom: 2rem;\n background: white;\n border-radius: 8px;\n border: 1px solid #e0e0e0;\n overflow: hidden;\n}\n\n.section-title[_ngcontent-%COMP%] {\n margin: 0;\n padding: 1rem 1.5rem;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e0e0;\n color: #495057;\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #2196f3;\n}\n\n.form-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.form-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.form-field.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n\n\nlabel[_ngcontent-%COMP%] {\n font-weight: 600;\n color: #495057;\n font-size: 0.9rem;\n}\n\n.form-control[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.field-hint[_ngcontent-%COMP%] {\n color: #6c757d;\n font-size: 0.8rem;\n margin-top: 0.25rem;\n line-height: 1.3;\n}\n\n.field-error[_ngcontent-%COMP%] {\n color: #dc3545;\n font-size: 0.8rem;\n margin-top: 0.25rem;\n}\n\n\n\n.form-control.ng-invalid.ng-touched[_ngcontent-%COMP%], \n.error-border[_ngcontent-%COMP%] {\n border-color: #dc3545 !important;\n}\n\n.form-control.ng-valid.ng-touched[_ngcontent-%COMP%] {\n border-color: #28a745;\n}\n\n\n\n.context-behavior-option[_ngcontent-%COMP%] {\n padding: 0.5rem 0;\n}\n\n.option-title[_ngcontent-%COMP%] {\n font-weight: 500;\n color: #333;\n font-size: 0.9rem;\n}\n\n.option-description[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n color: #666;\n margin-top: 0.25rem;\n line-height: 1.3;\n}\n\n\n\n.dialog-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 1rem;\n padding: 1rem 1.5rem;\n border-top: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.dialog-footer[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n min-width: 120px;\n}\n\n.dialog-footer[_ngcontent-%COMP%] button[themeColor=\"primary\"][_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0.5rem;\n}\n\n\n\n\n\n\n.form-section[_ngcontent-%COMP%]:first-child .section-title[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e3f2fd, #f8f9fa);\n}\n\n\n\n.form-section[_ngcontent-%COMP%]:nth-child(2) .section-title[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f3e5f5, #f8f9fa);\n}\n\n\n\n.form-section[_ngcontent-%COMP%]:nth-child(3) .section-title[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e8f5e8, #f8f9fa);\n}\n\n\n\n@media (max-width: 768px) {\n .form-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n \n .form-field.full-width[_ngcontent-%COMP%] {\n grid-column: 1;\n }\n \n .advanced-form[_ngcontent-%COMP%] {\n padding: 1rem;\n }\n \n .section-title[_ngcontent-%COMP%] {\n padding: 0.75rem 1rem;\n font-size: 1rem;\n }\n \n .dialog-footer[_ngcontent-%COMP%] {\n padding: 1rem;\n flex-direction: column;\n }\n \n .dialog-footer[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n width: 100%;\n }\n}\n\n\n\n.error-border[_ngcontent-%COMP%] {\n border: 2px solid #dc3545 !important;\n background-color: #fff5f5;\n}"] }); }
395
+ } }, dependencies: [i2.ɵNgNoValidate, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormGroupDirective, i2.FormControlName, i3.TextBoxComponent, i3.NumericTextBoxComponent, i4.ItemTemplateDirective, i4.DropDownListComponent, i5.ButtonComponent, i6.AsyncPipe], styles: [".prompt-advanced-settings-dialog[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n\n\n[_nghost-%COMP%] .k-dialog, \n[_nghost-%COMP%] .k-window {\n z-index: 10000 !important;\n}\n\n[_nghost-%COMP%] .k-overlay {\n z-index: 9999 !important;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: var(--mj-text-muted);\n}\n\n.loading-spinner[_ngcontent-%COMP%] {\n margin-bottom: 1rem;\n}\n\n.loading-spinner[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.loading-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin-top: 1rem;\n font-size: 1.1rem;\n}\n\n\n\n.advanced-form[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 1.5rem;\n}\n\n.form-section[_ngcontent-%COMP%] {\n margin-bottom: 2rem;\n background: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.section-title[_ngcontent-%COMP%] {\n margin: 0;\n padding: 1rem 1.5rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.form-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.form-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.form-field.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n\n\nlabel[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.9rem;\n}\n\n.form-control[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.field-hint[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 0.8rem;\n margin-top: 0.25rem;\n line-height: 1.3;\n}\n\n.field-error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-size: 0.8rem;\n margin-top: 0.25rem;\n}\n\n\n\n.form-control.ng-invalid.ng-touched[_ngcontent-%COMP%], \n.error-border[_ngcontent-%COMP%] {\n border-color: var(--mj-status-error) !important;\n}\n\n.form-control.ng-valid.ng-touched[_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n}\n\n\n\n.context-behavior-option[_ngcontent-%COMP%] {\n padding: 0.5rem 0;\n}\n\n.option-title[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n font-size: 0.9rem;\n}\n\n.option-description[_ngcontent-%COMP%] {\n font-size: 0.8rem;\n color: var(--mj-text-secondary);\n margin-top: 0.25rem;\n line-height: 1.3;\n}\n\n\n\n.dialog-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n gap: 1rem;\n padding: 1rem 1.5rem;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.dialog-footer[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n min-width: 120px;\n}\n\n.dialog-footer[_ngcontent-%COMP%] button[themeColor=\"primary\"][_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0.5rem;\n}\n\n\n\n\n\n\n.form-section[_ngcontent-%COMP%]:first-child .section-title[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n\n\n.form-section[_ngcontent-%COMP%]:nth-child(2) .section-title[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n\n\n.form-section[_ngcontent-%COMP%]:nth-child(3) .section-title[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 8%, var(--mj-bg-surface));\n}\n\n\n\n@media (max-width: 768px) {\n .form-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n\n .form-field.full-width[_ngcontent-%COMP%] {\n grid-column: 1;\n }\n\n .advanced-form[_ngcontent-%COMP%] {\n padding: 1rem;\n }\n\n .section-title[_ngcontent-%COMP%] {\n padding: 0.75rem 1rem;\n font-size: 1rem;\n }\n\n .dialog-footer[_ngcontent-%COMP%] {\n padding: 1rem;\n flex-direction: column;\n }\n\n .dialog-footer[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n width: 100%;\n }\n}\n\n\n\n.error-border[_ngcontent-%COMP%] {\n border: 2px solid var(--mj-status-error) !important;\n background-color: color-mix(in srgb, var(--mj-status-error) 4%, var(--mj-bg-surface));\n}"] }); }
396
396
  }
397
397
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AgentPromptAdvancedSettingsDialogComponent, [{
398
398
  type: Component,
399
- args: [{ standalone: false, selector: 'mj-agent-prompt-advanced-settings-dialog', template: "<!-- Prompt Advanced Settings Dialog -->\n<div class=\"prompt-advanced-settings-dialog\">\n \n <!-- Loading State -->\n @if (isLoading$ | async) {\n <div class=\"loading-state\">\n <div class=\"loading-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin fa-2x\"></i>\n </div>\n <p>Loading prompt settings...</p>\n </div>\n } @else {\n \n <!-- Form Content -->\n <form [formGroup]=\"advancedForm\" class=\"advanced-form\">\n \n <!-- Execution Configuration Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-list-ol\"></i>\n Execution Configuration\n </h3>\n \n <div class=\"form-grid\">\n <!-- Execution Order -->\n <div class=\"form-field\">\n <label for=\"executionOrder\">Execution Order *</label>\n <kendo-numerictextbox \n formControlName=\"executionOrder\"\n [min]=\"0\"\n [format]=\"'0'\"\n [class.error-border]=\"hasExecutionOrderError()\"\n class=\"form-control\">\n </kendo-numerictextbox>\n @if (isFieldInvalid('executionOrder')) {\n <div class=\"field-error\">{{ getFieldError('executionOrder') }}</div>\n }\n @if (hasExecutionOrderError()) {\n <div class=\"field-error\">{{ executionOrderError }}</div>\n }\n <small class=\"field-hint\">Order in which this prompt executes (0 = first). Must be unique among agent prompts.</small>\n </div>\n \n <!-- Purpose -->\n <div class=\"form-field\">\n <label for=\"purpose\">Purpose</label>\n <kendo-textbox \n formControlName=\"purpose\"\n placeholder=\"e.g., Initialize, ProcessData, Summarize\"\n class=\"form-control\">\n </kendo-textbox>\n <small class=\"field-hint\">Functional purpose of this prompt within the agent workflow</small>\n </div>\n \n <!-- Status -->\n <div class=\"form-field\">\n <label for=\"status\">Status *</label>\n <kendo-dropdownlist \n formControlName=\"status\"\n [data]=\"statusOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n class=\"form-control\">\n </kendo-dropdownlist>\n @if (isFieldInvalid('status')) {\n <div class=\"field-error\">{{ getFieldError('status') }}</div>\n }\n <small class=\"field-hint\">Current status of this prompt mapping</small>\n </div>\n </div>\n </div>\n\n <!-- Context Behavior Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-comments\"></i>\n Context Behavior\n </h3>\n \n <div class=\"form-grid\">\n <!-- Context Behavior -->\n <div class=\"form-field full-width\">\n <label for=\"contextBehavior\">Context Behavior *</label>\n <kendo-dropdownlist \n formControlName=\"contextBehavior\"\n [data]=\"contextBehaviorOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n class=\"form-control\">\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n <div class=\"context-behavior-option\">\n <div class=\"option-title\">{{ dataItem.text }}</div>\n <div class=\"option-description\">{{ dataItem.description }}</div>\n </div>\n </ng-template>\n </kendo-dropdownlist>\n @if (isFieldInvalid('contextBehavior')) {\n <div class=\"field-error\">{{ getFieldError('contextBehavior') }}</div>\n }\n <small class=\"field-hint\">{{ getContextBehaviorDescription(advancedForm.get('contextBehavior')?.value) }}</small>\n </div>\n \n <!-- Context Message Count (conditional) -->\n @if (requiresMessageCount()) {\n <div class=\"form-field\">\n <label for=\"contextMessageCount\">Message Count *</label>\n <kendo-numerictextbox \n formControlName=\"contextMessageCount\"\n [min]=\"1\"\n [format]=\"'0'\"\n class=\"form-control\">\n </kendo-numerictextbox>\n @if (isFieldInvalid('contextMessageCount')) {\n <div class=\"field-error\">{{ getFieldError('contextMessageCount') }}</div>\n }\n <small class=\"field-hint\">Number of messages to include for {{ advancedForm.get('contextBehavior')?.value }}</small>\n </div>\n }\n </div>\n </div>\n\n <!-- AI Configuration Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-cog\"></i>\n AI Configuration Override\n </h3>\n \n <div class=\"form-grid\">\n <!-- Configuration Override -->\n <div class=\"form-field full-width\">\n <label for=\"configurationID\">AI Configuration</label>\n <kendo-dropdownlist \n formControlName=\"configurationID\"\n [data]=\"configurations$ | async\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"{ Name: 'Use Agent Default', ID: null }\"\n class=\"form-control\">\n </kendo-dropdownlist>\n <small class=\"field-hint\">Override the agent's default AI configuration for this specific prompt</small>\n </div>\n </div>\n </div>\n </form>\n }\n\n <!-- Dialog Footer -->\n <div class=\"dialog-footer\">\n <button kendoButton \n look=\"flat\" \n (click)=\"cancel()\"\n [disabled]=\"(isSaving$ | async) || false\">\n Cancel\n </button>\n \n <button kendoButton \n themeColor=\"primary\" \n (click)=\"save()\"\n [disabled]=\"((isSaving$ | async) || false) || ((isLoading$ | async) || false) || hasExecutionOrderError()\">\n @if (isSaving$ | async) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Saving...\n } @else {\n <i class=\"fa-solid fa-save\"></i>\n Save Settings\n }\n </button>\n </div>\n</div>", styles: [".prompt-advanced-settings-dialog {\n display: flex;\n flex-direction: column;\n height: 100%;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n/* Ensure dialog appears above banner and other elements */\n:host ::ng-deep .k-dialog,\n:host ::ng-deep .k-window {\n z-index: 10000 !important;\n}\n\n:host ::ng-deep .k-overlay {\n z-index: 9999 !important;\n}\n\n/* === Loading State === */\n.loading-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: #6c757d;\n}\n\n.loading-spinner {\n margin-bottom: 1rem;\n}\n\n.loading-spinner i {\n color: #2196f3;\n}\n\n.loading-state p {\n margin-top: 1rem;\n font-size: 1.1rem;\n}\n\n/* === Form Layout === */\n.advanced-form {\n flex: 1;\n overflow-y: auto;\n padding: 1.5rem;\n}\n\n.form-section {\n margin-bottom: 2rem;\n background: white;\n border-radius: 8px;\n border: 1px solid #e0e0e0;\n overflow: hidden;\n}\n\n.section-title {\n margin: 0;\n padding: 1rem 1.5rem;\n background: #f8f9fa;\n border-bottom: 1px solid #e0e0e0;\n color: #495057;\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.section-title i {\n color: #2196f3;\n}\n\n.form-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.form-field {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.form-field.full-width {\n grid-column: 1 / -1;\n}\n\n/* === Form Controls === */\nlabel {\n font-weight: 600;\n color: #495057;\n font-size: 0.9rem;\n}\n\n.form-control {\n width: 100%;\n}\n\n.field-hint {\n color: #6c757d;\n font-size: 0.8rem;\n margin-top: 0.25rem;\n line-height: 1.3;\n}\n\n.field-error {\n color: #dc3545;\n font-size: 0.8rem;\n margin-top: 0.25rem;\n}\n\n/* === Validation States === */\n.form-control.ng-invalid.ng-touched,\n.error-border {\n border-color: #dc3545 !important;\n}\n\n.form-control.ng-valid.ng-touched {\n border-color: #28a745;\n}\n\n/* === Context Behavior Option Template === */\n.context-behavior-option {\n padding: 0.5rem 0;\n}\n\n.option-title {\n font-weight: 500;\n color: #333;\n font-size: 0.9rem;\n}\n\n.option-description {\n font-size: 0.8rem;\n color: #666;\n margin-top: 0.25rem;\n line-height: 1.3;\n}\n\n/* === Dialog Footer === */\n.dialog-footer {\n display: flex;\n justify-content: flex-end;\n gap: 1rem;\n padding: 1rem 1.5rem;\n border-top: 1px solid #e0e0e0;\n background: #f8f9fa;\n}\n\n.dialog-footer button {\n min-width: 120px;\n}\n\n.dialog-footer button[themeColor=\"primary\"] i {\n margin-right: 0.5rem;\n}\n\n/* === Section-Specific Styling === */\n\n/* Execution Configuration */\n.form-section:first-child .section-title {\n background: linear-gradient(135deg, #e3f2fd, #f8f9fa);\n}\n\n/* Context Behavior */\n.form-section:nth-child(2) .section-title {\n background: linear-gradient(135deg, #f3e5f5, #f8f9fa);\n}\n\n/* AI Configuration */\n.form-section:nth-child(3) .section-title {\n background: linear-gradient(135deg, #e8f5e8, #f8f9fa);\n}\n\n/* === Responsive Design === */\n@media (max-width: 768px) {\n .form-grid {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n \n .form-field.full-width {\n grid-column: 1;\n }\n \n .advanced-form {\n padding: 1rem;\n }\n \n .section-title {\n padding: 0.75rem 1rem;\n font-size: 1rem;\n }\n \n .dialog-footer {\n padding: 1rem;\n flex-direction: column;\n }\n \n .dialog-footer button {\n width: 100%;\n }\n}\n\n/* === Error Highlighting === */\n.error-border {\n border: 2px solid #dc3545 !important;\n background-color: #fff5f5;\n}"] }]
399
+ args: [{ standalone: false, selector: 'mj-agent-prompt-advanced-settings-dialog', template: "<!-- Prompt Advanced Settings Dialog -->\n<div class=\"prompt-advanced-settings-dialog\">\n \n <!-- Loading State -->\n @if (isLoading$ | async) {\n <div class=\"loading-state\">\n <div class=\"loading-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin fa-2x\"></i>\n </div>\n <p>Loading prompt settings...</p>\n </div>\n } @else {\n \n <!-- Form Content -->\n <form [formGroup]=\"advancedForm\" class=\"advanced-form\">\n \n <!-- Execution Configuration Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-list-ol\"></i>\n Execution Configuration\n </h3>\n \n <div class=\"form-grid\">\n <!-- Execution Order -->\n <div class=\"form-field\">\n <label for=\"executionOrder\">Execution Order *</label>\n <kendo-numerictextbox \n formControlName=\"executionOrder\"\n [min]=\"0\"\n [format]=\"'0'\"\n [class.error-border]=\"hasExecutionOrderError()\"\n class=\"form-control\">\n </kendo-numerictextbox>\n @if (isFieldInvalid('executionOrder')) {\n <div class=\"field-error\">{{ getFieldError('executionOrder') }}</div>\n }\n @if (hasExecutionOrderError()) {\n <div class=\"field-error\">{{ executionOrderError }}</div>\n }\n <small class=\"field-hint\">Order in which this prompt executes (0 = first). Must be unique among agent prompts.</small>\n </div>\n \n <!-- Purpose -->\n <div class=\"form-field\">\n <label for=\"purpose\">Purpose</label>\n <kendo-textbox \n formControlName=\"purpose\"\n placeholder=\"e.g., Initialize, ProcessData, Summarize\"\n class=\"form-control\">\n </kendo-textbox>\n <small class=\"field-hint\">Functional purpose of this prompt within the agent workflow</small>\n </div>\n \n <!-- Status -->\n <div class=\"form-field\">\n <label for=\"status\">Status *</label>\n <kendo-dropdownlist \n formControlName=\"status\"\n [data]=\"statusOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n class=\"form-control\">\n </kendo-dropdownlist>\n @if (isFieldInvalid('status')) {\n <div class=\"field-error\">{{ getFieldError('status') }}</div>\n }\n <small class=\"field-hint\">Current status of this prompt mapping</small>\n </div>\n </div>\n </div>\n\n <!-- Context Behavior Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-comments\"></i>\n Context Behavior\n </h3>\n \n <div class=\"form-grid\">\n <!-- Context Behavior -->\n <div class=\"form-field full-width\">\n <label for=\"contextBehavior\">Context Behavior *</label>\n <kendo-dropdownlist \n formControlName=\"contextBehavior\"\n [data]=\"contextBehaviorOptions\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n class=\"form-control\">\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n <div class=\"context-behavior-option\">\n <div class=\"option-title\">{{ dataItem.text }}</div>\n <div class=\"option-description\">{{ dataItem.description }}</div>\n </div>\n </ng-template>\n </kendo-dropdownlist>\n @if (isFieldInvalid('contextBehavior')) {\n <div class=\"field-error\">{{ getFieldError('contextBehavior') }}</div>\n }\n <small class=\"field-hint\">{{ getContextBehaviorDescription(advancedForm.get('contextBehavior')?.value) }}</small>\n </div>\n \n <!-- Context Message Count (conditional) -->\n @if (requiresMessageCount()) {\n <div class=\"form-field\">\n <label for=\"contextMessageCount\">Message Count *</label>\n <kendo-numerictextbox \n formControlName=\"contextMessageCount\"\n [min]=\"1\"\n [format]=\"'0'\"\n class=\"form-control\">\n </kendo-numerictextbox>\n @if (isFieldInvalid('contextMessageCount')) {\n <div class=\"field-error\">{{ getFieldError('contextMessageCount') }}</div>\n }\n <small class=\"field-hint\">Number of messages to include for {{ advancedForm.get('contextBehavior')?.value }}</small>\n </div>\n }\n </div>\n </div>\n\n <!-- AI Configuration Section -->\n <div class=\"form-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-cog\"></i>\n AI Configuration Override\n </h3>\n \n <div class=\"form-grid\">\n <!-- Configuration Override -->\n <div class=\"form-field full-width\">\n <label for=\"configurationID\">AI Configuration</label>\n <kendo-dropdownlist \n formControlName=\"configurationID\"\n [data]=\"configurations$ | async\"\n textField=\"Name\"\n valueField=\"ID\"\n [valuePrimitive]=\"true\"\n [defaultItem]=\"{ Name: 'Use Agent Default', ID: null }\"\n class=\"form-control\">\n </kendo-dropdownlist>\n <small class=\"field-hint\">Override the agent's default AI configuration for this specific prompt</small>\n </div>\n </div>\n </div>\n </form>\n }\n\n <!-- Dialog Footer -->\n <div class=\"dialog-footer\">\n <button kendoButton \n look=\"flat\" \n (click)=\"cancel()\"\n [disabled]=\"(isSaving$ | async) || false\">\n Cancel\n </button>\n \n <button kendoButton \n themeColor=\"primary\" \n (click)=\"save()\"\n [disabled]=\"((isSaving$ | async) || false) || ((isLoading$ | async) || false) || hasExecutionOrderError()\">\n @if (isSaving$ | async) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Saving...\n } @else {\n <i class=\"fa-solid fa-save\"></i>\n Save Settings\n }\n </button>\n </div>\n</div>", styles: [".prompt-advanced-settings-dialog {\n display: flex;\n flex-direction: column;\n height: 100%;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n/* Ensure dialog appears above banner and other elements */\n:host ::ng-deep .k-dialog,\n:host ::ng-deep .k-window {\n z-index: 10000 !important;\n}\n\n:host ::ng-deep .k-overlay {\n z-index: 9999 !important;\n}\n\n/* === Loading State === */\n.loading-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n color: var(--mj-text-muted);\n}\n\n.loading-spinner {\n margin-bottom: 1rem;\n}\n\n.loading-spinner i {\n color: var(--mj-brand-primary);\n}\n\n.loading-state p {\n margin-top: 1rem;\n font-size: 1.1rem;\n}\n\n/* === Form Layout === */\n.advanced-form {\n flex: 1;\n overflow-y: auto;\n padding: 1.5rem;\n}\n\n.form-section {\n margin-bottom: 2rem;\n background: var(--mj-bg-surface);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.section-title {\n margin: 0;\n padding: 1rem 1.5rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 1.1rem;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.section-title i {\n color: var(--mj-brand-primary);\n}\n\n.form-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.form-field {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.form-field.full-width {\n grid-column: 1 / -1;\n}\n\n/* === Form Controls === */\nlabel {\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.9rem;\n}\n\n.form-control {\n width: 100%;\n}\n\n.field-hint {\n color: var(--mj-text-muted);\n font-size: 0.8rem;\n margin-top: 0.25rem;\n line-height: 1.3;\n}\n\n.field-error {\n color: var(--mj-status-error);\n font-size: 0.8rem;\n margin-top: 0.25rem;\n}\n\n/* === Validation States === */\n.form-control.ng-invalid.ng-touched,\n.error-border {\n border-color: var(--mj-status-error) !important;\n}\n\n.form-control.ng-valid.ng-touched {\n border-color: var(--mj-status-success);\n}\n\n/* === Context Behavior Option Template === */\n.context-behavior-option {\n padding: 0.5rem 0;\n}\n\n.option-title {\n font-weight: 500;\n color: var(--mj-text-primary);\n font-size: 0.9rem;\n}\n\n.option-description {\n font-size: 0.8rem;\n color: var(--mj-text-secondary);\n margin-top: 0.25rem;\n line-height: 1.3;\n}\n\n/* === Dialog Footer === */\n.dialog-footer {\n display: flex;\n justify-content: flex-end;\n gap: 1rem;\n padding: 1rem 1.5rem;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-card);\n}\n\n.dialog-footer button {\n min-width: 120px;\n}\n\n.dialog-footer button[themeColor=\"primary\"] i {\n margin-right: 0.5rem;\n}\n\n/* === Section-Specific Styling === */\n\n/* Execution Configuration */\n.form-section:first-child .section-title {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n/* Context Behavior */\n.form-section:nth-child(2) .section-title {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n/* AI Configuration */\n.form-section:nth-child(3) .section-title {\n background: color-mix(in srgb, var(--mj-status-success) 8%, var(--mj-bg-surface));\n}\n\n/* === Responsive Design === */\n@media (max-width: 768px) {\n .form-grid {\n grid-template-columns: 1fr;\n gap: 1rem;\n padding: 1rem;\n }\n\n .form-field.full-width {\n grid-column: 1;\n }\n\n .advanced-form {\n padding: 1rem;\n }\n\n .section-title {\n padding: 0.75rem 1rem;\n font-size: 1rem;\n }\n\n .dialog-footer {\n padding: 1rem;\n flex-direction: column;\n }\n\n .dialog-footer button {\n width: 100%;\n }\n}\n\n/* === Error Highlighting === */\n.error-border {\n border: 2px solid var(--mj-status-error) !important;\n background-color: color-mix(in srgb, var(--mj-status-error) 4%, var(--mj-bg-surface));\n}\n"] }]
400
400
  }], () => [{ type: i1.WindowRef }, { type: i2.FormBuilder }, { type: i0.ChangeDetectorRef }], null); })();
401
401
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentPromptAdvancedSettingsDialogComponent, { className: "AgentPromptAdvancedSettingsDialogComponent", filePath: "src/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.ts", lineNumber: 29 }); })();
402
402
  //# sourceMappingURL=agent-prompt-advanced-settings-dialog.component.js.map
@@ -1,6 +1,8 @@
1
1
  import { ViewContainerRef, OnDestroy } from '@angular/core';
2
2
  import { MJActionEntity, MJAIAgentLearningCycleEntity, MJAIAgentNoteEntity, MJAIAgentTypeEntity, MJAIAgentRelationshipEntity } from '@memberjunction/core-entities';
3
3
  import { MJAIAgentRunEntityExtended, MJAIPromptEntityExtended, MJAIAgentEntityExtended } from "@memberjunction/ai-core-plus";
4
+ import { CompositeKey } from '@memberjunction/core';
5
+ import { TreeBranchConfig } from '@memberjunction/ng-trees';
4
6
  import { MJAIAgentFormComponent } from '../../generated/Entities/MJAIAgent/mjaiagent.form.component';
5
7
  import * as i0 from "@angular/core";
6
8
  /**
@@ -150,6 +152,12 @@ export declare class MJAIAgentFormComponentExtended extends MJAIAgentFormCompone
150
152
  }[];
151
153
  /** Agent types loaded from the database */
152
154
  agentTypes: any[];
155
+ /** TreeDropdown configuration for the agent category field */
156
+ CategoryBranchConfig: TreeBranchConfig;
157
+ /** Current category selection for the TreeDropdown */
158
+ SelectedCategoryKey: CompositeKey | null;
159
+ /** Handle category selection change from the TreeDropdown */
160
+ OnCategoryChange(value: CompositeKey | CompositeKey[] | null): void;
153
161
  /** Currently selected context compression prompt */
154
162
  selectedContextCompressionPrompt: any;
155
163
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ai-agent-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/AIAgents/ai-agent-form.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-agent-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/AIAgents/ai-agent-form.component.ts"],"names":[],"mappings":"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"}