@eric-emg/symphiq-components 1.3.78 → 1.3.80

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.
@@ -452,7 +452,6 @@ class ModalService {
452
452
  openSourceGoalDetailModal(goal, viewMode, sourceAnalysisType, previousState, sourceTypeTitle) {
453
453
  const data = { goal, viewMode, sourceAnalysisType, sourceTypeTitle };
454
454
  const navigationStack = previousState ? [...(previousState.navigationStack || []), previousState] : [];
455
- console.log('[ModalService] openSourceGoalDetailModal - previousState:', previousState?.type, 'navigationStack:', navigationStack.length, 'items', navigationStack.map(s => s.type));
456
455
  this.modalState.next({ type: 'goal-detail', data, charts: [], previousState, navigationStack });
457
456
  }
458
457
  navigateToGoalDetail(goal, viewMode) {
@@ -1121,12 +1120,14 @@ class ModalService {
1121
1120
  navigationStack
1122
1121
  });
1123
1122
  }
1124
- navigateToUnifiedGoalObjectives(goal, allMetrics, allCharts, viewMode) {
1123
+ navigateToUnifiedGoalObjectives(goal, allMetrics, allCharts, viewMode, allInsights, allBusinessInsights) {
1125
1124
  const currentState = this.modalState.value;
1126
1125
  const data = {
1127
1126
  goal,
1128
1127
  allMetrics,
1129
1128
  allCharts,
1129
+ allInsights,
1130
+ allBusinessInsights,
1130
1131
  viewMode
1131
1132
  };
1132
1133
  const currentStack = currentState.navigationStack || [];
@@ -3861,8 +3862,10 @@ class GoalActionStateService {
3861
3862
  constructor() {
3862
3863
  this.statesSignal = signal({}, ...(ngDevMode ? [{ debugName: "statesSignal" }] : []));
3863
3864
  this.stateChangesSubject = new BehaviorSubject({});
3865
+ this.lastChangedGoalIdSignal = signal(null, ...(ngDevMode ? [{ debugName: "lastChangedGoalIdSignal" }] : []));
3864
3866
  this.states = this.statesSignal.asReadonly();
3865
3867
  this.stateChanges$ = this.stateChangesSubject.asObservable();
3868
+ this.lastChangedGoalId = this.lastChangedGoalIdSignal.asReadonly();
3866
3869
  this.loadFromStorage();
3867
3870
  }
3868
3871
  getState(goalId) {
@@ -3874,6 +3877,10 @@ class GoalActionStateService {
3874
3877
  this.statesSignal.set(updated);
3875
3878
  this.saveToStorage(updated);
3876
3879
  this.stateChangesSubject.next(updated);
3880
+ this.lastChangedGoalIdSignal.set(goalId);
3881
+ }
3882
+ clearLastChangedGoalId() {
3883
+ this.lastChangedGoalIdSignal.set(null);
3877
3884
  }
3878
3885
  getAllStates() {
3879
3886
  return this.statesSignal();
@@ -44819,7 +44826,8 @@ class ProfileAnalysisModalComponent {
44819
44826
  'critical-gaps-list', 'key-strength-detail', 'critical-gap-detail', 'top-priorities-list',
44820
44827
  'top-priority-detail', 'focus-area-strengths-list', 'focus-area-gaps-list',
44821
44828
  'focus-area-opportunities-list', 'focus-area-strength-detail', 'focus-area-gap-detail',
44822
- 'focus-area-opportunity-detail', 'metrics-list', 'metric', 'item-detail', null
44829
+ 'focus-area-opportunity-detail', 'metrics-list', 'metric', 'insight', 'item-detail',
44830
+ 'chart', 'charts-list', null
44823
44831
  ];
44824
44832
  // Only update previousState if this modal handles the type
44825
44833
  // This prevents z-index conflicts when other modals open on top
@@ -44827,13 +44835,20 @@ class ProfileAnalysisModalComponent {
44827
44835
  this.previousState.set(state.previousState || null);
44828
44836
  }
44829
44837
  // Check if this modal was opened with profile context (from Profile Analysis dashboard)
44838
+ const profileContextTypes = [
44839
+ 'focus-area-strengths-list', 'focus-area-strength-detail',
44840
+ 'focus-area-gaps-list', 'focus-area-gap-detail',
44841
+ 'focus-area-opportunities-list', 'focus-area-opportunity-detail',
44842
+ 'top-priorities-list', 'top-priority-detail',
44843
+ 'key-strengths-list', 'key-strength-detail',
44844
+ 'critical-gaps-list', 'critical-gap-detail',
44845
+ 'recommendation-insights-list', 'goal-insights-list',
44846
+ 'strategy-recommendations', 'objective-strategies', 'goal-objectives', 'goal-detail',
44847
+ 'recommendation-business-insights-list', 'goal-business-insights-list'
44848
+ ];
44830
44849
  const hasProfileContext = state.previousState &&
44831
- ['focus-area-strengths-list', 'focus-area-strength-detail',
44832
- 'focus-area-gaps-list', 'focus-area-gap-detail',
44833
- 'focus-area-opportunities-list', 'focus-area-opportunity-detail',
44834
- 'top-priorities-list', 'top-priority-detail',
44835
- 'key-strengths-list', 'key-strength-detail',
44836
- 'critical-gaps-list', 'critical-gap-detail'].includes(state.previousState.type || '');
44850
+ profileContextTypes.includes(state.previousState.type || '') ||
44851
+ state.navigationStack?.some(s => profileContextTypes.includes(s.type || ''));
44837
44852
  // Delegate funnel-related types to Funnel Analysis Modal ONLY if no profile context
44838
44853
  // Note: 'metric' is NOT delegated - it should be handled by ProfileAnalysisModalComponent
44839
44854
  const funnelTypes = ['insight', 'chart', 'charts-list', 'funnel-strengths-list', 'funnel-weaknesses-list', 'funnel-strength-detail', 'funnel-weakness-detail'];
@@ -44885,10 +44900,11 @@ class ProfileAnalysisModalComponent {
44885
44900
  this.modalData.set(data);
44886
44901
  this.modalTitle.set(data.goal.title || 'Goal');
44887
44902
  this.modalType.set('goal-detail');
44888
- const isFromUnifiedModal = state.previousState?.type?.startsWith('unified-goal-');
44889
- this.openModalFresh(isFromUnifiedModal);
44903
+ const unifiedFlowTypes = ['unified-goal-detail', 'unified-goal-objectives', 'unified-goal-related-metrics', 'objective-strategies', 'strategy-recommendations', 'priority-actions-list'];
44904
+ const isFromUnifiedModal = state.previousState?.type && unifiedFlowTypes.includes(state.previousState.type) ||
44905
+ state.navigationStack?.some(s => s.type && unifiedFlowTypes.includes(s.type));
44906
+ this.openModalFresh(!!isFromUnifiedModal);
44890
44907
  const stack = state.navigationStack || [];
44891
- console.log('[ProfileAnalysisModal] goal-detail opened, navigationStack:', stack.length, 'items', stack.map(s => s.type));
44892
44908
  this.navigationStack.set(stack);
44893
44909
  }
44894
44910
  else if (state.type === 'goal-objectives' && state.data) {
@@ -45161,6 +45177,36 @@ class ProfileAnalysisModalComponent {
45161
45177
  this.navigationStack.set(stack);
45162
45178
  this.currentCharts.set([]);
45163
45179
  }
45180
+ else if (state.type === 'insight' && state.data) {
45181
+ const insight = state.data;
45182
+ this.modalData.set(insight);
45183
+ this.modalTitle.set(insight.title || 'Insight Details');
45184
+ this.modalType.set('insight');
45185
+ this.openModalFresh();
45186
+ const stack = state.navigationStack || [];
45187
+ this.navigationStack.set(stack);
45188
+ this.currentCharts.set(state.charts || []);
45189
+ }
45190
+ else if (state.type === 'chart' && state.data) {
45191
+ const chart = state.data;
45192
+ this.modalData.set(chart);
45193
+ this.modalTitle.set(chart.title || 'Chart');
45194
+ this.modalType.set('chart');
45195
+ this.openModalFresh();
45196
+ const stack = state.navigationStack || [];
45197
+ this.navigationStack.set(stack);
45198
+ this.currentCharts.set([]);
45199
+ }
45200
+ else if (state.type === 'charts-list' && state.data) {
45201
+ const data = state.data;
45202
+ this.modalData.set(data);
45203
+ this.modalTitle.set(data.insightContext?.title ? `Charts for ${data.insightContext.title}` : 'Related Charts');
45204
+ this.modalType.set('charts-list');
45205
+ this.openModalFresh();
45206
+ const stack = state.navigationStack || [];
45207
+ this.navigationStack.set(stack);
45208
+ this.currentCharts.set(data.charts || []);
45209
+ }
45164
45210
  else if (state.type === null) {
45165
45211
  this.isOpen.set(false);
45166
45212
  setTimeout(() => {
@@ -103177,6 +103223,7 @@ class GoalActionStateChipComponent {
103177
103223
  this.state = input.required(...(ngDevMode ? [{ debugName: "state" }] : []));
103178
103224
  this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
103179
103225
  this.goalId = input(...(ngDevMode ? [undefined, { debugName: "goalId" }] : []));
103226
+ this.shouldPulse = input(false, ...(ngDevMode ? [{ debugName: "shouldPulse" }] : []));
103180
103227
  this.stateChange = output();
103181
103228
  this.isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : []));
103182
103229
  this.elementRef = inject(ElementRef);
@@ -103280,7 +103327,7 @@ class GoalActionStateChipComponent {
103280
103327
  static { this.ɵfac = function GoalActionStateChipComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || GoalActionStateChipComponent)(); }; }
103281
103328
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: GoalActionStateChipComponent, selectors: [["symphiq-goal-action-state-chip"]], hostBindings: function GoalActionStateChipComponent_HostBindings(rf, ctx) { if (rf & 1) {
103282
103329
  i0.ɵɵlistener("click", function GoalActionStateChipComponent_click_HostBindingHandler($event) { return ctx.onDocumentClick($event); }, i0.ɵɵresolveDocument);
103283
- } }, inputs: { state: [1, "state"], viewMode: [1, "viewMode"], goalId: [1, "goalId"] }, outputs: { stateChange: "stateChange" }, decls: 7, vars: 6, consts: [[1, "relative", "inline-block"], ["type", "button", 1, "inline-flex", "items-center", "gap-1.5", "px-3", "py-1", "rounded-full", "text-xs", "font-semibold", "whitespace-nowrap", "cursor-pointer", "transition-all", "duration-200", "hover:scale-105", 3, "click", "ngClass"], [1, "w-2", "h-2", "rounded-full", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3", "transition-transform", "duration-200"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M19 9l-7 7-7-7"], [1, "absolute", "top-full", "left-0", "mt-1", "min-w-[160px]", "rounded-lg", "shadow-xl", "z-50", "py-1", "border", 3, "ngClass"], ["type", "button", 1, "w-full", "flex", "items-center", "gap-2", "px-3", "py-2", "text-xs", "font-medium", "transition-colors", "duration-150", "text-left", 3, "ngClass"], ["type", "button", 1, "w-full", "flex", "items-center", "gap-2", "px-3", "py-2", "text-xs", "font-medium", "transition-colors", "duration-150", "text-left", 3, "click", "ngClass"], [1, "w-2", "h-2", "rounded-full", "flex-shrink-0", 3, "ngClass"], [1, "flex-1"], ["fill", "currentColor", "viewBox", "0 0 20 20", 1, "w-3.5", "h-3.5", "text-blue-500"], ["fill-rule", "evenodd", "d", "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z", "clip-rule", "evenodd"]], template: function GoalActionStateChipComponent_Template(rf, ctx) { if (rf & 1) {
103330
+ } }, inputs: { state: [1, "state"], viewMode: [1, "viewMode"], goalId: [1, "goalId"], shouldPulse: [1, "shouldPulse"] }, outputs: { stateChange: "stateChange" }, decls: 7, vars: 8, consts: [[1, "relative", "inline-block"], ["type", "button", 1, "inline-flex", "items-center", "gap-1.5", "px-3", "py-1", "rounded-full", "text-xs", "font-semibold", "whitespace-nowrap", "cursor-pointer", "transition-all", "duration-200", "hover:scale-105", 3, "click", "ngClass"], [1, "w-2", "h-2", "rounded-full", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3", "transition-transform", "duration-200"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M19 9l-7 7-7-7"], [1, "absolute", "top-full", "left-0", "mt-1", "min-w-[160px]", "rounded-lg", "shadow-xl", "z-50", "py-1", "border", 3, "ngClass"], ["type", "button", 1, "w-full", "flex", "items-center", "gap-2", "px-3", "py-2", "text-xs", "font-medium", "transition-colors", "duration-150", "text-left", 3, "ngClass"], ["type", "button", 1, "w-full", "flex", "items-center", "gap-2", "px-3", "py-2", "text-xs", "font-medium", "transition-colors", "duration-150", "text-left", 3, "click", "ngClass"], [1, "w-2", "h-2", "rounded-full", "flex-shrink-0", 3, "ngClass"], [1, "flex-1"], ["fill", "currentColor", "viewBox", "0 0 20 20", 1, "w-3.5", "h-3.5", "text-blue-500"], ["fill-rule", "evenodd", "d", "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z", "clip-rule", "evenodd"]], template: function GoalActionStateChipComponent_Template(rf, ctx) { if (rf & 1) {
103284
103331
  i0.ɵɵelementStart(0, "div", 0)(1, "button", 1);
103285
103332
  i0.ɵɵlistener("click", function GoalActionStateChipComponent_Template_button_click_1_listener($event) { return ctx.toggleDropdown($event); });
103286
103333
  i0.ɵɵelement(2, "span", 2);
@@ -103293,6 +103340,7 @@ class GoalActionStateChipComponent {
103293
103340
  i0.ɵɵelementEnd();
103294
103341
  } if (rf & 2) {
103295
103342
  i0.ɵɵadvance();
103343
+ i0.ɵɵclassProp("animate-chip-pulse", ctx.shouldPulse());
103296
103344
  i0.ɵɵproperty("ngClass", ctx.chipClasses());
103297
103345
  i0.ɵɵadvance();
103298
103346
  i0.ɵɵproperty("ngClass", ctx.dotClasses());
@@ -103302,21 +103350,17 @@ class GoalActionStateChipComponent {
103302
103350
  i0.ɵɵclassProp("rotate-180", ctx.isOpen());
103303
103351
  i0.ɵɵadvance(2);
103304
103352
  i0.ɵɵconditional(ctx.isOpen() ? 6 : -1);
103305
- } }, dependencies: [CommonModule, i1$1.NgClass], encapsulation: 2, changeDetection: 0 }); }
103353
+ } }, dependencies: [CommonModule, i1$1.NgClass], styles: ["@keyframes _ngcontent-%COMP%_chip-pulse{0%,to{transform:scale(1);box-shadow:0 0 0 0 currentColor}50%{transform:scale(1.05);box-shadow:0 0 12px 2px currentColor}}.animate-chip-pulse[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_chip-pulse .6s ease-in-out 3}"], changeDetection: 0 }); }
103306
103354
  }
