{"version":3,"file":"modern-907c521a.js","sources":["../../src/hooks/use-search-params.ts","../../src/pages/auth-demo/login/modern.tsx"],"sourcesContent":["import { useSearchParams as _useSearchParams } from 'react-router-dom';\n\n// TODO: Maybe unify React-Router and Next.js Router to have the same behaviour\n//  In Next.js we do not have the set. There we need to redirect manually.\n\n/**\n * Returns ReadOnly search params\n */\nexport const useSearchParams = () => {\n  const [searchParams] = _useSearchParams();\n\n  return searchParams;\n};\n","import React, { useState, useEffect } from 'react';\nimport * as Yup from 'yup';\nimport { useFormik } from 'formik';\nimport { useMounted } from 'src/hooks/use-mounted';\nimport { useRouter } from 'src/hooks/use-router';\nimport { useSearchParams } from 'src/hooks/use-search-params';\nimport type { AuthContextType } from 'src/contexts/auth/jwt';\nimport { useAuth } from 'src/hooks/use-auth';\nimport { Box, Button, Link, Stack, TextField, Typography } from '@mui/material';\nimport { loginUser } from '../../../services/teamMemberService';\nimport { Seo } from 'src/components/seo';\nimport { paths } from 'src/paths';\n\nconst LoginValidationSchema = Yup.object({\n  email: Yup.string().email('Must be a valid email').max(255).required('Email is required'),\n  password: Yup.string().max(255).required('Password is required'),\n});\n\nconst LoginPage = () => {\n  const [error, setError] = useState('');\n  const { signIn, isAuthenticated } = useAuth<AuthContextType>();\n  const isMounted = useMounted();\n  const router = useRouter();\n  const searchParams = useSearchParams();\n  const returnTo = searchParams.get('returnTo');\n\n  useEffect(() => {\n    if (isAuthenticated) {\n      router.push(returnTo || paths.dashboard.index);\n    }\n  }, [isAuthenticated, router, returnTo]);\n\n  const formik = useFormik({\n    initialValues: {\n      email: '',\n      password: '',\n    },\n    validationSchema: LoginValidationSchema,\n    onSubmit: async (values, actions) => {\n      try {\n        const response = await loginUser(values.email, values.password);\n        if (response && response.auth_data && response.auth_data.user) {\n          signIn(response);\n          if (isMounted()) {\n            router.push(returnTo || paths.dashboard.index);\n          }\n        } else {\n          setError('Authentication failed, please try again');\n        }\n      } catch (error) {\n        setError('An error occurred. Please try again.');\n      }\n      actions.setSubmitting(false);\n    }\n  });\n\n  if (isAuthenticated) {\n    return null; // or a loading spinner if you prefer\n  }\n\n  return (\n    <>\n      <Seo title=\"Login\" />\n      <Box sx={{ maxWidth: 400, margin: 'auto', mt: 4 }}>\n        <Typography variant=\"h4\" gutterBottom>\n          Log in\n        </Typography>\n        {error && <Typography color=\"error\" sx={{ mb: 2 }}>{error}</Typography>}\n        <form onSubmit={formik.handleSubmit}>\n          <Stack spacing={3}>\n            <TextField\n              autoFocus\n              error={!!(formik.touched.email && formik.errors.email)}\n              fullWidth\n              helperText={formik.touched.email && formik.errors.email}\n              label=\"Email Address\"\n              name=\"email\"\n              onBlur={formik.handleBlur}\n              onChange={formik.handleChange}\n              type=\"email\"\n              value={formik.values.email}\n            />\n            <TextField\n              error={!!(formik.touched.password && formik.errors.password)}\n              fullWidth\n              helperText={formik.touched.password && formik.errors.password}\n              label=\"Password\"\n              name=\"password\"\n              onBlur={formik.handleBlur}\n              onChange={formik.handleChange}\n              type=\"password\"\n              value={formik.values.password}\n            />\n            <Button\n              fullWidth\n              size=\"large\"\n              type=\"submit\"\n              variant=\"contained\"\n            >\n              Log In\n            </Button>\n          </Stack>\n        </form>\n        <Box mt={2}>\n          <Link href=\"/forgot-password\">\n            Forgot password?\n          </Link>\n        </Box>\n      </Box>\n    </>\n  );\n};\n\nexport default LoginPage;"],"names":["useSearchParams","searchParams","_useSearchParams","LoginValidationSchema","Yup.object","Yup.string","LoginPage","error","setError","useState","signIn","isAuthenticated","useAuth","isMounted","useMounted","router","useRouter","returnTo","useEffect","paths","formik","useFormik","values","actions","response","loginUser","jsxs","Fragment","jsx","Seo","Box","Typography","Stack","TextField","Button","Link"],"mappings":"ohBAQO,MAAMA,EAAkB,IAAM,CAC7B,KAAA,CAACC,CAAY,EAAIC,IAEhB,OAAAD,CACT,ECCME,EAAwBC,EAAW,CACvC,MAAOC,IAAa,MAAM,uBAAuB,EAAE,IAAI,GAAG,EAAE,SAAS,mBAAmB,EACxF,SAAUA,EAAW,EAAE,IAAI,GAAG,EAAE,SAAS,sBAAsB,CACjE,CAAC,EAEKC,EAAY,IAAM,CACtB,KAAM,CAACC,EAAOC,CAAQ,EAAIC,WAAS,EAAE,EAC/B,CAAE,OAAAC,EAAQ,gBAAAC,CAAgB,EAAIC,EAAyB,EACvDC,EAAYC,IACZC,EAASC,IAETC,EADejB,IACS,IAAI,UAAU,EAE5CkB,EAAAA,UAAU,IAAM,CACVP,GACFI,EAAO,KAAKE,GAAYE,EAAM,UAAU,KAAK,CAE9C,EAAA,CAACR,EAAiBI,EAAQE,CAAQ,CAAC,EAEtC,MAAMG,EAASC,EAAU,CACvB,cAAe,CACb,MAAO,GACP,SAAU,EACZ,EACA,iBAAkBlB,EAClB,SAAU,MAAOmB,EAAQC,IAAY,CAC/B,GAAA,CACF,MAAMC,EAAW,MAAMC,EAAUH,EAAO,MAAOA,EAAO,QAAQ,EAC1DE,GAAYA,EAAS,WAAaA,EAAS,UAAU,MACvDd,EAAOc,CAAQ,EACXX,KACFE,EAAO,KAAKE,GAAYE,EAAM,UAAU,KAAK,GAG/CX,EAAS,yCAAyC,OAEtC,CACdA,EAAS,sCAAsC,CACjD,CACAe,EAAQ,cAAc,EAAK,CAC7B,CAAA,CACD,EAED,OAAIZ,EACK,KAKLe,EAAA,KAAAC,WAAA,CAAA,SAAA,CAACC,EAAAA,IAAAC,EAAA,CAAI,MAAM,OAAQ,CAAA,EACnBH,EAAAA,KAACI,EAAI,CAAA,GAAI,CAAE,SAAU,IAAK,OAAQ,OAAQ,GAAI,CAAA,EAC5C,SAAA,CAAAF,MAACG,EAAW,CAAA,QAAQ,KAAK,aAAY,GAAC,SAEtC,SAAA,EACCxB,GAAUqB,EAAA,IAAAG,EAAA,CAAW,MAAM,QAAQ,GAAI,CAAE,GAAI,CAAE,EAAI,SAAMxB,CAAA,CAAA,EAC1DqB,EAAAA,IAAC,QAAK,SAAUR,EAAO,aACrB,SAACM,EAAAA,KAAAM,EAAA,CAAM,QAAS,EACd,SAAA,CAAAJ,EAAA,IAACK,EAAA,CACC,UAAS,GACT,MAAO,CAAC,EAAEb,EAAO,QAAQ,OAASA,EAAO,OAAO,OAChD,UAAS,GACT,WAAYA,EAAO,QAAQ,OAASA,EAAO,OAAO,MAClD,MAAM,gBACN,KAAK,QACL,OAAQA,EAAO,WACf,SAAUA,EAAO,aACjB,KAAK,QACL,MAAOA,EAAO,OAAO,KAAA,CACvB,EACAQ,EAAA,IAACK,EAAA,CACC,MAAO,CAAC,EAAEb,EAAO,QAAQ,UAAYA,EAAO,OAAO,UACnD,UAAS,GACT,WAAYA,EAAO,QAAQ,UAAYA,EAAO,OAAO,SACrD,MAAM,WACN,KAAK,WACL,OAAQA,EAAO,WACf,SAAUA,EAAO,aACjB,KAAK,WACL,MAAOA,EAAO,OAAO,QAAA,CACvB,EACAQ,EAAA,IAACM,EAAA,CACC,UAAS,GACT,KAAK,QACL,KAAK,SACL,QAAQ,YACT,SAAA,QAAA,CAED,CAAA,CAAA,CACF,CACF,CAAA,EACAN,EAAAA,IAACE,GAAI,GAAI,EACP,eAACK,EAAK,CAAA,KAAK,mBAAmB,SAAA,kBAAA,CAE9B,CACF,CAAA,CAAA,EACF,CACF,CAAA,CAAA,CAEJ"}