import { useState } from "react";
import {
  DropdownMenu,
  DropdownMenuContent,
  DropdownMenuGroup,
  DropdownMenuRadioGroup,
  DropdownMenuRadioItem,
  DropdownMenuLabel,
  DropdownMenuSeparator,
  DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";

export const RoomsAndBathroomsFilter = () => {
  const [rooms, setRooms] = useState("");
  const [bathrooms, setBathrooms] = useState("");

  const displayValue = () => {
    if (rooms && bathrooms) {
      return `${rooms} غ / ${bathrooms} ح`;
    }
    if (rooms) {
      return `${rooms} غرف`;
    }
    if (bathrooms) {
      return `${bathrooms} حمامات`;
    }
    return "غرف / حمامات";
  };

  return (
    <DropdownMenu dir="rtl">
      <DropdownMenuTrigger className="w-full md:w-auto md:min-w-[140px] appearance-none rounded-full border border-slate-300 bg-slate-50 py-3.5 px-4 text-right leading-tight text-slate-400 data-[placeholder]:text-slate-400 focus:outline-none text-base flex items-center justify-between gap-2 group">
        <span>{displayValue()}</span>
        <svg
          xmlns="http://www.w3.org/2000/svg"
          width="20"
          height="20"
          viewBox="0 0 24 24"
          fill="none"
          stroke="currentColor"
          strokeWidth="2"
          strokeLinecap="round"
          strokeLinejoin="round"
          aria-hidden="true"
          className="text-slate-400 transition-transform duration-200 group-data-[state=open]:rotate-180"
        >
          <polyline points="6 9 12 15 18 9"></polyline>
        </svg>
      </DropdownMenuTrigger>
      <DropdownMenuContent>
        <DropdownMenuGroup>
          <DropdownMenuLabel>غرف</DropdownMenuLabel>
          <DropdownMenuRadioGroup value={rooms} onValueChange={setRooms}>
            <DropdownMenuRadioItem value="1">1</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="2">2</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="3">3</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="4">4</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="5">5+</DropdownMenuRadioItem>
          </DropdownMenuRadioGroup>
        </DropdownMenuGroup>
        <DropdownMenuSeparator />
        <DropdownMenuGroup>
          <DropdownMenuLabel>حمامات</DropdownMenuLabel>
          <DropdownMenuRadioGroup value={bathrooms} onValueChange={setBathrooms}>
            <DropdownMenuRadioItem value="1">1</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="2">2</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="3">3</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="4">4</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="5">5+</DropdownMenuRadioItem>
          </DropdownMenuRadioGroup>
        </DropdownMenuGroup>
      </DropdownMenuContent>
    </DropdownMenu>
  );
};

export const PriceRangeFilter = () => {
  const [minPrice, setMinPrice] = useState("");
  const [maxPrice, setMaxPrice] = useState("");

  const displayValue = () => {
    const fmt = (v: string) => Number(v).toLocaleString();
    if (minPrice && maxPrice) return `من ${fmt(minPrice)} إلى ${fmt(maxPrice)}`;
    if (minPrice) return `من ${fmt(minPrice)}`;
    if (maxPrice) return `إلى ${fmt(maxPrice)}`;
    return "السعر";
  };

  return (
    <DropdownMenu dir="rtl">
      <DropdownMenuTrigger className="w-full md:w-auto md:min-w-[140px] appearance-none rounded-full border border-slate-300 bg-slate-50 py-3.5 px-4 text-right leading-tight text-slate-400 data-[placeholder]:text-slate-400 focus:outline-none text-base flex items-center justify-between gap-2 group">
        <span>{displayValue()}</span>
        <svg
          xmlns="http://www.w3.org/2000/svg"
          width="20"
          height="20"
          viewBox="0 0 24 24"
          fill="none"
          stroke="currentColor"
          strokeWidth="2"
          strokeLinecap="round"
          strokeLinejoin="round"
          aria-hidden="true"
          className="text-slate-400 transition-transform duration-200 group-data-[state=open]:rotate-180"
        >
          <polyline points="6 9 12 15 18 9"></polyline>
        </svg>
      </DropdownMenuTrigger>
      <DropdownMenuContent>
        <DropdownMenuGroup>
          <DropdownMenuLabel>السعر الأدنى</DropdownMenuLabel>
          <DropdownMenuRadioGroup value={minPrice} onValueChange={setMinPrice}>
            <DropdownMenuRadioItem value="100000">100,000</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="200000">200,000</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="300000">300,000</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="400000">400,000</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="500000">500,000</DropdownMenuRadioItem>
          </DropdownMenuRadioGroup>
        </DropdownMenuGroup>
        <DropdownMenuSeparator />
        <DropdownMenuGroup>
          <DropdownMenuLabel>السعر الأقصى</DropdownMenuLabel>
          <DropdownMenuRadioGroup value={maxPrice} onValueChange={setMaxPrice}>
            <DropdownMenuRadioItem value="100000">100,000</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="200000">200,000</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="300000">300,000</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="400000">400,000</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="500000+">500,000+</DropdownMenuRadioItem>
          </DropdownMenuRadioGroup>
        </DropdownMenuGroup>
      </DropdownMenuContent>
    </DropdownMenu>
  );
};

export const AreaRangeFilter = () => {
  const [minArea, setMinArea] = useState("");
  const [maxArea, setMaxArea] = useState("");

  const displayValue = () => {
    if (minArea && maxArea) {
      return `من ${minArea} إلى ${maxArea} م²`;
    }
    if (minArea) {
      return `من ${minArea} م²`;
    }
    if (maxArea) {
      return `إلى ${maxArea} م²`;
    }
    return "المساحة";
  };

  return (
    <DropdownMenu dir="rtl">
      <DropdownMenuTrigger className="w-full md:w-auto md:min-w-[120px] appearance-none rounded-full border border-slate-300 bg-slate-50 py-3.5 px-4 text-right leading-tight text-slate-400 data-[placeholder]:text-slate-400 focus:outline-none text-base flex items-center justify-between gap-2 group">
        <span>{displayValue()}</span>
        <svg
          xmlns="http://www.w3.org/2000/svg"
          width="20"
          height="20"
          viewBox="0 0 24 24"
          fill="none"
          stroke="currentColor"
          strokeWidth="2"
          strokeLinecap="round"
          strokeLinejoin="round"
          aria-hidden="true"
          className="text-slate-400 transition-transform duration-200 group-data-[state=open]:rotate-180"
        >
          <polyline points="6 9 12 15 18 9"></polyline>
        </svg>
      </DropdownMenuTrigger>
      <DropdownMenuContent>
        <DropdownMenuGroup>
          <DropdownMenuLabel>المساحة الدنيا</DropdownMenuLabel>
          <DropdownMenuRadioGroup value={minArea} onValueChange={setMinArea}>
            <DropdownMenuRadioItem value="100">100</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="200">200</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="300">300</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="400">400</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="500">500</DropdownMenuRadioItem>
          </DropdownMenuRadioGroup>
        </DropdownMenuGroup>
        <DropdownMenuSeparator />
        <DropdownMenuGroup>
          <DropdownMenuLabel>المساحة القصوى</DropdownMenuLabel>
          <DropdownMenuRadioGroup value={maxArea} onValueChange={setMaxArea}>
            <DropdownMenuRadioItem value="100">100</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="200">200</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="300">300</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="400">400</DropdownMenuRadioItem>
            <DropdownMenuRadioItem value="500+">500+</DropdownMenuRadioItem>
          </DropdownMenuRadioGroup>
        </DropdownMenuGroup>
      </DropdownMenuContent>
    </DropdownMenu>
  );
};
