"use client"; import { Plus, X } from "lucide-react"; import { useMemo, useState } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { REMINDER_PRESETS, customOffsetToMinutes, formatReminderOffset, normalizeReminderOffsets, type ReminderOffsetUnit, } from "@/lib/reminder-offsets"; type Props = { offsets: number[]; onChange: (offsets: number[]) => void; disabled?: boolean; }; export function ReminderPicker({ offsets, onChange, disabled }: Props) { const [customValue, setCustomValue] = useState("1"); const [customUnit, setCustomUnit] = useState("hours"); const normalized = useMemo(() => normalizeReminderOffsets(offsets), [offsets]); function addOffset(minutes: number) { onChange(normalizeReminderOffsets([...normalized, minutes])); } function removeOffset(minutes: number) { onChange(normalized.filter((o) => o !== minutes)); } function addCustom() { const parsed = Number.parseInt(customValue, 10); if (!Number.isFinite(parsed) || parsed < 0) return; addOffset(customOffsetToMinutes(parsed, customUnit)); } const availablePresets = REMINDER_PRESETS.filter((p) => !normalized.includes(p.offsetMinutes)); return (
{normalized.length === 0 ? (

No reminders set.

) : ( )} {availablePresets.length > 0 && (
{availablePresets.map((preset) => ( ))}
)}
setCustomValue(e.target.value)} />
); }