diff --git a/src/components/admin/RideForm.tsx b/src/components/admin/RideForm.tsx
index 79d728fd..892adce7 100644
--- a/src/components/admin/RideForm.tsx
+++ b/src/components/admin/RideForm.tsx
@@ -9,6 +9,7 @@ import { Textarea } from '@/components/ui/textarea';
import { Label } from '@/components/ui/label';
import { PhotoUpload } from '@/components/upload/PhotoUpload';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
+import { DatePicker } from '@/components/ui/date-picker';
import { toast } from '@/hooks/use-toast';
import { Zap, Save, X } from 'lucide-react';
@@ -279,11 +280,13 @@ export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }:
{/* Dates */}
-
- Opening Date
+ setValue('opening_date', date ? date.toISOString().split('T')[0] : '')}
+ placeholder="Select opening date"
+ disableFuture={true}
+ fromYear={1800}
/>
diff --git a/src/components/reviews/ReviewForm.tsx b/src/components/reviews/ReviewForm.tsx
index 39fa1e90..fa1c09ba 100644
--- a/src/components/reviews/ReviewForm.tsx
+++ b/src/components/reviews/ReviewForm.tsx
@@ -7,6 +7,7 @@ import { Button } from '@/components/ui/button';
import { Textarea } from '@/components/ui/textarea';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
+import { DatePicker } from '@/components/ui/date-picker';
import { Star, Send } from 'lucide-react';
import { useAuth } from '@/hooks/useAuth';
import { supabase } from '@/integrations/supabase/client';
@@ -45,6 +46,7 @@ export function ReviewForm({
handleSubmit,
reset,
setValue,
+ watch,
formState: {
errors
}
@@ -146,8 +148,13 @@ export function ReviewForm({
{/* Visit Date */}
-
-
+
+ setValue('visit_date', date ? date.toISOString().split('T')[0] : '')}
+ placeholder="Select visit date"
+ disableFuture={true}
+ />
{/* Wait Time (for rides) */}
diff --git a/src/components/ui/date-picker.tsx b/src/components/ui/date-picker.tsx
new file mode 100644
index 00000000..f2a267c5
--- /dev/null
+++ b/src/components/ui/date-picker.tsx
@@ -0,0 +1,83 @@
+import * as React from "react";
+import { format } from "date-fns";
+import { CalendarIcon } from "lucide-react";
+
+import { cn } from "@/lib/utils";
+import { Button } from "@/components/ui/button";
+import { Calendar } from "@/components/ui/calendar";
+import {
+ Popover,
+ PopoverContent,
+ PopoverTrigger,
+} from "@/components/ui/popover";
+
+export interface DatePickerProps {
+ date?: Date;
+ onSelect?: (date: Date | undefined) => void;
+ placeholder?: string;
+ disabled?: boolean;
+ className?: string;
+ disableFuture?: boolean;
+ disablePast?: boolean;
+ fromYear?: number;
+ toYear?: number;
+}
+
+export function DatePicker({
+ date,
+ onSelect,
+ placeholder = "Pick a date",
+ disabled = false,
+ className,
+ disableFuture = false,
+ disablePast = false,
+ fromYear,
+ toYear,
+}: DatePickerProps) {
+ const [open, setOpen] = React.useState(false);
+
+ const handleSelect = (selectedDate: Date | undefined) => {
+ onSelect?.(selectedDate);
+ setOpen(false);
+ };
+
+ const getDisabledDates = (date: Date) => {
+ const now = new Date();
+ if (disableFuture && date > now) return true;
+ if (disablePast && date < now) return true;
+ return false;
+ };
+
+ return (
+
+
+
+
+
+
+
+
+ );
+}
\ No newline at end of file