<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Hudson Duarte</title>
    <description>The latest articles on DEV Community by Hudson Duarte (@huduarte).</description>
    <link>https://dev.to/huduarte</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F645380%2Fe9177fd4-5d1b-4a61-bdb4-983a70942340.jpeg</url>
      <title>DEV Community: Hudson Duarte</title>
      <link>https://dev.to/huduarte</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/huduarte"/>
    <language>en</language>
    <item>
      <title>Como criar snippets no VSCode</title>
      <dc:creator>Hudson Duarte</dc:creator>
      <pubDate>Mon, 19 Jul 2021 20:20:33 +0000</pubDate>
      <link>https://dev.to/huduarte/como-criar-seu-proprio-snippet-personlizado-no-vscode-4gpb</link>
      <guid>https://dev.to/huduarte/como-criar-seu-proprio-snippet-personlizado-no-vscode-4gpb</guid>
      <description>&lt;p&gt;Fala pessoal, beleza ? Tô aqui para deixar uma dica fera sobre criação de snippets personalizados no VSCode.&lt;/p&gt;

&lt;p&gt;Eu aprendi em uma aula do curso Ignite de React Native da Rocketseat, o Rodrigo Gonçalves, nos ensinou e eu quero muito compartilhar com vocês também.&lt;/p&gt;

&lt;p&gt;Eu vou utilizar como base a criação de snippets para automatizar o processo da estrutura base de um componente e seu estilo no React Native, mas você pode usar essa dica para qualquer liguagem e projeto.&lt;/p&gt;

&lt;h3&gt;
  
  
  Introdução/Motivação
&lt;/h3&gt;

&lt;p&gt;Eu iniciei um projeto com Expo BareWorkflow no template de Typescript para ajudar a ilustrar como podemos desfrutar desse snippet e o porque acho que ele pode ajudar você que tá criando um novo componente ou página no seu projeto.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fezunwj8j7czdtzg1h3sp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fezunwj8j7czdtzg1h3sp.png" alt="Captura de Tela 2021-07-19 às 16.20.50"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Digamos que você acabou de iniciar um projeto e está criando a sua Home, página inicial do seu aplicativo.&lt;/p&gt;

&lt;p&gt;Imagino que você deve ter uma estrutura padrão que gosta de usar em todas as suas páginas, eu geralmente sempre crio algo assim:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fetvvlaz4us3al7ucsfnw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fetvvlaz4us3al7ucsfnw.png" alt="Captura de Tela 2021-07-19 às 16.25.33"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depois de criar uma pasta com o nome da página ou componente, divido em arquivos de jsx e estilo, para meu arquivo de jsx eu sempre crio uma função retornando uma View com estilo container e faço as importações do React e React Native&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdzs5okg7bofyj4c68ip1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdzs5okg7bofyj4c68ip1.png" alt="Captura de Tela 2021-07-19 às 16.26.09"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tudo certo até aqui, ok ?&lt;/p&gt;

&lt;p&gt;Mas imagina ter que criar mais uma página, ou melhor, novos componentes, o quão repetitivo pode ficar essa atividade de criar a função, criar os estilos, importar o React e etc...&lt;/p&gt;

&lt;p&gt;É por isso que quero trazer uma forma rápida de criar um snippet que vai permitir que você faça isso em segundos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como fazer ?
&lt;/h2&gt;

&lt;p&gt;Procure pelas preferências do seu visual studio code e selecione a opção "User snippets"&lt;br&gt;
 &lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdg0d90c1uvrdzcxpb4sz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdg0d90c1uvrdzcxpb4sz.png" alt="Captura de Tela 2021-07-19 às 16.32.23"&gt;&lt;/a&gt;&lt;br&gt;
