tickera-angular-components 0.0.1-dev.108 → 0.0.1-dev.109

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.
@@ -568,6 +568,19 @@ const VENUES_API_ROUTES = {
568
568
  deleteOneImage: (venueId, imageId) => '/venues/' + venueId + '/images/' + imageId,
569
569
  };
570
570
 
571
+ const VIP_CARDS_API_ROUTES = {
572
+ findAll: '/admin/vip-cards',
573
+ findOne: (id) => `/admin/vip-cards/${id}`,
574
+ activateAdmin: '/admin/vip-cards/activate',
575
+ rechargeAdmin: (id) => `/admin/vip-cards/${id}/recharge`,
576
+ updateStatus: (id) => `/admin/vip-cards/${id}/status`,
577
+ updateTerms: (id) => `/admin/vip-cards/${id}/terms`,
578
+ transactions: (id) => `/admin/vip-cards/${id}/transactions`,
579
+ findMy: '/vip-cards/my',
580
+ activate: '/vip-cards/activate',
581
+ recharge: '/vip-cards/recharge',
582
+ };
583
+
571
584
  const BUTTON_VARIANT_CLASSES = {
572
585
  primary: 'btn-primary',
573
586
  secondary: 'btn-secondary',
@@ -759,6 +772,20 @@ var PaymentMethod;
759
772
  PaymentMethod["MERCADO_PAGO"] = "mercado_pago";
760
773
  })(PaymentMethod || (PaymentMethod = {}));
761
774
 
775
+ var VipCardStatus;
776
+ (function (VipCardStatus) {
777
+ VipCardStatus["ACTIVE"] = "ACTIVE";
778
+ VipCardStatus["INACTIVE"] = "INACTIVE";
779
+ VipCardStatus["EXPIRED"] = "EXPIRED";
780
+ })(VipCardStatus || (VipCardStatus = {}));
781
+
782
+ var VipTransactionType;
783
+ (function (VipTransactionType) {
784
+ VipTransactionType["INITIAL_RECHARGE"] = "INITIAL_RECHARGE";
785
+ VipTransactionType["RECHARGE"] = "RECHARGE";
786
+ VipTransactionType["PURCHASE_PAYMENT"] = "PURCHASE_PAYMENT";
787
+ })(VipTransactionType || (VipTransactionType = {}));
788
+
762
789
  const PAYMENT_METHODS_OPTIONS = [
763
790
  { value: 'credit_card', label: 'paymentMethod.creditCard' },
764
791
  { value: 'debit_card', label: 'paymentMethod.debitCard' },
@@ -3918,6 +3945,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
3918
3945
  args: [{ providedIn: 'root' }]
3919
3946
  }] });
3920
3947
 
3948
+ class VipCardService {
3949
+ apiService;
3950
+ constructor(apiService) {
3951
+ this.apiService = apiService;
3952
+ }
3953
+ findMy() {
3954
+ return this.apiService.get(VIP_CARDS_API_ROUTES.findMy);
3955
+ }
3956
+ activate(data) {
3957
+ return this.apiService.post(VIP_CARDS_API_ROUTES.activate, data);
3958
+ }
3959
+ recharge(data) {
3960
+ return this.apiService.post(VIP_CARDS_API_ROUTES.recharge, data);
3961
+ }
3962
+ fetchAll(queryParams = {}) {
3963
+ const searchParams = new URLSearchParams();
3964
+ Object.entries(queryParams).forEach(([key, value]) => {
3965
+ if (value !== undefined && value !== null) {
3966
+ searchParams.append(key, String(value));
3967
+ }
3968
+ });
3969
+ const queryString = searchParams.toString();
3970
+ const route = `${VIP_CARDS_API_ROUTES.findAll}${queryString ? '?' + queryString : ''}`;
3971
+ return this.apiService.get(route);
3972
+ }
3973
+ fetchOneById(id) {
3974
+ return this.apiService.get(VIP_CARDS_API_ROUTES.findOne(id));
3975
+ }
3976
+ activateAdmin(data) {
3977
+ return this.apiService.post(VIP_CARDS_API_ROUTES.activateAdmin, data);
3978
+ }
3979
+ rechargeAdmin(id, data) {
3980
+ return this.apiService.post(VIP_CARDS_API_ROUTES.rechargeAdmin(id), data);
3981
+ }
3982
+ updateStatus(id, status) {
3983
+ return this.apiService.patch(VIP_CARDS_API_ROUTES.updateStatus(id), {
3984
+ status,
3985
+ });
3986
+ }
3987
+ updateTerms(id) {
3988
+ return this.apiService.patch(VIP_CARDS_API_ROUTES.updateTerms(id), {});
3989
+ }
3990
+ fetchTransactions(id, page = 1, limit = 20) {
3991
+ return this.apiService.get(`${VIP_CARDS_API_ROUTES.transactions(id)}?page=${page}&limit=${limit}`);
3992
+ }
3993
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: VipCardService, deps: [{ token: ApiService }], target: i0.ɵɵFactoryTarget.Injectable });
3994
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: VipCardService, providedIn: 'root' });
3995
+ }
3996
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: VipCardService, decorators: [{
3997
+ type: Injectable,
3998
+ args: [{ providedIn: 'root' }]
3999
+ }], ctorParameters: () => [{ type: ApiService }] });
4000
+
3921
4001
  const authInterceptor = (req, next) => {
3922
4002
  const platformId = inject(PLATFORM_ID);
3923
4003
  const config = inject(TICKERA_COMPONENTS_CONFIG);
@@ -8827,11 +8907,117 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
8827
8907
  args: [{ required: true }]
8828
8908
  }] } });
