{"version":3,"sources":["redux/actions/actionTypes.js","redux/reducers/recentlyActivity.js","redux/reducers/wrapCodes.js","redux/reducers/index.js","redux/store/index.js","components/@material-extend/MHidden.js","theme/shape.js","theme/palette.js","theme/typography.js","theme/overrides/index.js","theme/overrides/Card.js","theme/overrides/Lists.js","theme/overrides/Paper.js","theme/overrides/Input.js","theme/overrides/Button.js","theme/overrides/Tooltip.js","theme/overrides/Backdrop.js","theme/overrides/Typography.js","theme/overrides/IconButton.js","theme/overrides/Autocomplete.js","theme/shadows.js","theme/index.js","layouts/dashboard/Searchbar.js","components/MenuPopover.js","layouts/dashboard/AccountPopover.js","utils/mockImages.js","components/Scrollbar.js","layouts/dashboard/NotificationsPopover.js","components/Logo.js","layouts/dashboard/DashboardNavbar.js","components/NavSection.js","layouts/dashboard/SidebarConfig.js","layouts/dashboard/DashboardFooter.js","layouts/dashboard/index.js","layouts/LogoOnlyLayout.js","layouts/AuthLayout.js","components/Page.js","components/authentication/login/LoginForm.js","components/authentication/AuthSocial.js","pages/Login.js","components/authentication/register/RegisterForm.js","pages/Register.js","layouts/SImpleLoading/SimpleLoading.js","api/awsConnect.js","components/_dashboard/app/AgentAvailability.js","components/_dashboard/app/QueueMetricsAvailability.js","components/charts/BaseOptionChart.js","components/_dashboard/app/AppCurrentSubject.js","components/_dashboard/app/AppCurrentVisits.js","components/_dashboard/app/ContactsInQueue.js","components/_dashboard/app/AppNewsUpdate.js","components/_dashboard/app/TotalWaiting.js","components/_dashboard/app/ACDTalkTime.js","components/_dashboard/app/AppOrderTimeline.js","components/_dashboard/app/AppTrafficBySite.js","components/_dashboard/app/TotalCustomers.js","api/backend.js","components/_dashboard/app/RecentActivity.js","api/HistoricalMetrics.js","components/_dashboard/app/WaitTime.js","components/_dashboard/app/Contacts.js","components/_dashboard/app/HandlingTime.js","components/_dashboard/app/WrapUpCode.js","components/Dailer/atom.js","components/Dailer/index.js","components/_dashboard/app/WrapUpCodeSelect.js","components/_dashboard/app/AgentPerformance.js","components/_dashboard/app/AgentStatus.js","components/_dashboard/app/AgentActivities.js","pages/DashboardApp.js","pages/AgentApp.js","pages/QueueMetricsApp.js","pages/Contact.js","components/_dashboard/blog/BlogPostCard.js","components/_dashboard/blog/BlogPostsSearch.js","_mocks_/blog.js","components/Label.js","components/_dashboard/user/UserListToolbar.js","_mocks_/user.js","components/animate/variants/Wrap.js","components/animate/variants/bounce/BounceIn.js","components/animate/variants/bounce/BounceOut.js","components/animate/MotionContainer.js","pages/Page404.js","pages/Phone.js","routes.js","theme/globalStyles.js","components/ScrollToTop.js","App.js","serviceWorker.js","reportWebVitals.js","index.js"],"names":["ADD_RECENTLY_ACTIVITY","ADD_WRAP_CODE","REMOVE_WRAP_CODE","initialValues","data","RecentlyActivity","state","action","type","actionTypes","_","uniqBy","payload","RESET_ACTIVITY","WrapCodes","Array","from","Set","remove","item","rootReducers","combineReducers","recentlyActivity","store","createStore","rootReducer","compose","applyMiddleware","thunk","MHidden","width","children","breakpoint","substring","hiddenUp","useMediaQuery","theme","breakpoints","up","hiddenDown","down","includes","propTypes","PropTypes","node","oneOf","isRequired","shape","borderRadius","borderRadiusSm","borderRadiusMd","createGradient","color1","color2","GREY","0","100","200","300","400","500","600","700","800","900","alpha","PRIMARY","lighter","light","main","dark","darker","contrastText","INFO","SUCCESS","WARNING","ERROR","GRADIENTS","primary","info","success","warning","error","palette","common","black","white","customBlackThemeColor","lightGray","darkGray","sidebarTextColor","accoutBox","charts","cardColor","secondary","grey","gradients","chart","violet","blue","green","yellow","red","divider","text","disabled","background","paper","default","neutral","active","hover","selected","disabledBackground","focus","hoverOpacity","disabledOpacity","pxToRem","value","responsiveFontSizes","sm","md","lg","fontSize","typography","fontFamily","fontWeightRegular","fontWeightMedium","fontWeightBold","h1","fontWeight","lineHeight","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","caption","overline","letterSpacing","textTransform","button","ComponentsOverrides","merge","MuiCard","styleOverrides","root","boxShadow","customShadows","z16","position","zIndex","MuiCardHeader","defaultProps","titleTypographyProps","variant","subheaderTypographyProps","padding","spacing","MuiCardContent","Card","MuiListItemIcon","color","minWidth","marginRight","MuiListItemAvatar","MuiListItemText","marginTop","marginBottom","multiline","Lists","MuiPaper","elevation","backgroundImage","MuiInputBase","input","opacity","MuiInput","underline","borderBottomColor","MuiFilledInput","backgroundColor","MuiOutlinedInput","borderColor","Input","MuiButton","sizeLarge","height","containedInherit","z8","containedPrimary","containedSecondary","outlinedInherit","border","textInherit","Button","MuiTooltip","tooltip","arrow","Tooltip","varLow","varHigh","MuiBackdrop","Backdrop","MuiTypography","paragraph","gutterBottom","Typography","MuiIconButton","variants","props","style","IconButton","MuiAutocomplete","z20","Autocomplete","LIGHT_MODE","transparent","z1","z12","z24","createCustomShadow","shadows","transparent1","transparent2","transparent3","createShadow","ColorModeContext","React","createContext","toggleColorMode","mode","ThemeConfig","useState","setMode","colorMode","useMemo","prevMode","themeOptions","createTheme","components","componentsOverride","Provider","StyledEngineProvider","injectFirst","ThemeProvider","CssBaseline","styled","top","left","display","alignItems","backdropFilter","WebkitBackdropFilter","right","content","transform","borderRight","borderBottom","Badge","animation","mockImgCover","index","mockImgAvatar","flexGrow","overflow","SimpleBarReact","maxHeight","faker","datatype","uuid","set","Date","hours","minutes","name","findName","sub","days","Logo","sx","Box","component","src","DashboardNavbar","onOpenSidebar","openRightBar","setOpenRightBar","useContext","RootStyle","AppBar","DRAWER_WIDTH","ToolbarStyle","Toolbar","minHeight","LogoContainer","onClick","mr","icon","menu2Fill","Stack","direction","xs","ListItemButton","disableGutters","paddingLeft","paddingRight","flexDirection","bottom","borderTopLeftRadius","borderBottomLeftRadius","ListItemIcon","paddingBottom","paddingTop","justifyContent","ListItemText","alignItem","alignSelf","textAlign","cursor","getIcon","phoneFilled","refreshFill","DashboardFooter","useTheme","MainStyle","APP_BAR_MOBILE","APP_BAR_DESKTOP","DashboardLayout","setOpen","HeaderStyle","LogoOnlyLayout","to","AuthLayout","mt","Page","forwardRef","ref","title","other","string","LoginForm","navigate","useNavigate","showPassword","setShowPassword","LoginSchema","Yup","email","required","password","formik","useFormik","remember","validationSchema","onSubmit","replace","errors","touched","values","isSubmitting","handleSubmit","getFieldProps","autoComplete","noValidate","TextField","fullWidth","label","Boolean","helperText","InputProps","endAdornment","InputAdornment","show","edge","eyeFill","eyeOffFill","my","FormControlLabel","control","Checkbox","checked","Link","RouterLink","LoadingButton","size","loading","AuthSocial","googleFill","facebookFill","twitterFill","Divider","SectionStyle","maxWidth","margin","ContentStyle","Login","px","mb","alt","Container","align","RegisterForm","RegisterSchema","firstName","min","max","lastName","prev","Register","SimpleLoading","awsConnectInstanceId","process","awsConnect","AWS","Connect","apiVersion","accessKeyId","secretAccessKey","region","NoData","Detail","AgentAvailability","totalAgents","agentAvailable","agentOnline","API_Client","GetWallboard","XMLHttpRequest","onreadystatechange","ProcessResponse","open","setRequestHeader","timeout","ontimeout","ProcessTimeout","send","setTimeout","readyState","DONE","Result","responseText","document","getElementById","innerHTML","console","log","useEffect","id","overflowY","overflowX","QueueMetricsAvailability","BaseOptionChartStyle","GlobalStyles","styles","alignContent","borderTop","CHART_HEIGHT","ChildrenStyles","Child2ItemsStyle","ContactsInQueue","contactsInQueue","voice","map","setIndex","description","lorem","paragraphs","image","postedAt","date","soon","marginLeft","past","number","linkedinFill","backendURL","instance","axios","create","baseURL","ActivityHeader","TimeLineCustomItem","TimelineItem","ActivityContent","RecentActivity","agentname","useSelector","recentlyActivityData","setRecentlyActivityData","getRecentActivities","a","Backend","method","url","sortBy","body","Items","reverse","interval","setInterval","clearInterval","Timeline","length","startingTime","moment","startTime","format","startOf","momentTZ","tz","fromNow","TimelineSeparator","TimelineDot","TimelineConnector","TimelineContent","className","callType","phoneNumber","wrapCodes","historicalValues","Name","Unit","Statistic","Threshold","Comparison","ThresholdValue","currentMetrics","BoxContainer","WaitTime","contactsHandled","setcontactsHandled","contactsHandledIncoming","setcontactsHandledIncoming","contactsHandledOutbound","setcontactsHandledOutbound","setcontactsHandledCallback","contactsAbondoned","setcontactsAbondoned","contactsMissed","setcontactsMissed","interactionTime","setinteractionTime","handleTime","sethandleTime","queueAnswerTime","setqueueAnswerTime","serviceLevel","setserviceLevel","serviceLevel500","setserviceLevel500","metricData","setmetricData","currentMetricsInterval","myDate","toLocaleString","timeZone","startDate","setHours","setMinutes","setSeconds","getTime","endDate","endTimeCalc","getMinutes","getMetricData","InstanceId","StartTime","EndTime","Filters","Channels","Queues","Groupings","HistoricalMetrics","MaxResults","err","MetricResults","Collections","colItem","Metric","Value","stack","Grid","container","ls","xl","borderLeft","ChildItem","ChildContainer","SmallBox","Contacts","contactInQueue","setContactInQueue","agentOnCall","setAgentOnCall","setAgentAvailable","agentOnContact","setagentOnContact","agentACW","setagentACW","agentError","setagentError","setAgentOnline","setMetricsData","getCurrentMetricData","CurrentMetrics","div","opened","css","placeholder","onCall","role","containerRef","useRef","connected","setConnected","useDispatch","message","connect","core","initCCP","current","ccpUrl","iframeTitle","loginPopup","loginPopupAutoClose","softphone","allowFramedSoftphone","pageOptions","enableAudioDeviceSettings","enablePhoneTypeSettings","onInitialized","onAccessDenied","onViewContact","event","contactId","onAuthFail","onIframeRetriesExhausted","onSoftphoneSessionInit","connectionId","softphoneManager","getSoftphoneManager","session","getSession","contact","agent","setAgentName","getName","getEventBus","onIncoming","onRefresh","onAccepted","onEnded","getContactId","findContactId","find","describeContact","ContactId","dialedNumber","getConnections","getEndpoint","stripPhoneNumber","Agent","channel","Contact","Channel","InitiationMethod","InitiationTimestamp","endTime","DisconnectTimestamp","agentID","AgentInfo","Id","addRecentActivity","timestamp","now","onMissed","conParams","getQueue","onConnected","activity","setContactId","WrapCodeContainer","WrapUpCodeSelect","contactid","isdisabled","setisdisabled","addrtype","wrapupCode","setWrapupCode","Add","updateActivity","onChange","e","target","setRole","handleAddrTypeChange","address","key","undefined","AgentPerformance","totalCalls","settotalCalls","totalOutboundCalls","settotalOutboundCalls","totalInboundCalls","settotalInboundCalls","totalTalkTime","settotalTalkTime","averageTalkTime","setaverageTalkTime","AgentStatus","StatusUpdateTime","yy","utc","duration","diff","asMilliseconds","FullAgentName","DashboardApp","setTotalAgents","setContactshandled","setHandleTIme","hour","seconds","totalHandledTime","setTotalHandledTime","setAverageHandleTime","listAgentStatuses","AgentStatusSummaryList","currentMinute","parseInt","unix","subHours","subtract","forEach","totalTime","split","avgSeconds","parseFloat","toFixed","averageTime","AgentApp","QueueMetricsApp","pb","WebkitLineClamp","WebkitBoxOrient","Avatar","flexWrap","objectFit","transition","transitions","easing","easeInOut","shorter","borderWidth","POST_TITLES","cover","createdAt","view","comment","share","favorite","author","avatarUrl","ownerState","whiteSpace","styleFilled","styleOutlined","styleGhost","OutlinedInput","company","companyName","isVerified","boolean","status","sample","varWrapEnter","animate","staggerChildren","TRANSITION_ENTER","ease","TRANSITION_EXIT","varBounceIn","scale","exit","y","scaleY","x","scaleX","MotionContainer","motion","initial","Page404","mx","Phone","Dailer","Router","useRoutes","path","element","boxSizing","html","WebkitOverflowScrolling","MozAppearance","WebkitAppearance","textarea","img","WebkitFilter","filter","ScrollToTop","pathname","useLocation","window","scrollTo","App","location","hostname","match","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","navigator","serviceWorker","ready","registration","unregister","catch"],"mappings":"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","file":"static/js/main.d2fccc95.chunk.js","sourcesContent":["export default {\r\n ADD_RECENTLY_ACTIVITY: 'ADD_RECENTLY_ACTIVITY',\r\n ADD_WRAP_CODE: 'ADD_WRAP_CODE',\r\n REMOVE_WRAP_CODE: 'REMOVE_WRAP_CODE'\r\n};\r\n","import actionTypes from '../actions/actionTypes';\r\nimport _ from 'lodash';\r\nconst initialValues = {\r\n data: []\r\n};\r\n\r\nconst RecentlyActivity = (state = initialValues, action) => {\r\n switch (action.type) {\r\n case actionTypes.ADD_RECENTLY_ACTIVITY:\r\n return {\r\n data: _.uniqBy([...state.data, action.payload], 'contactId')\r\n };\r\n case actionTypes.RESET_ACTIVITY:\r\n return {\r\n data: []\r\n };\r\n default:\r\n return initialValues;\r\n }\r\n};\r\n\r\nexport default RecentlyActivity;\r\n","import actionTypes from '../actions/actionTypes';\r\nimport _ from 'lodash';\r\nconst initialValues = {\r\n data: []\r\n};\r\n\r\nconst WrapCodes = (state = initialValues, action) => {\r\n switch (action.type) {\r\n case actionTypes.ADD_WRAP_CODE:\r\n return {\r\n data: Array.from(new Set([...state.data, action.payload]))\r\n };\r\n case actionTypes.REMOVE_WRAP_CODE:\r\n return {\r\n data: _.remove([...state.data], function (item) {\r\n return item !== action.payload;\r\n })\r\n };\r\n default:\r\n return initialValues;\r\n }\r\n};\r\n\r\nexport default WrapCodes;\r\n","import { combineReducers } from 'redux';\r\nimport recentlyActivity from './recentlyActivity';\r\nimport WrapCodes from './wrapCodes';\r\nconst rootReducers = combineReducers({\r\n recentlyActivity,\r\n WrapCodes\r\n});\r\nexport default rootReducers;\r\n","import { createStore, compose, applyMiddleware } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport rootReducer from '../reducers';\r\nconst store = createStore(rootReducer, {}, compose(applyMiddleware(thunk)));\r\nexport default store;\r\n","import PropTypes from 'prop-types';\r\n// material\r\nimport { useMediaQuery } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nMHidden.propTypes = {\r\n children: PropTypes.node,\r\n width: PropTypes.oneOf([\r\n 'xsDown',\r\n 'smDown',\r\n 'mdDown',\r\n 'lgDown',\r\n 'xlDown',\r\n 'xsUp',\r\n 'smUp',\r\n 'mdUp',\r\n 'lgUp',\r\n 'xlUp'\r\n ]).isRequired\r\n};\r\n\r\nexport default function MHidden({ width, children }) {\r\n const breakpoint = width.substring(0, 2);\r\n\r\n const hiddenUp = useMediaQuery((theme) => theme.breakpoints.up(breakpoint));\r\n const hiddenDown = useMediaQuery((theme) => theme.breakpoints.down(breakpoint));\r\n\r\n if (width.includes('Down')) {\r\n return hiddenDown ? null : children;\r\n }\r\n\r\n if (width.includes('Up')) {\r\n return hiddenUp ? null : children;\r\n }\r\n\r\n return null;\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nconst shape = {\r\n borderRadius: 8,\r\n borderRadiusSm: 12,\r\n borderRadiusMd: 16\r\n};\r\n\r\nexport default shape;\r\n","import { alpha } from '@mui/material/styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nfunction createGradient(color1, color2) {\r\n return `linear-gradient(to bottom, ${color1}, ${color2})`;\r\n}\r\n\r\n// SETUP COLORS\r\nconst GREY = {\r\n 0: '#FFFFFF',\r\n 100: '#F9FAFB',\r\n 200: '#F4F6F8',\r\n 300: '#DFE3E8',\r\n 400: '#C4CDD5',\r\n 500: '#919EAB',\r\n 600: '#637381',\r\n 700: '#454F5B',\r\n 800: '#212B36',\r\n 900: '#161C24',\r\n 500_8: alpha('#919EAB', 0.08),\r\n 500_12: alpha('#919EAB', 0.12),\r\n 500_16: alpha('#919EAB', 0.16),\r\n 500_24: alpha('#919EAB', 0.24),\r\n 500_32: alpha('#919EAB', 0.32),\r\n 500_48: alpha('#919EAB', 0.48),\r\n 500_56: alpha('#919EAB', 0.56),\r\n 500_80: alpha('#919EAB', 0.8)\r\n};\r\n\r\nconst PRIMARY = {\r\n lighter: '#C8FACD',\r\n light: '#5BE584',\r\n main: '#00AB55',\r\n dark: '#007B55',\r\n darker: '#005249',\r\n contrastText: '#fff'\r\n};\r\nconst SECONDARY = {\r\n lighter: '#D6E4FF',\r\n light: '#84A9FF',\r\n main: '#3366FF',\r\n dark: '#1939B7',\r\n darker: '#091A7A',\r\n contrastText: '#fff'\r\n};\r\nconst INFO = {\r\n lighter: '#D0F2FF',\r\n light: '#74CAFF',\r\n main: '#1890FF',\r\n dark: '#0C53B7',\r\n darker: '#04297A',\r\n contrastText: '#fff'\r\n};\r\nconst SUCCESS = {\r\n lighter: '#E9FCD4',\r\n light: '#AAF27F',\r\n main: '#54D62C',\r\n dark: '#229A16',\r\n darker: '#08660D',\r\n contrastText: GREY[800]\r\n};\r\nconst WARNING = {\r\n lighter: '#FFF7CD',\r\n light: '#FFE16A',\r\n main: '#FFC107',\r\n dark: '#B78103',\r\n darker: '#7A4F01',\r\n contrastText: GREY[800]\r\n};\r\nconst ERROR = {\r\n lighter: '#FFE7D9',\r\n light: '#FFA48D',\r\n main: '#FF4842',\r\n dark: '#B72136',\r\n darker: '#7A0C2E',\r\n contrastText: '#fff'\r\n};\r\n\r\nconst GRADIENTS = {\r\n primary: createGradient(PRIMARY.light, PRIMARY.main),\r\n info: createGradient(INFO.light, INFO.main),\r\n success: createGradient(SUCCESS.light, SUCCESS.main),\r\n warning: createGradient(WARNING.light, WARNING.main),\r\n error: createGradient(ERROR.light, ERROR.main)\r\n};\r\n\r\nconst CHART_COLORS = {\r\n violet: ['#826AF9', '#9E86FF', '#D0AEFF', '#F7D2FF'],\r\n blue: ['#2D99FF', '#83CFFF', '#A5F3FF', '#CCFAFF'],\r\n green: ['#2CD9C5', '#60F1C8', '#A4F7CC', '#C0F2DC', '#1EBD93'],\r\n yellow: ['#FFE700', '#FFEF5A', '#FFF7AE', '#FFF3D6'],\r\n red: ['#FF6C40', '#FF8F6D', '#FFBD98', '#FFF2D4']\r\n};\r\n\r\nconst palette = {\r\n common: { black: '#000', white: '#fff' },\r\n primary: { ...PRIMARY },\r\n customBlackThemeColor: {\r\n white: '#FEFEFE',\r\n lightGray: '#232B32',\r\n darkGray: '#151B20',\r\n sidebarTextColor: '#768894',\r\n accoutBox: '#28333B',\r\n charts: '#212B33',\r\n cardColor: '#EBEBEB'\r\n },\r\n secondary: { ...SECONDARY },\r\n info: { ...INFO },\r\n success: { ...SUCCESS },\r\n warning: { ...WARNING },\r\n error: { ...ERROR },\r\n grey: GREY,\r\n gradients: GRADIENTS,\r\n chart: CHART_COLORS,\r\n divider: GREY[500_24],\r\n text: { primary: GREY[800], secondary: GREY[600], disabled: GREY[500] },\r\n background: { paper: '#fff', default: '#fff', neutral: GREY[200] },\r\n action: {\r\n active: GREY[600],\r\n hover: GREY[500_8],\r\n selected: GREY[500_16],\r\n disabled: GREY[500_80],\r\n disabledBackground: GREY[500_24],\r\n focus: GREY[500_24],\r\n hoverOpacity: 0.08,\r\n disabledOpacity: 0.48\r\n }\r\n};\r\n\r\nexport default palette;\r\n","// ----------------------------------------------------------------------\r\n\r\nfunction pxToRem(value) {\r\n return `${value / 16}rem`;\r\n}\r\n\r\nfunction responsiveFontSizes({ sm, md, lg }) {\r\n return {\r\n '@media (min-width:600px)': {\r\n fontSize: pxToRem(sm)\r\n },\r\n '@media (min-width:900px)': {\r\n fontSize: pxToRem(md)\r\n },\r\n '@media (min-width:1200px)': {\r\n fontSize: pxToRem(lg)\r\n }\r\n };\r\n}\r\n\r\nconst FONT_PRIMARY = 'Public Sans, sans-serif';\r\n\r\nconst typography = {\r\n fontFamily: FONT_PRIMARY,\r\n fontWeightRegular: 400,\r\n fontWeightMedium: 600,\r\n fontWeightBold: 700,\r\n h1: {\r\n fontWeight: 700,\r\n lineHeight: 80 / 64,\r\n fontSize: pxToRem(40),\r\n ...responsiveFontSizes({ sm: 52, md: 58, lg: 64 })\r\n },\r\n h2: {\r\n fontWeight: 700,\r\n lineHeight: 64 / 48,\r\n fontSize: pxToRem(32),\r\n ...responsiveFontSizes({ sm: 40, md: 44, lg: 48 })\r\n },\r\n h3: {\r\n fontWeight: 700,\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(24),\r\n ...responsiveFontSizes({ sm: 26, md: 30, lg: 32 })\r\n },\r\n h4: {\r\n fontWeight: 700,\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(20),\r\n ...responsiveFontSizes({ sm: 20, md: 24, lg: 24 })\r\n },\r\n h5: {\r\n fontWeight: 700,\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(18),\r\n ...responsiveFontSizes({ sm: 19, md: 20, lg: 20 })\r\n },\r\n h6: {\r\n fontWeight: 700,\r\n lineHeight: 28 / 18,\r\n fontSize: pxToRem(17),\r\n ...responsiveFontSizes({ sm: 18, md: 18, lg: 18 })\r\n },\r\n subtitle1: {\r\n fontWeight: 600,\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(16)\r\n },\r\n subtitle2: {\r\n fontWeight: 600,\r\n lineHeight: 22 / 14,\r\n fontSize: pxToRem(14)\r\n },\r\n body1: {\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(16)\r\n },\r\n body2: {\r\n lineHeight: 22 / 14,\r\n fontSize: pxToRem(14)\r\n },\r\n caption: {\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(12)\r\n },\r\n overline: {\r\n fontWeight: 700,\r\n lineHeight: 1.5,\r\n fontSize: pxToRem(12),\r\n letterSpacing: 1.1,\r\n textTransform: 'uppercase'\r\n },\r\n button: {\r\n fontWeight: 700,\r\n lineHeight: 24 / 14,\r\n fontSize: pxToRem(14),\r\n textTransform: 'capitalize'\r\n }\r\n};\r\n\r\nexport default typography;\r\n","import { merge } from 'lodash';\r\nimport Card from './Card';\r\nimport Lists from './Lists';\r\nimport Paper from './Paper';\r\nimport Input from './Input';\r\nimport Button from './Button';\r\nimport Tooltip from './Tooltip';\r\nimport Backdrop from './Backdrop';\r\nimport Typography from './Typography';\r\nimport IconButton from './IconButton';\r\nimport Autocomplete from './Autocomplete';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function ComponentsOverrides(theme) {\r\n return merge(\r\n Card(theme),\r\n Lists(theme),\r\n Paper(theme),\r\n Input(theme),\r\n Button(theme),\r\n Tooltip(theme),\r\n Backdrop(theme),\r\n Typography(theme),\r\n IconButton(theme),\r\n Autocomplete(theme)\r\n );\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function Card(theme) {\r\n return {\r\n MuiCard: {\r\n styleOverrides: {\r\n root: {\r\n boxShadow: theme.customShadows.z16,\r\n borderRadius: theme.shape.borderRadiusMd,\r\n position: 'relative',\r\n zIndex: 0 // Fix Safari overflow: hidden with border radius\r\n }\r\n }\r\n },\r\n MuiCardHeader: {\r\n defaultProps: {\r\n titleTypographyProps: { variant: 'h6' },\r\n subheaderTypographyProps: { variant: 'body2' }\r\n },\r\n styleOverrides: {\r\n root: {\r\n padding: theme.spacing(3, 3, 0)\r\n }\r\n }\r\n },\r\n MuiCardContent: {\r\n styleOverrides: {\r\n root: {\r\n padding: theme.spacing(3)\r\n }\r\n }\r\n }\r\n };\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function Lists(theme) {\r\n return {\r\n MuiListItemIcon: {\r\n styleOverrides: {\r\n root: {\r\n color: 'inherit',\r\n minWidth: 'auto',\r\n marginRight: theme.spacing(2)\r\n }\r\n }\r\n },\r\n MuiListItemAvatar: {\r\n styleOverrides: {\r\n root: {\r\n minWidth: 'auto',\r\n marginRight: theme.spacing(2)\r\n }\r\n }\r\n },\r\n MuiListItemText: {\r\n styleOverrides: {\r\n root: {\r\n marginTop: 0,\r\n marginBottom: 0\r\n },\r\n multiline: {\r\n marginTop: 0,\r\n marginBottom: 0\r\n }\r\n }\r\n }\r\n };\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function Paper() {\r\n return {\r\n MuiPaper: {\r\n defaultProps: {\r\n elevation: 0\r\n },\r\n\r\n styleOverrides: {\r\n root: {\r\n backgroundImage: 'none'\r\n }\r\n }\r\n }\r\n };\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function Input(theme) {\r\n return {\r\n MuiInputBase: {\r\n styleOverrides: {\r\n root: {\r\n '&.Mui-disabled': {\r\n '& svg': { color: theme.palette.text.disabled }\r\n }\r\n },\r\n input: {\r\n '&::placeholder': {\r\n opacity: 1,\r\n color: theme.palette.text.disabled\r\n }\r\n }\r\n }\r\n },\r\n MuiInput: {\r\n styleOverrides: {\r\n underline: {\r\n '&:before': {\r\n borderBottomColor: theme.palette.grey[500_56]\r\n }\r\n }\r\n }\r\n },\r\n MuiFilledInput: {\r\n styleOverrides: {\r\n root: {\r\n backgroundColor: theme.palette.grey[500_12],\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[500_16]\r\n },\r\n '&.Mui-focused': {\r\n backgroundColor: theme.palette.action.focus\r\n },\r\n '&.Mui-disabled': {\r\n backgroundColor: theme.palette.action.disabledBackground\r\n }\r\n },\r\n underline: {\r\n '&:before': {\r\n borderBottomColor: theme.palette.grey[500_56]\r\n }\r\n }\r\n }\r\n },\r\n MuiOutlinedInput: {\r\n styleOverrides: {\r\n root: {\r\n '& .MuiOutlinedInput-notchedOutline': {\r\n borderColor: theme.palette.grey[500_32]\r\n },\r\n '&.Mui-disabled': {\r\n '& .MuiOutlinedInput-notchedOutline': {\r\n borderColor: theme.palette.action.disabledBackground\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function Button(theme) {\r\n return {\r\n MuiButton: {\r\n styleOverrides: {\r\n root: {\r\n '&:hover': {\r\n boxShadow: 'none'\r\n }\r\n },\r\n sizeLarge: {\r\n height: 48\r\n },\r\n containedInherit: {\r\n color: theme.palette.grey[800],\r\n boxShadow: theme.customShadows.z8,\r\n '&:hover': {\r\n backgroundColor: theme.palette.grey[400]\r\n }\r\n },\r\n containedPrimary: {\r\n boxShadow: theme.customShadows.primary\r\n },\r\n containedSecondary: {\r\n boxShadow: theme.customShadows.secondary\r\n },\r\n outlinedInherit: {\r\n border: `1px solid ${theme.palette.grey[500_32]}`,\r\n '&:hover': {\r\n backgroundColor: theme.palette.action.hover\r\n }\r\n },\r\n textInherit: {\r\n '&:hover': {\r\n backgroundColor: theme.palette.action.hover\r\n }\r\n }\r\n }\r\n }\r\n };\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function Tooltip(theme) {\r\n return {\r\n MuiTooltip: {\r\n styleOverrides: {\r\n tooltip: {\r\n backgroundColor: theme.palette.grey[800]\r\n },\r\n arrow: {\r\n color: theme.palette.grey[800]\r\n }\r\n }\r\n }\r\n };\r\n}\r\n","import { alpha } from '@mui/material/styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function Backdrop(theme) {\r\n const varLow = alpha(theme.palette.grey[900], 0.48);\r\n const varHigh = alpha(theme.palette.grey[900], 1);\r\n\r\n return {\r\n MuiBackdrop: {\r\n styleOverrides: {\r\n root: {\r\n background: [\r\n `rgb(22,28,36)`,\r\n `-moz-linear-gradient(75deg, ${varLow} 0%, ${varHigh} 100%)`,\r\n `-webkit-linear-gradient(75deg, ${varLow} 0%, ${varHigh} 100%)`,\r\n `linear-gradient(75deg, ${varLow} 0%, ${varHigh} 100%)`\r\n ],\r\n '&.MuiBackdrop-invisible': {\r\n background: 'transparent'\r\n }\r\n }\r\n }\r\n }\r\n };\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function Typography(theme) {\r\n return {\r\n MuiTypography: {\r\n styleOverrides: {\r\n paragraph: {\r\n marginBottom: theme.spacing(2)\r\n },\r\n gutterBottom: {\r\n marginBottom: theme.spacing(1)\r\n }\r\n }\r\n }\r\n };\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function IconButton(theme) {\r\n return {\r\n MuiIconButton: {\r\n variants: [\r\n {\r\n props: { color: 'default' },\r\n style: {\r\n '&:hover': { backgroundColor: theme.palette.action.hover }\r\n }\r\n },\r\n {\r\n props: { color: 'inherit' },\r\n style: {\r\n '&:hover': { backgroundColor: theme.palette.action.hover }\r\n }\r\n }\r\n ],\r\n\r\n styleOverrides: {\r\n root: {}\r\n }\r\n }\r\n };\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport default function Autocomplete(theme) {\r\n return {\r\n MuiAutocomplete: {\r\n styleOverrides: {\r\n paper: {\r\n boxShadow: theme.customShadows.z20\r\n }\r\n }\r\n }\r\n };\r\n}\r\n","// material\r\nimport { alpha } from '@mui/material/styles';\r\nimport palette from './palette';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst LIGHT_MODE = palette.grey[500];\r\n\r\nconst createShadow = (color) => {\r\n const transparent1 = alpha(color, 0.2);\r\n const transparent2 = alpha(color, 0.14);\r\n const transparent3 = alpha(color, 0.12);\r\n return [\r\n 'none',\r\n `0px 2px 1px -1px ${transparent1},0px 1px 1px 0px ${transparent2},0px 1px 3px 0px ${transparent3}`,\r\n `0px 3px 1px -2px ${transparent1},0px 2px 2px 0px ${transparent2},0px 1px 5px 0px ${transparent3}`,\r\n `0px 3px 3px -2px ${transparent1},0px 3px 4px 0px ${transparent2},0px 1px 8px 0px ${transparent3}`,\r\n `0px 2px 4px -1px ${transparent1},0px 4px 5px 0px ${transparent2},0px 1px 10px 0px ${transparent3}`,\r\n `0px 3px 5px -1px ${transparent1},0px 5px 8px 0px ${transparent2},0px 1px 14px 0px ${transparent3}`,\r\n `0px 3px 5px -1px ${transparent1},0px 6px 10px 0px ${transparent2},0px 1px 18px 0px ${transparent3}`,\r\n `0px 4px 5px -2px ${transparent1},0px 7px 10px 1px ${transparent2},0px 2px 16px 1px ${transparent3}`,\r\n `0px 5px 5px -3px ${transparent1},0px 8px 10px 1px ${transparent2},0px 3px 14px 2px ${transparent3}`,\r\n `0px 5px 6px -3px ${transparent1},0px 9px 12px 1px ${transparent2},0px 3px 16px 2px ${transparent3}`,\r\n `0px 6px 6px -3px ${transparent1},0px 10px 14px 1px ${transparent2},0px 4px 18px 3px ${transparent3}`,\r\n `0px 6px 7px -4px ${transparent1},0px 11px 15px 1px ${transparent2},0px 4px 20px 3px ${transparent3}`,\r\n `0px 7px 8px -4px ${transparent1},0px 12px 17px 2px ${transparent2},0px 5px 22px 4px ${transparent3}`,\r\n `0px 7px 8px -4px ${transparent1},0px 13px 19px 2px ${transparent2},0px 5px 24px 4px ${transparent3}`,\r\n `0px 7px 9px -4px ${transparent1},0px 14px 21px 2px ${transparent2},0px 5px 26px 4px ${transparent3}`,\r\n `0px 8px 9px -5px ${transparent1},0px 15px 22px 2px ${transparent2},0px 6px 28px 5px ${transparent3}`,\r\n `0px 8px 10px -5px ${transparent1},0px 16px 24px 2px ${transparent2},0px 6px 30px 5px ${transparent3}`,\r\n `0px 8px 11px -5px ${transparent1},0px 17px 26px 2px ${transparent2},0px 6px 32px 5px ${transparent3}`,\r\n `0px 9px 11px -5px ${transparent1},0px 18px 28px 2px ${transparent2},0px 7px 34px 6px ${transparent3}`,\r\n `0px 9px 12px -6px ${transparent1},0px 19px 29px 2px ${transparent2},0px 7px 36px 6px ${transparent3}`,\r\n `0px 10px 13px -6px ${transparent1},0px 20px 31px 3px ${transparent2},0px 8px 38px 7px ${transparent3}`,\r\n `0px 10px 13px -6px ${transparent1},0px 21px 33px 3px ${transparent2},0px 8px 40px 7px ${transparent3}`,\r\n `0px 10px 14px -6px ${transparent1},0px 22px 35px 3px ${transparent2},0px 8px 42px 7px ${transparent3}`,\r\n `0px 11px 14px -7px ${transparent1},0px 23px 36px 3px ${transparent2},0px 9px 44px 8px ${transparent3}`,\r\n `0px 11px 15px -7px ${transparent1},0px 24px 38px 3px ${transparent2},0px 9px 46px 8px ${transparent3}`\r\n ];\r\n};\r\n\r\nconst createCustomShadow = (color) => {\r\n const transparent = alpha(color, 0.24);\r\n\r\n return {\r\n z1: `0 1px 2px 0 ${transparent}`,\r\n z8: `0 8px 16px 0 ${transparent}`,\r\n z12: `0 0 2px 0 ${transparent}, 0 12px 24px 0 ${transparent}`,\r\n z16: `0 0 2px 0 ${transparent}, 0 16px 32px -4px ${transparent}`,\r\n z20: `0 0 2px 0 ${transparent}, 0 20px 40px -4px ${transparent}`,\r\n z24: `0 0 4px 0 ${transparent}, 0 24px 48px 0 ${transparent}`,\r\n primary: `0 8px 16px 0 ${alpha(palette.primary.main, 0.24)}`,\r\n secondary: `0 8px 16px 0 ${alpha(palette.secondary.main, 0.24)}`,\r\n info: `0 8px 16px 0 ${alpha(palette.info.main, 0.24)}`,\r\n success: `0 8px 16px 0 ${alpha(palette.success.main, 0.24)}`,\r\n warning: `0 8px 16px 0 ${alpha(palette.warning.main, 0.24)}`,\r\n error: `0 8px 16px 0 ${alpha(palette.error.main, 0.24)}`\r\n };\r\n};\r\n\r\nexport const customShadows = createCustomShadow(LIGHT_MODE);\r\n\r\nconst shadows = createShadow(LIGHT_MODE);\r\n\r\nexport default shadows;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useMemo } from 'react';\r\n// material\r\nimport { CssBaseline } from '@mui/material';\r\nimport { ThemeProvider, createTheme, StyledEngineProvider } from '@mui/material/styles';\r\n//\r\nimport shape from './shape';\r\nimport palette from './palette';\r\nimport typography from './typography';\r\nimport componentsOverride from './overrides';\r\nimport shadows, { customShadows } from './shadows';\r\n// import { ColorModeContext } from 'src/layouts/dashboard/ThemeChange';\r\n\r\n// ----------------------------------------------------------------------\r\nexport const ColorModeContext = React.createContext({\r\n toggleColorMode: (mode) => {},\r\n mode: 'dark'\r\n});\r\n\r\nThemeConfig.propTypes = {\r\n children: PropTypes.node\r\n};\r\n\r\nexport default function ThemeConfig({ children }) {\r\n const [mode, setMode] = React.useState('dark');\r\n const colorMode = React.useMemo(\r\n () => ({\r\n toggleColorMode: () => {\r\n setMode((prevMode) => (prevMode === 'light' ? 'dark' : 'light'));\r\n }\r\n }),\r\n [mode]\r\n );\r\n\r\n const themeOptions = useMemo(\r\n () => ({\r\n palette,\r\n shape,\r\n typography,\r\n shadows,\r\n customShadows\r\n }),\r\n [mode]\r\n );\r\n\r\n const theme = createTheme(themeOptions);\r\n theme.components = componentsOverride(theme);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport { Icon } from '@iconify/react';\r\nimport { useState } from 'react';\r\nimport searchFill from '@iconify/icons-eva/search-fill';\r\n// material\r\nimport { styled, alpha } from '@mui/material/styles';\r\nimport {\r\n Box,\r\n Input,\r\n Slide,\r\n Button,\r\n InputAdornment,\r\n ClickAwayListener,\r\n IconButton\r\n} from '@mui/material';\r\nimport { ColorModeContext } from 'src/theme';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst APPBAR_MOBILE = 64;\r\nconst APPBAR_DESKTOP = 92;\r\n\r\nconst SearchbarStyle = styled('div')(({ theme }) => ({\r\n top: 0,\r\n left: 0,\r\n zIndex: 99,\r\n width: '100%',\r\n display: 'flex',\r\n position: 'absolute',\r\n alignItems: 'center',\r\n height: APPBAR_MOBILE,\r\n backdropFilter: 'blur(6px)',\r\n WebkitBackdropFilter: 'blur(6px)', // Fix on Mobile\r\n padding: theme.spacing(0, 3),\r\n boxShadow: theme.customShadows.z8,\r\n backgroundColor: `${alpha(theme.palette.background.default, 0.72)}`,\r\n [theme.breakpoints.up('md')]: {\r\n height: APPBAR_DESKTOP,\r\n padding: theme.spacing(0, 5)\r\n }\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function Searchbar() {\r\n const [isOpen, setOpen] = useState(false);\r\n const { toggleColorMode, mode } = React.useContext(ColorModeContext);\r\n\r\n const handleOpen = () => {\r\n setOpen((prev) => !prev);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n \r\n
\r\n {!isOpen && (\r\n \r\n \r\n \r\n )}\r\n\r\n \r\n \r\n \r\n \r\n \r\n }\r\n sx={{ mr: 1, fontWeight: 'fontWeightBold' }}\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\n// material\r\nimport { Popover } from '@mui/material';\r\nimport { alpha, styled } from '@mui/material/styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst ArrowStyle = styled('span')(({ theme }) => ({\r\n [theme.breakpoints.up('sm')]: {\r\n top: -7,\r\n zIndex: 1,\r\n width: 12,\r\n right: 20,\r\n height: 12,\r\n content: \"''\",\r\n position: 'absolute',\r\n borderRadius: '0 0 4px 0',\r\n transform: 'rotate(-135deg)',\r\n background: theme.palette.background.paper,\r\n borderRight: `solid 1px ${alpha(theme.palette.grey[500], 0.12)}`,\r\n borderBottom: `solid 1px ${alpha(theme.palette.grey[500], 0.12)}`\r\n }\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nMenuPopover.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n sx: PropTypes.object\r\n};\r\n\r\nexport default function MenuPopover({ children, sx, ...other }) {\r\n return (\r\n theme.customShadows.z20,\r\n border: (theme) => `solid 1px ${theme.palette.grey[500_8]}`,\r\n width: 200,\r\n ...sx\r\n }\r\n }}\r\n {...other}\r\n >\r\n \r\n\r\n {children}\r\n \r\n );\r\n}\r\n","import { Icon } from '@iconify/react';\r\nimport { useRef, useState } from 'react';\r\nimport homeFill from '@iconify/icons-eva/home-fill';\r\nimport personFill from '@iconify/icons-eva/person-fill';\r\nimport settings2Fill from '@iconify/icons-eva/settings-2-fill';\r\nimport logoutOutlined from '@iconify/icons-ant-design/logout-outlined';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\n// material\r\nimport { alpha, styled } from '@mui/material/styles';\r\nimport {\r\n Button,\r\n Box,\r\n Divider,\r\n MenuItem,\r\n Typography,\r\n Avatar,\r\n IconButton,\r\n Badge\r\n} from '@mui/material';\r\n// components\r\nimport MenuPopover from '../../components/MenuPopover';\r\n//\r\nimport account from '../../_mocks_/account';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst StyledBadge = styled(Badge)(({ theme }) => ({\r\n '& .MuiBadge-badge': {\r\n backgroundColor: '#44b700',\r\n color: '#44b700',\r\n boxShadow: `0 0 0 2px ${theme.palette.background.paper}`,\r\n '&::after': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n borderRadius: '50%',\r\n animation: 'ripple 1.2s infinite ease-in-out',\r\n border: '1px solid currentColor',\r\n content: '\"\"'\r\n }\r\n },\r\n '@keyframes ripple': {\r\n '0%': {\r\n transform: 'scale(.8)',\r\n opacity: 1\r\n },\r\n '100%': {\r\n transform: 'scale(2.4)',\r\n opacity: 0\r\n }\r\n }\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function AccountPopover() {\r\n const anchorRef = useRef(null);\r\n const [open, setOpen] = useState(false);\r\n const [available, setAvailable] = useState(true);\r\n\r\n const MENU_OPTIONS = [\r\n // {\r\n // label: `2h 22m 17s Available`,\r\n // icon: 'bx:bx-time',\r\n // linkTo: '#'\r\n // },\r\n {\r\n label: 'Logout',\r\n icon: logoutOutlined,\r\n linkTo: '#'\r\n }\r\n ];\r\n\r\n const handleOpen = () => {\r\n setOpen(true);\r\n };\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n <>\r\n alpha(theme.palette.grey[900], 0.72)\r\n }\r\n })\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {account.displayName}\r\n \r\n \r\n {account.email}\r\n \r\n \r\n\r\n \r\n\r\n {MENU_OPTIONS.map((option) => (\r\n \r\n \r\n\r\n {option.label}\r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n","// ----------------------------------------------------------------------\r\n\r\nexport const mockImgCover = (index) => `/static/mock-images/covers/cover_${index}.jpg`;\r\nexport const mockImgProduct = (index) => `/static/mock-images/products/Contact${index}.jpg`;\r\nexport const mockImgAvatar = (index) => `/static/mock-images/avatars/avatar_${index}.jpg`;\r\n","import PropTypes from 'prop-types';\r\nimport SimpleBarReact from 'simplebar-react';\r\n// material\r\nimport { alpha, styled } from '@mui/material/styles';\r\nimport { Box } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst RootStyle = styled('div')({\r\n flexGrow: 1,\r\n height: '100%',\r\n overflow: 'hidden'\r\n});\r\n\r\nconst SimpleBarStyle = styled(SimpleBarReact)(({ theme }) => ({\r\n maxHeight: '100%',\r\n '& .simplebar-scrollbar': {\r\n '&:before': {\r\n backgroundColor: alpha(theme.palette.grey[600], 0.48)\r\n },\r\n '&.simplebar-visible:before': {\r\n opacity: 1\r\n }\r\n },\r\n '& .simplebar-track.simplebar-vertical': {\r\n width: 10\r\n },\r\n '& .simplebar-track.simplebar-horizontal .simplebar-scrollbar': {\r\n height: 6\r\n },\r\n '& .simplebar-mask': {\r\n zIndex: 'inherit'\r\n }\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nScrollbar.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n sx: PropTypes.object\r\n};\r\n\r\nexport default function Scrollbar({ children, sx, ...other }) {\r\n const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\r\n navigator.userAgent\r\n );\r\n\r\n if (isMobile) {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport faker from 'faker';\r\nimport PropTypes from 'prop-types';\r\nimport { noCase } from 'change-case';\r\nimport { useRef, useState } from 'react';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport { set, sub, formatDistanceToNow } from 'date-fns';\r\nimport { Icon } from '@iconify/react';\r\nimport bellFill from '@iconify/icons-eva/bell-fill';\r\nimport clockFill from '@iconify/icons-eva/clock-fill';\r\nimport doneAllFill from '@iconify/icons-eva/done-all-fill';\r\n// material\r\nimport { alpha } from '@mui/material/styles';\r\nimport {\r\n Box,\r\n List,\r\n Badge,\r\n Button,\r\n Avatar,\r\n Tooltip,\r\n Divider,\r\n IconButton,\r\n Typography,\r\n ListItemText,\r\n ListSubheader,\r\n ListItemAvatar,\r\n ListItemButton\r\n} from '@mui/material';\r\n// utils\r\nimport { mockImgAvatar } from '../../utils/mockImages';\r\n// components\r\nimport Scrollbar from '../../components/Scrollbar';\r\nimport MenuPopover from '../../components/MenuPopover';\r\nimport { ColorModeContext } from 'src/theme';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst NOTIFICATIONS = [\r\n {\r\n id: faker.datatype.uuid(),\r\n title: 'Your order is placed',\r\n description: 'waiting for shipping',\r\n avatar: null,\r\n type: 'order_placed',\r\n createdAt: set(new Date(), { hours: 10, minutes: 30 }),\r\n isUnRead: true\r\n },\r\n {\r\n id: faker.datatype.uuid(),\r\n title: faker.name.findName(),\r\n description: 'answered to your comment on the Minimal',\r\n avatar: mockImgAvatar(2),\r\n type: 'friend_interactive',\r\n createdAt: sub(new Date(), { hours: 3, minutes: 30 }),\r\n isUnRead: true\r\n },\r\n {\r\n id: faker.datatype.uuid(),\r\n title: 'You have new message',\r\n description: '5 unread messages',\r\n avatar: null,\r\n type: 'chat_message',\r\n createdAt: sub(new Date(), { days: 1, hours: 3, minutes: 30 }),\r\n isUnRead: false\r\n },\r\n {\r\n id: faker.datatype.uuid(),\r\n title: 'You have new mail',\r\n description: 'sent from Guido Padberg',\r\n avatar: null,\r\n type: 'mail',\r\n createdAt: sub(new Date(), { days: 2, hours: 3, minutes: 30 }),\r\n isUnRead: false\r\n },\r\n {\r\n id: faker.datatype.uuid(),\r\n title: 'Delivery processing',\r\n description: 'Your order is being shipped',\r\n avatar: null,\r\n type: 'order_shipped',\r\n createdAt: sub(new Date(), { days: 3, hours: 3, minutes: 30 }),\r\n isUnRead: false\r\n }\r\n];\r\n\r\nfunction renderContent(notification) {\r\n const title = (\r\n \r\n {notification.title}\r\n \r\n   {noCase(notification.description)}\r\n \r\n \r\n );\r\n\r\n if (notification.type === 'order_placed') {\r\n return {\r\n avatar: {notification.title},\r\n title\r\n };\r\n }\r\n if (notification.type === 'order_shipped') {\r\n return {\r\n avatar: {notification.title},\r\n title\r\n };\r\n }\r\n if (notification.type === 'mail') {\r\n return {\r\n avatar: {notification.title},\r\n title\r\n };\r\n }\r\n if (notification.type === 'chat_message') {\r\n return {\r\n avatar: {notification.title},\r\n title\r\n };\r\n }\r\n return {\r\n avatar: {notification.title},\r\n title\r\n };\r\n}\r\n\r\nNotificationItem.propTypes = {\r\n notification: PropTypes.object.isRequired\r\n};\r\n\r\nfunction NotificationItem({ notification }) {\r\n const { avatar, title } = renderContent(notification);\r\n\r\n return (\r\n \r\n \r\n {avatar}\r\n \r\n \r\n \r\n {formatDistanceToNow(new Date(notification.createdAt))}\r\n \r\n }\r\n />\r\n \r\n );\r\n}\r\n\r\nexport default function NotificationsPopover() {\r\n const anchorRef = useRef(null);\r\n const [open, setOpen] = useState(false);\r\n const [notifications, setNotifications] = useState(NOTIFICATIONS);\r\n const totalUnRead = notifications.filter((item) => item.isUnRead === true).length;\r\n const { toggleColorMode, mode } = React.useContext(ColorModeContext);\r\n\r\n const handleOpen = () => {\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const handleMarkAllAsRead = () => {\r\n setNotifications(\r\n notifications.map((notification) => ({\r\n ...notification,\r\n isUnRead: false\r\n }))\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n alpha(theme.palette.primary.main, theme.palette.action.focusOpacity)\r\n })\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Notifications\r\n \r\n You have {totalUnRead} unread messages\r\n \r\n \r\n\r\n {totalUnRead > 0 && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n\r\n \r\n\r\n \r\n \r\n New\r\n \r\n }\r\n >\r\n {notifications.slice(0, 2).map((notification) => (\r\n \r\n ))}\r\n \r\n\r\n \r\n Before that\r\n \r\n }\r\n >\r\n {notifications.slice(2, 5).map((notification) => (\r\n \r\n ))}\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\n// material\r\nimport { Box } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nLogo.propTypes = {\r\n sx: PropTypes.object\r\n};\r\n\r\nexport default function Logo({ sx }) {\r\n return ;\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Icon } from '@iconify/react';\r\nimport menu2Fill from '@iconify/icons-eva/menu-2-fill';\r\n// material\r\nimport { alpha, styled } from '@mui/material/styles';\r\nimport { Box, Stack, AppBar, Toolbar, IconButton } from '@mui/material';\r\n// components\r\nimport { MHidden } from '../../components/@material-extend';\r\n//\r\nimport Searchbar from './Searchbar';\r\nimport AccountPopover from './AccountPopover';\r\nimport LanguagePopover from './LanguagePopover';\r\nimport NotificationsPopover from './NotificationsPopover';\r\nimport ThemeChange from './ThemeChange';\r\nimport { ColorModeContext } from 'src/theme';\r\nimport Caller from './Caller';\r\nimport Bars from './Bars';\r\nimport Logo from '../../components/Logo';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport const DRAWER_WIDTH = 1;\r\nexport const APPBAR_MOBILE = 64;\r\nexport const APPBAR_DESKTOP = 52;\r\n\r\nDashboardNavbar.propTypes = {\r\n onOpenSidebar: PropTypes.func\r\n};\r\n\r\nexport default function DashboardNavbar({ onOpenSidebar, openRightBar, setOpenRightBar }) {\r\n const { toggleColorMode, mode } = React.useContext(ColorModeContext);\r\n\r\n const RootStyle = styled(AppBar)(({ theme }) => ({\r\n // position: 'relative',\r\n boxShadow: 'none',\r\n backdropFilter: 'blur(6px)',\r\n WebkitBackdropFilter: 'blur(6px)', // Fix on Mobile\r\n backgroundColor:\r\n mode === 'light'\r\n ? alpha(theme.palette.background.default, 0.72)\r\n : alpha(theme.palette.customBlackThemeColor.lightGray, 0.72),\r\n [theme.breakpoints.up('lg')]: {\r\n width: `calc(100% - ${DRAWER_WIDTH + 1}px)`\r\n }\r\n }));\r\n\r\n const ToolbarStyle = styled(Toolbar)(({ theme }) => ({\r\n minHeight: APPBAR_MOBILE,\r\n [theme.breakpoints.up('lg')]: {\r\n minHeight: APPBAR_DESKTOP,\r\n padding: theme.spacing(0, 2.5, 0, 5)\r\n }\r\n }));\r\n const LogoContainer = styled(Box)(() => ({\r\n position: 'relative',\r\n left: '50%',\r\n transform: 'translateX(-50%)',\r\n marginTop:'2px'\r\n }));\r\n return (\r\n \r\n \r\n {/* \r\n \r\n \r\n */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {/* */}\r\n {/* */}\r\n {/* */}\r\n {/* /*}\r\n {/* */}\r\n \r\n \r\n \r\n );\r\n}\r\n","import { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Icon } from '@iconify/react';\r\nimport { NavLink as RouterLink, matchPath, useLocation } from 'react-router-dom';\r\nimport arrowIosForwardFill from '@iconify/icons-eva/arrow-ios-forward-fill';\r\nimport arrowIosDownwardFill from '@iconify/icons-eva/arrow-ios-downward-fill';\r\n// material\r\nimport { alpha, useTheme, styled } from '@mui/material/styles';\r\nimport { Box, List, Collapse, ListItemText, ListItemIcon, ListItemButton } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst ListItemStyle = styled((props) => )(\r\n ({ theme }) => ({\r\n ...theme.typography.body2,\r\n height: 80,\r\n position: 'relative',\r\n textTransform: 'capitalize',\r\n paddingLeft: theme.spacing(3.5),\r\n paddingRight: theme.spacing(2),\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n color: theme.palette.text.secondary,\r\n '&:before': {\r\n top: 0,\r\n right: 0,\r\n width: 3,\r\n bottom: 0,\r\n content: \"''\",\r\n display: 'none',\r\n position: 'absolute',\r\n borderTopLeftRadius: 4,\r\n borderBottomLeftRadius: 4,\r\n backgroundColor: theme.palette.primary.main\r\n }\r\n })\r\n);\r\n\r\nconst ListItemIconStyle = styled(ListItemIcon)({\r\n width: 22,\r\n height: 22,\r\n display: 'flex',\r\n alignItems: 'center',\r\n paddingBottom: 20,\r\n paddingTop: 15,\r\n justifyContent: 'center'\r\n});\r\n\r\nconst ListItemTextStyle = styled(ListItemText)({\r\n paddingRight: 13\r\n});\r\nconst RefreshPage = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItem: 'center',\r\n color: theme.palette.text.secondary,\r\n '.MuiListItemIcon-root': {\r\n alignSelf: 'center'\r\n },\r\n textAlign: 'center',\r\n fontSize: '0.9rem',\r\n cursor: 'pointer',\r\n paddingTop: '10px',\r\n paddingBottom: '10px',\r\n '&:hover': {\r\n // backgroundColor: theme.palette.grey[900]\r\n }\r\n}));\r\n// ----------------------------------------------------------------------\r\n\r\nNavItem.propTypes = {\r\n item: PropTypes.object,\r\n active: PropTypes.func\r\n};\r\n\r\nfunction NavItem({ item, active, mode }) {\r\n const theme = useTheme();\r\n const isActiveRoot = active(item.path);\r\n const { title, path, icon, info, children } = item;\r\n const [open, setOpen] = useState(isActiveRoot);\r\n\r\n const handleOpen = () => {\r\n setOpen((prev) => !prev);\r\n };\r\n\r\n const activeRootStyle = {\r\n color: 'primary.main',\r\n fontWeight: 'fontWeightMedium',\r\n bgcolor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\r\n '&:before': { display: 'block' }\r\n };\r\n\r\n const activeSubStyle = {\r\n color: 'text.primary',\r\n fontWeight: 'fontWeightMedium'\r\n };\r\n\r\n return (\r\n \r\n {icon && icon}\r\n \r\n {info && info}\r\n \r\n );\r\n}\r\n\r\nfunction NavItemBottom({ item, mode }) {\r\n const theme = useTheme();\r\n const { title, path, icon, info, children } = item;\r\n\r\n const handleOpen = () => {\r\n setOpen((prev) => !prev);\r\n };\r\n if (title === 'Refresh') {\r\n return (\r\n {\r\n window.location.reload(true);\r\n }}\r\n >\r\n {icon && icon}\r\n \r\n {info && info}\r\n \r\n );\r\n }\r\n return (\r\n \r\n {icon && icon}\r\n \r\n {info && info}\r\n \r\n );\r\n}\r\n\r\nNavSection.propTypes = {\r\n navConfig: PropTypes.array\r\n};\r\n\r\nexport default function NavSection({ mode, navConfig, navConfigBottom, ...other }) {\r\n const { pathname } = useLocation();\r\n const match = (path) => (path ? !!matchPath({ path, end: false }, pathname) : false);\r\n\r\n return (\r\n \r\n \r\n {navConfig.map((item) => (\r\n \r\n ))}\r\n \r\n \r\n {navConfigBottom.map((item) => (\r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n","import { Icon } from '@iconify/react';\r\nimport pieChart2Fill from '@iconify/icons-eva/pie-chart-2-fill';\r\nimport logOutFill from '@iconify/icons-eva/log-out-fill';\r\nimport peopleFill from '@iconify/icons-eva/people-fill';\r\nimport shoppingBagFill from '@iconify/icons-eva/shopping-bag-fill';\r\nimport phoneFilled from '@iconify/icons-ant-design/phone-filled';\r\nimport settingFilled from '@iconify/icons-ant-design/setting-filled';\r\nimport homeFilled from '@iconify/icons-ant-design/home-filled';\r\nimport fileTextFill from '@iconify/icons-eva/file-text-fill';\r\nimport lockFill from '@iconify/icons-eva/lock-fill';\r\nimport personAddFill from '@iconify/icons-eva/person-add-fill';\r\nimport alertTriangleFill from '@iconify/icons-eva/alert-triangle-fill';\r\nimport refreshFill from '@iconify/icons-eva/refresh-fill';\r\n// ----------------------------------------------------------------------\r\n\r\nconst getIcon = (name) => ;\r\n\r\nexport const sidebarConfig = [\r\n {\r\n title: 'Phone',\r\n path: '/dashboard/phone',\r\n icon: getIcon(phoneFilled)\r\n },\r\n // {\r\n // title: 'Activity',\r\n // path: '/dashboard/app',\r\n // icon: getIcon(fileTextFill)\r\n //},\r\n //{\r\n // title: 'Contact',\r\n // path: '/dashboard/Contact',\r\n // icon: getIcon('ic:baseline-space-dashboard')\r\n //},\r\n \r\n //{\r\n // title: 'Agent',\r\n // path: '/dashboard/agents',\r\n // icon: getIcon(peopleFill)\r\n // },\r\n // {\r\n // title: 'Queue',\r\n // path: '/dashboard/queuemetrics',\r\n // icon: getIcon('ic:baseline-space-dashboard')\r\n // }\r\n\r\n // {\r\n // title: 'blog',\r\n // path: '/dashboard/blog',\r\n // icon: getIcon(fileTextFill)\r\n // },\r\n // {\r\n // title: 'login',\r\n // path: '/login',\r\n // icon: getIcon(lockFill)\r\n // },\r\n // {\r\n // title: 'register',\r\n // path: '/register',\r\n // icon: getIcon(personAddFill)\r\n // },\r\n];\r\n\r\nexport const sidebarConfigBottom = [\r\n // {\r\n // title: 'Logout',\r\n // path: '/dashboard/app',\r\n // icon: getIcon(pieChart2Fill)\r\n // },\r\n // {\r\n // title: 'user',\r\n // path: '/dashboard/user',\r\n // icon: getIcon(peopleFill)\r\n // },\r\n {\r\n title: 'Refresh',\r\n path: '/dashboard/user',\r\n icon: getIcon(refreshFill)\r\n }\r\n];\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Icon } from '@iconify/react';\r\nimport menu2Fill from '@iconify/icons-eva/menu-2-fill';\r\n// material\r\nimport { alpha, styled } from '@mui/material/styles';\r\nimport { Box, Stack, AppBar, Toolbar, IconButton, Typography, useTheme } from '@mui/material';\r\n// components\r\nimport { MHidden } from '../../components/@material-extend';\r\n//\r\nimport Searchbar from './Searchbar';\r\nimport AccountPopover from './AccountPopover';\r\nimport LanguagePopover from './LanguagePopover';\r\nimport NotificationsPopover from './NotificationsPopover';\r\nimport ThemeChange from './ThemeChange';\r\nimport { ColorModeContext } from 'src/theme';\r\nimport Caller from './Caller';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst DRAWER_WIDTH = 1;\r\nconst APPBAR_MOBILE = 64;\r\nconst APPBAR_DESKTOP = 52;\r\n\r\nDashboardFooter.propTypes = {};\r\n\r\nexport default function DashboardFooter() {\r\n const { toggleColorMode, mode } = React.useContext(ColorModeContext);\r\n const theme = useTheme();\r\n const RootStyle = styled(AppBar)(({ theme }) => ({\r\n boxShadow: 'none',\r\n position: 'fixed',\r\n top: `calc(100% - ${45}px)`,\r\n backgroundColor: theme.palette.common.black,\r\n [theme.breakpoints.up('lg')]: {\r\n width: `calc(100% - ${DRAWER_WIDTH + 1}px)`\r\n },\r\n }));\r\n\r\n const ToolbarStyle = styled(Box)(({ theme }) => ({\r\n minHeight: APPBAR_MOBILE,\r\n padding: theme.spacing(1.5, 5, 0, 5)\r\n }));\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Account:\r\n \r\n uob\r\n \r\n  \r\n \r\n \r\n Instance:\r\n \r\n admissions\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport { useState } from 'react';\r\nimport { Outlet } from 'react-router-dom';\r\n// material\r\nimport { styled, alpha } from '@mui/material/styles';\r\n//\r\nimport DashboardNavbar from './DashboardNavbar';\r\nimport DashboardSidebar from './DashboardSidebar';\r\nimport { ColorModeContext } from 'src/theme';\r\nimport DashboardFooter from './DashboardFooter';\r\nimport DashboardRightSideBar from './DashboardRightSideBar';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst APP_BAR_MOBILE = 64;\r\nconst APP_BAR_DESKTOP = 92;\r\n\r\nconst MainStyle = styled('div')(({ theme }) => ({\r\n flexGrow: 1,\r\n overflow: 'hidden',\r\n minHeight: '100%',\r\n paddingTop: APP_BAR_MOBILE + 24,\r\n paddingBottom: theme.spacing(10),\r\n [theme.breakpoints.up('lg')]: {\r\n paddingTop: APP_BAR_DESKTOP + 24,\r\n paddingLeft: theme.spacing(2),\r\n paddingRight: theme.spacing(2)\r\n }\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function DashboardLayout() {\r\n const [open, setOpen] = useState(false);\r\n const [openRightBar, setOpenRightBar] = useState(false);\r\n const { toggleColorMode, mode } = React.useContext(ColorModeContext);\r\n\r\n const RootStyle = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n minHeight: '100%',\r\n overflow: 'hidden',\r\n backgroundColor:\r\n mode === 'light'\r\n ? alpha(theme.palette.background.default, 0.72)\r\n : alpha(theme.palette.customBlackThemeColor.lightGray, 1)\r\n }));\r\n\r\n return (\r\n <>\r\n \r\n setOpen(true)}\r\n openRightBar={openRightBar}\r\n setOpenRightBar={setOpenRightBar}\r\n />\r\n \r\n {/* setOpen(false)} />*/}\r\n {/* setOpenRightBar(false)}\r\n /> */}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import { Link as RouterLink, Outlet } from 'react-router-dom';\r\n// material\r\nimport { styled } from '@mui/material/styles';\r\n// components\r\nimport Logo from '../components/Logo';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst HeaderStyle = styled('header')(({ theme }) => ({\r\n top: 0,\r\n left: 0,\r\n lineHeight: 0,\r\n width: '100%',\r\n position: 'absolute',\r\n padding: theme.spacing(3, 3, 0),\r\n [theme.breakpoints.up('sm')]: {\r\n padding: theme.spacing(5, 5, 0)\r\n }\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function LogoOnlyLayout() {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\n// material\r\nimport { styled } from '@mui/material/styles';\r\nimport { Typography } from '@mui/material';\r\n// components\r\nimport Logo from '../components/Logo';\r\n//\r\nimport { MHidden } from '../components/@material-extend';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst HeaderStyle = styled('header')(({ theme }) => ({\r\n top: 0,\r\n zIndex: 9,\r\n lineHeight: 0,\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n position: 'absolute',\r\n padding: theme.spacing(3),\r\n justifyContent: 'space-between',\r\n [theme.breakpoints.up('md')]: {\r\n alignItems: 'flex-start',\r\n padding: theme.spacing(7, 5, 0, 7)\r\n }\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nAuthLayout.propTypes = {\r\n children: PropTypes.node\r\n};\r\n\r\nexport default function AuthLayout({ children }) {\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport { Helmet } from 'react-helmet-async';\r\nimport { forwardRef } from 'react';\r\n// material\r\nimport { Box } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst Page = forwardRef(({ children, title = '', ...other }, ref) => (\r\n \r\n \r\n {title}\r\n \r\n {children}\r\n \r\n));\r\n\r\nPage.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n title: PropTypes.string\r\n};\r\n\r\nexport default Page;\r\n","import * as Yup from 'yup';\r\nimport { useState } from 'react';\r\nimport { Link as RouterLink, useNavigate } from 'react-router-dom';\r\nimport { useFormik, Form, FormikProvider } from 'formik';\r\nimport { Icon } from '@iconify/react';\r\nimport eyeFill from '@iconify/icons-eva/eye-fill';\r\nimport eyeOffFill from '@iconify/icons-eva/eye-off-fill';\r\n// material\r\nimport {\r\n Link,\r\n Stack,\r\n Checkbox,\r\n TextField,\r\n IconButton,\r\n InputAdornment,\r\n FormControlLabel\r\n} from '@mui/material';\r\nimport { LoadingButton } from '@mui/lab';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function LoginForm() {\r\n const navigate = useNavigate();\r\n const [showPassword, setShowPassword] = useState(false);\r\n\r\n const LoginSchema = Yup.object().shape({\r\n email: Yup.string().email('Email must be a valid email address').required('Email is required'),\r\n password: Yup.string().required('Password is required')\r\n });\r\n\r\n const formik = useFormik({\r\n initialValues: {\r\n email: '',\r\n password: '',\r\n remember: true\r\n },\r\n validationSchema: LoginSchema,\r\n onSubmit: () => {\r\n navigate('/dashboard', { replace: true });\r\n }\r\n });\r\n\r\n const { errors, touched, values, isSubmitting, handleSubmit, getFieldProps } = formik;\r\n\r\n const handleShowPassword = () => {\r\n setShowPassword((show) => !show);\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }}\r\n error={Boolean(touched.password && errors.password)}\r\n helperText={touched.password && errors.password}\r\n />\r\n \r\n\r\n \r\n }\r\n label=\"Remember me\"\r\n />\r\n\r\n \r\n Forgot password?\r\n \r\n \r\n\r\n \r\n Login\r\n \r\n \r\n
\r\n );\r\n}\r\n","import { Icon } from '@iconify/react';\r\nimport googleFill from '@iconify/icons-eva/google-fill';\r\nimport twitterFill from '@iconify/icons-eva/twitter-fill';\r\nimport facebookFill from '@iconify/icons-eva/facebook-fill';\r\n// material\r\nimport { Stack, Button, Divider, Typography } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function AuthSocial() {\r\n return (\r\n <>\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n OR\r\n \r\n \r\n \r\n );\r\n}\r\n","import { Link as RouterLink } from 'react-router-dom';\r\n// material\r\nimport { styled } from '@mui/material/styles';\r\nimport { Card, Stack, Link, Container, Typography } from '@mui/material';\r\n// layouts\r\nimport AuthLayout from '../layouts/AuthLayout';\r\n// components\r\nimport Page from '../components/Page';\r\nimport { MHidden } from '../components/@material-extend';\r\nimport { LoginForm } from '../components/authentication/login';\r\nimport AuthSocial from '../components/authentication/AuthSocial';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst RootStyle = styled(Page)(({ theme }) => ({\r\n [theme.breakpoints.up('md')]: {\r\n display: 'flex'\r\n }\r\n}));\r\n\r\nconst SectionStyle = styled(Card)(({ theme }) => ({\r\n width: '100%',\r\n maxWidth: 464,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n margin: theme.spacing(2, 0, 2, 2)\r\n}));\r\n\r\nconst ContentStyle = styled('div')(({ theme }) => ({\r\n maxWidth: 480,\r\n margin: 'auto',\r\n display: 'flex',\r\n minHeight: '100vh',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n padding: theme.spacing(12, 0)\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function Login() {\r\n return (\r\n \r\n \r\n Don’t have an account?  \r\n \r\n Get started\r\n \r\n \r\n\r\n \r\n \r\n \r\n Hi, Welcome Back\r\n \r\n \"login\"\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Sign in to Minimal\r\n \r\n Enter your details below.\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n Don’t have an account? \r\n \r\n Get started\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import * as Yup from 'yup';\r\nimport { useState } from 'react';\r\nimport { Icon } from '@iconify/react';\r\nimport { useFormik, Form, FormikProvider } from 'formik';\r\nimport eyeFill from '@iconify/icons-eva/eye-fill';\r\nimport eyeOffFill from '@iconify/icons-eva/eye-off-fill';\r\nimport { useNavigate } from 'react-router-dom';\r\n// material\r\nimport { Stack, TextField, IconButton, InputAdornment } from '@mui/material';\r\nimport { LoadingButton } from '@mui/lab';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function RegisterForm() {\r\n const navigate = useNavigate();\r\n const [showPassword, setShowPassword] = useState(false);\r\n\r\n const RegisterSchema = Yup.object().shape({\r\n firstName: Yup.string()\r\n .min(2, 'Too Short!')\r\n .max(50, 'Too Long!')\r\n .required('First name required'),\r\n lastName: Yup.string().min(2, 'Too Short!').max(50, 'Too Long!').required('Last name required'),\r\n email: Yup.string().email('Email must be a valid email address').required('Email is required'),\r\n password: Yup.string().required('Password is required')\r\n });\r\n\r\n const formik = useFormik({\r\n initialValues: {\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n password: ''\r\n },\r\n validationSchema: RegisterSchema,\r\n onSubmit: () => {\r\n navigate('/dashboard', { replace: true });\r\n }\r\n });\r\n\r\n const { errors, touched, handleSubmit, isSubmitting, getFieldProps } = formik;\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n setShowPassword((prev) => !prev)}>\r\n \r\n \r\n \r\n )\r\n }}\r\n error={Boolean(touched.password && errors.password)}\r\n helperText={touched.password && errors.password}\r\n />\r\n\r\n \r\n Register\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import { Link as RouterLink } from 'react-router-dom';\r\n// material\r\nimport { styled } from '@mui/material/styles';\r\nimport { Box, Card, Link, Container, Typography } from '@mui/material';\r\n// layouts\r\nimport AuthLayout from '../layouts/AuthLayout';\r\n// components\r\nimport Page from '../components/Page';\r\nimport { MHidden } from '../components/@material-extend';\r\nimport { RegisterForm } from '../components/authentication/register';\r\nimport AuthSocial from '../components/authentication/AuthSocial';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst RootStyle = styled(Page)(({ theme }) => ({\r\n [theme.breakpoints.up('md')]: {\r\n display: 'flex'\r\n }\r\n}));\r\n\r\nconst SectionStyle = styled(Card)(({ theme }) => ({\r\n width: '100%',\r\n maxWidth: 464,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n margin: theme.spacing(2, 0, 2, 2)\r\n}));\r\n\r\nconst ContentStyle = styled('div')(({ theme }) => ({\r\n maxWidth: 480,\r\n margin: 'auto',\r\n display: 'flex',\r\n minHeight: '100vh',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n padding: theme.spacing(12, 0)\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function Register() {\r\n return (\r\n \r\n \r\n Already have an account?  \r\n \r\n Login\r\n \r\n \r\n\r\n \r\n \r\n \r\n Manage the job more effectively with Minimal\r\n \r\n \"register\"\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Get started absolutely free.\r\n \r\n \r\n Free forever. No credit card needed.\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n By registering, I agree to Minimal \r\n \r\n Terms of Service\r\n \r\n  and \r\n \r\n Privacy Policy\r\n \r\n .\r\n \r\n\r\n \r\n \r\n Already have an account? \r\n \r\n Login\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport { alpha, styled } from '@mui/material/styles';\r\nimport { Box, Card, Typography, useTheme } from '@mui/material';\r\nimport './style.css';\r\n\r\nfunction SimpleLoading({ percentage }) {\r\n React.useEffect(() => {\r\n const numb = document.querySelector('.number');\r\n // let counter = 0;\r\n // setInterval(() => {\r\n // if (counter == 100) {\r\n // clearInterval();\r\n // } else {\r\n // counter += 1;\r\n // numb.innerHTML = counter + '%';\r\n // }\r\n // }, 80);\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n
{percentage ? percentage : 0}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default SimpleLoading;\r\n","import AWS from 'aws-sdk';\r\n\r\nexport const awsConnectInstanceId = process.env.REACT_APP_AWS_CONNECT_INSTANCE_ID;\r\n\r\nexport const awsConnect = new AWS.Connect({\r\n apiVersion: '2017-08-08',\r\n accessKeyId: process.env.REACT_APP_AWS_ACCESS_KEY,\r\n secretAccessKey: process.env.REACT_APP_AWS_SECRET_KEY,\r\n region: process.env.REACT_APP_AWS_REGION\r\n});\r\n","import { useEffect, useState } from 'react';\r\nimport { Icon } from '@iconify/react';\r\nimport bugFilled from '@iconify/icons-ant-design/bug-filled';\r\n// material\r\nimport { alpha, styled } from '@mui/material/styles';\r\nimport { Box, Card, Typography, useTheme } from '@mui/material';\r\n// utils\r\nimport { fShortenNumber } from '../../../utils/formatNumber';\r\nimport SimpleLoading from 'src/layouts/SImpleLoading/SimpleLoading';\r\nimport { awsConnect, awsConnectInstanceId } from '../../../api/awsConnect';\r\nimport { CircularProgressWithLabel } from './CircleProgressWithLabel';\r\n// ----------------------------------------------------------------------\r\n\r\n\r\nconst RootStyle = styled(Card)(({ theme }) => ({\r\n boxShadow: 'none',\r\n //textAlign: 'center',\r\n padding: theme.spacing(2, 2),\r\n color: theme.palette.error.darker,\r\n backgroundColor: theme.palette.customBlackThemeColor.cardColor,\r\n height: '56%',\r\n width: '100%',\r\n overflow:'auto'\r\n \r\n}));\r\n\r\nconst NoData = styled('p')(({ theme }) => ({\r\n textAlign: 'center',\r\n marginTop: '1.5rem',\r\n color: theme.palette.grey['500']\r\n}));\r\n\r\nconst ChildrenStyles = styled(Box)(({ theme }) => ({\r\n boxShadow: 'none',\r\n padding: theme.spacing(2, 2),\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingTop: 15,\r\n alignItems: 'center',\r\n justifyContent: 'space-around'\r\n}));\r\n\r\nconst ChildItems = styled(Box)(({ theme }) => ({\r\n boxShadow: 'none',\r\n padding: theme.spacing(2, 2),\r\n display: 'flex',\r\n flexDirection: 'column',\r\n paddingTop: 30,\r\n alignItems: 'center',\r\n justifyContent: 'space-around'\r\n}));\r\nconst Detail = styled('div')(({ theme }) => ({\r\n color: theme.palette.common.black,\r\n\r\n '.title': {\r\n fontSize: '1.1rem',\r\n fontWeight: 'bold'\r\n },\r\n '.content': {\r\n padding: '1rem',\r\n '.content-item': {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n '.status': {\r\n color: theme.palette.grey[500]\r\n }\r\n }\r\n }\r\n \r\n}));\r\n// ----------------------------------------------------------------------\r\n\r\nconst TOTAL = 10;\r\n\r\nexport default function AgentAvailability({ totalAgents, agentAvailable, agentOnline }) {\r\n const theme = useTheme();\r\n const [agentStatusData, setAgentStatusData] = useState([]);\r\n \r\n const agentStatusList = () => {\r\n GetWallboard();\r\n \r\n\r\n };\r\n //var API_URI = \"https://6z8v1wept5.execute-api.eu-central-1.amazonaws.com/prod/wallboard/?Wallboard=acdata\";\r\n var API_URI = \"https://ibvqxxm9u3.execute-api.eu-west-2.amazonaws.com/prod/wallboard/?Wallboard=admissnagentstatus\";\r\n \r\n const RefreshInterval = 5000; // How often to retrieve data in milliseconds\r\n\r\n var API_Client = null;\r\n\r\n function GetWallboard() {\r\n\r\n API_Client = new XMLHttpRequest();\r\n API_Client.onreadystatechange = ProcessResponse;\r\n API_Client.open(\"get\", API_URI);\r\n API_Client.setRequestHeader(\"Content-Type\", \"application/json\");\r\n API_Client.timeout = 10000\r\n API_Client.ontimeout = ProcessTimeout;\r\n API_Client.send();\r\n\r\n setTimeout(GetWallboard, RefreshInterval);\r\n\r\n }\r\n function ProcessResponse() {\r\n if (API_Client.readyState == XMLHttpRequest.DONE) {\r\n try {\r\n var Result = API_Client.responseText;\r\n document.getElementById(\"wallboard\").innerHTML = Result\r\n }\r\n catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n }\r\n\r\n function ProcessTimeout() {\r\n console.log(\"Query to API Gateway timed out\")\r\n }\r\n useEffect(() => {\r\n agentStatusList();\r\n }, []);\r\n return (\r\n \r\n \r\n Live Agent Status\r\n \r\n \r\n Loading data...\r\n \r\n\r\n \r\n\r\n );\r\n \r\n}","import { useEffect, useState } from 'react';\r\nimport { Icon } from '@iconify/react';\r\nimport bugFilled from '@iconify/icons-ant-design/bug-filled';\r\n// material\r\nimport { alpha, styled } from '@mui/material/styles';\r\nimport { Box, Card, Typography, useTheme } from '@mui/material';\r\n// utils\r\nimport { fShortenNumber } from '../../../utils/formatNumber';\r\nimport SimpleLoading from 'src/layouts/SImpleLoading/SimpleLoading';\r\nimport { awsConnect, awsConnectInstanceId } from '../../../api/awsConnect';\r\nimport { CircularProgressWithLabel } from './CircleProgressWithLabel';\r\n// ----------------------------------------------------------------------\r\n\r\n\r\nconst RootStyle = styled(Card)(({ theme }) => ({\r\n boxShadow: 'none',\r\n // textAlign: 'center',\r\n padding: theme.spacing(2, 2),\r\n color: theme.palette.error.darker,\r\n backgroundColor: theme.palette.customBlackThemeColor.cardColor,\r\n height: '100%',\r\n width: '100%'\r\n\r\n}));\r\n\r\nconst ChildrenStyles = styled(Box)(({ theme }) => ({\r\n boxShadow: 'none',\r\n padding: theme.spacing(2, 2),\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingTop: 15,\r\n alignItems: 'center',\r\n justifyContent: 'space-around'\r\n\r\n}));\r\n\r\nconst NoData = styled('p')(({ theme }) => ({\r\n textAlign: 'center',\r\n marginTop: '1rem',\r\n color: theme.palette.grey['500']\r\n}));\r\n\r\nconst ChildItems = styled(Box)(({ theme }) => ({\r\n boxShadow: 'none',\r\n padding: theme.spacing(2, 2),\r\n display: 'flex',\r\n flexDirection: 'column',\r\n paddingTop: 30,\r\n alignItems: 'center',\r\n justifyContent: 'space-around'\r\n}));\r\nconst Detail = styled('div')(({ theme }) => ({\r\n color: theme.palette.common.black,\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n '.title': {\r\n fontSize: '1.1rem',\r\n fontWeight: 'bold'\r\n },\r\n '.content': {\r\n padding: '1rem',\r\n '.content-item': {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n '.status': {\r\n color: theme.palette.grey[500]\r\n }\r\n }\r\n }\r\n}));\r\n// ----------------------------------------------------------------------\r\n\r\nconst TOTAL = 10;\r\n\r\nexport default function QueueMetricsAvailability({ totalAgents, agentAvailable, agentOnline }) {\r\n const theme = useTheme();\r\n const [agentStatusData, setAgentStatusData] = useState([]);\r\n \r\n const agentStatusList = () => {\r\n GetWallboard();\r\n };\r\n \r\n \r\n var API_URI = \"https://ibvqxxm9u3.execute-api.eu-west-2.amazonaws.com/prod/wallboard/?Wallboard=admissnmetricsdetails\";\r\n\r\n \r\n const RefreshInterval = 5000; // How often to retrieve data in milliseconds\r\n\r\n var API_Client = null;\r\n\r\n\r\n \r\n\r\n function GetWallboard() {\r\n\r\n API_Client = new XMLHttpRequest();\r\n API_Client.onreadystatechange = ProcessResponse;\r\n API_Client.open(\"get\", API_URI);\r\n API_Client.setRequestHeader(\"Content-Type\", \"application/json\");\r\n API_Client.timeout = 10000\r\n API_Client.ontimeout = ProcessTimeout;\r\n API_Client.send();\r\n\r\n setTimeout(GetWallboard, RefreshInterval);\r\n\r\n }\r\n function ProcessResponse() {\r\n if (API_Client.readyState == XMLHttpRequest.DONE) {\r\n try {\r\n var Result = API_Client.responseText;\r\n document.getElementById(\"acc\").innerHTML = Result\r\n }\r\n catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n }\r\n\r\n \r\n\r\n function ProcessTimeout() {\r\n console.log(\"Query to API Gateway timed out\")\r\n }\r\n useEffect(() => {\r\n \r\n agentStatusList();\r\n \r\n }, []);\r\n return (\r\n \r\n \r\n Real Time Queue Metrics\r\n \r\n \r\n
\r\n Loading data...\r\n
\r\n
\r\n \r\n
\r\n\r\n );\r\n \r\n}","// material\r\nimport { alpha, useTheme } from '@mui/material/styles';\r\nimport { GlobalStyles } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport function BaseOptionChartStyle() {\r\n const theme = useTheme();\r\n\r\n const background = {\r\n backdropFilter: 'blur(6px)',\r\n WebkitBackdropFilter: 'blur(6px)', // Fix on Mobile\r\n backgroundColor: alpha(theme.palette.background.default, 0.72)\r\n };\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default function BaseOptionChart() {\r\n const theme = useTheme();\r\n\r\n const LABEL_TOTAL = {\r\n show: true,\r\n label: 'Total',\r\n color: theme.palette.text.secondary,\r\n ...theme.typography.subtitle2\r\n };\r\n\r\n const LABEL_VALUE = {\r\n offsetY: 8,\r\n color: theme.palette.text.primary,\r\n ...theme.typography.h3\r\n };\r\n\r\n return {\r\n // Colors\r\n colors: [\r\n theme.palette.primary.main,\r\n theme.palette.chart.yellow[0],\r\n theme.palette.chart.blue[0],\r\n theme.palette.chart.violet[0],\r\n theme.palette.chart.green[0],\r\n theme.palette.chart.red[0]\r\n ],\r\n\r\n // Chart\r\n chart: {\r\n toolbar: { show: false },\r\n zoom: { enabled: false },\r\n // animations: { enabled: false },\r\n foreColor: theme.palette.text.disabled,\r\n fontFamily: theme.typography.fontFamily\r\n },\r\n\r\n // States\r\n states: {\r\n hover: {\r\n filter: {\r\n type: 'lighten',\r\n value: 0.04\r\n }\r\n },\r\n active: {\r\n filter: {\r\n type: 'darken',\r\n value: 0.88\r\n }\r\n }\r\n },\r\n\r\n // Fill\r\n fill: {\r\n opacity: 1,\r\n gradient: {\r\n type: 'vertical',\r\n shadeIntensity: 0,\r\n opacityFrom: 0.4,\r\n opacityTo: 0,\r\n stops: [0, 100]\r\n }\r\n },\r\n\r\n // Datalabels\r\n dataLabels: { enabled: false },\r\n\r\n // Stroke\r\n stroke: {\r\n width: 3,\r\n curve: 'smooth',\r\n lineCap: 'round'\r\n },\r\n\r\n // Grid\r\n grid: {\r\n strokeDashArray: 3,\r\n borderColor: theme.palette.divider\r\n },\r\n\r\n // Xaxis\r\n xaxis: {\r\n axisBorder: { show: false },\r\n axisTicks: { show: false }\r\n },\r\n\r\n // Markers\r\n markers: {\r\n size: 0,\r\n strokeColors: theme.palette.background.paper\r\n },\r\n\r\n // Tooltip\r\n tooltip: {\r\n x: {\r\n show: false\r\n }\r\n },\r\n\r\n // Legend\r\n legend: {\r\n show: true,\r\n fontSize: 13,\r\n position: 'top',\r\n horizontalAlign: 'right',\r\n markers: {\r\n radius: 12\r\n },\r\n fontWeight: 500,\r\n itemMargin: { horizontal: 12 },\r\n labels: {\r\n colors: theme.palette.text.primary\r\n }\r\n },\r\n\r\n // plotOptions\r\n plotOptions: {\r\n // Bar\r\n bar: {\r\n columnWidth: '28%',\r\n borderRadius: 4\r\n },\r\n // Pie + Donut\r\n pie: {\r\n donut: {\r\n labels: {\r\n show: true,\r\n value: LABEL_VALUE,\r\n total: LABEL_TOTAL\r\n }\r\n }\r\n },\r\n // Radialbar\r\n radialBar: {\r\n track: {\r\n strokeWidth: '100%',\r\n background: theme.palette.grey[500_16]\r\n },\r\n dataLabels: {\r\n value: LABEL_VALUE,\r\n total: LABEL_TOTAL\r\n }\r\n },\r\n // Radar\r\n radar: {\r\n polygons: {\r\n fill: { colors: ['transparent'] },\r\n strokeColors: theme.palette.divider,\r\n connectorColors: theme.palette.divider\r\n }\r\n },\r\n // polarArea\r\n polarArea: {\r\n rings: {\r\n strokeColor: theme.palette.divider\r\n },\r\n spokes: {\r\n connectorColors: theme.palette.divider\r\n }\r\n }\r\n },\r\n\r\n // Responsive\r\n responsive: [\r\n {\r\n // sm\r\n breakpoint: theme.breakpoints.values.sm,\r\n options: {\r\n plotOptions: { bar: { columnWidth: '40%' } }\r\n }\r\n },\r\n {\r\n // md\r\n breakpoint: theme.breakpoints.values.md,\r\n options: {\r\n plotOptions: { bar: { columnWidth: '32%' } }\r\n }\r\n }\r\n ]\r\n };\r\n}\r\n","import React from 'react';\r\nimport { merge } from 'lodash';\r\nimport ReactApexChart from 'react-apexcharts';\r\n// material\r\nimport { useTheme, styled } from '@mui/material/styles';\r\nimport { Card, CardHeader } from '@mui/material';\r\n//\r\nimport { BaseOptionChart } from '../../charts';\r\nimport { ColorModeContext } from 'src/theme';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst CHART_HEIGHT = 392;\r\nconst LEGEND_HEIGHT = 72;\r\n\r\nconst ChartWrapperStyle = styled('div')(({ theme }) => ({\r\n height: CHART_HEIGHT,\r\n marginTop: theme.spacing(2),\r\n '& .apexcharts-canvas svg': {\r\n height: CHART_HEIGHT\r\n },\r\n '& .apexcharts-canvas svg,.apexcharts-canvas foreignObject': {\r\n overflow: 'visible'\r\n },\r\n '& .apexcharts-legend': {\r\n height: LEGEND_HEIGHT,\r\n alignContent: 'center',\r\n position: 'relative !important',\r\n borderTop: `solid 1px ${theme.palette.divider}`,\r\n top: `calc(${CHART_HEIGHT - LEGEND_HEIGHT}px) !important`\r\n }\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst CHART_DATA = [\r\n { name: 'Series 1', data: [80, 50, 30, 40, 100, 20] },\r\n { name: 'Series 2', data: [20, 30, 40, 80, 20, 80] },\r\n { name: 'Series 3', data: [44, 76, 78, 13, 43, 10] }\r\n];\r\n\r\nexport default function AppCurrentSubject() {\r\n const { toggleColorMode, mode } = React.useContext(ColorModeContext);\r\n const theme = useTheme();\r\n const bgColor =\r\n mode === 'light' ? theme.palette.common.white : theme.palette.customBlackThemeColor.charts;\r\n\r\n const chartOptions = merge(BaseOptionChart(), {\r\n stroke: { width: 2 },\r\n fill: { opacity: 0.48 },\r\n legend: { floating: true, horizontalAlign: 'center' },\r\n xaxis: {\r\n categories: ['English', 'History', 'Physics', 'Geography', 'Chinese', 'Math'],\r\n labels: {\r\n style: {\r\n colors: [\r\n theme.palette.text.secondary,\r\n theme.palette.text.secondary,\r\n theme.palette.text.secondary,\r\n theme.palette.text.secondary,\r\n theme.palette.text.secondary,\r\n theme.palette.text.secondary\r\n ]\r\n }\r\n }\r\n }\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport { merge } from 'lodash';\r\nimport ReactApexChart from 'react-apexcharts';\r\n// material\r\nimport { useTheme, styled } from '@mui/material/styles';\r\nimport { Card, CardHeader } from '@mui/material';\r\n// utils\r\nimport { fNumber } from '../../../utils/formatNumber';\r\n//\r\nimport { BaseOptionChart } from '../../charts';\r\nimport { ColorModeContext } from 'src/theme';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst CHART_HEIGHT = 372;\r\nconst LEGEND_HEIGHT = 72;\r\n\r\nconst ChartWrapperStyle = styled('div')(({ theme }) => ({\r\n height: CHART_HEIGHT,\r\n marginTop: theme.spacing(5),\r\n '& .apexcharts-canvas svg': { height: CHART_HEIGHT },\r\n '& .apexcharts-canvas svg,.apexcharts-canvas foreignObject': {\r\n overflow: 'visible'\r\n },\r\n '& .apexcharts-legend': {\r\n height: LEGEND_HEIGHT,\r\n alignContent: 'center',\r\n position: 'relative !important',\r\n borderTop: `solid 1px ${theme.palette.divider}`,\r\n top: `calc(${CHART_HEIGHT - LEGEND_HEIGHT}px) !important`\r\n }\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst CHART_DATA = [4344, 5435, 1443, 4443];\r\n\r\nexport default function AppCurrentVisits() {\r\n const theme = useTheme();\r\n const { toggleColorMode, mode } = React.useContext(ColorModeContext);\r\n\r\n const bgColor =\r\n mode === 'light' ? theme.palette.common.white : theme.palette.customBlackThemeColor.charts;\r\n\r\n const chartOptions = merge(BaseOptionChart(), {\r\n colors: [\r\n theme.palette.primary.main,\r\n theme.palette.info.main,\r\n theme.palette.warning.main,\r\n theme.palette.error.main\r\n ],\r\n labels: ['America', 'Asia', 'Europe', 'Africa'],\r\n stroke: { colors: [bgColor] },\r\n legend: { floating: true, horizontalAlign: 'center' },\r\n dataLabels: { enabled: true, dropShadow: { enabled: false } },\r\n tooltip: {\r\n fillSeriesColor: false,\r\n y: {\r\n formatter: (seriesName) => fNumber(seriesName),\r\n title: {\r\n formatter: (seriesName) => `#${seriesName}`\r\n }\r\n }\r\n },\r\n plotOptions: {\r\n pie: { donut: { labels: { show: false } } }\r\n }\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import { Icon } from '@iconify/react';\r\nimport bugFilled from '@iconify/icons-ant-design/bug-filled';\r\n// material\r\nimport { alpha, styled } from '@mui/material/styles';\r\nimport { Box, Card, Divider, Typography, useTheme } from '@mui/material';\r\n// utils\r\nimport { fShortenNumber } from '../../../utils/formatNumber';\r\nimport SimpleLoading from 'src/layouts/SImpleLoading/SimpleLoading';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst RootStyle = styled(Card)(({ theme }) => ({\r\n boxShadow: 'none',\r\n // textAlign: 'center',\r\n padding: theme.spacing(2, 2),\r\n color: theme.palette.error.darker,\r\n backgroundColor: theme.palette.customBlackThemeColor.cardColor,\r\n height: '100%',\r\n width: '100%'\r\n}));\r\n\r\nconst ChildrenStyles = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(2, 2),\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingTop: 15,\r\n alignItems: 'center',\r\n justifyContent: 'space-around',\r\n zIndex: 1\r\n}));\r\n\r\nconst Child2ItemsStyle = styled(Box)(({ theme }) => ({\r\n boxShadow: 'none',\r\n padding: theme.spacing(2, 3),\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingTop: 10,\r\n alignItems: 'center',\r\n justifyContent: 'space-between'\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst TOTAL = 10;\r\n\r\nexport default function ContactsInQueue({ contactsInQueue, voice }) {\r\n const theme = useTheme();\r\n return (\r\n \r\n \r\n Contacts In Queue\r\n \r\n \r\n \r\n \r\n {contactsInQueue}\r\n \r\n \r\n \r\n \r\n \r\n \r\n Voice\r\n \r\n \r\n {voice}\r\n \r\n \r\n \r\n \r\n Callbacks\r\n \r\n \r\n 0\r\n \r\n \r\n \r\n \r\n \r\n Live Hook\r\n \r\n \r\n \r\n \r\n \r\n Empty\r\n \r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport faker from 'faker';\r\nimport PropTypes from 'prop-types';\r\nimport { Icon } from '@iconify/react';\r\nimport { formatDistance } from 'date-fns';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport arrowIosForwardFill from '@iconify/icons-eva/arrow-ios-forward-fill';\r\n// material\r\nimport { Box, Stack, Link, Card, Button, Divider, Typography, CardHeader } from '@mui/material';\r\n// utils\r\nimport { mockImgCover } from '../../../utils/mockImages';\r\n//\r\nimport Scrollbar from '../../Scrollbar';\r\nimport { ColorModeContext } from 'src/theme';\r\nimport { useTheme } from '@mui/system';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst NEWS = [...Array(5)].map((_, index) => {\r\n const setIndex = index + 1;\r\n return {\r\n title: faker.name.title(),\r\n description: faker.lorem.paragraphs(),\r\n image: mockImgCover(setIndex),\r\n postedAt: faker.date.soon()\r\n };\r\n});\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nNewsItem.propTypes = {\r\n news: PropTypes.object.isRequired\r\n};\r\n\r\nfunction NewsItem({ news }) {\r\n const { image, title, description, postedAt } = news;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n {description}\r\n \r\n \r\n \r\n {formatDistance(postedAt, new Date())}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default function AppNewsUpdate() {\r\n const { toggleColorMode, mode } = React.useContext(ColorModeContext);\r\n const theme = useTheme();\r\n const bgColor =\r\n mode === 'light' ? theme.palette.common.white : theme.palette.customBlackThemeColor.charts;\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n {NEWS.map((news) => (\r\n \r\n ))}\r\n \r\n \r\n\r\n \r\n\r\n \r\n }\r\n >\r\n View all\r\n \r\n \r\n \r\n );\r\n}\r\n","import { Icon } from '@iconify/react';\r\nimport appleFilled from '@iconify/icons-ant-design/apple-filled';\r\n// material\r\nimport { alpha, styled } from '@mui/material/styles';\r\nimport { Card, Typography } from '@mui/material';\r\n// utils\r\nimport { fShortenNumber } from '../../../utils/formatNumber';\r\n\r\n// ----------------------------------------------------------------------\r\n \r\nconst RootStyle = styled(Card)(({ theme }) => ({\r\n boxShadow: 'none',\r\n textAlign: 'center',\r\n padding: theme.spacing(5, 0),\r\n color: theme.palette.info.darker,\r\n backgroundColor: theme.palette.info.lighter\r\n}));\r\n\r\nconst IconWrapperStyle = styled('div')(({ theme }) => ({\r\n margin: 'auto',\r\n display: 'flex',\r\n borderRadius: '50%',\r\n alignItems: 'center',\r\n width: theme.spacing(8),\r\n height: theme.spacing(8),\r\n justifyContent: 'center',\r\n marginBottom: theme.spacing(3),\r\n color: theme.palette.info.dark,\r\n backgroundImage: `linear-gradient(135deg, ${alpha(theme.palette.info.dark, 0)} 0%, ${alpha(\r\n theme.palette.info.dark,\r\n 0.24\r\n )} 100%)`\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst TOTAL = 20;\r\n\r\nexport default function TotalWaiting() {\r\n return (\r\n \r\n \r\n \r\n \r\n {fShortenNumber(TOTAL)}\r\n \r\n Total Waiting\r\n \r\n \r\n );\r\n}\r\n","import { useContext } from 'react';\r\nimport { Icon } from '@iconify/react';\r\nimport bugFilled from '@iconify/icons-ant-design/bug-filled';\r\n// material\r\nimport { alpha, styled } from '@mui/material/styles';\r\nimport { Box, Card, Divider, Typography, useTheme } from '@mui/material';\r\n// utils\r\nimport { fShortenNumber } from '../../../utils/formatNumber';\r\nimport SimpleLoading from 'src/layouts/SImpleLoading/SimpleLoading';\r\nimport { ColorModeContext } from 'src/theme';\r\n// ----------------------------------------------------------------------\r\n\r\nconst RootStyle = styled(Card)(({ theme, mode }) => ({\r\n boxShadow: 'none',\r\n padding: theme.spacing(2, 2),\r\n color: theme.palette.error.darker,\r\n backgroundColor: theme.palette.customBlackThemeColor.cardColor,\r\n height: 183\r\n // width: '100%'\r\n}));\r\n\r\nconst ChildrenStyles = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(0, 0),\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingTop: 2,\r\n alignItems: 'center',\r\n justifyContent: 'space-around',\r\n zIndex: 1,\r\n marginTop: '3rem'\r\n}));\r\n\r\nconst Child2ItemsStyle = styled(Box)(({ theme }) => ({\r\n boxShadow: 'none',\r\n padding: theme.spacing(2, 1),\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingTop: 1,\r\n alignItems: 'left',\r\n justifyContent: 'space-between',\r\n marginLeft: 2,\r\n // [theme.breakpoints.up('md')]: {\r\n // width: 200\r\n // },\r\n // [theme.breakpoints.up('lg')]: {\r\n // width: 300\r\n // },\r\n // [theme.breakpoints.up('lg')]: {\r\n // width: 200\r\n // },\r\n\r\n height: 80,\r\n border: `1px solid ${alpha(theme.palette.customBlackThemeColor.sidebarTextColor, 0.7)}`\r\n}));\r\n\r\nconst ContentWrapper = styled(Box)(({ theme }) => ({\r\n width: 150,\r\n height: 150,\r\n border: '1px solid #000'\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst TOTAL = 10;\r\n\r\nexport default function ACDTalkTime(props) {\r\n const theme = useTheme();\r\n const { toggleColorMode, mode } = useContext(ColorModeContext);\r\n const { contactsHandled, totalHandledTime } = props;\r\n return (\r\n \r\n \r\n ACD Talk Time\r\n \r\n \r\n \r\n \r\n \r\n \r\n {contactsHandled}\r\n \r\n \r\n \r\n ACD Handler\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {totalHandledTime.hour === '00'\r\n ? `${totalHandledTime.minutes}m ${totalHandledTime.seconds}s`\r\n : `${totalHandledTime.hour}h ${totalHandledTime.minutes}m ${totalHandledTime.seconds}s`}\r\n \r\n \r\n \r\n ACD Time\r\n \r\n \r\n \r\n \r\n {/* \r\n \r\n \r\n Voice\r\n \r\n \r\n 0\r\n \r\n \r\n \r\n \r\n Callbacks\r\n \r\n \r\n 0\r\n \r\n \r\n \r\n \r\n \r\n Live Hook\r\n \r\n \r\n \r\n \r\n \r\n Empty\r\n \r\n */}\r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport faker from 'faker';\r\nimport PropTypes from 'prop-types';\r\n// material\r\nimport { Card, Typography, CardHeader, CardContent, useTheme } from '@mui/material';\r\nimport {\r\n Timeline,\r\n TimelineItem,\r\n TimelineContent,\r\n TimelineConnector,\r\n TimelineSeparator,\r\n TimelineDot\r\n} from '@mui/lab';\r\n// utils\r\nimport { fDateTime } from '../../../utils/formatTime';\r\nimport { ColorModeContext } from 'src/theme';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst TIMELINES = [\r\n {\r\n title: '1983, orders, $4220',\r\n time: faker.date.past(),\r\n type: 'order1'\r\n },\r\n {\r\n title: '12 Invoices have been paid',\r\n time: faker.date.past(),\r\n type: 'order2'\r\n },\r\n {\r\n title: 'Order #37745 from September',\r\n time: faker.date.past(),\r\n type: 'order3'\r\n },\r\n {\r\n title: 'New order placed #XF-2356',\r\n time: faker.date.past(),\r\n type: 'order4'\r\n },\r\n {\r\n title: 'New order placed #XF-2346',\r\n time: faker.date.past(),\r\n type: 'order5'\r\n }\r\n];\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nOrderItem.propTypes = {\r\n item: PropTypes.object,\r\n isLast: PropTypes.bool\r\n};\r\n\r\nfunction OrderItem({ item, isLast, mode, theme }) {\r\n const { type, title, time } = item;\r\n return (\r\n \r\n \r\n \r\n {isLast ? null : }\r\n \r\n \r\n \r\n {title}\r\n \r\n \r\n {fDateTime(time)}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default function AppOrderTimeline() {\r\n const { toggleColorMode, mode } = React.useContext(ColorModeContext);\r\n const theme = useTheme();\r\n const bgColor =\r\n mode === 'light' ? theme.palette.common.white : theme.palette.customBlackThemeColor.charts;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {TIMELINES.map((item, index) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport faker from 'faker';\r\nimport PropTypes from 'prop-types';\r\nimport { Icon } from '@iconify/react';\r\nimport googleFill from '@iconify/icons-eva/google-fill';\r\nimport twitterFill from '@iconify/icons-eva/twitter-fill';\r\nimport facebookFill from '@iconify/icons-eva/facebook-fill';\r\nimport linkedinFill from '@iconify/icons-eva/linkedin-fill';\r\n// material\r\nimport {\r\n Box,\r\n Grid,\r\n Card,\r\n Paper,\r\n Typography,\r\n CardHeader,\r\n CardContent,\r\n useTheme\r\n} from '@mui/material';\r\n// utils\r\nimport { fShortenNumber } from '../../../utils/formatNumber';\r\nimport { ColorModeContext } from 'src/theme';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst SOCIALS = [\r\n {\r\n name: 'FaceBook',\r\n value: faker.datatype.number(),\r\n icon: \r\n },\r\n {\r\n name: 'Google',\r\n value: faker.datatype.number(),\r\n icon: \r\n },\r\n {\r\n name: 'Linkedin',\r\n value: faker.datatype.number(),\r\n icon: \r\n },\r\n {\r\n name: 'Twitter',\r\n value: faker.datatype.number(),\r\n icon: \r\n }\r\n];\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nSiteItem.propTypes = {\r\n site: PropTypes.object\r\n};\r\n\r\nfunction SiteItem({ site, mode, theme }) {\r\n const { icon, value, name } = site;\r\n const bgColor =\r\n mode === 'light' ? theme.palette.common.white : theme.palette.customBlackThemeColor.charts;\r\n const textColor = mode === 'light' ? theme.palette.common.black : theme.palette.common.white;\r\n\r\n return (\r\n \r\n \r\n {icon}\r\n \r\n {fShortenNumber(value)}\r\n \r\n \r\n {name}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default function AppTrafficBySite() {\r\n const { toggleColorMode, mode } = React.useContext(ColorModeContext);\r\n const theme = useTheme();\r\n const bgColor =\r\n mode === 'light' ? theme.palette.common.white : theme.palette.customBlackThemeColor.charts;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {SOCIALS.map((site) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n}\r\n","import { Icon } from '@iconify/react';\r\nimport androidFilled from '@iconify/icons-ant-design/android-filled';\r\n// material\r\nimport { alpha, styled } from '@mui/material/styles';\r\nimport { Card, Typography } from '@mui/material';\r\n// utils\r\nimport { fShortenNumber } from '../../../utils/formatNumber';\r\n\r\nconst RootStyle = styled(Card)(({ theme }) => ({\r\n boxShadow: 'none',\r\n textAlign: 'center',\r\n padding: theme.spacing(5, 0),\r\n color: theme.palette.primary.darker,\r\n backgroundColor: theme.palette.primary.lighter\r\n}));\r\n\r\nconst IconWrapperStyle = styled('div')(({ theme }) => ({\r\n margin: 'auto',\r\n display: 'flex',\r\n borderRadius: '50%',\r\n alignItems: 'center',\r\n width: theme.spacing(8),\r\n height: theme.spacing(8),\r\n justifyContent: 'center',\r\n marginBottom: theme.spacing(3),\r\n color: theme.palette.primary.dark,\r\n backgroundImage: `linear-gradient(135deg, ${alpha(theme.palette.primary.dark, 0)} 0%, ${alpha(\r\n theme.palette.primary.dark,\r\n 0.24\r\n )} 100%)`\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst TOTAL = 150;\r\n\r\nexport default function TotalCustomers() {\r\n return (\r\n \r\n \r\n \r\n \r\n {fShortenNumber(TOTAL)}\r\n \r\n Total Customers\r\n \r\n \r\n );\r\n}\r\n","import axios from 'axios';\r\nexport const baseURL = 'https://spoycxvzbc.execute-api.eu-west-2.amazonaws.com/uob';\r\n\r\nexport const backendURL = {\r\n getWrapCode: 'getwrapcodes',\r\n addWrapCode: 'addwrapcodes',\r\n getRecentlyActivities: 'getrecentactivities',\r\n addRecentlyActivities: 'addrecentlyactivities',\r\n updateActivity: 'updateActivity',\r\n getagentperformance: 'getagentperformance',\r\n getagentactivities: 'getagentactivities',\r\n};\r\nconst instance = axios.create({\r\n baseURL\r\n});\r\nexport default instance;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { alpha, styled, useTheme } from '@mui/material/styles';\r\nimport { Card, Typography, Box, Button } from '@mui/material';\r\nimport { Icon } from '@iconify/react';\r\nimport { awsConnect, awsConnectInstanceId } from '../../../api/awsConnect';\r\nimport momentTZ from 'moment-timezone';\r\nimport moment from 'moment';\r\nimport { useSelector } from 'react-redux';\r\nimport {\r\n Timeline,\r\n TimelineItem,\r\n TimelineSeparator,\r\n TimelineContent,\r\n TimelineDot,\r\n TimelineConnector\r\n} from '@mui/lab';\r\nimport Backend, { backendURL } from '../../../api/backend';\r\nimport _ from 'lodash';\r\n\r\nconst RootStyle = styled(Card)(({ theme }) => ({\r\n boxShadow: 'none',\r\n borderRadius:'16px',\r\n // textAlign: 'center',\r\n padding: theme.spacing(2, 2),\r\n color: theme.palette.common.black,\r\n // backgroundColor: theme.palette.error.lighter,\r\n backgroundColor: theme.palette.customBlackThemeColor.cardColor,\r\n height: '100%',\r\n width: '100%'\r\n \r\n}));\r\nconst ActivityHeader = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n width: '100%',\r\n '& .recentlyTime': {\r\n color: theme.palette.grey[600],\r\n fontSize:'12px'\r\n }\r\n}));\r\nconst ChildrenStyles = styled(Box)(({ theme }) => ({\r\n // border: '1px solid black'\r\n padding: theme.spacing(0, 0),\r\n height: '28rem',\r\n display: 'block',\r\n flexDirection: 'row',\r\n paddingTop: 1,\r\n alignItems: 'center',\r\n overflowX: 'hidden',\r\n overflowY: 'auto',\r\n}));\r\nconst TimeLineCustomItem = styled(TimelineItem)(({ theme }) => ({\r\n '&::before': {\r\n content: 'none',\r\n width: 0\r\n }\r\n}));\r\nconst NoData = styled('p')(({ theme }) => ({\r\n textAlign: 'center',\r\n marginTop: '1rem',\r\n width: '100%',\r\n height:'100%',\r\n color: theme.palette.grey['500']\r\n}));\r\nconst ActivityContent = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n flexDirection: 'row',\r\n '& .voice': {\r\n color: theme.palette.grey[600],\r\n fontSize: '0.6rem'\r\n },\r\n '& .content-1': {\r\n display: 'flex',\r\n alignItem: 'center',\r\n fontSize: '12px',\r\n '.icon': {\r\n alignSelf: 'center'\r\n },\r\n '.phone': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginLeft: '4px'\r\n \r\n }\r\n },\r\n '& .content-2': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginLeft: '6px',\r\n fontSize: '12px'\r\n }\r\n ,\r\n '& .content-3': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginLeft: '6px',\r\n fontSize: '12px'\r\n },\r\n '.wrap-up': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginLeft: '4px',\r\n color:'#54D62C'\r\n\r\n }\r\n}));\r\nconst ActivityFooter = styled('div')(({ theme }) => ({\r\n marginTop: '10px',\r\n '.title': {\r\n fontSize: '12px'\r\n },\r\n '.content': {\r\n color: theme.palette.grey['500']\r\n }\r\n}));\r\nconst activityList = [\r\n {\r\n recentlyTime: '2 hour ago',\r\n type: 'OUTBOUND',\r\n number: '(619) 972-7326',\r\n name: 'TechinalSupport',\r\n time: '2019-04-25 10:25:22'\r\n },\r\n {\r\n recentlyTime: '3 hour ago',\r\n type: 'INBOUND',\r\n number: '(619) 972-7326',\r\n name: 'GeneralSupport',\r\n time: '2019-04-25 10:25:22'\r\n }\r\n];\r\n\r\nconst RecentActivity = ({agentname }) => {\r\n const theme = useTheme();\r\n const data = useSelector((state) => state.recentlyActivity);\r\n const [recentlyActivityData, setRecentlyActivityData] = useState([]);\r\n const getRecentActivities = async () => {\r\n try {\r\n const data = await Backend({\r\n method: 'GET',\r\n url: backendURL.getRecentlyActivities + \"?username=\" + agentname\r\n });\r\n setRecentlyActivityData(_.sortBy(data.data.body.Items, ['timestamp']).reverse());\r\n } catch (error) {\r\n console.log('Getting error in fetching of recently activity');\r\n console.log(error);\r\n }\r\n\r\n //setTimeout(getRecentActivities, 10000);\r\n };\r\n useEffect(() => {\r\n \r\n let interval = setInterval(() => {\r\n getRecentActivities();\r\n }, 10000);\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n \r\n }, [agentname]);\r\n return (\r\n \r\n \r\n Recent Activities\r\n \r\n \r\n \r\n {recentlyActivityData?.length > 0 ? (\r\n [...recentlyActivityData].map((item, index) => {\r\n const startingTime = moment(item?.startTime).format('YYYY-MM-DD hh:mm:ss');\r\n // const startOf = moment(startingTime, 'YYYY-MM-DD hh:mm:ss').fromNow();\r\n\r\n // const startOf = moment(item?.startTime).fromNow();\r\n const startOf = momentTZ(item?.startTime).tz('Europe/London').fromNow();\r\n\r\n return (\r\n \r\n \r\n \r\n {data?.data.length - 1 !== index && }\r\n \r\n \r\n \r\n {`${startOf}`}\r\n \r\n \r\n {item?.callType}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n {item?.phoneNumber}\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {`${startingTime}`}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n {`${item?.wrapCodes}`}\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n })\r\n ) : (\r\n No recent activities\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default RecentActivity;\r\n","const historicalValues = [\r\n {\r\n Name: 'AFTER_CONTACT_WORK_TIME',\r\n Unit: 'SECONDS',\r\n Statistic: 'AVG'\r\n },\r\n {\r\n Name: 'CONTACTS_QUEUED',\r\n Unit: 'COUNT',\r\n Statistic: 'SUM'\r\n },\r\n {\r\n Name: 'CONTACTS_ABANDONED',\r\n Unit: 'COUNT',\r\n Statistic: 'SUM'\r\n },\r\n {\r\n Name: 'CONTACTS_HANDLED',\r\n Unit: 'COUNT',\r\n Statistic: 'SUM'\r\n },\r\n {\r\n Name: 'CONTACTS_HANDLED_INCOMING',\r\n Unit: 'COUNT',\r\n Statistic: 'SUM'\r\n },\r\n {\r\n Name: 'CONTACTS_HANDLED_OUTBOUND',\r\n Unit: 'COUNT',\r\n Statistic: 'SUM'\r\n },\r\n {\r\n Name: 'CALLBACK_CONTACTS_HANDLED',\r\n Unit: 'COUNT',\r\n Statistic: 'SUM'\r\n },\r\n {\r\n Name: 'HANDLE_TIME',\r\n Unit: 'SECONDS',\r\n Statistic: 'AVG'\r\n },\r\n {\r\n Name: 'QUEUE_ANSWER_TIME',\r\n Unit: 'SECONDS',\r\n Statistic: 'AVG'\r\n },\r\n {\r\n Name: 'INTERACTION_TIME',\r\n Unit: 'SECONDS',\r\n Statistic: 'AVG'\r\n },\r\n {\r\n Name: 'CONTACTS_TRANSFERRED_OUT',\r\n Unit: 'COUNT',\r\n Statistic: 'SUM'\r\n },\r\n {\r\n Name: 'CONTACTS_MISSED',\r\n Unit: 'COUNT',\r\n Statistic: 'SUM'\r\n },\r\n {\r\n Name: 'OCCUPANCY',\r\n Unit: 'PERCENT',\r\n Statistic: 'AVG'\r\n },\r\n {\r\n Name: 'QUEUED_TIME',\r\n Unit: 'SECONDS',\r\n Statistic: 'MAX'\r\n },\r\n {\r\n Name: 'HOLD_TIME',\r\n Unit: 'SECONDS',\r\n Statistic: 'AVG'\r\n },\r\n {\r\n Name: 'SERVICE_LEVEL',\r\n Threshold: {\r\n Comparison: 'LT',\r\n ThresholdValue: 120.0\r\n },\r\n Unit: 'PERCENT',\r\n Statistic: 'AVG'\r\n },\r\n {\r\n Name: 'SERVICE_LEVEL',\r\n Threshold: {\r\n Comparison: 'LT',\r\n ThresholdValue: 500.0\r\n },\r\n Unit: 'PERCENT',\r\n Statistic: 'AVG'\r\n }\r\n];\r\nconst currentMetrics = [\r\n {\r\n Name: 'AGENTS_ON_CALL',\r\n Unit: 'COUNT'\r\n },\r\n {\r\n Name: 'AGENTS_ONLINE',\r\n Unit: 'COUNT'\r\n },\r\n {\r\n Name: 'AGENTS_AVAILABLE',\r\n Unit: 'COUNT'\r\n },\r\n {\r\n Name: 'AGENTS_NON_PRODUCTIVE',\r\n Unit: 'COUNT'\r\n },\r\n {\r\n Name: 'AGENTS_AFTER_CONTACT_WORK',\r\n Unit: 'COUNT'\r\n },\r\n {\r\n Name: 'AGENTS_ERROR',\r\n Unit: 'COUNT'\r\n },\r\n {\r\n Name: 'AGENTS_STAFFED',\r\n Unit: 'COUNT'\r\n },\r\n {\r\n Name: 'CONTACTS_IN_QUEUE',\r\n Unit: 'COUNT'\r\n },\r\n {\r\n Name: 'OLDEST_CONTACT_AGE',\r\n Unit: 'SECONDS'\r\n },\r\n {\r\n Name: 'CONTACTS_SCHEDULED',\r\n Unit: 'COUNT'\r\n },\r\n {\r\n Name: 'AGENTS_ON_CONTACT',\r\n Unit: 'COUNT'\r\n },\r\n {\r\n Name: 'SLOTS_ACTIVE',\r\n Unit: 'COUNT'\r\n },\r\n {\r\n Name: 'SLOTS_AVAILABLE',\r\n Unit: 'COUNT'\r\n }\r\n];\r\n\r\nexport { historicalValues, currentMetrics };\r\n","import React, { useState, useEffect } from 'react';\r\nimport { alpha, styled, useTheme } from '@mui/material/styles';\r\nimport { Card, Typography, Box, Grid } from '@mui/material';\r\nimport { Icon } from '@iconify/react';\r\nimport { awsConnect, awsConnectInstanceId } from '../../../api/awsConnect';\r\nimport { currentMetrics, historicalValues } from 'src/api/HistoricalMetrics';\r\n\r\nconst RootStyle = styled(Card)(({ theme }) => ({\r\n boxShadow: 'none',\r\n // textAlign: 'center',\r\n padding: theme.spacing(1, 2),\r\n color: theme.palette.common.black,\r\n backgroundColor: theme.palette.customBlackThemeColor.cardColor,\r\n height: '100%',\r\n width: '100%'\r\n}));\r\n\r\nconst ChildrenStyles = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(0, 0),\r\n marginTop: '.3rem'\r\n}));\r\nconst BoxContainer = styled(Box)(({ theme }) => ({\r\n border: `1px solid ${theme.palette.grey[400]}`,\r\n padding: '5px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n '& .item': {\r\n textAlign: 'center',\r\n fontSize: '12px'\r\n },\r\n '& .item-left': {\r\n alignSelf: 'flex-start',\r\n textAlign: 'left'\r\n }\r\n}));\r\n\r\nconst NoData = styled('p')(({ theme }) => ({\r\n textAlign: 'center',\r\n marginTop: '1rem',\r\n width: '100%',\r\n height: '225px',\r\n color: theme.palette.grey['500']\r\n}));\r\nconst WaitTime = (props) => {\r\n const theme = useTheme();\r\n\r\n const [contactsHandled, setcontactsHandled] = useState(0);\r\n const [contactsHandledIncoming, setcontactsHandledIncoming] = useState(0);\r\n const [contactsHandledOutbound, setcontactsHandledOutbound] = useState(0);\r\n const [contactsHandledCallback, setcontactsHandledCallback] = useState(0);\r\n const [contactsAbondoned, setcontactsAbondoned] = useState(0);\r\n const [contactsMissed, setcontactsMissed] = useState(0);\r\n const [interactionTime, setinteractionTime] = useState(0);\r\n const [handleTime, sethandleTime] = useState(0);\r\n const [queueAnswerTime, setqueueAnswerTime] = useState(0);\r\n const [serviceLevel, setserviceLevel] = useState(0);\r\n const [serviceLevel500, setserviceLevel500] = useState(0);\r\n const [metricData, setmetricData] = useState([]);\r\n\r\n useEffect(() => {\r\n let currentMetricsInterval = setInterval(() => {\r\n const myDate = new Date().toLocaleString('en-US', { timeZone: 'Europe/London' });\r\n const startDate = new Date(myDate);\r\n startDate.setHours(0);\r\n startDate.setMinutes(0);\r\n startDate.setSeconds(0);\r\n let startTime = startDate.getTime();\r\n var endDate = new Date(myDate);\r\n var endTimeCalc = endDate.getMinutes() - endDate.getMinutes() % 5;\r\n endDate.setMinutes(endTimeCalc);\r\n endDate.setSeconds(0);\r\n let endTime = endDate.getTime();\r\n \r\n awsConnect.getMetricData(\r\n {\r\n InstanceId: awsConnectInstanceId,\r\n StartTime: startDate,\r\n EndTime: endDate,\r\n Filters: {\r\n Channels: ['VOICE'], //[('CHAT', 'TASK')],\r\n Queues: [\r\n \"arn:aws:connect:eu-west-2:767282783672:instance/92a48059-cba0-48be-ae25-3f56b629e327/queue/5fccf498-53bf-4160-9858-093963b36aaf\"\r\n ]\r\n },\r\n Groupings: ['QUEUE'],\r\n HistoricalMetrics: historicalValues,\r\n MaxResults: 20\r\n },\r\n (err, data) => {\r\n if (data) {\r\n setmetricData(data.MetricResults);\r\n if (data.MetricResults.length >= 1) {\r\n data.MetricResults.map((item) => {\r\n item.Collections.map((colItem) => {\r\n if (colItem.Metric.Name === 'CONTACTS_HANDLED') {\r\n setcontactsHandled(colItem.Value);\r\n } else if (colItem.Metric.Name === 'CONTACTS_HANDLED_INCOMING') {\r\n setcontactsHandledIncoming(colItem.Value);\r\n }\r\n else if (colItem.Metric.Name === 'CONTACTS_HANDLED_OUTBOUND') {\r\n setcontactsHandledOutbound(colItem.Value);\r\n }\r\n else if (colItem.Metric.Name === 'CALLBACK_CONTACTS_HANDLED') {\r\n setcontactsHandledCallback(colItem.Value);\r\n }\r\n else if (colItem.Metric.Name === 'CONTACTS_ABANDONED') {\r\n setcontactsAbondoned(colItem.Value);\r\n }\r\n else if (colItem.Metric.Name === 'CONTACTS_MISSED') {\r\n setcontactsMissed(colItem.Value);\r\n }\r\n else if (colItem.Metric.Name === 'INTERACTION_TIME') {\r\n setinteractionTime(colItem.Value);\r\n }\r\n else if (colItem.Metric.Name === 'HANDLE_TIME') {\r\n sethandleTime(colItem.Value);\r\n }\r\n else if (colItem.Metric.Name === 'QUEUE_ANSWER_TIME') {\r\n setqueueAnswerTime(colItem.Value);\r\n }\r\n else if (colItem.Metric.Name === 'SERVICE_LEVEL') {\r\n if (colItem.Metric.Threshold.ThresholdValue == 120)\r\n setserviceLevel(colItem.Value);\r\n else\r\n setserviceLevel500(colItem.Value);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n else if (err) {\r\n console.log('Error found in getting data of aws connect');\r\n console.log(err);\r\n console.log(err.stack);\r\n setcontactsHandled(0);\r\n setcontactsHandledIncoming(0);\r\n setcontactsHandledOutbound(0);\r\n setcontactsHandledCallback(0);\r\n setcontactsAbondoned(0);\r\n setcontactsMissed(0);\r\n setinteractionTime(0);\r\n sethandleTime(0);\r\n setqueueAnswerTime(0);\r\n setserviceLevel(0);\r\n setserviceLevel500(0);\r\n }\r\n else {\r\n setcontactsHandled(0);\r\n setcontactsHandledIncoming(0);\r\n setcontactsHandledOutbound(0);\r\n setcontactsHandledCallback(0);\r\n setcontactsAbondoned(0);\r\n setcontactsMissed(0);\r\n setinteractionTime(0);\r\n sethandleTime(0);\r\n setqueueAnswerTime(0);\r\n setserviceLevel(0);\r\n setserviceLevel500(0);\r\n }\r\n \r\n });\r\n }, 5000);\r\n return () => {\r\n clearInterval(currentMetricsInterval);\r\n };\r\n\r\n }, []);\r\n return (\r\n \r\n \r\n Team Performance\r\n \r\n \r\n {metricData?.length > 0 ? (\r\n \r\n \r\n \r\n Handled\r\n {contactsHandled}\r\n \r\n \r\n \r\n \r\n Inbound\r\n {contactsHandledIncoming}\r\n \r\n \r\n \r\n \r\n Outbound\r\n {contactsHandledOutbound}\r\n \r\n \r\n \r\n \r\n Queue Answer Time\r\n {queueAnswerTime}s\r\n \r\n \r\n \r\n \r\n Abondoned Calls\r\n {contactsAbondoned}\r\n \r\n \r\n \r\n \r\n Missed\r\n {contactsMissed}\r\n \r\n \r\n\r\n \r\n \r\n Average Talk Time\r\n {interactionTime}s\r\n \r\n \r\n \r\n \r\n Avg Handle Time\r\n {handleTime}s\r\n \r\n \r\n \r\n \r\n Service Level (120 seconds)\r\n {serviceLevel}\r\n \r\n \r\n \r\n \r\n Service Level (500 seconds)\r\n {serviceLevel500}\r\n \r\n \r\n\r\n \r\n )\r\n : (\r\n No data found\r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default WaitTime;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { alpha, styled, useTheme } from '@mui/material/styles';\r\nimport { Card, Typography, Box, Grid } from '@mui/material';\r\nimport { Icon } from '@iconify/react';\r\nimport { awsConnect, awsConnectInstanceId } from '../../../api/awsConnect';\r\nimport { currentMetrics, historicalValues } from 'src/api/HistoricalMetrics';\r\nconst RootStyle = styled(Card)(({ theme }) => ({\r\n boxShadow: 'none',\r\n // textAlign: 'center',\r\n padding: theme.spacing(2, 2),\r\n color: theme.palette.common.black,\r\n backgroundColor: theme.palette.customBlackThemeColor.cardColor,\r\n height: '70%',\r\n width: '100%'\r\n}));\r\n\r\nconst ChildrenStyles = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(0, 0)\r\n}));\r\nconst ChildItem = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n '& .title': {\r\n fontSize: '1rem',\r\n fontWeight: 'bold'\r\n },\r\n '& .smallTitle': {\r\n fontSize: '1rem',\r\n fontWeight: 'bold',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItem: 'center',\r\n '& .sub': {\r\n fontSize: '0.5rem',\r\n color: theme.palette.grey[600]\r\n }\r\n }\r\n}));\r\nconst ChildContainer = styled('span')(() => ({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-around'\r\n}));\r\nconst SmallBox = styled('div')(({ color }) => ({\r\n height: '.5rem',\r\n width: '.5rem',\r\n border: `1px solid ${color}`,\r\n backgroundColor: color,\r\n alignSelf: 'center',\r\n marginRight: '7px'\r\n}));\r\nconst Contacts = () => {\r\n const theme = useTheme();\r\n const [totalContact, setTotalContact] = useState(0);\r\n const [contactInQueue, setContactInQueue] = useState(0);\r\n const [agentOnCall, setAgentOnCall] = useState(0);\r\n const [agentAvailable, setAgentAvailable] = useState(0);\r\n const [agentOnContact, setagentOnContact] = useState(0);\r\n const [agentACW, setagentACW] = useState(0);\r\n const [agentError, setagentError] = useState(0);\r\n const [agentOnline, setAgentOnline] = useState(0);\r\n const [metricsData, setMetricsData] = React.useState(null);\r\n useEffect(() => {\r\n let currentMetricsInterval = setInterval(() => {\r\n // var agent = new connect.Agent();\r\n //var ARNs = agent.getAllQueueARNs();\r\n awsConnect.getCurrentMetricData(\r\n {\r\n InstanceId: awsConnectInstanceId,\r\n CurrentMetrics: currentMetrics,\r\n Filters: {\r\n Channels: ['VOICE'], //[('CHAT', 'TASK')],\r\n Queues: [\r\n 'arn:aws:connect:eu-west-2:767282783672:instance/aed7cc34-ef66-4748-a407-4993ac449ccc/queue/13577535-ef22-4535-be2f-1578d4c74016'\r\n ]\r\n },\r\n Groupings: ['QUEUE', 'CHANNEL']\r\n // MaxResults: 20\r\n },\r\n (err, data) => {\r\n if (data) {\r\n setMetricsData(data);\r\n if (data.MetricResults.length > 0) {\r\n data.MetricResults.map((item) => {\r\n item.Collections.map((colItem) => {\r\n if (colItem.Metric.Name === 'CONTACTS_IN_QUEUE') {\r\n setContactInQueue(colItem.Value);\r\n } else if (colItem.Metric.Name === 'AGENTS_AVAILABLE') {\r\n setAgentAvailable(colItem.Value);\r\n } else if (colItem.Metric.Name === 'AGENTS_ONLINE') {\r\n setAgentOnline(colItem.Value);\r\n } else if (colItem.Metric.Name === 'AGENTS_ON_CALL') {\r\n setAgentOnCall(colItem.Value);\r\n }\r\n else if (colItem.Metric.Name === 'AGENTS_ON_CONTACT') {\r\n setagentOnContact(colItem.Value);\r\n }\r\n else if (colItem.Metric.Name === 'AGENTS_AFTER_CONTACT_WORK') {\r\n setagentACW(colItem.Value);\r\n }\r\n else if (colItem.Metric.Name === 'AGENTS_ERROR') {\r\n setagentError(colItem.Value);\r\n }\r\n });\r\n });\r\n }\r\n } else if (err) {\r\n console.log('Error found in getting data of aws connect');\r\n console.log(err);\r\n console.log(err.stack);\r\n }\r\n }\r\n );\r\n }, 10000);\r\n return () => {\r\n clearInterval(currentMetricsInterval);\r\n };\r\n }, []);\r\n return (\r\n \r\n \r\n Live Data\r\n \r\n \r\n \r\n \r\n \r\n {contactInQueue}\r\n contacts in queue\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {agentAvailable}\r\n\r\n \r\n Available\r\n \r\n \r\n \r\n {agentOnline}\r\n \r\n Online\r\n \r\n \r\n \r\n \r\n {agentOnCall}\r\n \r\n On Call\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {agentOnContact}\r\n \r\n On Contact\r\n \r\n \r\n \r\n \r\n\r\n {agentACW}\r\n \r\n ACW\r\n \r\n \r\n \r\n {agentError}\r\n \r\n Error\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Contacts;\r\n","import React from 'react';\r\nimport { alpha, styled, useTheme } from '@mui/material/styles';\r\nimport { Card, Typography, Box, Grid } from '@mui/material';\r\nimport { Icon } from '@iconify/react';\r\n\r\nconst RootStyle = styled(Card)(({ theme }) => ({\r\n boxShadow: 'none',\r\n // textAlign: 'center',\r\n padding: theme.spacing(1, 2),\r\n color: theme.palette.common.black,\r\n backgroundColor: theme.palette.customBlackThemeColor.cardColor,\r\n height: 140,\r\n width: '100%'\r\n}));\r\n\r\nconst ChildrenStyles = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(0, 0),\r\n marginTop: '.5rem'\r\n}));\r\nconst BoxContainer = styled(Box)(({ theme }) => ({\r\n border: `1px solid ${theme.palette.grey[400]}`,\r\n padding: '10px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n '& .item': {\r\n textAlign: 'center'\r\n },\r\n '& .item-left': {\r\n alignSelf: 'flex-start',\r\n textAlign: 'left'\r\n }\r\n}));\r\nconst HandlingTime = (props) => {\r\n const theme = useTheme();\r\n const { averageHandleTime } = props;\r\n return (\r\n \r\n \r\n Handling Time\r\n \r\n \r\n \r\n Average\r\n \r\n {averageHandleTime.hour === '00'\r\n ? `${averageHandleTime.minutes}m : ${averageHandleTime.seconds}s`\r\n : `${averageHandleTime.hour}h : ${averageHandleTime.minutes}m ${averageHandleTime.seconds}s`}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default HandlingTime;\r\n","import { useContext, useEffect, useState, useMemo, useCallback, useLayoutEffect } from 'react';\r\nimport { Icon } from '@iconify/react';\r\nimport bugFilled from '@iconify/icons-ant-design/bug-filled';\r\n// material\r\nimport { alpha, styled } from '@mui/material/styles';\r\nimport {\r\n Box,\r\n Card,\r\n Divider,\r\n Typography,\r\n useTheme,\r\n Checkbox,\r\n FormGroup,\r\n FormControlLabel\r\n} from '@mui/material';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport Backend, { backendURL } from '../../../api/backend';\r\nimport { fShortenNumber } from '../../../utils/formatNumber';\r\nimport SimpleLoading from 'src/layouts/SImpleLoading/SimpleLoading';\r\nimport { ColorModeContext } from 'src/theme';\r\nimport actionTypes from '../../../redux/actions/actionTypes';\r\nimport axios from 'axios';\r\n// ----------------------------------------------------------------------\r\n\r\nconst RootStyle = styled(Card)(({ theme, mode }) => ({\r\n boxShadow: 'none',\r\n padding: theme.spacing(2, 2),\r\n color: theme.palette.error.darker,\r\n backgroundColor: theme.palette.customBlackThemeColor.cardColor,\r\n height: 90,\r\n width: '100%'\r\n}));\r\n\r\nconst ChildrenStyles = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(0, 0),\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingTop: 5,\r\n zIndex: 1,\r\n width: '100%',\r\n height: '100%',\r\n padding: '1rem 0rem',\r\n '.MuiFormControlLabel-label': {\r\n color: theme.palette.common.black\r\n }\r\n}));\r\n\r\nconst Child2ItemsStyle = styled(Box)(({ theme }) => ({\r\n boxShadow: 'none',\r\n padding: theme.spacing(2, 1),\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingTop: 1,\r\n alignItems: 'left',\r\n justifyContent: 'space-between',\r\n marginLeft: 2,\r\n [theme.breakpoints.up('md')]: {\r\n width: 200\r\n },\r\n [theme.breakpoints.up('lg')]: {\r\n width: 300\r\n },\r\n [theme.breakpoints.up('lg')]: {\r\n width: 200\r\n },\r\n\r\n height: 100,\r\n border: `1px solid ${alpha(theme.palette.customBlackThemeColor.sidebarTextColor, 0.7)}`\r\n}));\r\nconst WrapCodeContainer = styled('div')(({ theme }) => ({\r\n overflowX: 'hidden',\r\n overflowY:'scroll',\r\n height: '100%',\r\n width: '100%',\r\n '& > :not(:first-child)': {\r\n marginTop: '.5rem'\r\n }\r\n}));\r\nconst ContentWrapper = styled(Box)(({ theme }) => ({\r\n width: 150,\r\n height: 150,\r\n border: '1px solid #000'\r\n}));\r\n// ----------------------------------------------------------------------\r\n\r\nconst TOTAL = 10;\r\nconst WrapItem = styled('div')(({ theme, active }) => ({\r\n width: '100%',\r\n border: active\r\n ? `1px solid ${theme.palette.chart.blue[0]}`\r\n : `1px solid ${theme.palette.grey[200]}`,\r\n padding: '0.4rem',\r\n //borderRadius: '10px',\r\n cursor: 'pointer',\r\n color: theme.palette.common.black,\r\n backgroundColor: theme.palette.grey[200],\r\n fontSize: '0.8rem'\r\n}));\r\nexport default function WrapUpCode(props) {\r\n const theme = useTheme();\r\n const { toggleColorMode, mode } = useContext(ColorModeContext);\r\n const selectedWrapCodes = useSelector((state) => state.WrapCodes.data);\r\n const [wrapCodesList, setWrapCodesList] = useState([]);\r\n const { contactsHandled, totalHandledTime } = props;\r\n const dispatch = useDispatch();\r\n const getWrapCodes = async () => {\r\n try {\r\n const data = await Backend.get(backendURL.getWrapCode);\r\n const response = data?.data?.body?.Item?.wrapUpCodes || [];\r\n\r\n setWrapCodesList([...response]);\r\n } catch (error) {\r\n console.log('err getting in wrap code');\r\n console.log(error);\r\n }\r\n };\r\n useEffect(() => {\r\n getWrapCodes();\r\n }, []);\r\n // console.log(`selected wrap codes === `);\r\n // console.log(selectedWrapCodes);\r\n return (\r\n \r\n \r\n Wrap Up Code\r\n \r\n \r\n \r\n {wrapCodesList?.map(\r\n (item) => {\r\n return (\r\n {\r\n if (!selectedWrapCodes.includes(item)) {\r\n dispatch({\r\n type: actionTypes.ADD_WRAP_CODE,\r\n payload: `${item}`\r\n });\r\n } else {\r\n dispatch({\r\n type: actionTypes.REMOVE_WRAP_CODE,\r\n payload: `${item}`\r\n });\r\n }\r\n }}\r\n >\r\n {item}\r\n \r\n );\r\n }\r\n // }\r\n // label={item}\r\n // key={item}\r\n // onChange={(e) => {\r\n // if (e.target.checked) {\r\n // dispatch({\r\n // type: actionTypes.ADD_WRAP_CODE,\r\n // payload: `${item}`\r\n // });\r\n // } else {\r\n // dispatch({\r\n // type: actionTypes.REMOVE_WRAP_CODE,\r\n // payload: `${item}`\r\n // });\r\n // }\r\n // }}\r\n // />\r\n )}\r\n \r\n \r\n \r\n );\r\n}\r\n","import styled, { css } from 'styled-components';\r\n\r\nexport const Box = styled.div`\r\n width: 100%;\r\n // max-width: 200px;\r\n height: 100%;\r\n padding: 0px;\r\n background: #263238;\r\n border-radius: 22.5px;\r\n visibility: hidden;\r\n opacity: 0;\r\n transform: translateY(30px);\r\n box-shadow: 0 5px 10px -5px rgba(0, 0, 0, 0.2);\r\n transition: opacity 0.15s ease-in, transform 0.25s ease-in, border-radius 0.3s ease-in-out,\r\n visibility 0s linear 0.3s;\r\n z-index: 10;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n ${(props) =>\r\n props.opened &&\r\n css`\r\n visibility: visible;\r\n opacity: 1;\r\n transform: translateY(0);\r\n transition: opacity 0.15s ease-out, transform 0.25s ease-out, border-radius 0.3s ease-in-out,\r\n visibility 0s;\r\n border-bottom-right-radius: 0;\r\n `}\r\n`;\r\n\r\nexport const Input = styled.input`\r\n width: 100%;\r\n margin-bottom: 5px;\r\n border: none;\r\n background: #37474f;\r\n height: 80px;\r\n font-size: 1.3rem;\r\n letter-spacing: 0.2rem;\r\n padding: 0 15px;\r\n border-radius: 4px;\r\n color: #cfd8dc;\r\n`;\r\n\r\nexport const ButtonsContainer = styled.div`\r\n width: 100%;\r\n height: 70%;\r\n display: flex;\r\n flex-direction: column;\r\n align-item: center;\r\n justify-content: center;\r\n`;\r\nexport const ButtonInnerContainer = styled.div``;\r\nexport const Button = styled.button`\r\n display: inline-block;\r\n width: calc(33.33% - 10px);\r\n font-size: 14px;\r\n background: transparent;\r\n border: none;\r\n color: #cfd8dc;\r\n padding: 10px 0;\r\n text-align: center;\r\n cursor: pointer;\r\n font-size: 2rem;\r\n &:hover {\r\n color: #fff;\r\n // background-color: rgba(39, 50, 56, 0.8);\r\n background-color: rgba(0, 0, 0, 0.2);\r\n }\r\n\r\n &:nth-child(3n - 1) {\r\n margin: 0 15px;\r\n }\r\n`;\r\n\r\nexport const CallButton = styled.button`\r\n margin-top: 5px;\r\n background: #8bc34a;\r\n color: #fff;\r\n width: 100%;\r\n height: 50px;\r\n border-radius: 20px;\r\n text-align: center;\r\n border: none;\r\n cursor: pointer;\r\n font-size: 1.3rem;\r\n &:hover {\r\n background: #7cb342;\r\n }\r\n`;\r\nexport const EndButton = styled.div`\r\n margin-top: 5px;\r\n background: rgb(85%, 27%, 28%);\r\n color: #fff;\r\n width: 100%;\r\n height: 50px;\r\n border-radius: 20px;\r\n text-align: center;\r\n border: none;\r\n cursor: pointer;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n &:hover {\r\n background: rgba(85%, 27%, 28%, 0.9);\r\n }\r\n`;\r\n\r\nexport const HoldCall = styled.div`\r\n color: white;\r\n cursor: pointer;\r\n border-radius: 10px;\r\n width: 4rem;\r\n display: flex;\r\n justify-content: center;\r\n padding: 10px;\r\n background: rgb(85%, 27%, 28%);\r\n font-size: 0.6rem;\r\n align-self: flex-end;\r\n &:hover {\r\n background: rgba(85%, 27%, 28%, 0.9);\r\n }\r\n`;\r\nexport const ResumeCall = styled.div`\r\n color: white;\r\n cursor: pointer;\r\n border-radius: 10px;\r\n width: 5rem;\r\n display: flex;\r\n justify-content: center;\r\n padding: 10px;\r\n background: #0966c2;\r\n font-size: 0.6rem;\r\n align-self: flex-end;\r\n &:hover {\r\n background: rgb(9, 102, 194, 0.9);\r\n }\r\n`;\r\nexport const MuteCall = styled.button`\r\n cursor: pointer;\r\n color: #fff;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-self: flex-start;\r\n // width: 3.5rem;\r\n background: transparent;\r\n border: none;\r\n outline: none;\r\n margin-left: 2rem;\r\n margin-bottom: 0.8rem;\r\n svg {\r\n align-self: center;\r\n font-size: 1.5rem;\r\n }\r\n .title {\r\n font-size: 0.7rem;\r\n text-align: center;\r\n margin-top: 4px;\r\n }\r\n`;\r\n","import React, { useState, useRef, useEffect, useMemo } from 'react';\r\n// import { useStore } from '../../store';\r\nimport 'amazon-connect-streams';\r\nimport { Icon } from '@iconify/react';\r\nimport moment from 'moment';\r\nimport {\r\n Box,\r\n Button,\r\n Input,\r\n ButtonsContainer,\r\n CallButton,\r\n ButtonInnerContainer,\r\n EndButton,\r\n HoldCall,\r\n ResumeCall,\r\n MuteCall\r\n} from './atom';\r\n\r\nimport { awsConnect, awsConnectInstanceId } from '../../api/awsConnect';\r\nimport Backend, { backendURL } from '../../api/backend';\r\nimport actionType from '../../redux/actions/actionTypes';\r\nimport { Snackbar, Alert, Slide } from '@mui/material';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nfunction TransitionRight(props) {\r\n return ;\r\n}\r\nexport default (props,{placeholder, onCall,role }) => {\r\n let newAgent;\r\n const [number, setNumber] = React.useState('');\r\n const containerRef = useRef(null);\r\n const [connected, setConnected] = useState(true);\r\n const [isMuteAgent, setIsMuteAgent] = useState(false);\r\n const [holdCall, setHoldCall] = useState(false);\r\n const data = useSelector((state) => state.recentlyActivity);\r\n const dispatch = useDispatch();\r\n const [connectionId, setConnectionId] = useState(null);\r\n // const [state, dispatch] = useStore();\r\n const buttons = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '*', '0', '#'];\r\n const [isOnCall, setIsOnCall] = useState(false);\r\n const selectedWrapCodes = role;\r\n let mAgent;\r\n const [openSnackBar, setOpenSnackBar] = useState({\r\n open: false,\r\n message: '',\r\n type: ''\r\n });\r\n const instanceUrl = 'https://universityofbirmingham-admissions.my.connect.aws/ccp-v2/';\r\n // const instanceUrl = 'https://ucassociates.my.connect.aws/ccp-v2/';\r\n\r\n function initializeCCP() {\r\n connect.core.initCCP(containerRef.current, {\r\n ccpUrl: instanceUrl,\r\n iframeTitle: 'Amazon Connect',\r\n loginPopup: true,\r\n loginPopupAutoClose: true,\r\n \r\n region: 'eu-west-2',\r\n softphone: {\r\n allowFramedSoftphone: true\r\n \r\n },\r\n pageOptions: {\r\n enableAudioDeviceSettings: true,\r\n enablePhoneTypeSettings: true\r\n },\r\n // ccpAckTimeout: 5000,\r\n //ccpSynTimeout: 3000,\r\n //ccpLoadTimeout: 10000\r\n });\r\n // console.log(containerRef.current);\r\n //connect.core.initCCP(containerDiv.get(0), abc);\r\n }\r\n useEffect(() => {\r\n console.log('initialized CCP');\r\n initializeCCP();\r\n //window.addEventListener(\"beforeunload\", function (event) {\r\n // if (mAgent != null) {\r\n // let states = mAgent.getAgentStates();\r\n // // \"states\" is an array of changeable states. You can filter the desired state to change by name.\r\n // let offlineState = states.filter(state => state.name === \"Offline\")[0];\r\n // // Change agent state\r\n // mAgent.setState(offlineState, {\r\n // success: function () {\r\n // console.log(\"SetState succeeded\");\r\n // },\r\n // failure: function () {\r\n // console.log(\"SetState failed\");\r\n // }\r\n // });\r\n // }\r\n //});\r\n }, []);\r\n useEffect(() => {\r\n console.log('UseEffect - 1');\r\n connect.core.onInitialized(function () {\r\n console.log('Initialization is completed');\r\n setConnected(true);\r\n });\r\n connect.core.onAccessDenied(function () {\r\n console.log('Access denied');\r\n });\r\n connect.core.onViewContact(function (event) {\r\n const contactId = event.contactId;\r\n console.log(`ContactId === ${contactId}`);\r\n });\r\n connect.core.onAuthFail(function () {\r\n console.log('On Authentication Failed');\r\n });\r\n connect.core.onIframeRetriesExhausted(() => {\r\n console.log('We have run out of retries to reload the CCP Iframe');\r\n });\r\n connect.core.onSoftphoneSessionInit(function ({ connectionId }) {\r\n var softphoneManager = connect.core.getSoftphoneManager();\r\n if (softphoneManager) {\r\n // access session\r\n var session = softphoneManager.getSession(connectionId);\r\n console.log(session, connectionId);\r\n }\r\n });\r\n connect.contact(function (contact) {\r\n console.log(`----- contacts ------`);\r\n console.log(contact);\r\n console.log(`----- End Contacts ------`);\r\n });\r\n connect.agent(function (agent) {\r\n console.log('---- new agents is connected ----- ');\r\n mAgent = agent;\r\n console.log(agent);\r\n props.setAgentName(agent.getName());\r\n \r\n console.log('---- new agents is connected ----- ');\r\n });\r\n }, []);\r\n useEffect(() => {\r\n const eventBus = connect.core.getEventBus();\r\n \r\n });\r\n useEffect(() => {\r\n console.log('UseEffect - 2');\r\n connect.contact(function (contact) {\r\n contact.onIncoming(function (contact) {\r\n console.log('Incomming contact => ', contact);\r\n });\r\n\r\n contact.onRefresh(function (contact) {\r\n console.log('Refreshing contact => ', contact);\r\n });\r\n\r\n contact.onAccepted(function (contact) {\r\n console.log('Accepted contact => ', contact);\r\n });\r\n\r\n contact.onEnded(function () {\r\n console.log(`onConnected ------->(${contact.getContactId()})`);\r\n // setConnected(contact.getContactId());\r\n let findContactId = false;\r\n if (data?.data && data?.data?.length > 0) {\r\n findContactId = !!data.data?.find((item) => item?.contactId === contact.getContactId());\r\n }\r\n if (findContactId === false) {\r\n awsConnect.describeContact(\r\n {\r\n InstanceId: awsConnectInstanceId,\r\n // ContactId: 'c5aa4ffa-0cf3-4d2f-abd6-a6b826fb499f'\r\n ContactId: contact.getContactId()\r\n },\r\n function (err, data) {\r\n if (err) {\r\n console.log(err, err.stack);\r\n } else {\r\n console.log(data);\r\n \r\n var conParams = contact.getConnections();\r\n var dialedNumber = conParams[1].getEndpoint().stripPhoneNumber();\r\n var agent = new connect.Agent();\r\n const channel = data?.Contact?.Channel;\r\n const callType = data?.Contact?.InitiationMethod;\r\n const startTime = data?.Contact?.InitiationTimestamp;\r\n const endTime = data?.Contact?.DisconnectTimestamp;\r\n const phoneNumber = dialedNumber;\r\n const name = agent.getName();\r\n const agentID = data?.Contact.AgentInfo.Id;\r\n\r\n console.log('recent activity calling useMemo.....');\r\n addRecentActivity({\r\n id: contact.getContactId(),\r\n channel,\r\n callType,\r\n startTime,\r\n endTime,\r\n phoneNumber,\r\n agentID,\r\n name,\r\n wrapCodes: role || [],\r\n timestamp: Date.now()\r\n });\r\n\r\n\r\n }\r\n }\r\n );\r\n }\r\n });\r\n\r\n contact.onMissed(function () {\r\n let id = contact.getContactId();\r\n let conParams = contact.getConnections();\r\n let queue = contact.getQueue();\r\n let dialedNumber = conParams[1].getEndpoint().stripPhoneNumber();\r\n var agent = new connect.Agent();\r\n const name = agent.getName();\r\n console.log(`onMissed ------->(${id})`);\r\n // setConnected(contact.getContactId());\r\n let findContactId = false;\r\n if (data?.data && data?.data?.length > 0) {\r\n findContactId = !!data.data?.find((item) => item?.contactId === contact.getContactId());\r\n }\r\n if (findContactId === false) {\r\n awsConnect.describeContact(\r\n {\r\n InstanceId: awsConnectInstanceId,\r\n // ContactId: 'c5aa4ffa-0cf3-4d2f-abd6-a6b826fb499f'\r\n ContactId: id\r\n },\r\n function (err, data) {\r\n if (err) {\r\n console.log(err, err.stack);\r\n } else {\r\n console.log(data);\r\n\r\n\r\n\r\n\r\n const channel = data?.Contact?.Channel;\r\n const callType = data?.Contact?.InitiationMethod;\r\n const startTime = data?.Contact?.InitiationTimestamp;\r\n \r\n const endTime = data?.Contact?.DisconnectTimestamp;\r\n const phoneNumber = dialedNumber;\r\n\r\n const agentID = '';\r\n\r\n console.log('recent activity calling useMemo.....');\r\n addRecentActivity({\r\n id: id,\r\n channel,\r\n callType,\r\n startTime,\r\n endTime,\r\n phoneNumber,\r\n agentID,\r\n name,\r\n wrapCodes: \"Missed Call\",\r\n timestamp: Date.now()\r\n });\r\n\r\n\r\n }\r\n }\r\n );\r\n }\r\n });\r\n\r\n contact.onConnected(function () {\r\n \r\n \r\n });\r\n });\r\n }, [connected]);\r\n \r\n function makeACall() {\r\n console.log('Making call');\r\n console.log(`number is ${number}`);\r\n // var agent = new connect.Agent();\r\n var agent = new connect.Agent();\r\n\r\n var contact = new connect.Contact();\r\n // var noToDial = '+18333782183';\r\n const endpoint = connect.Endpoint.byPhoneNumber(number);\r\n console.log('make a call to phone number');\r\n agent.connect(endpoint, {\r\n success: () => {\r\n console.log('success');\r\n setIsOnCall(true);\r\n },\r\n failure: () => {\r\n console.log('failures');\r\n setIsOnCall(false);\r\n setOpenSnackBar({\r\n type: 'error',\r\n message: 'failed calling...',\r\n open: true\r\n });\r\n }\r\n });\r\n }\r\n function hangUpCall() {\r\n console.log('HangUp Call');\r\n var agent = new connect.Agent();\r\n var contact = agent.getContacts(connect.ContactType.VOICE)[0];\r\n contact.getAgentConnection().destroy();\r\n }\r\n function onClickCall() {\r\n if (number === '') {\r\n setOpenSnackBar({\r\n type: 'error',\r\n message: 'Please Input your phone number',\r\n open: true\r\n });\r\n } else {\r\n makeACall();\r\n }\r\n }\r\n function onCloseSnackBar() {\r\n setOpenSnackBar({\r\n type: '',\r\n message: '',\r\n open: false\r\n });\r\n }\r\n function onClickEndCall() {\r\n setIsOnCall(false);\r\n hangUpCall();\r\n }\r\n function onHoldCall() {\r\n var agent = new connect.Agent();\r\n var contact = agent.getContacts(connect.ContactType.VOICE)[0];\r\n contact.getAgentConnection().hold({\r\n success: function (data) {\r\n console.log(data);\r\n console.log('Hold call successfully');\r\n setHoldCall(true);\r\n },\r\n failure: function () {\r\n console.log('Failed to hold call');\r\n }\r\n });\r\n }\r\n function onResumeCall() {\r\n var agent = new connect.Agent();\r\n var contact = agent.getContacts()[0];\r\n // console.log(`contact is here ---- >> ${contact.getContactId()}`);\r\n // var contact = agent.getC\r\n contact.getAgentConnection().resume({\r\n success: function () {\r\n console.log('resume call successfully');\r\n setHoldCall(false);\r\n },\r\n failure: function () {\r\n console.log('Failed to resume call');\r\n }\r\n });\r\n // contact.addConnection(connect.Endpoint.byPhoneNumber(number), {\r\n // success: function () {\r\n // console.log('resume call successfully');\r\n // setHoldCall(false);\r\n // },\r\n // failure: function () {\r\n // console.log('Failed to resume call');\r\n // }\r\n // });\r\n }\r\n function muteAgent() {\r\n var agent = new connect.Agent();\r\n agent.mute();\r\n setIsMuteAgent(true);\r\n }\r\n function unmuteAgent() {\r\n var agent = new connect.Agent();\r\n agent.unmute();\r\n setIsMuteAgent(false);\r\n }\r\n const addRecentActivity = async (activity) => {\r\n try {\r\n \r\n const data = await Backend({\r\n method: 'POST',\r\n url: backendURL.addRecentlyActivities,\r\n data: {\r\n ...activity\r\n }\r\n });\r\n console.log('Recent activity added');\r\n props.setContactId(activity.id);\r\n console.log(data);\r\n } catch (error) {\r\n console.log('error found in setting data....');\r\n console.log(error);\r\n }\r\n };\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import { useContext, useEffect, useState, useMemo, useCallback, useLayoutEffect } from 'react';\r\nimport { render } from 'react-dom';\r\nimport { Box, Card, useTheme, Grid, Container, Typography, Button } from '@mui/material';\r\nimport Dailer from 'src/components/Dailer';\r\nimport Backend, { backendURL } from '../../../api/backend';\r\nimport { Icon } from '@iconify/react';\r\nimport bugFilled from '@iconify/icons-ant-design/bug-filled';\r\n// material\r\nimport { alpha, styled } from '@mui/material/styles';\r\n\r\n\r\nimport { ColorModeContext } from 'src/theme';\r\nimport actionTypes from '../../../redux/actions/actionTypes';\r\n\r\n\r\nconst RootStyle = styled(Card)(({ theme, mode }) => ({\r\n boxShadow: 'none',\r\n padding: theme.spacing(2, 2),\r\n color: theme.palette.error.darker,\r\n backgroundColor: theme.palette.customBlackThemeColor.cardColor,\r\n height: 78,\r\n width: '100%'\r\n}));\r\n\r\nconst ChildrenStyles = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(0, 0),\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingTop: 1,\r\n zIndex: 1,\r\n width: '100%',\r\n height: '100%',\r\n padding: '1rem 0rem',\r\n '.MuiFormControlLabel-label': {\r\n color: theme.palette.common.black\r\n }\r\n}));\r\n\r\nconst Child2ItemsStyle = styled(Box)(({ theme }) => ({\r\n boxShadow: 'none',\r\n padding: theme.spacing(2, 1),\r\n display: 'flex',\r\n flexDirection: 'row',\r\n paddingTop: 1,\r\n alignItems: 'left',\r\n justifyContent: 'space-between',\r\n marginLeft: 2,\r\n [theme.breakpoints.up('md')]: {\r\n width: 200\r\n },\r\n [theme.breakpoints.up('lg')]: {\r\n width: 300\r\n },\r\n [theme.breakpoints.up('lg')]: {\r\n width: 200\r\n },\r\n\r\n height: 100,\r\n border: `1px solid ${alpha(theme.palette.customBlackThemeColor.sidebarTextColor, 0.7)}`\r\n}));\r\nconst WrapCodeContainer = styled('div')(({ theme }) => ({\r\n overflow: 'hidden',\r\n\r\n height: '100%',\r\n width: '100%',\r\n '& > :not(:first-child)': {\r\n marginTop: '.5rem'\r\n }\r\n}));\r\nconst ContentWrapper = styled(Box)(({ theme }) => ({\r\n width: 250,\r\n height: 150,\r\n border: '1px solid #000'\r\n}));\r\n// ----------------------------------------------------------------------\r\n\r\nconst TOTAL = 10;\r\nconst WrapItem = styled('div')(({ theme, active }) => ({\r\n width: '100%',\r\n border: active\r\n ? `1px solid ${theme.palette.chart.blue[0]}`\r\n : `1px solid ${theme.palette.grey[200]}`,\r\n padding: '0.4rem',\r\n //borderRadius: '10px',\r\n cursor: 'pointer',\r\n color: theme.palette.common.black,\r\n backgroundColor: theme.palette.grey[200],\r\n fontSize: '0.8rem'\r\n}));\r\nexport default function WrapUpCodeSelect(props, {contactid }) {\r\n\r\n const theme = useTheme();\r\n const { toggleColorMode, mode } = useContext(ColorModeContext);\r\n const [isdisabled, setisdisabled] = useState(true);\r\n const [addrtype, setAddrtype] = useState([\"Please Select\",\"Accommodation\", \"Application\", \"Clearing\",\"Course Enquiries\", \"Current Student\", \"DBS\",\"Finance or Funding\",\"Other\", \"Other Institution\"])\r\n const [wrapupCode, setWrapupCode] = useState('');\r\n const Add = addrtype.map(Add => Add\r\n )\r\n const handleAddrTypeChange = (e) => {\r\n if (addrtype[e.target.value] !== \"Please Select\")\r\n setisdisabled(false);\r\n else\r\n setisdisabled(true);\r\n props.setRole((addrtype[e.target.value]));\r\n setWrapupCode(addrtype[e.target.value]);\r\n };\r\n\r\n const handleSubmitWrapupCode = (e) => {\r\n if (props.contactid != '' && props.contactid != undefined) {\r\n updateActivity({\r\n id: props.contactid,\r\n wrapCodes: wrapupCode\r\n });\r\n }\r\n };\r\n const updateActivity = async (activity) => {\r\n try {\r\n const data = await Backend({\r\n method: 'POST',\r\n url: backendURL.updateActivity,\r\n data: {\r\n ...activity\r\n }\r\n });\r\n console.log('Recent activity updated with wrap up code');\r\n console.log(data);\r\n } catch (error) {\r\n console.log('error found in setting data....');\r\n console.log(error);\r\n }\r\n };\r\n return (\r\n \r\n \r\n Wrap Up Code\r\n \r\n \r\n \r\n < select style={{\"width\":\"240px\"}}\r\n onChange={e => handleAddrTypeChange(e)}\r\n >\r\n {\r\n Add.map((address, key) => )\r\n }\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n )\r\n\r\n\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport { alpha, styled, useTheme } from '@mui/material/styles';\r\nimport { Card, Typography, Box, Grid } from '@mui/material';\r\nimport { Icon } from '@iconify/react';\r\nimport { awsConnect, awsConnectInstanceId } from '../../../api/awsConnect';\r\nimport momentTZ from 'moment-timezone';\r\nimport moment from 'moment';\r\nimport { useSelector } from 'react-redux';\r\nimport {\r\n Timeline,\r\n TimelineItem,\r\n TimelineSeparator,\r\n TimelineContent,\r\n TimelineDot,\r\n TimelineConnector\r\n} from '@mui/lab';\r\nimport Backend, { backendURL } from '../../../api/backend';\r\nimport _ from 'lodash';\r\n\r\nconst RootStyle = styled(Card)(({ theme }) => ({\r\n boxShadow: 'none',\r\n // textAlign: 'center',\r\n padding: theme.spacing(2, 2),\r\n color: theme.palette.common.black,\r\n backgroundColor: theme.palette.customBlackThemeColor.cardColor,\r\n height: '30%',\r\n width: '100%'\r\n}));\r\n\r\nconst ChildrenStyles = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(0, 0)\r\n}));\r\nconst ChildItem = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n '& .title': {\r\n fontSize: '0.5rem',\r\n fontWeight: 'bold'\r\n },\r\n '& .smallTitle': {\r\n fontSize: '0.5rem',\r\n fontWeight: 'bold',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItem: 'center',\r\n '& .sub': {\r\n fontSize: '0.5rem',\r\n color: theme.palette.grey[600]\r\n }\r\n }\r\n}));\r\n\r\nconst ChildContainer = styled('span')(() => ({\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-around'\r\n}));\r\nconst SmallBox = styled('div')(({ color }) => ({\r\n height: '.5rem',\r\n width: '.5rem',\r\n border: `1px solid ${color}`,\r\n backgroundColor: color,\r\n alignSelf: 'center',\r\n marginRight: '3px'\r\n}));\r\n\r\nconst AgentPerformance = ({ agentname }) => {\r\n const theme = useTheme();\r\n const data = useSelector((state) => state.recentlyActivity);\r\n const [totalCalls, settotalCalls] = useState(0);\r\n const [totalOutboundCalls, settotalOutboundCalls] = useState(0);\r\n const [totalInboundCalls, settotalInboundCalls] = useState(0);\r\n const [totalTalkTime, settotalTalkTime] = useState(0);\r\n const [averageTalkTime, setaverageTalkTime] = useState(0);\r\n \r\n const getRecentActivities = async () => {\r\n try {\r\n const data = await Backend({\r\n method: 'GET',\r\n url: backendURL.getagentperformance + \"?username=\" + agentname\r\n });\r\n settotalCalls(data.data.data.totalCalls);\r\n settotalOutboundCalls(data.data.data.totalOutboundCalls);\r\n settotalInboundCalls(data.data.data.totalInboundCalls);\r\n settotalTalkTime(data.data.data.totalTalkTime);\r\n setaverageTalkTime(data.data.data.averageTalkTime);\r\n } catch (error) {\r\n console.log('Getting error in fetching of recently activity');\r\n console.log(error);\r\n }\r\n\r\n //setTimeout(getRecentActivities, 10000);\r\n };\r\n useEffect(() => {\r\n\r\n let interval = setInterval(() => {\r\n getRecentActivities();\r\n }, 10000);\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n\r\n }, [agentname]);\r\n return (\r\n \r\n \r\n Agent Live Performance\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n {totalCalls}\r\n\r\n \r\n Total Calls\r\n \r\n \r\n \r\n \r\n {totalOutboundCalls}\r\n \r\n Total Outbound Calls\r\n \r\n \r\n \r\n \r\n {totalInboundCalls}\r\n \r\n Total Inbound Calls\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {totalTalkTime}\r\n \r\n Total Talk Time\r\n \r\n \r\n \r\n {averageTalkTime}\r\n \r\n Average Talk Time\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AgentPerformance;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { alpha, styled, useTheme } from '@mui/material/styles';\r\nimport { Card, Typography, Box, Button } from '@mui/material';\r\nimport { Icon } from '@iconify/react';\r\nimport { awsConnect, awsConnectInstanceId } from '../../../api/awsConnect';\r\nimport momentTZ from 'moment-timezone';\r\nimport moment from 'moment';\r\nimport { useSelector } from 'react-redux';\r\nimport {\r\n Timeline,\r\n TimelineItem,\r\n TimelineSeparator,\r\n TimelineContent,\r\n TimelineDot,\r\n TimelineConnector\r\n} from '@mui/lab';\r\nimport Backend, { backendURL } from '../../../api/backend';\r\nimport _ from 'lodash';\r\n\r\nconst RootStyle = styled(Card)(({ theme }) => ({\r\n boxShadow: 'none',\r\n borderRadius: '16px',\r\n // textAlign: 'center',\r\n padding: theme.spacing(2, 2),\r\n color: theme.palette.common.black,\r\n // backgroundColor: theme.palette.error.lighter,\r\n backgroundColor: theme.palette.customBlackThemeColor.cardColor,\r\n height: '50%',\r\n width: '100%',\r\n overflowX: 'auto',\r\n overflowY: 'auto',\r\n\r\n}));\r\nconst ActivityHeader = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n width: '100%',\r\n '& .recentlyTime': {\r\n color: theme.palette.grey[600],\r\n fontSize: '10px'\r\n },\r\n '& .name': {\r\n color: theme.palette.common.black,\r\n fontSize: '14px'\r\n }\r\n}));\r\nconst ChildrenStyles = styled(Box)(({ theme }) => ({\r\n // border: '1px solid black'\r\n padding: theme.spacing(0, 0),\r\n height: '15rem',\r\n display: 'block',\r\n flexDirection: 'row',\r\n paddingTop: 1,\r\n alignItems: 'center',\r\n overflowX: 'auto',\r\n overflowY: 'auto',\r\n}));\r\nconst TimeLineCustomItem = styled(TimelineItem)(({ theme }) => ({\r\n '&::before': {\r\n content: 'none',\r\n width: 0\r\n }\r\n}));\r\nconst NoData = styled('p')(({ theme }) => ({\r\n textAlign: 'center',\r\n marginTop: '1rem',\r\n width: '100%',\r\n height: '100%',\r\n color: theme.palette.grey['500']\r\n}));\r\nconst ActivityContent = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n flexDirection: 'row',\r\n '& .voice': {\r\n color: theme.palette.grey[600],\r\n fontSize: '0.6rem'\r\n },\r\n '& .content-1': {\r\n display: 'flex',\r\n alignItem: 'center',\r\n fontSize: '12px',\r\n '.icon': {\r\n alignSelf: 'center'\r\n },\r\n '.phone': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginLeft: '4px'\r\n\r\n }\r\n },\r\n '& .content-2': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginLeft: '6px',\r\n fontSize: '12px'\r\n }\r\n ,\r\n '& .content-3': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginLeft: '6px',\r\n fontSize: '12px'\r\n },\r\n '.wrap-up': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginLeft: '4px',\r\n color: '#54D62C'\r\n\r\n }\r\n}));\r\nconst ActivityFooter = styled('div')(({ theme }) => ({\r\n marginTop: '10px',\r\n '.title': {\r\n fontSize: '12px'\r\n },\r\n '.content': {\r\n color: theme.palette.grey['500']\r\n }\r\n}));\r\nconst activityList = [\r\n {\r\n recentlyTime: '2 hour ago',\r\n type: 'OUTBOUND',\r\n number: '(619) 972-7326',\r\n name: 'TechinalSupport',\r\n time: '2019-04-25 10:25:22'\r\n },\r\n {\r\n recentlyTime: '3 hour ago',\r\n type: 'INBOUND',\r\n number: '(619) 972-7326',\r\n name: 'GeneralSupport',\r\n time: '2019-04-25 10:25:22'\r\n }\r\n];\r\n\r\nconst AgentStatus = () => {\r\n const theme = useTheme();\r\n const data = useSelector((state) => state.recentlyActivity);\r\n const [recentlyActivityData, setRecentlyActivityData] = useState([]);\r\n const getRecentActivities = async () => {\r\n try {\r\n const data = await Backend({\r\n method: 'GET',\r\n url: \"https://aww6sojo3k.execute-api.eu-west-2.amazonaws.com/default/agentstatusadmission\"\r\n });\r\n setRecentlyActivityData(_.sortBy(data.data.body.Items, ['StatusUpdateTime']).reverse());\r\n } catch (error) {\r\n console.log('Getting error in fetching of recently activity');\r\n console.log(error);\r\n }\r\n\r\n //setTimeout(getRecentActivities, 10000);\r\n };\r\n useEffect(() => {\r\n\r\n let interval = setInterval(() => {\r\n getRecentActivities();\r\n }, 5000);\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n\r\n }, []);\r\n return (\r\n \r\n \r\n Live Agent Status\r\n \r\n \r\n \r\n {recentlyActivityData?.length > 0 ? (\r\n [...recentlyActivityData].map((item, index) => {\r\n const startingTime = moment(item?.StatusUpdateTime).format('YYYY-MM-DD HH:mm:ss');\r\n // const startOf = moment(startingTime, 'YYYY-MM-DD hh:mm:ss').fromNow();\r\n\r\n // const startOf = moment(item?.startTime).fromNow();\r\n const startOf = momentTZ(item?.StatusUpdateTime).tz('Europe/London').fromNow();\r\n const now = moment().format('YYYY-MM-DD hh:mm:ss');\r\n var yy = moment.utc(moment.duration(moment().diff(startingTime)).asMilliseconds()).format('HH:mm:ss');\r\n \r\n return (\r\n \r\n \r\n \r\n {data?.data.length - 1 !== index && }\r\n \r\n \r\n \r\n \r\n {item?.FullAgentName}\r\n \r\n {item?.Value === 'CONNECTED' || item?.Value === 'CONNECTING' || item?.Value === 'ENDED' || item?.Value === 'MISSED' ? 'Busy' : item?.Value}\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {yy}\r\n\r\n
\r\n
\r\n
\r\n\r\n {`${startingTime}`}\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n );\r\n })\r\n ) : (\r\n No active agents\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AgentStatus;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { alpha, styled, useTheme } from '@mui/material/styles';\r\nimport { Card, Typography, Box, Button } from '@mui/material';\r\nimport { Icon } from '@iconify/react';\r\nimport { awsConnect, awsConnectInstanceId } from '../../../api/awsConnect';\r\nimport momentTZ from 'moment-timezone';\r\nimport moment from 'moment';\r\nimport { useSelector } from 'react-redux';\r\nimport {\r\n Timeline,\r\n TimelineItem,\r\n TimelineSeparator,\r\n TimelineContent,\r\n TimelineDot,\r\n TimelineConnector\r\n} from '@mui/lab';\r\nimport Backend, { backendURL } from '../../../api/backend';\r\nimport _ from 'lodash';\r\n\r\nconst RootStyle = styled(Card)(({ theme }) => ({\r\n boxShadow: 'none',\r\n borderRadius:'16px',\r\n // textAlign: 'center',\r\n padding: theme.spacing(2, 2),\r\n color: theme.palette.common.black,\r\n // backgroundColor: theme.palette.error.lighter,\r\n backgroundColor: theme.palette.customBlackThemeColor.cardColor,\r\n height: '100%',\r\n width: '100%'\r\n \r\n}));\r\nconst ActivityHeader = styled('div')(({ theme }) => ({\r\n display:'table',\r\n justifyContent: 'space-between',\r\n color: 'black',\r\n backgroundColor: 'white',\r\n padding: theme.spacing(1, 1),\r\n fontSize: '12px',\r\n width: '100%',\r\n '& .recentlyTime': {\r\n color: theme.palette.grey[600],\r\n fontSize:'12px'\r\n }\r\n}));\r\nconst ChildrenStyles = styled('tr')(({ theme }) => ({\r\n border: '1px solid black',\r\n padding: theme.spacing(0, 0),\r\n height: '1.5rem',\r\n display: 'table-row',\r\n paddingTop: 1,\r\n alignItems: 'center',\r\n \r\n}));\r\nconst TimeLineCustomItem = styled(TimelineItem)(({ theme }) => ({\r\n '&::before': {\r\n content: 'none',\r\n width: 0\r\n }\r\n}));\r\nconst NoData = styled('p')(({ theme }) => ({\r\n textAlign: 'center',\r\n marginTop: '1rem',\r\n width: '100%',\r\n height:'100%',\r\n color: theme.palette.grey['500']\r\n}));\r\nconst ActivityContent = styled('div')(({ theme }) => ({\r\n display: 'block',\r\n height: '400px',\r\n overflow:'auto',\r\n justifyContent: 'space-between',\r\n flexDirection: 'row',\r\n '& .voice': {\r\n color: theme.palette.grey[600],\r\n fontSize: '0.6rem'\r\n },\r\n '& .content-1': {\r\n display: 'flex',\r\n alignItem: 'center',\r\n fontSize: '12px',\r\n '.icon': {\r\n alignSelf: 'center'\r\n },\r\n '.phone': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginLeft: '4px'\r\n \r\n }\r\n },\r\n '& .content-2': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginLeft: '6px',\r\n fontSize: '12px'\r\n }\r\n ,\r\n '& .content-3': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginLeft: '6px',\r\n fontSize: '12px'\r\n },\r\n '.wrap-up': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginLeft: '4px',\r\n color:'#54D62C'\r\n\r\n }\r\n}));\r\nconst ActivityFooter = styled('div')(({ theme }) => ({\r\n marginTop: '10px',\r\n '.title': {\r\n fontSize: '12px'\r\n },\r\n '.content': {\r\n color: theme.palette.grey['500']\r\n }\r\n}));\r\nconst activityList = [\r\n {\r\n recentlyTime: '2 hour ago',\r\n type: 'OUTBOUND',\r\n number: '(619) 972-7326',\r\n name: 'TechinalSupport',\r\n time: '2019-04-25 10:25:22'\r\n },\r\n {\r\n recentlyTime: '3 hour ago',\r\n type: 'INBOUND',\r\n number: '(619) 972-7326',\r\n name: 'GeneralSupport',\r\n time: '2019-04-25 10:25:22'\r\n }\r\n];\r\n\r\n\r\nconst AgentActivities = () => {\r\n const theme = useTheme();\r\n const data = useSelector((state) => state.recentlyActivity);\r\n const [recentlyActivityData, setRecentlyActivityData] = useState([]);\r\n const [q, setQ] = useState(\"\");\r\n const [searchParam] = useState([\"phoneNumber\", \"name\", \"channel\", \"callType\",\"startTime\",\"id\",\"endTime\"]);\r\n const getRecentActivities = async () => {\r\n try {\r\n const data = await Backend({\r\n method: 'GET',\r\n url: backendURL.getagentactivities\r\n });\r\n setRecentlyActivityData(_.sortBy(data.data.body.Items, ['timestamp']).reverse());\r\n } catch (error) {\r\n console.log('Getting error in fetching of recently activity');\r\n console.log(error);\r\n }\r\n\r\n //setTimeout(getRecentActivities, 10000);\r\n };\r\n\r\n function search(items) {\r\n return items.filter((item) => {\r\n return searchParam.some((newItem) => {\r\n return (\r\n item[newItem] != null ?\r\n item[newItem]\r\n .toString()\r\n .toLowerCase()\r\n .indexOf(q.toLowerCase()) > -1\r\n : \"\"\r\n );\r\n });\r\n });\r\n }\r\n useEffect(() => {\r\n \r\n let interval = setInterval(() => {\r\n getRecentActivities();\r\n }, 10000);\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n \r\n }, []);\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n Agent Name\r\n Phone Number\r\n Start Time\r\n End Time\r\n Call Type\r\n Channel Type\r\n Call Id\r\n \r\n\r\n {search([...recentlyActivityData]).map((item) => (\r\n \r\n {item?.name}\r\n {item?.phoneNumber}\r\n {item?.startTime}\r\n {item?.endTime}\r\n {item?.callType}\r\n {item?.channel}\r\n {item?.id}\r\n \r\n ))}\r\n \r\n \r\n \r\n
\r\n );\r\n\r\n\r\n};\r\n\r\nexport default AgentActivities;\r\n","// material\r\nimport 'amazon-connect-streams';\r\n// import 'amazon-connect-chatjs';\r\nimport React from 'react';\r\nimport moment from 'moment';\r\nimport { Box, Grid, Container, Typography, Button } from '@mui/material';\r\nimport { useEffect, useRef, useState } from 'react';\r\nimport arrowIosForwardFill from '@iconify/icons-eva/arrow-ios-forward-fill';\r\nimport { Icon } from '@iconify/react';\r\nimport { alpha, styled } from '@mui/material/styles';\r\n// components\r\nimport Page from '../components/Page';\r\nimport axios from 'axios';\r\nimport {\r\n ContactsInQueue,\r\n AgentAvailability,\r\n RecentActivity,\r\n WaitTime,\r\n ACDTalkTime,\r\n HandlingTime,\r\n Contacts,\r\n WrapUpCode\r\n} from '../components/_dashboard/app';\r\nimport AWSModal from 'src/layouts/dashboard/AWSModal';\r\nimport { ColorModeContext } from 'src/theme';\r\nimport { awsConnect, awsConnectInstanceId } from 'src/api/awsConnect';\r\nimport { currentMetrics, historicalValues } from 'src/api/HistoricalMetrics';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst ButtonRootStyle = styled(Button)(({ theme }) => ({\r\n boxShadow: 'none',\r\n textAlign: 'center',\r\n padding: 0,\r\n height: 50,\r\n top: 16,\r\n color: theme.palette.info.darker,\r\n backgroundColor: theme.palette.info.lighter,\r\n ':hover': {\r\n color: 'white'\r\n }\r\n}));\r\nconst ContentContainer = styled('div')(() => ({\r\n display: 'flex',\r\n justifyContent: 'center',\r\n width: '94vw',\r\n border: '1px solid red'\r\n}));\r\nexport default function DashboardApp() {\r\n const [open, setOpen] = React.useState(false);\r\n const [metricsData, setMetricsData] = React.useState(null);\r\n const handleOpen = () => {\r\n setOpen((prev) => !prev);\r\n };\r\n const handleClose = () => setOpen(false);\r\n const [connected, setConnected] = useState(false);\r\n const [contactInQueue, setContactInQueue] = useState(0);\r\n const [agentAvailable, setAgentAvailable] = useState(0);\r\n const [agentOnline, setAgentOnline] = useState(0);\r\n const [totalAgents, setTotalAgents] = useState(0);\r\n const [agentOnCall, setAgentOnCall] = useState(0);\r\n const [contactsHandled, setContactshandled] = useState(0);\r\n // const [contactsQueued, setContactsQueued] = useState();\r\n const [handleTime, setHandleTIme] = useState();\r\n const [totalHandledTime, setTotalHandledTime] = useState({\r\n hour: '00',\r\n minutes: '00',\r\n seconds: '00'\r\n });\r\n const [averageHandleTime, setAverageHandleTime] = useState({\r\n hour: '00',\r\n minutes: '00',\r\n seconds: '00'\r\n });\r\n const [queueInfo, setQueueInfo] = useState();\r\n const containerRef = useRef(null);\r\n const { toggleColorMode, mode } = React.useContext(ColorModeContext);\r\n\r\n useEffect(() => {\r\n // Get Current Metric Data\r\n let currentMetricsInterval = setInterval(() => {\r\n awsConnect.getCurrentMetricData(\r\n {\r\n InstanceId: awsConnectInstanceId,\r\n CurrentMetrics: currentMetrics,\r\n Filters: {\r\n Channels: ['VOICE'], //[('CHAT', 'TASK')],\r\n Queues: [\r\n 'arn:aws:connect:eu-west-2:355721060766:instance/5729b379-f5fe-4017-aac1-15ba8ed5e9b6/queue/d09c4cb0-208c-4df2-9d45-9927eec3df42'\r\n // 'arn:aws:connect:us-east-1:767282783672:instance/9c763e34-8f80-4824-9b7c-9857f7a0dc07/queue/5f6cbce6-5167-4f4a-a26e-971f860bcb20'\r\n // 'arn:aws:connect:us-east-1:767282783672:instance/9c763e34-8f80-4824-9b7c-9857f7a0dc07/queue/7f1c0d40-7a2b-409c-8fa8-833714dbc1ef'\r\n // 'arn:aws:connect:us-east-1:767282783672:instance/9c763e34-8f80-4824-9b7c-9857f7a0dc07/queue/962ae2bb-14f8-4f79-adf4-45fee8f513cb'\r\n ]\r\n },\r\n Groupings: ['QUEUE', 'CHANNEL']\r\n // MaxResults: 20\r\n },\r\n (err, data) => {\r\n if (data) {\r\n setMetricsData(data);\r\n // console.log(data);\r\n if (data.MetricResults.length > 0) {\r\n data.MetricResults.map((item) => {\r\n item.Collections.map((colItem) => {\r\n if (colItem.Metric.Name === 'CONTACTS_IN_QUEUE') {\r\n setContactInQueue(colItem.Value);\r\n } else if (colItem.Metric.Name === 'AGENTS_AVAILABLE') {\r\n setAgentAvailable(colItem.Value);\r\n } else if (colItem.Metric.Name === 'AGENTS_ONLINE') {\r\n setAgentOnline(colItem.Value);\r\n } else if (colItem.Metric.Name === 'AGENTS_ON_CALL') {\r\n setAgentOnCall(colItem.Value);\r\n }\r\n });\r\n });\r\n }\r\n } else if (err) {\r\n console.log('Error found in getting data of aws connect');\r\n console.log(err);\r\n console.log(err.stack);\r\n }\r\n }\r\n );\r\n }, 3000);\r\n return () => {\r\n console.log('interval cleared');\r\n clearInterval(currentMetricsInterval);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n // List Agent Statuses\r\n // Get all agents\r\n awsConnect.listAgentStatuses(\r\n {\r\n InstanceId: awsConnectInstanceId\r\n },\r\n (err, data) => {\r\n if (err) {\r\n console.log('Error is coming of list agents....');\r\n console.log(err);\r\n } else if (data) {\r\n console.log('Data is here of list agents...');\r\n console.log(data);\r\n if (data.AgentStatusSummaryList.length > 0) {\r\n setTotalAgents(data.AgentStatusSummaryList.length);\r\n }\r\n }\r\n }\r\n );\r\n }, []);\r\n\r\n // -----\r\n useEffect(() => {\r\n // Minutes should be divisible by 5\r\n setInterval(() => {\r\n const currentMinute = parseInt(new Date().getMinutes() / 5) * 5;\r\n const endTime = moment().set('minute', currentMinute).set('second', 0).unix();\r\n const subHours = moment().subtract(23, 'hours');\r\n const startTime = moment(subHours).set('minute', currentMinute).set('second', 0).unix();\r\n // console.log(endTime, startTime);\r\n awsConnect.getMetricData(\r\n {\r\n InstanceId: awsConnectInstanceId,\r\n StartTime: startTime,\r\n EndTime: endTime,\r\n Filters: {\r\n Channels: ['VOICE'],\r\n Queues: ['d09c4cb0-208c-4df2-9d45-9927eec3df42']\r\n },\r\n Groupings: ['QUEUE', 'CHANNEL'],\r\n HistoricalMetrics: historicalValues\r\n },\r\n (err, data) => {\r\n if (err) {\r\n console.log('Error found in ACDTalkTime for getMetricData .... ');\r\n console.log(err);\r\n } else if (data) {\r\n if (data.MetricResults) {\r\n const [Collections] = data.MetricResults;\r\n Collections?.Collections?.forEach((item) => {\r\n // console.log(item.Metric, item.Value);\r\n if (item.Metric.Name === 'CONTACTS_HANDLED') {\r\n setContactshandled(item.Value);\r\n }\r\n if (item.Metric.Name === 'HANDLE_TIME') {\r\n setHandleTIme(item.Value);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n );\r\n }, [20000]);\r\n }, []);\r\n useEffect(() => {\r\n if (handleTime && contactsHandled) {\r\n // console.log('i am here', handleTime)\r\n const totalTime = moment\r\n .utc(handleTime * 1000)\r\n .format('HH:mm:ss')\r\n .split(':');\r\n const avgSeconds = parseFloat((handleTime / contactsHandled).toFixed(2));\r\n const averageTime = moment\r\n .utc(avgSeconds * 1000)\r\n .format('HH:mm:ss')\r\n .split(':');\r\n if (totalTime[0] === '00' && totalTime[1] === '00' && totalTime[2] === '00') {\r\n setTotalHandledTime(totalHandledTime);\r\n } else {\r\n setTotalHandledTime({\r\n hour: totalTime[0] === '00' ? '00' : totalTime[0],\r\n minutes: totalTime[1] === '00' ? '00' : totalTime[1],\r\n seconds: totalTime[2] === '00' ? '00' : totalTime[2]\r\n });\r\n }\r\n if (averageTime[0] === '00' && averageTime[1] === '00' && averageTime[2] === '00') {\r\n setAverageHandleTime(totalHandledTime);\r\n } else {\r\n setAverageHandleTime({\r\n hour: averageTime[0] === '00' ? '00' : averageTime[0],\r\n minutes: averageTime[1] === '00' ? '00' : averageTime[1],\r\n seconds: averageTime[2] === '00' ? '00' : averageTime[2]\r\n });\r\n }\r\n }\r\n }, [handleTime, contactsHandled]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","// material\r\nimport 'amazon-connect-streams';\r\n// import 'amazon-connect-chatjs';\r\nimport React from 'react';\r\nimport moment from 'moment';\r\nimport { Box, Grid, Container, Typography, Button } from '@mui/material';\r\nimport { useEffect, useRef, useState } from 'react';\r\nimport arrowIosForwardFill from '@iconify/icons-eva/arrow-ios-forward-fill';\r\nimport { Icon } from '@iconify/react';\r\nimport { alpha, styled } from '@mui/material/styles';\r\n// components\r\nimport Page from '../components/Page';\r\nimport axios from 'axios';\r\nimport {\r\n // AppTasks,\r\n // AppNewsUpdate,\r\n // AppOrderTimeline,\r\n // AppCurrentVisits,\r\n // AppWebsiteVisits,\r\n // AppTrafficBySite,\r\n // AppCurrentSubject,\r\n // AppConversionRates,\r\n // TotalCustomers,\r\n // ActiveAgents,\r\n ContactsInQueue,\r\n AgentAvailability,\r\n RecentActivity,\r\n WaitTime,\r\n ACDTalkTime,\r\n HandlingTime,\r\n Contacts,\r\n WrapUpCode\r\n} from '../components/_dashboard/app';\r\nimport AWSModal from 'src/layouts/dashboard/AWSModal';\r\nimport { ColorModeContext } from 'src/theme';\r\nimport { awsConnect, awsConnectInstanceId } from 'src/api/awsConnect';\r\nimport { currentMetrics, historicalValues } from 'src/api/HistoricalMetrics';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst ButtonRootStyle = styled(Button)(({ theme }) => ({\r\n boxShadow: 'none',\r\n textAlign: 'center',\r\n padding: 0,\r\n height: 50,\r\n top: 16,\r\n color: theme.palette.info.darker,\r\n backgroundColor: theme.palette.info.lighter,\r\n ':hover': {\r\n color: 'white'\r\n }\r\n}));\r\nconst ContentContainer = styled('div')(() => ({\r\n display: 'flex',\r\n justifyContent: 'center',\r\n width: '94vw',\r\n border: '1px solid red'\r\n}));\r\nexport default function AgentApp() {\r\n const [open, setOpen] = React.useState(false);\r\n const [metricsData, setMetricsData] = React.useState(null);\r\n const handleOpen = () => {\r\n setOpen((prev) => !prev);\r\n };\r\n const handleClose = () => setOpen(false);\r\n const [connected, setConnected] = useState(false);\r\n const [contactInQueue, setContactInQueue] = useState(0);\r\n const [agentAvailable, setAgentAvailable] = useState(0);\r\n const [agentOnline, setAgentOnline] = useState(0);\r\n const [totalAgents, setTotalAgents] = useState(0);\r\n const [agentOnCall, setAgentOnCall] = useState(0);\r\n const [contactsHandled, setContactshandled] = useState(0);\r\n // const [contactsQueued, setContactsQueued] = useState();\r\n const [handleTime, setHandleTIme] = useState();\r\n const [totalHandledTime, setTotalHandledTime] = useState({\r\n hour: '00',\r\n minutes: '00',\r\n seconds: '00'\r\n });\r\n const [averageHandleTime, setAverageHandleTime] = useState({\r\n hour: '00',\r\n minutes: '00',\r\n seconds: '00'\r\n });\r\n const [queueInfo, setQueueInfo] = useState();\r\n const containerRef = useRef(null);\r\n const { toggleColorMode, mode } = React.useContext(ColorModeContext);\r\n\r\n useEffect(() => {\r\n // Get Current Metric Data\r\n let currentMetricsInterval = setInterval(() => {\r\n awsConnect.getCurrentMetricData(\r\n {\r\n InstanceId: awsConnectInstanceId,\r\n CurrentMetrics: currentMetrics,\r\n Filters: {\r\n Channels: ['VOICE'], //[('CHAT', 'TASK')],\r\n Queues: [\r\n 'arn:aws:connect:eu-west-2:355721060766:instance/5729b379-f5fe-4017-aac1-15ba8ed5e9b6/queue/d09c4cb0-208c-4df2-9d45-9927eec3df42'\r\n // 'arn:aws:connect:us-east-1:767282783672:instance/9c763e34-8f80-4824-9b7c-9857f7a0dc07/queue/5f6cbce6-5167-4f4a-a26e-971f860bcb20'\r\n // 'arn:aws:connect:us-east-1:767282783672:instance/9c763e34-8f80-4824-9b7c-9857f7a0dc07/queue/7f1c0d40-7a2b-409c-8fa8-833714dbc1ef'\r\n // 'arn:aws:connect:us-east-1:767282783672:instance/9c763e34-8f80-4824-9b7c-9857f7a0dc07/queue/962ae2bb-14f8-4f79-adf4-45fee8f513cb'\r\n ]\r\n },\r\n Groupings: ['QUEUE', 'CHANNEL']\r\n // MaxResults: 20\r\n },\r\n (err, data) => {\r\n if (data) {\r\n setMetricsData(data);\r\n // console.log(data);\r\n if (data.MetricResults.length > 0) {\r\n data.MetricResults.map((item) => {\r\n item.Collections.map((colItem) => {\r\n if (colItem.Metric.Name === 'CONTACTS_IN_QUEUE') {\r\n setContactInQueue(colItem.Value);\r\n } else if (colItem.Metric.Name === 'AGENTS_AVAILABLE') {\r\n setAgentAvailable(colItem.Value);\r\n } else if (colItem.Metric.Name === 'AGENTS_ONLINE') {\r\n setAgentOnline(colItem.Value);\r\n } else if (colItem.Metric.Name === 'AGENTS_ON_CALL') {\r\n setAgentOnCall(colItem.Value);\r\n }\r\n });\r\n });\r\n }\r\n } else if (err) {\r\n console.log('Error found in getting data of aws connect');\r\n console.log(err);\r\n console.log(err.stack);\r\n }\r\n }\r\n );\r\n }, 3000);\r\n return () => {\r\n console.log('interval cleared');\r\n clearInterval(currentMetricsInterval);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n // List Agent Statuses\r\n // Get all agents\r\n awsConnect.listAgentStatuses(\r\n {\r\n InstanceId: awsConnectInstanceId\r\n },\r\n (err, data) => {\r\n if (err) {\r\n console.log('Error is coming of list agents....');\r\n console.log(err);\r\n } else if (data) {\r\n console.log('Data is here of list agents...');\r\n console.log(data);\r\n if (data.AgentStatusSummaryList.length > 0) {\r\n setTotalAgents(data.AgentStatusSummaryList.length);\r\n }\r\n }\r\n }\r\n );\r\n }, []);\r\n\r\n // -----\r\n useEffect(() => {\r\n // Minutes should be divisible by 5\r\n setInterval(() => {\r\n const currentMinute = parseInt(new Date().getMinutes() / 5) * 5;\r\n const endTime = moment().set('minute', currentMinute).set('second', 0).unix();\r\n const subHours = moment().subtract(23, 'hours');\r\n const startTime = moment(subHours).set('minute', currentMinute).set('second', 0).unix();\r\n // console.log(endTime, startTime);\r\n awsConnect.getMetricData(\r\n {\r\n InstanceId: awsConnectInstanceId,\r\n StartTime: startTime,\r\n EndTime: endTime,\r\n Filters: {\r\n Channels: ['VOICE'],\r\n Queues: ['d09c4cb0-208c-4df2-9d45-9927eec3df42']\r\n },\r\n Groupings: ['QUEUE', 'CHANNEL'],\r\n HistoricalMetrics: historicalValues\r\n },\r\n (err, data) => {\r\n if (err) {\r\n console.log('Error found in ACDTalkTime for getMetricData .... ');\r\n console.log(err);\r\n } else if (data) {\r\n if (data.MetricResults) {\r\n const [Collections] = data.MetricResults;\r\n Collections?.Collections?.forEach((item) => {\r\n // console.log(item.Metric, item.Value);\r\n if (item.Metric.Name === 'CONTACTS_HANDLED') {\r\n setContactshandled(item.Value);\r\n }\r\n if (item.Metric.Name === 'HANDLE_TIME') {\r\n setHandleTIme(item.Value);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n );\r\n }, [20000]);\r\n }, []);\r\n useEffect(() => {\r\n if (handleTime && contactsHandled) {\r\n // console.log('i am here', handleTime)\r\n const totalTime = moment\r\n .utc(handleTime * 1000)\r\n .format('HH:mm:ss')\r\n .split(':');\r\n const avgSeconds = parseFloat((handleTime / contactsHandled).toFixed(2));\r\n const averageTime = moment\r\n .utc(avgSeconds * 1000)\r\n .format('HH:mm:ss')\r\n .split(':');\r\n if (totalTime[0] === '00' && totalTime[1] === '00' && totalTime[2] === '00') {\r\n setTotalHandledTime(totalHandledTime);\r\n } else {\r\n setTotalHandledTime({\r\n hour: totalTime[0] === '00' ? '00' : totalTime[0],\r\n minutes: totalTime[1] === '00' ? '00' : totalTime[1],\r\n seconds: totalTime[2] === '00' ? '00' : totalTime[2]\r\n });\r\n }\r\n if (averageTime[0] === '00' && averageTime[1] === '00' && averageTime[2] === '00') {\r\n setAverageHandleTime(totalHandledTime);\r\n } else {\r\n setAverageHandleTime({\r\n hour: averageTime[0] === '00' ? '00' : averageTime[0],\r\n minutes: averageTime[1] === '00' ? '00' : averageTime[1],\r\n seconds: averageTime[2] === '00' ? '00' : averageTime[2]\r\n });\r\n }\r\n }\r\n }, [handleTime, contactsHandled]);\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","// material\r\nimport 'amazon-connect-streams';\r\n// import 'amazon-connect-chatjs';\r\nimport React from 'react';\r\nimport moment from 'moment';\r\nimport { Box, Grid, Container, Typography, Button } from '@mui/material';\r\nimport { useEffect, useRef, useState } from 'react';\r\nimport arrowIosForwardFill from '@iconify/icons-eva/arrow-ios-forward-fill';\r\nimport { Icon } from '@iconify/react';\r\nimport { alpha, styled } from '@mui/material/styles';\r\n// components\r\nimport Page from '../components/Page';\r\nimport axios from 'axios';\r\nimport {\r\n // AppTasks,\r\n // AppNewsUpdate,\r\n // AppOrderTimeline,\r\n // AppCurrentVisits,\r\n // AppWebsiteVisits,\r\n // AppTrafficBySite,\r\n // AppCurrentSubject,\r\n // AppConversionRates,\r\n // TotalCustomers,\r\n // ActiveAgents,\r\n ContactsInQueue,\r\n QueueMetricsAvailability,\r\n AgentAvailability,\r\n RecentActivity,\r\n WaitTime,\r\n ACDTalkTime,\r\n HandlingTime,\r\n Contacts,\r\n WrapUpCode\r\n} from '../components/_dashboard/app';\r\nimport AWSModal from 'src/layouts/dashboard/AWSModal';\r\nimport { ColorModeContext } from 'src/theme';\r\nimport { awsConnect, awsConnectInstanceId } from 'src/api/awsConnect';\r\nimport { currentMetrics, historicalValues } from 'src/api/HistoricalMetrics';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst ButtonRootStyle = styled(Button)(({ theme }) => ({\r\n boxShadow: 'none',\r\n textAlign: 'center',\r\n padding: 0,\r\n height: 50,\r\n top: 16,\r\n color: theme.palette.info.darker,\r\n backgroundColor: theme.palette.info.lighter,\r\n ':hover': {\r\n color: 'white'\r\n }\r\n}));\r\nconst ContentContainer = styled('div')(() => ({\r\n display: 'flex',\r\n justifyContent: 'center',\r\n width: '94vw',\r\n border: '1px solid red'\r\n}));\r\nexport default function QueueMetricsApp() {\r\n const [open, setOpen] = React.useState(false);\r\n const [metricsData, setMetricsData] = React.useState(null);\r\n const handleOpen = () => {\r\n setOpen((prev) => !prev);\r\n };\r\n const handleClose = () => setOpen(false);\r\n const [connected, setConnected] = useState(false);\r\n const [contactInQueue, setContactInQueue] = useState(0);\r\n const [agentAvailable, setAgentAvailable] = useState(0);\r\n const [agentOnline, setAgentOnline] = useState(0);\r\n const [totalAgents, setTotalAgents] = useState(0);\r\n const [agentOnCall, setAgentOnCall] = useState(0);\r\n const [contactsHandled, setContactshandled] = useState(0);\r\n // const [contactsQueued, setContactsQueued] = useState();\r\n const [handleTime, setHandleTIme] = useState();\r\n const [totalHandledTime, setTotalHandledTime] = useState({\r\n hour: '00',\r\n minutes: '00',\r\n seconds: '00'\r\n });\r\n const [averageHandleTime, setAverageHandleTime] = useState({\r\n hour: '00',\r\n minutes: '00',\r\n seconds: '00'\r\n });\r\n const [queueInfo, setQueueInfo] = useState();\r\n const containerRef = useRef(null);\r\n const { toggleColorMode, mode } = React.useContext(ColorModeContext);\r\n\r\n useEffect(() => {\r\n // Get Current Metric Data\r\n let currentMetricsInterval = setInterval(() => {\r\n awsConnect.getCurrentMetricData(\r\n {\r\n InstanceId: awsConnectInstanceId,\r\n CurrentMetrics: currentMetrics,\r\n Filters: {\r\n Channels: ['VOICE'], //[('CHAT', 'TASK')],\r\n Queues: [\r\n 'arn:aws:connect:eu-west-2:355721060766:instance/5729b379-f5fe-4017-aac1-15ba8ed5e9b6/queue/d09c4cb0-208c-4df2-9d45-9927eec3df42'\r\n // 'arn:aws:connect:us-east-1:767282783672:instance/9c763e34-8f80-4824-9b7c-9857f7a0dc07/queue/5f6cbce6-5167-4f4a-a26e-971f860bcb20'\r\n // 'arn:aws:connect:us-east-1:767282783672:instance/9c763e34-8f80-4824-9b7c-9857f7a0dc07/queue/7f1c0d40-7a2b-409c-8fa8-833714dbc1ef'\r\n // 'arn:aws:connect:us-east-1:767282783672:instance/9c763e34-8f80-4824-9b7c-9857f7a0dc07/queue/962ae2bb-14f8-4f79-adf4-45fee8f513cb'\r\n ]\r\n },\r\n Groupings: ['QUEUE', 'CHANNEL']\r\n // MaxResults: 20\r\n },\r\n (err, data) => {\r\n if (data) {\r\n setMetricsData(data);\r\n // console.log(data);\r\n if (data.MetricResults.length > 0) {\r\n data.MetricResults.map((item) => {\r\n item.Collections.map((colItem) => {\r\n if (colItem.Metric.Name === 'CONTACTS_IN_QUEUE') {\r\n setContactInQueue(colItem.Value);\r\n } else if (colItem.Metric.Name === 'AGENTS_AVAILABLE') {\r\n setAgentAvailable(colItem.Value);\r\n } else if (colItem.Metric.Name === 'AGENTS_ONLINE') {\r\n setAgentOnline(colItem.Value);\r\n } else if (colItem.Metric.Name === 'AGENTS_ON_CALL') {\r\n setAgentOnCall(colItem.Value);\r\n }\r\n });\r\n });\r\n }\r\n } else if (err) {\r\n console.log('Error found in getting data of aws connect');\r\n console.log(err);\r\n console.log(err.stack);\r\n }\r\n }\r\n );\r\n }, 3000);\r\n return () => {\r\n console.log('interval cleared');\r\n clearInterval(currentMetricsInterval);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n // List Agent Statuses\r\n // Get all agents\r\n awsConnect.listAgentStatuses(\r\n {\r\n InstanceId: awsConnectInstanceId\r\n },\r\n (err, data) => {\r\n if (err) {\r\n console.log('Error is coming of list agents....');\r\n console.log(err);\r\n } else if (data) {\r\n console.log('Data is here of list agents...');\r\n console.log(data);\r\n if (data.AgentStatusSummaryList.length > 0) {\r\n setTotalAgents(data.AgentStatusSummaryList.length);\r\n }\r\n }\r\n }\r\n );\r\n }, []);\r\n\r\n // -----\r\n useEffect(() => {\r\n // Minutes should be divisible by 5\r\n setInterval(() => {\r\n const currentMinute = parseInt(new Date().getMinutes() / 5) * 5;\r\n const endTime = moment().set('minute', currentMinute).set('second', 0).unix();\r\n const subHours = moment().subtract(23, 'hours');\r\n const startTime = moment(subHours).set('minute', currentMinute).set('second', 0).unix();\r\n // console.log(endTime, startTime);\r\n awsConnect.getMetricData(\r\n {\r\n InstanceId: awsConnectInstanceId,\r\n StartTime: startTime,\r\n EndTime: endTime,\r\n Filters: {\r\n Channels: ['VOICE'],\r\n Queues: ['d09c4cb0-208c-4df2-9d45-9927eec3df42']\r\n },\r\n Groupings: ['QUEUE', 'CHANNEL'],\r\n HistoricalMetrics: historicalValues\r\n },\r\n (err, data) => {\r\n if (err) {\r\n console.log('Error found in ACDTalkTime for getMetricData .... ');\r\n console.log(err);\r\n } else if (data) {\r\n if (data.MetricResults) {\r\n const [Collections] = data.MetricResults;\r\n Collections?.Collections?.forEach((item) => {\r\n // console.log(item.Metric, item.Value);\r\n if (item.Metric.Name === 'CONTACTS_HANDLED') {\r\n setContactshandled(item.Value);\r\n }\r\n if (item.Metric.Name === 'HANDLE_TIME') {\r\n setHandleTIme(item.Value);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n );\r\n }, [20000]);\r\n }, []);\r\n useEffect(() => {\r\n if (handleTime && contactsHandled) {\r\n // console.log('i am here', handleTime)\r\n const totalTime = moment\r\n .utc(handleTime * 1000)\r\n .format('HH:mm:ss')\r\n .split(':');\r\n const avgSeconds = parseFloat((handleTime / contactsHandled).toFixed(2));\r\n const averageTime = moment\r\n .utc(avgSeconds * 1000)\r\n .format('HH:mm:ss')\r\n .split(':');\r\n if (totalTime[0] === '00' && totalTime[1] === '00' && totalTime[2] === '00') {\r\n setTotalHandledTime(totalHandledTime);\r\n } else {\r\n setTotalHandledTime({\r\n hour: totalTime[0] === '00' ? '00' : totalTime[0],\r\n minutes: totalTime[1] === '00' ? '00' : totalTime[1],\r\n seconds: totalTime[2] === '00' ? '00' : totalTime[2]\r\n });\r\n }\r\n if (averageTime[0] === '00' && averageTime[1] === '00' && averageTime[2] === '00') {\r\n setAverageHandleTime(totalHandledTime);\r\n } else {\r\n setAverageHandleTime({\r\n hour: averageTime[0] === '00' ? '00' : averageTime[0],\r\n minutes: averageTime[1] === '00' ? '00' : averageTime[1],\r\n seconds: averageTime[2] === '00' ? '00' : averageTime[2]\r\n });\r\n }\r\n }\r\n }, [handleTime, contactsHandled]);\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport { useEffect, useState } from 'react';\r\n// material\r\nimport { Container, Stack, Typography, Box, Grid } from '@mui/material';\r\n// components\r\nimport Page from '../components/Page';\r\n//\r\nimport { Contacts, ContactsInQueue, WaitTime } from 'src/components/_dashboard/app';\r\nimport { ColorModeContext } from 'src/theme';\r\nimport { awsConnect, awsConnectInstanceId } from 'src/api/awsConnect';\r\nimport { currentMetrics } from 'src/api/HistoricalMetrics';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function Contact() {\r\n const [contactInQueue, setContactInQueue] = useState(0);\r\n const [agentOnCall, setAgentOnCall] = useState(0);\r\n const [metricsData, setMetricsData] = React.useState(null);\r\n const [agentAvailable, setAgentAvailable] = useState(0);\r\n const [agentOnline, setAgentOnline] = useState(0);\r\n const { toggleColorMode, mode } = React.useContext(ColorModeContext);\r\n\r\n useEffect(() => {\r\n // Get Current Metric Data\r\n let currentMetricsInterval = setInterval(() => {\r\n awsConnect.getCurrentMetricData(\r\n {\r\n InstanceId: awsConnectInstanceId,\r\n CurrentMetrics: currentMetrics,\r\n Filters: {\r\n Channels: ['VOICE'], //[('CHAT', 'TASK')],\r\n Queues: [\r\n 'arn:aws:connect:eu-west-2:355721060766:instance/5729b379-f5fe-4017-aac1-15ba8ed5e9b6/queue/d09c4cb0-208c-4df2-9d45-9927eec3df42'\r\n // 'arn:aws:connect:us-east-1:767282783672:instance/9c763e34-8f80-4824-9b7c-9857f7a0dc07/queue/5f6cbce6-5167-4f4a-a26e-971f860bcb20'\r\n // 'arn:aws:connect:us-east-1:767282783672:instance/9c763e34-8f80-4824-9b7c-9857f7a0dc07/queue/7f1c0d40-7a2b-409c-8fa8-833714dbc1ef'\r\n // 'arn:aws:connect:us-east-1:767282783672:instance/9c763e34-8f80-4824-9b7c-9857f7a0dc07/queue/962ae2bb-14f8-4f79-adf4-45fee8f513cb'\r\n ]\r\n },\r\n Groupings: ['QUEUE', 'CHANNEL']\r\n // MaxResults: 20\r\n },\r\n (err, data) => {\r\n if (data) {\r\n setMetricsData(data);\r\n if (data.MetricResults.length > 0) {\r\n data.MetricResults.map((item) => {\r\n item.Collections.map((colItem) => {\r\n if (colItem.Metric.Name === 'CONTACTS_IN_QUEUE') {\r\n setContactInQueue(colItem.Value);\r\n } else if (colItem.Metric.Name === 'AGENTS_AVAILABLE') {\r\n setAgentAvailable(colItem.Value);\r\n } else if (colItem.Metric.Name === 'AGENTS_ONLINE') {\r\n setAgentOnline(colItem.Value);\r\n } else if (colItem.Metric.Name === 'AGENTS_ON_CALL') {\r\n setAgentOnCall(colItem.Value);\r\n }\r\n });\r\n });\r\n }\r\n } else if (err) {\r\n console.log('Error found in getting data of aws connect');\r\n console.log(err);\r\n console.log(err.stack);\r\n }\r\n }\r\n );\r\n }, 3000);\r\n return () => {\r\n clearInterval(currentMetricsInterval);\r\n };\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Contact Information\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport { Icon } from '@iconify/react';\r\nimport eyeFill from '@iconify/icons-eva/eye-fill';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\nimport shareFill from '@iconify/icons-eva/share-fill';\r\nimport messageCircleFill from '@iconify/icons-eva/message-circle-fill';\r\n// material\r\nimport { alpha, styled } from '@mui/material/styles';\r\nimport { Box, Link, Card, Grid, Avatar, Typography, CardContent } from '@mui/material';\r\n// utils\r\nimport { fDate } from '../../../utils/formatTime';\r\nimport { fShortenNumber } from '../../../utils/formatNumber';\r\n//\r\nimport SvgIconStyle from '../../SvgIconStyle';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst CardMediaStyle = styled('div')({\r\n position: 'relative',\r\n paddingTop: 'calc(100% * 3 / 4)'\r\n});\r\n\r\nconst TitleStyle = styled(Link)({\r\n height: 44,\r\n overflow: 'hidden',\r\n WebkitLineClamp: 2,\r\n display: '-webkit-box',\r\n WebkitBoxOrient: 'vertical'\r\n});\r\n\r\nconst AvatarStyle = styled(Avatar)(({ theme }) => ({\r\n zIndex: 9,\r\n width: 32,\r\n height: 32,\r\n position: 'absolute',\r\n left: theme.spacing(3),\r\n bottom: theme.spacing(-2)\r\n}));\r\n\r\nconst InfoStyle = styled('div')(({ theme }) => ({\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n justifyContent: 'flex-end',\r\n marginTop: theme.spacing(3),\r\n color: theme.palette.text.disabled\r\n}));\r\n\r\nconst CoverImgStyle = styled('img')({\r\n top: 0,\r\n width: '100%',\r\n height: '100%',\r\n objectFit: 'cover',\r\n position: 'absolute'\r\n});\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nBlogPostCard.propTypes = {\r\n post: PropTypes.object.isRequired,\r\n index: PropTypes.number\r\n};\r\n\r\nexport default function BlogPostCard({ post, index }) {\r\n const { cover, title, view, comment, share, author, createdAt } = post;\r\n const latestPostLarge = index === 0;\r\n const latestPost = index === 1 || index === 2;\r\n\r\n const POST_INFO = [\r\n { number: comment, icon: messageCircleFill },\r\n { number: view, icon: eyeFill },\r\n { number: share, icon: shareFill }\r\n ];\r\n\r\n return (\r\n \r\n \r\n alpha(theme.palette.grey[900], 0.72)\r\n }\r\n }),\r\n ...(latestPostLarge && {\r\n pt: {\r\n xs: 'calc(100% * 4 / 3)',\r\n sm: 'calc(100% * 3 / 4.66)'\r\n }\r\n })\r\n }}\r\n >\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n {fDate(createdAt)}\r\n \r\n\r\n \r\n {title}\r\n \r\n\r\n \r\n {POST_INFO.map((info, index) => (\r\n \r\n \r\n {fShortenNumber(info.number)}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport { Icon } from '@iconify/react';\r\nimport searchFill from '@iconify/icons-eva/search-fill';\r\n// material\r\nimport { styled } from '@mui/material/styles';\r\nimport { Box, TextField, Autocomplete, InputAdornment } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst RootStyle = styled('div')(({ theme }) => ({\r\n '& .MuiAutocomplete-root': {\r\n width: 200,\r\n transition: theme.transitions.create('width', {\r\n easing: theme.transitions.easing.easeInOut,\r\n duration: theme.transitions.duration.shorter\r\n }),\r\n '&.Mui-focused': {\r\n width: 240,\r\n '& .MuiAutocomplete-inputRoot': {\r\n boxShadow: theme.customShadows.z12\r\n }\r\n }\r\n },\r\n '& .MuiAutocomplete-inputRoot': {\r\n '& fieldset': {\r\n borderWidth: `1px !important`,\r\n borderColor: `${theme.palette.grey[500_32]} !important`\r\n }\r\n },\r\n '& .MuiAutocomplete-option': {\r\n '&:not(:last-child)': {\r\n borderBottom: `solid 1px ${theme.palette.divider}`\r\n }\r\n }\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nBlogPostsSearch.propTypes = {\r\n posts: PropTypes.array.isRequired\r\n};\r\n\r\nexport default function BlogPostsSearch({ posts }) {\r\n return (\r\n \r\n post.title}\r\n renderInput={(params) => (\r\n \r\n \r\n \r\n \r\n {params.InputProps.startAdornment}\r\n \r\n )\r\n }}\r\n />\r\n )}\r\n />\r\n \r\n );\r\n}\r\n","import faker from 'faker';\r\n// utils\r\nimport { mockImgCover } from '../utils/mockImages';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst POST_TITLES = [\r\n 'Whiteboard Templates By Industry Leaders',\r\n 'Tesla Cybertruck-inspired camper trailer for Tesla fans who can’t just wait for the truck!',\r\n 'Designify Agency Landing Page Design',\r\n '✨What is Done is Done ✨',\r\n 'Fresh Prince',\r\n 'Six Socks Studio',\r\n 'vincenzo de cotiis’ crossing over showcases a research on contamination',\r\n 'Simple, Great Looking Animations in Your Project | Video Tutorial',\r\n '40 Free Serif Fonts for Digital Designers',\r\n 'Examining the Evolution of the Typical Web Design Client',\r\n 'Katie Griffin loves making that homey art',\r\n 'The American Dream retold through mid-century railroad graphics',\r\n 'Illustration System Design',\r\n 'CarZio-Delivery Driver App SignIn/SignUp',\r\n 'How to create a client-serverless Jamstack app using Netlify, Gatsby and Fauna',\r\n 'Tylko Organise effortlessly -3D & Motion Design',\r\n 'RAYO ?? A expanded visual arts festival identity',\r\n 'Anthony Burrill and Wired mag’s Andrew Diprose discuss how they made January’s Change Everything cover',\r\n 'Inside the Mind of Samuel Day',\r\n 'Portfolio Review: Is This Portfolio Too Creative?',\r\n 'Akkers van Margraten',\r\n 'Gradient Ticket icon',\r\n 'Here’s a Dyson motorcycle concept that doesn’t ‘suck’!',\r\n 'How to Animate a SVG with border-image'\r\n];\r\n\r\nconst posts = [...Array(23)].map((_, index) => ({\r\n id: faker.datatype.uuid(),\r\n cover: mockImgCover(index + 1),\r\n title: POST_TITLES[index + 1],\r\n createdAt: faker.date.past(),\r\n view: faker.datatype.number(),\r\n comment: faker.datatype.number(),\r\n share: faker.datatype.number(),\r\n favorite: faker.datatype.number(),\r\n author: {\r\n name: faker.name.findName(),\r\n avatarUrl: `/static/mock-images/avatars/avatar_${index + 1}.jpg`\r\n }\r\n}));\r\n\r\nexport default posts;\r\n","import PropTypes from 'prop-types';\r\n// material\r\nimport { alpha, styled } from '@mui/material/styles';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst RootStyle = styled('span')(({ theme, ownerState }) => {\r\n const { color, variant } = ownerState;\r\n\r\n const styleFilled = (color) => ({\r\n color: theme.palette[color].contrastText,\r\n backgroundColor: theme.palette[color].main\r\n });\r\n\r\n const styleOutlined = (color) => ({\r\n color: theme.palette[color].main,\r\n backgroundColor: 'transparent',\r\n border: `1px solid ${theme.palette[color].main}`\r\n });\r\n\r\n const styleGhost = (color) => ({\r\n color: theme.palette[color].dark,\r\n backgroundColor: alpha(theme.palette[color].main, 0.16)\r\n });\r\n\r\n return {\r\n height: 22,\r\n minWidth: 22,\r\n lineHeight: 0,\r\n borderRadius: 8,\r\n cursor: 'default',\r\n alignItems: 'center',\r\n whiteSpace: 'nowrap',\r\n display: 'inline-flex',\r\n justifyContent: 'center',\r\n padding: theme.spacing(0, 1),\r\n color: theme.palette.grey[800],\r\n fontSize: theme.typography.pxToRem(12),\r\n fontFamily: theme.typography.fontFamily,\r\n backgroundColor: theme.palette.grey[300],\r\n fontWeight: theme.typography.fontWeightBold,\r\n\r\n ...(color !== 'default'\r\n ? {\r\n ...(variant === 'filled' && { ...styleFilled(color) }),\r\n ...(variant === 'outlined' && { ...styleOutlined(color) }),\r\n ...(variant === 'ghost' && { ...styleGhost(color) })\r\n }\r\n : {\r\n ...(variant === 'outlined' && {\r\n backgroundColor: 'transparent',\r\n color: theme.palette.text.primary,\r\n border: `1px solid ${theme.palette.grey[500_32]}`\r\n }),\r\n ...(variant === 'ghost' && {\r\n color: theme.palette.text.secondary,\r\n backgroundColor: theme.palette.grey[500_16]\r\n })\r\n })\r\n };\r\n});\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function Label({ color = 'default', variant = 'ghost', children, ...other }) {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nLabel.propTypes = {\r\n children: PropTypes.node,\r\n color: PropTypes.oneOf([\r\n 'default',\r\n 'primary',\r\n 'secondary',\r\n 'info',\r\n 'success',\r\n 'warning',\r\n 'error'\r\n ]),\r\n variant: PropTypes.oneOf(['filled', 'outlined', 'ghost'])\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport { Icon } from '@iconify/react';\r\nimport searchFill from '@iconify/icons-eva/search-fill';\r\nimport trash2Fill from '@iconify/icons-eva/trash-2-fill';\r\nimport roundFilterList from '@iconify/icons-ic/round-filter-list';\r\n// material\r\nimport { styled } from '@mui/material/styles';\r\nimport {\r\n Box,\r\n Toolbar,\r\n Tooltip,\r\n IconButton,\r\n Typography,\r\n OutlinedInput,\r\n InputAdornment\r\n} from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst RootStyle = styled(Toolbar)(({ theme }) => ({\r\n height: 96,\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n padding: theme.spacing(0, 1, 0, 3)\r\n}));\r\n\r\nconst SearchStyle = styled(OutlinedInput)(({ theme }) => ({\r\n width: 240,\r\n transition: theme.transitions.create(['box-shadow', 'width'], {\r\n easing: theme.transitions.easing.easeInOut,\r\n duration: theme.transitions.duration.shorter\r\n }),\r\n '&.Mui-focused': { width: 320, boxShadow: theme.customShadows.z8 },\r\n '& fieldset': {\r\n borderWidth: `1px !important`,\r\n borderColor: `${theme.palette.grey[500_32]} !important`\r\n }\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nUserListToolbar.propTypes = {\r\n numSelected: PropTypes.number,\r\n filterName: PropTypes.string,\r\n onFilterName: PropTypes.func\r\n};\r\n\r\nexport default function UserListToolbar({ numSelected, filterName, onFilterName }) {\r\n return (\r\n 0 && {\r\n color: 'primary.main',\r\n bgcolor: 'primary.lighter'\r\n })\r\n }}\r\n >\r\n {numSelected > 0 ? (\r\n \r\n {numSelected} selected\r\n \r\n ) : (\r\n \r\n \r\n \r\n }\r\n />\r\n )}\r\n\r\n {numSelected > 0 ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n","import faker from 'faker';\r\nimport { sample } from 'lodash';\r\n// utils\r\nimport { mockImgAvatar } from '../utils/mockImages';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst users = [...Array(24)].map((_, index) => ({\r\n id: faker.datatype.uuid(),\r\n avatarUrl: mockImgAvatar(index + 1),\r\n name: faker.name.findName(),\r\n company: faker.company.companyName(),\r\n isVerified: faker.datatype.boolean(),\r\n status: sample(['active', 'banned']),\r\n role: sample([\r\n 'Leader',\r\n 'Hr Manager',\r\n 'UI Designer',\r\n 'UX Designer',\r\n 'UI/UX Designer',\r\n 'Project Manager',\r\n 'Backend Developer',\r\n 'Full Stack Designer',\r\n 'Front End Developer',\r\n 'Full Stack Developer'\r\n ])\r\n}));\r\n\r\nexport default users;\r\n","// ----------------------------------------------------------------------\r\n\r\nexport const varWrapEnter = {\r\n animate: {\r\n transition: { staggerChildren: 0.1 }\r\n }\r\n};\r\n\r\nexport const varWrapExit = {\r\n exit: {\r\n transition: { staggerChildren: 0.1 }\r\n }\r\n};\r\n\r\nexport const varWrapBoth = {\r\n animate: {\r\n transition: { staggerChildren: 0.07, delayChildren: 0.1 }\r\n },\r\n exit: {\r\n transition: { staggerChildren: 0.05, staggerDirection: -1 }\r\n }\r\n};\r\n","import {\r\n varBounceOut,\r\n varBounceOutUp,\r\n varBounceOutDown,\r\n varBounceOutLeft,\r\n varBounceOutRight\r\n} from './BounceOut';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst TRANSITION_ENTER = {\r\n duration: 0.72,\r\n ease: [0.43, 0.13, 0.23, 0.96]\r\n};\r\n\r\nconst TRANSITION_EXIT = {\r\n duration: 0.48,\r\n ease: [0.43, 0.13, 0.23, 0.96]\r\n};\r\n\r\nexport const varBounceIn = {\r\n animate: {\r\n scale: [0.3, 1.1, 0.9, 1.03, 0.97, 1],\r\n opacity: [0, 1, 1, 1, 1, 1],\r\n transition: TRANSITION_ENTER\r\n },\r\n exit: varBounceOut.animate\r\n};\r\n\r\nexport const varBounceInUp = {\r\n animate: {\r\n y: [720, -24, 12, -4, 0],\r\n scaleY: [4, 0.9, 0.95, 0.985, 1],\r\n opacity: [0, 1, 1, 1, 1],\r\n transition: { ...TRANSITION_ENTER }\r\n },\r\n exit: { ...varBounceOutDown.animate, transition: TRANSITION_EXIT }\r\n};\r\n\r\nexport const varBounceInDown = {\r\n animate: {\r\n y: [-720, 24, -12, 4, 0],\r\n scaleY: [4, 0.9, 0.95, 0.985, 1],\r\n opacity: [0, 1, 1, 1, 1],\r\n transition: TRANSITION_ENTER\r\n },\r\n exit: { ...varBounceOutUp.animate, transition: TRANSITION_EXIT }\r\n};\r\n\r\nexport const varBounceInLeft = {\r\n animate: {\r\n x: [-720, 24, -12, 4, 0],\r\n scaleX: [3, 1, 0.98, 0.995, 1],\r\n opacity: [0, 1, 1, 1, 1],\r\n transition: TRANSITION_ENTER\r\n },\r\n exit: { ...varBounceOutLeft.animate, transition: TRANSITION_EXIT }\r\n};\r\n\r\nexport const varBounceInRight = {\r\n animate: {\r\n x: [720, -24, 12, -4, 0],\r\n scaleX: [3, 1, 0.98, 0.995, 1],\r\n opacity: [0, 1, 1, 1, 1],\r\n transition: TRANSITION_ENTER\r\n },\r\n exit: { ...varBounceOutRight.animate, transition: TRANSITION_EXIT }\r\n};\r\n","// ----------------------------------------------------------------------\r\n\r\nexport const varBounceOut = {\r\n animate: {\r\n scale: [0.9, 1.1, 0.3],\r\n opacity: [1, 1, 0]\r\n }\r\n};\r\n\r\nexport const varBounceOutUp = {\r\n animate: {\r\n y: [-12, 24, -720],\r\n scaleY: [0.985, 0.9, 3],\r\n opacity: [1, 1, 0]\r\n }\r\n};\r\n\r\nexport const varBounceOutDown = {\r\n animate: {\r\n y: [12, -24, 720],\r\n scaleY: [0.985, 0.9, 3],\r\n opacity: [1, 1, 0]\r\n }\r\n};\r\n\r\nexport const varBounceOutLeft = {\r\n animate: {\r\n x: [0, 24, -720],\r\n scaleX: [1, 0.9, 2],\r\n opacity: [1, 1, 0]\r\n }\r\n};\r\n\r\nexport const varBounceOutRight = {\r\n animate: {\r\n x: [0, -24, 720],\r\n scaleX: [1, 0.9, 2],\r\n opacity: [1, 1, 0]\r\n }\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport { motion } from 'framer-motion';\r\n// material\r\nimport { Box } from '@mui/material';\r\n//\r\nimport { varWrapEnter } from './variants';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nMotionContainer.propTypes = {\r\n open: PropTypes.bool.isRequired,\r\n children: PropTypes.node\r\n};\r\n\r\nexport default function MotionContainer({ open, children, ...other }) {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n","import { motion } from 'framer-motion';\r\nimport { Link as RouterLink } from 'react-router-dom';\r\n// material\r\nimport { styled } from '@mui/material/styles';\r\nimport { Box, Button, Typography, Container } from '@mui/material';\r\n// components\r\nimport { MotionContainer, varBounceIn } from '../components/animate';\r\nimport Page from '../components/Page';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nconst RootStyle = styled(Page)(({ theme }) => ({\r\n display: 'flex',\r\n minHeight: '100%',\r\n alignItems: 'center',\r\n paddingTop: theme.spacing(15),\r\n paddingBottom: theme.spacing(10)\r\n}));\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function Page404() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Sorry, page not found!\r\n \r\n \r\n \r\n Sorry, we couldn’t find the page you’re looking for. Perhaps you’ve mistyped the URL?\r\n Be sure to check your spelling.\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { useState, Component } from 'react';\r\nimport { Box, Grid, Container, Typography, Button } from '@mui/material';\r\nimport Dailer from 'src/components/Dailer';\r\nimport Page from '../components/Page';\r\nimport {\r\n RecentActivity, AgentAvailability, AgentPerformance, AgentStatus, QueueMetricsAvailability, WaitTime, WrapUpCodeSelect\r\n} from '../components/_dashboard/app';\r\nimport { styled } from '@mui/material';\r\n\r\nconst Root = styled('div')(() => ({\r\n height: '100%',\r\n display: 'flex',\r\n justifyContent: 'center'\r\n}));\r\n\r\nconst Phone = () => {\r\n const [role, setRole] = useState('')\r\n const [contactid, setContactId] = useState('')\r\n const [agentname, setAgentName] = useState('')\r\n return (\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n );\r\n};\r\n\r\nexport default Phone;\r\n","import { Navigate, useRoutes } from 'react-router-dom';\r\n// layouts\r\nimport DashboardLayout from './layouts/dashboard';\r\nimport LogoOnlyLayout from './layouts/LogoOnlyLayout';\r\n//\r\nimport Login from './pages/Login';\r\nimport Register from './pages/Register';\r\nimport DashboardApp from './pages/DashboardApp';\r\nimport AgentApp from './pages/AgentApp';\r\nimport QueueMetricsApp from './pages/QueueMetricsApp';\r\nimport Contact from './pages/Contact';\r\nimport Blog from './pages/Blog';\r\nimport User from './pages/User';\r\nimport NotFound from './pages/Page404';\r\nimport PhoneComponent from './pages/Phone';\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function Router() {\r\n return useRoutes([\r\n {\r\n path: '/dashboard',\r\n element: ,\r\n children: [\r\n { element: },\r\n \r\n { path: 'phone', element: },\r\n { path: 'app', element: },\r\n { path: 'contact', element: },\r\n { path: 'agents', element: },\r\n { path: 'queuemetrics', element: }\r\n ]\r\n },\r\n {\r\n path: '/',\r\n element: ,\r\n children: [\r\n { path: 'login', element: },\r\n { path: 'register', element: },\r\n { path: '404', element: },\r\n { path: '/', element: },\r\n { path: '*', element: }\r\n ]\r\n },\r\n { path: '*', element: }\r\n ]);\r\n}\r\n","// material\r\nimport { useTheme } from '@mui/material/styles';\r\nimport { GlobalStyles as GlobalThemeStyles } from '@mui/material';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function GlobalStyles() {\r\n const theme = useTheme();\r\n\r\n return (\r\n \r\n );\r\n}\r\n","import { useEffect } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nexport default function ScrollToTop() {\r\n const { pathname } = useLocation();\r\n\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, [pathname]);\r\n\r\n return null;\r\n}\r\n","import 'amazon-connect-streams';\r\nimport React, { useEffect, useRef } from 'react';\r\nimport Router from './routes';\r\nimport ThemeConfig from './theme';\r\nimport GlobalStyles from './theme/globalStyles';\r\nimport ScrollToTop from './components/ScrollToTop';\r\nimport { BaseOptionChartStyle } from './components/charts/BaseOptionChart';\r\n\r\n// ----------------------------------------------------------------------'\r\n\r\nexport default function App() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\n","/* eslint-disable */\r\n/* @ts-nocheck */\r\n\r\n// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log('This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA');\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator\r\n .serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log('New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.');\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch((error) => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' }\r\n })\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.');\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator\r\n .serviceWorker\r\n .ready\r\n .then((registration) => {\r\n registration.unregister();\r\n })\r\n .catch((error) => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","const reportWebVitals = (onPerfEntry) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","// scroll bar\r\nimport 'simplebar/src/simplebar.css';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport { HelmetProvider } from 'react-helmet-async';\r\nimport { Provider } from 'react-redux';\r\nimport store from './redux/store';\r\n//\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\n// ----------------------------------------------------------------------\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to enable client cache, register instead.\r\nserviceWorker.unregister();\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}