diff --git a/src/components/admin/trafficUsage/filters/PeriodSelector.tsx b/src/components/admin/trafficUsage/filters/PeriodSelector.tsx index da00ca9..9d020fe 100644 --- a/src/components/admin/trafficUsage/filters/PeriodSelector.tsx +++ b/src/components/admin/trafficUsage/filters/PeriodSelector.tsx @@ -1,5 +1,6 @@ import { useTranslation } from 'react-i18next'; import { CalendarIcon, XIcon } from '../TrafficIcons'; +import { DateField } from '../../../DateField'; // ────────────────────────────────────────────────────────────────── // PeriodSelector — switches between fixed period tabs (1/3/7/14/30 @@ -44,22 +45,18 @@ export function PeriodSelector({
{t('admin.trafficUsage.dateFrom')} - onCustomStartChange(e.target.value)} - className="rounded-lg border border-dark-700 bg-dark-800 px-2 py-1 text-xs text-dark-200 focus:border-dark-600 focus:outline-none" + onChange={onCustomStartChange} /> {t('admin.trafficUsage.dateTo')} - onCustomEndChange(e.target.value)} - className="rounded-lg border border-dark-700 bg-dark-800 px-2 py-1 text-xs text-dark-200 focus:border-dark-600 focus:outline-none" + onChange={onCustomEndChange} />
@@ -721,12 +721,11 @@ export default function AdminAuditLog() { > {t('admin.auditLog.filters.dateTo')} - setFilters((prev) => ({ ...prev, dateTo: e.target.value }))} - className="w-full rounded-lg border border-dark-600 bg-dark-900 px-3 py-2 text-sm text-dark-100 outline-none transition-colors focus:border-accent-500" + min={filters.dateFrom} + onChange={(v) => setFilters((prev) => ({ ...prev, dateTo: v }))} + className="flex w-full items-center gap-2 rounded-lg border border-dark-600 bg-dark-900 px-3 py-2 text-sm text-dark-100 transition-colors hover:border-accent-500" /> diff --git a/src/pages/AdminPayments.tsx b/src/pages/AdminPayments.tsx index 76daaab..e35f6c2 100644 --- a/src/pages/AdminPayments.tsx +++ b/src/pages/AdminPayments.tsx @@ -3,6 +3,7 @@ import { useNavigate } from 'react-router'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; import { adminPaymentsApi, type SearchStats } from '../api/adminPayments'; +import { DateField } from '../components/DateField'; import { useCurrency } from '../hooks/useCurrency'; import type { PendingPayment, PaginatedResponse } from '../types'; import { usePlatform } from '../platform/hooks/usePlatform'; @@ -327,20 +328,20 @@ export default function AdminPayments() { - setDateFrom(e.target.value)} - className="w-full rounded-lg border border-dark-700 bg-dark-800 px-3 py-2 text-sm text-dark-100 focus:border-accent-500 focus:outline-none" + max={dateTo} + onChange={setDateFrom} + className="flex w-full items-center gap-2 rounded-lg border border-dark-700 bg-dark-800 px-3 py-2 text-sm text-dark-100 transition-colors hover:border-accent-500" />
- setDateTo(e.target.value)} - className="w-full rounded-lg border border-dark-700 bg-dark-800 px-3 py-2 text-sm text-dark-100 focus:border-accent-500 focus:outline-none" + min={dateFrom} + onChange={setDateTo} + className="flex w-full items-center gap-2 rounded-lg border border-dark-700 bg-dark-800 px-3 py-2 text-sm text-dark-100 transition-colors hover:border-accent-500" />