025 Auth
Mixed finishes

Phone Verification

Auth Pro

Enter a phone number set big with no box around it, where a wrong digit group dips to show the problem. Sending shrinks the number into a “Code sent to” chip that takes the title’s place.

More in Auth

View all 34

Agent prompt

Paste into Claude Code, Cursor or Devin to rebuild this screen.
Recreate the "Phone Verification" screen in React Native using LumioUI.

Goal: Enter a phone number set big with no box around it, where a wrong digit group dips to show the problem. Sending shrinks the number into a “Code sent to” chip that takes the title’s place. Match the reference implementation's layout, behavior, and motion exactly — this is a production screen, not a mockup.

## Setup

Fastest path — install the screen plus its component deps:

```bash
npx @lumioui/cli add pro/auth-phone-verification
```

Or pull just the components: `npx @lumioui/cli add pro/country-picker icon keyboard-avoiding pro/phone-input text`

Native packages:
- react-native-reanimated@*
- react-native-safe-area-context@*
- react-native-svg@*

Stack assumptions: Expo SDK 54 / RN 0.81, Reanimated 4, NativeWind v4, TypeScript strict, Expo Go compatible.

## Components — how, where, when

### `country-picker` — Searchable country list with flags and dial codes that opens from a field or settings row, or sits inline. Picking a country flies its flag into the field. Use the built-in list or bring your own.
- `<CountryFlag>` ×1
- `<CountryPicker>` ×1

### `icon` — Icon set drawn on one consistent grid, sized and coloured from your theme. The heart, star and bookmark can fill in place inside their outline, then fade back out.
- `<Icon>` ×5

### `keyboard-avoiding` — Container that lifts your content above the on-screen keyboard on iOS, so fields and message bars never end up hidden behind it. On Android it leaves this to the system’s own resizing.
- `<KeyboardAvoiding>` ×1

### `phone-input` — Phone number field with a country flag and dial code that opens a country picker. The number formats as you type, and a check appears once it’s complete.
- imported but not rendered directly — likely used through a sibling or as a utility

### `text` — Themed type scale from caption to display that follows light and dark mode. Includes a pull-quote style with an accent rule and a quieter dimmed tone for secondary text.
- `<Text>` ×9

## Conventions (non-negotiable)

- Styling via NativeWind `className` with semantic tokens only: `bg-background`, `text-foreground`, `bg-card`, `text-card-foreground`, `bg-secondary`, `bg-muted`, `text-muted-foreground`, `bg-accent`, `bg-destructive`, `border-border`. Hard-coded colors only inside media overlays (`text-white`, `bg-black/N`).
- Motion via the token presets from `@lumioui/core` (`spring.press`, `spring.surface`, `spring.glide`, `timing.fast`, `timing.slow`, …) — no bespoke spring configs or durations.
- Gate transform motion behind `useReducedMotion()`; keep opacity/color feedback, drop travel and overshoot.
- Haptics via `useHaptic()`: `light` on press, `selection` on toggle/select, `warning` on invalid input. Never import expo-haptics directly.
- Press feedback via `usePressAnimation()` (~0.97 scale), not `activeOpacity` tricks.
- a11y: `accessibilityRole` + `accessibilityLabel` on every control, touch targets ≥44pt.
- Entrance choreography: staggered `Mount` wrappers (delay 0/60/120…) so regions land in sequence instead of popping in at once.
- Wrap the screen in `SafeAreaView`; keep dark mode working via the semantic tokens.

## Deliverable

One file: `screens/auth/phone-verification.tsx` exporting PhoneVerificationScreen. Preserve the props interface — the host app wires the callbacks (navigation, submit handlers) through them.

## Reference implementation

This is a LumioUI Pro item: its source is not published in the docs. Install it with a Pro license key
(set `LUMIO_LICENSE_KEY`; keys are on lumioui.com/account) and read the installed file as the reference:

```bash
npx @lumioui/cli add pro/auth-phone-verification
```

The source lands at `screens/auth/phone-verification.tsx`.

Screen: https://lumioui.com/screens/auth-phone-verification