export type CreateFieldValidationArgs = { validate: (v: string) => string | void | undefined; }; export function createFieldValidation(args: CreateFieldValidationArgs) { let valid = $state(true); let msg = $state(); const onblur = (e: Event & { currentTarget: HTMLInputElement }) => { const v = e.currentTarget?.value; const m = args.validate(v); valid = !m; msg = m ?? undefined; }; const oninput = (e: Event & { currentTarget: HTMLInputElement }) => { if (valid) return; const v = e.currentTarget.value; const m = args.validate(v); msg = m ? m : undefined; }; return { get valid() { return valid; }, get msg() { return msg; }, attrs: { onblur, oninput, }, }; }