import type { Meta, StoryObj } from '@storybook/nextjs-vite' import { useState } from 'react' import { OpenFrameSsoLoginForm, OpenFrameSsoSignUpForm, SsoAuthShell } from '../../components/features/auth' const meta = { title: 'Auth/OpenFrame SSO', parameters: { layout: 'fullscreen', docs: { description: { component: 'OpenFrame SSO (IdP) screens from the auth redesign. Centered single-column SsoAuthShell (logo top, card centered, Powered by Flamingo bottom). Login and Sign Up forms, both presentational + controlled with a password show/hide toggle.', }, }, }, tags: ['autodocs'], } satisfies Meta export default meta type Story = StoryObj function SsoLoginPage({ initialEmail = '', initialPassword = '' }: { initialEmail?: string; initialPassword?: string }) { const [email, setEmail] = useState(initialEmail) const [password, setPassword] = useState(initialPassword) const isValid = !!email.trim() && password.length > 0 return ( {}} onForgotPassword={() => {}} submitDisabled={!isValid} /> ) } function SsoSignUpPage({ filled = false }: { filled?: boolean }) { const [email, setEmail] = useState(filled ? 'ada@example.com' : '') const [firstName, setFirstName] = useState(filled ? 'Ada' : '') const [lastName, setLastName] = useState(filled ? 'Lovelace' : '') const [password, setPassword] = useState(filled ? 'SuperSecretPassphrase2024!' : '') const [confirmPassword, setConfirmPassword] = useState(filled ? 'SuperSecretPassphrase2024!' : '') const isValid = !!email.trim() && !!firstName.trim() && !!lastName.trim() && password.length >= 8 && password === confirmPassword return ( {}} onForgotPassword={() => {}} submitDisabled={!isValid} /> ) } /** Login — empty email + password, submit disabled. */ export const LoginEmpty: Story = { render: () => , } /** Login — filled, submit enabled. */ export const LoginFilled: Story = { render: () => , } /** Sign Up — empty fields, submit disabled. */ export const SignUpEmpty: Story = { render: () => , } /** Sign Up — filled and terms accepted, submit enabled. */ export const SignUpFilled: Story = { render: () => , }