Tela: Home

Tela principal do app. Composição de header, service selector, carrossel de cards e seções de conteúdo.

Row com logo à esquerda e botão de notificação à direita. O dot azul indica notificações pendentes.

screens/Home — HeadericonButton + notificationDot — topo da tela
notifications
Icon Button + Dot
notifications
Sem notificação
PropriedadeValorDescrição
iconButton size40×40width e height
iconButton radius20pxCircular
iconButton bgrgba(255,255,255,0.10)white10
icon size22–24pxMaterialIcons
notificationDot size16×16
notificationDot radius8pxCircular
notificationDot bg#4494FCembarko_blue
notificationDot postop:-2 right:-2position absolute
// screens/Home/styles.js
iconButton: {
  width: 40, height: 40,
  borderRadius: 20,
  backgroundColor: "rgba(255,255,255,0.10)",
  alignItems: 'center', justifyContent: 'center',
},
notificationDot: {
  position: 'absolute',
  top: -2, right: -2,
  width: 16, height: 16,
  borderRadius: 8,
  backgroundColor: colors.embarko_blue,
},

Service Selector

Row de 4 botões de ícone para selecionar o serviço ativo. Passagens, Passeios, Shows e eSIM.

screens/Home — ServiceSelectorVariants: Default, Active, Disabled
flight
PassagensActive
explore
PasseiosDefault
music_note
ShowsDisabled
sim_card
eSIMDefault
PropriedadeValorDescrição
serviceSelectorRowflexDirection row, gap 4, width 100%
button size48×48
button radiusradius.md (12px)
button bg (inactive)rgba(255,255,255,0.12)
button border (inactive)1px rgba(255,255,255,0.08)
button bg (active)#4494FCembarko_blue
button border (active)transparent
button opacity (disabled)0.45
label marginTop10px
label fontSize14px
label color (inactive)rgba(255,255,255,0.80)Medium
label color (active)#FFFFFFSemibold
label color (disabled)rgba(255,255,255,0.40)Medium
// screens/Home/styles.js (excerpt)
serviceSelectorButton: {
  width: 48, height: 48, borderRadius: radius.md, // 12
  backgroundColor: "rgba(255,255,255,0.12)",
  borderWidth: 1, borderColor: colors.white08,
},
serviceSelectorButtonActive: {
  backgroundColor: colors.embarko_blue,
  borderColor: "transparent",
},
serviceSelectorButtonDisabled: {
  opacity: 0.45,
},
serviceSelectorLabel: {
  marginTop: 10, fontSize: 14,
  fontFamily: Medium, color: "rgba(255,255,255,0.80)",
},
serviceSelectorLabelActive: { fontFamily: Semibold, color: colors.white },
serviceSelectorLabelDisabled: { color: "rgba(255,255,255,0.40)" },

Seções de Conteúdo

Cada seção tem título, subtítulo opcional e um carrossel horizontal. Gap de 32px entre seções.

screens/Home — Section HeadersectionTitle + sectionSubtitle
Passeios em destaque
Experiências selecionadas para você
Title + Subtitle
Shows e eventos
Só título
PropriedadeValorDescrição
section gap16pxEntre título e carrossel
section paddingH16px
sectionTitle fontSize24pxSemibold, white
sectionTitle lineHeight30px
sectionSubtitle fontSize14pxMedium, white60
gap entre seçõesspacing.xl (32px)

Carrossel Horizontal

O carrossel "sangra" para fora do padding da tela com marginHorizontal: -16, mantendo o padding interno via paddingHorizontal: 16.

PropriedadeValorDescrição
carouselWrapper marginH-16pxSangramento fora do padding
carouselContent paddingH16pxspacing.md
carouselContent gap16pxspacing.md entre cards
cardWrapper width310pxactivityCard.cardWidth
sectionTitle: {
  fontSize: 24, lineHeight: 30,
  fontFamily: Semibold, color: colors.white,
},
carouselWrapper: { marginHorizontal: -spacing.md },
carouselContent: { paddingHorizontal: spacing.md, gap: spacing.md },

Skeleton Loading

Cards exibidos enquanto os dados carregam. Fundo escuro com áreas de conteúdo em branco 8%.

screens/Home — SkeletonCardAparece durante fetch — substitui ActivityCard
SkeletonCard
PropriedadeValorDescrição
skeletonCard bgrgba(255,255,255,0.10)
skeletonCard radius16px
skeletonCard padding16px
skeletonImage height160px
skeletonImage bgrgba(255,255,255,0.08)
skeletonImage radius16px
skeletonImage marginB12px
skeletonLine height14px
skeletonLine bgrgba(255,255,255,0.08)
skeletonLine radius4px
skeletonLine marginB8px
skeletonLine width80%
skeletonLineShort width55%

Tracker Banner

Card promocional do tracker de preços. Largura fixa 320px, ilustração transbordando à direita.

screens/Home — TrackerBannerwidth 320 | height 110 | overflow hidden
Rastreador de preços
MONITORE SEUS VOOS
TrackerBanner
PropriedadeValorDescrição
width320px
height110px
bgrgba(255,255,255,0.10)
borderRadius16px
paddingTop12px
paddingLeft16px
overflowhiddenIlustração pode transbordar
title fontSize18pxSemibold, white
subtitle fontSize11pxSemibold, white, opacity 0.4
subtitle marginTop4px

Cards horizontais para destinos eSIM populares. Flag circular + nome do país.

screens/Home — EsimPopularCard160×110 | bg white12 | radius 16
flag
Europa
EsimPopularCard
flag
EUA
EsimPopularCard
PropriedadeValorDescrição
size160×110
bgrgba(255,255,255,0.12)
borderRadius16px
padding16px
justifyContentspace-between
flagWrap size48×48
flagWrap radius24pxCircular
flagWrap overflowhidden
title fontSize14pxSemibold, white
title lineHeight20px