Galeri Komponen
Semua 25 primitif UI + chart: lihat demonya, salin import-nya, langsung pakai.
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from '@/components/ui/accordion';import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert';Info
Gagal
import {
AlertDialog,
AlertDialogAction,
AlertDialogCancel,
AlertDialogContent,
AlertDialogDescription,
AlertDialogFooter,
AlertDialogHeader,
AlertDialogTitle,
AlertDialogTrigger,
} from '@/components/ui/alert-dialog';import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';import { Badge } from '@/components/ui/badge';import {
Card,
CardContent,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from '@/components/ui/card';Rp107.500
import { AreaChartCard, BarChartCard, DonutChartCard } from '@/components/charts';
<AreaChartCard data={{ labels: [...], datasets: [{ label: 'Penjualan', data: [...] }] }} />import { Checkbox } from '@/components/ui/checkbox';import {
Collapsible,
CollapsibleContent,
CollapsibleTrigger,
} from '@/components/ui/collapsible';import {
Dialog,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
DialogTrigger,
} from '@/components/ui/dialog';import { Input } from '@/components/ui/input';import { Label } from '@/components/ui/label';
<Label htmlFor="email">Email</Label>
<Input id="email" />import {
Pagination,
PaginationContent,
PaginationEllipsis,
PaginationItem,
PaginationLink,
PaginationNext,
PaginationPrevious,
} from '@/components/ui/pagination';Halaman aktif: 1, klik nomornya, demo ini hidup.
import {
Popover,
PopoverContent,
PopoverTrigger,
} from '@/components/ui/popover';import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from '@/components/ui/select';import { Separator } from '@/components/ui/separator';Ringkasan pesanan
Total: Rp107.500
import {
Sheet,
SheetContent,
SheetDescription,
SheetHeader,
SheetTitle,
SheetTrigger,
} from '@/components/ui/sheet';import { Skeleton } from '@/components/ui/skeleton';import { toast } from 'sonner';
// Toaster sudah terpasang di layout.
toast.success('Berhasil disimpan');import { Switch } from '@/components/ui/switch';import {
Table,
TableBody,
TableCaption,
TableCell,
TableHead,
TableHeader,
TableRow,
} from '@/components/ui/table';| ID | Pelanggan | Total |
|---|---|---|
| #ORD-0041 | Siti Aminah | Rp38.750 |
| #ORD-0042 | Budi Santoso | Rp107.500 |
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';import { Textarea } from '@/components/ui/textarea';// Contoh badge notifikasi dengan ikon lonceng (pakai Badge + lucide-react).
import { Badge } from '@/components/ui/badge';
import { Bell } from 'lucide-react';import { ErrorBoundary } from '@/components/error-boundary';
// Bungkus bagian yang rawan error; fallback tampil otomatis.
<ErrorBoundary onReset={() => setRusak(false)}>
{rusak ? <KomponenRawan /> : <KontenAman />}
</ErrorBoundary>Tekan tombol untuk mensimulasikan error render, boundary akan menampilkan UI fallback.
import { CountdownTimer } from '@/components/countdown-timer';
// target: Date | string | number, tampil "Berakhir" bila lewat.
<CountdownTimer target={new Date(Date.now() + 14 * 3600_000)} />Flash Sale 11.11 berakhir dalam:
import { DateRangePicker } from '@/components/date-range-picker';
// Controlled:
const [rentang, setRentang] = useState<DateRange>();
<DateRangePicker value={rentang} onChange={setRentang} />
// Uncontrolled (default "7 hari terakhir"):
<DateRangePicker />Laporan penjualan Bandung: 3, 9 Okt 2026
import { PrintArea, ThermalReceipt } from '@/components/print-layout';
<PrintArea width="58">
<ThermalReceipt
storeName="Warung Kopi Sederhana"
items={[{ name: 'Kopi Tubruk', qty: 2, price: 12000 }]}
paid={50000}
/>
</PrintArea>Warung Kopi Sederhana
Jl. Asia Afrika No. 8, Bandung
Kopi Tubruk
Pisang Goreng (4)
Teh Manis Hangat
TOTALRp46.200
WiFi tersedia, tanya ke kasir. Sampai jumpa!
import { StatCounter } from '@/components/stat-counter';
// Count-up saat masuk viewport, format id-ID.
<StatCounter value={125750000} prefix="Rp" />Omzet bulan ini
Rp 0Pelanggan aktif
0Tingkat kepuasan
0%import { StickyMobileCta } from '@/components/sticky-mobile-cta';
// variant: 'whatsapp' | 'cart' | 'call', hanya tampil di mobile.
<StickyMobileCta
variant="whatsapp"
title="Butuh bantuan?"
actionLabel="Chat WhatsApp"
onAction={() => window.open('https://wa.me/6281234567890')}
/>Kopi Robusta Gayo 250g
Toko Kopi Nusantara · Bandung
Rp 68.000
Pratinjau bilah bawah (hanya tampil di layar < md)
import { Timeline } from '@/components/timeline';
import { PackageCheck } from 'lucide-react';
<Timeline
items={[
{
id: 1,
title: 'Paket diterima gudang',
description: 'Jakarta, 12 koli',
time: '08.20',
icon: PackageCheck,
tone: 'success',
},
]}
/>Pesanan #INV-2026-1042 dibuat
Budi Santoso memesan 3 item via kasir Surabaya
Pembayaran diterima
QRIS Rp 187.500, Midtrans
Stok menipis: Kopi Robusta 250g
Sisa 8 bungkus di gudang Bandung
Pesanan #INV-2026-1039 dibatalkan
Pelanggan membatalkan sebelum pembayaran