"use client" import * as React from "react" import { Camera, Check, SpinnerGap } from "@phosphor-icons/react" import { toast } from "sonner" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "@/components/ui/card" import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Drawer, DrawerContent, DrawerDescription, DrawerHeader, DrawerTitle, DrawerTrigger, } from "@/components/ui/drawer" import { Skeleton } from "@/components/ui/skeleton" import { Slider } from "@/components/ui/slider" import { Toaster } from "@/components/ui/sonner" import { Switch } from "@/components/ui/switch" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group" import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "@/components/ui/tooltip" function Section({ title, children, }: { title: string children: React.ReactNode }) { return (

{title}

{children}
) } function Row({ label, children, }: { label: string children: React.ReactNode }) { return (

{label}

{children}
) } function SwitchRow() { const [on, setOn] = React.useState(true) return (
{/* DESIGN-SYSTEM ยง9: sakelar selalu punya nama aksesibel, jadi contoh di galeri pun tidak boleh telanjang (temuan axe M9). */} {on ? "Nyala" : "Mati"}
Nyala
) } export default function DevUiPage() { if (process.env.NODE_ENV === "production") { return (
Hanya saat pengembangan.
) } return (

M0 Fondasi

Galeri komponen

Bandingkan dengan berkas acuan di docs/ui-reference. Arahkan kursor dan tekan Tab untuk melihat keadaan hover, fokus, dan aktif.

Butuh 2 foto lagi.
Photobooth di browser 4 foto siap 2/4 Terpilih
Strip Estafet Cukup ambil 2 foto. Sisanya diisi temanmu lewat link. Strip 4 foto, 2 slot milikmu dan 2 slot milik teman.
Frame Efek Stiker Enam frame, masing-masing dengan nama di bawah swatch. Enam efek foto dari filter bawaan Konva. Dua belas stiker, bisa digeser, diputar, dan diubah ukuran. Frame Efek Stiker
Unggah strip? Strip diunggah ke server supaya bisa dibuka lewat link. Link kedaluwarsa 7 hari.
Frame Pilih satu frame untuk stripmu.
{["Hitam", "Krem", "Pink"].map((name) => (
{name}
))}
Mengulang foto terakhir saja
{["Hitam", "Krem", "Pink", "Lime"].map((name) => (
{name}
))}
) }