1. Nós vamos criar um card onde vai mostrar algumas informações do vendedor e também do perfil do usuário normal.

  2. Vamos começar criando dentro de “common” uma pasta chamada “ProfileInfo”, pois isso vai ficar presente em algumas telas (Também na de avaliação do vendedor e denúncia)

  3. Vamos começar criando um container geral e um container que vai conter as principais informações sobre o usuário.

    import styled from "styled-components/native";
    
    export const Container = styled.View`
      width: 90%;
      border: 1px solid ${({ theme }) => theme.colors.borderColor};
      padding: 10px 15px;
      background-color: ${({ theme }) => theme.colors.background};
      margin: 0 auto;
      border-radius: 5px;
    `;
    
    export const PrincipalInfoContainer = styled.View`
      flex-direction: row;
      justify-content: space-between;
      align-items: flex-start;
      margin-bottom: 20px;
    `;
    
  4. Agora, nós vamos criar um container que vai envolver o nome e o telefone (Apenas para eles não ficarem separados por conta do “space-between”

    export const NamePhoneContainer = styled.View``;
    
    export const Name = styled.Text`
      font-size: 20px;
      font-weight: bold;
      color: ${({ theme }) => theme.colors.primaryText};
    `;
    
    export const Phone = styled.Text`
      font-size: 18px;
      color: ${({ theme }) => theme.colors.secondaryText};
    `;
    
  5. Com isso criado, nós já podemos usar para ter algum retorno visual, vamos então para o index.

    import React from "react";
    import {
      Container,
      Name,
      NamePhoneContainer,
      Phone,
      PrincipalInfoContainer,
    } from "./styled";
    
    const ProfileInfo = () => {
      return (
        <Container>
          <PrincipalInfoContainer>
            <NamePhoneContainer>
              <Name>Lucas Queiroga</Name>
              <Phone>(81) 99999-9999</Phone>
            </NamePhoneContainer>
          </PrincipalInfoContainer>
        </Container>
      );
    };
    
    export default ProfileInfo;
    
  6. Agora basta visualizarmos dentro da tela de profile

    const UserProfile = () => {
     return (
       <>
         <Container>
           <DefaultTitle title="MEU PERFIL" fontSize={20} />
           <ProfileInfo />
         </Container>
         <NavBar />
       </>
     );
    };
    
  7. Podemos ver que está formando algo interessante. Vamos prosseguir agora para a avaliação do usuário sobre essa pessoa (Seja você vendo seu perfil ou o perfil de um vendedor)

  8. Nós vamos importar o “AirbnbRating”, que é um tipo de estrela que temos na biblioteca selecionada, e vamos usar também a cor azul da nossa paleta para definir a estrela ativa.

    const ProfileInfo = () => {
      return (
        <Container>
          <PrincipalInfoContainer>
            <NamePhoneContainer>
              <Name>Lucas Queiroga</Name>
              <Phone>(81) 99999-9999</Phone>
            </NamePhoneContainer>
            <AirbnbRating
              selectedColor="#5F96ED"
              showRating={false}
              isDisabled={true}
              size={16}
              defaultRating={4}
              starContainerStyle={{
                paddingTop: 4,
              }}
            />
          </PrincipalInfoContainer>
        </Container>
      );
    };
    
  9. Agora nós vamos usar desde quando a pessoa está com a sua conta criada e também quantos anúncios ela criou até o momento, para isso faremos um “DefaultText”

    export const DefaultText = styled.Text`
      font-size: 14px;
      font-weight: bold;
      color: ${({ theme }) => theme.colors.primaryText};
    `;
    
  10. Agora temos vamos usar esse texto padrão para criar fora do “PrincipalInfoContainer” a info de desde quando o usuário criou a conta e também quantos anúncios ele tem ativo.

    const ProfileInfo = () => {
      return (
        <Container>
          <PrincipalInfoContainer>
            <NamePhoneContainer>
              <Name>Lucas Queiroga</Name>
              <Phone>(81) 99999-9999</Phone>
            </NamePhoneContainer>
            <AirbnbRating
              selectedColor="#5F96ED"
              showRating={false}
              isDisabled={true}
              size={16}
              defaultRating={4}
              starContainerStyle={{
                paddingTop: 4,
              }}
            />
          </PrincipalInfoContainer>
          <DefaultText>Usuário desde 20/04/23</DefaultText>
          <DefaultText>04 anúncios ativos</DefaultText>
        </Container>
      );
    };
    
  11. Podemos visualizar que estamos mostrando todas as info do usuário de forma bem bonita, faltando apenas uma linha horizontal para fazer a separação.

  12. Como no react native não temos o “HR” que nem temos no HTML, vamos criar um.

    export const Hr = styled.View`
      width: 90%;
      height: 1px;
      background-color: #383838;
      margin: 0 auto;
      margin-top: 15px;
    `;
    
  13. Agora, basta usarmos

    const ProfileInfo = () => {
      return (
        <>
          <Container>
            <PrincipalInfoContainer>
              <NamePhoneContainer>
                <Name>Lucas Queiroga</Name>
                <Phone>(81) 99999-9999</Phone>
              </NamePhoneContainer>
              <AirbnbRating
                selectedColor="#5F96ED"
                showRating={false}
                isDisabled={true}
                size={16}
                defaultRating={4}
                starContainerStyle={{
                  paddingTop: 4,
                }}
              />
            </PrincipalInfoContainer>
            <DefaultText>Usuário desde 20/04/23</DefaultText>
            <DefaultText>04 anúncios ativos</DefaultText>
          </Container>
          <Hr />
        </>
      );
    };
    
  14. Nós vamos apenas fazer uma mudança na parte de avaliação. Nós vamos colocar uma variável para definir qual é a avaliação do vendedor (que nem acontece na vida real) e nós vamos mostrar um texto caso não tenha avaliação ainda

    const ProfileInfo = () => {
      const Rate = 4;
    
      return (
        <>
          <Container>
            <PrincipalInfoContainer>
              <NamePhoneContainer>
                <Name>Lucas Queiroga</Name>
                <Phone>(81) 99999-9999</Phone>
              </NamePhoneContainer>
    	        {!Rate ? (
                <DefaultText>Sem Avaliações</DefaultText>
              ) : (
                <AirbnbRating
                  selectedColor="#5F96ED"
                  showRating={false}
                  isDisabled={true}
                  size={16}
                  defaultRating={Rate}
                  starContainerStyle={{
                    paddingTop: 4,
                  }}
                />
              )}
            </PrincipalInfoContainer>
            <DefaultText>Usuário desde 20/04/23</DefaultText>
            <DefaultText>04 anúncios ativos</DefaultText>
          </Container>
          <Hr />
        </>
      );
    };
    
  15. Agora, se colocarmos null no lugar do “4”, nós vamos ver o texto aparecendo no lugar da avaliação. E você pode também colocar outras notas e ver o resultado.