Ao escolher essa opção, você deve escolher "New Global Snippets file...", assim, poderá criar seus snippets de forma global para qualquer aplicação. Caso queira criar um snippets para uma aplicação específica basta escolher a segunda opção.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6z8mrxqv7nmv52p7z2sx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6z8mrxqv7nmv52p7z2sx.png" alt="Captura de Tela 2021-07-19 às 16.32.50"&gt;&lt;/a&gt;&lt;br&gt;
Pronto, agora é só dar um nome para o snippet, eu coloquei &lt;strong&gt;rnfc&lt;/strong&gt; de &lt;em&gt;react native functional component&lt;/em&gt;.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faqilsx8b9cslnkybwr0l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faqilsx8b9cslnkybwr0l.png" alt="Captura de Tela 2021-07-19 às 16.33.34"&gt;&lt;/a&gt;&lt;br&gt;
Ele vai abrir uma página com algumas informações sobre a criação de snippet e é aqui que vamos configurá-lo.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyd1gvrbcp7ztj10wv4hs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyd1gvrbcp7ztj10wv4hs.png" alt="Captura de Tela 2021-07-19 às 17.00.27"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Eu já possuo um snippet pronto e por isso, vou deixar para vocês copiarem e editarem como quiserem, é assim que ele vai ficar:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ak6xlcwiw84d2mq4g6n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ak6xlcwiw84d2mq4g6n.png" alt="Captura de Tela 2021-07-19 às 17.02.21"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "Basic React Native Interface": {
        "prefix": "rnfc",
        "body": [
            "import React from 'react';",
            "",
            "import {",
            "  View,",
            "} from 'react-native';",
            "",
            "import {",
            "  styles",
            "} from './styles';",
            "",
            "export function ${TM_DIRECTORY/^.+\\/(.*)$/$1/}(){",
            "  return (",
            "    &amp;lt;View style={styles.container}&amp;gt;",
            "",
            "    &amp;lt;/View&amp;gt;",
            "  );",
            "}",
        ],
        "description": "Basic React Native Interface"
    },

    "Basic React Native Styles": {
        "prefix": "rns",
        "body": [
            "import { StyleSheet } from 'react-native';",
            "",
            "export const styles = StyleSheet.create({",
            "  container: {",
            "    flex: 1",
            "  }",
            "}) ",
        ],
        "description": "Basic React Native Style"
    },


}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Só um detalhe especial para a linha 15, para ajudar a não precisar ficar renomeando o componente, ele automaticamente vai gerar o nome da função com o nome da pasta em que o arquivo está inserido.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hora de testar
&lt;/h3&gt;

&lt;p&gt;Tudo pronto e vamos testar um caso de uso desse snippet que criamos, vou criar uma pasta components e dentro dela outra pasta com o componente que quero criar, nesse caso, o exemplo será um card:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjb7lzg3yb0pnoqbngnay.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjb7lzg3yb0pnoqbngnay.png" alt="Captura de Tela 2021-07-19 às 17.12.42"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Estrutura criada e agora basta digitar &lt;strong&gt;rnfc&lt;/strong&gt; no meu caso e ele vai sugerir utilizar o snippet:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxl88ywthhr68i5cim9c7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxl88ywthhr68i5cim9c7.png" alt="Captura de Tela 2021-07-19 às 17.13.17"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Basta dar ENTER e voílà :D&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fboy7l115510gvsd3mz2p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fboy7l115510gvsd3mz2p.png" alt="Captura de Tela 2021-07-19 às 17.13.53"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ele vai reclamar que não encontrou o arquivo de styles mas é porque ainda não criamos a estrutura base no arquivo styles.ts&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0qif0qha5m6xvwdxuwnh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0qif0qha5m6xvwdxuwnh.png" alt="Captura de Tela 2021-07-19 às 17.14.30"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Novamente, eu apelidei de &lt;strong&gt;rns&lt;/strong&gt; a estrutura de estilos e vou dar ENTER.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm47lpf1cc5pvrmz7bapv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm47lpf1cc5pvrmz7bapv.png" alt="Captura de Tela 2021-07-19 às 17.14.50"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Okay, agora é só começar a codar e não precisa mais se preocupar em ficar criando estrutura base toda vez que for iniciar um novo componente ou página.&lt;/p&gt;

&lt;h3&gt;
  
  
  O snippet não tem limites
&lt;/h3&gt;

&lt;p&gt;Se você achar que criou um snippet muito simples ou que ainda não está suprindo a sua necessidade, basta editar ele da forma como preferir.&lt;/p&gt;

&lt;h3&gt;
  
  
  FIM
&lt;/h3&gt;

&lt;p&gt;Espero que tenha gostado dessa dica e possa aplicar no seu dia a dia, fica à vontade para compartilhar comigo suas dúvidas e também trazer novos conhecimentos.&lt;/p&gt;

&lt;p&gt;Meu Linkedln: &lt;a href="https://www.linkedin.com/in/huduarte/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/huduarte/&lt;/a&gt;&lt;br&gt;
Meu Github: &lt;a href="https://github.com/huduarte" rel="noopener noreferrer"&gt;https://github.com/huduarte&lt;/a&gt;&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>reactnative</category>
    </item>
    <item>
      <title>Como utilizar fontes e cores globais no React Native com styled-components</title>
      <dc:creator>Hudson Duarte</dc:creator>
      <pubDate>Mon, 07 Jun 2021 16:19:14 +0000</pubDate>
      <link>https://dev.to/huduarte/como-utilizar-fontes-e-cores-globais-no-react-native-com-styled-components-3ehp</link>
      <guid>https://dev.to/huduarte/como-utilizar-fontes-e-cores-globais-no-react-native-com-styled-components-3ehp</guid>
      <description>&lt;p&gt;Fala dev, beleza ? Me chamo Hudson, sou desenvolver mobile com React Native e esse é o meu primeiro post aqui no dev.to. &lt;/p&gt;

