<script lang="ts">
	import { page } from '$app/state';
	import { debounce } from '$lib/Actions';
	import { accelerator } from '$lib/Shortcuts';

	interface Props {
		name: string;
		field: string;
		filter: { apply: (params: URLSearchParams) => void };
	}

	let { name, field = $bindable(), filter }: Props = $props();
</script>

<input
	type="text"
	size={25}
	class="btn-slate w-min"
	placeholder="Search {name}..."
	bind:value={field}
	use:debounce={{ callback: () => filter.apply(page.url.searchParams) }}
	use:accelerator={'q'}
/>