import { Button } from "$components/Button"; import type { PatternCategory } from "$types"; import { ChangeEventHandler, useCallback, useState } from "react"; export type AddPatternFn = (pattern: { text: string; category: PatternCategory; replacement?: string }) => void; export const AddPatternForm = ({ onAddPattern }: { onAddPattern: AddPatternFn }) => { const [patternValue, setPatternValue] = useState(""); const [categoryValue, setCategoryValue] = useState("filler"); const [replacementValue, setReplacementValue] = useState(""); const handlePatternChange: ChangeEventHandler = useCallback( (e) => setPatternValue(e.target.value), [setPatternValue], ); const handleReplacementChange: ChangeEventHandler = useCallback( (e) => setReplacementValue(e.target.value), [setReplacementValue], ); const handleCategoryChange: ChangeEventHandler = useCallback( (e) => setCategoryValue(e.target.value as PatternCategory), [setCategoryValue], ); const handleAddPattern = useCallback(() => { const text = patternValue.trim().toLowerCase(); if (!text) { return; } onAddPattern({ text, category: categoryValue, replacement: replacementValue.trim() || undefined }); setPatternValue(""); setReplacementValue(""); }, [patternValue, categoryValue, replacementValue, onAddPattern]); return (
); };