Travel Explorer

UserBigcatgj
Author: motionsites
Original Link
8/17/2026
通用
Travel

Prompt Content

Build a React + Vite + TypeScript + Tailwind CSS mobile app mockup called "Roam Beyond Borders" -- a travel app displayed inside a realistic iPhone frame on a white background. It has TWO screens that switch via state: a Home screen and an Explore screen.

---

## SETUP REQUIREMENTS

**Tech stack:** React 18, Vite, TypeScript, Tailwind CSS, lucide-react for icons.

**Fonts (loaded in index.html):**
- Nomada Didone (serif heading font): `https://db.onlinewebfonts.com/c/5f01c59c653c8200fb4ec7f1a81d22ba?family=Nomada+Didone`
- Inter (body font): `https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap`

**Page title:** "Roam Beyond Borders"

---

## PHONE FRAME

- Centered on screen (`h-screen w-screen bg-white flex items-center justify-center overflow-hidden`)
- Frame dimensions: `width: 340px`, `height: 740px`, `border-radius: 52px`, `overflow: hidden`
- Frame shadow (class `phone-frame`):
```css
box-shadow:
  inset 0 0 0 2px rgba(255, 255, 255, 0.08),
  0 0 0 1px rgba(0, 0, 0, 0.6),
  0 0 0 10px #1a1a1e,
  0 0 0 11px rgba(255, 255, 255, 0.06),
  0 0 60px rgba(0, 0, 0, 0.3);
```
- **Dynamic Island:** Absolute positioned, `top-[12px]`, centered horizontally, `w-[126px] h-[37px] bg-black rounded-full z-50`

---

## ANIMATIONS (index.css)

```css
@keyframes fadeSlideUp {
  from { opacity: 0; transform: translateY(18px); }
  to { opacity: 1; transform: translateY(0); }
}
.animate-stagger { opacity: 0; animation: fadeSlideUp 0.6s ease-out forwards; }
.stagger-1 { animation-delay: 0.1s; }
.stagger-2 { animation-delay: 0.2s; }
.stagger-3 { animation-delay: 0.3s; }
.stagger-4 { animation-delay: 0.4s; }
.stagger-5 { animation-delay: 0.5s; }
.stagger-6 { animation-delay: 0.6s; }
.stagger-7 { animation-delay: 0.7s; }
```

Also in CSS:
```css
* { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; }
.font-heading { font-family: 'Nomada Didone', Georgia, serif; font-weight: normal; }
.font-inter { font-family: 'Inter', sans-serif; }
.no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }
.no-scrollbar::-webkit-scrollbar { display: none; }
```

---

## SCREEN 1: HOME SCREEN

Full-bleed background video with text overlay. Clicking the button transitions to Screen 2.

**Background video (absolute, covers frame):**
```
src="https://d8j0ntlcm91z4.cloudfront.net/user_38xzZboKViGWJOttwIXH07lWA1P/hf_20260705_060733_a39bb3eb-6b8a-4117-a7cc-0c6ceb74f1bb.mp4"
autoPlay muted loop playsInline
```

**Content overlay** (`relative flex-1 flex flex-col px-7 pt-20 pb-8 z-10`):

- **Heading** (stagger-1): Font: Nomada Didone, color `#01080A`, size `52px`, line-height `1.05`, tracking-tight, mb-5. Text:
  ```
  Roam
  Beyond
  Borders
  ```
  (Each word on its own line via `<br />`)

- **Subtext** (stagger-2): Color `#01080A/70`, size `15px`, leading-relaxed, max-w-[240px], font-inter. Text: "Uncover hidden gems and craft memories that last forever"

- **Spacer:** `flex-1`

- **CTA Button** (stagger-3, wrapped in `w-full px-2 pb-2`): `w-full bg-white text-gray-900 font-medium text-base py-4 rounded-full transition-transform active:scale-[0.98] hover:shadow-lg`. Text: "Begin Your Journey"

---

## SCREEN 2: EXPLORE SCREEN

Dark background (`bg-[#1C1C1C]`), scrollable content.

### Header (stagger-1, `px-6 pt-16 pb-8`)
- Left: Avatar (40x40 rounded-full) + text column
  - Avatar image: `https://images.pexels.com/photos/774909/pexels-photo-774909.jpeg?auto=compress&cs=tinysrgb&w=100`
  - Small text: "Welcome back," (`text-white/60 text-xs font-inter`)
  - Name: "Elena Castillo" (`text-white text-[22px] font-heading`)
- Right: Bell icon (lucide-react, size 20, white)

