Forms

Calendar

Full-featured date selection and calendar view with native mobile sheets.

Trip Planner (Range)

A comprehensive example for booking systems. Features a top-mounted range label, responsive width, and date constraints (minDate/maxDate).

Trip Planner

Select your departure and return dates.

Available for next 3 months only

May 26 - Jun 2

Su
Mo
Tu
We
Th
Fr
Sa

Check-in

5/26/2026

Check-out

6/2/2026

'use client'

import { Calendar, Stack, Text, Button } from 'biibaos'
import { useState } from 'react'

export default function TripPlanner() {
  const [range, setRange] = useState<[Date | null, Date | null]>([
    new Date(), 
    new Date(new Date().setDate(new Date().getDate() + 7))
  ])

  return (
    <Stack direction="column" gap={20} align="center" fullWidth>
      <Text variant="h3" weight="bold">Trip Planner</Text>
      <Text color="muted" align="center" size="sm">
        Select your departure and return dates.
      </Text>
      
      <Calendar 
        mode="range"
        selected={range}
        onSelect={(r: any) => setRange(r)}
        minDate={new Date()}
        maxDate={new Date(new Date().setMonth(new Date().getMonth() + 3))}
      />

      <div style={{ 
        padding: '12px 16px', 
        background: 'var(--biiba-surface)', 
        borderRadius: 12, 
        border: '1px solid var(--biiba-border)', 
        width: '100%', 
        maxWidth: 320 
      }}>
        <Stack direction="row" justify="between" align="center">
          <div>
            <Text size="xs" color="muted" weight="bold" transform="uppercase">Check-in</Text>
            <Text size="sm" weight="semibold">{range[0]?.toLocaleDateString() || '--'}</Text>
          </div>
          <div style={{ height: 20, width: 1, background: 'var(--biiba-border)' }} />
          <div style={{ textAlign: 'right' }}>
            <Text size="xs" color="muted" weight="bold" transform="uppercase">Check-out</Text>
            <Text size="sm" weight="semibold">{range[1]?.toLocaleDateString() || '--'}</Text>
          </div>
        </Stack>
      </div>
    </Stack>
  )
}

Single Selection

Standard calendar for picking a specific date. Fully responsive and keyboard-friendly.

Su
Mo
Tu
We
Th
Fr
Sa
'use client'

import { Calendar } from 'biibaos'
import { useState } from 'react'

export default function BasicCalendar() {
  const [date, setDate] = useState(new Date())
  return (
    <Calendar 
      selected={date} 
      onSelect={(d: any) => setDate(d)} 
    />
  )
}

Properties

PropTypeDefaultDescription
modeCalendarMode'single'Selection behavior mode (single or multiple dates)
selectedDate | [Date | null, Date | null]Controlled date selection value
onSelect(date: Date | [Date | null, Date | null]) => voidCallback function triggered when selecting dates
defaultDateDateConfigures the defaultDate option
minDateDateMinimum selectable date constraint
maxDateDateMaximum selectable date constraint