fitcard-ui-react-native
TypeScript icon, indicating that this package has built-in type declarations

1.9.4 • Public • Published

Mobile UI components.


npm npm

Instalação

Instale as dependências:

yarn add @react-native-community/datetimepicker react-native-gesture-handler react-native-text-input-mask react-native-svg

Instale a biblioteca:

yarn add fitcard-ui-react-native

(IOS) Adicione a biblioteca react-native-text-input-mask no Podfile:

pod 'RNInputMask', :path => '../node_modules/react-native-text-input-mask/ios/InputMask'

Utilização

Envolva todo o app com o ThemeProvider:

import { ThemeProvider } from 'fitcard-ui-react-native';

const theme = {
  colors: {
    primary: '#FF4F4F',
    secondary: '#000',
    error: '#FF4F4F',
    primaryText: '#000',
    secondaryText: '#98A9BB',
    background: '#FFF',
    foreground: '#FFF',
    formsBackground: '#F0F3F8',
    border: '#F0F3F8',
    toast: {
      danger: '#FF4F4F',
      success: '#21BA45',
      warning: '#FBBD08',
    },
  },
  fonts: {
    light: {
      fontFamily: 'CircularStd-Book',
    },
    medium: {
      fontFamily: 'CircularStd-Medium',
    },
    bold: {
      fontFamily: 'CircularStd-Bold',
    },
    black: {
      fontFamily: 'CircularStd-Black',
    },
  },
};

function Root() {
  return (
    <ThemeProvider theme={theme}>
      <App />
    </ThemeProvider>
  );
}

Importando os componentes:

import { Button, Card } from 'fitcard-ui-react-native';

Componentes

Button

<Button
  text="Button"
  onPress={() =>  console.log('pressed!')}
/>
prop tipo padrão descrição
text string (obrigatório) Texto a ser exibido dentro do botão.
onPress () => void (obrigatório) Callback chamado quando o botão é pressionado.
loading boolean false Indica se o botão está carregando.
light boolean false Usa o tema claro (light).
disabled boolean false Desabilita o botão.
containerStyle StyleProp<ViewStyle> null Estilo da View que envolve o componente.
textStyle StyleProp<TextStyle> null Estilo do texto do botão.

TagButton

<TagButton
  text="Sort"
  icon="sort"
  onPress={() => console.log('pressed!')}
/>
prop tipo padrão descrição
text string (obrigatório) Texto a ser exibido no botão.
onPress () => void (obrigatório) Callback chamado quando o botão é pressionado.
active boolean false Indica se está ativo. Quando ativo, o botão ganha cor.
activeColor string Cor padrão do tema Cor customizada de quando o botão estiver ativo.
containerStyle StyleProp<ViewStyle> null Estilo da View que envolve o componente.
textStyle StyleProp<TextStyle> null Estilo do texto.
icon string '' Nome do ícone.
iconColor string colors.primaryText Cor do icone.
disabled boolean false Desabilita o botão.

IconButton

<IconButton
  icon="circle"
  type="solid"
  onPress={() => console.log('pressed!')}
/>
prop tipo padrão descrição
icon string (obrigatório) Nome do ícone do botão.
iconSize number 16 Tamanho do ícone.
color string primary color Cor do ícone.
type 'solid' | 'regular' 'regular' O tipo do icone.
bgColor string light primary color BackgroundColor.
noBackground boolean false Remove o background do botão.
onPress () => void undefined Callback chamado quando o botão é pressionado.
disabled boolean false Desabilita o botão.

TextButton

<TextButton onPress={() => console.log('pressed!')}>Button</TextButton/>
prop tipo padrão descrição
color string primary color Cor do texto do botão.
onPress () => void undefined Callback chamado quando o botão é pressionado.
style StyleProp<TextStyle> null Estilo do texto do botão.
bold boolean false Deixa o texto do botão em negrito.

NavBar

<NavBar
  title="Home"
  leftComponent={<NavBar.BackAction onPress={() => {}} />}
  rightComponent={<NavBar.Action icon="search" />}
/>
prop tipo padrão descrição
leftComponent ReactNode undefined Componente esquerdo da barra de navegação.
rightComponent ReactNode undefined Componente direito da barra de navegação.
flat boolean false Remove a sombra (Android) ou a borda inferior (IOS).
containerStyle StyleProp<ViewStyle> null Estilo da <View /> que envolve o componente.
rightContentStyle StyleProp<ViewStyle> null Estilo da <View /> que envolve o componente direito.
leftContentStyle StyleProp<ViewStyle> null Estilo da <View /> que envolve o componente esquerdo.
title string '' O texto a ser exibido como título.