### Search Bar (stagger-2, `px-6 mb-3`)
- Container: `bg-[#333333] rounded-full pl-4 pr-0 py-0`, flex row
- Placeholder text: "Search dream destinations" (`text-white/40 text-sm font-inter`)
- Right icon circle: `w-9 h-9 bg-[#979797] rounded-full` with Search icon (size 16, color `#1C1C1C`)

### Filter Chips (stagger-3, `mb-7`, horizontally scrollable, no-scrollbar)
- Container: `flex gap-2 px-6`
- Chips: `px-4 py-2 bg-[#333333] text-white/80 text-xs font-inter rounded-full`
- Labels: "Top Picks Now", "Quick Escapes", "South America", "Europe"

### Section Header (stagger-4, `px-6 mb-4`)
- Left: "Destinations" (`font-heading text-white text-[22px]`)
- Right: "View all" (`text-white/50 text-xs font-inter`)

### Horizontal Cards (stagger-5, flex-1, overflow-x-auto, no-scrollbar)
- Container: `flex gap-4 px-6 h-full pb-4`
- Each card: `w-[240px] h-[310px] rounded-3xl overflow-hidden`, position relative

**Card 1 - Ireland:**
- Image: `https://images.higgs.ai/?default=1&output=webp&url=https%3A%2F%2Fd8j0ntlcm91z4.cloudfront.net%2Fuser_38xzZboKViGWJOttwIXH07lWA1P%2Fhf_20260704_153452_6ac31a99-2fe2-46aa-8d3c-edcd3fc0ac9a.png&w=1280&q=85`
- Price: "From $3,200"
- Description: "Emerald meadows, rugged coastal cliffs, and folk tunes drifting from pubs"
- Has "Curated" badge: YES

**Card 2 - Norway:**
- Image: `https://images.higgs.ai/?default=1&output=webp&url=https%3A%2F%2Fd8j0ntlcm91z4.cloudfront.net%2Fuser_38xzZboKViGWJOttwIXH07lWA1P%2Fhf_20260704_154229_5be57df0-6fc9-49ba-840e-62f1b686c7f5.png&w=1280&q=85`
- Price: "From $4,100"
- Description: "Majestic fjords, aurora skies, and peaceful seaside hamlets"
- Has "Curated" badge: NO

**Card 3 - Japan:**
- Image: `https://images.higgs.ai/?default=1&output=webp&url=https%3A%2F%2Fd8j0ntlcm91z4.cloudfront.net%2Fuser_38xzZboKViGWJOttwIXH07lWA1P%2Fhf_20260704_154713_941acc2f-d44d-4473-87fd-13b46129423b.png&w=1280&q=85`
- Price: "From $3,800"
- Description: "Sacred shrines, blooming sakura, and neon-lit streets woven into tradition"
- Has "Curated" badge: YES

**Card 4 - Iceland:**
- Image: `https://images.higgs.ai/?default=1&output=webp&url=https%3A%2F%2Fd8j0ntlcm91z4.cloudfront.net%2Fuser_38xzZboKViGWJOttwIXH07lWA1P%2Fhf_20260704_154824_77eb9d80-7654-47e2-baf1-89adb5c2f094.png&w=1280&q=85`
- Price: "From $4,500"
- Description: "Vast ice caps, erupting hot springs, and surreal terrain under endless sky"
- Has "Curated" badge: NO

**Card overlay styling:**
- Bottom gradient: `absolute bottom-0 left-0 right-0 h-[50%] rounded-b-3xl backdrop-blur-sm bg-gradient-to-t from-black/40 via-black/20 to-transparent` with mask: `linear-gradient(to top, black 60%, transparent 100%)`
- "Curated" badge (top-right): `bg-white/90 backdrop-blur-md rounded-lg px-2 py-1.5` with BadgeCheck icon (size 12) + text `text-gray-800 text-[10px] font-inter font-semibold`
- Bottom info (`absolute bottom-0 p-5`):
  - Country name: `text-white font-heading text-xl`
  - Price: `text-white text-[11px] font-inter font-medium`
  - Description: `text-white/70 text-[11px] leading-snug font-inter`

### Bottom Navigation (stagger-6, `flex justify-center pb-8 pt-3`)
- Pill container: `bg-[#333333] rounded-full p-2 flex items-center gap-6`
- Active tab (Home): `w-9 h-9 bg-white rounded-full` with Home icon (size 18, black)
- Inactive tabs: `w-9 h-9` with icons Compass, Heart, User (size 18, `text-white/40`)

---

## ICONS USED (all from lucide-react)
Search, Bell, Home, Compass, Heart, User, BadgeCheck

No examples available

The author has not added an output example yet; new public prompts require at least one.

Want a different result? Change just a few parts

AI finds the swappable parts (subject/style/scene) — fill in what you want, keep the rest

PlazaLogin