@memberjunction/ng-dashboards 5.44.0 → 5.45.1

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 (73) hide show
  1. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +1 -0
  2. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -1
  3. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +5 -3
  4. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -1
  5. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts +4 -2
  6. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
  7. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +13 -11
  8. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  9. package/dist/AI/components/prompts/prompt-version-control.component.d.ts +3 -1
  10. package/dist/AI/components/prompts/prompt-version-control.component.d.ts.map +1 -1
  11. package/dist/AI/components/prompts/prompt-version-control.component.js +12 -10
  12. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  13. package/dist/AI/components/tags/tags-resource.component.d.ts +1 -0
  14. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  15. package/dist/AI/components/tags/tags-resource.component.js +10 -8
  16. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  17. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +2 -1
  18. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
  19. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +1 -1
  20. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  21. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +1 -0
  22. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  23. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +5 -3
  24. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  25. package/dist/Credentials/components/credentials-categories-resource.component.d.ts +3 -1
  26. package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
  27. package/dist/Credentials/components/credentials-categories-resource.component.js +11 -5
  28. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  29. package/dist/Credentials/components/credentials-list-resource.component.d.ts +3 -2
  30. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  31. package/dist/Credentials/components/credentials-list-resource.component.js +23 -9
  32. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  33. package/dist/Credentials/components/credentials-types-resource.component.d.ts +3 -2
  34. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  35. package/dist/Credentials/components/credentials-types-resource.component.js +10 -4
  36. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  37. package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts +2 -1
  38. package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts.map +1 -1
  39. package/dist/DatabaseDesigner/components/modify/database-modify.component.js +13 -6
  40. package/dist/DatabaseDesigner/components/modify/database-modify.component.js.map +1 -1
  41. package/dist/FormBuilder/form-builder-resource.component.d.ts +2 -1
  42. package/dist/FormBuilder/form-builder-resource.component.d.ts.map +1 -1
  43. package/dist/FormBuilder/form-builder-resource.component.js +10 -8
  44. package/dist/FormBuilder/form-builder-resource.component.js.map +1 -1
  45. package/dist/MCP/mcp-dashboard.component.d.ts +3 -1
  46. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  47. package/dist/MCP/mcp-dashboard.component.js +32 -14
  48. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  49. package/dist/QueryBrowser/query-browser-resource.component.d.ts +4 -2
  50. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  51. package/dist/QueryBrowser/query-browser-resource.component.js +15 -13
  52. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  53. package/dist/UserRoutines/user-routines-agent-context.d.ts +44 -0
  54. package/dist/UserRoutines/user-routines-agent-context.d.ts.map +1 -0
  55. package/dist/UserRoutines/user-routines-agent-context.js +81 -0
  56. package/dist/UserRoutines/user-routines-agent-context.js.map +1 -0
  57. package/dist/UserRoutines/user-routines-resource.component.d.ts +60 -0
  58. package/dist/UserRoutines/user-routines-resource.component.d.ts.map +1 -0
  59. package/dist/UserRoutines/user-routines-resource.component.js +328 -0
  60. package/dist/UserRoutines/user-routines-resource.component.js.map +1 -0
  61. package/dist/module.d.ts +16 -15
  62. package/dist/module.d.ts.map +1 -1
  63. package/dist/module.js +7 -0
  64. package/dist/module.js.map +1 -1
  65. package/dist/public-api.d.ts +2 -0
  66. package/dist/public-api.d.ts.map +1 -1
  67. package/dist/public-api.js +3 -0
  68. package/dist/public-api.js.map +1 -1
  69. package/dist/routines-dashboards.module.d.ts +17 -0
  70. package/dist/routines-dashboards.module.d.ts.map +1 -0
  71. package/dist/routines-dashboards.module.js +65 -0
  72. package/dist/routines-dashboards.module.js.map +1 -0
  73. package/package.json +63 -58
@@ -4,9 +4,9 @@ import { Subject, BehaviorSubject } from 'rxjs';
4
4
  import { BaseAngularComponent } from '@memberjunction/ng-base-types';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@memberjunction/ng-notifications";
7
- import * as i2 from "@angular/forms";
8
- import * as i3 from "@memberjunction/ng-shared-generic";
9
- import * as i4 from "@memberjunction/ng-ui-components";
7
+ import * as i2 from "@memberjunction/ng-ui-components";
8
+ import * as i3 from "@angular/forms";
9
+ import * as i4 from "@memberjunction/ng-shared-generic";
10
10
  import * as i5 from "@angular/common";
11
11
  const _forTrack0 = ($index, $item) => $item.ID;
12
12
  const _forTrack1 = ($index, $item) => $item.id;
@@ -689,6 +689,7 @@ function PromptVersionControlComponent_Conditional_2_Template(rf, ctx) { if (rf
689
689
  } }
