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)