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