tickera-angular-components 0.0.1-dev.107 → 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.
@@ -149,7 +149,8 @@ var order$1 = {
149
149
  itemType: {
150
150
  PRODUCT: "Producto",
151
151
  TICKET: "Entrada",
152
- GIFT_BOND: "Bono de regalo"
152
+ GIFT_BOND: "Bono de regalo",
153
+ CORPORATE_BOND: "Bono corporativo"
153
154
  },
154
155
  discountTypes: {
155
156
  gift_bond: "Bono de regalo",
@@ -310,7 +311,8 @@ var order = {
310
311
  itemType: {
311
312
  PRODUCT: "Product",
312
313
  TICKET: "Ticket",
313
- GIFT_BOND: "Gift bond"
314
+ GIFT_BOND: "Gift bond",
315
+ CORPORATE_BOND: "Corporate bond"
314
316
  },
315
317
  discountTypes: {
316
318
  gift_bond: "Product",
@@ -566,6 +568,19 @@ const VENUES_API_ROUTES = {
566
568
  deleteOneImage: (venueId, imageId) => '/venues/' + venueId + '/images/' + imageId,
567
569
  };
568
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
+
569
584
  const BUTTON_VARIANT_CLASSES = {
570
585
  primary: 'btn-primary',
571
586
  secondary: 'btn-secondary',
@@ -727,6 +742,7 @@ var OrderItemType;
727
742
  OrderItemType["TICKET"] = "TICKET";
728
743
  OrderItemType["PRODUCT"] = "PRODUCT";
729
744
  OrderItemType["GIFT_BOND"] = "GIFT_BOND";
745
+ OrderItemType["CORPORATE_BOND"] = "CORPORATE_BOND";
730
746
  })(OrderItemType || (OrderItemType = {}));
731
747
 
732
748
  var OrderStatus;
@@ -756,6 +772,20 @@ var PaymentMethod;
756
772
  PaymentMethod["MERCADO_PAGO"] = "mercado_pago";
757
773
  })(PaymentMethod || (PaymentMethod = {}));
758
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
+
759
789
  const PAYMENT_METHODS_OPTIONS = [
760
790
  { value: 'credit_card', label: 'paymentMethod.creditCard' },
761
791
  { value: 'debit_card', label: 'paymentMethod.debitCard' },
@@ -776,6 +806,7 @@ const ORDER_ITEM_TYPES_COLORS = {
776
806
  TICKET: { text: '#1d4ed8', bg: '#eff6ff' },
777
807
  PRODUCT: { text: '#7e22ce', bg: '#faf5ff' },
778
808
  GIFT_BOND: { text: '#ca8a04', bg: '#fefce8' },
809
+ CORPORATE_BOND: { text: '#0d9488', bg: '#ccfbf1' },
779
810
  };
780
811
  const ORDER_DISCOUNT_COLORS = {
781
812
  coupon: { text: '#1d4ed8', bg: '#eff6ff' },
@@ -3914,6 +3945,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
3914
3945
  args: [{ providedIn: 'root' }]
3915
3946
  }] });
