GoBrand Calendar

CalendarProvider

Share one calendar controller with child components.

import {
  CalendarProvider,
  useCalendar,
  useCreateCalendar,
} from '@gobrand/react-calendar'

function Calendar() {
  const calendar = useCreateCalendar({ views: { month: true } })

  return (
    <CalendarProvider calendar={calendar}>
      <Controls />
      <VisibleRange />
    </CalendarProvider>
  )
}

function Controls() {
  const calendar = useCalendar()

  return (
    <nav>
      <button onClick={calendar.previous}>Previous</button>
      <strong>{calendar.title()}</strong>
      <button onClick={calendar.next}>Next</button>
    </nav>
  )
}

function VisibleRange() {
  const { visibleRange } = useCalendar()

  return <p>{visibleRange.start.toString()} – {visibleRange.end.toString()}</p>
}

The provider shares calendar state, not event data. Child views can fetch their own records and use their own item types.