Paletas

    O mecanismo de temas Ignite UI for Angular fornece diversas funções e mixins poderosos para gerar e recuperar cores.

    Visão geral

    Paletas no contexto do Ignite UI for Angular são declaradas como Sass Maps com as chaves desses mapas sendo as cores da paleta (primary, secondary, surface, etc.). Cada cor é, por sua vez, um mapa em si e tem todas as variantes de cores listadas como chaves. Os valores atribuídos a essas variantes de cores são as cores reais usadas em todos os temas de componentes. Todos os mapas de paletas são gerados programaticamente pela função palette. A função aceita argumentos para as cores primary, secondary, surface, gray, info, success, warn e error. A cor primary geralmente é a cor da sua marca. Ela é usada principalmente para estilizar elementos estáticos, como o componente igx-navbar. A cor secondary é aquela usada em elementos que são acionáveis, como botões, interruptores, controles deslizantes, etc. A cor surface é aquela usada para a cor de fundo de alguns componentes, como cartões, menus, seletores de data/hora, planilhas de banners, etc. Os únicos argumentos necessários são os das cores primary, secondary e surface. Usamos como padrão as cores para surface, gray, info, success, warn e error para um conjunto predefinido de nossa escolha.

    Para começar com sua primeira paleta de cores, crie um arquivo scss que seria o arquivo base para seu tema global. Vou chamar o meu de_variables.scss.

    // _variables.scss
    
    $melon-palette: palette(
        $primary: #2ab759,
        $secondary: #f96a88,
        $surface: #e5e5e5
    );
    
    Warning

    O valor que você passa para $primary, $secondary e surface ou qualquer outra cor deve ser do tipo color. Você não pode passar variáveis CSS como argumentos, pois elas não podem ser resolvidas no tempo de construção do Sass.

    Criamos uma paleta que contém variantes para todas as cores, incluindo cores de contraste de texto criadas automaticamente para cada variante. Se você não verificou a documentação sobre paletas com variáveis CSS, vá conferir agora. Ela contém informações sobre todas as variantes de cores de uma paleta.

    A função palette faz muito internamente para ajudar você a criar cores no momento da construção que você pode reutilizar em seus documentos.scss. A função é boa porque criará um enorme mapa de cores para você, mas o algoritmo para gerar as variantes de cores é muito opinativo e pode não corresponder às suas necessidades exatas. Nossos temas de componentes não se importam com a forma como a paleta é gerada, eles só se importam com o formato do mapa.

    Caso você queira criar sua paleta manualmente ou criar você mesmo a função de geração de paleta, aqui está o que esperamos obter como um mapa de paleta.

    $handmade-palette: (
        'primary': (
            '50': #e6eff8,
            '50-contrast': black,
            '100': #bfd7f2,
            '100-contrast': black,
            '200': #98bfec,
            '200-contrast': black,
            '300': #85b5e9,
            '300-contrast': white,
            '400': #73a6e4,
            '400-contrast': white,
            '500': #6797de,
            '500-contrast': white,
            '600': #3681dd,
            '600-contrast': white,
            '700': #357fda,
            '700-contrast': white,
            '800': #306dc8,
            '800-contrast': white,
            '900': #284ea8,
            '900-contrast': white,
            'A100': #98bfec,
            'A100-contrast': white,
            'A200': #73a6e4,
            'A200-contrast': white,
            'A400': #3681dd,
            'A400-contrast': white,
            'A700': #284ea8,
            'A700-contrast': white
        ),
        'secondary': (
            '50': #fef7e2,
            '50-contrast': black,
            '100': #fdeab7,
            '100-contrast': black,
            '200': #fbdd89,
            '200-contrast': black,
            '300': #fad15c,
            '300-contrast': black,
            '400': #f9c63f,
            '400-contrast': black,
            '500': #f7bd32,
            '500-contrast': white,
            '600': #f6b02d,
            '600-contrast': white,
            '700': #f49e2a,
            '700-contrast': white,
            '800': #f38e28,
            '800-contrast': white,
            '900': #f38e28,
            '900-contrast': white,
            'A100': #fbdd89,
            'A100-contrast': black,
            'A200': #f9c63f,
            'A200-contrast': black,
            'A400': #f6b02d,
            'A400-contrast': white,
            'A700': #f38e28,
            'A700-contrast': white
        ),
        'gray': (
            '50': #fff,
            '50-contrast': black,
            '100': #fafafa,
            '100-contrast': black,
            '200': #f5f5f5,
            '200-contrast': black,
            '300': #f0f0f0,
            '300-contrast': black,
            '400': #dedede,
            '400-contrast': black,
            '500': #b3b2b2,
            '500-contrast': black,
            '600': #979696,
            '600-contrast': white,
            '700': #7b7a7a,
            '700-contrast': white,
            '800': #404040,
            '800-contrast': white,
            '900': #1a1a1a,
            '900-contrast': white
        ),
        'info': (
            '500': rgb(18, 118, 211),
            '500-contrast': black
        ),
        'success': (
            '500': rgb(76, 184, 96),
            '500-contrast': black
        ),
        'warn': (
            '500': rgb(251, 178, 60),
            '500-contrast': black
        ),
        'error': (
            '500': rgb(255, 20, 75),
            '500-contrast': black
        ),
        'surface': (
            '500': rgb(255, 255, 255),
            '500-contrast': black
        )
    );
    
    
    Warning

    É importante definir as chaves do mapa como strings, explicitamente entre aspas - 'primary', 'secondary', 'gray', etc. O mesmo se aplica a todas as variantes de cor -500, 500-contrast, etc.

    Predefined Palettes

    Fornecemos paletas claras e escuras predefinidas, que você pode usar junto com nossos esquemas para criar temas para seus componentes:

    • Paletas de Luz
      • $light-material-palette
      • $light-fluent-excel-palette
      • $light-fluent-word-palette
      • $light-fluent-palette
      • $light-bootstrap-palette
      • $light-indigo-palette
    • Paletas escuras
      • $dark-material-palette
      • $dark-fluent-excel-palette
      • $dark-fluent-word-palette
      • $dark-fluent-palette
      • $dark-bootstrap-palette
      • $dark-indigo-palette

    Você pode misturar e combinar todas as paletas claras com um esquema de luz de sua escolha e vice-versa - todas as paletas escuras com um esquema escuro que você acha que melhor atenderá às suas necessidades e visão.

    Grayscale Colors

    Semelhante às cores primary, secondary e surface, você pode fornecer outra cor para a função palette que será usada para gerar tons de cinza. A cor padrão usada para gerar a paleta gray em todos os temas claros é #000, ou mais conhecida como black. As variantes de cor gray são usadas principalmente para definir cores de texto em componentes. Modificar o valor é útil ao alterar as cores de fundo ou de superfície em seu aplicativo. Por exemplo, se seu aplicativo usa um fundo de superfície mais escuro, definir a cor gray como white é sensato e forçará todas as cores de texto a serem baseadas em tons de white.

    Para gerar uma paleta que usa white para seus tons de cinza:

    // Import the Ignite UI themes library first
    $company-color: #2ab759; /* Some green shade I like */
    $secondary-color: #f96a88; /* Watermelon pink */
    $surface-color: #e5e5e5 /* Light gray for backgrounds/ */
    $grayscale-base: #fff; /* Used to generate shades of gray */
    
    $my-color-palette: palette(
        $primary: $company-color,
        $secondary: $secondary-color,
        $surface: $surface-color,
        $gray: $grayscale-base
    );
    

    Colors Variants

    Fornecemos uma função que é fácil de lembrar e usar -color. Ela pode receber até quatro argumentos -palette, color, variant e opacity;

    // Get the primary color as CSS variable reference to the 500 color variant
    $my-primary-500: color();
    
    // Get the primary color as CSS variable reference to the 600 color variant
    $my-primary-600: color($variant: 600);
    
    // Get the primary color as CSS variable reference to the 600 color variant with .5 opacity
    $my-primary-600-opacity: color($variant: 600, $opacity: .5);
    
    // Get the secondary A700 color variant as a HEX value from $my-palette
    $my-primary-A700: color($my-palette, 'secondary', 'A700');
    
    // Get the warn 500 color variant as HEX value from $my-palette
    $my-warning-color: color($my-palette, 'warn');
    
    
    
    .my-awesome-class {
        background: $my-primary-600;
        border-color: $my-primary-A700;
    }
    
    .warning-bg {
        background: $my-warning-color;
    }
    

    Se você omitir o argumento $palette, você obterá uma string referenciando a variável CSS correspondente variant. Se você não fornecer $color e/ou $variant, eles serão atribuídos a primary e 500 respectivamente.

    Contrast Text Colors

    Semelhante à forma como recuperamos variantes de cor, há uma maneira de obter a cor do texto de contraste para cada uma das variantes de cor na paleta com a função contrast-color, que aceita o mesmo tipo e número de argumentos que a função color.

    $my-primary-800: color($my-palette, 'primary', 600);
    $my-primary-800-text: contrast-color($my-palette, 'primary', 600);
    
    // sample usage
    .my-awesome-article {
        color: $my-primary-800-text;
        background: $my-primary-800;
    }
    

    Color Classes

    Entendemos que algumas pessoas preferem usar classes CSS para aplicar cores a elementos da web, seja texto ou plano de fundo. Temos um mixin que permite gerar classes CSS para cada cor na paleta.

    O mixin recebe alguns argumentos que permitem que você controle o nome da classe CSS, bem como a propriedade CSS para a qual passar a cor da paleta;

    • $prop- A propriedade CSS para atribuir a cor.
    • $prefix- Uma string de prefixo a ser anexada ao nome da classe gerada. O padrão é 'igx'.
    • $suffix- Uma string de sufixo a ser anexada ao nome da classe gerada.
    • $palette- A paleta a ser usada.

    Por exemplo, se você quiser gerar classes CSS que apliquem cor de fundo aos elementos, você pode fazer o seguinte:

    @include color-classes(
        $prop: 'background-color',
        $prefix: 'bg'
    );
    

    O código acima gerará classes CSS para cada variante de cor na paleta. Por exemplo, a variante de 500 cores da paleta primary receberá a seguinte classe.bg-primary-500;

    <div class="bg-primary-500">...</div>
    

    CSS Variables

    Ao ler sobre a paleta de cores na seção Variáveis CSS da documentação, você deve ter notado que todas as cores da paleta são incluídas como variáveis CSS. Fazemos isso internamente toda vez que geramos um tema usando o mixin theme. O theme chama outro mixin em seu corpo -palette. Ele pega uma paleta e converte as cores nela em variáveis CSS.

    Use este mixin quando quiser que as cores da sua paleta personalizada sejam incluídas como variáveis CSS.

    Aqui está um exemplo:

    $my-palette: palette(
      $primary: #2ab759,
      $secondary: #f96a88,
      $surface: #e5e5e5
    );
    
    @include palette($my-palette);
    

    API Reference

    Additional Resources

    Nossa comunidade é ativa e sempre acolhedora para novas ideias.