tickera-angular-components 0.0.1-dev.3 → 0.0.1-dev.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/i18n/en.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "formErrors": {
3
+ "required": "This field is required",
4
+ "minlength": "Must be at least {{minLength}} characters",
5
+ "maxlength": "Must not exceed {{maxLength}} characters",
6
+ "pattern": "Invalid format",
7
+ "email": "Invalid format",
8
+ "mustMatch": "Passwords do not match",
9
+ "invalidField": "Invalid field",
10
+ "invalidSelection": "Invalid selection"
11
+ },
12
+ "common": {
13
+ "selectOption": "Select option"
14
+ },
15
+ "fileUpload": {
16
+ "dropSingle": "Drag and drop a file here, or click to select",
17
+ "dropMultiple": "Drag and drop files here, or click to select",
18
+ "allowedExtensions": "Allowed extensions:",
19
+ "maxSize": "Maximum size:",
20
+ "sizeError": "File {{fileName}} exceeds maximum size of {{maxSize}} MB",
21
+ "extensionError": "File {{fileName}} has an invalid extension. Use: {{extensions}}",
22
+ "fileTypeImages": "Images",
23
+ "fileTypeExcel": "Excel",
24
+ "fileTypeWord": "Word",
25
+ "fileTypeText": "Text",
26
+ "fileTypeOther": "Other"
27
+ },
28
+ "deleteConfirmation": {
29
+ "warning": "Are you sure you want to delete this item?",
30
+ "instructions": "Type <strong>delete</strong> to confirm",
31
+ "placeholder": "Type delete",
32
+ "cancel": "Cancel",
33
+ "delete": "Delete"
34
+ },
35
+ "changePassword": {
36
+ "title": "Change password",
37
+ "newPasswordLabel": "New password",
38
+ "newPasswordPlaceholder": "Enter new password",
39
+ "confirmPasswordLabel": "Confirm password",
40
+ "confirmPasswordPlaceholder": "Confirm new password",
41
+ "cancel": "Cancel",
42
+ "save": "Save",
43
+ "saving": "Saving..."
44
+ }
45
+ }
package/i18n/es.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "formErrors": {
3
+ "required": "Este campo es requerido",
4
+ "minlength": "Debe tener al menos {{minLength}} caracteres",
5
+ "maxlength": "No debe exceder {{maxLength}} caracteres",
6
+ "pattern": "El formato no es válido",
7
+ "email": "El formato no es válido",
8
+ "mustMatch": "Las contraseñas no coinciden",
9
+ "invalidField": "Campo inválido",
10
+ "invalidSelection": "Selección inválida"
11
+ },
12
+ "common": {
13
+ "selectOption": "Seleccionar opción"
14
+ },
15
+ "fileUpload": {
16
+ "dropSingle": "Arrastra y suelta un archivo aquí, o haz clic para seleccionar",
17
+ "dropMultiple": "Arrastra y suelta archivos aquí, o haz clic para seleccionar",
18
+ "allowedExtensions": "Extensiones permitidas:",
19
+ "maxSize": "Tamaño máximo:",
20
+ "sizeError": "El archivo {{fileName}} excede el tamaño máximo de {{maxSize}} MB",
21
+ "extensionError": "El archivo {{fileName}} no tiene una extensión permitida. Use: {{extensions}}",
22
+ "fileTypeImages": "Imágenes",
23
+ "fileTypeExcel": "Excel",
24
+ "fileTypeWord": "Word",
25
+ "fileTypeText": "Texto",
26
+ "fileTypeOther": "Otro"
27
+ },
28
+ "deleteConfirmation": {
29
+ "warning": "¿Estás seguro de que deseas eliminar este elemento?",
30
+ "instructions": "Escriba <strong>eliminar</strong> para confirmar",
31
+ "placeholder": "Escriba eliminar",
32
+ "cancel": "Cancelar",
33
+ "delete": "Eliminar"
34
+ },
35
+ "changePassword": {
36
+ "title": "Cambiar contraseña",
37
+ "newPasswordLabel": "Nueva contraseña",
38
+ "newPasswordPlaceholder": "Ingrese la nueva contraseña",
39
+ "confirmPasswordLabel": "Confirmar contraseña",
40
+ "confirmPasswordPlaceholder": "Confirme la nueva contraseña",
41
+ "cancel": "Cancelar",
42
+ "save": "Guardar",
43
+ "saving": "Guardando..."
44
+ }
45
+ }
package/index.d.ts CHANGED
@@ -1,33 +1,31 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, EnvironmentProviders, WritableSignal, EventEmitter, Injector, Type, OnInit, OnDestroy, ElementRef, OnChanges, SimpleChanges } from '@angular/core';
3
- import { ValidatorFn, FormGroup, FormBuilder, ControlValueAccessor, NgControl, Validator, AbstractControl, FormControl } from '@angular/forms';
4
- import { HttpClient, HttpInterceptorFn } from '@angular/common/http';
3
+ import { TranslocoLoader, TranslocoService } from '@jsverse/transloco';
5
4
  import * as rxjs from 'rxjs';
