"use client"; import * as React from "react"; import { TimePickerInput } from "./time-picker-input"; import { TimePeriodSelect } from "./time-period-select"; import { type Period } from "./time-picker-utils"; import { getTimezoneDetails, getShortLocalTimezone } from "@/src/utils/dates"; import { TimeIcon } from "@/src/components/ui/time-icon"; import { cn } from "@/src/utils/tailwind"; import { Tooltip, TooltipContent, TooltipTrigger, } from "@/src/components/ui/tooltip"; interface TimePickerProps { date: Date | undefined; setDate: (date: Date | undefined) => void; className?: string; } export function TimePicker({ date, setDate, className }: TimePickerProps) { const getInitialPeriod = (date: Date | undefined): Period => { if (!date) return "AM"; return date.getHours() >= 12 ? "PM" : "AM"; }; const [period, setPeriod] = React.useState(getInitialPeriod(date)); const minuteRef = React.useRef(null); const hourRef = React.useRef(null); const secondRef = React.useRef(null); const periodRef = React.useRef(null); // Sync period state when date prop changes externally (e.g., preset selection) React.useEffect(() => { setPeriod(getInitialPeriod(date)); }, [date]); const shortTimezone = React.useMemo(() => getShortLocalTimezone(), []); const timezoneDetails = React.useMemo(() => getTimezoneDetails(), []); return (
minuteRef.current?.focus()} />
{":"}
hourRef.current?.focus()} onRightFocus={() => secondRef.current?.focus()} />
{":"}
minuteRef.current?.focus()} onRightFocus={() => periodRef.current?.focus()} />
secondRef.current?.focus()} />
{shortTimezone} {timezoneDetails}
); }