CustomNavBar

<CustomNavBar
  leftComponent={<NavBar.BackAction onPress={() => {}} />}
  middleComponent={(
    <TextInput
      placeholder="Pesquise algo..."
      size="small"
      showClearButton
    />
  )}
  rightComponent={<TextButton>Button</TextButton/>}
/>
prop tipo padrão descrição
leftComponent ReactNode undefined Componente esquerdo da barra de navegação.
middleComponent ReactNode undefined Componente do meio da barra de navegação.
rightComponent ReactNode undefined Componente direito da barra de navegação.
flat boolean false Remove a sombra (Android) ou a borda inferior (IOS).
containerStyle StyleProp<ViewStyle> null Estilo da View que envolve o componente..

NavBarBackAction

<NavBar.BackAction onPress={() => console.log('pressed!')} />
prop tipo padrão descrição
onPress () => void undefined Callback chamado quando o botão é pressionado.
size number 20 (android) 24 (ios) Tamanho do ícone.
color string primary color Cor do ícone.

NavBarAction

<NavBar.Action
  icon="search"
  color="red"
  onPress={() => console.log('pressed!')}
/>
prop tipo padrão descrição
onPress () => void undefined Callback chamado quando o botão é pressionado.
icon string (obrigatório) Nome do ícone
color string #000 Cor do ícone.
size number 20 (android) 24 (ios) Tamanho do ícone.
type 'solid' | 'regular' 'regular' Tipo do ícone.

TextInput

<TextInput
  placeholder="Placeholder"
  onChangeText={text => console.log(text)}
/>
prop tipo padrão descrição
disabled boolean false Desabilita o campo.
error boolean false Muda a cor do campo, indicando erro.
size 'normal' | 'small' 'normal' Tamanho do campo.
showClearButton boolean false Mostra um pequeno botão para limpar o texto do campo.
onClear () => void undefined Callback que é chamado quando o campo é limpado.
onChangeText (text: string) => void Prop padrão do React Native.

DateTimePicker

<DateTimePicker
  placeholder="Escolha uma data"
  IOSHeaderTitle="Escolha uma data"
  date={new Date()}
  onChange={(event, value) => console.log(event, value)}
/>

*Herda as props do @react-native-community/datetimepicker.

prop tipo padrão descrição
containerStyle StyleProp<ViewStyle> null Estilo da View que envolve o componente.
placeholder string '' Texto a ser exibido quando o valor do Picker está vazio.
defaultDate string '' Define um valor inicial para a data mostrada no Picker.
mode 'time' | 'date' | 'datetime' | 'countdown' 'date' O tipo formato de data a ser mostrado.
disabled boolean false Desabilita o Picker.
customFormat string 'dd MMM, yyyy' Uma máscara xDate personalizada para formatar o valor de exibido no Picker.
date Date (obrigatório) A data selecionada a ser exibida no Picker.
IOSHeaderTitle string '' Texto a ser exibido no header no modal no IOS.
error boolean false Muda a cor do campo, indicando erro.

Disclaimer

<Disclaimer
        icon="atom"
        title="Titulo titulo"
        description="Mussum Ipsum, cacilds vidis litro abertis. Si num tem leite então bota uma pinga aí cumpadi! Delegadis gente finis, Vide electram sadipscing et per."
        stateView="smooth"
        selectColor="danger"
/>
prop tipo padrão descrição
icon string '' Nome do ícone renderizado do lado esquerdo.
title string '' Título opcional.
description string '' Descrição opcional.
selectColor 'default' | 'information' | 'warning' | 'danger'| 'success'| 'informationAlt'| 'warningAlt' | 'dangerAlt' | 'successAlt' 'default' Cor do componente.
stateView 'filled' | 'smooth' | 'outlined' | 'raised' 'filled' Define a visualização do componente.

Picker

<Picker
  onValueChange={item => console.log(item)}
  selectedValue={'Opção 1'}
  items={['Opção 1', 'Opção 2']}
  valueExtractor={item => item}
  labelExtractor={item => item}
  keyExtractor={item => item}
