← Components/Onboarding

UserOnboarding

useronboarding-1779394026134.tsx
'use client'
import { useState } from 'react'

const STEPS = [
  { emoji:'👋', title:'Welcome to Empire UI', desc:'The largest AI-generated React component library with 17,500+ components.' },
  { emoji:'🎨', title:'Browse Components', desc:'Search and filter through categories like buttons, charts, forms, and much more.' },
  { emoji:'⚡', title:'Use with MCP', desc:'Install our MCP server to generate components directly in Claude Code or Cursor.' },
  { emoji:'🚀', title:"You're all set!", desc:"Start building your next project with Empire UI components today." },
]

export default function UserOnboarding() {
  const [step, setStep] = useState(0)
  const current = STEPS[step]
  return (
    <div style={{ background:'#fff', borderRadius:'20px', padding:'32px 28px', maxWidth:'360px', boxShadow:'0 8px 40px rgba(0,0,0,0.1)' }}>
      <div style={{ display:'flex', gap:'6px', justifyContent:'center', marginBottom:'28px' }}>
        {STEPS.map((_, i) => (
          <div key={i} style={{
            height:'4px', flex:1, borderRadius:'2px',
            background:i <= step ? '#6d28d9' : '#e2e8f0', transition:'background 0.3s',
          }} />
        ))}
      </div>
      <div style={{ textAlign:'center', marginBottom:'28px' }}>
        <div style={{ fontSize:'60px', marginBottom:'16px' }}>{current.emoji}</div>
        <h2 style={{ margin:'0 0 10px', fontSize:'20px', fontWeight:700, color:'#1e293b' }}>{current.title}</h2>
        <p style={{ margin:0, fontSize:'14px', color:'#64748b', lineHeight:1.6 }}>{current.desc}</p>
      </div>
      <div style={{ display:'flex', gap:'10px' }}>
        {step > 0 && (
          <button onClick={() => setStep(s => s-1)} style={{
            flex:1, padding:'11px', border:'1px solid #e2e8f0', borderRadius:'10px',
            background:'#fff', cursor:'pointer', fontWeight:600, color:'#374151',
          }}>Back</button>
        )}
        <button onClick={() => step < STEPS.length-1 ? setStep(s => s+1) : null} style={{
          flex:2, padding:'11px', border:'none', borderRadius:'10px',
          background:'linear-gradient(135deg,#6d28d9,#2563eb)',
          color:'#fff', cursor:'pointer', fontWeight:700, fontSize:'14px',
        }}>{step < STEPS.length-1 ? 'Continue →' : 'Get Started 🚀'}</button>
      </div>
      <div style={{ textAlign:'center', marginTop:'12px', fontSize:'12px', color:'#94a3b8' }}>Step {step+1} of {STEPS.length}</div>
    </div>
  )
}

Component info

CategoryOnboarding
Frameworkreact
TierFREE
Views0
Copies0

About

Multi-step user onboarding flow with progress and illustrations

More from Onboarding

'use client'
import { useState } from 'react'

const STEPS = [
  { id: 'profile', title: 'Complete your profile', desc: 'Add your name and avatar to personalize your experience.', xp: 50 },
  { id: 'browse', title: 'Browse components', desc: 'Explore
OnboardingChecklist
Onboarding
'use client';
import { useState } from 'react';

export default function ProgressStepper() {
  const [current, setCurrent] = useState(0);
  const steps = [
    { label: 'Account', icon: '👤', desc: 'Basic information' },
    { label: 'Profile', icon:
ProgressStepper
Onboarding