summaryrefslogtreecommitdiff
path: root/src/pages/ChooseArt.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages/ChooseArt.tsx')
-rw-r--r--src/pages/ChooseArt.tsx45
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>
+ );
+};