@eric-emg/symphiq-components 1.3.48 → 1.3.50

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.
@@ -23,7 +23,6 @@ import { XYChart, CategoryAxis, AxisRendererX, ValueAxis, AxisRendererY, XYCurso
23
23
  import am5themes_Animated from '@amcharts/amcharts5/themes/Animated';
24
24
  import { PieChart, PieSeries } from '@amcharts/amcharts5/percent';
25
25
  import { EMAIL_IS_EMG_APPS } from '@jebgem/util';
26
- import { SynthesisConfidenceSectionComponent } from '@symphiq-components/components/shared/synthesis-confidence-section.component';
27
26
 
28
27
  class FunnelOrderService {
29
28
  constructor() {
@@ -101769,58 +101768,76 @@ const _forTrack0$b = ($index, $item) => $item.id;
101769
101768
  const _forTrack1$2 = ($index, $item) => $item.title;
101770
101769
  function UnifiedTimelineComponent_Conditional_0_For_8_Conditional_11_For_5_Template(rf, ctx) { if (rf & 1) {
101771
101770
  i0.ɵɵelementStart(0, "div", 19);
101772
- i0.ɵɵelement(1, "span", 21);
101773
- i0.ɵɵelementStart(2, "span", 22);
101771
+ i0.ɵɵelement(1, "span", 20);
101772
+ i0.ɵɵelementStart(2, "span", 21);
101774
101773
  i0.ɵɵtext(3);
101775
101774
  i0.ɵɵelementEnd()();
101776
101775
  } if (rf & 2) {
101777
- const milestone_r4 = ctx.$implicit;
101778
- const ctx_r2 = i0.ɵɵnextContext(4);
101779
- i0.ɵɵproperty("ngClass", ctx_r2.objectiveItemClasses());
101776
+ const milestone_r1 = ctx.$implicit;
101777
+ const ctx_r1 = i0.ɵɵnextContext(4);
101778
+ i0.ɵɵproperty("ngClass", ctx_r1.objectiveItemClasses());
101780
101779
  i0.ɵɵadvance();
101781
- i0.ɵɵproperty("ngClass", ctx_r2.getPriorityDotClasses(milestone_r4.priority));
101780
+ i0.ɵɵproperty("ngClass", ctx_r1.getPriorityDotClasses(milestone_r1.priority));
101782
101781
  i0.ɵɵadvance(2);
101783
- i0.ɵɵtextInterpolate(milestone_r4.title);
101782
+ i0.ɵɵtextInterpolate(milestone_r1.title);
101784
101783
  } }
101785
- function UnifiedTimelineComponent_Conditional_0_For_8_Conditional_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
101786
- i0.ɵɵelementStart(0, "div", 20);
101787
- i0.ɵɵtext(1);
101784
+ function UnifiedTimelineComponent_Conditional_0_For_8_Conditional_11_Template(rf, ctx) { if (rf & 1) {
101785
+ i0.ɵɵelementStart(0, "div", 15)(1, "div", 17);
101786
+ i0.ɵɵtext(2);
101788
101787
  i0.ɵɵelementEnd();
101788
+ i0.ɵɵelementStart(3, "div", 18);
101789
+ i0.ɵɵrepeaterCreate(4, UnifiedTimelineComponent_Conditional_0_For_8_Conditional_11_For_5_Template, 4, 3, "div", 19, _forTrack1$2);
101790
+ i0.ɵɵelementEnd()();
101789
101791
  } if (rf & 2) {
101790
- const phase_r2 = i0.ɵɵnextContext(2).$implicit;
101791
- const ctx_r2 = i0.ɵɵnextContext(2);
101792
- i0.ɵɵproperty("ngClass", ctx_r2.moreObjectivesClasses());
101792
+ const phase_r3 = i0.ɵɵnextContext().$implicit;
101793
+ const ctx_r1 = i0.ɵɵnextContext(2);
101794
+ i0.ɵɵadvance();
101795
+ i0.ɵɵproperty("ngClass", ctx_r1.objectivesLabelClasses());
101793
101796
  i0.ɵɵadvance();
101794
- i0.ɵɵtextInterpolate1(" +", phase_r2.milestones.length - 3, " more milestones ");
101797
+ i0.ɵɵtextInterpolate1(" Key Milestones (", phase_r3.milestones.length, ") ");
101798
+ i0.ɵɵadvance(2);
101799
+ i0.ɵɵrepeater(phase_r3.milestones);
101795
101800
  } }
101796
- function UnifiedTimelineComponent_Conditional_0_For_8_Conditional_11_Template(rf, ctx) { if (rf & 1) {
101801
+ function UnifiedTimelineComponent_Conditional_0_For_8_Conditional_12_For_5_Template(rf, ctx) { if (rf & 1) {
101802
+ const _r4 = i0.ɵɵgetCurrentView();
101803
+ i0.ɵɵelementStart(0, "div", 23);
101804
+ i0.ɵɵlistener("click", function UnifiedTimelineComponent_Conditional_0_For_8_Conditional_12_For_5_Template_div_click_0_listener() { const goal_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onGoalChipClick(goal_r5)); });
101805
+ i0.ɵɵelementStart(1, "span", 24);
101806
+ i0.ɵɵtext(2);
101807
+ i0.ɵɵelementEnd();
101808
+ i0.ɵɵnamespaceSVG();
101809
+ i0.ɵɵelementStart(3, "svg", 25);
101810
+ i0.ɵɵelement(4, "path", 26);
101811
+ i0.ɵɵelementEnd()();
101812
+ } if (rf & 2) {
101813
+ const goal_r5 = ctx.$implicit;
101814
+ const ctx_r1 = i0.ɵɵnextContext(4);
101815
+ i0.ɵɵproperty("ngClass", ctx_r1.goalChipClasses());
101816
+ i0.ɵɵadvance(2);
101817
+ i0.ɵɵtextInterpolate(goal_r5.title);
101818
+ } }
101819
+ function UnifiedTimelineComponent_Conditional_0_For_8_Conditional_12_Template(rf, ctx) { if (rf & 1) {
101797
101820
  i0.ɵɵelementStart(0, "div", 15)(1, "div", 17);
101798
101821
  i0.ɵɵtext(2);
101799
101822
  i0.ɵɵelementEnd();
101800
101823
  i0.ɵɵelementStart(3, "div", 18);
101801
- i0.ɵɵrepeaterCreate(4, UnifiedTimelineComponent_Conditional_0_For_8_Conditional_11_For_5_Template, 4, 3, "div", 19, _forTrack1$2);
101802
- i0.ɵɵconditionalCreate(6, UnifiedTimelineComponent_Conditional_0_For_8_Conditional_11_Conditional_6_Template, 2, 2, "div", 20);
101824
+ i0.ɵɵrepeaterCreate(4, UnifiedTimelineComponent_Conditional_0_For_8_Conditional_12_For_5_Template, 5, 2, "div", 22, _forTrack0$b);
101803
101825
  i0.ɵɵelementEnd()();
101804
101826
  } if (rf & 2) {
101805
- const phase_r2 = i0.ɵɵnextContext().$implicit;
101806
- const ctx_r2 = i0.ɵɵnextContext(2);
101827
+ const phase_r3 = i0.ɵɵnextContext().$implicit;
101828
+ const ctx_r1 = i0.ɵɵnextContext(2);
101807
101829
  i0.ɵɵadvance();
101808
- i0.ɵɵproperty("ngClass", ctx_r2.objectivesLabelClasses());
101830
+ i0.ɵɵproperty("ngClass", ctx_r1.objectivesLabelClasses());
101809
101831
  i0.ɵɵadvance();
101810
- i0.ɵɵtextInterpolate1(" Key Milestones (", phase_r2.milestones.length, ") ");
101832
+ i0.ɵɵtextInterpolate1(" Related Goals (", ctx_r1.getGoalsForPhase(phase_r3).length, ") ");
101811
101833
  i0.ɵɵadvance(2);
101812
- i0.ɵɵrepeater(phase_r2.milestones.slice(0, 3));
101813
- i0.ɵɵadvance(2);
101814
- i0.ɵɵconditional(phase_r2.milestones.length > 3 ? 6 : -1);
101834
+ i0.ɵɵrepeater(ctx_r1.getGoalsForPhase(phase_r3));
101815
101835
  } }
101816
101836
  function UnifiedTimelineComponent_Conditional_0_For_8_Template(rf, ctx) { if (rf & 1) {
101817
- const _r1 = i0.ɵɵgetCurrentView();
101818
101837
  i0.ɵɵelementStart(0, "div", 7)(1, "div", 8);
101819
101838
  i0.ɵɵelement(2, "div", 9);
101820
101839
  i0.ɵɵelementEnd();
101821
- i0.ɵɵelementStart(3, "div", 10);
101822
- i0.ɵɵlistener("click", function UnifiedTimelineComponent_Conditional_0_For_8_Template_div_click_3_listener() { const phase_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onPhaseClick(phase_r2)); });
101823
- i0.ɵɵelementStart(4, "div", 11)(5, "h4", 12);
101840
+ i0.ɵɵelementStart(3, "div", 10)(4, "div", 11)(5, "h4", 12);
101824
101841
  i0.ɵɵtext(6);
101825
101842
  i0.ɵɵelementEnd();
101826
101843
  i0.ɵɵelementStart(7, "span", 13);
@@ -101829,38 +101846,43 @@ function UnifiedTimelineComponent_Conditional_0_For_8_Template(rf, ctx) { if (rf
101829
101846
  i0.ɵɵelementStart(9, "p", 14);
101830
101847
  i0.ɵɵtext(10);
101831
101848
  i0.ɵɵelementEnd();
101832
- i0.ɵɵconditionalCreate(11, UnifiedTimelineComponent_Conditional_0_For_8_Conditional_11_Template, 7, 3, "div", 15);
101833
- i0.ɵɵelementStart(12, "div", 16);
101834
- i0.ɵɵtext(13);
101849
+ i0.ɵɵconditionalCreate(11, UnifiedTimelineComponent_Conditional_0_For_8_Conditional_11_Template, 6, 2, "div", 15);
101850
+ i0.ɵɵconditionalCreate(12, UnifiedTimelineComponent_Conditional_0_For_8_Conditional_12_Template, 6, 2, "div", 15);
101851
+ i0.ɵɵelementStart(13, "div", 16);
101852
+ i0.ɵɵtext(14);
101835
101853
  i0.ɵɵelementEnd()()();
101836
101854
  } if (rf & 2) {
101837
- const phase_r2 = ctx.$implicit;
101838
- const ɵ$index_16_r5 = ctx.$index;
101839
- const ctx_r2 = i0.ɵɵnextContext(2);
101855
+ const phase_r3 = ctx.$implicit;
101856
+ const ɵ$index_16_r6 = ctx.$index;
101857
+ const ctx_r1 = i0.ɵɵnextContext(2);
101840
101858
  i0.ɵɵadvance();
101841
- i0.ɵɵproperty("ngClass", ctx_r2.getPhaseNodeClasses(ɵ$index_16_r5));
101859
+ i0.ɵɵclassProp("animate-pulse-glow-blue", ɵ$index_16_r6 % 4 === 0)("animate-pulse-glow-cyan", ɵ$index_16_r6 % 4 === 1)("animate-pulse-glow-teal", ɵ$index_16_r6 % 4 === 2)("animate-pulse-glow-emerald", ɵ$index_16_r6 % 4 === 3);
101860
+ i0.ɵɵproperty("ngClass", ctx_r1.getPhaseNodeClasses(ɵ$index_16_r6));
101842
101861
  i0.ɵɵadvance();
101843
- i0.ɵɵproperty("ngClass", ctx_r2.getPhaseNodeInnerClasses(ɵ$index_16_r5));
101862
+ i0.ɵɵproperty("ngClass", ctx_r1.getPhaseNodeInnerClasses(ɵ$index_16_r6));
101844
101863
  i0.ɵɵadvance();
101845
- i0.ɵɵproperty("ngClass", ctx_r2.getPhaseCardClasses(ɵ$index_16_r5));
101864
+ i0.ɵɵclassProp("card-glow-blue", ɵ$index_16_r6 % 4 === 0)("card-glow-cyan", ɵ$index_16_r6 % 4 === 1)("card-glow-teal", ɵ$index_16_r6 % 4 === 2)("card-glow-emerald", ɵ$index_16_r6 % 4 === 3);
101865
+ i0.ɵɵproperty("ngClass", ctx_r1.getPhaseCardClasses(ɵ$index_16_r6));
101846
101866
  i0.ɵɵadvance(2);
101847
- i0.ɵɵproperty("ngClass", ctx_r2.itemTitleClasses());
101867
+ i0.ɵɵproperty("ngClass", ctx_r1.itemTitleClasses());
101848
101868
  i0.ɵɵadvance();
101849
- i0.ɵɵtextInterpolate1(" ", phase_r2.title, " ");
101869
+ i0.ɵɵtextInterpolate1(" ", phase_r3.title, " ");
101850
101870
  i0.ɵɵadvance();
101851
- i0.ɵɵproperty("ngClass", ctx_r2.getFocusThemeBadgeClasses());
101871
+ i0.ɵɵproperty("ngClass", ctx_r1.getFocusThemeBadgeClasses());
101852
101872
  i0.ɵɵadvance();
101853
- i0.ɵɵtextInterpolate1(" ", phase_r2.focusTheme, " ");
101873
+ i0.ɵɵtextInterpolate1(" ", phase_r3.focusTheme, " ");
101874
+ i0.ɵɵadvance();
101875
+ i0.ɵɵproperty("ngClass", ctx_r1.descriptionClasses());
101854
101876
  i0.ɵɵadvance();
101855
- i0.ɵɵproperty("ngClass", ctx_r2.descriptionClasses());
101877
+ i0.ɵɵtextInterpolate(phase_r3.description);
101856
101878
  i0.ɵɵadvance();
101857
- i0.ɵɵtextInterpolate(phase_r2.description);
101879
+ i0.ɵɵconditional(phase_r3.milestones && phase_r3.milestones.length > 0 ? 11 : -1);
101858
101880
  i0.ɵɵadvance();
101859
- i0.ɵɵconditional(phase_r2.milestones && phase_r2.milestones.length > 0 ? 11 : -1);
101881
+ i0.ɵɵconditional(ctx_r1.getGoalsForPhase(phase_r3).length > 0 ? 12 : -1);
101860
101882
  i0.ɵɵadvance();
101861
- i0.ɵɵproperty("ngClass", ctx_r2.phaseIndicatorClasses());
101883
+ i0.ɵɵproperty("ngClass", ctx_r1.phaseIndicatorClasses());
101862
101884
  i0.ɵɵadvance();
101863
- i0.ɵɵtextInterpolate1(" Phase ", ɵ$index_16_r5 + 1, " ");
101885
+ i0.ɵɵtextInterpolate1(" Phase ", ɵ$index_16_r6 + 1, " ");
101864
101886
  } }
101865
101887
  function UnifiedTimelineComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
101866
101888
  i0.ɵɵelementStart(0, "section", 0);
@@ -101868,26 +101890,27 @@ function UnifiedTimelineComponent_Conditional_0_Template(rf, ctx) { if (rf & 1)
101868
101890
  i0.ɵɵelementStart(3, "div", 3)(4, "div", 4);
101869
101891
  i0.ɵɵelement(5, "div", 5);
101870
101892
  i0.ɵɵelementStart(6, "div", 6);
101871
- i0.ɵɵrepeaterCreate(7, UnifiedTimelineComponent_Conditional_0_For_8_Template, 14, 12, "div", 7, _forTrack0$b);
101893
+ i0.ɵɵrepeaterCreate(7, UnifiedTimelineComponent_Conditional_0_For_8_Template, 15, 29, "div", 7, _forTrack0$b);
101872
101894
  i0.ɵɵelementEnd()()()();
101873
101895
  } if (rf & 2) {
101874
- const ctx_r2 = i0.ɵɵnextContext();
101896
+ const ctx_r1 = i0.ɵɵnextContext();
101875
101897
  i0.ɵɵadvance();
101876
- i0.ɵɵproperty("viewMode", ctx_r2.viewMode())("sectionIcon", i0.ɵɵpureFunction1(6, _c0$b, ctx_r2.IconSourceEnum.HEROICONS));
101898
+ i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("sectionIcon", i0.ɵɵpureFunction1(6, _c0$b, ctx_r1.IconSourceEnum.HEROICONS));
101877
101899
  i0.ɵɵadvance();
101878
- i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(8, _c0$b, ctx_r2.IconSourceEnum.HEROICONS))("viewMode", ctx_r2.viewMode());
101900
+ i0.ɵɵproperty("icon", i0.ɵɵpureFunction1(8, _c0$b, ctx_r1.IconSourceEnum.HEROICONS))("viewMode", ctx_r1.viewMode());
101879
101901
  i0.ɵɵadvance();
101880
- i0.ɵɵproperty("ngClass", ctx_r2.containerClasses());
101902
+ i0.ɵɵproperty("ngClass", ctx_r1.containerClasses());
101881
101903
  i0.ɵɵadvance(2);
101882
- i0.ɵɵproperty("ngClass", ctx_r2.lineClasses());
101904
+ i0.ɵɵproperty("ngClass", ctx_r1.lineClasses());
101883
101905
  i0.ɵɵadvance(2);
101884
- i0.ɵɵrepeater(ctx_r2.phases());
101906
+ i0.ɵɵrepeater(ctx_r1.phases());
101885
101907
  } }
101886
101908
  class UnifiedTimelineComponent {
101887
101909
  constructor() {
101888
101910
  this.timeline = input.required(...(ngDevMode ? [{ debugName: "timeline" }] : []));
101889
101911
  this.viewMode = input(ViewModeEnum.DARK, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
101890
- this.phaseClick = output();
101912
+ this.goals = input([], ...(ngDevMode ? [{ debugName: "goals" }] : []));
101913
+ this.goalClick = output();
101891
101914
  this.IconSourceEnum = IconSourceEnum;
101892
101915
  this.phases = computed(() => {
101893
101916
  const data = this.timeline();
@@ -101924,6 +101947,9 @@ class UnifiedTimelineComponent {
101924
101947
  light: ['bg-blue-50 border border-blue-200', 'bg-cyan-50 border border-cyan-200', 'bg-teal-50 border border-teal-200', 'bg-emerald-50 border border-emerald-200'],
101925
101948
  dark: ['bg-blue-900/20 border border-blue-700/50', 'bg-cyan-900/20 border border-cyan-700/50', 'bg-teal-900/20 border border-teal-700/50', 'bg-emerald-900/20 border border-emerald-700/50']
101926
101949
  };
101950
+ this.goalChipClasses = computed(() => this.isLightMode()
101951
+ ? 'bg-violet-50 border border-violet-200 text-violet-700 hover:bg-violet-100'
101952
+ : 'bg-violet-900/30 border border-violet-700/50 text-violet-300', ...(ngDevMode ? [{ debugName: "goalChipClasses" }] : []));
101927
101953
  }
101928
101954
  getPhaseNodeClasses(idx) {
101929
101955
  const classes = this.isLightMode() ? this.nodeClasses.light : this.nodeClasses.dark;
@@ -101958,24 +101984,25 @@ class UnifiedTimelineComponent {
101958
101984
  return 'bg-blue-500';
101959
101985
  }
101960
101986
  }
101961
- onPhaseClick(phase) {
101962
- this.phaseClick.emit(phase);
101987
+ getGoalsForPhase(phase) {
101988
+ const goalIds = phase.goalIds || [];
101989
+ if (goalIds.length === 0)
101990
+ return [];
101991
+ return this.goals().filter(g => g.id && goalIds.includes(g.id));
101992
+ }
101993
+ onGoalChipClick(goal) {
101994
+ this.goalClick.emit(goal);
101963
101995
  }
101964
101996
  static { this.ɵfac = function UnifiedTimelineComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || UnifiedTimelineComponent)(); }; }
101965
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UnifiedTimelineComponent, selectors: [["symphiq-unified-timeline"]], inputs: { timeline: [1, "timeline"], viewMode: [1, "viewMode"] }, outputs: { phaseClick: "phaseClick" }, decls: 1, vars: 1, consts: [["id", "section-timeline", 1, "space-y-6", "scroll-mt-24"], [3, "viewMode", "sectionIcon"], ["title", "Implementation Timeline", 3, "icon", "viewMode"], [1, "rounded-2xl", "p-8", "shadow-xl", 3, "ngClass"], [1, "relative"], [1, "absolute", "left-6", "top-0", "bottom-0", "w-0.5", 3, "ngClass"], [1, "space-y-8"], [1, "relative", "pl-16", "group"], [1, "absolute", "left-4", "w-5", "h-5", "rounded-full", "border-4", "flex", "items-center", "justify-center", "transition-all", "group-hover:scale-125", 3, "ngClass"], [1, "w-2", "h-2", "rounded-full", 3, "ngClass"], [1, "rounded-xl", "p-5", "transition-all", "hover:shadow-lg", "cursor-pointer", 3, "click", "ngClass"], [1, "flex", "items-start", "justify-between", "gap-4", "mb-3"], [1, "text-base", "font-semibold", 3, "ngClass"], [1, "px-2", "py-1", "text-xs", "font-semibold", "rounded-full", "flex-shrink-0", 3, "ngClass"], [1, "text-sm", "mb-4", 3, "ngClass"], [1, "mt-4"], [1, "absolute", "-left-[52px]", "top-5", "text-xs", "font-bold", 3, "ngClass"], [1, "text-xs", "font-semibold", "uppercase", "mb-2", 3, "ngClass"], [1, "space-y-2"], [1, "flex", "items-start", "gap-2", "text-sm", 3, "ngClass"], [1, "text-xs", "pl-6", 3, "ngClass"], [1, "w-2", "h-2", "rounded-full", "mt-1.5", "flex-shrink-0", 3, "ngClass"], [1, "line-clamp-1"]], template: function UnifiedTimelineComponent_Template(rf, ctx) { if (rf & 1) {
101997
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UnifiedTimelineComponent, selectors: [["symphiq-unified-timeline"]], inputs: { timeline: [1, "timeline"], viewMode: [1, "viewMode"], goals: [1, "goals"] }, outputs: { goalClick: "goalClick" }, decls: 1, vars: 1, consts: [["id", "section-timeline", 1, "space-y-6", "scroll-mt-24"], [3, "viewMode", "sectionIcon"], ["title", "Implementation Timeline", 3, "icon", "viewMode"], [1, "rounded-2xl", "p-8", "shadow-xl", 3, "ngClass"], [1, "relative"], [1, "absolute", "left-6", "top-0", "bottom-0", "w-0.5", 3, "ngClass"], [1, "space-y-8"], [1, "relative", "pl-16", "group"], [1, "absolute", "left-4", "w-5", "h-5", "rounded-full", "border-4", "flex", "items-center", "justify-center", "transition-all", "duration-300", "group-hover:scale-125", 3, "ngClass"], [1, "w-2", "h-2", "rounded-full", 3, "ngClass"], [1, "rounded-xl", "p-5", "transition-all", "duration-300", 3, "ngClass"], [1, "flex", "items-start", "justify-between", "gap-4", "mb-3"], [1, "text-base", "font-semibold", 3, "ngClass"], [1, "px-2", "py-1", "text-xs", "font-semibold", "rounded-full", "flex-shrink-0", 3, "ngClass"], [1, "text-sm", "mb-4", 3, "ngClass"], [1, "mt-4"], [1, "absolute", "-left-[52px]", "top-0", "text-xs", "font-bold", 3, "ngClass"], [1, "text-xs", "font-semibold", "uppercase", "mb-2", 3, "ngClass"], [1, "space-y-2"], [1, "flex", "items-start", "gap-2", "text-sm", 3, "ngClass"], [1, "w-2", "h-2", "rounded-full", "mt-1.5", "flex-shrink-0", 3, "ngClass"], [1, "line-clamp-1"], [1, "goal-chip", "flex", "items-center", "justify-between", "gap-2", "px-3", "py-2", "rounded-lg", "cursor-pointer", 3, "ngClass"], [1, "goal-chip", "flex", "items-center", "justify-between", "gap-2", "px-3", "py-2", "rounded-lg", "cursor-pointer", 3, "click", "ngClass"], [1, "text-sm", "font-medium", "line-clamp-1"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4", "flex-shrink-0"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 5l7 7-7 7"]], template: function UnifiedTimelineComponent_Template(rf, ctx) { if (rf & 1) {
101966
101998
  i0.ɵɵconditionalCreate(0, UnifiedTimelineComponent_Conditional_0_Template, 9, 10, "section", 0);
101967
101999
  } if (rf & 2) {
101968
102000
  i0.ɵɵconditional(ctx.phases().length > 0 ? 0 : -1);
101969
- } }, dependencies: [CommonModule, i1$1.NgClass, SectionDividerComponent, SectionHeaderComponent], encapsulation: 2, changeDetection: 0 }); }
102001
+ } }, dependencies: [CommonModule, i1$1.NgClass, SectionDividerComponent, SectionHeaderComponent], styles: ["@keyframes _ngcontent-%COMP%_pulse-glow-blue{0%,to{box-shadow:0 0 5px #3b82f680,0 0 10px #3b82f64d}50%{box-shadow:0 0 15px #3b82f6cc,0 0 25px #3b82f680,0 0 35px #3b82f64d}}@keyframes _ngcontent-%COMP%_pulse-glow-cyan{0%,to{box-shadow:0 0 5px #06b6d480,0 0 10px #06b6d44d}50%{box-shadow:0 0 15px #06b6d4cc,0 0 25px #06b6d480,0 0 35px #06b6d44d}}@keyframes _ngcontent-%COMP%_pulse-glow-teal{0%,to{box-shadow:0 0 5px #14b8a680,0 0 10px #14b8a64d}50%{box-shadow:0 0 15px #14b8a6cc,0 0 25px #14b8a680,0 0 35px #14b8a64d}}@keyframes _ngcontent-%COMP%_pulse-glow-emerald{0%,to{box-shadow:0 0 5px #10b98180,0 0 10px #10b9814d}50%{box-shadow:0 0 15px #10b981cc,0 0 25px #10b98180,0 0 35px #10b9814d}}.group[_ngcontent-%COMP%]:hover .animate-pulse-glow-blue[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_pulse-glow-blue 1.5s ease-in-out infinite}.group[_ngcontent-%COMP%]:hover .animate-pulse-glow-cyan[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_pulse-glow-cyan 1.5s ease-in-out infinite}.group[_ngcontent-%COMP%]:hover .animate-pulse-glow-teal[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_pulse-glow-teal 1.5s ease-in-out infinite}.group[_ngcontent-%COMP%]:hover .animate-pulse-glow-emerald[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_pulse-glow-emerald 1.5s ease-in-out infinite}.card-glow-blue[_ngcontent-%COMP%]:hover{box-shadow:0 0 20px #3b82f666,0 0 40px #3b82f633,0 10px 30px #0000004d;border-color:#3b82f6cc!important}.card-glow-cyan[_ngcontent-%COMP%]:hover{box-shadow:0 0 20px #06b6d466,0 0 40px #06b6d433,0 10px 30px #0000004d;border-color:#06b6d4cc!important}.card-glow-teal[_ngcontent-%COMP%]:hover{box-shadow:0 0 20px #14b8a666,0 0 40px #14b8a633,0 10px 30px #0000004d;border-color:#14b8a6cc!important}.card-glow-emerald[_ngcontent-%COMP%]:hover{box-shadow:0 0 20px #10b98166,0 0 40px #10b98133,0 10px 30px #0000004d;border-color:#10b981cc!important}.goal-chip[_ngcontent-%COMP%]{transition:all .3s ease}.goal-chip[_ngcontent-%COMP%]:hover{transform:scale(1.03) translate(4px);box-shadow:0 0 15px #8b5cf680,0 0 30px #8b5cf64d;border-color:#8b5cf6cc!important}"], changeDetection: 0 }); }
101970
102002
  }
