e.preventDefault()}>
+ {options.length > 0 ? (
+ options.map((option, index) => (
+
{
+ if (itemRefs?.current) {
+ itemRefs.current[index] = el;
+ }
+ }}
+ className={
+ index > 0 ? 'border-t border-base-ink-soft [border-top-width:var(--border-width-sm)]' : ''
+ }
+ >
+ onSelect?.(option)}
+ />
+
+ ))
+ ) : (
+
{noResultsText}
+ )}
+
+ );
+}
diff --git a/frontend/src/components/TextInput/TextInput.tsx b/frontend/src/components/TextInput/TextInput.tsx
new file mode 100644
index 0000000..2066769
--- /dev/null
+++ b/frontend/src/components/TextInput/TextInput.tsx
@@ -0,0 +1,113 @@
+import type { InputHTMLAttributes, ReactNode, CSSProperties } from 'react';
+// isValidElement: checks if something is a React element (e.g.,