3916
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
+
3917
4001
  const authInterceptor = (req, next) => {
3918
4002
  const platformId = inject(PLATFORM_ID);
3919
4003
  const config = inject(TICKERA_COMPONENTS_CONFIG);
@@ -8611,6 +8695,9 @@ class OrderItemsComponent {
8611
8695
  get giftBonds() {
8612
8696
  return this.orderItems?.filter(({ item_type }) => item_type === OrderItemType.GIFT_BOND) ?? [];
8613
8697
  }
8698
+ get corporateBonds() {
8699
+ return this.orderItems?.filter(({ item_type }) => item_type === OrderItemType.CORPORATE_BOND) ?? [];
8700
+ }
8614
8701
  get showActionColumn() {
8615
8702
  return this.order.status === 'completed' && this.tickets.length > 0;
8616
8703
  }
@@ -8630,13 +8717,16 @@ class OrderItemsComponent {
8630
8717
  const giftBonds = this.giftBonds?.reduce((accumulator, currentTicket) => {
8631
8718
  return accumulator + currentTicket?.normal_price;
8632
8719
  }, 0);
8633
- return { products, tickets, giftBonds };
8720
+ const corporateBonds = this.corporateBonds?.reduce((accumulator, currentTicket) => {
8721
+ return accumulator + currentTicket?.normal_price;
8722
+ }, 0);
8723
+ return { products, tickets, giftBonds, corporateBonds };
8634
8724
  }
8635
8725
  openTicketQr(ticketUuid, description) {
8636
8726
  this.ticketQrModalService.open(ticketUuid, description);
8637
8727
  }
8638
8728
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderItemsComponent, deps: [{ token: TicketQrModalService }], target: i0.ɵɵFactoryTarget.Component });
8639
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: OrderItemsComponent, isStandalone: true, selector: "order-items", inputs: { order: "order" }, ngImport: i0, template: "@if (!!order) {\n <div class=\"order-items\">\n <div class=\"order-items__header\">\n <p class=\"order-items__header-title\">\n Informaci\u00F3n de los art\u00EDculos comprados ({{ order.order_items.length | number: '1.0' }})\n </p>\n </div>\n <div class=\"order-items__table-container\">\n <table class=\"order-items__table\">\n <thead class=\"order-items__table-head\">\n <tr class=\"order-items__table-head-row\">\n <th class=\"order-items__table-head-cell\">Tipo</th>\n <th class=\"order-items__table-head-cell\">Descripci\u00F3n</th>\n\n <th class=\"order-items__table-head-cell text-right\">Cant.</th>\n <th class=\"order-items__table-head-cell text-right\">Precio</th>\n <th class=\"order-items__table-head-cell text-right\">Total</th>\n @if (showActionColumn) {\n <th class=\"order-items__table-head-cell\">Acciones</th>\n }\n </tr>\n </thead>\n <tbody class=\"order-items__table-body\">\n @for (item of order.order_items; track $index) {\n <tr class=\"order-items__table-body-row\">\n <td class=\"order-items__table-body-cell\">\n <order-item-type-badge [item]=\"item\" size=\"xs\" />\n </td>\n\n <td class=\"order-items__table-body-cell\">\n {{ item.description }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n {{ item.quantity }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n ${{ item.normal_price | number: '1.0-2' }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n <strong>\n ${{ itemTotal(item.quantity, item.normal_price) | number: '1.0-2' }}\n </strong>\n </td>\n\n @if (item.ticket_uuid && order.status === 'completed' && showActionColumn) {\n <td class=\"order-items__table-body-cell actions\">\n <app-button\n text=\"Ver ticket\"\n size=\"xs\"\n icon=\"ri-eye-line\"\n (clicked)=\"openTicketQr(item.ticket_uuid!, item.description)\"\n />\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div class=\"order-items__totals\">\n <dl class=\"order-items__totals-container\">\n @if (giftBonds.length > 0 && totals.giftBonds > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Bonos de regalo ({{ giftBonds.length }})</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.giftBonds > 0) {\n <span class=\"text-gray-900\"> ${{ totals.giftBonds | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (tickets.length > 0 && totals.tickets > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Entradas ({{ tickets.length }})</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.tickets > 0) {\n <span class=\"text-gray-900\"> ${{ totals.tickets | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (products.length > 0 && totals.products > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Productos</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.products > 0) {\n <span class=\"text-gray-900\"> ${{ totals.products | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (order.service_fee && order.service_fee > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Tarifa de servicio</dt>\n <dd class=\"order-items__totals-item-value\">\n <span class=\"text-gray-900\"> ${{ order.service_fee | number: '1.0-2' }} </span>\n </dd>\n </div>\n }\n\n @if (hasDiscount()) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Descuento</dt>\n <dd class=\"order-items__totals-item-title\">\n $-{{ order.discount_amount | number: '1.0-2' }}\n </dd>\n </div>\n }\n\n <div class=\"order-items__totals-item total-item\">\n <dt class=\"order-items__totals-item-total\">Total</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (!hasDiscount()) {\n <span class=\"order-items__totals-item-total\">\n ${{ order.total | number: '1.0-2' }}\n </span>\n }\n @if (hasDiscount()) {\n <span class=\"order-items__totals-item-discount-wrapper\">\n <span class=\"order-items__totals-item-discount\">\n ${{ order.total | number: '1.0-2' }}\n </span>\n <span class=\"order-items__totals-item-total\">\n ${{ order.total_discounted | number: '1.0-2' }}\n </span>\n </span>\n }\n </dd>\n </div>\n </dl>\n </div>\n </div>\n\n <ticket-qr-modal />\n}\n", styles: [".order-items{background-color:#fff;border-radius:.5rem;border:1px solid #f3f4f6;box-sizing:border-box;overflow:hidden;position:relative;width:100%}.order-items__header{align-items:center;display:flex;flex-flow:row wrap;gap:1rem;padding:1rem;width:100%}.order-items__header-title{color:#6b7280;font-size:.875rem;font-weight:700;margin:0}.order-items__table-container{overflow-x:auto}.order-items__table{border-collapse:collapse;font-size:.875rem;width:100%}.order-items__table-head-row{background-color:#f9fafb;text-align:left}.order-items__table-head-cell{color:#6b7280;font-size:.75rem;font-weight:700;padding:.75rem 1.5rem;text-transform:uppercase}.order-items__table-head-cell.text-right{text-align:right}.order-items__table-body>:not(:last-child){border-bottom:1px solid #f9fafb}.order-items__table-body-row{transition:all .4s ease}.order-items__table-body-row:hover{background-color:#f9fafb}.order-items__table-body-cell{color:#374151;padding:.75rem 1.5rem;white-space:nowrap}.order-items__table-body-cell.text-right{text-align:right}.order-items__totals{background-color:#f9fafb;border-top:1px solid #f3f4f6;padding:1rem 1.5rem;width:100%}.order-items__totals-container{display:flex;flex-flow:column;gap:.5rem;margin-left:auto;max-width:20rem;width:100%}.order-items__totals-item{display:flex;font-size:.875rem;justify-content:space-between;width:100%}.order-items__totals-item.actions{text-align:left}.order-items__totals-item.total-item{border-top:1px solid #e5e7eb;padding-top:.5rem}.order-items__totals-item-title{color:#6b7280}.order-items__totals-item-total{color:#111827;font-size:1.125rem;font-weight:700;line-height:100%}.order-items__totals-item-discount-wrapper{align-items:flex-end;display:flex;flex-flow:column nowrap;width:100%}.order-items__totals-item-discount{color:#9ca3af;font-size:.75rem;text-decoration:line-through}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AppButtonComponent, selector: "app-button", inputs: ["disabled", "loading", "type", "variant", "text", "size", "loadingText", "icon", "tooltip"], outputs: ["clicked"] }, { kind: "component", type: TicketQrModalComponent, selector: "ticket-qr-modal" }, { kind: "component", type: OrderItemTypeBadgeComponent, selector: "order-item-type-badge", inputs: ["item", "size"] }, { kind: "pipe", type: i1$1.DecimalPipe, name: "number" }], encapsulation: i0.ViewEncapsulation.None });
8729
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: OrderItemsComponent, isStandalone: true, selector: "order-items", inputs: { order: "order" }, ngImport: i0, template: "@if (!!order) {\n <div class=\"order-items\">\n <div class=\"order-items__header\">\n <p class=\"order-items__header-title\">\n Informaci\u00F3n de los art\u00EDculos comprados ({{ order.order_items.length | number: '1.0' }})\n </p>\n </div>\n <div class=\"order-items__table-container\">\n <table class=\"order-items__table\">\n <thead class=\"order-items__table-head\">\n <tr class=\"order-items__table-head-row\">\n <th class=\"order-items__table-head-cell\">Tipo</th>\n <th class=\"order-items__table-head-cell\">Descripci\u00F3n</th>\n\n <th class=\"order-items__table-head-cell text-right\">Cant.</th>\n <th class=\"order-items__table-head-cell text-right\">Precio</th>\n <th class=\"order-items__table-head-cell text-right\">Total</th>\n @if (showActionColumn) {\n <th class=\"order-items__table-head-cell\">Acciones</th>\n }\n </tr>\n </thead>\n <tbody class=\"order-items__table-body\">\n @for (item of order.order_items; track $index) {\n <tr class=\"order-items__table-body-row\">\n <td class=\"order-items__table-body-cell\">\n <order-item-type-badge [item]=\"item\" size=\"xs\" />\n </td>\n\n <td class=\"order-items__table-body-cell\">\n {{ item.description }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n {{ item.quantity }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n ${{ item.normal_price | number: '1.0-2' }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n <strong>\n ${{ itemTotal(item.quantity, item.normal_price) | number: '1.0-2' }}\n </strong>\n </td>\n\n @if (item.ticket_uuid && order.status === 'completed' && showActionColumn) {\n <td class=\"order-items__table-body-cell actions\">\n <app-button\n text=\"Ver ticket\"\n size=\"xs\"\n icon=\"ri-eye-line\"\n (clicked)=\"openTicketQr(item.ticket_uuid!, item.description)\"\n />\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div class=\"order-items__totals\">\n <dl class=\"order-items__totals-container\">\n @if (giftBonds.length > 0 && totals.giftBonds > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Bonos de regalo ({{ giftBonds.length }})</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.giftBonds > 0) {\n <span class=\"text-gray-900\"> ${{ totals.giftBonds | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (corporateBonds.length > 0 && totals.corporateBonds > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Bonos corporativos ({{ corporateBonds.length }})</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.corporateBonds > 0) {\n <span class=\"text-gray-900\"> ${{ totals.corporateBonds | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (tickets.length > 0 && totals.tickets > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Entradas ({{ tickets.length }})</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.tickets > 0) {\n <span class=\"text-gray-900\"> ${{ totals.tickets | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (products.length > 0 && totals.products > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Productos</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.products > 0) {\n <span class=\"text-gray-900\"> ${{ totals.products | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (order.service_fee && order.service_fee > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Tarifa de servicio</dt>\n <dd class=\"order-items__totals-item-value\">\n <span class=\"text-gray-900\"> ${{ order.service_fee | number: '1.0-2' }} </span>\n </dd>\n </div>\n }\n\n @if (hasDiscount()) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Descuento</dt>\n <dd class=\"order-items__totals-item-title\">\n $-{{ order.discount_amount | number: '1.0-2' }}\n </dd>\n </div>\n }\n\n <div class=\"order-items__totals-item total-item\">\n <dt class=\"order-items__totals-item-total\">Total</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (!hasDiscount()) {\n <span class=\"order-items__totals-item-total\">\n ${{ order.total | number: '1.0-2' }}\n </span>\n }\n @if (hasDiscount()) {\n <span class=\"order-items__totals-item-discount-wrapper\">\n <span class=\"order-items__totals-item-discount\">\n ${{ order.total | number: '1.0-2' }}\n </span>\n <span class=\"order-items__totals-item-total\">\n ${{ order.total_discounted | number: '1.0-2' }}\n </span>\n </span>\n }\n </dd>\n </div>\n </dl>\n </div>\n </div>\n\n <ticket-qr-modal />\n}\n", styles: [".order-items{background-color:#fff;border-radius:.5rem;border:1px solid #f3f4f6;box-sizing:border-box;overflow:hidden;position:relative;width:100%}.order-items__header{align-items:center;display:flex;flex-flow:row wrap;gap:1rem;padding:1rem;width:100%}.order-items__header-title{color:#6b7280;font-size:.875rem;font-weight:700;margin:0}.order-items__table-container{overflow-x:auto}.order-items__table{border-collapse:collapse;font-size:.875rem;width:100%}.order-items__table-head-row{background-color:#f9fafb;text-align:left}.order-items__table-head-cell{color:#6b7280;font-size:.75rem;font-weight:700;padding:.75rem 1.5rem;text-transform:uppercase}.order-items__table-head-cell.text-right{text-align:right}.order-items__table-body>:not(:last-child){border-bottom:1px solid #f9fafb}.order-items__table-body-row{transition:all .4s ease}.order-items__table-body-row:hover{background-color:#f9fafb}.order-items__table-body-cell{color:#374151;padding:.75rem 1.5rem;white-space:nowrap}.order-items__table-body-cell.text-right{text-align:right}.order-items__totals{background-color:#f9fafb;border-top:1px solid #f3f4f6;padding:1rem 1.5rem;width:100%}.order-items__totals-container{display:flex;flex-flow:column;gap:.5rem;margin-left:auto;max-width:20rem;width:100%}.order-items__totals-item{display:flex;font-size:.875rem;justify-content:space-between;width:100%}.order-items__totals-item.actions{text-align:left}.order-items__totals-item.total-item{border-top:1px solid #e5e7eb;padding-top:.5rem}.order-items__totals-item-title{color:#6b7280}.order-items__totals-item-total{color:#111827;font-size:1.125rem;font-weight:700;line-height:100%}.order-items__totals-item-discount-wrapper{align-items:flex-end;display:flex;flex-flow:column nowrap;width:100%}.order-items__totals-item-discount{color:#9ca3af;font-size:.75rem;text-decoration:line-through}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AppButtonComponent, selector: "app-button", inputs: ["disabled", "loading", "type", "variant", "text", "size", "loadingText", "icon", "tooltip"], outputs: ["clicked"] }, { kind: "component", type: TicketQrModalComponent, selector: "ticket-qr-modal" }, { kind: "component", type: OrderItemTypeBadgeComponent, selector: "order-item-type-badge", inputs: ["item", "size"] }, { kind: "pipe", type: i1$1.DecimalPipe, name: "number" }], encapsulation: i0.ViewEncapsulation.None });
8640
8730
  }
8641
8731
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OrderItemsComponent, decorators: [{
8642
8732
  type: Component,
@@ -8646,7 +8736,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
8646
8736
  TicketQrModalComponent,
8647
8737
  TicketMapWidgetHeaderComponent,
8648
8738
  OrderItemTypeBadgeComponent,
8649
- ], encapsulation: ViewEncapsulation.None, template: "@if (!!order) {\n <div class=\"order-items\">\n <div class=\"order-items__header\">\n <p class=\"order-items__header-title\">\n Informaci\u00F3n de los art\u00EDculos comprados ({{ order.order_items.length | number: '1.0' }})\n </p>\n </div>\n <div class=\"order-items__table-container\">\n <table class=\"order-items__table\">\n <thead class=\"order-items__table-head\">\n <tr class=\"order-items__table-head-row\">\n <th class=\"order-items__table-head-cell\">Tipo</th>\n <th class=\"order-items__table-head-cell\">Descripci\u00F3n</th>\n\n <th class=\"order-items__table-head-cell text-right\">Cant.</th>\n <th class=\"order-items__table-head-cell text-right\">Precio</th>\n <th class=\"order-items__table-head-cell text-right\">Total</th>\n @if (showActionColumn) {\n <th class=\"order-items__table-head-cell\">Acciones</th>\n }\n </tr>\n </thead>\n <tbody class=\"order-items__table-body\">\n @for (item of order.order_items; track $index) {\n <tr class=\"order-items__table-body-row\">\n <td class=\"order-items__table-body-cell\">\n <order-item-type-badge [item]=\"item\" size=\"xs\" />\n </td>\n\n <td class=\"order-items__table-body-cell\">\n {{ item.description }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n {{ item.quantity }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n ${{ item.normal_price | number: '1.0-2' }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n <strong>\n ${{ itemTotal(item.quantity, item.normal_price) | number: '1.0-2' }}\n </strong>\n </td>\n\n @if (item.ticket_uuid && order.status === 'completed' && showActionColumn) {\n <td class=\"order-items__table-body-cell actions\">\n <app-button\n text=\"Ver ticket\"\n size=\"xs\"\n icon=\"ri-eye-line\"\n (clicked)=\"openTicketQr(item.ticket_uuid!, item.description)\"\n />\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div class=\"order-items__totals\">\n <dl class=\"order-items__totals-container\">\n @if (giftBonds.length > 0 && totals.giftBonds > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Bonos de regalo ({{ giftBonds.length }})</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.giftBonds > 0) {\n <span class=\"text-gray-900\"> ${{ totals.giftBonds | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (tickets.length > 0 && totals.tickets > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Entradas ({{ tickets.length }})</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.tickets > 0) {\n <span class=\"text-gray-900\"> ${{ totals.tickets | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (products.length > 0 && totals.products > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Productos</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.products > 0) {\n <span class=\"text-gray-900\"> ${{ totals.products | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (order.service_fee && order.service_fee > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Tarifa de servicio</dt>\n <dd class=\"order-items__totals-item-value\">\n <span class=\"text-gray-900\"> ${{ order.service_fee | number: '1.0-2' }} </span>\n </dd>\n </div>\n }\n\n @if (hasDiscount()) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Descuento</dt>\n <dd class=\"order-items__totals-item-title\">\n $-{{ order.discount_amount | number: '1.0-2' }}\n </dd>\n </div>\n }\n\n <div class=\"order-items__totals-item total-item\">\n <dt class=\"order-items__totals-item-total\">Total</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (!hasDiscount()) {\n <span class=\"order-items__totals-item-total\">\n ${{ order.total | number: '1.0-2' }}\n </span>\n }\n @if (hasDiscount()) {\n <span class=\"order-items__totals-item-discount-wrapper\">\n <span class=\"order-items__totals-item-discount\">\n ${{ order.total | number: '1.0-2' }}\n </span>\n <span class=\"order-items__totals-item-total\">\n ${{ order.total_discounted | number: '1.0-2' }}\n </span>\n </span>\n }\n </dd>\n </div>\n </dl>\n </div>\n </div>\n\n <ticket-qr-modal />\n}\n", styles: [".order-items{background-color:#fff;border-radius:.5rem;border:1px solid #f3f4f6;box-sizing:border-box;overflow:hidden;position:relative;width:100%}.order-items__header{align-items:center;display:flex;flex-flow:row wrap;gap:1rem;padding:1rem;width:100%}.order-items__header-title{color:#6b7280;font-size:.875rem;font-weight:700;margin:0}.order-items__table-container{overflow-x:auto}.order-items__table{border-collapse:collapse;font-size:.875rem;width:100%}.order-items__table-head-row{background-color:#f9fafb;text-align:left}.order-items__table-head-cell{color:#6b7280;font-size:.75rem;font-weight:700;padding:.75rem 1.5rem;text-transform:uppercase}.order-items__table-head-cell.text-right{text-align:right}.order-items__table-body>:not(:last-child){border-bottom:1px solid #f9fafb}.order-items__table-body-row{transition:all .4s ease}.order-items__table-body-row:hover{background-color:#f9fafb}.order-items__table-body-cell{color:#374151;padding:.75rem 1.5rem;white-space:nowrap}.order-items__table-body-cell.text-right{text-align:right}.order-items__totals{background-color:#f9fafb;border-top:1px solid #f3f4f6;padding:1rem 1.5rem;width:100%}.order-items__totals-container{display:flex;flex-flow:column;gap:.5rem;margin-left:auto;max-width:20rem;width:100%}.order-items__totals-item{display:flex;font-size:.875rem;justify-content:space-between;width:100%}.order-items__totals-item.actions{text-align:left}.order-items__totals-item.total-item{border-top:1px solid #e5e7eb;padding-top:.5rem}.order-items__totals-item-title{color:#6b7280}.order-items__totals-item-total{color:#111827;font-size:1.125rem;font-weight:700;line-height:100%}.order-items__totals-item-discount-wrapper{align-items:flex-end;display:flex;flex-flow:column nowrap;width:100%}.order-items__totals-item-discount{color:#9ca3af;font-size:.75rem;text-decoration:line-through}\n"] }]
8739
+ ], encapsulation: ViewEncapsulation.None, template: "@if (!!order) {\n <div class=\"order-items\">\n <div class=\"order-items__header\">\n <p class=\"order-items__header-title\">\n Informaci\u00F3n de los art\u00EDculos comprados ({{ order.order_items.length | number: '1.0' }})\n </p>\n </div>\n <div class=\"order-items__table-container\">\n <table class=\"order-items__table\">\n <thead class=\"order-items__table-head\">\n <tr class=\"order-items__table-head-row\">\n <th class=\"order-items__table-head-cell\">Tipo</th>\n <th class=\"order-items__table-head-cell\">Descripci\u00F3n</th>\n\n <th class=\"order-items__table-head-cell text-right\">Cant.</th>\n <th class=\"order-items__table-head-cell text-right\">Precio</th>\n <th class=\"order-items__table-head-cell text-right\">Total</th>\n @if (showActionColumn) {\n <th class=\"order-items__table-head-cell\">Acciones</th>\n }\n </tr>\n </thead>\n <tbody class=\"order-items__table-body\">\n @for (item of order.order_items; track $index) {\n <tr class=\"order-items__table-body-row\">\n <td class=\"order-items__table-body-cell\">\n <order-item-type-badge [item]=\"item\" size=\"xs\" />\n </td>\n\n <td class=\"order-items__table-body-cell\">\n {{ item.description }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n {{ item.quantity }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n ${{ item.normal_price | number: '1.0-2' }}\n </td>\n\n <td class=\"order-items__table-body-cell text-right\">\n <strong>\n ${{ itemTotal(item.quantity, item.normal_price) | number: '1.0-2' }}\n </strong>\n </td>\n\n @if (item.ticket_uuid && order.status === 'completed' && showActionColumn) {\n <td class=\"order-items__table-body-cell actions\">\n <app-button\n text=\"Ver ticket\"\n size=\"xs\"\n icon=\"ri-eye-line\"\n (clicked)=\"openTicketQr(item.ticket_uuid!, item.description)\"\n />\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n\n <div class=\"order-items__totals\">\n <dl class=\"order-items__totals-container\">\n @if (giftBonds.length > 0 && totals.giftBonds > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Bonos de regalo ({{ giftBonds.length }})</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.giftBonds > 0) {\n <span class=\"text-gray-900\"> ${{ totals.giftBonds | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (corporateBonds.length > 0 && totals.corporateBonds > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Bonos corporativos ({{ corporateBonds.length }})</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.corporateBonds > 0) {\n <span class=\"text-gray-900\"> ${{ totals.corporateBonds | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (tickets.length > 0 && totals.tickets > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Entradas ({{ tickets.length }})</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.tickets > 0) {\n <span class=\"text-gray-900\"> ${{ totals.tickets | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (products.length > 0 && totals.products > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Productos</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (totals.products > 0) {\n <span class=\"text-gray-900\"> ${{ totals.products | number: '1.0-2' }} </span>\n }\n </dd>\n </div>\n }\n\n @if (order.service_fee && order.service_fee > 0) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Tarifa de servicio</dt>\n <dd class=\"order-items__totals-item-value\">\n <span class=\"text-gray-900\"> ${{ order.service_fee | number: '1.0-2' }} </span>\n </dd>\n </div>\n }\n\n @if (hasDiscount()) {\n <div class=\"order-items__totals-item\">\n <dt class=\"order-items__totals-item-title\">Descuento</dt>\n <dd class=\"order-items__totals-item-title\">\n $-{{ order.discount_amount | number: '1.0-2' }}\n </dd>\n </div>\n }\n\n <div class=\"order-items__totals-item total-item\">\n <dt class=\"order-items__totals-item-total\">Total</dt>\n <dd class=\"order-items__totals-item-value\">\n @if (!hasDiscount()) {\n <span class=\"order-items__totals-item-total\">\n ${{ order.total | number: '1.0-2' }}\n </span>\n }\n @if (hasDiscount()) {\n <span class=\"order-items__totals-item-discount-wrapper\">\n <span class=\"order-items__totals-item-discount\">\n ${{ order.total | number: '1.0-2' }}\n </span>\n <span class=\"order-items__totals-item-total\">\n ${{ order.total_discounted | number: '1.0-2' }}\n </span>\n </span>\n }\n </dd>\n </div>\n </dl>\n </div>\n </div>\n\n <ticket-qr-modal />\n}\n", styles: [".order-items{background-color:#fff;border-radius:.5rem;border:1px solid #f3f4f6;box-sizing:border-box;overflow:hidden;position:relative;width:100%}.order-items__header{align-items:center;display:flex;flex-flow:row wrap;gap:1rem;padding:1rem;width:100%}.order-items__header-title{color:#6b7280;font-size:.875rem;font-weight:700;margin:0}.order-items__table-container{overflow-x:auto}.order-items__table{border-collapse:collapse;font-size:.875rem;width:100%}.order-items__table-head-row{background-color:#f9fafb;text-align:left}.order-items__table-head-cell{color:#6b7280;font-size:.75rem;font-weight:700;padding:.75rem 1.5rem;text-transform:uppercase}.order-items__table-head-cell.text-right{text-align:right}.order-items__table-body>:not(:last-child){border-bottom:1px solid #f9fafb}.order-items__table-body-row{transition:all .4s ease}.order-items__table-body-row:hover{background-color:#f9fafb}.order-items__table-body-cell{color:#374151;padding:.75rem 1.5rem;white-space:nowrap}.order-items__table-body-cell.text-right{text-align:right}.order-items__totals{background-color:#f9fafb;border-top:1px solid #f3f4f6;padding:1rem 1.5rem;width:100%}.order-items__totals-container{display:flex;flex-flow:column;gap:.5rem;margin-left:auto;max-width:20rem;width:100%}.order-items__totals-item{display:flex;font-size:.875rem;justify-content:space-between;width:100%}.order-items__totals-item.actions{text-align:left}.order-items__totals-item.total-item{border-top:1px solid #e5e7eb;padding-top:.5rem}.order-items__totals-item-title{color:#6b7280}.order-items__totals-item-total{color:#111827;font-size:1.125rem;font-weight:700;line-height:100%}.order-items__totals-item-discount-wrapper{align-items:flex-end;display:flex;flex-flow:column nowrap;width:100%}.order-items__totals-item-discount{color:#9ca3af;font-size:.75rem;text-decoration:line-through}\n"] }]
8650
8740
  }], ctorParameters: () => [{ type: TicketQrModalService }], propDecorators: { order: [{
8651
8741
  type: Input,
8652
8742
  args: [{ required: true }]
@@ -8817,11 +8907,117 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImpo
8817
8907
  args: [{ required: true }]
8818
8908
  }] } });
8819
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
+
8820
9016
  // Config
8821
9017
 
8822
9018
  /**
8823
9019
  * Generated bundle index. Do not edit.
8824
9020
  */
8825
9021
 
8826
- 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 };
8827
9023
  //# sourceMappingURL=tickera-angular-components.mjs.map