/>
prop tipo padrão descrição
selectedValue string | number (obrigatório) O item selecionado do array de itens fornecido.
onValueChange (itemValue: string | number, itemPosition: number) => void (obrigatório) Callback chamado quando o item selecionado é alterado.
disabled boolean false Desabilita o Picker.
items any[] (obrigatório) Array de itens disponível para escolha.
loading boolean false Indica se está carregando.
keyExtractor (item: any) => string (obrigatório) Indica qual propriedade no array de itens é usada para ser a key.
labelExtractor (item: any) => string (obrigatório) Indica qual propriedade no array de itens é usada para ser a label.
valueExtractor (item: any) => string (obrigatório) Indica qual propriedade no array de itens é usada para ser o valor.
error boolean false Muda a cor do campo, indicando erro.

FormGroup

<FormGroup label="Usuário" error="Este campos é obrigatório!">
  <TextInput placeholder="Seu nome de usuário" secureTextEntry />
</FormGroup>
prop tipo padrão descrição
label string (obrigatório) Texto a ser exibido como label.
error string '' Mensagem de erro.
style StyleProp<ComponentStyle> null Estilo do componente.
required boolean false Indica se o campo é obrigatório.

Card

<Card title="Card title" icon="clone">
  <Paragraph>
    Mussum Ipsum, cacilds vidis litro abertis.
    Si num tem leite então bota uma pinga aí cumpadi!
    Delegadis gente finis, Vide electram sadipscing et per.
  </Paragraph>
</Card>
prop tipo padrão descrição
icon 'string' | 'number' undefined Nome do icone do card.
iconColor string primary color Cor do icone do card.
title string (obrigatório) Texto a ser exibido como título no card.
rightContent ReactNode undefined O conteúdo posicionado à direta do header do card.
onPress () => void undefined Deixa o cartão inteiro clicável e é chamado quando é pressionado.
mode 'shadowed' | 'bordered' 'bordered' Modo do estilo do card.

ListItem

<ListItem
  title="List item title"
  description="List item description"
  rightComponent={(
    <Tag
      light
      text="Pending"
      bgColor="#FFB800"
      containerStyle={{ alignSelf:  'flex-end' }}
    />
  )}
/>
prop tipo padrão descrição
title string undefined Título do item, exibido em negrito.
description string undefined Descrição do item da lista, exibida em cinza e pequena.
rightComponent ReactNode undefined Conteúdo posicionado à direita da linha.
leftComponent ReactNode undefined Conteúdo posicionado à esquerda da linha.
rightContentStyle StyleProp<ViewStyle> null Estilo da View que envolve o componente direito.
leftContentStyle StyleProp<ViewStyle> null Estilo da View que envolve o componente esquerdo.
containerStyle StyleProp<ViewStyle> null Estilo da View que envolve o componente.
onPress () => void undefined Quando fornecido, torna a lista clicável e é chamado quando pressionado.

MenuListItem

Normal:

<MenuListItem
  title="Home"
  icon="layer-group"
  iconType="solid"
  onPress={() => console.log('pressed!')}
/>

Collapsible:

<MenuListItem
  title="Notifications"
  icon="bell"
  iconType="solid"
  onPress={() => console.log('pressed!')}
>
  {...}
</MenuListItem>
prop tipo padrão descrição
containerStyle StyleProp<ViewStyle> null Estilo da View que envolve o componente.
textStyle StyleProp<TextStyle> null Estilo do texto do item.
iconColor string #8698AB Cor do ícone.
icon string undefined O nome do ícone.
title string (obrigatório) O texto a ser exibido.
onPress () => void undefined Callback chamado quando o item é pressionado.
active boolean false Indica se está ativo (selecionado).
iconType 'regular' | 'solid' 'regular' O tipo do ícone.

MenuListSubitem

<MenuListSubitem
  title="Notifications sub 1"
  onPress={() => console.log('pressed!')}
/>
prop tipo padrão descrição
title string (obrigatório) O texto a ser exibido.
onPress () => void undefined Callback chamado quando o subitem é pressionado.

MenuSeparator

<MenuSeparator>Separador</MenuSeparator>
prop tipo padrão descrição
style StyleProp<TextProps> undefined Estilo do texto.

ListMenu

Componente que cria o menu inteiro utilizando a estrutura de um array.