103307
103355
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GoalActionStateChipComponent, [{
103308
103356
  type: Component,
103309
- args: [{
103310
- selector: 'symphiq-goal-action-state-chip',
103311
- standalone: true,
103312
- imports: [CommonModule],
103313
- changeDetection: ChangeDetectionStrategy.OnPush,
103314
- template: `
103357
+ args: [{ selector: 'symphiq-goal-action-state-chip', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
103315
103358
  <div class="relative inline-block">
103316
103359
  <button
103317
103360
  type="button"
103318
103361
  (click)="toggleDropdown($event)"
103319
103362
  [ngClass]="chipClasses()"
103363
+ [class.animate-chip-pulse]="shouldPulse()"
103320
103364
  class="inline-flex items-center gap-1.5 px-3 py-1 rounded-full text-xs font-semibold whitespace-nowrap cursor-pointer transition-all duration-200 hover:scale-105">
103321
103365
  <span [ngClass]="dotClasses()" class="w-2 h-2 rounded-full"></span>
103322
103366
  {{ label() }}
@@ -103345,27 +103389,85 @@ class GoalActionStateChipComponent {
103345
103389
  </div>
103346
103390
  }
103347
103391
  </div>
103348
- `
103349
- }]
103350
- }], null, { state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], goalId: [{ type: i0.Input, args: [{ isSignal: true, alias: "goalId", required: false }] }], stateChange: [{ type: i0.Output, args: ["stateChange"] }], onDocumentClick: [{
103392
+ `, styles: ["@keyframes chip-pulse{0%,to{transform:scale(1);box-shadow:0 0 0 0 currentColor}50%{transform:scale(1.05);box-shadow:0 0 12px 2px currentColor}}.animate-chip-pulse{animation:chip-pulse .6s ease-in-out 3}\n"] }]
103393
+ }], null, { state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], goalId: [{ type: i0.Input, args: [{ isSignal: true, alias: "goalId", required: false }] }], shouldPulse: [{ type: i0.Input, args: [{ isSignal: true, alias: "shouldPulse", required: false }] }], stateChange: [{ type: i0.Output, args: ["stateChange"] }], onDocumentClick: [{
103351
103394
  type: HostListener,
103352
103395
  args: ['document:click', ['$event']]
103353
103396
  }] }); })();
103354
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(GoalActionStateChipComponent, { className: "GoalActionStateChipComponent", filePath: "lib/components/shared/goal-action-state-chip.component.ts", lineNumber: 47 }); })();
103397
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(GoalActionStateChipComponent, { className: "GoalActionStateChipComponent", filePath: "lib/components/shared/goal-action-state-chip.component.ts", lineNumber: 63 }); })();
103398
+
103399
+ class ReviewButtonComponent {
103400
+ constructor() {
103401
+ this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
103402
+ this.label = input('Review Goal', ...(ngDevMode ? [{ debugName: "label" }] : []));
103403
+ this.buttonClick = output();
103404
+ this.isDark = computed(() => this.viewMode() === ViewModeEnum.DARK, ...(ngDevMode ? [{ debugName: "isDark" }] : []));
103405
+ this.buttonClasses = computed(() => {
103406
+ return 'bg-gradient-to-r from-blue-600 via-cyan-600 to-teal-600 hover:from-blue-500 hover:via-cyan-500 hover:to-teal-500 text-white border border-blue-500/30';
103407
+ }, ...(ngDevMode ? [{ debugName: "buttonClasses" }] : []));
103408
+ }
103409
+ onClick(event) {
103410
+ event.stopPropagation();
103411
+ this.buttonClick.emit();
103412
+ }
103413
+ static { this.ɵfac = function ReviewButtonComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ReviewButtonComponent)(); }; }
103414
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ReviewButtonComponent, selectors: [["symphiq-review-button"]], inputs: { viewMode: [1, "viewMode"], label: [1, "label"] }, outputs: { buttonClick: "buttonClick" }, decls: 8, vars: 2, consts: [["type", "button", 1, "w-full", "flex", "items-center", "justify-center", "gap-2", "px-4", "py-3", "rounded-xl", "text-sm", "font-semibold", "transition-all", "duration-300", "cursor-pointer", "hover:scale-[1.02]", "active:scale-[0.98]", "animate-review-pulse", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5", "animate-pulse"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M15 12a3 3 0 11-6 0 3 3 0 016 0z"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5", "group-hover:translate-x-1", "transition-transform"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 5l7 7-7 7"]], template: function ReviewButtonComponent_Template(rf, ctx) { if (rf & 1) {
103415
+ i0.ɵɵelementStart(0, "button", 0);
103416
+ i0.ɵɵlistener("click", function ReviewButtonComponent_Template_button_click_0_listener($event) { return ctx.onClick($event); });
103417
+ i0.ɵɵnamespaceSVG();
103418
+ i0.ɵɵelementStart(1, "svg", 1);
103419
+ i0.ɵɵelement(2, "path", 2)(3, "path", 3);
103420
+ i0.ɵɵelementEnd();
103421
+ i0.ɵɵnamespaceHTML();
103422
+ i0.ɵɵelementStart(4, "span");
103423
+ i0.ɵɵtext(5);
103424
+ i0.ɵɵelementEnd();
103425
+ i0.ɵɵnamespaceSVG();
103426
+ i0.ɵɵelementStart(6, "svg", 4);
103427
+ i0.ɵɵelement(7, "path", 5);
103428
+ i0.ɵɵelementEnd()();
103429
+ } if (rf & 2) {
103430
+ i0.ɵɵproperty("ngClass", ctx.buttonClasses());
103431
+ i0.ɵɵadvance(5);
103432
+ i0.ɵɵtextInterpolate(ctx.label());
103433
+ } }, dependencies: [CommonModule, i1$1.NgClass], styles: ["@keyframes _ngcontent-%COMP%_review-pulse{0%,to{box-shadow:0 0 #3b82f666}50%{box-shadow:0 0 0 8px #3b82f600}}.animate-review-pulse[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_review-pulse 2s ease-in-out infinite}"], changeDetection: 0 }); }
103434
+ }
103435
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ReviewButtonComponent, [{
103436
+ type: Component,
103437
+ args: [{ selector: 'symphiq-review-button', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
103438
+ <button
103439
+ type="button"
103440
+ [ngClass]="buttonClasses()"
103441
+ class="w-full flex items-center justify-center gap-2 px-4 py-3 rounded-xl text-sm font-semibold transition-all duration-300 cursor-pointer hover:scale-[1.02] active:scale-[0.98] animate-review-pulse"
103442
+ (click)="onClick($event)">
103443
+ <svg class="w-5 h-5 animate-pulse" fill="none" stroke="currentColor" viewBox="0 0 24 24">
103444
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
103445
+ d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/>
103446
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
103447
+ d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"/>
103448
+ </svg>
103449
+ <span>{{ label() }}</span>
103450
+ <svg class="w-5 h-5 group-hover:translate-x-1 transition-transform" fill="none" stroke="currentColor" viewBox="0 0 24 24">
103451
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
103452
+ </svg>
103453
+ </button>
103454
+ `, styles: ["@keyframes review-pulse{0%,to{box-shadow:0 0 #3b82f666}50%{box-shadow:0 0 0 8px #3b82f600}}.animate-review-pulse{animation:review-pulse 2s ease-in-out infinite}\n"] }]
103455
+ }], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], buttonClick: [{ type: i0.Output, args: ["buttonClick"] }] }); })();
103456
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ReviewButtonComponent, { className: "ReviewButtonComponent", filePath: "lib/components/shared/review-button.component.ts", lineNumber: 42 }); })();
103355
103457
 
103356
103458
  function UnifiedGoalCardComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
103357
103459
  const _r1 = i0.ɵɵgetCurrentView();
103358
- i0.ɵɵelementStart(0, "symphiq-goal-action-state-chip", 19);
103460
+ i0.ɵɵelementStart(0, "symphiq-goal-action-state-chip", 20);
103359
103461
  i0.ɵɵlistener("stateChange", function UnifiedGoalCardComponent_Conditional_9_Template_symphiq_goal_action_state_chip_stateChange_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onActionStateChange($event)); });
103360
103462
  i0.ɵɵelementEnd();
103361
103463
  } if (rf & 2) {
103362
103464
  let tmp_3_0;
103363
103465
  const ctx_r1 = i0.ɵɵnextContext();
103364
- i0.ɵɵproperty("state", ctx_r1.actionState())("viewMode", ctx_r1.viewMode())("goalId", (tmp_3_0 = ctx_r1.goal()) == null ? null : tmp_3_0.id);
103466
+ i0.ɵɵproperty("state", ctx_r1.actionState())("viewMode", ctx_r1.viewMode())("goalId", (tmp_3_0 = ctx_r1.goal()) == null ? null : tmp_3_0.id)("shouldPulse", ctx_r1.shouldPulseChip());
103365
103467
  } }
103366
103468
  function UnifiedGoalCardComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
103367
103469
  i0.ɵɵelementStart(0, "div", 10);
103368
- i0.ɵɵelement(1, "symphiq-thematic-category-badge", 20);
103470
+ i0.ɵɵelement(1, "symphiq-thematic-category-badge", 21);
103369
103471
  i0.ɵɵelementEnd();
103370
103472
  } if (rf & 2) {
103371
103473
  const ctx_r1 = i0.ɵɵnextContext();
@@ -103384,7 +103486,7 @@ function UnifiedGoalCardComponent_Conditional_13_Template(rf, ctx) { if (rf & 1)
103384
103486
  } }
103385
103487
  function UnifiedGoalCardComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
103386
103488
  i0.ɵɵelementStart(0, "div", 12);
103387
- i0.ɵɵelement(1, "symphiq-roadmap-metrics", 21);
103489
+ i0.ɵɵelement(1, "symphiq-roadmap-metrics", 22);
103388
103490
  i0.ɵɵelementEnd();
103389
103491
  } if (rf & 2) {
103390
103492
  const ctx_r1 = i0.ɵɵnextContext();
@@ -103409,11 +103511,30 @@ function UnifiedGoalCardComponent_Conditional_18_Template(rf, ctx) { if (rf & 1)
103409
103511
  const ctx_r1 = i0.ɵɵnextContext();
103410
103512
  i0.ɵɵproperty("sourceTypeCounts", ctx_r1.sourceTypeCounts())("contributingCounts", ctx_r1.contributingCounts())("viewMode", ctx_r1.viewMode());
103411
103513
  } }
103514
+ function UnifiedGoalCardComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
103515
+ const _r3 = i0.ɵɵgetCurrentView();
103516
+ i0.ɵɵelementStart(0, "symphiq-learn-more-button", 23);
103517
+ i0.ɵɵlistener("buttonClick", function UnifiedGoalCardComponent_Conditional_20_Template_symphiq_learn_more_button_buttonClick_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onLearnMoreClick()); });
103518
+ i0.ɵɵelementEnd();
103519
+ } if (rf & 2) {
103520
+ const ctx_r1 = i0.ɵɵnextContext();
103521
+ i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("variant", "button")("label", "Learn More");
103522
+ } }
103523
+ function UnifiedGoalCardComponent_Conditional_21_Template(rf, ctx) { if (rf & 1) {
103524
+ const _r4 = i0.ɵɵgetCurrentView();
103525
+ i0.ɵɵelementStart(0, "symphiq-review-button", 24);
103526
+ i0.ɵɵlistener("buttonClick", function UnifiedGoalCardComponent_Conditional_21_Template_symphiq_review_button_buttonClick_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onLearnMoreClick()); });
103527
+ i0.ɵɵelementEnd();
103528
+ } if (rf & 2) {
103529
+ const ctx_r1 = i0.ɵɵnextContext();
103530
+ i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("label", "Review Goal");
103531
+ } }
103412
103532
  class UnifiedGoalCardComponent {
103413
103533
  constructor() {
103414
103534
  this.goal = input(...(ngDevMode ? [undefined, { debugName: "goal" }] : []));
103415
103535
  this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
103416
103536
  this.actionState = input(...(ngDevMode ? [undefined, { debugName: "actionState" }] : []));
103537
+ this.shouldPulseChip = input(false, ...(ngDevMode ? [{ debugName: "shouldPulseChip" }] : []));
103417
103538
  this.goalClick = output();
103418
103539
  this.sourceBadgeClick = output();
103419
103540
  this.relatedMetricsClick = output();
@@ -103565,7 +103686,7 @@ class UnifiedGoalCardComponent {
103565
103686
  this.actionStateChange.emit(event);
103566
103687
  }
103567
103688
  static { this.ɵfac = function UnifiedGoalCardComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || UnifiedGoalCardComponent)(); }; }
103568
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UnifiedGoalCardComponent, selectors: [["symphiq-unified-goal-card"]], inputs: { goal: [1, "goal"], viewMode: [1, "viewMode"], actionState: [1, "actionState"] }, outputs: { goalClick: "goalClick", sourceBadgeClick: "sourceBadgeClick", relatedMetricsClick: "relatedMetricsClick", relatedFocusAreasClick: "relatedFocusAreasClick", learnMoreClick: "learnMoreClick", actionStateChange: "actionStateChange" }, decls: 21, vars: 15, consts: [[1, "rounded-2xl", "p-6", "shadow-lg", "transition-all", "duration-200", 3, "ngClass"], [1, "flex", "items-start", "gap-4", "mb-2"], [3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z"], [1, "flex-1", "min-w-0"], [1, "flex", "items-center", "justify-between", "gap-2", "mb-1"], [1, "text-xs", "font-semibold", "uppercase", "tracking-wider", 3, "ngClass"], [3, "state", "viewMode", "goalId"], [1, "font-semibold", "text-lg", "line-clamp-2", 3, "ngClass"], [1, "mb-3"], [1, "text-sm", "mb-4", "line-clamp-3", "cursor-help", 3, "ngClass", "libSymphiqTooltip"], [1, "mb-4"], [1, "flex", "flex-wrap", "items-center", "justify-between", "gap-3", "mb-4"], [3, "priority", "viewMode"], [3, "timeframe", "viewMode"], [3, "sourceTypeCounts", "contributingCounts", "viewMode"], [1, "mt-4"], [3, "buttonClick", "viewMode", "variant", "label"], [3, "stateChange", "state", "viewMode", "goalId"], [3, "category", "viewMode"], [3, "metrics", "viewMode"]], template: function UnifiedGoalCardComponent_Template(rf, ctx) { if (rf & 1) {
103689
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UnifiedGoalCardComponent, selectors: [["symphiq-unified-goal-card"]], inputs: { goal: [1, "goal"], viewMode: [1, "viewMode"], actionState: [1, "actionState"], shouldPulseChip: [1, "shouldPulseChip"] }, outputs: { goalClick: "goalClick", sourceBadgeClick: "sourceBadgeClick", relatedMetricsClick: "relatedMetricsClick", relatedFocusAreasClick: "relatedFocusAreasClick", learnMoreClick: "learnMoreClick", actionStateChange: "actionStateChange" }, decls: 22, vars: 13, consts: [[1, "rounded-2xl", "p-6", "shadow-lg", "transition-all", "duration-200", 3, "ngClass"], [1, "flex", "items-start", "gap-4", "mb-2"], [3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z"], [1, "flex-1", "min-w-0"], [1, "flex", "items-center", "justify-between", "gap-2", "mb-1"], [1, "text-xs", "font-semibold", "uppercase", "tracking-wider", 3, "ngClass"], [3, "state", "viewMode", "goalId", "shouldPulse"], [1, "font-semibold", "text-lg", "line-clamp-2", 3, "ngClass"], [1, "mb-3"], [1, "text-sm", "mb-4", "line-clamp-3", "cursor-help", 3, "ngClass", "libSymphiqTooltip"], [1, "mb-4"], [1, "flex", "flex-wrap", "items-center", "justify-between", "gap-3", "mb-4"], [3, "priority", "viewMode"], [3, "timeframe", "viewMode"], [3, "sourceTypeCounts", "contributingCounts", "viewMode"], [1, "mt-4"], [3, "viewMode", "variant", "label"], [3, "viewMode", "label"], [3, "stateChange", "state", "viewMode", "goalId", "shouldPulse"], [3, "category", "viewMode"], [3, "metrics", "viewMode"], [3, "buttonClick", "viewMode", "variant", "label"], [3, "buttonClick", "viewMode", "label"]], template: function UnifiedGoalCardComponent_Template(rf, ctx) { if (rf & 1) {
103569
103690
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2);
103570
103691
  i0.ɵɵnamespaceSVG();
103571
103692
  i0.ɵɵelementStart(3, "svg", 3);
@@ -103575,7 +103696,7 @@ class UnifiedGoalCardComponent {
103575
103696
  i0.ɵɵelementStart(5, "div", 5)(6, "div", 6)(7, "div", 7);
103576
103697
  i0.ɵɵtext(8, " Unified Goal ");
103577
103698
  i0.ɵɵelementEnd();
103578
- i0.ɵɵconditionalCreate(9, UnifiedGoalCardComponent_Conditional_9_Template, 1, 3, "symphiq-goal-action-state-chip", 8);
103699
+ i0.ɵɵconditionalCreate(9, UnifiedGoalCardComponent_Conditional_9_Template, 1, 4, "symphiq-goal-action-state-chip", 8);
103579
103700
  i0.ɵɵelementEnd();
103580
103701
  i0.ɵɵelementStart(10, "h4", 9);
103581
103702
  i0.ɵɵtext(11);
@@ -103588,9 +103709,9 @@ class UnifiedGoalCardComponent {
103588
103709
  i0.ɵɵconditionalCreate(17, UnifiedGoalCardComponent_Conditional_17_Template, 1, 2, "symphiq-timeframe-badge", 15);
103589
103710
  i0.ɵɵelementEnd();
103590
103711
  i0.ɵɵconditionalCreate(18, UnifiedGoalCardComponent_Conditional_18_Template, 1, 3, "symphiq-source-summary", 16);
103591
- i0.ɵɵelementStart(19, "div", 17)(20, "symphiq-learn-more-button", 18);
103592
- i0.ɵɵlistener("buttonClick", function UnifiedGoalCardComponent_Template_symphiq_learn_more_button_buttonClick_20_listener() { return ctx.onLearnMoreClick(); });
103593
- i0.ɵɵelementEnd()()();
103712
+ i0.ɵɵelementStart(19, "div", 17);
103713
+ i0.ɵɵconditionalCreate(20, UnifiedGoalCardComponent_Conditional_20_Template, 1, 3, "symphiq-learn-more-button", 18)(21, UnifiedGoalCardComponent_Conditional_21_Template, 1, 2, "symphiq-review-button", 19);
103714
+ i0.ɵɵelementEnd()();
103594
103715
  } if (rf & 2) {
103595
103716
  let tmp_5_0;
103596
103717
  let tmp_6_0;
@@ -103622,7 +103743,7 @@ class UnifiedGoalCardComponent {
103622
103743
  i0.ɵɵadvance();
103623
103744
  i0.ɵɵconditional((((tmp_11_0 = ctx.goal()) == null ? null : tmp_11_0.sourceAnalyses == null ? null : tmp_11_0.sourceAnalyses.length) ?? 0) > 0 || ctx.hasRelatedContext() ? 18 : -1);
103624
103745
  i0.ɵɵadvance(2);
103625
- i0.ɵɵproperty("viewMode", ctx.viewMode())("variant", "button")("label", "Learn More");
103746
+ i0.ɵɵconditional(ctx.actionState() ? 20 : 21);
103626
103747
  } }, dependencies: [CommonModule, i1$1.NgClass, PriorityBadgeComponent,
103627
103748
  TimeframeBadgeComponent,
103628
103749
  RoadmapMetricsComponent,
@@ -103630,7 +103751,8 @@ class UnifiedGoalCardComponent {
103630
103751
  SourceSummaryComponent,
103631
103752
  ThematicCategoryBadgeComponent,
103632
103753
  TooltipDirective,
103633
- GoalActionStateChipComponent], encapsulation: 2, changeDetection: 0 }); }
103754
+ GoalActionStateChipComponent,
103755
+ ReviewButtonComponent], encapsulation: 2, changeDetection: 0 }); }
103634
103756
  }
103635
103757
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UnifiedGoalCardComponent, [{
103636
103758
  type: Component,
@@ -103646,7 +103768,8 @@ class UnifiedGoalCardComponent {
103646
103768
  SourceSummaryComponent,
103647
103769
  ThematicCategoryBadgeComponent,
103648
103770
  TooltipDirective,
103649
- GoalActionStateChipComponent
103771
+ GoalActionStateChipComponent,
103772
+ ReviewButtonComponent
103650
103773
  ],
103651
103774
  changeDetection: ChangeDetectionStrategy.OnPush,
103652
103775
  template: `
@@ -103670,6 +103793,7 @@ class UnifiedGoalCardComponent {
103670
103793
  [state]="actionState()!"
103671
103794
  [viewMode]="viewMode()"
103672
103795
  [goalId]="goal()?.id"
103796
+ [shouldPulse]="shouldPulseChip()"
103673
103797
  (stateChange)="onActionStateChange($event)"
103674
103798
  />
103675
103799
  }
@@ -103725,18 +103849,26 @@ class UnifiedGoalCardComponent {
103725
103849
  }
103726
103850
 
103727
103851
  <div class="mt-4">
103728
- <symphiq-learn-more-button
103729
- [viewMode]="viewMode()"
103730
- [variant]="'button'"
103731
- [label]="'Learn More'"
103732
- (buttonClick)="onLearnMoreClick()"
103733
- />
103852
+ @if (actionState()) {
103853
+ <symphiq-learn-more-button
103854
+ [viewMode]="viewMode()"
103855
+ [variant]="'button'"
103856
+ [label]="'Learn More'"
103857
+ (buttonClick)="onLearnMoreClick()"
103858
+ />
103859
+ } @else {
103860
+ <symphiq-review-button
103861
+ [viewMode]="viewMode()"
103862
+ [label]="'Review Goal'"
103863
+ (buttonClick)="onLearnMoreClick()"
103864
+ />
103865
+ }
103734
103866
  </div>
103735
103867
  </div>
103736
103868
  `
103737
103869
  }]
