"use client"; import { RotateCcw } from "lucide-react"; import { useEffect, useId, useMemo, useState } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { formatHexColor, normalizeOptionalHexColor, TEXT_EDIT_COLOR_SWATCHES, } from "@/lib/canvas/text-edit-colors"; import { cn } from "@/lib/utils"; interface TextEditColorFieldProps { value?: string; onChange: (value?: string) => void; className?: string; } const COLOR_RING_BACKGROUND = "conic-gradient(from 180deg, #ef4444, #f59e0b, #84cc16, #22c55e, #14b8a6, #3b82f6, #8b5cf6, #ec4899, #ef4444)"; export function TextEditColorField({ value, onChange, className, }: TextEditColorFieldProps) { const inputId = useId(); const normalizedValue = useMemo( () => normalizeOptionalHexColor(value), [value] ); const [draftHex, setDraftHex] = useState(() => formatHexColor(value)); useEffect(() => { setDraftHex(formatHexColor(value)); }, [value]); const handleHexCommit = () => { const normalized = normalizeOptionalHexColor(draftHex); if (!draftHex.trim()) { onChange(undefined); setDraftHex(""); return; } if (normalized) { onChange(normalized); setDraftHex(normalized.toUpperCase()); return; } setDraftHex(formatHexColor(normalizedValue)); }; return (
不选则保持原图文字颜色;选了色号后,后端会明确要求只改这段文字的颜色。