From 052cc1a5a4668d7cb17fb273a022aa5b820d1faa Mon Sep 17 00:00:00 2001
From: Sam Nystrom <sam@samnystrom.dev>
Date: Wed, 13 Mar 2024 05:03:22 +0000
Subject: refactor: move styles into separate components

---
 src/components/TextInput.tsx | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
 create mode 100644 src/components/TextInput.tsx

(limited to 'src/components/TextInput.tsx')

diff --git a/src/components/TextInput.tsx b/src/components/TextInput.tsx
new file mode 100644
index 0000000..026b062
--- /dev/null
+++ b/src/components/TextInput.tsx
@@ -0,0 +1,26 @@
+import { useCallback } from 'preact/hooks';
+import type { Signal } from '@preact/signals';
+import './TextInput.css';
+
+export interface TextInputProps {
+	signal?: Signal<string>;
+	props: Record<string, any>;
+}
+
+const TextInput = ({ signal, ...props }: TextInputProps) => {
+	const onInputSignal = useCallback((event: InputEvent) => {
+		signal.value = event.target.value;
+	}, [signal]);
+
+	return (
+		<input
+			type="text"
+			{...props}
+			class={(props.class || '') + ' __TextInput'}
+			value={signal || props.value}
+			onInput={signal ? onInputSignal : props.onInput}
+		/>
+	);
+};
+
+export default TextInput;
\ No newline at end of file
-- 
cgit v1.2.3

