Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/www/src/components/demo/demo.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ import { DemoProps } from './types';
export default function Demo(props: DemoProps) {
const {
data,
// `...Apsara` carries the 31 icons Apsara publishes, so none of those needs
// `...Apsara` carries the 32 icons Apsara publishes, so none of those needs
// its own entry — and nothing below may repeat one of their keys, because a
// later key shadows the spread. A demo that needs any other glyph names a
// lucide component from the block above and sizes it at the call site,
Expand Down
232 changes: 232 additions & 0 deletions apps/www/src/content/docs/components/calendar-preview/demo.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,232 @@
'use client';

export const preview = {
type: 'code',
tabs: [
{
name: 'Inline',
code: `<CalendarPreview defaultMonth={new Date(2024, 3, 1)}>
<CalendarPreview.Days />
</CalendarPreview>`
},
{
name: 'Two months',
code: `<CalendarPreview defaultMonth={new Date(2024, 3, 1)}>
<CalendarPreview.Days numberOfMonths={2} />
</CalendarPreview>`
},
{
name: 'Month + year',
code: `<CalendarPreview defaultMonth={new Date(2024, 3, 1)}>
<CalendarPreview.Days>
<CalendarPreview.Header>
<CalendarPreview.Caption dropdown />
<CalendarPreview.PrevMonth />
<CalendarPreview.NextMonth />
</CalendarPreview.Header>
<CalendarPreview.Grid />
</CalendarPreview.Days>
</CalendarPreview>`
}
]
};

export const compositionDemo = {
type: 'code',
tabs: [
{
name: 'Default header',
code: `<CalendarPreview defaultMonth={new Date(2024, 3, 1)}>
<CalendarPreview.Days />
</CalendarPreview>`
},
{
name: 'Custom caption',
code: `<CalendarPreview defaultMonth={new Date(2024, 6, 1)}>
<CalendarPreview.Days>
<CalendarPreview.Header>
<CalendarPreview.Caption>Q3 2024</CalendarPreview.Caption>
<CalendarPreview.PrevMonth />
<CalendarPreview.NextMonth />
</CalendarPreview.Header>
<CalendarPreview.Grid />
</CalendarPreview.Days>
</CalendarPreview>`
},
{
name: 'With footer',
code: `<CalendarPreview defaultMonth={new Date(2024, 3, 1)}>
<CalendarPreview.Days />
<CalendarPreview.Footer>Dates are inclusive</CalendarPreview.Footer>
</CalendarPreview>`
},
{
name: 'Node footer',
code: `<CalendarPreview defaultMonth={new Date(2024, 3, 1)}>
<CalendarPreview.Days />
<CalendarPreview.Footer>
<Flex align="center" gap={3}>
<Badge variant="accent">Beta</Badge>
<Text size="small" variant="secondary">Times are UTC</Text>
</Flex>
</CalendarPreview.Footer>
</CalendarPreview>`
}
]
};

export const resetDemo = {
type: 'code',
tabs: [
{
name: 'Reset',
code: `<CalendarPreview
defaultMonth={new Date(2024, 3, 1)}
defaultDate={new Date(2024, 3, 17)}
defaultValue={new Date(2024, 3, 24)}
>
<CalendarPreview.Days />
</CalendarPreview>`
},
{
name: 'Nothing to restore',
code: `<CalendarPreview
defaultMonth={new Date(2024, 3, 1)}
defaultDate={new Date(2024, 3, 17)}
defaultValue={new Date(2024, 3, 17)}
>
<CalendarPreview.Days />
</CalendarPreview>`
},
{
name: 'No defaultDate',
code: `<CalendarPreview
defaultMonth={new Date(2024, 3, 1)}
defaultValue={new Date(2024, 3, 24)}
>
<CalendarPreview.Days />
</CalendarPreview>`
}
]
};

export const boundsDemo = {
type: 'code',
tabs: [
{
name: 'Min date',
code: `<CalendarPreview
defaultMonth={new Date(2024, 3, 1)}
minDate={new Date(2024, 3, 17)}
>
<CalendarPreview.Days />
</CalendarPreview>`
},
{
name: 'Min and max',
code: `<CalendarPreview
defaultMonth={new Date(2024, 3, 1)}
minDate={new Date(2024, 3, 10)}
maxDate={new Date(2024, 3, 20)}
>
<CalendarPreview.Days />
</CalendarPreview>`
},
{
name: 'Unavailable days',
code: `<CalendarPreview
defaultMonth={new Date(2024, 3, 1)}
isDateUnavailable={date => date.getDay() === 0 || date.getDay() === 6}
>
<CalendarPreview.Days />
</CalendarPreview>`
},
{
name: 'Read only',
code: `<CalendarPreview
defaultMonth={new Date(2024, 3, 1)}
defaultValue={new Date(2024, 3, 17)}
readOnly
>
<CalendarPreview.Days />
</CalendarPreview>`
}
]
};

export const gridDemo = {
type: 'code',
tabs: [
{
name: 'Outside days',
code: `<CalendarPreview defaultMonth={new Date(2024, 3, 1)}>
<CalendarPreview.Days>
<CalendarPreview.Header />
<CalendarPreview.Grid showOutsideDays />
</CalendarPreview.Days>
</CalendarPreview>`
},
{
name: 'Week numbers',
code: `<CalendarPreview defaultMonth={new Date(2024, 3, 1)}>
<CalendarPreview.Days>
<CalendarPreview.Header />
<CalendarPreview.Grid showWeekNumber fixedWeeks />
</CalendarPreview.Days>
</CalendarPreview>`
},
{
name: 'Monday first',
code: `<CalendarPreview defaultMonth={new Date(2024, 3, 1)}>
<CalendarPreview.Days>
<CalendarPreview.Header />
<CalendarPreview.Grid weekStartsOn={1} />
</CalendarPreview.Days>
</CalendarPreview>`
},
{
name: 'Loading',
code: `<CalendarPreview defaultMonth={new Date(2024, 3, 1)}>
<CalendarPreview.Days>
<CalendarPreview.Header />
<CalendarPreview.Grid loading />
</CalendarPreview.Days>
</CalendarPreview>`
}
]
};

export const dateInfoDemo = {
type: 'code',
tabs: [
{
name: 'Date info',
code: `<CalendarPreview defaultMonth={new Date(2024, 3, 1)}>
<CalendarPreview.Days>
<CalendarPreview.Header />
<CalendarPreview.Grid
dateInfo={date =>
date.getDate() % 7 === 0 ? (
<Text size="micro" variant="accent">$</Text>
) : null
}
/>
</CalendarPreview.Days>
</CalendarPreview>`
},
{
name: 'Tooltips',
code: `<CalendarPreview defaultMonth={new Date(2024, 3, 1)}>
<CalendarPreview.Days>
<CalendarPreview.Header />
<CalendarPreview.Grid
showTooltip
tooltipMessages={date =>
date.getDay() === 0 ? 'Weekend rate applies' : null
}
/>
</CalendarPreview.Days>
</CalendarPreview>`
}
]
};
Loading
Loading