"use client" import type { ReactNode } from "react" import Image from "next/image" import { motion, useReducedMotion } from "framer-motion" import { cn } from "@/lib/utils" type AuthPageShellProps = { title: string description: string imageSrc: string imageAlt: string imageSide: "left" | "right" form: ReactNode secondaryAction?: ReactNode footer: ReactNode } export function AuthPageShell({ title, description, imageSrc, imageAlt, imageSide, form, secondaryAction, footer, }: AuthPageShellProps) { const reducedMotion = useReducedMotion() const stackVariants = { hidden: {}, show: { transition: reducedMotion ? undefined : { staggerChildren: 0.1, delayChildren: 0.15, }, }, } const itemVariants = { hidden: reducedMotion ? { opacity: 1 } : { opacity: 0, y: 24 }, show: { opacity: 1, y: 0, transition: { duration: reducedMotion ? 0 : 0.65, ease: [0.22, 1, 0.36, 1] as const, }, }, } const formPanel = (

{title}

{description}

{form} {secondaryAction ? ( {secondaryAction} ) : null} {footer}
) const imagePanel = (
{imageAlt} MindSpace Logo
) return (
{imageSide === "left" ? imagePanel : null} {formPanel} {imageSide === "right" ? imagePanel : null}
) }