Tela: Viagens

Lista de viagens salvas, swipe para deletar e FAB para criar nova viagem.

TripCard

Card horizontal com thumbnail, nome da cidade e metadados da viagem.

screens/Viagens — TripCardflexRow | image 80×80 radius 12 | bg white08 | radius 16 | padding 8 | gap 16
🗼
Paris
10–17 jan · 5 passeios
TripCard
🗽
Nova York
22–29 mar · 8 passeios
TripCard
PropriedadeValorDescrição
card.flexDirectionrow
card.alignItemscenter
card.gapspacing.md (16px)
card.backgroundColorrgba(255,255,255,0.08)white08
card.borderRadiusradius.lg (16px)
card.paddingspacing.sm (8px)
image.size80×80
image.borderRadiusradius.md (12px)
cityName.fontSize18pxSemibold, white
meta.fontSize14pxMedium, white60
pressedOpacity0.85
// screens/Viagens — TripCard
tripCard: {
  flexDirection: 'row',
  alignItems: 'center',
  gap: spacing.md,           // 16
  backgroundColor: colors.white08,
  borderRadius: radius.lg,   // 16
  padding: spacing.sm,       // 8
},
tripThumb: {
  width: 80, height: 80,
  borderRadius: radius.md,   // 12
},
tripCity: {
  fontSize: 18, fontFamily: Semibold, color: colors.white,
},
tripMeta: {
  fontSize: 14, fontFamily: Medium, color: colors.white60,
},

Ação de Delete (swipe)

Área vermelha revelada pelo swipe esquerdo via react-native-gesture-handler. Ao confirmar delete, o card sai com animação paralela: opacity e translateX.

screens/Viagens — SwipeableRow / DeleteActionwidth 80px | bg #E53935 | radius 16 | ícone delete branco
delete
Delete Action
PropriedadeValorDescrição
deleteArea.width80px
deleteArea.borderRadius16pxradius.lg
deleteArea.background#E53935Vermelho destrutivo
deleteIcon.size24pxMaterial Icons delete, color white
anim opacity1 → 0200ms timing
anim translateX0 → -500250ms timing, paralelo
// Animação de saída do TripCard ao deletar
Animated.parallel([
  Animated.timing(opacity, {
    toValue: 0,
    duration: 200,
    useNativeDriver: true,
  }),
  Animated.timing(translateX, {
    toValue: -500,
    duration: 250,
    useNativeDriver: true,
  }),
]).start(() => onDelete(id));

FAB — Criar nova viagem

Botão flutuante pill no rodapé da tela. Ícone add_circle + label.

screens/Viagens — FABpill azul | add_circle 32px black | texto 16 Semibold black
add_circleCriar nova viagem
FAB
PropriedadeValorDescrição
fab.backgroundColor#4494FCembarko_blue
fab.borderRadius100pxPill perfeito
fab.paddingLeft10px
fab.paddingRight12px
fab.paddingVertical8px
icon.size32pxadd_circle, color #000
label.fontSize16pxSemibold
label.color#000000
// FAB — Viagens
fab: {
  flexDirection: 'row',
  alignItems: 'center',
  gap: 4,
  backgroundColor: colors.embarko_blue,
  borderRadius: 100,
  paddingLeft: 10, paddingRight: 12,
  paddingVertical: 8,
},
fabText: {
  fontSize: 16, fontFamily: Semibold, color: '#000',
},