Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .changeset/ui-field-layout.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"@buildnbuzz/form-core": patch
---

Add support for the new UI field layout type and unregistered custom field types.

- Add `UiField` layout field type for rendering inline dynamic HTML or React markup.
- Allow defining custom, unregistered field types inside `defineSchema` with automatic typings.
- Downgrade the unrecognized field type check from an error to a warning in the schema validator.
- Add `defineField` and `defineFields` helper functions for programmatic field generation.
10 changes: 10 additions & 0 deletions .changeset/ui-field-react.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"@buildnbuzz/form-react": patch
---

Add support for rendering UI layout fields and exporting new layout types.

- Export `UiField`, `FormSchemaInput`, `FieldInput`, and `CustomFieldInput` from `packages/form-react`.
- Include `"ui"` layout type in nested error count collections.
- Export `defineField`, `defineFields` for programmatic field generation.

2 changes: 1 addition & 1 deletion apps/web/.source/browser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@ const create = browser<typeof Config, import("fumadocs-mdx/runtime/types").Inter
}
}>();
const browserCollections = {
docs: create.doc("docs", {"conditional-logic.mdx": () => import("../content/docs/conditional-logic.mdx?collection=docs"), "custom-fields.mdx": () => import("../content/docs/custom-fields.mdx?collection=docs"), "developer-guide.mdx": () => import("../content/docs/developer-guide.mdx?collection=docs"), "dynamic-values.mdx": () => import("../content/docs/dynamic-values.mdx?collection=docs"), "field-hooks.mdx": () => import("../content/docs/field-hooks.mdx?collection=docs"), "field-wrappers.mdx": () => import("../content/docs/field-wrappers.mdx?collection=docs"), "form-component.mdx": () => import("../content/docs/form-component.mdx?collection=docs"), "form-provider.mdx": () => import("../content/docs/form-provider.mdx?collection=docs"), "index.mdx": () => import("../content/docs/index.mdx?collection=docs"), "installation.mdx": () => import("../content/docs/installation.mdx?collection=docs"), "migration.mdx": () => import("../content/docs/migration.mdx?collection=docs"), "option-resolvers.mdx": () => import("../content/docs/option-resolvers.mdx?collection=docs"), "output-transformation.mdx": () => import("../content/docs/output-transformation.mdx?collection=docs"), "quick-start.mdx": () => import("../content/docs/quick-start.mdx?collection=docs"), "render-fields.mdx": () => import("../content/docs/render-fields.mdx?collection=docs"), "schema.mdx": () => import("../content/docs/schema.mdx?collection=docs"), "use-form.mdx": () => import("../content/docs/use-form.mdx?collection=docs"), "validation.mdx": () => import("../content/docs/validation.mdx?collection=docs"), "fields/types.mdx": () => import("../content/docs/fields/types.mdx?collection=docs"), "fields/layout/array.mdx": () => import("../content/docs/fields/layout/array.mdx?collection=docs"), "fields/layout/collapsible.mdx": () => import("../content/docs/fields/layout/collapsible.mdx?collection=docs"), "fields/layout/group.mdx": () => import("../content/docs/fields/layout/group.mdx?collection=docs"), "fields/layout/row.mdx": () => import("../content/docs/fields/layout/row.mdx?collection=docs"), "fields/layout/tabs.mdx": () => import("../content/docs/fields/layout/tabs.mdx?collection=docs"), "fields/data/checkbox.mdx": () => import("../content/docs/fields/data/checkbox.mdx?collection=docs"), "fields/data/date.mdx": () => import("../content/docs/fields/data/date.mdx?collection=docs"), "fields/data/email.mdx": () => import("../content/docs/fields/data/email.mdx?collection=docs"), "fields/data/number.mdx": () => import("../content/docs/fields/data/number.mdx?collection=docs"), "fields/data/password.mdx": () => import("../content/docs/fields/data/password.mdx?collection=docs"), "fields/data/radio.mdx": () => import("../content/docs/fields/data/radio.mdx?collection=docs"), "fields/data/select.mdx": () => import("../content/docs/fields/data/select.mdx?collection=docs"), "fields/data/switch.mdx": () => import("../content/docs/fields/data/switch.mdx?collection=docs"), "fields/data/tags.mdx": () => import("../content/docs/fields/data/tags.mdx?collection=docs"), "fields/data/text.mdx": () => import("../content/docs/fields/data/text.mdx?collection=docs"), "fields/data/textarea.mdx": () => import("../content/docs/fields/data/textarea.mdx?collection=docs"), "fields/data/upload.mdx": () => import("../content/docs/fields/data/upload.mdx?collection=docs"), }),
docs: create.doc("docs", {"conditional-logic.mdx": () => import("../content/docs/conditional-logic.mdx?collection=docs"), "custom-fields.mdx": () => import("../content/docs/custom-fields.mdx?collection=docs"), "developer-guide.mdx": () => import("../content/docs/developer-guide.mdx?collection=docs"), "dynamic-values.mdx": () => import("../content/docs/dynamic-values.mdx?collection=docs"), "field-hooks.mdx": () => import("../content/docs/field-hooks.mdx?collection=docs"), "field-wrappers.mdx": () => import("../content/docs/field-wrappers.mdx?collection=docs"), "form-component.mdx": () => import("../content/docs/form-component.mdx?collection=docs"), "form-provider.mdx": () => import("../content/docs/form-provider.mdx?collection=docs"), "index.mdx": () => import("../content/docs/index.mdx?collection=docs"), "installation.mdx": () => import("../content/docs/installation.mdx?collection=docs"), "migration.mdx": () => import("../content/docs/migration.mdx?collection=docs"), "option-resolvers.mdx": () => import("../content/docs/option-resolvers.mdx?collection=docs"), "output-transformation.mdx": () => import("../content/docs/output-transformation.mdx?collection=docs"), "quick-start.mdx": () => import("../content/docs/quick-start.mdx?collection=docs"), "render-fields.mdx": () => import("../content/docs/render-fields.mdx?collection=docs"), "schema.mdx": () => import("../content/docs/schema.mdx?collection=docs"), "use-form.mdx": () => import("../content/docs/use-form.mdx?collection=docs"), "validation.mdx": () => import("../content/docs/validation.mdx?collection=docs"), "fields/types.mdx": () => import("../content/docs/fields/types.mdx?collection=docs"), "fields/data/checkbox.mdx": () => import("../content/docs/fields/data/checkbox.mdx?collection=docs"), "fields/data/date.mdx": () => import("../content/docs/fields/data/date.mdx?collection=docs"), "fields/data/email.mdx": () => import("../content/docs/fields/data/email.mdx?collection=docs"), "fields/data/number.mdx": () => import("../content/docs/fields/data/number.mdx?collection=docs"), "fields/data/password.mdx": () => import("../content/docs/fields/data/password.mdx?collection=docs"), "fields/data/radio.mdx": () => import("../content/docs/fields/data/radio.mdx?collection=docs"), "fields/data/select.mdx": () => import("../content/docs/fields/data/select.mdx?collection=docs"), "fields/data/switch.mdx": () => import("../content/docs/fields/data/switch.mdx?collection=docs"), "fields/data/tags.mdx": () => import("../content/docs/fields/data/tags.mdx?collection=docs"), "fields/data/text.mdx": () => import("../content/docs/fields/data/text.mdx?collection=docs"), "fields/data/textarea.mdx": () => import("../content/docs/fields/data/textarea.mdx?collection=docs"), "fields/data/upload.mdx": () => import("../content/docs/fields/data/upload.mdx?collection=docs"), "fields/layout/array.mdx": () => import("../content/docs/fields/layout/array.mdx?collection=docs"), "fields/layout/collapsible.mdx": () => import("../content/docs/fields/layout/collapsible.mdx?collection=docs"), "fields/layout/group.mdx": () => import("../content/docs/fields/layout/group.mdx?collection=docs"), "fields/layout/row.mdx": () => import("../content/docs/fields/layout/row.mdx?collection=docs"), "fields/layout/tabs.mdx": () => import("../content/docs/fields/layout/tabs.mdx?collection=docs"), "fields/layout/ui.mdx": () => import("../content/docs/fields/layout/ui.mdx?collection=docs"), }),
};
export default browserCollections;
37 changes: 19 additions & 18 deletions apps/web/.source/server.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
// @ts-nocheck
import * as __fd_glob_39 from "../content/docs/fields/data/upload.mdx?collection=docs"
import * as __fd_glob_38 from "../content/docs/fields/data/textarea.mdx?collection=docs"
import * as __fd_glob_37 from "../content/docs/fields/data/text.mdx?collection=docs"
import * as __fd_glob_36 from "../content/docs/fields/data/tags.mdx?collection=docs"
import * as __fd_glob_35 from "../content/docs/fields/data/switch.mdx?collection=docs"
import * as __fd_glob_34 from "../content/docs/fields/data/select.mdx?collection=docs"
import * as __fd_glob_33 from "../content/docs/fields/data/radio.mdx?collection=docs"
import * as __fd_glob_32 from "../content/docs/fields/data/password.mdx?collection=docs"
import * as __fd_glob_31 from "../content/docs/fields/data/number.mdx?collection=docs"
import * as __fd_glob_30 from "../content/docs/fields/data/email.mdx?collection=docs"
import * as __fd_glob_29 from "../content/docs/fields/data/date.mdx?collection=docs"
import * as __fd_glob_28 from "../content/docs/fields/data/checkbox.mdx?collection=docs"
import * as __fd_glob_27 from "../content/docs/fields/layout/tabs.mdx?collection=docs"
import * as __fd_glob_26 from "../content/docs/fields/layout/row.mdx?collection=docs"
import * as __fd_glob_25 from "../content/docs/fields/layout/group.mdx?collection=docs"
import * as __fd_glob_24 from "../content/docs/fields/layout/collapsible.mdx?collection=docs"
import * as __fd_glob_23 from "../content/docs/fields/layout/array.mdx?collection=docs"
import * as __fd_glob_40 from "../content/docs/fields/layout/ui.mdx?collection=docs"
import * as __fd_glob_39 from "../content/docs/fields/layout/tabs.mdx?collection=docs"
import * as __fd_glob_38 from "../content/docs/fields/layout/row.mdx?collection=docs"
import * as __fd_glob_37 from "../content/docs/fields/layout/group.mdx?collection=docs"
import * as __fd_glob_36 from "../content/docs/fields/layout/collapsible.mdx?collection=docs"
import * as __fd_glob_35 from "../content/docs/fields/layout/array.mdx?collection=docs"
import * as __fd_glob_34 from "../content/docs/fields/data/upload.mdx?collection=docs"
import * as __fd_glob_33 from "../content/docs/fields/data/textarea.mdx?collection=docs"
import * as __fd_glob_32 from "../content/docs/fields/data/text.mdx?collection=docs"
import * as __fd_glob_31 from "../content/docs/fields/data/tags.mdx?collection=docs"
import * as __fd_glob_30 from "../content/docs/fields/data/switch.mdx?collection=docs"
import * as __fd_glob_29 from "../content/docs/fields/data/select.mdx?collection=docs"
import * as __fd_glob_28 from "../content/docs/fields/data/radio.mdx?collection=docs"
import * as __fd_glob_27 from "../content/docs/fields/data/password.mdx?collection=docs"
import * as __fd_glob_26 from "../content/docs/fields/data/number.mdx?collection=docs"
import * as __fd_glob_25 from "../content/docs/fields/data/email.mdx?collection=docs"
import * as __fd_glob_24 from "../content/docs/fields/data/date.mdx?collection=docs"
import * as __fd_glob_23 from "../content/docs/fields/data/checkbox.mdx?collection=docs"
import * as __fd_glob_22 from "../content/docs/fields/types.mdx?collection=docs"
import * as __fd_glob_21 from "../content/docs/validation.mdx?collection=docs"
import * as __fd_glob_20 from "../content/docs/use-form.mdx?collection=docs"
Expand Down Expand Up @@ -47,4 +48,4 @@ const create = server<typeof Config, import("fumadocs-mdx/runtime/types").Intern
}
}>({"doc":{"passthroughs":["extractedReferences"]}});

