Search History tab

This commit is contained in:
Sean Edmunds
2025-11-06 15:56:43 -06:00
parent ed804a0182
commit 1103a7401d
11 changed files with 947 additions and 860 deletions

View File

@@ -0,0 +1,57 @@
import { ActionIcon, TextInput } from '@mantine/core';
import { useEffect, useState } from 'react';
import { FiX } from 'react-icons/fi';
export function DebouncedInput({
value: initialValue,
onChange,
debounce = 500,
...props
}: {
value: string | number;
onChange: (value: string | number) => void;
debounce?: number;
} & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange'>) {
const [value, setValue] = useState(initialValue);
useEffect(() => {
setValue(initialValue);
}, [initialValue]);
useEffect(() => {
const timeout = setTimeout(() => {
onChange(value);
}, debounce);
return () => clearTimeout(timeout);
}, [value, debounce, onChange]);
return (
<TextInput
{...props}
value={value}
size='sm'
p={0}
onClick={(e) => e.stopPropagation()}
onChange={(e) => setValue(e.target.value)}
styles={{
input: {
borderRadius: 0,
border: 'none',
color: 'var(--mantine-color-primary-0)',
},
}}
rightSection={
value && (
<ActionIcon
onClick={() => {
setValue('');
}}
>
<FiX />
</ActionIcon>
)
}
/>
);
}