8829
8909
 
8910
+ class VipBalanceCardComponent {
8911
+ card = null;
8912
+ get statusColor() {
8913
+ if (!this.card)
8914
+ return 'primary';
8915
+ switch (this.card.status) {
8916
+ case VipCardStatus.ACTIVE:
8917
+ return 'success';
8918
+ case VipCardStatus.INACTIVE:
8919
+ return 'warning';
8920
+ case VipCardStatus.EXPIRED:
8921
+ return 'error';
8922
+ default:
8923
+ return 'primary';
8924
+ }
8925
+ }
8926
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: VipBalanceCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8927
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: VipBalanceCardComponent, isStandalone: true, selector: "vip-balance-card", inputs: { card: "card" }, ngImport: i0, template: "<div class=\"vip-balance-card\">\n @if (card) {\n <div class=\"vip-balance-card-header\">\n <p class=\"vip-balance-card-category\">{{ card.category_snapshot.name }}</p>\n <app-badge [text]=\"card.status\" [color]=\"statusColor\" size=\"sm\" />\n </div>\n\n <p class=\"vip-balance-card-balance\">\n {{ card.balance | currency: 'COP' : 'symbol-narrow' : '1.0-0' }}\n </p>\n <p class=\"vip-balance-card-label\">Saldo disponible</p>\n\n <div class=\"vip-balance-card-details\">\n <div class=\"vip-balance-card-detail\">\n <span class=\"vip-balance-card-detail-label\">Descuento</span>\n <span class=\"vip-balance-card-detail-value\">\n {{ card.category_snapshot.discount_percentage }}%\n </span>\n </div>\n <div class=\"vip-balance-card-detail\">\n <span class=\"vip-balance-card-detail-label\">Exenci\u00F3n tarifa</span>\n <span class=\"vip-balance-card-detail-value\">\n {{ card.category_snapshot.service_fee_exempt ? 'S\u00ED' : 'No' }}\n </span>\n </div>\n <div class=\"vip-balance-card-detail\">\n <span class=\"vip-balance-card-detail-label\">Vence</span>\n <span class=\"vip-balance-card-detail-value\">\n {{ card.expires_at ? (card.expires_at | date: 'shortDate') : '\u2014' }}\n </span>\n </div>\n <div class=\"vip-balance-card-detail\">\n <span class=\"vip-balance-card-detail-label\">\u00DAltima actividad</span>\n <span class=\"vip-balance-card-detail-value\">\n {{ card.last_activity_at ? (card.last_activity_at | date: 'shortDate') : '\u2014' }}\n </span>\n </div>\n </div>\n } @else {\n <p class=\"vip-balance-card-empty\">No tienes una Tarjeta VIP activa.</p>\n }\n</div>\n", styles: [".vip-balance-card{width:100%;background-color:#fff;border-radius:.5rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;padding:24px}.vip-balance-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.vip-balance-card-category{font-size:14px;font-weight:600;color:#374151;margin:0}.vip-balance-card-balance{font-size:36px;font-weight:700;color:#111827;margin:0}.vip-balance-card-label{font-size:14px;color:#6b7280;margin:0}.vip-balance-card-details{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:24px}.vip-balance-card-detail{display:flex;flex-direction:column}.vip-balance-card-detail-label{font-size:12px;color:#9ca3af}.vip-balance-card-detail-value{font-size:14px;font-weight:500;color:#374151}.vip-balance-card-empty{padding:24px 0;text-align:center;color:#6b7280;margin:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AppBadgeComponent, selector: "app-badge", inputs: ["text", "color", "size", "bordered", "backgroundColor", "textColor"] }, { kind: "pipe", type: i1$1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }], encapsulation: i0.ViewEncapsulation.None });
8928
+ }
8929
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: VipBalanceCardComponent, decorators: [{
8930
+ type: Component,
8931
+ args: [{ selector: 'vip-balance-card', standalone: true, imports: [CommonModule, DatePipe, AppBadgeComponent], encapsulation: ViewEncapsulation.None, template: "<div class=\"vip-balance-card\">\n @if (card) {\n <div class=\"vip-balance-card-header\">\n <p class=\"vip-balance-card-category\">{{ card.category_snapshot.name }}</p>\n <app-badge [text]=\"card.status\" [color]=\"statusColor\" size=\"sm\" />\n </div>\n\n <p class=\"vip-balance-card-balance\">\n {{ card.balance | currency: 'COP' : 'symbol-narrow' : '1.0-0' }}\n </p>\n <p class=\"vip-balance-card-label\">Saldo disponible</p>\n\n <div class=\"vip-balance-card-details\">\n <div class=\"vip-balance-card-detail\">\n <span class=\"vip-balance-card-detail-label\">Descuento</span>\n <span class=\"vip-balance-card-detail-value\">\n {{ card.category_snapshot.discount_percentage }}%\n </span>\n </div>\n <div class=\"vip-balance-card-detail\">\n <span class=\"vip-balance-card-detail-label\">Exenci\u00F3n tarifa</span>\n <span class=\"vip-balance-card-detail-value\">\n {{ card.category_snapshot.service_fee_exempt ? 'S\u00ED' : 'No' }}\n </span>\n </div>\n <div class=\"vip-balance-card-detail\">\n <span class=\"vip-balance-card-detail-label\">Vence</span>\n <span class=\"vip-balance-card-detail-value\">\n {{ card.expires_at ? (card.expires_at | date: 'shortDate') : '\u2014' }}\n </span>\n </div>\n <div class=\"vip-balance-card-detail\">\n <span class=\"vip-balance-card-detail-label\">\u00DAltima actividad</span>\n <span class=\"vip-balance-card-detail-value\">\n {{ card.last_activity_at ? (card.last_activity_at | date: 'shortDate') : '\u2014' }}\n </span>\n </div>\n </div>\n } @else {\n <p class=\"vip-balance-card-empty\">No tienes una Tarjeta VIP activa.</p>\n }\n</div>\n", styles: [".vip-balance-card{width:100%;background-color:#fff;border-radius:.5rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;padding:24px}.vip-balance-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.vip-balance-card-category{font-size:14px;font-weight:600;color:#374151;margin:0}.vip-balance-card-balance{font-size:36px;font-weight:700;color:#111827;margin:0}.vip-balance-card-label{font-size:14px;color:#6b7280;margin:0}.vip-balance-card-details{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:24px}.vip-balance-card-detail{display:flex;flex-direction:column}.vip-balance-card-detail-label{font-size:12px;color:#9ca3af}.vip-balance-card-detail-value{font-size:14px;font-weight:500;color:#374151}.vip-balance-card-empty{padding:24px 0;text-align:center;color:#6b7280;margin:0}\n"] }]
8932
+ }], propDecorators: { card: [{
8933
+ type: Input
8934
+ }] } });
8935
+
8936
+ class VipRechargeModalComponent {
8937
+ fb;
8938
+ title = 'Recargar Tarjeta VIP';
8939
+ submitLabel = 'Recargar';
8940
+ loading = false;
8941
+ minAmount = 100000;
8942
+ isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : []));
8943
+ closeModal = new EventEmitter();
8944
+ confirm = new EventEmitter();
8945
+ rechargeForm;
8946
+ constructor(fb) {
8947
+ this.fb = fb;
8948
+ this.rechargeForm = this.fb.group({
8949
+ amount: ['', [Validators.required, Validators.min(this.minAmount)]],
8950
+ });
8951
+ }
8952
+ onClose() {
8953
+ this.rechargeForm.reset();
8954
+ this.closeModal.emit();
8955
+ }
8956
+ onSubmit() {
8957
+ if (this.rechargeForm.invalid)
8958
+ return;
8959
+ this.confirm.emit({ amount: Number(this.rechargeForm.value.amount) });
8960
+ }
8961
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: VipRechargeModalComponent, deps: [{ token: i1$2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
8962
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: VipRechargeModalComponent, isStandalone: true, selector: "vip-recharge-modal", inputs: { title: "title", submitLabel: "submitLabel", loading: "loading", minAmount: "minAmount", isOpen: "isOpen" }, outputs: { closeModal: "closeModal", confirm: "confirm" }, ngImport: i0, template: "<app-modal [isOpen]=\"isOpen\" [title]=\"title\" size=\"md\" (closeModal)=\"onClose()\">\n <form [formGroup]=\"rechargeForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"vip-recharge-modal\">\n <form-input\n formControlName=\"amount\"\n label=\"Monto\"\n type=\"number\"\n [min]=\"minAmount\"\n [step]=\"1000\"\n [required]=\"true\"\n placeholder=\"Ingresa el monto a recargar\"\n />\n <p class=\"vip-recharge-modal-hint\">\n Monto m\u00EDnimo: {{ minAmount | currency: 'COP' : 'symbol-narrow' : '1.0-0' }}\n </p>\n </div>\n\n <div class=\"vip-recharge-modal-actions\">\n <app-button type=\"button\" variant=\"tertiary\" text=\"Cancelar\" (clicked)=\"onClose()\" />\n <app-button\n type=\"submit\"\n variant=\"primary\"\n [text]=\"submitLabel\"\n [loading]=\"loading\"\n [disabled]=\"rechargeForm.invalid\"\n />\n </div>\n </form>\n</app-modal>\n", styles: [".vip-recharge-modal{padding:8px 4px}.vip-recharge-modal-hint{margin-top:8px;font-size:12px;color:#6b7280}.vip-recharge-modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: AppModalComponent, selector: "app-modal", inputs: ["title", "disableClose", "showHeader", "showCloseButton", "showTitle", "isOpen", "size"], outputs: ["closeModal"] }, { kind: "component", type: FormInputComponent, selector: "form-input", inputs: ["label", "type", "name", "id", "placeholder", "required", "readonly", "minlength", "min", "step", "pattern", "fieldGroupClass", "autocomplete"] }, { kind: "component", type: AppButtonComponent, selector: "app-button", inputs: ["disabled", "loading", "type", "variant", "text", "size", "loadingText", "icon", "tooltip"], outputs: ["clicked"] }, { kind: "pipe", type: i1$1.CurrencyPipe, name: "currency" }], encapsulation: i0.ViewEncapsulation.None });
8963
+ }
8964
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: VipRechargeModalComponent, decorators: [{
8965
+ type: Component,
8966
+ args: [{ selector: 'vip-recharge-modal', standalone: true, imports: [
8967
+ CommonModule,
8968
+ ReactiveFormsModule,
8969
+ AppModalComponent,
8970
+ FormInputComponent,
8971
+ AppButtonComponent,
8972
+ ], encapsulation: ViewEncapsulation.None, template: "<app-modal [isOpen]=\"isOpen\" [title]=\"title\" size=\"md\" (closeModal)=\"onClose()\">\n <form [formGroup]=\"rechargeForm\" (ngSubmit)=\"onSubmit()\">\n <div class=\"vip-recharge-modal\">\n <form-input\n formControlName=\"amount\"\n label=\"Monto\"\n type=\"number\"\n [min]=\"minAmount\"\n [step]=\"1000\"\n [required]=\"true\"\n placeholder=\"Ingresa el monto a recargar\"\n />\n <p class=\"vip-recharge-modal-hint\">\n Monto m\u00EDnimo: {{ minAmount | currency: 'COP' : 'symbol-narrow' : '1.0-0' }}\n </p>\n </div>\n\n <div class=\"vip-recharge-modal-actions\">\n <app-button type=\"button\" variant=\"tertiary\" text=\"Cancelar\" (clicked)=\"onClose()\" />\n <app-button\n type=\"submit\"\n variant=\"primary\"\n [text]=\"submitLabel\"\n [loading]=\"loading\"\n [disabled]=\"rechargeForm.invalid\"\n />\n </div>\n </form>\n</app-modal>\n", styles: [".vip-recharge-modal{padding:8px 4px}.vip-recharge-modal-hint{margin-top:8px;font-size:12px;color:#6b7280}.vip-recharge-modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}\n"] }]
8973
+ }], ctorParameters: () => [{ type: i1$2.FormBuilder }], propDecorators: { title: [{
8974
+ type: Input
8975
+ }], submitLabel: [{
8976
+ type: Input
8977
+ }], loading: [{
8978
+ type: Input
8979
+ }], minAmount: [{
8980
+ type: Input
8981
+ }], isOpen: [{
8982
+ type: Input
8983
+ }], closeModal: [{
8984
+ type: Output
8985
+ }], confirm: [{
8986
+ type: Output
8987
+ }] } });
8988
+
8989
+ class VipTransactionsTableComponent {
8990
+ transactions = [];
8991
+ loading = false;
8992
+ typeLabel(type) {
8993
+ switch (type) {
8994
+ case VipTransactionType.INITIAL_RECHARGE:
8995
+ return 'Activación';
8996
+ case VipTransactionType.RECHARGE:
8997
+ return 'Recarga';
8998
+ case VipTransactionType.PURCHASE_PAYMENT:
8999
+ return 'Compra';
9000
+ default:
9001
+ return type;
9002
+ }
9003
+ }
9004
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: VipTransactionsTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9005
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: VipTransactionsTableComponent, isStandalone: true, selector: "vip-transactions-table", inputs: { transactions: "transactions", loading: "loading" }, ngImport: i0, template: "<div class=\"vip-transactions-table\">\n <table>\n <thead>\n <tr>\n <th>Fecha</th>\n <th>Tipo</th>\n <th>Descripci\u00F3n</th>\n <th>Monto</th>\n <th>Saldo</th>\n </tr>\n </thead>\n <tbody>\n @if (loading) {\n <tr>\n <td colspan=\"5\" class=\"vip-transactions-table-empty\">Cargando\u2026</td>\n </tr>\n } @else if (transactions.length === 0) {\n <tr>\n <td colspan=\"5\" class=\"vip-transactions-table-empty\">Sin transacciones.</td>\n </tr>\n } @else {\n @for (tx of transactions; track tx.id) {\n <tr>\n <td>{{ tx.created_at | date: 'short' }}</td>\n <td>\n <span\n [class.vip-transactions-table-positive]=\"tx.amount > 0\"\n [class.vip-transactions-table-negative]=\"tx.amount < 0\"\n >\n {{ typeLabel(tx.type) }}\n </span>\n </td>\n <td>{{ tx.description ?? '\u2014' }}</td>\n <td [class.vip-transactions-table-negative]=\"tx.amount < 0\">\n {{ tx.amount | currency: 'COP' : 'symbol-narrow' : '1.0-0' }}\n </td>\n <td>{{ tx.balance_after | currency: 'COP' : 'symbol-narrow' : '1.0-0' }}</td>\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n", styles: [".vip-transactions-table{width:100%;overflow-x:auto;border-radius:.5rem;border:1px solid #e5e7eb}.vip-transactions-table table{width:100%;font-size:14px;border-collapse:collapse}.vip-transactions-table table th{border-bottom:1px solid #e5e7eb;background-color:#f9fafb;padding:12px 16px;text-align:left;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#6b7280}.vip-transactions-table table td{border-bottom:1px solid #f3f4f6;padding:12px 16px;color:#374151}.vip-transactions-table-empty{padding:24px 0;text-align:center;color:#9ca3af}.vip-transactions-table-positive{color:#16a34a}.vip-transactions-table-negative{color:#dc2626}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$1.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }], encapsulation: i0.ViewEncapsulation.None });
9006
+ }
9007
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: VipTransactionsTableComponent, decorators: [{
9008
+ type: Component,
9009
+ args: [{ selector: 'vip-transactions-table', standalone: true, imports: [CommonModule, DatePipe], encapsulation: ViewEncapsulation.None, template: "<div class=\"vip-transactions-table\">\n <table>\n <thead>\n <tr>\n <th>Fecha</th>\n <th>Tipo</th>\n <th>Descripci\u00F3n</th>\n <th>Monto</th>\n <th>Saldo</th>\n </tr>\n </thead>\n <tbody>\n @if (loading) {\n <tr>\n <td colspan=\"5\" class=\"vip-transactions-table-empty\">Cargando\u2026</td>\n </tr>\n } @else if (transactions.length === 0) {\n <tr>\n <td colspan=\"5\" class=\"vip-transactions-table-empty\">Sin transacciones.</td>\n </tr>\n } @else {\n @for (tx of transactions; track tx.id) {\n <tr>\n <td>{{ tx.created_at | date: 'short' }}</td>\n <td>\n <span\n [class.vip-transactions-table-positive]=\"tx.amount > 0\"\n [class.vip-transactions-table-negative]=\"tx.amount < 0\"\n >\n {{ typeLabel(tx.type) }}\n </span>\n </td>\n <td>{{ tx.description ?? '\u2014' }}</td>\n <td [class.vip-transactions-table-negative]=\"tx.amount < 0\">\n {{ tx.amount | currency: 'COP' : 'symbol-narrow' : '1.0-0' }}\n </td>\n <td>{{ tx.balance_after | currency: 'COP' : 'symbol-narrow' : '1.0-0' }}</td>\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n", styles: [".vip-transactions-table{width:100%;overflow-x:auto;border-radius:.5rem;border:1px solid #e5e7eb}.vip-transactions-table table{width:100%;font-size:14px;border-collapse:collapse}.vip-transactions-table table th{border-bottom:1px solid #e5e7eb;background-color:#f9fafb;padding:12px 16px;text-align:left;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#6b7280}.vip-transactions-table table td{border-bottom:1px solid #f3f4f6;padding:12px 16px;color:#374151}.vip-transactions-table-empty{padding:24px 0;text-align:center;color:#9ca3af}.vip-transactions-table-positive{color:#16a34a}.vip-transactions-table-negative{color:#dc2626}\n"] }]
9010
+ }], propDecorators: { transactions: [{
9011
+ type: Input
9012
+ }], loading: [{
9013
+ type: Input
9014
+ }] } });
9015
+
8830
9016
  // Config
