diff options
Diffstat (limited to 'src/pages/ChooseArt.tsx')
| -rw-r--r-- | src/pages/ChooseArt.tsx | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/pages/ChooseArt.tsx b/src/pages/ChooseArt.tsx new file mode 100644 index 0000000..fab6d79 --- /dev/null +++ b/src/pages/ChooseArt.tsx @@ -0,0 +1,45 @@ +import type React from 'react'; +import { useEffect, useRef, useState } from 'react'; + +export interface ChooseArtProps { + artSubmissionCallback: (art: string) => void; +} + +export const ChooseArt: React.FC<ChooseArtProps> = ({ + artSubmissionCallback, +}) => { + const [art, setArt] = useState(''); + const promptRef = useRef<HTMLTextAreaElement>(null); + + useEffect(() => { + if (!promptRef.current) { + return; + } + // Automatically focus the textarea when the component mounts + promptRef.current.focus(); + }, [promptRef]); + + const handleSubmit = () => { + if (!art.trim()) { + return; + } + artSubmissionCallback(art); + }; + + return ( + <div> + <textarea + ref={promptRef} + value={art} + onChange={(e) => setArt(e.target.value)} + placeholder='paste your ascii art here...' + rows={15} + cols={80} + /> + <div className={"maybe-visible " + (art.trim() ? "visible" : "invisible")}> + <hr /> + <button onClick={handleSubmit}>color!</button> + </div> + </div> + ); +}; |