103738
- }], null, { goal: [{ type: i0.Input, args: [{ isSignal: true, alias: "goal", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], actionState: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionState", required: false }] }], goalClick: [{ type: i0.Output, args: ["goalClick"] }], sourceBadgeClick: [{ type: i0.Output, args: ["sourceBadgeClick"] }], relatedMetricsClick: [{ type: i0.Output, args: ["relatedMetricsClick"] }], relatedFocusAreasClick: [{ type: i0.Output, args: ["relatedFocusAreasClick"] }], learnMoreClick: [{ type: i0.Output, args: ["learnMoreClick"] }], actionStateChange: [{ type: i0.Output, args: ["actionStateChange"] }] }); })();
103739
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UnifiedGoalCardComponent, { className: "UnifiedGoalCardComponent", filePath: "lib/components/profile-analysis-unified-dashboard/cards/unified-goal-card.component.ts", lineNumber: 116 }); })();
103870
+ }], null, { goal: [{ type: i0.Input, args: [{ isSignal: true, alias: "goal", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], actionState: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionState", required: false }] }], shouldPulseChip: [{ type: i0.Input, args: [{ isSignal: true, alias: "shouldPulseChip", required: false }] }], goalClick: [{ type: i0.Output, args: ["goalClick"] }], sourceBadgeClick: [{ type: i0.Output, args: ["sourceBadgeClick"] }], relatedMetricsClick: [{ type: i0.Output, args: ["relatedMetricsClick"] }], relatedFocusAreasClick: [{ type: i0.Output, args: ["relatedFocusAreasClick"] }], learnMoreClick: [{ type: i0.Output, args: ["learnMoreClick"] }], actionStateChange: [{ type: i0.Output, args: ["actionStateChange"] }] }); })();
103871
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UnifiedGoalCardComponent, { className: "UnifiedGoalCardComponent", filePath: "lib/components/profile-analysis-unified-dashboard/cards/unified-goal-card.component.ts", lineNumber: 127 }); })();
103740
103872
 
103741
103873
  const _c0$9 = a0 => ({ name: "flag", source: a0 });
103742
103874
  const _forTrack0$9 = ($index, $item) => $item.id;
@@ -103748,13 +103880,13 @@ function UnifiedGoalsGridComponent_Conditional_0_For_5_Template(rf, ctx) { if (r
103748
103880
  } if (rf & 2) {
103749
103881
  const goal_r3 = ctx.$implicit;
103750
103882
  const ctx_r1 = i0.ɵɵnextContext(2);
103751
- i0.ɵɵproperty("goal", goal_r3)("viewMode", ctx_r1.viewMode())("actionState", ctx_r1.getActionState(goal_r3.id));
103883
+ i0.ɵɵproperty("goal", goal_r3)("viewMode", ctx_r1.viewMode())("actionState", ctx_r1.getActionState(goal_r3.id))("shouldPulseChip", ctx_r1.shouldPulse(goal_r3.id));
103752
103884
  } }
103753
103885
  function UnifiedGoalsGridComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
103754
103886
  i0.ɵɵelementStart(0, "section", 0);
103755
103887
  i0.ɵɵelement(1, "symphiq-section-divider", 1)(2, "symphiq-section-header", 2);
103756
103888
  i0.ɵɵelementStart(3, "div", 3);
103757
- i0.ɵɵrepeaterCreate(4, UnifiedGoalsGridComponent_Conditional_0_For_5_Template, 1, 3, "symphiq-unified-goal-card", 4, _forTrack0$9);
103889
+ i0.ɵɵrepeaterCreate(4, UnifiedGoalsGridComponent_Conditional_0_For_5_Template, 1, 4, "symphiq-unified-goal-card", 4, _forTrack0$9);
103758
103890
  i0.ɵɵelementEnd()();
103759
103891
  } if (rf & 2) {
103760
103892
  const ctx_r1 = i0.ɵɵnextContext();
@@ -103778,19 +103910,29 @@ class UnifiedGoalsGridComponent {
103778
103910
  this.goalActionStateService.states();
103779
103911
  return this.goalActionStateService.getAllStates();
103780
103912
  }, ...(ngDevMode ? [{ debugName: "states" }] : []));
103913
+ this.lastChangedGoalId = computed(() => this.goalActionStateService.lastChangedGoalId(), ...(ngDevMode ? [{ debugName: "lastChangedGoalId" }] : []));
103781
103914
  }
103782
103915
  getActionState(goalId) {
103783
103916
  if (!goalId)
103784
103917
  return undefined;
103785
103918
  return this.states()[goalId];
103786
103919
  }
103920
+ shouldPulse(goalId) {
103921
+ if (!goalId)
103922
+ return false;
103923
+ const match = this.lastChangedGoalId() === goalId;
103924
+ if (match) {
103925
+ setTimeout(() => this.goalActionStateService.clearLastChangedGoalId(), 2000);
103926
+ }
103927
+ return match;
103928
+ }
103787
103929
  onActionStateChange(event) {
103788
103930
  if (event.goalId) {
103789
103931
  this.goalActionStateService.setState(event.goalId, event.state);
103790
103932
  }
103791
103933
  }
103792
103934
  static { this.ɵfac = function UnifiedGoalsGridComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || UnifiedGoalsGridComponent)(); }; }
