valtech-components 2.0.713 → 2.0.714

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.
Files changed (36) hide show
  1. package/esm2022/lib/components/organisms/cards-carousel/cards-carousel.component.mjs +63 -16
  2. package/esm2022/lib/components/organisms/cards-carousel/types.mjs +1 -1
  3. package/esm2022/lib/components/templates/simple/simple.component.mjs +7 -9
  4. package/esm2022/lib/services/auth/auth.service.mjs +33 -17
  5. package/esm2022/lib/version.mjs +2 -2
  6. package/esm2022/public-api.mjs +1 -12
  7. package/fesm2022/valtech-components.mjs +100 -1995
  8. package/fesm2022/valtech-components.mjs.map +1 -1
  9. package/lib/components/organisms/bottom-nav/bottom-nav.component.d.ts +1 -1
  10. package/lib/components/organisms/cards-carousel/cards-carousel.component.d.ts +12 -6
  11. package/lib/components/organisms/cards-carousel/types.d.ts +32 -3
  12. package/lib/version.d.ts +1 -1
  13. package/package.json +1 -1
  14. package/public-api.d.ts +0 -11
  15. package/esm2022/lib/components/molecules/participant-card/participant-card.component.mjs +0 -514
  16. package/esm2022/lib/components/molecules/participant-card/types.mjs +0 -21
  17. package/esm2022/lib/components/molecules/raffle-status-card/raffle-status-card.component.mjs +0 -476
  18. package/esm2022/lib/components/molecules/raffle-status-card/types.mjs +0 -23
  19. package/esm2022/lib/components/molecules/recap-card/recap-card.component.mjs +0 -78
  20. package/esm2022/lib/components/molecules/recap-card/types.mjs +0 -2
  21. package/esm2022/lib/components/molecules/ticket-grid/ticket-grid.component.mjs +0 -489
  22. package/esm2022/lib/components/molecules/ticket-grid/types.mjs +0 -11
  23. package/esm2022/lib/components/molecules/winner-display/types.mjs +0 -9
  24. package/esm2022/lib/components/molecules/winner-display/winner-display.component.mjs +0 -359
  25. package/esm2022/lib/components/templates/layout/layout.component.mjs +0 -19
  26. package/lib/components/molecules/participant-card/participant-card.component.d.ts +0 -34
  27. package/lib/components/molecules/participant-card/types.d.ts +0 -132
  28. package/lib/components/molecules/raffle-status-card/raffle-status-card.component.d.ts +0 -21
  29. package/lib/components/molecules/raffle-status-card/types.d.ts +0 -108
  30. package/lib/components/molecules/recap-card/recap-card.component.d.ts +0 -36
  31. package/lib/components/molecules/recap-card/types.d.ts +0 -30
  32. package/lib/components/molecules/ticket-grid/ticket-grid.component.d.ts +0 -40
  33. package/lib/components/molecules/ticket-grid/types.d.ts +0 -122
  34. package/lib/components/molecules/winner-display/types.d.ts +0 -103
  35. package/lib/components/molecules/winner-display/winner-display.component.d.ts +0 -36
  36. package/lib/components/templates/layout/layout.component.d.ts +0 -5
