Partial Gallery
H1
custom

Lorem Ipsum

import { H1 } from "@/components/ui/typography"

<H1>Lorem Ipsum</H1>
H2
custom

Lorem Ipsum

import { H2 } from "@/components/ui/typography"

<H2>Lorem Ipsum</H2>
H3
custom

Lorem Ipsum

import { H3 } from "@/components/ui/typography"

<H3>Lorem Ipsum</H3>
H4
custom

Lorem Ipsum

import { H4 } from "@/components/ui/typography"

<H4>Lorem Ipsum</H4>
H5
custom
Lorem Ipsum
import { H5 } from "@/components/ui/typography"

<H5>Lorem Ipsum</H5>
H6
custom
Lorem Ipsum
import { H6 } from "@/components/ui/typography"

<H6>Lorem Ipsum</H6>
Paragraph
custom

Lorem Ipsum

import { P } from "@/components/ui/typography"

<P>Lorem Ipsum</P>
List - Unordered
custom
  • Item 1
  • Item 2
  • Item 3
import { List, ListItem } from "@/components/ui/typography"

<List variant="unordered">
	<ListItem>Item 1</ListItem>
</List>
List - Ordered
custom
  1. Item 1
  2. Item 2
  3. Item 3
import { List, ListItem } from "@/components/ui/typography"

<List variant="ordered">
	<ListItem>Item 1</ListItem>
</List>
Blockquote
custom
Lorem Ipsum
import { Blockquote } from "@/components/ui/typography"

<Blockquote>Lorem Ipsum</Blockquote>
Caption
custom
Laptop and code editor
Photo by Christina Morillo on Pexels
import { Caption } from "@/components/ui/typography"

<Caption>Photo by...</Caption>
Badge
shadcn
BadgeSecondaryDestructiveOutline
import { Badge } from "@/components/ui/badge"

<div className="flex w-full flex-wrap justify-center gap-2">
	<Badge>Badge</Badge>
	<Badge variant="secondary">Secondary</Badge>
	<Badge variant="destructive">Destructive</Badge>
	<Badge variant="outline">Outline</Badge>
</div>
Avatar
shadcn
CN
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"

<Avatar>
	<AvatarImage src="https://github.com/shadcn.png" />
	<AvatarFallback>CN</AvatarFallback>
</Avatar>
Button
shadcn
import { Button } from "@/components/ui/button"

<div className="flex w-full flex-wrap justify-center gap-2">
	<Button>Default</Button>
	<Button variant="secondary">Secondary</Button>
	<Button variant="outline">Outline</Button>
	<Button variant="destructive">Destructive</Button>
</div>
Radio Button
shadcn
import { Label } from "@/components/ui/label"
import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"

<RadioGroup defaultValue="starter">
	<Label><RadioGroupItem value="starter" />Starter</Label>
	<Label><RadioGroupItem value="pro" />Pro</Label>
</RadioGroup>
Input
shadcn

We will never share your email.

import { Field, FieldDescription, FieldLabel } from "@/components/ui/field"
import { Input } from "@/components/ui/input"

<Field>
	<FieldLabel htmlFor="email-demo">Email</FieldLabel>
	<Input id="email-demo" type="email" placeholder="name@example.com" />
	<FieldDescription>
		We will never share your email.
	</FieldDescription>
</Field>
Select
shadcn
import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue } from "@/components/ui/select"

<Select defaultValue="starter">
	<SelectTrigger className="w-full max-w-xs">
		<SelectValue placeholder="Choose a plan" />
	</SelectTrigger>
	<SelectContent>
		<SelectGroup>
			<SelectLabel>Plans</SelectLabel>
			<SelectItem value="starter">Starter</SelectItem>
			<SelectItem value="pro">Pro</SelectItem>
			<SelectItem value="enterprise">Enterprise</SelectItem>
		</SelectGroup>
	</SelectContent>
</Select>
Textarea
shadcn
import { Textarea } from "@/components/ui/textarea"

<Textarea placeholder="Type your message here." />
Checkbox
shadcn
import { Checkbox } from "@/components/ui/checkbox"
import { Label } from "@/components/ui/label"

<div className="flex items-center gap-3">
	<Checkbox id="terms" defaultChecked />
	<Label htmlFor="terms">Accept terms and conditions</Label>
</div>
Tabs
shadcn
Overview content.
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"

<Tabs defaultValue="overview">
	<TabsList>
		<TabsTrigger value="overview">Overview</TabsTrigger>
		<TabsTrigger value="analytics">Analytics</TabsTrigger>
	</TabsList>
	<TabsContent value="overview">Overview content.</TabsContent>
	<TabsContent value="analytics">Analytics content.</TabsContent>
</Tabs>
Accordion
shadcn

import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion"

<Accordion>
	<AccordionItem value="item-1">
		<AccordionTrigger>Is it accessible?</AccordionTrigger>
		<AccordionContent>Yes. It follows WAI-ARIA patterns.</AccordionContent>
	</AccordionItem>
</Accordion>
Slider
shadcn
import { Slider } from "@/components/ui/slider"

<Slider defaultValue={[40]} max={100} step={1} />
Pagination
shadcn
import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from "@/components/ui/pagination"

<Pagination>
	<PaginationContent>
		<PaginationItem><PaginationPrevious href="#" /></PaginationItem>
		<PaginationItem><PaginationLink href="#" isActive>1</PaginationLink></PaginationItem>
		<PaginationItem><PaginationLink href="#">2</PaginationLink></PaginationItem>
		<PaginationItem><PaginationEllipsis /></PaginationItem>
		<PaginationItem><PaginationNext href="#" /></PaginationItem>
	</PaginationContent>
</Pagination>
File Upload
shadcn
import { Input } from "@/components/ui/input"

<Input type="file" />
Table
shadcn
A list of your recent invoices.
InvoiceStatusMethodAmount
INV001PaidCredit Card$250.00
import { Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"

<Table>
	<TableCaption>A list of your recent invoices.</TableCaption>
	<TableHeader>
		<TableRow>
			<TableHead className="w-[100px]">Invoice</TableHead>
			<TableHead>Status</TableHead>
			<TableHead>Method</TableHead>
			<TableHead className="text-right">Amount</TableHead>
		</TableRow>
	</TableHeader>
	<TableBody>
		<TableRow>
			<TableCell className="font-medium">INV001</TableCell>
			<TableCell>Paid</TableCell>
			<TableCell>Credit Card</TableCell>
			<TableCell className="text-right">$250.00</TableCell>
		</TableRow>
	</TableBody>
</Table>
Artwork Card
custom
Colorful world artwork
World Piece
Diane Fine

26" x 26"

$1400 buy — $70 try

Blue abstract brush strokes
Blue Drift
L. Ortega

20" x 20"

$900 buy — $45 try

import { ArtworkCard } from "@/components/ui/widget"

const picks = [...artworks].sort(() => Math.random() - 0.5).slice(0, 2)

<div className="flex flex-wrap gap-4">
	{picks.map((artwork) => (
		<ArtworkCard
			key={artwork.title}
			imageSrc={artwork.imageSrc}
			imageAlt={artwork.imageAlt}
			title={artwork.title}
			artist={artwork.artist}
			dimensions={artwork.dimensions}
			priceLine={artwork.priceLine}
			className="max-w-sm"
		/>
	))}
</div>