export const docs = await create.docs("docs", "content/docs", {"meta.json": __fd_glob_0, "fields/meta.json": __fd_glob_1, "fields/data/meta.json": __fd_glob_2, "fields/layout/meta.json": __fd_glob_3, }, {"conditional-logic.mdx": __fd_glob_4, "custom-fields.mdx": __fd_glob_5, "developer-guide.mdx": __fd_glob_6, "dynamic-values.mdx": __fd_glob_7, "field-hooks.mdx": __fd_glob_8, "field-wrappers.mdx": __fd_glob_9, "form-component.mdx": __fd_glob_10, "form-provider.mdx": __fd_glob_11, "index.mdx": __fd_glob_12, "installation.mdx": __fd_glob_13, "migration.mdx": __fd_glob_14, "option-resolvers.mdx": __fd_glob_15, "output-transformation.mdx": __fd_glob_16, "quick-start.mdx": __fd_glob_17, "render-fields.mdx": __fd_glob_18, "schema.mdx": __fd_glob_19, "use-form.mdx": __fd_glob_20, "validation.mdx": __fd_glob_21, "fields/types.mdx": __fd_glob_22, "fields/layout/array.mdx": __fd_glob_23, "fields/layout/collapsible.mdx": __fd_glob_24, "fields/layout/group.mdx": __fd_glob_25, "fields/layout/row.mdx": __fd_glob_26, "fields/layout/tabs.mdx": __fd_glob_27, "fields/data/checkbox.mdx": __fd_glob_28, "fields/data/date.mdx": __fd_glob_29, "fields/data/email.mdx": __fd_glob_30, "fields/data/number.mdx": __fd_glob_31, "fields/data/password.mdx": __fd_glob_32, "fields/data/radio.mdx": __fd_glob_33, "fields/data/select.mdx": __fd_glob_34, "fields/data/switch.mdx": __fd_glob_35, "fields/data/tags.mdx": __fd_glob_36, "fields/data/text.mdx": __fd_glob_37, "fields/data/textarea.mdx": __fd_glob_38, "fields/data/upload.mdx": __fd_glob_39, });
export const docs = await create.docs("docs", "content/docs", {"meta.json": __fd_glob_0, "fields/meta.json": __fd_glob_1, "fields/data/meta.json": __fd_glob_2, "fields/layout/meta.json": __fd_glob_3, }, {"conditional-logic.mdx": __fd_glob_4, "custom-fields.mdx": __fd_glob_5, "developer-guide.mdx": __fd_glob_6, "dynamic-values.mdx": __fd_glob_7, "field-hooks.mdx": __fd_glob_8, "field-wrappers.mdx": __fd_glob_9, "form-component.mdx": __fd_glob_10, "form-provider.mdx": __fd_glob_11, "index.mdx": __fd_glob_12, "installation.mdx": __fd_glob_13, "migration.mdx": __fd_glob_14, "option-resolvers.mdx": __fd_glob_15, "output-transformation.mdx": __fd_glob_16, "quick-start.mdx": __fd_glob_17, "render-fields.mdx": __fd_glob_18, "schema.mdx": __fd_glob_19, "use-form.mdx": __fd_glob_20, "validation.mdx": __fd_glob_21, "fields/types.mdx": __fd_glob_22, "fields/data/checkbox.mdx": __fd_glob_23, "fields/data/date.mdx": __fd_glob_24, "fields/data/email.mdx": __fd_glob_25, "fields/data/number.mdx": __fd_glob_26, "fields/data/password.mdx": __fd_glob_27, "fields/data/radio.mdx": __fd_glob_28, "fields/data/select.mdx": __fd_glob_29, "fields/data/switch.mdx": __fd_glob_30, "fields/data/tags.mdx": __fd_glob_31, "fields/data/text.mdx": __fd_glob_32, "fields/data/textarea.mdx": __fd_glob_33, "fields/data/upload.mdx": __fd_glob_34, "fields/layout/array.mdx": __fd_glob_35, "fields/layout/collapsible.mdx": __fd_glob_36, "fields/layout/group.mdx": __fd_glob_37, "fields/layout/row.mdx": __fd_glob_38, "fields/layout/tabs.mdx": __fd_glob_39, "fields/layout/ui.mdx": __fd_glob_40, });
Loading
Loading