UIPackage
Menu

Framework

Change language

Boilerplate repo

Hero

blockhero

Hero section collection with eleven interchangeable variants: metric showcase, 3D tilt canvas, ASCII terminal stream, bento preview grid, developer terminal, interactive globe nodes, SaaS metrics dashboard, split device mockup, typing command center, video walkthrough modal, and glowing waitlist.

Also available for Vue ->

Installation

$npx shadcn@latest add https://uipkge.dev/r/react/hero.json
Named registry:npx shadcn@latest add @uipkge-react/heroInstalls to:components/blocks/hero/

Variants

Loading interactive previews…

Schema

Type aliases exported from this item's source. Use these to shape the data you pass in.

CommandPreset
interface CommandPreset {
  id: string
  label: string
  command: string
  output: string[]
}
EdgeNode
interface EdgeNode {
  id: string
  name: string
  region: string
  country: string
  city: string
  latencyMs: number
  p99LatencyMs: number
  cacheHitRatio: number
  qps: number
  status: 'optimal' | 'operational' | 'degraded'
  coordinates: { x: number; y: number }
}
MetricData
interface MetricData {
  mrr: string
  growth: string
  activeUsers: string
  requests: string
  chartPoints: number[]
}
CommandAction
interface CommandAction {
  id: string
  title: string
  category: 'Components' | 'Themes' | 'Git' | 'Workflows'
  shortcut: string[]
  icon: React.ComponentType<{ className?: string }>
  description: string
  status: string
}
VideoChapter
interface VideoChapter {
  id: string
  title: string
  timestamp: string
  description: string
}
RoleOption
interface RoleOption {
  id: Role
  label: string
  perk: string
}

Theming

CSS custom properties referenced in this item. Override any of them in your :root or per-element to retheme.

--primary

Files installed (11)

  • components/blocks/hero/Hero01.tsx4.3 kB
    import { ArrowRight, PlayCircle } from 'lucide-react'
    import { Avatar, AvatarFallback } from '@/components/ui/avatar'
    import { Badge } from '@/components/ui/badge'
    import { Button } from '@/components/ui/button'
    import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
    
    export function Hero01() {
      return (
        <section data-slot="hero-01" className="bg-background relative overflow-hidden">
          <div className="relative mx-auto max-w-6xl px-6 py-24 lg:py-32">
            <div className="grid gap-12 lg:grid-cols-2 lg:items-center">
              <div className="space-y-6">
                <h1 className="text-4xl font-semibold tracking-tight sm:text-5xl lg:text-6xl">
                  The platform your team will actually use.
                </h1>
                <p className="text-muted-foreground max-w-xl text-lg">
                  One workspace for everything your team needs. Built on unbundled UI primitives — fast, accessible, easy to
                  customise.
                </p>
                <div className="flex flex-wrap items-center gap-3">
                  <Button size="lg">
                    Start free trial
                    <ArrowRight className="ml-2 size-4" />
                  </Button>
                  <Button size="lg" variant="outline">
                    <PlayCircle className="mr-2 size-4" />
                    Watch demo (2 min)
                  </Button>
                </div>
                <div className="text-muted-foreground flex flex-wrap items-center gap-x-6 gap-y-2 text-sm">
                  <span>★★★★★ 4.9 on G2</span>
                  <span>14-day free trial</span>
                  <span>No credit card required</span>
                </div>
              </div>
    
              <div className="relative">
                <Card className="absolute -top-4 right-0 w-56 rotate-2 shadow-lg">
                  <CardContent className="space-y-1 p-4">
                    <p className="text-muted-foreground text-xs uppercase">Active users</p>
                    <p className="text-2xl font-semibold">1,284</p>
                    <p className="text-success text-xs">+8.2% MoM</p>
                  </CardContent>
                </Card>
                <Card className="absolute top-32 -left-2 w-52 -rotate-3 shadow-lg">
                  <CardContent className="space-y-1 p-4">
                    <p className="text-muted-foreground text-xs uppercase">Uptime</p>
                    <p className="text-2xl font-semibold">100%</p>
                    <p className="text-muted-foreground text-xs">12 cycles, 0 misses</p>
                  </CardContent>
                </Card>
                <Card className="ml-auto w-72 shadow-xl">
                  <CardHeader>
                    <CardTitle className="text-base">Onboarding queue</CardTitle>
                    <CardDescription>3 starting Monday</CardDescription>
                  </CardHeader>
                  <CardContent className="space-y-3">
                    <div className="flex items-center gap-3">
                      <Avatar className="size-8">
                        <AvatarFallback>LW</AvatarFallback>
                      </Avatar>
                      <div className="flex-1">
                        <p className="text-sm font-medium">Lena Wei</p>
                        <p className="text-muted-foreground text-xs">Engineering</p>
                      </div>
                      <Badge variant="secondary">Pending</Badge>
                    </div>
                    <div className="flex items-center gap-3">
                      <Avatar className="size-8">
                        <AvatarFallback>JR</AvatarFallback>
                      </Avatar>
                      <div className="flex-1">
                        <p className="text-sm font-medium">Joaquín Reyes</p>
                        <p className="text-muted-foreground text-xs">Engineering</p>
                      </div>
                      <Badge variant="secondary">Pending</Badge>
                    </div>
                    <div className="flex items-center gap-3">
                      <Avatar className="size-8">
                        <AvatarFallback>PS</AvatarFallback>
                      </Avatar>
                      <div className="flex-1">
                        <p className="text-sm font-medium">Priya Shah</p>
                        <p className="text-muted-foreground text-xs">Engineering</p>
                      </div>
                      <Badge variant="secondary">Pending</Badge>
                    </div>
                  </CardContent>
                </Card>
              </div>
            </div>
          </div>
        </section>
      )
    }
    
  • components/blocks/hero/Hero3dTiltInteractiveCanvas.tsx7.4 kB
  • components/blocks/hero/HeroAsciiTerminalStream.tsx7.4 kB
  • components/blocks/hero/HeroBentoPreviewGrid.tsx13 kB
  • components/blocks/hero/HeroDeveloperTerminal.tsx11.1 kB
  • components/blocks/hero/HeroGlobeInteractiveNodes.tsx13.2 kB
  • components/blocks/hero/HeroSaasMetricsDashboard.tsx10.1 kB
  • components/blocks/hero/HeroSplitDeviceMockup.tsx10.3 kB
  • components/blocks/hero/HeroTypingCommandCenter.tsx9.3 kB
  • components/blocks/hero/HeroVideoModalWalkthrough.tsx13.1 kB
  • components/blocks/hero/HeroWaitlistGlow.tsx9.6 kB

Raw manifest:https://uipkge.dev/r/react/hero.json