@eric-emg/symphiq-components 1.2.125 → 1.2.128

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.
@@ -55526,106 +55526,106 @@ class FocusAreaWelcomeBannerComponent {
55526
55526
  standalone: true,
55527
55527
  imports: [CommonModule, ConfidenceLevelCardComponent, SymphiqIconComponent],
55528
55528
  changeDetection: ChangeDetectionStrategy.OnPush,
55529
- template: `
55530
- <div [ngClass]="containerClasses()" class="rounded-2xl border shadow-lg overflow-hidden">
55531
- <div [ngClass]="contentClasses()" class="px-8 py-8">
55532
- <div class="flex items-start gap-6">
55533
- <div [ngClass]="iconContainerClasses()" class="flex-shrink-0 w-16 h-16 rounded-2xl flex items-center justify-center">
55534
- <symphiq-icon [icon]="focusAreaIcon()" size="w-8 h-8" />
55535
- </div>
55536
-
55537
- <div class="flex-1">
55538
- <h2 [ngClass]="titleClasses()" class="text-2xl sm:text-3xl font-bold mb-3">
55539
- @if (isOnboarded) {
55540
- Your {{ focusAreaDisplayName() }} Analysis
55541
- } @else {
55542
- Welcome to Your {{ focusAreaDisplayName() }} Analysis
55543
- }
55544
- </h2>
55545
-
55546
- <!-- Description and Confidence Card in Responsive Layout -->
55547
- <div class="grid grid-cols-1 lg:grid-cols-3 gap-6 mb-6">
55548
- <!-- Description (takes 2 columns on large screens) -->
55549
- <div class="lg:col-span-2 space-y-3">
55550
- <p [ngClass]="textClasses()" class="text-base leading-relaxed">
55551
- {{ focusAreaDisplayName() }} Analysis provides a deep dive into this specific operational domain. By analyzing your approach, tools, and performance in {{ focusAreaDisplayName() | lowercase }}, Symphiq identifies tactical opportunities and creates an actionable roadmap for improvement.
55552
- </p>
55553
- <p [ngClass]="textClasses()" class="text-base leading-relaxed">
55554
- <strong class="font-semibold">Why this matters:</strong> Rather than generic best practices, this analysis delivers domain-specific insights tailored to your current capabilities, resources, and market position—ensuring recommendations are both impactful and achievable.
55555
- </p>
55556
- </div>
55557
-
55558
- <!-- Confidence Card (takes 1 column on large screens, full width on mobile) -->
55559
- <div class="lg:col-span-1">
55560
- <symphiq-confidence-level-card
55561
- [viewMode]="viewMode"
55562
- currentStepId="focus-area-analysis"
55563
- [focusAreaDetails]="focusAreaDetails"
55564
- [currentFocusAreaDomain]="focusAreaDomain"
55565
- />
55566
- </div>
55567
- </div>
55568
-
55569
- <div [ngClass]="highlightBoxClasses()" class="mt-6 p-5 rounded-xl border-l-4 flex items-start gap-4">
55570
- <svg class="w-6 h-6 flex-shrink-0 mt-0.5" [ngClass]="highlightIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
55571
- <path 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"></path>
55572
- </svg>
55573
- <div class="flex-1">
55574
- <h3 [ngClass]="highlightTitleClasses()" class="font-bold text-lg mb-2">
55575
- What You'll See Below
55576
- </h3>
55577
- <ul [ngClass]="highlightListClasses()" class="space-y-2 text-sm">
55578
- <li class="flex items-start gap-2">
55579
- <svg class="w-5 h-5 flex-shrink-0 mt-0.5" fill="currentColor" viewBox="0 0 20 20">
55580
- <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"></path>
55581
- </svg>
55582
- <span><strong class="font-semibold">Focus Area Health</strong> — Current maturity and performance assessment for {{ focusAreaDisplayName() | lowercase }}</span>
55583
- </li>
55584
- <li class="flex items-start gap-2">
55585
- <svg class="w-5 h-5 flex-shrink-0 mt-0.5" fill="currentColor" viewBox="0 0 20 20">
55586
- <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"></path>
55587
- </svg>
55588
- <span><strong class="font-semibold">Top Priorities</strong> — High-impact improvements specific to this operational domain</span>
55589
- </li>
55590
- <li class="flex items-start gap-2">
55591
- <svg class="w-5 h-5 flex-shrink-0 mt-0.5" fill="currentColor" viewBox="0 0 20 20">
55592
- <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"></path>
55593
- </svg>
55594
- <span><strong class="font-semibold">Tactical Roadmap</strong> — Step-by-step goals, strategies, and recommendations for domain optimization</span>
55595
- </li>
55596
- </ul>
55597
- </div>
55598
- </div>
55599
-
55600
- <div [ngClass]="nextStepsBoxClasses()" class="mt-6 p-5 rounded-xl border flex items-start gap-4">
55601
- <svg class="w-6 h-6 flex-shrink-0 mt-0.5" [ngClass]="nextStepsIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
55602
- @if (isOnboarded) {
55603
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"></path>
55604
- } @else {
55605
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6"></path>
55606
- }
55607
- </svg>
55608
- <div class="flex-1">
55609
- <h3 [ngClass]="nextStepsTitleClasses()" class="font-bold mb-1">
55610
- @if (isOnboarded) {
55611
- Keep Your Focus Area Updated
55612
- } @else {
55613
- Continue Your Journey
55614
- }
55615
- </h3>
55616
- <p [ngClass]="nextStepsTextClasses()" class="text-sm leading-relaxed">
55617
- @if (isOnboarded) {
55618
- As you implement improvements, adopt new tools, or refine your {{ focusAreaDisplayName() | lowercase }} approach, update this analysis to keep recommendations aligned with your evolving capabilities and market opportunities.
55619
- } @else {
55620
- This analysis provides domain-specific insights. To unlock the full power of Symphiq, explore additional focus areas and connect them to your shop operations and funnel metrics.
55621
- }
55622
- </p>
55623
- </div>
55624
- </div>
55625
- </div>
55626
- </div>
55627
- </div>
55628
- </div>
55529
+ template: `
55530
+ <div [ngClass]="containerClasses()" class="rounded-2xl border shadow-lg overflow-hidden">
55531
+ <div [ngClass]="contentClasses()" class="px-8 py-8">
55532
+ <div class="flex items-start gap-6">
55533
+ <div [ngClass]="iconContainerClasses()" class="flex-shrink-0 w-16 h-16 rounded-2xl flex items-center justify-center">
55534
+ <symphiq-icon [icon]="focusAreaIcon()" size="w-8 h-8" />
55535
+ </div>
55536
+
55537
+ <div class="flex-1">
55538
+ <h2 [ngClass]="titleClasses()" class="text-2xl sm:text-3xl font-bold mb-3">
55539
+ @if (isOnboarded) {
55540
+ Your {{ focusAreaDisplayName() }} Analysis
55541
+ } @else {
55542
+ Welcome to Your {{ focusAreaDisplayName() }} Analysis
55543
+ }
55544
+ </h2>
55545
+
55546
+ <!-- Description and Confidence Card in Responsive Layout -->
55547
+ <div class="grid grid-cols-1 lg:grid-cols-3 gap-6 mb-6">
55548
+ <!-- Description (takes 2 columns on large screens) -->
55549
+ <div class="lg:col-span-2 space-y-3">
55550
+ <p [ngClass]="textClasses()" class="text-base leading-relaxed">
55551
+ {{ focusAreaDisplayName() }} Analysis provides a deep dive into this specific operational domain. By analyzing your approach, tools, and performance in {{ focusAreaDisplayName() | lowercase }}, Symphiq identifies tactical opportunities and creates an actionable roadmap for improvement.
55552
+ </p>
55553
+ <p [ngClass]="textClasses()" class="text-base leading-relaxed">
55554
+ <strong class="font-semibold">Why this matters:</strong> Rather than generic best practices, this analysis delivers domain-specific insights tailored to your current capabilities, resources, and market position—ensuring recommendations are both impactful and achievable.
55555
+ </p>
55556
+ </div>
55557
+
55558
+ <!-- Confidence Card (takes 1 column on large screens, full width on mobile) -->
55559
+ <div class="lg:col-span-1">
55560
+ <symphiq-confidence-level-card
55561
+ [viewMode]="viewMode"
55562
+ currentStepId="focus-area-analysis"
55563
+ [focusAreaDetails]="focusAreaDetails"
55564
+ [currentFocusAreaDomain]="focusAreaDomain"
55565
+ />
55566
+ </div>
55567
+ </div>
55568
+
55569
+ <div [ngClass]="highlightBoxClasses()" class="mt-6 p-5 rounded-xl border-l-4 flex items-start gap-4">
55570
+ <svg class="w-6 h-6 flex-shrink-0 mt-0.5" [ngClass]="highlightIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
55571
+ <path 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"></path>
55572
+ </svg>
55573
+ <div class="flex-1">
55574
+ <h3 [ngClass]="highlightTitleClasses()" class="font-bold text-lg mb-2">
55575
+ What You'll See Below
55576
+ </h3>
55577
+ <ul [ngClass]="highlightListClasses()" class="space-y-2 text-sm">
55578
+ <li class="flex items-start gap-2">
55579
+ <svg class="w-5 h-5 flex-shrink-0 mt-0.5" fill="currentColor" viewBox="0 0 20 20">
55580
+ <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"></path>
55581
+ </svg>
55582
+ <span><strong class="font-semibold">Focus Area Health</strong> — Current maturity and performance assessment for {{ focusAreaDisplayName() | lowercase }}</span>
55583
+ </li>
55584
+ <li class="flex items-start gap-2">
55585
+ <svg class="w-5 h-5 flex-shrink-0 mt-0.5" fill="currentColor" viewBox="0 0 20 20">
55586
+ <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"></path>
55587
+ </svg>
55588
+ <span><strong class="font-semibold">Top Priorities</strong> — High-impact improvements specific to this operational domain</span>
55589
+ </li>
55590
+ <li class="flex items-start gap-2">
55591
+ <svg class="w-5 h-5 flex-shrink-0 mt-0.5" fill="currentColor" viewBox="0 0 20 20">
55592
+ <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"></path>
55593
+ </svg>
55594
+ <span><strong class="font-semibold">Tactical Roadmap</strong> — Step-by-step goals, strategies, and recommendations for domain optimization</span>
55595
+ </li>
55596
+ </ul>
55597
+ </div>
55598
+ </div>
55599
+
55600
+ <div [ngClass]="nextStepsBoxClasses()" class="mt-6 p-5 rounded-xl border flex items-start gap-4">
55601
+ <svg class="w-6 h-6 flex-shrink-0 mt-0.5" [ngClass]="nextStepsIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
55602
+ @if (isOnboarded) {
55603
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"></path>
55604
+ } @else {
55605
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6"></path>
55606
+ }
55607
+ </svg>
55608
+ <div class="flex-1">
55609
+ <h3 [ngClass]="nextStepsTitleClasses()" class="font-bold mb-1">
55610
+ @if (isOnboarded) {
55611
+ Keep Your Focus Area Updated
55612
+ } @else {
55613
+ Continue Your Journey
55614
+ }
55615
+ </h3>
55616
+ <p [ngClass]="nextStepsTextClasses()" class="text-sm leading-relaxed">
55617
+ @if (isOnboarded) {
55618
+ As you implement improvements, adopt new tools, or refine your {{ focusAreaDisplayName() | lowercase }} approach, update this analysis to keep recommendations aligned with your evolving capabilities and market opportunities.
55619
+ } @else {
55620
+ This analysis provides domain-specific insights. To unlock the full power of Symphiq, explore additional focus areas and connect them to your shop operations and funnel metrics.
55621
+ }
55622
+ </p>
55623
+ </div>
55624
+ </div>
55625
+ </div>
55626
+ </div>
55627
+ </div>
55628
+ </div>
55629
55629
  `
55630
55630
  }]
55631
55631
  }], null, { viewMode: [{
@@ -73269,14 +73269,22 @@ class SymphiqProfileAnalysisDashboardComponent {
73269
73269
  this.embeddedScrollEffect = effect(() => {
73270
73270
  const scrollEvent = this.scrollEvent();
73271
73271
  const isEmbedded = this.embedded();
73272
+ console.log('[ProfileAnalysis] embeddedScrollEffect triggered', {
73273
+ isEmbedded,
73274
+ hasScrollEvent: !!scrollEvent,
73275
+ scrollEventDetail: scrollEvent?.detail
73276
+ });
73272
73277
  if (isEmbedded && !scrollEvent) {
73278
+ console.log('[ProfileAnalysis] Early return: embedded but no scrollEvent');
73273
73279
  return;
73274
73280
  }
73275
73281
  if (!scrollEvent || !isEmbedded) {
73282
+ console.log('[ProfileAnalysis] Early return: no scrollEvent or not embedded');
73276
73283
  return;
73277
73284
  }
73278
73285
  const detail = scrollEvent.detail;
73279
73286
  if (!detail) {
73287
+ console.log('[ProfileAnalysis] Early return: no detail in scrollEvent');
73280
73288
  return;
73281
73289
  }
73282
73290
  const scrollTop = detail.scrollTop || 0;
@@ -73288,14 +73296,27 @@ class SymphiqProfileAnalysisDashboardComponent {
73288
73296
  this.headerScrollService.isScrolled.set(false);
73289
73297
  }
73290
73298
  const scrollElement = this.scrollElement();
73299
+ console.log('[ProfileAnalysis] Scroll progress calculation', {
73300
+ scrollTop,
73301
+ hasScrollElement: !!scrollElement,
73302
+ scrollHeight: scrollElement?.scrollHeight,
73303
+ clientHeight: scrollElement?.clientHeight
73304
+ });
73291
73305
  if (scrollElement) {
73292
73306
  const scrollHeight = scrollElement.scrollHeight || 0;
73293
73307
  const clientHeight = scrollElement.clientHeight || 0;
73294
73308
  const maxScroll = scrollHeight - clientHeight;
73295
73309
  if (maxScroll > 0) {
73296
73310
  const progress = (scrollTop / maxScroll) * 100;
73311
+ console.log('[ProfileAnalysis] Setting scrollProgress', { maxScroll, progress: Math.min(100, Math.max(0, progress)) });
73297
73312
  this.scrollProgress.set(Math.min(100, Math.max(0, progress)));
73298
73313
  }
73314
+ else {
73315
+ console.log('[ProfileAnalysis] maxScroll <= 0, not updating progress', { maxScroll });
73316
+ }
73317
+ }
73318
+ else {
73319
+ console.log('[ProfileAnalysis] No scrollElement available');
73299
73320
  }
73300
73321
  }, ...(ngDevMode ? [{ debugName: "embeddedScrollEffect" }] : []));
73301
73322
  // Signal version of funnelAnalysis for reactive computed signals
@@ -73368,8 +73389,6 @@ class SymphiqProfileAnalysisDashboardComponent {
73368
73389
  };
73369
73390
  }, ...(ngDevMode ? [{ debugName: "executiveSummary" }] : []));
73370
73391
  this.sections = computed(() => {
73371
- console.log('this.profileAnalysis()', this.profileAnalysis());
73372
- console.log('this.profileAnalysis()?.profileAnalysisStructured', this.profileAnalysis()?.profileAnalysisStructured);
73373
73392
  return this.profileAnalysis()?.profileAnalysisStructured?.sections;
73374
73393
  }, ...(ngDevMode ? [{ debugName: "sections" }] : []));
73375
73394
  this.allGoals = computed(() => {
@@ -73602,9 +73621,11 @@ class SymphiqProfileAnalysisDashboardComponent {
73602
73621
  }
73603
73622
  onWindowScroll() {
73604
73623
  this.headerScrollService.handleScroll(this.embedded());
73605
- const scrollTop = window.scrollY;
73606
- const docHeight = document.documentElement.scrollHeight - window.innerHeight;
73607
- this.scrollProgress.set((scrollTop / docHeight) * 100);
73624
+ if (!this.embedded()) {
73625
+ const scrollTop = window.scrollY;
73626
+ const docHeight = document.documentElement.scrollHeight - window.innerHeight;
73627
+ this.scrollProgress.set((scrollTop / docHeight) * 100);
73628
+ }
73608
73629
  }
73609
73630
  ngOnChanges(changes) {
73610
73631
  // Update the signal whenever funnelAnalysis input changes