103793
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UnifiedGoalsGridComponent, selectors: [["symphiq-unified-goals-grid"]], inputs: { viewMode: [1, "viewMode"], goals: [1, "goals"] }, outputs: { goalClick: "goalClick", sourceBadgeClick: "sourceBadgeClick", relatedMetricsClick: "relatedMetricsClick" }, decls: 1, vars: 1, consts: [["id", "section-unified-goals", 1, "space-y-6", "scroll-mt-24"], [3, "viewMode", "sectionIcon"], ["title", "Unified Goals", 3, "icon", "viewMode"], [1, "grid", "gap-6", 2, "grid-template-columns", "repeat(auto-fit, minmax(340px, 1fr))"], [3, "goal", "viewMode", "actionState"], [3, "goalClick", "sourceBadgeClick", "relatedMetricsClick", "learnMoreClick", "actionStateChange", "goal", "viewMode", "actionState"]], template: function UnifiedGoalsGridComponent_Template(rf, ctx) { if (rf & 1) {
103935
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UnifiedGoalsGridComponent, selectors: [["symphiq-unified-goals-grid"]], inputs: { viewMode: [1, "viewMode"], goals: [1, "goals"] }, outputs: { goalClick: "goalClick", sourceBadgeClick: "sourceBadgeClick", relatedMetricsClick: "relatedMetricsClick" }, decls: 1, vars: 1, consts: [["id", "section-unified-goals", 1, "space-y-6", "scroll-mt-24"], [3, "viewMode", "sectionIcon"], ["title", "Unified Goals", 3, "icon", "viewMode"], [1, "grid", "gap-6", 2, "grid-template-columns", "repeat(auto-fit, minmax(340px, 1fr))"], [3, "goal", "viewMode", "actionState", "shouldPulseChip"], [3, "goalClick", "sourceBadgeClick", "relatedMetricsClick", "learnMoreClick", "actionStateChange", "goal", "viewMode", "actionState", "shouldPulseChip"]], template: function UnifiedGoalsGridComponent_Template(rf, ctx) { if (rf & 1) {
103794
103936
  i0.ɵɵconditionalCreate(0, UnifiedGoalsGridComponent_Conditional_0_Template, 6, 8, "section", 0);
103795
103937
  } if (rf & 2) {
103796
103938
  i0.ɵɵconditional(ctx.goals().length > 0 ? 0 : -1);
@@ -103830,6 +103972,7 @@ class UnifiedGoalsGridComponent {
103830
103972
  [goal]="goal"
103831
103973
  [viewMode]="viewMode()"
103832
103974
  [actionState]="getActionState(goal.id)"
103975
+ [shouldPulseChip]="shouldPulse(goal.id)"
103833
103976
  (goalClick)="goalClick.emit($event)"
103834
103977
  (sourceBadgeClick)="sourceBadgeClick.emit($event)"
103835
103978
  (relatedMetricsClick)="relatedMetricsClick.emit($event)"
@@ -103843,7 +103986,7 @@ class UnifiedGoalsGridComponent {
103843
103986
  `
103844
103987
  }]
103845
103988
  }], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], goals: [{ type: i0.Input, args: [{ isSignal: true, alias: "goals", required: false }] }], goalClick: [{ type: i0.Output, args: ["goalClick"] }], sourceBadgeClick: [{ type: i0.Output, args: ["sourceBadgeClick"] }], relatedMetricsClick: [{ type: i0.Output, args: ["relatedMetricsClick"] }] }); })();
103846
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UnifiedGoalsGridComponent, { className: "UnifiedGoalsGridComponent", filePath: "lib/components/profile-analysis-unified-dashboard/cards/unified-goals-grid.component.ts", lineNumber: 51 }); })();
103989
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UnifiedGoalsGridComponent, { className: "UnifiedGoalsGridComponent", filePath: "lib/components/profile-analysis-unified-dashboard/cards/unified-goals-grid.component.ts", lineNumber: 52 }); })();
103847
103990
 
103848
103991
  function SynthesisConfidenceSectionComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
103849
103992
  i0.ɵɵelementStart(0, "div", 0)(1, "h4", 1);
@@ -104850,42 +104993,54 @@ class PriorityActionsModalContentComponent {
104850
104993
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PriorityActionsModalContentComponent, { className: "PriorityActionsModalContentComponent", filePath: "lib/components/profile-analysis-unified-dashboard/modals/priority-actions-modal-content.component.ts", lineNumber: 107 }); })();
104851
104994
 
104852
104995
  const _forTrack0$6 = ($index, $item) => $item.value;
104853
- function GoalActionStateSelectorComponent_For_5_Conditional_4_Template(rf, ctx) { if (rf & 1) {
104996
+ function GoalActionStateSelectorComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
104854
104997
  i0.ɵɵnamespaceSVG();
104855
- i0.ɵɵelementStart(0, "svg", 7);
104856
- i0.ɵɵelement(1, "path", 8);
104998
+ i0.ɵɵelementStart(0, "svg", 2);
104999
+ i0.ɵɵelement(1, "path", 7)(2, "path", 8);
104857
105000
  i0.ɵɵelementEnd();
104858
105001
  } }
104859
- function GoalActionStateSelectorComponent_For_5_Template(rf, ctx) { if (rf & 1) {
104860
- const _r1 = i0.ɵɵgetCurrentView();
104861
- i0.ɵɵelementStart(0, "button", 5);
104862
- i0.ɵɵlistener("click", function GoalActionStateSelectorComponent_For_5_Template_button_click_0_listener() { const option_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.selectState(option_r2.value)); });
104863
- i0.ɵɵelement(1, "span", 6);
104864
- i0.ɵɵelementStart(2, "span");
105002
+ function GoalActionStateSelectorComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
105003
+ i0.ɵɵelement(0, "span", 3);
105004
+ } if (rf & 2) {
105005
+ const ctx_r0 = i0.ɵɵnextContext();
105006
+ i0.ɵɵproperty("ngClass", ctx_r0.dotClasses());
105007
+ } }
105008
+ function GoalActionStateSelectorComponent_Conditional_7_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
105009
+ i0.ɵɵnamespaceSVG();
105010
+ i0.ɵɵelementStart(0, "svg", 13);
105011
+ i0.ɵɵelement(1, "path", 14);
105012
+ i0.ɵɵelementEnd();
105013
+ } }
105014
+ function GoalActionStateSelectorComponent_Conditional_7_For_2_Template(rf, ctx) { if (rf & 1) {
105015
+ const _r2 = i0.ɵɵgetCurrentView();
105016
+ i0.ɵɵelementStart(0, "button", 10);
105017
+ i0.ɵɵlistener("click", function GoalActionStateSelectorComponent_Conditional_7_For_2_Template_button_click_0_listener($event) { const option_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.selectOption($event, option_r3.value)); });
105018
+ i0.ɵɵelement(1, "span", 11);
105019
+ i0.ɵɵelementStart(2, "span", 12);
104865
105020
  i0.ɵɵtext(3);
104866
105021
  i0.ɵɵelementEnd();
104867
- i0.ɵɵconditionalCreate(4, GoalActionStateSelectorComponent_For_5_Conditional_4_Template, 2, 0, ":svg:svg", 7);
105022
+ i0.ɵɵconditionalCreate(4, GoalActionStateSelectorComponent_Conditional_7_For_2_Conditional_4_Template, 2, 0, ":svg:svg", 13);
104868
105023
  i0.ɵɵelementEnd();
104869
105024
  } if (rf & 2) {
104870
- const option_r2 = ctx.$implicit;
104871
- const ctx_r2 = i0.ɵɵnextContext();
104872
- i0.ɵɵproperty("ngClass", ctx_r2.getButtonClasses(option_r2.value));
105025
+ const option_r3 = ctx.$implicit;
105026
+ const ctx_r0 = i0.ɵɵnextContext(2);
105027
+ i0.ɵɵproperty("ngClass", ctx_r0.getOptionClasses(option_r3.value));
104873
105028
  i0.ɵɵadvance();
104874
- i0.ɵɵproperty("ngClass", ctx_r2.getDotClasses(option_r2.value));
105029
+ i0.ɵɵproperty("ngClass", ctx_r0.getOptionDotClasses(option_r3.value));
104875
105030
  i0.ɵɵadvance(2);
104876
- i0.ɵɵtextInterpolate(option_r2.label);
105031
+ i0.ɵɵtextInterpolate(option_r3.label);
104877
105032
  i0.ɵɵadvance();
104878
- i0.ɵɵconditional(ctx_r2.state() === option_r2.value ? 4 : -1);
105033
+ i0.ɵɵconditional(ctx_r0.state() === option_r3.value ? 4 : -1);
104879
105034
  } }
104880
- function GoalActionStateSelectorComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
104881
- i0.ɵɵelementStart(0, "div", 4);
104882
- i0.ɵɵtext(1);
105035
+ function GoalActionStateSelectorComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
105036
+ i0.ɵɵelementStart(0, "div", 6);
105037
+ i0.ɵɵrepeaterCreate(1, GoalActionStateSelectorComponent_Conditional_7_For_2_Template, 5, 4, "button", 9, _forTrack0$6);
104883
105038
  i0.ɵɵelementEnd();
104884
105039
  } if (rf & 2) {
104885
- const ctx_r2 = i0.ɵɵnextContext();
104886
- i0.ɵɵproperty("ngClass", ctx_r2.hintClasses());
105040
+ const ctx_r0 = i0.ɵɵnextContext();
105041
+ i0.ɵɵproperty("ngClass", ctx_r0.dropdownClasses());
104887
105042
  i0.ɵɵadvance();
104888
- i0.ɵɵtextInterpolate1(" ", ctx_r2.getHintText(), " ");
105043
+ i0.ɵɵrepeater(ctx_r0.options);
104889
105044
  } }
104890
105045
  class GoalActionStateSelectorComponent {
104891
105046
  constructor() {
@@ -104893,132 +105048,187 @@ class GoalActionStateSelectorComponent {
104893
105048
  this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
104894
105049
  this.goalId = input(...(ngDevMode ? [undefined, { debugName: "goalId" }] : []));
104895
105050
  this.stateChange = output();
105051
+ this.isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : []));
105052
+ this.elementRef = inject(ElementRef);
104896
105053
  this.options = [
104897
105054
  { value: GoalActionStateEnum.PLAN, label: 'Plan to Act' },
104898
105055
  { value: GoalActionStateEnum.POTENTIAL, label: 'Keep for Later' },
104899
105056
  { value: GoalActionStateEnum.SKIP, label: 'Skip' }
104900
105057
  ];
104901
105058
  this.isDark = computed(() => this.viewMode() === ViewModeEnum.DARK, ...(ngDevMode ? [{ debugName: "isDark" }] : []));
104902
- this.labelClasses = computed(() => {
104903
- return this.isDark() ? 'text-slate-400' : 'text-slate-500';
104904
- }, ...(ngDevMode ? [{ debugName: "labelClasses" }] : []));
104905
- this.hintClasses = computed(() => {
104906
- return this.isDark() ? 'text-slate-500' : 'text-slate-400';
104907
- }, ...(ngDevMode ? [{ debugName: "hintClasses" }] : []));
104908
- }
104909
- getButtonClasses(value) {
104910
- const isSelected = this.state() === value;
104911
- if (this.isDark()) {
104912
- if (isSelected) {
104913
- switch (value) {
105059
+ this.label = computed(() => {
105060
+ switch (this.state()) {
105061
+ case GoalActionStateEnum.PLAN: return 'Planned';
105062
+ case GoalActionStateEnum.POTENTIAL: return 'Potential';
105063
+ case GoalActionStateEnum.SKIP: return 'Skipped';
105064
+ default: return 'Choose Action';
105065
+ }
105066
+ }, ...(ngDevMode ? [{ debugName: "label" }] : []));
105067
+ this.chipClasses = computed(() => {
105068
+ const s = this.state();
105069
+ if (this.isDark()) {
105070
+ if (!s) {
105071
+ return 'bg-blue-600/30 text-blue-300 border-blue-400 hover:bg-blue-600/40 hover:shadow-blue-500/30 hover:shadow-lg';
105072
+ }
105073
+ switch (s) {
104914
105074
  case GoalActionStateEnum.PLAN:
104915
- return 'bg-emerald-900/50 text-emerald-300 border-emerald-500 shadow-lg shadow-emerald-500/20';
105075
+ return 'bg-emerald-900/40 text-emerald-300 border-emerald-600 hover:bg-emerald-900/60 hover:shadow-emerald-500/20 hover:shadow-md';
104916
105076
  case GoalActionStateEnum.POTENTIAL:
104917
- return 'bg-amber-900/50 text-amber-300 border-amber-500 shadow-lg shadow-amber-500/20';
105077
+ return 'bg-amber-900/40 text-amber-300 border-amber-600 hover:bg-amber-900/60 hover:shadow-amber-500/20 hover:shadow-md';
104918
105078
  case GoalActionStateEnum.SKIP:
104919
- return 'bg-slate-700/70 text-slate-300 border-slate-500 shadow-lg shadow-slate-500/20';
105079
+ return 'bg-slate-700/50 text-slate-400 border-slate-600 hover:bg-slate-700/70 hover:shadow-slate-500/20 hover:shadow-md';
105080
+ default:
105081
+ return 'bg-slate-700/50 text-slate-400 border-slate-600';
104920
105082
  }
104921
105083
  }
104922
- return 'bg-slate-800/50 text-slate-400 border-slate-600 hover:bg-slate-700/50 hover:border-slate-500';
104923
- }
104924
- if (isSelected) {
104925
- switch (value) {
105084
+ if (!s) {
105085
+ return 'bg-blue-100 text-blue-700 border-blue-400 hover:bg-blue-200 hover:shadow-blue-300 hover:shadow-lg';
105086
+ }
105087
+ switch (s) {
104926
105088
  case GoalActionStateEnum.PLAN:
104927
- return 'bg-emerald-100 text-emerald-700 border-emerald-400 shadow-lg shadow-emerald-200';
105089
+ return 'bg-emerald-100 text-emerald-700 border-emerald-300 hover:bg-emerald-200 hover:shadow-emerald-200 hover:shadow-md';
104928
105090
  case GoalActionStateEnum.POTENTIAL:
104929
- return 'bg-amber-100 text-amber-700 border-amber-400 shadow-lg shadow-amber-200';
105091
+ return 'bg-amber-100 text-amber-700 border-amber-300 hover:bg-amber-200 hover:shadow-amber-200 hover:shadow-md';
104930
105092
  case GoalActionStateEnum.SKIP:
104931
- return 'bg-slate-100 text-slate-600 border-slate-400 shadow-lg shadow-slate-200';
105093
+ return 'bg-slate-100 text-slate-500 border-slate-300 hover:bg-slate-200 hover:shadow-slate-200 hover:shadow-md';
105094
+ default:
105095
+ return 'bg-slate-100 text-slate-600 border-slate-200';
104932
105096
  }
104933
- }
104934
- return 'bg-white text-slate-600 border-slate-200 hover:bg-slate-50 hover:border-slate-300';
105097
+ }, ...(ngDevMode ? [{ debugName: "chipClasses" }] : []));
105098
+ this.dotClasses = computed(() => {
105099
+ const s = this.state();
105100
+ switch (s) {
105101
+ case GoalActionStateEnum.PLAN:
105102
+ return 'bg-emerald-500';
105103
+ case GoalActionStateEnum.POTENTIAL:
105104
+ return 'bg-amber-500';
105105
+ case GoalActionStateEnum.SKIP:
105106
+ return 'bg-slate-400';
105107
+ default:
105108
+ return 'bg-slate-400';
105109
+ }
105110
+ }, ...(ngDevMode ? [{ debugName: "dotClasses" }] : []));
105111
+ this.dropdownClasses = computed(() => {
105112
+ return this.isDark()
105113
+ ? 'bg-slate-800 border-slate-700'
105114
+ : 'bg-white border-slate-200';
105115
+ }, ...(ngDevMode ? [{ debugName: "dropdownClasses" }] : []));
104935
105116
  }
104936
- getDotClasses(value) {
105117
+ getOptionClasses(value) {
104937
105118
  const isSelected = this.state() === value;
104938
- switch (value) {
104939
- case GoalActionStateEnum.PLAN:
104940
- return isSelected ? 'bg-emerald-500' : 'bg-emerald-400/50';
104941
- case GoalActionStateEnum.POTENTIAL:
104942
- return isSelected ? 'bg-amber-500' : 'bg-amber-400/50';
104943
- case GoalActionStateEnum.SKIP:
104944
- return isSelected ? 'bg-slate-500' : 'bg-slate-400/50';
104945
- default:
104946
- return 'bg-slate-400/50';
105119
+ if (this.isDark()) {
105120
+ return isSelected
105121
+ ? 'bg-slate-700/50 text-white'
105122
+ : 'text-slate-300 hover:bg-slate-700/30';
104947
105123
  }
105124
+ return isSelected
105125
+ ? 'bg-slate-100 text-slate-900'
105126
+ : 'text-slate-700 hover:bg-slate-50';
104948
105127
  }
104949
- getHintText() {
104950
- switch (this.state()) {
105128
+ getOptionDotClasses(value) {
105129
+ switch (value) {
104951
105130
  case GoalActionStateEnum.PLAN:
104952
- return 'This goal will be included in your action plan for immediate implementation.';
105131
+ return 'bg-emerald-500';
104953
105132
  case GoalActionStateEnum.POTENTIAL:
104954
- return 'This goal will be saved for future consideration when priorities shift.';
105133
+ return 'bg-amber-500';
104955
105134
  case GoalActionStateEnum.SKIP:
104956
- return 'This goal will be marked as not applicable to your current focus.';
105135
+ return 'bg-slate-400';
104957
105136
  default:
104958
- return '';
105137
+ return 'bg-slate-400';
104959
105138
  }
104960
105139
  }
104961
- selectState(value) {
105140
+ toggleDropdown(event) {
105141
+ event.stopPropagation();
105142
+ this.isOpen.update(v => !v);
105143
+ }
105144
+ selectOption(event, value) {
105145
+ event.stopPropagation();
105146
+ this.isOpen.set(false);
104962
105147
  this.stateChange.emit({ goalId: this.goalId(), state: value });
104963
105148
  }
105149
+ onDocumentClick(event) {
105150
+ if (!this.elementRef.nativeElement.contains(event.target)) {
105151
+ this.isOpen.set(false);
105152
+ }
105153
+ }
104964
105154
  static { this.ɵfac = function GoalActionStateSelectorComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || GoalActionStateSelectorComponent)(); }; }
104965
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: GoalActionStateSelectorComponent, selectors: [["symphiq-goal-action-state-selector"]], inputs: { state: [1, "state"], viewMode: [1, "viewMode"], goalId: [1, "goalId"] }, outputs: { stateChange: "stateChange" }, decls: 7, vars: 2, consts: [[1, "flex", "flex-col", "gap-3"], [1, "text-xs", "font-semibold", "uppercase", "tracking-wider", 3, "ngClass"], [1, "flex", "flex-wrap", "gap-3"], ["type", "button", 1, "flex", "items-center", "gap-2", "px-4", "py-2.5", "rounded-xl", "font-medium", "text-sm", "transition-all", "duration-200", "border", "cursor-pointer", 3, "ngClass"], [1, "text-xs", "mt-1", 3, "ngClass"], ["type", "button", 1, "flex", "items-center", "gap-2", "px-4", "py-2.5", "rounded-xl", "font-medium", "text-sm", "transition-all", "duration-200", "border", "cursor-pointer", 3, "click", "ngClass"], [1, "w-3", "h-3", "rounded-full", "flex-shrink-0", 3, "ngClass"], ["fill", "currentColor", "viewBox", "0 0 20 20", 1, "w-4", "h-4", "ml-1"], ["fill-rule", "evenodd", "d", "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z", "clip-rule", "evenodd"]], template: function GoalActionStateSelectorComponent_Template(rf, ctx) { if (rf & 1) {
104966
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
104967
- i0.ɵɵtext(2, " What would you like to do with this goal? ");
104968
- i0.ɵɵelementEnd();
104969
- i0.ɵɵelementStart(3, "div", 2);
104970
- i0.ɵɵrepeaterCreate(4, GoalActionStateSelectorComponent_For_5_Template, 5, 4, "button", 3, _forTrack0$6);
104971
- i0.ɵɵelementEnd();
104972
- i0.ɵɵconditionalCreate(6, GoalActionStateSelectorComponent_Conditional_6_Template, 2, 2, "div", 4);
105155
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: GoalActionStateSelectorComponent, selectors: [["symphiq-goal-action-state-selector"]], hostBindings: function GoalActionStateSelectorComponent_HostBindings(rf, ctx) { if (rf & 1) {
105156
+ i0.ɵɵlistener("click", function GoalActionStateSelectorComponent_click_HostBindingHandler($event) { return ctx.onDocumentClick($event); }, i0.ɵɵresolveDocument);
105157
+ } }, inputs: { state: [1, "state"], viewMode: [1, "viewMode"], goalId: [1, "goalId"] }, outputs: { stateChange: "stateChange" }, decls: 8, vars: 8, consts: [[1, "relative", "inline-block"], ["type", "button", 1, "inline-flex", "items-center", "gap-2", "px-4", "py-2", "rounded-full", "text-sm", "font-semibold", "whitespace-nowrap", "cursor-pointer", "transition-all", "duration-200", "hover:scale-105", "border", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", "animate-pulse"], [1, "w-2.5", "h-2.5", "rounded-full", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", "transition-transform", "duration-200"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M19 9l-7 7-7-7"], [1, "absolute", "bottom-full", "left-0", "mb-2", "min-w-[180px]", "rounded-xl", "shadow-xl", "z-50", "py-2", "border", 3, "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M15 12a3 3 0 11-6 0 3 3 0 016 0z"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"], ["type", "button", 1, "w-full", "flex", "items-center", "gap-3", "px-4", "py-2.5", "text-sm", "font-medium", "transition-colors", "duration-150", "text-left", 3, "ngClass"], ["type", "button", 1, "w-full", "flex", "items-center", "gap-3", "px-4", "py-2.5", "text-sm", "font-medium", "transition-colors", "duration-150", "text-left", 3, "click", "ngClass"], [1, "w-2.5", "h-2.5", "rounded-full", "flex-shrink-0", 3, "ngClass"], [1, "flex-1"], ["fill", "currentColor", "viewBox", "0 0 20 20", 1, "w-4", "h-4", "text-blue-500"], ["fill-rule", "evenodd", "d", "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z", "clip-rule", "evenodd"]], template: function GoalActionStateSelectorComponent_Template(rf, ctx) { if (rf & 1) {
105158
+ i0.ɵɵelementStart(0, "div", 0)(1, "button", 1);
105159
+ i0.ɵɵlistener("click", function GoalActionStateSelectorComponent_Template_button_click_1_listener($event) { return ctx.toggleDropdown($event); });
105160
+ i0.ɵɵconditionalCreate(2, GoalActionStateSelectorComponent_Conditional_2_Template, 3, 0, ":svg:svg", 2)(3, GoalActionStateSelectorComponent_Conditional_3_Template, 1, 1, "span", 3);
105161
+ i0.ɵɵtext(4);
105162
+ i0.ɵɵnamespaceSVG();
105163
+ i0.ɵɵelementStart(5, "svg", 4);
105164
+ i0.ɵɵelement(6, "path", 5);
105165
+ i0.ɵɵelementEnd()();
105166
+ i0.ɵɵconditionalCreate(7, GoalActionStateSelectorComponent_Conditional_7_Template, 3, 1, "div", 6);
104973
105167
  i0.ɵɵelementEnd();
104974
105168
  } if (rf & 2) {
104975
105169
  i0.ɵɵadvance();
104976
- i0.ɵɵproperty("ngClass", ctx.labelClasses());
104977
- i0.ɵɵadvance(3);
104978
- i0.ɵɵrepeater(ctx.options);
105170
+ i0.ɵɵclassProp("animate-attention-pulse", !ctx.state());
105171
+ i0.ɵɵproperty("ngClass", ctx.chipClasses());
105172
+ i0.ɵɵadvance();
105173
+ i0.ɵɵconditional(!ctx.state() ? 2 : 3);
104979
105174
  i0.ɵɵadvance(2);
104980
- i0.ɵɵconditional(ctx.state() ? 6 : -1);
104981
- } }, dependencies: [CommonModule, i1$1.NgClass], encapsulation: 2, changeDetection: 0 }); }
105175
+ i0.ɵɵtextInterpolate1(" ", ctx.label(), " ");
105176
+ i0.ɵɵadvance();
105177
+ i0.ɵɵclassProp("rotate-180", ctx.isOpen());
105178
+ i0.ɵɵadvance(2);
105179
+ i0.ɵɵconditional(ctx.isOpen() ? 7 : -1);
105180
+ } }, dependencies: [CommonModule, i1$1.NgClass], styles: ["@keyframes _ngcontent-%COMP%_attention-pulse{0%,to{box-shadow:0 0 #60a5fa99}50%{box-shadow:0 0 0 8px #60a5fa00}}.animate-attention-pulse[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_attention-pulse 2s ease-in-out infinite}"], changeDetection: 0 }); }
104982
105181
  }
104983
105182
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GoalActionStateSelectorComponent, [{
104984
105183
  type: Component,
104985
- args: [{
104986
- selector: 'symphiq-goal-action-state-selector',
104987
- standalone: true,
104988
- imports: [CommonModule],
104989
- changeDetection: ChangeDetectionStrategy.OnPush,
104990
- template: `
104991
- <div class="flex flex-col gap-3">
104992
- <div [ngClass]="labelClasses()" class="text-xs font-semibold uppercase tracking-wider">
104993
- What would you like to do with this goal?
104994
- </div>
104995
- <div class="flex flex-wrap gap-3">
104996
- @for (option of options; track option.value) {
104997
- <button
104998
- type="button"
104999
- (click)="selectState(option.value)"
105000
- [ngClass]="getButtonClasses(option.value)"
105001
- class="flex items-center gap-2 px-4 py-2.5 rounded-xl font-medium text-sm transition-all duration-200 border cursor-pointer">
105002
- <span [ngClass]="getDotClasses(option.value)" class="w-3 h-3 rounded-full flex-shrink-0"></span>
105003
- <span>{{ option.label }}</span>
105004
- @if (state() === option.value) {
105005
- <svg class="w-4 h-4 ml-1" fill="currentColor" viewBox="0 0 20 20">
105006
- <path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
105007
- </svg>
105008
- }
105009
- </button>
105184
+ args: [{ selector: 'symphiq-goal-action-state-selector', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
105185
+ <div class="relative inline-block">
105186
+ <button
105187
+ type="button"
105188
+ (click)="toggleDropdown($event)"
105189
+ [ngClass]="chipClasses()"
105190
+ [class.animate-attention-pulse]="!state()"
105191
+ class="inline-flex items-center gap-2 px-4 py-2 rounded-full text-sm font-semibold whitespace-nowrap cursor-pointer transition-all duration-200 hover:scale-105 border">
105192
+ @if (!state()) {
105193
+ <svg class="w-4 h-4 animate-pulse" fill="none" stroke="currentColor" viewBox="0 0 24 24">
105194
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/>
105195
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"/>
105196
+ </svg>
105197
+ } @else {
105198
+ <span [ngClass]="dotClasses()" class="w-2.5 h-2.5 rounded-full"></span>
105010
105199
  }
105011
- </div>
105012
- @if (state()) {
105013
- <div [ngClass]="hintClasses()" class="text-xs mt-1">
105014
- {{ getHintText() }}
105200
+ {{ label() }}
105201
+ <svg class="w-4 h-4 transition-transform duration-200" [class.rotate-180]="isOpen()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
105202
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path>
105203
+ </svg>
105204
+ </button>
105205
+
105206
+ @if (isOpen()) {
105207
+ <div [ngClass]="dropdownClasses()" class="absolute bottom-full left-0 mb-2 min-w-[180px] rounded-xl shadow-xl z-50 py-2 border">
105208
+ @for (option of options; track option.value) {
105209
+ <button
105210
+ type="button"
105211
+ (click)="selectOption($event, option.value)"
105212
+ [ngClass]="getOptionClasses(option.value)"
105213
+ class="w-full flex items-center gap-3 px-4 py-2.5 text-sm font-medium transition-colors duration-150 text-left">
105214
+ <span [ngClass]="getOptionDotClasses(option.value)" class="w-2.5 h-2.5 rounded-full flex-shrink-0"></span>
105215
+ <span class="flex-1">{{ option.label }}</span>
105216
+ @if (state() === option.value) {
105217
+ <svg class="w-4 h-4 text-blue-500" fill="currentColor" viewBox="0 0 20 20">
105218
+ <path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
105219
+ </svg>
105220
+ }
105221
+ </button>
105222
+ }
105015
105223
  </div>
105016
105224
  }
105017
105225
  </div>
105018
- `
105019
- }]
105020
- }], null, { state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], goalId: [{ type: i0.Input, args: [{ isSignal: true, alias: "goalId", required: false }] }], stateChange: [{ type: i0.Output, args: ["stateChange"] }] }); })();
105021
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(GoalActionStateSelectorComponent, { className: "GoalActionStateSelectorComponent", filePath: "lib/components/shared/goal-action-state-selector.component.ts", lineNumber: 41 }); })();
105226
+ `, styles: ["@keyframes attention-pulse{0%,to{box-shadow:0 0 #60a5fa99}50%{box-shadow:0 0 0 8px #60a5fa00}}.animate-attention-pulse{animation:attention-pulse 2s ease-in-out infinite}\n"] }]
105227
+ }], null, { state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], goalId: [{ type: i0.Input, args: [{ isSignal: true, alias: "goalId", required: false }] }], stateChange: [{ type: i0.Output, args: ["stateChange"] }], onDocumentClick: [{
105228
+ type: HostListener,
105229
+ args: ['document:click', ['$event']]
105230
+ }] }); })();
105231
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(GoalActionStateSelectorComponent, { className: "GoalActionStateSelectorComponent", filePath: "lib/components/shared/goal-action-state-selector.component.ts", lineNumber: 68 }); })();
105022
105232
 
105023
105233
  const _c0$8 = ["modalContent"];
105024
105234
  const _c1$3 = ["modalWrapper"];
