295 Ride
Mixed finishes

Schedule

Ride Pro

Book an early airport ride by dragging a ruler of five-minute ticks. Arrival and time before your flight update as you go, with a warning when it gets tight, and reserving turns the time into a held ticket stub.

More in Ride

View all 14

Agent prompt

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

Goal: Book an early airport ride by dragging a ruler of five-minute ticks. Arrival and time before your flight update as you go, with a warning when it gets tight, and reserving turns the time into a held ticket stub. 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/ride-schedule
```

Or pull just the components: `npx @lumioui/cli add button pro/calendar-strip icon pro/ride-option 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

### `button` — Pill button that presses down under your finger, in eight styles from solid to glass, with a built-in loading state that swaps in place while an action runs.
- `<Button>` ×2

### `calendar-strip` — Horizontal week strip with a selection disc that glides between days. Each day can show a progress ring that lights up once complete. Swipe or tap arrows to change weeks, with marked-date dots.
- `<CalendarStrip>` ×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>` ×2

### `ride-option` — Ride and delivery tier picker showing vehicle, seats, arrival time and price. The chosen vehicle rolls forward, and once requested it drives off while its row reads “Finding your driver”.
- 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>` ×23

## 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/ride/schedule.tsx` exporting ScheduleScreen. 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/ride-schedule
```

The source lands at `screens/ride/schedule.tsx`.

Screen: https://lumioui.com/screens/ride-schedule