Date Picker 6

PreviousNext

Date range picker with compact date formatting using little-date library

Docs
shadcn-studiocomponent

Preview

Loading preview…
registry/new-york/components/date-picker/date-picker-06.tsx
'use client'

import { useState } from 'react'

import { formatDateRange } from 'little-date'
import { ChevronDownIcon } from 'lucide-react'
import { type DateRange } from 'react-day-picker'

import { Button } from '@/registry/new-york/ui/button'
import { Calendar } from '@/registry/new-york/ui/calendar'
import { Label } from '@/registry/new-york/ui/label'
import { Popover, PopoverContent, PopoverTrigger } from '@/registry/new-york/ui/popover'

const DatePickerWithShortDateDisplayDemo = () => {
  const [range, setRange] = useState<DateRange | undefined>({
    from: new Date(2025, 10, 20),
    to: new Date(2025, 10, 24)
  })

  return (
    <div className='w-full max-w-xs space-y-2'>
      <Label htmlFor='dates' className='px-1'>
        Date picker with short date
      </Label>
      <Popover>
        <PopoverTrigger asChild>
          <Button variant='outline' id='dates' className='w-full justify-between font-normal'>
            {range?.from && range?.to
              ? formatDateRange(range.from, range.to, {
                  includeTime: false
                })
              : 'Pick a date'}
            <ChevronDownIcon />
          </Button>
        </PopoverTrigger>
        <PopoverContent className='w-auto overflow-hidden p-0' align='start'>
          <Calendar
            mode='range'
            selected={range}
            onSelect={range => {
              setRange(range)
            }}
          />
        </PopoverContent>
      </Popover>
    </div>
  )
}

export default DatePickerWithShortDateDisplayDemo

Installation

npx shadcn@latest add @shadcn-studio/date-picker-06

Usage

import { DatePicker06 } from "@/components/date-picker-06"
<DatePicker06 />