&lt;p&gt;Normalmente utilizo a própria funcionalidade de artigos do Linkedln para fazer minhas publicações, porém como esse é o meu primeiro conteúdo mais técnico, decidi migrar para cá.&lt;/p&gt;

&lt;p&gt;Espero que goste :D&lt;/p&gt;

&lt;h3&gt;
  
  
  Introdução/Motivação
&lt;/h3&gt;

&lt;p&gt;Quando comecei a desenvolver com React Native, senti muita falta de uma etapa quase que obrigatória no desenvolvimento web com ReactJS e Styled-Components que era a declaração das fontes e cores globais da nossa aplicação. A alternativa que eu utilizava na web consiste em usar a funcionalidade &lt;strong&gt;createGlobalStyle&lt;/strong&gt; como parte da nossa aplicação.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkej6v9tt4jjar0hf9goa.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkej6v9tt4jjar0hf9goa.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Minha maior dúvida era: como faço isso com react-native ? Visto que não consigo utilizar essa função createGlobalStyled.&lt;/p&gt;

&lt;p&gt;Depois de algum tempo e dado início ao curso de React Native da Rocketseat(Ignite), descobri uma forma simples e muito legal de disponibilizar fontes e cores globais no nosso aplicativo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mão na massa
&lt;/h2&gt;

&lt;p&gt;Para compartilhar com vocês essa etapa, vou estar utilizando o expo bare workflow, apenas por gosto próprio.&lt;/p&gt;

&lt;p&gt;Depois de criar um projeto com o expo (&lt;em&gt;chamei o projeto de estilosglobais&lt;/em&gt;) o primeiro e próximo passo é já instalar o styled-components e suas tipagens.&lt;/p&gt;

&lt;p&gt;Você pode utilizar os comandos:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;yarn add styled-components&lt;/code&gt;&lt;br&gt;
Para instalar o styled components no seu projeto&lt;br&gt;
e&lt;br&gt;
&lt;code&gt;yarn add @types/style-components-react-native -D&lt;/code&gt;&lt;br&gt;
Para instalar suas tipagens&lt;/p&gt;

&lt;p&gt;Essa é a estrutura padrão de um projeto iniciado com expo bare worlflow:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpuxtftiqt4s3gagjgt05.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpuxtftiqt4s3gagjgt05.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Por padrão gosto de criar uma pasta &lt;strong&gt;src&lt;/strong&gt; dentro desse nosso projeto, e a partir dela começar a desenvolver o código. Também vou criar uma pasta &lt;strong&gt;screens&lt;/strong&gt; que vai conter minha página principal que sera a Home.&lt;/p&gt;

&lt;p&gt;Assim ficou a estrutura do meu projeto depois de fazer a configuração inicial:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4tz6aejw3ppqgw1sf49.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4tz6aejw3ppqgw1sf49.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Dentro do nossa index.tsx da pasta &lt;strong&gt;Home&lt;/strong&gt; eu tenho apenas a declaração do nosso componente e duas tags de retorno, nosso Container, uma View simples e o Title que é um Text do React Native&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffkybzkd8hxsbntyizji0.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffkybzkd8hxsbntyizji0.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd31qthi4v6pvflhh7z1q.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd31qthi4v6pvflhh7z1q.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Criando nosso tema global
&lt;/h2&gt;

&lt;p&gt;Dentro da nossa pasta src, criaremos também uma pasta chamada global e dentro dela, uma pasta chamada styles, é assim que eu aprendi e curto de utilizar nossas definições de tema global.&lt;/p&gt;

&lt;p&gt;Apenas dois arquivos em styles serão necessários para que possamos começar a implementar esse tema de forma global.&lt;br&gt;
&lt;strong&gt;theme.ts:&lt;/strong&gt; Onde ficarão nossas fontes e cores&lt;br&gt;
&lt;strong&gt;styled.d.ts:&lt;/strong&gt; Onde vamos colocar a tipagem necessária para que o styled entenda o nosso novo tema.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh54ysi9dxt2cl338uree.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh54ysi9dxt2cl338uree.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  theme.ts
&lt;/h4&gt;

&lt;p&gt;É no theme.ts que vamos exportar o nosso código padrão de fonte e cor por meio de um objeto default:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;colors&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#ffffff&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

    &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#000000&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;

  &lt;span class="na"&gt;fonts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;regular&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Poppins_400Regular&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;medium&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Poppins_500Medium&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;bold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Poppins_700Bold&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Você deve ficar à vontade para nomear como quiser as suas variaveis de cores e fonte, eu por padrão utilizei &lt;em&gt;background e text&lt;/em&gt; para as cores e &lt;em&gt;regular,medium e bold&lt;/em&gt; para as fontes.&lt;/p&gt;

