/*
 * Copyright (C) 2021 The Gravitee team (http://gravitee.io)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
@use '@angular/material' as mat;

/**
  ✏️ Note: $mat-primary-palette, $mat-accent-palette, $mat-error-palette should also be defined with Material palettes 100 200 300 ...
  because material use these keys for some components.
  Not needed for other palettes because material doesn't use them.
 */

// Primary
$mat-primary-palette: mat.m2-define-palette(
  (
    // Keep sync GIO color token with Material color token
    darker80: #331003,
    900: #331003,
    darker60: #5e1c03,
    800: #5e1c03,
    darker40: #932b04,
    700: #932b04,
    darker20: #b33a0d,
    600: #b33a0d,
    default: #da3b00,
    500: #da3b00,
    lighter20: #f15115,
    400: #f15115,
    lighter40: #fe733f,
    300: #fe733f,
    lighter60: #ffa685,
    200: #ffa685,
    lighter80: #ffc2ac,
    100: #ffc2ac,
    50: #ffc2ac,
    contrast: (
      darker80: #fff,
      900: #fff,
      darker60: #fff,
      800: #fff,
      darker40: #fff,
      700: #fff,
      darker20: #fff,
      600: #fff,
      default: #fff,
      500: #fff,
      lighter20: #000,
      400: #000,
      lighter40: #000,
      300: #000,
      lighter60: #000,
      200: #000,
      lighter80: #000,
      100: #000,
      50: #000,
    )
  ),
  default,
  lighter80,
  darker80
);

// Accent
$mat-accent-palette: mat.m2-define-palette(
  (
    // Keep sync GIO color token with Material color token
    darker80: #331003,
    900: #331003,
    darker60: #a93b12,
    800: #a93b12,
    darker40: #a5610f,
    700: #a5610f,
    darker20: #da3b00,
    600: #da3b00,
    default: #ffa685,
    500: #ffa685,
    lighter20: #fe733f,
    400: #fe733f,
    lighter40: #ff8557,
    300: #ff8557,
    lighter60: #ffa685,
    200: #ffa685,
    lighter80: #ffc2ac,
    100: #ffc2ac,
    50: #ffc2ac,
    contrast: (
      darker80: #fff,
      900: #fff,
      darker60: #fff,
      800: #fff,
      darker40: #fff,
      700: #fff,
      darker20: #fff,
      600: #fff,
      default: #000,
      500: #000,
      lighter20: #000,
      400: #000,
      lighter40: #000,
      300: #000,
      lighter60: #000,
      200: #000,
      lighter80: #000,
      100: #000,
      50: #000,
    )
  ),
  default,
  lighter40,
  darker80
);

// Success color
$mat-success-palette: mat.m2-define-palette(
  (
    darker80: #1b3b2d,
    darker60: #225b42,
    darker40: #258259,
    darker20: #239c67,
    default: #22b374,
    lighter20: #2fcd88,
    lighter40: #3ee69e,
    lighter60: #56fbb3,
    lighter80: #8dffce,
    contrast: (
      darker80: #fff,
      darker60: #fff,
      darker40: #fff,
      darker20: #000,
      default: #000,
      lighter20: #000,
      lighter40: #000,
      lighter60: #000,
      lighter80: #000,
    ),
  ),
  default,
  lighter80,
  darker80
);

// Warning color
$mat-warning-palette: mat.m2-define-palette(
  (
    darker80: #331d04,
    darker60: #714109,
    darker40: #a5610f,
    darker20: #d47300,
    default: #ff8a00,
    lighter20: #ff9f2c,
    lighter40: #ffaf4f,
    lighter60: #ffc47e,
    lighter80: #ffd8aa,
    contrast: (
      darker80: #fff,
      darker60: #fff,
      darker40: #fff,
      darker20: #fff,
      default: #000,
      lighter20: #000,
      lighter40: #000,
      lighter60: #000,
      lighter80: #000,
    ),
  ),
  default,
  lighter80,
  darker80
);

// Error color
$mat-error-palette: mat.m2-define-palette(
  (
    darker80: #290505,
    900: #290505,
    darker60: #591212,
    800: #591212,
    darker40: #881d1e,
    700: #881d1e,
    darker20: #c72224,
    600: #c72224,
    default: #dd1d1f,
    500: #dd1d1f,
    lighter20: #ef3436,
    400: #ef3436,
    lighter40: #fb686a,
    300: #fb686a,
    lighter60: #ff9e9f,
    200: #ff9e9f,
    lighter80: #ffcfd0,
    100: #ffcfd0,
    50: #ffcfd0,
    contrast: (
      darker80: #fff,
      900: #fff,
      darker60: #fff,
      800: #fff,
      darker40: #fff,
      700: #fff,
      darker20: #fff,
      600: #fff,
      default: #fff,
      500: #fff,
      lighter20: #fff,
      400: #fff,
      lighter40: #000,
      300: #000,
      lighter60: #000,
      200: #000,
      lighter80: #000,
      100: #000,
      50: #000,
    ),
  ),
  default,
  lighter80,
  darker80
);

