Como personalizar um tema React usando o Ant Design

Publicados: 2022-03-01

É um pouco eufemismo dizer que um bom design de interface do usuário (UI) desempenha um papel importante no envolvimento do público do seu site e levá-los a uma conversão. Embora qualquer boa interface do usuário exija um design interativo, intuitivo, rico e acessível - um desafio aparentemente assustador - é possível quando você usa componentes e bibliotecas de alta qualidade para construí-lo.

O mais popular deles é o design Ant. É uma biblioteca React UI que tem acesso a componentes de qualidade e fáceis de usar para construir interfaces de usuário elegantes e rápidas.

Reagir tema

Por que design de formigas?

Criado pela Alibaba, o sistema de design Ant é usado por vários grandes nomes como Alibaba (é claro), Tencent, Baidu e muito mais.

FormigaAlibaba

Projeto FormigaMaterial

Tornou-se rapidamente a biblioteca React UI mais usada. Anteriormente, o Material-UI era o mais popular com mais de 75 mil estrelas no Github, mas o Ant Design agora os ultrapassou com 77,5 mil!

O que o design Ant fez tão bem foi humanizar seu design. Eles avaliam a qualidade do design medindo em relação a quatro valores centrados na consciência humana e na felicidade - naturalidade, certeza, significado e crescimento. Esses atuam como um padrão para os designers e os orientam na tomada de decisões e no melhor julgamento.

Componentes de design de formigas

O design do Ant (ou antd) oferece muitos componentes de interface do usuário avançados que podem aprimorar a experiência do seu site ou aplicativo. Confira alguns deles abaixo, mas para mais opções, visite aqui.

Componentes Universais: Botões, ícones, tipografia, etc.

Universal

Layouts: Grades, layouts, espaçamento, etc.

Layouts

Navegação: migalhas de pão, menus, menus suspensos, etc.

Navegação

Entrada de dados: preenchimento automático, caixa de seleção, seletor de data, etc.

Entrada de dados

Exibição de dados: Avatar, comentários, painéis recolhíveis, etc.

Exibição de dados

Instalando React e Ant Design

Agora que sabemos quais componentes estão disponíveis no Ant design, vamos aprender o processo básico de instalação do React e então instalar o Ant design nele.

Você pode usar yarn ou npm para configurar o projeto React. Abaixo estão os comandos básicos para instalar e configurar o React:

 $ yarn create react-app antd-demo # or $ npx create-react-app antd-demo $ cd antd-demo $ yarn start

Depois que o React estiver instalado, você poderá ver o aplicativo em execução no navegador.

Editar aplicativo src

Este é o diretório padrão gerado no projeto recém-criado. Daqui para frente, modificaremos alguns dos arquivos aqui para obter o resultado final.

 ├── README.md ├── package.json ├── public │ ├── favicon.ico │ └── index.html ├── src │ ├── App.css │ ├── App.js │ ├── App.test.js │ ├── index.css │ ├── index.js │ └── logo.svg └── yarn.lock

Agora depois de configurar o React, vamos instalar o Ant design nele com este comando:

 $ yarn add antd

Depois de instalar o antd, você pode usar os componentes do Ant modificando a marcação no App.js que está dentro da pasta src do seu projeto. Aqui, estou adicionando um elemento de botão do Ant.

 import React from 'react'; import { Button } from 'antd'; import './App.css'; const App = () => ( <div className="App"> <Button type="primary">Button</Button> </div> ); export default App;

Componente do botão Ant:

Botão

Depois de salvar e executar o aplicativo, você poderá ver o elemento do botão principal do Ant no navegador na cor azul (como mostrado acima). Isso significa que o Ant está integrado com sucesso no React.

Personalizando um tema

A melhor parte de integrar o Ant Design com o React é que ele permite que você personalize seus tokens de design para satisfazer a diversidade da interface do usuário dos requisitos de negócios ou marca, incluindo cor primária, raio da borda, cor da borda, etc.

Intoli

Créditos da imagem: Intoli

Para permitir essas customizações, você precisará fazer algumas configurações avançadas.

Configuração Avançada:

Neste ponto, você precisa personalizar as configurações padrão de create-react-app. Vamos usar CRCO (Create React App Configuration Override) - uma solução de comunidade para configuração personalizada de create-react-app.

Etapa 1: primeiro você precisará instalar o CRCO e substituir o script React padrão pelo CRCO em package.json.

 $ yarn add @craco/craco /* package.json */ "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", + "start": "craco start", + "build": "craco build", + "test": "craco test", }

De acordo com os requisitos de configuração do tema, o tema personalizado precisa usar a função Less variable override semelhante àquela fornecida pelo less-loader. Podemos introduzir o Craco-less para ajudar a carregar menos estilos e modificar variáveis.

 $ yarn add craco-less

Etapa 2: modifique o arquivo src/App.css para src/App.less e importe o arquivo antd.less sobre antd.css em app.less

 /* src/App.js */ - import './App.css'; + import './App.less'; /* src/App.less */ - @import '~antd/dist/antd.css'; + @import '~antd/dist/antd.less';

Etapa 3: Crie craco.config.js no diretório raiz para modificar a configuração padrão.

 const CracoLessPlugin = require('craco-less'); module.exports = { plugins: [ { plugin: CracoLessPlugin, options: { lessLoaderOptions: { lessOptions: { modifyVars: { '@primary-color': '#1DA57A' }, javascriptEnabled: true, }, }, }, }, ], };

Aqui, o less-loader é o modifyVars usado para configuração do tema.

Botão

Se você vir um botão verde, você sabe que a configuração foi bem-sucedida. Agora você pode personalizar o tema com seu próprio conjunto de cores usando os tokens/variáveis ​​fornecidos.

Variáveis ​​de estilo de design de formigas

Abaixo estão algumas das variáveis ​​genéricas mais usadas. Você pode visitar aqui para obter detalhes sobre todas as variáveis ​​de estilo disponíveis.

 @primary-color: #1890ff; // primary color for all components @link-color: #1890ff; // link color @success-color: #52c41a; // success state color @warning-color: #faad14; // warning state color @error-color: #f5222d; // error state color @font-size-base: 14px; // major text font size @heading-color: rgba(0, 0, 0, 0.85); // heading text color @text-color: rgba(0, 0, 0, 0.65); // major text color @text-color-secondary: rgba(0, 0, 0, 0.45); // secondary text color @disabled-color: rgba(0, 0, 0, 0.25); // disable state color @border-radius-base: 2px; // major border radius @border-color-base: #d9d9d9; // major border color @box-shadow-base: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); // major shadow for layers