# Shark UI Component Usage Examples Usage examples for all components in the Shark UI design system. Import paths use `@/components/ui` (install via CLI or manual setup first). # Accordion - Examples and Patterns Examples for Accordion component. ## Example: controlled ```tsx "use client"; import React from "react"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; const Example = () => { const [value, setValue] = React.useState([]); const isSecondItemOpen = value.includes("item-2"); return (

Open the 2nd item

setValue(e.value)} value={value} > Product Information

Our flagship product combines cutting-edge technology with sleek design. Built with premium materials, it offers unparalleled performance and reliability.

Shipping Details

We offer worldwide shipping through trusted courier partners. Standard delivery takes 3-5 business days.

Return Policy

We stand behind our products with a comprehensive 30-day return policy. If you're not completely satisfied, simply return the item in its original condition.

{isSecondItemOpen ? "✅" : "❌"}
); }; export default Example; ``` ## Example: default ```tsx import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; const AccordionDemo = () => ( Product Information

Our flagship product combines cutting-edge technology with sleek design. Built with premium materials, it offers unparalleled performance and reliability.

Key features include advanced processing capabilities, and an intuitive user interface designed for both beginners and experts.

Shipping Details

We offer worldwide shipping through trusted courier partners. Standard delivery takes 3-5 business days, while express shipping ensures delivery within 1-2 business days.

All orders are carefully packaged and fully insured. Track your shipment in real-time through our dedicated tracking portal.

Return Policy

We stand behind our products with a comprehensive 30-day return policy. If you're not completely satisfied, simply return the item in its original condition.

Our hassle-free return process includes free return shipping and full refunds processed within 48 hours of receiving the returned item.

); export default AccordionDemo; ``` ## Example: disabled ```tsx import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; const Example = () => ( Product Information

Our flagship product combines cutting-edge technology with sleek design. Built with premium materials, it offers unparalleled performance and reliability.

Shipping Details

We offer worldwide shipping through trusted courier partners. Standard delivery takes 3-5 business days.

Return Policy

We stand behind our products with a comprehensive 30-day return policy. If you're not completely satisfied, simply return the item in its original condition.

); export default Example; ``` ## Example: multiple ```tsx import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; const Example = () => ( Product Information

Our flagship product combines cutting-edge technology with sleek design. Built with premium materials, it offers unparalleled performance and reliability.

Shipping Details

We offer worldwide shipping through trusted courier partners. Standard delivery takes 3-5 business days.

Return Policy

We stand behind our products with a comprehensive 30-day return policy. If you're not completely satisfied, simply return the item in its original condition.

); export default Example; ``` ## Example: non-collapsible ```tsx import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; const Example = () => ( Product Information

Our flagship product combines cutting-edge technology with sleek design. Built with premium materials, it offers unparalleled performance and reliability.

Shipping Details

We offer worldwide shipping through trusted courier partners. Standard delivery takes 3-5 business days.

Return Policy

We stand behind our products with a comprehensive 30-day return policy. If you're not completely satisfied, simply return the item in its original condition.

); export default Example; ``` # Action Bar - Examples and Patterns Examples for Action Bar component. ## Example: close-trigger ```tsx "use client"; import { XIcon } from "lucide-react"; import React from "react"; import { ActionBar, ActionBarClose, ActionBarContent, ActionBarSelectionTrigger, ActionBarTrigger, } from "@/components/ui/action-bar"; import { Button } from "@/components/ui/button"; const Example = () => { const [isOpen, setIsOpen] = React.useState(false); return ( ); }; export default Example; ``` ## Example: controlled ```tsx "use client"; import { XIcon } from "lucide-react"; import React from "react"; import { ActionBar, ActionBarClose, ActionBarContent, ActionBarSelectionTrigger, } from "@/components/ui/action-bar"; import { Button } from "@/components/ui/button"; const Example = () => { const [isOpen, setIsOpen] = React.useState(false); return ( ); }; export default Example; ``` ## Example: custom-spacing ```tsx "use client"; import { PencilIcon, Trash2Icon, XIcon } from "lucide-react"; import React from "react"; import { ActionBar, ActionBarBody, ActionBarClose, ActionBarContent, ActionBarSelectionTrigger, ActionBarTrigger, } from "@/components/ui/action-bar"; import { Button } from "@/components/ui/button"; const Example = () => { const [isOpen, setIsOpen] = React.useState(false); return ( ); }; export default Example; ``` ## Example: default ```tsx import { EllipsisIcon, PencilIcon, SendIcon, Trash2Icon, XIcon, } from "lucide-react"; import { ActionBar, ActionBarBody, ActionBarClose, ActionBarContent, ActionBarSelectionTrigger, ActionBarTrigger, } from "@/components/ui/action-bar"; import { Button } from "@/components/ui/button"; const ActionBarDemo = () => { return ( {" "} ); }; export default ActionBarDemo; ``` ## Example: dialog ```tsx import { Trash2Icon, XIcon } from "lucide-react"; import { ActionBar, ActionBarBody, ActionBarClose, ActionBarContent, ActionBarSelectionTrigger, ActionBarTrigger, } from "@/components/ui/action-bar"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogFooter, AlertDialogHeader, AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; const Example = () => { return ( Cancel Delete ); }; export default Example; ``` ## Example: menu ```tsx import { ArchiveIcon, CopyIcon, EllipsisIcon, Trash2Icon, XIcon, } from "lucide-react"; import { ActionBar, ActionBarBody, ActionBarClose, ActionBarContent, ActionBarSelectionTrigger, ActionBarTrigger, } from "@/components/ui/action-bar"; import { Button } from "@/components/ui/button"; import { Menu, MenuContent, MenuItem, MenuTrigger, } from "@/components/ui/menu"; const Example = () => { return ( Archive Duplicate Delete ); }; export default Example; ``` ## Example: offset ```tsx "use client"; import { XIcon } from "lucide-react"; import React from "react"; import { ActionBar, ActionBarClose, ActionBarContent, ActionBarSelectionTrigger, } from "@/components/ui/action-bar"; import { Button } from "@/components/ui/button"; const offsets = ["24px", "32px"] as const; const Example = () => { const [isOpen, setIsOpen] = React.useState(false); const [offset, setOffset] = React.useState<(typeof offsets)[number]>("24px"); return ( <>
{offsets.map((value) => ( ))}
); }; export default Example; ``` ## Example: positioning ```tsx "use client"; import { XIcon } from "lucide-react"; import React from "react"; import { ActionBar, ActionBarClose, ActionBarContent, ActionBarSelectionTrigger, } from "@/components/ui/action-bar"; import { Button } from "@/components/ui/button"; type Placement = "bottom" | "bottom-start" | "bottom-end"; const Example = () => { const [isOpen, setIsOpen] = React.useState(false); const [placement, setPlacement] = React.useState("bottom"); const handleOpenChange = (nextPlacement: Placement) => { setIsOpen(true); setPlacement(nextPlacement); }; return (
); }; export default Example; ``` ## Example: table ```tsx "use client"; import { ArchiveIcon, CopyIcon, EllipsisIcon, PencilIcon, SendIcon, Trash2Icon, } from "lucide-react"; import React from "react"; import { ActionBar, ActionBarContent, ActionBarSelectionTrigger, } from "@/components/ui/action-bar"; import { AlertDialog, AlertDialogAction, AlertDialogBody, AlertDialogCancel, AlertDialogContent, AlertDialogFooter, AlertDialogHeader, AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Badge, type BadgeVariant } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Checkbox } from "@/components/ui/checkbox"; import { Menu, MenuContent, MenuItem, MenuTrigger, } from "@/components/ui/menu"; import { Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; const Example = () => { const [selectedIds, setSelectedIds] = React.useState([]); const isOpen = selectedIds.length > 0; const allSelected = selectedIds.length > 0 && selectedIds.length === orders.length; const handleSelectAll = (checked: boolean | "indeterminate") => { if (checked) { setSelectedIds(orders.map((order) => order.id)); } else { setSelectedIds([]); } }; const handleSelectRow = (id: string, checked: boolean | "indeterminate") => { if (checked) { setSelectedIds((prev) => [...prev, id]); } else { setSelectedIds((prev) => prev.filter((item) => item !== id)); } }; const handleClose = () => { setSelectedIds([]); }; return (
!open && handleClose()} open={isOpen}> Orders with checkbox selection and action bar. handleSelectAll(checked)} /> ID Name Status Amount {orders.map((order) => { const isSelected = selectedIds.includes(order.id); return ( handleSelectRow(order.id, checked) } /> {order.id} {order.name} {order.status} {order.amount} ); })}
Archive Duplicate
    {selectedIds.map((id) => { const order = orders.find((order) => order.id === id); if (!order) { return null; } return (
  • {order.id} - {order.name}
  • ); })}