690
690
  export class PromptVersionControlComponent extends BaseAngularComponent {
691
691
  notificationService;
692
+ confirmService;
692
693
  prompt = null;
693
694
  autoLoad = true;
694
695
  showRestoreActions = true;
@@ -726,9 +727,10 @@ export class PromptVersionControlComponent extends BaseAngularComponent {
726
727
  groupByDate: true
727
728
  };
728
729
  destroy$ = new Subject();
729
- constructor(notificationService) {
730
+ constructor(notificationService, confirmService) {
730
731
  super();
731
732
  this.notificationService = notificationService;
733
+ this.confirmService = confirmService;
732
734
  }
733
735
  ngOnInit() {
734
736
  this.loadAvailablePrompts();
@@ -925,8 +927,8 @@ export class PromptVersionControlComponent extends BaseAngularComponent {
925
927
  this.notificationService.CreateSimpleNotification('Cannot restore this version', 'warning', 3000);
926
928
  return;
927
929
  }
928
- const confirm = window.confirm(`Are you sure you want to restore to version ${version.version} from ${version.changedAt.toLocaleString()}? This will overwrite the current prompt.`);
929
- if (!confirm)
930
+ const confirmed = await this.confirmService.Confirm({ title: 'Restore version', message: `Restore to version ${version.version} from ${version.changedAt.toLocaleString()}?`, detail: 'This will overwrite the current prompt.' });
931
+ if (!confirmed)
930
932
  return;
931
933
  try {
932
934
  this.isLoading = true;
@@ -1151,7 +1153,7 @@ export class PromptVersionControlComponent extends BaseAngularComponent {
1151
1153
  this.prompt = prompt;
1152
1154
  this.loadVersionHistory();
1153
1155
  }
1154
- static ɵfac = function PromptVersionControlComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PromptVersionControlComponent)(i0.ɵɵdirectiveInject(i1.MJNotificationService)); };
1156
+ static ɵfac = function PromptVersionControlComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PromptVersionControlComponent)(i0.ɵɵdirectiveInject(i1.MJNotificationService), i0.ɵɵdirectiveInject(i2.MJConfirmService)); };
1155
1157
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PromptVersionControlComponent, selectors: [["app-prompt-version-control"]], inputs: { prompt: "prompt", autoLoad: "autoLoad", showRestoreActions: "showRestoreActions", showComparison: "showComparison", maxVersions: "maxVersions" }, outputs: { versionSelected: "versionSelected", versionRestored: "versionRestored", versionCompared: "versionCompared" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 1, consts: [[1, "prompt-version-control"], [1, "prompt-selector-section"], [1, "section-title"], [1, "fa-solid", "fa-history"], [1, "text-muted", "mb-3"], [1, "prompt-selector"], [1, "search-box", "mb-3"], [1, "input-group"], [1, "input-group-text"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search prompts...", 1, "form-control", 3, "ngModelChange", "ngModel"], [1, "prompts-list"], ["Size", "compact", "Icon", "fa-solid fa-comment-dots", "Title", "No prompts available"], [1, "prompt-item"], [1, "prompt-item", 3, "click"], [1, "prompt-info"], [1, "prompt-title"], [1, "prompt-description"], [1, "prompt-actions"], [1, "fa-solid", "fa-arrow-right"], [1, "version-toolbar"], [1, "toolbar-section"], [1, "toolbar-title"], [1, "prompt-name"], [1, "view-mode-toggle"], ["role", "group", 1, "btn-group", "btn-group-sm"], ["type", "radio", "name", "view", "id", "timelineView", "value", "timeline", 1, "btn-check", 3, "ngModelChange", "ngModel"], ["for", "timelineView", 1, "btn", "btn-outline-primary"], [1, "fa-solid", "fa-timeline"], ["type", "radio", "name", "view", "id", "comparisonView", "value", "comparison", 1, "btn-check", 3, "ngModelChange", "ngModel"], ["for", "comparisonView", 1, "btn", "btn-outline-primary"], [1, "fa-solid", "fa-code-compare"], ["type", "radio", "name", "view", "id", "detailsView", "value", "details", 1, "btn-check", 3, "ngModelChange", "ngModel"], ["for", "detailsView", 1, "btn", "btn-outline-primary"], [1, "fa-solid", "fa-list"], [1, "filter-controls"], [1, "form-label"], [1, "form-select", "form-select-sm", 3, "ngModelChange", "ngModel"], ["value", "all"], ["value", "updates"], ["value", "major"], ["value", "template"], [1, "form-check", "form-switch"], ["type", "checkbox", "id", "showSystem", 1, "form-check-input", 3, "ngModelChange", "ngModel"], ["for", "showSystem", 1, "form-check-label"], [1, "search-controls"], ["type", "text", "placeholder", "Search changes...", 1, "form-control", "form-control-sm", 3, "ngModelChange", "ngModel"], [1, "action-buttons"], ["type", "button", 1, "btn", "btn-sm", "btn-outline-secondary", 3, "click", "title"], [1, "fa-solid"], ["type", "button", "title", "Refresh history", 1, "btn", "btn-sm", "btn-outline-secondary", 3, "click", "disabled"], [1, "fa-solid", "fa-refresh"], ["type", "button", "title", "Export history", 1, "btn", "btn-sm", "btn-outline-info", 3, "click"], [1, "fa-solid", "fa-download"], [1, "loading-container"], [1, "error-container"], ["size", "large", 3, "text"], [1, "timeline-container"], [1, "comparison-container"], [1, "details-container"], [1, "version-timeline"], [1, "no-versions-message"], [1, "timeline-item", 3, "selected", "active"], [1, "timeline-item", 3, "click"], [1, "timeline-marker"], [1, "marker-icon"], [1, "timeline-line"], [1, "timeline-content"], [1, "version-header"], [1, "version-info"], [1, "version-label"], [1, "version-meta"], [1, "change-date"], [1, "changed-by"], [1, "change-source", "badge"], [1, "version-actions"], ["type", "button", "title", "Compare with next version", 1, "btn", "btn-sm", "btn-outline-primary"], ["type", "button", "title", "Restore this version", 1, "btn", "btn-sm", "btn-outline-success"], [1, "version-description"], [1, "changes-summary"], ["type", "button", "title", "Compare with next version", 1, "btn", "btn-sm", "btn-outline-primary", 3, "click"], ["type", "button", "title", "Restore this version", 1, "btn", "btn-sm", "btn-outline-success", 3, "click"], [1, "fa-solid", "fa-undo"], [1, "changes-list"], [1, "change-item"], [1, "field-name"], [1, "change-arrow"], [1, "new-value"], [1, "old-value"], [1, "fa-solid", "fa-info-circle", "text-muted"], [1, "text-muted"], [1, "comparison-selectors"], [1, "selector-group"], [1, "form-select", 3, "ngModelChange", "ngModel"], [3, "ngValue"], [1, "comparison-arrow"], [1, "comparison-results"], [1, "comparison-header"], [1, "comparison-title"], [1, "changes-count"], [1, "differences-list"], [1, "no-differences"], [1, "difference-item", 3, "class"], [1, "difference-item"], [1, "diff-header"], [1, "field-info"], [1, "change-type", "badge"], [1, "template-badge", "badge", "badge-info"], [1, "diff-content"], [1, "side-by-side-diff"], [1, "diff-added"], [1, "diff-removed"], [1, "diff-old"], [1, "diff-label"], [1, "diff-value", "old-value"], [1, "template-content"], [1, "diff-new"], [1, "diff-value", "new-value"], [1, "fa-solid", "fa-check-circle", "text-success"], [1, "version-details"], ["Size", "compact", "Icon", "fa-solid fa-hand-pointer", "Title", "Select a version from the timeline to view details."], [1, "details-header"], [1, "details-title"], [1, "details-meta"], [1, "details-content"], [1, "detail-section"], [1, "detail-grid"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value"], [1, "json-viewer"], [1, "json-content"], [1, "template-viewer"], ["Variant", "error"], ["mjButton", "", "variant", "danger", "size", "sm", "actions", "", 3, "click"]], template: function PromptVersionControlComponent_Template(rf, ctx) { if (rf & 1) {
1156
1158
  i0.ɵɵelementStart(0, "div", 0);
1157
1159
  i0.ɵɵconditionalCreate(1, PromptVersionControlComponent_Conditional_1_Template, 15, 2, "div", 1)(2, PromptVersionControlComponent_Conditional_2_Template, 53, 17);
@@ -1159,12 +1161,12 @@ export class PromptVersionControlComponent extends BaseAngularComponent {
1159
1161
  } if (rf & 2) {
1160
1162
  i0.ɵɵadvance();
1161
1163
  i0.ɵɵconditional(!ctx.prompt ? 1 : 2);
1162
- } }, dependencies: [i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.CheckboxControlValueAccessor, i2.SelectControlValueAccessor, i2.RadioControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.LoadingComponent, i4.MJButtonDirective, i4.MJEmptyStateComponent, i4.MJAlertComponent, i5.JsonPipe, i5.DatePipe], styles: [".prompt-version-control[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface-card);\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .toolbar-title[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .toolbar-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .toolbar-title[_ngcontent-%COMP%] .prompt-name[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-muted);\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .filter-controls[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .search-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .filter-controls[_ngcontent-%COMP%] .form-label[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .search-controls[_ngcontent-%COMP%] .form-label[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.875rem;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .filter-controls[_ngcontent-%COMP%] .form-select[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .filter-controls[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .search-controls[_ngcontent-%COMP%] .form-select[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .search-controls[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%] {\n min-width: 120px;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .filter-controls[_ngcontent-%COMP%] .form-check[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .search-controls[_ngcontent-%COMP%] .form-check[_ngcontent-%COMP%] {\n margin: 0;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .filter-controls[_ngcontent-%COMP%] .form-check[_ngcontent-%COMP%] .form-check-label[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .search-controls[_ngcontent-%COMP%] .form-check[_ngcontent-%COMP%] .form-check-label[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .loading-container[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.prompt-version-control[_ngcontent-%COMP%] .loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] {\n text-align: center;\n}\n.prompt-version-control[_ngcontent-%COMP%] .loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .loading-message[_ngcontent-%COMP%] {\n margin-top: 1rem;\n color: var(--mj-text-muted);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] {\n flex: 1;\n padding: 1rem;\n overflow-y: auto;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] {\n max-width: 800px;\n margin: 0 auto;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] {\n display: flex;\n position: relative;\n margin-bottom: 2rem;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%]:hover .timeline-content[_ngcontent-%COMP%] {\n box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.1);\n transform: translateY(-1px);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item.selected[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item.active[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] .marker-icon[_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n background-color: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin-right: 1.5rem;\n flex-shrink: 0;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] .marker-icon[_ngcontent-%COMP%] {\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 3px solid;\n background: var(--mj-bg-surface);\n font-size: 1rem;\n z-index: 2;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] .marker-icon.change-create[_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n color: var(--mj-status-success);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] .marker-icon.change-update[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] .marker-icon.change-delete[_ngcontent-%COMP%] {\n border-color: var(--mj-status-error);\n color: var(--mj-status-error);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] .timeline-line[_ngcontent-%COMP%] {\n width: 2px;\n flex: 1;\n background: var(--mj-border-default);\n margin-top: 0.5rem;\n min-height: 2rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 0.5rem;\n padding: 1.5rem;\n transition: all 0.2s ease;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 1rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] .version-info[_ngcontent-%COMP%] .version-label[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem 0;\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] .version-info[_ngcontent-%COMP%] .version-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 0.875rem;\n color: var(--mj-text-muted);\n flex-wrap: wrap;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] .version-info[_ngcontent-%COMP%] .version-meta[_ngcontent-%COMP%] .change-date[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] .version-info[_ngcontent-%COMP%] .version-meta[_ngcontent-%COMP%] .badge[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] .version-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] .version-actions[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%] {\n padding: 0.25rem 0.5rem;\n font-size: 0.75rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-description[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n margin-bottom: 1rem;\n line-height: 1.5;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .changes-summary[_ngcontent-%COMP%] .changes-list[_ngcontent-%COMP%] .change-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 0.5rem;\n background: var(--mj-bg-surface-card);\n border-radius: 0.375rem;\n margin-bottom: 0.5rem;\n font-size: 0.875rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .changes-summary[_ngcontent-%COMP%] .changes-list[_ngcontent-%COMP%] .change-item[_ngcontent-%COMP%] .field-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-secondary);\n margin-right: 0.75rem;\n min-width: 100px;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .changes-summary[_ngcontent-%COMP%] .changes-list[_ngcontent-%COMP%] .change-item[_ngcontent-%COMP%] .change-arrow[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .changes-summary[_ngcontent-%COMP%] .changes-list[_ngcontent-%COMP%] .change-item[_ngcontent-%COMP%] .change-arrow[_ngcontent-%COMP%] .old-value[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n text-decoration: line-through;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .changes-summary[_ngcontent-%COMP%] .changes-list[_ngcontent-%COMP%] .change-item[_ngcontent-%COMP%] .change-arrow[_ngcontent-%COMP%] .new-value[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-weight: 500;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .changes-summary[_ngcontent-%COMP%] .changes-list[_ngcontent-%COMP%] .change-item[_ngcontent-%COMP%] .change-arrow[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .no-versions-message[_ngcontent-%COMP%] {\n text-align: center;\n padding: 3rem 1rem;\n color: var(--mj-text-muted);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .no-versions-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3rem;\n margin-bottom: 1rem;\n display: block;\n opacity: 0.5;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .no-versions-message[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0.5rem 0;\n font-size: 1rem;\n line-height: 1.5;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] {\n flex: 1;\n padding: 1rem;\n overflow-y: auto;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-selectors[_ngcontent-%COMP%] {\n display: flex;\n align-items: end;\n gap: 1rem;\n margin-bottom: 2rem;\n padding: 1rem;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 0.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-selectors[_ngcontent-%COMP%] .selector-group[_ngcontent-%COMP%] {\n flex: 1;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-selectors[_ngcontent-%COMP%] .selector-group[_ngcontent-%COMP%] .form-label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-selectors[_ngcontent-%COMP%] .comparison-arrow[_ngcontent-%COMP%] {\n padding-bottom: 0.375rem;\n color: var(--mj-text-muted);\n font-size: 1.25rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 0.5rem;\n overflow: hidden;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .comparison-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .comparison-header[_ngcontent-%COMP%] .comparison-title[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .comparison-header[_ngcontent-%COMP%] .changes-count[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-border-default);\n padding: 1.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item.diff-added[_ngcontent-%COMP%] {\n border-left: 4px solid var(--mj-status-success);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item.diff-modified[_ngcontent-%COMP%] {\n border-left: 4px solid var(--mj-status-warning);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item.diff-removed[_ngcontent-%COMP%] {\n border-left: 4px solid var(--mj-status-error);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-header[_ngcontent-%COMP%] {\n margin-bottom: 1rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-header[_ngcontent-%COMP%] .field-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-header[_ngcontent-%COMP%] .field-info[_ngcontent-%COMP%] .field-name[_ngcontent-%COMP%] {\n font-size: 1rem;\n color: var(--mj-text-secondary);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-header[_ngcontent-%COMP%] .field-info[_ngcontent-%COMP%] .badge[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-header[_ngcontent-%COMP%] .field-info[_ngcontent-%COMP%] .badge.template-badge[_ngcontent-%COMP%] {\n background-color: var(--mj-brand-primary-hover);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-old[_ngcontent-%COMP%] .diff-label[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-new[_ngcontent-%COMP%] .diff-label[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n font-weight: 600;\n margin-bottom: 0.5rem;\n color: var(--mj-text-muted);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-old[_ngcontent-%COMP%] .diff-value[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-new[_ngcontent-%COMP%] .diff-value[_ngcontent-%COMP%] {\n padding: 1rem;\n border-radius: 0.375rem;\n font-family: \"Fira Code\", Monaco, Consolas, monospace;\n font-size: 0.875rem;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-old[_ngcontent-%COMP%] .diff-value.old-value[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-new[_ngcontent-%COMP%] .diff-value.old-value[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n color: var(--mj-status-error);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-old[_ngcontent-%COMP%] .diff-value.new-value[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-new[_ngcontent-%COMP%] .diff-value.new-value[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n color: var(--mj-color-success-700);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-old[_ngcontent-%COMP%] .diff-value[_ngcontent-%COMP%] .template-content[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-new[_ngcontent-%COMP%] .diff-value[_ngcontent-%COMP%] .template-content[_ngcontent-%COMP%] {\n margin: 0;\n background: transparent;\n border: none;\n padding: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n white-space: pre-wrap;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .diff-added[_ngcontent-%COMP%] .diff-label[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .diff-removed[_ngcontent-%COMP%] .diff-label[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n font-weight: 600;\n margin-bottom: 0.5rem;\n color: var(--mj-text-muted);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .diff-added[_ngcontent-%COMP%] .diff-value[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .diff-removed[_ngcontent-%COMP%] .diff-value[_ngcontent-%COMP%] {\n padding: 1rem;\n border-radius: 0.375rem;\n font-family: \"Fira Code\", Monaco, Consolas, monospace;\n font-size: 0.875rem;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .diff-added[_ngcontent-%COMP%] .diff-value[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n color: var(--mj-color-success-700);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .diff-removed[_ngcontent-%COMP%] .diff-value[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n color: var(--mj-status-error);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .no-differences[_ngcontent-%COMP%] {\n text-align: center;\n padding: 3rem 1rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .no-differences[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3rem;\n margin-bottom: 1rem;\n display: block;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .no-differences[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] {\n flex: 1;\n padding: 1rem;\n overflow-y: auto;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] {\n max-width: 800px;\n margin: 0 auto;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 0.5rem;\n overflow: hidden;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-header[_ngcontent-%COMP%] {\n padding: 1.5rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-header[_ngcontent-%COMP%] .details-title[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem 0;\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-header[_ngcontent-%COMP%] .details-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 1rem;\n font-size: 0.875rem;\n color: var(--mj-text-muted);\n flex-wrap: wrap;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] {\n padding: 1.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] {\n margin-bottom: 2rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%] {\n margin: 0 0 1rem 0;\n color: var(--mj-text-secondary);\n font-weight: 600;\n font-size: 1rem;\n border-bottom: 1px solid var(--mj-border-default);\n padding-bottom: 0.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 1rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .detail-grid[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .detail-grid[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] .detail-label[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .detail-grid[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] .detail-value[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .json-viewer[_ngcontent-%COMP%] .json-content[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .json-viewer[_ngcontent-%COMP%] .template-content[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .template-viewer[_ngcontent-%COMP%] .json-content[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .template-viewer[_ngcontent-%COMP%] .template-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 0.375rem;\n padding: 1rem;\n margin: 0;\n font-family: \"Fira Code\", Monaco, Consolas, monospace;\n font-size: 0.875rem;\n line-height: 1.5;\n overflow-x: auto;\n max-height: 400px;\n overflow-y: auto;\n}\n.prompt-version-control[_ngcontent-%COMP%] .error-container[_ngcontent-%COMP%] {\n padding: 1rem;\n}\n\n@media (max-width: 1200px) {\n .prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] {\n min-width: 100%;\n justify-content: space-between;\n }\n .prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-selectors[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n .prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-selectors[_ngcontent-%COMP%] .comparison-arrow[_ngcontent-%COMP%] {\n align-self: center;\n padding: 0.5rem 0;\n }\n .prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 0.5rem;\n }\n}\n@media (max-width: 768px) {\n .prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n .prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n gap: 0.5rem;\n }\n .prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n .prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] {\n margin-right: 1rem;\n }\n .prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] .marker-icon[_ngcontent-%COMP%] {\n width: 2rem;\n height: 2rem;\n font-size: 0.875rem;\n }\n .prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n padding: 1rem;\n }\n .prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 0.75rem;\n }\n .prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] .version-actions[_ngcontent-%COMP%] {\n align-self: flex-end;\n }\n .prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%], \n .prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n .prompt-selector-section[_ngcontent-%COMP%] {\n padding: 2rem;\n background: var(--mj-bg-surface);\n border-radius: 8px;\n margin: 1rem;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n }\n .prompt-selector-section[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n margin-bottom: 0.5rem;\n }\n .prompt-selector-section[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .search-box[_ngcontent-%COMP%] .input-group-text[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .search-box[_ngcontent-%COMP%] .input-group-text[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .search-box[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%] {\n border-color: var(--mj-border-default);\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .search-box[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] {\n max-height: 400px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-item[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.75rem 1rem;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background-color 0.2s;\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-item[_ngcontent-%COMP%]:hover {\n background-color: var(--mj-bg-surface-card);\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-item[_ngcontent-%COMP%] .prompt-info[_ngcontent-%COMP%] {\n flex: 1;\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-item[_ngcontent-%COMP%] .prompt-info[_ngcontent-%COMP%] .prompt-title[_ngcontent-%COMP%] {\n margin: 0 0 0.25rem 0;\n font-weight: 600;\n color: var(--mj-text-secondary);\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-item[_ngcontent-%COMP%] .prompt-info[_ngcontent-%COMP%] .prompt-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.875rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-item[_ngcontent-%COMP%] .prompt-actions[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n opacity: 0.7;\n transition: opacity 0.2s;\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-item[_ngcontent-%COMP%]:hover .prompt-actions[_ngcontent-%COMP%] {\n opacity: 1;\n }\n}"] });
1164
+ } }, dependencies: [i3.NgSelectOption, i3.ɵNgSelectMultipleOption, i3.DefaultValueAccessor, i3.CheckboxControlValueAccessor, i3.SelectControlValueAccessor, i3.RadioControlValueAccessor, i3.NgControlStatus, i3.NgModel, i4.LoadingComponent, i2.MJButtonDirective, i2.MJEmptyStateComponent, i2.MJAlertComponent, i5.JsonPipe, i5.DatePipe], styles: [".prompt-version-control[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface-card);\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .toolbar-title[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .toolbar-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .toolbar-title[_ngcontent-%COMP%] .prompt-name[_ngcontent-%COMP%] {\n font-weight: 400;\n color: var(--mj-text-muted);\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .filter-controls[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .search-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .filter-controls[_ngcontent-%COMP%] .form-label[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .search-controls[_ngcontent-%COMP%] .form-label[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.875rem;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .filter-controls[_ngcontent-%COMP%] .form-select[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .filter-controls[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .search-controls[_ngcontent-%COMP%] .form-select[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .search-controls[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%] {\n min-width: 120px;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .filter-controls[_ngcontent-%COMP%] .form-check[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .search-controls[_ngcontent-%COMP%] .form-check[_ngcontent-%COMP%] {\n margin: 0;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .filter-controls[_ngcontent-%COMP%] .form-check[_ngcontent-%COMP%] .form-check-label[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .search-controls[_ngcontent-%COMP%] .form-check[_ngcontent-%COMP%] .form-check-label[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] .action-buttons[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .loading-container[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.prompt-version-control[_ngcontent-%COMP%] .loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] {\n text-align: center;\n}\n.prompt-version-control[_ngcontent-%COMP%] .loading-container[_ngcontent-%COMP%] .loading-content[_ngcontent-%COMP%] .loading-message[_ngcontent-%COMP%] {\n margin-top: 1rem;\n color: var(--mj-text-muted);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] {\n flex: 1;\n padding: 1rem;\n overflow-y: auto;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] {\n max-width: 800px;\n margin: 0 auto;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] {\n display: flex;\n position: relative;\n margin-bottom: 2rem;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%]:hover .timeline-content[_ngcontent-%COMP%] {\n box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.1);\n transform: translateY(-1px);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item.selected[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item.active[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] .marker-icon[_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n background-color: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin-right: 1.5rem;\n flex-shrink: 0;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] .marker-icon[_ngcontent-%COMP%] {\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 3px solid;\n background: var(--mj-bg-surface);\n font-size: 1rem;\n z-index: 2;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] .marker-icon.change-create[_ngcontent-%COMP%] {\n border-color: var(--mj-status-success);\n color: var(--mj-status-success);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] .marker-icon.change-update[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] .marker-icon.change-delete[_ngcontent-%COMP%] {\n border-color: var(--mj-status-error);\n color: var(--mj-status-error);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] .timeline-line[_ngcontent-%COMP%] {\n width: 2px;\n flex: 1;\n background: var(--mj-border-default);\n margin-top: 0.5rem;\n min-height: 2rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 0.5rem;\n padding: 1.5rem;\n transition: all 0.2s ease;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 1rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] .version-info[_ngcontent-%COMP%] .version-label[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem 0;\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] .version-info[_ngcontent-%COMP%] .version-meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 0.875rem;\n color: var(--mj-text-muted);\n flex-wrap: wrap;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] .version-info[_ngcontent-%COMP%] .version-meta[_ngcontent-%COMP%] .change-date[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] .version-info[_ngcontent-%COMP%] .version-meta[_ngcontent-%COMP%] .badge[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] .version-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 0.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] .version-actions[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%] {\n padding: 0.25rem 0.5rem;\n font-size: 0.75rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-description[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n margin-bottom: 1rem;\n line-height: 1.5;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .changes-summary[_ngcontent-%COMP%] .changes-list[_ngcontent-%COMP%] .change-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 0.5rem;\n background: var(--mj-bg-surface-card);\n border-radius: 0.375rem;\n margin-bottom: 0.5rem;\n font-size: 0.875rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .changes-summary[_ngcontent-%COMP%] .changes-list[_ngcontent-%COMP%] .change-item[_ngcontent-%COMP%] .field-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-secondary);\n margin-right: 0.75rem;\n min-width: 100px;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .changes-summary[_ngcontent-%COMP%] .changes-list[_ngcontent-%COMP%] .change-item[_ngcontent-%COMP%] .change-arrow[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .changes-summary[_ngcontent-%COMP%] .changes-list[_ngcontent-%COMP%] .change-item[_ngcontent-%COMP%] .change-arrow[_ngcontent-%COMP%] .old-value[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n text-decoration: line-through;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .changes-summary[_ngcontent-%COMP%] .changes-list[_ngcontent-%COMP%] .change-item[_ngcontent-%COMP%] .change-arrow[_ngcontent-%COMP%] .new-value[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-weight: 500;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .changes-summary[_ngcontent-%COMP%] .changes-list[_ngcontent-%COMP%] .change-item[_ngcontent-%COMP%] .change-arrow[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .no-versions-message[_ngcontent-%COMP%] {\n text-align: center;\n padding: 3rem 1rem;\n color: var(--mj-text-muted);\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .no-versions-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3rem;\n margin-bottom: 1rem;\n display: block;\n opacity: 0.5;\n}\n.prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .no-versions-message[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0.5rem 0;\n font-size: 1rem;\n line-height: 1.5;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] {\n flex: 1;\n padding: 1rem;\n overflow-y: auto;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-selectors[_ngcontent-%COMP%] {\n display: flex;\n align-items: end;\n gap: 1rem;\n margin-bottom: 2rem;\n padding: 1rem;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 0.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-selectors[_ngcontent-%COMP%] .selector-group[_ngcontent-%COMP%] {\n flex: 1;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-selectors[_ngcontent-%COMP%] .selector-group[_ngcontent-%COMP%] .form-label[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-selectors[_ngcontent-%COMP%] .comparison-arrow[_ngcontent-%COMP%] {\n padding-bottom: 0.375rem;\n color: var(--mj-text-muted);\n font-size: 1.25rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 0.5rem;\n overflow: hidden;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .comparison-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .comparison-header[_ngcontent-%COMP%] .comparison-title[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .comparison-header[_ngcontent-%COMP%] .changes-count[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-border-default);\n padding: 1.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item.diff-added[_ngcontent-%COMP%] {\n border-left: 4px solid var(--mj-status-success);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item.diff-modified[_ngcontent-%COMP%] {\n border-left: 4px solid var(--mj-status-warning);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item.diff-removed[_ngcontent-%COMP%] {\n border-left: 4px solid var(--mj-status-error);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-header[_ngcontent-%COMP%] {\n margin-bottom: 1rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-header[_ngcontent-%COMP%] .field-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-header[_ngcontent-%COMP%] .field-info[_ngcontent-%COMP%] .field-name[_ngcontent-%COMP%] {\n font-size: 1rem;\n color: var(--mj-text-secondary);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-header[_ngcontent-%COMP%] .field-info[_ngcontent-%COMP%] .badge[_ngcontent-%COMP%] {\n font-size: 0.75rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-header[_ngcontent-%COMP%] .field-info[_ngcontent-%COMP%] .badge.template-badge[_ngcontent-%COMP%] {\n background-color: var(--mj-brand-primary-hover);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-old[_ngcontent-%COMP%] .diff-label[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-new[_ngcontent-%COMP%] .diff-label[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n font-weight: 600;\n margin-bottom: 0.5rem;\n color: var(--mj-text-muted);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-old[_ngcontent-%COMP%] .diff-value[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-new[_ngcontent-%COMP%] .diff-value[_ngcontent-%COMP%] {\n padding: 1rem;\n border-radius: 0.375rem;\n font-family: \"Fira Code\", Monaco, Consolas, monospace;\n font-size: 0.875rem;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-old[_ngcontent-%COMP%] .diff-value.old-value[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-new[_ngcontent-%COMP%] .diff-value.old-value[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n color: var(--mj-status-error);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-old[_ngcontent-%COMP%] .diff-value.new-value[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-new[_ngcontent-%COMP%] .diff-value.new-value[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n color: var(--mj-color-success-700);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-old[_ngcontent-%COMP%] .diff-value[_ngcontent-%COMP%] .template-content[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] .diff-new[_ngcontent-%COMP%] .diff-value[_ngcontent-%COMP%] .template-content[_ngcontent-%COMP%] {\n margin: 0;\n background: transparent;\n border: none;\n padding: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n white-space: pre-wrap;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .diff-added[_ngcontent-%COMP%] .diff-label[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .diff-removed[_ngcontent-%COMP%] .diff-label[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n font-weight: 600;\n margin-bottom: 0.5rem;\n color: var(--mj-text-muted);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .diff-added[_ngcontent-%COMP%] .diff-value[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .diff-removed[_ngcontent-%COMP%] .diff-value[_ngcontent-%COMP%] {\n padding: 1rem;\n border-radius: 0.375rem;\n font-family: \"Fira Code\", Monaco, Consolas, monospace;\n font-size: 0.875rem;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .diff-added[_ngcontent-%COMP%] .diff-value[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n color: var(--mj-color-success-700);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .diff-removed[_ngcontent-%COMP%] .diff-value[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n color: var(--mj-status-error);\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .no-differences[_ngcontent-%COMP%] {\n text-align: center;\n padding: 3rem 1rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .no-differences[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3rem;\n margin-bottom: 1rem;\n display: block;\n}\n.prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .no-differences[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 1rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] {\n flex: 1;\n padding: 1rem;\n overflow-y: auto;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] {\n max-width: 800px;\n margin: 0 auto;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 0.5rem;\n overflow: hidden;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-header[_ngcontent-%COMP%] {\n padding: 1.5rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-header[_ngcontent-%COMP%] .details-title[_ngcontent-%COMP%] {\n margin: 0 0 0.5rem 0;\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-header[_ngcontent-%COMP%] .details-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 1rem;\n font-size: 0.875rem;\n color: var(--mj-text-muted);\n flex-wrap: wrap;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] {\n padding: 1.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] {\n margin-bottom: 2rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%] {\n margin: 0 0 1rem 0;\n color: var(--mj-text-secondary);\n font-weight: 600;\n font-size: 1rem;\n border-bottom: 1px solid var(--mj-border-default);\n padding-bottom: 0.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 1rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .detail-grid[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .detail-grid[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] .detail-label[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .detail-grid[_ngcontent-%COMP%] .detail-item[_ngcontent-%COMP%] .detail-value[_ngcontent-%COMP%] {\n font-size: 0.875rem;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .json-viewer[_ngcontent-%COMP%] .json-content[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .json-viewer[_ngcontent-%COMP%] .template-content[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .template-viewer[_ngcontent-%COMP%] .json-content[_ngcontent-%COMP%], \n.prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] .version-details[_ngcontent-%COMP%] .details-content[_ngcontent-%COMP%] .detail-section[_ngcontent-%COMP%] .template-viewer[_ngcontent-%COMP%] .template-content[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 0.375rem;\n padding: 1rem;\n margin: 0;\n font-family: \"Fira Code\", Monaco, Consolas, monospace;\n font-size: 0.875rem;\n line-height: 1.5;\n overflow-x: auto;\n max-height: 400px;\n overflow-y: auto;\n}\n.prompt-version-control[_ngcontent-%COMP%] .error-container[_ngcontent-%COMP%] {\n padding: 1rem;\n}\n\n@media (max-width: 1200px) {\n .prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] {\n min-width: 100%;\n justify-content: space-between;\n }\n .prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-selectors[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n .prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-selectors[_ngcontent-%COMP%] .comparison-arrow[_ngcontent-%COMP%] {\n align-self: center;\n padding: 0.5rem 0;\n }\n .prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%] .comparison-results[_ngcontent-%COMP%] .differences-list[_ngcontent-%COMP%] .difference-item[_ngcontent-%COMP%] .diff-content[_ngcontent-%COMP%] .side-by-side-diff[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n gap: 0.5rem;\n }\n}\n@media (max-width: 768px) {\n .prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n .prompt-version-control[_ngcontent-%COMP%] .version-toolbar[_ngcontent-%COMP%] .toolbar-section[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n gap: 0.5rem;\n }\n .prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n .prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] {\n margin-right: 1rem;\n }\n .prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-marker[_ngcontent-%COMP%] .marker-icon[_ngcontent-%COMP%] {\n width: 2rem;\n height: 2rem;\n font-size: 0.875rem;\n }\n .prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] {\n padding: 1rem;\n }\n .prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 0.75rem;\n }\n .prompt-version-control[_ngcontent-%COMP%] .timeline-container[_ngcontent-%COMP%] .version-timeline[_ngcontent-%COMP%] .timeline-item[_ngcontent-%COMP%] .timeline-content[_ngcontent-%COMP%] .version-header[_ngcontent-%COMP%] .version-actions[_ngcontent-%COMP%] {\n align-self: flex-end;\n }\n .prompt-version-control[_ngcontent-%COMP%] .comparison-container[_ngcontent-%COMP%], \n .prompt-version-control[_ngcontent-%COMP%] .details-container[_ngcontent-%COMP%] {\n padding: 0.75rem;\n }\n .prompt-selector-section[_ngcontent-%COMP%] {\n padding: 2rem;\n background: var(--mj-bg-surface);\n border-radius: 8px;\n margin: 1rem;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n }\n .prompt-selector-section[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n margin-bottom: 0.5rem;\n }\n .prompt-selector-section[_ngcontent-%COMP%] .section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .search-box[_ngcontent-%COMP%] .input-group-text[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .search-box[_ngcontent-%COMP%] .input-group-text[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .search-box[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%] {\n border-color: var(--mj-border-default);\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .search-box[_ngcontent-%COMP%] .form-control[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] {\n max-height: 400px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-item[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.75rem 1rem;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background-color 0.2s;\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-item[_ngcontent-%COMP%]:hover {\n background-color: var(--mj-bg-surface-card);\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-item[_ngcontent-%COMP%] .prompt-info[_ngcontent-%COMP%] {\n flex: 1;\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-item[_ngcontent-%COMP%] .prompt-info[_ngcontent-%COMP%] .prompt-title[_ngcontent-%COMP%] {\n margin: 0 0 0.25rem 0;\n font-weight: 600;\n color: var(--mj-text-secondary);\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-item[_ngcontent-%COMP%] .prompt-info[_ngcontent-%COMP%] .prompt-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 0.875rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-item[_ngcontent-%COMP%] .prompt-actions[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n opacity: 0.7;\n transition: opacity 0.2s;\n }\n .prompt-selector-section[_ngcontent-%COMP%] .prompt-selector[_ngcontent-%COMP%] .prompts-list[_ngcontent-%COMP%] .prompt-item[_ngcontent-%COMP%]:hover .prompt-actions[_ngcontent-%COMP%] {\n opacity: 1;\n }\n}"] });
1163
1165
  }