6
5
  import { Observable, Subject } from 'rxjs';
7
- import { TranslocoService } from '@jsverse/transloco';
6
+ import { ValidatorFn, FormGroup, FormBuilder, ControlValueAccessor, NgControl, Validator, AbstractControl, FormControl } from '@angular/forms';
7
+ import { HttpClient, HttpInterceptorFn } from '@angular/common/http';
8
8
  import { Toolbar, Editor } from 'ngx-editor';
9
9
  import { Router } from '@angular/router';
10
10
 
11
11
  interface TickeraComponentsConfig {
12
12
  apiUrl: string;
13
13
  accessTokenKey?: string;
14
+ defaultLang?: string;
15
+ availableLangs?: string[];
14
16
  }
15
17
  declare const TICKERA_COMPONENTS_CONFIG: InjectionToken<TickeraComponentsConfig>;
16
18
  declare function provideTickeraComponents(config: TickeraComponentsConfig): EnvironmentProviders;
17
19
 
18
- declare const ALERT_BASE_CLASSES = "border rounded relative flex items-center gap-2 px-4 py-2";
19
- declare const ALERT_COLOR_CLASSES: {
20
- success: string;
21
- error: string;
22
- warning: string;
23
- info: string;
24
- };
25
- declare const ALERT_SIZE_CLASSES: {
26
- xs: string;
27
- sm: string;
28
- md: string;
29
- lg: string;
30
- };
20
+ declare class TickeraTranslocoLoader implements TranslocoLoader {
21
+ getTranslation(lang: string): Observable<Record<string, unknown>>;
22
+ }
23
+
24
+ declare function getStoredLanguage(): string;
25
+ declare function setStoredLanguage(lang: string): void;
26
+ declare function getBrowserLanguage(): string;
27
+ declare function resolveLanguage(): string;
28
+
31
29
  declare const ALERT_ICONS: {
32
30
  success: string;
33
31
  error: string;
@@ -35,20 +33,9 @@ declare const ALERT_ICONS: {
35
33
  info: string;
36
34
  };
37
35
 
38
- declare const BUTTON_VARIANT_CLASSES: {
39
- primary: string;
40
- secondary: string;
41
- terciary: string;
42
- success: string;
43
- transparent: string;
44
- };
45
- declare const BASE_BUTTON_CLASSES: string;
46
- declare const BUTTON_SIZES_CLASSES: {
47
- xs: string;
48
- sm: string;
49
- md: string;
50
- lg: string;
51
- };
36
+ declare const BUTTON_VARIANT_CLASSES: Record<string, string>;
37
+ declare const BASE_BUTTON_CLASSES = "btn";
38
+ declare const BUTTON_SIZES_CLASSES: Record<string, string>;
52
39
 
53
40
  declare const FORM_ERROR_MESSAGES: Record<string, string>;
54
41
 
@@ -1341,7 +1328,7 @@ declare class AppButtonComponent {
1341
1328
  disabled: boolean;
1342
1329
  loading: boolean;
1343
1330
  type: 'button' | 'submit';
1344
- variant: 'primary' | 'secondary' | 'terciary' | 'success' | 'transparent';
1331
+ variant: 'primary' | 'secondary' | 'tertiary' | 'success' | 'transparent';
1345
1332
  text: string;
1346
1333
  size: 'xs' | 'sm' | 'md' | 'lg';
1347
1334
  loadingText: string;
@@ -1353,7 +1340,6 @@ declare class AppButtonComponent {
1353
1340
  }
1354
1341
 
1355
1342
  declare class AppLinkButtonComponent {
1356
- protected readonly BASE_BUTTON_CLASSES: string;
1357
1343
  disabled: boolean;
1358
1344
  loading: boolean;
1359
1345
  target: '_blank' | '_self' | '_parent' | '_top';
@@ -1374,9 +1360,6 @@ declare class AppAlertComponent {
1374
1360
  text: string;
1375
1361
  closeable: boolean;
1376
1362
  size: 'xs' | 'sm' | 'md' | 'lg';
1377
- get alertColorClasses(): string;
1378
- get alertSizeClasses(): string;
1379
- get alertClasses(): string;
1380
1363
  get alertIcon(): string;
1381
1364
  static ɵfac: i0.ɵɵFactoryDeclaration<AppAlertComponent, never>;
1382
1365
  static ɵcmp: i0.ɵɵComponentDeclaration<AppAlertComponent, "app-alert", never, { "type": { "alias": "type"; "required": false; }; "text": { "alias": "text"; "required": false; }; "closeable": { "alias": "closeable"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
@@ -1416,8 +1399,6 @@ declare class AppModalComponent {
1416
1399
  isOpen: WritableSignal<boolean>;
1417
1400
  size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';
1418
1401
  closeModal: EventEmitter<void>;
1419
- private readonly SIZE_CLASSES;
1420
- get sizeClass(): string;
1421
1402
  onCloseModal(): void;
1422
1403
  static ɵfac: i0.ɵɵFactoryDeclaration<AppModalComponent, never>;
1423
1404
  static ɵcmp: i0.ɵɵComponentDeclaration<AppModalComponent, "app-modal", never, { "title": { "alias": "title"; "required": false; }; "disableClose": { "alias": "disableClose"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, { "closeModal": "closeModal"; }, never, ["*"], true, never>;
@@ -1527,7 +1508,6 @@ declare class FormSelectComponent implements ControlValueAccessor {
1527
1508
  get showError(): boolean;
1528
1509
  get errorMessage(): string;
1529
1510
  get resolvedDefaultOptionLabel(): string;
1530
- get selectClasses(): string;
1531
1511
  get fieldGroupClasses(): string;
1532
1512
  static ɵfac: i0.ɵɵFactoryDeclaration<FormSelectComponent, [{ optional: true; self: true; }, null]>;
1533
1513
  static ɵcmp: i0.ɵɵComponentDeclaration<FormSelectComponent, "form-select", never, { "label": { "alias": "label"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "options": { "alias": "options"; "required": false; }; "fieldGroupClass": { "alias": "fieldGroupClass"; "required": false; }; "showDefaultOption": { "alias": "showDefaultOption"; "required": false; }; "defaultOptionLabel": { "alias": "defaultOptionLabel"; "required": false; }; }, {}, never, never, true, never>;
@@ -1560,7 +1540,6 @@ declare class FormTextareaComponent implements ControlValueAccessor {
1560
1540
  get inputId(): string;
1561
1541
  get showError(): boolean;
1562
1542
  get errorMessage(): string;
1563
- get inputClasses(): string;
1564
1543
  get fieldGroupClasses(): string;
1565
1544
  static ɵfac: i0.ɵɵFactoryDeclaration<FormTextareaComponent, [{ optional: true; self: true; }, null]>;
1566
1545
  static ɵcmp: i0.ɵɵComponentDeclaration<FormTextareaComponent, "form-textarea", never, { "label": { "alias": "label"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "minlength": { "alias": "minlength"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "cols": { "alias": "cols"; "required": false; }; "fieldGroupClass": { "alias": "fieldGroupClass"; "required": false; }; }, {}, never, never, true, never>;
@@ -1628,7 +1607,6 @@ declare class ColorPickerComponent implements ControlValueAccessor {
1628
1607
  selectPresetColor(color: string): void;
1629
1608
  get inputId(): string;
1630
1609
  get showError(): boolean;
1631
- get inputClasses(): string;
1632
1610
  get fieldGroupClasses(): string;
1633
1611
  isValidHexColor(color: string): boolean;
1634
1612
  static ɵfac: i0.ɵɵFactoryDeclaration<ColorPickerComponent, [{ optional: true; self: true; }, null]>;
@@ -1665,7 +1643,6 @@ declare class DateInputComponent implements ControlValueAccessor {
1665
1643
  get inputId(): string;
1666
1644
  get showError(): boolean;
1667
1645
  get errorMessage(): string;
1668
- get inputClasses(): string;
1669
1646
  get fieldGroupClasses(): string;
1670
1647
  static ɵfac: i0.ɵɵFactoryDeclaration<DateInputComponent, [{ optional: true; self: true; }, null]>;
1671
1648
  static ɵcmp: i0.ɵɵComponentDeclaration<DateInputComponent, "date-input", never, { "label": { "alias": "label"; "required": false; }; "type": { "alias": "type"; "required": false; }; "includeTime": { "alias": "includeTime"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "fieldGroupClass": { "alias": "fieldGroupClass"; "required": false; }; "dateFormat": { "alias": "dateFormat"; "required": false; }; }, {}, never, never, true, never>;
@@ -1692,9 +1669,6 @@ declare class ToggleSwitchComponent implements ControlValueAccessor {
1692
1669
  setDisabledState(isDisabled: boolean): void;
1693
1670
  onToggle(): void;
1694
1671
  get inputId(): string;
1695
- get toggleSizeClasses(): string;
1696
- get toggleThumbSizeClasses(): string;
1697
- get toggleThumbTranslateClasses(): string;
1698
1672
  get fieldGroupClasses(): string;
1699
1673
  static ɵfac: i0.ɵɵFactoryDeclaration<ToggleSwitchComponent, [{ optional: true; self: true; }]>;
1700
1674
  static ɵcmp: i0.ɵɵComponentDeclaration<ToggleSwitchComponent, "toggle-switch", never, { "label": { "alias": "label"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; "fieldGroupClass": { "alias": "fieldGroupClass"; "required": false; }; "description": { "alias": "description"; "required": false; }; }, { "toggleClick": "toggleClick"; }, never, never, true, never>;
@@ -2336,5 +2310,5 @@ declare class ZonePriceListComponent {
2336
2310
  static ɵcmp: i0.ɵɵComponentDeclaration<ZonePriceListComponent, "zone-price-list", never, { "zones": { "alias": "zones"; "required": true; }; }, {}, never, never, true, never>;
2337
2311
  }
2338
2312
 
2339
- export { ADMIN_API_ROUTES, ALERT_BASE_CLASSES, ALERT_COLOR_CLASSES, ALERT_ICONS, ALERT_SIZE_CLASSES, AdminSelectComponent, AdminService, ApiService, AppAlertComponent, AppButtonComponent, AppLinkButtonComponent, AppModalComponent, AsyncSelectComponent, AuditInformationComponent, BASE_BUTTON_CLASSES, BASE_INPUT_CLASSES, BUTTON_SIZES_CLASSES, BUTTON_VARIANT_CLASSES, CITY_API_ENDPOINTS, COUNTRY_API_ENDPOINTS, CUSTOMERS_API_ROUTES, ChangePasswordFormComponent, ChangePasswordFormService, CitiesService, CitySelectComponent, ColorPickerComponent, CorporateBondStatus, CountrySelectComponent, CountryService, CouponApplicability, CouponDiscountType, CustomerSelectComponent, CustomerService, DateInputComponent, DateService, DaySelectorGridComponent, DeleteConfirmationComponent, DeleteConfirmationService, DynamicTableComponent, ERROR_INPUT_CLASSES, EndDateGreaterThanStartValidator, FORM_ERROR_MESSAGES, FileType, FileUploadComponent, FileUploadPreviewComponent, FormEditorComponent, FormInputComponent, FormSelectComponent, FormTextareaComponent, LanguageSwitcherComponent, LoadingModalService, LoadingmModalComponent, MinTodayValidator, MustMatchValidator, OrderItemType, OrderStatus, PERFORMANCES_API_ROUTES, PRICE_ZONES_API_ROUTES, PRODUCTS_API_ROUTES, PerformanceCardComponent, PerformanceCardListComponent, PerformanceMultiSelectComponent, PerformanceSelectComponent, PerformanceService, PerformanceStatus, PerformanceStepperComponent, PerformanceTicketStatus, PerformancesListEventsService, PriceZoneEventService, PriceZoneFormModalService, PriceZoneSelectComponent, PriceZoneService, ProductMultiSelectComponent, ProductSelectComponent, ProductService, RoomMapElementOrientation, RoomMapElementType, SHOWS_API_ROUTES, STATE_API_ENDPOINTS, ShowMultiSelectComponent, ShowSelectComponent, ShowService, ShowsFilterComponent, StateSelectComponent, StatesService, TICKERA_COMPONENTS_CONFIG, ToastService, ToggleSwitchComponent, VENUES_API_ROUTES, ZonePriceItemComponent, ZonePriceListComponent, authInterceptor, formatCitiesResponseToSelect, getCustomerFullname, parseJsonToFormDataAdvanced, provideTickeraComponents, transformImageToFile };
2313
+ export { ADMIN_API_ROUTES, ALERT_ICONS, AdminSelectComponent, AdminService, ApiService, AppAlertComponent, AppButtonComponent, AppLinkButtonComponent, AppModalComponent, AsyncSelectComponent, AuditInformationComponent, BASE_BUTTON_CLASSES, BASE_INPUT_CLASSES, BUTTON_SIZES_CLASSES, BUTTON_VARIANT_CLASSES, CITY_API_ENDPOINTS, COUNTRY_API_ENDPOINTS, CUSTOMERS_API_ROUTES, ChangePasswordFormComponent, ChangePasswordFormService, CitiesService, CitySelectComponent, ColorPickerComponent, CorporateBondStatus, CountrySelectComponent, CountryService, CouponApplicability, CouponDiscountType, CustomerSelectComponent, CustomerService, DateInputComponent, DateService, DaySelectorGridComponent, DeleteConfirmationComponent, DeleteConfirmationService, DynamicTableComponent, ERROR_INPUT_CLASSES, EndDateGreaterThanStartValidator, FORM_ERROR_MESSAGES, FileType, FileUploadComponent, FileUploadPreviewComponent, FormEditorComponent, FormInputComponent, FormSelectComponent, FormTextareaComponent, LanguageSwitcherComponent, LoadingModalService, LoadingmModalComponent, MinTodayValidator, MustMatchValidator, OrderItemType, OrderStatus, PERFORMANCES_API_ROUTES, PRICE_ZONES_API_ROUTES, PRODUCTS_API_ROUTES, PerformanceCardComponent, PerformanceCardListComponent, PerformanceMultiSelectComponent, PerformanceSelectComponent, PerformanceService, PerformanceStatus, PerformanceStepperComponent, PerformanceTicketStatus, PerformancesListEventsService, PriceZoneEventService, PriceZoneFormModalService, PriceZoneSelectComponent, PriceZoneService, ProductMultiSelectComponent, ProductSelectComponent, ProductService, RoomMapElementOrientation, RoomMapElementType, SHOWS_API_ROUTES, STATE_API_ENDPOINTS, ShowMultiSelectComponent, ShowSelectComponent, ShowService, ShowsFilterComponent, StateSelectComponent, StatesService, TICKERA_COMPONENTS_CONFIG, TickeraTranslocoLoader, ToastService, ToggleSwitchComponent, VENUES_API_ROUTES, ZonePriceItemComponent, ZonePriceListComponent, authInterceptor, formatCitiesResponseToSelect, getBrowserLanguage, getCustomerFullname, getStoredLanguage, parseJsonToFormDataAdvanced, provideTickeraComponents, resolveLanguage, setStoredLanguage, transformImageToFile };
2340
2314
  export type { Admin, AdminsResponse, AsyncSelectConfig, Auditable, CitiesResponse, City, CityResponse, CorporateBond, CorporateBondCode, CorporateBondResponse, CountriesResponse, Country, CountryResponse, Coupon, CouponResponse, Customer, CustomerResponse, CustomersResponse, DailyPerformanceHall, DailyPerformanceItem, DailyPerformancePriceZone, DailyPerformanceShow, DailyPerformanceVenue, DailyPerformancesResponse, DeleteConfirmationOpen, DragDropEvent, DynamicTableHeader, ElementPropertiesTab, FetchCitiesParams, FetchDailyPerformancesParams, FetchShowsParams, FileUploadConfig, FindAllPriceZoneParams, Hall, HallFloor, NumerationConfig, Order, OrderItem, OrderResponse, OrdersResponse, Performance, PerformanceAvailableDay, PerformanceBookingDataResponse, PerformanceResponse, PerformanceTicket, PerformancesAvailableDaysResponse, PerformancesResponseInterface, PriceZone, PriceZoneResponse, PriceZoneUpdateResponse, PriceZonesResponseInterface, Product, ProductResponse, ProductsResponseInterface, RoomMap, RoomMapBaseElement, RoomMapCanvasConfiguration, RoomMapCanvasElement, RoomMapChairPosition, RoomMapElementTemplate, RoomMapExitElement, RoomMapGridPosition, RoomMapPosition, RoomMapProductionAreaElement, RoomMapSeatDisplayState, RoomMapSeatElement, RoomMapSeatState, RoomMapSize, RoomMapStageElement, RoomMapTableElement, RoomMapUnavailableElement, RoomMapZoneElement, SelectOption, Show, ShowImage, ShowResponse, ShowType, ShowsResponseInterface, State, StateResponse, StatesResponse, TickeraComponentsConfig, UploadedFile, ValidateCorporateBondResponse, ValidateCouponResponse, Venue, VenueImage };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tickera-angular-components",
3
- "version": "0.0.1-dev.3",
3
+ "version": "0.0.1-dev.5",
4
4
  "description": "Angular 20 standalone component library for Tickera backoffice system",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -0,0 +1 @@
1
+ @font-face{font-family:"Open Sans";font-style:normal;font-weight:300;font-display:swap;src:url("./fonts/open-sans-latin-300-normal.woff2") format("woff2")}@font-face{font-family:"Open Sans";font-style:italic;font-weight:300;font-display:swap;src:url("./fonts/open-sans-latin-300-italic.woff2") format("woff2")}@font-face{font-family:"Open Sans";font-style:normal;font-weight:400;font-display:swap;src:url("./fonts/open-sans-latin-400-normal.woff2") format("woff2")}@font-face{font-family:"Open Sans";font-style:italic;font-weight:400;font-display:swap;src:url("./fonts/open-sans-latin-400-italic.woff2") format("woff2")}@font-face{font-family:"Open Sans";font-style:normal;font-weight:500;font-display:swap;src:url("./fonts/open-sans-latin-500-normal.woff2") format("woff2")}@font-face{font-family:"Open Sans";font-style:italic;font-weight:500;font-display:swap;src:url("./fonts/open-sans-latin-500-italic.woff2") format("woff2")}@font-face{font-family:"Open Sans";font-style:normal;font-weight:600;font-display:swap;src:url("./fonts/open-sans-latin-600-normal.woff2") format("woff2")}@font-face{font-family:"Open Sans";font-style:italic;font-weight:600;font-display:swap;src:url("./fonts/open-sans-latin-600-italic.woff2") format("woff2")}@font-face{font-family:"Open Sans";font-style:normal;font-weight:700;font-display:swap;src:url("./fonts/open-sans-latin-700-normal.woff2") format("woff2")}@font-face{font-family:"Open Sans";font-style:italic;font-weight:700;font-display:swap;src:url("./fonts/open-sans-latin-700-italic.woff2") format("woff2")}@font-face{font-family:"remixicon";font-style:normal;font-weight:normal;font-display:swap;src:url("./fonts/remixicon.woff2") format("woff2")}[class^=ri-],[class*=" ri-"]{font-family:"remixicon" !important;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*::before,*::after{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1rem;line-height:1.5;color:#111827;background-color:#fff}:focus-visible{outline:2px solid #4f46e5;outline-offset:2px}button{font-family:inherit}input,textarea,select{font-family:inherit}a{color:inherit;text-decoration:inherit}