@eric-emg/symphiq-components 1.2.160 → 1.2.162
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 +465 -290
- package/fesm2022/symphiq-components.mjs.map +1 -1
- package/index.d.ts +44 -10
- package/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -7,6 +7,7 @@ import { map, catchError, shareReplay, debounceTime, switchMap } from 'rxjs/oper
|
|
|
7
7
|
import * as i1 from '@angular/common/http';
|
|
8
8
|
import * as i2 from '@angular/platform-browser';
|
|
9
9
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
10
|
+
import confetti from 'canvas-confetti';
|
|
10
11
|
import * as i1$1 from '@angular/common';
|
|
11
12
|
import { NgClass, CommonModule, isPlatformBrowser, DOCUMENT } from '@angular/common';
|
|
12
13
|
import * as i2$1 from '@angular/forms';
|
|
@@ -2436,6 +2437,103 @@ class CrossDashboardRelationshipsService {
|
|
|
2436
2437
|
}]
|
|
2437
2438
|
}], null, null); })();
|
|
2438
2439
|
|
|
2440
|
+
class ConfettiService {
|
|
2441
|
+
constructor() {
|
|
2442
|
+
this.lightModeColors = [
|
|
2443
|
+
'#3b82f6',
|
|
2444
|
+
'#06b6d4',
|
|
2445
|
+
'#a855f7',
|
|
2446
|
+
'#60a5fa',
|
|
2447
|
+
'#22d3ee'
|
|
2448
|
+
];
|
|
2449
|
+
this.darkModeColors = [
|
|
2450
|
+
'#60a5fa',
|
|
2451
|
+
'#22d3ee',
|
|
2452
|
+
'#c084fc',
|
|
2453
|
+
'#93c5fd',
|
|
2454
|
+
'#67e8f9'
|
|
2455
|
+
];
|
|
2456
|
+
}
|
|
2457
|
+
getColors(customColors) {
|
|
2458
|
+
if (customColors && customColors.length > 0) {
|
|
2459
|
+
return customColors;
|
|
2460
|
+
}
|
|
2461
|
+
const isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
2462
|
+
return isDarkMode ? this.darkModeColors : this.lightModeColors;
|
|
2463
|
+
}
|
|
2464
|
+
getIntensityConfig(intensity) {
|
|
2465
|
+
switch (intensity) {
|
|
2466
|
+
case 'subtle':
|
|
2467
|
+
return {
|
|
2468
|
+
bursts: 2,
|
|
2469
|
+
particleCount: 30,
|
|
2470
|
+
spread: 45,
|
|
2471
|
+
startVelocity: 20,
|
|
2472
|
+
scalar: 0.7
|
|
2473
|
+
};
|
|
2474
|
+
case 'celebration':
|
|
2475
|
+
return {
|
|
2476
|
+
bursts: 4,
|
|
2477
|
+
particleCount: 100,
|
|
2478
|
+
spread: 80,
|
|
2479
|
+
startVelocity: 35,
|
|
2480
|
+
scalar: 1.2
|
|
2481
|
+
};
|
|
2482
|
+
case 'normal':
|
|
2483
|
+
default:
|
|
2484
|
+
return {
|
|
2485
|
+
bursts: 3,
|
|
2486
|
+
particleCount: 60,
|
|
2487
|
+
spread: 60,
|
|
2488
|
+
startVelocity: 25,
|
|
2489
|
+
scalar: 1.0
|
|
2490
|
+
};
|
|
2491
|
+
}
|
|
2492
|
+
}
|
|
2493
|
+
trigger(config = {}) {
|
|
2494
|
+
const { intensity = 'normal', colors: customColors, delay = 200 } = config;
|
|
2495
|
+
const intensityConfig = this.getIntensityConfig(intensity);
|
|
2496
|
+
const colors = this.getColors(customColors);
|
|
2497
|
+
setTimeout(() => {
|
|
2498
|
+
this.fireConfetti(intensityConfig, colors);
|
|
2499
|
+
}, delay);
|
|
2500
|
+
}
|
|
2501
|
+
fireConfetti(config, colors) {
|
|
2502
|
+
const { bursts, particleCount, spread, startVelocity, scalar } = config;
|
|
2503
|
+
let burstCount = 0;
|
|
2504
|
+
const burstInterval = setInterval(() => {
|
|
2505
|
+
if (burstCount >= bursts) {
|
|
2506
|
+
clearInterval(burstInterval);
|
|
2507
|
+
return;
|
|
2508
|
+
}
|
|
2509
|
+
const x = 0.5;
|
|
2510
|
+
const y = 0.5;
|
|
2511
|
+
confetti({
|
|
2512
|
+
particleCount,
|
|
2513
|
+
spread,
|
|
2514
|
+
startVelocity,
|
|
2515
|
+
origin: { x, y },
|
|
2516
|
+
colors,
|
|
2517
|
+
scalar,
|
|
2518
|
+
gravity: 1.2,
|
|
2519
|
+
decay: 0.94,
|
|
2520
|
+
ticks: 200,
|
|
2521
|
+
shapes: ['circle', 'square'],
|
|
2522
|
+
zIndex: 100
|
|
2523
|
+
});
|
|
2524
|
+
burstCount++;
|
|
2525
|
+
}, 150);
|
|
2526
|
+
}
|
|
2527
|
+
static { this.ɵfac = function ConfettiService_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ConfettiService)(); }; }
|
|
2528
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ConfettiService, factory: ConfettiService.ɵfac, providedIn: 'root' }); }
|
|
2529
|
+
}
|
|
2530
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConfettiService, [{
|
|
2531
|
+
type: Injectable,
|
|
2532
|
+
args: [{
|
|
2533
|
+
providedIn: 'root'
|
|
2534
|
+
}]
|
|
2535
|
+
}], null, null); })();
|
|
2536
|
+
|
|
2439
2537
|
const _c0$13 = a0 => ["skeleton-loader", "rounded-lg", "relative", "overflow-hidden", a0];
|
|
2440
2538
|
const _c1$C = a0 => ["skeleton-shimmer-overlay", "absolute", "inset-0", "bg-gradient-to-r", a0];
|
|
2441
2539
|
class SkeletonLoaderComponent {
|
|
@@ -57835,8 +57933,30 @@ class CollapsibleSectionGroupComponent {
|
|
|
57835
57933
|
}], null, { sections: [{ type: i0.Input, args: [{ isSignal: true, alias: "sections", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }] }); })();
|
|
57836
57934
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollapsibleSectionGroupComponent, { className: "CollapsibleSectionGroupComponent", filePath: "lib/components/business-analysis-dashboard/collapsible-section-group.component.ts", lineNumber: 100 }); })();
|
|
57837
57935
|
|
|
57838
|
-
function
|
|
57839
|
-
i0.ɵɵ
|
|
57936
|
+
function ContentGenerationProgressComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
57937
|
+
i0.ɵɵelementStart(0, "div", 17);
|
|
57938
|
+
i0.ɵɵelement(1, "div", 20)(2, "div", 21)(3, "div", 22)(4, "div", 23)(5, "div", 24);
|
|
57939
|
+
i0.ɵɵelementEnd();
|
|
57940
|
+
} if (rf & 2) {
|
|
57941
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
57942
|
+
i0.ɵɵadvance();
|
|
57943
|
+
i0.ɵɵstyleProp("left", ctx_r0.progressPercentage(), "%");
|
|
57944
|
+
i0.ɵɵproperty("ngClass", ctx_r0.dotClasses());
|
|
57945
|
+
i0.ɵɵadvance();
|
|
57946
|
+
i0.ɵɵstyleProp("left", ctx_r0.progressPercentage(), "%");
|
|
57947
|
+
i0.ɵɵproperty("ngClass", ctx_r0.dotClasses());
|
|
57948
|
+
i0.ɵɵadvance();
|
|
57949
|
+
i0.ɵɵstyleProp("left", ctx_r0.progressPercentage(), "%");
|
|
57950
|
+
i0.ɵɵproperty("ngClass", ctx_r0.dotClasses());
|
|
57951
|
+
i0.ɵɵadvance();
|
|
57952
|
+
i0.ɵɵstyleProp("left", ctx_r0.progressPercentage(), "%");
|
|
57953
|
+
i0.ɵɵproperty("ngClass", ctx_r0.dotClasses());
|
|
57954
|
+
i0.ɵɵadvance();
|
|
57955
|
+
i0.ɵɵstyleProp("left", ctx_r0.progressPercentage(), "%");
|
|
57956
|
+
i0.ɵɵproperty("ngClass", ctx_r0.dotClasses());
|
|
57957
|
+
} }
|
|
57958
|
+
function ContentGenerationProgressComponent_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
57959
|
+
i0.ɵɵelement(0, "div", 25);
|
|
57840
57960
|
} if (rf & 2) {
|
|
57841
57961
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
57842
57962
|
i0.ɵɵstyleProp("left", ctx_r0.progressPercentage(), "%");
|
|
@@ -57853,7 +57973,7 @@ class ContentGenerationProgressComponent {
|
|
|
57853
57973
|
const status = this.itemStatus();
|
|
57854
57974
|
if (!status?.percentageComplete)
|
|
57855
57975
|
return 0;
|
|
57856
|
-
return Math.min(100, Math.max(0, status.percentageComplete));
|
|
57976
|
+
return Math.round(Math.min(100, Math.max(0, status.percentageComplete)));
|
|
57857
57977
|
}, ...(ngDevMode ? [{ debugName: "progressPercentage" }] : []));
|
|
57858
57978
|
this.progressMessage = computed(() => {
|
|
57859
57979
|
const status = this.itemStatus();
|
|
@@ -57918,7 +58038,7 @@ class ContentGenerationProgressComponent {
|
|
|
57918
58038
|
}, ...(ngDevMode ? [{ debugName: "percentageClasses" }] : []));
|
|
57919
58039
|
}
|
|
57920
58040
|
static { this.ɵfac = function ContentGenerationProgressComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ContentGenerationProgressComponent)(); }; }
|
|
57921
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ContentGenerationProgressComponent, selectors: [["symphiq-content-generation-progress"]], inputs: { itemStatus: [1, "itemStatus"], title: [1, "title"], subtitle: [1, "subtitle"], viewMode: [1, "viewMode"], showIcon: [1, "showIcon"] }, decls:
|
|
58041
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ContentGenerationProgressComponent, selectors: [["symphiq-content-generation-progress"]], inputs: { itemStatus: [1, "itemStatus"], title: [1, "title"], subtitle: [1, "subtitle"], viewMode: [1, "viewMode"], showIcon: [1, "showIcon"] }, decls: 25, vars: 17, consts: [[1, "min-h-[60vh]", "flex", "items-center", "justify-center", "px-4", "py-12", 3, "ngClass"], [1, "max-w-3xl", "w-full", "space-y-8"], [1, "text-center", "space-y-3"], [1, "flex", "items-center", "justify-center", "mb-4"], [1, "relative", "w-20", "h-20", "rounded-2xl", "flex", "items-center", "justify-center", "icon-pulse", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-10", "h-10"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 10V3L4 14h7v7l9-11h-7z"], [1, "absolute", "inset-0", "rounded-2xl", "icon-glow"], [1, "text-3xl", "sm:text-4xl", "font-bold", 3, "ngClass"], [1, "text-base", "sm:text-lg", "max-w-2xl", "mx-auto", 3, "ngClass"], [1, "space-y-4"], [1, "text-center"], [1, "text-lg", "sm:text-xl", "font-medium", "message-fade", 3, "ngClass"], [1, "relative", "h-3", "rounded-full", "overflow-visible", 3, "ngClass"], [1, "absolute", "inset-0", "rounded-full", 3, "ngClass"], [1, "absolute", "inset-y-0", "left-0", "rounded-full", "transition-all", "duration-700", "ease-out", "overflow-hidden", 3, "ngClass"], [1, "absolute", "inset-0", "shimmer-effect"], [1, "absolute", "inset-0", "overflow-visible", "pointer-events-none"], [1, "absolute", "top-1/2", "-translate-y-1/2", "w-4", "h-4", "rounded-full", "blur-md", "transition-all", "duration-700", "ease-out", 2, "margin-left", "-8px", 3, "ngClass", "left"], [1, "text-sm", "font-medium", "tabular-nums", 3, "ngClass"], [1, "dot", "dot-1", 3, "ngClass"], [1, "dot", "dot-2", 3, "ngClass"], [1, "dot", "dot-3", 3, "ngClass"], [1, "dot", "dot-4", 3, "ngClass"], [1, "dot", "dot-5", 3, "ngClass"], [1, "absolute", "top-1/2", "-translate-y-1/2", "w-4", "h-4", "rounded-full", "blur-md", "transition-all", "duration-700", "ease-out", 2, "margin-left", "-8px", 3, "ngClass"]], template: function ContentGenerationProgressComponent_Template(rf, ctx) { if (rf & 1) {
|
|
57922
58042
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3)(4, "div", 4);
|
|
57923
58043
|
i0.ɵɵnamespaceSVG();
|
|
57924
58044
|
i0.ɵɵelementStart(5, "svg", 5);
|
|
@@ -57941,13 +58061,11 @@ class ContentGenerationProgressComponent {
|
|
|
57941
58061
|
i0.ɵɵelementStart(18, "div", 15);
|
|
57942
58062
|
i0.ɵɵelement(19, "div", 16);
|
|
57943
58063
|
i0.ɵɵelementEnd();
|
|
57944
|
-
i0.ɵɵ
|
|
57945
|
-
i0.ɵɵ
|
|
57946
|
-
i0.ɵɵelementEnd()();
|
|
57947
|
-
i0.ɵɵconditionalCreate(27, ContentGenerationProgressComponent_Conditional_27_Template, 1, 3, "div", 24);
|
|
58064
|
+
i0.ɵɵconditionalCreate(20, ContentGenerationProgressComponent_Conditional_20_Template, 6, 15, "div", 17);
|
|
58065
|
+
i0.ɵɵconditionalCreate(21, ContentGenerationProgressComponent_Conditional_21_Template, 1, 3, "div", 18);
|
|
57948
58066
|
i0.ɵɵelementEnd();
|
|
57949
|
-
i0.ɵɵelementStart(
|
|
57950
|
-
i0.ɵɵtext(
|
|
58067
|
+
i0.ɵɵelementStart(22, "div", 11)(23, "span", 19);
|
|
58068
|
+
i0.ɵɵtext(24);
|
|
57951
58069
|
i0.ɵɵelementEnd()()()()();
|
|
57952
58070
|
} if (rf & 2) {
|
|
57953
58071
|
i0.ɵɵproperty("ngClass", ctx.containerClasses());
|
|
@@ -57972,23 +58090,15 @@ class ContentGenerationProgressComponent {
|
|
|
57972
58090
|
i0.ɵɵadvance();
|
|
57973
58091
|
i0.ɵɵstyleProp("width", ctx.progressPercentage(), "%");
|
|
57974
58092
|
i0.ɵɵproperty("ngClass", ctx.progressBarFillClasses());
|
|
57975
|
-
i0.ɵɵadvance(
|
|
57976
|
-
i0.ɵɵ
|
|
57977
|
-
i0.ɵɵadvance();
|
|
57978
|
-
i0.ɵɵproperty("ngClass", ctx.dotClasses());
|
|
57979
|
-
i0.ɵɵadvance();
|
|
57980
|
-
i0.ɵɵproperty("ngClass", ctx.dotClasses());
|
|
57981
|
-
i0.ɵɵadvance();
|
|
57982
|
-
i0.ɵɵproperty("ngClass", ctx.dotClasses());
|
|
57983
|
-
i0.ɵɵadvance();
|
|
57984
|
-
i0.ɵɵproperty("ngClass", ctx.dotClasses());
|
|
58093
|
+
i0.ɵɵadvance(2);
|
|
58094
|
+
i0.ɵɵconditional(ctx.progressPercentage() > 0 && ctx.progressPercentage() < 100 ? 20 : -1);
|
|
57985
58095
|
i0.ɵɵadvance();
|
|
57986
|
-
i0.ɵɵconditional(ctx.progressPercentage() > 0 && ctx.progressPercentage() < 100 ?
|
|
58096
|
+
i0.ɵɵconditional(ctx.progressPercentage() > 0 && ctx.progressPercentage() < 100 ? 21 : -1);
|
|
57987
58097
|
i0.ɵɵadvance(2);
|
|
57988
58098
|
i0.ɵɵproperty("ngClass", ctx.percentageClasses());
|
|
57989
58099
|
i0.ɵɵadvance();
|
|
57990
58100
|
i0.ɵɵtextInterpolate1(" ", ctx.progressPercentage(), "% complete ");
|
|
57991
|
-
} }, dependencies: [CommonModule, i1$1.NgClass], styles: ["@keyframes _ngcontent-%COMP%_icon-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.9}}@keyframes _ngcontent-%COMP%_icon-glow-pulse{0%,to{opacity:.3;transform:scale(1)}50%{opacity:.6;transform:scale(1.2)}}@keyframes _ngcontent-%COMP%_shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes _ngcontent-%COMP%_dots-move{0%{transform:translate(
|
|
58101
|
+
} }, dependencies: [CommonModule, i1$1.NgClass], styles: ["@keyframes _ngcontent-%COMP%_icon-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.9}}@keyframes _ngcontent-%COMP%_icon-glow-pulse{0%,to{opacity:.3;transform:scale(1)}50%{opacity:.6;transform:scale(1.2)}}@keyframes _ngcontent-%COMP%_shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes _ngcontent-%COMP%_dots-move{0%{transform:translate(0) scale(.8);opacity:0}10%{opacity:1;transform:translate(10px) scale(1)}25%{transform:translate(30px) scale(1.2)}40%{transform:translate(50px) scale(1)}55%{transform:translate(70px) scale(1.2)}70%{transform:translate(90px) scale(1)}85%{transform:translate(110px) scale(1.2);opacity:1}to{transform:translate(130px) scale(.8);opacity:0}}@keyframes _ngcontent-%COMP%_message-fade{0%,to{opacity:1}50%{opacity:.7}}.icon-pulse[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_icon-pulse 2s ease-in-out infinite}.icon-glow[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_icon-glow-pulse 2s ease-in-out infinite}.shimmer-effect[_ngcontent-%COMP%]{background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.3) 50%,transparent 100%);animation:_ngcontent-%COMP%_shimmer 2s ease-in-out infinite}.message-fade[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_message-fade 3s ease-in-out infinite}.dot[_ngcontent-%COMP%]{position:absolute;top:50%;width:6px;height:6px;border-radius:50%;margin-top:-3px;margin-left:-3px;animation:_ngcontent-%COMP%_dots-move 3s ease-in-out infinite}.dot-1[_ngcontent-%COMP%]{animation-delay:0s}.dot-2[_ngcontent-%COMP%]{animation-delay:.5s}.dot-3[_ngcontent-%COMP%]{animation-delay:1s}.dot-4[_ngcontent-%COMP%]{animation-delay:1.5s}.dot-5[_ngcontent-%COMP%]{animation-delay:2s}@media (prefers-reduced-motion: reduce){.icon-pulse[_ngcontent-%COMP%], .icon-glow[_ngcontent-%COMP%], .shimmer-effect[_ngcontent-%COMP%], .message-fade[_ngcontent-%COMP%], .dot[_ngcontent-%COMP%]{animation:none}}"], changeDetection: 0 }); }
|
|
57992
58102
|
}
|
|
57993
58103
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContentGenerationProgressComponent, [{
|
|
57994
58104
|
type: Component,
|
|
@@ -58038,16 +58148,16 @@ class ContentGenerationProgressComponent {
|
|
|
58038
58148
|
<div class="absolute inset-0 shimmer-effect"></div>
|
|
58039
58149
|
</div>
|
|
58040
58150
|
|
|
58041
|
-
<!-- Animated Dots Overlay (
|
|
58042
|
-
|
|
58043
|
-
<div class="
|
|
58044
|
-
<div [ngClass]="dotClasses()" class="dot dot-1"></div>
|
|
58045
|
-
<div [ngClass]="dotClasses()" class="dot dot-2"></div>
|
|
58046
|
-
<div [ngClass]="dotClasses()" class="dot dot-3"></div>
|
|
58047
|
-
<div [ngClass]="dotClasses()" class="dot dot-4"></div>
|
|
58048
|
-
<div [ngClass]="dotClasses()" class="dot dot-5"></div>
|
|
58151
|
+
<!-- Animated Dots Overlay (emerges from the solid bar edge) -->
|
|
58152
|
+
@if (progressPercentage() > 0 && progressPercentage() < 100) {
|
|
58153
|
+
<div class="absolute inset-0 overflow-visible pointer-events-none">
|
|
58154
|
+
<div [ngClass]="dotClasses()" [style.left.%]="progressPercentage()" class="dot dot-1"></div>
|
|
58155
|
+
<div [ngClass]="dotClasses()" [style.left.%]="progressPercentage()" class="dot dot-2"></div>
|
|
58156
|
+
<div [ngClass]="dotClasses()" [style.left.%]="progressPercentage()" class="dot dot-3"></div>
|
|
58157
|
+
<div [ngClass]="dotClasses()" [style.left.%]="progressPercentage()" class="dot dot-4"></div>
|
|
58158
|
+
<div [ngClass]="dotClasses()" [style.left.%]="progressPercentage()" class="dot dot-5"></div>
|
|
58049
58159
|
</div>
|
|
58050
|
-
|
|
58160
|
+
}
|
|
58051
58161
|
|
|
58052
58162
|
<!-- Glow effect at the progress edge -->
|
|
58053
58163
|
@if (progressPercentage() > 0 && progressPercentage() < 100) {
|
|
@@ -58069,9 +58179,72 @@ class ContentGenerationProgressComponent {
|
|
|
58069
58179
|
</div>
|
|
58070
58180
|
</div>
|
|
58071
58181
|
</div>
|
|
58072
|
-
`, styles: ["@keyframes icon-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.9}}@keyframes icon-glow-pulse{0%,to{opacity:.3;transform:scale(1)}50%{opacity:.6;transform:scale(1.2)}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes dots-move{0%{transform:translate(
|
|
58182
|
+
`, styles: ["@keyframes icon-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.9}}@keyframes icon-glow-pulse{0%,to{opacity:.3;transform:scale(1)}50%{opacity:.6;transform:scale(1.2)}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes dots-move{0%{transform:translate(0) scale(.8);opacity:0}10%{opacity:1;transform:translate(10px) scale(1)}25%{transform:translate(30px) scale(1.2)}40%{transform:translate(50px) scale(1)}55%{transform:translate(70px) scale(1.2)}70%{transform:translate(90px) scale(1)}85%{transform:translate(110px) scale(1.2);opacity:1}to{transform:translate(130px) scale(.8);opacity:0}}@keyframes message-fade{0%,to{opacity:1}50%{opacity:.7}}.icon-pulse{animation:icon-pulse 2s ease-in-out infinite}.icon-glow{animation:icon-glow-pulse 2s ease-in-out infinite}.shimmer-effect{background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.3) 50%,transparent 100%);animation:shimmer 2s ease-in-out infinite}.message-fade{animation:message-fade 3s ease-in-out infinite}.dot{position:absolute;top:50%;width:6px;height:6px;border-radius:50%;margin-top:-3px;margin-left:-3px;animation:dots-move 3s ease-in-out infinite}.dot-1{animation-delay:0s}.dot-2{animation-delay:.5s}.dot-3{animation-delay:1s}.dot-4{animation-delay:1.5s}.dot-5{animation-delay:2s}@media (prefers-reduced-motion: reduce){.icon-pulse,.icon-glow,.shimmer-effect,.message-fade,.dot{animation:none}}\n"] }]
|
|
58073
58183
|
}], null, { itemStatus: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemStatus", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], showIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcon", required: false }] }] }); })();
|
|
58074
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ContentGenerationProgressComponent, { className: "ContentGenerationProgressComponent", filePath: "lib/components/shared/content-generation-progress.component.ts", lineNumber:
|
|
58184
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ContentGenerationProgressComponent, { className: "ContentGenerationProgressComponent", filePath: "lib/components/shared/content-generation-progress.component.ts", lineNumber: 224 }); })();
|
|
58185
|
+
|
|
58186
|
+
class ContentGenerationProgressWithConfettiComponent {
|
|
58187
|
+
constructor() {
|
|
58188
|
+
this.itemStatus = input(...(ngDevMode ? [undefined, { debugName: "itemStatus" }] : []));
|
|
58189
|
+
this.title = input('Generating Your Analysis', ...(ngDevMode ? [{ debugName: "title" }] : []));
|
|
58190
|
+
this.subtitle = input('This will appear when ready. You can check back later as this will take a few minutes to complete.', ...(ngDevMode ? [{ debugName: "subtitle" }] : []));
|
|
58191
|
+
this.viewMode = input(ViewModeEnum.LIGHT, ...(ngDevMode ? [{ debugName: "viewMode" }] : []));
|
|
58192
|
+
this.showIcon = input(true, ...(ngDevMode ? [{ debugName: "showIcon" }] : []));
|
|
58193
|
+
this.profile = input(...(ngDevMode ? [undefined, { debugName: "profile" }] : []));
|
|
58194
|
+
this.confettiIntensity = input('normal', ...(ngDevMode ? [{ debugName: "confettiIntensity" }] : []));
|
|
58195
|
+
this.enableConfetti = input(true, ...(ngDevMode ? [{ debugName: "enableConfetti" }] : []));
|
|
58196
|
+
this.confettiDelay = input(200, ...(ngDevMode ? [{ debugName: "confettiDelay" }] : []));
|
|
58197
|
+
this.confettiService = inject(ConfettiService);
|
|
58198
|
+
this.hasCelebrated = signal(false, ...(ngDevMode ? [{ debugName: "hasCelebrated" }] : []));
|
|
58199
|
+
effect(() => {
|
|
58200
|
+
const currentProfile = this.profile();
|
|
58201
|
+
const currentStatus = currentProfile?.selfContentStatus;
|
|
58202
|
+
if (!this.enableConfetti()) {
|
|
58203
|
+
return;
|
|
58204
|
+
}
|
|
58205
|
+
if (currentStatus === AiDynamicContentStatusEnum.GENERATED && !this.hasCelebrated()) {
|
|
58206
|
+
untracked(() => {
|
|
58207
|
+
this.confettiService.trigger({
|
|
58208
|
+
intensity: this.confettiIntensity(),
|
|
58209
|
+
delay: this.confettiDelay()
|
|
58210
|
+
});
|
|
58211
|
+
this.hasCelebrated.set(true);
|
|
58212
|
+
});
|
|
58213
|
+
}
|
|
58214
|
+
if (currentStatus === AiDynamicContentStatusEnum.REQUESTED ||
|
|
58215
|
+
currentStatus === AiDynamicContentStatusEnum.GENERATING) {
|
|
58216
|
+
untracked(() => {
|
|
58217
|
+
this.hasCelebrated.set(false);
|
|
58218
|
+
});
|
|
58219
|
+
}
|
|
58220
|
+
});
|
|
58221
|
+
}
|
|
58222
|
+
static { this.ɵfac = function ContentGenerationProgressWithConfettiComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ContentGenerationProgressWithConfettiComponent)(); }; }
|
|
58223
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ContentGenerationProgressWithConfettiComponent, selectors: [["symphiq-content-generation-progress-with-confetti"]], inputs: { itemStatus: [1, "itemStatus"], title: [1, "title"], subtitle: [1, "subtitle"], viewMode: [1, "viewMode"], showIcon: [1, "showIcon"], profile: [1, "profile"], confettiIntensity: [1, "confettiIntensity"], enableConfetti: [1, "enableConfetti"], confettiDelay: [1, "confettiDelay"] }, decls: 1, vars: 5, consts: [[3, "itemStatus", "title", "subtitle", "viewMode", "showIcon"]], template: function ContentGenerationProgressWithConfettiComponent_Template(rf, ctx) { if (rf & 1) {
|
|
58224
|
+
i0.ɵɵelement(0, "symphiq-content-generation-progress", 0);
|
|
58225
|
+
} if (rf & 2) {
|
|
58226
|
+
i0.ɵɵproperty("itemStatus", ctx.itemStatus())("title", ctx.title())("subtitle", ctx.subtitle())("viewMode", ctx.viewMode())("showIcon", ctx.showIcon());
|
|
58227
|
+
} }, dependencies: [ContentGenerationProgressComponent], encapsulation: 2, changeDetection: 0 }); }
|
|
58228
|
+
}
|
|
58229
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContentGenerationProgressWithConfettiComponent, [{
|
|
58230
|
+
type: Component,
|
|
58231
|
+
args: [{
|
|
58232
|
+
selector: 'symphiq-content-generation-progress-with-confetti',
|
|
58233
|
+
standalone: true,
|
|
58234
|
+
imports: [ContentGenerationProgressComponent],
|
|
58235
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
58236
|
+
template: `
|
|
58237
|
+
<symphiq-content-generation-progress
|
|
58238
|
+
[itemStatus]="itemStatus()"
|
|
58239
|
+
[title]="title()"
|
|
58240
|
+
[subtitle]="subtitle()"
|
|
58241
|
+
[viewMode]="viewMode()"
|
|
58242
|
+
[showIcon]="showIcon()"
|
|
58243
|
+
/>
|
|
58244
|
+
`
|
|
58245
|
+
}]
|
|
58246
|
+
}], () => [], { itemStatus: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemStatus", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], showIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcon", required: false }] }], profile: [{ type: i0.Input, args: [{ isSignal: true, alias: "profile", required: false }] }], confettiIntensity: [{ type: i0.Input, args: [{ isSignal: true, alias: "confettiIntensity", required: false }] }], enableConfetti: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableConfetti", required: false }] }], confettiDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "confettiDelay", required: false }] }] }); })();
|
|
58247
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ContentGenerationProgressWithConfettiComponent, { className: "ContentGenerationProgressWithConfettiComponent", filePath: "lib/components/shared/content-generation-progress-with-confetti.component.ts", lineNumber: 29 }); })();
|
|
58075
58248
|
|
|
58076
58249
|
const _c0$n = () => [];
|
|
58077
58250
|
function SymphiqBusinessAnalysisDashboardComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -58159,13 +58332,13 @@ function SymphiqBusinessAnalysisDashboardComponent_Conditional_25_Conditional_0_
|
|
|
58159
58332
|
} }
|
|
58160
58333
|
function SymphiqBusinessAnalysisDashboardComponent_Conditional_25_Template(rf, ctx) { if (rf & 1) {
|
|
58161
58334
|
i0.ɵɵconditionalCreate(0, SymphiqBusinessAnalysisDashboardComponent_Conditional_25_Conditional_0_Template, 1, 5, "symphiq-journey-progress-indicator", 27);
|
|
58162
|
-
i0.ɵɵelement(1, "symphiq-content-generation-progress", 28);
|
|
58335
|
+
i0.ɵɵelement(1, "symphiq-content-generation-progress-with-confetti", 28);
|
|
58163
58336
|
} if (rf & 2) {
|
|
58164
|
-
let
|
|
58337
|
+
let tmp_6_0;
|
|
58165
58338
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
58166
58339
|
i0.ɵɵconditional(!ctx_r1.isOnboarded() ? 0 : -1);
|
|
58167
58340
|
i0.ɵɵadvance();
|
|
58168
|
-
i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("itemStatus", ctx_r1.itemStatus())("title", "We are generating a new Business Analysis for " + (((
|
|
58341
|
+
i0.ɵɵproperty("viewMode", ctx_r1.viewMode())("itemStatus", ctx_r1.itemStatus())("profile", ctx_r1.profile())("confettiIntensity", "celebration")("title", "We are generating a new Business Analysis for " + (((tmp_6_0 = ctx_r1.currentProfile()) == null ? null : tmp_6_0.profileStructured == null ? null : tmp_6_0.profileStructured.businessName) || "your business") + ".")("subtitle", "It will appear here when ready. You can check back later as this will take a few minutes to complete.");
|
|
58169
58342
|
} }
|
|
58170
58343
|
function SymphiqBusinessAnalysisDashboardComponent_Conditional_26_Conditional_0_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
58171
58344
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
@@ -58745,7 +58918,7 @@ class SymphiqBusinessAnalysisDashboardComponent {
|
|
|
58745
58918
|
static { this.ɵfac = function SymphiqBusinessAnalysisDashboardComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SymphiqBusinessAnalysisDashboardComponent)(); }; }
|
|
58746
58919
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SymphiqBusinessAnalysisDashboardComponent, selectors: [["symphiq-business-analysis-dashboard"]], hostBindings: function SymphiqBusinessAnalysisDashboardComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
58747
58920
|
i0.ɵɵlistener("scroll", function SymphiqBusinessAnalysisDashboardComponent_scroll_HostBindingHandler($event) { return ctx.onScroll($event); }, i0.ɵɵresolveWindow)("keydown", function SymphiqBusinessAnalysisDashboardComponent_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); }, i0.ɵɵresolveDocument);
|
|
58748
|
-
} }, inputs: { embedded: [1, "embedded"], profile: [1, "profile"], parentHeaderOffset: [1, "parentHeaderOffset"], requestedByUser: [1, "requestedByUser"], viewMode: [1, "viewMode"], scrollEvent: [1, "scrollEvent"], scrollElement: [1, "scrollElement"], isLoading: [1, "isLoading"], isOnboarded: [1, "isOnboarded"], forDemo: [1, "forDemo"], maxAccessibleStepId: [1, "maxAccessibleStepId"], itemStatus: [1, "itemStatus"] }, outputs: { stepClick: "stepClick", nextStepClick: "nextStepClick" }, decls: 35, vars: 59, consts: [[3, "ngClass"], [1, "h-full", "transition-all", "duration-200", "ease-out", 3, "ngClass"], [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, "relative", "z-[51]"], [1, "sticky", "top-0", "z-50", 3, "ngClass"], [1, "transition-all", "duration-300", "ease-in-out", "overflow-hidden"], [1, "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-8"], [1, "flex", "items-center", "justify-between"], [1, "flex", "items-center", "gap-2"], [1, "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-3"], [1, "flex-1", "min-w-0", "mr-4"], [1, "flex", "items-center", "gap-4"], [1, "flex", "items-center", "gap-2", "text-sm", "flex-shrink-0"], [1, "relative"], [3, "sections", "viewMode", "embedded", "scrollElement"], [3, "viewMode", "embedded"], [3, "viewInContextRequested", "isLightMode"], [3, "searchChange", "resultSelected", "close", "isLightMode", "isOpen", "searchQuery", "results", "hasResults", "selectedIndex", "placeholder"], [3, "close", "modeSelected", "isOpen", "currentMode", "viewMode", "isLoading"], [3, "searchClick", "isLightMode"], ["type", "button", 1, "cursor-pointer", "flex", "items-center", "gap-2", "px-3", "py-1.5", "rounded-lg", "text-xs", "font-medium", "transition-all", "duration-200", "hover:scale-105", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M15 12a3 3 0 11-6 0 3 3 0 016 0z"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"], [1, "transition-opacity", "duration-300", 3, "ngClass"], [3, "searchClick", "isLightMode", "minimized"], ["type", "button", 1, "cursor-pointer", "flex", "items-center", "gap-2", "px-2", "py-1.5", "rounded-lg", "text-xs", "font-medium", "transition-all", "duration-200", "hover:scale-105", 3, "click", "ngClass"], [3, "viewMode", "currentStepId", "showNextStepAction", "forDemo", "maxAccessibleStepId"], [3, "viewMode", "itemStatus", "title", "subtitle"], [3, "stepClick", "nextStepClick", "viewMode", "currentStepId", "showNextStepAction", "forDemo", "maxAccessibleStepId"], [1, "mb-8"], [3, "viewMode", "businessName", "isOnboarded"], [3, "viewMoreClick", "recommendations", "viewMode"], [3, "sections", "viewMode"], [3, "section", "viewMode", "forceExpanded"], [1, "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8"], [3, "viewMode", "subsections"]], template: function SymphiqBusinessAnalysisDashboardComponent_Template(rf, ctx) { if (rf & 1) {
|
|
58921
|
+
} }, inputs: { embedded: [1, "embedded"], profile: [1, "profile"], parentHeaderOffset: [1, "parentHeaderOffset"], requestedByUser: [1, "requestedByUser"], viewMode: [1, "viewMode"], scrollEvent: [1, "scrollEvent"], scrollElement: [1, "scrollElement"], isLoading: [1, "isLoading"], isOnboarded: [1, "isOnboarded"], forDemo: [1, "forDemo"], maxAccessibleStepId: [1, "maxAccessibleStepId"], itemStatus: [1, "itemStatus"] }, outputs: { stepClick: "stepClick", nextStepClick: "nextStepClick" }, decls: 35, vars: 59, consts: [[3, "ngClass"], [1, "h-full", "transition-all", "duration-200", "ease-out", 3, "ngClass"], [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, "relative", "z-[51]"], [1, "sticky", "top-0", "z-50", 3, "ngClass"], [1, "transition-all", "duration-300", "ease-in-out", "overflow-hidden"], [1, "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-8"], [1, "flex", "items-center", "justify-between"], [1, "flex", "items-center", "gap-2"], [1, "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-3"], [1, "flex-1", "min-w-0", "mr-4"], [1, "flex", "items-center", "gap-4"], [1, "flex", "items-center", "gap-2", "text-sm", "flex-shrink-0"], [1, "relative"], [3, "sections", "viewMode", "embedded", "scrollElement"], [3, "viewMode", "embedded"], [3, "viewInContextRequested", "isLightMode"], [3, "searchChange", "resultSelected", "close", "isLightMode", "isOpen", "searchQuery", "results", "hasResults", "selectedIndex", "placeholder"], [3, "close", "modeSelected", "isOpen", "currentMode", "viewMode", "isLoading"], [3, "searchClick", "isLightMode"], ["type", "button", 1, "cursor-pointer", "flex", "items-center", "gap-2", "px-3", "py-1.5", "rounded-lg", "text-xs", "font-medium", "transition-all", "duration-200", "hover:scale-105", 3, "click", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-4", "h-4"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M15 12a3 3 0 11-6 0 3 3 0 016 0z"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"], [1, "transition-opacity", "duration-300", 3, "ngClass"], [3, "searchClick", "isLightMode", "minimized"], ["type", "button", 1, "cursor-pointer", "flex", "items-center", "gap-2", "px-2", "py-1.5", "rounded-lg", "text-xs", "font-medium", "transition-all", "duration-200", "hover:scale-105", 3, "click", "ngClass"], [3, "viewMode", "currentStepId", "showNextStepAction", "forDemo", "maxAccessibleStepId"], [3, "viewMode", "itemStatus", "profile", "confettiIntensity", "title", "subtitle"], [3, "stepClick", "nextStepClick", "viewMode", "currentStepId", "showNextStepAction", "forDemo", "maxAccessibleStepId"], [1, "mb-8"], [3, "viewMode", "businessName", "isOnboarded"], [3, "viewMoreClick", "recommendations", "viewMode"], [3, "sections", "viewMode"], [3, "section", "viewMode", "forceExpanded"], [1, "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8"], [3, "viewMode", "subsections"]], template: function SymphiqBusinessAnalysisDashboardComponent_Template(rf, ctx) { if (rf & 1) {
|
|
58749
58922
|
i0.ɵɵelementStart(0, "div", 0)(1, "div");
|
|
58750
58923
|
i0.ɵɵelement(2, "div", 1);
|
|
58751
58924
|
i0.ɵɵelementEnd();
|
|
@@ -58766,7 +58939,7 @@ class SymphiqBusinessAnalysisDashboardComponent {
|
|
|
58766
58939
|
i0.ɵɵconditionalCreate(23, SymphiqBusinessAnalysisDashboardComponent_Conditional_23_Template, 5, 3);
|
|
58767
58940
|
i0.ɵɵelementEnd()()()()();
|
|
58768
58941
|
i0.ɵɵelementStart(24, "main", 13);
|
|
58769
|
-
i0.ɵɵconditionalCreate(25, SymphiqBusinessAnalysisDashboardComponent_Conditional_25_Template, 2,
|
|
58942
|
+
i0.ɵɵconditionalCreate(25, SymphiqBusinessAnalysisDashboardComponent_Conditional_25_Template, 2, 7)(26, SymphiqBusinessAnalysisDashboardComponent_Conditional_26_Template, 2, 1);
|
|
58770
58943
|
i0.ɵɵelementEnd();
|
|
58771
58944
|
i0.ɵɵconditionalCreate(27, SymphiqBusinessAnalysisDashboardComponent_Conditional_27_Template, 1, 4, "symphiq-section-navigation", 14);
|
|
58772
58945
|
i0.ɵɵconditionalCreate(28, SymphiqBusinessAnalysisDashboardComponent_Conditional_28_Template, 1, 4, "symphiq-floating-toc", 14);
|
|
@@ -58838,259 +59011,261 @@ class SymphiqBusinessAnalysisDashboardComponent {
|
|
|
58838
59011
|
i0.ɵɵproperty("isLightMode", ctx.isLightMode())("isOpen", ctx.searchService.isSearchOpen())("searchQuery", ctx.searchService.getSearchQuery())("results", ctx.searchService.searchResults())("hasResults", ctx.searchService.hasResults())("selectedIndex", ctx.selectedSearchIndex())("placeholder", "Search sections, items, and analysis...");
|
|
58839
59012
|
i0.ɵɵadvance();
|
|
58840
59013
|
i0.ɵɵproperty("isOpen", ctx.isViewModeSwitcherOpen())("currentMode", ctx.displayMode())("viewMode", ctx.viewMode())("isLoading", ctx.isViewModeSwitching());
|
|
58841
|
-
} }, dependencies: [CommonModule, i1$1.NgClass, ProfileSectionComponent, SectionNavigationComponent, FloatingTocComponent, FloatingBackButtonComponent, TooltipContainerComponent, SectionDividerComponent, BusinessAnalysisModalComponent, SearchButtonComponent, SearchModalComponent, ViewModeSwitcherModalComponent, JourneyProgressIndicatorComponent, WelcomeBannerComponent, RecommendationsTiledGridComponent, CollapsibleSectionGroupComponent,
|
|
59014
|
+
} }, dependencies: [CommonModule, i1$1.NgClass, ProfileSectionComponent, SectionNavigationComponent, FloatingTocComponent, FloatingBackButtonComponent, TooltipContainerComponent, SectionDividerComponent, BusinessAnalysisModalComponent, SearchButtonComponent, SearchModalComponent, ViewModeSwitcherModalComponent, JourneyProgressIndicatorComponent, WelcomeBannerComponent, RecommendationsTiledGridComponent, CollapsibleSectionGroupComponent, ContentGenerationProgressWithConfettiComponent], styles: ["[_nghost-%COMP%]{display:block}@keyframes _ngcontent-%COMP%_spin{to{transform:rotate(360deg)}}@keyframes _ngcontent-%COMP%_pulse-highlight{0%,to{transform:scale(1);box-shadow:0 0 #3b82f6b3}50%{transform:scale(1.02);box-shadow:0 0 20px 8px #3b82f64d}}[_nghost-%COMP%] .search-highlight-pulse{animation:_ngcontent-%COMP%_pulse-highlight 2s ease-in-out;border-color:#3b82f6!important}"], changeDetection: 0 }); }
|
|
58842
59015
|
}
|
|
58843
59016
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SymphiqBusinessAnalysisDashboardComponent, [{
|
|
58844
59017
|
type: Component,
|
|
58845
|
-
args: [{ selector: 'symphiq-business-analysis-dashboard', standalone: true, imports: [CommonModule, ProfileSectionComponent, SectionNavigationComponent, FloatingTocComponent, FloatingBackButtonComponent, TooltipContainerComponent, SectionDividerComponent, BusinessAnalysisModalComponent, SearchButtonComponent, SearchModalComponent, ViewModeSwitcherModalComponent, JourneyProgressIndicatorComponent, WelcomeBannerComponent, RecommendationsTiledGridComponent, CollapsibleSectionGroupComponent,
|
|
58846
|
-
<div [ngClass]="getContainerClasses()">
|
|
58847
|
-
<!-- Scroll Progress Bar (fixed at top) -->
|
|
58848
|
-
<div [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'">
|
|
58849
|
-
<div
|
|
58850
|
-
[style.width.%]="scrollProgress()"
|
|
58851
|
-
[ngClass]="isLightMode() ? 'bg-gradient-to-r from-blue-500 to-purple-500' : 'bg-gradient-to-r from-blue-400 to-purple-400'"
|
|
58852
|
-
class="h-full transition-all duration-200 ease-out">
|
|
58853
|
-
</div>
|
|
58854
|
-
</div>
|
|
58855
|
-
|
|
58856
|
-
<div class="animated-bubbles" [class.light-mode]="isLightMode()" style="position: fixed; top: 0; left: 0; right: 0; bottom: 0; width: 100vw; height: 100vh; z-index: 1; pointer-events: none;"></div>
|
|
58857
|
-
|
|
58858
|
-
<div class="relative z-[51]">
|
|
58859
|
-
<header [ngClass]="getHeaderClasses()" class="sticky top-0 z-50">
|
|
58860
|
-
<!-- Expanded Header (default state) -->
|
|
58861
|
-
<div
|
|
58862
|
-
class="transition-all duration-300 ease-in-out overflow-hidden"
|
|
58863
|
-
[class.max-h-0]="headerScrollService.isScrolled()"
|
|
58864
|
-
[class.opacity-0]="headerScrollService.isScrolled()"
|
|
58865
|
-
[class.max-h-96]="!headerScrollService.isScrolled()"
|
|
58866
|
-
[class.opacity-100]="!headerScrollService.isScrolled()">
|
|
58867
|
-
<div
|
|
58868
|
-
class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8"
|
|
58869
|
-
[class.pointer-events-none]="headerScrollService.isScrolled()"
|
|
58870
|
-
[class.pointer-events-auto]="!headerScrollService.isScrolled()">
|
|
58871
|
-
<div class="flex items-center justify-between">
|
|
58872
|
-
<div>
|
|
58873
|
-
<h1 [ngClass]="getMainTitleClasses()">
|
|
58874
|
-
{{ currentProfile()?.profileStructured?.businessName || 'Business Analysis' }}
|
|
58875
|
-
</h1>
|
|
58876
|
-
<p [ngClass]="getSubtitleClasses()">
|
|
58877
|
-
Business Profile & Analysis
|
|
58878
|
-
</p>
|
|
58879
|
-
</div>
|
|
58880
|
-
@if (profile()?.selfContentStatus === AiDynamicContentStatusEnum.GENERATED) {
|
|
58881
|
-
<div class="flex items-center gap-2">
|
|
58882
|
-
<symphiq-search-button
|
|
58883
|
-
[isLightMode]="isLightMode()"
|
|
58884
|
-
(searchClick)="openSearch()"
|
|
58885
|
-
/>
|
|
58886
|
-
<button
|
|
58887
|
-
type="button"
|
|
58888
|
-
(click)="openViewModeSwitcher()"
|
|
58889
|
-
[ngClass]="getViewModeButtonClasses()"
|
|
58890
|
-
class="cursor-pointer flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs font-medium transition-all duration-200 hover:scale-105">
|
|
58891
|
-
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
58892
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
|
|
58893
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"></path>
|
|
58894
|
-
</svg>
|
|
58895
|
-
<span>{{ displayModeLabel() }}</span>
|
|
58896
|
-
</button>
|
|
58897
|
-
</div>
|
|
58898
|
-
}
|
|
58899
|
-
</div>
|
|
58900
|
-
</div>
|
|
58901
|
-
</div>
|
|
58902
|
-
|
|
58903
|
-
<!-- Condensed Header (scrolled state) -->
|
|
58904
|
-
<div
|
|
58905
|
-
class="transition-all duration-300 ease-in-out overflow-hidden"
|
|
58906
|
-
[class.max-h-0]="!headerScrollService.isScrolled()"
|
|
58907
|
-
[class.opacity-0]="!headerScrollService.isScrolled()"
|
|
58908
|
-
[class.max-h-20]="headerScrollService.isScrolled()"
|
|
58909
|
-
[class.opacity-100]="headerScrollService.isScrolled()">
|
|
58910
|
-
<div
|
|
58911
|
-
class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-3"
|
|
58912
|
-
[class.pointer-events-none]="!headerScrollService.isScrolled()"
|
|
58913
|
-
[class.pointer-events-auto]="headerScrollService.isScrolled()">
|
|
58914
|
-
<div class="flex items-center justify-between">
|
|
58915
|
-
<div class="flex-1 min-w-0 mr-4">
|
|
58916
|
-
<h1 [ngClass]="isLightMode() ? 'text-xl font-bold bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent truncate' : 'text-xl font-bold bg-gradient-to-r from-blue-400 to-purple-400 bg-clip-text text-transparent truncate'">
|
|
58917
|
-
{{ currentProfile()?.profileStructured?.businessName || 'Business Analysis' }}
|
|
58918
|
-
</h1>
|
|
58919
|
-
</div>
|
|
58920
|
-
<div class="flex items-center gap-4">
|
|
58921
|
-
@if (!isSimplifiedView()) {
|
|
58922
|
-
<div class="flex items-center gap-2 text-sm flex-shrink-0">
|
|
58923
|
-
<span [ngClass]="isLightMode() ? 'text-slate-600 font-medium' : 'text-slate-400 font-medium'" class="transition-opacity duration-300" [class.opacity-0]="sectionTitleFading()" [class.opacity-100]="!sectionTitleFading()">
|
|
58924
|
-
{{ currentSectionTitle() }}
|
|
58925
|
-
</span>
|
|
58926
|
-
@if (currentSubsectionTitle()) {
|
|
58927
|
-
<span [ngClass]="isLightMode() ? 'text-slate-400' : 'text-slate-500'" class="transition-opacity duration-300" [class.opacity-0]="subsectionTitleFading()" [class.opacity-100]="!subsectionTitleFading()">›</span>
|
|
58928
|
-
<span [ngClass]="isLightMode() ? 'text-slate-500' : 'text-slate-500'" class="transition-opacity duration-300" [class.opacity-0]="subsectionTitleFading()" [class.opacity-100]="!subsectionTitleFading()">
|
|
58929
|
-
{{ currentSubsectionTitle() }}
|
|
58930
|
-
</span>
|
|
58931
|
-
}
|
|
58932
|
-
</div>
|
|
58933
|
-
}
|
|
58934
|
-
@if (profile()?.selfContentStatus === AiDynamicContentStatusEnum.GENERATED) {
|
|
58935
|
-
<symphiq-search-button
|
|
58936
|
-
[isLightMode]="isLightMode()"
|
|
58937
|
-
[minimized]="true"
|
|
58938
|
-
(searchClick)="openSearch()"
|
|
58939
|
-
/>
|
|
58940
|
-
<button
|
|
58941
|
-
type="button"
|
|
58942
|
-
(click)="openViewModeSwitcher()"
|
|
58943
|
-
[ngClass]="getViewModeButtonClasses()"
|
|
58944
|
-
class="cursor-pointer flex items-center gap-2 px-2 py-1.5 rounded-lg text-xs font-medium transition-all duration-200 hover:scale-105">
|
|
58945
|
-
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
58946
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
|
|
58947
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"></path>
|
|
58948
|
-
</svg>
|
|
58949
|
-
</button>
|
|
58950
|
-
}
|
|
58951
|
-
</div>
|
|
58952
|
-
</div>
|
|
58953
|
-
</div>
|
|
58954
|
-
</div>
|
|
58955
|
-
</header>
|
|
58956
|
-
|
|
58957
|
-
<main class="relative">
|
|
58958
|
-
@if (isContentGenerating()) {
|
|
58959
|
-
<!-- Journey Progress Banner (always show when not onboarded) -->
|
|
58960
|
-
@if (!isOnboarded()) {
|
|
58961
|
-
<symphiq-journey-progress-indicator
|
|
58962
|
-
[viewMode]="viewMode()"
|
|
58963
|
-
[currentStepId]="JourneyStepIdEnum.BUSINESS_ANALYSIS"
|
|
58964
|
-
[showNextStepAction]="false"
|
|
58965
|
-
[forDemo]="forDemo()"
|
|
58966
|
-
[maxAccessibleStepId]="maxAccessibleStepId()"
|
|
58967
|
-
(stepClick)="stepClick.emit($event)"
|
|
58968
|
-
(nextStepClick)="nextStepClick.emit()"
|
|
58969
|
-
/>
|
|
58970
|
-
}
|
|
58971
|
-
|
|
58972
|
-
<!-- Content Generation Progress Component -->
|
|
58973
|
-
<symphiq-content-generation-progress
|
|
58974
|
-
[viewMode]="viewMode()"
|
|
58975
|
-
[itemStatus]="itemStatus()"
|
|
58976
|
-
[
|
|
58977
|
-
[
|
|
58978
|
-
|
|
58979
|
-
|
|
58980
|
-
|
|
58981
|
-
|
|
58982
|
-
|
|
58983
|
-
|
|
58984
|
-
|
|
58985
|
-
|
|
58986
|
-
[
|
|
58987
|
-
[
|
|
58988
|
-
[
|
|
58989
|
-
|
|
58990
|
-
|
|
58991
|
-
|
|
58992
|
-
|
|
58993
|
-
|
|
58994
|
-
|
|
58995
|
-
|
|
58996
|
-
|
|
58997
|
-
|
|
58998
|
-
|
|
58999
|
-
[
|
|
59000
|
-
|
|
59001
|
-
|
|
59002
|
-
|
|
59003
|
-
|
|
59004
|
-
|
|
59005
|
-
|
|
59006
|
-
|
|
59007
|
-
|
|
59008
|
-
|
|
59009
|
-
|
|
59010
|
-
|
|
59011
|
-
|
|
59012
|
-
|
|
59013
|
-
|
|
59014
|
-
|
|
59015
|
-
|
|
59016
|
-
|
|
59017
|
-
|
|
59018
|
-
|
|
59019
|
-
|
|
59020
|
-
|
|
59021
|
-
|
|
59022
|
-
|
|
59023
|
-
[
|
|
59024
|
-
|
|
59025
|
-
|
|
59026
|
-
|
|
59027
|
-
|
|
59028
|
-
|
|
59029
|
-
|
|
59030
|
-
|
|
59031
|
-
|
|
59032
|
-
|
|
59033
|
-
|
|
59034
|
-
|
|
59035
|
-
|
|
59036
|
-
|
|
59037
|
-
|
|
59038
|
-
|
|
59039
|
-
|
|
59040
|
-
|
|
59041
|
-
[
|
|
59042
|
-
[
|
|
59043
|
-
|
|
59044
|
-
|
|
59045
|
-
|
|
59046
|
-
|
|
59047
|
-
|
|
59048
|
-
|
|
59049
|
-
|
|
59050
|
-
[
|
|
59051
|
-
[
|
|
59052
|
-
|
|
59053
|
-
|
|
59054
|
-
|
|
59055
|
-
|
|
59056
|
-
|
|
59057
|
-
|
|
59058
|
-
|
|
59059
|
-
|
|
59060
|
-
|
|
59061
|
-
|
|
59062
|
-
|
|
59063
|
-
|
|
59064
|
-
|
|
59065
|
-
|
|
59066
|
-
|
|
59067
|
-
|
|
59068
|
-
|
|
59069
|
-
|
|
59070
|
-
|
|
59071
|
-
|
|
59072
|
-
|
|
59073
|
-
|
|
59074
|
-
|
|
59075
|
-
[
|
|
59076
|
-
[
|
|
59077
|
-
[
|
|
59078
|
-
[
|
|
59079
|
-
[
|
|
59080
|
-
|
|
59081
|
-
|
|
59082
|
-
(
|
|
59083
|
-
|
|
59084
|
-
|
|
59085
|
-
|
|
59086
|
-
|
|
59087
|
-
|
|
59088
|
-
[
|
|
59089
|
-
[
|
|
59090
|
-
|
|
59091
|
-
|
|
59092
|
-
|
|
59093
|
-
|
|
59018
|
+
args: [{ selector: 'symphiq-business-analysis-dashboard', standalone: true, imports: [CommonModule, ProfileSectionComponent, SectionNavigationComponent, FloatingTocComponent, FloatingBackButtonComponent, TooltipContainerComponent, SectionDividerComponent, BusinessAnalysisModalComponent, SearchButtonComponent, SearchModalComponent, ViewModeSwitcherModalComponent, JourneyProgressIndicatorComponent, WelcomeBannerComponent, RecommendationsTiledGridComponent, CollapsibleSectionGroupComponent, ContentGenerationProgressWithConfettiComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
59019
|
+
<div [ngClass]="getContainerClasses()">
|
|
59020
|
+
<!-- Scroll Progress Bar (fixed at top) -->
|
|
59021
|
+
<div [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'">
|
|
59022
|
+
<div
|
|
59023
|
+
[style.width.%]="scrollProgress()"
|
|
59024
|
+
[ngClass]="isLightMode() ? 'bg-gradient-to-r from-blue-500 to-purple-500' : 'bg-gradient-to-r from-blue-400 to-purple-400'"
|
|
59025
|
+
class="h-full transition-all duration-200 ease-out">
|
|
59026
|
+
</div>
|
|
59027
|
+
</div>
|
|
59028
|
+
|
|
59029
|
+
<div class="animated-bubbles" [class.light-mode]="isLightMode()" style="position: fixed; top: 0; left: 0; right: 0; bottom: 0; width: 100vw; height: 100vh; z-index: 1; pointer-events: none;"></div>
|
|
59030
|
+
|
|
59031
|
+
<div class="relative z-[51]">
|
|
59032
|
+
<header [ngClass]="getHeaderClasses()" class="sticky top-0 z-50">
|
|
59033
|
+
<!-- Expanded Header (default state) -->
|
|
59034
|
+
<div
|
|
59035
|
+
class="transition-all duration-300 ease-in-out overflow-hidden"
|
|
59036
|
+
[class.max-h-0]="headerScrollService.isScrolled()"
|
|
59037
|
+
[class.opacity-0]="headerScrollService.isScrolled()"
|
|
59038
|
+
[class.max-h-96]="!headerScrollService.isScrolled()"
|
|
59039
|
+
[class.opacity-100]="!headerScrollService.isScrolled()">
|
|
59040
|
+
<div
|
|
59041
|
+
class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8"
|
|
59042
|
+
[class.pointer-events-none]="headerScrollService.isScrolled()"
|
|
59043
|
+
[class.pointer-events-auto]="!headerScrollService.isScrolled()">
|
|
59044
|
+
<div class="flex items-center justify-between">
|
|
59045
|
+
<div>
|
|
59046
|
+
<h1 [ngClass]="getMainTitleClasses()">
|
|
59047
|
+
{{ currentProfile()?.profileStructured?.businessName || 'Business Analysis' }}
|
|
59048
|
+
</h1>
|
|
59049
|
+
<p [ngClass]="getSubtitleClasses()">
|
|
59050
|
+
Business Profile & Analysis
|
|
59051
|
+
</p>
|
|
59052
|
+
</div>
|
|
59053
|
+
@if (profile()?.selfContentStatus === AiDynamicContentStatusEnum.GENERATED) {
|
|
59054
|
+
<div class="flex items-center gap-2">
|
|
59055
|
+
<symphiq-search-button
|
|
59056
|
+
[isLightMode]="isLightMode()"
|
|
59057
|
+
(searchClick)="openSearch()"
|
|
59058
|
+
/>
|
|
59059
|
+
<button
|
|
59060
|
+
type="button"
|
|
59061
|
+
(click)="openViewModeSwitcher()"
|
|
59062
|
+
[ngClass]="getViewModeButtonClasses()"
|
|
59063
|
+
class="cursor-pointer flex items-center gap-2 px-3 py-1.5 rounded-lg text-xs font-medium transition-all duration-200 hover:scale-105">
|
|
59064
|
+
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
59065
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
|
|
59066
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"></path>
|
|
59067
|
+
</svg>
|
|
59068
|
+
<span>{{ displayModeLabel() }}</span>
|
|
59069
|
+
</button>
|
|
59070
|
+
</div>
|
|
59071
|
+
}
|
|
59072
|
+
</div>
|
|
59073
|
+
</div>
|
|
59074
|
+
</div>
|
|
59075
|
+
|
|
59076
|
+
<!-- Condensed Header (scrolled state) -->
|
|
59077
|
+
<div
|
|
59078
|
+
class="transition-all duration-300 ease-in-out overflow-hidden"
|
|
59079
|
+
[class.max-h-0]="!headerScrollService.isScrolled()"
|
|
59080
|
+
[class.opacity-0]="!headerScrollService.isScrolled()"
|
|
59081
|
+
[class.max-h-20]="headerScrollService.isScrolled()"
|
|
59082
|
+
[class.opacity-100]="headerScrollService.isScrolled()">
|
|
59083
|
+
<div
|
|
59084
|
+
class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-3"
|
|
59085
|
+
[class.pointer-events-none]="!headerScrollService.isScrolled()"
|
|
59086
|
+
[class.pointer-events-auto]="headerScrollService.isScrolled()">
|
|
59087
|
+
<div class="flex items-center justify-between">
|
|
59088
|
+
<div class="flex-1 min-w-0 mr-4">
|
|
59089
|
+
<h1 [ngClass]="isLightMode() ? 'text-xl font-bold bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent truncate' : 'text-xl font-bold bg-gradient-to-r from-blue-400 to-purple-400 bg-clip-text text-transparent truncate'">
|
|
59090
|
+
{{ currentProfile()?.profileStructured?.businessName || 'Business Analysis' }}
|
|
59091
|
+
</h1>
|
|
59092
|
+
</div>
|
|
59093
|
+
<div class="flex items-center gap-4">
|
|
59094
|
+
@if (!isSimplifiedView()) {
|
|
59095
|
+
<div class="flex items-center gap-2 text-sm flex-shrink-0">
|
|
59096
|
+
<span [ngClass]="isLightMode() ? 'text-slate-600 font-medium' : 'text-slate-400 font-medium'" class="transition-opacity duration-300" [class.opacity-0]="sectionTitleFading()" [class.opacity-100]="!sectionTitleFading()">
|
|
59097
|
+
{{ currentSectionTitle() }}
|
|
59098
|
+
</span>
|
|
59099
|
+
@if (currentSubsectionTitle()) {
|
|
59100
|
+
<span [ngClass]="isLightMode() ? 'text-slate-400' : 'text-slate-500'" class="transition-opacity duration-300" [class.opacity-0]="subsectionTitleFading()" [class.opacity-100]="!subsectionTitleFading()">›</span>
|
|
59101
|
+
<span [ngClass]="isLightMode() ? 'text-slate-500' : 'text-slate-500'" class="transition-opacity duration-300" [class.opacity-0]="subsectionTitleFading()" [class.opacity-100]="!subsectionTitleFading()">
|
|
59102
|
+
{{ currentSubsectionTitle() }}
|
|
59103
|
+
</span>
|
|
59104
|
+
}
|
|
59105
|
+
</div>
|
|
59106
|
+
}
|
|
59107
|
+
@if (profile()?.selfContentStatus === AiDynamicContentStatusEnum.GENERATED) {
|
|
59108
|
+
<symphiq-search-button
|
|
59109
|
+
[isLightMode]="isLightMode()"
|
|
59110
|
+
[minimized]="true"
|
|
59111
|
+
(searchClick)="openSearch()"
|
|
59112
|
+
/>
|
|
59113
|
+
<button
|
|
59114
|
+
type="button"
|
|
59115
|
+
(click)="openViewModeSwitcher()"
|
|
59116
|
+
[ngClass]="getViewModeButtonClasses()"
|
|
59117
|
+
class="cursor-pointer flex items-center gap-2 px-2 py-1.5 rounded-lg text-xs font-medium transition-all duration-200 hover:scale-105">
|
|
59118
|
+
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
59119
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
|
|
59120
|
+
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"></path>
|
|
59121
|
+
</svg>
|
|
59122
|
+
</button>
|
|
59123
|
+
}
|
|
59124
|
+
</div>
|
|
59125
|
+
</div>
|
|
59126
|
+
</div>
|
|
59127
|
+
</div>
|
|
59128
|
+
</header>
|
|
59129
|
+
|
|
59130
|
+
<main class="relative">
|
|
59131
|
+
@if (isContentGenerating()) {
|
|
59132
|
+
<!-- Journey Progress Banner (always show when not onboarded) -->
|
|
59133
|
+
@if (!isOnboarded()) {
|
|
59134
|
+
<symphiq-journey-progress-indicator
|
|
59135
|
+
[viewMode]="viewMode()"
|
|
59136
|
+
[currentStepId]="JourneyStepIdEnum.BUSINESS_ANALYSIS"
|
|
59137
|
+
[showNextStepAction]="false"
|
|
59138
|
+
[forDemo]="forDemo()"
|
|
59139
|
+
[maxAccessibleStepId]="maxAccessibleStepId()"
|
|
59140
|
+
(stepClick)="stepClick.emit($event)"
|
|
59141
|
+
(nextStepClick)="nextStepClick.emit()"
|
|
59142
|
+
/>
|
|
59143
|
+
}
|
|
59144
|
+
|
|
59145
|
+
<!-- Content Generation Progress Component -->
|
|
59146
|
+
<symphiq-content-generation-progress-with-confetti
|
|
59147
|
+
[viewMode]="viewMode()"
|
|
59148
|
+
[itemStatus]="itemStatus()"
|
|
59149
|
+
[profile]="profile()"
|
|
59150
|
+
[confettiIntensity]="'celebration'"
|
|
59151
|
+
[title]="'We are generating a new Business Analysis for ' + (currentProfile()?.profileStructured?.businessName || 'your business') + '.'"
|
|
59152
|
+
[subtitle]="'It will appear here when ready. You can check back later as this will take a few minutes to complete.'"
|
|
59153
|
+
/>
|
|
59154
|
+
} @else {
|
|
59155
|
+
@if (isSimplifiedView()) {
|
|
59156
|
+
<!-- Journey Progress Banner - Full Width Sticky (only show when not onboarded) -->
|
|
59157
|
+
@if (!isOnboarded()) {
|
|
59158
|
+
<symphiq-journey-progress-indicator
|
|
59159
|
+
[viewMode]="viewMode()"
|
|
59160
|
+
[currentStepId]="JourneyStepIdEnum.BUSINESS_ANALYSIS"
|
|
59161
|
+
[showNextStepAction]="showNextStepAction()"
|
|
59162
|
+
[forDemo]="forDemo()"
|
|
59163
|
+
[maxAccessibleStepId]="maxAccessibleStepId()"
|
|
59164
|
+
(stepClick)="stepClick.emit($event)"
|
|
59165
|
+
(nextStepClick)="nextStepClick.emit()"
|
|
59166
|
+
/>
|
|
59167
|
+
}
|
|
59168
|
+
|
|
59169
|
+
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
|
|
59170
|
+
<div class="mb-8">
|
|
59171
|
+
<symphiq-welcome-banner
|
|
59172
|
+
[viewMode]="viewMode()"
|
|
59173
|
+
[businessName]="currentProfile()?.profileStructured?.businessName || 'your business'"
|
|
59174
|
+
[isOnboarded]="isOnboarded()"
|
|
59175
|
+
/>
|
|
59176
|
+
</div>
|
|
59177
|
+
|
|
59178
|
+
<div class="mb-8">
|
|
59179
|
+
<symphiq-recommendations-tiled-grid
|
|
59180
|
+
[recommendations]="recommendationItems()"
|
|
59181
|
+
[viewMode]="viewMode()"
|
|
59182
|
+
(viewMoreClick)="openRecommendationDetailsModal($event)"
|
|
59183
|
+
/>
|
|
59184
|
+
</div>
|
|
59185
|
+
|
|
59186
|
+
<div>
|
|
59187
|
+
<symphiq-collapsible-section-group
|
|
59188
|
+
[sections]="nonRecommendationSections()"
|
|
59189
|
+
[viewMode]="viewMode()"
|
|
59190
|
+
/>
|
|
59191
|
+
</div>
|
|
59192
|
+
</div>
|
|
59193
|
+
} @else {
|
|
59194
|
+
@for (section of sections(); track trackBySectionId($index, section); let idx = $index; let last = $last) {
|
|
59195
|
+
<symphiq-profile-section
|
|
59196
|
+
[section]="section"
|
|
59197
|
+
[viewMode]="viewMode()"
|
|
59198
|
+
[forceExpanded]="!isCompactView()"
|
|
59199
|
+
/>
|
|
59200
|
+
@if (!last) {
|
|
59201
|
+
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
|
59202
|
+
<symphiq-section-divider
|
|
59203
|
+
[viewMode]="viewMode()"
|
|
59204
|
+
[subsections]="sections()[idx + 1].subsections || []" />
|
|
59205
|
+
</div>
|
|
59206
|
+
}
|
|
59207
|
+
}
|
|
59208
|
+
}
|
|
59209
|
+
}
|
|
59210
|
+
</main>
|
|
59211
|
+
|
|
59212
|
+
@if (!isSimplifiedView()) {
|
|
59213
|
+
<symphiq-section-navigation
|
|
59214
|
+
[sections]="sections()"
|
|
59215
|
+
[viewMode]="viewMode()"
|
|
59216
|
+
[embedded]="embedded()"
|
|
59217
|
+
[scrollElement]="scrollElement() ?? undefined"
|
|
59218
|
+
/>
|
|
59219
|
+
}
|
|
59220
|
+
|
|
59221
|
+
@if (!isSimplifiedView()) {
|
|
59222
|
+
<symphiq-floating-toc
|
|
59223
|
+
[sections]="sections()"
|
|
59224
|
+
[viewMode]="viewMode()"
|
|
59225
|
+
[embedded]="embedded()"
|
|
59226
|
+
[scrollElement]="scrollElement() ?? undefined"
|
|
59227
|
+
/>
|
|
59228
|
+
}
|
|
59229
|
+
|
|
59230
|
+
<symphiq-floating-back-button
|
|
59231
|
+
[viewMode]="viewMode()"
|
|
59232
|
+
[embedded]="embedded()"
|
|
59233
|
+
/>
|
|
59234
|
+
</div>
|
|
59235
|
+
|
|
59236
|
+
@if (isLoading()) {
|
|
59237
|
+
<div [ngClass]="getLoadingOverlayClasses()">
|
|
59238
|
+
<div [ngClass]="getSpinnerClasses()"></div>
|
|
59239
|
+
</div>
|
|
59240
|
+
}
|
|
59241
|
+
|
|
59242
|
+
<symphiq-tooltip-container />
|
|
59243
|
+
<symphiq-business-analysis-modal
|
|
59244
|
+
[isLightMode]="isLightMode()"
|
|
59245
|
+
(viewInContextRequested)="handleViewInContext($event)" />
|
|
59246
|
+
|
|
59247
|
+
<symphiq-search-modal
|
|
59248
|
+
[isLightMode]="isLightMode()"
|
|
59249
|
+
[isOpen]="searchService.isSearchOpen()"
|
|
59250
|
+
[searchQuery]="searchService.getSearchQuery()"
|
|
59251
|
+
[results]="searchService.searchResults()"
|
|
59252
|
+
[hasResults]="searchService.hasResults()"
|
|
59253
|
+
[selectedIndex]="selectedSearchIndex()"
|
|
59254
|
+
[placeholder]="'Search sections, items, and analysis...'"
|
|
59255
|
+
(searchChange)="onSearchChange($event)"
|
|
59256
|
+
(resultSelected)="onSearchResultSelected($event)"
|
|
59257
|
+
(close)="closeSearch()"
|
|
59258
|
+
/>
|
|
59259
|
+
|
|
59260
|
+
<symphiq-view-mode-switcher-modal
|
|
59261
|
+
[isOpen]="isViewModeSwitcherOpen()"
|
|
59262
|
+
[currentMode]="displayMode()"
|
|
59263
|
+
[viewMode]="viewMode()"
|
|
59264
|
+
[isLoading]="isViewModeSwitching()"
|
|
59265
|
+
(close)="closeViewModeSwitcher()"
|
|
59266
|
+
(modeSelected)="handleDisplayModeChange($event)"
|
|
59267
|
+
/>
|
|
59268
|
+
</div>
|
|
59094
59269
|
`, styles: [":host{display:block}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse-highlight{0%,to{transform:scale(1);box-shadow:0 0 #3b82f6b3}50%{transform:scale(1.02);box-shadow:0 0 20px 8px #3b82f64d}}:host ::ng-deep .search-highlight-pulse{animation:pulse-highlight 2s ease-in-out;border-color:#3b82f6!important}\n"] }]
|
|
59095
59270
|
}], () => [], { embedded: [{ type: i0.Input, args: [{ isSignal: true, alias: "embedded", required: false }] }], profile: [{ type: i0.Input, args: [{ isSignal: true, alias: "profile", required: false }] }], parentHeaderOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentHeaderOffset", required: false }] }], requestedByUser: [{ type: i0.Input, args: [{ isSignal: true, alias: "requestedByUser", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], scrollEvent: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollEvent", required: false }] }], scrollElement: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollElement", required: false }] }], isLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLoading", required: false }] }], isOnboarded: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOnboarded", required: false }] }], forDemo: [{ type: i0.Input, args: [{ isSignal: true, alias: "forDemo", required: false }] }], maxAccessibleStepId: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxAccessibleStepId", required: false }] }], itemStatus: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemStatus", required: false }] }], stepClick: [{ type: i0.Output, args: ["stepClick"] }], nextStepClick: [{ type: i0.Output, args: ["nextStepClick"] }], onScroll: [{
|
|
59096
59271
|
type: HostListener,
|
|
@@ -59099,7 +59274,7 @@ class SymphiqBusinessAnalysisDashboardComponent {
|
|
|
59099
59274
|
type: HostListener,
|
|
59100
59275
|
args: ['document:keydown', ['$event']]
|
|
59101
59276
|
}] }); })();
|
|
59102
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqBusinessAnalysisDashboardComponent, { className: "SymphiqBusinessAnalysisDashboardComponent", filePath: "lib/components/business-analysis-dashboard/symphiq-business-analysis-dashboard.component.ts", lineNumber:
|
|
59277
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SymphiqBusinessAnalysisDashboardComponent, { className: "SymphiqBusinessAnalysisDashboardComponent", filePath: "lib/components/business-analysis-dashboard/symphiq-business-analysis-dashboard.component.ts", lineNumber: 335 }); })();
|
|
59103
59278
|
|
|
59104
59279
|
function DashboardHeaderComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
59105
59280
|
i0.ɵɵelement(0, "div", 6);
|
|
@@ -104859,5 +105034,5 @@ const PROFILE_ANALYSIS_METRIC_SCREEN_PAGE_VIEWS = ({
|
|
|
104859
105034
|
* Generated bundle index. Do not edit.
|
|
104860
105035
|
*/
|
|
104861
105036
|
|
|
104862
|
-
export { AreaChartComponent, BUSINESS_PROFILE, BarChartComponent, BreakdownSectionComponent, BusinessAnalysisModalComponent, BusinessProfileSearchService, ChartCardComponent, ChartContainerComponent, ChartThemeService, CircularProgressComponent, CompetitivePositioningSummaryComponent, CompetitorAnalysisCardComponent, ConfidenceLevelCardComponent, ContentGenerationProgressComponent, CrossDashboardRelationshipsService, FUNNEL_ANALYSIS, FloatingBackButtonComponent, FloatingTocComponent, FocusAreaDetailCardComponent, FocusAreaExecutiveSummaryComponent, FocusAreaQuestionComponent, FocusAreaToolsModalComponent, FunnelOrderService, GradeBadgeComponent, HeaderScrollService, HierarchyDisplayComponent, HorizontalBarComponent, IconService, InsightCardComponent, JourneyProgressIndicatorComponent, JourneyStepIdEnum, LineChartComponent, MetricCardComponent, MetricExecutiveSummaryComponent, MetricFormatterService, MetricListItemComponent, MetricWelcomeBannerComponent, MobileBottomNavComponent, MobileFABComponent, ModalComponent, ModalService, NapkinVisualPlaceholderComponent, NavigationStateService, OpportunityHighlightBannerComponent, OverallAssessmentComponent, PROFILE_ANALYSIS_FOCUS_AREA_AFFILIATE, PROFILE_ANALYSIS_METRIC_SCREEN_PAGE_VIEWS, PROFILE_ANALYSIS_SHOP, PieChartComponent, ProfileItemCardComponent, ProfileSectionComponent, ProfileSubsectionComponent, RelatedContentSidebarComponent, ScrollDepthService, ScrollProgressBarComponent, SearchButtonComponent, SearchModalComponent, SectionDividerComponent, SectionNavigationComponent, ShadowElevationDirective, ShopPlatformEnum, ShopWelcomeBannerComponent, SkeletonBarComponent, SkeletonCardBaseComponent, SkeletonCircleComponent, SkeletonCompetitorCardComponent, SkeletonCustomerSegmentCardComponent, SkeletonFocusAreaCardComponent, SkeletonGenericCardComponent, SkeletonLoaderComponent, SkeletonPriceTierCardComponent, SkeletonProductCategoryCardComponent, SkeletonRegionCardComponent, SkeletonSeasonCardComponent, SymphiqBusinessAnalysisDashboardComponent, SymphiqConnectGaDashboardComponent, SymphiqCreateAccountDashboardComponent, SymphiqFunnelAnalysisDashboardComponent, SymphiqFunnelAnalysisPreviewComponent, SymphiqIconComponent, SymphiqProfileAnalysisDashboardComponent, SymphiqWelcomeDashboardComponent, TooltipContainerComponent, TooltipDataService, TooltipDirective, TooltipService, ViewModeService, ViewportAnimationDirective, VisualizationContainerComponent, getBadgeLabelClasses, getButtonClasses, getCategoryBadgeClasses, getCategoryColor, getCompetitiveBadgeClasses, getContainerClasses, getFooterClasses, getGradeBadgeClasses, getHeaderClasses, getInsightsBadgeClasses, getInsightsCardClasses, getMetricLabelClasses, getMetricMiniCardClasses, getMetricValueClasses, getNarrativeTextClasses, getRevenueCardClasses, getRevenueIconClasses, getStatusBadgeClasses, getStatusDotClasses, getStatusIconClasses, getStatusSummaryClasses, getSubtitleClasses, getTitleClasses, getTrendClasses, getTrendIconClasses, getTrendValueClasses, isLightMode };
|
|
105037
|
+
export { AreaChartComponent, BUSINESS_PROFILE, BarChartComponent, BreakdownSectionComponent, BusinessAnalysisModalComponent, BusinessProfileSearchService, ChartCardComponent, ChartContainerComponent, ChartThemeService, CircularProgressComponent, CompetitivePositioningSummaryComponent, CompetitorAnalysisCardComponent, ConfettiService, ConfidenceLevelCardComponent, ContentGenerationProgressComponent, ContentGenerationProgressWithConfettiComponent, CrossDashboardRelationshipsService, FUNNEL_ANALYSIS, FloatingBackButtonComponent, FloatingTocComponent, FocusAreaDetailCardComponent, FocusAreaExecutiveSummaryComponent, FocusAreaQuestionComponent, FocusAreaToolsModalComponent, FunnelOrderService, GradeBadgeComponent, HeaderScrollService, HierarchyDisplayComponent, HorizontalBarComponent, IconService, InsightCardComponent, JourneyProgressIndicatorComponent, JourneyStepIdEnum, LineChartComponent, MetricCardComponent, MetricExecutiveSummaryComponent, MetricFormatterService, MetricListItemComponent, MetricWelcomeBannerComponent, MobileBottomNavComponent, MobileFABComponent, ModalComponent, ModalService, NapkinVisualPlaceholderComponent, NavigationStateService, OpportunityHighlightBannerComponent, OverallAssessmentComponent, PROFILE_ANALYSIS_FOCUS_AREA_AFFILIATE, PROFILE_ANALYSIS_METRIC_SCREEN_PAGE_VIEWS, PROFILE_ANALYSIS_SHOP, PieChartComponent, ProfileItemCardComponent, ProfileSectionComponent, ProfileSubsectionComponent, RelatedContentSidebarComponent, ScrollDepthService, ScrollProgressBarComponent, SearchButtonComponent, SearchModalComponent, SectionDividerComponent, SectionNavigationComponent, ShadowElevationDirective, ShopPlatformEnum, ShopWelcomeBannerComponent, SkeletonBarComponent, SkeletonCardBaseComponent, SkeletonCircleComponent, SkeletonCompetitorCardComponent, SkeletonCustomerSegmentCardComponent, SkeletonFocusAreaCardComponent, SkeletonGenericCardComponent, SkeletonLoaderComponent, SkeletonPriceTierCardComponent, SkeletonProductCategoryCardComponent, SkeletonRegionCardComponent, SkeletonSeasonCardComponent, SymphiqBusinessAnalysisDashboardComponent, SymphiqConnectGaDashboardComponent, SymphiqCreateAccountDashboardComponent, SymphiqFunnelAnalysisDashboardComponent, SymphiqFunnelAnalysisPreviewComponent, SymphiqIconComponent, SymphiqProfileAnalysisDashboardComponent, SymphiqWelcomeDashboardComponent, TooltipContainerComponent, TooltipDataService, TooltipDirective, TooltipService, ViewModeService, ViewportAnimationDirective, VisualizationContainerComponent, getBadgeLabelClasses, getButtonClasses, getCategoryBadgeClasses, getCategoryColor, getCompetitiveBadgeClasses, getContainerClasses, getFooterClasses, getGradeBadgeClasses, getHeaderClasses, getInsightsBadgeClasses, getInsightsCardClasses, getMetricLabelClasses, getMetricMiniCardClasses, getMetricValueClasses, getNarrativeTextClasses, getRevenueCardClasses, getRevenueIconClasses, getStatusBadgeClasses, getStatusDotClasses, getStatusIconClasses, getStatusSummaryClasses, getSubtitleClasses, getTitleClasses, getTrendClasses, getTrendIconClasses, getTrendValueClasses, isLightMode };
|
|
104863
105038
|
//# sourceMappingURL=symphiq-components.mjs.map
|