diff --git a/packages/example/src/lib/TextFieldInput.tsx b/packages/example/src/lib/TextFieldInput.tsx index c61265a..52bd0fd 100644 --- a/packages/example/src/lib/TextFieldInput.tsx +++ b/packages/example/src/lib/TextFieldInput.tsx @@ -1,8 +1,7 @@ -import { Callout, Flex, TextField } from "@radix-ui/themes" -import { Option, ParseResult, Schema, Struct, SubscriptionRef } from "effect" +import { Callout, Flex, Switch, TextField } from "@radix-ui/themes" +import { Option, ParseResult, Schema, Struct } from "effect" import { Component } from "effect-fc" import { useInput, useOptionalInput } from "effect-fc/hooks" -import { SubscriptionSubRef } from "effect-fc/types" import * as React from "react" @@ -18,19 +17,21 @@ export const TextFieldInput: { readonly optional?: false readonly schema: Schema.Schema }): Component.Component, React.JSX.Element, ParseResult.ParseError, R> -} = (options: - { - readonly optional: true - } -): Component.Component< - TextFieldOptionalInputProps | TextFieldInputProps, - React.JSX.Element, - ParseResult.ParseError, - R -> => Component.makeUntraced(function* TextFieldInput(props) { +} = (options: { + readonly optional?: boolean + readonly schema: Schema.Schema +}) => Component.makeUntraced(function* TextFieldInput(props: TextFieldOptionalInputProps | TextFieldInputProps) { const input = options.optional - ? yield* useOptionalInput({ schema, ...props }) - : yield* useInput({ schema, ...props }) + // eslint-disable-next-line react-hooks/rules-of-hooks + ? yield* useOptionalInput({ + schema: options.schema, + ...props as TextFieldOptionalInputProps, + }) + // eslint-disable-next-line react-hooks/rules-of-hooks + : yield* useInput({ + schema: options.schema, + ...props as TextFieldInputProps, + }) const issues = React.useMemo(() => Option.map( input.error, @@ -47,11 +48,18 @@ export const TextFieldInput: { } - + + {options.optional && + + } + + + ) })