feat(ui): тёмный DateField на react-day-picker вместо нативного input

Нативный <input type="date"> выглядел чужеродно (браузерный светлый календарь).
Новый общий компонент DateField: react-day-picker внутри Radix Popover, тёмная
тема через CSS-переменные .rdp-dark, навигация — наши иконки из барреля,
локализация месяцев/дней по языку кабинета (date-fns). Принимает/отдаёт
'YYYY-MM-DD' — drop-in замена нативного инпута. Подключён в селекторе периода
статистики (свой период). Остальные места — следующими шагами.
This commit is contained in:
c0mrade
2026-06-02 16:10:48 +03:00
parent 9a05f23a04
commit edd2d25024
9 changed files with 205 additions and 8 deletions

View File

@@ -3,6 +3,7 @@ import { useTranslation } from 'react-i18next';
import { SALES_STATS } from '../../constants/salesStats';
import { getMonthToDateRange, isMonthToDate } from '../../utils/period';
import { DateField } from '../DateField';
interface PeriodSelectorProps {
value: { days?: number; startDate?: string; endDate?: string };
@@ -68,18 +69,18 @@ export function PeriodSelector({ value, onChange }: PeriodSelectorProps) {
{showCustom && (
<div className="flex items-center gap-2">
<input
type="date"
<DateField
value={value.startDate || ''}
onChange={(e) => handleDateChange('startDate', e.target.value)}
className="rounded-lg border border-dark-600 bg-dark-800 px-2 py-1 text-sm text-dark-200"
onChange={(v) => handleDateChange('startDate', v)}
max={value.endDate}
placeholder={t('admin.salesStats.period.from')}
/>
<span className="text-dark-500">{'—'}</span>
<input
type="date"
<DateField
value={value.endDate || ''}
onChange={(e) => handleDateChange('endDate', e.target.value)}
className="rounded-lg border border-dark-600 bg-dark-800 px-2 py-1 text-sm text-dark-200"
onChange={(v) => handleDateChange('endDate', v)}
min={value.startDate}
placeholder={t('admin.salesStats.period.to')}
/>
</div>
)}