finance
PeriodSelector
Interactive
Import
import { PeriodSelector } from '@connor-adams/designsystem'Usage
The date-range control every ledger view needs — preset periods with an optional custom range, in a compact popover.
const [period, setPeriod] = React.useState('this-month')
const [range, setRange] = React.useState({})
<PeriodSelector value={period} onValueChange={setPeriod} custom={range} onCustomChange={setRange} />
Presets: this month, last 30 days, this quarter, year to date, this year, custom. Override with presets. Selecting "Custom range" reveals from/to date inputs. size="sm|default".
Props
| Prop | Type | Default | Description |
|---|---|---|---|
| value | string | undefined | this-month | |
| onValueChange | ((value: string) => void) | undefined | — | |
| custom | { from?: string | undefined; to?: string | undefined; } | undefined | — | |
| onCustomChange | ((range: { from?: string | undefined; to?: string | undefined; }) => void) | undefined | — | |
| presets | PeriodPreset[] | undefined | [ { value: 'this-month', label: 'This month' }, { value: 'last-30', label: 'Last 30 days' }, { value: 'this-quarter', label: 'This quarter' }, { value: 'ytd', label: 'Year to date' }, { value: 'this-year', label: 'This year' }, { value: 'custom', label: 'Custom range' }, ] | |
| size | "sm" | "default" | undefined | default |