Cancel Delete
); }; export default Example; const orders = [ { id: "SO-01", name: "Macbook Pro 16", status: "progress", amount: "245,12 $", }, { id: "SO-02", name: "Apple Watch Series 9", status: "transit", amount: "122,18 $", }, { id: "SO-03", name: "AirPods Max", status: "pending", amount: "89,50 $", }, { id: "SO-04", name: "iPad Pro 13", status: "pending", amount: "310,00 $", }, { id: "SO-05", name: "iPhone 15 Pro Max", status: "transit", amount: "156,75 $", }, ]; const statusVariants: Record = { transit: "success", pending: "warning", progress: "info", }; ``` # Alert - Examples and Patterns Examples for Alert component. ## Example: custom-color ```tsx import { WandSparklesIcon } from "lucide-react"; import { Alert, AlertDescription, AlertTitle, } from "@/components/ui/alert"; const Example = () => ( Fancy alert, huh? This is a fancy alert with a custom color. ); export default Example; ``` ## Example: default ```tsx import { Alert, AlertDescription, AlertTitle, } from "@/components/ui/alert"; const AlertDemo = () => ( Heads up! You can add icons to alerts to provide visual context and improve user experience. ); export default AlertDemo; ``` ## Example: variant-default ```tsx import { CheckCheckIcon } from "lucide-react"; import { Alert, AlertDescription, AlertTitle, } from "@/components/ui/alert"; const Example = () => ( Deployment successful You can now start building your next great project. ); export default Example; ``` ## Example: variant-destructive ```tsx import { TriangleAlertIcon } from "lucide-react"; import { Alert, AlertDescription, AlertTitle, } from "@/components/ui/alert"; const Example = () => ( Session expired Your session has expired. Please log in again. ); export default Example; ``` ## Example: variant-info ```tsx import { HistoryIcon } from "lucide-react"; import { Alert, AlertDescription, AlertTitle, } from "@/components/ui/alert"; const Example = () => ( New update available A new update is available. Check it out now. ); export default Example; ``` ## Example: variant-success ```tsx import { CheckCircleIcon } from "lucide-react"; import { Alert, AlertDescription, AlertTitle, } from "@/components/ui/alert"; const Example = () => ( Payment successful Your payment has been processed successfully. You will receive a receipt in your email. ); export default Example; ``` ## Example: variant-warning ```tsx import { AlertTriangleIcon } from "lucide-react"; import { Alert, AlertDescription, AlertTitle, } from "@/components/ui/alert"; const Example = () => ( Storage almost full Your storage is almost full. Consider upgrading your plan to avoid losing data. ); export default Example; ``` ## Example: with-action ```tsx import { HistoryIcon } from "lucide-react"; import { Alert, AlertAction, AlertDescription, AlertTitle, } from "@/components/ui/alert"; import { Button } from "@/components/ui/button"; const Example = () => ( New update available Check it out now. ); export default Example; ``` ## Example: with-icon ```tsx import { SparklesIcon } from "lucide-react"; import { Alert, AlertDescription, AlertTitle, } from "@/components/ui/alert"; const Example = () => ( New Feature Available Icons can be added to alerts to provide visual context and improve user experience. ); export default Example; ``` # Alert Dialog - Examples and Patterns Examples for Alert Dialog component. ## Example: default ```tsx import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogFooter, AlertDialogHeader, AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; const AlertDialogDemo = () => ( Don't allow Allow ); export default AlertDialogDemo; ``` ## Example: variant-destructive ```tsx import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogFooter, AlertDialogHeader, AlertDialogTrigger, } from "@/components/ui/alert-dialog"; import { Button } from "@/components/ui/button"; const Example = () => ( Cancel Delete project ); export default Example; ``` # Announcement - Examples and Patterns Examples for Announcement component. ## Example: default ```tsx import { Announcement, AnnouncementBadge, AnnouncementTitle, } from "@/components/ui/announcement"; const Example = () => ( Release v2.1.0 — Dark mode, faster builds, and 12 new components ); export default Example; ``` ## Example: variant-default ```tsx import { Announcement, AnnouncementBadge, AnnouncementTitle, } from "@/components/ui/announcement"; const Example = () => ( Release v2.1.0 — Dark mode, faster builds, and 12 new components ); export default Example; ``` ## Example: variant-destructive ```tsx import { TriangleAlertIcon } from "lucide-react"; import { Announcement, AnnouncementBadge, AnnouncementTitle, } from "@/components/ui/announcement"; const Example = () => ( Payment failed Your last invoice couldn't be processed. Update your billing info. ); export default Example; ``` ## Example: variant-info ```tsx import { Announcement, AnnouncementBadge, AnnouncementTitle, } from "@/components/ui/announcement"; const Example = () => ( Maintenance Scheduled downtime tonight 2–4 AM UTC. No action needed. ); export default Example; ``` ## Example: variant-success ```tsx import { ArrowUpRightIcon, CheckCircleIcon } from "lucide-react"; import Link from "next/link"; import { Announcement, AnnouncementBadge, AnnouncementTitle, } from "@/components/ui/announcement"; const Example = () => ( Deployed Production build completed in 2m 34s ); export default Example; ``` ## Example: variant-warning ```tsx import { TriangleAlertIcon } from "lucide-react"; import { Announcement, AnnouncementBadge, AnnouncementTitle, } from "@/components/ui/announcement"; const Example = () => ( Trial ending Your free trial expires in 3 days. Upgrade to keep access. ); export default Example; ``` ## Example: with-icon ```tsx import { ArrowUpRight, SparklesIcon } from "lucide-react"; import { Announcement, AnnouncementBadge, AnnouncementTitle, } from "@/components/ui/announcement"; const Example = () => ( New features Dark mode and 12 new components available ); export default Example; ``` ## Example: with-link ```tsx import { ArrowUpRight } from "lucide-react"; import Link from "next/link"; import { Announcement, AnnouncementBadge, AnnouncementTitle, } from "@/components/ui/announcement"; const Example = () => ( Latest update New feature added ); export default Example; ``` ## Example: without-badge ```tsx import { ArrowUpRightIcon } from "lucide-react"; import { Announcement, AnnouncementTitle, } from "@/components/ui/announcement"; const Example = () => ( New features added, check the logs for more details. ); export default Example; ``` # Aspect Ratio - Examples and Patterns Examples for Aspect Ratio component. ## Example: default ```tsx import { AspectRatio } from "@/components/ui/aspect-ratio"; const AspectRatioDemo = () => (
1:1
); export default AspectRatioDemo; ``` ## Example: portrait ```tsx import { AspectRatio } from "@/components/ui/aspect-ratio"; const Example = () => (
9:16
); export default Example; ``` ## Example: responsive ```tsx import { AspectRatio } from "@/components/ui/aspect-ratio"; const Example = () => (
4:3 → 16:9 → 1:1
); export default Example; ``` ## Example: square ```tsx import { AspectRatio } from "@/components/ui/aspect-ratio"; const Example = () => (
1:1
); export default Example; ``` ## Example: video ```tsx import { AspectRatio } from "@/components/ui/aspect-ratio"; const Example = () => (
16:9
); export default Example; ``` # Autocomplete - Examples and Patterns Examples for Autocomplete component. ## Example: controlled ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import React from "react"; import { Autocomplete, AutocompleteContent, AutocompleteEmpty, AutocompleteInput, AutocompleteItem, } from "@/components/ui/autocomplete"; import { ComboboxList } from "@/components/ui/combobox"; const Example = () => { const [value, setValue] = React.useState("banana"); const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, initialItems, }); return (
filter(inputValue)} onValueChange={(e) => setValue(e.value?.at(0))} value={value ? [value] : []} > {collection.items.map((item) => ( {item.label} ))}

Selected: {value ?? "(none)"}

); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, { label: "Date", value: "date" }, ]; export default Example; ``` ## Example: default ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Autocomplete, AutocompleteContent, AutocompleteEmpty, AutocompleteInput, AutocompleteItem, } from "@/components/ui/autocomplete"; import { ComboboxList } from "@/components/ui/combobox"; const AutocompleteDemo = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ initialItems, filter: contains, }); return ( filter(inputValue)} > {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, { label: "Date", value: "date" }, ]; export default AutocompleteDemo; ``` ## Example: disabled ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Autocomplete, AutocompleteContent, AutocompleteEmpty, AutocompleteInput, AutocompleteItem, } from "@/components/ui/autocomplete"; import { ComboboxList } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, initialItems, }); return ( filter(inputValue)} > No items found. {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, ]; export default Example; ``` ## Example: group ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Autocomplete, AutocompleteContent, AutocompleteEmpty, AutocompleteGroup, AutocompleteInput, AutocompleteItem, } from "@/components/ui/autocomplete"; import { ComboboxList } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, groupBy: (item) => item.continent, initialItems, }); return ( filter(inputValue)} > {collection.group().map(([continent, group]) => ( {group.map((item) => ( {item.label} ))} ))} ); }; const initialItems = [ { label: "Canada", value: "ca", continent: "North America" }, { label: "United States", value: "us", continent: "North America" }, { label: "Mexico", value: "mx", continent: "North America" }, { label: "United Kingdom", value: "uk", continent: "Europe" }, { label: "Germany", value: "de", continent: "Europe" }, { label: "France", value: "fr", continent: "Europe" }, { label: "Japan", value: "jp", continent: "Asia" }, { label: "South Korea", value: "kr", continent: "Asia" }, { label: "China", value: "cn", continent: "Asia" }, ]; export default Example; ``` ## Example: inline-autocomplete ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Autocomplete, AutocompleteContent, AutocompleteEmpty, AutocompleteInput, AutocompleteItem, } from "@/components/ui/autocomplete"; import { ComboboxList } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, initialItems, }); return ( filter(inputValue)} > No items found. {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, { label: "Date", value: "date" }, ]; export default Example; ``` ## Example: invalid ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Autocomplete, AutocompleteContent, AutocompleteEmpty, AutocompleteInput, AutocompleteItem, } from "@/components/ui/autocomplete"; import { ComboboxList } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, initialItems, }); return ( filter(inputValue)} > {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, ]; export default Example; ``` ## Example: size-lg ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Autocomplete, AutocompleteContent, AutocompleteEmpty, AutocompleteInput, AutocompleteItem, } from "@/components/ui/autocomplete"; import { ComboboxList } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, initialItems, }); return ( filter(inputValue)} > No items found. {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, { label: "Date", value: "date" }, ]; export default Example; ``` ## Example: size-md ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Autocomplete, AutocompleteContent, AutocompleteEmpty, AutocompleteInput, AutocompleteItem, } from "@/components/ui/autocomplete"; import { ComboboxList } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, initialItems, }); return ( filter(inputValue)} > {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, { label: "Date", value: "date" }, ]; export default Example; ``` ## Example: size-sm ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Autocomplete, AutocompleteContent, AutocompleteEmpty, AutocompleteInput, AutocompleteItem, } from "@/components/ui/autocomplete"; import { ComboboxList } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, initialItems, }); return ( filter(inputValue)} > No items found. {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, { label: "Date", value: "date" }, ]; export default Example; ``` ## Example: with-clear-button ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Autocomplete, AutocompleteContent, AutocompleteEmpty, AutocompleteInput, AutocompleteItem, } from "@/components/ui/autocomplete"; import { ComboboxList } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, initialItems, }); return ( filter(inputValue)} > No items found. {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, ]; export default Example; ``` ## Example: with-field ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Autocomplete, AutocompleteContent, AutocompleteEmpty, AutocompleteInput, AutocompleteItem, } from "@/components/ui/autocomplete"; import { ComboboxList } from "@/components/ui/combobox"; import { Field, FieldError, FieldHelper, FieldLabel, } from "@/components/ui/field"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, initialItems, }); return ( Country filter(inputValue)} required > {collection.items.map((item) => ( {item.label} ))} We'll use this for shipping estimates Please select a valid country ); }; const initialItems = [ { label: "Brazil", value: "br" }, { label: "Mexico", value: "mx" }, { label: "Ireland", value: "ie" }, ]; export default Example; ``` ## Example: with-start-icon ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { AppleIcon } from "lucide-react"; import { Autocomplete, AutocompleteContent, AutocompleteEmpty, AutocompleteInput, AutocompleteItem, } from "@/components/ui/autocomplete"; import { ComboboxList } from "@/components/ui/combobox"; import { InputGroupAddon } from "@/components/ui/input-group"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, initialItems, }); return ( filter(inputValue)} > {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, ]; export default Example; ``` ## Example: with-trigger ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Autocomplete, AutocompleteContent, AutocompleteEmpty, AutocompleteInput, AutocompleteItem, } from "@/components/ui/autocomplete"; import { ComboboxList } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, initialItems, }); return ( filter(inputValue)} > {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, ]; export default Example; ``` # Avatar - Examples and Patterns Examples for Avatar component. ## Example: badge-with-icon ```tsx import { PlusIcon } from "lucide-react"; import { Avatar, AvatarBadge, AvatarFallback, AvatarImage, } from "@/components/ui/avatar"; const Example = () => ( VV ); export default Example; ``` ## Example: custom-colors ```tsx import { Avatar, AvatarFallback, AvatarGroup, } from "@/components/ui/avatar"; const Example = () => ( IN PK SK PR AM EM ); export default Example; ``` ## Example: custom-radius ```tsx import { Avatar, AvatarFallback, AvatarImage, } from "@/components/ui/avatar"; const Example = () => (
VV CN SA PV
); export default Example; ``` ## Example: default ```tsx import { Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, } from "@/components/ui/avatar"; const AvatarDemo = () => (
VV CN VV SA PV +2
); export default AvatarDemo; ``` ## Example: fallback-icon ```tsx import { UserIcon } from "lucide-react"; import { Avatar, AvatarFallback } from "@/components/ui/avatar"; const Example = () => ( ); export default Example; ``` ## Example: group-count-icon ```tsx import { PlusIcon } from "lucide-react"; import { Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, } from "@/components/ui/avatar"; const Example = () => ( VV SA PV IA ); export default Example; ``` ## Example: group-count ```tsx import { Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, } from "@/components/ui/avatar"; const Example = () => ( VV SA PV IA +5 ); export default Example; ``` ## Example: group-popover ```tsx import { Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, } from "@/components/ui/avatar"; import { Button } from "@/components/ui/button"; import { Popover, PopoverBody, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; const Example = () => ( VV SA PV IA SC VC NJ RT TS ); export default Example; ``` ## Example: group ```tsx import { Avatar, AvatarFallback, AvatarGroup, AvatarImage, } from "@/components/ui/avatar"; const Example = () => { return ( VV SA PV IA ); }; export default Example; ``` ## Example: hover-card ```tsx import { Avatar, AvatarFallback, AvatarGroup, AvatarImage, } from "@/components/ui/avatar"; import { Button } from "@/components/ui/button"; import { HoverCard, HoverCardContent, HoverCardTrigger, } from "@/components/ui/hover-card"; const Example = () => (
VV

Vinicius Vicentini

@vinihvc

VV

Shadcn

@shadcn

); export default Example; ``` ## Example: size-custom ```tsx import { Avatar, AvatarFallback, AvatarImage, } from "@/components/ui/avatar"; const Example = () => ( VV ); export default Example; ``` ## Example: size-lg ```tsx import { Avatar, AvatarFallback, AvatarImage, } from "@/components/ui/avatar"; const Example = () => ( VV ); export default Example; ``` ## Example: size-md ```tsx import { Avatar, AvatarFallback, AvatarImage, } from "@/components/ui/avatar"; const Example = () => ( VV ); export default Example; ``` ## Example: size-sm ```tsx import { Avatar, AvatarFallback, AvatarImage, } from "@/components/ui/avatar"; const Example = () => ( VV ); export default Example; ``` ## Example: with-status ```tsx import { Avatar, AvatarBadge, AvatarFallback, AvatarImage, } from "@/components/ui/avatar"; const Example = () => (
VV SA PV
); export default Example; ``` # Badge - Examples and Patterns Examples for Badge component. ## Example: custom-color ```tsx import { Badge } from "@/components/ui/badge"; const Example = () => (
Indigo Pink Sky Purple
); export default Example; ``` ## Example: default ```tsx import { Star } from "lucide-react"; import { Badge } from "@/components/ui/badge"; const Example = () => ( Favorite ); export default Example; ``` ## Example: pill ```tsx import { PlusIcon } from "lucide-react"; import { Badge } from "@/components/ui/badge"; const Example = () => (
Badge Badge Badge
Badge Badge Badge
); export default Example; ``` ## Example: size-lg ```tsx import { Badge } from "@/components/ui/badge"; const Example = () => Badge; export default Example; ``` ## Example: size-md ```tsx import { Badge } from "@/components/ui/badge"; const Example = () => Badge; export default Example; ``` ## Example: size-sm ```tsx import { Badge } from "@/components/ui/badge"; const Example = () => Badge; export default Example; ``` ## Example: variant-default ```tsx import { Badge } from "@/components/ui/badge"; const Example = () => Badge; export default Example; ``` ## Example: variant-destructive ```tsx import { Badge } from "@/components/ui/badge"; const Example = () => Badge; export default Example; ``` ## Example: variant-info ```tsx import { Badge } from "@/components/ui/badge"; const Example = () => Badge; export default Example; ``` ## Example: variant-outline ```tsx import { Badge } from "@/components/ui/badge"; const Example = () => Badge; export default Example; ``` ## Example: variant-secondary ```tsx import { Badge } from "@/components/ui/badge"; const Example = () => Badge; export default Example; ``` ## Example: variant-success ```tsx import { Badge } from "@/components/ui/badge"; const Example = () => Badge; export default Example; ``` ## Example: variant-warning ```tsx import { Badge } from "@/components/ui/badge"; const Example = () => Badge; export default Example; ``` ## Example: with-icon ```tsx import { StarIcon } from "lucide-react"; import { Badge } from "@/components/ui/badge"; const Example = () => ( Favorite ); export default Example; ``` ## Example: with-link ```tsx import { ArrowUpRightIcon, CirclePlusIcon } from "lucide-react"; import Link from "next/link"; import { Badge } from "@/components/ui/badge"; const Example = () => ( New components ); export default Example; ``` ## Example: with-spinner ```tsx import { Badge } from "@/components/ui/badge"; import { Spinner } from "@/components/ui/spinner"; const Example = () => (
Deleting Generating
); export default Example; ``` # Bottom Navigation - Examples and Patterns Examples for Bottom Navigation component. ## Example: default ```tsx import { BellIcon, HomeIcon, SearchIcon, UserIcon } from "lucide-react"; import { BottomNavigation, BottomNavigationItem, BottomNavigationItemIcon, BottomNavigationItemLabel, BottomNavigationList, } from "@/components/ui/bottom-navigation"; import { ScrollArea } from "@/components/ui/scroll-area"; const Example = () => (
Home Search News Profile
); export default Example; ``` ## Example: icon-only ```tsx import { BellIcon, HomeIcon, SearchIcon, UserIcon } from "lucide-react"; import { BottomNavigation, BottomNavigationItem, BottomNavigationItemIcon, BottomNavigationList, } from "@/components/ui/bottom-navigation"; import { ScrollArea } from "@/components/ui/scroll-area"; const Example = () => (
); export default Example; ``` ## Example: with-links ```tsx "use client"; import { BellIcon, HomeIcon, SearchIcon, UserIcon } from "lucide-react"; import Link from "next/link"; import { usePathname } from "next/navigation"; import { BottomNavigation, BottomNavigationItem, BottomNavigationItemIcon, BottomNavigationItemLabel, BottomNavigationList, } from "@/components/ui/bottom-navigation"; import { ScrollArea } from "@/components/ui/scroll-area"; const Example = () => { const pathname = usePathname() ?? "/"; return (
Home Search News Profile
); }; export default Example; ``` # Breadcrumb - Examples and Patterns Examples for Breadcrumb component. ## Example: collapsed ```tsx import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from "@/components/ui/breadcrumb"; const Example = () => ( Home Components Breadcrumb ); export default Example; ``` ## Example: custom-separator ```tsx import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from "@/components/ui/breadcrumb"; const Example = () => ( Home / Documentation / Introduction ); export default Example; ``` ## Example: default ```tsx import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from "@/components/ui/breadcrumb"; const Example = () => ( Home Components Breadcrumb ); export default Example; ``` ## Example: with-link ```tsx import Link from "next/link"; import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from "@/components/ui/breadcrumb"; const Example = () => ( Docs Components Breadcrumb ); export default Example; ``` ## Example: with-menu ```tsx "use client"; import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from "@/components/ui/breadcrumb"; import { Button } from "@/components/ui/button"; import { Menu, MenuContent, MenuItem, MenuTrigger, } from "@/components/ui/menu"; const Example = () => ( Home Documentation Components Hooks Products Breadcrumb ); export default Example; ``` # Button - Examples and Patterns Examples for Button component. ## Example: custom-color ```tsx import { Button } from "@/components/ui/button"; const Example = () => (
); export default Example; ``` ## Example: default ```tsx import { CirclePlusIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; const ButtonDemo = () => (
); export default ButtonDemo; ``` ## Example: disabled ```tsx import { SendIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; const Example = () => { return ( ); }; export default Example; ``` ## Example: hitbox ```tsx "use client"; import { Menu } from "lucide-react"; import React from "react"; import { cn } from "@/lib/utils"; import { Button } from "@/components/ui/button"; import { Field, FieldLabel } from "@/components/ui/field"; import { Switch } from "@/components/ui/switch"; const Example = () => { const [show, setShow] = React.useState(true); return (
setShow(checked)} /> Show hitbox
); }; export default Example; ``` ## Example: icon ```tsx import { StarIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; const Example = () => ( ); export default Example; ``` ## Example: loading ```tsx import { Button } from "@/components/ui/button"; import { Field, FieldLabel, FieldSet } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const Example = () => { return (
Enter your email
); }; export default Example; ``` ## Example: no-click-effect ```tsx import { Button } from "@/components/ui/button"; const Example = () => ; export default Example; ``` ## Example: pill ```tsx import { PlusIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; const Example = () => ( ); export default Example; ``` ## Example: size-lg ```tsx import { PlusIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; const Example = () => (
); export default Example; ``` ## Example: size-md ```tsx import { PlusIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; const Example = () => (
); export default Example; ``` ## Example: size-sm ```tsx import { PlusIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; const Example = () => (
); export default Example; ``` ## Example: size-xl ```tsx import { PlusIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; const Example = () => (
); export default Example; ``` ## Example: size-xs ```tsx import { PlusIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; const Example = () => (
); export default Example; ``` ## Example: state-as-child ```tsx import Link from "next/link"; import { Button } from "@/components/ui/button"; const Example = () => ( ); export default Example; ``` ## Example: variant-default ```tsx import { Button } from "@/components/ui/button"; const Example = () => ; export default Example; ``` ## Example: variant-destructive ```tsx import { Button } from "@/components/ui/button"; const Example = () => ; export default Example; ``` ## Example: variant-ghost ```tsx import { Button } from "@/components/ui/button"; const Example = () => ; export default Example; ``` ## Example: variant-link ```tsx import { Button } from "@/components/ui/button"; const Example = () => ; export default Example; ``` ## Example: variant-outline ```tsx import { Button } from "@/components/ui/button"; const Example = () => ; export default Example; ``` ## Example: variant-secondary ```tsx import { Button } from "@/components/ui/button"; const Example = () => ; export default Example; ``` ## Example: with-icon ```tsx import { DownloadIcon, ExternalLinkIcon, HeartIcon, PlusIcon, SettingsIcon, } from "lucide-react"; import { Button } from "@/components/ui/button"; const Example = () => (
); export default Example; ``` # Button Group - Examples and Patterns Examples for Button Group component. ## Example: default ```tsx import { ArrowLeftIcon, MoreHorizontalIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { ButtonGroup } from "@/components/ui/button-group"; const ButtonGroupDemo = () => { return ( ); }; export default ButtonGroupDemo; ``` ## Example: nested ```tsx import { BoldIcon, BracesIcon, ImagePlusIcon, ItalicIcon, UnderlineIcon, } from "lucide-react"; import { Button } from "@/components/ui/button"; import { ButtonGroup } from "@/components/ui/button-group"; const Example = () => ( ); export default Example; ``` ## Example: orientation-horizontal ```tsx import { PlayIcon, SkipBackIcon, SkipForwardIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { ButtonGroup } from "@/components/ui/button-group"; const Example = () => ( ); export default Example; ``` ## Example: orientation-vertical ```tsx import { MinusIcon, PlusIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { ButtonGroup } from "@/components/ui/button-group"; const Example = () => ( ); export default Example; ``` ## Example: separator ```tsx import { MinusIcon, PlusIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { ButtonGroup, ButtonGroupSeparator, } from "@/components/ui/button-group"; const Example = () => ( ); export default Example; ``` ## Example: with-input ```tsx import { SearchIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { ButtonGroup } from "@/components/ui/button-group"; import { Input } from "@/components/ui/input"; const Example = () => ( ); export default Example; ``` ## Example: with-menu ```tsx import { BanIcon, BookmarkIcon, CloudDownloadIcon, MoreHorizontalIcon, Share2Icon, StarIcon, } from "lucide-react"; import { Button } from "@/components/ui/button"; import { ButtonGroup } from "@/components/ui/button-group"; import { Menu, MenuContent, MenuGroup, MenuItem, MenuSeparator, MenuTrigger, } from "@/components/ui/menu"; const Example = () => ( Share Watch later Download Report ); export default Example; ``` ## Example: with-popover ```tsx import { ChevronDownIcon, GitForkIcon, PlusIcon } from "lucide-react"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { ButtonGroup } from "@/components/ui/button-group"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import { Separator } from "@/components/ui/separator"; const Example = () => (

Existing forks

You don't have any forks of this repository.

); export default Example; ``` # Calendar - Examples and Patterns Examples for Calendar component. ## Example: booked-dates ```tsx "use client"; import { getDay } from "date-fns"; import { Calendar, CalendarMonthSelect, CalendarNextTrigger, CalendarPrevTrigger, CalendarTable, CalendarTableDays, CalendarViewControl, CalendarWeekDays, CalendarYearSelect, } from "@/components/ui/calendar"; import { Card, CardContent } from "@/components/ui/card"; const Example = () => ( ); const isWeekend = (date: { year: number; month: number; day: number }) => { const dayOfWeek = getDay(new Date(date.year, date.month - 1, date.day)); return dayOfWeek === 0 || dayOfWeek === 6; }; export default Example; ``` ## Example: controlled ```tsx "use client"; import React from "react"; import { Calendar, CalendarMonthSelect, CalendarNextTrigger, CalendarPrevTrigger, CalendarTable, CalendarTableDays, CalendarViewControl, CalendarWeekDays, CalendarYearSelect, parseDate, } from "@/components/ui/calendar"; import { Card, CardContent } from "@/components/ui/card"; const Example = () => { const [value, setValue] = React.useState([parseDate(new Date(Date.now()))]); return (
setValue(value)} value={value} >

{value.map((date) => date.toString())}

); }; export default Example; ``` ## Example: custom-cell-size ```tsx import { Calendar, CalendarMonthSelect, CalendarNextTrigger, CalendarPrevTrigger, CalendarTable, CalendarTableDays, CalendarViewControl, CalendarWeekDays, CalendarYearSelect, } from "@/components/ui/calendar"; import { Card, CardContent } from "@/components/ui/card"; const Example = () => ( ); export default Example; ``` ## Example: default ```tsx import { Calendar, CalendarNextTrigger, CalendarPrevTrigger, CalendarTable, CalendarTableDays, CalendarViewControl, CalendarViewDate, CalendarWeekDays, } from "@/components/ui/calendar"; import { Card, CardContent } from "@/components/ui/card"; const CalendarDemo = () => ( ); export default CalendarDemo; ``` ## Example: fixed-weeks ```tsx import { Calendar, CalendarMonthSelect, CalendarNextTrigger, CalendarPrevTrigger, CalendarTable, CalendarTableDays, CalendarViewControl, CalendarWeekDays, CalendarYearSelect, } from "@/components/ui/calendar"; import { Card, CardContent } from "@/components/ui/card"; const Example = () => ( ); export default Example; ``` ## Example: min-max ```tsx "use client"; import { Calendar, CalendarMonthSelect, CalendarNextTrigger, CalendarPrevTrigger, CalendarTable, CalendarTableDays, CalendarViewControl, CalendarWeekDays, CalendarYearSelect, parseDate, } from "@/components/ui/calendar"; import { Card, CardContent } from "@/components/ui/card"; const Example = () => ( ); export default Example; ``` ## Example: month-year-selector ```tsx import { Calendar, CalendarMonthSelect, CalendarNextTrigger, CalendarPrevTrigger, CalendarTable, CalendarTableDays, CalendarViewControl, CalendarWeekDays, CalendarYearSelect, } from "@/components/ui/calendar"; import { Card, CardContent } from "@/components/ui/card"; const Example = () => ( ); export default Example; ``` ## Example: multiple-months ```tsx "use client"; import React from "react"; import { Calendar, CalendarNextTrigger, CalendarPrevTrigger, CalendarTable, CalendarTableDays, CalendarTableNextMonth, CalendarViewControl, CalendarViewDate, CalendarWeekDays, parseDate, } from "@/components/ui/calendar"; import { Card, CardContent } from "@/components/ui/card"; const Example = () => { const [value, setValue] = React.useState([parseDate(new Date(Date.now()))]); return ( setValue(value)} selectionMode="range" value={value} >
); }; export default Example; ``` ## Example: presets ```tsx import { Button } from "@/components/ui/button"; import { Calendar, CalendarMonthSelect, CalendarNextTrigger, CalendarPresetTrigger, CalendarPrevTrigger, CalendarTable, CalendarTableDays, CalendarViewControl, CalendarWeekDays, CalendarYearSelect, } from "@/components/ui/calendar"; import { Card, CardContent, CardFooter, } from "@/components/ui/card"; const Example = () => ( {presets.map((preset) => ( ))} ); const presets = [ { label: "Last 7 days", value: "last7Days" as const }, { label: "Last 14 days", value: "last14Days" as const }, { label: "Last 30 days", value: "last30Days" as const }, { label: "This month", value: "thisMonth" as const }, ]; export default Example; ``` ## Example: range ```tsx import { Calendar, CalendarMonthSelect, CalendarNextTrigger, CalendarPrevTrigger, CalendarTable, CalendarTableDays, CalendarViewControl, CalendarWeekDays, CalendarYearSelect, } from "@/components/ui/calendar"; import { Card, CardContent } from "@/components/ui/card"; const Example = () => ( ); export default Example; ``` ## Example: select-today ```tsx import { Calendar, CalendarMonthSelect, CalendarNextTrigger, CalendarPrevTrigger, CalendarTable, CalendarTableDays, CalendarTodayTrigger, CalendarViewControl, CalendarWeekDays, CalendarYearSelect, } from "@/components/ui/calendar"; import { Card, CardContent, CardFooter, } from "@/components/ui/card"; const Example = () => ( ); export default Example; ``` # Card - Examples and Patterns Examples for Card component. ## Example: custom-spacing ```tsx import { GoogleIcon } from "@/components/icons/google"; import { Button } from "@/components/ui/button"; import { Card, CardAction, CardContent, CardFooter, CardHeader, } from "@/components/ui/card"; import { Field, FieldLabel, FieldSet } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const Example = () => { return (
Email
); }; export default Example; ``` ## Example: default ```tsx import { GoogleIcon } from "@/components/icons/google"; import { Button } from "@/components/ui/button"; import { Card, CardAction, CardContent, CardFooter, CardHeader, } from "@/components/ui/card"; import { Field, FieldLabel, FieldSet } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const CardDemo = () => (
Email
); export default CardDemo; ``` ## Example: icon ```tsx import { DollarSignIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardFooter, CardHeader, CardMedia, } from "@/components/ui/card"; const Example = () => (
          15OFF
        
); export default Example; ``` ## Example: product ```tsx import { Button } from "@/components/ui/button"; import { Card, CardFooter, CardHeader, CardMedia, } from "@/components/ui/card"; const Example = () => (
{/* Image hoes here */}
); export default Example; ``` # Carousel - Examples and Patterns Examples for Carousel component. ## Example: autoplay ```tsx import { Card, CardContent } from "@/components/ui/card"; import { Carousel, CarouselContent, CarouselControl, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel"; const Example = () => { const slides = Array.from({ length: 8 }); return ( Previous Next {slides.map((_, index) => ( {index + 1} ))} ); }; export default Example; ``` ## Example: controlled ```tsx "use client"; import React from "react"; import { Card, CardContent } from "@/components/ui/card"; import { Carousel, CarouselContent, CarouselControl, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel"; const Example = () => { const [page, setPage] = React.useState(0); const slides = Array.from({ length: 8 }); return (
setPage(page)} page={page} slideCount={slides.length} > Previous Next {slides.map((_, index) => ( {index + 1} ))}

Current page: {page + 1} of 5

); }; export default Example; ``` ## Example: default ```tsx import { Card, CardContent } from "@/components/ui/card"; import { Carousel, CarouselContent, CarouselControl, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel"; const CarouselDemo = () => { const slides = Array.from({ length: 8 }); return ( Previous Next {slides.map((_, index) => ( {index + 1} ))} ); }; export default CarouselDemo; ``` ## Example: loop ```tsx import { Card, CardContent } from "@/components/ui/card"; import { Carousel, CarouselContent, CarouselControl, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel"; const Example = () => { const slides = Array.from({ length: 4 }); return ( Previous Next {slides.map((_, index) => ( {index + 1} ))} ); }; export default Example; ``` ## Example: mouse-drag ```tsx import { Card, CardContent } from "@/components/ui/card"; import { Carousel, CarouselContent, CarouselControl, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel"; const Example = () => { const slides = Array.from({ length: 8 }); return ( Previous Next {slides.map((_, index) => ( {index + 1} ))} ); }; export default Example; ``` ## Example: orientation-horizontal ```tsx import { Carousel, CarouselContent, CarouselControl, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel"; const Example = () => { const slides = [ { src: "https://picsum.photos/seed/1/500/300", alt: "Nature landscape" }, { src: "https://picsum.photos/seed/2/500/300", alt: "City skyline" }, { src: "https://picsum.photos/seed/3/500/300", alt: "Mountain view" }, { src: "https://picsum.photos/seed/4/500/300", alt: "Ocean sunset" }, { src: "https://picsum.photos/seed/5/500/300", alt: "Forest path" }, ]; return ( Previous Next {slides.map((slide, index) => ( {slide.alt} ))} ); }; export default Example; ``` ## Example: orientation-vertical ```tsx import { Carousel, CarouselContent, CarouselControl, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel"; const Example = () => { const slides = [ { src: "https://picsum.photos/seed/1/500/300", alt: "Nature landscape" }, { src: "https://picsum.photos/seed/2/500/300", alt: "City skyline" }, { src: "https://picsum.photos/seed/3/500/300", alt: "Mountain view" }, { src: "https://picsum.photos/seed/4/500/300", alt: "Ocean sunset" }, { src: "https://picsum.photos/seed/5/500/300", alt: "Forest path" }, ]; return ( Previous Next {slides.map((slide, index) => ( {slide.alt} ))} ); }; export default Example; ``` ## Example: padding ```tsx import { Card, CardContent } from "@/components/ui/card"; import { Carousel, CarouselContent, CarouselControl, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel"; const Example = () => { const slides = Array.from({ length: 8 }); return ( Previous Next {slides.map((_, index) => ( {index + 1} ))} ); }; export default Example; ``` ## Example: slides-per-page ```tsx import { Card, CardContent } from "@/components/ui/card"; import { Carousel, CarouselContent, CarouselControl, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel"; const Example = () => { const slides = Array.from({ length: 16 }); return ( Previous Next {slides.map((_, index) => ( {index + 1} ))} ); }; export default Example; ``` ## Example: spacing ```tsx import { Card, CardContent } from "@/components/ui/card"; import { Carousel, CarouselContent, CarouselControl, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel"; const Example = () => { const slides = Array.from({ length: 8 }); return ( Previous Next {slides.map((_, index) => ( {index + 1} ))} ); }; export default Example; ``` ## Example: thumbnail-indicator-vertical ```tsx import { Carousel, CarouselContent, CarouselControl, CarouselIndicator, CarouselIndicatorGroup, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel"; const Example = () => { const slides = [ { src: "https://picsum.photos/seed/1/500/300", alt: "Nature landscape" }, { src: "https://picsum.photos/seed/2/500/300", alt: "City skyline" }, { src: "https://picsum.photos/seed/3/500/300", alt: "Mountain view" }, { src: "https://picsum.photos/seed/4/500/300", alt: "Ocean sunset" }, { src: "https://picsum.photos/seed/5/500/300", alt: "Forest path" }, ]; return ( Previous Next {slides.map((slide, index) => ( {slide.alt} ))} {slides.map((slide) => ( {slide.alt} ))} ); }; export default Example; ``` ## Example: thumbnail-indicator ```tsx import { Carousel, CarouselContent, CarouselControl, CarouselIndicator, CarouselIndicatorGroup, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel"; const Example = () => { const slides = [ { src: "https://picsum.photos/seed/1/500/300", alt: "Nature landscape" }, { src: "https://picsum.photos/seed/2/500/300", alt: "City skyline" }, { src: "https://picsum.photos/seed/3/500/300", alt: "Mountain view" }, { src: "https://picsum.photos/seed/4/500/300", alt: "Ocean sunset" }, { src: "https://picsum.photos/seed/5/500/300", alt: "Forest path" }, ]; return ( Previous Next {slides.map((slide, index) => ( {slide.alt} ))} {slides.map((slide) => ( {slide.alt} ))} ); }; export default Example; ``` # Chart - Examples and Patterns Examples for Chart component. ## Example: default ```tsx "use client"; import { Bar, BarChart, CartesianGrid, XAxis } from "recharts"; import { type ChartConfig, ChartContainer, ChartTooltip, ChartTooltipContent, } from "@/components/ui/chart"; const chartData = [ { month: "January", desktop: 186, mobile: 80 }, { month: "February", desktop: 305, mobile: 200 }, { month: "March", desktop: 237, mobile: 120 }, { month: "April", desktop: 73, mobile: 190 }, { month: "May", desktop: 209, mobile: 130 }, { month: "June", desktop: 214, mobile: 140 }, ]; const chartConfig = { desktop: { label: "Desktop", color: "#2563eb", }, mobile: { label: "Mobile", color: "#60a5fa", }, } satisfies ChartConfig; const ChartDemo = () => { return ( value.slice(0, 3)} tickLine={false} tickMargin={10} /> } /> ); }; export default ChartDemo; ``` # Checkbox - Examples and Patterns Control for multiple selections in a set. ## Example: card ```tsx import { Checkbox } from "@/components/ui/checkbox"; import { Field, FieldContent, FieldDescription, FieldLabel, FieldTitle, } from "@/components/ui/field"; const Example = () => { return ( Enable notifications You can enable or disable notifications at any time. ); }; export default Example; ``` ## Example: checkbox-group ```tsx import { Checkbox, CheckboxGroup } from "@/components/ui/checkbox"; import { Field, FieldDescription, FieldGroup, FieldLabel, FieldLegend, FieldSet, } from "@/components/ui/field"; const Example = () => { return (
Show these items on the desktop: Select the items you want to show on the desktop. Hard disks External disks CDs, DVDs, and iPods Connected servers
); }; export default Example; ``` ## Example: controlled ```tsx "use client"; import type { CheckboxCheckedState } from "@ark-ui/react"; import React from "react"; import { Checkbox } from "@/components/ui/checkbox"; import { Field, FieldGroup, FieldLabel, } from "@/components/ui/field"; const Example = () => { const [checked, setChecked] = React.useState(false); return ( setChecked(checked)} /> Accept terms and conditions

{checked ? "✅" : "❌"}

); }; export default Example; ``` ## Example: default ```tsx import { Checkbox } from "@/components/ui/checkbox"; import { Field, FieldContent, FieldDescription, FieldGroup, FieldLabel, } from "@/components/ui/field"; const CheckboxDemo = () => { return ( Accept terms and conditions Receive notifications You'll receive a notification when someone posts a comment Receive marketing emails ); }; export default CheckboxDemo; ``` ## Example: disabled ```tsx import { Checkbox } from "@/components/ui/checkbox"; import { Field, FieldLabel } from "@/components/ui/field"; const Example = () => { return ( Receive newsletter ); }; export default Example; ``` ## Example: indeterminate ```tsx import { Checkbox } from "@/components/ui/checkbox"; import { Field, FieldContent, FieldGroup, FieldLabel, } from "@/components/ui/field"; const Example = () => { return ( Select all items ); }; export default Example; ``` ## Example: invalid ```tsx import { Checkbox } from "@/components/ui/checkbox"; import { Field, FieldGroup, FieldLabel, } from "@/components/ui/field"; const Example = () => { return ( Accept terms and conditions ); }; export default Example; ``` ## Example: with-description ```tsx import { Checkbox } from "@/components/ui/checkbox"; import { Field, FieldContent, FieldDescription, FieldGroup, FieldLabel, } from "@/components/ui/field"; const Example = () => { return ( Receive notifications You'll receive a notification when someone posts a comment on your post ); }; export default Example; ``` # Circular Progress - Examples and Patterns Examples for Circular Progress component. ## Example: controlled ```tsx "use client"; import { MinusIcon, PlusIcon } from "lucide-react"; import React from "react"; import { Button } from "@/components/ui/button"; import { ButtonGroup } from "@/components/ui/button-group"; import { CircularProgress } from "@/components/ui/circular-progress"; import { Field, FieldLabel } from "@/components/ui/field"; const Example = () => { const [value, setValue] = React.useState(55); return ( Controlled progress ); }; export default Example; ``` ## Example: default ```tsx "use client"; import React from "react"; import { CircularProgress } from "@/components/ui/circular-progress"; const Example = () => { const [progress, setProgress] = React.useState(24); React.useEffect(() => { const timer = setTimeout(() => setProgress(72), 500); return () => clearTimeout(timer); }, []); return ; }; export default Example; ``` ## Example: indeterminate ```tsx import { CircularProgress } from "@/components/ui/circular-progress"; import { Field, FieldLabel } from "@/components/ui/field"; const Example = () => ( Establishing connection... ); export default Example; ``` ## Example: size ```tsx import { CircularProgress } from "@/components/ui/circular-progress"; const Example = () => (
); export default Example; ``` ## Example: thickness ```tsx import { CircularProgress } from "@/components/ui/circular-progress"; const Example = () => (
); export default Example; ``` ## Example: with-value ```tsx import { CircularProgress, CircularProgressValue, } from "@/components/ui/circular-progress"; const Example = () => ( ); export default Example; ``` # Circular Slider - Examples and Patterns Examples for Circular Slider component. ## Example: controlled ```tsx "use client"; import React from "react"; import { CircularSlider } from "@/components/ui/circular-slider"; const Example = () => { const [value, setValue] = React.useState(45); return (
More than: 180
setValue(e.value)} value={value} />
{value > 180 ? "✅" : "❌"}
); }; export default Example; ``` ## Example: custom-markers ```tsx "use client"; import { CircularSlider } from "@/components/ui/circular-slider"; function Example() { return ( ); } export default Example; ``` ## Example: default ```tsx import { CircularSlider, CircularSliderValue, } from "@/components/ui/circular-slider"; const CircularSliderDemo = () => { return ( ); }; export default CircularSliderDemo; ``` ## Example: disabled ```tsx import { CircularSlider } from "@/components/ui/circular-slider"; const Example = () => ( ); export default Example; ``` ## Example: size ```tsx import { CircularSlider } from "@/components/ui/circular-slider"; const Example = () => ( ); export default Example; ``` ## Example: step ```tsx import { CircularSlider } from "@/components/ui/circular-slider"; const Example = () => ( ); export default Example; ``` ## Example: thickness ```tsx import { CircularSlider } from "@/components/ui/circular-slider"; const Example = () => ( ); export default Example; ``` ## Example: with-markers ```tsx import { CircularSlider } from "@/components/ui/circular-slider"; const Example = () => ( ); export default Example; ``` ## Example: with-value ```tsx "use client"; import { Thermometer } from "lucide-react"; import { CircularSlider, CircularSliderValue, } from "@/components/ui/circular-slider"; function Example() { return ( } suffix="°" /> ); } export default Example; ``` # Client Only - Examples and Patterns Examples for Client Only component. ## Example: default ```tsx import { ClientOnly } from "@/components/ui/client-only"; const ClientOnlyDemo = () => (
This content is only rendered on the client side.
); export default ClientOnlyDemo; ``` ## Example: fallback ```tsx "use client"; import { ClientOnly } from "@/components/ui/client-only"; const Example = () => ( Loading…
} > ); const CurrentTime = () => { const now = new Date(); return (
Current time: {now.toLocaleTimeString()}
); }; export default Example; ``` # Clipboard - Examples and Patterns Examples for Clipboard component. ## Example: controlled ```tsx "use client"; import React from "react"; import { Button } from "@/components/ui/button"; import { Clipboard, ClipboardIndicator, ClipboardInput, ClipboardTrigger, } from "@/components/ui/clipboard"; const Example = () => { const [value, setValue] = React.useState("https://x.com/vinihvc"); return (
); }; export default Example; ``` ## Example: custom-timeout ```tsx import { Button } from "@/components/ui/button"; import { Clipboard, ClipboardIndicator, ClipboardInput, ClipboardTrigger, } from "@/components/ui/clipboard"; const Example = () => (
); export default Example; ``` ## Example: default ```tsx import { Button } from "@/components/ui/button"; import { Clipboard, ClipboardIndicator, ClipboardInput, ClipboardTrigger, } from "@/components/ui/clipboard"; const ClipboardDemo = () => (
); export default ClipboardDemo; ``` ## Example: different-icon ```tsx import { SparkleIcon, SparklesIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Clipboard, ClipboardIndicator, ClipboardTrigger, } from "@/components/ui/clipboard"; const Example = () => ( ); export default Example; ``` ## Example: icon-only ```tsx import { Button } from "@/components/ui/button"; import { Clipboard, ClipboardIndicator, ClipboardTrigger, } from "@/components/ui/clipboard"; const Example = () => ( ); export default Example; ``` ## Example: value-text ```tsx import { Button } from "@/components/ui/button"; import { Clipboard, ClipboardIndicator, ClipboardTrigger, ClipboardValue, } from "@/components/ui/clipboard"; const Example = () => ( ); export default Example; ``` # Collapsible - Examples and Patterns Examples for Collapsible component. ## Example: controlled ```tsx "use client"; import React from "react"; import { Button } from "@/components/ui/button"; import { Collapsible, CollapsibleContent, CollapsibleIndicator, CollapsibleTrigger, } from "@/components/ui/collapsible"; const Example = () => { const [open, setOpen] = React.useState(false); return (
setOpen(open)} open={open}>

This collapsible is controlled. The state is managed externally.

{open ? "✅" : "❌"}

); }; export default Example; ``` ## Example: default ```tsx import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Card, CardAction, CardDescription, CardHeader, } from "@/components/ui/card"; import { Collapsible, CollapsibleContent, CollapsibleIndicator, CollapsibleTrigger, } from "@/components/ui/collapsible"; const CollapsibleDemo = () => (
22.3% 10.1% 6.8% 1.4%
Google
22.3%
Facebook
-10.1%
TikTok
6.8%
Instagram
1.4%
); export default CollapsibleDemo; ``` ## Example: disabled ```tsx import { Button } from "@/components/ui/button"; import { Collapsible, CollapsibleContent, CollapsibleIndicator, CollapsibleTrigger, } from "@/components/ui/collapsible"; const Example = () => (

This content cannot be accessed because the collapsible is disabled.

); export default Example; ``` ## Example: nested ```tsx import { CopyButton } from "@/components/copy-button"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, } from "@/components/ui/card"; import { Collapsible, CollapsibleContent, CollapsibleIndicator, CollapsibleTrigger, } from "@/components/ui/collapsible"; const Example = () => (

Here you can find the documentation for all the components and how to use them.

Copy the following code:

                npm install @shark-ui

                
              
); export default Example; ``` ## Example: partial-collapse ```tsx import { Button } from "@/components/ui/button"; import { Collapsible, CollapsibleContent, CollapsibleIndicator, CollapsibleTrigger, } from "@/components/ui/collapsible"; const Example = () => { return (

This is the first paragraph of content. When collapsed, only a portion of this content will be visible.

This is the second paragraph. It will be hidden when the collapsible is in its collapsed state.

This is the third paragraph. Expand the collapsible to see all the content.

This is the fourth paragraph. The collapsedHeight prop controls how much content is visible when collapsed.

); }; export default Example; ``` # Color Picker - Examples and Patterns Examples for Color Picker component. ## Example: area-channels ```tsx import { ColorPicker, ColorPickerArea, ColorPickerAreaThumb, } from "@/components/ui/color-picker"; const Example = () => ( ); export default Example; ``` ## Example: area-dots ```tsx import { ColorPicker, ColorPickerArea, ColorPickerAreaThumb, } from "@/components/ui/color-picker"; const Example = () => ( ); export default Example; ``` ## Example: custom-spacing ```tsx import { ColorPicker, ColorPickerArea, ColorPickerAreaThumb, ColorPickerContent, ColorPickerEyeDropperTrigger, ColorPickerInput, ColorPickerSlider, ColorPickerSwatchPreview, ColorPickerTransparencyGrid, ColorPickerTrigger, ColorPickerView, } from "@/components/ui/color-picker"; import { InputGroup, InputGroupAddon, InputGroupInput, } from "@/components/ui/input-group"; const Example = () => (
); export default Example; ``` ## Example: default ```tsx import { ColorPicker, ColorPickerArea, ColorPickerAreaThumb, ColorPickerContent, ColorPickerEyeDropperTrigger, ColorPickerInput, ColorPickerSlider, ColorPickerSwatchPreview, ColorPickerTransparencyGrid, ColorPickerTrigger, ColorPickerView, } from "@/components/ui/color-picker"; import { InputGroup, InputGroupAddon, InputGroupInput, } from "@/components/ui/input-group"; const ColorPickerDemo = () => (
); export default ColorPickerDemo; ``` ## Example: input-channel ```tsx "use client"; import { ColorPicker, ColorPickerInput, ColorPickerSwatchPreview, ColorPickerView, parseColor, } from "@/components/ui/color-picker"; import { Field, FieldLabel } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const Example = () => (
RGB HSB HSL Hex
); export default Example; ``` ## Example: input-compact ```tsx "use client"; import { PercentIcon } from "lucide-react"; import { ColorPicker, ColorPickerArea, ColorPickerAreaThumb, ColorPickerContent, ColorPickerInput, ColorPickerSlider, ColorPickerSwatchPreview, ColorPickerTransparencyGrid, ColorPickerTrigger, ColorPickerView, parseColor, } from "@/components/ui/color-picker"; import { InputGroup, InputGroupAddon, InputGroupInput, } from "@/components/ui/input-group"; import { Separator } from "@/components/ui/separator"; const Example = () => ( ); export default Example; ``` ## Example: input-controlled ```tsx "use client"; import React from "react"; import { ColorPicker, ColorPickerInput, parseColor, } from "@/components/ui/color-picker"; import { Input } from "@/components/ui/input"; const Example = () => { const [value, setValue] = React.useState("#eb5e41"); return (
setValue(valueAsString)} value={value} >

{parseColor(value).toString("hex")}

); }; export default Example; ``` ## Example: input-disabled ```tsx import { ColorPicker, ColorPickerInput, } from "@/components/ui/color-picker"; import { Input } from "@/components/ui/input"; const Example = () => ( ); export default Example; ``` ## Example: input-invalid ```tsx import { ColorPicker, ColorPickerInput, } from "@/components/ui/color-picker"; import { Field, FieldError, FieldLabel, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const Example = () => ( Color Please enter a valid hex color ); export default Example; ``` ## Example: input-with-popover ```tsx import { ColorPicker, ColorPickerArea, ColorPickerAreaThumb, ColorPickerContent, ColorPickerInput, ColorPickerSlider, ColorPickerSwatchPreview, ColorPickerTrigger, ColorPickerView, } from "@/components/ui/color-picker"; import { InputGroup, InputGroupAddon, InputGroupInput, } from "@/components/ui/input-group"; const Example = () => ( ); export default Example; ``` ## Example: input-with-swatch-preview ```tsx import { ColorPicker, ColorPickerInput, ColorPickerSwatchPreview, } from "@/components/ui/color-picker"; import { InputGroup, InputGroupAddon, InputGroupInput, } from "@/components/ui/input-group"; const Example = () => ( ); export default Example; ``` ## Example: popover-disabled ```tsx import { Button } from "@/components/ui/button"; import { ColorPicker, ColorPickerArea, ColorPickerContent, ColorPickerSwatchPreview, ColorPickerTrigger, } from "@/components/ui/color-picker"; const Example = () => ( ); export default Example; ``` ## Example: popover-sliders-only ```tsx "use client"; import { Button } from "@/components/ui/button"; import { ColorPicker, ColorPickerContent, ColorPickerSlider, ColorPickerSwatchPreview, ColorPickerTransparencyGrid, ColorPickerTrigger, ColorPickerView, } from "@/components/ui/color-picker"; import { Field, FieldLabel } from "@/components/ui/field"; const Example = () => (
Hue Saturation Lightness Alpha
); export default Example; ``` ## Example: popover-with-channel-editing ```tsx import { Button } from "@/components/ui/button"; import { ColorPicker, ColorPickerArea, ColorPickerAreaThumb, ColorPickerContent, ColorPickerInput, ColorPickerSlider, ColorPickerSwatchPreview, ColorPickerTrigger, } from "@/components/ui/color-picker"; import { Input } from "@/components/ui/input"; const Example = () => { return (
); }; export default Example; ``` ## Example: popover-with-swatch-picker ```tsx "use client"; import { Button } from "@/components/ui/button"; import { ColorPicker, ColorPickerArea, ColorPickerAreaThumb, ColorPickerContent, ColorPickerSlider, ColorPickerSwatch, ColorPickerSwatchGroup, ColorPickerSwatchPreview, ColorPickerSwatchTrigger, ColorPickerTrigger, ColorPickerView, } from "@/components/ui/color-picker"; const Example = () => ( {swatches.map((color) => ( ))} ); const swatches = [ "#ef4444", "#f97316", "#eab308", "#22c55e", "#06b6d4", "#3b82f6", "#8b5cf6", "#ec4899", "#f43f5e", ]; export default Example; ``` ## Example: slider-alpha-channel ```tsx import { ColorPicker, ColorPickerSlider, ColorPickerTransparencyGrid, ColorPickerView, } from "@/components/ui/color-picker"; const Example = () => ( ); export default Example; ``` ## Example: slider-controlled ```tsx "use client"; import React from "react"; import { ColorPicker, ColorPickerSlider, ColorPickerView, } from "@/components/ui/color-picker"; const Example = () => { const [color, setColor] = React.useState("rgba(82, 65, 235, 1)"); return (
setColor(e.valueAsString)} value={color} >

{color}

); }; export default Example; ``` ## Example: slider-disabled ```tsx import { ColorPicker, ColorPickerSlider, ColorPickerView, } from "@/components/ui/color-picker"; const Example = () => ( ); export default Example; ``` ## Example: slider-hsba-channels ```tsx import { ColorPicker, ColorPickerSlider, ColorPickerView, } from "@/components/ui/color-picker"; const Example = () => (
); export default Example; ``` ## Example: slider-hsl-channels ```tsx import { ColorPicker, ColorPickerSlider, ColorPickerView, } from "@/components/ui/color-picker"; const Example = () => (
); export default Example; ``` ## Example: slider-rgb-channels ```tsx import { ColorPicker, ColorPickerSlider, ColorPickerView, } from "@/components/ui/color-picker"; const Example = () => (
); export default Example; ``` ## Example: slider-vertical ```tsx import { ColorPicker, ColorPickerSlider, ColorPickerView, } from "@/components/ui/color-picker"; const Example = () => (
); export default Example; ``` ## Example: swatch-picker-controlled ```tsx "use client"; import React from "react"; import { ColorPicker, ColorPickerSwatch, ColorPickerSwatchGroup, ColorPickerSwatchIndicator, ColorPickerSwatchTrigger, parseColor, } from "@/components/ui/color-picker"; const swatches = ["#0485F7", "#EF4444", "#F59E0B", "#10B981"]; const Example = () => { const [value, setValue] = React.useState("#0485F7"); return (
setValue(valueAsString)} value={value} > {swatches.map((color) => ( ))}

{parseColor(value).toString("hex")}

); }; export default Example; ``` ## Example: swatch-picker-custom-indicator ```tsx "use client"; import { SparkleIcon } from "lucide-react"; import { ColorPicker, ColorPickerSwatch, ColorPickerSwatchGroup, ColorPickerSwatchIndicator, ColorPickerSwatchTrigger, } from "@/components/ui/color-picker"; const swatches = ["#0485F7", "#EF4444", "#F59E0B", "#10B981"]; const Example = () => ( {swatches.map((color) => ( ))} ); export default Example; ``` ## Example: swatch-picker-custom-radius ```tsx import { ColorPicker, ColorPickerSwatch, ColorPickerSwatchGroup, ColorPickerSwatchIndicator, ColorPickerSwatchTrigger, } from "@/components/ui/color-picker"; const Example = () => ( ); export default Example; ``` ## Example: swatch-picker-custom-size ```tsx import { ColorPicker, ColorPickerSwatch, ColorPickerSwatchGroup, ColorPickerSwatchIndicator, ColorPickerSwatchTrigger, } from "@/components/ui/color-picker"; const Example = () => ( ); export default Example; ``` ## Example: swatch-picker-disabled ```tsx import { ColorPicker, ColorPickerSwatch, ColorPickerSwatchGroup, ColorPickerSwatchIndicator, ColorPickerSwatchTrigger, } from "@/components/ui/color-picker"; const swatches = ["#0485F7", "#EF4444", "#F59E0B", "#10B981"]; const Example = () => ( {swatches.map((color) => ( ))} ); export default Example; ``` ## Example: swatch-picker ```tsx import { ColorPicker, ColorPickerSwatch, ColorPickerSwatchGroup, ColorPickerSwatchIndicator, ColorPickerSwatchTrigger, } from "@/components/ui/color-picker"; const swatches = ["#0485F7", "#EF4444", "#F59E0B", "#10B981"]; const Example = () => ( {swatches.map((color) => ( ))} ); export default Example; ``` ## Example: with-field ```tsx import { ColorPicker, ColorPickerInput, } from "@/components/ui/color-picker"; import { Field, FieldHelper, FieldLabel, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const Example = () => ( Color Enter your brand's primary color ); export default Example; ``` # Combobox - Examples and Patterns Examples for Combobox component. ## Example: autohighlight ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Combobox, ComboboxContent, ComboboxInput, ComboboxItem, ComboboxList, } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ initialItems, filter: contains, }); return ( filter(inputValue)} > {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, { label: "Date", value: "date" }, { label: "Elderberry", value: "elderberry" }, ]; export default Example; ``` ## Example: controlled ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import React from "react"; import { Combobox, ComboboxContent, ComboboxInput, ComboboxItem, ComboboxList, } from "@/components/ui/combobox"; const Example = () => { const [value, setValue] = React.useState("banana"); const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ initialItems, filter: contains, }); return (
filter(inputValue)} onValueChange={({ value }) => setValue(value[0])} > {collection.items.map((item) => ( {item.label} ))}

Selected: {value ?? "(none)"}

); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, { label: "Date", value: "date" }, ]; export default Example; ``` ## Example: default ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Combobox, ComboboxContent, ComboboxInput, ComboboxItem, ComboboxList, } from "@/components/ui/combobox"; const ComboboxDemo = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ initialItems, filter: contains, }); return ( filter(inputValue)} > {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, { label: "Date", value: "date" }, ]; export default ComboboxDemo; ``` ## Example: disabled ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Combobox, ComboboxContent, ComboboxInput, ComboboxItem, ComboboxList, } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ initialItems, filter: contains, }); return ( filter(inputValue)} > {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, ]; export default Example; ``` ## Example: group ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Combobox, ComboboxContent, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxList, } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, groupBy: (item) => item.continent, initialItems, }); return ( filter(inputValue)} > {collection.group().map(([continent, group]) => ( {group.map((item) => ( {item.label} ))} ))} ); }; const initialItems = [ { label: "Canada", value: "ca", continent: "North America" }, { label: "United States", value: "us", continent: "North America" }, { label: "Mexico", value: "mx", continent: "North America" }, { label: "United Kingdom", value: "uk", continent: "Europe" }, { label: "Germany", value: "de", continent: "Europe" }, { label: "France", value: "fr", continent: "Europe" }, { label: "Japan", value: "jp", continent: "Asia" }, { label: "South Korea", value: "kr", continent: "Asia" }, { label: "China", value: "cn", continent: "Asia" }, ]; export default Example; ``` ## Example: invalid ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Combobox, ComboboxContent, ComboboxInput, ComboboxItem, ComboboxList, } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ initialItems, filter: contains, }); return ( filter(inputValue)} > {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, ]; export default Example; ``` ## Example: multiple ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Combobox, ComboboxContent, ComboboxInput, ComboboxItem, ComboboxList, } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ initialItems, filter: contains, }); return ( filter(inputValue)} > {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "React", value: "react" }, { label: "Vue", value: "vue" }, { label: "Svelte", value: "svelte" }, { label: "Solid", value: "solid" }, ]; export default Example; ``` ## Example: size-lg ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Combobox, ComboboxContent, ComboboxInput, ComboboxItem, ComboboxList, } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ initialItems, filter: contains, }); return ( filter(inputValue)} > {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, { label: "Date", value: "date" }, ]; export default Example; ``` ## Example: size-md ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Combobox, ComboboxContent, ComboboxInput, ComboboxItem, ComboboxList, } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ initialItems, filter: contains, }); return ( filter(inputValue)} > {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, { label: "Date", value: "date" }, ]; export default Example; ``` ## Example: size-sm ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Combobox, ComboboxContent, ComboboxInput, ComboboxItem, ComboboxList, } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ initialItems, filter: contains, }); return ( filter(inputValue)} > {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, { label: "Date", value: "date" }, ]; export default Example; ``` ## Example: with-clear-button ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Combobox, ComboboxContent, ComboboxInput, ComboboxItem, ComboboxList, } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ initialItems, filter: contains, }); return ( filter(inputValue)} > {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, ]; export default Example; ``` ## Example: with-field ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Combobox, ComboboxContent, ComboboxInput, ComboboxItem, ComboboxList, } from "@/components/ui/combobox"; import { Field, FieldError, FieldHelper, FieldLabel, } from "@/components/ui/field"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ initialItems, filter: contains, }); return ( Country filter(inputValue)} required > {collection.items.map((item) => ( {item.label} ))} We'll use this for shipping estimates Please select a valid country ); }; const initialItems = [ { label: "Brazil", value: "br" }, { label: "Mexico", value: "mx" }, { label: "Ireland", value: "ie" }, ]; export default Example; ``` ## Example: with-scroll ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Combobox, ComboboxContent, ComboboxInput, ComboboxItem, ComboboxList, } from "@/components/ui/combobox"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, initialItems, }); return ( filter(inputValue)} > {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = Array.from({ length: 30 }, (_, i) => ({ label: `Option ${i + 1}`, value: `option-${i + 1}`, })); export default Example; ``` ## Example: with-start-icon ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { AppleIcon } from "lucide-react"; import { Combobox, ComboboxContent, ComboboxInput, ComboboxItem, ComboboxList, } from "@/components/ui/combobox"; import { InputGroupAddon } from "@/components/ui/input-group"; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, initialItems, }); return ( filter(inputValue)} > {collection.items.map((item) => ( {item.label} ))} ); }; const initialItems = [ { label: "Apple", value: "apple" }, { label: "Banana", value: "banana" }, { label: "Cherry", value: "cherry" }, ]; export default Example; ``` # Command - Examples and Patterns Examples for Command component. ## Example: default ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Command, CommandContent, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, } from "@/components/ui/command"; const CommandExample = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ initialItems, filter: contains, groupBy: (item) => item.group, }); return ( filter(inputValue)} > {collection.group().map(([group, items], index) => ( {items.map((item) => ( {item.label} {item.shortcut} ))} {index < collection.group().length - 1 && } ))} ); }; const initialItems = [ { label: "Linear", shortcut: "⌘L", value: "linear", group: "Suggestions" }, { label: "Figma", shortcut: "⌘F", value: "figma", group: "Suggestions" }, { label: "Slack", shortcut: "⌘S", value: "slack", group: "Suggestions" }, { label: "YouTube", shortcut: "⌘Y", value: "youtube", group: "Suggestions" }, { label: "Raycast", shortcut: "⌘R", value: "raycast", group: "Suggestions" }, { label: "Settings", shortcut: "⌘,", value: "settings", group: "Settings" }, { label: "Help", shortcut: "⌘?", value: "help", group: "Settings" }, { label: "About", shortcut: "⌘I", value: "about", group: "Settings" }, { label: "Feedback", shortcut: "⌘F", value: "feedback", group: "Settings" }, { label: "Support", shortcut: "⌘S", value: "support", group: "Settings" }, { label: "Updates", shortcut: "⌘U", value: "updates", group: "Settings" }, { label: "Logout", shortcut: "⌘L", value: "logout", group: "Settings" }, { label: "Sign out", shortcut: "⌘O", value: "sign out", group: "Settings" }, { label: "Sign in", shortcut: "⌘I", value: "sign in", group: "Settings" }, ]; export default CommandExample; ``` ## Example: dialog ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { CornerDownLeftIcon } from "lucide-react"; import React from "react"; import { Button } from "@/components/ui/button"; import { Command, CommandContent, CommandDialog, CommandDialogContent, CommandDialogTrigger, CommandEmpty, CommandFooter, CommandGroup, CommandInput, CommandItem, CommandList, CommandShortcut, } from "@/components/ui/command"; import { Kbd } from "@/components/ui/kbd"; const initialItems = [ { label: "New File", shortcut: "⌘N", value: "new", group: "File" }, { label: "Save", shortcut: "⌘S", value: "save", group: "File" }, { label: "Open", shortcut: "⌘O", value: "open", group: "File" }, { label: "Undo", shortcut: "⌘Z", value: "undo", group: "Edit" }, { label: "Redo", shortcut: "⌘⇧Z", value: "redo", group: "Edit" }, { label: "Cut", shortcut: "⌘X", value: "cut", group: "Edit" }, { label: "Copy", shortcut: "⌘C", value: "copy", group: "Edit" }, ]; const Example = () => { const [open, setOpen] = React.useState(false); const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, groupBy: (item) => item.group, initialItems, }); return ( setOpen(o)} open={open}> filter(inputValue)} onValueChange={() => setOpen(false)} > No results found. {collection.group().map(([group, items]) => ( {items.map((item) => ( {item.label} {item.shortcut} ))} ))}
To select
); }; export default Example; ``` ## Example: groups ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Command, CommandContent, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from "@/components/ui/command"; const initialItems = [ { label: "Apple", value: "apple", group: "Fruit" }, { label: "Banana", value: "banana", group: "Fruit" }, { label: "Cherry", value: "cherry", group: "Fruit" }, { label: "United States", value: "us", group: "Countries" }, { label: "United Kingdom", value: "uk", group: "Countries" }, { label: "Germany", value: "de", group: "Countries" }, ]; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, groupBy: (item) => item.group, initialItems, }); return ( filter(inputValue)} > {collection.group().map(([group, items]) => ( {items.map((item) => ( {item.label} ))} ))} ); }; export default Example; ``` ## Example: shortcuts ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { Command, CommandContent, CommandEmpty, CommandInput, CommandItem, CommandList, CommandShortcut, } from "@/components/ui/command"; const initialItems = [ { label: "New File", shortcut: "⌘N", value: "new" }, { label: "Save", shortcut: "⌘S", value: "save" }, { label: "Copy", shortcut: "⌘C", value: "copy" }, { label: "Paste", shortcut: "⌘V", value: "paste" }, { label: "Undo", shortcut: "⌘Z", value: "undo" }, { label: "Find", shortcut: "⌘F", value: "find" }, ]; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, initialItems, }); return ( filter(inputValue)} > {collection.items.map((item) => ( {item.label} {item.shortcut} ))} ); }; export default Example; ``` ## Example: with-footer ```tsx "use client"; import { useFilter, useListCollection } from "@ark-ui/react"; import { ArrowDownIcon, ArrowUpIcon, CornerDownLeftIcon } from "lucide-react"; import { Command, CommandContent, CommandEmpty, CommandFooter, CommandGroup, CommandInput, CommandItem, CommandList, CommandShortcut, } from "@/components/ui/command"; import { Kbd } from "@/components/ui/kbd"; const initialItems = [ { label: "Settings", shortcut: "⌘,", value: "settings", group: "App" }, { label: "Keyboard Shortcuts", shortcut: "⌘K", value: "shortcuts", group: "App", }, { label: "Help", shortcut: "⌘?", value: "help", group: "App" }, ]; const Example = () => { const { contains } = useFilter({ sensitivity: "base" }); const { collection, filter } = useListCollection({ filter: contains, groupBy: (item) => item.group, initialItems, }); return ( filter(inputValue)} > {collection.group().map(([group, items]) => ( {items.map((item) => ( {item.label} {item.shortcut} ))} ))}
Select
Navigate
); }; export default Example; ``` # Context Menu - Examples and Patterns Examples for Context Menu component. ## Example: default ```tsx import { Archive, ArchiveX, Bell, CirclePlus, FolderInput, MailX, Reply, ReplyAll, Send, SquarePen, Trash, Trash2, } from "lucide-react"; import { ContextMenu, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, } from "@/components/ui/context-menu"; const ContextMenuDemo = () => ( Right click here Long press here Forward ⇧⌘F Reply ⇧⌘R Reply all ⇧⌘A Archive ⇧⌘Z Move to Junk Trash Reminders More Drafts Spam Delete ); export default ContextMenuDemo; ``` # Data List - Examples and Patterns Examples for Data List component. ## Example: default ```tsx import { DataList, DataListItem, DataListItemLabel, DataListItemValue, } from "@/components/ui/data-list"; const data = [ { label: "New Users", value: "234" }, { label: "Sales", value: "£12,340" }, { label: "Revenue", value: "3,450" }, ]; const DataListDemo = () => ( {data.map((item) => ( {item.label} {item.value} ))} ); export default DataListDemo; ``` ## Example: info-tip ```tsx import { InfoIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { DataList, DataListItem, DataListItemLabel, DataListItemValue, } from "@/components/ui/data-list"; import { ToggleTooltip, ToggleTooltipContent, ToggleTooltipTrigger, } from "@/components/ui/toggle-tooltip"; const data = [ { label: "New Users", value: "234", info: "Total new user signups this month", }, { label: "Sales", value: "£12,340", info: "Revenue from product sales" }, { label: "Revenue", value: "3,450", info: "Total revenue in the last quarter", }, ]; const Example = () => ( {data.map((item) => ( {item.label} {item.info} {item.value} ))} ); export default Example; ``` ## Example: orientation-horizontal ```tsx import { DataList, DataListItem, DataListItemLabel, DataListItemValue, } from "@/components/ui/data-list"; const Example = () => ( First Name Jassie Last Name Bhatia Email jassie@example.com ); export default Example; ``` ## Example: orientation-vertical ```tsx import { DataList, DataListItem, DataListItemLabel, DataListItemValue, } from "@/components/ui/data-list"; const Example = () => ( First Name Jassie Last Name Bhatia Email jassie@example.com ); export default Example; ``` ## Example: separator ```tsx import { DataList, DataListItem, DataListItemLabel, DataListItemValue, } from "@/components/ui/data-list"; const data = [ { label: "First Name", value: "Jassie" }, { label: "Last Name", value: "Bhatia" }, { label: "Email", value: "jassie@example.com" }, { label: "Phone", value: "1234567890" }, { label: "Address", value: "1234 Main St, Anytown, USA" }, ]; const Example = () => ( {data.map((item) => ( {item.label} {item.value} ))} ); export default Example; ``` # Date Picker - Examples and Patterns Examples for Date Picker component. ## Example: custom-format ```tsx "use client"; import { format } from "date-fns"; import { CalendarIcon } from "lucide-react"; import React from "react"; import { Button } from "@/components/ui/button"; import { CalendarMonthSelect, CalendarNextTrigger, CalendarPrevTrigger, CalendarTable, CalendarTableDays, CalendarViewControl, CalendarWeekDays, CalendarYearSelect, parseDate, } from "@/components/ui/calendar"; import { DatePicker, DatePickerContent, DatePickerTrigger, } from "@/components/ui/date-picker"; const Example = () => { const [value, setValue] = React.useState([parseDate("2025-01-15")]); const formattedDate = format(value[0].toString(), "PPP"); return ( setValue(value)} value={value}> ); }; export default Example; ``` ## Example: default ```tsx "use client"; import { CalendarIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { CalendarMonthSelect, CalendarNextTrigger, CalendarPrevTrigger, CalendarTable, CalendarTableDays, CalendarViewControl, CalendarWeekDays, CalendarYearSelect, } from "@/components/ui/calendar"; import { DatePicker, DatePickerContent, DatePickerTrigger, DatePickerValue, } from "@/components/ui/date-picker"; const Example = () => ( ); export default Example; ``` ## Example: input ```tsx import { CalendarMonthSelect, CalendarNextTrigger, CalendarPrevTrigger, CalendarTable, CalendarTableDays, CalendarViewControl, CalendarWeekDays, CalendarYearSelect, } from "@/components/ui/calendar"; import { DatePicker, DatePickerContent, DatePickerInput, } from "@/components/ui/date-picker"; const Example = () => ( ); export default Example; ``` ## Example: range ```tsx "use client"; import { CalendarIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { CalendarMonthSelect, CalendarNextTrigger, CalendarPrevTrigger, CalendarTable, CalendarTableDays, CalendarViewControl, CalendarWeekDays, CalendarYearSelect, parseDate, } from "@/components/ui/calendar"; import { DatePicker, DatePickerContent, DatePickerTrigger, DatePickerValue, } from "@/components/ui/date-picker"; const Example = () => { return ( ); }; export default Example; ``` ## Example: time ```tsx import { DatePickerTimer } from "@/components/ui/date-picker"; import { Field, FieldLabel } from "@/components/ui/field"; const Example = () => ( Time ); export default Example; ``` ## Example: with-presets ```tsx "use client"; import { CalendarIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { CalendarMonthSelect, CalendarNextTrigger, CalendarPrevTrigger, CalendarTable, CalendarTableDays, CalendarViewControl, CalendarWeekDays, CalendarYearSelect, parseDate, } from "@/components/ui/calendar"; import { DatePicker, DatePickerContent, DatePickerPresetTrigger, DatePickerTrigger, DatePickerValue, } from "@/components/ui/date-picker"; const Example = () => { return (
{presets.map((preset) => ( ))}
); }; const presets = [ { label: "Today", days: 0 }, { label: "Tomorrow", days: 1 }, { label: "In 3 days", days: 3 }, { label: "In a week", days: 7 }, ] as const; export default Example; ``` # Dialog - Examples and Patterns Examples for Dialog component. ## Example: close-behavior ```tsx import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogHeader, DialogTrigger, } from "@/components/ui/dialog"; const Example = () => (
); export default Example; ``` ## Example: custom-spacing ```tsx import { Button } from "@/components/ui/button"; import { Dialog, DialogBody, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTrigger, } from "@/components/ui/dialog"; import { Field, FieldGroup, FieldLabel, FieldSet, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; import { NativeSelect, NativeSelectOption, } from "@/components/ui/native-select"; const Example = () => (
Name Main branch main develop
); export default Example; ``` ## Example: default ```tsx import { Button } from "@/components/ui/button"; import { Dialog, DialogBody, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTrigger, } from "@/components/ui/dialog"; import { Field, FieldGroup, FieldLabel, FieldSet, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; import { NativeSelect, NativeSelectOption, } from "@/components/ui/native-select"; const DialogDemo = () => (
Name Main branch main develop feature/123 release/1.0.0
); export default DialogDemo; ``` ## Example: initial-focus ```tsx "use client"; import React from "react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogBody, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTrigger, } from "@/components/ui/dialog"; import { Field, FieldGroup, FieldLabel, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const Example = () => { const inputRef = React.useRef(null); return ( inputRef.current}> Name Email ); }; export default Example; ``` ## Example: nested ```tsx import { Button } from "@/components/ui/button"; import { Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { Field, FieldGroup, FieldLabel, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const Example = () => { return (

Name

Bora Baloglu

Email

bora@example.com

Edit details Make changes to the member's information. Name Email
); }; export default Example; ``` ## Example: no-close-button ```tsx import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogHeader, DialogTrigger, } from "@/components/ui/dialog"; const Example = () => ( ); export default Example; ``` ## Example: non-modal ```tsx import { Button } from "@/components/ui/button"; import { Dialog, DialogBody, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTrigger, } from "@/components/ui/dialog"; const Example = () => (

Non-modal dialogs allow interaction with elements outside the dialog. Focus trapping and scroll prevention are disabled.

); export default Example; ``` ## Example: open-from-menu ```tsx "use client"; import { InfoIcon, SettingsIcon, UserIcon } from "lucide-react"; import React from "react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogBody, DialogClose, DialogContent, DialogFooter, DialogHeader, } from "@/components/ui/dialog"; import { Menu, MenuContent, MenuItem, MenuTrigger, } from "@/components/ui/menu"; const Example = () => { const [isOpen, setIsOpen] = React.useState(false); return ( <> setIsOpen(true)} value="settings"> Open settings View profile Help setIsOpen(open)} open={isOpen}>

You can open dialogs imperatively from menu items using the onClick handler.

); }; export default Example; ``` ## Example: scroll-area ```tsx import { Button } from "@/components/ui/button"; import { Dialog, DialogBody, DialogClose, DialogContent, DialogFooter, DialogHeader, DialogTrigger, } from "@/components/ui/dialog"; const Example = () => (

What is Lorem Ipsum?

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi imperdiet placerat nisl, ac consequat sem hendrerit in.

Why do we use it?

Pellentesque quis sapien tortor. Nulla egestas tristique justo, in commodo quam posuere id. Cras varius, nunc non placerat vulputate, dolor turpis elementum elit, non lobortis lacus nunc nec nisl.

Where does it come from?

Pellentesque turpis est, mollis eu arcu eu, tempor tincidunt urna. Pellentesque pellentesque est euismod accumsan ullamcorper. Quisque urna lorem, porttitor ac malesuada at, vehicula eget nulla. Donec eget consequat erat, quis pharetra ex.

Where can I get some?

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec egestas semper eros a maximus. Sed consequat tempus lobortis. Phasellus sed vulputate turpis. Nulla facilisi. Curabitur consequat dui tellus.

Who can I contact if I have questions?

Donec tortor lorem, finibus vel suscipit vehicula, sagittis efficitur erat. Proin sagittis aliquam sagittis. Nullam sed porta leo. Nunc sed velit felis.

What happens if I don't agree to these terms?

Aenean maximus, libero vel laoreet congue, purus leo iaculis libero, egestas egestas quam mi at quam. Curabitur eu tempus mauris. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae;

Where can I get some?

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec egestas semper eros a maximus. Sed consequat tempus lobortis. Phasellus sed vulputate turpis. Nulla facilisi. Curabitur consequat dui tellus.

); export default Example; ``` # Download Trigger - Examples and Patterns Examples for Download Trigger component. ## Example: default ```tsx import { DownloadIcon, FileTextIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { DownloadTrigger } from "@/components/ui/download-trigger"; import { Item, ItemTitle } from "@/components/ui/item"; const DownloadTriggerDemo = () => (
{content}
); const content = "Hello, World! This is a sample text file."; export default DownloadTriggerDemo; ``` ## Example: download-svg ```tsx import { DownloadIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { DownloadTrigger } from "@/components/ui/download-trigger"; const Example = () => ( ); const svgContent = ``; export default Example; ``` ## Example: promise ```tsx "use client"; import { DownloadIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { DownloadTrigger } from "@/components/ui/download-trigger"; const Example = () => ( ); const fetchData = () => new Promise((resolve) => { setTimeout(() => { resolve( new Blob(['{"message": "Loaded asynchronously!"}'], { type: "application/json", }) ); }, 500); }); export default Example; ``` # Drawer - Examples and Patterns Examples for Drawer component. ## Example: custom-spacing ```tsx import { Button } from "@/components/ui/button"; import { Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerContentInner, DrawerFooter, DrawerHeader, DrawerTrigger, } from "@/components/ui/drawer"; import { Field, FieldGroup, FieldLabel, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const Example = () => ( Name Username ); export default Example; ``` ## Example: default ```tsx import { Button } from "@/components/ui/button"; import { Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerContentInner, DrawerFooter, DrawerHeader, DrawerTrigger, } from "@/components/ui/drawer"; import { Field, FieldGroup, FieldLabel, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const DrawerDemo = () => ( Name Username ); export default DrawerDemo; ``` ## Example: drawer-content-inner ```tsx import { Button } from "@/components/ui/button"; import { Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerContentInner, DrawerFooter, DrawerHeader, DrawerTrigger, } from "@/components/ui/drawer"; import { Field, FieldGroup, FieldLabel, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const Example = () => ( Name Email ); export default Example; ``` ## Example: inset ```tsx import { Button } from "@/components/ui/button"; import { Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerContentInner, DrawerFooter, DrawerHeader, DrawerTrigger, } from "@/components/ui/drawer"; import { Field, FieldGroup, FieldLabel, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const Example = () => ( Name Email ); export default Example; ``` ## Example: snap-points ```tsx import { Button } from "@/components/ui/button"; import { Drawer, DrawerBody, DrawerContent, DrawerContentInner, DrawerHeader, DrawerTrigger, } from "@/components/ui/drawer"; const Example = () => (

This drawer has multiple snap points. Try dragging the handle to quarter, half, or full height.

); export default Example; ``` ## Example: swipe-directions ```tsx import { Button } from "@/components/ui/button"; import { Drawer, DrawerBody, DrawerContent, DrawerHeader, DrawerTrigger, } from "@/components/ui/drawer"; const Example = () => (

Swipe down to close this drawer.

Swipe up to close this drawer.

Swipe left to close this drawer.

Swipe right to close this drawer.

); export default Example; ``` # Editable - Examples and Patterns Examples for Editable component. ## Example: activation-click ```tsx import { CheckIcon, XIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, } from "@/components/ui/card"; import { Editable, EditableArea, EditableCancelTrigger, EditableControl, EditableInput, EditablePreview, EditableSubmitTrigger, } from "@/components/ui/editable"; import { Field, FieldGroup, FieldLabel, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const Example = () => ( Name Username ); export default Example; ``` ## Example: activation-focus ```tsx import { CheckIcon, XIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, } from "@/components/ui/card"; import { Editable, EditableArea, EditableCancelTrigger, EditableControl, EditableInput, EditablePreview, EditableSubmitTrigger, } from "@/components/ui/editable"; import { Field, FieldGroup, FieldLabel, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const Example = () => ( Name Username ); export default Example; ``` ## Example: activation-none ```tsx import { CheckIcon, EditIcon, XIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, } from "@/components/ui/card"; import { Editable, EditableArea, EditableCancelTrigger, EditableControl, EditableEditTrigger, EditableInput, EditablePreview, EditableSubmitTrigger, } from "@/components/ui/editable"; import { Field, FieldGroup, FieldLabel, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const Example = () => ( Name Username ); export default Example; ``` ## Example: controlled ```tsx "use client"; import { CheckIcon, PencilIcon } from "lucide-react"; import React from "react"; import { Button } from "@/components/ui/button"; import { Card, CardAction, CardContent, CardHeader, } from "@/components/ui/card"; import { Editable, EditableArea, EditableInput, EditablePreview, } from "@/components/ui/editable"; import { Field, FieldGroup, FieldLabel, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const Example = () => { const [isEditing, setIsEditing] = React.useState(false); return ( Name Username ); }; export default Example; ``` ## Example: dblclick ```tsx import { CheckIcon, XIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, } from "@/components/ui/card"; import { Editable, EditableArea, EditableCancelTrigger, EditableControl, EditableInput, EditablePreview, EditableSubmitTrigger, } from "@/components/ui/editable"; import { Field, FieldGroup, FieldLabel, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const Example = () => ( Name Username ); export default Example; ``` ## Example: default ```tsx import { CheckIcon, XIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, } from "@/components/ui/card"; import { Editable, EditableArea, EditableCancelTrigger, EditableControl, EditableInput, EditablePreview, EditableSubmitTrigger, } from "@/components/ui/editable"; import { Field, FieldGroup, FieldLabel, } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; const EditableDemo = () => ( Name Username ); export default EditableDemo; ``` ## Example: orientation-horizontal ```tsx import { CheckIcon, XIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Editable, EditableArea, EditableCancelTrigger, EditableControl, EditableInput, EditablePreview, EditableSubmitTrigger, } from "@/components/ui/editable"; import { Input } from "@/components/ui/input"; const Example = () => ( ); export default Example; ``` ## Example: orientation-vertical ```tsx import { CheckIcon, XIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Editable, EditableArea, EditableCancelTrigger, EditableControl, EditableInput, EditablePreview, EditableSubmitTrigger, } from "@/components/ui/editable"; import { Textarea } from "@/components/ui/textarea"; const Example = () => (