import { Callout, Flex, Spinner, TextField } from "@radix-ui/themes" import { Array, Option, Struct } from "effect" import { Component, Form, Subscribable } from "effect-fc" export declare namespace TextFieldFormInputView { export interface Props extends Omit, Form.useInput.Options { readonly form: Form.Form } } export class TextFieldFormInputView extends Component.make("TextFieldFormInputView")(function*( props: TextFieldFormInputView.Props ) { const input = yield* Form.useInput(props.form, props) const [issues, isValidating, isSubmitting] = yield* Subscribable.useSubscribables([ props.form.issues, props.form.isValidating, props.form.isSubmitting, ]) return ( input.setValue(e.target.value)} disabled={isSubmitting} {...Struct.omit(props, "form")} > {isValidating && } {props.children} {Option.match(Array.head(issues), { onSome: issue => ( {issue.message} ), onNone: () => <>, })} ) }) {}