From f04089a40696a1db0223736739fcef15a0abd5a0 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Mon, 7 Jul 2025 10:51:43 +0100 Subject: [PATCH] feat(ui): refine Fieldset API --- .../components/v2/Form/Fieldset.stories.tsx | 4 +- .../ui/src/components/v2/Form/Fieldset.tsx | 62 ++++++++++++------- 2 files changed, 41 insertions(+), 25 deletions(-) diff --git a/pkgs/clan-app/ui/src/components/v2/Form/Fieldset.stories.tsx b/pkgs/clan-app/ui/src/components/v2/Form/Fieldset.stories.tsx index 7320afe05..c157c041f 100644 --- a/pkgs/clan-app/ui/src/components/v2/Form/Fieldset.stories.tsx +++ b/pkgs/clan-app/ui/src/components/v2/Form/Fieldset.stories.tsx @@ -40,7 +40,7 @@ export type Story = StoryObj; export const Default: Story = { args: { legend: "Signup", - fields: (props: FieldProps) => ( + children: (props: FieldProps) => ( <> ( + children: (props: FieldProps) => ( <> & { error?: string; - fields: (props: FieldProps) => JSX.Element; + disabled?: boolean; +}; + +export interface FieldsetProps + extends Pick { + legend?: string; + disabled?: boolean; + error?: string; + children: (props: FieldsetFieldProps) => JSX.Element; } export const Fieldset = (props: FieldsetProps) => { const orientation = () => props.orientation || "vertical"; + const [fieldProps] = splitProps(props, [ + "orientation", + "inverted", + "disabled", + "error", + ]); + return (
- - - {props.legend} - - -
- {props.fields({ ...props, orientation: orientation() })} -
+ {props.legend && ( + + + {props.legend} + + + )} +
{props.children(fieldProps)}
{props.error && (