import { Callout, Flex, TextField } from "@radix-ui/themes" import { Option, ParseResult, Schema } from "effect" import { Component } from "effect-fc" import { useInput } from "effect-fc/hooks" import * as React from "react" export interface TextFieldInputProps extends Omit, "schema"> { readonly textFieldRootProps: Omit readonly children?: React.ReactNode } export const TextFieldInput = ( schema: Schema.Schema ): Component.Component< TextFieldInputProps, React.JSX.Element, ParseResult.ParseError, R > => Component.makeUntraced(function* TextFieldInput(props) { const input = yield* useInput({ schema, ...props }) const issues = React.useMemo(() => Option.map( input.error, ParseResult.ArrayFormatter.formatErrorSync, ), [input.error]) return ( {Option.isSome(issues) &&
    {issues.value.map(issue =>
  • {issue.message}
  • )}
} {props.children}
) })