&lt;p&gt;Também para as fontes, como estou utilizando o expo, instalei elas utilizando o próprio expo-font e as fontes do google&lt;br&gt;
&lt;code&gt;expo install expo-font @expo-google-fonts/poppins&lt;/code&gt;&lt;br&gt;
Caso esteja utilizando o React Native CLI, você pode declarar no objeto de fonts o nome padrão dos arquivos que adicionou no projeto.&lt;/p&gt;

&lt;h4&gt;
  
  
  styles.d.ts
&lt;/h4&gt;

&lt;p&gt;Nesse arquivo devemos declarar novamente o módulo styled-components porém com a adição das nossas fontes e cores:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;styled-components&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./theme&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kr"&gt;declare&lt;/span&gt; &lt;span class="kr"&gt;module&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;styled-components&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;ThemeType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt;

  &lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;DefaultTheme&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;ThemeType&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Quase tudo pronto!
&lt;/h2&gt;

&lt;p&gt;Feito essas duas etapas, o próximo passo é ir no nosso arquivo &lt;strong&gt;App.tsx&lt;/strong&gt; e mexer um pouquinho na sua estrura:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Home&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./src/screens/Home&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;ThemeProvider&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;styled-components&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./src/global/styles/theme&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;useFonts&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;Poppins_400Regular&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;Poppins_500Medium&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;Poppins_700Bold&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@expo-google-fonts/poppins&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;App&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;fontsLoaded&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useFonts&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="nx"&gt;Poppins_400Regular&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;Poppins_500Medium&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;Poppins_700Bold&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ThemeProvider&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Home&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/ThemeProvider&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Agora o retorno do nosso App precisa estar envolvido pelo &lt;strong&gt;ThemeProvider&lt;/strong&gt;, que foi importado de dentro do styled-components.&lt;br&gt;
Após envolver a nossa aplicação pelo ThemeProvider, ele pede uma propriedade obrigatória chamada &lt;strong&gt;theme&lt;/strong&gt;, é dentro dela que nós vamos colocar o theme, que foi importado de dentro do nosso global/styles.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hora de testar
&lt;/h2&gt;

&lt;p&gt;Feito tudo isso, basta irmos até o arquivo styles.ts da nossa aplicação e utilizar a sintaxe padrão do styled para pegar variaveis e usar o theme, o mais legal disso tudo é que o theme já tá tipado, então quando você utilizar o &lt;strong&gt;.&lt;/strong&gt; ele vai te sugerir se são as fontes ou as cores, e depois qual fonte ou cor você quer utilizar:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdtgwj3wfqhqr61mo3220.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdtgwj3wfqhqr61mo3220.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft03txjcriiw28q9gezkt.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft03txjcriiw28q9gezkt.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F133rxny6iznkn5juwna3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F133rxny6iznkn5juwna3.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Como utilizar os temas globais dentro de um componente JSX?
&lt;/h2&gt;

&lt;p&gt;Talvez em algum momento desenvolvendo você passe pela necessidade de usar esse tema global para colocar em alguma propriedade de componente pelo JSX, por exemplo.&lt;br&gt;
Para isso, você deve seguir esse padrão:&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;

&lt;p&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;useTheme&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;styled-components&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;br&gt;
  &lt;span class="nx"&gt;Container&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;br&gt;
  &lt;span class="nx"&gt;Title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;br&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./styles&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Home&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;&lt;br&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useTheme&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;br&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Container&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;colors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;background&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Title&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Fontes&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt; &lt;span class="nx"&gt;Cores&lt;/span&gt; &lt;span class="nx"&gt;Globais&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Title&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Container&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;  &lt;span class="p"&gt;);&lt;/span&gt;&lt;br&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;/p&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Fim&lt;br&gt;
&lt;/h2&gt;

&lt;p&gt;Dev, espero que tenha gostado dessa dica, quando descobri a possibilidade de utilizar fontes e cores globais no React Native fiquei super empolgado para compartilhar isso com todo mundo, fica à vontade para compartilhar comigo suas dúvidas e também trazer novos conhecimentos.&lt;/p&gt;

&lt;p&gt;Código no github: https: &lt;a href="https://github.com/huduarte/react-native-styled-components-global-theme" rel="noopener noreferrer"&gt;https://github.com/huduarte/react-native-styled-components-global-theme&lt;/a&gt;&lt;br&gt;
Meu linkedln: &lt;a href="https://www.linkedin.com/in/huduarte/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/huduarte/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bye! :D&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>typescript</category>
      <category>react</category>
    </item>
  </channel>
</rss>
