orn-ui
Atom

Transition

Requiere <UIProvider> — Primeros pasos →

Instalación

Instala solo este componente (copia el código fuente a tu proyecto, sin dependencia npm)

npx orn-ui add transition

O instala el paquete completo e impórtalo

pnpm add orn-ui
import { Transition } from 'orn-ui/transition';
Depende de:core (theme + icons)

Uso

  • cuándo usarlo — Montar/desmontar un nodo con animación en el hilo nativo en vez de un corte seco. Modal, BottomSheet y Toast ya lo usan internamente.
  • visible — Entra en `true`, sale (desmonta, `onExited`) en `false`.
  • preset — Uno o un array — `['fade', 'slide-up']` combina opacidad y un slide. `pop` es un spring por defecto.
  • delay — Un índice por ítem escalona una lista — sin necesitar otra librería.
  • value — Le pasa el progreso (0→1) a un driver externo, p.ej. un PanResponder, en vez de un timing/spring.
Clip del demo todavía sin grabar — ver MEDIA.md

Variantes

fade (default)

<Toggle preset="fade" />

preset={['fade', 'slide-up']}

<Toggle preset={['fade', 'slide-up']} distance={32} />

preset='pop' — spring

<Toggle preset="pop" />

preset={['fade', 'slide-right']}

<Toggle preset={['fade', 'slide-right']} distance={48} />

delay per index — staggered list

<StaggeredList />

exit before unmount

<ExitBeforeUnmount />
Código completo del demo
const variants: VariantDef[] = [
  { label: 'fade (default)', content: <Toggle preset="fade" /> },
  { label: "preset={['fade', 'slide-up']}", content: <Toggle preset={['fade', 'slide-up']} distance={32} /> },
  { label: "preset='pop' — spring", content: <Toggle preset="pop" /> },
  { label: "preset={['fade', 'slide-right']}", content: <Toggle preset={['fade', 'slide-right']} distance={48} /> },
  { label: 'delay per index — staggered list', content: <StaggeredList /> },
  { label: 'exit before unmount', content: <ExitBeforeUnmount /> },
];
return <VariantList variants={variants} />;

Props

Además acepta testID, que se reenvía al nodo raíz. Existe para los tests end-to-end (Maestro maneja la app por el árbol de accesibilidad) y no cambia en nada cómo se ve ni cómo se comporta el componente.

NombreTipoPor defectoDescripción
childrenReact.ReactNode
visible?booleantrueEntra cuando es true, sale (y desmonta) cuando es false.
preset?TransitionPreset | TransitionPreset[]fadeUno o más: 'fade scale' combina opacidad y escala.
duration?numbertokens.duration.baseDuración del timing en ms.
delay?number0ms antes de arrancar. Un delay por índice escalona una lista.
distance?number24Píxeles que recorren los presets de slide.
spring?booleanSpring en vez de timing (implícito en 'pop').
appear?booleantrueAnima también el primer render. En false arranca ya presente.
keepMounted?booleanfalseDeja el nodo montado al salir, solo lo esconde.
value?Animated.ValueProgreso 0→1 manejado desde afuera. Con esto, Transition solo interpola: quien lo pasa decide cuándo y cómo avanza (un PanResponder, por ejemplo).
onEntered?() => void
onExited?() => void
style?StyleProp<ViewStyle>