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: () => , };