/**
 * 견적번호 필드 모듈
 * 견적번호 자동 생성 및 직접 입력 기능을 제공하는 재사용 가능한 컴포넌트
 */

import { Input } from "../ui/input";
import { Label } from "../ui/label";
import { Button } from "../ui/button";
import { RefreshCw } from "lucide-react";
import { toast } from "sonner@2.0.3";

interface QuoteNumberFieldProps {
  value: string;
  onChange: (value: string) => void;
  onGenerate: () => string;
  label?: string;
  placeholder?: string;
  description?: string;
  required?: boolean;
}

export function QuoteNumberField({
  value,
  onChange,
  onGenerate,
  label = "견적번호",
  placeholder = "자동 생성 또는 직접 입력",
  description = "번호기준관리의 규칙에 따라 자동 생성되거나 직접 입력할 수 있습니다",
  required = false
}: QuoteNumberFieldProps) {
  const handleGenerate = () => {
    const newQuoteNumber = onGenerate();
    onChange(newQuoteNumber);
    toast.success(`견적번호가 생성되었습니다: ${newQuoteNumber}`);
  };

  return (
    <div>
      <Label>
        {label}
        {required && <span className="text-red-500"> *</span>}
      </Label>
      <div className="flex gap-2">
        <Input
          value={value}
          onChange={(e) => onChange(e.target.value)}
          placeholder={placeholder}
          className="flex-1"
        />
        <Button
          type="button"
          variant="outline"
          size="sm"
          onClick={handleGenerate}
          title="번호기준관리 규칙에 따라 자동 생성"
        >
          <RefreshCw className="w-4 h-4" />
        </Button>
      </div>
      {description && (
        <p className="text-xs text-muted-foreground mt-1">
          {description}
        </p>
      )}
    </div>
  );
}