// Smoke palette
$mat-smoke-palette: mat.m2-define-palette(
  (
    darker80: #1e1b1b,
    900: #1e1b1b,
    darker60: #322f2f,
    800: #322f2f,
    darker40: #5c5959,
    700: #5c5959,
    darker20: #8a8383,
    600: #8a8383,
    default: #b2aaa9,
    500: #b2aaa9,
    lighter20: #d2cecd,
    400: #d2cecd,
    lighter40: #e3e3e3,
    300: #e3e3e3,
    lighter60: #f7f7f8,
    200: #f7f7f8,
    lighter80: #fff,
    100: #fff,
    50: #fff,
    contrast: (
      darker80: #fff,
      900: #fff,
      darker60: #fff,
      800: #fff,
      darker40: #fff,
      700: #fff,
      darker20: #000,
      600: #000,
      default: #000,
      500: #000,
      lighter20: #000,
      400: #000,
      lighter40: #000,
      300: #000,
      lighter60: #000,
      200: #000,
      lighter80: #000,
      100: #000,
      50: #000,
    ),
  ),
  default,
  lighter80,
  darker80
);

// Basic color
$mat-basic-palette: mat.m2-define-palette(
  (
    black: mat.m2-get-color-from-palette($mat-smoke-palette, darker80),
    white: mat.m2-get-color-from-palette($mat-smoke-palette, lighter80),
    disabled: rgb(0 0 0 / 12%),
    // Same color as the disabled color of material
    contrast:
      (
        black: mat.m2-get-color-from-palette($mat-smoke-palette, lighter80),
        white: mat.m2-get-color-from-palette($mat-smoke-palette, darker80),
        disabled: rgb(0 0 0 / 26%),
        // Same color as the disabled color of material
      ),
  ),
  black,
  white,
  white
);

// Space color
$mat-space-palette: mat.m2-define-palette(
  (
    default: mat.m2-get-color-from-palette($mat-smoke-palette, darker80),
    lighter10: mat.m2-get-color-from-palette($mat-smoke-palette, darker80),
    lighter20: mat.m2-get-color-from-palette($mat-smoke-palette, darker60),
    lighter30: mat.m2-get-color-from-palette($mat-smoke-palette, darker60),
    lighter40: mat.m2-get-color-from-palette($mat-smoke-palette, darker60),
    lighter50: mat.m2-get-color-from-palette($mat-smoke-palette, darker60),
    lighter60: mat.m2-get-color-from-palette($mat-smoke-palette, darker20),
    lighter70: mat.m2-get-color-from-palette($mat-smoke-palette, default),
    lighter80: mat.m2-get-color-from-palette($mat-smoke-palette, lighter40),
    contrast: (
      default: #fff,
      lighter10: #fff,
      lighter20: #fff,
      lighter30: #fff,
      lighter40: #fff,
      lighter50: #fff,
      lighter60: #000,
      lighter70: #000,
      lighter80: #000,
    ),
  ),
  default,
  lighter80,
  default
);

// Space color
$mat-dove-palette: mat.m2-define-palette(
  (
    darker80: mat.m2-get-color-from-palette($mat-smoke-palette, darker80),
    darker70: mat.m2-get-color-from-palette($mat-smoke-palette, darker60),
    darker60: mat.m2-get-color-from-palette($mat-smoke-palette, darker40),
    darker50: mat.m2-get-color-from-palette($mat-smoke-palette, darker20),
    darker40: mat.m2-get-color-from-palette($mat-smoke-palette, default),
    darker30: mat.m2-get-color-from-palette($mat-smoke-palette, default),
    darker20: mat.m2-get-color-from-palette($mat-smoke-palette, lighter20),
    darker10: mat.m2-get-color-from-palette($mat-smoke-palette, lighter60),
    default: mat.m2-get-color-from-palette($mat-smoke-palette, lighter60),
    contrast: (
      darker80: #fff,
      darker70: #fff,
      darker60: #fff,
      darker50: #000,
      darker40: #000,
      darker30: #000,
      darker20: #000,
      darker10: #000,
      default: #000,
    ),
  ),
  default,
  darker80,
  default
);

// Cyan color
$mat-cyan-palette: mat.m2-define-palette(
  (
    default: #006fb9,
    lighter20: #389adb,
    lighter40: #83c6f2,
    lighter60: #c4e8ff,
    lighter80: #e9f6ff,
    contrast: (
      default: #fff,
      lighter20: #000,
      lighter40: #000,
      lighter60: #000,
      lighter80: #000,
    ),
  ),
  default,
  lighter80,
  default
);

// Blue palette
$mat-blue-palette: mat.m2-define-palette(
  (
    default: #313fbf,
    lighter20: #6978ff,
    lighter40: #939dfc,
    lighter60: #bbc5ff,
    lighter80: #f1f3ff,
    contrast: (
      default: #fff,
      lighter20: #000,
      lighter40: #000,
      lighter60: #000,
      lighter80: #000,
    ),
  ),
  default,
  lighter80,
  default
);

// Method color
$mat-method-palette: mat.m2-define-palette(
  (
    patch: #ea96ff,
    post: #ffa996,
    put: #d2c5c3,
    get: #96fbff,
    delete: #ff96d0,
    option: #96ffd8,
    trace: #96d7ff,
    head: #96a6ff,
    connect: #a791ff,
    other: #d2cecd,
    contrast: (
      patch: #000,
      post: #000,
      put: #000,
      get: #000,
      delete: #000,
      option: #000,
      trace: #000,
      head: #000,
      connect: #000,
      other: #000,
    ),
  ),
  patch,
  patch,
  patch
);

// Gradient to be used for buttons and logo
$mat-gradient-palette: mat.m2-define-palette(
  (
    button: linear-gradient(222.67deg, #ff7200 7.45%, #f01114 94.83%),
    contrast: (
      button: #fff,
    ),
  ),
  button,
  button,
  button
);