<ListMenu
  items={[
    {
      type:  'separator',
      text:  'Separator',
    },
    {
      type:  'menu-item',
      text:  'Home',
      icon:  'layer-group',
      iconType:  'solid',
      onPress: () => {},
    },
    {
      type:  'menu-item',
      text:  'Notifications',
      icon:  'bell',
      iconType:  'solid',
      onPress: () => {},
      subItems: [
        {
          type:  'menu-item',
          text:  'Notifications sub 1',
          onPress: () => {},
        },
        {
          type:  'menu-item',
          text:  'Notifications sub 2',
          onPress: () => {},
        },
      ],
    },
    {
      type:  'menu-item',
      text:  'Emails',
      iconType:  'solid',
      icon:  'layer-group',
      onPress: () => {},
    },
    {
      type:  'menu-item',
      text:  'Settings',
      iconType:  'solid',
      icon:  'cog',
      onPress: () => {},
    },
    {
      type:  'separator',
      text:  'Separator Two',
    },
    {
      type:  'menu-item',
      text:  'Star',
      iconType:  'solid',
      icon:  'star',
    },
    {
      type:  'menu-item',
      text:  'Likes',
      iconType:  'solid',
      icon:  'heart',
    },
  ]}
/>
prop tipo padrão descrição
items MenuItem[] (obrigatório) Os itens do menu.

Tag

<Tag
  text="Pending"
  bgColor="#FFB800"
/>
prop tipo padrão descrição
containerStyle StyleProp<ViewStyle> null Estilo da View que envolve o componente.
bgColor string #000 BackgroundColor.
textColor string #FFF Cor do texto. É ignorado quando light for falso.
iconColor string #FFF Cor do ícone. É ignorado quando light for falso.
text string '' Texto a ser exibido.
icon string '' Nome do ícone.
light boolean false Muda o design da tag para o claro (light).

Text

<H1>Heading 1</H1>

<H2>Heading 2</H2>

<H3>Heading 3</H3>

<Paragraph>Paragraph</Paragraph>

<Description>Description</Description>
prop tipo padrão descrição
style StyleProp<TextStyle> null Estilo do texto

AnimatedScrollablePage

Renderiza um header com uma animação ao rolar a página para baixo.

<AnimatedScrollablePage title="Home">
  {...}
</AnimatedScrollablePage>
prop tipo padrão descrição
title string '' Texto a ser exibido no header.
containerStyle StyleProp<ViewStyle> null Estilo da View que envolve o componente.

OptionList

Renderiza vários <TagButtons /> como uma lista de uma única opção selecionável.

<OptionList
  options={[
    { text:  'Cats', value: 1 },
    { text:  'Dogs', value: 2 },
    { text:  'Birds', value: 3 },
  ]}
  keyExtractor={item => item.text}
  selected={0}
  onChange={index => console.log(index)}
/>
prop tipo padrão descrição
options Option[] (obrigatório) O array para renderizar as opções.
onChange (itemIndex: number) => void (obrigatório) Callback chamado quando o item selecionado é alterado.
selected number undefined Índice do item selecionado.
optionActiveColor string colors.primary Cor da option quando está ativa.
optionContainerStyle StyleProp<ViewStyle> null Estilo da view que envolve a option <TagButton />.
optionTextStyle StyleProp<TextStyle> null Estilo do texto da option <TagButton />.
keyExtractor (item: Option) => string (obrigatório) Função para popular a 'key' do componente no loop.

PageWrapper

Componente padrão para envolver todas as páginas.

<PageWrapper>
  {...}
</PageWrapper>
prop tipo padrão descrição
style StyleProp<ViewStyle> null Estilo da <View />
safeArea boolean false Renderiza ou não um SafeAreaView

ScrollablePage

É usado como componente padrão em todas as páginas com scroll, pois respeita todas as métricas de margins e paddings.

<ScrollablePage>
  {...}
</ScrollablePage>
prop tipo padrão descrição
keyboardShouldPersistTaps 'never' | 'always' | 'handled' 'handled' A prop keyboardShouldPersistTaps normal da View com o 'handled' definido como padrão.

PagedList

Componente que utiliza a <FlatList /> do React Native e trata a lógica de paginação, implementando o scroll infinito.

<PagedList
  title="Title"
  page={1}
  totalPages={2}
  data={[]}
  renderItem={renderItem}
  keyExtractor={item => String(item.id)}
/>
prop tipo padrão descrição
data any[] (obrigatório) Dados da lista.
onEndReached () => void undefined Callback chamado quando o fim da <ScrollView /> é atingido.
page number (obrigatório) Página atual.
totalPages number (obrigatório) Número total de páginas dos dados.
useHeader boolean false Renderiza um <AnimatedHeader />, aparecendo quando rolado.
title string '' Se useHeader for verdadeiro, usa como título do <AnimatedHeader />