@@ -105035,81 +105245,113 @@ function UnifiedDashboardModalComponent_Conditional_0_Conditional_7_Template(rf,
105035
105245
  const ctx_r1 = i0.ɵɵnextContext(2);
105036
105246
  i0.ɵɵproperty("ngClass", ctx_r1.backButtonClasses());
105037
105247
  } }
105038
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_9_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
105248
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
105249
+ i0.ɵɵelementStart(0, "span", 33);
105250
+ i0.ɵɵtext(1, "|");
105251
+ i0.ɵɵelementEnd();
105252
+ i0.ɵɵelementStart(2, "span", 34);
105253
+ i0.ɵɵtext(3);
105254
+ i0.ɵɵelementEnd();
105255
+ } if (rf & 2) {
105256
+ const ctx_r1 = i0.ɵɵnextContext(3);
105257
+ i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-slate-400" : "text-slate-500");
105258
+ i0.ɵɵadvance(2);
105259
+ i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-slate-600" : "text-slate-400");
105260
+ i0.ɵɵadvance();
105261
+ i0.ɵɵtextInterpolate(ctx_r1.sourceGoalChipLabel());
105262
+ } }
105263
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
105264
+ i0.ɵɵelementStart(0, "div", 11)(1, "span", 30);
105039
105265
  i0.ɵɵnamespaceSVG();
105040
- i0.ɵɵelementStart(0, "svg", 32);
105041
- i0.ɵɵelement(1, "path", 33);
105266
+ i0.ɵɵelementStart(2, "svg", 31);
105267
+ i0.ɵɵelement(3, "path", 32);
105268
+ i0.ɵɵelementEnd();
105269
+ i0.ɵɵtext(4, " SOURCE GOAL ");
105270
+ i0.ɵɵelementEnd();
105271
+ i0.ɵɵconditionalCreate(5, UnifiedDashboardModalComponent_Conditional_0_Conditional_9_Conditional_5_Template, 4, 3);
105272
+ i0.ɵɵelementEnd();
105273
+ } if (rf & 2) {
105274
+ const ctx_r1 = i0.ɵɵnextContext(2);
105275
+ i0.ɵɵadvance();
105276
+ i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "bg-emerald-100 text-emerald-700 border-emerald-200" : "bg-emerald-900/30 text-emerald-400 border-emerald-700/50");
105277
+ i0.ɵɵadvance(4);
105278
+ i0.ɵɵconditional(ctx_r1.sourceGoalChipLabel() ? 5 : -1);
105279
+ } }
105280
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_10_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
105281
+ i0.ɵɵnamespaceSVG();
105282
+ i0.ɵɵelementStart(0, "svg", 37);
105283
+ i0.ɵɵelement(1, "path", 38);
105042
105284
  i0.ɵɵelementEnd();
105043
105285
  } if (rf & 2) {
105044
105286
  const ctx_r1 = i0.ɵɵnextContext(4);
105045
105287
  i0.ɵɵproperty("ngClass", ctx_r1.breadcrumbChevronClasses());
105046
105288
  } }
105047
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_9_For_2_Template(rf, ctx) { if (rf & 1) {
105289
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_10_For_2_Template(rf, ctx) { if (rf & 1) {
105048
105290
  const _r4 = i0.ɵɵgetCurrentView();
105049
- i0.ɵɵelementStart(0, "button", 31);
105050
- i0.ɵɵlistener("click", function UnifiedDashboardModalComponent_Conditional_0_Conditional_9_For_2_Template_button_click_0_listener() { const item_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToBreadcrumb(item_r5)); });
105291
+ i0.ɵɵelementStart(0, "button", 36);
105292
+ i0.ɵɵlistener("click", function UnifiedDashboardModalComponent_Conditional_0_Conditional_10_For_2_Template_button_click_0_listener() { const item_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.navigateToBreadcrumb(item_r5)); });
105051
105293
  i0.ɵɵtext(1);
105052
105294
  i0.ɵɵelementEnd();
105053
- i0.ɵɵconditionalCreate(2, UnifiedDashboardModalComponent_Conditional_0_Conditional_9_For_2_Conditional_2_Template, 2, 1, ":svg:svg", 32);
105295
+ i0.ɵɵconditionalCreate(2, UnifiedDashboardModalComponent_Conditional_0_Conditional_10_For_2_Conditional_2_Template, 2, 1, ":svg:svg", 37);
105054
105296
  } if (rf & 2) {
105055
105297
  const item_r5 = ctx.$implicit;
105056
- const ɵ$index_26_r6 = ctx.$index;
105057
- const ɵ$count_26_r7 = ctx.$count;
105298
+ const ɵ$index_43_r6 = ctx.$index;
105299
+ const ɵ$count_43_r7 = ctx.$count;
105058
105300
  const ctx_r1 = i0.ɵɵnextContext(3);
105059
105301
  i0.ɵɵproperty("ngClass", ctx_r1.breadcrumbButtonClasses());
105060
105302
  i0.ɵɵadvance();
105061
105303
  i0.ɵɵtextInterpolate1(" ", ctx_r1.getBreadcrumbLabel(item_r5), " ");
105062
105304
  i0.ɵɵadvance();
105063
- i0.ɵɵconditional(!(ɵ$index_26_r6 === ɵ$count_26_r7 - 1) || ctx_r1.modalType() !== null ? 2 : -1);
105305
+ i0.ɵɵconditional(!(ɵ$index_43_r6 === ɵ$count_43_r7 - 1) || ctx_r1.modalType() !== null ? 2 : -1);
105064
105306
  } }
105065
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
105066
- i0.ɵɵelementStart(0, "span", 30);
105307
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_10_Conditional_3_Template(rf, ctx) { if (rf & 1) {
105308
+ i0.ɵɵelementStart(0, "span", 35);
105067
105309
  i0.ɵɵtext(1, "Objectives");
105068
105310
  i0.ɵɵelementEnd();
105069
105311
  } if (rf & 2) {
105070
105312
  const ctx_r1 = i0.ɵɵnextContext(3);
105071
105313
  i0.ɵɵproperty("ngClass", ctx_r1.breadcrumbCurrentClasses());
105072
105314
  } }
105073
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_9_Conditional_4_Template(rf, ctx) { if (rf & 1) {
105074
- i0.ɵɵelementStart(0, "span", 30);
105315
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_10_Conditional_4_Template(rf, ctx) { if (rf & 1) {
105316
+ i0.ɵɵelementStart(0, "span", 35);
105075
105317
  i0.ɵɵtext(1, "Related Metrics");
105076
105318
  i0.ɵɵelementEnd();
105077
105319
  } if (rf & 2) {
105078
105320
  const ctx_r1 = i0.ɵɵnextContext(3);
105079
105321
  i0.ɵɵproperty("ngClass", ctx_r1.breadcrumbCurrentClasses());
105080
105322
  } }
105081
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
105082
- i0.ɵɵelementStart(0, "span", 30);
105323
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_10_Conditional_5_Template(rf, ctx) { if (rf & 1) {
105324
+ i0.ɵɵelementStart(0, "span", 35);
105083
105325
  i0.ɵɵtext(1, "Strategies");
105084
105326
  i0.ɵɵelementEnd();
105085
105327
  } if (rf & 2) {
105086
105328
  const ctx_r1 = i0.ɵɵnextContext(3);
105087
105329
  i0.ɵɵproperty("ngClass", ctx_r1.breadcrumbCurrentClasses());
105088
105330
  } }
105089
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
105090
- i0.ɵɵelementStart(0, "span", 30);
105331
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_10_Conditional_6_Template(rf, ctx) { if (rf & 1) {
105332
+ i0.ɵɵelementStart(0, "span", 35);
105091
105333
  i0.ɵɵtext(1, "Recommendations");
105092
105334
  i0.ɵɵelementEnd();
105093
105335
  } if (rf & 2) {
105094
105336
  const ctx_r1 = i0.ɵɵnextContext(3);
105095
105337
  i0.ɵɵproperty("ngClass", ctx_r1.breadcrumbCurrentClasses());
105096
105338
  } }
105097
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_9_Conditional_7_Template(rf, ctx) { if (rf & 1) {
105098
- i0.ɵɵelementStart(0, "span", 30);
105339
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_10_Conditional_7_Template(rf, ctx) { if (rf & 1) {
105340
+ i0.ɵɵelementStart(0, "span", 35);
105099
105341
  i0.ɵɵtext(1, "Priority Actions");
105100
105342
  i0.ɵɵelementEnd();
105101
105343
  } if (rf & 2) {
105102
105344
  const ctx_r1 = i0.ɵɵnextContext(3);
105103
105345
  i0.ɵɵproperty("ngClass", ctx_r1.breadcrumbCurrentClasses());
105104
105346
  } }
105105
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_9_Template(rf, ctx) { if (rf & 1) {
105106
- i0.ɵɵelementStart(0, "div", 11);
105107
- i0.ɵɵrepeaterCreate(1, UnifiedDashboardModalComponent_Conditional_0_Conditional_9_For_2_Template, 3, 3, null, null, i0.ɵɵrepeaterTrackByIndex);
105108
- i0.ɵɵconditionalCreate(3, UnifiedDashboardModalComponent_Conditional_0_Conditional_9_Conditional_3_Template, 2, 1, "span", 30);
105109
- i0.ɵɵconditionalCreate(4, UnifiedDashboardModalComponent_Conditional_0_Conditional_9_Conditional_4_Template, 2, 1, "span", 30);
105110
- i0.ɵɵconditionalCreate(5, UnifiedDashboardModalComponent_Conditional_0_Conditional_9_Conditional_5_Template, 2, 1, "span", 30);
105111
- i0.ɵɵconditionalCreate(6, UnifiedDashboardModalComponent_Conditional_0_Conditional_9_Conditional_6_Template, 2, 1, "span", 30);
105112
- i0.ɵɵconditionalCreate(7, UnifiedDashboardModalComponent_Conditional_0_Conditional_9_Conditional_7_Template, 2, 1, "span", 30);
105347
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_10_Template(rf, ctx) { if (rf & 1) {
105348
+ i0.ɵɵelementStart(0, "div", 12);
105349
+ i0.ɵɵrepeaterCreate(1, UnifiedDashboardModalComponent_Conditional_0_Conditional_10_For_2_Template, 3, 3, null, null, i0.ɵɵrepeaterTrackByIndex);
105350
+ i0.ɵɵconditionalCreate(3, UnifiedDashboardModalComponent_Conditional_0_Conditional_10_Conditional_3_Template, 2, 1, "span", 35);
105351
+ i0.ɵɵconditionalCreate(4, UnifiedDashboardModalComponent_Conditional_0_Conditional_10_Conditional_4_Template, 2, 1, "span", 35);
105352
+ i0.ɵɵconditionalCreate(5, UnifiedDashboardModalComponent_Conditional_0_Conditional_10_Conditional_5_Template, 2, 1, "span", 35);
105353
+ i0.ɵɵconditionalCreate(6, UnifiedDashboardModalComponent_Conditional_0_Conditional_10_Conditional_6_Template, 2, 1, "span", 35);
105354
+ i0.ɵɵconditionalCreate(7, UnifiedDashboardModalComponent_Conditional_0_Conditional_10_Conditional_7_Template, 2, 1, "span", 35);
105113
105355
  i0.ɵɵelementEnd();
105114
105356
  } if (rf & 2) {
105115
105357
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -105126,8 +105368,8 @@ function UnifiedDashboardModalComponent_Conditional_0_Conditional_9_Template(rf,
105126
105368
  i0.ɵɵadvance();
105127
105369
  i0.ɵɵconditional(ctx_r1.modalType() === "priority-actions-list" ? 7 : -1);
105128
105370
  } }
105129
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_10_Template(rf, ctx) { if (rf & 1) {
105130
- i0.ɵɵelementStart(0, "div", 12)(1, "span", 34);
105371
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_11_Template(rf, ctx) { if (rf & 1) {
105372
+ i0.ɵɵelementStart(0, "div", 11)(1, "span", 39);
105131
105373
  i0.ɵɵtext(2);
105132
105374
  i0.ɵɵelementEnd()();
105133
105375
  } if (rf & 2) {
@@ -105137,22 +105379,22 @@ function UnifiedDashboardModalComponent_Conditional_0_Conditional_10_Template(rf
105137
105379
  i0.ɵɵadvance();
105138
105380
  i0.ɵɵtextInterpolate1(" ", ctx_r1.modalType() === "unified-goal-objectives" ? "Objectives" : ctx_r1.modalType() === "unified-goal-related-metrics" ? "Related Metrics" : ctx_r1.modalType() === "objective-strategies" ? "Strategies" : ctx_r1.modalType() === "strategy-recommendations" ? "Recommendations" : ctx_r1.modalType() === "priority-actions-list" ? "Unified Analysis" : "Unified Goal", " ");
105139
105381
  } }
105140
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_14_Conditional_1_Template(rf, ctx) { if (rf & 1) {
105141
- i0.ɵɵelement(0, "symphiq-priority-badge", 35);
105382
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_15_Conditional_1_Template(rf, ctx) { if (rf & 1) {
105383
+ i0.ɵɵelement(0, "symphiq-priority-badge", 40);
105142
105384
  } if (rf & 2) {
105143
105385
  const ctx_r1 = i0.ɵɵnextContext(3);
105144
105386
  i0.ɵɵproperty("priority", ctx_r1.currentGoal().priority)("viewMode", ctx_r1.viewMode());
105145
105387
  } }
105146
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_14_Conditional_2_Template(rf, ctx) { if (rf & 1) {
105147
- i0.ɵɵelement(0, "symphiq-timeframe-badge", 36);
105388
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_15_Conditional_2_Template(rf, ctx) { if (rf & 1) {
105389
+ i0.ɵɵelement(0, "symphiq-timeframe-badge", 41);
105148
105390
  } if (rf & 2) {
105149
105391
  const ctx_r1 = i0.ɵɵnextContext(3);
105150
105392
  i0.ɵɵproperty("timeframe", ctx_r1.currentGoal().timeframe)("viewMode", ctx_r1.viewMode());
105151
105393
  } }
105152
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_14_Template(rf, ctx) { if (rf & 1) {
105394
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_15_Template(rf, ctx) { if (rf & 1) {
105153
105395
  i0.ɵɵelementStart(0, "div", 15);
105154
- i0.ɵɵconditionalCreate(1, UnifiedDashboardModalComponent_Conditional_0_Conditional_14_Conditional_1_Template, 1, 2, "symphiq-priority-badge", 35);
105155
- i0.ɵɵconditionalCreate(2, UnifiedDashboardModalComponent_Conditional_0_Conditional_14_Conditional_2_Template, 1, 2, "symphiq-timeframe-badge", 36);
105396
+ i0.ɵɵconditionalCreate(1, UnifiedDashboardModalComponent_Conditional_0_Conditional_15_Conditional_1_Template, 1, 2, "symphiq-priority-badge", 40);
105397
+ i0.ɵɵconditionalCreate(2, UnifiedDashboardModalComponent_Conditional_0_Conditional_15_Conditional_2_Template, 1, 2, "symphiq-timeframe-badge", 41);
105156
105398
  i0.ɵɵelementEnd();
105157
105399
  } if (rf & 2) {
105158
105400
  let tmp_4_0;
@@ -105163,55 +105405,55 @@ function UnifiedDashboardModalComponent_Conditional_0_Conditional_14_Template(rf
105163
105405
  i0.ɵɵadvance();
105164
105406
  i0.ɵɵconditional(((tmp_5_0 = ctx_r1.currentGoal()) == null ? null : tmp_5_0.timeframe) ? 2 : -1);
105165
105407
  } }
105166
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_20_Template(rf, ctx) { if (rf & 1) {
105408
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_21_Template(rf, ctx) { if (rf & 1) {
105167
105409
  const _r8 = i0.ɵɵgetCurrentView();
105168
- i0.ɵɵelementStart(0, "symphiq-unified-goal-detail-modal-content", 37);
105169
- i0.ɵɵlistener("sourceAnalysisClick", function UnifiedDashboardModalComponent_Conditional_0_Conditional_20_Template_symphiq_unified_goal_detail_modal_content_sourceAnalysisClick_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onSourceAnalysisClick($event)); })("metricClick", function UnifiedDashboardModalComponent_Conditional_0_Conditional_20_Template_symphiq_unified_goal_detail_modal_content_metricClick_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onMetricClick($event)); })("contributingMetricsClick", function UnifiedDashboardModalComponent_Conditional_0_Conditional_20_Template_symphiq_unified_goal_detail_modal_content_contributingMetricsClick_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onContributingMetricsClick()); })("showObjectives", function UnifiedDashboardModalComponent_Conditional_0_Conditional_20_Template_symphiq_unified_goal_detail_modal_content_showObjectives_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onShowObjectives()); })("close", function UnifiedDashboardModalComponent_Conditional_0_Conditional_20_Template_symphiq_unified_goal_detail_modal_content_close_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.closeModal()); });
105410
+ i0.ɵɵelementStart(0, "symphiq-unified-goal-detail-modal-content", 42);
105411
+ i0.ɵɵlistener("sourceAnalysisClick", function UnifiedDashboardModalComponent_Conditional_0_Conditional_21_Template_symphiq_unified_goal_detail_modal_content_sourceAnalysisClick_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onSourceAnalysisClick($event)); })("metricClick", function UnifiedDashboardModalComponent_Conditional_0_Conditional_21_Template_symphiq_unified_goal_detail_modal_content_metricClick_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onMetricClick($event)); })("contributingMetricsClick", function UnifiedDashboardModalComponent_Conditional_0_Conditional_21_Template_symphiq_unified_goal_detail_modal_content_contributingMetricsClick_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onContributingMetricsClick()); })("showObjectives", function UnifiedDashboardModalComponent_Conditional_0_Conditional_21_Template_symphiq_unified_goal_detail_modal_content_showObjectives_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onShowObjectives()); })("close", function UnifiedDashboardModalComponent_Conditional_0_Conditional_21_Template_symphiq_unified_goal_detail_modal_content_close_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.closeModal()); });
105170
105412
  i0.ɵɵelementEnd();
105171
105413
  } if (rf & 2) {
105172
105414
  const ctx_r1 = i0.ɵɵnextContext(2);
105173
105415
  i0.ɵɵproperty("goal", ctx_r1.unifiedGoalData().goal)("allMetrics", ctx_r1.unifiedGoalData().allMetrics)("allCharts", ctx_r1.unifiedGoalData().allCharts)("loadedSourceAnalysisIds", ctx_r1.loadedSourceAnalysisIdsAsNumbers())("loadingSourceAnalysisId", ctx_r1.loadingSourceAnalysisIdAsNumber())("viewMode", ctx_r1.viewMode())("currentModalState", ctx_r1.currentModalState());
105174
105416
  } }
