"use client" import { useState, useEffect } from "react" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group" import { solar2lunar, parseDate } from "@/lib/lunar-calendar" import { Calendar } from "lucide-react" interface DateInputWithLunarProps { label: string value?: string isLunar?: boolean onChange: (value: string) => void onLunarChange?: (isLunar: boolean) => void id?: string showLunarToggle?: boolean // 是否显示公历/农历切换 } export function DateInputWithLunar({ label, value, isLunar = false, onChange, onLunarChange, id, showLunarToggle = true, }: DateInputWithLunarProps) { const [lunarInfo, setLunarInfo] = useState("") // 当日期改变时,更新农历信息 useEffect(() => { if (!value) { setLunarInfo("") return } const date = parseDate(value) if (!date) { setLunarInfo("") return } try { const lunar = solar2lunar(date) if (lunar) { setLunarInfo(lunar.toString()) } else { const year = date.getFullYear() setLunarInfo(`⚠️ 农历转换仅支持1900-2100年 (当前: ${year}年)`) } } catch (error) { console.error("日期转换错误:", error) setLunarInfo("") } }, [value]) return (
{/* 公历日期输入 */}
onChange(e.target.value)} className="pr-10" />
{/* 农历对照显示 */} {lunarInfo && (
农历对照
{lunarInfo}
)} {/* 纪念日类型选择 */} {showLunarToggle && value && lunarInfo && !lunarInfo.includes('⚠️') && onLunarChange && (
onLunarChange(val === "lunar")} className="flex flex-row gap-6" >

{isLunar ? "💡 将按农历日期计算每年的纪念日,如生日、祭日等" : "💡 将按公历日期计算每年的纪念日"}

)}
) }