Date Picker
muffled-ui-registry/date-pickerFreeComponent
Popover trigger with calendar for single-date selection on ink and paper.
Live preview
live · rendered by the registry
Rendered by muffled-ui-registry on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://ui.muffled.studio/r/date-picker.jsonSource
1import * as React from "react"2import { format } from "date-fns"3import { ChevronDownIcon } from "lucide-react"45import { cn } from "@/registry/lib/surface"6import { Button } from "@/registry/ui/button"7import { Calendar } from "@/registry/ui/calendar"8import {9 Popover,10 PopoverContent,11 PopoverTrigger,12} from "@/registry/ui/popover"1314type DatePickerProps = {15 date?: Date16 onDateChange?: (date: Date | undefined) => void17 placeholder?: string18 className?: string19 align?: React.ComponentProps<typeof PopoverContent>["align"]20} & Omit<React.ComponentProps<typeof Button>, "value" | "defaultValue">2122function DatePicker({23 date,24 onDateChange,25 placeholder = "pick a date",26 className,27 align = "start",28 variant = "outline",29 ...buttonProps30}: DatePickerProps) {31 const [open, setOpen] = React.useState(false)3233 return (34 <Popover open={open} onOpenChange={setOpen}>35 <PopoverTrigger36 render={37 <Button38 variant={variant}39 data-empty={!date}40 className={cn(41 "w-[212px] justify-between font-normal data-[empty=true]:text-muted-foreground",42 className43 )}44 {...buttonProps}45 />46 }47 >48 {date ? format(date, "PPP") : <span>{placeholder}</span>}49 <ChevronDownIcon className="size-4 stroke-[1.5]" />50 </PopoverTrigger>51 <PopoverContent className="w-auto p-0" align={align}>52 <Calendar53 mode="single"54 selected={date}55 defaultMonth={date}56 onSelect={(next) => {57 onDateChange?.(next)58 setOpen(false)59 }}60 />61 </PopoverContent>62 </Popover>63 )64}6566export { DatePicker }
What it pulls in
npm packages
Other registry items
Files it writes
More from muffled-ui-registry
All 55 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | muffled-ui-registry | Components | Free | 2 deps | |
| Alertalert | muffled-ui-registry | Components | Free | 1 dep | |
| Alert Dialogalert-dialog | muffled-ui-registry | Components | Free | 1 dep | |
| Avataravatar | muffled-ui-registry | Components | Free | 1 dep | |
| Badgebadge | muffled-ui-registry | Components | Free | 2 deps | |
| Breadcrumbbreadcrumb | muffled-ui-registry | Components | Free | 2 deps | |
| Buttonbutton | muffled-ui-registry | Components | Free | 2 deps | |
| Button Groupbutton-group | muffled-ui-registry | Components | Free | 2 deps |
