@eric-emg/symphiq-components 1.2.131 → 1.2.133
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 +89 -89
- package/fesm2022/symphiq-components.mjs.map +1 -1
- package/index.d.ts +18 -19
- package/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/styles.css +318 -318
- package/styles.css +13 -13
|
@@ -25750,7 +25750,7 @@ class ConfidenceLevelCardComponent {
|
|
|
25750
25750
|
i0.ɵɵelement(28, "div", 21);
|
|
25751
25751
|
i0.ɵɵelementEnd()()()();
|
|
25752
25752
|
} if (rf & 2) {
|
|
25753
|
-
i0.ɵɵclassProp("
|
|
25753
|
+
i0.ɵɵclassProp("confidence-card-animate", ctx.hasAnimated());
|
|
25754
25754
|
i0.ɵɵproperty("ngClass", ctx.cardContainerClasses());
|
|
25755
25755
|
i0.ɵɵadvance();
|
|
25756
25756
|
i0.ɵɵproperty("ngClass", ctx.backgroundOverlayClasses());
|
|
@@ -25793,83 +25793,83 @@ class ConfidenceLevelCardComponent {
|
|
|
25793
25793
|
i0.ɵɵadvance();
|
|
25794
25794
|
i0.ɵɵstyleProp("width", ctx.animatedPercentage(), "%");
|
|
25795
25795
|
i0.ɵɵproperty("ngClass", ctx.progressGlowClasses());
|
|
25796
|
-
} }, dependencies: [CommonModule, i1$1.NgClass], styles: ["@keyframes _ngcontent-%COMP%
|
|
25796
|
+
} }, dependencies: [CommonModule, i1$1.NgClass], styles: ["@keyframes _ngcontent-%COMP%_confidence-fade-in-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes _ngcontent-%COMP%_pulse-glow{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}@keyframes _ngcontent-%COMP%_shimmer{0%{background-position:-200% center}to{background-position:200% center}}.confidence-card-animate[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_confidence-fade-in-up .6s ease-out forwards}.animate-pulse-glow[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_pulse-glow 2s ease-in-out infinite}@media (prefers-reduced-motion: reduce){.confidence-card-animate[_ngcontent-%COMP%], .animate-pulse-glow[_ngcontent-%COMP%]{animation:none;opacity:1}}"], changeDetection: 0 }); }
|
|
25797
25797
|
}
|
|
25798
25798
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConfidenceLevelCardComponent, [{
|
|
25799
25799
|
type: Component,
|
|
25800
|
-
args: [{ selector: 'symphiq-confidence-level-card', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
25801
|
-
<div
|
|
25802
|
-
[ngClass]="cardContainerClasses()"
|
|
25803
|
-
class="rounded-2xl p-6 transition-all duration-500 hover:scale-[1.02] relative overflow-hidden group"
|
|
25804
|
-
[class.
|
|
25805
|
-
|
|
25806
|
-
<!-- Animated background gradient overlay -->
|
|
25807
|
-
<div [ngClass]="backgroundOverlayClasses()" class="absolute inset-0 opacity-30 transition-opacity duration-500 group-hover:opacity-50"></div>
|
|
25808
|
-
|
|
25809
|
-
<!-- Content -->
|
|
25810
|
-
<div class="relative z-10">
|
|
25811
|
-
<!-- Header with Title and Grade Badge -->
|
|
25812
|
-
<div class="flex items-start justify-between gap-4 mb-4">
|
|
25813
|
-
<div class="flex-1 min-w-0">
|
|
25814
|
-
<h3 [ngClass]="titleClasses()" class="text-lg font-bold mb-1">
|
|
25815
|
-
Confidence Level
|
|
25816
|
-
</h3>
|
|
25817
|
-
<p [ngClass]="subtitleClasses()" class="text-xs font-medium">
|
|
25818
|
-
{{ confidenceData().qualitativeStatus }} + {{ confidenceData().quantitativeStatus }}
|
|
25819
|
-
</p>
|
|
25820
|
-
</div>
|
|
25821
|
-
|
|
25822
|
-
<!-- Grade Badge with Glow -->
|
|
25823
|
-
<div
|
|
25824
|
-
[ngClass]="gradeBadgeContainerClasses()"
|
|
25825
|
-
class="relative flex-shrink-0 transition-all duration-300 hover:scale-110"
|
|
25826
|
-
[class.animate-pulse-glow]="shouldPulse()">
|
|
25827
|
-
<!-- Glow effect -->
|
|
25828
|
-
<div [ngClass]="glowEffectClasses()" class="absolute inset-0 rounded-xl blur-xl opacity-60 transition-opacity duration-300 group-hover:opacity-80"></div>
|
|
25829
|
-
<!-- Badge content -->
|
|
25830
|
-
<div [ngClass]="gradeBadgeClasses()" class="relative px-5 py-3 rounded-xl text-center backdrop-blur-sm">
|
|
25831
|
-
<div [ngClass]="gradeLabelClasses()" class="text-[10px] font-bold uppercase tracking-wider mb-0.5">Grade</div>
|
|
25832
|
-
<div [ngClass]="gradeValueClasses()" class="text-3xl font-bold">{{ confidenceData().grade }}</div>
|
|
25833
|
-
</div>
|
|
25834
|
-
</div>
|
|
25835
|
-
</div>
|
|
25836
|
-
|
|
25837
|
-
<!-- Description -->
|
|
25838
|
-
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed mb-4">
|
|
25839
|
-
{{ confidenceData().description }}
|
|
25840
|
-
</p>
|
|
25841
|
-
|
|
25842
|
-
<!-- Progress Bar -->
|
|
25843
|
-
<div class="space-y-2">
|
|
25844
|
-
<div class="flex items-center justify-between">
|
|
25845
|
-
<span [ngClass]="progressLabelClasses()" class="text-xs font-semibold">Context Completeness</span>
|
|
25846
|
-
<span [ngClass]="progressValueClasses()" class="text-xs font-bold">{{ animatedPercentage() }}%</span>
|
|
25847
|
-
</div>
|
|
25848
|
-
|
|
25849
|
-
<!-- Progress Track -->
|
|
25850
|
-
<div class="relative">
|
|
25851
|
-
<!-- Background track -->
|
|
25852
|
-
<div [ngClass]="progressTrackClasses()" class="h-3 rounded-full overflow-hidden relative">
|
|
25853
|
-
<!-- Progress bar with shimmer -->
|
|
25854
|
-
<div
|
|
25855
|
-
[style.width.%]="animatedPercentage()"
|
|
25856
|
-
[ngClass]="progressBarClasses()"
|
|
25857
|
-
class="h-full transition-all duration-1000 ease-out relative">
|
|
25858
|
-
<!-- Shimmer effect -->
|
|
25859
|
-
<div [ngClass]="shimmerClasses()" class="absolute inset-0 opacity-30"></div>
|
|
25860
|
-
</div>
|
|
25861
|
-
</div>
|
|
25862
|
-
<!-- Glow underneath -->
|
|
25863
|
-
<div
|
|
25864
|
-
[style.width.%]="animatedPercentage()"
|
|
25865
|
-
[ngClass]="progressGlowClasses()"
|
|
25866
|
-
class="absolute top-0 left-0 h-3 rounded-full blur-md opacity-40 transition-all duration-1000 ease-out -z-10">
|
|
25867
|
-
</div>
|
|
25868
|
-
</div>
|
|
25869
|
-
</div>
|
|
25870
|
-
</div>
|
|
25871
|
-
</div>
|
|
25872
|
-
`, styles: ["@keyframes fade-in-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse-glow{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}@keyframes shimmer{0%{background-position:-200% center}to{background-position:200% center}}.
|
|
25800
|
+
args: [{ selector: 'symphiq-confidence-level-card', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
25801
|
+
<div
|
|
25802
|
+
[ngClass]="cardContainerClasses()"
|
|
25803
|
+
class="rounded-2xl p-6 transition-all duration-500 hover:scale-[1.02] relative overflow-hidden group"
|
|
25804
|
+
[class.confidence-card-animate]="hasAnimated()">
|
|
25805
|
+
|
|
25806
|
+
<!-- Animated background gradient overlay -->
|
|
25807
|
+
<div [ngClass]="backgroundOverlayClasses()" class="absolute inset-0 opacity-30 transition-opacity duration-500 group-hover:opacity-50"></div>
|
|
25808
|
+
|
|
25809
|
+
<!-- Content -->
|
|
25810
|
+
<div class="relative z-10">
|
|
25811
|
+
<!-- Header with Title and Grade Badge -->
|
|
25812
|
+
<div class="flex items-start justify-between gap-4 mb-4">
|
|
25813
|
+
<div class="flex-1 min-w-0">
|
|
25814
|
+
<h3 [ngClass]="titleClasses()" class="text-lg font-bold mb-1">
|
|
25815
|
+
Confidence Level
|
|
25816
|
+
</h3>
|
|
25817
|
+
<p [ngClass]="subtitleClasses()" class="text-xs font-medium">
|
|
25818
|
+
{{ confidenceData().qualitativeStatus }} + {{ confidenceData().quantitativeStatus }}
|
|
25819
|
+
</p>
|
|
25820
|
+
</div>
|
|
25821
|
+
|
|
25822
|
+
<!-- Grade Badge with Glow -->
|
|
25823
|
+
<div
|
|
25824
|
+
[ngClass]="gradeBadgeContainerClasses()"
|
|
25825
|
+
class="relative flex-shrink-0 transition-all duration-300 hover:scale-110"
|
|
25826
|
+
[class.animate-pulse-glow]="shouldPulse()">
|
|
25827
|
+
<!-- Glow effect -->
|
|
25828
|
+
<div [ngClass]="glowEffectClasses()" class="absolute inset-0 rounded-xl blur-xl opacity-60 transition-opacity duration-300 group-hover:opacity-80"></div>
|
|
25829
|
+
<!-- Badge content -->
|
|
25830
|
+
<div [ngClass]="gradeBadgeClasses()" class="relative px-5 py-3 rounded-xl text-center backdrop-blur-sm">
|
|
25831
|
+
<div [ngClass]="gradeLabelClasses()" class="text-[10px] font-bold uppercase tracking-wider mb-0.5">Grade</div>
|
|
25832
|
+
<div [ngClass]="gradeValueClasses()" class="text-3xl font-bold">{{ confidenceData().grade }}</div>
|
|
25833
|
+
</div>
|
|
25834
|
+
</div>
|
|
25835
|
+
</div>
|
|
25836
|
+
|
|
25837
|
+
<!-- Description -->
|
|
25838
|
+
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed mb-4">
|
|
25839
|
+
{{ confidenceData().description }}
|
|
25840
|
+
</p>
|
|
25841
|
+
|
|
25842
|
+
<!-- Progress Bar -->
|
|
25843
|
+
<div class="space-y-2">
|
|
25844
|
+
<div class="flex items-center justify-between">
|
|
25845
|
+
<span [ngClass]="progressLabelClasses()" class="text-xs font-semibold">Context Completeness</span>
|
|
25846
|
+
<span [ngClass]="progressValueClasses()" class="text-xs font-bold">{{ animatedPercentage() }}%</span>
|
|
25847
|
+
</div>
|
|
25848
|
+
|
|
25849
|
+
<!-- Progress Track -->
|
|
25850
|
+
<div class="relative">
|
|
25851
|
+
<!-- Background track -->
|
|
25852
|
+
<div [ngClass]="progressTrackClasses()" class="h-3 rounded-full overflow-hidden relative">
|
|
25853
|
+
<!-- Progress bar with shimmer -->
|
|
25854
|
+
<div
|
|
25855
|
+
[style.width.%]="animatedPercentage()"
|
|
25856
|
+
[ngClass]="progressBarClasses()"
|
|
25857
|
+
class="h-full transition-all duration-1000 ease-out relative">
|
|
25858
|
+
<!-- Shimmer effect -->
|
|
25859
|
+
<div [ngClass]="shimmerClasses()" class="absolute inset-0 opacity-30"></div>
|
|
25860
|
+
</div>
|
|
25861
|
+
</div>
|
|
25862
|
+
<!-- Glow underneath -->
|
|
25863
|
+
<div
|
|
25864
|
+
[style.width.%]="animatedPercentage()"
|
|
25865
|
+
[ngClass]="progressGlowClasses()"
|
|
25866
|
+
class="absolute top-0 left-0 h-3 rounded-full blur-md opacity-40 transition-all duration-1000 ease-out -z-10">
|
|
25867
|
+
</div>
|
|
25868
|
+
</div>
|
|
25869
|
+
</div>
|
|
25870
|
+
</div>
|
|
25871
|
+
</div>
|
|
25872
|
+
`, styles: ["@keyframes confidence-fade-in-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse-glow{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}@keyframes shimmer{0%{background-position:-200% center}to{background-position:200% center}}.confidence-card-animate{animation:confidence-fade-in-up .6s ease-out forwards}.animate-pulse-glow{animation:pulse-glow 2s ease-in-out infinite}@media (prefers-reduced-motion: reduce){.confidence-card-animate,.animate-pulse-glow{animation:none;opacity:1}}\n"] }]
|
|
25873
25873
|
}], null, { viewMode: [{
|
|
25874
25874
|
type: Input
|
|
25875
25875
|
}], currentStepId: [{
|
|
@@ -25881,7 +25881,7 @@ class ConfidenceLevelCardComponent {
|
|
|
25881
25881
|
}], currentMetric: [{
|
|
25882
25882
|
type: Input
|
|
25883
25883
|
}] }); })();
|
|
25884
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConfidenceLevelCardComponent, { className: "ConfidenceLevelCardComponent", filePath: "lib/components/shared/confidence-level-card.component.ts", lineNumber:
|
|
25884
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConfidenceLevelCardComponent, { className: "ConfidenceLevelCardComponent", filePath: "lib/components/shared/confidence-level-card.component.ts", lineNumber: 140 }); })();
|
|
25885
25885
|
|
|
25886
25886
|
function FunnelWelcomeBannerComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
25887
25887
|
i0.ɵɵtext(0, " Your Funnel Analysis ");
|
|
@@ -36062,13 +36062,14 @@ class ViewportAnimationDirective {
|
|
|
36062
36062
|
this.once = true;
|
|
36063
36063
|
this.hasAnimated = false;
|
|
36064
36064
|
this.isFirstObservation = true;
|
|
36065
|
-
this.shouldSkipAnimation = false;
|
|
36066
36065
|
}
|
|
36067
36066
|
ngOnInit() {
|
|
36068
36067
|
if (typeof window === 'undefined') {
|
|
36069
36068
|
return;
|
|
36070
36069
|
}
|
|
36071
|
-
//
|
|
36070
|
+
// Set initial hidden state immediately before observer fires
|
|
36071
|
+
// This prevents the flash of visible content before fade-out in embedded contexts
|
|
36072
|
+
this.setupInitialState();
|
|
36072
36073
|
this.setupObserver();
|
|
36073
36074
|
}
|
|
36074
36075
|
ngOnDestroy() {
|
|
@@ -36107,24 +36108,23 @@ class ViewportAnimationDirective {
|
|
|
36107
36108
|
setupObserver() {
|
|
36108
36109
|
this.observer = new IntersectionObserver((entries) => {
|
|
36109
36110
|
entries.forEach((entry) => {
|
|
36110
|
-
// First observation -
|
|
36111
|
+
// First observation - if already visible, animate in immediately
|
|
36111
36112
|
if (this.isFirstObservation) {
|
|
36112
36113
|
this.isFirstObservation = false;
|
|
36113
36114
|
if (entry.isIntersecting) {
|
|
36114
|
-
// Element is initially visible -
|
|
36115
|
-
this.
|
|
36116
|
-
this.
|
|
36117
|
-
|
|
36118
|
-
|
|
36119
|
-
|
|
36120
|
-
// Element is initially hidden (below fold) - set up for animation
|
|
36121
|
-
this.setupInitialState();
|
|
36122
|
-
return; // Don't animate yet, wait for scroll
|
|
36115
|
+
// Element is initially visible - animate in now
|
|
36116
|
+
this.animateIn();
|
|
36117
|
+
if (this.once) {
|
|
36118
|
+
this.hasAnimated = true;
|
|
36119
|
+
}
|
|
36120
|
+
return;
|
|
36123
36121
|
}
|
|
36122
|
+
// Element not visible yet - wait for scroll
|
|
36123
|
+
return;
|
|
36124
36124
|
}
|
|
36125
36125
|
// Subsequent observations - normal animation logic
|
|
36126
36126
|
if (entry.isIntersecting) {
|
|
36127
|
-
if (!this.
|
|
36127
|
+
if (!this.hasAnimated || !this.once) {
|
|
36128
36128
|
this.animateIn();
|
|
36129
36129
|
if (this.once) {
|
|
36130
36130
|
this.hasAnimated = true;
|