105175
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_21_Template(rf, ctx) { if (rf & 1) {
105417
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_22_Template(rf, ctx) { if (rf & 1) {
105176
105418
  i0.ɵɵelement(0, "symphiq-goal-objectives-modal-content", 21);
105177
105419
  } if (rf & 2) {
105178
105420
  const ctx_r1 = i0.ɵɵnextContext(2);
105179
105421
  i0.ɵɵproperty("objectives", ctx_r1.objectivesData().goal.objectives ?? i0.ɵɵpureFunction0(3, _c2$2))("goalTitle", ctx_r1.objectivesData().goal.title ?? "")("viewMode", ctx_r1.viewMode());
105180
105422
  } }
105181
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_22_Template(rf, ctx) { if (rf & 1) {
105423
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_23_Template(rf, ctx) { if (rf & 1) {
105182
105424
  const _r9 = i0.ɵɵgetCurrentView();
105183
- i0.ɵɵelementStart(0, "symphiq-unified-goal-related-metrics-modal-content", 38);
105184
- i0.ɵɵlistener("metricClick", function UnifiedDashboardModalComponent_Conditional_0_Conditional_22_Template_symphiq_unified_goal_related_metrics_modal_content_metricClick_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onRelatedMetricClick($event)); });
105425
+ i0.ɵɵelementStart(0, "symphiq-unified-goal-related-metrics-modal-content", 43);
105426
+ i0.ɵɵlistener("metricClick", function UnifiedDashboardModalComponent_Conditional_0_Conditional_23_Template_symphiq_unified_goal_related_metrics_modal_content_metricClick_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onRelatedMetricClick($event)); });
105185
105427
  i0.ɵɵelementEnd();
105186
105428
  } if (rf & 2) {
105187
105429
  const ctx_r1 = i0.ɵɵnextContext(2);
105188
105430
  i0.ɵɵproperty("goal", ctx_r1.relatedMetricsData().goal)("contributingMetrics", ctx_r1.relatedMetricsData().contributingMetrics)("viewMode", ctx_r1.viewMode());
105189
105431
  } }
105190
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_23_Template(rf, ctx) { if (rf & 1) {
105432
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_24_Template(rf, ctx) { if (rf & 1) {
105191
105433
  i0.ɵɵelement(0, "symphiq-objective-strategies-modal-content", 23);
105192
105434
  } if (rf & 2) {
105193
105435
  const ctx_r1 = i0.ɵɵnextContext(2);
105194
105436
  i0.ɵɵproperty("objective", ctx_r1.strategiesData().objective)("viewMode", ctx_r1.viewMode());
105195
105437
  } }
105196
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_24_Template(rf, ctx) { if (rf & 1) {
105438
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_25_Template(rf, ctx) { if (rf & 1) {
105197
105439
  i0.ɵɵelement(0, "symphiq-strategy-recommendations-modal-content", 24);
105198
105440
  } if (rf & 2) {
105199
105441
  const ctx_r1 = i0.ɵɵnextContext(2);
105200
105442
  i0.ɵɵproperty("strategy", ctx_r1.recommendationsData().strategy)("viewMode", ctx_r1.viewMode())("allMetrics", ctx_r1.allMetricsFromStack())("allCharts", ctx_r1.allChartsFromStack())("allInsights", ctx_r1.allInsightsFromStack())("allBusinessInsights", ctx_r1.allBusinessInsightsFromStack())("goalTitle", ctx_r1.recommendationsData().goalTitle)("objectiveTitle", ctx_r1.recommendationsData().objectiveTitle)("currentModalState", ctx_r1.currentModalState())("expandedRecommendationId", ctx_r1.recommendationsData().expandedRecommendationId);
105201
105443
  } }
105202
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_25_Template(rf, ctx) { if (rf & 1) {
105444
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_26_Template(rf, ctx) { if (rf & 1) {
105203
105445
  const _r10 = i0.ɵɵgetCurrentView();
105204
- i0.ɵɵelementStart(0, "symphiq-priority-actions-modal-content", 39);
105205
- i0.ɵɵlistener("goalClick", function UnifiedDashboardModalComponent_Conditional_0_Conditional_25_Template_symphiq_priority_actions_modal_content_goalClick_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onPriorityActionGoalClick($event)); })("recommendationClick", function UnifiedDashboardModalComponent_Conditional_0_Conditional_25_Template_symphiq_priority_actions_modal_content_recommendationClick_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onPriorityActionRecommendationClick($event)); });
105446
+ i0.ɵɵelementStart(0, "symphiq-priority-actions-modal-content", 44);
105447
+ i0.ɵɵlistener("goalClick", function UnifiedDashboardModalComponent_Conditional_0_Conditional_26_Template_symphiq_priority_actions_modal_content_goalClick_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onPriorityActionGoalClick($event)); })("recommendationClick", function UnifiedDashboardModalComponent_Conditional_0_Conditional_26_Template_symphiq_priority_actions_modal_content_recommendationClick_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onPriorityActionRecommendationClick($event)); });
105206
105448
  i0.ɵɵelementEnd();
105207
105449
  } if (rf & 2) {
105208
105450
  const ctx_r1 = i0.ɵɵnextContext(2);
105209
105451
  i0.ɵɵproperty("items", ctx_r1.priorityActionsData().items)("viewMode", ctx_r1.viewMode())("selectedIndex", ctx_r1.priorityActionsData().selectedIndex ?? null);
105210
105452
  } }
105211
- function UnifiedDashboardModalComponent_Conditional_0_Conditional_26_Template(rf, ctx) { if (rf & 1) {
105453
+ function UnifiedDashboardModalComponent_Conditional_0_Conditional_27_Template(rf, ctx) { if (rf & 1) {
105212
105454
  const _r11 = i0.ɵɵgetCurrentView();
105213
- i0.ɵɵelementStart(0, "div", 26)(1, "symphiq-goal-action-state-selector", 40);
105214
- i0.ɵɵlistener("stateChange", function UnifiedDashboardModalComponent_Conditional_0_Conditional_26_Template_symphiq_goal_action_state_selector_stateChange_1_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onActionStateChange($event)); });
105455
+ i0.ɵɵelementStart(0, "div", 26)(1, "symphiq-goal-action-state-selector", 45);
105456
+ i0.ɵɵlistener("stateChange", function UnifiedDashboardModalComponent_Conditional_0_Conditional_27_Template_symphiq_goal_action_state_selector_stateChange_1_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onActionStateChange($event)); });
105215
105457
  i0.ɵɵelementEnd()();
105216
105458
  } if (rf & 2) {
105217
105459
  let tmp_7_0;
@@ -105230,31 +105472,32 @@ function UnifiedDashboardModalComponent_Conditional_0_Template(rf, ctx) { if (rf
105230
105472
  i0.ɵɵelementStart(4, "div", 6)(5, "div", 7)(6, "div", 8);
105231
105473
  i0.ɵɵconditionalCreate(7, UnifiedDashboardModalComponent_Conditional_0_Conditional_7_Template, 3, 1, "button", 9);
105232
105474
  i0.ɵɵelementStart(8, "div", 10);
105233
- i0.ɵɵconditionalCreate(9, UnifiedDashboardModalComponent_Conditional_0_Conditional_9_Template, 8, 5, "div", 11)(10, UnifiedDashboardModalComponent_Conditional_0_Conditional_10_Template, 3, 2, "div", 12);
105234
- i0.ɵɵelementStart(11, "div", 13)(12, "h3", 14);
105235
- i0.ɵɵtext(13);
105475
+ i0.ɵɵconditionalCreate(9, UnifiedDashboardModalComponent_Conditional_0_Conditional_9_Template, 6, 2, "div", 11);
105476
+ i0.ɵɵconditionalCreate(10, UnifiedDashboardModalComponent_Conditional_0_Conditional_10_Template, 8, 5, "div", 12)(11, UnifiedDashboardModalComponent_Conditional_0_Conditional_11_Template, 3, 2, "div", 11);
105477
+ i0.ɵɵelementStart(12, "div", 13)(13, "h3", 14);
105478
+ i0.ɵɵtext(14);
105236
105479
  i0.ɵɵelementEnd();
105237
- i0.ɵɵconditionalCreate(14, UnifiedDashboardModalComponent_Conditional_0_Conditional_14_Template, 3, 2, "div", 15);
105480
+ i0.ɵɵconditionalCreate(15, UnifiedDashboardModalComponent_Conditional_0_Conditional_15_Template, 3, 2, "div", 15);
105238
105481
  i0.ɵɵelementEnd()()();
105239
- i0.ɵɵelementStart(15, "button", 16);
105240
- i0.ɵɵlistener("click", function UnifiedDashboardModalComponent_Conditional_0_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeModal()); });
105482
+ i0.ɵɵelementStart(16, "button", 16);
105483
+ i0.ɵɵlistener("click", function UnifiedDashboardModalComponent_Conditional_0_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeModal()); });
105241
105484
  i0.ɵɵnamespaceSVG();
105242
- i0.ɵɵelementStart(16, "svg", 17);
105243
- i0.ɵɵelement(17, "path", 18);
105485
+ i0.ɵɵelementStart(17, "svg", 17);
105486
+ i0.ɵɵelement(18, "path", 18);
105244
105487
  i0.ɵɵelementEnd()()()();
105245
105488
  i0.ɵɵnamespaceHTML();
105246
- i0.ɵɵelementStart(18, "div", 19, 1);
105247
- i0.ɵɵconditionalCreate(20, UnifiedDashboardModalComponent_Conditional_0_Conditional_20_Template, 1, 7, "symphiq-unified-goal-detail-modal-content", 20);
105248
- i0.ɵɵconditionalCreate(21, UnifiedDashboardModalComponent_Conditional_0_Conditional_21_Template, 1, 4, "symphiq-goal-objectives-modal-content", 21);
105249
- i0.ɵɵconditionalCreate(22, UnifiedDashboardModalComponent_Conditional_0_Conditional_22_Template, 1, 3, "symphiq-unified-goal-related-metrics-modal-content", 22);
105250
- i0.ɵɵconditionalCreate(23, UnifiedDashboardModalComponent_Conditional_0_Conditional_23_Template, 1, 2, "symphiq-objective-strategies-modal-content", 23);
105251
- i0.ɵɵconditionalCreate(24, UnifiedDashboardModalComponent_Conditional_0_Conditional_24_Template, 1, 10, "symphiq-strategy-recommendations-modal-content", 24);
105252
- i0.ɵɵconditionalCreate(25, UnifiedDashboardModalComponent_Conditional_0_Conditional_25_Template, 1, 3, "symphiq-priority-actions-modal-content", 25);
105489
+ i0.ɵɵelementStart(19, "div", 19, 1);
105490
+ i0.ɵɵconditionalCreate(21, UnifiedDashboardModalComponent_Conditional_0_Conditional_21_Template, 1, 7, "symphiq-unified-goal-detail-modal-content", 20);
105491
+ i0.ɵɵconditionalCreate(22, UnifiedDashboardModalComponent_Conditional_0_Conditional_22_Template, 1, 4, "symphiq-goal-objectives-modal-content", 21);
105492
+ i0.ɵɵconditionalCreate(23, UnifiedDashboardModalComponent_Conditional_0_Conditional_23_Template, 1, 3, "symphiq-unified-goal-related-metrics-modal-content", 22);
105493
+ i0.ɵɵconditionalCreate(24, UnifiedDashboardModalComponent_Conditional_0_Conditional_24_Template, 1, 2, "symphiq-objective-strategies-modal-content", 23);
105494
+ i0.ɵɵconditionalCreate(25, UnifiedDashboardModalComponent_Conditional_0_Conditional_25_Template, 1, 10, "symphiq-strategy-recommendations-modal-content", 24);
105495
+ i0.ɵɵconditionalCreate(26, UnifiedDashboardModalComponent_Conditional_0_Conditional_26_Template, 1, 3, "symphiq-priority-actions-modal-content", 25);
105253
105496
  i0.ɵɵelementEnd();
105254
- i0.ɵɵconditionalCreate(26, UnifiedDashboardModalComponent_Conditional_0_Conditional_26_Template, 2, 4, "div", 26);
105497
+ i0.ɵɵconditionalCreate(27, UnifiedDashboardModalComponent_Conditional_0_Conditional_27_Template, 2, 4, "div", 26);
105255
105498
  i0.ɵɵelementEnd()();
105256
105499
  } if (rf & 2) {
105257
- let tmp_17_0;
105500
+ let tmp_18_0;
105258
105501
  const ctx_r1 = i0.ɵɵnextContext();
105259
105502
  i0.ɵɵstyleProp("z-index", ctx_r1.baseZIndex())("visibility", ctx_r1.modalReady() ? "visible" : "hidden");
105260
105503
  i0.ɵɵadvance(2);
@@ -105269,34 +105512,44 @@ function UnifiedDashboardModalComponent_Conditional_0_Template(rf, ctx) { if (rf
105269
105512
  i0.ɵɵadvance(3);
105270
105513
  i0.ɵɵconditional(ctx_r1.navigationStack().length > 0 ? 7 : -1);
105271
105514
  i0.ɵɵadvance(2);
105272
- i0.ɵɵconditional(ctx_r1.navigationStack().length > 0 ? 9 : 10);
105515
+ i0.ɵɵconditional(ctx_r1.isSourceGoalFlow() ? 9 : -1);
105516
+ i0.ɵɵadvance();
105517
+ i0.ɵɵconditional(ctx_r1.navigationStack().length > 0 ? 10 : 11);
105273
105518
  i0.ɵɵadvance(3);
105274
105519
  i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-slate-900" : "text-white");
105275
105520
  i0.ɵɵadvance();
105276
105521
  i0.ɵɵtextInterpolate1(" ", ctx_r1.modalTitle(), " ");
105277
105522
  i0.ɵɵadvance();
105278
- i0.ɵɵconditional(((tmp_17_0 = ctx_r1.currentGoal()) == null ? null : tmp_17_0.priority) || ((tmp_17_0 = ctx_r1.currentGoal()) == null ? null : tmp_17_0.timeframe) ? 14 : -1);
105523
+ i0.ɵɵconditional(((tmp_18_0 = ctx_r1.currentGoal()) == null ? null : tmp_18_0.priority) || ((tmp_18_0 = ctx_r1.currentGoal()) == null ? null : tmp_18_0.timeframe) ? 15 : -1);
105279
105524
  i0.ɵɵadvance();
105280
105525
  i0.ɵɵstyleProp("z-index", ctx_r1.contentZIndex() + 1);
105281
105526
  i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "text-slate-600 hover:text-slate-900 hover:bg-slate-100" : "text-slate-400 hover:text-white hover:bg-slate-700");
105282
105527
  i0.ɵɵadvance(3);
105283
105528
  i0.ɵɵproperty("ngClass", ctx_r1.isLightMode() ? "bg-white/30" : "bg-slate-800/30");
105284
105529
  i0.ɵɵadvance(2);
105285
- i0.ɵɵconditional(ctx_r1.modalType() === "unified-goal-detail" && ctx_r1.unifiedGoalData() ? 20 : -1);
105530
+ i0.ɵɵconditional(ctx_r1.modalType() === "unified-goal-detail" && ctx_r1.unifiedGoalData() ? 21 : -1);
105286
105531
  i0.ɵɵadvance();
105287
- i0.ɵɵconditional(ctx_r1.modalType() === "unified-goal-objectives" && ctx_r1.objectivesData() ? 21 : -1);
105532
+ i0.ɵɵconditional(ctx_r1.modalType() === "unified-goal-objectives" && ctx_r1.objectivesData() ? 22 : -1);
105288
105533
  i0.ɵɵadvance();
105289
- i0.ɵɵconditional(ctx_r1.modalType() === "unified-goal-related-metrics" && ctx_r1.relatedMetricsData() ? 22 : -1);
105534
+ i0.ɵɵconditional(ctx_r1.modalType() === "unified-goal-related-metrics" && ctx_r1.relatedMetricsData() ? 23 : -1);
105290
105535
  i0.ɵɵadvance();
105291
- i0.ɵɵconditional(ctx_r1.modalType() === "objective-strategies" && ctx_r1.strategiesData() ? 23 : -1);
105536
+ i0.ɵɵconditional(ctx_r1.modalType() === "objective-strategies" && ctx_r1.strategiesData() ? 24 : -1);
105292
105537
  i0.ɵɵadvance();
105293
- i0.ɵɵconditional(ctx_r1.modalType() === "strategy-recommendations" && ctx_r1.recommendationsData() ? 24 : -1);
105538
+ i0.ɵɵconditional(ctx_r1.modalType() === "strategy-recommendations" && ctx_r1.recommendationsData() ? 25 : -1);
105294
105539
  i0.ɵɵadvance();
105295
- i0.ɵɵconditional(ctx_r1.modalType() === "priority-actions-list" && ctx_r1.priorityActionsData() ? 25 : -1);
105540
+ i0.ɵɵconditional(ctx_r1.modalType() === "priority-actions-list" && ctx_r1.priorityActionsData() ? 26 : -1);
105296
105541
  i0.ɵɵadvance();
105297
- i0.ɵɵconditional(ctx_r1.modalType() === "unified-goal-detail" && ctx_r1.currentGoal() ? 26 : -1);
105542
+ i0.ɵɵconditional(ctx_r1.modalType() === "unified-goal-detail" && ctx_r1.currentGoal() ? 27 : -1);
105298
105543
  } }