101971
102003
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UnifiedTimelineComponent, [{
101972
102004
  type: Component,
101973
- args: [{
101974
- selector: 'symphiq-unified-timeline',
101975
- standalone: true,
101976
- imports: [CommonModule, SectionDividerComponent, SectionHeaderComponent],
101977
- changeDetection: ChangeDetectionStrategy.OnPush,
101978
- template: `
102005
+ args: [{ selector: 'symphiq-unified-timeline', standalone: true, imports: [CommonModule, SectionDividerComponent, SectionHeaderComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
101979
102006
  @if (phases().length > 0) {
101980
102007
  <section id="section-timeline" class="space-y-6 scroll-mt-24">
101981
102008
  <symphiq-section-divider
@@ -101997,14 +102024,21 @@ class UnifiedTimelineComponent {
101997
102024
  <div class="relative pl-16 group">
101998
102025
  <div
101999
102026
  [ngClass]="getPhaseNodeClasses(idx)"
102000
- class="absolute left-4 w-5 h-5 rounded-full border-4 flex items-center justify-center transition-all group-hover:scale-125">
102027
+ class="absolute left-4 w-5 h-5 rounded-full border-4 flex items-center justify-center transition-all duration-300 group-hover:scale-125"
102028
+ [class.animate-pulse-glow-blue]="idx % 4 === 0"
102029
+ [class.animate-pulse-glow-cyan]="idx % 4 === 1"
102030
+ [class.animate-pulse-glow-teal]="idx % 4 === 2"
102031
+ [class.animate-pulse-glow-emerald]="idx % 4 === 3">
102001
102032
  <div class="w-2 h-2 rounded-full" [ngClass]="getPhaseNodeInnerClasses(idx)"></div>
102002
102033
  </div>
102003
102034
 
102004
102035
  <div
102005
102036
  [ngClass]="getPhaseCardClasses(idx)"
102006
- class="rounded-xl p-5 transition-all hover:shadow-lg cursor-pointer"
102007
- (click)="onPhaseClick(phase)">
102037
+ class="rounded-xl p-5 transition-all duration-300"
102038
+ [class.card-glow-blue]="idx % 4 === 0"
102039
+ [class.card-glow-cyan]="idx % 4 === 1"
102040
+ [class.card-glow-teal]="idx % 4 === 2"
102041
+ [class.card-glow-emerald]="idx % 4 === 3">
102008
102042
  <div class="flex items-start justify-between gap-4 mb-3">
102009
102043
  <h4 [ngClass]="itemTitleClasses()" class="text-base font-semibold">
102010
102044
  {{ phase.title }}
@@ -102022,22 +102056,38 @@ class UnifiedTimelineComponent {
102022
102056
  Key Milestones ({{ phase.milestones.length }})
102023
102057
  </div>
102024
102058
  <div class="space-y-2">
102025
- @for (milestone of phase.milestones.slice(0, 3); track milestone.title) {
102059
+ @for (milestone of phase.milestones; track milestone.title) {
102026
102060
  <div [ngClass]="objectiveItemClasses()" class="flex items-start gap-2 text-sm">
102027
102061
  <span [ngClass]="getPriorityDotClasses(milestone.priority)" class="w-2 h-2 rounded-full mt-1.5 flex-shrink-0"></span>
102028
102062
  <span class="line-clamp-1">{{ milestone.title }}</span>
102029
102063
  </div>
102030
102064
  }
102031
- @if (phase.milestones.length > 3) {
102032
- <div [ngClass]="moreObjectivesClasses()" class="text-xs pl-6">
102033
- +{{ phase.milestones.length - 3 }} more milestones
102065
+ </div>
102066
+ </div>
102067
+ }
102068
+
102069
+ @if (getGoalsForPhase(phase).length > 0) {
102070
+ <div class="mt-4">
102071
+ <div [ngClass]="objectivesLabelClasses()" class="text-xs font-semibold uppercase mb-2">
102072
+ Related Goals ({{ getGoalsForPhase(phase).length }})
102073
+ </div>
102074
+ <div class="space-y-2">
102075
+ @for (goal of getGoalsForPhase(phase); track goal.id) {
102076
+ <div
102077
+ [ngClass]="goalChipClasses()"
102078
+ class="goal-chip flex items-center justify-between gap-2 px-3 py-2 rounded-lg cursor-pointer"
102079
+ (click)="onGoalChipClick(goal)">
102080
+ <span class="text-sm font-medium line-clamp-1">{{ goal.title }}</span>
102081
+ <svg class="w-4 h-4 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
102082
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path>
102083
+ </svg>
102034
102084
  </div>
102035
102085
  }
102036
102086
  </div>
102037
102087
  </div>
102038
102088
  }
102039
102089
 
102040
- <div [ngClass]="phaseIndicatorClasses()" class="absolute -left-[52px] top-5 text-xs font-bold">
102090
+ <div [ngClass]="phaseIndicatorClasses()" class="absolute -left-[52px] top-0 text-xs font-bold">
102041
102091
  Phase {{ idx + 1 }}
102042
102092
  </div>
102043
102093
  </div>
@@ -102048,10 +102098,9 @@ class UnifiedTimelineComponent {
102048
102098
  </div>
102049
102099
  </section>
102050
102100
  }
102051
- `
102052
- }]
102053
- }], null, { timeline: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeline", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], phaseClick: [{ type: i0.Output, args: ["phaseClick"] }] }); })();
102054
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UnifiedTimelineComponent, { className: "UnifiedTimelineComponent", filePath: "lib/components/profile-analysis-unified-dashboard/cards/unified-timeline.component.ts", lineNumber: 109 }); })();
102101
+ `, styles: ["@keyframes pulse-glow-blue{0%,to{box-shadow:0 0 5px #3b82f680,0 0 10px #3b82f64d}50%{box-shadow:0 0 15px #3b82f6cc,0 0 25px #3b82f680,0 0 35px #3b82f64d}}@keyframes pulse-glow-cyan{0%,to{box-shadow:0 0 5px #06b6d480,0 0 10px #06b6d44d}50%{box-shadow:0 0 15px #06b6d4cc,0 0 25px #06b6d480,0 0 35px #06b6d44d}}@keyframes pulse-glow-teal{0%,to{box-shadow:0 0 5px #14b8a680,0 0 10px #14b8a64d}50%{box-shadow:0 0 15px #14b8a6cc,0 0 25px #14b8a680,0 0 35px #14b8a64d}}@keyframes pulse-glow-emerald{0%,to{box-shadow:0 0 5px #10b98180,0 0 10px #10b9814d}50%{box-shadow:0 0 15px #10b981cc,0 0 25px #10b98180,0 0 35px #10b9814d}}.group:hover .animate-pulse-glow-blue{animation:pulse-glow-blue 1.5s ease-in-out infinite}.group:hover .animate-pulse-glow-cyan{animation:pulse-glow-cyan 1.5s ease-in-out infinite}.group:hover .animate-pulse-glow-teal{animation:pulse-glow-teal 1.5s ease-in-out infinite}.group:hover .animate-pulse-glow-emerald{animation:pulse-glow-emerald 1.5s ease-in-out infinite}.card-glow-blue:hover{box-shadow:0 0 20px #3b82f666,0 0 40px #3b82f633,0 10px 30px #0000004d;border-color:#3b82f6cc!important}.card-glow-cyan:hover{box-shadow:0 0 20px #06b6d466,0 0 40px #06b6d433,0 10px 30px #0000004d;border-color:#06b6d4cc!important}.card-glow-teal:hover{box-shadow:0 0 20px #14b8a666,0 0 40px #14b8a633,0 10px 30px #0000004d;border-color:#14b8a6cc!important}.card-glow-emerald:hover{box-shadow:0 0 20px #10b98166,0 0 40px #10b98133,0 10px 30px #0000004d;border-color:#10b981cc!important}.goal-chip{transition:all .3s ease}.goal-chip:hover{transform:scale(1.03) translate(4px);box-shadow:0 0 15px #8b5cf680,0 0 30px #8b5cf64d;border-color:#8b5cf6cc!important}\n"] }]
102102
+ }], null, { timeline: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeline", required: true }] }], 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"] }] }); })();
102103
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UnifiedTimelineComponent, { className: "UnifiedTimelineComponent", filePath: "lib/components/profile-analysis-unified-dashboard/cards/unified-timeline.component.ts", lineNumber: 181 }); })();
102055
102104
 
102056
102105
  const _c0$a = a0 => ({ name: "squares-2x2", source: a0 });
102057
102106
  const _forTrack0$a = ($index, $item) => $item.id;
@@ -102836,6 +102885,110 @@ class UnifiedNextStepsComponent {
102836
102885
  }], null, { steps: [{ type: i0.Input, args: [{ isSignal: true, alias: "steps", required: true }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
102837
102886
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UnifiedNextStepsComponent, { className: "UnifiedNextStepsComponent", filePath: "lib/components/profile-analysis-unified-dashboard/cards/unified-next-steps.component.ts", lineNumber: 79 }); })();
102838
102887
 
102888
+ function SynthesisConfidenceSectionComponent_Conditional_0_Conditional_10_Template(rf, ctx) { if (rf & 1) {
102889
+ i0.ɵɵelementStart(0, "p", 8);
102890
+ i0.ɵɵtext(1);
102891
+ i0.ɵɵelementEnd();
102892
+ } if (rf & 2) {
102893
+ const ctx_r0 = i0.ɵɵnextContext(2);
102894
+ i0.ɵɵproperty("ngClass", ctx_r0.textClasses());
102895
+ i0.ɵɵadvance();
102896
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.explanation(), " ");
102897
+ } }
102898
+ function SynthesisConfidenceSectionComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
102899
+ i0.ɵɵelementStart(0, "div", 0)(1, "h4", 1);
102900
+ i0.ɵɵnamespaceSVG();
102901
+ i0.ɵɵelementStart(2, "svg", 2);
102902
+ i0.ɵɵelement(3, "path", 3);
102903
+ i0.ɵɵelementEnd();
102904
+ i0.ɵɵtext(4, " Synthesis Confidence ");
102905
+ i0.ɵɵelementEnd();
102906
+ i0.ɵɵnamespaceHTML();
102907
+ i0.ɵɵelementStart(5, "div", 4)(6, "div", 5);
102908
+ i0.ɵɵelement(7, "div", 6);
102909
+ i0.ɵɵelementEnd();
102910
+ i0.ɵɵelementStart(8, "span", 7);
102911
+ i0.ɵɵtext(9);
102912
+ i0.ɵɵelementEnd()();
102913
+ i0.ɵɵconditionalCreate(10, SynthesisConfidenceSectionComponent_Conditional_0_Conditional_10_Template, 2, 2, "p", 8);
102914
+ i0.ɵɵelementEnd();
102915
+ } if (rf & 2) {
102916
+ const ctx_r0 = i0.ɵɵnextContext();
102917
+ i0.ɵɵproperty("ngClass", ctx_r0.sectionCardClasses());
102918
+ i0.ɵɵadvance();
102919
+ i0.ɵɵproperty("ngClass", ctx_r0.sectionTitleClasses());
102920
+ i0.ɵɵadvance(5);
102921
+ i0.ɵɵproperty("ngClass", ctx_r0.progressBarBgClasses());
102922
+ i0.ɵɵadvance();
102923
+ i0.ɵɵstyleProp("width", ctx_r0.scorePercentage(), "%");
102924
+ i0.ɵɵproperty("ngClass", ctx_r0.progressBarFillClasses());
102925
+ i0.ɵɵadvance();
102926
+ i0.ɵɵproperty("ngClass", ctx_r0.textClasses());
102927
+ i0.ɵɵadvance();
102928
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.scorePercentage().toFixed(0), "% ");
102929
+ i0.ɵɵadvance();
102930
+ i0.ɵɵconditional(ctx_r0.explanation() ? 10 : -1);
102931
+ } }
102932
+ class SynthesisConfidenceSectionComponent {
102933
+ constructor() {
102934
+ this.score = input(...(ngDevMode ? [undefined, { debugName: "score" }] : []));
102935
+ this.explanation = input(...(ngDevMode ? [undefined, { debugName: "explanation" }] : []));
102936
+ this.viewMode = input.required(...(ngDevMode ? [{ debugName: "viewMode" }] : []));
102937
+ this.isLightMode = computed(() => this.viewMode() === ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "isLightMode" }] : []));
102938
+ this.scorePercentage = computed(() => (this.score() || 0) * 100, ...(ngDevMode ? [{ debugName: "scorePercentage" }] : []));
102939
+ this.sectionCardClasses = computed(() => this.isLightMode() ? 'bg-slate-50 border border-slate-200' : 'bg-slate-800/50 border border-slate-700', ...(ngDevMode ? [{ debugName: "sectionCardClasses" }] : []));
102940
+ this.sectionTitleClasses = computed(() => this.isLightMode() ? 'text-slate-900' : 'text-white', ...(ngDevMode ? [{ debugName: "sectionTitleClasses" }] : []));
102941
+ this.textClasses = computed(() => this.isLightMode() ? 'text-slate-700' : 'text-slate-300', ...(ngDevMode ? [{ debugName: "textClasses" }] : []));
102942
+ this.progressBarBgClasses = computed(() => this.isLightMode() ? 'bg-slate-200' : 'bg-slate-700', ...(ngDevMode ? [{ debugName: "progressBarBgClasses" }] : []));
102943
+ this.progressBarFillClasses = computed(() => this.isLightMode() ? 'bg-gradient-to-r from-blue-500 to-cyan-500' : 'bg-gradient-to-r from-blue-400 to-cyan-400', ...(ngDevMode ? [{ debugName: "progressBarFillClasses" }] : []));
102944
+ }
102945
+ static { this.ɵfac = function SynthesisConfidenceSectionComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SynthesisConfidenceSectionComponent)(); }; }
102946
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SynthesisConfidenceSectionComponent, selectors: [["symphiq-synthesis-confidence-section"]], inputs: { score: [1, "score"], explanation: [1, "explanation"], viewMode: [1, "viewMode"] }, decls: 1, vars: 1, consts: [[1, "p-5", "rounded-xl", 3, "ngClass"], [1, "text-sm", "font-semibold", "mb-3", "flex", "items-center", "gap-2", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"], [1, "flex", "items-center", "gap-3"], [1, "flex-1", "h-2", "rounded-full", "overflow-hidden", 3, "ngClass"], [1, "h-full", "rounded-full", "transition-all", "duration-500", 3, "ngClass"], [1, "text-sm", "font-semibold", 3, "ngClass"], [1, "text-sm", "mt-3", 3, "ngClass"]], template: function SynthesisConfidenceSectionComponent_Template(rf, ctx) { if (rf & 1) {
102947
+ i0.ɵɵconditionalCreate(0, SynthesisConfidenceSectionComponent_Conditional_0_Template, 11, 9, "div", 0);
102948
+ } if (rf & 2) {
102949
+ i0.ɵɵconditional(ctx.score() ? 0 : -1);
102950
+ } }, dependencies: [CommonModule, i1$1.NgClass], encapsulation: 2, changeDetection: 0 }); }
102951
+ }
102952
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SynthesisConfidenceSectionComponent, [{
102953
+ type: Component,
102954
+ args: [{
102955
+ selector: 'symphiq-synthesis-confidence-section',
102956
+ standalone: true,
102957
+ changeDetection: ChangeDetectionStrategy.OnPush,
102958
+ imports: [CommonModule],
102959
+ template: `
102960
+ @if (score()) {
102961
+ <div [ngClass]="sectionCardClasses()" class="p-5 rounded-xl">
102962
+ <h4 [ngClass]="sectionTitleClasses()" class="text-sm font-semibold mb-3 flex items-center gap-2">
102963
+ <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
102964
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"/>
102965
+ </svg>
102966
+ Synthesis Confidence
102967
+ </h4>
102968
+ <div class="flex items-center gap-3">
102969
+ <div class="flex-1 h-2 rounded-full overflow-hidden" [ngClass]="progressBarBgClasses()">
102970
+ <div
102971
+ class="h-full rounded-full transition-all duration-500"
102972
+ [ngClass]="progressBarFillClasses()"
102973
+ [style.width.%]="scorePercentage()">
102974
+ </div>
102975
+ </div>
102976
+ <span [ngClass]="textClasses()" class="text-sm font-semibold">
102977
+ {{ scorePercentage().toFixed(0) }}%
102978
+ </span>
102979
+ </div>
102980
+ @if (explanation()) {
102981
+ <p [ngClass]="textClasses()" class="text-sm mt-3">
102982
+ {{ explanation() }}
102983
+ </p>
102984
+ }
102985
+ </div>
102986
+ }
102987
+ `
102988
+ }]
102989
+ }], null, { score: [{ type: i0.Input, args: [{ isSignal: true, alias: "score", required: false }] }], explanation: [{ type: i0.Input, args: [{ isSignal: true, alias: "explanation", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: true }] }] }); })();
102990
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SynthesisConfidenceSectionComponent, { className: "SynthesisConfidenceSectionComponent", filePath: "lib/components/shared/synthesis-confidence-section.component.ts", lineNumber: 40 }); })();
102991
+
102839
102992
  const _forTrack0$8 = ($index, $item) => $item.analysisId;
102840
102993
  function SourceAnalysisTraceabilityComponent_Conditional_0_For_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
102841
102994
  i0.ɵɵelementStart(0, "div", 8);
@@ -104127,7 +104280,7 @@ function SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Condition
104127
104280
  i0.ɵɵelementEnd();
104128
104281
  i0.ɵɵconditionalCreate(14, SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Conditional_2_Conditional_14_Template, 6, 8, "section", 31);
104129
104282
  i0.ɵɵelementStart(15, "symphiq-unified-timeline", 32);
104130
- i0.ɵɵlistener("phaseClick", function SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Conditional_2_Template_symphiq_unified_timeline_phaseClick_15_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onTimelinePhaseClick($event)); });
104283
+ i0.ɵɵlistener("goalClick", function SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Conditional_2_Template_symphiq_unified_timeline_goalClick_15_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onGoalClick($event)); });
104131
104284
  i0.ɵɵelementEnd();
104132
104285
  i0.ɵɵelementStart(16, "symphiq-unified-priority-matrix", 33);
104133
104286
  i0.ɵɵlistener("goalClick", function SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Conditional_2_Template_symphiq_unified_priority_matrix_goalClick_16_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onGoalClick($event)); });
@@ -104154,7 +104307,7 @@ function SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Condition
104154
104307
  i0.ɵɵadvance();
104155
104308
  i0.ɵɵconditional(ctx_r1.unifiedGoals().length > 0 ? 14 : -1);
104156
104309
  i0.ɵɵadvance();
104157
- i0.ɵɵproperty("timeline", ctx_r1.unifiedTimeline())("viewMode", ctx_r1.viewMode());
104310
+ i0.ɵɵproperty("timeline", ctx_r1.unifiedTimeline())("viewMode", ctx_r1.viewMode())("goals", ctx_r1.unifiedGoals());
104158
104311
  i0.ɵɵadvance();
104159
104312
  i0.ɵɵproperty("matrix", ctx_r1.priorityMatrix())("viewMode", ctx_r1.viewMode());
104160
104313
  i0.ɵɵadvance();
@@ -104200,7 +104353,7 @@ function SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Condition
104200
104353
  function SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
104201
104354
  i0.ɵɵelementStart(0, "main", 18);
104202
104355
  i0.ɵɵconditionalCreate(1, SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Conditional_1_Template, 1, 2, "symphiq-loading-card", 19);
104203
- i0.ɵɵconditionalCreate(2, SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Conditional_2_Template, 18, 21);
104356
+ i0.ɵɵconditionalCreate(2, SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Conditional_2_Template, 18, 22);
104204
104357
  i0.ɵɵconditionalCreate(3, SymphiqProfileAnalysisUnifiedDashboardComponent_Conditional_6_Conditional_3_Template, 1, 1);
104205
104358
  i0.ɵɵelementEnd();
104206
104359
  } if (rf & 2) {
@@ -104465,15 +104618,33 @@ class SymphiqProfileAnalysisUnifiedDashboardComponent {
104465
104618
  this.priorityMatrix = computed(() => {
104466
104619
  const matrixData = this.analysisData()?.unifiedPriorityMatrix;
104467
104620
  const goals = this.unifiedGoals();
104621
+ console.log('[PriorityMatrix] Raw matrixData:', matrixData);
104622
+ console.log('[PriorityMatrix] Goals available:', goals.map(g => ({ id: g.id, title: g.title })));
104468
104623
  if (matrixData) {
104469
- const findGoal = (id) => goals.find(g => g.id === id);
104470
- return {
104471
- quickWins: (matrixData.quickWins || []).map(item => findGoal(item.relatedGoalId)).filter((g) => !!g),
104472
- majorProjects: (matrixData.majorProjects || []).map(item => findGoal(item.relatedGoalId)).filter((g) => !!g),
104473
- fillIns: (matrixData.fillIns || []).map(item => findGoal(item.relatedGoalId)).filter((g) => !!g),
104474
- thankless: (matrixData.thankless || []).map(item => findGoal(item.relatedGoalId)).filter((g) => !!g)
104624
+ console.log('[PriorityMatrix] quickWins items:', matrixData.quickWins);
104625
+ console.log('[PriorityMatrix] majorProjects items:', matrixData.majorProjects);
104626
+ console.log('[PriorityMatrix] fillIns items:', matrixData.fillIns);
104627
+ console.log('[PriorityMatrix] thankless items:', matrixData.thankless);
104628
+ const findGoal = (id, quadrant) => {
104629
+ const found = goals.find(g => g.id === id);
104630
+ console.log(`[PriorityMatrix] ${quadrant} - Looking for goal id="${id}", found:`, found ? found.title : 'NOT FOUND');
104631
+ return found;
104632
+ };
104633
+ const result = {
104634
+ quickWins: (matrixData.quickWins || []).map(item => findGoal(item.relatedGoalId, 'quickWins')).filter((g) => !!g),
104635
+ majorProjects: (matrixData.majorProjects || []).map(item => findGoal(item.relatedGoalId, 'majorProjects')).filter((g) => !!g),
104636
+ fillIns: (matrixData.fillIns || []).map(item => findGoal(item.relatedGoalId, 'fillIns')).filter((g) => !!g),
104637
+ thankless: (matrixData.thankless || []).map(item => findGoal(item.relatedGoalId, 'thankless')).filter((g) => !!g)
104475
104638
  };
104639
+ console.log('[PriorityMatrix] Final result:', {
104640
+ quickWins: result.quickWins.length,
104641
+ majorProjects: result.majorProjects.length,
104642
+ fillIns: result.fillIns.length,
104643
+ thankless: result.thankless.length
104644
+ });
104645
+ return result;
104476
104646
  }
104647
+ console.log('[PriorityMatrix] No matrixData, using fallback based on priority');
104477
104648
  return {
104478
104649
  quickWins: goals.filter(g => g.priority === 'HIGH'),
104479
104650
  majorProjects: goals.filter(g => g.priority === 'MEDIUM'),
@@ -104805,15 +104976,6 @@ class SymphiqProfileAnalysisUnifiedDashboardComponent {
104805
104976
  }
104806
104977
  }
104807
104978
  }
104808
- onTimelinePhaseClick(phase) {
104809
- const goalIds = phase.goalIds || [];
104810
- if (goalIds.length > 0) {
104811
- const goal = this.unifiedGoals().find(g => g.id && goalIds.includes(g.id));
104812
- if (goal) {
104813
- this.onGoalClick(goal);
104814
- }
104815
- }
104816
- }
104817
104979
  getTimelineNodeClasses(priority) {
104818
104980
  const base = this.isLightMode() ? 'bg-white' : 'bg-slate-800';
104819
104981
  switch (priority?.toUpperCase()) {
@@ -104996,7 +105158,7 @@ class SymphiqProfileAnalysisUnifiedDashboardComponent {
104996
105158
  static { this.ɵfac = function SymphiqProfileAnalysisUnifiedDashboardComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SymphiqProfileAnalysisUnifiedDashboardComponent)(); }; }
104997
105159
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SymphiqProfileAnalysisUnifiedDashboardComponent, selectors: [["symphiq-profile-analysis-unified-dashboard"]], hostBindings: function SymphiqProfileAnalysisUnifiedDashboardComponent_HostBindings(rf, ctx) { if (rf & 1) {
104998
105160
  i0.ɵɵlistener("scroll", function SymphiqProfileAnalysisUnifiedDashboardComponent_scroll_HostBindingHandler() { return ctx.onScroll(); }, i0.ɵɵresolveWindow);
104999
- } }, inputs: { viewMode: [1, "viewMode"], embedded: [1, "embedded"], isLoading: [1, "isLoading"], profile: [1, "profile"], funnelAnalysis: [1, "funnelAnalysis"], unifiedProfileAnalysis: [1, "unifiedProfileAnalysis"], sourceProfileAnalyses: [1, "sourceProfileAnalyses"], isLoadingSourceAnalysis: [1, "isLoadingSourceAnalysis"], scrollEvent: [1, "scrollEvent"], scrollElement: [1, "scrollElement"], isOnboarded: [1, "isOnboarded"], forDemo: [1, "forDemo"], maxAccessibleStepId: [1, "maxAccessibleStepId"], itemStatus: [1, "itemStatus"], isMarkingAsReviewed: [1, "isMarkingAsReviewed"], requestedByUser: [1, "requestedByUser"] }, outputs: { markAsReviewedClick: "markAsReviewedClick", generateGoalsClick: "generateGoalsClick", stepClick: "stepClick", nextStepClick: "nextStepClick", sourceAnalysisRequest: "sourceAnalysisRequest" }, features: [i0.ɵɵNgOnChangesFeature], decls: 18, vars: 37, consts: [[1, "relative"], [1, "animated-bubbles", 2, "position", "fixed", "top", "0", "left", "0", "right", "0", "bottom", "0", "width", "100vw", "height", "100vh", "z-index", "1", "pointer-events", "none"], [3, "viewMode", "progress", "embedded"], [1, "relative", "z-[51]"], [3, "searchClick", "viewModeClick", "title", "subtitle", "currentSection", "viewMode", "viewModeLabel", "isLoading", "requestedByUser", "showControls", "embedded", "scrollEvent"], [3, "viewMode", "currentStepId", "showNextStepAction", "forDemo", "maxAccessibleStepId"], [1, "relative", "z-10", "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-12", "space-y-12", 3, "pb-32"], [3, "sections", "viewMode", "embedded", "scrollElement"], [3, "isLightMode", "isOpen"], [3, "viewMode", "currentMode", "isOpen"], [3, "viewMode", "selfContentStatus", "isLoading"], [3, "viewMode", "itemStatus", "currentStatus", "confettiIntensity", "title"], [3, "expandedChange", "scrollToTop", "toggleView", "isLightMode", "isCompactMode", "isExpanded"], [3, "navigate", "isLightMode", "sections", "activeSection"], [3, "viewMode"], [3, "isLightMode"], [3, "isLightMode", "allInsights", "allMetrics", "allCharts"], [3, "nextStepClick", "stepClick", "viewMode", "currentStepId", "showNextStepAction", "forDemo", "maxAccessibleStepId"], [1, "relative", "z-10", "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-12", "space-y-12"], ["title", "Loading Your Unified Analysis", "subtitle", "Please wait while we prepare your synthesized insights...", "size", "large", 3, "viewMode", "backdropBlur"], [1, "mb-12"], [1, "rounded-2xl", "p-8", "shadow-xl", "animate-fade-in-up", 3, "ngClass"], [1, "flex", "items-start", "gap-6"], [1, "p-4", "rounded-xl", "flex-shrink-0", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-8", "h-8"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"], [1, "flex-1"], [1, "text-2xl", "font-bold", "mb-2", 3, "ngClass"], [1, "text-lg", "mb-4", 3, "ngClass"], [1, "text-sm", 3, "ngClass"], [3, "keyStrengthsClick", "criticalGapsClick", "quickWinsClick", "summary", "viewMode", "shopCounts", "focusAreaCounts", "metricCounts", "quickWinsCount"], ["id", "section-unified-goals", 1, "space-y-6", "scroll-mt-24"], [3, "phaseClick", "timeline", "viewMode"], [3, "goalClick", "matrix", "viewMode"], [3, "steps", "viewMode"], [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"], [3, "goalClick", "sourceBadgeClick", "relatedMetricsClick", "learnMoreClick", "goal", "viewMode"], ["id", "section-executive-summary", 1, "space-y-6", "scroll-mt-24"], [1, "rounded-2xl", "p-8", "shadow-xl", 3, "ngClass"], [1, "space-y-6"], [1, "flex", "items-start", "justify-between", "gap-4"], [1, "text-2xl", "font-bold", "mb-3", 3, "ngClass"], [1, "text-lg", "leading-relaxed", 3, "ngClass"], [3, "grade", "gradeRationale", "viewMode"], [3, "close", "isLightMode", "isOpen"], [3, "close", "modeSelected", "viewMode", "currentMode", "isOpen"], [3, "markAsReviewed", "viewMode", "selfContentStatus", "isLoading"]], template: function SymphiqProfileAnalysisUnifiedDashboardComponent_Template(rf, ctx) { if (rf & 1) {
105161
+ } }, inputs: { viewMode: [1, "viewMode"], embedded: [1, "embedded"], isLoading: [1, "isLoading"], profile: [1, "profile"], funnelAnalysis: [1, "funnelAnalysis"], unifiedProfileAnalysis: [1, "unifiedProfileAnalysis"], sourceProfileAnalyses: [1, "sourceProfileAnalyses"], isLoadingSourceAnalysis: [1, "isLoadingSourceAnalysis"], scrollEvent: [1, "scrollEvent"], scrollElement: [1, "scrollElement"], isOnboarded: [1, "isOnboarded"], forDemo: [1, "forDemo"], maxAccessibleStepId: [1, "maxAccessibleStepId"], itemStatus: [1, "itemStatus"], isMarkingAsReviewed: [1, "isMarkingAsReviewed"], requestedByUser: [1, "requestedByUser"] }, outputs: { markAsReviewedClick: "markAsReviewedClick", generateGoalsClick: "generateGoalsClick", stepClick: "stepClick", nextStepClick: "nextStepClick", sourceAnalysisRequest: "sourceAnalysisRequest" }, features: [i0.ɵɵNgOnChangesFeature], decls: 18, vars: 37, consts: [[1, "relative"], [1, "animated-bubbles", 2, "position", "fixed", "top", "0", "left", "0", "right", "0", "bottom", "0", "width", "100vw", "height", "100vh", "z-index", "1", "pointer-events", "none"], [3, "viewMode", "progress", "embedded"], [1, "relative", "z-[51]"], [3, "searchClick", "viewModeClick", "title", "subtitle", "currentSection", "viewMode", "viewModeLabel", "isLoading", "requestedByUser", "showControls", "embedded", "scrollEvent"], [3, "viewMode", "currentStepId", "showNextStepAction", "forDemo", "maxAccessibleStepId"], [1, "relative", "z-10", "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-12", "space-y-12", 3, "pb-32"], [3, "sections", "viewMode", "embedded", "scrollElement"], [3, "isLightMode", "isOpen"], [3, "viewMode", "currentMode", "isOpen"], [3, "viewMode", "selfContentStatus", "isLoading"], [3, "viewMode", "itemStatus", "currentStatus", "confettiIntensity", "title"], [3, "expandedChange", "scrollToTop", "toggleView", "isLightMode", "isCompactMode", "isExpanded"], [3, "navigate", "isLightMode", "sections", "activeSection"], [3, "viewMode"], [3, "isLightMode"], [3, "isLightMode", "allInsights", "allMetrics", "allCharts"], [3, "nextStepClick", "stepClick", "viewMode", "currentStepId", "showNextStepAction", "forDemo", "maxAccessibleStepId"], [1, "relative", "z-10", "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-12", "space-y-12"], ["title", "Loading Your Unified Analysis", "subtitle", "Please wait while we prepare your synthesized insights...", "size", "large", 3, "viewMode", "backdropBlur"], [1, "mb-12"], [1, "rounded-2xl", "p-8", "shadow-xl", "animate-fade-in-up", 3, "ngClass"], [1, "flex", "items-start", "gap-6"], [1, "p-4", "rounded-xl", "flex-shrink-0", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-8", "h-8"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"], [1, "flex-1"], [1, "text-2xl", "font-bold", "mb-2", 3, "ngClass"], [1, "text-lg", "mb-4", 3, "ngClass"], [1, "text-sm", 3, "ngClass"], [3, "keyStrengthsClick", "criticalGapsClick", "quickWinsClick", "summary", "viewMode", "shopCounts", "focusAreaCounts", "metricCounts", "quickWinsCount"], ["id", "section-unified-goals", 1, "space-y-6", "scroll-mt-24"], [3, "goalClick", "timeline", "viewMode", "goals"], [3, "goalClick", "matrix", "viewMode"], [3, "steps", "viewMode"], [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"], [3, "goalClick", "sourceBadgeClick", "relatedMetricsClick", "learnMoreClick", "goal", "viewMode"], ["id", "section-executive-summary", 1, "space-y-6", "scroll-mt-24"], [1, "rounded-2xl", "p-8", "shadow-xl", 3, "ngClass"], [1, "space-y-6"], [1, "flex", "items-start", "justify-between", "gap-4"], [1, "text-2xl", "font-bold", "mb-3", 3, "ngClass"], [1, "text-lg", "leading-relaxed", 3, "ngClass"], [3, "grade", "gradeRationale", "viewMode"], [3, "close", "isLightMode", "isOpen"], [3, "close", "modeSelected", "viewMode", "currentMode", "isOpen"], [3, "markAsReviewed", "viewMode", "selfContentStatus", "isLoading"]], template: function SymphiqProfileAnalysisUnifiedDashboardComponent_Template(rf, ctx) { if (rf & 1) {
105000
105162
  i0.ɵɵelementStart(0, "div", 0);
105001
105163
  i0.ɵɵelement(1, "div", 1)(2, "symphiq-scroll-progress-bar", 2);
105002
105164
  i0.ɵɵelementStart(3, "div", 3)(4, "symphiq-dashboard-header", 4);
@@ -105229,7 +105391,8 @@ class SymphiqProfileAnalysisUnifiedDashboardComponent {
105229
105391
  <symphiq-unified-timeline
105230
105392
  [timeline]="unifiedTimeline()"
105231
105393
  [viewMode]="viewMode()"
105232
- (phaseClick)="onTimelinePhaseClick($event)"
105394
+ [goals]="unifiedGoals()"
105395
+ (goalClick)="onGoalClick($event)"
105233
105396
  />
105234
105397
 
105235
105398
  <symphiq-unified-priority-matrix
@@ -105362,7 +105525,7 @@ class SymphiqProfileAnalysisUnifiedDashboardComponent {
105362
105525
  type: HostListener,
105363
105526
  args: ['window:scroll']
105364
105527
  }] }); })();
105365
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqProfileAnalysisUnifiedDashboardComponent, { className: "SymphiqProfileAnalysisUnifiedDashboardComponent", filePath: "lib/components/profile-analysis-unified-dashboard/symphiq-profile-analysis-unified-dashboard.component.ts", lineNumber: 372 }); })();
105528
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqProfileAnalysisUnifiedDashboardComponent, { className: "SymphiqProfileAnalysisUnifiedDashboardComponent", filePath: "lib/components/profile-analysis-unified-dashboard/symphiq-profile-analysis-unified-dashboard.component.ts", lineNumber: 373 }); })();
105366
105529
 
105367
105530
  function SymphiqProfileMetricsAnalysesDashboardComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
105368
105531
  const _r1 = i0.ɵɵgetCurrentView();