Storybook stories for the `CompleteAccountForm` component, covering two authentication flows — Sign Up and Accept Invitation — in both empty and pre-filled states. ## Key Components - **`useAccountFields`** — Shared controlled-input hook managing `firstName`, `lastName`, `password`, and `confirmPassword` state, with built-in validation (min 8-char password, fields match and non-empty). - **`SignUpPage`** — Renders `CompleteAccountForm` inside `AuthShell` with a `TabSelector` (Sign Up / Login tabs) and a back action. - **`InvitationPage`** — Renders `CompleteAccountForm` inside `AuthShell` with a `BackToLoginLink` footer, custom title/subtitle, and no tab navigation. - **Exported Stories** — `SignUpEmpty`, `SignUpFilled`, `InvitationEmpty`, `InvitationFilled`. ## Usage Example ```typescript // Render the Sign Up variant with pre-filled fields export const SignUpFilled: Story = { render: () => , } // Render the Invitation variant with empty fields export const InvitationEmpty: Story = { render: () => , } ``` ## Story Variants | Story | Flow | State | |---|---|---| | `SignUpEmpty` | Sign Up (with tabs) | Empty fields | | `SignUpFilled` | Sign Up (with tabs) | Pre-filled (Ada Lovelace) | | `InvitationEmpty` | Accept Invitation | Empty fields | | `InvitationFilled` | Accept Invitation | Pre-filled | Both flows share the `SSO_PROVIDERS` constant (`['google', 'microsoft']`) and the `useAccountFields` hook. `submitDisabled` is derived automatically — enabled only when all fields are valid. **Source:** [`CompleteAccount.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/CompleteAccount.stories.tsx)