105299
105544
  class UnifiedDashboardModalComponent {
105545
+ getSourceAnalysisTypeLabel(type) {
105546
+ switch (type) {
105547
+ case ProfileAnalysisTypeEnum.METRIC: return 'Metric Analysis';
105548
+ case ProfileAnalysisTypeEnum.FOCUS_AREA: return 'Focus Area Analysis';
105549
+ case ProfileAnalysisTypeEnum.SHOP: return 'Shop Analysis';
105550
+ default: return 'Analysis';
105551
+ }
105552
+ }
105300
105553
  constructor() {
105301
105554
  this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
105302
105555
  this.loadingSourceAnalysisId = input(...(ngDevMode ? [undefined, { debugName: "loadingSourceAnalysisId" }] : []));
@@ -105313,6 +105566,7 @@ class UnifiedDashboardModalComponent {
105313
105566
  this.modalReady = signal(false, ...(ngDevMode ? [{ debugName: "modalReady" }] : []));
105314
105567
  this.isFreshOpen = signal(true, ...(ngDevMode ? [{ debugName: "isFreshOpen" }] : []));
105315
105568
  this.modalMovedToBody = false;
105569
+ this.initialGoalActionState = signal(null, ...(ngDevMode ? [{ debugName: "initialGoalActionState" }] : []));
105316
105570
  this.modalTitle = signal('', ...(ngDevMode ? [{ debugName: "modalTitle" }] : []));
105317
105571
  this.modalType = signal(null, ...(ngDevMode ? [{ debugName: "modalType" }] : []));
105318
105572
  this.modalData = signal(null, ...(ngDevMode ? [{ debugName: "modalData" }] : []));
@@ -105454,22 +105708,54 @@ class UnifiedDashboardModalComponent {
105454
105708
  }, ...(ngDevMode ? [{ debugName: "allInsightsFromStack" }] : []));
105455
105709
  this.allBusinessInsightsFromStack = computed(() => {
105456
105710
  const goalData = this.unifiedGoalData();
105457
- if (goalData?.allBusinessInsights)
105711
+ if (goalData?.allBusinessInsights) {
105458
105712
  return goalData.allBusinessInsights;
105713
+ }
105459
105714
  const objData = this.objectivesData();
105460
- if (objData?.allBusinessInsights)
105715
+ if (objData?.allBusinessInsights) {
105461
105716
  return objData.allBusinessInsights;
105717
+ }
105462
105718
  const stack = this.navigationStack();
105463
105719
  for (let i = stack.length - 1; i >= 0; i--) {
105464
105720
  const state = stack[i];
105465
105721
  if (state.type === 'unified-goal-detail' || state.type === 'unified-goal-objectives') {
105466
105722
  const data = state.data;
105467
- if (data?.allBusinessInsights)
105723
+ if (data?.allBusinessInsights) {
105468
105724
  return data.allBusinessInsights;
105725
+ }
105469
105726
  }
105470
105727
  }
105471
105728
  return [];
105472
105729
  }, ...(ngDevMode ? [{ debugName: "allBusinessInsightsFromStack" }] : []));
105730
+ this.sourceGoalContext = computed(() => {
105731
+ const rawStack = this.currentModalState()?.navigationStack || [];
105732
+ for (let i = rawStack.length - 1; i >= 0; i--) {
105733
+ const state = rawStack[i];
105734
+ if (state.type === 'goal-detail' || state.type === 'goal-objectives') {
105735
+ const data = state.data;
105736
+ if (data?.sourceAnalysisType) {
105737
+ return { sourceAnalysisType: data.sourceAnalysisType, sourceTypeTitle: data.sourceTypeTitle };
105738
+ }
105739
+ }
105740
+ }
105741
+ const strategiesData = this.strategiesData();
105742
+ if (strategiesData?.sourceAnalysisType) {
105743
+ return { sourceAnalysisType: strategiesData.sourceAnalysisType, sourceTypeTitle: strategiesData.sourceTypeTitle };
105744
+ }
105745
+ const recommendationsData = this.recommendationsData();
105746
+ if (recommendationsData?.sourceAnalysisType) {
105747
+ return { sourceAnalysisType: recommendationsData.sourceAnalysisType, sourceTypeTitle: recommendationsData.sourceTypeTitle };
105748
+ }
105749
+ return null;
105750
+ }, ...(ngDevMode ? [{ debugName: "sourceGoalContext" }] : []));
105751
+ this.isSourceGoalFlow = computed(() => this.sourceGoalContext() !== null, ...(ngDevMode ? [{ debugName: "isSourceGoalFlow" }] : []));
105752
+ this.sourceGoalChipLabel = computed(() => {
105753
+ const context = this.sourceGoalContext();
105754
+ if (!context)
105755
+ return null;
105756
+ const typeLabel = this.getSourceAnalysisTypeLabel(context.sourceAnalysisType);
105757
+ return context.sourceTypeTitle ? `${typeLabel}: ${context.sourceTypeTitle}` : typeLabel;
105758
+ }, ...(ngDevMode ? [{ debugName: "sourceGoalChipLabel" }] : []));
105473
105759
  this.loadedSourceAnalysisIdsAsNumbers = computed(() => {
105474
105760
  return this.loadedSourceAnalysisIds();
105475
105761
  }, ...(ngDevMode ? [{ debugName: "loadedSourceAnalysisIdsAsNumbers" }] : []));
@@ -105519,7 +105805,7 @@ class UnifiedDashboardModalComponent {
105519
105805
  }
105520
105806
  const unifiedModalTypes = ['unified-goal-detail', 'unified-goal-objectives', 'unified-goal-related-metrics', 'objective-strategies', 'strategy-recommendations', 'priority-actions-list'];
105521
105807
  const isUnifiedType = unifiedModalTypes.includes(state.type || '');
105522
- const stackableTypes = ['metrics-list', 'metric', 'insight', 'insights-list', 'goal-insights-list', 'goal-business-insights-list', 'recommendation-business-insights-list', 'recommendation-insights-list', 'business-insight-detail'];
105808
+ const stackableTypes = ['metrics-list', 'metric', 'insight', 'insights-list', 'goal-insights-list', 'goal-business-insights-list', 'recommendation-business-insights-list', 'recommendation-insights-list', 'business-insight-detail', 'goal-detail', 'goal-objectives'];
105523
105809
  const isStackableType = stackableTypes.includes(state.type || '');
105524
105810
  if (!isUnifiedType && state.type !== null && !isStackableType) {
105525
105811
  if (this.isOpen()) {
@@ -105548,6 +105834,9 @@ class UnifiedDashboardModalComponent {
105548
105834
  this.modalTitle.set(data.goal.title || 'Unified Goal');
105549
105835
  this.isFreshOpen.set(!wasAlreadyOpen);
105550
105836
  this.isOpen.set(true);
105837
+ if (!wasAlreadyOpen && data.goal?.id) {
105838
+ this.initialGoalActionState.set(this.goalActionStateService.getState(data.goal.id));
105839
+ }
105551
105840
  this.scrollContentToTop();
105552
105841
  }
105553
105842
  else if (state.type === 'unified-goal-objectives' && state.data) {
@@ -105630,7 +105919,7 @@ class UnifiedDashboardModalComponent {
105630
105919
  const data = this.unifiedGoalData();
105631
105920
  if (!data)
105632
105921
  return;
105633
- this.modalService.navigateToUnifiedGoalObjectives(data.goal, data.allMetrics, data.allCharts, this.viewMode());
105922
+ this.modalService.navigateToUnifiedGoalObjectives(data.goal, data.allMetrics, data.allCharts, this.viewMode(), data.allInsights, data.allBusinessInsights);
105634
105923
  }
105635
105924
  onRelatedMetricClick(metric) {
105636
105925
  const data = this.relatedMetricsData();
@@ -105750,7 +106039,11 @@ class UnifiedDashboardModalComponent {
105750
106039
  }
105751
106040
  onActionStateChange(event) {
105752
106041
  if (event.goalId) {
106042
+ const wasInitiallyUndefined = this.initialGoalActionState() === undefined;
105753
106043
  this.goalActionStateService.setState(event.goalId, event.state);
106044
+ if (wasInitiallyUndefined) {
106045
+ this.closeModal();
106046
+ }
105754
106047
  }
105755
106048
  }
105756
106049
  closeModal() {
@@ -105787,8 +106080,8 @@ class UnifiedDashboardModalComponent {
105787
106080
  let _t;
105788
106081
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.modalContent = _t.first);
105789
106082
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.modalWrapper = _t.first);
105790
- } }, inputs: { viewMode: [1, "viewMode"], loadingSourceAnalysisId: [1, "loadingSourceAnalysisId"], loadedSourceAnalysisIds: [1, "loadedSourceAnalysisIds"] }, outputs: { priorityActionGoalClick: "priorityActionGoalClick", priorityActionRecommendationClick: "priorityActionRecommendationClick", sourceAnalysisClickRequest: "sourceAnalysisClickRequest" }, decls: 1, vars: 1, consts: [["modalWrapper", ""], ["modalContent", ""], [1, "fixed", "inset-0", "flex", "items-center", "justify-center", "p-4", "overflow-y-auto", 3, "z-index", "visibility"], [1, "fixed", "inset-0", "flex", "items-center", "justify-center", "p-4", "overflow-y-auto"], ["aria-hidden", "true", 1, "fixed", "inset-0", "backdrop-blur-sm", "transition-opacity", "duration-200", 3, "click", "ngClass"], [1, "relative", "w-full", "max-w-6xl", "rounded-2xl", "text-left", "overflow-hidden", "shadow-xl", "border", "backdrop-blur-xl", 3, "click", "ngClass"], [1, "px-6", "py-5", "border-b", "backdrop-blur-sm", 3, "ngClass"], [1, "flex", "items-start", "justify-between", "gap-4"], [1, "flex", "items-start", "gap-3", "flex-1", "min-w-0"], ["type", "button", 1, "mt-0.5", "p-1.5", "rounded-lg", "transition-all", "hover:scale-105", "active:scale-95", "cursor-pointer", "flex-shrink-0", 3, "ngClass"], [1, "flex-1", "min-w-0"], [1, "flex", "items-center", "gap-1.5", "mb-2", "text-xs"], [1, "flex", "items-center", "gap-2", "mb-2"], [1, "flex", "flex-wrap", "items-center", "justify-between", "gap-x-4", "gap-y-2"], [1, "text-xl", "font-bold", "leading-tight", 3, "ngClass"], [1, "flex", "items-center", "gap-2"], ["type", "button", 1, "transition-all", "rounded-lg", "p-1", "hover:scale-110", "active:scale-90", "cursor-pointer", "flex-shrink-0", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M6 18L18 6M6 6l12 12"], [1, "px-6", "py-8", "max-h-[80vh]", "overflow-y-auto", "backdrop-blur-sm", 3, "ngClass"], [3, "goal", "allMetrics", "allCharts", "loadedSourceAnalysisIds", "loadingSourceAnalysisId", "viewMode", "currentModalState"], [3, "objectives", "goalTitle", "viewMode"], [3, "goal", "contributingMetrics", "viewMode"], [3, "objective", "viewMode"], [3, "strategy", "viewMode", "allMetrics", "allCharts", "allInsights", "allBusinessInsights", "goalTitle", "objectiveTitle", "currentModalState", "expandedRecommendationId"], [3, "items", "viewMode", "selectedIndex"], [1, "px-6", "py-5", "border-t", "backdrop-blur-sm", 3, "ngClass"], ["type", "button", 1, "mt-0.5", "p-1.5", "rounded-lg", "transition-all", "hover:scale-105", "active:scale-95", "cursor-pointer", "flex-shrink-0", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M15 19l-7-7 7-7"], [1, "font-medium", 3, "ngClass"], ["type", "button", 1, "hover:underline", "cursor-pointer", "transition-colors", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3", "flex-shrink-0", 3, "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 5l7 7-7 7"], [1, "text-xs", "font-semibold", "uppercase", "tracking-wider", 3, "ngClass"], [3, "priority", "viewMode"], [3, "timeframe", "viewMode"], [3, "sourceAnalysisClick", "metricClick", "contributingMetricsClick", "showObjectives", "close", "goal", "allMetrics", "allCharts", "loadedSourceAnalysisIds", "loadingSourceAnalysisId", "viewMode", "currentModalState"], [3, "metricClick", "goal", "contributingMetrics", "viewMode"], [3, "goalClick", "recommendationClick", "items", "viewMode", "selectedIndex"], [3, "stateChange", "state", "viewMode", "goalId"]], template: function UnifiedDashboardModalComponent_Template(rf, ctx) { if (rf & 1) {
105791
- i0.ɵɵconditionalCreate(0, UnifiedDashboardModalComponent_Conditional_0_Template, 27, 32, "div", 2);
106083
+ } }, inputs: { viewMode: [1, "viewMode"], loadingSourceAnalysisId: [1, "loadingSourceAnalysisId"], loadedSourceAnalysisIds: [1, "loadedSourceAnalysisIds"] }, outputs: { priorityActionGoalClick: "priorityActionGoalClick", priorityActionRecommendationClick: "priorityActionRecommendationClick", sourceAnalysisClickRequest: "sourceAnalysisClickRequest" }, decls: 1, vars: 1, consts: [["modalWrapper", ""], ["modalContent", ""], [1, "fixed", "inset-0", "flex", "items-center", "justify-center", "p-4", "overflow-y-auto", 3, "z-index", "visibility"], [1, "fixed", "inset-0", "flex", "items-center", "justify-center", "p-4", "overflow-y-auto"], ["aria-hidden", "true", 1, "fixed", "inset-0", "backdrop-blur-sm", "transition-opacity", "duration-200", 3, "click", "ngClass"], [1, "relative", "w-full", "max-w-6xl", "rounded-2xl", "text-left", "overflow-hidden", "shadow-xl", "border", "backdrop-blur-xl", 3, "click", "ngClass"], [1, "px-6", "py-5", "border-b", "backdrop-blur-sm", 3, "ngClass"], [1, "flex", "items-start", "justify-between", "gap-4"], [1, "flex", "items-start", "gap-3", "flex-1", "min-w-0"], ["type", "button", 1, "mt-0.5", "p-1.5", "rounded-lg", "transition-all", "hover:scale-105", "active:scale-95", "cursor-pointer", "flex-shrink-0", 3, "ngClass"], [1, "flex-1", "min-w-0"], [1, "flex", "items-center", "gap-2", "mb-2"], [1, "flex", "items-center", "gap-1.5", "mb-2", "text-xs"], [1, "flex", "flex-wrap", "items-center", "justify-between", "gap-x-4", "gap-y-2"], [1, "text-xl", "font-bold", "leading-tight", 3, "ngClass"], [1, "flex", "items-center", "gap-2"], ["type", "button", 1, "transition-all", "rounded-lg", "p-1", "hover:scale-110", "active:scale-90", "cursor-pointer", "flex-shrink-0", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M6 18L18 6M6 6l12 12"], [1, "px-6", "py-8", "max-h-[80vh]", "overflow-y-auto", "backdrop-blur-sm", 3, "ngClass"], [3, "goal", "allMetrics", "allCharts", "loadedSourceAnalysisIds", "loadingSourceAnalysisId", "viewMode", "currentModalState"], [3, "objectives", "goalTitle", "viewMode"], [3, "goal", "contributingMetrics", "viewMode"], [3, "objective", "viewMode"], [3, "strategy", "viewMode", "allMetrics", "allCharts", "allInsights", "allBusinessInsights", "goalTitle", "objectiveTitle", "currentModalState", "expandedRecommendationId"], [3, "items", "viewMode", "selectedIndex"], [1, "px-6", "py-5", "border-t", "backdrop-blur-sm", 3, "ngClass"], ["type", "button", 1, "mt-0.5", "p-1.5", "rounded-lg", "transition-all", "hover:scale-105", "active:scale-95", "cursor-pointer", "flex-shrink-0", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M15 19l-7-7 7-7"], [1, "inline-flex", "items-center", "gap-1.5", "px-2.5", "py-1", "rounded-full", "text-xs", "font-semibold", "border", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3.5", "h-3.5"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z"], [1, "text-xs", 3, "ngClass"], [1, "text-xs", "font-medium", 3, "ngClass"], [1, "font-medium", 3, "ngClass"], ["type", "button", 1, "hover:underline", "cursor-pointer", "transition-colors", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-3", "h-3", "flex-shrink-0", 3, "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 5l7 7-7 7"], [1, "text-xs", "font-semibold", "uppercase", "tracking-wider", 3, "ngClass"], [3, "priority", "viewMode"], [3, "timeframe", "viewMode"], [3, "sourceAnalysisClick", "metricClick", "contributingMetricsClick", "showObjectives", "close", "goal", "allMetrics", "allCharts", "loadedSourceAnalysisIds", "loadingSourceAnalysisId", "viewMode", "currentModalState"], [3, "metricClick", "goal", "contributingMetrics", "viewMode"], [3, "goalClick", "recommendationClick", "items", "viewMode", "selectedIndex"], [3, "stateChange", "state", "viewMode", "goalId"]], template: function UnifiedDashboardModalComponent_Template(rf, ctx) { if (rf & 1) {
106084
+ i0.ɵɵconditionalCreate(0, UnifiedDashboardModalComponent_Conditional_0_Template, 28, 33, "div", 2);
105792
106085
  } if (rf & 2) {
105793
106086
  i0.ɵɵconditional(ctx.isOpen() ? 0 : -1);
105794
106087
  } }, dependencies: [CommonModule, i1$1.NgClass, UnifiedGoalDetailModalContentComponent,
@@ -105877,6 +106170,20 @@ class UnifiedDashboardModalComponent {
105877
106170
  </button>
105878
106171
  }
105879
106172
  <div class="flex-1 min-w-0">
106173
+ @if (isSourceGoalFlow()) {
106174
+ <div class="flex items-center gap-2 mb-2">
106175
+ <span [ngClass]="isLightMode() ? 'bg-emerald-100 text-emerald-700 border-emerald-200' : 'bg-emerald-900/30 text-emerald-400 border-emerald-700/50'" class="inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full text-xs font-semibold border">
106176
+ <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
106177
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z"/>
106178
+ </svg>
106179
+ SOURCE GOAL
106180
+ </span>
106181
+ @if (sourceGoalChipLabel()) {
106182
+ <span [ngClass]="isLightMode() ? 'text-slate-400' : 'text-slate-500'" class="text-xs">|</span>
106183
+ <span [ngClass]="isLightMode() ? 'text-slate-600' : 'text-slate-400'" class="text-xs font-medium">{{ sourceGoalChipLabel() }}</span>
106184
+ }
106185
+ </div>
106186
+ }
105880
106187
  @if (navigationStack().length > 0) {
105881
106188
  <div class="flex items-center gap-1.5 mb-2 text-xs">
105882
106189
  @for (item of navigationStack(); track $index; let last = $last) {
@@ -106033,7 +106340,7 @@ class UnifiedDashboardModalComponent {
106033
106340
  type: ViewChild,
106034
106341
  args: ['modalWrapper']
106035
106342
  }] }); })();
106036
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UnifiedDashboardModalComponent, { className: "UnifiedDashboardModalComponent", filePath: "lib/components/profile-analysis-unified-dashboard/modals/unified-dashboard-modal.component.ts", lineNumber: 254 }); })();
106343
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UnifiedDashboardModalComponent, { className: "UnifiedDashboardModalComponent", filePath: "lib/components/profile-analysis-unified-dashboard/modals/unified-dashboard-modal.component.ts", lineNumber: 271 }); })();
106037
106344
 
