Criação do header (Elementos e estilo)

  1. Nós vamos criar um arquivo chamado “register.tsx”, dentro da pasta “pages”. Isso já vai fazer com que todos os botões na “homeNoAuth” que levam para “/register”, funcionem.

  2. Nós vamos criar o nosso arquivo de estilo na pasta “styles” chamado “registerLogin.module.scss”, pois usaremos o mesmo estilo para as duas páginas.

    import styles from "../styles/registerLogin.module.scss";
    import Head from "next/head";
    
    const Register = function () {
      return (
        <>
    			<Head>
            <title>Onebitflix - Registro</title>
            <link rel="shortcut icon" href="/favicon.svg" type="image/x-icon" />
          </Head>
          <main></main>
        </>
      );
    };
    
    export default Register;
    
  3. Agora nós vamos na pasta “common”, vamos criar uma pasta chamada “headerGeneric”, pois nós usaremos esse header na página de login, registro e episódio. Ele terá a logo do projeto e um botão, que vai ser manipulado através de props, para colocarmos texto e link.

    import styles from "./styles.module.scss";
    
    const HeaderGeneric = function () {
      return <></>;
    };
    
    export default HeaderGeneric;
    
  4. Nós iremos criar a nossa estrutura. Iremos envolver o nosso container em uma div, pois iremos colocar um background nesse header, e se tivermos o background no container, o background vai ficar “cortado”.

    <>
    	<div className={styles.header}>
    		<Container className={styles.headerContainer}>
    	    <Link href="">
    	      <img src="/logoOnebitflix.svg" alt="logoRegister" className={styles.headerLogo}/>
    			</Link>
          <Link href="">
    	      <Button outline color="light" className={styles.headerBtn}></Button>
          </Link>
    		</Container>
    	</div>
    </>
    
  5. Agora nós iremos criar props. Nós teremos uma para dizer para onde a logo vai redirecionar, outra para a url do botão e outra para o conteúdo do botão.

    interface props {
      logoUrl: string;
    	btnUrl: string;
      btnContent: string;
    }
    
    const HeaderGeneric = function ({ btnContent, btnUrl, logoUrl }: props) {
      return (
        <>
          <div className={styles.header}>
            <Container className={styles.headerContainer}>
              <Link href={logoUrl}>
                <img src="/logoOnebitflix.svg" alt="logoRegister" className={styles.headerLogo}/>
              </Link>
              <Link href={btnUrl}>
                <Button outline color="light" className={styles.headerBtn}>{btnContent}</Button>
              </Link>
            </Container>
          </div>
        </>
      );
    };
    
    export default HeaderGeneric;
    
  6. Agora nós vamos em “register.tsx” para colocar esse header, e termos o retorno visual. Vamos também já colocar os links nas props

    <main>
    	<HeaderGeneric logoUrl="/" btnUrl="/login" btnContent="Quero fazer login"/>
    </main>
    
  7. Agora podemos ir para “/register” ver esse header.

  8. Vamos para o style que criamos para poder fazer as modificações visuais no header.

    .header {
      background-color: black;
    }
    .headerContainer {
      display: flex;
      justify-content: space-between;
      flex-wrap: wrap;
      padding: 20px 0px;
    }
    .headerLogo {
      width: 180px;
      cursor: pointer;
    }
    
  9. Agora o header já está bem mais próximo do que realmente queremos, vamos manipular o button, mas apenas o hover, pois o botão normal já está como que queremos.

    .headerBtn {
      &:hover {
        border-color: $lightRed;
        color: $lightGray;
        background-color: transparent;
      }
    }
    

Responsividade do header

  1. Agora podemos partir para responsividade. Nós podemos ver que ele “quebra” em “575px”, ficando tanto a logo quando o botão colados nas paredes da página.

    @media (max-width: 575px) {
      .headerContainer {
        padding: 20px 26px;
        gap: 20px;
      }
    }
    
  2. Agora, nós podemos ver que a próxima quebra, que é a que o botão fica abaixo de fato, ocorre em “402px”, então vamos fazer a modificação para centralizarmos.

    @media (max-width: 402px) {
      .headerContainer {
        justify-content: center;
      }
    }
    

Commit do git

  1. Com o nosso header genérico finalizado, podemos então dar o seu commit.

    git add -A
    
    git commit -m "Criação dos elementos do header genérico, do seu estilo visual e também da sua responsividade completa - Header genérico"
    

Conclusão

O que foi feito/visto nessa aula:

  1. Criação da página de registro
  2. Criação do header
  3. Criação das props do header