@eric-emg/symphiq-components 1.2.528 → 1.2.529
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.
- package/fesm2022/symphiq-components.mjs +1649 -810
- package/fesm2022/symphiq-components.mjs.map +1 -1
- package/index.d.ts +136 -33
- package/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -64072,17 +64072,24 @@ function SymphiqRevenueCalculatorDashboardComponent_Conditional_10_Template(rf,
|
|
|
64072
64072
|
i0.ɵɵadvance(2);
|
|
64073
64073
|
i0.ɵɵproperty("ngClass", ctx_r0.loadingTextClasses());
|
|
64074
64074
|
} }
|
|
64075
|
-
function
|
|
64075
|
+
function SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
64076
64076
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
64077
|
-
i0.ɵɵ
|
|
64078
|
-
i0.ɵɵ
|
|
64079
|
-
i0.ɵɵlistener("targetsCreated", function SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Template_symphiq_initial_target_setting_targetsCreated_2_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onTargetsCreated($event)); })("calculateRevenueReverseRequest", function SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Template_symphiq_initial_target_setting_calculateRevenueReverseRequest_2_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.calculateRevenueReverseRequest.emit($event)); })("calculateRevenueRequest", function SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Template_symphiq_initial_target_setting_calculateRevenueRequest_2_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.onCalculateRevenueRequest($event)); })("editRelatedMetricTarget", function SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Template_symphiq_initial_target_setting_editRelatedMetricTarget_2_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.editRelatedMetricTarget.emit($event)); })("saveTargetsClick", function SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Template_symphiq_initial_target_setting_saveTargetsClick_2_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.saveTargetsClick.emit()); })("targetsUpdated", function SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Template_symphiq_initial_target_setting_targetsUpdated_2_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.targetsUpdated.emit($event)); })("discardChangesClick", function SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Template_symphiq_initial_target_setting_discardChangesClick_2_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.discardChangesClick.emit()); });
|
|
64077
|
+
i0.ɵɵelementStart(0, "div", 19)(1, "symphiq-initial-target-setting", 20);
|
|
64078
|
+
i0.ɵɵlistener("targetsCreated", function SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Conditional_1_Template_symphiq_initial_target_setting_targetsCreated_1_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onTargetsCreated($event)); })("calculateRevenueReverseRequest", function SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Conditional_1_Template_symphiq_initial_target_setting_calculateRevenueReverseRequest_1_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.calculateRevenueReverseRequest.emit($event)); })("calculateRevenueRequest", function SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Conditional_1_Template_symphiq_initial_target_setting_calculateRevenueRequest_1_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onCalculateRevenueRequest($event)); })("editRelatedMetricTarget", function SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Conditional_1_Template_symphiq_initial_target_setting_editRelatedMetricTarget_1_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.editRelatedMetricTarget.emit($event)); })("saveTargetsClick", function SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Conditional_1_Template_symphiq_initial_target_setting_saveTargetsClick_1_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.saveTargetsClick.emit()); })("targetsUpdated", function SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Conditional_1_Template_symphiq_initial_target_setting_targetsUpdated_1_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.targetsUpdated.emit($event)); })("discardChangesClick", function SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Conditional_1_Template_symphiq_initial_target_setting_discardChangesClick_1_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.discardChangesClick.emit()); });
|
|
64080
64079
|
i0.ɵɵelementEnd()();
|
|
64080
|
+
} if (rf & 2) {
|
|
64081
|
+
const ctx_r0 = i0.ɵɵnextContext(2);
|
|
64082
|
+
i0.ɵɵadvance();
|
|
64083
|
+
i0.ɵɵproperty("viewMode", ctx_r0.viewMode())("funnelMetrics", ctx_r0.funnelMetrics() ?? i0.ɵɵpureFunction0(13, _c0$y))("mainUiData", ctx_r0.mainUiData())("trendUiData", ctx_r0.trendUiData())("shopId", ctx_r0.shopId())("pacingResponse", ctx_r0.pacingResponse())("dataResults", ctx_r0.dataResults())("calculateRevenueReverseResponse", ctx_r0.calculateRevenueReverseResponse())("calculateRevenueResponse", ctx_r0.calculateRevenueResponse())("isCalculatingTargets", ctx_r0.isCalculatingTargets())("targets", ctx_r0.targets())("targetHistories", ctx_r0.targetHistories() ?? i0.ɵɵpureFunction0(14, _c0$y))("users", ctx_r0.users() ?? i0.ɵɵpureFunction0(15, _c0$y));
|
|
64084
|
+
} }
|
|
64085
|
+
function SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
64086
|
+
i0.ɵɵelement(0, "symphiq-revenue-calculator-welcome-banner", 18);
|
|
64087
|
+
i0.ɵɵconditionalCreate(1, SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Conditional_1_Template, 2, 16, "div", 19);
|
|
64081
64088
|
} if (rf & 2) {
|
|
64082
64089
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
64083
64090
|
i0.ɵɵproperty("viewMode", ctx_r0.viewMode())("dataLoadStatus", ctx_r0.dataLoadStatus() ?? ctx_r0.ShopDataLoadStatusEnum.NOT_LOADED)("hasTargets", ctx_r0.hasCurrentYearTargets())("isOnboarded", ctx_r0.isOnboarded());
|
|
64084
|
-
i0.ɵɵadvance(
|
|
64085
|
-
i0.ɵɵ
|
|
64091
|
+
i0.ɵɵadvance();
|
|
64092
|
+
i0.ɵɵconditional(!ctx_r0.isLoading() ? 1 : -1);
|
|
64086
64093
|
} }
|
|
64087
64094
|
function SymphiqRevenueCalculatorDashboardComponent_Conditional_12_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
64088
64095
|
i0.ɵɵnamespaceSVG();
|
|
@@ -64295,7 +64302,7 @@ class SymphiqRevenueCalculatorDashboardComponent {
|
|
|
64295
64302
|
i0.ɵɵlistener("stepClick", function SymphiqRevenueCalculatorDashboardComponent_Template_symphiq_journey_progress_indicator_stepClick_6_listener($event) { return ctx.stepClick.emit($event); })("nextStepClick", function SymphiqRevenueCalculatorDashboardComponent_Template_symphiq_journey_progress_indicator_nextStepClick_6_listener() { return ctx.nextStepClick.emit(); });
|
|
64296
64303
|
i0.ɵɵelementEnd();
|
|
64297
64304
|
i0.ɵɵelementStart(7, "main", 6)(8, "div", 7);
|
|
64298
|
-
i0.ɵɵconditionalCreate(9, SymphiqRevenueCalculatorDashboardComponent_Conditional_9_Template, 2, 1, "div", 8)(10, SymphiqRevenueCalculatorDashboardComponent_Conditional_10_Template, 10, 8)(11, SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Template,
|
|
64305
|
+
i0.ɵɵconditionalCreate(9, SymphiqRevenueCalculatorDashboardComponent_Conditional_9_Template, 2, 1, "div", 8)(10, SymphiqRevenueCalculatorDashboardComponent_Conditional_10_Template, 10, 8)(11, SymphiqRevenueCalculatorDashboardComponent_Conditional_11_Template, 2, 5);
|
|
64299
64306
|
i0.ɵɵelementEnd()();
|
|
64300
64307
|
i0.ɵɵconditionalCreate(12, SymphiqRevenueCalculatorDashboardComponent_Conditional_12_Template, 7, 7, "div", 9);
|
|
64301
64308
|
i0.ɵɵelementEnd()();
|
|
@@ -64424,30 +64431,32 @@ class SymphiqRevenueCalculatorDashboardComponent {
|
|
|
64424
64431
|
[isOnboarded]="isOnboarded()"
|
|
64425
64432
|
/>
|
|
64426
64433
|
|
|
64427
|
-
|
|
64428
|
-
<
|
|
64429
|
-
|
|
64430
|
-
|
|
64431
|
-
|
|
64432
|
-
|
|
64433
|
-
|
|
64434
|
-
|
|
64435
|
-
|
|
64436
|
-
|
|
64437
|
-
|
|
64438
|
-
|
|
64439
|
-
|
|
64440
|
-
|
|
64441
|
-
|
|
64442
|
-
|
|
64443
|
-
|
|
64444
|
-
|
|
64445
|
-
|
|
64446
|
-
|
|
64447
|
-
|
|
64448
|
-
|
|
64449
|
-
|
|
64450
|
-
|
|
64434
|
+
@if (!isLoading()) {
|
|
64435
|
+
<div class="mt-8">
|
|
64436
|
+
<symphiq-initial-target-setting
|
|
64437
|
+
[viewMode]="viewMode()"
|
|
64438
|
+
[funnelMetrics]="funnelMetrics() ?? []"
|
|
64439
|
+
[mainUiData]="mainUiData()"
|
|
64440
|
+
[trendUiData]="trendUiData()"
|
|
64441
|
+
[shopId]="shopId()"
|
|
64442
|
+
[pacingResponse]="pacingResponse()"
|
|
64443
|
+
[dataResults]="dataResults()"
|
|
64444
|
+
[calculateRevenueReverseResponse]="calculateRevenueReverseResponse()"
|
|
64445
|
+
[calculateRevenueResponse]="calculateRevenueResponse()"
|
|
64446
|
+
[isCalculatingTargets]="isCalculatingTargets()"
|
|
64447
|
+
[targets]="targets()"
|
|
64448
|
+
[targetHistories]="targetHistories() ?? []"
|
|
64449
|
+
[users]="users() ?? []"
|
|
64450
|
+
(targetsCreated)="onTargetsCreated($event)"
|
|
64451
|
+
(calculateRevenueReverseRequest)="calculateRevenueReverseRequest.emit($event)"
|
|
64452
|
+
(calculateRevenueRequest)="onCalculateRevenueRequest($event)"
|
|
64453
|
+
(editRelatedMetricTarget)="editRelatedMetricTarget.emit($event)"
|
|
64454
|
+
(saveTargetsClick)="saveTargetsClick.emit()"
|
|
64455
|
+
(targetsUpdated)="targetsUpdated.emit($event)"
|
|
64456
|
+
(discardChangesClick)="discardChangesClick.emit()"
|
|
64457
|
+
/>
|
|
64458
|
+
</div>
|
|
64459
|
+
}
|
|
64451
64460
|
}
|
|
64452
64461
|
|
|
64453
64462
|
</div>
|
|
@@ -64491,7 +64500,7 @@ class SymphiqRevenueCalculatorDashboardComponent {
|
|
|
64491
64500
|
type: HostListener,
|
|
64492
64501
|
args: ['window:scroll', ['$event']]
|
|
64493
64502
|
}] }); })();
|
|
64494
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqRevenueCalculatorDashboardComponent, { className: "SymphiqRevenueCalculatorDashboardComponent", filePath: "lib/components/revenue-calculator-dashboard/symphiq-revenue-calculator-dashboard.component.ts", lineNumber:
|
|
64503
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqRevenueCalculatorDashboardComponent, { className: "SymphiqRevenueCalculatorDashboardComponent", filePath: "lib/components/revenue-calculator-dashboard/symphiq-revenue-calculator-dashboard.component.ts", lineNumber: 211 }); })();
|
|
64495
64504
|
|
|
64496
64505
|
function HierarchyDisplayComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
64497
64506
|
i0.ɵɵelementStart(0, "div", 1)(1, "div", 1);
|
|
@@ -84912,39 +84921,39 @@ class FocusAreaHealthIndicatorComponent {
|
|
|
84912
84921
|
standalone: true,
|
|
84913
84922
|
imports: [CommonModule, SymphiqIconComponent],
|
|
84914
84923
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
84915
|
-
template: `
|
|
84916
|
-
<div [ngClass]="containerClasses()" class="rounded-xl p-6 border">
|
|
84917
|
-
<div class="flex items-start gap-4">
|
|
84918
|
-
<div [ngClass]="iconContainerClasses()" class="flex-shrink-0 w-12 h-12 rounded-xl flex items-center justify-center">
|
|
84919
|
-
<symphiq-icon [icon]="healthIcon()" size="w-6 h-6" />
|
|
84920
|
-
</div>
|
|
84921
|
-
<div class="flex-1">
|
|
84922
|
-
<div class="flex items-center justify-between mb-2">
|
|
84923
|
-
<h3 [ngClass]="titleClasses()" class="text-sm font-semibold uppercase tracking-wider">
|
|
84924
|
-
Focus Area Health
|
|
84925
|
-
</h3>
|
|
84926
|
-
<span [ngClass]="healthBadgeClasses()" class="px-3 py-1 rounded-full text-xs font-bold uppercase">
|
|
84927
|
-
{{ healthLabel() }}
|
|
84928
|
-
</span>
|
|
84929
|
-
</div>
|
|
84930
|
-
|
|
84931
|
-
<!-- Health Meter -->
|
|
84932
|
-
<div class="mb-3">
|
|
84933
|
-
<div [ngClass]="meterBackgroundClasses()" class="h-2 rounded-full overflow-hidden">
|
|
84934
|
-
<div
|
|
84935
|
-
[ngClass]="meterFillClasses()"
|
|
84936
|
-
[style.width.%]="healthPercentage()"
|
|
84937
|
-
class="h-full transition-all duration-500 ease-out rounded-full"
|
|
84938
|
-
></div>
|
|
84939
|
-
</div>
|
|
84940
|
-
</div>
|
|
84941
|
-
|
|
84942
|
-
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed">
|
|
84943
|
-
{{ healthDescription() }}
|
|
84944
|
-
</p>
|
|
84945
|
-
</div>
|
|
84946
|
-
</div>
|
|
84947
|
-
</div>
|
|
84924
|
+
template: `
|
|
84925
|
+
<div [ngClass]="containerClasses()" class="rounded-xl p-6 border">
|
|
84926
|
+
<div class="flex items-start gap-4">
|
|
84927
|
+
<div [ngClass]="iconContainerClasses()" class="flex-shrink-0 w-12 h-12 rounded-xl flex items-center justify-center">
|
|
84928
|
+
<symphiq-icon [icon]="healthIcon()" size="w-6 h-6" />
|
|
84929
|
+
</div>
|
|
84930
|
+
<div class="flex-1">
|
|
84931
|
+
<div class="flex items-center justify-between mb-2">
|
|
84932
|
+
<h3 [ngClass]="titleClasses()" class="text-sm font-semibold uppercase tracking-wider">
|
|
84933
|
+
Focus Area Health
|
|
84934
|
+
</h3>
|
|
84935
|
+
<span [ngClass]="healthBadgeClasses()" class="px-3 py-1 rounded-full text-xs font-bold uppercase">
|
|
84936
|
+
{{ healthLabel() }}
|
|
84937
|
+
</span>
|
|
84938
|
+
</div>
|
|
84939
|
+
|
|
84940
|
+
<!-- Health Meter -->
|
|
84941
|
+
<div class="mb-3">
|
|
84942
|
+
<div [ngClass]="meterBackgroundClasses()" class="h-2 rounded-full overflow-hidden">
|
|
84943
|
+
<div
|
|
84944
|
+
[ngClass]="meterFillClasses()"
|
|
84945
|
+
[style.width.%]="healthPercentage()"
|
|
84946
|
+
class="h-full transition-all duration-500 ease-out rounded-full"
|
|
84947
|
+
></div>
|
|
84948
|
+
</div>
|
|
84949
|
+
</div>
|
|
84950
|
+
|
|
84951
|
+
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed">
|
|
84952
|
+
{{ healthDescription() }}
|
|
84953
|
+
</p>
|
|
84954
|
+
</div>
|
|
84955
|
+
</div>
|
|
84956
|
+
</div>
|
|
84948
84957
|
`
|
|
84949
84958
|
}]
|
|
84950
84959
|
}], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], health: [{ type: i0.Input, args: [{ isSignal: true, alias: "health", required: false }] }] }); })();
|
|
@@ -85314,177 +85323,177 @@ class FocusAreaExecutiveSummaryComponent {
|
|
|
85314
85323
|
RelatedGoalChipsComponent
|
|
85315
85324
|
],
|
|
85316
85325
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
85317
|
-
template: `
|
|
85318
|
-
<section id="section-executive-summary" class="space-y-6 scroll-mt-24">
|
|
85319
|
-
<!-- Summary Banner -->
|
|
85320
|
-
<div [ngClass]="getBannerClasses()" class="rounded-2xl p-8 shadow-xl">
|
|
85321
|
-
<div class="space-y-6">
|
|
85322
|
-
<div class="flex items-start justify-between gap-4">
|
|
85323
|
-
<div class="flex-1">
|
|
85324
|
-
<h2 [ngClass]="getSectionTitleClasses()" class="text-2xl font-bold mb-3">
|
|
85325
|
-
Executive Summary
|
|
85326
|
-
</h2>
|
|
85327
|
-
<p [ngClass]="getTextClasses()" class="text-lg leading-relaxed">
|
|
85328
|
-
{{ summary()?.gradeRationale }}
|
|
85329
|
-
</p>
|
|
85330
|
-
</div>
|
|
85331
|
-
@if (summary()?.overallGrade) {
|
|
85332
|
-
<symphiq-grade-badge
|
|
85333
|
-
[grade]="summary()!.overallGrade!"
|
|
85334
|
-
[gradeRationale]="summary()!.gradeRationale || ''"
|
|
85335
|
-
[viewMode]="viewMode()"
|
|
85336
|
-
/>
|
|
85337
|
-
}
|
|
85338
|
-
</div>
|
|
85339
|
-
|
|
85340
|
-
@if (summary()?.narrative) {
|
|
85341
|
-
<div [ngClass]="getNarrativeClasses()" class="rounded-xl p-6">
|
|
85342
|
-
<h3 [ngClass]="getSubheadingClasses()" class="text-lg font-semibold mb-3">
|
|
85343
|
-
Analysis Narrative
|
|
85344
|
-
</h3>
|
|
85345
|
-
<div class="relative">
|
|
85346
|
-
@if (summary()?.napkinVisual?.enabled) {
|
|
85347
|
-
<div class="mb-6 lg:float-left lg:mr-6 lg:mb-4 lg:max-w-[66%]">
|
|
85348
|
-
<symphiq-napkin-visual-placeholder
|
|
85349
|
-
[visual]="summary()!.napkinVisual!"
|
|
85350
|
-
[viewMode]="viewMode()"
|
|
85351
|
-
/>
|
|
85352
|
-
</div>
|
|
85353
|
-
}
|
|
85354
|
-
<p [ngClass]="getTextClasses()" class="text-sm leading-relaxed whitespace-pre-line">
|
|
85355
|
-
{{ summary()?.narrative }}
|
|
85356
|
-
</p>
|
|
85357
|
-
<div class="clear-both"></div>
|
|
85358
|
-
</div>
|
|
85359
|
-
</div>
|
|
85360
|
-
}
|
|
85361
|
-
|
|
85362
|
-
<!-- Health and Top Priorities -->
|
|
85363
|
-
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
|
|
85364
|
-
<!-- Health Indicator -->
|
|
85365
|
-
<div class="lg:col-span-1">
|
|
85366
|
-
@if (summary()?.focusAreaHealth) {
|
|
85367
|
-
<symphiq-focus-area-health-indicator
|
|
85368
|
-
[viewMode]="viewMode()"
|
|
85369
|
-
[health]="summary()?.focusAreaHealth"
|
|
85370
|
-
/>
|
|
85371
|
-
}
|
|
85372
|
-
</div>
|
|
85373
|
-
|
|
85374
|
-
<!-- Quick Stats -->
|
|
85375
|
-
<div class="lg:col-span-2 grid grid-cols-2 gap-4">
|
|
85376
|
-
<button
|
|
85377
|
-
type="button"
|
|
85378
|
-
(click)="onTopPrioritiesClick()"
|
|
85379
|
-
[ngClass]="getTopPrioritiesStatCardClasses()"
|
|
85380
|
-
class="p-4 rounded-xl text-left transition-all duration-200 hover:scale-[1.02] active:scale-[0.98] group cursor-pointer">
|
|
85381
|
-
<div [ngClass]="getTopPrioritiesStatLabelClasses()" class="text-xs font-semibold uppercase mb-1">
|
|
85382
|
-
Top Priorities
|
|
85383
|
-
</div>
|
|
85384
|
-
<div [ngClass]="getTopPrioritiesStatValueClasses()" class="text-3xl font-bold mb-2">
|
|
85385
|
-
{{ summary()?.topPriorities?.length || 0 }}
|
|
85386
|
-
</div>
|
|
85387
|
-
<div class="flex items-center gap-1.5 text-xs font-medium">
|
|
85388
|
-
<span [ngClass]="getTopPrioritiesButtonTextClasses()">View Details</span>
|
|
85389
|
-
<symphiq-icon
|
|
85390
|
-
[icon]="{ name: 'chevron-right', source: IconSourceEnum.HEROICONS }"
|
|
85391
|
-
size="w-4 h-4"
|
|
85392
|
-
[ngClass]="getTopPrioritiesButtonTextClasses()"
|
|
85393
|
-
class="transition-transform group-hover:translate-x-1"
|
|
85394
|
-
/>
|
|
85395
|
-
</div>
|
|
85396
|
-
</button>
|
|
85397
|
-
|
|
85398
|
-
<button
|
|
85399
|
-
type="button"
|
|
85400
|
-
(click)="scrollToQuickWins()"
|
|
85401
|
-
[ngClass]="getQuickWinsStatCardClasses()"
|
|
85402
|
-
class="p-4 rounded-xl text-left transition-all duration-200 hover:scale-[1.02] active:scale-[0.98] group cursor-pointer">
|
|
85403
|
-
<div [ngClass]="getQuickWinsStatLabelClasses()" class="text-xs font-semibold uppercase mb-1">
|
|
85404
|
-
Quick Wins
|
|
85405
|
-
</div>
|
|
85406
|
-
<div [ngClass]="getQuickWinsStatValueClasses()" class="text-3xl font-bold mb-2">
|
|
85407
|
-
{{ summary()?.quickWins?.length || 0 }}
|
|
85408
|
-
</div>
|
|
85409
|
-
<div class="flex items-center gap-1.5 text-xs font-medium">
|
|
85410
|
-
<span [ngClass]="getQuickWinsButtonTextClasses()">Details Below</span>
|
|
85411
|
-
<symphiq-icon
|
|
85412
|
-
[icon]="{ name: 'chevron-down', source: IconSourceEnum.HEROICONS }"
|
|
85413
|
-
size="w-4 h-4"
|
|
85414
|
-
[ngClass]="getQuickWinsButtonTextClasses()"
|
|
85415
|
-
class="transition-transform group-hover:translate-y-1 animate-bounce"
|
|
85416
|
-
/>
|
|
85417
|
-
</div>
|
|
85418
|
-
</button>
|
|
85419
|
-
</div>
|
|
85420
|
-
</div>
|
|
85421
|
-
</div>
|
|
85422
|
-
</div>
|
|
85423
|
-
|
|
85424
|
-
<!-- Top Priorities Grid - Hidden, now shown in modal -->
|
|
85425
|
-
<!-- Top priorities are now displayed in a modal instead of inline -->
|
|
85426
|
-
|
|
85427
|
-
<!-- Quick Wins -->
|
|
85428
|
-
@if (summary()?.quickWins?.length) {
|
|
85429
|
-
<div id="quick-wins-section" class="space-y-4 scroll-mt-24">
|
|
85430
|
-
<h3 [ngClass]="getSectionTitleClasses()" class="text-xl font-bold">
|
|
85431
|
-
Quick Wins
|
|
85432
|
-
</h3>
|
|
85433
|
-
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
|
|
85434
|
-
@for (win of summary()!.quickWins!; track $index) {
|
|
85435
|
-
<div [ngClass]="getQuickWinCardClasses()"
|
|
85436
|
-
class="rounded-xl p-6 transition-all duration-300">
|
|
85437
|
-
<div class="space-y-4">
|
|
85438
|
-
<div class="flex items-start gap-3">
|
|
85439
|
-
<span [ngClass]="getNumberBadgeClasses()"
|
|
85440
|
-
class="flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center text-sm font-bold">
|
|
85441
|
-
{{ $index + 1 }}
|
|
85442
|
-
</span>
|
|
85443
|
-
<p [ngClass]="getQuickWinTextClasses()" class="font-semibold leading-tight flex-1">
|
|
85444
|
-
{{ win.action }}
|
|
85445
|
-
</p>
|
|
85446
|
-
</div>
|
|
85447
|
-
|
|
85448
|
-
<div class="flex flex-wrap gap-2">
|
|
85449
|
-
<span [ngClass]="getEffortBadgeClasses(win.effort)"
|
|
85450
|
-
class="px-3 py-1 rounded-full text-xs font-semibold">
|
|
85451
|
-
{{ formatLabel(win.effort) }} Effort
|
|
85452
|
-
</span>
|
|
85453
|
-
<span [ngClass]="getImpactBadgeClasses(win.impact)"
|
|
85454
|
-
class="px-3 py-1 rounded-full text-xs font-semibold">
|
|
85455
|
-
{{ formatLabel(win.impact) }} Impact
|
|
85456
|
-
</span>
|
|
85457
|
-
</div>
|
|
85458
|
-
|
|
85459
|
-
@if (win.estimatedTimeframe) {
|
|
85460
|
-
<div class="flex items-center gap-2 text-sm" [ngClass]="getMetaTextClasses()">
|
|
85461
|
-
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
85462
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
85463
|
-
d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/>
|
|
85464
|
-
</svg>
|
|
85465
|
-
<span>{{ win.estimatedTimeframe }}</span>
|
|
85466
|
-
</div>
|
|
85467
|
-
}
|
|
85468
|
-
|
|
85469
|
-
@if (win.relatedGoalId && allGoals()) {
|
|
85470
|
-
<div class="space-y-2">
|
|
85471
|
-
<h4 [ngClass]="getMetaTextClasses()" class="text-xs font-semibold uppercase tracking-wider">
|
|
85472
|
-
Related Goal
|
|
85473
|
-
</h4>
|
|
85474
|
-
<symphiq-related-goal-chips
|
|
85475
|
-
[relatedGoalIds]="[win.relatedGoalId]"
|
|
85476
|
-
[allGoals]="allGoals()"
|
|
85477
|
-
[viewMode]="viewMode()"
|
|
85478
|
-
/>
|
|
85479
|
-
</div>
|
|
85480
|
-
}
|
|
85481
|
-
</div>
|
|
85482
|
-
</div>
|
|
85483
|
-
}
|
|
85484
|
-
</div>
|
|
85485
|
-
</div>
|
|
85486
|
-
}
|
|
85487
|
-
</section>
|
|
85326
|
+
template: `
|
|
85327
|
+
<section id="section-executive-summary" class="space-y-6 scroll-mt-24">
|
|
85328
|
+
<!-- Summary Banner -->
|
|
85329
|
+
<div [ngClass]="getBannerClasses()" class="rounded-2xl p-8 shadow-xl">
|
|
85330
|
+
<div class="space-y-6">
|
|
85331
|
+
<div class="flex items-start justify-between gap-4">
|
|
85332
|
+
<div class="flex-1">
|
|
85333
|
+
<h2 [ngClass]="getSectionTitleClasses()" class="text-2xl font-bold mb-3">
|
|
85334
|
+
Executive Summary
|
|
85335
|
+
</h2>
|
|
85336
|
+
<p [ngClass]="getTextClasses()" class="text-lg leading-relaxed">
|
|
85337
|
+
{{ summary()?.gradeRationale }}
|
|
85338
|
+
</p>
|
|
85339
|
+
</div>
|
|
85340
|
+
@if (summary()?.overallGrade) {
|
|
85341
|
+
<symphiq-grade-badge
|
|
85342
|
+
[grade]="summary()!.overallGrade!"
|
|
85343
|
+
[gradeRationale]="summary()!.gradeRationale || ''"
|
|
85344
|
+
[viewMode]="viewMode()"
|
|
85345
|
+
/>
|
|
85346
|
+
}
|
|
85347
|
+
</div>
|
|
85348
|
+
|
|
85349
|
+
@if (summary()?.narrative) {
|
|
85350
|
+
<div [ngClass]="getNarrativeClasses()" class="rounded-xl p-6">
|
|
85351
|
+
<h3 [ngClass]="getSubheadingClasses()" class="text-lg font-semibold mb-3">
|
|
85352
|
+
Analysis Narrative
|
|
85353
|
+
</h3>
|
|
85354
|
+
<div class="relative">
|
|
85355
|
+
@if (summary()?.napkinVisual?.enabled) {
|
|
85356
|
+
<div class="mb-6 lg:float-left lg:mr-6 lg:mb-4 lg:max-w-[66%]">
|
|
85357
|
+
<symphiq-napkin-visual-placeholder
|
|
85358
|
+
[visual]="summary()!.napkinVisual!"
|
|
85359
|
+
[viewMode]="viewMode()"
|
|
85360
|
+
/>
|
|
85361
|
+
</div>
|
|
85362
|
+
}
|
|
85363
|
+
<p [ngClass]="getTextClasses()" class="text-sm leading-relaxed whitespace-pre-line">
|
|
85364
|
+
{{ summary()?.narrative }}
|
|
85365
|
+
</p>
|
|
85366
|
+
<div class="clear-both"></div>
|
|
85367
|
+
</div>
|
|
85368
|
+
</div>
|
|
85369
|
+
}
|
|
85370
|
+
|
|
85371
|
+
<!-- Health and Top Priorities -->
|
|
85372
|
+
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
|
|
85373
|
+
<!-- Health Indicator -->
|
|
85374
|
+
<div class="lg:col-span-1">
|
|
85375
|
+
@if (summary()?.focusAreaHealth) {
|
|
85376
|
+
<symphiq-focus-area-health-indicator
|
|
85377
|
+
[viewMode]="viewMode()"
|
|
85378
|
+
[health]="summary()?.focusAreaHealth"
|
|
85379
|
+
/>
|
|
85380
|
+
}
|
|
85381
|
+
</div>
|
|
85382
|
+
|
|
85383
|
+
<!-- Quick Stats -->
|
|
85384
|
+
<div class="lg:col-span-2 grid grid-cols-2 gap-4">
|
|
85385
|
+
<button
|
|
85386
|
+
type="button"
|
|
85387
|
+
(click)="onTopPrioritiesClick()"
|
|
85388
|
+
[ngClass]="getTopPrioritiesStatCardClasses()"
|
|
85389
|
+
class="p-4 rounded-xl text-left transition-all duration-200 hover:scale-[1.02] active:scale-[0.98] group cursor-pointer">
|
|
85390
|
+
<div [ngClass]="getTopPrioritiesStatLabelClasses()" class="text-xs font-semibold uppercase mb-1">
|
|
85391
|
+
Top Priorities
|
|
85392
|
+
</div>
|
|
85393
|
+
<div [ngClass]="getTopPrioritiesStatValueClasses()" class="text-3xl font-bold mb-2">
|
|
85394
|
+
{{ summary()?.topPriorities?.length || 0 }}
|
|
85395
|
+
</div>
|
|
85396
|
+
<div class="flex items-center gap-1.5 text-xs font-medium">
|
|
85397
|
+
<span [ngClass]="getTopPrioritiesButtonTextClasses()">View Details</span>
|
|
85398
|
+
<symphiq-icon
|
|
85399
|
+
[icon]="{ name: 'chevron-right', source: IconSourceEnum.HEROICONS }"
|
|
85400
|
+
size="w-4 h-4"
|
|
85401
|
+
[ngClass]="getTopPrioritiesButtonTextClasses()"
|
|
85402
|
+
class="transition-transform group-hover:translate-x-1"
|
|
85403
|
+
/>
|
|
85404
|
+
</div>
|
|
85405
|
+
</button>
|
|
85406
|
+
|
|
85407
|
+
<button
|
|
85408
|
+
type="button"
|
|
85409
|
+
(click)="scrollToQuickWins()"
|
|
85410
|
+
[ngClass]="getQuickWinsStatCardClasses()"
|
|
85411
|
+
class="p-4 rounded-xl text-left transition-all duration-200 hover:scale-[1.02] active:scale-[0.98] group cursor-pointer">
|
|
85412
|
+
<div [ngClass]="getQuickWinsStatLabelClasses()" class="text-xs font-semibold uppercase mb-1">
|
|
85413
|
+
Quick Wins
|
|
85414
|
+
</div>
|
|
85415
|
+
<div [ngClass]="getQuickWinsStatValueClasses()" class="text-3xl font-bold mb-2">
|
|
85416
|
+
{{ summary()?.quickWins?.length || 0 }}
|
|
85417
|
+
</div>
|
|
85418
|
+
<div class="flex items-center gap-1.5 text-xs font-medium">
|
|
85419
|
+
<span [ngClass]="getQuickWinsButtonTextClasses()">Details Below</span>
|
|
85420
|
+
<symphiq-icon
|
|
85421
|
+
[icon]="{ name: 'chevron-down', source: IconSourceEnum.HEROICONS }"
|
|
85422
|
+
size="w-4 h-4"
|
|
85423
|
+
[ngClass]="getQuickWinsButtonTextClasses()"
|
|
85424
|
+
class="transition-transform group-hover:translate-y-1 animate-bounce"
|
|
85425
|
+
/>
|
|
85426
|
+
</div>
|
|
85427
|
+
</button>
|
|
85428
|
+
</div>
|
|
85429
|
+
</div>
|
|
85430
|
+
</div>
|
|
85431
|
+
</div>
|
|
85432
|
+
|
|
85433
|
+
<!-- Top Priorities Grid - Hidden, now shown in modal -->
|
|
85434
|
+
<!-- Top priorities are now displayed in a modal instead of inline -->
|
|
85435
|
+
|
|
85436
|
+
<!-- Quick Wins -->
|
|
85437
|
+
@if (summary()?.quickWins?.length) {
|
|
85438
|
+
<div id="quick-wins-section" class="space-y-4 scroll-mt-24">
|
|
85439
|
+
<h3 [ngClass]="getSectionTitleClasses()" class="text-xl font-bold">
|
|
85440
|
+
Quick Wins
|
|
85441
|
+
</h3>
|
|
85442
|
+
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
|
|
85443
|
+
@for (win of summary()!.quickWins!; track $index) {
|
|
85444
|
+
<div [ngClass]="getQuickWinCardClasses()"
|
|
85445
|
+
class="rounded-xl p-6 transition-all duration-300">
|
|
85446
|
+
<div class="space-y-4">
|
|
85447
|
+
<div class="flex items-start gap-3">
|
|
85448
|
+
<span [ngClass]="getNumberBadgeClasses()"
|
|
85449
|
+
class="flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center text-sm font-bold">
|
|
85450
|
+
{{ $index + 1 }}
|
|
85451
|
+
</span>
|
|
85452
|
+
<p [ngClass]="getQuickWinTextClasses()" class="font-semibold leading-tight flex-1">
|
|
85453
|
+
{{ win.action }}
|
|
85454
|
+
</p>
|
|
85455
|
+
</div>
|
|
85456
|
+
|
|
85457
|
+
<div class="flex flex-wrap gap-2">
|
|
85458
|
+
<span [ngClass]="getEffortBadgeClasses(win.effort)"
|
|
85459
|
+
class="px-3 py-1 rounded-full text-xs font-semibold">
|
|
85460
|
+
{{ formatLabel(win.effort) }} Effort
|
|
85461
|
+
</span>
|
|
85462
|
+
<span [ngClass]="getImpactBadgeClasses(win.impact)"
|
|
85463
|
+
class="px-3 py-1 rounded-full text-xs font-semibold">
|
|
85464
|
+
{{ formatLabel(win.impact) }} Impact
|
|
85465
|
+
</span>
|
|
85466
|
+
</div>
|
|
85467
|
+
|
|
85468
|
+
@if (win.estimatedTimeframe) {
|
|
85469
|
+
<div class="flex items-center gap-2 text-sm" [ngClass]="getMetaTextClasses()">
|
|
85470
|
+
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
85471
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
85472
|
+
d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/>
|
|
85473
|
+
</svg>
|
|
85474
|
+
<span>{{ win.estimatedTimeframe }}</span>
|
|
85475
|
+
</div>
|
|
85476
|
+
}
|
|
85477
|
+
|
|
85478
|
+
@if (win.relatedGoalId && allGoals()) {
|
|
85479
|
+
<div class="space-y-2">
|
|
85480
|
+
<h4 [ngClass]="getMetaTextClasses()" class="text-xs font-semibold uppercase tracking-wider">
|
|
85481
|
+
Related Goal
|
|
85482
|
+
</h4>
|
|
85483
|
+
<symphiq-related-goal-chips
|
|
85484
|
+
[relatedGoalIds]="[win.relatedGoalId]"
|
|
85485
|
+
[allGoals]="allGoals()"
|
|
85486
|
+
[viewMode]="viewMode()"
|
|
85487
|
+
/>
|
|
85488
|
+
</div>
|
|
85489
|
+
}
|
|
85490
|
+
</div>
|
|
85491
|
+
</div>
|
|
85492
|
+
}
|
|
85493
|
+
</div>
|
|
85494
|
+
</div>
|
|
85495
|
+
}
|
|
85496
|
+
</section>
|
|
85488
85497
|
`
|
|
85489
85498
|
}]
|
|
85490
85499
|
}], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], summary: [{ type: i0.Input, args: [{ isSignal: true, alias: "summary", required: false }] }], allGoals: [{ type: i0.Input, args: [{ isSignal: true, alias: "allGoals", required: false }] }], topPrioritiesClick: [{ type: i0.Output, args: ["topPrioritiesClick"] }], priorityDetailClick: [{ type: i0.Output, args: ["priorityDetailClick"] }] }); })();
|
|
@@ -85897,158 +85906,158 @@ class CollapsibleAnalysisSectionGroupComponent {
|
|
|
85897
85906
|
standalone: true,
|
|
85898
85907
|
imports: [CommonModule, SymphiqIconComponent, ProfileSectionContentComponent, NapkinVisualPlaceholderComponent, FocusAreaExecutiveSummaryComponent, MetricExecutiveSummaryComponent],
|
|
85899
85908
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
85900
|
-
template: `
|
|
85901
|
-
<div [ngClass]="containerClasses()" class="rounded-2xl border shadow-lg overflow-hidden">
|
|
85902
|
-
<div [ngClass]="headerClasses()" class="px-6 py-5 border-b">
|
|
85903
|
-
<div class="flex items-center justify-between">
|
|
85904
|
-
<div class="flex items-center gap-3">
|
|
85905
|
-
<div [ngClass]="iconContainerClasses()" class="p-2.5 rounded-lg">
|
|
85906
|
-
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
85907
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"></path>
|
|
85908
|
-
</svg>
|
|
85909
|
-
</div>
|
|
85910
|
-
<div>
|
|
85911
|
-
<h2 [ngClass]="titleClasses()" class="text-xl font-bold">
|
|
85912
|
-
Supporting Business Context
|
|
85913
|
-
</h2>
|
|
85914
|
-
<p [ngClass]="subtitleClasses()" class="text-sm mt-0.5">
|
|
85915
|
-
Operational insights and competitive analysis
|
|
85916
|
-
</p>
|
|
85917
|
-
</div>
|
|
85918
|
-
</div>
|
|
85919
|
-
</div>
|
|
85920
|
-
</div>
|
|
85921
|
-
|
|
85922
|
-
<div [ngClass]="contentClasses()" class="p-6">
|
|
85923
|
-
<div [ngClass]="infoBoxClasses()" class="mb-6 p-4 rounded-xl border flex items-start gap-3">
|
|
85924
|
-
<svg class="w-5 h-5 flex-shrink-0 mt-0.5" [ngClass]="infoIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
85925
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
|
|
85926
|
-
</svg>
|
|
85927
|
-
<div class="flex-1">
|
|
85928
|
-
<h4 [ngClass]="infoTitleClasses()" class="font-semibold text-sm mb-1">
|
|
85929
|
-
{{ getDescriptionTitle() }}
|
|
85930
|
-
</h4>
|
|
85931
|
-
<p [ngClass]="infoTextClasses()" class="text-sm leading-relaxed">
|
|
85932
|
-
{{ getDescriptionText() }}
|
|
85933
|
-
</p>
|
|
85934
|
-
</div>
|
|
85935
|
-
</div>
|
|
85936
|
-
|
|
85937
|
-
<div class="space-y-3">
|
|
85938
|
-
@for (section of sections(); track section.id; let idx = $index) {
|
|
85939
|
-
<div [id]="'collapsible-section-' + idx" [ngClass]="sectionCardClasses()" class="rounded-xl border overflow-hidden transition-all duration-200">
|
|
85940
|
-
<button
|
|
85941
|
-
type="button"
|
|
85942
|
-
(click)="toggleSection(idx)"
|
|
85943
|
-
[ngClass]="sectionHeaderClasses(section, idx)"
|
|
85944
|
-
class="cursor-pointer w-full px-5 py-4 flex items-center justify-between gap-4 text-left transition-colors duration-200">
|
|
85945
|
-
<div class="flex items-center gap-3 flex-1 min-w-0">
|
|
85946
|
-
@if (section.icon) {
|
|
85947
|
-
<div [ngClass]="sectionIconContainerClasses(idx)" class="p-2 rounded-lg flex-shrink-0 transition-colors duration-200">
|
|
85948
|
-
<symphiq-icon [icon]="section.icon" size="w-4 h-4"></symphiq-icon>
|
|
85949
|
-
</div>
|
|
85950
|
-
}
|
|
85951
|
-
<div class="flex-1 min-w-0">
|
|
85952
|
-
<h3 [ngClass]="sectionTitleClasses(idx)" class="font-semibold transition-colors duration-200">
|
|
85953
|
-
{{ section.title }}
|
|
85954
|
-
</h3>
|
|
85955
|
-
@if (section.description) {
|
|
85956
|
-
<p [ngClass]="sectionDescriptionClasses(idx)" class="text-sm mt-0.5 line-clamp-1 transition-colors duration-200">
|
|
85957
|
-
{{ formatDescription(section.description) }}
|
|
85958
|
-
</p>
|
|
85959
|
-
}
|
|
85960
|
-
</div>
|
|
85961
|
-
</div>
|
|
85962
|
-
<svg
|
|
85963
|
-
[ngClass]="chevronClasses(idx)"
|
|
85964
|
-
[class.rotate-180]="expandedSections()[idx]"
|
|
85965
|
-
class="w-5 h-5 flex-shrink-0 transition-transform duration-200"
|
|
85966
|
-
fill="none"
|
|
85967
|
-
stroke="currentColor"
|
|
85968
|
-
viewBox="0 0 24 24">
|
|
85969
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path>
|
|
85970
|
-
</svg>
|
|
85971
|
-
</button>
|
|
85972
|
-
|
|
85973
|
-
<div
|
|
85974
|
-
class="grid transition-[grid-template-rows] duration-300 ease-in-out"
|
|
85975
|
-
[style.grid-template-rows]="expandedSections()[idx] ? '1fr' : '0fr'">
|
|
85976
|
-
<div class="overflow-hidden">
|
|
85977
|
-
<div [ngClass]="sectionContentClasses()" class="border-t p-6">
|
|
85978
|
-
<!-- Metric Executive Summary -->
|
|
85979
|
-
@if (section.id === 'metric-executive-summary' && metricExecutiveSummary()) {
|
|
85980
|
-
<symphiq-metric-executive-summary
|
|
85981
|
-
[viewMode]="viewMode()"
|
|
85982
|
-
[summary]="metricExecutiveSummary()!"
|
|
85983
|
-
[metricName]="metricName() || ''"
|
|
85984
|
-
[allGoals]="allGoals()"
|
|
85985
|
-
(topPrioritiesClick)="handleMetricTopPrioritiesClick()"
|
|
85986
|
-
(priorityDetailClick)="handleMetricPriorityDetailClick($event)"
|
|
85987
|
-
/>
|
|
85988
|
-
} @else if (section.id === 'focus-area-executive-summary' && focusAreaExecutiveSummary()) {
|
|
85989
|
-
<symphiq-focus-area-executive-summary
|
|
85990
|
-
[viewMode]="viewMode()"
|
|
85991
|
-
[summary]="focusAreaExecutiveSummary()!"
|
|
85992
|
-
[allGoals]="allGoals()"
|
|
85993
|
-
(topPrioritiesClick)="handleTopPrioritiesClick()"
|
|
85994
|
-
(priorityDetailClick)="handlePriorityDetailClick($event)"
|
|
85995
|
-
/>
|
|
85996
|
-
} @else {
|
|
85997
|
-
<!-- Description and Napkin Visual (if available) - Alternating layout -->
|
|
85998
|
-
@if (section.description || (section.visual && section.visual.enabled)) {
|
|
85999
|
-
<div class="mb-6">
|
|
86000
|
-
<div class="relative">
|
|
86001
|
-
@if (section.visual && section.visual.enabled) {
|
|
86002
|
-
@if (idx % 2 === 0) {
|
|
86003
|
-
<!-- Even index: Napkin on left -->
|
|
86004
|
-
<div class="mb-6 lg:float-left lg:mr-6 lg:mb-4 lg:max-w-[50%]">
|
|
86005
|
-
<symphiq-napkin-visual-placeholder
|
|
86006
|
-
[visual]="section.visual"
|
|
86007
|
-
[viewMode]="viewMode()"
|
|
86008
|
-
/>
|
|
86009
|
-
</div>
|
|
86010
|
-
} @else {
|
|
86011
|
-
<!-- Odd index: Napkin on right -->
|
|
86012
|
-
<div class="mb-6 lg:float-right lg:ml-6 lg:mb-4 lg:max-w-[50%]">
|
|
86013
|
-
<symphiq-napkin-visual-placeholder
|
|
86014
|
-
[visual]="section.visual"
|
|
86015
|
-
[viewMode]="viewMode()"
|
|
86016
|
-
/>
|
|
86017
|
-
</div>
|
|
86018
|
-
}
|
|
86019
|
-
}
|
|
86020
|
-
|
|
86021
|
-
<!-- Description -->
|
|
86022
|
-
@if (section.description) {
|
|
86023
|
-
<p [ngClass]="descriptionTextClasses()" class="text-sm leading-relaxed whitespace-pre-line">
|
|
86024
|
-
{{ formatDescription(section.description) }}
|
|
86025
|
-
</p>
|
|
86026
|
-
}
|
|
86027
|
-
<div class="clear-both"></div>
|
|
86028
|
-
</div>
|
|
86029
|
-
</div>
|
|
86030
|
-
}
|
|
86031
|
-
|
|
86032
|
-
<symphiq-profile-section-content
|
|
86033
|
-
[section]="section"
|
|
86034
|
-
[viewMode]="viewMode()"
|
|
86035
|
-
[sectionIndex]="idx"
|
|
86036
|
-
[executiveSummary]="executiveSummary()"
|
|
86037
|
-
[allGoals]="allGoals()"
|
|
86038
|
-
[allMetrics]="allMetrics()"
|
|
86039
|
-
[allCharts]="allCharts()"
|
|
86040
|
-
[allInsights]="allInsights()"
|
|
86041
|
-
[businessProfile]="businessProfile()"
|
|
86042
|
-
/>
|
|
86043
|
-
}
|
|
86044
|
-
</div>
|
|
86045
|
-
</div>
|
|
86046
|
-
</div>
|
|
86047
|
-
</div>
|
|
86048
|
-
}
|
|
86049
|
-
</div>
|
|
86050
|
-
</div>
|
|
86051
|
-
</div>
|
|
85909
|
+
template: `
|
|
85910
|
+
<div [ngClass]="containerClasses()" class="rounded-2xl border shadow-lg overflow-hidden">
|
|
85911
|
+
<div [ngClass]="headerClasses()" class="px-6 py-5 border-b">
|
|
85912
|
+
<div class="flex items-center justify-between">
|
|
85913
|
+
<div class="flex items-center gap-3">
|
|
85914
|
+
<div [ngClass]="iconContainerClasses()" class="p-2.5 rounded-lg">
|
|
85915
|
+
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
85916
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"></path>
|
|
85917
|
+
</svg>
|
|
85918
|
+
</div>
|
|
85919
|
+
<div>
|
|
85920
|
+
<h2 [ngClass]="titleClasses()" class="text-xl font-bold">
|
|
85921
|
+
Supporting Business Context
|
|
85922
|
+
</h2>
|
|
85923
|
+
<p [ngClass]="subtitleClasses()" class="text-sm mt-0.5">
|
|
85924
|
+
Operational insights and competitive analysis
|
|
85925
|
+
</p>
|
|
85926
|
+
</div>
|
|
85927
|
+
</div>
|
|
85928
|
+
</div>
|
|
85929
|
+
</div>
|
|
85930
|
+
|
|
85931
|
+
<div [ngClass]="contentClasses()" class="p-6">
|
|
85932
|
+
<div [ngClass]="infoBoxClasses()" class="mb-6 p-4 rounded-xl border flex items-start gap-3">
|
|
85933
|
+
<svg class="w-5 h-5 flex-shrink-0 mt-0.5" [ngClass]="infoIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
85934
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
|
|
85935
|
+
</svg>
|
|
85936
|
+
<div class="flex-1">
|
|
85937
|
+
<h4 [ngClass]="infoTitleClasses()" class="font-semibold text-sm mb-1">
|
|
85938
|
+
{{ getDescriptionTitle() }}
|
|
85939
|
+
</h4>
|
|
85940
|
+
<p [ngClass]="infoTextClasses()" class="text-sm leading-relaxed">
|
|
85941
|
+
{{ getDescriptionText() }}
|
|
85942
|
+
</p>
|
|
85943
|
+
</div>
|
|
85944
|
+
</div>
|
|
85945
|
+
|
|
85946
|
+
<div class="space-y-3">
|
|
85947
|
+
@for (section of sections(); track section.id; let idx = $index) {
|
|
85948
|
+
<div [id]="'collapsible-section-' + idx" [ngClass]="sectionCardClasses()" class="rounded-xl border overflow-hidden transition-all duration-200">
|
|
85949
|
+
<button
|
|
85950
|
+
type="button"
|
|
85951
|
+
(click)="toggleSection(idx)"
|
|
85952
|
+
[ngClass]="sectionHeaderClasses(section, idx)"
|
|
85953
|
+
class="cursor-pointer w-full px-5 py-4 flex items-center justify-between gap-4 text-left transition-colors duration-200">
|
|
85954
|
+
<div class="flex items-center gap-3 flex-1 min-w-0">
|
|
85955
|
+
@if (section.icon) {
|
|
85956
|
+
<div [ngClass]="sectionIconContainerClasses(idx)" class="p-2 rounded-lg flex-shrink-0 transition-colors duration-200">
|
|
85957
|
+
<symphiq-icon [icon]="section.icon" size="w-4 h-4"></symphiq-icon>
|
|
85958
|
+
</div>
|
|
85959
|
+
}
|
|
85960
|
+
<div class="flex-1 min-w-0">
|
|
85961
|
+
<h3 [ngClass]="sectionTitleClasses(idx)" class="font-semibold transition-colors duration-200">
|
|
85962
|
+
{{ section.title }}
|
|
85963
|
+
</h3>
|
|
85964
|
+
@if (section.description) {
|
|
85965
|
+
<p [ngClass]="sectionDescriptionClasses(idx)" class="text-sm mt-0.5 line-clamp-1 transition-colors duration-200">
|
|
85966
|
+
{{ formatDescription(section.description) }}
|
|
85967
|
+
</p>
|
|
85968
|
+
}
|
|
85969
|
+
</div>
|
|
85970
|
+
</div>
|
|
85971
|
+
<svg
|
|
85972
|
+
[ngClass]="chevronClasses(idx)"
|
|
85973
|
+
[class.rotate-180]="expandedSections()[idx]"
|
|
85974
|
+
class="w-5 h-5 flex-shrink-0 transition-transform duration-200"
|
|
85975
|
+
fill="none"
|
|
85976
|
+
stroke="currentColor"
|
|
85977
|
+
viewBox="0 0 24 24">
|
|
85978
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path>
|
|
85979
|
+
</svg>
|
|
85980
|
+
</button>
|
|
85981
|
+
|
|
85982
|
+
<div
|
|
85983
|
+
class="grid transition-[grid-template-rows] duration-300 ease-in-out"
|
|
85984
|
+
[style.grid-template-rows]="expandedSections()[idx] ? '1fr' : '0fr'">
|
|
85985
|
+
<div class="overflow-hidden">
|
|
85986
|
+
<div [ngClass]="sectionContentClasses()" class="border-t p-6">
|
|
85987
|
+
<!-- Metric Executive Summary -->
|
|
85988
|
+
@if (section.id === 'metric-executive-summary' && metricExecutiveSummary()) {
|
|
85989
|
+
<symphiq-metric-executive-summary
|
|
85990
|
+
[viewMode]="viewMode()"
|
|
85991
|
+
[summary]="metricExecutiveSummary()!"
|
|
85992
|
+
[metricName]="metricName() || ''"
|
|
85993
|
+
[allGoals]="allGoals()"
|
|
85994
|
+
(topPrioritiesClick)="handleMetricTopPrioritiesClick()"
|
|
85995
|
+
(priorityDetailClick)="handleMetricPriorityDetailClick($event)"
|
|
85996
|
+
/>
|
|
85997
|
+
} @else if (section.id === 'focus-area-executive-summary' && focusAreaExecutiveSummary()) {
|
|
85998
|
+
<symphiq-focus-area-executive-summary
|
|
85999
|
+
[viewMode]="viewMode()"
|
|
86000
|
+
[summary]="focusAreaExecutiveSummary()!"
|
|
86001
|
+
[allGoals]="allGoals()"
|
|
86002
|
+
(topPrioritiesClick)="handleTopPrioritiesClick()"
|
|
86003
|
+
(priorityDetailClick)="handlePriorityDetailClick($event)"
|
|
86004
|
+
/>
|
|
86005
|
+
} @else {
|
|
86006
|
+
<!-- Description and Napkin Visual (if available) - Alternating layout -->
|
|
86007
|
+
@if (section.description || (section.visual && section.visual.enabled)) {
|
|
86008
|
+
<div class="mb-6">
|
|
86009
|
+
<div class="relative">
|
|
86010
|
+
@if (section.visual && section.visual.enabled) {
|
|
86011
|
+
@if (idx % 2 === 0) {
|
|
86012
|
+
<!-- Even index: Napkin on left -->
|
|
86013
|
+
<div class="mb-6 lg:float-left lg:mr-6 lg:mb-4 lg:max-w-[50%]">
|
|
86014
|
+
<symphiq-napkin-visual-placeholder
|
|
86015
|
+
[visual]="section.visual"
|
|
86016
|
+
[viewMode]="viewMode()"
|
|
86017
|
+
/>
|
|
86018
|
+
</div>
|
|
86019
|
+
} @else {
|
|
86020
|
+
<!-- Odd index: Napkin on right -->
|
|
86021
|
+
<div class="mb-6 lg:float-right lg:ml-6 lg:mb-4 lg:max-w-[50%]">
|
|
86022
|
+
<symphiq-napkin-visual-placeholder
|
|
86023
|
+
[visual]="section.visual"
|
|
86024
|
+
[viewMode]="viewMode()"
|
|
86025
|
+
/>
|
|
86026
|
+
</div>
|
|
86027
|
+
}
|
|
86028
|
+
}
|
|
86029
|
+
|
|
86030
|
+
<!-- Description -->
|
|
86031
|
+
@if (section.description) {
|
|
86032
|
+
<p [ngClass]="descriptionTextClasses()" class="text-sm leading-relaxed whitespace-pre-line">
|
|
86033
|
+
{{ formatDescription(section.description) }}
|
|
86034
|
+
</p>
|
|
86035
|
+
}
|
|
86036
|
+
<div class="clear-both"></div>
|
|
86037
|
+
</div>
|
|
86038
|
+
</div>
|
|
86039
|
+
}
|
|
86040
|
+
|
|
86041
|
+
<symphiq-profile-section-content
|
|
86042
|
+
[section]="section"
|
|
86043
|
+
[viewMode]="viewMode()"
|
|
86044
|
+
[sectionIndex]="idx"
|
|
86045
|
+
[executiveSummary]="executiveSummary()"
|
|
86046
|
+
[allGoals]="allGoals()"
|
|
86047
|
+
[allMetrics]="allMetrics()"
|
|
86048
|
+
[allCharts]="allCharts()"
|
|
86049
|
+
[allInsights]="allInsights()"
|
|
86050
|
+
[businessProfile]="businessProfile()"
|
|
86051
|
+
/>
|
|
86052
|
+
}
|
|
86053
|
+
</div>
|
|
86054
|
+
</div>
|
|
86055
|
+
</div>
|
|
86056
|
+
</div>
|
|
86057
|
+
}
|
|
86058
|
+
</div>
|
|
86059
|
+
</div>
|
|
86060
|
+
</div>
|
|
86052
86061
|
`
|
|
86053
86062
|
}]
|
|
86054
86063
|
}], null, { sections: [{ type: i0.Input, args: [{ isSignal: true, alias: "sections", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], executiveSummary: [{ type: i0.Input, args: [{ isSignal: true, alias: "executiveSummary", required: false }] }], focusAreaExecutiveSummary: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusAreaExecutiveSummary", required: false }] }], metricExecutiveSummary: [{ type: i0.Input, args: [{ isSignal: true, alias: "metricExecutiveSummary", required: false }] }], metricName: [{ type: i0.Input, args: [{ isSignal: true, alias: "metricName", required: false }] }], allGoals: [{ type: i0.Input, args: [{ isSignal: true, alias: "allGoals", required: false }] }], allMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "allMetrics", required: false }] }], allCharts: [{ type: i0.Input, args: [{ isSignal: true, alias: "allCharts", required: false }] }], allInsights: [{ type: i0.Input, args: [{ isSignal: true, alias: "allInsights", required: false }] }], businessProfile: [{ type: i0.Input, args: [{ isSignal: true, alias: "businessProfile", required: false }] }] }); })();
|
|
@@ -97182,93 +97191,93 @@ class FocusAreaWelcomeBannerComponent {
|
|
|
97182
97191
|
standalone: true,
|
|
97183
97192
|
imports: [CommonModule, SymphiqIconComponent],
|
|
97184
97193
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
97185
|
-
template: `
|
|
97186
|
-
<div [ngClass]="containerClasses()" class="rounded-2xl border shadow-lg overflow-hidden">
|
|
97187
|
-
<div [ngClass]="contentClasses()" class="px-8 py-8">
|
|
97188
|
-
<div class="flex items-start gap-6">
|
|
97189
|
-
<div [ngClass]="iconContainerClasses()" class="flex-shrink-0 w-16 h-16 rounded-2xl flex items-center justify-center">
|
|
97190
|
-
<symphiq-icon [icon]="focusAreaIcon()" size="w-8 h-8" />
|
|
97191
|
-
</div>
|
|
97192
|
-
|
|
97193
|
-
<div class="flex-1">
|
|
97194
|
-
<h2 [ngClass]="titleClasses()" class="text-2xl sm:text-3xl font-bold mb-3">
|
|
97195
|
-
@if (isOnboarded()) {
|
|
97196
|
-
Your {{ focusAreaDisplayName() }} Analysis
|
|
97197
|
-
} @else {
|
|
97198
|
-
Welcome to Your {{ focusAreaDisplayName() }} Analysis
|
|
97199
|
-
}
|
|
97200
|
-
</h2>
|
|
97201
|
-
|
|
97202
|
-
<!-- Description -->
|
|
97203
|
-
<div class="space-y-3 mb-6">
|
|
97204
|
-
<p [ngClass]="textClasses()" class="text-base leading-relaxed">
|
|
97205
|
-
{{ 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.
|
|
97206
|
-
</p>
|
|
97207
|
-
<p [ngClass]="textClasses()" class="text-base leading-relaxed">
|
|
97208
|
-
<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.
|
|
97209
|
-
</p>
|
|
97210
|
-
</div>
|
|
97211
|
-
|
|
97212
|
-
<div [ngClass]="highlightBoxClasses()" class="mt-6 p-5 rounded-xl border-l-4 flex items-start gap-4">
|
|
97213
|
-
<svg class="w-6 h-6 flex-shrink-0 mt-0.5" [ngClass]="highlightIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
97214
|
-
<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>
|
|
97215
|
-
</svg>
|
|
97216
|
-
<div class="flex-1">
|
|
97217
|
-
<h3 [ngClass]="highlightTitleClasses()" class="font-bold text-lg mb-2">
|
|
97218
|
-
What You'll See Below
|
|
97219
|
-
</h3>
|
|
97220
|
-
<ul [ngClass]="highlightListClasses()" class="space-y-2 text-sm">
|
|
97221
|
-
<li class="flex items-start gap-2">
|
|
97222
|
-
<svg class="w-5 h-5 flex-shrink-0 mt-0.5" fill="currentColor" viewBox="0 0 20 20">
|
|
97223
|
-
<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>
|
|
97224
|
-
</svg>
|
|
97225
|
-
<span><strong class="font-semibold">Focus Area Health</strong> — Current maturity and performance assessment for {{ focusAreaDisplayName() | lowercase }}</span>
|
|
97226
|
-
</li>
|
|
97227
|
-
<li class="flex items-start gap-2">
|
|
97228
|
-
<svg class="w-5 h-5 flex-shrink-0 mt-0.5" fill="currentColor" viewBox="0 0 20 20">
|
|
97229
|
-
<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>
|
|
97230
|
-
</svg>
|
|
97231
|
-
<span><strong class="font-semibold">Top Priorities</strong> — High-impact improvements specific to this operational domain</span>
|
|
97232
|
-
</li>
|
|
97233
|
-
<li class="flex items-start gap-2">
|
|
97234
|
-
<svg class="w-5 h-5 flex-shrink-0 mt-0.5" fill="currentColor" viewBox="0 0 20 20">
|
|
97235
|
-
<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>
|
|
97236
|
-
</svg>
|
|
97237
|
-
<span><strong class="font-semibold">Tactical Roadmap</strong> — Step-by-step goals, strategies, and recommendations for domain optimization</span>
|
|
97238
|
-
</li>
|
|
97239
|
-
</ul>
|
|
97240
|
-
</div>
|
|
97241
|
-
</div>
|
|
97242
|
-
|
|
97243
|
-
<div [ngClass]="nextStepsBoxClasses()" class="mt-6 p-5 rounded-xl border flex items-start gap-4">
|
|
97244
|
-
<svg class="w-6 h-6 flex-shrink-0 mt-0.5" [ngClass]="nextStepsIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
97245
|
-
@if (isOnboarded()) {
|
|
97246
|
-
<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>
|
|
97247
|
-
} @else {
|
|
97248
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6"></path>
|
|
97249
|
-
}
|
|
97250
|
-
</svg>
|
|
97251
|
-
<div class="flex-1">
|
|
97252
|
-
<h3 [ngClass]="nextStepsTitleClasses()" class="font-bold mb-1">
|
|
97253
|
-
@if (isOnboarded()) {
|
|
97254
|
-
Keep Your Focus Area Updated
|
|
97255
|
-
} @else {
|
|
97256
|
-
Continue Your Journey
|
|
97257
|
-
}
|
|
97258
|
-
</h3>
|
|
97259
|
-
<p [ngClass]="nextStepsTextClasses()" class="text-sm leading-relaxed">
|
|
97260
|
-
@if (isOnboarded()) {
|
|
97261
|
-
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.
|
|
97262
|
-
} @else {
|
|
97263
|
-
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.
|
|
97264
|
-
}
|
|
97265
|
-
</p>
|
|
97266
|
-
</div>
|
|
97267
|
-
</div>
|
|
97268
|
-
</div>
|
|
97269
|
-
</div>
|
|
97270
|
-
</div>
|
|
97271
|
-
</div>
|
|
97194
|
+
template: `
|
|
97195
|
+
<div [ngClass]="containerClasses()" class="rounded-2xl border shadow-lg overflow-hidden">
|
|
97196
|
+
<div [ngClass]="contentClasses()" class="px-8 py-8">
|
|
97197
|
+
<div class="flex items-start gap-6">
|
|
97198
|
+
<div [ngClass]="iconContainerClasses()" class="flex-shrink-0 w-16 h-16 rounded-2xl flex items-center justify-center">
|
|
97199
|
+
<symphiq-icon [icon]="focusAreaIcon()" size="w-8 h-8" />
|
|
97200
|
+
</div>
|
|
97201
|
+
|
|
97202
|
+
<div class="flex-1">
|
|
97203
|
+
<h2 [ngClass]="titleClasses()" class="text-2xl sm:text-3xl font-bold mb-3">
|
|
97204
|
+
@if (isOnboarded()) {
|
|
97205
|
+
Your {{ focusAreaDisplayName() }} Analysis
|
|
97206
|
+
} @else {
|
|
97207
|
+
Welcome to Your {{ focusAreaDisplayName() }} Analysis
|
|
97208
|
+
}
|
|
97209
|
+
</h2>
|
|
97210
|
+
|
|
97211
|
+
<!-- Description -->
|
|
97212
|
+
<div class="space-y-3 mb-6">
|
|
97213
|
+
<p [ngClass]="textClasses()" class="text-base leading-relaxed">
|
|
97214
|
+
{{ 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.
|
|
97215
|
+
</p>
|
|
97216
|
+
<p [ngClass]="textClasses()" class="text-base leading-relaxed">
|
|
97217
|
+
<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.
|
|
97218
|
+
</p>
|
|
97219
|
+
</div>
|
|
97220
|
+
|
|
97221
|
+
<div [ngClass]="highlightBoxClasses()" class="mt-6 p-5 rounded-xl border-l-4 flex items-start gap-4">
|
|
97222
|
+
<svg class="w-6 h-6 flex-shrink-0 mt-0.5" [ngClass]="highlightIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
97223
|
+
<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>
|
|
97224
|
+
</svg>
|
|
97225
|
+
<div class="flex-1">
|
|
97226
|
+
<h3 [ngClass]="highlightTitleClasses()" class="font-bold text-lg mb-2">
|
|
97227
|
+
What You'll See Below
|
|
97228
|
+
</h3>
|
|
97229
|
+
<ul [ngClass]="highlightListClasses()" class="space-y-2 text-sm">
|
|
97230
|
+
<li class="flex items-start gap-2">
|
|
97231
|
+
<svg class="w-5 h-5 flex-shrink-0 mt-0.5" fill="currentColor" viewBox="0 0 20 20">
|
|
97232
|
+
<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>
|
|
97233
|
+
</svg>
|
|
97234
|
+
<span><strong class="font-semibold">Focus Area Health</strong> — Current maturity and performance assessment for {{ focusAreaDisplayName() | lowercase }}</span>
|
|
97235
|
+
</li>
|
|
97236
|
+
<li class="flex items-start gap-2">
|
|
97237
|
+
<svg class="w-5 h-5 flex-shrink-0 mt-0.5" fill="currentColor" viewBox="0 0 20 20">
|
|
97238
|
+
<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>
|
|
97239
|
+
</svg>
|
|
97240
|
+
<span><strong class="font-semibold">Top Priorities</strong> — High-impact improvements specific to this operational domain</span>
|
|
97241
|
+
</li>
|
|
97242
|
+
<li class="flex items-start gap-2">
|
|
97243
|
+
<svg class="w-5 h-5 flex-shrink-0 mt-0.5" fill="currentColor" viewBox="0 0 20 20">
|
|
97244
|
+
<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>
|
|
97245
|
+
</svg>
|
|
97246
|
+
<span><strong class="font-semibold">Tactical Roadmap</strong> — Step-by-step goals, strategies, and recommendations for domain optimization</span>
|
|
97247
|
+
</li>
|
|
97248
|
+
</ul>
|
|
97249
|
+
</div>
|
|
97250
|
+
</div>
|
|
97251
|
+
|
|
97252
|
+
<div [ngClass]="nextStepsBoxClasses()" class="mt-6 p-5 rounded-xl border flex items-start gap-4">
|
|
97253
|
+
<svg class="w-6 h-6 flex-shrink-0 mt-0.5" [ngClass]="nextStepsIconClasses()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
97254
|
+
@if (isOnboarded()) {
|
|
97255
|
+
<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>
|
|
97256
|
+
} @else {
|
|
97257
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6"></path>
|
|
97258
|
+
}
|
|
97259
|
+
</svg>
|
|
97260
|
+
<div class="flex-1">
|
|
97261
|
+
<h3 [ngClass]="nextStepsTitleClasses()" class="font-bold mb-1">
|
|
97262
|
+
@if (isOnboarded()) {
|
|
97263
|
+
Keep Your Focus Area Updated
|
|
97264
|
+
} @else {
|
|
97265
|
+
Continue Your Journey
|
|
97266
|
+
}
|
|
97267
|
+
</h3>
|
|
97268
|
+
<p [ngClass]="nextStepsTextClasses()" class="text-sm leading-relaxed">
|
|
97269
|
+
@if (isOnboarded()) {
|
|
97270
|
+
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.
|
|
97271
|
+
} @else {
|
|
97272
|
+
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.
|
|
97273
|
+
}
|
|
97274
|
+
</p>
|
|
97275
|
+
</div>
|
|
97276
|
+
</div>
|
|
97277
|
+
</div>
|
|
97278
|
+
</div>
|
|
97279
|
+
</div>
|
|
97280
|
+
</div>
|
|
97272
97281
|
`
|
|
97273
97282
|
}]
|
|
97274
97283
|
}], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], focusAreaDomain: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusAreaDomain", required: false }] }], focusAreaName: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusAreaName", required: false }] }], isOnboarded: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOnboarded", required: false }] }] }); })();
|
|
@@ -98162,351 +98171,1181 @@ class SymphiqProfileAnalysisFocusAreaDashboardComponent {
|
|
|
98162
98171
|
MarkAsReviewedFooterComponent
|
|
98163
98172
|
],
|
|
98164
98173
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
98165
|
-
template: `
|
|
98166
|
-
<div [ngClass]="getContainerClasses()" [class.min-h-screen]="!embedded()" class="relative">
|
|
98167
|
-
<div class="animated-bubbles" [class.light-mode]="isLightMode()"
|
|
98168
|
-
style="position: fixed; top: 0; left: 0; right: 0; bottom: 0; width: 100vw; height: 100vh; z-index: 1; pointer-events: none;"></div>
|
|
98169
|
-
|
|
98170
|
-
<!-- Scroll Progress Bar -->
|
|
98171
|
-
<div
|
|
98172
|
-
[class]="embedded() ? 'sticky top-0 left-0 right-0 h-1 z-[60] bg-slate-200/30' : 'fixed top-0 left-0 right-0 h-1 z-[60] bg-slate-200/30'">
|
|
98173
|
-
<div
|
|
98174
|
-
[style.width.%]="scrollProgress()"
|
|
98175
|
-
[ngClass]="isLightMode() ? 'bg-gradient-to-r from-blue-500 to-purple-500' : 'bg-gradient-to-r from-blue-400 to-purple-400'"
|
|
98176
|
-
class="h-full transition-all duration-200 ease-out">
|
|
98177
|
-
</div>
|
|
98178
|
-
</div>
|
|
98179
|
-
|
|
98180
|
-
<div class="relative z-[51]">
|
|
98181
|
-
<!-- Dashboard Header -->
|
|
98182
|
-
<symphiq-dashboard-header
|
|
98183
|
-
[title]="getAnalysisSubtitle()"
|
|
98184
|
-
[subtitle]="''"
|
|
98185
|
-
[currentSection]="'Focus Area'"
|
|
98186
|
-
[viewMode]="viewMode()"
|
|
98187
|
-
[viewModeLabel]="displayModeLabel()"
|
|
98188
|
-
[isLoading]="isLoading()"
|
|
98189
|
-
[requestedByUser]="requestedByUser()"
|
|
98190
|
-
[createdDate]="profileAnalysis()?.selfContentCompletedDate"
|
|
98191
|
-
[showControls]="shouldShowHeaderControls()"
|
|
98192
|
-
(searchClick)="openSearch()"
|
|
98193
|
-
(viewModeClick)="openViewModeSwitcher()"
|
|
98194
|
-
/>
|
|
98195
|
-
|
|
98196
|
-
<!-- Main Content -->
|
|
98197
|
-
<main class="relative z-10 max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12 space-y-12"
|
|
98198
|
-
[class.pb-32]="shouldShowReviewFooter()">
|
|
98199
|
-
|
|
98200
|
-
<!-- Welcome Banner (Simplified View Only) -->
|
|
98201
|
-
@if (isSimplifiedView()) {
|
|
98202
|
-
<div class="mb-12">
|
|
98203
|
-
<symphiq-focus-area-welcome-banner
|
|
98204
|
-
[viewMode]="viewMode()"
|
|
98205
|
-
[focusAreaDomain]="focusAreaDomain()"
|
|
98206
|
-
[focusAreaName]="focusAreaName()"
|
|
98207
|
-
/>
|
|
98208
|
-
</div>
|
|
98209
|
-
|
|
98210
|
-
<!-- Loading Card -->
|
|
98211
|
-
@if (isLoading()) {
|
|
98212
|
-
<div [ngClass]="isLightMode() ? 'bg-white/80 border-slate-200' : 'bg-slate-800/80 border-slate-700'"
|
|
98213
|
-
class="rounded-2xl border shadow-lg p-8 backdrop-blur-sm">
|
|
98214
|
-
<div class="flex flex-col items-center justify-center space-y-4">
|
|
98215
|
-
<symphiq-indeterminate-spinner [viewMode]="viewMode()" size="large" />
|
|
98216
|
-
<div class="text-center">
|
|
98217
|
-
<h3 [ngClass]="isLightMode() ? 'text-slate-900' : 'text-white'" class="text-lg font-semibold mb-1">
|
|
98218
|
-
Loading Your Focus Area Analysis
|
|
98219
|
-
</h3>
|
|
98220
|
-
<p [ngClass]="isLightMode() ? 'text-slate-600' : 'text-slate-400'" class="text-sm">
|
|
98221
|
-
Please wait while we prepare your personalized insights...
|
|
98222
|
-
</p>
|
|
98223
|
-
</div>
|
|
98224
|
-
</div>
|
|
98225
|
-
</div>
|
|
98226
|
-
}
|
|
98227
|
-
}
|
|
98228
|
-
|
|
98229
|
-
<!-- Simplified View Content -->
|
|
98230
|
-
@if (isSimplifiedView()) {
|
|
98231
|
-
<!-- Strategic Insights & Goals -->
|
|
98232
|
-
@if (profileAnalysis()) {
|
|
98233
|
-
<div class="mb-8">
|
|
98234
|
-
@if (isProfileAnalysisGenerating()) {
|
|
98235
|
-
<div [ngClass]="getProgressCardClasses()" class="rounded-2xl border shadow-lg overflow-hidden">
|
|
98236
|
-
<symphiq-content-generation-progress
|
|
98237
|
-
[itemStatus]="itemStatusProfileAnalysis()"
|
|
98238
|
-
[viewMode]="viewMode()"
|
|
98239
|
-
title="Generating Your Focus Area Analysis"
|
|
98240
|
-
subtitle="We're analyzing your data to create your personalized analysis. It will appear when ready."
|
|
98241
|
-
/>
|
|
98242
|
-
</div>
|
|
98243
|
-
} @else {
|
|
98244
|
-
<symphiq-strategic-goals-tiled-grid
|
|
98245
|
-
[goals]="strategicRoadmapGoals()"
|
|
98246
|
-
[viewMode]="viewMode()"
|
|
98247
|
-
(viewMoreClick)="openGoalModal($event)"
|
|
98248
|
-
/>
|
|
98249
|
-
}
|
|
98250
|
-
</div>
|
|
98251
|
-
}
|
|
98174
|
+
template: `
|
|
98175
|
+
<div [ngClass]="getContainerClasses()" [class.min-h-screen]="!embedded()" class="relative">
|
|
98176
|
+
<div class="animated-bubbles" [class.light-mode]="isLightMode()"
|
|
98177
|
+
style="position: fixed; top: 0; left: 0; right: 0; bottom: 0; width: 100vw; height: 100vh; z-index: 1; pointer-events: none;"></div>
|
|
98178
|
+
|
|
98179
|
+
<!-- Scroll Progress Bar -->
|
|
98180
|
+
<div
|
|
98181
|
+
[class]="embedded() ? 'sticky top-0 left-0 right-0 h-1 z-[60] bg-slate-200/30' : 'fixed top-0 left-0 right-0 h-1 z-[60] bg-slate-200/30'">
|
|
98182
|
+
<div
|
|
98183
|
+
[style.width.%]="scrollProgress()"
|
|
98184
|
+
[ngClass]="isLightMode() ? 'bg-gradient-to-r from-blue-500 to-purple-500' : 'bg-gradient-to-r from-blue-400 to-purple-400'"
|
|
98185
|
+
class="h-full transition-all duration-200 ease-out">
|
|
98186
|
+
</div>
|
|
98187
|
+
</div>
|
|
98188
|
+
|
|
98189
|
+
<div class="relative z-[51]">
|
|
98190
|
+
<!-- Dashboard Header -->
|
|
98191
|
+
<symphiq-dashboard-header
|
|
98192
|
+
[title]="getAnalysisSubtitle()"
|
|
98193
|
+
[subtitle]="''"
|
|
98194
|
+
[currentSection]="'Focus Area'"
|
|
98195
|
+
[viewMode]="viewMode()"
|
|
98196
|
+
[viewModeLabel]="displayModeLabel()"
|
|
98197
|
+
[isLoading]="isLoading()"
|
|
98198
|
+
[requestedByUser]="requestedByUser()"
|
|
98199
|
+
[createdDate]="profileAnalysis()?.selfContentCompletedDate"
|
|
98200
|
+
[showControls]="shouldShowHeaderControls()"
|
|
98201
|
+
(searchClick)="openSearch()"
|
|
98202
|
+
(viewModeClick)="openViewModeSwitcher()"
|
|
98203
|
+
/>
|
|
98204
|
+
|
|
98205
|
+
<!-- Main Content -->
|
|
98206
|
+
<main class="relative z-10 max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12 space-y-12"
|
|
98207
|
+
[class.pb-32]="shouldShowReviewFooter()">
|
|
98208
|
+
|
|
98209
|
+
<!-- Welcome Banner (Simplified View Only) -->
|
|
98210
|
+
@if (isSimplifiedView()) {
|
|
98211
|
+
<div class="mb-12">
|
|
98212
|
+
<symphiq-focus-area-welcome-banner
|
|
98213
|
+
[viewMode]="viewMode()"
|
|
98214
|
+
[focusAreaDomain]="focusAreaDomain()"
|
|
98215
|
+
[focusAreaName]="focusAreaName()"
|
|
98216
|
+
/>
|
|
98217
|
+
</div>
|
|
98218
|
+
|
|
98219
|
+
<!-- Loading Card -->
|
|
98220
|
+
@if (isLoading()) {
|
|
98221
|
+
<div [ngClass]="isLightMode() ? 'bg-white/80 border-slate-200' : 'bg-slate-800/80 border-slate-700'"
|
|
98222
|
+
class="rounded-2xl border shadow-lg p-8 backdrop-blur-sm">
|
|
98223
|
+
<div class="flex flex-col items-center justify-center space-y-4">
|
|
98224
|
+
<symphiq-indeterminate-spinner [viewMode]="viewMode()" size="large" />
|
|
98225
|
+
<div class="text-center">
|
|
98226
|
+
<h3 [ngClass]="isLightMode() ? 'text-slate-900' : 'text-white'" class="text-lg font-semibold mb-1">
|
|
98227
|
+
Loading Your Focus Area Analysis
|
|
98228
|
+
</h3>
|
|
98229
|
+
<p [ngClass]="isLightMode() ? 'text-slate-600' : 'text-slate-400'" class="text-sm">
|
|
98230
|
+
Please wait while we prepare your personalized insights...
|
|
98231
|
+
</p>
|
|
98232
|
+
</div>
|
|
98233
|
+
</div>
|
|
98234
|
+
</div>
|
|
98235
|
+
}
|
|
98236
|
+
}
|
|
98237
|
+
|
|
98238
|
+
<!-- Simplified View Content -->
|
|
98239
|
+
@if (isSimplifiedView()) {
|
|
98240
|
+
<!-- Strategic Insights & Goals -->
|
|
98241
|
+
@if (profileAnalysis()) {
|
|
98242
|
+
<div class="mb-8">
|
|
98243
|
+
@if (isProfileAnalysisGenerating()) {
|
|
98244
|
+
<div [ngClass]="getProgressCardClasses()" class="rounded-2xl border shadow-lg overflow-hidden">
|
|
98245
|
+
<symphiq-content-generation-progress
|
|
98246
|
+
[itemStatus]="itemStatusProfileAnalysis()"
|
|
98247
|
+
[viewMode]="viewMode()"
|
|
98248
|
+
title="Generating Your Focus Area Analysis"
|
|
98249
|
+
subtitle="We're analyzing your data to create your personalized analysis. It will appear when ready."
|
|
98250
|
+
/>
|
|
98251
|
+
</div>
|
|
98252
|
+
} @else {
|
|
98253
|
+
<symphiq-strategic-goals-tiled-grid
|
|
98254
|
+
[goals]="strategicRoadmapGoals()"
|
|
98255
|
+
[viewMode]="viewMode()"
|
|
98256
|
+
(viewMoreClick)="openGoalModal($event)"
|
|
98257
|
+
/>
|
|
98258
|
+
}
|
|
98259
|
+
</div>
|
|
98260
|
+
}
|
|
98261
|
+
|
|
98262
|
+
<!-- Supporting Business Context -->
|
|
98263
|
+
@if (nonStrategicSections().length > 0) {
|
|
98264
|
+
<div>
|
|
98265
|
+
<symphiq-collapsible-analysis-section-group
|
|
98266
|
+
[sections]="nonStrategicSections()"
|
|
98267
|
+
[viewMode]="viewMode()"
|
|
98268
|
+
[focusAreaExecutiveSummary]="focusAreaExecutiveSummary()"
|
|
98269
|
+
[allGoals]="allGoals()"
|
|
98270
|
+
[allMetrics]="allMetrics()"
|
|
98271
|
+
[allCharts]="allCharts()"
|
|
98272
|
+
[allInsights]="allInsights()"
|
|
98273
|
+
[businessProfile]="profile()"
|
|
98274
|
+
/>
|
|
98275
|
+
</div>
|
|
98276
|
+
}
|
|
98277
|
+
}
|
|
98278
|
+
|
|
98279
|
+
<!-- Compact & Expanded View Content -->
|
|
98280
|
+
@if (!isSimplifiedView()) {
|
|
98281
|
+
<!-- Focus Area Executive Summary -->
|
|
98282
|
+
@if (focusAreaExecutiveSummary(); as summary) {
|
|
98283
|
+
<symphiq-focus-area-executive-summary
|
|
98284
|
+
[viewMode]="viewMode()"
|
|
98285
|
+
[summary]="summary"
|
|
98286
|
+
[allGoals]="allGoals()"
|
|
98287
|
+
(topPrioritiesClick)="handleTopPrioritiesClick()"
|
|
98288
|
+
(priorityDetailClick)="handlePriorityDetailClick($event)"
|
|
98289
|
+
/>
|
|
98290
|
+
}
|
|
98291
|
+
|
|
98292
|
+
<!-- Divider Before First Section -->
|
|
98293
|
+
@if (sections(); as sectionList) {
|
|
98294
|
+
@if (sectionList.length > 0 && sectionList[0].icon) {
|
|
98295
|
+
<symphiq-section-divider
|
|
98296
|
+
[viewMode]="viewMode()"
|
|
98297
|
+
[sectionIcon]="sectionList[0].icon"
|
|
98298
|
+
/>
|
|
98299
|
+
}
|
|
98300
|
+
}
|
|
98301
|
+
|
|
98302
|
+
<!-- Profile Analysis Sections -->
|
|
98303
|
+
@if (sections(); as sectionList) {
|
|
98304
|
+
<section class="space-y-8">
|
|
98305
|
+
@for (section of sectionList; track section.id; let idx = $index; let last = $last) {
|
|
98306
|
+
<div [id]="'section-' + section.id" [ngClass]="getSectionCardClasses()"
|
|
98307
|
+
class="rounded-xl p-8 scroll-mt-24">
|
|
98308
|
+
<!-- Icon and Title -->
|
|
98309
|
+
<div class="flex items-start gap-3 mb-6">
|
|
98310
|
+
@if (section.icon) {
|
|
98311
|
+
<div [ngClass]="getSectionIconClasses()"
|
|
98312
|
+
class="flex-shrink-0 w-12 h-12 rounded-xl flex items-center justify-center">
|
|
98313
|
+
<symphiq-icon [icon]="section.icon" size="w-6 h-6"></symphiq-icon>
|
|
98314
|
+
</div>
|
|
98315
|
+
}
|
|
98316
|
+
<div class="flex-1">
|
|
98317
|
+
<h3 [ngClass]="getSectionTitleClasses()" class="text-2xl font-bold">
|
|
98318
|
+
{{ section.title }}
|
|
98319
|
+
</h3>
|
|
98320
|
+
</div>
|
|
98321
|
+
</div>
|
|
98322
|
+
|
|
98323
|
+
<!-- Description and Visual Side-by-Side -->
|
|
98324
|
+
@if (section.description || (section.visual && section.visual.enabled)) {
|
|
98325
|
+
<div class="mb-6 flex flex-col lg:flex-row gap-6 items-start"
|
|
98326
|
+
[class.lg:flex-row-reverse]="idx % 2 === 0">
|
|
98327
|
+
@if (section.visual && section.visual.enabled) {
|
|
98328
|
+
<div class="w-full lg:w-2/3">
|
|
98329
|
+
<symphiq-napkin-visual-placeholder
|
|
98330
|
+
[visual]="section.visual"
|
|
98331
|
+
[viewMode]="viewMode()"
|
|
98332
|
+
/>
|
|
98333
|
+
</div>
|
|
98334
|
+
}
|
|
98335
|
+
@if (section.description) {
|
|
98336
|
+
<div class="w-full"
|
|
98337
|
+
[class.lg:w-1/3]="section.visual && section.visual.enabled" [class.lg:w-full]="!section.visual || !section.visual.enabled">
|
|
98338
|
+
<p [ngClass]="getSectionDescriptionClasses()"
|
|
98339
|
+
class="text-sm leading-relaxed whitespace-pre-line">
|
|
98340
|
+
{{ section.description }}
|
|
98341
|
+
</p>
|
|
98342
|
+
</div>
|
|
98343
|
+
}
|
|
98344
|
+
</div>
|
|
98345
|
+
}
|
|
98346
|
+
|
|
98347
|
+
<!-- Section Content -->
|
|
98348
|
+
<symphiq-profile-section-content
|
|
98349
|
+
[section]="section"
|
|
98350
|
+
[viewMode]="viewMode()"
|
|
98351
|
+
[sectionIndex]="idx"
|
|
98352
|
+
[allGoals]="allGoals()"
|
|
98353
|
+
[allMetrics]="allMetrics()"
|
|
98354
|
+
[allCharts]="allCharts()"
|
|
98355
|
+
[allInsights]="allInsights()"
|
|
98356
|
+
[businessProfile]="profile()"
|
|
98357
|
+
/>
|
|
98358
|
+
</div>
|
|
98359
|
+
|
|
98360
|
+
<!-- Section Divider (between sections) -->
|
|
98361
|
+
@if (!last) {
|
|
98362
|
+
<symphiq-section-divider
|
|
98363
|
+
[viewMode]="viewMode()"
|
|
98364
|
+
[sectionIcon]="sectionList[idx + 1].icon"
|
|
98365
|
+
/>
|
|
98366
|
+
}
|
|
98367
|
+
}
|
|
98368
|
+
</section>
|
|
98369
|
+
}
|
|
98370
|
+
}
|
|
98371
|
+
|
|
98372
|
+
</main>
|
|
98373
|
+
|
|
98374
|
+
<!-- Table of Contents (Compact & Expanded Views) -->
|
|
98375
|
+
@if (!isSimplifiedView() && sections()) {
|
|
98376
|
+
<symphiq-floating-toc
|
|
98377
|
+
[sections]="tocSections()"
|
|
98378
|
+
[viewMode]="viewMode()"
|
|
98379
|
+
[embedded]="embedded()"
|
|
98380
|
+
[scrollElement]="scrollElement() ?? undefined"
|
|
98381
|
+
/>
|
|
98382
|
+
}
|
|
98383
|
+
|
|
98384
|
+
<!-- Section Navigation Dots (Compact & Expanded Views) -->
|
|
98385
|
+
@if (!isSimplifiedView() && sections()) {
|
|
98386
|
+
<symphiq-section-navigation
|
|
98387
|
+
[sections]="tocSections()"
|
|
98388
|
+
[viewMode]="viewMode()"
|
|
98389
|
+
[embedded]="embedded()"
|
|
98390
|
+
[scrollElement]="scrollElement() ?? undefined"
|
|
98391
|
+
/>
|
|
98392
|
+
}
|
|
98393
|
+
|
|
98394
|
+
<!-- Search Modal -->
|
|
98395
|
+
<symphiq-search-modal
|
|
98396
|
+
[isOpen]="isSearchOpen()"
|
|
98397
|
+
[isLightMode]="isLightMode()"
|
|
98398
|
+
(close)="closeSearch()"
|
|
98399
|
+
/>
|
|
98400
|
+
|
|
98401
|
+
<!-- View Mode Switcher Modal -->
|
|
98402
|
+
<symphiq-view-mode-switcher-modal
|
|
98403
|
+
[isOpen]="isViewModeSwitcherOpen()"
|
|
98404
|
+
[currentMode]="currentDisplayMode()"
|
|
98405
|
+
[viewMode]="viewMode()"
|
|
98406
|
+
(close)="closeViewModeSwitcher()"
|
|
98407
|
+
(modeSelected)="handleDisplayModeChange($event)"
|
|
98408
|
+
/>
|
|
98409
|
+
|
|
98410
|
+
<!-- Profile Analysis Modal -->
|
|
98411
|
+
<symphiq-profile-analysis-modal
|
|
98412
|
+
[isLightMode]="isLightMode()"
|
|
98413
|
+
[allMetrics]="allMetrics()"
|
|
98414
|
+
[allInsights]="allInsights()"
|
|
98415
|
+
[allBusinessInsights]="allBusinessInsights()"
|
|
98416
|
+
[allCharts]="allCharts()"
|
|
98417
|
+
>
|
|
98418
|
+
@if (modalType() === 'goal-detail' && getGoalDetailData(); as data) {
|
|
98419
|
+
<symphiq-goal-card
|
|
98420
|
+
[goal]="data.goal"
|
|
98421
|
+
[viewMode]="data.viewMode"
|
|
98422
|
+
[isInModal]="true"
|
|
98423
|
+
[allMetrics]="allMetrics()"
|
|
98424
|
+
[allCharts]="allCharts()"
|
|
98425
|
+
[allInsights]="allInsights()"
|
|
98426
|
+
[currentModalState]="getCurrentModalState()"
|
|
98427
|
+
[businessProfile]="profile()"
|
|
98428
|
+
/>
|
|
98429
|
+
}
|
|
98430
|
+
@if (modalType() === 'goal-objectives' && getGoalDetailData(); as data) {
|
|
98431
|
+
<symphiq-goal-objectives-modal-content
|
|
98432
|
+
[goal]="data.goal"
|
|
98433
|
+
[viewMode]="data.viewMode"
|
|
98434
|
+
/>
|
|
98435
|
+
}
|
|
98436
|
+
@if (modalType() === 'objective-strategies' && getObjectiveStrategiesData(); as data) {
|
|
98437
|
+
<symphiq-objective-strategies-modal-content
|
|
98438
|
+
[objective]="data.objective"
|
|
98439
|
+
[goalTitle]="data.goalTitle"
|
|
98440
|
+
[viewMode]="data.viewMode"
|
|
98441
|
+
/>
|
|
98442
|
+
}
|
|
98443
|
+
@if (modalType() === 'strategy-recommendations' && getStrategyRecommendationsData(); as data) {
|
|
98444
|
+
<symphiq-strategy-recommendations-modal-content
|
|
98445
|
+
[strategy]="data.strategy"
|
|
98446
|
+
[objectiveTitle]="data.objectiveTitle"
|
|
98447
|
+
[goalTitle]="data.goalTitle"
|
|
98448
|
+
[viewMode]="data.viewMode"
|
|
98449
|
+
[expandedRecommendationId]="data.expandedRecommendationId"
|
|
98450
|
+
[allMetrics]="allMetrics()"
|
|
98451
|
+
[allCharts]="allCharts()"
|
|
98452
|
+
[allInsights]="allInsights()"
|
|
98453
|
+
[allBusinessInsights]="allBusinessInsights()"
|
|
98454
|
+
[currentModalState]="getCurrentModalState()"
|
|
98455
|
+
/>
|
|
98456
|
+
}
|
|
98457
|
+
@if (modalType() === 'category-detail' && getCategoryDetailData(); as data) {
|
|
98458
|
+
<symphiq-category-detail-modal-content
|
|
98459
|
+
[category]="data.category"
|
|
98460
|
+
[viewMode]="data.viewMode"
|
|
98461
|
+
[scrollToSection]="data.scrollToSection"
|
|
98462
|
+
/>
|
|
98463
|
+
}
|
|
98464
|
+
@if (modalType() === 'strength-detail' && getStrengthDetailData(); as data) {
|
|
98465
|
+
<symphiq-strength-detail-modal-content
|
|
98466
|
+
[strength]="data.strength"
|
|
98467
|
+
[viewMode]="data.viewMode"
|
|
98468
|
+
[allFunnelStrengths]="funnelStrengths()"
|
|
98469
|
+
[currentModalState]="getCurrentModalState()"
|
|
98470
|
+
/>
|
|
98471
|
+
}
|
|
98472
|
+
@if (modalType() === 'gap-detail' && getGapDetailData(); as data) {
|
|
98473
|
+
<symphiq-gap-detail-modal-content
|
|
98474
|
+
[gap]="data.gap"
|
|
98475
|
+
[viewMode]="data.viewMode"
|
|
98476
|
+
[allGoals]="allGoals()"
|
|
98477
|
+
[allWeaknesses]="funnelWeaknesses()"
|
|
98478
|
+
[currentModalState]="getCurrentModalState()"
|
|
98479
|
+
/>
|
|
98480
|
+
}
|
|
98481
|
+
@if (modalType() === 'opportunity-detail' && getOpportunityDetailData(); as data) {
|
|
98482
|
+
<symphiq-opportunity-detail-modal-content
|
|
98483
|
+
[opportunity]="data.opportunity"
|
|
98484
|
+
[viewMode]="data.viewMode"
|
|
98485
|
+
[allStrengths]="funnelStrengths()"
|
|
98486
|
+
[currentModalState]="getCurrentModalState()"
|
|
98487
|
+
/>
|
|
98488
|
+
}
|
|
98489
|
+
</symphiq-profile-analysis-modal>
|
|
98490
|
+
|
|
98491
|
+
<!-- Funnel Analysis Modal -->
|
|
98492
|
+
<symphiq-funnel-analysis-modal
|
|
98493
|
+
#funnelModalComponent
|
|
98494
|
+
/>
|
|
98495
|
+
|
|
98496
|
+
<!-- Mark as Reviewed Sticky Footer -->
|
|
98497
|
+
<symphiq-mark-as-reviewed-footer
|
|
98498
|
+
[viewMode]="viewMode()"
|
|
98499
|
+
[reviewStatus]="profileAnalysis()?.reviewStatus"
|
|
98500
|
+
[selfContentStatus]="profileAnalysis()?.selfContentStatus"
|
|
98501
|
+
[isMarkingAsReviewed]="isMarkingAsReviewed()"
|
|
98502
|
+
(markAsReviewedClick)="handleMarkAsReviewedClick()"
|
|
98503
|
+
/>
|
|
98504
|
+
|
|
98505
|
+
<!-- Tooltip Container -->
|
|
98506
|
+
<symphiq-tooltip-container />
|
|
98507
|
+
</div>
|
|
98508
|
+
</div>
|
|
98509
|
+
`
|
|
98510
|
+
}]
|
|
98511
|
+
}], null, { funnelModalComponent: [{
|
|
98512
|
+
type: ViewChild,
|
|
98513
|
+
args: ['funnelModalComponent']
|
|
98514
|
+
}], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], profileAnalysis: [{ type: i0.Input, args: [{ isSignal: true, alias: "profileAnalysis", required: false }] }], funnelAnalysis: [{ type: i0.Input, args: [{ isSignal: true, alias: "funnelAnalysis", required: false }] }], profile: [{ type: i0.Input, args: [{ isSignal: true, alias: "profile", required: false }] }], isLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLoading", required: false }] }], requestedByUser: [{ type: i0.Input, args: [{ isSignal: true, alias: "requestedByUser", required: false }] }], embedded: [{ type: i0.Input, args: [{ isSignal: true, alias: "embedded", required: false }] }], scrollEvent: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollEvent", required: false }] }], scrollElement: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollElement", required: false }] }], focusAreaDetails: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusAreaDetails", required: false }] }], itemStatusProfileAnalysis: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemStatusProfileAnalysis", required: false }] }], isMarkingAsReviewed: [{ type: i0.Input, args: [{ isSignal: true, alias: "isMarkingAsReviewed", required: false }] }], nextStepClick: [{ type: i0.Output, args: ["nextStepClick"] }], markAsReviewedClick: [{ type: i0.Output, args: ["markAsReviewedClick"] }], onWindowScroll: [{
|
|
98515
|
+
type: HostListener,
|
|
98516
|
+
args: ['window:scroll', ['$event']]
|
|
98517
|
+
}] }); })();
|
|
98518
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqProfileAnalysisFocusAreaDashboardComponent, { className: "SymphiqProfileAnalysisFocusAreaDashboardComponent", filePath: "lib/components/profile-analysis-focus-area-dashboard/symphiq-profile-analysis-focus-area-dashboard.component.ts", lineNumber: 481 }); })();
|
|
98252
98519
|
|
|
98253
|
-
|
|
98254
|
-
|
|
98255
|
-
|
|
98256
|
-
|
|
98257
|
-
|
|
98258
|
-
|
|
98259
|
-
|
|
98260
|
-
|
|
98261
|
-
|
|
98262
|
-
|
|
98263
|
-
|
|
98264
|
-
|
|
98265
|
-
|
|
98266
|
-
|
|
98520
|
+
function SymphiqProfileMetricsAnalysesDashboardComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
98521
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
98522
|
+
i0.ɵɵelementStart(0, "symphiq-journey-progress-indicator", 35);
|
|
98523
|
+
i0.ɵɵlistener("nextStepClick", function SymphiqProfileMetricsAnalysesDashboardComponent_Conditional_6_Template_symphiq_journey_progress_indicator_nextStepClick_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.nextStepClick.emit()); })("stepClick", function SymphiqProfileMetricsAnalysesDashboardComponent_Conditional_6_Template_symphiq_journey_progress_indicator_stepClick_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.stepClick.emit($event)); });
|
|
98524
|
+
i0.ɵɵelementEnd();
|
|
98525
|
+
} if (rf & 2) {
|
|
98526
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
98527
|
+
i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("currentStepId", ctx_r1.currentStepId())("showNextStepAction", ctx_r1.forDemo() || ctx_r1.allMetricsAnalysisReviewed())("forDemo", ctx_r1.forDemo())("maxAccessibleStepId", ctx_r1.maxAccessibleStepId());
|
|
98528
|
+
} }
|
|
98529
|
+
function SymphiqProfileMetricsAnalysesDashboardComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
98530
|
+
i0.ɵɵelement(0, "symphiq-profile-analysis-status-summary", 16);
|
|
98531
|
+
} if (rf & 2) {
|
|
98532
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
98533
|
+
i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("profileStatusCounts", ctx_r1.metricStatusCounts())("analysisStatusCounts", ctx_r1.analysisStatusCounts())("allReviewed", ctx_r1.allMetricsAnalysisReviewed())("hasItems", ctx_r1.metricCards().length > 0)("config", ctx_r1.metricStatusConfig);
|
|
98534
|
+
} }
|
|
98535
|
+
function SymphiqProfileMetricsAnalysesDashboardComponent_Conditional_65_Template(rf, ctx) { if (rf & 1) {
|
|
98536
|
+
const _r3 = i0.ɵɵgetCurrentView();
|
|
98537
|
+
i0.ɵɵelementStart(0, "symphiq-search-modal", 36);
|
|
98538
|
+
i0.ɵɵlistener("closeModal", function SymphiqProfileMetricsAnalysesDashboardComponent_Conditional_65_Template_symphiq_search_modal_closeModal_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.handleCloseSearchModal()); });
|
|
98539
|
+
i0.ɵɵelementEnd();
|
|
98540
|
+
} }
|
|
98541
|
+
class SymphiqProfileMetricsAnalysesDashboardComponent {
|
|
98542
|
+
constructor() {
|
|
98543
|
+
this.requestedByUser = input(...(ngDevMode ? [undefined, { debugName: "requestedByUser" }] : []));
|
|
98544
|
+
this.createdDate = input(...(ngDevMode ? [undefined, { debugName: "createdDate" }] : []));
|
|
98545
|
+
this.embedded = input(false, ...(ngDevMode ? [{ debugName: "embedded" }] : []));
|
|
98546
|
+
this.profileAnalyses = input(...(ngDevMode ? [undefined, { debugName: "profileAnalyses" }] : []));
|
|
98547
|
+
this.profileMetrics = input(...(ngDevMode ? [undefined, { debugName: "profileMetrics" }] : []));
|
|
98548
|
+
this.itemStatusesProfileMetric = input(...(ngDevMode ? [undefined, { debugName: "itemStatusesProfileMetric" }] : []));
|
|
98549
|
+
this.itemStatusesProfileAnalysis = input(...(ngDevMode ? [undefined, { debugName: "itemStatusesProfileAnalysis" }] : []));
|
|
98550
|
+
this.profile = input(...(ngDevMode ? [undefined, { debugName: "profile" }] : []));
|
|
98551
|
+
this.funnelAnalysis = input(...(ngDevMode ? [undefined, { debugName: "funnelAnalysis" }] : []));
|
|
98552
|
+
this.funnelMetrics = input(...(ngDevMode ? [undefined, { debugName: "funnelMetrics" }] : []));
|
|
98553
|
+
this.account = input(...(ngDevMode ? [undefined, { debugName: "account" }] : []));
|
|
98554
|
+
this.profileMetricQuestions = input(...(ngDevMode ? [undefined, { debugName: "profileMetricQuestions" }] : []));
|
|
98555
|
+
this.isOnboarded = input(false, ...(ngDevMode ? [{ debugName: "isOnboarded" }] : []));
|
|
98556
|
+
this.scrollEvent = input(...(ngDevMode ? [undefined, { debugName: "scrollEvent" }] : []));
|
|
98557
|
+
this.scrollElement = input(...(ngDevMode ? [undefined, { debugName: "scrollElement" }] : []));
|
|
98558
|
+
this.users = input([], ...(ngDevMode ? [{ debugName: "users" }] : []));
|
|
98559
|
+
this.isLoading = input(...(ngDevMode ? [undefined, { debugName: "isLoading" }] : []));
|
|
98560
|
+
this.forDemo = input(false, ...(ngDevMode ? [{ debugName: "forDemo" }] : []));
|
|
98561
|
+
this.currentUser = input(...(ngDevMode ? [undefined, { debugName: "currentUser" }] : []));
|
|
98562
|
+
this.maxAccessibleStepId = input(undefined, ...(ngDevMode ? [{ debugName: "maxAccessibleStepId" }] : []));
|
|
98563
|
+
this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
|
|
98564
|
+
this.displayMode = input(DisplayModeEnum.SIMPLIFIED, ...(ngDevMode ? [{ debugName: "displayMode" }] : []));
|
|
98565
|
+
this.currentStepId = input(JourneyStepIdEnum.METRIC_ANALYSIS, ...(ngDevMode ? [{ debugName: "currentStepId" }] : []));
|
|
98566
|
+
this.navigateToProfileMetric = output();
|
|
98567
|
+
this.navigateToProfileAnalysis = output();
|
|
98568
|
+
this.stepClick = output();
|
|
98569
|
+
this.nextStepClick = output();
|
|
98570
|
+
this.answerMetricProfileQuestions = output();
|
|
98571
|
+
this.continueMetricProfileQuestions = output();
|
|
98572
|
+
this.profileQuestionAnswerSave = output();
|
|
98573
|
+
this.metricProfileAdminAnswerAction = output();
|
|
98574
|
+
this.showSearchModal = signal(false, ...(ngDevMode ? [{ debugName: "showSearchModal" }] : []));
|
|
98575
|
+
this.scrollProgress = signal(0, ...(ngDevMode ? [{ debugName: "scrollProgress" }] : []));
|
|
98576
|
+
this.headerScrollService = inject(HeaderScrollService);
|
|
98577
|
+
this.isLightMode = computed(() => this.viewMode() === ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "isLightMode" }] : []));
|
|
98578
|
+
this.isSimplifiedView = computed(() => this.displayMode() === DisplayModeEnum.SIMPLIFIED, ...(ngDevMode ? [{ debugName: "isSimplifiedView" }] : []));
|
|
98579
|
+
this.AiDynamicContentStatusEnum = AiDynamicContentStatusEnum;
|
|
98580
|
+
this.ProfileAnalysisReviewStatusEnum = ProfileAnalysisReviewStatusEnum;
|
|
98581
|
+
this.metricStatusConfig = {
|
|
98582
|
+
profileSectionTitle: 'Metric Profiles',
|
|
98583
|
+
profileSectionIcon: 'chart',
|
|
98584
|
+
analysisSectionTitle: 'Metric Analyses',
|
|
98585
|
+
analysisSectionIcon: 'chart',
|
|
98586
|
+
allReviewedMessage: 'All Metric Analyses Reviewed!',
|
|
98587
|
+
noAnalysesMessage: 'No metric analyses yet'
|
|
98588
|
+
};
|
|
98589
|
+
this.metricCardConfig = {
|
|
98590
|
+
toolsLabel: '',
|
|
98591
|
+
profileProgressLabel: 'Profile progress',
|
|
98592
|
+
generatingProfileTitle: 'Generating Metric Profile',
|
|
98593
|
+
generatingAnalysisTitle: 'Generating Metric Analysis',
|
|
98594
|
+
notInterestedSectionLabel: '',
|
|
98595
|
+
showNotInterestedSection: false
|
|
98596
|
+
};
|
|
98597
|
+
this.COLLAPSE_THRESHOLD = 50;
|
|
98598
|
+
this.EXPAND_THRESHOLD = 10;
|
|
98599
|
+
this.embeddedScrollEffect = effect(() => {
|
|
98600
|
+
const scrollEvent = this.scrollEvent();
|
|
98601
|
+
const isEmbedded = this.embedded();
|
|
98602
|
+
if (isEmbedded && !scrollEvent) {
|
|
98603
|
+
return;
|
|
98267
98604
|
}
|
|
98268
|
-
|
|
98269
|
-
|
|
98270
|
-
<!-- Compact & Expanded View Content -->
|
|
98271
|
-
@if (!isSimplifiedView()) {
|
|
98272
|
-
<!-- Focus Area Executive Summary -->
|
|
98273
|
-
@if (focusAreaExecutiveSummary(); as summary) {
|
|
98274
|
-
<symphiq-focus-area-executive-summary
|
|
98275
|
-
[viewMode]="viewMode()"
|
|
98276
|
-
[summary]="summary"
|
|
98277
|
-
[allGoals]="allGoals()"
|
|
98278
|
-
(topPrioritiesClick)="handleTopPrioritiesClick()"
|
|
98279
|
-
(priorityDetailClick)="handlePriorityDetailClick($event)"
|
|
98280
|
-
/>
|
|
98605
|
+
if (!scrollEvent || !isEmbedded) {
|
|
98606
|
+
return;
|
|
98281
98607
|
}
|
|
98282
|
-
|
|
98283
|
-
|
|
98284
|
-
|
|
98285
|
-
@if (sectionList.length > 0 && sectionList[0].icon) {
|
|
98286
|
-
<symphiq-section-divider
|
|
98287
|
-
[viewMode]="viewMode()"
|
|
98288
|
-
[sectionIcon]="sectionList[0].icon"
|
|
98289
|
-
/>
|
|
98290
|
-
}
|
|
98608
|
+
const detail = scrollEvent.detail;
|
|
98609
|
+
if (!detail) {
|
|
98610
|
+
return;
|
|
98291
98611
|
}
|
|
98292
|
-
|
|
98293
|
-
|
|
98294
|
-
|
|
98295
|
-
|
|
98296
|
-
|
|
98297
|
-
|
|
98298
|
-
|
|
98299
|
-
|
|
98300
|
-
|
|
98301
|
-
|
|
98302
|
-
<div [ngClass]="getSectionIconClasses()"
|
|
98303
|
-
class="flex-shrink-0 w-12 h-12 rounded-xl flex items-center justify-center">
|
|
98304
|
-
<symphiq-icon [icon]="section.icon" size="w-6 h-6"></symphiq-icon>
|
|
98305
|
-
</div>
|
|
98306
|
-
}
|
|
98307
|
-
<div class="flex-1">
|
|
98308
|
-
<h3 [ngClass]="getSectionTitleClasses()" class="text-2xl font-bold">
|
|
98309
|
-
{{ section.title }}
|
|
98310
|
-
</h3>
|
|
98311
|
-
</div>
|
|
98312
|
-
</div>
|
|
98313
|
-
|
|
98314
|
-
<!-- Description and Visual Side-by-Side -->
|
|
98315
|
-
@if (section.description || (section.visual && section.visual.enabled)) {
|
|
98316
|
-
<div class="mb-6 flex flex-col lg:flex-row gap-6 items-start"
|
|
98317
|
-
[class.lg:flex-row-reverse]="idx % 2 === 0">
|
|
98318
|
-
@if (section.visual && section.visual.enabled) {
|
|
98319
|
-
<div class="w-full lg:w-2/3">
|
|
98320
|
-
<symphiq-napkin-visual-placeholder
|
|
98321
|
-
[visual]="section.visual"
|
|
98322
|
-
[viewMode]="viewMode()"
|
|
98323
|
-
/>
|
|
98324
|
-
</div>
|
|
98325
|
-
}
|
|
98326
|
-
@if (section.description) {
|
|
98327
|
-
<div class="w-full"
|
|
98328
|
-
[class.lg:w-1/3]="section.visual && section.visual.enabled" [class.lg:w-full]="!section.visual || !section.visual.enabled">
|
|
98329
|
-
<p [ngClass]="getSectionDescriptionClasses()"
|
|
98330
|
-
class="text-sm leading-relaxed whitespace-pre-line">
|
|
98331
|
-
{{ section.description }}
|
|
98332
|
-
</p>
|
|
98333
|
-
</div>
|
|
98334
|
-
}
|
|
98335
|
-
</div>
|
|
98336
|
-
}
|
|
98337
|
-
|
|
98338
|
-
<!-- Section Content -->
|
|
98339
|
-
<symphiq-profile-section-content
|
|
98340
|
-
[section]="section"
|
|
98341
|
-
[viewMode]="viewMode()"
|
|
98342
|
-
[sectionIndex]="idx"
|
|
98343
|
-
[allGoals]="allGoals()"
|
|
98344
|
-
[allMetrics]="allMetrics()"
|
|
98345
|
-
[allCharts]="allCharts()"
|
|
98346
|
-
[allInsights]="allInsights()"
|
|
98347
|
-
[businessProfile]="profile()"
|
|
98348
|
-
/>
|
|
98349
|
-
</div>
|
|
98350
|
-
|
|
98351
|
-
<!-- Section Divider (between sections) -->
|
|
98352
|
-
@if (!last) {
|
|
98353
|
-
<symphiq-section-divider
|
|
98354
|
-
[viewMode]="viewMode()"
|
|
98355
|
-
[sectionIcon]="sectionList[idx + 1].icon"
|
|
98356
|
-
/>
|
|
98357
|
-
}
|
|
98612
|
+
const scrollTop = detail.scrollTop || 0;
|
|
98613
|
+
this.headerScrollService.handleEmbeddedScroll(scrollTop, this.COLLAPSE_THRESHOLD, this.EXPAND_THRESHOLD);
|
|
98614
|
+
const scrollElement = this.scrollElement();
|
|
98615
|
+
if (scrollElement) {
|
|
98616
|
+
const scrollHeight = scrollElement.scrollHeight || 0;
|
|
98617
|
+
const clientHeight = scrollElement.clientHeight || 0;
|
|
98618
|
+
const maxScroll = scrollHeight - clientHeight;
|
|
98619
|
+
if (maxScroll > 0) {
|
|
98620
|
+
const progress = (scrollTop / maxScroll) * 100;
|
|
98621
|
+
this.scrollProgress.set(Math.min(100, Math.max(0, progress)));
|
|
98358
98622
|
}
|
|
98359
|
-
</section>
|
|
98360
98623
|
}
|
|
98361
|
-
|
|
98362
|
-
|
|
98363
|
-
|
|
98364
|
-
|
|
98365
|
-
|
|
98366
|
-
|
|
98367
|
-
|
|
98368
|
-
|
|
98369
|
-
|
|
98370
|
-
|
|
98371
|
-
|
|
98372
|
-
|
|
98624
|
+
}, ...(ngDevMode ? [{ debugName: "embeddedScrollEffect" }] : []));
|
|
98625
|
+
this.metricCards = computed(() => {
|
|
98626
|
+
const funnelMetricsData = this.funnelMetrics();
|
|
98627
|
+
const profileMetricsData = this.profileMetrics();
|
|
98628
|
+
const profileAnalysesData = this.profileAnalyses();
|
|
98629
|
+
const itemStatusesProfileMetricData = this.itemStatusesProfileMetric();
|
|
98630
|
+
const itemStatusesProfileAnalysisData = this.itemStatusesProfileAnalysis();
|
|
98631
|
+
const profileMetricQuestionsData = this.profileMetricQuestions();
|
|
98632
|
+
const isDemo = this.forDemo();
|
|
98633
|
+
const funnelStageMetrics = [
|
|
98634
|
+
MetricEnum.SCREEN_PAGE_VIEWS,
|
|
98635
|
+
MetricEnum.ITEM_VIEW_EVENTS,
|
|
98636
|
+
MetricEnum.ADD_TO_CARTS,
|
|
98637
|
+
MetricEnum.CHECKOUTS,
|
|
98638
|
+
MetricEnum.ECOMMERCE_PURCHASES,
|
|
98639
|
+
MetricEnum.PURCHASE_REVENUE
|
|
98640
|
+
];
|
|
98641
|
+
const mockProgressData = {
|
|
98642
|
+
[MetricEnum.SCREEN_PAGE_VIEWS]: { answered: 10, total: 12, hasAnalysis: true },
|
|
98643
|
+
[MetricEnum.ITEM_VIEW_EVENTS]: { answered: 8, total: 11, hasAnalysis: true },
|
|
98644
|
+
[MetricEnum.ADD_TO_CARTS]: { answered: 5, total: 10, hasAnalysis: false },
|
|
98645
|
+
[MetricEnum.CHECKOUTS]: { answered: 7, total: 9, hasAnalysis: true },
|
|
98646
|
+
[MetricEnum.ECOMMERCE_PURCHASES]: { answered: 0, total: 8, hasAnalysis: false },
|
|
98647
|
+
[MetricEnum.PURCHASE_REVENUE]: { answered: 0, total: 10, hasAnalysis: false },
|
|
98648
|
+
[MetricEnum.SESSIONS]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98649
|
+
[MetricEnum.SESSIONS_PER_DAY]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98650
|
+
[MetricEnum.ACTIVE_USERS]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98651
|
+
[MetricEnum.ACTIVE_USERS_PER_DAY]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98652
|
+
[MetricEnum.TRANSACTIONS]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98653
|
+
[MetricEnum.TRANSACTIONS_PER_DAY]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98654
|
+
[MetricEnum.PURCHASE_REVENUE_PER_DAY]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98655
|
+
[MetricEnum.AVERAGE_ORDER_VALUE]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98656
|
+
[MetricEnum.NEW_USERS]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98657
|
+
[MetricEnum.NEW_USERS_PER_DAY]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98658
|
+
[MetricEnum.USER_ENGAGEMENT_DURATION]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98659
|
+
[MetricEnum.SCREEN_PAGE_VIEWS_PER_DAY]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98660
|
+
[MetricEnum.BOUNCES]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98661
|
+
[MetricEnum.BOUNCE_RATE]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98662
|
+
[MetricEnum.ADD_TO_CARTS_PER_DAY]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98663
|
+
[MetricEnum.CHECKOUTS_PER_DAY]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98664
|
+
[MetricEnum.ECOMMERCE_PURCHASES_PER_DAY]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98665
|
+
[MetricEnum.ECOMMERCE_CONVERSION_RATE]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98666
|
+
[MetricEnum.GROSS_PURCHASE_REVENUE]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98667
|
+
[MetricEnum.GROSS_PURCHASE_REVENUE_PER_DAY]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98668
|
+
[MetricEnum.ITEM_VIEW_EVENTS_PER_DAY]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98669
|
+
[MetricEnum.PROMOTION_CLICKS]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98670
|
+
[MetricEnum.PROMOTION_CLICKS_PER_DAY]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98671
|
+
[MetricEnum.PROMOTION_VIEWS]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98672
|
+
[MetricEnum.PROMOTION_VIEWS_PER_DAY]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98673
|
+
[MetricEnum.REFUND_AMOUNT]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98674
|
+
[MetricEnum.SHIPPING_AMOUNT]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98675
|
+
[MetricEnum.TAX_AMOUNT]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98676
|
+
[MetricEnum.ACTIVE_USER_ADD_TO_CART_RATE]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98677
|
+
[MetricEnum.REVENUE_PER_PRODUCT_VIEW]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98678
|
+
[MetricEnum.REVENUE_PER_ADD_TO_CART]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98679
|
+
[MetricEnum.REVENUE_PER_CHECKOUT]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98680
|
+
[MetricEnum.VIEW_TO_PRODUCT_VIEW_CONVERSION_RATE]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98681
|
+
[MetricEnum.PRODUCT_VIEW_TO_CART_CONVERSION_RATE]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98682
|
+
[MetricEnum.CART_TO_CHECKOUT_CONVERSION_RATE]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98683
|
+
[MetricEnum.CHECKOUT_TO_PURCHASE_CONVERSION_RATE]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98684
|
+
[MetricEnum.PRODUCT_VIEW_CONVERSION_RATE]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98685
|
+
[MetricEnum.PRODUCT_VIEW_RATE]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98686
|
+
[MetricEnum.ADD_TO_CART_CONVERSION_RATE]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98687
|
+
[MetricEnum.ADD_TO_CART_RATE]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98688
|
+
[MetricEnum.CHECKOUT_CONVERSION_RATE]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98689
|
+
[MetricEnum.ACTIVE_USER_CHECKOUT_RATE]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98690
|
+
[MetricEnum.GROSS_ITEM_REVENUE]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98691
|
+
[MetricEnum.ITEM_DISCOUNT_AMOUNT]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98692
|
+
[MetricEnum.ITEM_REFUND_AMOUNT]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98693
|
+
[MetricEnum.ITEM_REVENUE]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98694
|
+
[MetricEnum.ITEMS_ADDED_TO_CART]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98695
|
+
[MetricEnum.ITEMS_CHECKED_OUT]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98696
|
+
[MetricEnum.ITEMS_CLICKED_IN_LIST]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98697
|
+
[MetricEnum.ITEMS_CLICKED_IN_PROMOTION]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98698
|
+
[MetricEnum.ITEMS_PURCHASED]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98699
|
+
[MetricEnum.ITEMS_VIEWED]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98700
|
+
[MetricEnum.ITEMS_VIEWED_IN_LIST]: { answered: 0, total: 0, hasAnalysis: false },
|
|
98701
|
+
[MetricEnum.ITEMS_VIEWED_IN_PROMOTION]: { answered: 0, total: 0, hasAnalysis: false }
|
|
98702
|
+
};
|
|
98703
|
+
const funnelMetricsMap = new Map(funnelMetricsData?.map(fm => [fm.funnelMetric, fm]));
|
|
98704
|
+
const profileMetricsMap = new Map(profileMetricsData?.map(pm => {
|
|
98705
|
+
const funnelMetricId = pm.funnelMetricId;
|
|
98706
|
+
if (!funnelMetricId)
|
|
98707
|
+
return [undefined, pm];
|
|
98708
|
+
const funnelMetric = funnelMetricsData?.find(fm => fm.id === funnelMetricId);
|
|
98709
|
+
return [funnelMetric?.funnelMetric, pm];
|
|
98710
|
+
}).filter(([key]) => key !== undefined));
|
|
98711
|
+
const profileMetricIdToMetricEnumMap = new Map(profileMetricsData?.map(pm => {
|
|
98712
|
+
const funnelMetricId = pm.funnelMetricId;
|
|
98713
|
+
if (!funnelMetricId)
|
|
98714
|
+
return [pm.id, undefined];
|
|
98715
|
+
const funnelMetric = funnelMetricsData?.find(fm => fm.id === funnelMetricId);
|
|
98716
|
+
return [pm.id, funnelMetric?.funnelMetric];
|
|
98717
|
+
}).filter(([, value]) => value !== undefined));
|
|
98718
|
+
const profileAnalysesMap = new Map(profileAnalysesData
|
|
98719
|
+
?.filter(pa => pa.profileMetricId !== undefined)
|
|
98720
|
+
.map(pa => [profileMetricIdToMetricEnumMap.get(pa.profileMetricId), pa])
|
|
98721
|
+
.filter(([key]) => key !== undefined));
|
|
98722
|
+
const itemStatusesProfileMetricMap = new Map(itemStatusesProfileMetricData?.map(is => [is.itemId, is]));
|
|
98723
|
+
const itemStatusesProfileAnalysisMap = new Map(itemStatusesProfileAnalysisData?.map(is => [is.itemId, is]));
|
|
98724
|
+
return funnelStageMetrics.map(metricEnum => {
|
|
98725
|
+
let questionsAnswered = 0;
|
|
98726
|
+
let totalQuestions = 0;
|
|
98727
|
+
let hasAnalysis = false;
|
|
98728
|
+
let status = 'pending';
|
|
98729
|
+
let canViewDetails = false;
|
|
98730
|
+
let selfContentStatusProfileMetric = null;
|
|
98731
|
+
let selfContentStatusProfileAnalysis = null;
|
|
98732
|
+
let itemStatusProfileMetric = null;
|
|
98733
|
+
let itemStatusProfileAnalysis = null;
|
|
98734
|
+
let profileMetric = null;
|
|
98735
|
+
let profileAnalysis = null;
|
|
98736
|
+
if (isDemo) {
|
|
98737
|
+
const mockData = mockProgressData[metricEnum];
|
|
98738
|
+
questionsAnswered = mockData.answered;
|
|
98739
|
+
totalQuestions = mockData.total;
|
|
98740
|
+
hasAnalysis = mockData.hasAnalysis;
|
|
98741
|
+
canViewDetails = true;
|
|
98742
|
+
selfContentStatusProfileMetric = AiDynamicContentStatusEnum.GENERATED;
|
|
98743
|
+
selfContentStatusProfileAnalysis = AiDynamicContentStatusEnum.GENERATED;
|
|
98744
|
+
if (questionsAnswered === totalQuestions && totalQuestions > 0) {
|
|
98745
|
+
status = 'complete';
|
|
98746
|
+
}
|
|
98747
|
+
else if (questionsAnswered > 0) {
|
|
98748
|
+
status = 'in-progress';
|
|
98749
|
+
}
|
|
98750
|
+
else {
|
|
98751
|
+
status = 'not-started';
|
|
98752
|
+
}
|
|
98753
|
+
}
|
|
98754
|
+
else {
|
|
98755
|
+
profileMetric = profileMetricsMap.get(metricEnum) ?? null;
|
|
98756
|
+
profileAnalysis = profileAnalysesMap.get(metricEnum) ?? null;
|
|
98757
|
+
hasAnalysis = !!profileAnalysis;
|
|
98758
|
+
if (profileMetric) {
|
|
98759
|
+
selfContentStatusProfileMetric = profileMetric.selfContentStatus ?? null;
|
|
98760
|
+
canViewDetails = selfContentStatusProfileMetric === AiDynamicContentStatusEnum.GENERATED;
|
|
98761
|
+
const profileMetricId = profileMetric.id;
|
|
98762
|
+
if (profileMetricId) {
|
|
98763
|
+
itemStatusProfileMetric = itemStatusesProfileMetricMap.get(profileMetricId) ?? null;
|
|
98764
|
+
}
|
|
98765
|
+
const questionsForMetric = profileMetricQuestionsData?.filter(q => q.profileMetricId === profileMetricId) ?? [];
|
|
98766
|
+
totalQuestions = questionsForMetric.length;
|
|
98767
|
+
questionsAnswered = questionsForMetric.filter(q => q.answered).length;
|
|
98768
|
+
if (questionsAnswered === totalQuestions && totalQuestions > 0) {
|
|
98769
|
+
status = 'complete';
|
|
98770
|
+
}
|
|
98771
|
+
else if (questionsAnswered > 0) {
|
|
98772
|
+
status = 'in-progress';
|
|
98773
|
+
}
|
|
98774
|
+
else {
|
|
98775
|
+
status = 'not-started';
|
|
98776
|
+
}
|
|
98777
|
+
}
|
|
98778
|
+
if (profileAnalysis) {
|
|
98779
|
+
selfContentStatusProfileAnalysis = profileAnalysis.selfContentStatus ?? null;
|
|
98780
|
+
const profileAnalysisId = profileAnalysis.id;
|
|
98781
|
+
if (profileAnalysisId) {
|
|
98782
|
+
itemStatusProfileAnalysis = itemStatusesProfileAnalysisMap.get(profileAnalysisId) ?? null;
|
|
98783
|
+
}
|
|
98784
|
+
}
|
|
98785
|
+
}
|
|
98786
|
+
const progressPercent = totalQuestions > 0 ? (questionsAnswered / totalQuestions) * 100 : 0;
|
|
98787
|
+
return {
|
|
98788
|
+
metricEnum,
|
|
98789
|
+
title: MetricEnumUtil.title(metricEnum),
|
|
98790
|
+
description: this.getMetricDescription(metricEnum),
|
|
98791
|
+
questionsAnswered,
|
|
98792
|
+
totalQuestions,
|
|
98793
|
+
hasAnalysis,
|
|
98794
|
+
icon: this.getIconForMetric(metricEnum),
|
|
98795
|
+
progressPercent,
|
|
98796
|
+
status,
|
|
98797
|
+
canViewDetails,
|
|
98798
|
+
selfContentStatusProfileMetric,
|
|
98799
|
+
selfContentStatusProfileAnalysis,
|
|
98800
|
+
itemStatusProfileMetric,
|
|
98801
|
+
itemStatusProfileAnalysis,
|
|
98802
|
+
profileMetric,
|
|
98803
|
+
profileAnalysis
|
|
98804
|
+
};
|
|
98805
|
+
});
|
|
98806
|
+
}, ...(ngDevMode ? [{ debugName: "metricCards" }] : []));
|
|
98807
|
+
this.allMetricsAnalysisReviewed = computed(() => {
|
|
98808
|
+
const cards = this.metricCards();
|
|
98809
|
+
if (cards.length === 0) {
|
|
98810
|
+
return false;
|
|
98811
|
+
}
|
|
98812
|
+
return cards.every(card => card.profileAnalysis?.reviewStatus === ProfileAnalysisReviewStatusEnum.REVIEWED);
|
|
98813
|
+
}, ...(ngDevMode ? [{ debugName: "allMetricsAnalysisReviewed" }] : []));
|
|
98814
|
+
this.metricStatusCounts = computed(() => {
|
|
98815
|
+
const cards = this.metricCards();
|
|
98816
|
+
let generating = 0;
|
|
98817
|
+
let notStarted = 0;
|
|
98818
|
+
let inProgress = 0;
|
|
98819
|
+
let completed = 0;
|
|
98820
|
+
for (const card of cards) {
|
|
98821
|
+
const contentStatus = card.selfContentStatusProfileMetric;
|
|
98822
|
+
if (contentStatus === AiDynamicContentStatusEnum.GENERATING || contentStatus === AiDynamicContentStatusEnum.REQUESTED) {
|
|
98823
|
+
generating++;
|
|
98824
|
+
}
|
|
98825
|
+
else if (card.status === 'not-started') {
|
|
98826
|
+
notStarted++;
|
|
98827
|
+
}
|
|
98828
|
+
else if (card.status === 'in-progress') {
|
|
98829
|
+
inProgress++;
|
|
98830
|
+
}
|
|
98831
|
+
else if (card.status === 'complete') {
|
|
98832
|
+
completed++;
|
|
98833
|
+
}
|
|
98834
|
+
}
|
|
98835
|
+
return { generating, notStarted, inProgress, completed };
|
|
98836
|
+
}, ...(ngDevMode ? [{ debugName: "metricStatusCounts" }] : []));
|
|
98837
|
+
this.analysisStatusCounts = computed(() => {
|
|
98838
|
+
const cards = this.metricCards();
|
|
98839
|
+
let generating = 0;
|
|
98840
|
+
let notReviewed = 0;
|
|
98841
|
+
let reviewed = 0;
|
|
98842
|
+
for (const card of cards) {
|
|
98843
|
+
const analysis = card.profileAnalysis;
|
|
98844
|
+
if (!analysis) {
|
|
98845
|
+
continue;
|
|
98846
|
+
}
|
|
98847
|
+
const contentStatus = card.selfContentStatusProfileAnalysis;
|
|
98848
|
+
if (contentStatus === AiDynamicContentStatusEnum.GENERATING || contentStatus === AiDynamicContentStatusEnum.REQUESTED) {
|
|
98849
|
+
generating++;
|
|
98850
|
+
}
|
|
98851
|
+
else if (analysis.reviewStatus === ProfileAnalysisReviewStatusEnum.NOT_REVIEWED) {
|
|
98852
|
+
notReviewed++;
|
|
98853
|
+
}
|
|
98854
|
+
else if (analysis.reviewStatus === ProfileAnalysisReviewStatusEnum.REVIEWED) {
|
|
98855
|
+
reviewed++;
|
|
98856
|
+
}
|
|
98857
|
+
}
|
|
98858
|
+
return { generating, notReviewed, reviewed };
|
|
98859
|
+
}, ...(ngDevMode ? [{ debugName: "analysisStatusCounts" }] : []));
|
|
98860
|
+
this.genericCardData = computed(() => {
|
|
98861
|
+
return this.metricCards().map(card => ({
|
|
98862
|
+
id: card.metricEnum,
|
|
98863
|
+
title: card.title,
|
|
98864
|
+
description: card.description,
|
|
98865
|
+
icon: card.icon,
|
|
98866
|
+
questionsAnswered: card.questionsAnswered,
|
|
98867
|
+
totalQuestions: card.totalQuestions,
|
|
98868
|
+
progressPercent: card.progressPercent,
|
|
98869
|
+
status: card.status,
|
|
98870
|
+
hasAnalysis: card.hasAnalysis,
|
|
98871
|
+
canViewDetails: card.canViewDetails,
|
|
98872
|
+
engagementBadge: null,
|
|
98873
|
+
tools: [],
|
|
98874
|
+
selfContentStatusProfile: card.selfContentStatusProfileMetric,
|
|
98875
|
+
selfContentStatusAnalysis: card.selfContentStatusProfileAnalysis,
|
|
98876
|
+
itemStatusProfile: card.itemStatusProfileMetric,
|
|
98877
|
+
itemStatusAnalysis: card.itemStatusProfileAnalysis,
|
|
98878
|
+
profile: card.profileMetric,
|
|
98879
|
+
profileAnalysis: card.profileAnalysis,
|
|
98880
|
+
isNotInterested: false
|
|
98881
|
+
}));
|
|
98882
|
+
}, ...(ngDevMode ? [{ debugName: "genericCardData" }] : []));
|
|
98883
|
+
}
|
|
98884
|
+
onScroll() {
|
|
98885
|
+
this.headerScrollService.handleScroll(this.embedded());
|
|
98886
|
+
}
|
|
98887
|
+
getCurrentMetricForConfidence() {
|
|
98888
|
+
const cards = this.metricCards();
|
|
98889
|
+
const completedCards = cards.filter(c => c.status === 'complete' || c.profileAnalysis?.reviewStatus === ProfileAnalysisReviewStatusEnum.REVIEWED);
|
|
98890
|
+
if (completedCards.length === 0) {
|
|
98891
|
+
return cards[0]?.metricEnum;
|
|
98373
98892
|
}
|
|
98374
|
-
|
|
98375
|
-
|
|
98376
|
-
@if (!isSimplifiedView() && sections()) {
|
|
98377
|
-
<symphiq-section-navigation
|
|
98378
|
-
[sections]="tocSections()"
|
|
98379
|
-
[viewMode]="viewMode()"
|
|
98380
|
-
[embedded]="embedded()"
|
|
98381
|
-
[scrollElement]="scrollElement() ?? undefined"
|
|
98382
|
-
/>
|
|
98893
|
+
if (completedCards.length === cards.length) {
|
|
98894
|
+
return cards[cards.length - 1]?.metricEnum;
|
|
98383
98895
|
}
|
|
98384
|
-
|
|
98385
|
-
|
|
98386
|
-
|
|
98387
|
-
|
|
98388
|
-
|
|
98389
|
-
(
|
|
98390
|
-
|
|
98391
|
-
|
|
98392
|
-
|
|
98393
|
-
|
|
98394
|
-
|
|
98395
|
-
|
|
98396
|
-
|
|
98397
|
-
|
|
98398
|
-
|
|
98399
|
-
|
|
98400
|
-
|
|
98401
|
-
|
|
98402
|
-
|
|
98403
|
-
|
|
98404
|
-
|
|
98405
|
-
|
|
98406
|
-
|
|
98407
|
-
|
|
98408
|
-
|
|
98409
|
-
|
|
98410
|
-
|
|
98411
|
-
|
|
98412
|
-
|
|
98413
|
-
|
|
98414
|
-
|
|
98415
|
-
|
|
98416
|
-
|
|
98417
|
-
|
|
98418
|
-
|
|
98419
|
-
|
|
98420
|
-
|
|
98421
|
-
|
|
98422
|
-
|
|
98423
|
-
|
|
98424
|
-
|
|
98425
|
-
|
|
98426
|
-
|
|
98427
|
-
|
|
98428
|
-
|
|
98429
|
-
|
|
98430
|
-
|
|
98431
|
-
|
|
98432
|
-
|
|
98433
|
-
|
|
98434
|
-
|
|
98435
|
-
|
|
98436
|
-
|
|
98437
|
-
|
|
98438
|
-
|
|
98439
|
-
|
|
98440
|
-
|
|
98441
|
-
|
|
98442
|
-
|
|
98443
|
-
|
|
98444
|
-
|
|
98445
|
-
|
|
98446
|
-
|
|
98447
|
-
|
|
98448
|
-
|
|
98449
|
-
|
|
98450
|
-
|
|
98451
|
-
|
|
98452
|
-
|
|
98453
|
-
|
|
98454
|
-
|
|
98455
|
-
|
|
98456
|
-
|
|
98457
|
-
|
|
98458
|
-
|
|
98459
|
-
|
|
98460
|
-
|
|
98461
|
-
|
|
98462
|
-
|
|
98463
|
-
|
|
98464
|
-
|
|
98465
|
-
|
|
98466
|
-
|
|
98467
|
-
|
|
98468
|
-
|
|
98469
|
-
|
|
98470
|
-
|
|
98471
|
-
|
|
98472
|
-
|
|
98473
|
-
|
|
98474
|
-
|
|
98475
|
-
|
|
98476
|
-
|
|
98477
|
-
|
|
98478
|
-
|
|
98479
|
-
|
|
98480
|
-
|
|
98481
|
-
|
|
98482
|
-
|
|
98483
|
-
|
|
98484
|
-
|
|
98485
|
-
|
|
98486
|
-
|
|
98487
|
-
|
|
98488
|
-
|
|
98489
|
-
|
|
98490
|
-
|
|
98491
|
-
|
|
98492
|
-
|
|
98493
|
-
(
|
|
98494
|
-
|
|
98495
|
-
|
|
98496
|
-
|
|
98497
|
-
|
|
98498
|
-
|
|
98499
|
-
|
|
98500
|
-
|
|
98501
|
-
|
|
98502
|
-
|
|
98503
|
-
|
|
98504
|
-
|
|
98505
|
-
|
|
98896
|
+
return completedCards[completedCards.length - 1]?.metricEnum;
|
|
98897
|
+
}
|
|
98898
|
+
handleCardClick(event) {
|
|
98899
|
+
const { cardData, clickType } = event;
|
|
98900
|
+
if (clickType === 'profile' && cardData.profile) {
|
|
98901
|
+
this.navigateToProfileMetric.emit(cardData.profile);
|
|
98902
|
+
}
|
|
98903
|
+
else if ((clickType === 'analysis' || clickType === 'review') && cardData.profileAnalysis && cardData.profile) {
|
|
98904
|
+
this.navigateToProfileAnalysis.emit({
|
|
98905
|
+
profileAnalysis: cardData.profileAnalysis,
|
|
98906
|
+
profileMetric: cardData.profile
|
|
98907
|
+
});
|
|
98908
|
+
}
|
|
98909
|
+
}
|
|
98910
|
+
handleSearchClick() {
|
|
98911
|
+
this.showSearchModal.set(true);
|
|
98912
|
+
}
|
|
98913
|
+
handleCloseSearchModal() {
|
|
98914
|
+
this.showSearchModal.set(false);
|
|
98915
|
+
}
|
|
98916
|
+
getWelcomeBannerContainerClasses() {
|
|
98917
|
+
return this.isLightMode()
|
|
98918
|
+
? 'bg-white border-slate-200'
|
|
98919
|
+
: 'bg-slate-800/50 border-slate-700/50';
|
|
98920
|
+
}
|
|
98921
|
+
getWelcomeBannerIconClasses() {
|
|
98922
|
+
return this.isLightMode()
|
|
98923
|
+
? 'bg-blue-100 text-blue-600'
|
|
98924
|
+
: 'bg-blue-500/20 text-blue-400';
|
|
98925
|
+
}
|
|
98926
|
+
getWelcomeBannerTitleClasses() {
|
|
98927
|
+
return this.isLightMode()
|
|
98928
|
+
? 'text-slate-900'
|
|
98929
|
+
: 'text-white';
|
|
98930
|
+
}
|
|
98931
|
+
getWelcomeBannerTextClasses() {
|
|
98932
|
+
return this.isLightMode()
|
|
98933
|
+
? 'text-slate-700'
|
|
98934
|
+
: 'text-slate-300';
|
|
98935
|
+
}
|
|
98936
|
+
getWelcomeBannerHighlightClasses() {
|
|
98937
|
+
return this.isLightMode()
|
|
98938
|
+
? 'bg-blue-50/50 border-blue-300'
|
|
98939
|
+
: 'bg-blue-500/10 border-blue-500/30';
|
|
98940
|
+
}
|
|
98941
|
+
getWelcomeBannerHighlightIconClasses() {
|
|
98942
|
+
return this.isLightMode()
|
|
98943
|
+
? 'text-blue-600'
|
|
98944
|
+
: 'text-blue-400';
|
|
98945
|
+
}
|
|
98946
|
+
getWelcomeBannerHighlightTitleClasses() {
|
|
98947
|
+
return this.isLightMode()
|
|
98948
|
+
? 'text-slate-900'
|
|
98949
|
+
: 'text-white';
|
|
98950
|
+
}
|
|
98951
|
+
getWelcomeBannerHighlightListClasses() {
|
|
98952
|
+
return this.isLightMode()
|
|
98953
|
+
? 'text-slate-700'
|
|
98954
|
+
: 'text-slate-300';
|
|
98955
|
+
}
|
|
98956
|
+
getWelcomeBannerNextStepsClasses() {
|
|
98957
|
+
return this.isLightMode()
|
|
98958
|
+
? 'bg-amber-50/50 border-amber-200'
|
|
98959
|
+
: 'bg-amber-500/10 border-amber-500/30';
|
|
98960
|
+
}
|
|
98961
|
+
getWelcomeBannerNextStepsIconClasses() {
|
|
98962
|
+
return this.isLightMode()
|
|
98963
|
+
? 'text-amber-600'
|
|
98964
|
+
: 'text-amber-400';
|
|
98965
|
+
}
|
|
98966
|
+
getWelcomeBannerNextStepsTitleClasses() {
|
|
98967
|
+
return this.isLightMode()
|
|
98968
|
+
? 'text-slate-900'
|
|
98969
|
+
: 'text-white';
|
|
98970
|
+
}
|
|
98971
|
+
getWelcomeBannerNextStepsTextClasses() {
|
|
98972
|
+
return this.isLightMode()
|
|
98973
|
+
? 'text-slate-700'
|
|
98974
|
+
: 'text-slate-300';
|
|
98975
|
+
}
|
|
98976
|
+
getIconForMetric(metric) {
|
|
98977
|
+
const iconMap = {
|
|
98978
|
+
[MetricEnum.SCREEN_PAGE_VIEWS]: '👁️',
|
|
98979
|
+
[MetricEnum.ITEM_VIEW_EVENTS]: '🛍️',
|
|
98980
|
+
[MetricEnum.ADD_TO_CARTS]: '🛒',
|
|
98981
|
+
[MetricEnum.CHECKOUTS]: '💳',
|
|
98982
|
+
[MetricEnum.ECOMMERCE_PURCHASES]: '✅',
|
|
98983
|
+
[MetricEnum.PURCHASE_REVENUE]: '💰'
|
|
98984
|
+
};
|
|
98985
|
+
return iconMap[metric] || '📊';
|
|
98986
|
+
}
|
|
98987
|
+
getMetricDescription(metric) {
|
|
98988
|
+
const descriptionMap = {
|
|
98989
|
+
[MetricEnum.SCREEN_PAGE_VIEWS]: 'Total page views and sessions driving traffic to your store',
|
|
98990
|
+
[MetricEnum.ITEM_VIEW_EVENTS]: 'Product detail page views indicating customer interest',
|
|
98991
|
+
[MetricEnum.ADD_TO_CARTS]: 'Items added to cart showing purchase intent',
|
|
98992
|
+
[MetricEnum.CHECKOUTS]: 'Initiated checkouts representing high purchase intent',
|
|
98993
|
+
[MetricEnum.ECOMMERCE_PURCHASES]: 'Completed transactions and conversion success',
|
|
98994
|
+
[MetricEnum.PURCHASE_REVENUE]: 'Total purchase revenue and average order value'
|
|
98995
|
+
};
|
|
98996
|
+
return descriptionMap[metric] || 'Funnel stage metric for conversion analysis';
|
|
98997
|
+
}
|
|
98998
|
+
static { this.ɵfac = function SymphiqProfileMetricsAnalysesDashboardComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SymphiqProfileMetricsAnalysesDashboardComponent)(); }; }
|
|
98999
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SymphiqProfileMetricsAnalysesDashboardComponent, selectors: [["symphiq-profile-metrics-analyses-dashboard"]], hostBindings: function SymphiqProfileMetricsAnalysesDashboardComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
99000
|
+
i0.ɵɵlistener("scroll", function SymphiqProfileMetricsAnalysesDashboardComponent_scroll_HostBindingHandler($event) { return ctx.onScroll($event); }, i0.ɵɵresolveWindow);
|
|
99001
|
+
} }, inputs: { requestedByUser: [1, "requestedByUser"], createdDate: [1, "createdDate"], embedded: [1, "embedded"], profileAnalyses: [1, "profileAnalyses"], profileMetrics: [1, "profileMetrics"], itemStatusesProfileMetric: [1, "itemStatusesProfileMetric"], itemStatusesProfileAnalysis: [1, "itemStatusesProfileAnalysis"], profile: [1, "profile"], funnelAnalysis: [1, "funnelAnalysis"], funnelMetrics: [1, "funnelMetrics"], account: [1, "account"], profileMetricQuestions: [1, "profileMetricQuestions"], isOnboarded: [1, "isOnboarded"], scrollEvent: [1, "scrollEvent"], scrollElement: [1, "scrollElement"], users: [1, "users"], isLoading: [1, "isLoading"], forDemo: [1, "forDemo"], currentUser: [1, "currentUser"], maxAccessibleStepId: [1, "maxAccessibleStepId"], viewMode: [1, "viewMode"], displayMode: [1, "displayMode"], currentStepId: [1, "currentStepId"] }, outputs: { navigateToProfileMetric: "navigateToProfileMetric", navigateToProfileAnalysis: "navigateToProfileAnalysis", stepClick: "stepClick", nextStepClick: "nextStepClick", answerMetricProfileQuestions: "answerMetricProfileQuestions", continueMetricProfileQuestions: "continueMetricProfileQuestions", profileQuestionAnswerSave: "profileQuestionAnswerSave", metricProfileAdminAnswerAction: "metricProfileAdminAnswerAction" }, decls: 67, vars: 32, 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"], [1, "fixed", "top-0", "left-0", "right-0", "h-1", "z-[60]", "bg-slate-200/30"], [1, "h-full", "transition-all", "duration-200", "ease-out", 3, "ngClass"], [1, "relative", "z-[51]"], [3, "title", "subtitle", "viewMode", "showControls"], [3, "viewMode", "currentStepId", "showNextStepAction", "forDemo", "maxAccessibleStepId"], [1, "container", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-8", "md:py-12", "relative", "z-10"], [1, "rounded-2xl", "border", "shadow-lg", "overflow-hidden", "mb-8", 3, "ngClass"], [1, "px-8", "py-8"], [1, "flex", "items-start", "gap-6"], [1, "flex-shrink-0", "w-16", "h-16", "rounded-2xl", "flex", "items-center", "justify-center", 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 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"], [1, "flex-1"], [1, "text-2xl", "sm:text-3xl", "font-bold", "mb-3", 3, "ngClass"], [3, "viewMode", "profileStatusCounts", "analysisStatusCounts", "allReviewed", "hasItems", "config"], [1, "grid", "grid-cols-1", "lg:grid-cols-3", "gap-6", "mb-6"], [1, "lg:col-span-2", "space-y-3"], [1, "text-base", "leading-relaxed", 3, "ngClass"], [1, "font-semibold"], [1, "lg:col-span-1"], ["currentStepId", "metric-analysis", 3, "viewMode", "currentMetric"], [1, "mt-6", "p-5", "rounded-xl", "border-l-4", "flex", "items-start", "gap-4", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-6", "h-6", "flex-shrink-0", "mt-0.5", 3, "ngClass"], ["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, "font-bold", "text-lg", "mb-2", 3, "ngClass"], [1, "space-y-2", "text-sm", 3, "ngClass"], [1, "flex", "items-start", "gap-2"], ["fill", "currentColor", "viewBox", "0 0 20 20", 1, "w-5", "h-5", "flex-shrink-0", "mt-0.5"], ["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"], [1, "mt-6", "p-5", "rounded-xl", "border", "flex", "items-start", "gap-4", 3, "ngClass"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 7l5 5m0 0l-5 5m5-5H6"], [1, "text-sm", "leading-relaxed", 3, "ngClass"], [3, "cardClick", "viewMode", "cards", "config"], [3, "nextStepClick", "stepClick", "viewMode", "currentStepId", "showNextStepAction", "forDemo", "maxAccessibleStepId"], [3, "closeModal"]], template: function SymphiqProfileMetricsAnalysesDashboardComponent_Template(rf, ctx) { if (rf & 1) {
|
|
99002
|
+
i0.ɵɵelementStart(0, "div", 0);
|
|
99003
|
+
i0.ɵɵelement(1, "div", 1);
|
|
99004
|
+
i0.ɵɵelementStart(2, "div", 2);
|
|
99005
|
+
i0.ɵɵelement(3, "div", 3);
|
|
99006
|
+
i0.ɵɵelementEnd();
|
|
99007
|
+
i0.ɵɵelementStart(4, "div", 4);
|
|
99008
|
+
i0.ɵɵelement(5, "symphiq-dashboard-header", 5);
|
|
99009
|
+
i0.ɵɵconditionalCreate(6, SymphiqProfileMetricsAnalysesDashboardComponent_Conditional_6_Template, 1, 5, "symphiq-journey-progress-indicator", 6);
|
|
99010
|
+
i0.ɵɵelementStart(7, "div", 7)(8, "div", 8)(9, "div", 9)(10, "div", 10)(11, "div", 11);
|
|
99011
|
+
i0.ɵɵnamespaceSVG();
|
|
99012
|
+
i0.ɵɵelementStart(12, "svg", 12);
|
|
99013
|
+
i0.ɵɵelement(13, "path", 13);
|
|
99014
|
+
i0.ɵɵelementEnd()();
|
|
99015
|
+
i0.ɵɵnamespaceHTML();
|
|
99016
|
+
i0.ɵɵelementStart(14, "div", 14)(15, "h2", 15);
|
|
99017
|
+
i0.ɵɵtext(16, " Welcome to Your Metric Analysis ");
|
|
99018
|
+
i0.ɵɵelementEnd();
|
|
99019
|
+
i0.ɵɵconditionalCreate(17, SymphiqProfileMetricsAnalysesDashboardComponent_Conditional_17_Template, 1, 6, "symphiq-profile-analysis-status-summary", 16);
|
|
99020
|
+
i0.ɵɵelementStart(18, "div", 17)(19, "div", 18)(20, "p", 19);
|
|
99021
|
+
i0.ɵɵtext(21, " Metric Analysis provides the deepest level of context for your conversion funnel. Each funnel stage metric\u2014from Views and Product Views to Add to Carts, Checkouts, and Purchases\u2014has unique patterns, behaviors, and optimization opportunities. By answering targeted questions about each metric, you help Symphiq understand the specific factors influencing performance at every conversion point. ");
|
|
99022
|
+
i0.ɵɵelementEnd();
|
|
99023
|
+
i0.ɵɵelementStart(22, "p", 19)(23, "strong", 20);
|
|
99024
|
+
i0.ɵɵtext(24, "Why this matters:");
|
|
99025
|
+
i0.ɵɵelementEnd();
|
|
99026
|
+
i0.ɵɵtext(25, " This granular context ensures recommendations address the precise bottlenecks in your customer journey. Rather than generic funnel advice, you'll receive metric-specific strategies grounded in your actual traffic patterns, customer behavior, content types, and marketing tactics. This completes the full picture\u2014from business strategy to operational execution to performance reality. ");
|
|
99027
|
+
i0.ɵɵelementEnd()();
|
|
99028
|
+
i0.ɵɵelementStart(26, "div", 21);
|
|
99029
|
+
i0.ɵɵelement(27, "symphiq-confidence-level-card", 22);
|
|
99030
|
+
i0.ɵɵelementEnd()();
|
|
99031
|
+
i0.ɵɵelementStart(28, "div", 23);
|
|
99032
|
+
i0.ɵɵnamespaceSVG();
|
|
99033
|
+
i0.ɵɵelementStart(29, "svg", 24);
|
|
99034
|
+
i0.ɵɵelement(30, "path", 25);
|
|
99035
|
+
i0.ɵɵelementEnd();
|
|
99036
|
+
i0.ɵɵnamespaceHTML();
|
|
99037
|
+
i0.ɵɵelementStart(31, "div", 14)(32, "h3", 26);
|
|
99038
|
+
i0.ɵɵtext(33, " What You'll See Below ");
|
|
99039
|
+
i0.ɵɵelementEnd();
|
|
99040
|
+
i0.ɵɵelementStart(34, "ul", 27)(35, "li", 28);
|
|
99041
|
+
i0.ɵɵnamespaceSVG();
|
|
99042
|
+
i0.ɵɵelementStart(36, "svg", 29);
|
|
99043
|
+
i0.ɵɵelement(37, "path", 30);
|
|
99044
|
+
i0.ɵɵelementEnd();
|
|
99045
|
+
i0.ɵɵnamespaceHTML();
|
|
99046
|
+
i0.ɵɵelementStart(38, "span")(39, "strong", 20);
|
|
99047
|
+
i0.ɵɵtext(40, "Funnel Stage Metrics");
|
|
99048
|
+
i0.ɵɵelementEnd();
|
|
99049
|
+
i0.ɵɵtext(41, " \u2014 Each conversion point from Views through Revenue is represented with its own profile");
|
|
99050
|
+
i0.ɵɵelementEnd()();
|
|
99051
|
+
i0.ɵɵelementStart(42, "li", 28);
|
|
99052
|
+
i0.ɵɵnamespaceSVG();
|
|
99053
|
+
i0.ɵɵelementStart(43, "svg", 29);
|
|
99054
|
+
i0.ɵɵelement(44, "path", 30);
|
|
99055
|
+
i0.ɵɵelementEnd();
|
|
99056
|
+
i0.ɵɵnamespaceHTML();
|
|
99057
|
+
i0.ɵɵelementStart(45, "span")(46, "strong", 20);
|
|
99058
|
+
i0.ɵɵtext(47, "Context Questions");
|
|
99059
|
+
i0.ɵɵelementEnd();
|
|
99060
|
+
i0.ɵɵtext(48, " \u2014 Answer targeted questions about traffic sources, customer behavior, content types, and marketing activities for each metric");
|
|
99061
|
+
i0.ɵɵelementEnd()();
|
|
99062
|
+
i0.ɵɵelementStart(49, "li", 28);
|
|
99063
|
+
i0.ɵɵnamespaceSVG();
|
|
99064
|
+
i0.ɵɵelementStart(50, "svg", 29);
|
|
99065
|
+
i0.ɵɵelement(51, "path", 30);
|
|
99066
|
+
i0.ɵɵelementEnd();
|
|
99067
|
+
i0.ɵɵnamespaceHTML();
|
|
99068
|
+
i0.ɵɵelementStart(52, "span")(53, "strong", 20);
|
|
99069
|
+
i0.ɵɵtext(54, "Performance Insights");
|
|
99070
|
+
i0.ɵɵelementEnd();
|
|
99071
|
+
i0.ɵɵtext(55, " \u2014 Unlock analysis showing what's working, what's not, and specific improvement opportunities for each stage");
|
|
99072
|
+
i0.ɵɵelementEnd()()()()();
|
|
99073
|
+
i0.ɵɵelementStart(56, "div", 31);
|
|
99074
|
+
i0.ɵɵnamespaceSVG();
|
|
99075
|
+
i0.ɵɵelementStart(57, "svg", 24);
|
|
99076
|
+
i0.ɵɵelement(58, "path", 32);
|
|
99077
|
+
i0.ɵɵelementEnd();
|
|
99078
|
+
i0.ɵɵnamespaceHTML();
|
|
99079
|
+
i0.ɵɵelementStart(59, "div", 14)(60, "h3", 26);
|
|
99080
|
+
i0.ɵɵtext(61, " Complete Your Profile ");
|
|
99081
|
+
i0.ɵɵelementEnd();
|
|
99082
|
+
i0.ɵɵelementStart(62, "p", 33);
|
|
99083
|
+
i0.ɵɵtext(63, " You've reached the final onboarding step! Once all metrics are profiled, you'll have complete context coverage. Symphiq will then generate unified recommendations that connect business goals to specific funnel improvements\u2014showing exactly what to do next to drive growth. ");
|
|
99084
|
+
i0.ɵɵelementEnd()()()()()()();
|
|
99085
|
+
i0.ɵɵelementStart(64, "symphiq-profile-analysis-card-grid", 34);
|
|
99086
|
+
i0.ɵɵlistener("cardClick", function SymphiqProfileMetricsAnalysesDashboardComponent_Template_symphiq_profile_analysis_card_grid_cardClick_64_listener($event) { return ctx.handleCardClick($event); });
|
|
99087
|
+
i0.ɵɵelementEnd()()();
|
|
99088
|
+
i0.ɵɵconditionalCreate(65, SymphiqProfileMetricsAnalysesDashboardComponent_Conditional_65_Template, 1, 0, "symphiq-search-modal");
|
|
99089
|
+
i0.ɵɵelement(66, "symphiq-tooltip-container");
|
|
99090
|
+
i0.ɵɵelementEnd();
|
|
99091
|
+
} if (rf & 2) {
|
|
99092
|
+
i0.ɵɵclassProp("min-h-screen", !ctx.embedded());
|
|
99093
|
+
i0.ɵɵadvance();
|
|
99094
|
+
i0.ɵɵclassProp("light-mode", ctx.isLightMode());
|
|
99095
|
+
i0.ɵɵadvance(2);
|
|
99096
|
+
i0.ɵɵstyleProp("width", ctx.scrollProgress(), "%");
|
|
99097
|
+
i0.ɵɵproperty("ngClass", ctx.isLightMode() ? "bg-gradient-to-r from-blue-500 to-cyan-500" : "bg-gradient-to-r from-blue-400 to-cyan-400");
|
|
99098
|
+
i0.ɵɵadvance(2);
|
|
99099
|
+
i0.ɵɵproperty("title", "Metric Analysis")("subtitle", "Provide context for funnel stage metrics and performance")("viewMode", ctx.viewMode())("showControls", false);
|
|
99100
|
+
i0.ɵɵadvance();
|
|
99101
|
+
i0.ɵɵconditional(ctx.isSimplifiedView() ? 6 : -1);
|
|
99102
|
+
i0.ɵɵadvance(2);
|
|
99103
|
+
i0.ɵɵproperty("ngClass", ctx.getWelcomeBannerContainerClasses());
|
|
99104
|
+
i0.ɵɵadvance(3);
|
|
99105
|
+
i0.ɵɵproperty("ngClass", ctx.getWelcomeBannerIconClasses());
|
|
99106
|
+
i0.ɵɵadvance(4);
|
|
99107
|
+
i0.ɵɵproperty("ngClass", ctx.getWelcomeBannerTitleClasses());
|
|
99108
|
+
i0.ɵɵadvance(2);
|
|
99109
|
+
i0.ɵɵconditional(ctx.profileMetrics() !== undefined || ctx.profileAnalyses() !== undefined ? 17 : -1);
|
|
99110
|
+
i0.ɵɵadvance(3);
|
|
99111
|
+
i0.ɵɵproperty("ngClass", ctx.getWelcomeBannerTextClasses());
|
|
99112
|
+
i0.ɵɵadvance(2);
|
|
99113
|
+
i0.ɵɵproperty("ngClass", ctx.getWelcomeBannerTextClasses());
|
|
99114
|
+
i0.ɵɵadvance(5);
|
|
99115
|
+
i0.ɵɵproperty("viewMode", ctx.viewMode())("currentMetric", ctx.getCurrentMetricForConfidence());
|
|
99116
|
+
i0.ɵɵadvance();
|
|
99117
|
+
i0.ɵɵproperty("ngClass", ctx.getWelcomeBannerHighlightClasses());
|
|
99118
|
+
i0.ɵɵadvance();
|
|
99119
|
+
i0.ɵɵproperty("ngClass", ctx.getWelcomeBannerHighlightIconClasses());
|
|
99120
|
+
i0.ɵɵadvance(3);
|
|
99121
|
+
i0.ɵɵproperty("ngClass", ctx.getWelcomeBannerHighlightTitleClasses());
|
|
99122
|
+
i0.ɵɵadvance(2);
|
|
99123
|
+
i0.ɵɵproperty("ngClass", ctx.getWelcomeBannerHighlightListClasses());
|
|
99124
|
+
i0.ɵɵadvance(22);
|
|
99125
|
+
i0.ɵɵproperty("ngClass", ctx.getWelcomeBannerNextStepsClasses());
|
|
99126
|
+
i0.ɵɵadvance();
|
|
99127
|
+
i0.ɵɵproperty("ngClass", ctx.getWelcomeBannerNextStepsIconClasses());
|
|
99128
|
+
i0.ɵɵadvance(3);
|
|
99129
|
+
i0.ɵɵproperty("ngClass", ctx.getWelcomeBannerNextStepsTitleClasses());
|
|
99130
|
+
i0.ɵɵadvance(2);
|
|
99131
|
+
i0.ɵɵproperty("ngClass", ctx.getWelcomeBannerNextStepsTextClasses());
|
|
99132
|
+
i0.ɵɵadvance(2);
|
|
99133
|
+
i0.ɵɵproperty("viewMode", ctx.viewMode())("cards", ctx.genericCardData())("config", ctx.metricCardConfig);
|
|
99134
|
+
i0.ɵɵadvance();
|
|
99135
|
+
i0.ɵɵconditional(ctx.showSearchModal() ? 65 : -1);
|
|
99136
|
+
} }, dependencies: [CommonModule, i1$1.NgClass, DashboardHeaderComponent, SearchModalComponent, JourneyProgressIndicatorComponent, ConfidenceLevelCardComponent, TooltipContainerComponent, ProfileAnalysisStatusSummaryComponent, ProfileAnalysisCardGridComponent], styles: [".animated-bubbles[_ngcontent-%COMP%]{background:linear-gradient(135deg,#3b82f60d,#06b6d40d)}.animated-bubbles.light-mode[_ngcontent-%COMP%]{background:linear-gradient(135deg,#3b82f608,#06b6d408)}.animated-bubbles[_ngcontent-%COMP%]:before, .animated-bubbles[_ngcontent-%COMP%]:after{content:\"\";position:absolute;border-radius:50%;animation:_ngcontent-%COMP%_float 20s infinite ease-in-out}.animated-bubbles[_ngcontent-%COMP%]:before{width:500px;height:500px;background:radial-gradient(circle,rgba(59,130,246,.1) 0%,transparent 70%);top:-250px;right:-250px;animation-delay:-5s}.animated-bubbles[_ngcontent-%COMP%]:after{width:400px;height:400px;background:radial-gradient(circle,rgba(6,182,212,.1) 0%,transparent 70%);bottom:-200px;left:-200px;animation-delay:-10s}@keyframes _ngcontent-%COMP%_float{0%,to{transform:translateY(0) translate(0)}25%{transform:translateY(-50px) translate(50px)}50%{transform:translateY(-100px) translate(-50px)}75%{transform:translateY(-50px) translate(-100px)}}@keyframes _ngcontent-%COMP%_review-pulse{0%,to{box-shadow:0 0 #3b82f680}50%{box-shadow:0 0 0 8px #3b82f600}}.animate-review-pulse[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_review-pulse 2s ease-in-out infinite}@keyframes _ngcontent-%COMP%_status-pop{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.status-badge[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_status-pop .3s ease-out;transition:all .3s ease-out}@keyframes _ngcontent-%COMP%_alert-pulse{0%,to{box-shadow:0 0 #ef444466}50%{box-shadow:0 0 0 6px #ef444400}}.animate-alert-pulse[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_alert-pulse 1.5s ease-in-out infinite}"], data: { animation: [
|
|
99137
|
+
trigger('statusBadge', [
|
|
99138
|
+
transition(':enter', [
|
|
99139
|
+
style({ opacity: 0, transform: 'scale(0.8)' }),
|
|
99140
|
+
animate('200ms ease-out', style({ opacity: 1, transform: 'scale(1)' }))
|
|
99141
|
+
]),
|
|
99142
|
+
transition('* => *', [
|
|
99143
|
+
animate('200ms ease-out', style({ transform: 'scale(1.1)' })),
|
|
99144
|
+
animate('150ms ease-in', style({ transform: 'scale(1)' }))
|
|
99145
|
+
])
|
|
99146
|
+
]),
|
|
99147
|
+
trigger('allReviewedBadge', [
|
|
99148
|
+
transition(':enter', [
|
|
99149
|
+
style({ opacity: 0, transform: 'scale(0.5)' }),
|
|
99150
|
+
animate('400ms cubic-bezier(0.34, 1.56, 0.64, 1)', style({ opacity: 1, transform: 'scale(1)' }))
|
|
99151
|
+
])
|
|
99152
|
+
])
|
|
99153
|
+
] }, changeDetection: 0 }); }
|
|
99154
|
+
}
|
|
99155
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SymphiqProfileMetricsAnalysesDashboardComponent, [{
|
|
99156
|
+
type: Component,
|
|
99157
|
+
args: [{ selector: 'symphiq-profile-metrics-analyses-dashboard', standalone: true, imports: [CommonModule, DashboardHeaderComponent, SearchModalComponent, JourneyProgressIndicatorComponent, ConfidenceLevelCardComponent, TooltipContainerComponent, ProfileAnalysisStatusSummaryComponent, ProfileAnalysisCardGridComponent], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
99158
|
+
trigger('statusBadge', [
|
|
99159
|
+
transition(':enter', [
|
|
99160
|
+
style({ opacity: 0, transform: 'scale(0.8)' }),
|
|
99161
|
+
animate('200ms ease-out', style({ opacity: 1, transform: 'scale(1)' }))
|
|
99162
|
+
]),
|
|
99163
|
+
transition('* => *', [
|
|
99164
|
+
animate('200ms ease-out', style({ transform: 'scale(1.1)' })),
|
|
99165
|
+
animate('150ms ease-in', style({ transform: 'scale(1)' }))
|
|
99166
|
+
])
|
|
99167
|
+
]),
|
|
99168
|
+
trigger('allReviewedBadge', [
|
|
99169
|
+
transition(':enter', [
|
|
99170
|
+
style({ opacity: 0, transform: 'scale(0.5)' }),
|
|
99171
|
+
animate('400ms cubic-bezier(0.34, 1.56, 0.64, 1)', style({ opacity: 1, transform: 'scale(1)' }))
|
|
99172
|
+
])
|
|
99173
|
+
])
|
|
99174
|
+
], template: `
|
|
99175
|
+
<div [class.min-h-screen]="!embedded()" class="relative">
|
|
99176
|
+
<div class="animated-bubbles" [class.light-mode]="isLightMode()"
|
|
99177
|
+
style="position: fixed; top: 0; left: 0; right: 0; bottom: 0; width: 100vw; height: 100vh; z-index: 1; pointer-events: none;"></div>
|
|
99178
|
+
|
|
99179
|
+
<!-- Scroll Progress Bar -->
|
|
99180
|
+
<div class="fixed top-0 left-0 right-0 h-1 z-[60] bg-slate-200/30">
|
|
99181
|
+
<div
|
|
99182
|
+
[style.width.%]="scrollProgress()"
|
|
99183
|
+
[ngClass]="isLightMode() ? 'bg-gradient-to-r from-blue-500 to-cyan-500' : 'bg-gradient-to-r from-blue-400 to-cyan-400'"
|
|
99184
|
+
class="h-full transition-all duration-200 ease-out">
|
|
99185
|
+
</div>
|
|
99186
|
+
</div>
|
|
99187
|
+
|
|
99188
|
+
<div class="relative z-[51]">
|
|
99189
|
+
<!-- Dashboard Header -->
|
|
99190
|
+
<symphiq-dashboard-header
|
|
99191
|
+
[title]="'Metric Analysis'"
|
|
99192
|
+
[subtitle]="'Provide context for funnel stage metrics and performance'"
|
|
99193
|
+
[viewMode]="viewMode()"
|
|
99194
|
+
[showControls]="false"
|
|
99195
|
+
></symphiq-dashboard-header>
|
|
99196
|
+
|
|
99197
|
+
<!-- Journey Progress Indicator (Simplified View Only) -->
|
|
99198
|
+
@if (isSimplifiedView()) {
|
|
99199
|
+
<symphiq-journey-progress-indicator
|
|
99200
|
+
[viewMode]="viewMode()"
|
|
99201
|
+
[currentStepId]="currentStepId()"
|
|
99202
|
+
[showNextStepAction]="forDemo() || allMetricsAnalysisReviewed()"
|
|
99203
|
+
[forDemo]="forDemo()"
|
|
99204
|
+
[maxAccessibleStepId]="maxAccessibleStepId()"
|
|
99205
|
+
(nextStepClick)="nextStepClick.emit()"
|
|
99206
|
+
(stepClick)="stepClick.emit($event)"
|
|
99207
|
+
/>
|
|
99208
|
+
}
|
|
99209
|
+
|
|
99210
|
+
<!-- Main Content -->
|
|
99211
|
+
<div class="container mx-auto px-4 sm:px-6 lg:px-8 py-8 md:py-12 relative z-10">
|
|
99212
|
+
<!-- Welcome Banner -->
|
|
99213
|
+
<div [ngClass]="getWelcomeBannerContainerClasses()" class="rounded-2xl border shadow-lg overflow-hidden mb-8">
|
|
99214
|
+
<div class="px-8 py-8">
|
|
99215
|
+
<div class="flex items-start gap-6">
|
|
99216
|
+
<div [ngClass]="getWelcomeBannerIconClasses()"
|
|
99217
|
+
class="flex-shrink-0 w-16 h-16 rounded-2xl flex items-center justify-center">
|
|
99218
|
+
<svg class="w-8 h-8" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
99219
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
99220
|
+
d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"></path>
|
|
99221
|
+
</svg>
|
|
99222
|
+
</div>
|
|
99223
|
+
|
|
99224
|
+
<div class="flex-1">
|
|
99225
|
+
<h2 [ngClass]="getWelcomeBannerTitleClasses()" class="text-2xl sm:text-3xl font-bold mb-3">
|
|
99226
|
+
Welcome to Your Metric Analysis
|
|
99227
|
+
</h2>
|
|
99228
|
+
|
|
99229
|
+
<!-- Metric & Analysis Status Summary -->
|
|
99230
|
+
@if (profileMetrics() !== undefined || profileAnalyses() !== undefined) {
|
|
99231
|
+
<symphiq-profile-analysis-status-summary
|
|
99232
|
+
[viewMode]="viewMode()"
|
|
99233
|
+
[profileStatusCounts]="metricStatusCounts()"
|
|
99234
|
+
[analysisStatusCounts]="analysisStatusCounts()"
|
|
99235
|
+
[allReviewed]="allMetricsAnalysisReviewed()"
|
|
99236
|
+
[hasItems]="metricCards().length > 0"
|
|
99237
|
+
[config]="metricStatusConfig"
|
|
99238
|
+
/>
|
|
99239
|
+
}
|
|
99240
|
+
|
|
99241
|
+
<!-- Description and Confidence Card in Responsive Layout -->
|
|
99242
|
+
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6 mb-6">
|
|
99243
|
+
<!-- Description (takes 2 columns on large screens) -->
|
|
99244
|
+
<div class="lg:col-span-2 space-y-3">
|
|
99245
|
+
<p [ngClass]="getWelcomeBannerTextClasses()" class="text-base leading-relaxed">
|
|
99246
|
+
Metric Analysis provides the deepest level of context for your conversion funnel. Each funnel stage metric—from Views and Product Views to Add to Carts, Checkouts, and Purchases—has unique patterns, behaviors, and optimization opportunities. By answering targeted questions about each metric, you help Symphiq understand the specific factors influencing performance at every conversion point.
|
|
99247
|
+
</p>
|
|
99248
|
+
<p [ngClass]="getWelcomeBannerTextClasses()" class="text-base leading-relaxed">
|
|
99249
|
+
<strong class="font-semibold">Why this matters:</strong> This granular context ensures recommendations address the precise bottlenecks in your customer journey. Rather than generic funnel advice, you'll receive metric-specific strategies grounded in your actual traffic patterns, customer behavior, content types, and marketing tactics. This completes the full picture—from business strategy to operational execution to performance reality.
|
|
99250
|
+
</p>
|
|
99251
|
+
</div>
|
|
99252
|
+
|
|
99253
|
+
<!-- Confidence Card (takes 1 column on large screens, full width on mobile) -->
|
|
99254
|
+
<div class="lg:col-span-1">
|
|
99255
|
+
<symphiq-confidence-level-card
|
|
99256
|
+
[viewMode]="viewMode()"
|
|
99257
|
+
currentStepId="metric-analysis"
|
|
99258
|
+
[currentMetric]="getCurrentMetricForConfidence()"
|
|
99259
|
+
/>
|
|
99260
|
+
</div>
|
|
99261
|
+
</div>
|
|
99262
|
+
|
|
99263
|
+
<div [ngClass]="getWelcomeBannerHighlightClasses()"
|
|
99264
|
+
class="mt-6 p-5 rounded-xl border-l-4 flex items-start gap-4">
|
|
99265
|
+
<svg class="w-6 h-6 flex-shrink-0 mt-0.5" [ngClass]="getWelcomeBannerHighlightIconClasses()"
|
|
99266
|
+
fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
99267
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
99268
|
+
d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"></path>
|
|
99269
|
+
</svg>
|
|
99270
|
+
<div class="flex-1">
|
|
99271
|
+
<h3 [ngClass]="getWelcomeBannerHighlightTitleClasses()" class="font-bold text-lg mb-2">
|
|
99272
|
+
What You'll See Below
|
|
99273
|
+
</h3>
|
|
99274
|
+
<ul [ngClass]="getWelcomeBannerHighlightListClasses()" class="space-y-2 text-sm">
|
|
99275
|
+
<li class="flex items-start gap-2">
|
|
99276
|
+
<svg class="w-5 h-5 flex-shrink-0 mt-0.5" fill="currentColor" viewBox="0 0 20 20">
|
|
99277
|
+
<path fill-rule="evenodd"
|
|
99278
|
+
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"
|
|
99279
|
+
clip-rule="evenodd"></path>
|
|
99280
|
+
</svg>
|
|
99281
|
+
<span><strong class="font-semibold">Funnel Stage Metrics</strong> — Each conversion point from Views through Revenue is represented with its own profile</span>
|
|
99282
|
+
</li>
|
|
99283
|
+
<li class="flex items-start gap-2">
|
|
99284
|
+
<svg class="w-5 h-5 flex-shrink-0 mt-0.5" fill="currentColor" viewBox="0 0 20 20">
|
|
99285
|
+
<path fill-rule="evenodd"
|
|
99286
|
+
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"
|
|
99287
|
+
clip-rule="evenodd"></path>
|
|
99288
|
+
</svg>
|
|
99289
|
+
<span><strong class="font-semibold">Context Questions</strong> — Answer targeted questions about traffic sources, customer behavior, content types, and marketing activities for each metric</span>
|
|
99290
|
+
</li>
|
|
99291
|
+
<li class="flex items-start gap-2">
|
|
99292
|
+
<svg class="w-5 h-5 flex-shrink-0 mt-0.5" fill="currentColor" viewBox="0 0 20 20">
|
|
99293
|
+
<path fill-rule="evenodd"
|
|
99294
|
+
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"
|
|
99295
|
+
clip-rule="evenodd"></path>
|
|
99296
|
+
</svg>
|
|
99297
|
+
<span><strong class="font-semibold">Performance Insights</strong> — Unlock analysis showing what's working, what's not, and specific improvement opportunities for each stage</span>
|
|
99298
|
+
</li>
|
|
99299
|
+
</ul>
|
|
99300
|
+
</div>
|
|
99301
|
+
</div>
|
|
99302
|
+
|
|
99303
|
+
<div [ngClass]="getWelcomeBannerNextStepsClasses()"
|
|
99304
|
+
class="mt-6 p-5 rounded-xl border flex items-start gap-4">
|
|
99305
|
+
<svg class="w-6 h-6 flex-shrink-0 mt-0.5" [ngClass]="getWelcomeBannerNextStepsIconClasses()"
|
|
99306
|
+
fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
99307
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
99308
|
+
d="M13 7l5 5m0 0l-5 5m5-5H6"></path>
|
|
99309
|
+
</svg>
|
|
99310
|
+
<div class="flex-1">
|
|
99311
|
+
<h3 [ngClass]="getWelcomeBannerNextStepsTitleClasses()" class="font-bold text-lg mb-2">
|
|
99312
|
+
Complete Your Profile
|
|
99313
|
+
</h3>
|
|
99314
|
+
<p [ngClass]="getWelcomeBannerNextStepsTextClasses()" class="text-sm leading-relaxed">
|
|
99315
|
+
You've reached the final onboarding step! Once all metrics are profiled, you'll have complete context coverage. Symphiq will then generate unified recommendations that connect business goals to specific funnel improvements—showing exactly what to do next to drive growth.
|
|
99316
|
+
</p>
|
|
99317
|
+
</div>
|
|
99318
|
+
</div>
|
|
99319
|
+
</div>
|
|
99320
|
+
</div>
|
|
99321
|
+
</div>
|
|
99322
|
+
</div>
|
|
99323
|
+
|
|
99324
|
+
<!-- Metrics Grid -->
|
|
99325
|
+
<symphiq-profile-analysis-card-grid
|
|
99326
|
+
[viewMode]="viewMode()"
|
|
99327
|
+
[cards]="genericCardData()"
|
|
99328
|
+
[config]="metricCardConfig"
|
|
99329
|
+
(cardClick)="handleCardClick($event)"
|
|
99330
|
+
/>
|
|
99331
|
+
</div>
|
|
99332
|
+
</div>
|
|
99333
|
+
|
|
99334
|
+
<!-- Search Modal -->
|
|
99335
|
+
@if (showSearchModal()) {
|
|
99336
|
+
<symphiq-search-modal
|
|
99337
|
+
(closeModal)="handleCloseSearchModal()"
|
|
99338
|
+
></symphiq-search-modal>
|
|
99339
|
+
}
|
|
99340
|
+
|
|
99341
|
+
<symphiq-tooltip-container/>
|
|
99342
|
+
</div>
|
|
99343
|
+
`, styles: [".animated-bubbles{background:linear-gradient(135deg,#3b82f60d,#06b6d40d)}.animated-bubbles.light-mode{background:linear-gradient(135deg,#3b82f608,#06b6d408)}.animated-bubbles:before,.animated-bubbles:after{content:\"\";position:absolute;border-radius:50%;animation:float 20s infinite ease-in-out}.animated-bubbles:before{width:500px;height:500px;background:radial-gradient(circle,rgba(59,130,246,.1) 0%,transparent 70%);top:-250px;right:-250px;animation-delay:-5s}.animated-bubbles:after{width:400px;height:400px;background:radial-gradient(circle,rgba(6,182,212,.1) 0%,transparent 70%);bottom:-200px;left:-200px;animation-delay:-10s}@keyframes float{0%,to{transform:translateY(0) translate(0)}25%{transform:translateY(-50px) translate(50px)}50%{transform:translateY(-100px) translate(-50px)}75%{transform:translateY(-50px) translate(-100px)}}@keyframes review-pulse{0%,to{box-shadow:0 0 #3b82f680}50%{box-shadow:0 0 0 8px #3b82f600}}.animate-review-pulse{animation:review-pulse 2s ease-in-out infinite}@keyframes status-pop{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.status-badge{animation:status-pop .3s ease-out;transition:all .3s ease-out}@keyframes alert-pulse{0%,to{box-shadow:0 0 #ef444466}50%{box-shadow:0 0 0 6px #ef444400}}.animate-alert-pulse{animation:alert-pulse 1.5s ease-in-out infinite}\n"] }]
|
|
99344
|
+
}], null, { requestedByUser: [{ type: i0.Input, args: [{ isSignal: true, alias: "requestedByUser", required: false }] }], createdDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "createdDate", required: false }] }], embedded: [{ type: i0.Input, args: [{ isSignal: true, alias: "embedded", required: false }] }], profileAnalyses: [{ type: i0.Input, args: [{ isSignal: true, alias: "profileAnalyses", required: false }] }], profileMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "profileMetrics", required: false }] }], itemStatusesProfileMetric: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemStatusesProfileMetric", required: false }] }], itemStatusesProfileAnalysis: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemStatusesProfileAnalysis", required: false }] }], profile: [{ type: i0.Input, args: [{ isSignal: true, alias: "profile", required: false }] }], funnelAnalysis: [{ type: i0.Input, args: [{ isSignal: true, alias: "funnelAnalysis", required: false }] }], funnelMetrics: [{ type: i0.Input, args: [{ isSignal: true, alias: "funnelMetrics", required: false }] }], account: [{ type: i0.Input, args: [{ isSignal: true, alias: "account", required: false }] }], profileMetricQuestions: [{ type: i0.Input, args: [{ isSignal: true, alias: "profileMetricQuestions", required: false }] }], isOnboarded: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOnboarded", required: false }] }], scrollEvent: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollEvent", required: false }] }], scrollElement: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollElement", required: false }] }], users: [{ type: i0.Input, args: [{ isSignal: true, alias: "users", required: false }] }], isLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLoading", required: false }] }], forDemo: [{ type: i0.Input, args: [{ isSignal: true, alias: "forDemo", required: false }] }], currentUser: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentUser", required: false }] }], maxAccessibleStepId: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxAccessibleStepId", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], displayMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "displayMode", required: false }] }], currentStepId: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentStepId", required: false }] }], navigateToProfileMetric: [{ type: i0.Output, args: ["navigateToProfileMetric"] }], navigateToProfileAnalysis: [{ type: i0.Output, args: ["navigateToProfileAnalysis"] }], stepClick: [{ type: i0.Output, args: ["stepClick"] }], nextStepClick: [{ type: i0.Output, args: ["nextStepClick"] }], answerMetricProfileQuestions: [{ type: i0.Output, args: ["answerMetricProfileQuestions"] }], continueMetricProfileQuestions: [{ type: i0.Output, args: ["continueMetricProfileQuestions"] }], profileQuestionAnswerSave: [{ type: i0.Output, args: ["profileQuestionAnswerSave"] }], metricProfileAdminAnswerAction: [{ type: i0.Output, args: ["metricProfileAdminAnswerAction"] }], onScroll: [{
|
|
98506
99345
|
type: HostListener,
|
|
98507
99346
|
args: ['window:scroll', ['$event']]
|
|
98508
99347
|
}] }); })();
|
|
98509
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(
|
|
99348
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqProfileMetricsAnalysesDashboardComponent, { className: "SymphiqProfileMetricsAnalysesDashboardComponent", filePath: "lib/components/profile-analyses-metrics-dashboard/symphiq-profile-metrics-analyses-dashboard.component.ts", lineNumber: 366 }); })();
|
|
98510
99349
|
|
|
98511
99350
|
const _forTrack0$4 = ($index, $item) => $item.id;
|
|
98512
99351
|
function ShopProfileCategoryListComponent_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -103674,5 +104513,5 @@ var pieChart_component = /*#__PURE__*/Object.freeze({
|
|
|
103674
104513
|
* Generated bundle index. Do not edit.
|
|
103675
104514
|
*/
|
|
103676
104515
|
|
|
103677
|
-
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, 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, SymphiqProfileFocusAreaDashboardComponent, SymphiqProfileFocusAreasAnalysesDashboardComponent, 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 };
|
|
104516
|
+
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, 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, SymphiqProfileFocusAreaDashboardComponent, SymphiqProfileFocusAreasAnalysesDashboardComponent, 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 };
|
|
103678
104517
|
//# sourceMappingURL=symphiq-components.mjs.map
|