BottomSheet

<BottomSheetContainer>
  {...page}
  <BottomSheet visible={false} height={300}>
    {...}
  </BottomSheet>
</BottomSheetContainer>
prop tipo padrão descrição
visible boolean false Indica se o componente está visivel ou não.
showBackdrop boolean true Indica se o backdrop será visível ou não.
height number (obrigatório) Altura do card do bottom sheet.
style StyleProp<ViewStyle> null Estilo do componente.
backdropStyle StyleProp<ViewStyle> null Estilo do backdrop.
onBackdropPress (event: GestureResponderEvent) => boolean null É chamado quando é pressionado o backdrop do componente.

BottomSheetContainer

Componente que permite o backdrop do <BottomSheet /> ser ajustado adequadamente na tela.

<BottomSheetContainer>
  {...page}
</BottomSheetContainer>

*Herda as props de uma <View /> do React Native.


TextArea

<TextArea placeholder="Insert a text..." />
prop tipo padrão descrição
disabled boolean false Desabilita o campo.
error boolean false Muda a cor do campo, indicando erro.

*Herda as props de um <TextInput /> do React Native.

MaskedTextInput

<MaskedTextInput
  placeholder="Placeholder"
  onChangeText={(formatted, extracted) => {
    console.log(formatted) // +1 (123) 456-78-90
    console.log(extracted) // 1234567890
  }}
  mask="+1 ([000]) [000] [00] [00]"
/>
prop tipo padrão descrição
disabled boolean false Desabilita o campo.
error boolean false Muda a cor do campo, indicando erro.
size 'normal' | 'small' 'normal' Tamanho do campo.
mask string '' Máscara utilizada no texto do campo.
onChangeText (formatted: string, extracted: string) => void Callback executado quando o texto é mudado.

*Herda as props do react-native-text-input-mask.


MultiSelect

<MultiSelect
  modalTitle="Choose a item"
  placeholder="Choose a item"
  searchPlaceholder="Search fruits"
  maxSelectedItems={3}
  onChange={setSelectedItems}
  items={[{ text: 'Apple', value: 1 }, { text: 'Banana', value: 2 }]}
  selected={{ 1: 'Apple' }}
  keyExtractor={item => String(item.value)}
/>
prop tipo padrão descrição
items Item[] (obrigatório)
onClose `(selected: Record<string number, string>) => void` (obrigatório)
keyExtractor (item: Item, index: number) => string (obrigatório)
maxSelectableItems number undefined Máximo de itens selecionáveis.
placeholder string ''
modalTitle string (obrigatório)
searchPlaceholder string '' Placeholder do campo de busca.
disabled boolean false
valueKey string 'obrigatório' Nome customizado para ser usado como propriedade do valor.
textKey string 'obrigatório' Nome customizado para ser usado como propriedade do texto.

SearchablePicker

<SearchablePicker
  modalTitle="Choose a item"
  placeholder="Choose a item"
  searchPlaceholder="Search fruits"
  items={[{ text: 'Apple', value: 1 }, { text: 'Banana', value: 2 }]}
  onChange={setSelectedSearchableItems}
  selected={1}
  keyExtractor={item => String(item.value)}
/>
prop tipo padrão descrição
items Item[] (obrigatório)
selected `string number` undefined
onChange (selected: SelectedItems) => void (obrigatório) Callback executado quando um item é escolhido.
keyExtractor (item: Item, index: number) => string (obrigatório)
placeholder string ''
modalTitle string (obrigatório)
searchPlaceholder string '' Placeholder do campo de busca.
disabled boolean false
valueKey string 'value' Nome customizado para ser usado como propriedade do valor.
textKey string 'text' Nome customizado para ser usado como propriedade do texto.
loading boolean 'false' Loading

Toast

Envolva o provider na raiz do projeto:

<ToastProvider>
  {...rest}
</ToastProvider>

Utilização:

const toast = useToast();

toast.show({ message: 'Oops! Ocorreu um erro.' });
prop tipo padrão descrição
message string (obrigatório) Mensagem mostrada no Toast.
type 'danger' | 'success' | 'warning' 'danger'
visible boolean false
buttonText string (obrigatório) Texto a ser mostrado no botão.
duration number 1500 Duração do toast.

Package Sidebar

Install

npm i fitcard-ui-react-native

Weekly Downloads

129

Version

1.9.4

License

none

Unpacked Size

1.03 MB

Total Files

438

Last publish

Collaborators

  • tifitcard