diff --git a/src/components/ui/TextInput.tsx b/src/components/ui/TextInput.tsx
new file mode 100644
index 0000000..0f7dd12
--- /dev/null
+++ b/src/components/ui/TextInput.tsx
@@ -0,0 +1,26 @@
+interface Props {
+ label: string; optional?: boolean;
+ value: string; onChange: (v: string) => void;
+ placeholder?: string; type?: string;
+}
+
+export function TextInput({ label, optional, value, onChange, placeholder, type = 'text' }: Props) {
+ return (
+
+
+ onChange(e.target.value)} placeholder={placeholder}
+ className="h-12 px-4 rounded-[11px] text-[14px] outline-none transition-all"
+ style={{
+ background: 'var(--bg-input)', border: '1px solid var(--border-sub)',
+ color: 'var(--text-primary)',
+ }}
+ onFocus={e => { e.currentTarget.style.borderColor = '#7C6FE0'; e.currentTarget.style.boxShadow = '0 0 0 3px rgba(124,111,224,0.12)'; }}
+ onBlur={e => { e.currentTarget.style.borderColor = 'var(--border-sub)'; e.currentTarget.style.boxShadow = 'none'; }}
+ />
+
+ );
+}