106038
106345
  function UnifiedWelcomeBannerComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
106039
106346
  i0.ɵɵtext(0, " Your Unified Goals ");
@@ -106603,7 +106910,7 @@ class UnifiedGoalsProgressFooterComponent {
106603
106910
  this.integrateGoals.emit(this.goalActionStateService.getOutput(this.goalIds()));
106604
106911
  }
106605
106912
  static { this.ɵfac = function UnifiedGoalsProgressFooterComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || UnifiedGoalsProgressFooterComponent)(); }; }
106606
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UnifiedGoalsProgressFooterComponent, selectors: [["symphiq-unified-goals-progress-footer"]], inputs: { goalIds: [1, "goalIds"], viewMode: [1, "viewMode"] }, outputs: { integrateGoals: "integrateGoals" }, decls: 15, vars: 11, consts: [[1, "fixed", "bottom-0", "left-0", "right-0", "z-40", "border-t", "backdrop-blur-xl", "transition-all", "duration-300", 3, "ngClass"], [1, "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-4"], [1, "flex", "flex-col", "sm:flex-row", "items-center", "justify-between", "gap-4"], [1, "flex-1", "w-full", "sm:w-auto"], [1, "flex", "items-center", "justify-between", "mb-2"], [1, "text-sm", "font-medium", 3, "ngClass"], [1, "text-sm", "font-semibold", 3, "ngClass"], [1, "h-2", "rounded-full", "overflow-hidden", 3, "ngClass"], [1, "h-full", "rounded-full", "transition-all", "duration-500", "ease-out", 3, "ngClass"], [1, "flex", "items-center", "gap-4", "mt-2"], [1, "flex", "items-center", "gap-3"], ["type", "button", 1, "inline-flex", "items-center", "gap-2", "px-6", "py-3", "rounded-xl", "font-semibold", "text-sm", "transition-all", "duration-200", "shadow-lg", "hover:shadow-xl", "hover:scale-105", "active:scale-95", "cursor-pointer", 3, "ngClass"], [1, "text-sm", 3, "ngClass"], [1, "flex", "items-center", "gap-1.5"], [1, "w-2", "h-2", "rounded-full", "bg-emerald-500"], [1, "text-xs", 3, "ngClass"], [1, "w-2", "h-2", "rounded-full", "bg-amber-500"], [1, "w-2", "h-2", "rounded-full", "bg-slate-400"], ["type", "button", 1, "inline-flex", "items-center", "gap-2", "px-6", "py-3", "rounded-xl", "font-semibold", "text-sm", "transition-all", "duration-200", "shadow-lg", "hover:shadow-xl", "hover:scale-105", "active:scale-95", "cursor-pointer", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 10V3L4 14h7v7l9-11h-7z"]], template: function UnifiedGoalsProgressFooterComponent_Template(rf, ctx) { if (rf & 1) {
106913
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UnifiedGoalsProgressFooterComponent, selectors: [["symphiq-unified-goals-progress-footer"]], inputs: { goalIds: [1, "goalIds"], viewMode: [1, "viewMode"] }, outputs: { integrateGoals: "integrateGoals" }, decls: 15, vars: 11, consts: [[1, "fixed", "bottom-0", "left-0", "right-0", "z-100", "border-t", "backdrop-blur-xl", "transition-all", "duration-300", 3, "ngClass"], [1, "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-4"], [1, "flex", "flex-col", "sm:flex-row", "items-center", "justify-between", "gap-4"], [1, "flex-1", "w-full", "sm:w-auto"], [1, "flex", "items-center", "justify-between", "mb-2"], [1, "text-sm", "font-medium", 3, "ngClass"], [1, "text-sm", "font-semibold", 3, "ngClass"], [1, "h-2", "rounded-full", "overflow-hidden", 3, "ngClass"], [1, "h-full", "rounded-full", "transition-all", "duration-500", "ease-out", 3, "ngClass"], [1, "flex", "items-center", "gap-4", "mt-2"], [1, "flex", "items-center", "gap-3"], ["type", "button", 1, "inline-flex", "items-center", "gap-2", "px-6", "py-3", "rounded-xl", "font-semibold", "text-sm", "transition-all", "duration-200", "shadow-lg", "hover:shadow-xl", "hover:scale-105", "active:scale-95", "cursor-pointer", 3, "ngClass"], [1, "text-sm", 3, "ngClass"], [1, "flex", "items-center", "gap-1.5"], [1, "w-2", "h-2", "rounded-full", "bg-emerald-500"], [1, "text-xs", 3, "ngClass"], [1, "w-2", "h-2", "rounded-full", "bg-amber-500"], [1, "w-2", "h-2", "rounded-full", "bg-slate-400"], ["type", "button", 1, "inline-flex", "items-center", "gap-2", "px-6", "py-3", "rounded-xl", "font-semibold", "text-sm", "transition-all", "duration-200", "shadow-lg", "hover:shadow-xl", "hover:scale-105", "active:scale-95", "cursor-pointer", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 10V3L4 14h7v7l9-11h-7z"]], template: function UnifiedGoalsProgressFooterComponent_Template(rf, ctx) { if (rf & 1) {
106607
106914
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3)(4, "div", 4)(5, "span", 5);
106608
106915
  i0.ɵɵtext(6, " Goals Reviewed ");
106609
106916
  i0.ɵɵelementEnd();
@@ -106645,7 +106952,7 @@ class UnifiedGoalsProgressFooterComponent {
106645
106952
  imports: [CommonModule],
106646
106953
  changeDetection: ChangeDetectionStrategy.OnPush,
106647
106954
  template: `
106648
- <div [ngClass]="containerClasses()" class="fixed bottom-0 left-0 right-0 z-40 border-t backdrop-blur-xl transition-all duration-300">
106955
+ <div [ngClass]="containerClasses()" class="fixed bottom-0 left-0 right-0 z-100 border-t backdrop-blur-xl transition-all duration-300">
106649
106956
  <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4">
106650
106957
  <div class="flex flex-col sm:flex-row items-center justify-between gap-4">
106651
106958
  <div class="flex-1 w-full sm:w-auto">
@@ -107323,7 +107630,7 @@ class SymphiqProfileAnalysisUnifiedDashboardComponent {
107323
107630
  const goal = this.unifiedGoals().find(g => g.id === goalId);
107324
107631
  if (goal) {
107325
107632
  const currentState = this.modalService.getCurrentState();
107326
- this.modalService.openUnifiedGoalModal(goal, this.allMetrics(), this.allCharts(), this.loadedSourceAnalysisIds().map(String), this.viewMode(), this.loadingSourceAnalysisId() !== undefined ? String(this.loadingSourceAnalysisId()) : undefined, currentState, this.allInsights());
107633
+ this.modalService.openUnifiedGoalModal(goal, this.allMetrics(), this.allCharts(), this.loadedSourceAnalysisIds().map(String), this.viewMode(), this.loadingSourceAnalysisId() !== undefined ? String(this.loadingSourceAnalysisId()) : undefined, currentState, this.allInsights(), this.allBusinessInsights());
107327
107634
  }
107328
107635
  }
107329
107636
  onPriorityActionRecommendationClick(recommendationId) {
@@ -115627,5 +115934,5 @@ var pieChart_component = /*#__PURE__*/Object.freeze({
115627
115934
  * Generated bundle index. Do not edit.
115628
115935
  */
115629
115936
 
115630
- export { AreaChartComponent, BarChartComponent, BreakdownSectionComponent, BusinessAnalysisModalComponent, BusinessProfileSearchService, ChartCardComponent, ChartContainerComponent, ChartThemeService, CircularProgressComponent, CompetitivePositioningSummaryComponent, CompetitorAnalysisCardComponent, ConfettiService, ConfidenceLevelCardComponent, ContentGenerationProgressComponent, ContentGenerationProgressWithConfettiComponent, CrossDashboardRelationshipsService, DashboardHeaderComponent, DataLoaderService, DisplayModeEnum, FloatingBackButtonComponent, FloatingTocComponent, FocusAreaDetailCardComponent, FocusAreaExecutiveSummaryComponent, FocusAreaQuestionComponent, FocusAreaStatusCardComponent, FocusAreaToolsModalComponent, FunnelOrderService, GoalActionStateEnum, GoalActionStateService, GradeBadgeComponent, HeaderScrollService, HierarchyDisplayComponent, HorizontalBarComponent, IconService, IndeterminateSpinnerComponent, InsightCardComponent, JourneyProgressIndicatorComponent, JourneyStepIdEnum, LineChartComponent, MetricCardComponent, MetricExecutiveSummaryComponent, MetricFormatterService, MetricListItemComponent, MetricReportModalComponent, MetricWelcomeBannerComponent, MobileBottomNavComponent, MobileFABComponent, ModalComponent, ModalService, NapkinVisualPlaceholderComponent, NavigationStateService, OpportunityHighlightBannerComponent, OverallAssessmentComponent, PacingStatusBadgeComponent, PieChartComponent, ProfileItemCardComponent, ProfileSectionComponent, ProfileSubsectionComponent, RelatedContentSidebarComponent, RevenueCalculatorService, RevenueCalculatorWelcomeBannerComponent, ScrollDepthService, ScrollProgressBarComponent, SearchButtonComponent, SearchModalComponent, SectionDividerComponent, SectionNavigationComponent, ShadowElevationDirective, ShopPlatformEnum, ShopProfileCategoryListComponent, ShopProfileQuestionAnswerComponent, ShopProfileQuestionCardComponent, ShopProfileQuestionsModalComponent, ShopProfileStatusCardComponent, ShopProfileStickyFooterComponent, ShopProfileViewToggleComponent, ShopWelcomeBannerComponent, SkeletonBarComponent, SkeletonCardBaseComponent, SkeletonCircleComponent, SkeletonCompetitorCardComponent, SkeletonCustomerSegmentCardComponent, SkeletonFocusAreaCardComponent, SkeletonGenericCardComponent, SkeletonLoaderComponent, SkeletonPriceTierCardComponent, SkeletonProductCategoryCardComponent, SkeletonRegionCardComponent, SkeletonSeasonCardComponent, StickySubscriptionContinueButtonComponent, SubscriptionValuePropositionCardComponent, SymphiqBusinessAnalysisDashboardComponent, SymphiqConnectGaDashboardComponent, SymphiqCreateAccountDashboardComponent, SymphiqFunnelAnalysisDashboardComponent, SymphiqFunnelAnalysisPreviewComponent, SymphiqIconComponent, SymphiqProfileAnalysisFocusAreaDashboardComponent, SymphiqProfileAnalysisMetricDashboardComponent, SymphiqProfileAnalysisUnifiedDashboardComponent, SymphiqProfileFocusAreaDashboardComponent, SymphiqProfileFocusAreasAnalysesDashboardComponent, SymphiqProfileMetricDashboardComponent, SymphiqProfileMetricsAnalysesDashboardComponent, SymphiqProfileShopAnalysisDashboardComponent, SymphiqRevenueCalculatorDashboardComponent, SymphiqWelcomeDashboardComponent, TargetChangeBadgeComponent, TooltipContainerComponent, TooltipDataService, TooltipDirective, TooltipService, UserAvatarComponent, UserDisplayComponent, ViewModeService, ViewModeSwitcherModalComponent, ViewportAnimationDirective, VisualizationContainerComponent, calculateFunnelRatios, calculateMetricTargetsFromRevenue, calculateMetricTargetsFromRevenueReverse, calculateRelatedMetricRatios, generateTargetsFromCalculations, getBadgeLabelClasses, getButtonClasses, getCategoryBadgeClasses, getCategoryColor, getCompetitiveBadgeClasses, getContainerClasses, getFooterClasses, getFunnelStageMetrics, getGradeBadgeClasses, getHeaderClasses, getInsightsBadgeClasses, getInsightsCardClasses, getMetricLabelClasses, getMetricMiniCardClasses, getMetricValueClasses, getNarrativeTextClasses, getRevenueCardClasses, getRevenueIconClasses, getStatusBadgeClasses, getStatusDotClasses, getStatusIconClasses, getStatusSummaryClasses, getSubtitleClasses, getTitleClasses, getTrendClasses, getTrendIconClasses, getTrendValueClasses, groupMetricsByFunnelStage, isLightMode, validateRevenueTarget };
115937
+ export { AreaChartComponent, BarChartComponent, BreakdownSectionComponent, BusinessAnalysisModalComponent, BusinessProfileSearchService, ChartCardComponent, ChartContainerComponent, ChartThemeService, CircularProgressComponent, CompetitivePositioningSummaryComponent, CompetitorAnalysisCardComponent, ConfettiService, ConfidenceLevelCardComponent, ContentGenerationProgressComponent, ContentGenerationProgressWithConfettiComponent, CrossDashboardRelationshipsService, DashboardHeaderComponent, DataLoaderService, DisplayModeEnum, FloatingBackButtonComponent, FloatingTocComponent, FocusAreaDetailCardComponent, FocusAreaExecutiveSummaryComponent, FocusAreaQuestionComponent, FocusAreaStatusCardComponent, FocusAreaToolsModalComponent, FunnelOrderService, GoalActionStateEnum, GoalActionStateService, GradeBadgeComponent, HeaderScrollService, HierarchyDisplayComponent, HorizontalBarComponent, IconService, IndeterminateSpinnerComponent, InsightCardComponent, JourneyProgressIndicatorComponent, JourneyStepIdEnum, LineChartComponent, MetricCardComponent, MetricExecutiveSummaryComponent, MetricFormatterService, MetricListItemComponent, MetricReportModalComponent, MetricWelcomeBannerComponent, MobileBottomNavComponent, MobileFABComponent, ModalComponent, ModalService, NapkinVisualPlaceholderComponent, NavigationStateService, OpportunityHighlightBannerComponent, OverallAssessmentComponent, PacingStatusBadgeComponent, PieChartComponent, ProfileItemCardComponent, ProfileSectionComponent, ProfileSubsectionComponent, RelatedContentSidebarComponent, RevenueCalculatorService, RevenueCalculatorWelcomeBannerComponent, ReviewButtonComponent, ScrollDepthService, ScrollProgressBarComponent, SearchButtonComponent, SearchModalComponent, SectionDividerComponent, SectionNavigationComponent, ShadowElevationDirective, ShopPlatformEnum, ShopProfileCategoryListComponent, ShopProfileQuestionAnswerComponent, ShopProfileQuestionCardComponent, ShopProfileQuestionsModalComponent, ShopProfileStatusCardComponent, ShopProfileStickyFooterComponent, ShopProfileViewToggleComponent, ShopWelcomeBannerComponent, SkeletonBarComponent, SkeletonCardBaseComponent, SkeletonCircleComponent, SkeletonCompetitorCardComponent, SkeletonCustomerSegmentCardComponent, SkeletonFocusAreaCardComponent, SkeletonGenericCardComponent, SkeletonLoaderComponent, SkeletonPriceTierCardComponent, SkeletonProductCategoryCardComponent, SkeletonRegionCardComponent, SkeletonSeasonCardComponent, StickySubscriptionContinueButtonComponent, SubscriptionValuePropositionCardComponent, SymphiqBusinessAnalysisDashboardComponent, SymphiqConnectGaDashboardComponent, SymphiqCreateAccountDashboardComponent, SymphiqFunnelAnalysisDashboardComponent, SymphiqFunnelAnalysisPreviewComponent, SymphiqIconComponent, SymphiqProfileAnalysisFocusAreaDashboardComponent, SymphiqProfileAnalysisMetricDashboardComponent, SymphiqProfileAnalysisUnifiedDashboardComponent, SymphiqProfileFocusAreaDashboardComponent, SymphiqProfileFocusAreasAnalysesDashboardComponent, SymphiqProfileMetricDashboardComponent, SymphiqProfileMetricsAnalysesDashboardComponent, SymphiqProfileShopAnalysisDashboardComponent, SymphiqRevenueCalculatorDashboardComponent, SymphiqWelcomeDashboardComponent, TargetChangeBadgeComponent, TooltipContainerComponent, TooltipDataService, TooltipDirective, TooltipService, UserAvatarComponent, UserDisplayComponent, ViewModeService, ViewModeSwitcherModalComponent, ViewportAnimationDirective, VisualizationContainerComponent, calculateFunnelRatios, calculateMetricTargetsFromRevenue, calculateMetricTargetsFromRevenueReverse, calculateRelatedMetricRatios, generateTargetsFromCalculations, getBadgeLabelClasses, getButtonClasses, getCategoryBadgeClasses, getCategoryColor, getCompetitiveBadgeClasses, getContainerClasses, getFooterClasses, getFunnelStageMetrics, getGradeBadgeClasses, getHeaderClasses, getInsightsBadgeClasses, getInsightsCardClasses, getMetricLabelClasses, getMetricMiniCardClasses, getMetricValueClasses, getNarrativeTextClasses, getRevenueCardClasses, getRevenueIconClasses, getStatusBadgeClasses, getStatusDotClasses, getStatusIconClasses, getStatusSummaryClasses, getSubtitleClasses, getTitleClasses, getTrendClasses, getTrendIconClasses, getTrendValueClasses, groupMetricsByFunnelStage, isLightMode, validateRevenueTarget };
115631
115938
  //# sourceMappingURL=symphiq-components.mjs.map