Calendar
blode-ui/calendarFreeComponent
A date field component that allows users to pick dates.
Install it
npx shadcn@latest add https://raw.githubusercontent.com/mblode/blode-ui/main/public/r/calendar.jsonSource
1"use client";23import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from "blode-icons-react";4import * as React from "react";5import { DayPicker, getDefaultClassNames } from "react-day-picker";6import type { DayButton, Locale } from "react-day-picker";78import { cn } from "@/lib/utils";9import { Button, buttonVariants } from "@/components/ui/button";1011const CalendarDayButton = ({12 className,13 day,14 modifiers,15 locale,16 ...props17}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) => {18 const defaultClassNames = getDefaultClassNames();1920 const ref = React.useRef<HTMLButtonElement>(null);21 React.useEffect(() => {22 if (modifiers.focused) {23 ref.current?.focus();24 }25 }, [modifiers.focused]);2627 return (28 <Button29 className={cn(30 "relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 font-normal leading-none data-[range-end=true]:rounded-(--cell-radius) data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-end=true]:bg-primary data-[range-middle=true]:bg-muted data-[range-start=true]:bg-primary data-[selected-single=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:text-foreground data-[range-start=true]:text-primary-foreground data-[selected-single=true]:text-primary-foreground group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70",31 defaultClassNames.day,32 className,33 )}34 data-day={day.date.toLocaleDateString(locale?.code ?? "en-US")}35 data-range-end={modifiers.range_end}36 data-range-middle={modifiers.range_middle}37 data-range-start={modifiers.range_start}38 data-selected-single={39 modifiers.selected &&40 !modifiers.range_start &&41 !modifiers.range_end &&42 !modifiers.range_middle43 }44 ref={ref}45 size="icon"46 variant="ghost"47 {...props}48 />49 );50};5152const Calendar = ({53 className,54 classNames,55 showOutsideDays = true,56 captionLayout = "label",57 buttonVariant = "ghost",58 locale,59 formatters,60 components,61 ...props62}: React.ComponentProps<typeof DayPicker> & {63// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from blode/ui
All 85 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | blode/ui | Components | Free | 2 deps | |
| Alertalert | blode/ui | Components | Free | no deps | |
| Alert Dialogalert-dialog | blode/ui | Components | Free | 1 dep | |
| Ask User Questionsask-user-questions | blode/ui | Components | Free | 1 dep | |
| Aspect Ratioaspect-ratio | blode/ui | Components | Free | 1 dep | |
| Attachmentattachment | blode/ui | Components | Free | 1 dep | |
| Autocompleteautocomplete | blode/ui | Components | Free | 1 dep | |
| Avataravatar | blode/ui | Components | Free | 1 dep |
