'use client'; import { useDebouncedOnChangeCallback, useFocus } from './hooks'; import { Input } from '@repo/ui/components/ui/input'; import { Label } from '@repo/ui/components/ui/label'; import { type ChangeEvent, useState } from 'react'; type FieldProps = { readonly disabled?: boolean; readonly id: string; readonly label: string; readonly onChange?: (value: string) => void; readonly readOnly?: boolean; readonly value: string; }; export function TextField({ disabled = false, id, label, onChange, readOnly, value: initialValue, }: FieldProps) { const [value, setValue] = useState(initialValue); const { debouncedCallback, isPending } = useDebouncedOnChangeCallback(onChange); const inputRef = useFocus(isPending); const handleChange = (event: ChangeEvent) => { const newValue = event.target.value; setValue(newValue); debouncedCallback(newValue); }; return (
); }