valtech-components 4.0.255 → 4.0.257

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.
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '4.0.255';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4yNTUnO1xuIl19
5
+ export const VERSION = '4.0.257';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4yNTcnO1xuIl19
@@ -57,7 +57,7 @@ import fixWebmDuration from 'fix-webm-duration';
57
57
  * Current version of valtech-components.
58
58
  * This is automatically updated during the publish process.
59
59
  */
60
- const VERSION = '4.0.255';
60
+ const VERSION = '4.0.257';
61
61
 
62
62
  // Control de estado de refresco (singleton a nivel de módulo)
63
63
  let isRefreshing = false;
@@ -9765,6 +9765,7 @@ class AuthService {
9765
9765
  const response = await firstValueFrom(this.http.post(`${this.config?.apiUrl}/v2/users/me/devices`, {
9766
9766
  token,
9767
9767
  platform,
9768
+ appId: this.config?.appId,
9768
9769
  browser,
9769
9770
  os,
9770
9771
  }));
@@ -9808,6 +9809,7 @@ class AuthService {
9808
9809
  await firstValueFrom(this.http.post(`${this.config?.apiUrl}/v2/users/me/devices`, {
9809
9810
  token,
9810
9811
  platform,
9812
+ appId: this.config?.appId,
9811
9813
  browser,
9812
9814
  os,
9813
9815
  }));
@@ -71916,6 +71918,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
71916
71918
  */
71917
71919
  const TICKET_CARD_I18N = {
71918
71920
  es: {
71921
+ cardLabel: 'Cartón de bingo',
71919
71922
  folio: 'Folio',
71920
71923
  statusSold: 'Vendida',
71921
71924
  statusCheckedIn: 'Canjeada',
@@ -71925,6 +71928,7 @@ const TICKET_CARD_I18N = {
71925
71928
  copiedUrl: 'Link copiado',
71926
71929
  },
71927
71930
  en: {
71931
+ cardLabel: 'Bingo card',
71928
71932
  folio: 'Folio',
71929
71933
  statusSold: 'Sold',
71930
71934
  statusCheckedIn: 'Checked in',
@@ -72108,7 +72112,7 @@ class TicketCardComponent {
72108
72112
  const url = URL.createObjectURL(blob);
72109
72113
  const a = document.createElement('a');
72110
72114
  a.href = url;
72111
- a.download = `entrada-${p.folio ?? 'bingo'}.png`;
72115
+ a.download = `carton-${p.folio ?? 'bingo'}.png`;
72112
72116
  document.body.appendChild(a);
72113
72117
  a.click();
72114
72118
  document.body.removeChild(a);
@@ -72131,103 +72135,127 @@ class TicketCardComponent {
72131
72135
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TicketCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
72132
72136
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: TicketCardComponent, isStandalone: true, selector: "val-ticket-card", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
72133
72137
  <div class="ticket-card">
72134
- @if (props().title) {
72135
- <div class="ticket-card__title">{{ props().title }}</div>
72136
- }
72137
-
72138
- <div class="ticket-card__qr">
72139
- @if (qr(); as q) {
72140
- <val-qr-code [props]="qrProps(q)" />
72141
- } @else if (failed()) {
72142
- <div class="ticket-card__qr-fallback">{{ tokenShort() }}</div>
72143
- } @else {
72144
- <div class="ticket-card__qr-loading">
72145
- <ion-spinner name="crescent" aria-label="Generando QR" />
72146
- </div>
72138
+ <div class="ticket-card__header">
72139
+ <div class="ticket-card__eyebrow">{{ t('cardLabel') }}</div>
72140
+ @if (props().title) {
72141
+ <div class="ticket-card__title">{{ props().title }}</div>
72147
72142
  }
72148
72143
  </div>
72149
72144
 
72150
- <div class="ticket-card__meta">
72151
- @if (folioText(); as f) {
72152
- <div class="ticket-card__folio">{{ f }}</div>
72153
- }
72154
- @if (props().buyerName) {
72155
- <div class="ticket-card__buyer">{{ props().buyerName }}</div>
72156
- }
72157
- @if (statusLabel(); as s) {
72158
- <span class="ticket-card__badge" [attr.data-status]="status()">{{ s }}</span>
72159
- }
72160
- </div>
72161
-
72162
- @if ((props().showDownload || props().showShare) && qr()) {
72163
- <div class="ticket-card__actions">
72164
- @if (props().showDownload) {
72165
- <ion-button fill="outline" expand="block" [disabled]="downloading()" (click)="downloadCard()">
72166
- <ion-icon name="download-outline" slot="start" />
72167
- {{ props().downloadLabel || t('download') }}
72168
- </ion-button>
72145
+ <div class="ticket-card__body">
72146
+ <div class="ticket-card__qr">
72147
+ @if (qr(); as q) {
72148
+ <val-qr-code [props]="qrProps(q)" />
72149
+ } @else if (failed()) {
72150
+ <div class="ticket-card__qr-fallback">{{ tokenShort() }}</div>
72151
+ } @else {
72152
+ <div class="ticket-card__qr-loading">
72153
+ <ion-spinner name="crescent" aria-label="Generando QR" />
72154
+ </div>
72169
72155
  }
72170
- @if (props().showShare) {
72171
- <ion-button fill="outline" expand="block" [disabled]="sharing()" (click)="shareCard()">
72172
- <ion-icon name="share-outline" slot="start" />
72173
- {{ props().shareLabel || t('share') }}
72174
- </ion-button>
72156
+ </div>
72157
+
72158
+ <div class="ticket-card__perf" aria-hidden="true">
72159
+ <span class="ticket-card__notch ticket-card__notch--left"></span>
72160
+ <span class="ticket-card__notch ticket-card__notch--right"></span>
72161
+ </div>
72162
+
72163
+ <div class="ticket-card__stub">
72164
+ <div class="ticket-card__meta">
72165
+ @if (folioText(); as f) {
72166
+ <div class="ticket-card__folio">{{ f }}</div>
72167
+ }
72168
+ @if (props().buyerName) {
72169
+ <div class="ticket-card__buyer">{{ props().buyerName }}</div>
72170
+ }
72171
+ @if (statusLabel(); as s) {
72172
+ <span class="ticket-card__badge" [attr.data-status]="status()">{{ s }}</span>
72173
+ }
72174
+ </div>
72175
+
72176
+ @if ((props().showDownload || props().showShare) && qr()) {
72177
+ <div class="ticket-card__actions">
72178
+ @if (props().showDownload) {
72179
+ <ion-button fill="outline" expand="block" [disabled]="downloading()" (click)="downloadCard()">
72180
+ <ion-icon name="download-outline" slot="start" />
72181
+ {{ props().downloadLabel || t('download') }}
72182
+ </ion-button>
72183
+ }
72184
+ @if (props().showShare) {
72185
+ <ion-button fill="outline" expand="block" [disabled]="sharing()" (click)="shareCard()">
72186
+ <ion-icon name="share-outline" slot="start" />
72187
+ {{ props().shareLabel || t('share') }}
72188
+ </ion-button>
72189
+ }
72190
+ </div>
72175
72191
  }
72176
72192
  </div>
72177
- }
72193
+ </div>
72178
72194
  </div>
72179
- `, isInline: true, styles: ["@charset \"UTF-8\";:host{display:block}.ticket-card{display:flex;flex-direction:column;align-items:center;gap:12px;padding:20px;border:1px solid var(--ion-color-light-shade, #e0e0e0);border-radius:16px;background:var(--ion-card-background, #ffffff);max-width:320px;margin:0 auto}.ticket-card__title{font-size:1rem;font-weight:700;color:var(--ion-color-dark);text-align:center}.ticket-card__qr{display:flex;align-items:center;justify-content:center;min-height:200px}.ticket-card__qr-loading{display:flex;align-items:center;justify-content:center;width:200px;height:200px}.ticket-card__qr-fallback{font-family:monospace;font-size:.75rem;color:var(--ion-color-medium);word-break:break-all;text-align:center;padding:16px}.ticket-card__meta{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}.ticket-card__folio{font-size:1rem;font-weight:700;color:var(--ion-color-dark)}.ticket-card__buyer{font-size:.875rem;color:var(--ion-color-medium)}.ticket-card__badge{margin-top:4px;font-size:.75rem;font-weight:600;padding:3px 12px;border-radius:999px;background:var(--ion-color-medium);color:var(--ion-color-medium-contrast, #fff);white-space:nowrap}.ticket-card__badge[data-status=sold]{background:var(--ion-color-success, #2dd36f);color:var(--ion-color-success-contrast, #fff)}.ticket-card__badge[data-status=checkedIn]{background:var(--ion-color-medium);color:var(--ion-color-medium-contrast, #fff)}.ticket-card__actions{width:100%;display:flex;flex-direction:column;gap:8px}.ticket-card__actions ion-button{--border-radius: 10px;margin:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: QrCodeComponent, selector: "val-qr-code", inputs: ["props"], outputs: ["actionComplete", "imageLoad", "imageError"] }] }); }
72195
+ `, isInline: true, styles: [":host{display:block}.ticket-card{--ticket-accent: var(--ion-color-primary, #ff00b2);--ticket-accent-2: #7026df;display:flex;flex-direction:column;width:min(100%,380px);margin:0 auto;overflow:hidden;border:1px solid var(--ion-color-light-shade, #d8d8dd);border-radius:22px;background:var(--ion-card-background, #ffffff);box-shadow:0 18px 50px #1f192d1f}.ticket-card__header{padding:22px 22px 20px;text-align:center;color:#fff;background:linear-gradient(135deg,var(--ticket-accent) 0%,var(--ticket-accent-2) 100%)}.ticket-card__eyebrow{margin-bottom:6px;font-size:.6875rem;font-weight:800;letter-spacing:.14em;line-height:1.2;text-transform:uppercase;opacity:.78}.ticket-card__title{font-size:1.25rem;font-weight:800;line-height:1.18}.ticket-card__body{position:relative;display:flex;flex-direction:column;align-items:stretch;background:radial-gradient(circle at 50% 0,rgba(255,0,178,.08),transparent 36%),var(--ion-card-background, #ffffff)}.ticket-card__qr{display:flex;align-items:center;justify-content:center;min-height:232px;padding:22px 22px 18px}.ticket-card__qr val-qr-code{display:block;padding:10px;border:1px solid rgba(31,25,45,.08);border-radius:18px;background:#fff;box-shadow:0 10px 30px #1f192d14}.ticket-card__qr-loading{display:flex;align-items:center;justify-content:center;width:220px;height:220px;border-radius:18px;background:#fff}.ticket-card__qr-fallback{padding:18px;border-radius:14px;background:#6b667514;color:var(--ion-color-medium, #6b6675);font-family:monospace;font-size:.75rem;line-height:1.5;text-align:center;word-break:break-all}.ticket-card__perf{position:relative;margin:0 22px;border-top:2px dashed rgba(107,102,117,.28)}.ticket-card__notch{position:absolute;top:-14px;width:26px;height:26px;border-radius:50%;background:var(--ion-background-color, #f8f8f8);box-shadow:inset 0 0 0 1px #1f192d14}.ticket-card__notch--left{left:-36px}.ticket-card__notch--right{right:-36px}.ticket-card__stub{display:flex;flex-direction:column;gap:18px;padding:18px 22px 22px}.ticket-card__meta{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0;text-align:center}.ticket-card__folio{color:var(--ion-color-dark, #2f2b38);font-size:1.45rem;font-weight:850;line-height:1.15}.ticket-card__buyer{max-width:100%;overflow:hidden;color:var(--ion-color-medium, #6b6675);font-size:.9375rem;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.ticket-card__badge{display:inline-flex;align-items:center;min-height:30px;margin-top:2px;padding:5px 14px;border-radius:999px;background:var(--ion-color-medium, #6b6675);color:var(--ion-color-medium-contrast, #ffffff);font-size:.8125rem;font-weight:800;line-height:1;white-space:nowrap}.ticket-card__badge[data-status=sold]{background:var(--ion-color-success, #16a34a);color:var(--ion-color-success-contrast, #ffffff)}.ticket-card__badge[data-status=checkedIn]{background:var(--ion-color-medium, #6b6675);color:var(--ion-color-medium-contrast, #ffffff)}.ticket-card__actions{display:grid;gap:10px;width:100%}.ticket-card__actions ion-button{min-height:48px;margin:0;font-weight:800;--border-radius: 14px;--border-width: 1.5px}@media (max-width: 420px){.ticket-card{width:100%;border-radius:20px}.ticket-card__qr{min-height:216px;padding-inline:16px}.ticket-card__stub{padding-inline:16px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: QrCodeComponent, selector: "val-qr-code", inputs: ["props"], outputs: ["actionComplete", "imageLoad", "imageError"] }] }); }
72180
72196
  }
72181
72197
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TicketCardComponent, decorators: [{
72182
72198
  type: Component,
72183
72199
  args: [{ selector: 'val-ticket-card', standalone: true, imports: [CommonModule, IonButton, IonIcon, IonSpinner, QrCodeComponent], template: `
72184
72200
  <div class="ticket-card">
72185
- @if (props().title) {
72186
- <div class="ticket-card__title">{{ props().title }}</div>
72187
- }
72188
-
72189
- <div class="ticket-card__qr">
72190
- @if (qr(); as q) {
72191
- <val-qr-code [props]="qrProps(q)" />
72192
- } @else if (failed()) {
72193
- <div class="ticket-card__qr-fallback">{{ tokenShort() }}</div>
72194
- } @else {
72195
- <div class="ticket-card__qr-loading">
72196
- <ion-spinner name="crescent" aria-label="Generando QR" />
72197
- </div>
72201
+ <div class="ticket-card__header">
72202
+ <div class="ticket-card__eyebrow">{{ t('cardLabel') }}</div>
72203
+ @if (props().title) {
72204
+ <div class="ticket-card__title">{{ props().title }}</div>
72198
72205
  }
72199
72206
  </div>
72200
72207
 
72201
- <div class="ticket-card__meta">
72202
- @if (folioText(); as f) {
72203
- <div class="ticket-card__folio">{{ f }}</div>
72204
- }
72205
- @if (props().buyerName) {
72206
- <div class="ticket-card__buyer">{{ props().buyerName }}</div>
72207
- }
72208
- @if (statusLabel(); as s) {
72209
- <span class="ticket-card__badge" [attr.data-status]="status()">{{ s }}</span>
72210
- }
72211
- </div>
72212
-
72213
- @if ((props().showDownload || props().showShare) && qr()) {
72214
- <div class="ticket-card__actions">
72215
- @if (props().showDownload) {
72216
- <ion-button fill="outline" expand="block" [disabled]="downloading()" (click)="downloadCard()">
72217
- <ion-icon name="download-outline" slot="start" />
72218
- {{ props().downloadLabel || t('download') }}
72219
- </ion-button>
72208
+ <div class="ticket-card__body">
72209
+ <div class="ticket-card__qr">
72210
+ @if (qr(); as q) {
72211
+ <val-qr-code [props]="qrProps(q)" />
72212
+ } @else if (failed()) {
72213
+ <div class="ticket-card__qr-fallback">{{ tokenShort() }}</div>
72214
+ } @else {
72215
+ <div class="ticket-card__qr-loading">
72216
+ <ion-spinner name="crescent" aria-label="Generando QR" />
72217
+ </div>
72220
72218
  }
72221
- @if (props().showShare) {
72222
- <ion-button fill="outline" expand="block" [disabled]="sharing()" (click)="shareCard()">
72223
- <ion-icon name="share-outline" slot="start" />
72224
- {{ props().shareLabel || t('share') }}
72225
- </ion-button>
72219
+ </div>
72220
+
72221
+ <div class="ticket-card__perf" aria-hidden="true">
72222
+ <span class="ticket-card__notch ticket-card__notch--left"></span>
72223
+ <span class="ticket-card__notch ticket-card__notch--right"></span>
72224
+ </div>
72225
+
72226
+ <div class="ticket-card__stub">
72227
+ <div class="ticket-card__meta">
72228
+ @if (folioText(); as f) {
72229
+ <div class="ticket-card__folio">{{ f }}</div>
72230
+ }
72231
+ @if (props().buyerName) {
72232
+ <div class="ticket-card__buyer">{{ props().buyerName }}</div>
72233
+ }
72234
+ @if (statusLabel(); as s) {
72235
+ <span class="ticket-card__badge" [attr.data-status]="status()">{{ s }}</span>
72236
+ }
72237
+ </div>
72238
+
72239
+ @if ((props().showDownload || props().showShare) && qr()) {
72240
+ <div class="ticket-card__actions">
72241
+ @if (props().showDownload) {
72242
+ <ion-button fill="outline" expand="block" [disabled]="downloading()" (click)="downloadCard()">
72243
+ <ion-icon name="download-outline" slot="start" />
72244
+ {{ props().downloadLabel || t('download') }}
72245
+ </ion-button>
72246
+ }
72247
+ @if (props().showShare) {
72248
+ <ion-button fill="outline" expand="block" [disabled]="sharing()" (click)="shareCard()">
72249
+ <ion-icon name="share-outline" slot="start" />
72250
+ {{ props().shareLabel || t('share') }}
72251
+ </ion-button>
72252
+ }
72253
+ </div>
72226
72254
  }
72227
72255
  </div>
72228
- }
72256
+ </div>
72229
72257
  </div>
72230
- `, styles: ["@charset \"UTF-8\";:host{display:block}.ticket-card{display:flex;flex-direction:column;align-items:center;gap:12px;padding:20px;border:1px solid var(--ion-color-light-shade, #e0e0e0);border-radius:16px;background:var(--ion-card-background, #ffffff);max-width:320px;margin:0 auto}.ticket-card__title{font-size:1rem;font-weight:700;color:var(--ion-color-dark);text-align:center}.ticket-card__qr{display:flex;align-items:center;justify-content:center;min-height:200px}.ticket-card__qr-loading{display:flex;align-items:center;justify-content:center;width:200px;height:200px}.ticket-card__qr-fallback{font-family:monospace;font-size:.75rem;color:var(--ion-color-medium);word-break:break-all;text-align:center;padding:16px}.ticket-card__meta{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}.ticket-card__folio{font-size:1rem;font-weight:700;color:var(--ion-color-dark)}.ticket-card__buyer{font-size:.875rem;color:var(--ion-color-medium)}.ticket-card__badge{margin-top:4px;font-size:.75rem;font-weight:600;padding:3px 12px;border-radius:999px;background:var(--ion-color-medium);color:var(--ion-color-medium-contrast, #fff);white-space:nowrap}.ticket-card__badge[data-status=sold]{background:var(--ion-color-success, #2dd36f);color:var(--ion-color-success-contrast, #fff)}.ticket-card__badge[data-status=checkedIn]{background:var(--ion-color-medium);color:var(--ion-color-medium-contrast, #fff)}.ticket-card__actions{width:100%;display:flex;flex-direction:column;gap:8px}.ticket-card__actions ion-button{--border-radius: 10px;margin:0}\n"] }]
72258
+ `, styles: [":host{display:block}.ticket-card{--ticket-accent: var(--ion-color-primary, #ff00b2);--ticket-accent-2: #7026df;display:flex;flex-direction:column;width:min(100%,380px);margin:0 auto;overflow:hidden;border:1px solid var(--ion-color-light-shade, #d8d8dd);border-radius:22px;background:var(--ion-card-background, #ffffff);box-shadow:0 18px 50px #1f192d1f}.ticket-card__header{padding:22px 22px 20px;text-align:center;color:#fff;background:linear-gradient(135deg,var(--ticket-accent) 0%,var(--ticket-accent-2) 100%)}.ticket-card__eyebrow{margin-bottom:6px;font-size:.6875rem;font-weight:800;letter-spacing:.14em;line-height:1.2;text-transform:uppercase;opacity:.78}.ticket-card__title{font-size:1.25rem;font-weight:800;line-height:1.18}.ticket-card__body{position:relative;display:flex;flex-direction:column;align-items:stretch;background:radial-gradient(circle at 50% 0,rgba(255,0,178,.08),transparent 36%),var(--ion-card-background, #ffffff)}.ticket-card__qr{display:flex;align-items:center;justify-content:center;min-height:232px;padding:22px 22px 18px}.ticket-card__qr val-qr-code{display:block;padding:10px;border:1px solid rgba(31,25,45,.08);border-radius:18px;background:#fff;box-shadow:0 10px 30px #1f192d14}.ticket-card__qr-loading{display:flex;align-items:center;justify-content:center;width:220px;height:220px;border-radius:18px;background:#fff}.ticket-card__qr-fallback{padding:18px;border-radius:14px;background:#6b667514;color:var(--ion-color-medium, #6b6675);font-family:monospace;font-size:.75rem;line-height:1.5;text-align:center;word-break:break-all}.ticket-card__perf{position:relative;margin:0 22px;border-top:2px dashed rgba(107,102,117,.28)}.ticket-card__notch{position:absolute;top:-14px;width:26px;height:26px;border-radius:50%;background:var(--ion-background-color, #f8f8f8);box-shadow:inset 0 0 0 1px #1f192d14}.ticket-card__notch--left{left:-36px}.ticket-card__notch--right{right:-36px}.ticket-card__stub{display:flex;flex-direction:column;gap:18px;padding:18px 22px 22px}.ticket-card__meta{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0;text-align:center}.ticket-card__folio{color:var(--ion-color-dark, #2f2b38);font-size:1.45rem;font-weight:850;line-height:1.15}.ticket-card__buyer{max-width:100%;overflow:hidden;color:var(--ion-color-medium, #6b6675);font-size:.9375rem;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.ticket-card__badge{display:inline-flex;align-items:center;min-height:30px;margin-top:2px;padding:5px 14px;border-radius:999px;background:var(--ion-color-medium, #6b6675);color:var(--ion-color-medium-contrast, #ffffff);font-size:.8125rem;font-weight:800;line-height:1;white-space:nowrap}.ticket-card__badge[data-status=sold]{background:var(--ion-color-success, #16a34a);color:var(--ion-color-success-contrast, #ffffff)}.ticket-card__badge[data-status=checkedIn]{background:var(--ion-color-medium, #6b6675);color:var(--ion-color-medium-contrast, #ffffff)}.ticket-card__actions{display:grid;gap:10px;width:100%}.ticket-card__actions ion-button{min-height:48px;margin:0;font-weight:800;--border-radius: 14px;--border-width: 1.5px}@media (max-width: 420px){.ticket-card{width:100%;border-radius:20px}.ticket-card__qr{min-height:216px;padding-inline:16px}.ticket-card__stub{padding-inline:16px}}\n"] }]
72231
72259
  }], ctorParameters: () => [] });
72232
72260
 
72233
72261
  /**