{"version":3,"file":"static/chunks/app/(auth)/login/page-1f1a3f4e8d56c0e7.js","mappings":"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","sources":["webpack://_N_E/?033b","webpack://_N_E/../../../src/icons/arrow-right.ts","webpack://_N_E/./src/features/auth/pages/login-page.tsx"],"sourcesContent":["import(/* webpackMode: \"eager\", webpackExports: [\"default\"] */ \"/codebuild/output/src2715070955/src/quickly-next/apps/frontend/src/features/auth/pages/login-page.tsx\");\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M5 12h14', key: '1ays0h' }],\n ['path', { d: 'm12 5 7 7-7 7', key: 'xquz4c' }],\n];\n\n/**\n * @component @name ArrowRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNSAxMmgxNCIgLz4KICA8cGF0aCBkPSJtMTIgNSA3IDctNyA3IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/arrow-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ArrowRight = createLucideIcon('ArrowRight', __iconNode);\n\nexport default ArrowRight;\n","\"use client\";\n\nimport { loginSchema, validateAndSetErrors } from \"@/shared/schemas\";\nimport { useAuth } from \"@/state/AuthContexts\";\nimport {\n Button,\n Icon,\n InlineAlert,\n InputOTP,\n InputOTPGroup,\n InputOTPSlot,\n TextInput,\n} from \"@repo/ui\";\nimport { motion } from \"framer-motion\";\nimport { ArrowRight } from \"lucide-react\";\nimport Image from \"next/image\";\nimport Link from \"next/link\";\nimport { useSearchParams } from \"next/navigation\";\nimport { useRef, useState } from \"react\";\n\ntype LoginErrorT = {\n email?: string;\n other?: string;\n};\n\nexport default function LoginPage() {\n const { login } = useAuth();\n\n const searchParams = useSearchParams();\n const token = searchParams?.get(\"token\");\n const invoiceId = searchParams?.get(\"invoiceId\");\n\n const emailRef = useRef(null);\n const passwordRef = useRef(null);\n\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState();\n\n const [mfa, setMFA] = useState<{\n session: string;\n username: string;\n code: string;\n }>({ session: \"\", username: \"\", code: \"\" });\n\n const handleLogin = async (e: React.FormEvent) => {\n e.preventDefault();\n setError(undefined);\n const email = (emailRef.current?.value || \"\").trim().toLowerCase();\n const password = passwordRef.current?.value || \"\";\n const hasError = await validateAndSetErrors(\n loginSchema,\n { email },\n setError\n );\n\n if (hasError) {\n setLoading(false);\n return;\n } else {\n setLoading(true);\n\n const response = await login(\n email.trim().toLowerCase(),\n password,\n token ?? \"\",\n invoiceId ? parseInt(invoiceId) : undefined\n );\n\n if (response && response.success) {\n if (response.session && response.username) {\n setMFA({\n ...mfa,\n session: response.session,\n username: response.username,\n });\n setError({ email: \"\", other: \"\" });\n setLoading(false);\n }\n } else if (response && !response?.success) {\n setError({ email: \"\", other: response?.message });\n setLoading(false);\n } else {\n setError({\n email: \"\",\n other: \"Something went wrong. Please contact support.\",\n });\n setLoading(false);\n }\n }\n };\n\n const handleMFA = async (e: React.FormEvent) => {\n e.preventDefault();\n setError(undefined);\n setLoading(true);\n\n login(\"\", \"\", \"\", null, mfa.username, mfa.code, mfa.session)\n .then((response) => {\n if (!response.success) throw new Error(response.message);\n })\n .catch((error) => setError({ email: \"\", other: error.message }))\n .finally(() => setLoading(false));\n };\n\n const handleEmailChange = () => {\n setError({ email: \"\", other: \"\" });\n };\n\n return (\n \n
\n \n
\n \n
\n\n
\n
\n Log in\n
\n
\n Welcome back! Please sign in to continue.\n
\n
\n\n {!mfa?.session ? (\n
\n
\n \n
\n \n
\n \n \n Forgot?\n \n \n
\n
\n
\n\n \n
\n \n Don't have an account?\n \n\n \n \n Get started for free\n \n \n \n
\n \n ) : (\n
\n
\n
\n Enter the OTP code from your authenticator app\n
\n setMFA({ ...mfa, code: value })}\n >\n \n \n \n \n \n \n \n \n \n
\n {Boolean(error?.other) && (\n \n )}\n \n \n )}\n
\n \n
\n
\n \n
\n
\n
\n “Our suppliers gain unparalleled access to capital, enabling them\n to scale operations and invest in new products.”\n
\n\n
\n
\n Brett Wells\n
\n
CEO @ Weed Pool
\n
\n
\n
\n
\n \n );\n}\n"],"names":["Promise","resolve","then","__webpack_require__","bind","ArrowRight","createLucideIcon","d","key","LoginPage","login","useAuth","searchParams","useSearchParams","token","get","invoiceId","emailRef","useRef","passwordRef","loading","setLoading","useState","error","setError","mfa","setMFA","session","username","code","handleLogin","e","preventDefault","undefined","email","current","value","trim","toLowerCase","password","validateAndSetErrors","loginSchema","response","parseInt","success","other","message","handleMFA","catch","finally","jsx_runtime","jsxs","motion","div","className","data-testid","initial","animate","exit","variants","hidden","opacity","x","visible","transition","duration","ease","jsx","Icon","icon","size","form","onSubmit","InputOTP","maxLength","autoFocus","onChange","InputOTPGroup","InputOTPSlot","index","Boolean","InlineAlert","type","title","Button","disabled","submit","label","TextInput","autoComplete","ref","wide","required","Link","href","span","color","concat","Image","src","alt","fill","priority"],"sourceRoot":""}