@@ -1,359 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, Input, Output, EventEmitter, inject, ElementRef, } from '@angular/core';
3
- import { IonIcon } from '@ionic/angular/standalone';
4
- import { addIcons } from 'ionicons';
5
- import { trophyOutline, ticketOutline, giftOutline, locationOutline } from 'ionicons/icons';
6
- import { AvatarComponent } from '../../atoms/avatar/avatar.component';
7
- import { DEFAULT_WINNER_LABELS, } from './types';
8
- import * as i0 from "@angular/core";
9
- addIcons({ trophyOutline, ticketOutline, giftOutline, locationOutline });
10
- /**
11
- * val-winner-display
12
- *
13
- * A component for displaying raffle winners with celebration animations.
14
- *
15
- * @example Basic usage
16
- * ```html
17
- * <val-winner-display
18
- * [props]="{
19
- * winner: {
20
- * name: 'Juan Pérez',
21
- * ticketNumber: 42
22
- * }
23
- * }"
24
- * ></val-winner-display>
25
- * ```
26
- *
27
- * @example Full celebration mode
28
- * ```html
29
- * <val-winner-display
30
- * [props]="{
31
- * winner: {
32
- * name: 'María García',
33
- * ticketNumber: 156,
34
- * prize: 'iPhone 15 Pro',
35
- * prizeValue: 25000,
36
- * location: 'CDMX, México',
37
- * avatar: { image: 'avatar.jpg' }
38
- * },
39
- * mode: 'celebration',
40
- * showConfetti: true,
41
- * animation: 'zoom',
42
- * color: 'warning'
43
- * }"
44
- * (animationComplete)="onReveal($event)"
45
- * ></val-winner-display>
46
- * ```
47
- */
48
- export class WinnerDisplayComponent {
49
- constructor() {
50
- this.animationComplete = new EventEmitter();
51
- this.isAnimating = false;
52
- this.isRevealed = false;
53
- this.showConfetti = false;
54
- this.confettiPieces = Array.from({ length: 50 }, (_, i) => i);
55
- this.revealTimeout = null;
56
- this.animationTimeout = null;
57
- this.elementRef = inject(ElementRef);
58
- }
59
- ngOnInit() {
60
- if (this.props.autoPlay !== false) {
61
- this.startReveal();
62
- }
63
- }
64
- ngAfterViewInit() {
65
- // Additional setup if needed
66
- }
67
- ngOnDestroy() {
68
- if (this.revealTimeout)
69
- clearTimeout(this.revealTimeout);
70
- if (this.animationTimeout)
71
- clearTimeout(this.animationTimeout);
72
- }
73
- startReveal() {
74
- const delay = this.props.revealDelay || 0;
75
- this.revealTimeout = setTimeout(() => {
76
- this.isAnimating = true;
77
- const animationDuration = this.props.animationDuration || 800;
78
- this.animationTimeout = setTimeout(() => {
79
- this.isAnimating = false;
80
- this.isRevealed = true;
81
- if (this.props.showConfetti) {
82
- this.showConfetti = true;
83
- }
84
- this.animationComplete.emit({
85
- animation: this.props.animation || 'fade',
86
- winner: this.props.winner,
87
- });
88
- }, animationDuration);
89
- }, delay);
90
- }
91
- /**
92
- * Manually trigger the reveal animation.
93
- */
94
- reveal() {
95
- this.isRevealed = false;
96
- this.showConfetti = false;
97
- this.startReveal();
98
- }
99
- /**
100
- * Reset to initial state.
101
- */
102
- reset() {
103
- this.isAnimating = false;
104
- this.isRevealed = false;
105
- this.showConfetti = false;
106
- }
107
- formatTicketNumber() {
108
- const num = this.props.winner.ticketNumber;
109
- if (this.props.numberPadding) {
110
- return String(num).padStart(this.props.numberPadding, '0');
111
- }
112
- return String(num);
113
- }
114
- formatPrizeValue() {
115
- if (!this.props.winner.prizeValue)
116
- return '';
117
- return `$${this.props.winner.prizeValue.toLocaleString('es-MX')}`;
118
- }
119
- getRandomX(index) {
120
- return `${(index * 17) % 100}%`;
121
- }
122
- getRandomRotation(index) {
123
- return `${(index * 37) % 360}deg`;
124
- }
125
- getWinnerLabel() {
126
- return this.props.winnerLabel || DEFAULT_WINNER_LABELS.winner;
127
- }
128
- getTicketLabel() {
129
- return this.props.ticketLabel || DEFAULT_WINNER_LABELS.ticket;
130
- }
131
- getPrizeLabel() {
132
- return this.props.prizeLabel || DEFAULT_WINNER_LABELS.prize;
133
- }
134
- getColor() {
135
- if (this.props.color) {
136
- return `var(--ion-color-${this.props.color})`;
137
- }
138
- return 'var(--ion-color-warning)';
139
- }
140
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WinnerDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
141
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: WinnerDisplayComponent, isStandalone: true, selector: "val-winner-display", inputs: { props: "props" }, outputs: { animationComplete: "animationComplete" }, ngImport: i0, template: `
142
- <div
143
- class="winner-display-container"
144
- [class]="props.cssClass"
145
- [class.mode-compact]="props.mode === 'compact'"
146
- [class.mode-standard]="props.mode === 'standard' || !props.mode"
147
- [class.mode-full]="props.mode === 'full'"
148
- [class.mode-celebration]="props.mode === 'celebration'"
149
- [class.size-small]="props.size === 'small'"
150
- [class.size-medium]="props.size === 'medium' || !props.size"
151
- [class.size-large]="props.size === 'large'"
152
- [class.bg-solid]="props.background === 'solid' || !props.background"
153
- [class.bg-gradient]="props.background === 'gradient'"
154
- [class.bg-transparent]="props.background === 'transparent'"
155
- [class.animating]="isAnimating"
156
- [class.revealed]="isRevealed"
157
- [class.animation-fade]="props.animation === 'fade'"
158
- [class.animation-zoom]="props.animation === 'zoom'"
159
- [class.animation-slide]="props.animation === 'slide'"
160
- [class.animation-spotlight]="props.animation === 'spotlight'"
161
- [style.--winner-color]="getColor()"
162
- [style.--animation-duration]="(props.animationDuration || 800) + 'ms'"
163
- >
164
- <!-- Confetti overlay -->
165
- @if (props.showConfetti && (props.mode === 'celebration' || props.mode === 'full')) {
166
- <div class="confetti-container" [class.active]="showConfetti">
167
- @for (i of confettiPieces; track i) {
168
- <div
169
- class="confetti-piece"
170
- [style.--delay]="i * 0.1 + 's'"
171
- [style.--x]="getRandomX(i)"
172
- [style.--rotation]="getRandomRotation(i)"
173
- ></div>
174
- }
175
- </div>
176
- }
177
-
178
- <!-- Trophy icon -->
179
- @if (props.showTrophy !== false) {
180
- <div class="trophy-container">
181
- <ion-icon name="trophy-outline" class="trophy-icon"></ion-icon>
182
- </div>
183
- }
184
-
185
- <!-- Winner label -->
186
- <div class="winner-label">{{ getWinnerLabel() }}</div>
187
-
188
- <!-- Winner info -->
189
- <div class="winner-info">
190
- <!-- Avatar -->
191
- @if (props.winner.avatar && (props.mode === 'full' || props.mode === 'celebration')) {
192
- <val-avatar [props]="props.winner.avatar" class="winner-avatar"></val-avatar>
193
- }
194
-
195
- <!-- Name -->
196
- <h2 class="winner-name">{{ props.winner.name }}</h2>
197
-
198
- <!-- Location -->
199
- @if (props.showLocation !== false && props.winner.location) {
200
- <div class="winner-location">
201
- <ion-icon name="location-outline"></ion-icon>
202
- <span>{{ props.winner.location }}</span>
203
- </div>
204
- }
205
-
206
- <!-- Ticket number -->
207
- @if (props.showTicketNumber !== false) {
208
- <div class="ticket-info">
209
- <ion-icon name="ticket-outline"></ion-icon>
210
- <span class="ticket-label">{{ getTicketLabel() }}</span>
211
- <span class="ticket-number">{{ formatTicketNumber() }}</span>
212
- </div>
213
- }
214
- </div>
215
-
216
- <!-- Prize info -->
217
- @if (props.showPrize !== false && props.winner.prize) {
218
- <div class="prize-info">
219
- @if (props.winner.prizeImage && (props.mode === 'full' || props.mode === 'celebration')) {
220
- <div class="prize-image">
221
- <img [src]="props.winner.prizeImage" [alt]="props.winner.prize" />
222
- </div>
223
- }
224
-
225
- <div class="prize-details">
226
- <div class="prize-header">
227
- <ion-icon name="gift-outline"></ion-icon>
228
- <span class="prize-label">{{ getPrizeLabel() }}</span>
229
- </div>
230
- <h3 class="prize-name">{{ props.winner.prize }}</h3>
231
-
232
- @if (props.winner.prizeDescription) {
233
- <p class="prize-description">{{ props.winner.prizeDescription }}</p>
234
- }
235
-
236
- @if (props.showPrizeValue !== false && props.winner.prizeValue) {
237
- <div class="prize-value">
238
- {{ formatPrizeValue() }}
239
- </div>
240
- }
241
- </div>
242
- </div>
243
- }
244
- </div>
245
- `, isInline: true, styles: [":host{display:block}.winner-display-container{--winner-color: var(--ion-color-warning);--animation-duration: .8s;position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;padding:32px 24px;border-radius:16px;overflow:hidden}.bg-solid{background:var(--ion-color-light);border:2px solid var(--winner-color)}.bg-gradient{background:linear-gradient(135deg,var(--ion-color-light) 0%,rgba(var(--ion-color-warning-rgb),.1) 100%);border:2px solid var(--winner-color)}.bg-transparent{background:transparent}.trophy-container{margin-bottom:16px}.trophy-icon{font-size:56px;color:var(--winner-color);filter:drop-shadow(0 4px 8px rgba(0,0,0,.1))}.winner-label{font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--winner-color);margin-bottom:8px}.winner-info{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:16px}.winner-avatar{margin-bottom:8px}.winner-name{font-size:28px;font-weight:700;color:var(--ion-color-dark);margin:0;line-height:1.2}.winner-location{display:flex;align-items:center;gap:4px;font-size:14px;color:var(--ion-color-medium-shade)}.winner-location ion-icon{font-size:16px}.ticket-info{display:flex;align-items:center;gap:8px;padding:8px 16px;background:rgba(var(--ion-color-dark-rgb),.05);border-radius:24px;margin-top:8px}.ticket-info ion-icon{font-size:20px;color:var(--winner-color)}.ticket-label{font-size:14px;color:var(--ion-color-medium-shade)}.ticket-number{font-size:18px;font-weight:700;color:var(--ion-color-dark);font-variant-numeric:tabular-nums}.prize-info{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px;background:var(--ion-color-light-shade);border-radius:12px;width:100%;max-width:400px}.prize-image{width:120px;height:120px;border-radius:8px;overflow:hidden;background:#fff;box-shadow:0 4px 12px #0000001a}.prize-image img{width:100%;height:100%;object-fit:cover}.prize-details{display:flex;flex-direction:column;align-items:center;gap:4px}.prize-header{display:flex;align-items:center;gap:4px;color:var(--ion-color-medium-shade);font-size:12px}.prize-header ion-icon{font-size:16px;color:var(--winner-color)}.prize-label{text-transform:uppercase;letter-spacing:1px}.prize-name{font-size:20px;font-weight:600;color:var(--ion-color-dark);margin:0}.prize-description{font-size:14px;color:var(--ion-color-medium-shade);margin:4px 0 0}.prize-value{font-size:24px;font-weight:700;color:var(--winner-color);margin-top:8px}.confetti-container{position:absolute;inset:0;pointer-events:none;overflow:hidden;opacity:0;transition:opacity .3s}.confetti-container.active{opacity:1}.confetti-piece{position:absolute;width:10px;height:10px;top:-20px;left:var(--x, 50%);background:var(--winner-color);opacity:0;animation:confetti-fall 3s ease-out var(--delay, 0s) forwards}.confetti-piece:nth-child(2n){background:var(--ion-color-primary);width:8px;height:12px}.confetti-piece:nth-child(3n){background:var(--ion-color-danger);border-radius:50%}.confetti-piece:nth-child(5n){background:var(--ion-color-success);width:6px;height:14px}@keyframes confetti-fall{0%{opacity:1;transform:translateY(0) rotate(0)}to{opacity:0;transform:translateY(400px) rotate(var(--rotation, 720deg))}}.animation-fade:not(.revealed) .winner-info,.animation-fade:not(.revealed) .prize-info{opacity:0}.animation-fade.animating .winner-info,.animation-fade.animating .prize-info{animation:fade-in var(--animation-duration) ease-out forwards}.animation-zoom:not(.revealed) .winner-info,.animation-zoom:not(.revealed) .prize-info{opacity:0;transform:scale(.5)}.animation-zoom.animating .winner-info,.animation-zoom.animating .prize-info{animation:zoom-in var(--animation-duration) cubic-bezier(.34,1.56,.64,1) forwards}.animation-slide:not(.revealed) .winner-info,.animation-slide:not(.revealed) .prize-info{opacity:0;transform:translateY(40px)}.animation-slide.animating .winner-info,.animation-slide.animating .prize-info{animation:slide-up var(--animation-duration) ease-out forwards}.animation-slide.animating .prize-info{animation-delay:.2s}.animation-spotlight:not(.revealed) .winner-info,.animation-spotlight:not(.revealed) .prize-info{opacity:0}.animation-spotlight:not(.revealed):before{content:\"\";position:absolute;top:50%;left:50%;width:0;height:0;background:radial-gradient(circle,rgba(255,255,255,.8) 0%,transparent 70%);border-radius:50%;transform:translate(-50%,-50%)}.animation-spotlight.animating:before{animation:spotlight var(--animation-duration) ease-out forwards}.animation-spotlight.animating .winner-info,.animation-spotlight.animating .prize-info{animation:fade-in calc(var(--animation-duration) * .5) ease-out calc(var(--animation-duration) * .5) forwards}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes zoom-in{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}@keyframes slide-up{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes spotlight{0%{width:0;height:0}to{width:200%;height:200%}}.size-small{padding:20px 16px}.size-small .trophy-icon{font-size:40px}.size-small .winner-label{font-size:12px}.size-small .winner-name{font-size:20px}.size-small .ticket-number,.size-small .prize-name{font-size:16px}.size-small .prize-value{font-size:18px}.size-large{padding:48px 32px}.size-large .trophy-icon{font-size:80px}.size-large .winner-label{font-size:18px;letter-spacing:3px}.size-large .winner-name{font-size:40px}.size-large .ticket-number{font-size:24px}.size-large .prize-image{width:160px;height:160px}.size-large .prize-name{font-size:28px}.size-large .prize-value{font-size:32px}.mode-compact{padding:16px}.mode-compact .trophy-container,.mode-compact .prize-info{display:none}.mode-compact .winner-label{font-size:11px;margin-bottom:4px}.mode-compact .winner-name{font-size:18px}.mode-celebration .trophy-icon{animation:trophy-bounce 1s ease-in-out infinite}.mode-celebration.revealed .winner-name{animation:glow 2s ease-in-out infinite}@keyframes trophy-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes glow{0%,to{text-shadow:0 0 10px rgba(var(--ion-color-warning-rgb),.3)}50%{text-shadow:0 0 20px rgba(var(--ion-color-warning-rgb),.6)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: AvatarComponent, selector: "val-avatar", inputs: ["preset", "props"], outputs: ["onClick"] }] }); }
246
- }
247
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WinnerDisplayComponent, decorators: [{
248
- type: Component,
249
- args: [{ selector: 'val-winner-display', standalone: true, imports: [CommonModule, IonIcon, AvatarComponent], template: `
250
- <div
251
- class="winner-display-container"
252
- [class]="props.cssClass"
253
- [class.mode-compact]="props.mode === 'compact'"
254
- [class.mode-standard]="props.mode === 'standard' || !props.mode"
255
- [class.mode-full]="props.mode === 'full'"
256
- [class.mode-celebration]="props.mode === 'celebration'"
257
- [class.size-small]="props.size === 'small'"
258
- [class.size-medium]="props.size === 'medium' || !props.size"
259
- [class.size-large]="props.size === 'large'"
260
- [class.bg-solid]="props.background === 'solid' || !props.background"
261
- [class.bg-gradient]="props.background === 'gradient'"
262
- [class.bg-transparent]="props.background === 'transparent'"
263
- [class.animating]="isAnimating"
264
- [class.revealed]="isRevealed"
265
- [class.animation-fade]="props.animation === 'fade'"
266
- [class.animation-zoom]="props.animation === 'zoom'"
267
- [class.animation-slide]="props.animation === 'slide'"
268
- [class.animation-spotlight]="props.animation === 'spotlight'"
269
- [style.--winner-color]="getColor()"
270
- [style.--animation-duration]="(props.animationDuration || 800) + 'ms'"
271
- >
272
- <!-- Confetti overlay -->
273
- @if (props.showConfetti && (props.mode === 'celebration' || props.mode === 'full')) {
274
- <div class="confetti-container" [class.active]="showConfetti">
275
- @for (i of confettiPieces; track i) {
276
- <div
277
- class="confetti-piece"
278
- [style.--delay]="i * 0.1 + 's'"
279
- [style.--x]="getRandomX(i)"
280
- [style.--rotation]="getRandomRotation(i)"
281
- ></div>
282
- }
283
- </div>
284
- }
285
-
286
- <!-- Trophy icon -->
287
- @if (props.showTrophy !== false) {
288
- <div class="trophy-container">
289
- <ion-icon name="trophy-outline" class="trophy-icon"></ion-icon>
290
- </div>
291
- }
292
-
293
- <!-- Winner label -->
294
- <div class="winner-label">{{ getWinnerLabel() }}</div>
295
-
296
- <!-- Winner info -->
297
- <div class="winner-info">
298
- <!-- Avatar -->
299
- @if (props.winner.avatar && (props.mode === 'full' || props.mode === 'celebration')) {
300
- <val-avatar [props]="props.winner.avatar" class="winner-avatar"></val-avatar>
301
- }
302
-
303
- <!-- Name -->
304
- <h2 class="winner-name">{{ props.winner.name }}</h2>
305
-
306
- <!-- Location -->
307
- @if (props.showLocation !== false && props.winner.location) {
308
- <div class="winner-location">
309
- <ion-icon name="location-outline"></ion-icon>
310
- <span>{{ props.winner.location }}</span>
311
- </div>
312
- }
313
-
314
- <!-- Ticket number -->
315
- @if (props.showTicketNumber !== false) {
316
- <div class="ticket-info">
317
- <ion-icon name="ticket-outline"></ion-icon>
318
- <span class="ticket-label">{{ getTicketLabel() }}</span>
319
- <span class="ticket-number">{{ formatTicketNumber() }}</span>
320
- </div>
321
- }
322
- </div>
323
-
324
- <!-- Prize info -->
325
- @if (props.showPrize !== false && props.winner.prize) {
326
- <div class="prize-info">
327
- @if (props.winner.prizeImage && (props.mode === 'full' || props.mode === 'celebration')) {
328
- <div class="prize-image">
329
- <img [src]="props.winner.prizeImage" [alt]="props.winner.prize" />
330
- </div>
331
- }
332
-
333
- <div class="prize-details">
334
- <div class="prize-header">
335
- <ion-icon name="gift-outline"></ion-icon>
336
- <span class="prize-label">{{ getPrizeLabel() }}</span>
337
- </div>
338
- <h3 class="prize-name">{{ props.winner.prize }}</h3>
339
-
340
- @if (props.winner.prizeDescription) {
341
- <p class="prize-description">{{ props.winner.prizeDescription }}</p>
342
- }
343
-
344
- @if (props.showPrizeValue !== false && props.winner.prizeValue) {
345
- <div class="prize-value">
346
- {{ formatPrizeValue() }}
347
- </div>
348
- }
349
- </div>
350
- </div>
351
- }
352
- </div>
353
- `, styles: [":host{display:block}.winner-display-container{--winner-color: var(--ion-color-warning);--animation-duration: .8s;position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;padding:32px 24px;border-radius:16px;overflow:hidden}.bg-solid{background:var(--ion-color-light);border:2px solid var(--winner-color)}.bg-gradient{background:linear-gradient(135deg,var(--ion-color-light) 0%,rgba(var(--ion-color-warning-rgb),.1) 100%);border:2px solid var(--winner-color)}.bg-transparent{background:transparent}.trophy-container{margin-bottom:16px}.trophy-icon{font-size:56px;color:var(--winner-color);filter:drop-shadow(0 4px 8px rgba(0,0,0,.1))}.winner-label{font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:2px;color:var(--winner-color);margin-bottom:8px}.winner-info{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:16px}.winner-avatar{margin-bottom:8px}.winner-name{font-size:28px;font-weight:700;color:var(--ion-color-dark);margin:0;line-height:1.2}.winner-location{display:flex;align-items:center;gap:4px;font-size:14px;color:var(--ion-color-medium-shade)}.winner-location ion-icon{font-size:16px}.ticket-info{display:flex;align-items:center;gap:8px;padding:8px 16px;background:rgba(var(--ion-color-dark-rgb),.05);border-radius:24px;margin-top:8px}.ticket-info ion-icon{font-size:20px;color:var(--winner-color)}.ticket-label{font-size:14px;color:var(--ion-color-medium-shade)}.ticket-number{font-size:18px;font-weight:700;color:var(--ion-color-dark);font-variant-numeric:tabular-nums}.prize-info{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px;background:var(--ion-color-light-shade);border-radius:12px;width:100%;max-width:400px}.prize-image{width:120px;height:120px;border-radius:8px;overflow:hidden;background:#fff;box-shadow:0 4px 12px #0000001a}.prize-image img{width:100%;height:100%;object-fit:cover}.prize-details{display:flex;flex-direction:column;align-items:center;gap:4px}.prize-header{display:flex;align-items:center;gap:4px;color:var(--ion-color-medium-shade);font-size:12px}.prize-header ion-icon{font-size:16px;color:var(--winner-color)}.prize-label{text-transform:uppercase;letter-spacing:1px}.prize-name{font-size:20px;font-weight:600;color:var(--ion-color-dark);margin:0}.prize-description{font-size:14px;color:var(--ion-color-medium-shade);margin:4px 0 0}.prize-value{font-size:24px;font-weight:700;color:var(--winner-color);margin-top:8px}.confetti-container{position:absolute;inset:0;pointer-events:none;overflow:hidden;opacity:0;transition:opacity .3s}.confetti-container.active{opacity:1}.confetti-piece{position:absolute;width:10px;height:10px;top:-20px;left:var(--x, 50%);background:var(--winner-color);opacity:0;animation:confetti-fall 3s ease-out var(--delay, 0s) forwards}.confetti-piece:nth-child(2n){background:var(--ion-color-primary);width:8px;height:12px}.confetti-piece:nth-child(3n){background:var(--ion-color-danger);border-radius:50%}.confetti-piece:nth-child(5n){background:var(--ion-color-success);width:6px;height:14px}@keyframes confetti-fall{0%{opacity:1;transform:translateY(0) rotate(0)}to{opacity:0;transform:translateY(400px) rotate(var(--rotation, 720deg))}}.animation-fade:not(.revealed) .winner-info,.animation-fade:not(.revealed) .prize-info{opacity:0}.animation-fade.animating .winner-info,.animation-fade.animating .prize-info{animation:fade-in var(--animation-duration) ease-out forwards}.animation-zoom:not(.revealed) .winner-info,.animation-zoom:not(.revealed) .prize-info{opacity:0;transform:scale(.5)}.animation-zoom.animating .winner-info,.animation-zoom.animating .prize-info{animation:zoom-in var(--animation-duration) cubic-bezier(.34,1.56,.64,1) forwards}.animation-slide:not(.revealed) .winner-info,.animation-slide:not(.revealed) .prize-info{opacity:0;transform:translateY(40px)}.animation-slide.animating .winner-info,.animation-slide.animating .prize-info{animation:slide-up var(--animation-duration) ease-out forwards}.animation-slide.animating .prize-info{animation-delay:.2s}.animation-spotlight:not(.revealed) .winner-info,.animation-spotlight:not(.revealed) .prize-info{opacity:0}.animation-spotlight:not(.revealed):before{content:\"\";position:absolute;top:50%;left:50%;width:0;height:0;background:radial-gradient(circle,rgba(255,255,255,.8) 0%,transparent 70%);border-radius:50%;transform:translate(-50%,-50%)}.animation-spotlight.animating:before{animation:spotlight var(--animation-duration) ease-out forwards}.animation-spotlight.animating .winner-info,.animation-spotlight.animating .prize-info{animation:fade-in calc(var(--animation-duration) * .5) ease-out calc(var(--animation-duration) * .5) forwards}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes zoom-in{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}@keyframes slide-up{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes spotlight{0%{width:0;height:0}to{width:200%;height:200%}}.size-small{padding:20px 16px}.size-small .trophy-icon{font-size:40px}.size-small .winner-label{font-size:12px}.size-small .winner-name{font-size:20px}.size-small .ticket-number,.size-small .prize-name{font-size:16px}.size-small .prize-value{font-size:18px}.size-large{padding:48px 32px}.size-large .trophy-icon{font-size:80px}.size-large .winner-label{font-size:18px;letter-spacing:3px}.size-large .winner-name{font-size:40px}.size-large .ticket-number{font-size:24px}.size-large .prize-image{width:160px;height:160px}.size-large .prize-name{font-size:28px}.size-large .prize-value{font-size:32px}.mode-compact{padding:16px}.mode-compact .trophy-container,.mode-compact .prize-info{display:none}.mode-compact .winner-label{font-size:11px;margin-bottom:4px}.mode-compact .winner-name{font-size:18px}.mode-celebration .trophy-icon{animation:trophy-bounce 1s ease-in-out infinite}.mode-celebration.revealed .winner-name{animation:glow 2s ease-in-out infinite}@keyframes trophy-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes glow{0%,to{text-shadow:0 0 10px rgba(var(--ion-color-warning-rgb),.3)}50%{text-shadow:0 0 20px rgba(var(--ion-color-warning-rgb),.6)}}\n"] }]
354
- }], propDecorators: { props: [{
355
- type: Input
356
- }], animationComplete: [{
357
- type: Output
358
- }] } });
359
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lubmVyLWRpc3BsYXkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy93aW5uZXItZGlzcGxheS93aW5uZXItZGlzcGxheS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR1osTUFBTSxFQUNOLFVBQVUsR0FFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFHTCxxQkFBcUIsR0FDdEIsTUFBTSxTQUFTLENBQUM7O0FBRWpCLFFBQVEsQ0FBQyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7QUFpSHpFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQXJKbkM7UUF3Slksc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQStCLENBQUM7UUFFOUUsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixtQkFBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxF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ZSxDQUFDLFlBQ3ZDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdHVDs4QkEwQ1EsS0FBSztzQkFBYixLQUFLO2dCQUVJLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIGluamVjdCxcbiAgRWxlbWVudFJlZixcbiAgQWZ0ZXJWaWV3SW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IHRyb3BoeU91dGxpbmUsIHRpY2tldE91dGxpbmUsIGdpZnRPdXRsaW5lLCBsb2NhdGlvbk91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBBdmF0YXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBXaW5uZXJEaXNwbGF5TWV0YWRhdGEsXG4gIFdpbm5lckRpc3BsYXlBbmltYXRpb25FdmVudCxcbiAgREVGQVVMVF9XSU5ORVJfTEFCRUxTLFxufSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoeyB0cm9waHlPdXRsaW5lLCB0aWNrZXRPdXRsaW5lLCBnaWZ0T3V0bGluZSwgbG9jYXRpb25PdXRsaW5lIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtd2lubmVyLWRpc3BsYXknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uLCBBdmF0YXJDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwid2lubmVyLWRpc3BsYXktY29udGFpbmVyXCJcbiAgICAgIFtjbGFzc109XCJwcm9wcy5jc3NDbGFzc1wiXG4gICAgICBbY2xhc3MubW9kZS1jb21wYWN0XT1cInByb3BzLm1vZGUgPT09ICdjb21wYWN0J1wiXG4gICAgICBbY2xhc3MubW9kZS1zdGFuZGFyZF09XCJwcm9wcy5tb2RlID09PSAnc3RhbmRhcmQnIHx8ICFwcm9wcy5tb2RlXCJcbiAgICAgIFtjbGFzcy5tb2RlLWZ1bGxdPVwicHJvcHMubW9kZSA9PT0gJ2Z1bGwnXCJcbiAgICAgIFtjbGFzcy5tb2RlLWNlbGVicmF0aW9uXT1cInByb3BzLm1vZGUgPT09ICdjZWxlYnJhdGlvbidcIlxuICAgICAgW2NsYXNzLnNpemUtc21hbGxdPVwicHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gICAgICBbY2xhc3Muc2l6ZS1tZWRpdW1dPVwicHJvcHMuc2l6ZSA9PT0gJ21lZGl1bScgfHwgIXByb3BzLnNpemVcIlxuICAgICAgW2NsYXNzLnNpemUtbGFyZ2VdPVwicHJvcHMuc2l6ZSA9PT0gJ2xhcmdlJ1wiXG4gICAgICBbY2xhc3MuYmctc29saWRdPVwicHJvcHMuYmFja2dyb3VuZCA9PT0gJ3NvbGlkJyB8fCAhcHJvcHMuYmFja2dyb3VuZFwiXG4gICAgICBbY2xhc3MuYmctZ3JhZGllbnRdPVwicHJvcHMuYmFja2dyb3VuZCA9PT0gJ2dyYWRpZW50J1wiXG4gICAgICBbY2xhc3MuYmctdHJhbnNwYXJlbnRdPVwicHJvcHMuYmFja2dyb3VuZCA9PT0gJ3RyYW5zcGFyZW50J1wiXG4gICAgICBbY2xhc3MuYW5pbWF0aW5nXT1cImlzQW5pbWF0aW5nXCJcbiAgICAgIFtjbGFzcy5yZXZlYWxlZF09XCJpc1JldmVhbGVkXCJcbiAgICAgIFtjbGFzcy5hbmltYXRpb24tZmFkZV09XCJwcm9wcy5hbmltYXRpb24gPT09ICdmYWRlJ1wiXG4gICAgICBbY2xhc3MuYW5pbWF0aW9uLXpvb21dPVwicHJvcHMuYW5pbWF0aW9uID09PSAnem9vbSdcIlxuICAgICAgW2NsYXNzLmFuaW1hdGlvbi1zbGlkZV09XCJwcm9wcy5hbmltYXRpb24gPT09ICdzbGlkZSdcIlxuICAgICAgW2NsYXNzLmFuaW1hdGlvbi1zcG90bGlnaHRdPVwicHJvcHMuYW5pbWF0aW9uID09PSAnc3BvdGxpZ2h0J1wiXG4gICAgICBbc3R5bGUuLS13aW5uZXItY29sb3JdPVwiZ2V0Q29sb3IoKVwiXG4gICAgICBbc3R5bGUuLS1hbmltYXRpb24tZHVyYXRpb25dPVwiKHByb3BzLmFuaW1hdGlvbkR1cmF0aW9uIHx8IDgwMCkgKyAnbXMnXCJcbiAgICA+XG4gICAgICA8IS0tIENvbmZldHRpIG92ZXJsYXkgLS0+XG4gICAgICBAaWYgKHByb3BzLnNob3dDb25mZXR0aSAmJiAocHJvcHMubW9kZSA9PT0gJ2NlbGVicmF0aW9uJyB8fCBwcm9wcy5tb2RlID09PSAnZnVsbCcpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb25mZXR0aS1jb250YWluZXJcIiBbY2xhc3MuYWN0aXZlXT1cInNob3dDb25mZXR0aVwiPlxuICAgICAgICAgIEBmb3IgKGkgb2YgY29uZmV0dGlQaWVjZXM7IHRyYWNrIGkpIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb25mZXR0aS1waWVjZVwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLWRlbGF5XT1cImkgKiAwLjEgKyAncydcIlxuICAgICAgICAgICAgICBbc3R5bGUuLS14XT1cImdldFJhbmRvbVgoaSlcIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1yb3RhdGlvbl09XCJnZXRSYW5kb21Sb3RhdGlvbihpKVwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBUcm9waHkgaWNvbiAtLT5cbiAgICAgIEBpZiAocHJvcHMuc2hvd1Ryb3BoeSAhPT0gZmFsc2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInRyb3BoeS1jb250YWluZXJcIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRyb3BoeS1vdXRsaW5lXCIgY2xhc3M9XCJ0cm9waHktaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8IS0tIFdpbm5lciBsYWJlbCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3aW5uZXItbGFiZWxcIj57eyBnZXRXaW5uZXJMYWJlbCgpIH19PC9kaXY+XG5cbiAgICAgIDwhLS0gV2lubmVyIGluZm8gLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwid2lubmVyLWluZm9cIj5cbiAgICAgICAgPCEtLSBBdmF0YXIgLS0+XG4gICAgICAgIEBpZiAocHJvcHMud2lubmVyLmF2YXRhciAmJiAocHJvcHMubW9kZSA9PT0gJ2Z1bGwnIHx8IHByb3BzLm1vZGUgPT09ICdjZWxlYnJhdGlvbicpKSB7XG4gICAgICAgICAgPHZhbC1hdmF0YXIgW3Byb3BzXT1cInByb3BzLndpbm5lci5hdmF0YXJcIiBjbGFzcz1cIndpbm5lci1hdmF0YXJcIj48L3ZhbC1hdmF0YXI+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIE5hbWUgLS0+XG4gICAgICAgIDxoMiBjbGFzcz1cIndpbm5lci1uYW1lXCI+e3sgcHJvcHMud2lubmVyLm5hbWUgfX08L2gyPlxuXG4gICAgICAgIDwhLS0gTG9jYXRpb24gLS0+XG4gICAgICAgIEBpZiAocHJvcHMuc2hvd0xvY2F0aW9uICE9PSBmYWxzZSAmJiBwcm9wcy53aW5uZXIubG9jYXRpb24pIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2lubmVyLWxvY2F0aW9uXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImxvY2F0aW9uLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPHNwYW4+e3sgcHJvcHMud2lubmVyLmxvY2F0aW9uIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBUaWNrZXQgbnVtYmVyIC0tPlxuICAgICAgICBAaWYgKHByb3BzLnNob3dUaWNrZXROdW1iZXIgIT09IGZhbHNlKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpY2tldC1pbmZvXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInRpY2tldC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGlja2V0LWxhYmVsXCI+e3sgZ2V0VGlja2V0TGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGlja2V0LW51bWJlclwiPnt7IGZvcm1hdFRpY2tldE51bWJlcigpIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBQcml6ZSBpbmZvIC0tPlxuICAgICAgQGlmIChwcm9wcy5zaG93UHJpemUgIT09IGZhbHNlICYmIHByb3BzLndpbm5lci5wcml6ZSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicHJpemUtaW5mb1wiPlxuICAgICAgICAgIEBpZiAocHJvcHMud2lubmVyLnByaXplSW1hZ2UgJiYgKHByb3BzLm1vZGUgPT09ICdmdWxsJyB8fCBwcm9wcy5tb2RlID09PSAnY2VsZWJyYXRpb24nKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaXplLWltYWdlXCI+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJwcm9wcy53aW5uZXIucHJpemVJbWFnZVwiIFthbHRdPVwicHJvcHMud2lubmVyLnByaXplXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcml6ZS1kZXRhaWxzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpemUtaGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZ2lmdC1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcml6ZS1sYWJlbFwiPnt7IGdldFByaXplTGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwicHJpemUtbmFtZVwiPnt7IHByb3BzLndpbm5lci5wcml6ZSB9fTwvaDM+XG5cbiAgICAgICAgICAgIEBpZiAocHJvcHMud2lubmVyLnByaXplRGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwcml6ZS1kZXNjcmlwdGlvblwiPnt7IHByb3BzLndpbm5lci5wcml6ZURlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKHByb3BzLnNob3dQcml6ZVZhbHVlICE9PSBmYWxzZSAmJiBwcm9wcy53aW5uZXIucHJpemVWYWx1ZSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpemUtdmFsdWVcIj5cbiAgICAgICAgICAgICAgICB7eyBmb3JtYXRQcml6ZVZhbHVlKCkgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi93aW5uZXItZGlzcGxheS5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLXdpbm5lci1kaXNwbGF5XG4gKlxuICogQSBjb21wb25lbnQgZm9yIGRpc3BsYXlpbmcgcmFmZmxlIHdpbm5lcnMgd2l0aCBjZWxlYnJhdGlvbiBhbmltYXRpb25zLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGBodG1sXG4gKiA8dmFsLXdpbm5lci1kaXNwbGF5XG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgd2lubmVyOiB7XG4gKiAgICAgICBuYW1lOiAnSnVhbiBQw6lyZXonLFxuICogICAgICAgdGlja2V0TnVtYmVyOiA0MlxuICogICAgIH1cbiAqICAgfVwiXG4gKiA+PC92YWwtd2lubmVyLWRpc3BsYXk+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBGdWxsIGNlbGVicmF0aW9uIG1vZGVcbiAqIGBgYGh0bWxcbiAqIDx2YWwtd2lubmVyLWRpc3BsYXlcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB3aW5uZXI6IHtcbiAqICAgICAgIG5hbWU6ICdNYXLDrWEgR2FyY8OtYScsXG4gKiAgICAgICB0aWNrZXROdW1iZXI6IDE1NixcbiAqICAgICAgIHByaXplOiAnaVBob25lIDE1IFBybycsXG4gKiAgICAgICBwcml6ZVZhbHVlOiAyNTAwMCxcbiAqICAgICAgIGxvY2F0aW9uOiAnQ0RNWCwgTcOpeGljbycsXG4gKiAgICAgICBhdmF0YXI6IHsgaW1hZ2U6ICdhdmF0YXIuanBnJyB9XG4gKiAgICAgfSxcbiAqICAgICBtb2RlOiAnY2VsZWJyYXRpb24nLFxuICogICAgIHNob3dDb25mZXR0aTogdHJ1ZSxcbiAqICAgICBhbmltYXRpb246ICd6b29tJyxcbiAqICAgICBjb2xvcjogJ3dhcm5pbmcnXG4gKiAgIH1cIlxuICogICAoYW5pbWF0aW9uQ29tcGxldGUpPVwib25SZXZlYWwoJGV2ZW50KVwiXG4gKiA+PC92YWwtd2lubmVyLWRpc3BsYXk+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFdpbm5lckRpc3BsYXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHByb3BzOiBXaW5uZXJEaXNwbGF5TWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpIGFuaW1hdGlvbkNvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxXaW5uZXJEaXNwbGF5QW5pbWF0aW9uRXZlbnQ+KCk7XG5cbiAgaXNBbmltYXRpbmcgPSBmYWxzZTtcbiAgaXNSZXZlYWxlZCA9IGZhbHNlO1xuICBzaG93Q29uZmV0dGkgPSBmYWxzZTtcbiAgY29uZmV0dGlQaWVjZXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiA1MCB9LCAoXywgaSkgPT4gaSk7XG5cbiAgcHJpdmF0ZSByZXZlYWxUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGFuaW1hdGlvblRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy5hdXRvUGxheSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuc3RhcnRSZXZlYWwoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gQWRkaXRpb25hbCBzZXR1cCBpZiBuZWVkZWRcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJldmVhbFRpbWVvdXQpIGNsZWFyVGltZW91dCh0aGlzLnJldmVhbFRpbWVvdXQpO1xuICAgIGlmICh0aGlzLmFuaW1hdGlvblRpbWVvdXQpIGNsZWFyVGltZW91dCh0aGlzLmFuaW1hdGlvblRpbWVvdXQpO1xuICB9XG5cbiAgc3RhcnRSZXZlYWwoKTogdm9pZCB7XG4gICAgY29uc3QgZGVsYXkgPSB0aGlzLnByb3BzLnJldmVhbERlbGF5IHx8IDA7XG5cbiAgICB0aGlzLnJldmVhbFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaXNBbmltYXRpbmcgPSB0cnVlO1xuXG4gICAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9IHRoaXMucHJvcHMuYW5pbWF0aW9uRHVyYXRpb24gfHwgODAwO1xuXG4gICAgICB0aGlzLmFuaW1hdGlvblRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5pc0FuaW1hdGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzUmV2ZWFsZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNob3dDb25mZXR0aSkge1xuICAgICAgICAgIHRoaXMuc2hvd0NvbmZldHRpID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYW5pbWF0aW9uQ29tcGxldGUuZW1pdCh7XG4gICAgICAgICAgYW5pbWF0aW9uOiB0aGlzLnByb3BzLmFuaW1hdGlvbiB8fCAnZmFkZScsXG4gICAgICAgICAgd2lubmVyOiB0aGlzLnByb3BzLndpbm5lcixcbiAgICAgICAgfSk7XG4gICAgICB9LCBhbmltYXRpb25EdXJhdGlvbik7XG4gICAgfSwgZGVsYXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IHRyaWdnZXIgdGhlIHJldmVhbCBhbmltYXRpb24uXG4gICAqL1xuICByZXZlYWwoKTogdm9pZCB7XG4gICAgdGhpcy5pc1JldmVhbGVkID0gZmFsc2U7XG4gICAgdGhpcy5zaG93Q29uZmV0dGkgPSBmYWxzZTtcbiAgICB0aGlzLnN0YXJ0UmV2ZWFsKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQgdG8gaW5pdGlhbCBzdGF0ZS5cbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNBbmltYXRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmlzUmV2ZWFsZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dDb25mZXR0aSA9IGZhbHNlO1xuICB9XG5cbiAgZm9ybWF0VGlja2V0TnVtYmVyKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbnVtID0gdGhpcy5wcm9wcy53aW5uZXIudGlja2V0TnVtYmVyO1xuICAgIGlmICh0aGlzLnByb3BzLm51bWJlclBhZGRpbmcpIHtcbiAgICAgIHJldHVybiBTdHJpbmcobnVtKS5wYWRTdGFydCh0aGlzLnByb3BzLm51bWJlclBhZGRpbmcsICcwJyk7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcobnVtKTtcbiAgfVxuXG4gIGZvcm1hdFByaXplVmFsdWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMucHJvcHMud2lubmVyLnByaXplVmFsdWUpIHJldHVybiAnJztcbiAgICByZXR1cm4gYCQke3RoaXMucHJvcHMud2lubmVyLnByaXplVmFsdWUudG9Mb2NhbGVTdHJpbmcoJ2VzLU1YJyl9YDtcbiAgfVxuXG4gIGdldFJhbmRvbVgoaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAkeyhpbmRleCAqIDE3KSAlIDEwMH0lYDtcbiAgfVxuXG4gIGdldFJhbmRvbVJvdGF0aW9uKGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHsoaW5kZXggKiAzNykgJSAzNjB9ZGVnYDtcbiAgfVxuXG4gIGdldFdpbm5lckxhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMud2lubmVyTGFiZWwgfHwgREVGQVVMVF9XSU5ORVJfTEFCRUxTLndpbm5lcjtcbiAgfVxuXG4gIGdldFRpY2tldExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMudGlja2V0TGFiZWwgfHwgREVGQVVMVF9XSU5ORVJfTEFCRUxTLnRpY2tldDtcbiAgfVxuXG4gIGdldFByaXplTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5wcml6ZUxhYmVsIHx8IERFRkFVTFRfV0lOTkVSX0xBQkVMUy5wcml6ZTtcbiAgfVxuXG4gIGdldENvbG9yKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvcHMuY29sb3IpIHtcbiAgICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7dGhpcy5wcm9wcy5jb2xvcn0pYDtcbiAgICB9XG4gICAgcmV0dXJuICd2YXIoLS1pb24tY29sb3Itd2FybmluZyknO1xuICB9XG59XG4iXX0=
@@ -1,19 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class LayoutComponent {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LayoutComponent, isStandalone: true, selector: "val-layout", ngImport: i0, template: `
6
- <div class="layout-container">
7
- <ng-content></ng-content>
8
- </div>
9
- `, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.layout-container{margin:0 auto;padding:0;width:100%;box-sizing:border-box;margin-bottom:1rem;padding-top:.5rem}@media (max-width: 768px){.layout-container{max-width:100%}}@media (min-width: 768px){.layout-container{margin:0 auto;max-width:33.75rem;margin-bottom:1.5rem}}@media (min-width: 1200px){.layout-container{margin:0 auto;max-width:45rem}}\n"] }); }
10
- }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LayoutComponent, decorators: [{
12
- type: Component,
13
- args: [{ selector: 'val-layout', standalone: true, imports: [], template: `
14
- <div class="layout-container">
15
- <ng-content></ng-content>
16
- </div>
17
- `, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.layout-container{margin:0 auto;padding:0;width:100%;box-sizing:border-box;margin-bottom:1rem;padding-top:.5rem}@media (max-width: 768px){.layout-container{max-width:100%}}@media (min-width: 768px){.layout-container{margin:0 auto;max-width:33.75rem;margin-bottom:1.5rem}}@media (min-width: 1200px){.layout-container{margin:0 auto;max-width:45rem}}\n"] }]
18
- }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvbGF5b3V0L2xheW91dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFhMUMsTUFBTSxPQUFPLGVBQWU7K0dBQWYsZUFBZTttR0FBZixlQUFlLHNFQVBoQjs7OztHQUlUOzs0RkFHVSxlQUFlO2tCQVgzQixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLFdBQ1AsRUFBRSxZQUNEOzs7O0dBSVQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWxheW91dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtY29udGFpbmVyXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsOiAnLi9sYXlvdXQuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBMYXlvdXRDb21wb25lbnQge31cbiJdfQ==
@@ -1,34 +0,0 @@
1
- import { EventEmitter } from '@angular/core';
2
- import { ParticipantCardMetadata, ParticipantCardClickEvent, ParticipantCardActionEvent, ParticipantTicket } from './types';
3
- import * as i0 from "@angular/core";
4
- export declare class ParticipantCardComponent {
5
- props: ParticipantCardMetadata;
6
- cardClick: EventEmitter<ParticipantCardClickEvent>;
7
- actionClick: EventEmitter<ParticipantCardActionEvent>;
8
- private i18n;
9
- showAllTickets: boolean;
10
- /** Get winner badge text */
11
- getWinnerText(): string;
12
- /** Get tickets count text */
13
- getTicketsCountText(count: number): string;
14
- /** Get more tickets text */
15
- getMoreText(count: number): string;
16
- /** Get notes label */
17
- getNotesLabel(): string;
18
- get ticketNumbers(): (number | ParticipantTicket)[];
19
- get visibleTickets(): (number | ParticipantTicket)[];
20
- get hiddenTicketsCount(): number;
21
- formatTicketNumber(ticket: number | ParticipantTicket): string;
22
- getTicketColor(ticket: number | ParticipantTicket): string;
23
- isWinnerTicket(ticket: number | ParticipantTicket): boolean;
24
- getPaymentStatusLabel(): string;
25
- getPaymentStatusColor(): string;
26
- getPaymentStatusIcon(): string;
27
- formatCurrency(amount: number): string;
28
- formatDate(date: Date | string): string;
29
- toggleShowAllTickets(event: Event): void;
30
- onCardClick(): void;
31
- onActionsClick(event: Event): void;
32
- static ɵfac: i0.ɵɵFactoryDeclaration<ParticipantCardComponent, never>;
33
- static ɵcmp: i0.ɵɵComponentDeclaration<ParticipantCardComponent, "val-participant-card", never, { "props": { "alias": "props"; "required": false; }; }, { "cardClick": "cardClick"; "actionClick": "actionClick"; }, never, never, true, never>;
34
- }
@@ -1,132 +0,0 @@
1
- import { Color } from '@ionic/core';
2
- import { AvatarMetadata } from '../../atoms/avatar/types';
3
- /**
4
- * Participant payment status.
5
- */
6
- export type ParticipantPaymentStatus = 'pending' | 'processing' | 'paid' | 'refunded' | 'failed';
7
- /**
8
- * Ticket info for participant.
9
- */
10
- export interface ParticipantTicket {
11
- /** Ticket number */
12
- number: number;
13
- /** Ticket status */
14
- status: 'active' | 'reserved' | 'cancelled' | 'winner';
15
- }
16
- /**
17
- * Participant information.
18
- */
19
- export interface ParticipantInfo {
20
- /** Participant ID */
21
- id: string | number;
22
- /** Participant name */
23
- name: string;
24
- /** Participant email */
25
- email?: string;
26
- /** Participant phone */
27
- phone?: string;
28
- /** Avatar */
29
- avatar?: AvatarMetadata;
30
- /** Location */
31
- location?: string;
32
- /** Registration date */
33
- registrationDate?: Date | string;
34
- /** Tickets purchased */
35
- tickets: ParticipantTicket[] | number[];
36
- /** Payment status */
37
- paymentStatus?: ParticipantPaymentStatus;
38
- /** Total amount paid */
39
- amountPaid?: number;
40
- /** Notes */
41
- notes?: string;
42
- /** Is winner */
43
- isWinner?: boolean;
44
- /** Custom data */
45
- customData?: Record<string, any>;
46
- }
47
- /**
48
- * Metadata for the participant card component.
49
- */
50
- export interface ParticipantCardMetadata {
51
- /** Participant information */
52
- participant: ParticipantInfo;
53
- /** Card variant */
54
- variant?: 'default' | 'compact' | 'detailed' | 'admin';
55
- /** Size */
56
- size?: 'small' | 'medium' | 'large';
57
- /** Show avatar */
58
- showAvatar?: boolean;
59
- /** Show email */
60
- showEmail?: boolean;
61
- /** Show phone */
62
- showPhone?: boolean;
63
- /** Show tickets */
64
- showTickets?: boolean;
65
- /** Max tickets to show before collapsing */
66
- maxTicketsVisible?: number;
67
- /** Show payment status */
68
- showPaymentStatus?: boolean;
69
- /** Show amount */
70
- showAmount?: boolean;
71
- /** Show date */
72
- showDate?: boolean;
73
- /** Number padding for tickets */
74
- numberPadding?: number;
75
- /** Currency code */
76
- currency?: string;
77
- /** Currency symbol */
78
- currencySymbol?: string;
79
- /** Custom CSS class */
80
- cssClass?: string;
81
- /** Highlight if winner */
82
- highlightWinner?: boolean;
83
- /** Clickable card */
84
- clickable?: boolean;
85
- /** Show action menu */
86
- showActions?: boolean;
87
- /** Actions menu items */
88
- actions?: ParticipantCardAction[];
89
- /** Payment status labels */
90
- paymentStatusLabels?: Partial<Record<ParticipantPaymentStatus, string>>;
91
- /** Content class */
92
- contentClass?: string;
93
- }
94
- /**
95
- * Action item for participant card.
96
- */
97
- export interface ParticipantCardAction {
98
- /** Action ID */
99
- id: string;
100
- /** Action label */
101
- label: string;
102
- /** Action icon */
103
- icon?: string;
104
- /** Action color */
105
- color?: Color;
106
- /** Is destructive action */
107
- destructive?: boolean;
108
- }
109
- /**
110
- * Event emitted when card is clicked.
111
- */
112
- export interface ParticipantCardClickEvent {
113
- /** Participant info */
114
- participant: ParticipantInfo;
115
- }
116
- /**
117
- * Event emitted when action is clicked.
118
- */
119
- export interface ParticipantCardActionEvent {
120
- /** Action ID */
121
- actionId: string;
122
- /** Participant info */
123
- participant: ParticipantInfo;
124
- }
125
- /**
126
- * Default payment status labels.
127
- */
128
- export declare const DEFAULT_PAYMENT_STATUS_LABELS: Record<ParticipantPaymentStatus, string>;
129
- /**
130
- * Default payment status colors.
131
- */
132
- export declare const DEFAULT_PAYMENT_STATUS_COLORS: Record<ParticipantPaymentStatus, Color>;
@@ -1,21 +0,0 @@
1
- import { EventEmitter } from '@angular/core';
2
- import { RaffleStatusCardMetadata } from './types';
3
- import * as i0 from "@angular/core";
4
- export declare class RaffleStatusCardComponent {
5
- props: RaffleStatusCardMetadata;
6
- primaryActionClick: EventEmitter<void>;
7
- secondaryActionClick: EventEmitter<void>;
8
- get isActiveOrUpcoming(): boolean;
9
- get progressPercentage(): number;
10
- getStatusLabel(): string;
11
- getStatusColor(): string;
12
- getProgressColor(): string;
13
- getTitle(): string;
14
- getDescription(): string;
15
- formatCurrency(amount: number): string;
16
- formatDate(date: Date | string): string;
17
- onPrimaryAction(): void;
18
- onSecondaryAction(): void;
19
- static ɵfac: i0.ɵɵFactoryDeclaration<RaffleStatusCardComponent, never>;
20
- static ɵcmp: i0.ɵɵComponentDeclaration<RaffleStatusCardComponent, "val-raffle-status-card", never, { "props": { "alias": "props"; "required": false; }; }, { "primaryActionClick": "primaryActionClick"; "secondaryActionClick": "secondaryActionClick"; }, never, never, true, never>;
21
- }