diff --git a/packages/extension-form/src/internal/Form.ts b/packages/extension-form/src/internal/Form.ts
index f5ad19d..1b8bed4 100644
--- a/packages/extension-form/src/internal/Form.ts
+++ b/packages/extension-form/src/internal/Form.ts
@@ -1,4 +1,5 @@
import { Schema } from "effect"
+import type * as FormField from "./FormField.js"
export interface Form {
@@ -7,31 +8,12 @@ export interface Form {
export type FormTree> = (
- S extends Schema.Array$ ? ArrayFormField :
- S extends Schema.Struct ? StructFormField :
- GenericFormField
+ S extends Schema.Array$ ? FormField.ArrayFormField :
+ S extends Schema.Struct ? FormField.StructFormField :
+ FormField.GenericFormField
)
-export interface GenericFormField> {
- readonly _tag: "GenericFormField"
- readonly schema: S
- readonly value: S["Type"]
-}
-
-export interface ArrayFormField> {
- readonly _tag: "ArrayFormField"
- readonly schema: S
- readonly elements: readonly FormTree[]
-}
-
-export interface StructFormField> {
- readonly _tag: "StructFormField"
- readonly schema: S
- readonly fields: { [K in keyof S["fields"]]: FormTree }
-}
-
-
const MySchema = Schema.Struct({
name: Schema.String,
symbol: Schema.SymbolFromSelf,
diff --git a/packages/extension-form/src/internal/FormField.ts b/packages/extension-form/src/internal/FormField.ts
new file mode 100644
index 0000000..a07df9d
--- /dev/null
+++ b/packages/extension-form/src/internal/FormField.ts
@@ -0,0 +1,25 @@
+import type { Schema } from "effect"
+import type * as Form from "./Form.ts"
+
+
+export interface FormField {
+
+}
+
+export interface GenericFormField extends FormField {
+ readonly _tag: "GenericFormField"
+ readonly schema: S
+ readonly value: S["Type"]
+}
+
+export interface ArrayFormField> extends FormField {
+ readonly _tag: "ArrayFormField"
+ readonly schema: S
+ readonly elements: readonly Form.FormTree[]
+}
+
+export interface StructFormField> extends FormField {
+ readonly _tag: "StructFormField"
+ readonly schema: S
+ readonly fields: { [K in keyof S["fields"]]: Form.FormTree }
+}