export class Internationalization {
  public static datePickerTranslationsFR: DatePickerTranslations = {
    months: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"],
    monthsShort: ["Jan", "Fev", "Mar", "Avr", "Mai", "Jun", "Jui", "Auo", "Sep", "Oct", "Nov", "Dec"],
    weekdays: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"],
    weekdaysShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"],
    weekdaysAbbrev: ["D", "L", "M", "M", "J", "V", "S"]
  };
  public static datePickerTranslationsNL: DatePickerTranslations = {
    months: ["Januari", "Februari", "Mars", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
    monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
    weekdays: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag"],
    weekdaysShort: ["Zon", "Maa", "Din", "Woe", "Don", "Vri", "Zat"],
    weekdaysAbbrev: ["Z", "M", "D", "W", "D", "V", "Z"]
  };
  public static datePickerTranslationsEN: DatePickerTranslations = {
    months: ["January", "February", "March", "April", "May", "June", "July", "Augustus", "September", "October", "November", "December"],
    monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
    weekdays: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
    weekdaysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
    weekdaysAbbrev: ["S", "M", "T", "W", "T", "F", "S"]
  };
}

export class DatePickerTranslations {
  months: Array<string>;
  monthsShort: Array<string>;
  weekdays: Array<string>;
  weekdaysShort: Array<string>;
  weekdaysAbbrev: Array<string>;
}

export enum Extensions {
  all = "[a-zA-Z0-9_]*",
  file = ".jpeg,.png,.jpg,.webp,.avif,.svg,.gif,.apng,.doc,.docx,.ppt,.pptx,.xls,.xlsx,.pdf,.txt",
  picture = ".jpeg,.png,.jpg,.webp,.avif,.svg,.gif,.apng,.heic,.heif",
  office = ".doc,.docx,.ppt,.pptx,.xls,.xlsx",
  other = ".pdf,.txt"
}

export class EntityTypeNames {
  //Classes
  public static AgGridView = "AgGridView";
  public static AgGridViewUser = "AgGridViewUser";
  public static EnumerationType = "EnumerationType";
  public static AuditLog = "AuditLog";
  public static ChatEntity = "ChatEntity";
  public static Notification = "Notification";
  public static ChatMessage = "ChatMessage";
  public static User = "User";
  public static Role = "Role";
  public static UserRole = "UserRole";
  public static RolePermission = "RolePermission";
  public static Permission = "Permission";
  public static Language = "Language"
  public static Locality = "Locality";
  public static Country = "Country";

  //ResourceNames
  public static ResourceNames = { //IQueryable names in API Controller (Arthur.API) used to fetch datas with breeze
    AgGridView: "AgGridViews",
    AgGridViewUser: "AgGridViewUsers",
    EnumerationType: "EnumerationTypes",
    AuditLog: "AuditLogs",
    ChatEntity: "ChatEntities",
    Notification: "Notifications",
    ChatMessage: "ChatMessages",
    User: "Users",
    Role: "Roles",
    UserRole: "UserRoles",
    RolePermission: "RolePermissions",
    Permission: "Permissions",
    Language: "Languages",
    Locality: "Localities",
    Country: "Countries"
  };
}

/**
 * Breakpoints expressed in pixels.
 *
 * @export
 * @class CSSBreakpoints
 */
export class CSSBreakpoints {
  /**
   * 320
   *
   * @static
   * @memberof CSSBreakpoints
   */
  public static xs = 320;
  /**
   * 480
   *
   * @static
   * @memberof CSSBreakpoints
   */
  public static sm = 480;
  /**
   * 768
   *
   * @static
   * @memberof CSSBreakpoints
   */
  public static md = 768;
  /**
   * 1024
   *
   * @static
   * @memberof CSSBreakpoints
   */
  public static lg = 1024;
  /**
   * 1280
   *
   * @static
   * @memberof CSSBreakpoints
   */
  public static xl = 1280;
  /**
   * 1536
   *
   * @static
   * @memberof CSSBreakpoints
   */
  public static xxl = 1536;
}

export type BoxSize = 'sm' | 'md' | 'lg' | 'xl' | 'all';
export type RolesMode = 'none' | 'single' | 'multiple';
export const SecurityRouteGroup = "menu.security";

export class Actions {
  public static Create = "create";
  public static Read = "read";
  public static Update = "update";
  public static Delete = "delete";
  public static All = "all";
}

export class SignalBindings {
  public static RefreshUiTableLoadingData = "refresh_ui_table_loading_data";
  public static RefreshUiTableCheck = "refresh_ui_table_check";
}

export class TinyMceOptions {
  public static contentStyle = "body { font-family: Tahoma }";
  public static toolbar = 'undo redo | fontsize fontfamily | bold italic underline superscript | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | removeformat | image ';
  public static plugins = 'advlist autolink lists link searchreplace visualblocks code fullscreen insertdatetime media table image';
  public static contextMenu = 'link | fontsize fontfamily styles | forecolor backcolor | removeformat | image'
}

export class AGGridColumnsWidth {
  public static IsSelected = 40;
}

export class LanguageCode {
  public static FR = "fr";
  public static NL = "nl";
  public static EN = "en";
}

export class KeyboardShortcut {
  public static Escape = "Escape";
  public static Backspace = "Backspace";
  public static Enter = "Enter";
  public static ArrowDown = "ArrowDown";
  public static Tab = "Tab";
}