@eric-emg/symphiq-components 1.2.435 → 1.2.436
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 +131 -78
- package/fesm2022/symphiq-components.mjs.map +1 -1
- package/index.d.ts +46 -39
- package/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -24919,6 +24919,10 @@ class ConfidenceLevelCardComponent {
|
|
|
24919
24919
|
this.elementRef = inject(ElementRef);
|
|
24920
24920
|
this.hasAnimated = signal(false, ...(ngDevMode ? [{ debugName: "hasAnimated" }] : []));
|
|
24921
24921
|
this.animatedPercentage = signal(0, ...(ngDevMode ? [{ debugName: "animatedPercentage" }] : []));
|
|
24922
|
+
this.isGradeChanging = signal(false, ...(ngDevMode ? [{ debugName: "isGradeChanging" }] : []));
|
|
24923
|
+
this.previousPercentage = signal(null, ...(ngDevMode ? [{ debugName: "previousPercentage" }] : []));
|
|
24924
|
+
this.previousGrade = signal(null, ...(ngDevMode ? [{ debugName: "previousGrade" }] : []));
|
|
24925
|
+
this.isInitialLoad = signal(true, ...(ngDevMode ? [{ debugName: "isInitialLoad" }] : []));
|
|
24922
24926
|
this.confidenceData = computed(() => {
|
|
24923
24927
|
const stepId = this.currentStepId();
|
|
24924
24928
|
const dataMap = {
|
|
@@ -25173,6 +25177,27 @@ class ConfidenceLevelCardComponent {
|
|
|
25173
25177
|
}
|
|
25174
25178
|
return 'bg-gradient-to-r from-red-500 to-rose-500';
|
|
25175
25179
|
}, ...(ngDevMode ? [{ debugName: "progressGlowClasses" }] : []));
|
|
25180
|
+
effect(() => {
|
|
25181
|
+
const currentData = this.confidenceData();
|
|
25182
|
+
const prevPercentage = this.previousPercentage();
|
|
25183
|
+
const prevGrade = this.previousGrade();
|
|
25184
|
+
if (this.isInitialLoad() && this.hasAnimated()) {
|
|
25185
|
+
this.isInitialLoad.set(false);
|
|
25186
|
+
this.previousPercentage.set(currentData.percentage);
|
|
25187
|
+
this.previousGrade.set(currentData.grade);
|
|
25188
|
+
return;
|
|
25189
|
+
}
|
|
25190
|
+
if (!this.isInitialLoad() && this.hasAnimated()) {
|
|
25191
|
+
if (prevPercentage !== null && prevPercentage !== currentData.percentage) {
|
|
25192
|
+
this.animateValueChange(prevPercentage, currentData.percentage);
|
|
25193
|
+
this.previousPercentage.set(currentData.percentage);
|
|
25194
|
+
}
|
|
25195
|
+
if (prevGrade !== null && prevGrade !== currentData.grade) {
|
|
25196
|
+
this.triggerGradeChangeAnimation();
|
|
25197
|
+
this.previousGrade.set(currentData.grade);
|
|
25198
|
+
}
|
|
25199
|
+
}
|
|
25200
|
+
});
|
|
25176
25201
|
}
|
|
25177
25202
|
ngOnInit() {
|
|
25178
25203
|
this.setupObserver();
|
|
@@ -25226,6 +25251,33 @@ class ConfidenceLevelCardComponent {
|
|
|
25226
25251
|
};
|
|
25227
25252
|
this.animationFrame = requestAnimationFrame(animate);
|
|
25228
25253
|
}
|
|
25254
|
+
animateValueChange(fromValue, toValue) {
|
|
25255
|
+
if (this.animationFrame) {
|
|
25256
|
+
cancelAnimationFrame(this.animationFrame);
|
|
25257
|
+
}
|
|
25258
|
+
const startTime = performance.now();
|
|
25259
|
+
const duration = 1000;
|
|
25260
|
+
const animate = (currentTime) => {
|
|
25261
|
+
const elapsed = currentTime - startTime;
|
|
25262
|
+
const progress = Math.min(elapsed / duration, 1);
|
|
25263
|
+
const easeOutCubic = 1 - Math.pow(1 - progress, 3);
|
|
25264
|
+
const currentValue = fromValue + (toValue - fromValue) * easeOutCubic;
|
|
25265
|
+
this.animatedPercentage.set(Math.round(currentValue));
|
|
25266
|
+
if (progress < 1) {
|
|
25267
|
+
this.animationFrame = requestAnimationFrame(animate);
|
|
25268
|
+
}
|
|
25269
|
+
else {
|
|
25270
|
+
this.animatedPercentage.set(toValue);
|
|
25271
|
+
}
|
|
25272
|
+
};
|
|
25273
|
+
this.animationFrame = requestAnimationFrame(animate);
|
|
25274
|
+
}
|
|
25275
|
+
triggerGradeChangeAnimation() {
|
|
25276
|
+
this.isGradeChanging.set(true);
|
|
25277
|
+
setTimeout(() => {
|
|
25278
|
+
this.isGradeChanging.set(false);
|
|
25279
|
+
}, 800);
|
|
25280
|
+
}
|
|
25229
25281
|
calculateFocusAreaPercentage() {
|
|
25230
25282
|
const BASE_PERCENTAGE = 55;
|
|
25231
25283
|
const MAX_PERCENTAGE = 75;
|
|
@@ -25326,7 +25378,7 @@ class ConfidenceLevelCardComponent {
|
|
|
25326
25378
|
return `Strong context building. Symphiq has comprehensive business, operational, and marketing knowledge with detailed metric analysis (${completedCount}/${totalCount} metrics complete). Continue analyzing remaining metrics to achieve maximum confidence.`;
|
|
25327
25379
|
}
|
|
25328
25380
|
static { this.ɵfac = function ConfidenceLevelCardComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ConfidenceLevelCardComponent)(); }; }
|
|
25329
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ConfidenceLevelCardComponent, selectors: [["symphiq-confidence-level-card"]], inputs: { viewMode: [1, "viewMode"], currentStepId: [1, "currentStepId"], focusAreaDetails: [1, "focusAreaDetails"], currentFocusAreaDomain: [1, "currentFocusAreaDomain"], currentMetric: [1, "currentMetric"] }, decls: 29, vars:
|
|
25381
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ConfidenceLevelCardComponent, selectors: [["symphiq-confidence-level-card"]], inputs: { viewMode: [1, "viewMode"], currentStepId: [1, "currentStepId"], focusAreaDetails: [1, "focusAreaDetails"], currentFocusAreaDomain: [1, "currentFocusAreaDomain"], currentMetric: [1, "currentMetric"] }, decls: 29, vars: 31, consts: [[1, "rounded-2xl", "p-6", "transition-all", "duration-500", "hover:scale-[1.02]", "relative", "overflow-hidden", "group", 3, "ngClass"], [1, "absolute", "inset-0", "opacity-30", "transition-opacity", "duration-500", "group-hover:opacity-50", 3, "ngClass"], [1, "relative", "z-10"], [1, "flex", "items-start", "justify-between", "gap-4", "mb-4"], [1, "flex-1", "min-w-0"], [1, "text-lg", "font-bold", "mb-1", 3, "ngClass"], [1, "text-xs", "font-medium", 3, "ngClass"], [1, "relative", "flex-shrink-0", "transition-all", "duration-300", "hover:scale-110", 3, "ngClass"], [1, "absolute", "inset-0", "rounded-xl", "blur-xl", "opacity-60", "transition-all", "duration-500", "group-hover:opacity-80", 3, "ngClass"], [1, "relative", "px-5", "py-3", "rounded-xl", "text-center", "backdrop-blur-sm", "transition-all", "duration-500", 3, "ngClass"], [1, "text-[10px]", "font-bold", "uppercase", "tracking-wider", "mb-0.5", "transition-colors", "duration-500", 3, "ngClass"], [1, "text-3xl", "font-bold", "transition-all", "duration-500", 3, "ngClass"], [1, "text-sm", "leading-relaxed", "mb-4", 3, "ngClass"], [1, "space-y-2"], [1, "flex", "items-center", "justify-between"], [1, "text-xs", "font-semibold", 3, "ngClass"], [1, "text-xs", "font-bold", 3, "ngClass"], [1, "relative"], [1, "h-3", "rounded-full", "overflow-hidden", "relative", 3, "ngClass"], [1, "h-full", "transition-all", "duration-1000", "ease-out", "relative", 3, "ngClass"], [1, "absolute", "inset-0", "opacity-30", 3, "ngClass"], [1, "absolute", "top-0", "left-0", "h-3", "rounded-full", "blur-md", "opacity-40", "transition-all", "duration-1000", "ease-out", "-z-10", 3, "ngClass"]], template: function ConfidenceLevelCardComponent_Template(rf, ctx) { if (rf & 1) {
|
|
25330
25382
|
i0.ɵɵelementStart(0, "div", 0);
|
|
25331
25383
|
i0.ɵɵelement(1, "div", 1);
|
|
25332
25384
|
i0.ɵɵelementStart(2, "div", 2)(3, "div", 3)(4, "div", 4)(5, "h3", 5);
|
|
@@ -25369,7 +25421,7 @@ class ConfidenceLevelCardComponent {
|
|
|
25369
25421
|
i0.ɵɵadvance();
|
|
25370
25422
|
i0.ɵɵtextInterpolate2(" ", ctx.confidenceData().qualitativeStatus, " + ", ctx.confidenceData().quantitativeStatus, " ");
|
|
25371
25423
|
i0.ɵɵadvance();
|
|
25372
|
-
i0.ɵɵclassProp("animate-pulse-glow", ctx.shouldPulse());
|
|
25424
|
+
i0.ɵɵclassProp("animate-pulse-glow", ctx.shouldPulse())("grade-change-animate", ctx.isGradeChanging());
|
|
25373
25425
|
i0.ɵɵproperty("ngClass", ctx.gradeBadgeContainerClasses());
|
|
25374
25426
|
i0.ɵɵadvance();
|
|
25375
25427
|
i0.ɵɵproperty("ngClass", ctx.glowEffectClasses());
|
|
@@ -25401,85 +25453,86 @@ class ConfidenceLevelCardComponent {
|
|
|
25401
25453
|
i0.ɵɵadvance();
|
|
25402
25454
|
i0.ɵɵstyleProp("width", ctx.animatedPercentage(), "%");
|
|
25403
25455
|
i0.ɵɵproperty("ngClass", ctx.progressGlowClasses());
|
|
25404
|
-
} }, 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 }); }
|
|
25456
|
+
} }, 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}}@keyframes _ngcontent-%COMP%_grade-change{0%{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:.9}to{transform:scale(1);opacity:1}}.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}.grade-change-animate[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_grade-change .8s ease-out}@media (prefers-reduced-motion: reduce){.confidence-card-animate[_ngcontent-%COMP%], .animate-pulse-glow[_ngcontent-%COMP%], .grade-change-animate[_ngcontent-%COMP%]{animation:none;opacity:1}}"], changeDetection: 0 }); }
|
|
25405
25457
|
}
|
|
25406
25458
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConfidenceLevelCardComponent, [{
|
|
25407
25459
|
type: Component,
|
|
25408
|
-
args: [{ selector: 'symphiq-confidence-level-card', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
25409
|
-
<div
|
|
25410
|
-
[ngClass]="cardContainerClasses()"
|
|
25411
|
-
class="rounded-2xl p-6 transition-all duration-500 hover:scale-[1.02] relative overflow-hidden group"
|
|
25412
|
-
[class.confidence-card-animate]="hasAnimated()">
|
|
25413
|
-
|
|
25414
|
-
<!-- Animated background gradient overlay -->
|
|
25415
|
-
<div [ngClass]="backgroundOverlayClasses()" class="absolute inset-0 opacity-30 transition-opacity duration-500 group-hover:opacity-50"></div>
|
|
25416
|
-
|
|
25417
|
-
<!-- Content -->
|
|
25418
|
-
<div class="relative z-10">
|
|
25419
|
-
<!-- Header with Title and Grade Badge -->
|
|
25420
|
-
<div class="flex items-start justify-between gap-4 mb-4">
|
|
25421
|
-
<div class="flex-1 min-w-0">
|
|
25422
|
-
<h3 [ngClass]="titleClasses()" class="text-lg font-bold mb-1">
|
|
25423
|
-
Confidence Level
|
|
25424
|
-
</h3>
|
|
25425
|
-
<p [ngClass]="subtitleClasses()" class="text-xs font-medium">
|
|
25426
|
-
{{ confidenceData().qualitativeStatus }} + {{ confidenceData().quantitativeStatus }}
|
|
25427
|
-
</p>
|
|
25428
|
-
</div>
|
|
25429
|
-
|
|
25430
|
-
<!-- Grade Badge with Glow -->
|
|
25431
|
-
<div
|
|
25432
|
-
[ngClass]="gradeBadgeContainerClasses()"
|
|
25433
|
-
class="relative flex-shrink-0 transition-all duration-300 hover:scale-110"
|
|
25434
|
-
[class.animate-pulse-glow]="shouldPulse()"
|
|
25435
|
-
|
|
25436
|
-
|
|
25437
|
-
|
|
25438
|
-
|
|
25439
|
-
|
|
25440
|
-
<div [ngClass]="
|
|
25441
|
-
|
|
25442
|
-
|
|
25443
|
-
|
|
25444
|
-
|
|
25445
|
-
|
|
25446
|
-
|
|
25447
|
-
|
|
25448
|
-
|
|
25449
|
-
|
|
25450
|
-
|
|
25451
|
-
|
|
25452
|
-
|
|
25453
|
-
|
|
25454
|
-
<span [ngClass]="
|
|
25455
|
-
|
|
25456
|
-
|
|
25457
|
-
|
|
25458
|
-
|
|
25459
|
-
|
|
25460
|
-
|
|
25461
|
-
|
|
25462
|
-
|
|
25463
|
-
|
|
25464
|
-
[
|
|
25465
|
-
|
|
25466
|
-
|
|
25467
|
-
|
|
25468
|
-
|
|
25469
|
-
|
|
25470
|
-
|
|
25471
|
-
|
|
25472
|
-
|
|
25473
|
-
[
|
|
25474
|
-
|
|
25475
|
-
|
|
25476
|
-
|
|
25477
|
-
|
|
25478
|
-
|
|
25479
|
-
|
|
25480
|
-
|
|
25481
|
-
|
|
25482
|
-
(
|
|
25460
|
+
args: [{ selector: 'symphiq-confidence-level-card', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
25461
|
+
<div
|
|
25462
|
+
[ngClass]="cardContainerClasses()"
|
|
25463
|
+
class="rounded-2xl p-6 transition-all duration-500 hover:scale-[1.02] relative overflow-hidden group"
|
|
25464
|
+
[class.confidence-card-animate]="hasAnimated()">
|
|
25465
|
+
|
|
25466
|
+
<!-- Animated background gradient overlay -->
|
|
25467
|
+
<div [ngClass]="backgroundOverlayClasses()" class="absolute inset-0 opacity-30 transition-opacity duration-500 group-hover:opacity-50"></div>
|
|
25468
|
+
|
|
25469
|
+
<!-- Content -->
|
|
25470
|
+
<div class="relative z-10">
|
|
25471
|
+
<!-- Header with Title and Grade Badge -->
|
|
25472
|
+
<div class="flex items-start justify-between gap-4 mb-4">
|
|
25473
|
+
<div class="flex-1 min-w-0">
|
|
25474
|
+
<h3 [ngClass]="titleClasses()" class="text-lg font-bold mb-1">
|
|
25475
|
+
Confidence Level
|
|
25476
|
+
</h3>
|
|
25477
|
+
<p [ngClass]="subtitleClasses()" class="text-xs font-medium">
|
|
25478
|
+
{{ confidenceData().qualitativeStatus }} + {{ confidenceData().quantitativeStatus }}
|
|
25479
|
+
</p>
|
|
25480
|
+
</div>
|
|
25481
|
+
|
|
25482
|
+
<!-- Grade Badge with Glow -->
|
|
25483
|
+
<div
|
|
25484
|
+
[ngClass]="gradeBadgeContainerClasses()"
|
|
25485
|
+
class="relative flex-shrink-0 transition-all duration-300 hover:scale-110"
|
|
25486
|
+
[class.animate-pulse-glow]="shouldPulse()"
|
|
25487
|
+
[class.grade-change-animate]="isGradeChanging()">
|
|
25488
|
+
<!-- Glow effect -->
|
|
25489
|
+
<div [ngClass]="glowEffectClasses()" class="absolute inset-0 rounded-xl blur-xl opacity-60 transition-all duration-500 group-hover:opacity-80"></div>
|
|
25490
|
+
<!-- Badge content -->
|
|
25491
|
+
<div [ngClass]="gradeBadgeClasses()" class="relative px-5 py-3 rounded-xl text-center backdrop-blur-sm transition-all duration-500">
|
|
25492
|
+
<div [ngClass]="gradeLabelClasses()" class="text-[10px] font-bold uppercase tracking-wider mb-0.5 transition-colors duration-500">Grade</div>
|
|
25493
|
+
<div [ngClass]="gradeValueClasses()" class="text-3xl font-bold transition-all duration-500">{{ confidenceData().grade }}</div>
|
|
25494
|
+
</div>
|
|
25495
|
+
</div>
|
|
25496
|
+
</div>
|
|
25497
|
+
|
|
25498
|
+
<!-- Description -->
|
|
25499
|
+
<p [ngClass]="descriptionClasses()" class="text-sm leading-relaxed mb-4">
|
|
25500
|
+
{{ confidenceData().description }}
|
|
25501
|
+
</p>
|
|
25502
|
+
|
|
25503
|
+
<!-- Progress Bar -->
|
|
25504
|
+
<div class="space-y-2">
|
|
25505
|
+
<div class="flex items-center justify-between">
|
|
25506
|
+
<span [ngClass]="progressLabelClasses()" class="text-xs font-semibold">Context Completeness</span>
|
|
25507
|
+
<span [ngClass]="progressValueClasses()" class="text-xs font-bold">{{ animatedPercentage() }}%</span>
|
|
25508
|
+
</div>
|
|
25509
|
+
|
|
25510
|
+
<!-- Progress Track -->
|
|
25511
|
+
<div class="relative">
|
|
25512
|
+
<!-- Background track -->
|
|
25513
|
+
<div [ngClass]="progressTrackClasses()" class="h-3 rounded-full overflow-hidden relative">
|
|
25514
|
+
<!-- Progress bar with shimmer -->
|
|
25515
|
+
<div
|
|
25516
|
+
[style.width.%]="animatedPercentage()"
|
|
25517
|
+
[ngClass]="progressBarClasses()"
|
|
25518
|
+
class="h-full transition-all duration-1000 ease-out relative">
|
|
25519
|
+
<!-- Shimmer effect -->
|
|
25520
|
+
<div [ngClass]="shimmerClasses()" class="absolute inset-0 opacity-30"></div>
|
|
25521
|
+
</div>
|
|
25522
|
+
</div>
|
|
25523
|
+
<!-- Glow underneath -->
|
|
25524
|
+
<div
|
|
25525
|
+
[style.width.%]="animatedPercentage()"
|
|
25526
|
+
[ngClass]="progressGlowClasses()"
|
|
25527
|
+
class="absolute top-0 left-0 h-3 rounded-full blur-md opacity-40 transition-all duration-1000 ease-out -z-10">
|
|
25528
|
+
</div>
|
|
25529
|
+
</div>
|
|
25530
|
+
</div>
|
|
25531
|
+
</div>
|
|
25532
|
+
</div>
|
|
25533
|
+
`, 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}}@keyframes grade-change{0%{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:.9}to{transform:scale(1);opacity:1}}.confidence-card-animate{animation:confidence-fade-in-up .6s ease-out forwards}.animate-pulse-glow{animation:pulse-glow 2s ease-in-out infinite}.grade-change-animate{animation:grade-change .8s ease-out}@media (prefers-reduced-motion: reduce){.confidence-card-animate,.animate-pulse-glow,.grade-change-animate{animation:none;opacity:1}}\n"] }]
|
|
25534
|
+
}], () => [], { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], currentStepId: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentStepId", required: false }] }], focusAreaDetails: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusAreaDetails", required: false }] }], currentFocusAreaDomain: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentFocusAreaDomain", required: false }] }], currentMetric: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentMetric", required: false }] }] }); })();
|
|
25535
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ConfidenceLevelCardComponent, { className: "ConfidenceLevelCardComponent", filePath: "lib/components/shared/confidence-level-card.component.ts", lineNumber: 161 }); })();
|
|
25483
25536
|
|
|
25484
25537
|
function FunnelWelcomeBannerComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
25485
25538
|
i0.ɵɵtext(0, " Your Funnel Analysis ");
|