valtech-components 2.0.659 → 2.0.660
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/esm2022/lib/components/molecules/welcome-card/types.mjs +15 -0
- package/esm2022/lib/components/molecules/welcome-card/welcome-card.component.mjs +394 -0
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/valtech-components.mjs +402 -3
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/welcome-card/types.d.ts +114 -0
- package/lib/components/molecules/welcome-card/welcome-card.component.d.ts +117 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -20234,7 +20234,7 @@ const ACTION_CARD_DEFAULTS = {
|
|
|
20234
20234
|
};
|
|
20235
20235
|
|
|
20236
20236
|
addIcons({ chevronForwardOutline });
|
|
20237
|
-
const IONIC_COLORS = [
|
|
20237
|
+
const IONIC_COLORS$1 = [
|
|
20238
20238
|
'primary', 'secondary', 'tertiary', 'success',
|
|
20239
20239
|
'warning', 'danger', 'light', 'medium', 'dark'
|
|
20240
20240
|
];
|
|
@@ -20317,7 +20317,7 @@ class ActionCardComponent {
|
|
|
20317
20317
|
resolveColor(color) {
|
|
20318
20318
|
if (!color)
|
|
20319
20319
|
return null;
|
|
20320
|
-
if (IONIC_COLORS.includes(color)) {
|
|
20320
|
+
if (IONIC_COLORS$1.includes(color)) {
|
|
20321
20321
|
return `var(--ion-color-${color})`;
|
|
20322
20322
|
}
|
|
20323
20323
|
return color;
|
|
@@ -21027,6 +21027,405 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
21027
21027
|
type: Input
|
|
21028
21028
|
}] } });
|
|
21029
21029
|
|
|
21030
|
+
/**
|
|
21031
|
+
* Default values
|
|
21032
|
+
*/
|
|
21033
|
+
const WELCOME_CARD_DEFAULTS = {
|
|
21034
|
+
variant: 'gradient',
|
|
21035
|
+
gradientAngle: 135,
|
|
21036
|
+
showParticles: true,
|
|
21037
|
+
loading: false,
|
|
21038
|
+
avatar: {
|
|
21039
|
+
mode: 'initials',
|
|
21040
|
+
size: 'large',
|
|
21041
|
+
showRing: true,
|
|
21042
|
+
},
|
|
21043
|
+
};
|
|
21044
|
+
|
|
21045
|
+
addIcons({ personOutline, chevronForwardOutline });
|
|
21046
|
+
const IONIC_COLORS = [
|
|
21047
|
+
'primary', 'secondary', 'tertiary', 'success',
|
|
21048
|
+
'warning', 'danger', 'light', 'medium', 'dark'
|
|
21049
|
+
];
|
|
21050
|
+
// Vibrant color palette for avatar backgrounds
|
|
21051
|
+
const AVATAR_COLORS = [
|
|
21052
|
+
{ bg: '#6366f1', text: '#ffffff' }, // Indigo
|
|
21053
|
+
{ bg: '#8b5cf6', text: '#ffffff' }, // Violet
|
|
21054
|
+
{ bg: '#ec4899', text: '#ffffff' }, // Pink
|
|
21055
|
+
{ bg: '#f43f5e', text: '#ffffff' }, // Rose
|
|
21056
|
+
{ bg: '#f97316', text: '#ffffff' }, // Orange
|
|
21057
|
+
{ bg: '#eab308', text: '#1f2937' }, // Yellow
|
|
21058
|
+
{ bg: '#22c55e', text: '#ffffff' }, // Green
|
|
21059
|
+
{ bg: '#14b8a6', text: '#ffffff' }, // Teal
|
|
21060
|
+
{ bg: '#06b6d4', text: '#ffffff' }, // Cyan
|
|
21061
|
+
{ bg: '#3b82f6', text: '#ffffff' }, // Blue
|
|
21062
|
+
];
|
|
21063
|
+
/**
|
|
21064
|
+
* val-welcome-card
|
|
21065
|
+
*
|
|
21066
|
+
* A modern welcome/greeting card with avatar, animated gradient background,
|
|
21067
|
+
* and optional action buttons. Perfect for dashboard headers.
|
|
21068
|
+
*
|
|
21069
|
+
* @example Basic usage
|
|
21070
|
+
* ```html
|
|
21071
|
+
* <val-welcome-card
|
|
21072
|
+
* [props]="{
|
|
21073
|
+
* greeting: 'Welcome back',
|
|
21074
|
+
* user: { name: 'John Doe', email: 'john@example.com' }
|
|
21075
|
+
* }"
|
|
21076
|
+
* />
|
|
21077
|
+
* ```
|
|
21078
|
+
*
|
|
21079
|
+
* @example With gradient variant
|
|
21080
|
+
* ```html
|
|
21081
|
+
* <val-welcome-card
|
|
21082
|
+
* [props]="{
|
|
21083
|
+
* variant: 'gradient',
|
|
21084
|
+
* greeting: 'Good morning',
|
|
21085
|
+
* user: { name: 'Jane', email: 'jane@example.com' },
|
|
21086
|
+
* gradientFrom: 'primary',
|
|
21087
|
+
* gradientTo: 'tertiary'
|
|
21088
|
+
* }"
|
|
21089
|
+
* />
|
|
21090
|
+
* ```
|
|
21091
|
+
*
|
|
21092
|
+
* @example With i18n
|
|
21093
|
+
* ```html
|
|
21094
|
+
* <val-welcome-card
|
|
21095
|
+
* [props]="{
|
|
21096
|
+
* greetingKey: 'welcome',
|
|
21097
|
+
* i18nNamespace: 'Dashboard',
|
|
21098
|
+
* user: user()
|
|
21099
|
+
* }"
|
|
21100
|
+
* />
|
|
21101
|
+
* ```
|
|
21102
|
+
*/
|
|
21103
|
+
class WelcomeCardComponent {
|
|
21104
|
+
constructor() {
|
|
21105
|
+
this.i18n = inject(I18nService);
|
|
21106
|
+
this.themeService = inject(ThemeService);
|
|
21107
|
+
/** Component configuration */
|
|
21108
|
+
this.props = input({});
|
|
21109
|
+
/** Event emitted when card elements are clicked */
|
|
21110
|
+
this.cardClick = new EventEmitter();
|
|
21111
|
+
/** Merged configuration with defaults */
|
|
21112
|
+
this.config = computed(() => ({
|
|
21113
|
+
...WELCOME_CARD_DEFAULTS,
|
|
21114
|
+
...this.props(),
|
|
21115
|
+
}));
|
|
21116
|
+
/** Avatar configuration with defaults */
|
|
21117
|
+
this.avatarConfig = computed(() => ({
|
|
21118
|
+
...WELCOME_CARD_DEFAULTS.avatar,
|
|
21119
|
+
...this.props().avatar,
|
|
21120
|
+
}));
|
|
21121
|
+
/** Current theme mode */
|
|
21122
|
+
this.isDark = computed(() => this.themeService.IsDark);
|
|
21123
|
+
/** Color index based on user name hash */
|
|
21124
|
+
this.colorIndex = computed(() => {
|
|
21125
|
+
const name = this.config().user?.name || '';
|
|
21126
|
+
let hash = 0;
|
|
21127
|
+
for (let i = 0; i < name.length; i++) {
|
|
21128
|
+
hash = name.charCodeAt(i) + ((hash << 5) - hash);
|
|
21129
|
+
}
|
|
21130
|
+
return Math.abs(hash) % AVATAR_COLORS.length;
|
|
21131
|
+
});
|
|
21132
|
+
}
|
|
21133
|
+
/** Get initials from user name */
|
|
21134
|
+
getInitials() {
|
|
21135
|
+
const props = this.props();
|
|
21136
|
+
// Check for explicit initials first (from props, not merged config)
|
|
21137
|
+
if (props.avatar?.initials || props.user?.initials) {
|
|
21138
|
+
return props.avatar?.initials || props.user?.initials || '';
|
|
21139
|
+
}
|
|
21140
|
+
const name = props.user?.name || '';
|
|
21141
|
+
if (!name)
|
|
21142
|
+
return '?';
|
|
21143
|
+
const parts = name.trim().split(/\s+/);
|
|
21144
|
+
if (parts.length === 1) {
|
|
21145
|
+
return parts[0].substring(0, 2).toUpperCase();
|
|
21146
|
+
}
|
|
21147
|
+
return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();
|
|
21148
|
+
}
|
|
21149
|
+
/** Get greeting text with i18n support */
|
|
21150
|
+
getGreeting() {
|
|
21151
|
+
const cfg = this.config();
|
|
21152
|
+
if (cfg.i18nNamespace && cfg.greetingKey) {
|
|
21153
|
+
this.i18n.lang(); // Track for reactivity
|
|
21154
|
+
return this.i18n.t(cfg.greetingKey, cfg.i18nNamespace);
|
|
21155
|
+
}
|
|
21156
|
+
return cfg.greeting || '';
|
|
21157
|
+
}
|
|
21158
|
+
/** Get subtitle text with i18n support */
|
|
21159
|
+
getSubtitle() {
|
|
21160
|
+
const cfg = this.config();
|
|
21161
|
+
if (cfg.i18nNamespace && cfg.subtitleKey) {
|
|
21162
|
+
this.i18n.lang();
|
|
21163
|
+
return this.i18n.t(cfg.subtitleKey, cfg.i18nNamespace);
|
|
21164
|
+
}
|
|
21165
|
+
return cfg.subtitle || '';
|
|
21166
|
+
}
|
|
21167
|
+
/** Get action label with i18n support */
|
|
21168
|
+
getActionLabel(action) {
|
|
21169
|
+
const cfg = this.config();
|
|
21170
|
+
if (cfg.i18nNamespace && action.labelKey) {
|
|
21171
|
+
this.i18n.lang();
|
|
21172
|
+
return this.i18n.t(action.labelKey, cfg.i18nNamespace);
|
|
21173
|
+
}
|
|
21174
|
+
return action.label || '';
|
|
21175
|
+
}
|
|
21176
|
+
/** Resolve color value */
|
|
21177
|
+
resolveColor(color) {
|
|
21178
|
+
if (!color)
|
|
21179
|
+
return null;
|
|
21180
|
+
if (IONIC_COLORS.includes(color)) {
|
|
21181
|
+
return `var(--ion-color-${color})`;
|
|
21182
|
+
}
|
|
21183
|
+
return color;
|
|
21184
|
+
}
|
|
21185
|
+
/** Get gradient start color */
|
|
21186
|
+
getGradientFrom() {
|
|
21187
|
+
const color = this.config().gradientFrom;
|
|
21188
|
+
return this.resolveColor(color) || 'var(--ion-color-primary)';
|
|
21189
|
+
}
|
|
21190
|
+
/** Get gradient end color */
|
|
21191
|
+
getGradientTo() {
|
|
21192
|
+
const color = this.config().gradientTo;
|
|
21193
|
+
return this.resolveColor(color) || 'var(--ion-color-tertiary)';
|
|
21194
|
+
}
|
|
21195
|
+
/** Get background color (for non-gradient variants) */
|
|
21196
|
+
getBackgroundColor() {
|
|
21197
|
+
return this.resolveColor(this.config().backgroundColor);
|
|
21198
|
+
}
|
|
21199
|
+
/** Get avatar background based on user name */
|
|
21200
|
+
getAvatarBackground() {
|
|
21201
|
+
const cfg = this.avatarConfig();
|
|
21202
|
+
if (cfg.mode === 'image')
|
|
21203
|
+
return 'transparent';
|
|
21204
|
+
return AVATAR_COLORS[this.colorIndex()].bg;
|
|
21205
|
+
}
|
|
21206
|
+
/** Get avatar text color */
|
|
21207
|
+
getAvatarTextColor() {
|
|
21208
|
+
return AVATAR_COLORS[this.colorIndex()].text;
|
|
21209
|
+
}
|
|
21210
|
+
/** Get ring color */
|
|
21211
|
+
getRingColor() {
|
|
21212
|
+
const ringColor = this.avatarConfig().ringColor;
|
|
21213
|
+
return this.resolveColor(ringColor) || 'rgba(255, 255, 255, 0.5)';
|
|
21214
|
+
}
|
|
21215
|
+
/** Handle card click */
|
|
21216
|
+
onCardClick(event) {
|
|
21217
|
+
// Don't emit if clicking avatar or actions
|
|
21218
|
+
if (event.target.closest('.welcome-card__avatar, .welcome-card__action')) {
|
|
21219
|
+
return;
|
|
21220
|
+
}
|
|
21221
|
+
this.cardClick.emit({ target: 'card' });
|
|
21222
|
+
}
|
|
21223
|
+
/** Handle avatar click */
|
|
21224
|
+
onAvatarClick(event) {
|
|
21225
|
+
event.stopPropagation();
|
|
21226
|
+
this.cardClick.emit({ target: 'avatar' });
|
|
21227
|
+
}
|
|
21228
|
+
/** Handle action click */
|
|
21229
|
+
onActionClick(event, token) {
|
|
21230
|
+
event.stopPropagation();
|
|
21231
|
+
this.cardClick.emit({ target: 'action', actionToken: token });
|
|
21232
|
+
}
|
|
21233
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WelcomeCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21234
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: WelcomeCardComponent, isStandalone: true, selector: "val-welcome-card", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cardClick: "cardClick" }, ngImport: i0, template: `
|
|
21235
|
+
<article
|
|
21236
|
+
class="welcome-card"
|
|
21237
|
+
[class.welcome-card--default]="config().variant === 'default'"
|
|
21238
|
+
[class.welcome-card--gradient]="config().variant === 'gradient'"
|
|
21239
|
+
[class.welcome-card--glass]="config().variant === 'glass'"
|
|
21240
|
+
[class.welcome-card--minimal]="config().variant === 'minimal'"
|
|
21241
|
+
[class.welcome-card--dark]="isDark()"
|
|
21242
|
+
[class.welcome-card--loading]="config().loading"
|
|
21243
|
+
[style.--gradient-from]="getGradientFrom()"
|
|
21244
|
+
[style.--gradient-to]="getGradientTo()"
|
|
21245
|
+
[style.--gradient-angle]="config().gradientAngle + 'deg'"
|
|
21246
|
+
[style.--bg-color]="getBackgroundColor()"
|
|
21247
|
+
(click)="onCardClick($event)"
|
|
21248
|
+
>
|
|
21249
|
+
<!-- Animated particles background -->
|
|
21250
|
+
@if (config().showParticles && config().variant === 'gradient') {
|
|
21251
|
+
<div class="welcome-card__particles">
|
|
21252
|
+
@for (i of [1,2,3,4,5,6]; track i) {
|
|
21253
|
+
<span class="particle" [class]="'particle--' + i"></span>
|
|
21254
|
+
}
|
|
21255
|
+
</div>
|
|
21256
|
+
}
|
|
21257
|
+
|
|
21258
|
+
<!-- Content -->
|
|
21259
|
+
<div class="welcome-card__content">
|
|
21260
|
+
<!-- Avatar -->
|
|
21261
|
+
<div
|
|
21262
|
+
class="welcome-card__avatar"
|
|
21263
|
+
[class.welcome-card__avatar--small]="avatarConfig().size === 'small'"
|
|
21264
|
+
[class.welcome-card__avatar--medium]="avatarConfig().size === 'medium'"
|
|
21265
|
+
[class.welcome-card__avatar--large]="avatarConfig().size === 'large'"
|
|
21266
|
+
[class.welcome-card__avatar--ring]="avatarConfig().showRing"
|
|
21267
|
+
[style.--avatar-bg]="getAvatarBackground()"
|
|
21268
|
+
[style.--avatar-color]="getAvatarTextColor()"
|
|
21269
|
+
[style.--ring-color]="getRingColor()"
|
|
21270
|
+
(click)="onAvatarClick($event)"
|
|
21271
|
+
>
|
|
21272
|
+
@if (config().loading) {
|
|
21273
|
+
<ion-skeleton-text [animated]="true" class="avatar-skeleton"></ion-skeleton-text>
|
|
21274
|
+
} @else if (avatarConfig().mode === 'image' && (avatarConfig().imageUrl || config().user?.avatarUrl)) {
|
|
21275
|
+
<img
|
|
21276
|
+
[src]="avatarConfig().imageUrl || config().user?.avatarUrl"
|
|
21277
|
+
[alt]="config().user?.name || 'Avatar'"
|
|
21278
|
+
class="avatar-image"
|
|
21279
|
+
/>
|
|
21280
|
+
} @else if (avatarConfig().mode === 'icon') {
|
|
21281
|
+
<ion-icon [name]="avatarConfig().icon || 'person-outline'"></ion-icon>
|
|
21282
|
+
} @else {
|
|
21283
|
+
<span class="avatar-initials">{{ getInitials() }}</span>
|
|
21284
|
+
}
|
|
21285
|
+
</div>
|
|
21286
|
+
|
|
21287
|
+
<!-- Text content -->
|
|
21288
|
+
<div class="welcome-card__text">
|
|
21289
|
+
@if (config().loading) {
|
|
21290
|
+
<ion-skeleton-text [animated]="true" style="width: 40%; height: 14px; margin-bottom: 8px;"></ion-skeleton-text>
|
|
21291
|
+
<ion-skeleton-text [animated]="true" style="width: 60%; height: 24px; margin-bottom: 4px;"></ion-skeleton-text>
|
|
21292
|
+
<ion-skeleton-text [animated]="true" style="width: 50%; height: 14px;"></ion-skeleton-text>
|
|
21293
|
+
} @else {
|
|
21294
|
+
@if (getGreeting()) {
|
|
21295
|
+
<span class="welcome-card__greeting">{{ getGreeting() }}</span>
|
|
21296
|
+
}
|
|
21297
|
+
<h2 class="welcome-card__name">{{ config().user?.name || 'User' }}</h2>
|
|
21298
|
+
@if (getSubtitle() || config().user?.email) {
|
|
21299
|
+
<span class="welcome-card__subtitle">{{ getSubtitle() || config().user?.email }}</span>
|
|
21300
|
+
}
|
|
21301
|
+
}
|
|
21302
|
+
</div>
|
|
21303
|
+
</div>
|
|
21304
|
+
|
|
21305
|
+
<!-- Actions -->
|
|
21306
|
+
@if (config().actions?.length && !config().loading) {
|
|
21307
|
+
<div class="welcome-card__actions">
|
|
21308
|
+
@for (action of config().actions; track action.token || action.label) {
|
|
21309
|
+
<button
|
|
21310
|
+
type="button"
|
|
21311
|
+
class="welcome-card__action"
|
|
21312
|
+
[routerLink]="action.routerLink"
|
|
21313
|
+
(click)="onActionClick($event, action.token)"
|
|
21314
|
+
>
|
|
21315
|
+
@if (action.icon) {
|
|
21316
|
+
<ion-icon [name]="action.icon"></ion-icon>
|
|
21317
|
+
}
|
|
21318
|
+
<span>{{ getActionLabel(action) }}</span>
|
|
21319
|
+
<ion-icon name="chevron-forward-outline" class="action-chevron"></ion-icon>
|
|
21320
|
+
</button>
|
|
21321
|
+
}
|
|
21322
|
+
</div>
|
|
21323
|
+
}
|
|
21324
|
+
|
|
21325
|
+
<ion-ripple-effect></ion-ripple-effect>
|
|
21326
|
+
</article>
|
|
21327
|
+
`, isInline: true, styles: [":host{display:block;width:100%}.welcome-card{position:relative;border-radius:20px;padding:1.5rem;overflow:hidden;cursor:pointer;transition:transform .3s ease,box-shadow .3s ease}.welcome-card--default{background:var(--bg-color, var(--ion-card-background, #fff));box-shadow:0 4px 20px #00000014}.welcome-card--default .welcome-card__greeting,.welcome-card--default .welcome-card__subtitle{color:var(--ion-color-medium)}.welcome-card--default .welcome-card__name{color:var(--ion-text-color)}.welcome-card--gradient{background:linear-gradient(var(--gradient-angle, 135deg),var(--gradient-from, var(--ion-color-primary)),var(--gradient-to, var(--ion-color-tertiary)));box-shadow:0 8px 32px #00000026}.welcome-card--gradient .welcome-card__greeting,.welcome-card--gradient .welcome-card__subtitle{color:#ffffffd9}.welcome-card--gradient .welcome-card__name{color:#fff}.welcome-card--gradient .welcome-card__action{background:#ffffff26;color:#fff;border-color:#fff3}.welcome-card--gradient .welcome-card__action:hover{background:#ffffff40}.welcome-card--glass{background:#ffffff26;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.2);box-shadow:0 8px 32px #0000001a}.welcome-card--glass .welcome-card__greeting,.welcome-card--glass .welcome-card__subtitle{color:var(--ion-color-medium)}.welcome-card--glass .welcome-card__name{color:var(--ion-text-color)}.welcome-card--minimal{background:transparent;padding:1rem 0;border-radius:0;box-shadow:none}.welcome-card--minimal .welcome-card__greeting,.welcome-card--minimal .welcome-card__subtitle{color:var(--ion-color-medium)}.welcome-card--minimal .welcome-card__name{color:var(--ion-text-color)}.welcome-card--dark.welcome-card--default{background:var(--ion-card-background, #1e1e1e);box-shadow:0 4px 20px #0000004d}.welcome-card--dark.welcome-card--glass{background:#1e1e1eb3;border-color:#ffffff1a}.welcome-card:hover{transform:translateY(-2px)}.welcome-card--loading{pointer-events:none}.welcome-card__particles{position:absolute;inset:0;overflow:hidden;pointer-events:none}.welcome-card__particles .particle{position:absolute;border-radius:50%;background:#fff3;animation:float 8s ease-in-out infinite}.welcome-card__particles .particle--1{width:80px;height:80px;top:-20px;right:10%;animation-delay:0s}.welcome-card__particles .particle--2{width:60px;height:60px;bottom:-15px;right:25%;animation-delay:-2s}.welcome-card__particles .particle--3{width:40px;height:40px;top:40%;right:-10px;animation-delay:-4s}.welcome-card__particles .particle--4{width:30px;height:30px;top:20%;left:10%;animation-delay:-1s;opacity:.5}.welcome-card__particles .particle--5{width:50px;height:50px;bottom:10%;left:5%;animation-delay:-3s;opacity:.3}.welcome-card__particles .particle--6{width:25px;height:25px;top:60%;left:30%;animation-delay:-5s;opacity:.4}@keyframes float{0%,to{transform:translateY(0) scale(1);opacity:.2}50%{transform:translateY(-20px) scale(1.1);opacity:.35}}.welcome-card__content{position:relative;z-index:1;display:flex;align-items:center;gap:1.25rem}.welcome-card__avatar{position:relative;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--avatar-bg);color:var(--avatar-color);font-weight:700;transition:transform .3s ease}.welcome-card__avatar--small{width:48px;height:48px;font-size:1rem}.welcome-card__avatar--small ion-icon{font-size:1.25rem}.welcome-card__avatar--medium{width:64px;height:64px;font-size:1.25rem}.welcome-card__avatar--medium ion-icon{font-size:1.5rem}.welcome-card__avatar--large{width:80px;height:80px;font-size:1.75rem}.welcome-card__avatar--large ion-icon{font-size:2rem}.welcome-card__avatar--ring:before{content:\"\";position:absolute;inset:-4px;border-radius:50%;border:3px solid var(--ring-color, rgba(255, 255, 255, .5));animation:pulse-ring 2s ease-in-out infinite}.welcome-card__avatar .avatar-skeleton{width:100%;height:100%;border-radius:50%}.welcome-card__avatar .avatar-image{width:100%;height:100%;border-radius:50%;object-fit:cover}.welcome-card__avatar .avatar-initials{-webkit-user-select:none;user-select:none;text-transform:uppercase;letter-spacing:.5px}.welcome-card__avatar:hover{transform:scale(1.05)}@keyframes pulse-ring{0%,to{transform:scale(1);opacity:.5}50%{transform:scale(1.05);opacity:.8}}.welcome-card__text{flex:1;min-width:0}.welcome-card__greeting{display:block;font-size:.875rem;font-weight:500;margin-bottom:.25rem;text-transform:uppercase;letter-spacing:.5px}.welcome-card__name{margin:0 0 .25rem;font-size:1.5rem;font-weight:700;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.welcome-card__subtitle{display:block;font-size:.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.welcome-card__actions{position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.25rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.15)}.welcome-card__action{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:12px;border:1px solid transparent;background:var(--ion-color-light);color:var(--ion-text-color);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease;text-decoration:none}.welcome-card__action ion-icon{font-size:1rem}.welcome-card__action .action-chevron{font-size:.75rem;opacity:.6;transition:transform .2s ease}.welcome-card__action:hover .action-chevron{transform:translate(3px)}@media (max-width: 480px){.welcome-card{padding:1.25rem}.welcome-card__content{gap:1rem}.welcome-card__avatar--large{width:64px;height:64px;font-size:1.25rem}.welcome-card__name{font-size:1.25rem}.welcome-card__actions{flex-direction:column}.welcome-card__action{width:100%;justify-content:space-between}}:host{animation:slideInUp .5s ease-out}@keyframes slideInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }, { kind: "component", type: IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }] }); }
|
|
21328
|
+
}
|
|
21329
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WelcomeCardComponent, decorators: [{
|
|
21330
|
+
type: Component,
|
|
21331
|
+
args: [{ selector: 'val-welcome-card', standalone: true, imports: [CommonModule, RouterLink, IonIcon, IonRippleEffect, IonSkeletonText], template: `
|
|
21332
|
+
<article
|
|
21333
|
+
class="welcome-card"
|
|
21334
|
+
[class.welcome-card--default]="config().variant === 'default'"
|
|
21335
|
+
[class.welcome-card--gradient]="config().variant === 'gradient'"
|
|
21336
|
+
[class.welcome-card--glass]="config().variant === 'glass'"
|
|
21337
|
+
[class.welcome-card--minimal]="config().variant === 'minimal'"
|
|
21338
|
+
[class.welcome-card--dark]="isDark()"
|
|
21339
|
+
[class.welcome-card--loading]="config().loading"
|
|
21340
|
+
[style.--gradient-from]="getGradientFrom()"
|
|
21341
|
+
[style.--gradient-to]="getGradientTo()"
|
|
21342
|
+
[style.--gradient-angle]="config().gradientAngle + 'deg'"
|
|
21343
|
+
[style.--bg-color]="getBackgroundColor()"
|
|
21344
|
+
(click)="onCardClick($event)"
|
|
21345
|
+
>
|
|
21346
|
+
<!-- Animated particles background -->
|
|
21347
|
+
@if (config().showParticles && config().variant === 'gradient') {
|
|
21348
|
+
<div class="welcome-card__particles">
|
|
21349
|
+
@for (i of [1,2,3,4,5,6]; track i) {
|
|
21350
|
+
<span class="particle" [class]="'particle--' + i"></span>
|
|
21351
|
+
}
|
|
21352
|
+
</div>
|
|
21353
|
+
}
|
|
21354
|
+
|
|
21355
|
+
<!-- Content -->
|
|
21356
|
+
<div class="welcome-card__content">
|
|
21357
|
+
<!-- Avatar -->
|
|
21358
|
+
<div
|
|
21359
|
+
class="welcome-card__avatar"
|
|
21360
|
+
[class.welcome-card__avatar--small]="avatarConfig().size === 'small'"
|
|
21361
|
+
[class.welcome-card__avatar--medium]="avatarConfig().size === 'medium'"
|
|
21362
|
+
[class.welcome-card__avatar--large]="avatarConfig().size === 'large'"
|
|
21363
|
+
[class.welcome-card__avatar--ring]="avatarConfig().showRing"
|
|
21364
|
+
[style.--avatar-bg]="getAvatarBackground()"
|
|
21365
|
+
[style.--avatar-color]="getAvatarTextColor()"
|
|
21366
|
+
[style.--ring-color]="getRingColor()"
|
|
21367
|
+
(click)="onAvatarClick($event)"
|
|
21368
|
+
>
|
|
21369
|
+
@if (config().loading) {
|
|
21370
|
+
<ion-skeleton-text [animated]="true" class="avatar-skeleton"></ion-skeleton-text>
|
|
21371
|
+
} @else if (avatarConfig().mode === 'image' && (avatarConfig().imageUrl || config().user?.avatarUrl)) {
|
|
21372
|
+
<img
|
|
21373
|
+
[src]="avatarConfig().imageUrl || config().user?.avatarUrl"
|
|
21374
|
+
[alt]="config().user?.name || 'Avatar'"
|
|
21375
|
+
class="avatar-image"
|
|
21376
|
+
/>
|
|
21377
|
+
} @else if (avatarConfig().mode === 'icon') {
|
|
21378
|
+
<ion-icon [name]="avatarConfig().icon || 'person-outline'"></ion-icon>
|
|
21379
|
+
} @else {
|
|
21380
|
+
<span class="avatar-initials">{{ getInitials() }}</span>
|
|
21381
|
+
}
|
|
21382
|
+
</div>
|
|
21383
|
+
|
|
21384
|
+
<!-- Text content -->
|
|
21385
|
+
<div class="welcome-card__text">
|
|
21386
|
+
@if (config().loading) {
|
|
21387
|
+
<ion-skeleton-text [animated]="true" style="width: 40%; height: 14px; margin-bottom: 8px;"></ion-skeleton-text>
|
|
21388
|
+
<ion-skeleton-text [animated]="true" style="width: 60%; height: 24px; margin-bottom: 4px;"></ion-skeleton-text>
|
|
21389
|
+
<ion-skeleton-text [animated]="true" style="width: 50%; height: 14px;"></ion-skeleton-text>
|
|
21390
|
+
} @else {
|
|
21391
|
+
@if (getGreeting()) {
|
|
21392
|
+
<span class="welcome-card__greeting">{{ getGreeting() }}</span>
|
|
21393
|
+
}
|
|
21394
|
+
<h2 class="welcome-card__name">{{ config().user?.name || 'User' }}</h2>
|
|
21395
|
+
@if (getSubtitle() || config().user?.email) {
|
|
21396
|
+
<span class="welcome-card__subtitle">{{ getSubtitle() || config().user?.email }}</span>
|
|
21397
|
+
}
|
|
21398
|
+
}
|
|
21399
|
+
</div>
|
|
21400
|
+
</div>
|
|
21401
|
+
|
|
21402
|
+
<!-- Actions -->
|
|
21403
|
+
@if (config().actions?.length && !config().loading) {
|
|
21404
|
+
<div class="welcome-card__actions">
|
|
21405
|
+
@for (action of config().actions; track action.token || action.label) {
|
|
21406
|
+
<button
|
|
21407
|
+
type="button"
|
|
21408
|
+
class="welcome-card__action"
|
|
21409
|
+
[routerLink]="action.routerLink"
|
|
21410
|
+
(click)="onActionClick($event, action.token)"
|
|
21411
|
+
>
|
|
21412
|
+
@if (action.icon) {
|
|
21413
|
+
<ion-icon [name]="action.icon"></ion-icon>
|
|
21414
|
+
}
|
|
21415
|
+
<span>{{ getActionLabel(action) }}</span>
|
|
21416
|
+
<ion-icon name="chevron-forward-outline" class="action-chevron"></ion-icon>
|
|
21417
|
+
</button>
|
|
21418
|
+
}
|
|
21419
|
+
</div>
|
|
21420
|
+
}
|
|
21421
|
+
|
|
21422
|
+
<ion-ripple-effect></ion-ripple-effect>
|
|
21423
|
+
</article>
|
|
21424
|
+
`, styles: [":host{display:block;width:100%}.welcome-card{position:relative;border-radius:20px;padding:1.5rem;overflow:hidden;cursor:pointer;transition:transform .3s ease,box-shadow .3s ease}.welcome-card--default{background:var(--bg-color, var(--ion-card-background, #fff));box-shadow:0 4px 20px #00000014}.welcome-card--default .welcome-card__greeting,.welcome-card--default .welcome-card__subtitle{color:var(--ion-color-medium)}.welcome-card--default .welcome-card__name{color:var(--ion-text-color)}.welcome-card--gradient{background:linear-gradient(var(--gradient-angle, 135deg),var(--gradient-from, var(--ion-color-primary)),var(--gradient-to, var(--ion-color-tertiary)));box-shadow:0 8px 32px #00000026}.welcome-card--gradient .welcome-card__greeting,.welcome-card--gradient .welcome-card__subtitle{color:#ffffffd9}.welcome-card--gradient .welcome-card__name{color:#fff}.welcome-card--gradient .welcome-card__action{background:#ffffff26;color:#fff;border-color:#fff3}.welcome-card--gradient .welcome-card__action:hover{background:#ffffff40}.welcome-card--glass{background:#ffffff26;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.2);box-shadow:0 8px 32px #0000001a}.welcome-card--glass .welcome-card__greeting,.welcome-card--glass .welcome-card__subtitle{color:var(--ion-color-medium)}.welcome-card--glass .welcome-card__name{color:var(--ion-text-color)}.welcome-card--minimal{background:transparent;padding:1rem 0;border-radius:0;box-shadow:none}.welcome-card--minimal .welcome-card__greeting,.welcome-card--minimal .welcome-card__subtitle{color:var(--ion-color-medium)}.welcome-card--minimal .welcome-card__name{color:var(--ion-text-color)}.welcome-card--dark.welcome-card--default{background:var(--ion-card-background, #1e1e1e);box-shadow:0 4px 20px #0000004d}.welcome-card--dark.welcome-card--glass{background:#1e1e1eb3;border-color:#ffffff1a}.welcome-card:hover{transform:translateY(-2px)}.welcome-card--loading{pointer-events:none}.welcome-card__particles{position:absolute;inset:0;overflow:hidden;pointer-events:none}.welcome-card__particles .particle{position:absolute;border-radius:50%;background:#fff3;animation:float 8s ease-in-out infinite}.welcome-card__particles .particle--1{width:80px;height:80px;top:-20px;right:10%;animation-delay:0s}.welcome-card__particles .particle--2{width:60px;height:60px;bottom:-15px;right:25%;animation-delay:-2s}.welcome-card__particles .particle--3{width:40px;height:40px;top:40%;right:-10px;animation-delay:-4s}.welcome-card__particles .particle--4{width:30px;height:30px;top:20%;left:10%;animation-delay:-1s;opacity:.5}.welcome-card__particles .particle--5{width:50px;height:50px;bottom:10%;left:5%;animation-delay:-3s;opacity:.3}.welcome-card__particles .particle--6{width:25px;height:25px;top:60%;left:30%;animation-delay:-5s;opacity:.4}@keyframes float{0%,to{transform:translateY(0) scale(1);opacity:.2}50%{transform:translateY(-20px) scale(1.1);opacity:.35}}.welcome-card__content{position:relative;z-index:1;display:flex;align-items:center;gap:1.25rem}.welcome-card__avatar{position:relative;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--avatar-bg);color:var(--avatar-color);font-weight:700;transition:transform .3s ease}.welcome-card__avatar--small{width:48px;height:48px;font-size:1rem}.welcome-card__avatar--small ion-icon{font-size:1.25rem}.welcome-card__avatar--medium{width:64px;height:64px;font-size:1.25rem}.welcome-card__avatar--medium ion-icon{font-size:1.5rem}.welcome-card__avatar--large{width:80px;height:80px;font-size:1.75rem}.welcome-card__avatar--large ion-icon{font-size:2rem}.welcome-card__avatar--ring:before{content:\"\";position:absolute;inset:-4px;border-radius:50%;border:3px solid var(--ring-color, rgba(255, 255, 255, .5));animation:pulse-ring 2s ease-in-out infinite}.welcome-card__avatar .avatar-skeleton{width:100%;height:100%;border-radius:50%}.welcome-card__avatar .avatar-image{width:100%;height:100%;border-radius:50%;object-fit:cover}.welcome-card__avatar .avatar-initials{-webkit-user-select:none;user-select:none;text-transform:uppercase;letter-spacing:.5px}.welcome-card__avatar:hover{transform:scale(1.05)}@keyframes pulse-ring{0%,to{transform:scale(1);opacity:.5}50%{transform:scale(1.05);opacity:.8}}.welcome-card__text{flex:1;min-width:0}.welcome-card__greeting{display:block;font-size:.875rem;font-weight:500;margin-bottom:.25rem;text-transform:uppercase;letter-spacing:.5px}.welcome-card__name{margin:0 0 .25rem;font-size:1.5rem;font-weight:700;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.welcome-card__subtitle{display:block;font-size:.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.welcome-card__actions{position:relative;z-index:1;display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.25rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.15)}.welcome-card__action{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:12px;border:1px solid transparent;background:var(--ion-color-light);color:var(--ion-text-color);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease;text-decoration:none}.welcome-card__action ion-icon{font-size:1rem}.welcome-card__action .action-chevron{font-size:.75rem;opacity:.6;transition:transform .2s ease}.welcome-card__action:hover .action-chevron{transform:translate(3px)}@media (max-width: 480px){.welcome-card{padding:1.25rem}.welcome-card__content{gap:1rem}.welcome-card__avatar--large{width:64px;height:64px;font-size:1.25rem}.welcome-card__name{font-size:1.25rem}.welcome-card__actions{flex-direction:column}.welcome-card__action{width:100%;justify-content:space-between}}:host{animation:slideInUp .5s ease-out}@keyframes slideInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}\n"] }]
|
|
21425
|
+
}], propDecorators: { cardClick: [{
|
|
21426
|
+
type: Output
|
|
21427
|
+
}] } });
|
|
21428
|
+
|
|
21030
21429
|
/**
|
|
21031
21430
|
* Configuración de espaciado predefinida
|
|
21032
21431
|
*/
|
|
@@ -40821,5 +41220,5 @@ function buildFooterLinks(links, t) {
|
|
|
40821
41220
|
* Generated bundle index. Do not edit.
|
|
40822
41221
|
*/
|
|
40823
41222
|
|
|
40824
|
-
export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, ARTICLE_SPACING, AccordionComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AppConfigService, ArticleBuilder, ArticleComponent, AuthBackgroundComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BaseDefault, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, CheckInputComponent, ChipGroupComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContentLoaderComponent, ContentReactionComponent, CountdownComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_CANCEL_BUTTON, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_EMPTY_STATE, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_LEGEND_LABELS, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PAYMENT_STATUS_COLORS, DEFAULT_PAYMENT_STATUS_LABELS, DEFAULT_PLATFORMS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_STATUS_COLORS, DEFAULT_STATUS_LABELS, DEFAULT_WINNER_LABELS, DataTableComponent, DateInputComponent, DateRangeInputComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DownloadService, EmailInputComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FabComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FooterComponent, FooterLinksComponent, FormComponent, FormFooterComponent, FormSkeletonComponent, FunHeaderComponent, GlowCardComponent, GridSkeletonComponent, HeaderComponent, HintComponent, HorizontalScrollComponent, HourInputComponent, HrefComponent, I18nService, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, Icon, IconComponent, IconService, ImageComponent, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LOGIN_DEFAULTS, LanguageSelectorComponent, LayeredCardComponent, LayoutComponent, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginComponent, MODAL_SIZES, MOTION, MaintenancePageComponent, MenuComponent, MessagingService, ModalService, MultiSelectSearchComponent, NavigationService, NoContentComponent, NotesBoxComponent, NotificationsService, NumberFromToComponent, NumberInputComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PLATFORM_CONFIGS, PageContentComponent, PageTemplateComponent, PageWrapperComponent, PaginationComponent, PaginationService, ParticipantCardComponent, PasswordInputComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PresetService, PriceTagComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProfileSkeletonComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QueryBuilder, QuoteBoxComponent, RadioInputComponent, RaffleStatusCardComponent, RangeInputComponent, RatingComponent, RecapCardComponent, RefresherComponent, RightsFooterComponent, RotatingTextComponent, SKELETON_PRESETS, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SegmentControlComponent, SelectSearchComponent, SessionService, ShareButtonsComponent, SimpleComponent, SkeletonComponent, SkeletonService, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TicketGridComponent, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TranslatePipe, TypedCollection, UpdateBannerComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_DEFAULT_CONTENT, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_SOCIAL_LINKS, WinnerDisplayComponent, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, buildFooterLinks, buildPath, collections, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createTitleProps, extractPathParams, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, goToTop, guestGuard, hasEmulators, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isValidPath, joinPath, maxLength, permissionGuard, permissionGuardFromRoute, provideValtechAds, provideValtechAppConfig, provideValtechAuth, provideValtechAuthInterceptor, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechPresets, provideValtechSkeleton, query, replaceSpecialChars, resolveColor, resolveInputDefaultValue, roleGuard, storagePaths, superAdminGuard };
|
|
41223
|
+
export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, ARTICLE_SPACING, AccordionComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AppConfigService, ArticleBuilder, ArticleComponent, AuthBackgroundComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BaseDefault, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, CheckInputComponent, ChipGroupComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContentLoaderComponent, ContentReactionComponent, CountdownComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_CANCEL_BUTTON, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_EMPTY_STATE, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_LEGEND_LABELS, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PAYMENT_STATUS_COLORS, DEFAULT_PAYMENT_STATUS_LABELS, DEFAULT_PLATFORMS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_STATUS_COLORS, DEFAULT_STATUS_LABELS, DEFAULT_WINNER_LABELS, DataTableComponent, DateInputComponent, DateRangeInputComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DownloadService, EmailInputComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FabComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FooterComponent, FooterLinksComponent, FormComponent, FormFooterComponent, FormSkeletonComponent, FunHeaderComponent, GlowCardComponent, GridSkeletonComponent, HeaderComponent, HintComponent, HorizontalScrollComponent, HourInputComponent, HrefComponent, I18nService, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, Icon, IconComponent, IconService, ImageComponent, InAppBrowserService, InfiniteListComponent, InfoComponent, InputI18nHelper, InputType, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LOGIN_DEFAULTS, LanguageSelectorComponent, LayeredCardComponent, LayoutComponent, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginComponent, MODAL_SIZES, MOTION, MaintenancePageComponent, MenuComponent, MessagingService, ModalService, MultiSelectSearchComponent, NavigationService, NoContentComponent, NotesBoxComponent, NotificationsService, NumberFromToComponent, NumberInputComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PLATFORM_CONFIGS, PageContentComponent, PageTemplateComponent, PageWrapperComponent, PaginationComponent, PaginationService, ParticipantCardComponent, PasswordInputComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PresetService, PriceTagComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProfileSkeletonComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QueryBuilder, QuoteBoxComponent, RadioInputComponent, RaffleStatusCardComponent, RangeInputComponent, RatingComponent, RecapCardComponent, RefresherComponent, RightsFooterComponent, RotatingTextComponent, SKELETON_PRESETS, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SegmentControlComponent, SelectSearchComponent, SessionService, ShareButtonsComponent, SimpleComponent, SkeletonComponent, SkeletonService, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TicketGridComponent, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TranslatePipe, TypedCollection, UpdateBannerComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_DEFAULT_CONTENT, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_SOCIAL_LINKS, WELCOME_CARD_DEFAULTS, WelcomeCardComponent, WinnerDisplayComponent, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, buildFooterLinks, buildPath, collections, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createTitleProps, extractPathParams, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, goToTop, guestGuard, hasEmulators, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isValidPath, joinPath, maxLength, permissionGuard, permissionGuardFromRoute, provideValtechAds, provideValtechAppConfig, provideValtechAuth, provideValtechAuthInterceptor, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechPresets, provideValtechSkeleton, query, replaceSpecialChars, resolveColor, resolveInputDefaultValue, roleGuard, storagePaths, superAdminGuard };
|
|
40825
41224
|
//# sourceMappingURL=valtech-components.mjs.map
|