1164
1166
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PromptVersionControlComponent, [{
1165
1167
  type: Component,
1166
1168
  args: [{ standalone: false, selector: 'app-prompt-version-control', template: "<div class=\"prompt-version-control\">\n <!-- Prompt Selector (when no prompt selected) -->\n @if (!prompt) {\n <div class=\"prompt-selector-section\">\n <h5 class=\"section-title\">\n <i class=\"fa-solid fa-history\"></i>\n Version History\n </h5>\n <p class=\"text-muted mb-3\">Select a prompt to view its version history</p>\n \n <div class=\"prompt-selector\">\n <div class=\"search-box mb-3\">\n <div class=\"input-group\">\n <span class=\"input-group-text\">\n <i class=\"fa-solid fa-search\"></i>\n </span>\n <input \n type=\"text\" \n class=\"form-control\" \n placeholder=\"Search prompts...\"\n [ngModel]=\"promptSearchTerm$.value\"\n (ngModelChange)=\"onPromptSearchChange($event)\">\n </div>\n </div>\n \n <div class=\"prompts-list\">\n @if (availablePrompts.length === 0) {\n <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-comment-dots\"\n Title=\"No prompts available\" />\n } @else {\n @for (promptItem of filteredAvailablePrompts; track promptItem.ID) {\n <div class=\"prompt-item\" (click)=\"selectPromptForHistory(promptItem)\">\n <div class=\"prompt-info\">\n <h6 class=\"prompt-title\">{{ promptItem.Name }}</h6>\n @if (promptItem.Description) {\n <p class=\"prompt-description\">{{ promptItem.Description }}</p>\n }\n </div>\n <div class=\"prompt-actions\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n </div>\n }\n }\n </div>\n </div>\n </div>\n } @else {\n <!-- Header toolbar -->\n <div class=\"version-toolbar\">\n <div class=\"toolbar-section\">\n <h5 class=\"toolbar-title\">\n <i class=\"fa-solid fa-history\"></i>\n Version History\n @if (prompt) {\n <span class=\"prompt-name\">- {{ prompt.Name }}</span>\n }\n </h5>\n \n <div class=\"view-mode-toggle\">\n <div class=\"btn-group btn-group-sm\" role=\"group\">\n <input type=\"radio\" class=\"btn-check\" name=\"view\" id=\"timelineView\" value=\"timeline\" [(ngModel)]=\"currentView\" (ngModelChange)=\"onViewChange($event)\">\n <label class=\"btn btn-outline-primary\" for=\"timelineView\">\n <i class=\"fa-solid fa-timeline\"></i>\n Timeline\n </label>\n \n <input type=\"radio\" class=\"btn-check\" name=\"view\" id=\"comparisonView\" value=\"comparison\" [(ngModel)]=\"currentView\" (ngModelChange)=\"onViewChange($event)\">\n <label class=\"btn btn-outline-primary\" for=\"comparisonView\">\n <i class=\"fa-solid fa-code-compare\"></i>\n Compare\n </label>\n \n <input type=\"radio\" class=\"btn-check\" name=\"view\" id=\"detailsView\" value=\"details\" [(ngModel)]=\"currentView\" (ngModelChange)=\"onViewChange($event)\">\n <label class=\"btn btn-outline-primary\" for=\"detailsView\">\n <i class=\"fa-solid fa-list\"></i>\n Details\n </label>\n </div>\n </div>\n </div>\n \n <div class=\"toolbar-section\">\n <div class=\"filter-controls\">\n <label class=\"form-label\">Filter:</label>\n <select class=\"form-select form-select-sm\" [(ngModel)]=\"filterBy\" (ngModelChange)=\"onFilterChange($event)\">\n <option value=\"all\">All Changes</option>\n <option value=\"updates\">Updates Only</option>\n <option value=\"major\">Major Changes</option>\n <option value=\"template\">Template Changes</option>\n </select>\n \n <div class=\"form-check form-switch\">\n <input class=\"form-check-input\" type=\"checkbox\" id=\"showSystem\" [(ngModel)]=\"showSystemChanges\" (ngModelChange)=\"applyFiltersPublic()\">\n <label class=\"form-check-label\" for=\"showSystem\">System</label>\n </div>\n </div>\n \n <div class=\"search-controls\">\n <input \n type=\"text\" \n class=\"form-control form-control-sm\" \n placeholder=\"Search changes...\"\n [ngModel]=\"searchTerm$.value\" (ngModelChange)=\"onSearchChange($event)\">\n </div>\n </div>\n \n <div class=\"toolbar-section\">\n <div class=\"action-buttons\">\n <button type=\"button\" class=\"btn btn-sm btn-outline-secondary\" (click)=\"onSortDirectionChange()\" [title]=\"'Sort ' + (sortDirection === 'asc' ? 'descending' : 'ascending')\">\n <i class=\"fa-solid\" [class.fa-sort-up]=\"sortDirection === 'asc'\" [class.fa-sort-down]=\"sortDirection === 'desc'\"></i>\n Sort\n </button>\n \n <button type=\"button\" class=\"btn btn-sm btn-outline-secondary\" (click)=\"refreshHistory()\" [disabled]=\"isLoading\" title=\"Refresh history\">\n <i class=\"fa-solid fa-refresh\" [class.fa-spin]=\"isLoading\"></i>\n Refresh\n </button>\n \n <button type=\"button\" class=\"btn btn-sm btn-outline-info\" (click)=\"exportVersionHistory()\" title=\"Export history\">\n <i class=\"fa-solid fa-download\"></i>\n Export\n </button>\n </div>\n </div>\n </div>\n \n <!-- Loading state -->\n @if (isLoading) {\n <div class=\"loading-container\">\n <mj-loading [text]=\"loadingMessage\" size=\"large\"></mj-loading>\n </div>\n } @else {\n \n <!-- Timeline View -->\n @if (currentView === 'timeline') {\n <div class=\"timeline-container\">\n @if (versions.length > 0) {\n <div class=\"version-timeline\">\n @for (version of versions; track version.id; let i = $index) {\n <div class=\"timeline-item\" \n [class.selected]=\"selectedVersion?.id === version.id\"\n [class.active]=\"version.isActive\"\n (click)=\"onVersionSelect(version)\">\n \n <div class=\"timeline-marker\">\n <div class=\"marker-icon\" [class]=\"getChangeTypeClass(version.changeType)\">\n <i class=\"fa-solid\" [class]=\"getChangeTypeIcon(version.changeType)\"></i>\n </div>\n @if (i < versions.length - 1) {\n <div class=\"timeline-line\"></div>\n }\n </div>\n \n <div class=\"timeline-content\">\n <div class=\"version-header\">\n <div class=\"version-info\">\n <h6 class=\"version-label\">{{ getVersionLabel(version) }}</h6>\n <div class=\"version-meta\">\n <span class=\"change-date\">{{ version.changedAt | date:'medium' }}</span>\n <span class=\"changed-by\">by {{ version.changedBy }}</span>\n <span class=\"change-source badge\" [class.badge-primary]=\"version.changeSource === 'Internal'\" [class.badge-secondary]=\"version.changeSource === 'External'\">\n {{ version.changeSource }}\n </span>\n </div>\n </div>\n \n <div class=\"version-actions\">\n @if (showComparison && i < versions.length - 1) {\n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-primary\"\n (click)=\"$event.stopPropagation(); startComparison(version)\"\n title=\"Compare with next version\">\n <i class=\"fa-solid fa-code-compare\"></i>\n </button>\n }\n \n @if (showRestoreActions && version.canRestore) {\n <button \n type=\"button\" \n class=\"btn btn-sm btn-outline-success\"\n (click)=\"$event.stopPropagation(); onVersionRestore(version)\"\n title=\"Restore this version\">\n <i class=\"fa-solid fa-undo\"></i>\n </button>\n }\n </div>\n </div>\n \n <div class=\"version-description\">\n {{ version.changesDescription }}\n </div>\n \n @if (version.changesJSON && timelineConfig.showDiffs) {\n <div class=\"changes-summary\">\n <div class=\"changes-list\">\n @for (field of getObjectKeys(version.changesJSON); track field) {\n <div class=\"change-item\">\n <span class=\"field-name\">{{ getFieldDisplayNamePublic(field) }}</span>\n @if (version.changesJSON[field].oldValue !== undefined) {\n <span class=\"change-arrow\">\n <span class=\"old-value\">{{ formatChangeValue(version.changesJSON[field].oldValue) }}</span>\n <i class=\"fa-solid fa-arrow-right\"></i>\n <span class=\"new-value\">{{ formatChangeValue(version.changesJSON[field].newValue) }}</span>\n </span>\n } @else {\n <span class=\"new-value\">{{ formatChangeValue(version.changesJSON[field].newValue) }}</span>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"no-versions-message\">\n <i class=\"fa-solid fa-info-circle text-muted\"></i>\n <p class=\"text-muted\">No version history available for this prompt.</p>\n @if (prompt && !prompt.EntityInfo.TrackRecordChanges) {\n <p class=\"text-muted\"><small>Record changes tracking may not be enabled for prompts.</small></p>\n }\n </div>\n }\n </div>\n }\n \n <!-- Comparison View -->\n @if (currentView === 'comparison') {\n <div class=\"comparison-container\">\n <!-- Version selectors -->\n <div class=\"comparison-selectors\">\n <div class=\"selector-group\">\n <label class=\"form-label\">Compare from:</label>\n <select class=\"form-select\" [(ngModel)]=\"compareFromVersion\" (ngModelChange)=\"generateComparisonPublic()\">\n @for (version of versions; track version.id) {\n <option [ngValue]=\"version\">{{ getVersionLabel(version) }} - {{ version.changedAt | date:'short' }}</option>\n }\n </select>\n </div>\n \n <div class=\"comparison-arrow\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n </div>\n \n <div class=\"selector-group\">\n <label class=\"form-label\">Compare to:</label>\n <select class=\"form-select\" [(ngModel)]=\"compareToVersion\" (ngModelChange)=\"generateComparisonPublic()\">\n @for (version of versions; track version.id) {\n <option [ngValue]=\"version\">{{ getVersionLabel(version) }} - {{ version.changedAt | date:'short' }}</option>\n }\n </select>\n </div>\n </div>\n \n <!-- Comparison results -->\n @if (comparisonResult) {\n <div class=\"comparison-results\">\n <div class=\"comparison-header\">\n <h6 class=\"comparison-title\">\n <i class=\"fa-solid fa-code-compare\"></i>\n Changes between {{ getVersionLabel(comparisonResult.fromVersion) }} and {{ getVersionLabel(comparisonResult.toVersion) }}\n </h6>\n <div class=\"changes-count\">\n {{ comparisonResult.differences.length }} change(s) found\n </div>\n </div>\n \n @if (comparisonResult.differences.length > 0) {\n <div class=\"differences-list\">\n @for (diff of comparisonResult.differences; track diff.fieldName) {\n <div class=\"difference-item\" [class]=\"'diff-' + diff.changeType\">\n <div class=\"diff-header\">\n <div class=\"field-info\">\n <strong class=\"field-name\">{{ diff.displayName }}</strong>\n <span class=\"change-type badge\" \n [class.badge-success]=\"diff.changeType === 'added'\"\n [class.badge-warning]=\"diff.changeType === 'modified'\"\n [class.badge-danger]=\"diff.changeType === 'removed'\">\n {{ diff.changeType }}\n </span>\n @if (diff.isTemplate) {\n <span class=\"template-badge badge badge-info\">Template</span>\n }\n </div>\n </div>\n \n <div class=\"diff-content\">\n @if (diff.changeType === 'modified') {\n <div class=\"side-by-side-diff\">\n <div class=\"diff-old\">\n <h6 class=\"diff-label\">Before:</h6>\n <div class=\"diff-value old-value\">\n @if (diff.isTemplate && diff.fieldName === 'TemplateText') {\n <pre class=\"template-content\">{{ diff.oldValue }}</pre>\n } @else {\n {{ formatChangeValue(diff.oldValue) }}\n }\n </div>\n </div>\n \n <div class=\"diff-new\">\n <h6 class=\"diff-label\">After:</h6>\n <div class=\"diff-value new-value\">\n @if (diff.isTemplate && diff.fieldName === 'TemplateText') {\n <pre class=\"template-content\">{{ diff.newValue }}</pre>\n } @else {\n {{ formatChangeValue(diff.newValue) }}\n }\n </div>\n </div>\n </div>\n } @else if (diff.changeType === 'added') {\n <div class=\"diff-added\">\n <h6 class=\"diff-label\">Added:</h6>\n <div class=\"diff-value new-value\">{{ formatChangeValue(diff.newValue) }}</div>\n </div>\n } @else if (diff.changeType === 'removed') {\n <div class=\"diff-removed\">\n <h6 class=\"diff-label\">Removed:</h6>\n <div class=\"diff-value old-value\">{{ formatChangeValue(diff.oldValue) }}</div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"no-differences\">\n <i class=\"fa-solid fa-check-circle text-success\"></i>\n <p class=\"text-muted\">No differences found between the selected versions.</p>\n </div>\n }\n </div>\n }\n </div>\n }\n \n <!-- Details View -->\n @if (currentView === 'details') {\n <div class=\"details-container\">\n @if (selectedVersion) {\n <div class=\"version-details\">\n <div class=\"details-header\">\n <h6 class=\"details-title\">{{ getVersionLabel(selectedVersion) }}</h6>\n <div class=\"details-meta\">\n <span class=\"change-date\">{{ selectedVersion.changedAt | date:'full' }}</span>\n <span class=\"changed-by\">Changed by {{ selectedVersion.changedBy }}</span>\n </div>\n </div>\n \n <div class=\"details-content\">\n <div class=\"detail-section\">\n <h6 class=\"section-title\">Change Information</h6>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Type:</span>\n <span class=\"detail-value\">\n <i class=\"fa-solid\" [class]=\"getChangeTypeIcon(selectedVersion.changeType)\"></i>\n {{ selectedVersion.changeType }}\n </span>\n </div>\n \n <div class=\"detail-item\">\n <span class=\"detail-label\">Source:</span>\n <span class=\"detail-value\">{{ selectedVersion.changeSource }}</span>\n </div>\n \n <div class=\"detail-item\">\n <span class=\"detail-label\">Description:</span>\n <span class=\"detail-value\">{{ selectedVersion.changesDescription }}</span>\n </div>\n </div>\n </div>\n \n @if (selectedVersion.fullRecordJSON) {\n <div class=\"detail-section\">\n <h6 class=\"section-title\">Record State</h6>\n <div class=\"json-viewer\">\n <pre class=\"json-content\">{{ selectedVersion.fullRecordJSON | json }}</pre>\n </div>\n </div>\n }\n \n @if (selectedVersion.templateContent) {\n <div class=\"detail-section\">\n <h6 class=\"section-title\">Template Content</h6>\n <div class=\"template-viewer\">\n <pre class=\"template-content\">{{ selectedVersion.templateContent.TemplateText }}</pre>\n </div>\n </div>\n }\n </div>\n </div>\n } @else {\n <mj-empty-state Size=\"compact\" Icon=\"fa-solid fa-hand-pointer\"\n Title=\"Select a version from the timeline to view details.\" />\n }\n </div>\n }\n }\n \n <!-- Error state -->\n @if (error) {\n <div class=\"error-container\">\n <mj-alert Variant=\"error\">\n {{ error }}\n <button mjButton variant=\"danger\" size=\"sm\" actions (click)=\"refreshHistory()\">\n <i class=\"fa-solid fa-refresh\"></i>\n Retry\n </button>\n </mj-alert>\n </div>\n }\n }\n</div>", styles: [".prompt-version-control {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface-card);\n}\n.prompt-version-control .version-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.prompt-version-control .version-toolbar .toolbar-section {\n display: flex;\n align-items: center;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.prompt-version-control .version-toolbar .toolbar-section .toolbar-title {\n margin: 0;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n}\n.prompt-version-control .version-toolbar .toolbar-section .toolbar-title i {\n color: var(--mj-brand-primary);\n}\n.prompt-version-control .version-toolbar .toolbar-section .toolbar-title .prompt-name {\n font-weight: 400;\n color: var(--mj-text-muted);\n}\n.prompt-version-control .version-toolbar .toolbar-section .filter-controls,\n.prompt-version-control .version-toolbar .toolbar-section .search-controls {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.prompt-version-control .version-toolbar .toolbar-section .filter-controls .form-label,\n.prompt-version-control .version-toolbar .toolbar-section .search-controls .form-label {\n margin: 0;\n font-size: 0.875rem;\n color: var(--mj-text-muted);\n white-space: nowrap;\n}\n.prompt-version-control .version-toolbar .toolbar-section .filter-controls .form-select,\n.prompt-version-control .version-toolbar .toolbar-section .filter-controls .form-control,\n.prompt-version-control .version-toolbar .toolbar-section .search-controls .form-select,\n.prompt-version-control .version-toolbar .toolbar-section .search-controls .form-control {\n min-width: 120px;\n}\n.prompt-version-control .version-toolbar .toolbar-section .filter-controls .form-check,\n.prompt-version-control .version-toolbar .toolbar-section .search-controls .form-check {\n margin: 0;\n}\n.prompt-version-control .version-toolbar .toolbar-section .filter-controls .form-check .form-check-label,\n.prompt-version-control .version-toolbar .toolbar-section .search-controls .form-check .form-check-label {\n font-size: 0.875rem;\n}\n.prompt-version-control .version-toolbar .toolbar-section .action-buttons {\n display: flex;\n gap: 0.5rem;\n}\n.prompt-version-control .version-toolbar .toolbar-section .action-buttons .btn {\n font-size: 0.875rem;\n}\n.prompt-version-control .loading-container {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.prompt-version-control .loading-container .loading-content {\n text-align: center;\n}\n.prompt-version-control .loading-container .loading-content .loading-message {\n margin-top: 1rem;\n color: var(--mj-text-muted);\n}\n.prompt-version-control .timeline-container {\n flex: 1;\n padding: 1rem;\n overflow-y: auto;\n}\n.prompt-version-control .timeline-container .version-timeline {\n max-width: 800px;\n margin: 0 auto;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item {\n display: flex;\n position: relative;\n margin-bottom: 2rem;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item:hover .timeline-content {\n box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.1);\n transform: translateY(-1px);\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item.selected .timeline-content {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item.active .timeline-marker .marker-icon {\n border-color: var(--mj-status-success);\n background-color: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-marker {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin-right: 1.5rem;\n flex-shrink: 0;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-marker .marker-icon {\n width: 2.5rem;\n height: 2.5rem;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 3px solid;\n background: var(--mj-bg-surface);\n font-size: 1rem;\n z-index: 2;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-marker .marker-icon.change-create {\n border-color: var(--mj-status-success);\n color: var(--mj-status-success);\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-marker .marker-icon.change-update {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-marker .marker-icon.change-delete {\n border-color: var(--mj-status-error);\n color: var(--mj-status-error);\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-marker .timeline-line {\n width: 2px;\n flex: 1;\n background: var(--mj-border-default);\n margin-top: 0.5rem;\n min-height: 2rem;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content {\n flex: 1;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 0.5rem;\n padding: 1.5rem;\n transition: all 0.2s ease;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content .version-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 1rem;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content .version-header .version-info .version-label {\n margin: 0 0 0.5rem 0;\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content .version-header .version-info .version-meta {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 0.875rem;\n color: var(--mj-text-muted);\n flex-wrap: wrap;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content .version-header .version-info .version-meta .change-date {\n font-weight: 500;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content .version-header .version-info .version-meta .badge {\n font-size: 0.75rem;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content .version-header .version-actions {\n display: flex;\n gap: 0.5rem;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content .version-header .version-actions .btn {\n padding: 0.25rem 0.5rem;\n font-size: 0.75rem;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content .version-description {\n color: var(--mj-text-secondary);\n margin-bottom: 1rem;\n line-height: 1.5;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content .changes-summary .changes-list .change-item {\n display: flex;\n align-items: center;\n padding: 0.5rem;\n background: var(--mj-bg-surface-card);\n border-radius: 0.375rem;\n margin-bottom: 0.5rem;\n font-size: 0.875rem;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content .changes-summary .changes-list .change-item .field-name {\n font-weight: 500;\n color: var(--mj-text-secondary);\n margin-right: 0.75rem;\n min-width: 100px;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content .changes-summary .changes-list .change-item .change-arrow {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content .changes-summary .changes-list .change-item .change-arrow .old-value {\n color: var(--mj-status-error);\n text-decoration: line-through;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content .changes-summary .changes-list .change-item .change-arrow .new-value {\n color: var(--mj-status-success);\n font-weight: 500;\n}\n.prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content .changes-summary .changes-list .change-item .change-arrow i {\n color: var(--mj-text-muted);\n}\n.prompt-version-control .timeline-container .no-versions-message {\n text-align: center;\n padding: 3rem 1rem;\n color: var(--mj-text-muted);\n}\n.prompt-version-control .timeline-container .no-versions-message i {\n font-size: 3rem;\n margin-bottom: 1rem;\n display: block;\n opacity: 0.5;\n}\n.prompt-version-control .timeline-container .no-versions-message p {\n margin: 0.5rem 0;\n font-size: 1rem;\n line-height: 1.5;\n}\n.prompt-version-control .comparison-container {\n flex: 1;\n padding: 1rem;\n overflow-y: auto;\n}\n.prompt-version-control .comparison-container .comparison-selectors {\n display: flex;\n align-items: end;\n gap: 1rem;\n margin-bottom: 2rem;\n padding: 1rem;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 0.5rem;\n}\n.prompt-version-control .comparison-container .comparison-selectors .selector-group {\n flex: 1;\n}\n.prompt-version-control .comparison-container .comparison-selectors .selector-group .form-label {\n font-weight: 500;\n color: var(--mj-text-secondary);\n}\n.prompt-version-control .comparison-container .comparison-selectors .comparison-arrow {\n padding-bottom: 0.375rem;\n color: var(--mj-text-muted);\n font-size: 1.25rem;\n}\n.prompt-version-control .comparison-container .comparison-results {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 0.5rem;\n overflow: hidden;\n}\n.prompt-version-control .comparison-container .comparison-results .comparison-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n.prompt-version-control .comparison-container .comparison-results .comparison-header .comparison-title {\n margin: 0;\n color: var(--mj-text-secondary);\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.prompt-version-control .comparison-container .comparison-results .comparison-header .changes-count {\n font-size: 0.875rem;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item {\n border-bottom: 1px solid var(--mj-border-default);\n padding: 1.5rem;\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item:last-child {\n border-bottom: none;\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item.diff-added {\n border-left: 4px solid var(--mj-status-success);\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item.diff-modified {\n border-left: 4px solid var(--mj-status-warning);\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item.diff-removed {\n border-left: 4px solid var(--mj-status-error);\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-header {\n margin-bottom: 1rem;\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-header .field-info {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-header .field-info .field-name {\n font-size: 1rem;\n color: var(--mj-text-secondary);\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-header .field-info .badge {\n font-size: 0.75rem;\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-header .field-info .badge.template-badge {\n background-color: var(--mj-brand-primary-hover);\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .side-by-side-diff {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 1rem;\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .side-by-side-diff .diff-old .diff-label,\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .side-by-side-diff .diff-new .diff-label {\n font-size: 0.875rem;\n font-weight: 600;\n margin-bottom: 0.5rem;\n color: var(--mj-text-muted);\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .side-by-side-diff .diff-old .diff-value,\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .side-by-side-diff .diff-new .diff-value {\n padding: 1rem;\n border-radius: 0.375rem;\n font-family: \"Fira Code\", Monaco, Consolas, monospace;\n font-size: 0.875rem;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .side-by-side-diff .diff-old .diff-value.old-value,\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .side-by-side-diff .diff-new .diff-value.old-value {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n color: var(--mj-status-error);\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .side-by-side-diff .diff-old .diff-value.new-value,\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .side-by-side-diff .diff-new .diff-value.new-value {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n color: var(--mj-color-success-700);\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .side-by-side-diff .diff-old .diff-value .template-content,\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .side-by-side-diff .diff-new .diff-value .template-content {\n margin: 0;\n background: transparent;\n border: none;\n padding: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n white-space: pre-wrap;\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .diff-added .diff-label,\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .diff-removed .diff-label {\n font-size: 0.875rem;\n font-weight: 600;\n margin-bottom: 0.5rem;\n color: var(--mj-text-muted);\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .diff-added .diff-value,\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .diff-removed .diff-value {\n padding: 1rem;\n border-radius: 0.375rem;\n font-family: \"Fira Code\", Monaco, Consolas, monospace;\n font-size: 0.875rem;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .diff-added .diff-value {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n color: var(--mj-color-success-700);\n}\n.prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .diff-removed .diff-value {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n color: var(--mj-status-error);\n}\n.prompt-version-control .comparison-container .comparison-results .no-differences {\n text-align: center;\n padding: 3rem 1rem;\n}\n.prompt-version-control .comparison-container .comparison-results .no-differences i {\n font-size: 3rem;\n margin-bottom: 1rem;\n display: block;\n}\n.prompt-version-control .comparison-container .comparison-results .no-differences p {\n margin: 0;\n font-size: 1rem;\n}\n.prompt-version-control .details-container {\n flex: 1;\n padding: 1rem;\n overflow-y: auto;\n}\n.prompt-version-control .details-container .version-details {\n max-width: 800px;\n margin: 0 auto;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 0.5rem;\n overflow: hidden;\n}\n.prompt-version-control .details-container .version-details .details-header {\n padding: 1.5rem;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n.prompt-version-control .details-container .version-details .details-header .details-title {\n margin: 0 0 0.5rem 0;\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n.prompt-version-control .details-container .version-details .details-header .details-meta {\n display: flex;\n gap: 1rem;\n font-size: 0.875rem;\n color: var(--mj-text-muted);\n flex-wrap: wrap;\n}\n.prompt-version-control .details-container .version-details .details-content {\n padding: 1.5rem;\n}\n.prompt-version-control .details-container .version-details .details-content .detail-section {\n margin-bottom: 2rem;\n}\n.prompt-version-control .details-container .version-details .details-content .detail-section:last-child {\n margin-bottom: 0;\n}\n.prompt-version-control .details-container .version-details .details-content .detail-section .section-title {\n margin: 0 0 1rem 0;\n color: var(--mj-text-secondary);\n font-weight: 600;\n font-size: 1rem;\n border-bottom: 1px solid var(--mj-border-default);\n padding-bottom: 0.5rem;\n}\n.prompt-version-control .details-container .version-details .details-content .detail-section .detail-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 1rem;\n}\n.prompt-version-control .details-container .version-details .details-content .detail-section .detail-grid .detail-item {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n}\n.prompt-version-control .details-container .version-details .details-content .detail-section .detail-grid .detail-item .detail-label {\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--mj-text-muted);\n}\n.prompt-version-control .details-container .version-details .details-content .detail-section .detail-grid .detail-item .detail-value {\n font-size: 0.875rem;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.prompt-version-control .details-container .version-details .details-content .detail-section .json-viewer .json-content,\n.prompt-version-control .details-container .version-details .details-content .detail-section .json-viewer .template-content,\n.prompt-version-control .details-container .version-details .details-content .detail-section .template-viewer .json-content,\n.prompt-version-control .details-container .version-details .details-content .detail-section .template-viewer .template-content {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 0.375rem;\n padding: 1rem;\n margin: 0;\n font-family: \"Fira Code\", Monaco, Consolas, monospace;\n font-size: 0.875rem;\n line-height: 1.5;\n overflow-x: auto;\n max-height: 400px;\n overflow-y: auto;\n}\n.prompt-version-control .error-container {\n padding: 1rem;\n}\n\n@media (max-width: 1200px) {\n .prompt-version-control .version-toolbar .toolbar-section {\n min-width: 100%;\n justify-content: space-between;\n }\n .prompt-version-control .comparison-container .comparison-selectors {\n flex-direction: column;\n align-items: stretch;\n }\n .prompt-version-control .comparison-container .comparison-selectors .comparison-arrow {\n align-self: center;\n padding: 0.5rem 0;\n }\n .prompt-version-control .comparison-container .comparison-results .differences-list .difference-item .diff-content .side-by-side-diff {\n grid-template-columns: 1fr;\n gap: 0.5rem;\n }\n}\n@media (max-width: 768px) {\n .prompt-version-control .version-toolbar {\n padding: 0.75rem;\n }\n .prompt-version-control .version-toolbar .toolbar-section {\n flex-wrap: wrap;\n gap: 0.5rem;\n }\n .prompt-version-control .timeline-container {\n padding: 0.75rem;\n }\n .prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-marker {\n margin-right: 1rem;\n }\n .prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-marker .marker-icon {\n width: 2rem;\n height: 2rem;\n font-size: 0.875rem;\n }\n .prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content {\n padding: 1rem;\n }\n .prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content .version-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 0.75rem;\n }\n .prompt-version-control .timeline-container .version-timeline .timeline-item .timeline-content .version-header .version-actions {\n align-self: flex-end;\n }\n .prompt-version-control .comparison-container,\n .prompt-version-control .details-container {\n padding: 0.75rem;\n }\n .prompt-selector-section {\n padding: 2rem;\n background: var(--mj-bg-surface);\n border-radius: 8px;\n margin: 1rem;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n }\n .prompt-selector-section .section-title {\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 600;\n margin-bottom: 0.5rem;\n }\n .prompt-selector-section .section-title i {\n color: var(--mj-brand-primary);\n }\n .prompt-selector-section .prompt-selector .search-box .input-group-text {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-default);\n }\n .prompt-selector-section .prompt-selector .search-box .input-group-text i {\n color: var(--mj-text-muted);\n }\n .prompt-selector-section .prompt-selector .search-box .form-control {\n border-color: var(--mj-border-default);\n }\n .prompt-selector-section .prompt-selector .search-box .form-control:focus {\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--mj-brand-primary) 25%, transparent);\n }\n .prompt-selector-section .prompt-selector .prompts-list {\n max-height: 400px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n }\n .prompt-selector-section .prompt-selector .prompts-list .prompt-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.75rem 1rem;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background-color 0.2s;\n }\n .prompt-selector-section .prompt-selector .prompts-list .prompt-item:last-child {\n border-bottom: none;\n }\n .prompt-selector-section .prompt-selector .prompts-list .prompt-item:hover {\n background-color: var(--mj-bg-surface-card);\n }\n .prompt-selector-section .prompt-selector .prompts-list .prompt-item .prompt-info {\n flex: 1;\n }\n .prompt-selector-section .prompt-selector .prompts-list .prompt-item .prompt-info .prompt-title {\n margin: 0 0 0.25rem 0;\n font-weight: 600;\n color: var(--mj-text-secondary);\n }\n .prompt-selector-section .prompt-selector .prompts-list .prompt-item .prompt-info .prompt-description {\n margin: 0;\n font-size: 0.875rem;\n color: var(--mj-text-muted);\n line-height: 1.4;\n }\n .prompt-selector-section .prompt-selector .prompts-list .prompt-item .prompt-actions {\n color: var(--mj-brand-primary);\n opacity: 0.7;\n transition: opacity 0.2s;\n }\n .prompt-selector-section .prompt-selector .prompts-list .prompt-item:hover .prompt-actions {\n opacity: 1;\n }\n}\n"] }]
1167
- }], () => [{ type: i1.MJNotificationService }], { prompt: [{
1169
+ }], () => [{ type: i1.MJNotificationService }, { type: i2.MJConfirmService }], { prompt: [{
1168
1170
  type: Input
1169
1171
  }], autoLoad: [{
1170
1172
  type: Input
@@ -1181,5 +1183,5 @@ export class PromptVersionControlComponent extends BaseAngularComponent {
1181
1183
  }], versionCompared: [{
1182
1184
  type: Output
1183
1185
  }] }); })();
1184
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PromptVersionControlComponent, { className: "PromptVersionControlComponent", filePath: "src/AI/components/prompts/prompt-version-control.component.ts", lineNumber: 46 }); })();
1186
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PromptVersionControlComponent, { className: "PromptVersionControlComponent", filePath: "src/AI/components/prompts/prompt-version-control.component.ts", lineNumber: 47 }); })();
1185
1187
  //# sourceMappingURL=prompt-version-control.component.js.map