8831
9017
 
8832
9018
  /**
8833
9019
  * Generated bundle index. Do not edit.
8834
9020
  */
8835
9021
 
8836
- export { ADMIN_API_ROUTES, ALERT_ICONS, AdminSelectComponent, AdminService, ApiService, AppAlertComponent, AppBadgeComponent, AppBreadcumbComponent, AppButtonComponent, AppLinkButtonComponent, AppModalComponent, AsyncSelectComponent, AuditInformationComponent, BASE_BUTTON_CLASSES, BASE_INPUT_CLASSES, BUTTON_SIZES_CLASSES, BUTTON_VARIANT_CLASSES, BaseModalService, CITY_API_ENDPOINTS, COUNTRY_API_ENDPOINTS, CUSTOMERS_API_ROUTES, ChangePasswordFormComponent, ChangePasswordFormService, CitiesService, CitySelectComponent, ColorPickerComponent, ConfirmationOrderModalComponent, ConfirmationOrderModalService, CorporateBondStatus, CountrySelectComponent, CountryService, CouponApplicability, CouponDiscountType, CouponStatus, CreatorType, CustomerSelectComponent, CustomerService, DEFAULT_STAGE_CONFIG, DOCUMENT_TYPES_OPTIONS, DateInputComponent, DateService, DaySelectorGridComponent, DeleteConfirmationComponent, DeleteConfirmationService, DynamicTableComponent, ERROR_INPUT_CLASSES, EndDateGreaterThanStartValidator, FORM_ERROR_MESSAGES, FeedbackModalComponent, FeedbackModalService, FileType, FileUploadComponent, FileUploadPreviewComponent, FormEditorComponent, FormInputComponent, FormSelectComponent, FormTextareaComponent, GiftBondPurchaseStatus, GiftBondStatus, KONVA_SHAPE_MAPPINGS, LanguageSwitcherComponent, MinTodayValidator, MustMatchValidator, ORDER_DISCOUNT_COLORS, ORDER_ITEM_TYPES_COLORS, ORDER_STATUS_COLORS, OrderBillingInfoComponent, OrderDiscountAppliedComponent, OrderInformationComponent, OrderItemType, OrderItemTypeBadgeComponent, OrderItemsComponent, OrderStatus, OrderStatusBadgeComponent, OrderTransactionDetailsModalComponent, OrderTransactionDetailsModalService, OrderTransactionsComponent, PAYMENT_METHODS_OPTIONS, PERFORMANCES_API_ROUTES, PERFORMANCE_STATUS_COLORS, PERFORMANCE_TICKET_STATUS_COLORS, PRICE_ZONES_API_ROUTES, PRODUCTS_API_ROUTES, PRODUCT_CATEGORIES_API_ROUTES, PRODUCT_TAGS_API_ROUTES, PRODUCT_TYPES_API_ROUTES, PaymentMethod, PerformanceBookingDataService, PerformanceCardComponent, PerformanceCardListComponent, PerformanceMultiSelectComponent, PerformanceSelectComponent, PerformanceService, PerformanceStatus, PerformanceStatusBadgeComponent, PerformanceStepperComponent, PerformanceTicketMapComponent, PerformanceTicketStatus, PerformanceTicketStatusBadgeComponent, PerformancesListEventsService, PriceZoneEventService, PriceZoneFormModalService, PriceZoneSelectComponent, PriceZoneService, ProductCategoryService, ProductMultiSelectComponent, ProductSelectComponent, ProductService, ProductTagService, ProductTypeService, RoomMapElementOrientation, RoomMapElementType, SHOWS_API_ROUTES, SHOW_TYPE_COLORS, STATE_API_ENDPOINTS, SeatSelectionEmptySummaryComponent, SeatSelectionSummaryComponent, SeatSelectionSummaryItemComponent, SelectedDiscountCardType, ShowCardComponent, ShowCardSkeletonComponent, ShowMultiSelectComponent, ShowSelectComponent, ShowService, ShowType, ShowTypeBadgeComponent, ShowsFilterComponent, StateSelectComponent, StatesService, TICKERA_COMPONENTS_CONFIG, TICKET_ELEMENT_TYPES, TICKET_MAP_GRID_SIZE, TICKET_MAP_LAST_TICKETS_LIMIT, TICKET_MAP_TITLE_HEIGHT, TICKET_STATUS_COLORS, TICKET_STATUS_FILLS, TICKET_STATUS_LABELS, TIcketMapProductSelectionComponent, TRANSACTION_STATUS_COLORS, TextExpandableComponent, TickeraTranslocoLoader, TicketMapPriceZonesComponent, TicketMapProductSelectionItemComponent, TicketMapTotalsComponent, TicketMapWidgetComponent, TicketMapWidgetHeaderComponent, TicketMapWrapperComponent, TicketMapZoomControlsComponent, TicketMapZoomService, TicketQrComponent, TicketQrModalComponent, TicketQrModalService, TicketQrService, TicketSelectionDetailsService, TicketSelectionDiscountService, TicketSelectionService, TicketSelectionTotalsService, ToastService, ToggleSwitchComponent, TransactionStatus, VENUES_API_ROUTES, ZonePriceItemComponent, ZonePriceListComponent, authInterceptor, drawChairIcon$1 as drawChairIcon, drawHappyFace, drawRoundedRect, drawWheelchairIcon, findElementAtPosition, findTicketAtPosition, formatCitiesResponseToSelect, generateExitScene, generateHallwayScene, generateProductionAreaScene, generateSeatBlockScene, generateSeatBlockTicketScene, generateStageScene, generateStairScene, generateTableScene, generateTableTicketScene, generateUnavailableSpaceScene, generateZoneScene, getBrowserLanguage, getCustomerFullname, getItemTypeIcon, getOrderDiscount, getStoredLanguage, numberToLetter$1 as numberToLetter, parseJsonToFormDataAdvanced, processElementsToRenderData, provideTickeraComponents, resolveLanguage, setStoredLanguage, tintColor, transformImageToFile };
9022
+ export { ADMIN_API_ROUTES, ALERT_ICONS, AdminSelectComponent, AdminService, ApiService, AppAlertComponent, AppBadgeComponent, AppBreadcumbComponent, AppButtonComponent, AppLinkButtonComponent, AppModalComponent, AsyncSelectComponent, AuditInformationComponent, BASE_BUTTON_CLASSES, BASE_INPUT_CLASSES, BUTTON_SIZES_CLASSES, BUTTON_VARIANT_CLASSES, BaseModalService, CITY_API_ENDPOINTS, COUNTRY_API_ENDPOINTS, CUSTOMERS_API_ROUTES, ChangePasswordFormComponent, ChangePasswordFormService, CitiesService, CitySelectComponent, ColorPickerComponent, ConfirmationOrderModalComponent, ConfirmationOrderModalService, CorporateBondStatus, CountrySelectComponent, CountryService, CouponApplicability, CouponDiscountType, CouponStatus, CreatorType, CustomerSelectComponent, CustomerService, DEFAULT_STAGE_CONFIG, DOCUMENT_TYPES_OPTIONS, DateInputComponent, DateService, DaySelectorGridComponent, DeleteConfirmationComponent, DeleteConfirmationService, DynamicTableComponent, ERROR_INPUT_CLASSES, EndDateGreaterThanStartValidator, FORM_ERROR_MESSAGES, FeedbackModalComponent, FeedbackModalService, FileType, FileUploadComponent, FileUploadPreviewComponent, FormEditorComponent, FormInputComponent, FormSelectComponent, FormTextareaComponent, GiftBondPurchaseStatus, GiftBondStatus, KONVA_SHAPE_MAPPINGS, LanguageSwitcherComponent, MinTodayValidator, MustMatchValidator, ORDER_DISCOUNT_COLORS, ORDER_ITEM_TYPES_COLORS, ORDER_STATUS_COLORS, OrderBillingInfoComponent, OrderDiscountAppliedComponent, OrderInformationComponent, OrderItemType, OrderItemTypeBadgeComponent, OrderItemsComponent, OrderStatus, OrderStatusBadgeComponent, OrderTransactionDetailsModalComponent, OrderTransactionDetailsModalService, OrderTransactionsComponent, PAYMENT_METHODS_OPTIONS, PERFORMANCES_API_ROUTES, PERFORMANCE_STATUS_COLORS, PERFORMANCE_TICKET_STATUS_COLORS, PRICE_ZONES_API_ROUTES, PRODUCTS_API_ROUTES, PRODUCT_CATEGORIES_API_ROUTES, PRODUCT_TAGS_API_ROUTES, PRODUCT_TYPES_API_ROUTES, PaymentMethod, PerformanceBookingDataService, PerformanceCardComponent, PerformanceCardListComponent, PerformanceMultiSelectComponent, PerformanceSelectComponent, PerformanceService, PerformanceStatus, PerformanceStatusBadgeComponent, PerformanceStepperComponent, PerformanceTicketMapComponent, PerformanceTicketStatus, PerformanceTicketStatusBadgeComponent, PerformancesListEventsService, PriceZoneEventService, PriceZoneFormModalService, PriceZoneSelectComponent, PriceZoneService, ProductCategoryService, ProductMultiSelectComponent, ProductSelectComponent, ProductService, ProductTagService, ProductTypeService, RoomMapElementOrientation, RoomMapElementType, SHOWS_API_ROUTES, SHOW_TYPE_COLORS, STATE_API_ENDPOINTS, SeatSelectionEmptySummaryComponent, SeatSelectionSummaryComponent, SeatSelectionSummaryItemComponent, SelectedDiscountCardType, ShowCardComponent, ShowCardSkeletonComponent, ShowMultiSelectComponent, ShowSelectComponent, ShowService, ShowType, ShowTypeBadgeComponent, ShowsFilterComponent, StateSelectComponent, StatesService, TICKERA_COMPONENTS_CONFIG, TICKET_ELEMENT_TYPES, TICKET_MAP_GRID_SIZE, TICKET_MAP_LAST_TICKETS_LIMIT, TICKET_MAP_TITLE_HEIGHT, TICKET_STATUS_COLORS, TICKET_STATUS_FILLS, TICKET_STATUS_LABELS, TIcketMapProductSelectionComponent, TRANSACTION_STATUS_COLORS, TextExpandableComponent, TickeraTranslocoLoader, TicketMapPriceZonesComponent, TicketMapProductSelectionItemComponent, TicketMapTotalsComponent, TicketMapWidgetComponent, TicketMapWidgetHeaderComponent, TicketMapWrapperComponent, TicketMapZoomControlsComponent, TicketMapZoomService, TicketQrComponent, TicketQrModalComponent, TicketQrModalService, TicketQrService, TicketSelectionDetailsService, TicketSelectionDiscountService, TicketSelectionService, TicketSelectionTotalsService, ToastService, ToggleSwitchComponent, TransactionStatus, VENUES_API_ROUTES, VIP_CARDS_API_ROUTES, VipBalanceCardComponent, VipCardService, VipCardStatus, VipRechargeModalComponent, VipTransactionType, VipTransactionsTableComponent, ZonePriceItemComponent, ZonePriceListComponent, authInterceptor, drawChairIcon$1 as drawChairIcon, drawHappyFace, drawRoundedRect, drawWheelchairIcon, findElementAtPosition, findTicketAtPosition, formatCitiesResponseToSelect, generateExitScene, generateHallwayScene, generateProductionAreaScene, generateSeatBlockScene, generateSeatBlockTicketScene, generateStageScene, generateStairScene, generateTableScene, generateTableTicketScene, generateUnavailableSpaceScene, generateZoneScene, getBrowserLanguage, getCustomerFullname, getItemTypeIcon, getOrderDiscount, getStoredLanguage, numberToLetter$1 as numberToLetter, parseJsonToFormDataAdvanced, processElementsToRenderData, provideTickeraComponents, resolveLanguage, setStoredLanguage, tintColor, transformImageToFile };
8837
9023
  //# sourceMappingURL=tickera-angular-components.mjs.map