{"version":3,"sources":["config/index.ts","store/account/actions.ts","api/auth.ts","components/Logo.js","store/account/reducers.ts","store/index.ts","store/account/types.ts","utils/auth.ts","constants/index.js","utils/settings.js","context/SettingsContext.js","serviceWorker.js","components/SplashScreen.js","components/Auth.tsx","components/CookiesNotification.js","components/GoogleAnalytics.js","components/ScrollReset.js","hooks/useSettings.ts","components/CardGuard.tsx","components/GuestCardGuard.tsx","components/GuestGuard.tsx","components/LoadingScreen.js","components/RolesGuard.tsx","layouts/DashboardLayout/NavBar/NavItem.js","layouts/DashboardLayout/NavBar/index.js","utils/role.ts","layouts/DashboardLayout/TopBar/Account.js","components/LogoTop.js","layouts/DashboardLayout/TopBar/index.js","layouts/DashboardLayout/index.js","Routes.tsx","theme/shadows.js","theme/index.js","theme/typography.js","App.tsx","index.tsx","utils/client.ts"],"names":["APP_VERSION","API_PREFIX","process","MEDICAL_NETWORKS_API_PREFIX","ENABLE_REDUX_LOGGER","login","username","password","dispatch","a","type","LOGIN_REQUEST","loginUser","userToken","setAuthToken","token","setUser","user","LOGIN_SUCCESS","payload","LOGIN_FAILURE","setUserData","SILENT_LOGIN","logout","deleteAuthToken","LOGOUT","cardLogin","client","post","json","updateProfileRequest","update","patch","updatePasswordRequest","updatePhotoRequest","body","getUsers","searchParams","get","uploadUsersExcel","users","Logo","props","alt","src","style","maxHeight","maxWidth","initialState","accountReducer","state","action","produce","draft","UPDATE_PROFILE","UPDATE_PHOTO","loggerMiddleware","createLogger","rootReducer","combineReducers","account","configureStore","preloadedState","thunkMiddleware","reduxThunk","middleware","applyMiddleware","middlewareEnhancer","composeWithDevTools","createStore","UPDATE_PASSWORD","setCardUser","localStorage","setItem","JSON","stringify","getCardUser","getItem","deleteCardUser","removeItem","getAuthToken","getUser","isValidToken","decoded","JwtDecode","currentTime","Date","now","exp","THEMES","storeSettings","settings","SettingsContext","createContext","defaultSettings","direction","responsiveFontSizes","theme","openNavBar","SettingsProvider","children","useState","currentSettings","setCurrentSettings","useEffect","document","dir","Provider","value","saveSettings","updatedSettings","mergedSettings","_","merge","Consumer","Boolean","window","location","hostname","match","useStyles","makeStyles","root","alignItems","backgroundColor","palette","background","default","display","flexDirection","height","justifyContent","left","padding","spacing","position","top","width","zIndex","logo","SlashScreen","classes","className","Box","mb","CircularProgress","Auth","useDispatch","isLoading","setLoading","parse","initAuth","SplashScreen","common","black","color","white","bottom","margin","outline","CookiesNotification","open","setOpen","Cookies","Portal","Typography","variant","Link","component","underline","href","target","mt","Button","onClick","set","data-cy","GA_MEASUREMENT_ID","REACT_APP_GA_MEASUREMENT_ID","GoogleAnalytics","Helmet","async","ScrollReset","useLocation","scrollTo","pathname","useSettings","useContext","CardGuard","to","GuestCardGuard","GuestGuard","useSelector","minHeight","LoadingScreen","NProgress","start","done","LinearProgress","rolesGuard","allowedRoles","length","includes","groups","name","item","paddingTop","paddingBottom","itemLeaf","button","text","secondary","textTransform","letterSpacing","buttonLeaf","fontWeight","typography","fontWeightRegular","fontWeightMedium","icon","marginRight","title","active","main","NavItem","depth","Icon","openProp","Info","info","rest","paddingLeft","ListItem","clsx","disableGutters","prevOpen","size","Collapse","in","activeClassName","RouterLink","exact","defaultProps","dashboardItem","PieChartIcon","adminNavConfig","subheader","items","WorkIcon","UsersIcon","employeeNavConfig","renderNavItems","List","disablePadding","reduce","acc","key","matchPath","path","push","reduceChildRoutes","mobileDrawer","desktopDrawer","avatar","cursor","NavBar","openMobile","onMobileClose","openDesktop","navigationItems","setNavigationItems","role","content","options","suppressScrollX","Hidden","lgUp","p","Avatar","photo","textAlign","first_name","last_name","Divider","map","config","ListSubheader","disableSticky","borderRadius","bgcolor","Drawer","anchor","paper","onClose","mdDown","popover","Account","history","useHistory","ref","useRef","enqueueSnackbar","useSnackbar","isOpen","handleClose","handleLogout","ButtonBase","smDown","Menu","anchorOrigin","vertical","horizontal","keepMounted","PaperProps","getContentAnchorEl","anchorEl","current","MenuItem","marginLeft","drawer","boxShadow","primary","toolbar","TopBar","onMobileNavOpen","onDesktopNavTouch","AppBar","Toolbar","IconButton","SvgIcon","fontSize","LogoTop","ml","flexGrow","dark","overflow","wrapper","flex","wrapperNavBarOpen","breakpoints","up","contentContainer","DashboardLayout","isMobileNavOpen","setMobileNavOpen","routesConfig","guard","lazy","layout","routes","renderRoutes","fallback","route","i","Guard","Fragment","Layout","Component","render","Routes","strongShadows","baseConfig","h1","h2","h3","h4","h5","h6","overline","overrides","MuiLinearProgress","MuiListItemIcon","minWidth","MuiChip","themeConfigs","MuiInputBase","input","opacity","colors","blueGrey","shadows","hover","selected","disabled","disabledBackground","focus","createTheme","themeConfig","find","console","warn","Error","createMuiTheme","createBrowserHistory","createStyles","boxSizing","html","App","ThemeProvider","StylesProvider","utils","MomentUtils","maxSnack","moment","locale","enableES5","store","storedData","err","restoreSettings","ReactDOM","getElementById","navigator","serviceWorker","ready","then","registration","unregister","catch","error","message","api","ky","create","timeout","prefixUrl","hooks","beforeRequest","request","headers","afterResponse","response","status"],"mappings":"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","file":"static/js/main.90ff034d.chunk.js","sourcesContent":["export const APP_VERSION = '1.0.0';\nexport const API_PREFIX = `${process.env.REACT_APP_API_SERVER_URL}`;\nexport const MEDICAL_NETWORKS_API_PREFIX = `${process.env.REACT_APP_MEDICAL_NETWORKS_API_SERVER_URL}`;\nexport const ENABLE_REDUX_LOGGER = false;\n","import {\n loginUser,\n updatePasswordRequest,\n updatePhotoRequest,\n updateProfileRequest\n} from 'src/api/auth';\nimport { deleteAuthToken, setAuthToken, setUser } from 'src/utils/auth';\nimport { ThunkResult } from '..';\nimport {\n AccountState,\n LOGIN_FAILURE,\n LOGIN_REQUEST,\n LOGIN_SUCCESS,\n LOGOUT,\n SILENT_LOGIN,\n UPDATE_PASSWORD,\n UPDATE_PHOTO,\n UPDATE_PROFILE\n} from './types';\n\nexport function login(\n username: string,\n password: string\n): ThunkResult> {\n return async (dispatch) => {\n try {\n dispatch({ type: LOGIN_REQUEST });\n\n const userToken = await loginUser(username, password);\n setAuthToken(userToken.token);\n setUser(userToken.user);\n\n dispatch({\n type: LOGIN_SUCCESS,\n payload: {\n user: userToken.user\n }\n });\n } catch (error) {\n dispatch({ type: LOGIN_FAILURE });\n throw error;\n }\n };\n}\n\nexport function setUserData(user: AccountState['user']): ThunkResult {\n return (dispatch) =>\n dispatch({\n type: SILENT_LOGIN,\n payload: {\n user\n }\n });\n}\n\nexport function logout(): ThunkResult> {\n return async (dispatch) => {\n deleteAuthToken();\n dispatch({\n type: LOGOUT\n });\n };\n}\n\nexport function updateProfile(\n update: Partial\n): ThunkResult> {\n return async (dispatch) => {\n const user = await updateProfileRequest(update);\n dispatch({\n type: UPDATE_PROFILE,\n payload: {\n user\n }\n });\n };\n}\n\nexport function updatePassword(update: string): ThunkResult {\n return async (dispatch) => {\n await updatePasswordRequest(update);\n dispatch({\n type: UPDATE_PASSWORD\n });\n };\n}\n\nexport function updatePhoto(file: any): ThunkResult {\n return async (dispatch) => {\n const formData = new FormData();\n formData.append('file', file.file);\n const user = await updatePhotoRequest(formData);\n setUser(user);\n dispatch({\n type: UPDATE_PHOTO,\n payload: {\n user\n }\n });\n };\n}\n","import client from 'src/utils/client';\nimport { AccountState } from '../store/account/types';\n\ntype CardLoginType = (username: string) => Promise;\ntype LoginType = (username: string, password: string) => Promise;\ntype UpdateUserType = (update: Partial) => Promise;\ntype UpdateStringType = (update: string) => Promise;\ntype UpdateFormDataType = (update: FormData) => Promise;\n\nexport const cardLogin: CardLoginType = (username) =>\n client\n .post('auth/card-login', {\n json: {\n username\n }\n })\n .json();\n\nexport const loginUser: LoginType = (username, password) =>\n client\n .post('auth/login', {\n json: {\n username,\n password\n }\n })\n .json();\n\nexport const updateProfileRequest: UpdateUserType = (update) =>\n client\n .patch('auth/me', {\n json: {\n update\n }\n })\n .json();\n\nexport const updatePasswordRequest: UpdateStringType = (update) =>\n client\n .post('auth/me/set-password', {\n json: {\n update\n }\n })\n .json();\n\nexport const updatePhotoRequest: UpdateFormDataType = (update) =>\n client\n .post('auth/me/set-photo', {\n body: update\n })\n .json();\n\ntype GetUsersType = (\n searchParams?: QueryParams\n) => Promise>;\nexport const getUsers: GetUsersType = (searchParams) =>\n client.get(`auth/users`, { searchParams }).json();\n\ntype UploadUsersExcelType = (users: FormData) => Promise;\nexport const uploadUsersExcel: UploadUsersExcelType = (users) =>\n client.post(`auth/upload-users`, { body: users }).json();\n","import React from 'react';\n\nfunction Logo(props) {\n return (\n \n );\n}\n\nexport default Logo;\n","/* eslint-disable no-param-reassign */\nimport produce from 'immer';\nimport {\n AccountActionTypes,\n AccountState,\n LOGIN_FAILURE,\n LOGIN_REQUEST,\n LOGIN_SUCCESS,\n LOGOUT,\n SILENT_LOGIN,\n UPDATE_PHOTO,\n UPDATE_PROFILE\n} from './types';\n\nconst initialState: AccountState = {\n user: null\n};\n\nconst accountReducer = (state = initialState, action: AccountActionTypes) => {\n switch (action.type) {\n case LOGIN_REQUEST: {\n return produce(state, (draft) => {\n // Ensure we clear current session\n draft.user = null;\n });\n }\n\n case LOGIN_SUCCESS: {\n const { user } = action.payload;\n\n return produce(state, (draft) => {\n draft.user = user;\n });\n }\n\n case LOGIN_FAILURE: {\n return produce(state, () => {\n // Maybe store error\n });\n }\n\n case LOGOUT: {\n return produce(state, (draft) => {\n draft.user = null;\n });\n }\n\n case SILENT_LOGIN: {\n const { user } = action.payload;\n\n return produce(state, (draft) => {\n draft.user = user;\n });\n }\n\n case UPDATE_PROFILE: {\n const { user } = action.payload;\n\n return produce(state, (draft) => {\n draft.user = user;\n });\n }\n\n case UPDATE_PHOTO: {\n const { user } = action.payload;\n\n return produce(state, (draft) => {\n draft.user = user;\n });\n }\n\n default: {\n return state;\n }\n }\n};\n\nexport default accountReducer;\n","/* eslint-disable import/prefer-default-export */\nimport { applyMiddleware, combineReducers, createStore } from 'redux';\nimport { composeWithDevTools } from 'redux-devtools-extension';\nimport { createLogger } from 'redux-logger';\nimport reduxThunk, { ThunkAction, ThunkMiddleware } from 'redux-thunk';\nimport { ENABLE_REDUX_LOGGER } from 'src/config';\nimport accountReducer from './account/reducers';\nimport { AccountActionTypes } from './account/types';\n\nconst loggerMiddleware = createLogger();\n\nconst rootReducer = combineReducers({\n account: accountReducer\n});\n\nexport type AppState = ReturnType;\nexport type AppActions = AccountActionTypes;\nexport type ThunkResult = ThunkAction;\n\nexport function configureStore(preloadedState = {}) {\n const thunkMiddleware = reduxThunk as ThunkMiddleware;\n let middleware = applyMiddleware(thunkMiddleware);\n if (ENABLE_REDUX_LOGGER) {\n middleware = applyMiddleware(thunkMiddleware, loggerMiddleware);\n }\n const middlewareEnhancer = composeWithDevTools(middleware);\n return createStore(rootReducer, preloadedState, middlewareEnhancer);\n}\n\nexport default configureStore();\n","export interface AccountState {\n user: User | null;\n}\n\nexport const LOGIN_REQUEST = '@account/login-request';\nexport const LOGIN_SUCCESS = '@account/login-success';\nexport const LOGIN_FAILURE = '@account/login-failure';\nexport const SILENT_LOGIN = '@account/silent-login';\nexport const LOGOUT = '@account/logout';\nexport const UPDATE_PROFILE = '@account/update-profile';\nexport const UPDATE_PASSWORD = '@account/update-password';\nexport const UPDATE_PHOTO = '@account/update-photo';\n\ninterface LoginRequestAction {\n type: typeof LOGIN_REQUEST;\n}\n\ninterface LoginFailureAction {\n type: typeof LOGIN_FAILURE;\n}\n\ninterface LoginSuccessAction {\n type: typeof LOGIN_SUCCESS;\n payload: AccountState;\n}\n\ninterface SilentLoginAction {\n type: typeof SILENT_LOGIN;\n payload: AccountState;\n}\n\ninterface LogoutAction {\n type: typeof LOGOUT;\n}\n\ninterface UpdateProfileAction {\n type: typeof UPDATE_PROFILE;\n payload: AccountState;\n}\n\ninterface UpdatePasswordAction {\n type: typeof UPDATE_PASSWORD;\n}\n\ninterface UpdatePhotoAction {\n type: typeof UPDATE_PHOTO;\n payload: AccountState;\n}\n\nexport type AccountActionTypes =\n | LoginRequestAction\n | LoginFailureAction\n | LoginSuccessAction\n | SilentLoginAction\n | LogoutAction\n | UpdateProfileAction\n | UpdatePasswordAction\n | UpdatePhotoAction;\n","import JwtDecode from 'jwt-decode';\n\nexport const setCardUser = (user: Affiliate[]) =>\n localStorage.setItem('card-user', JSON.stringify(user));\nexport const getCardUser = () => localStorage.getItem('card-user');\nexport const deleteCardUser = () => localStorage.removeItem('card-user');\n\nexport const setAuthToken = (token: string) =>\n localStorage.setItem('token', token);\nexport const setUser = (user: AuthUser) =>\n localStorage.setItem('user', JSON.stringify(user));\n\nexport const getAuthToken = () => localStorage.getItem('token');\nexport const getUser = () => localStorage.getItem('user');\n\nexport const deleteAuthToken = () => localStorage.removeItem('token');\nexport const deleteUser = () => localStorage.removeItem('user');\n\nexport const isValidToken = () => {\n const token = getAuthToken();\n if (token === null) {\n return false;\n }\n const decoded = JwtDecode(token);\n const currentTime = Date.now() / 1000;\n\n return decoded.exp > currentTime;\n};\n","/* eslint-disable import/prefer-default-export */\nexport const THEMES = {\n LIGHT: 'LIGHT',\n ONE_DARK: 'ONE_DARK',\n UNICORN: 'UNICORN'\n};\n","export function restoreSettings() {\n let settings = null;\n\n try {\n const storedData = localStorage.getItem('settings');\n\n if (storedData) {\n settings = JSON.parse(storedData);\n }\n } catch (err) {\n // If stored data is not a strigified JSON this might fail,\n // that's why we catch the error\n }\n\n return settings;\n}\n\nexport function storeSettings(settings) {\n localStorage.setItem('settings', JSON.stringify(settings));\n}\n","import React, { createContext, useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport { THEMES } from 'src/constants';\nimport { storeSettings } from 'src/utils/settings';\n\nconst SettingsContext = createContext();\n\nconst defaultSettings = {\n direction: 'ltr',\n responsiveFontSizes: true,\n theme: THEMES.LIGHT,\n openNavBar: true\n};\n\nexport function SettingsProvider({ settings, children }) {\n const [currentSettings, setCurrentSettings] = useState(\n settings || defaultSettings\n );\n\n const handleSaveSettings = (updatedSettings = {}) => {\n const mergedSettings = _.merge({}, currentSettings, updatedSettings);\n\n setCurrentSettings(mergedSettings);\n storeSettings(mergedSettings);\n };\n\n useEffect(() => {\n document.dir = currentSettings.direction;\n }, [currentSettings]);\n\n return (\n \n {children}\n \n );\n}\n\nSettingsProvider.propTypes = {\n children: PropTypes.node.isRequired,\n settings: PropTypes.object\n};\n\nexport const SettingsConsumer = SettingsContext.Consumer;\n\nexport default SettingsContext;\n","/* eslint-disable */\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport { Box, CircularProgress, makeStyles } from '@material-ui/core';\nimport Logo from 'src/components/Logo';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n alignItems: 'center',\n backgroundColor: theme.palette.background.default,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n justifyContent: 'center',\n left: 0,\n padding: theme.spacing(3),\n position: 'fixed',\n top: 0,\n width: '100%',\n zIndex: 2000\n },\n logo: {\n width: 200,\n maxWidth: '100%'\n }\n}));\n\nfunction SlashScreen() {\n const classes = useStyles();\n\n return (\n
\n \n \n \n \n
\n );\n}\n\nexport default SlashScreen;\n","import React, { FC, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport SplashScreen from 'src/components/SplashScreen';\nimport { setUserData } from 'src/store/account/actions';\nimport { getUser, isValidToken } from 'src/utils/auth';\n\nconst Auth: FC = ({ children }) => {\n const dispatch = useDispatch();\n const [isLoading, setLoading] = useState(true);\n\n useEffect(() => {\n const initAuth = async () => {\n if (isValidToken()) {\n await dispatch(setUserData(JSON.parse(getUser()!)));\n }\n\n setLoading(false);\n };\n\n initAuth();\n }, [dispatch]);\n\n if (isLoading) {\n return ;\n }\n\n return <>{children};\n};\n\nexport default Auth;\n","import {\n Box,\n Button,\n Link,\n makeStyles,\n Portal,\n Typography\n} from '@material-ui/core';\nimport Cookies from 'js-cookie';\nimport React, { useEffect, useState } from 'react';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.common.black,\n color: theme.palette.common.white,\n maxWidth: 600,\n position: 'fixed',\n bottom: 0,\n left: 0,\n margin: theme.spacing(3),\n padding: theme.spacing(3),\n outline: 'none',\n zIndex: 2000\n },\n action: {\n backgroundColor: theme.palette.common.white,\n color: theme.palette.common.black\n }\n}));\n\nfunction CookiesNotification() {\n const classes = useStyles();\n const [open, setOpen] = useState(false);\n\n const handleClose = () => {\n Cookies.set('consent', 'true');\n setOpen(false);\n };\n\n useEffect(() => {\n const consent = Cookies.get('consent');\n\n if (!consent) {\n setOpen(true);\n }\n }, []);\n\n if (!open) {\n return null;\n }\n\n return (\n \n
\n \n Nuestro sitio web utiliza Cookies para garantizar que tendrás la mejor\n experiencia posible. Lee nuestra{' '}\n \n Política de Privacidad\n {' '}\n para más información.\n \n \n \n Aceptar\n \n \n
\n
\n );\n}\n\nexport default CookiesNotification;\n","import React from 'react';\nimport { Helmet } from 'react-helmet';\n\nconst GA_MEASUREMENT_ID = process.env.REACT_APP_GA_MEASUREMENT_ID;\n\nfunction GoogleAnalytics() {\n return (\n \n \n \n \n );\n}\n\nexport default GoogleAnalytics;\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router';\n\nfunction ScrollReset() {\n const location = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [location.pathname]);\n\n return null;\n}\n\nexport default ScrollReset;\n","import { useContext } from 'react';\nimport SettingsContext from 'src/context/SettingsContext';\n\nexport default function useSettings() {\n const context = useContext(SettingsContext);\n\n return context;\n}\n","import React, { FC } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport { getCardUser } from 'src/utils/auth';\n\nconst CardGuard: FC = ({ children }) => {\n const cardUser = getCardUser();\n if (!cardUser) {\n return ;\n }\n return <>{children};\n};\n\nexport default CardGuard;\n","import React, { FC } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport { getCardUser } from 'src/utils/auth';\n\nconst GuestCardGuard: FC = ({ children }) => {\n const cardUser = getCardUser();\n if (cardUser) {\n return ;\n }\n return <>{children};\n};\n\nexport default GuestCardGuard;\n","import React, { FC } from 'react';\nimport { useSelector } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\nimport { AppState } from 'src/store';\nimport { AccountState } from 'src/store/account/types';\n\nconst GuestGuard: FC = ({ children }) => {\n const account = useSelector((state) => state.account);\n\n if (account.user) {\n return ;\n }\n\n return <>{children};\n};\n\nexport default GuestGuard;\n","import React, { useEffect } from 'react';\nimport NProgress from 'nprogress';\nimport { Box, LinearProgress, makeStyles } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n alignItems: 'center',\n backgroundColor: theme.palette.background.default,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n justifyContent: 'center',\n minHeight: '100%',\n padding: theme.spacing(3)\n }\n}));\n\nfunction LoadingScreen() {\n const classes = useStyles();\n\n useEffect(() => {\n NProgress.start();\n\n return () => {\n NProgress.done();\n };\n }, []);\n\n return (\n
\n \n \n \n
\n );\n}\n\nexport default LoadingScreen;\n","import React, { FC } from 'react';\nimport { useSelector } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\nimport { AppState } from 'src/store';\nimport { AccountState } from 'src/store/account/types';\n\ntype Props = (allowedRoles?: Role[]) => FC;\n\nconst rolesGuard: Props = (allowedRoles) => ({ children }) => {\n const account = useSelector((state) => state.account);\n\n if (\n allowedRoles &&\n allowedRoles.length > 0 &&\n account.user &&\n allowedRoles.includes(account.user.groups[0].name)\n ) {\n return <>{children};\n }\n\n return ;\n};\n\nexport default rolesGuard;\n","import React, { useState } from 'react';\nimport { NavLink as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { Button, Collapse, ListItem, makeStyles } from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n display: 'block',\n paddingTop: 0,\n paddingBottom: 0\n },\n itemLeaf: {\n display: 'flex',\n paddingTop: 0,\n paddingBottom: 0\n },\n button: {\n color: theme.palette.text.secondary,\n padding: '10px 8px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%'\n },\n buttonLeaf: {\n color: theme.palette.text.secondary,\n padding: '10px 8px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%',\n fontWeight: theme.typography.fontWeightRegular,\n '&.depth-0': {\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n }\n }\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n marginRight: theme.spacing(1)\n },\n title: {\n marginRight: 'auto'\n },\n active: {\n color: theme.palette.secondary.main,\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n },\n '& $icon': {\n color: theme.palette.secondary.main\n }\n }\n}));\n\nfunction NavItem({\n title,\n href,\n depth,\n children,\n icon: Icon,\n className,\n open: openProp,\n info: Info,\n ...rest\n}) {\n const classes = useStyles();\n const [open, setOpen] = useState(openProp);\n\n const handleToggle = () => {\n setOpen((prevOpen) => !prevOpen);\n };\n\n let paddingLeft = 8;\n\n if (depth > 0) {\n paddingLeft = 32 + 8 * depth;\n }\n\n const style = { paddingLeft };\n\n if (children) {\n return (\n \n \n {children}\n \n );\n }\n\n return (\n \n \n {Icon && }\n {title}\n {Info && }\n \n \n );\n}\n\nNavItem.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n depth: PropTypes.number.isRequired,\n href: PropTypes.string,\n icon: PropTypes.any,\n info: PropTypes.any,\n open: PropTypes.bool,\n title: PropTypes.string.isRequired\n};\n\nNavItem.defaultProps = {\n open: false\n};\n\nexport default NavItem;\n","/* eslint-disable no-use-before-define */\n/* eslint-disable react/prop-types */\nimport {\n Avatar,\n Box,\n Divider,\n Drawer,\n Hidden,\n Link,\n List,\n ListSubheader,\n makeStyles,\n Typography\n} from '@material-ui/core';\nimport UsersIcon from '@material-ui/icons/Group';\nimport WorkIcon from '@material-ui/icons/Work';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\nimport { PieChart as PieChartIcon } from 'react-feather';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport { useSelector } from 'react-redux';\nimport { matchPath, useLocation } from 'react-router';\nimport { Link as RouterLink } from 'react-router-dom';\nimport Logo from 'src/components/Logo';\nimport { APP_VERSION } from 'src/config';\nimport { getRoleName } from 'src/utils/role';\nimport NavItem from './NavItem';\n\nconst dashboardItem = {\n title: 'Tablero de control',\n icon: PieChartIcon,\n href: '/dashboard'\n};\n\nconst adminNavConfig = [\n {\n subheader: 'Menú',\n items: [dashboardItem]\n },\n {\n subheader: 'Administración',\n items: [\n {\n title: 'Pólizas',\n href: '/policies',\n icon: WorkIcon\n },\n {\n title: 'Usuarios',\n href: '/users',\n icon: UsersIcon\n }\n ]\n }\n];\n\nconst employeeNavConfig = [\n {\n subheader: 'Menú',\n items: [dashboardItem]\n },\n {\n subheader: 'Administración',\n items: [\n {\n title: 'Pólizas',\n href: '/policies',\n icon: WorkIcon\n }\n ]\n }\n];\n\nfunction renderNavItems({ items, ...rest }) {\n return (\n \n {items.reduce(\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n (acc, item) => reduceChildRoutes({ acc, item, ...rest }),\n []\n )}\n \n );\n}\n\nfunction reduceChildRoutes({ acc, pathname, item, depth = 0 }) {\n const key = item.title + depth;\n\n if (item.items) {\n const open = matchPath(pathname, {\n path: item.href,\n exact: false\n });\n\n acc.push(\n \n {renderNavItems({\n depth: depth + 1,\n pathname,\n items: item.items\n })}\n \n );\n } else {\n acc.push(\n \n );\n }\n\n return acc;\n}\n\nconst useStyles = makeStyles(() => ({\n mobileDrawer: {\n width: 256\n },\n desktopDrawer: {\n width: 256,\n top: 64,\n height: 'calc(100% - 64px)'\n },\n avatar: {\n cursor: 'pointer',\n width: 64,\n height: 64\n }\n}));\n\nfunction NavBar({ openMobile, onMobileClose, openDesktop }) {\n const classes = useStyles();\n const location = useLocation();\n const { user } = useSelector((state) => state.account);\n const [navigationItems, setNavigationItems] = useState([]);\n\n useEffect(() => {\n if (user !== null) {\n switch (user.groups[0].name) {\n case 'admin':\n setNavigationItems(adminNavConfig);\n break;\n case 'employee':\n setNavigationItems(employeeNavConfig);\n break;\n default:\n }\n }\n }, [user]);\n\n useEffect(() => {\n if (openMobile && onMobileClose) {\n onMobileClose();\n }\n // eslint-disable-next-line\n }, [location.pathname]);\n\n const content = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {`${user.first_name} ${user.last_name}`}\n \n \n {getRoleName(user.groups[0].name)}\n \n \n \n \n \n {navigationItems.map((config) => (\n \n {config.subheader}\n \n }\n >\n {renderNavItems({\n items: config.items,\n pathname: location.pathname\n })}\n \n ))}\n \n \n \n \n \n {`v${APP_VERSION}`}\n \n \n Powered by{' '}\n \n Inappsis\n \n \n \n \n \n \n );\n\n return (\n <>\n \n \n {content}\n \n \n \n \n {content}\n \n \n \n );\n}\n\nNavBar.propTypes = {\n onMobileClose: PropTypes.func,\n openMobile: PropTypes.bool,\n openDesktop: PropTypes.bool\n};\n\nexport default NavBar;\n","export const getRoleName = (role: Role) => {\n if (role === 'admin') {\n return 'Administrador';\n }\n if (role === 'employee') {\n return 'Empleado';\n }\n return '';\n};\n","import {\n Avatar,\n Box,\n ButtonBase,\n Hidden,\n makeStyles,\n Menu,\n MenuItem,\n Typography\n} from '@material-ui/core';\nimport { useSnackbar } from 'notistack';\nimport React, { useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router';\nimport { logout } from 'src/store/account/actions';\n\nconst useStyles = makeStyles((theme) => ({\n avatar: {\n height: 32,\n width: 32,\n marginRight: theme.spacing(1)\n },\n popover: {\n width: 200\n }\n}));\n\nfunction Account() {\n const classes = useStyles();\n const history = useHistory();\n const ref = useRef(null);\n const dispatch = useDispatch();\n const account = useSelector((state) => state.account);\n const { enqueueSnackbar } = useSnackbar();\n const [isOpen, setOpen] = useState(false);\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleLogout = async () => {\n try {\n handleClose();\n await dispatch(logout());\n history.push('/');\n } catch (error) {\n enqueueSnackbar('Unable to logout', {\n variant: 'error'\n });\n }\n };\n\n return (\n <>\n \n \n \n \n {`${account.user.first_name} ${account.user.last_name}`}\n \n \n \n \n Salir\n \n \n );\n}\n\nexport default Account;\n","import React from 'react';\n\nfunction Logo(props) {\n return (\n \n );\n}\n\nexport default Logo;\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport {\n AppBar,\n Box,\n Hidden,\n IconButton,\n makeStyles,\n SvgIcon,\n Toolbar\n} from '@material-ui/core';\nimport { Menu as MenuIcon } from 'react-feather';\nimport { THEMES } from 'src/constants';\nimport Account from './Account';\nimport LogoTop from '../../../components/LogoTop';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n zIndex: theme.zIndex.drawer + 100,\n ...(theme.name === THEMES.LIGHT\n ? {\n boxShadow: 'none',\n backgroundColor: theme.palette.primary.main\n }\n : {}),\n ...(theme.name === THEMES.ONE_DARK\n ? {\n backgroundColor: theme.palette.background.default\n }\n : {})\n },\n toolbar: {\n minHeight: 64,\n paddingLeft: theme.spacing(1)\n },\n logo: {\n marginLeft: theme.spacing(1),\n display: 'flex'\n }\n}));\n\nfunction TopBar({ className, onMobileNavOpen, onDesktopNavTouch, ...rest }) {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nTopBar.propTypes = {\n className: PropTypes.string,\n onMobileNavOpen: PropTypes.func,\n onDesktopNavTouch: PropTypes.func\n};\n\nexport default TopBar;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core';\nimport useSettings from 'src/hooks/useSettings';\nimport NavBar from './NavBar';\nimport TopBar from './TopBar';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.dark,\n display: 'flex',\n height: '100%',\n overflow: 'hidden',\n width: '100%'\n },\n wrapper: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden',\n paddingTop: 64\n },\n wrapperNavBarOpen: {\n [theme.breakpoints.up('lg')]: {\n paddingLeft: 256\n }\n },\n contentContainer: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden'\n },\n content: {\n flex: '1 1 auto',\n height: '100%',\n overflow: 'auto'\n }\n}));\n\nfunction DashboardLayout({ children }) {\n const classes = useStyles();\n const { settings, saveSettings } = useSettings();\n const [isMobileNavOpen, setMobileNavOpen] = useState(false);\n\n return (\n
\n setMobileNavOpen(true)}\n onDesktopNavTouch={() =>\n saveSettings({ openNavBar: !settings.openNavBar })\n }\n />\n setMobileNavOpen(false)}\n openMobile={isMobileNavOpen}\n openDesktop={settings.openNavBar}\n />\n \n
\n
{children}
\n
\n
\n \n );\n}\n\nDashboardLayout.propTypes = {\n children: PropTypes.any\n};\n\nexport default DashboardLayout;\n","/* eslint-disable react/no-array-index-key */\nimport React, { Fragment, lazy, Suspense } from 'react';\nimport { Redirect, Route, Switch } from 'react-router-dom';\nimport CardGuard from './components/CardGuard';\nimport GuestCardGuard from './components/GuestCardGuard';\nimport GuestGuard from './components/GuestGuard';\nimport LoadingScreen from './components/LoadingScreen';\nimport rolesGuard from './components/RolesGuard';\nimport DashboardLayout from './layouts/DashboardLayout';\n\ntype RoutesType = {\n exact?: boolean;\n path?: string;\n guard?: any;\n layout?: any;\n component?: any;\n routes?: RoutesType[];\n};\n\nconst routesConfig: RoutesType[] = [\n {\n exact: true,\n path: '/',\n guard: GuestCardGuard,\n component: lazy(() => import('./views/cards/SolidariaView'))\n },\n {\n exact: true,\n guard: CardGuard,\n path: '/carnet',\n component: lazy(() => import('./views/cards/SolidariaView/Card'))\n },\n {\n exact: true,\n guard: CardGuard,\n path: '/logout',\n component: lazy(() => import('./views/cards/SolidariaView/Logout'))\n },\n {\n exact: true,\n guard: CardGuard,\n path: '/avisos',\n component: lazy(() => import('./views/cards/SolidariaView/Notices'))\n },\n {\n exact: true,\n path: '/404',\n component: lazy(() => import('./views/pages/Error404View'))\n },\n {\n exact: true,\n path: '/privacy-policy',\n component: lazy(() => import('./views/terms/PrivacyPolicyView'))\n },\n {\n exact: true,\n path: '/terms-of-service',\n component: lazy(() => import('./views/terms/ToSView'))\n },\n {\n exact: true,\n guard: GuestGuard,\n path: '/login',\n component: lazy(() => import('./views/auth/LoginView'))\n },\n {\n path: '/dashboard',\n guard: rolesGuard(['admin', 'employee']),\n layout: DashboardLayout,\n routes: [\n {\n exact: true,\n path: '/dashboard',\n component: lazy(() => import('./views/pages/DashboardView'))\n }\n ]\n },\n {\n path: '/policies',\n guard: rolesGuard(['admin', 'employee']),\n layout: DashboardLayout,\n routes: [\n {\n exact: true,\n path: '/policies',\n component: lazy(() => import('./views/pages/PoliciesView/PoliciesList'))\n },\n {\n exact: true,\n path: '/policies/:id/:tab',\n component: lazy(\n () => import('./views/pages/PoliciesView/PoliciesDetail')\n )\n }\n ]\n },\n {\n path: '/users',\n guard: rolesGuard(['admin']),\n layout: DashboardLayout,\n routes: [\n {\n exact: true,\n path: '/users',\n component: lazy(() => import('./views/pages/UsersView/UsersList'))\n }\n ]\n },\n {\n path: '*',\n guard: GuestGuard,\n routes: [\n {\n component: () => \n }\n ]\n }\n];\n\nconst renderRoutes = (routes: RoutesType[]) =>\n routes ? (\n }>\n \n {routes.map((route, i) => {\n const Guard = route.guard || Fragment;\n const Layout = route.layout || Fragment;\n const Component = route.component;\n\n return (\n (\n \n \n {route.routes ? (\n renderRoutes(route.routes)\n ) : (\n \n )}\n \n \n )}\n />\n );\n })}\n \n \n ) : null;\n\nfunction Routes() {\n return renderRoutes(routesConfig);\n}\n\nexport default Routes;\n","export const softShadows = [\n 'none',\n '0 0 0 1px rgba(63,63,68,0.05), 0 1px 2px 0 rgba(63,63,68,0.15)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 2px 2px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 3px 4px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 6px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 4px 8px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 5px 8px -2px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 6px 12px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 7px 12px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 6px 16px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 7px 16px -4px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 8px 18px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 9px 18px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 10px 20px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 11px 20px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 12px 22px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 13px 22px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 14px 24px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 16px 28px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 18px 30px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 20px 32px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 22px 34px -8px rgba(0,0,0,0.25)',\n '0 0 1px 0 rgba(0,0,0,0.31), 0 24px 36px -8px rgba(0,0,0,0.25)'\n];\n\nexport const strongShadows = [\n 'none',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 2px 2px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 3px 4px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 6px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 6px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 4px 8px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 5px 8px -2px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 6px 12px -4px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 7px 12px -4px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 6px 16px -4px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 7px 16px -4px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 8px 18px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 9px 18px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 10px 20px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 11px 20px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 12px 22px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 13px 22px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 14px 24px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 16px 28px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 18px 30px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 20px 32px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 22px 34px -8px rgba(0,0,0,0.50)',\n '0 0 1px 0 rgba(0,0,0,0.70), 0 24px 36px -8px rgba(0,0,0,0.50)'\n];\n","/* eslint-disable no-console */\n/* eslint-disable import/prefer-default-export */\nimport { colors, createMuiTheme, responsiveFontSizes } from '@material-ui/core';\nimport _ from 'lodash';\nimport { THEMES } from '../constants';\nimport { softShadows, strongShadows } from './shadows';\nimport typography from './typography';\n\nconst baseConfig = {\n direction: 'ltr',\n typography,\n overrides: {\n MuiLinearProgress: {\n root: {\n borderRadius: 3,\n overflow: 'hidden'\n }\n },\n MuiListItemIcon: {\n root: {\n minWidth: 32\n }\n },\n MuiChip: {\n root: {\n backgroundColor: 'rgba(0,0,0,0.075)'\n }\n }\n }\n};\n\nconst themeConfigs = [\n {\n name: THEMES.LIGHT,\n overrides: {\n MuiInputBase: {\n input: {\n '&::placeholder': {\n opacity: 1,\n color: colors.blueGrey[600]\n }\n }\n }\n },\n palette: {\n type: 'light',\n action: {\n active: colors.blueGrey[600]\n },\n background: {\n default: colors.common.white,\n dark: '#f4f6f8',\n paper: colors.common.white\n },\n primary: {\n main: '#003f75'\n },\n secondary: {\n main: '#ef8e00'\n },\n text: {\n primary: colors.blueGrey[900],\n secondary: colors.blueGrey[600]\n }\n },\n shadows: softShadows\n },\n {\n name: THEMES.ONE_DARK,\n palette: {\n type: 'dark',\n action: {\n active: 'rgba(255, 255, 255, 0.54)',\n hover: 'rgba(255, 255, 255, 0.04)',\n selected: 'rgba(255, 255, 255, 0.08)',\n disabled: 'rgba(255, 255, 255, 0.26)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n focus: 'rgba(255, 255, 255, 0.12)'\n },\n background: {\n default: '#282C34',\n dark: '#1c2025',\n paper: '#282C34'\n },\n primary: {\n main: '#8a85ff'\n },\n secondary: {\n main: '#8a85ff'\n },\n text: {\n primary: '#e6e5e8',\n secondary: '#adb0bb'\n }\n },\n shadows: strongShadows\n },\n {\n name: THEMES.UNICORN,\n palette: {\n type: 'dark',\n action: {\n active: 'rgba(255, 255, 255, 0.54)',\n hover: 'rgba(255, 255, 255, 0.04)',\n selected: 'rgba(255, 255, 255, 0.08)',\n disabled: 'rgba(255, 255, 255, 0.26)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n focus: 'rgba(255, 255, 255, 0.12)'\n },\n background: {\n default: '#2a2d3d',\n dark: '#222431',\n paper: '#2a2d3d'\n },\n primary: {\n main: '#a67dff'\n },\n secondary: {\n main: '#a67dff'\n },\n text: {\n primary: '#f6f5f8',\n secondary: '#9699a4'\n }\n },\n shadows: strongShadows\n }\n];\n\nexport function createTheme(settings = {}) {\n let themeConfig = themeConfigs.find((theme) => {\n return theme.name === settings.theme;\n });\n\n if (!themeConfig) {\n console.warn(new Error(`The theme ${settings.theme} is not valid`));\n [themeConfig] = themeConfigs;\n }\n\n let theme = createMuiTheme(\n _.merge({}, baseConfig, themeConfig, { direction: settings.direction })\n );\n\n if (settings.responsiveFontSizes) {\n theme = responsiveFontSizes(theme);\n }\n\n return theme;\n}\n","export default {\n h1: {\n fontWeight: 500,\n fontSize: 35,\n letterSpacing: '-0.24px'\n },\n h2: {\n fontWeight: 500,\n fontSize: 29,\n letterSpacing: '-0.24px'\n },\n h3: {\n fontWeight: 500,\n fontSize: 24,\n letterSpacing: '-0.06px'\n },\n h4: {\n fontWeight: 500,\n fontSize: 20,\n letterSpacing: '-0.06px'\n },\n h5: {\n fontWeight: 500,\n fontSize: 16,\n letterSpacing: '-0.05px'\n },\n h6: {\n fontWeight: 500,\n fontSize: 14,\n letterSpacing: '-0.05px'\n },\n overline: {\n fontWeight: 500\n }\n};\n","import MomentUtils from '@date-io/moment';\nimport {\n createStyles,\n makeStyles,\n StylesProvider,\n ThemeProvider\n} from '@material-ui/core';\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\nimport { createBrowserHistory } from 'history';\nimport { SnackbarProvider } from 'notistack';\nimport React from 'react';\nimport { Router } from 'react-router-dom';\nimport Auth from './components/Auth';\nimport CookiesNotification from './components/CookiesNotification';\nimport GoogleAnalytics from './components/GoogleAnalytics';\nimport ScrollReset from './components/ScrollReset';\nimport useSettings from './hooks/useSettings';\nimport Routes from './Routes';\nimport { createTheme } from './theme';\n\nconst history = createBrowserHistory();\n\nconst useStyles = makeStyles(() =>\n createStyles({\n '@global': {\n '*': {\n boxSizing: 'border-box',\n margin: 0,\n padding: 0\n },\n html: {\n '-webkit-font-smoothing': 'antialiased',\n '-moz-osx-font-smoothing': 'grayscale',\n height: '100%',\n width: '100%'\n },\n body: {\n height: '100%',\n width: '100%'\n },\n '#root': {\n height: '100%',\n width: '100%'\n }\n }\n })\n);\n\nfunction App() {\n useStyles();\n\n const { settings } = useSettings();\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","import { enableES5 } from 'immer';\nimport moment from 'moment';\nimport 'moment/locale/es';\nimport 'nprogress/nprogress.css';\nimport React from 'react';\nimport 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport ReactDOM from 'react-dom';\nimport 'react-perfect-scrollbar/dist/css/styles.css';\nimport { Provider } from 'react-redux';\nimport { SettingsProvider } from 'src/context/SettingsContext';\nimport * as serviceWorker from 'src/serviceWorker';\nimport { configureStore } from 'src/store';\nimport { restoreSettings } from 'src/utils/settings';\nimport App from './App';\n\nmoment.locale('es');\n\nenableES5();\n\nconst store = configureStore();\nconst settings = restoreSettings();\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root')\n);\n\nserviceWorker.unregister();\n","import ky from 'ky';\nimport { API_PREFIX } from 'src/config';\nimport store from 'src/store';\nimport { logout } from 'src/store/account/actions';\nimport { getAuthToken } from 'src/utils/auth';\n\nconst api = ky.create({\n timeout: false,\n prefixUrl: API_PREFIX,\n hooks: {\n beforeRequest: [\n async (request) => {\n const token = getAuthToken();\n if (token) {\n request.headers.set('Authorization', `JWT ${token}`);\n }\n }\n ],\n afterResponse: [\n async (request, options, response) => {\n if (response.status === 401) {\n await store.dispatch(logout());\n window.location.href = '/';\n }\n }\n ]\n }\n});\n\nexport default api;\n"],"sourceRoot":""}