// // Copyright 2026 DXOS.org // import { type Meta, type StoryObj } from '@storybook/react-vite'; import { format } from 'date-fns'; import React, { useState } from 'react'; import { withTheme } from '../../testing'; import { translations } from '../../translations'; import { type DateRange } from '../Calendar'; import { Input } from '../Input'; import { DatePicker } from './DatePicker'; const toTime = (date: Date | undefined) => (date ? format(date, 'HH:mm') : ''); const applyTime = (date: Date | undefined, time: string): Date => { const [hours, minutes] = time.split(':').map((part) => parseInt(part, 10)); const out = date ? new Date(date) : new Date(); out.setHours(Number.isFinite(hours) ? hours : 0, Number.isFinite(minutes) ? minutes : 0, 0, 0); return out; }; const meta: Meta = { title: 'ui/react-ui-core/components/DatePicker', decorators: [withTheme()], parameters: { layout: 'centered', translations }, }; export default meta; type Story = StoryObj; export const Single: Story = { render: () => { const [value, setValue] = useState(); return ( ); }, }; export const Range: Story = { render: () => { const [value, setValue] = useState(); return ( ); }, }; export const SingleWithTime: Story = { render: () => { const [value, setValue] = useState(); return ( setValue(applyTime(value, next))} /> ); }, }; export const RangeWithTime: Story = { render: () => { const [value, setValue] = useState(); return ( setValue(value ? { ...value, from: applyTime(value.from, next) } : undefined)} /> setValue(value?.from ? { ...value, to: applyTime(value.to, next) } : undefined)} /> ); }, };