{"version":3,"sources":["assets/fonts/Montserrat/Montserrat-Thin.ttf","assets/fonts/Montserrat/Montserrat-ExtraLight.ttf","assets/fonts/Montserrat/Montserrat-Light.ttf","assets/fonts/Montserrat/Montserrat-Regular.ttf","assets/fonts/Montserrat/Montserrat-Medium.ttf","assets/fonts/Montserrat/Montserrat-SemiBold.ttf","assets/fonts/Montserrat/Montserrat-Bold.ttf","assets/fonts/Montserrat/Montserrat-ExtraBold.ttf","assets/fonts/Montserrat/Montserrat-Black.ttf","assets/fonts/Poppins/Poppins-Thin.ttf","assets/fonts/Poppins/Poppins-ExtraLight.ttf","assets/fonts/Poppins/Poppins-Light.ttf","assets/fonts/Poppins/Poppins-Regular.ttf","assets/fonts/Poppins/Poppins-Medium.ttf","assets/fonts/Poppins/Poppins-SemiBold.ttf","assets/fonts/Poppins/Poppins-Bold.ttf","assets/fonts/Poppins/Poppins-ExtraBold.ttf","assets/fonts/Poppins/Poppins-Black.ttf","config/styling.js","config/constants.js","stores/devices.js","stores/notifications.js","stores/auth.js","routes/Bills/PaySuccess.js","routes/Auth/schemas.js","parts/Button/styled.js","parts/Button/Button.js","assets/img/login_icon.svg","assets/img/key_icon.svg","assets/img/success_mail.svg","assets/img/arrow_back_icon.svg","assets/img/info_circle_icon.svg","assets/img/info_icon.svg","routes/Auth/styled.js","parts/styled.js","routes/Auth/Login.js","parts/Modal/styled.js","parts/Modal/Modal.js","routes/Auth/Registration.js","routes/Auth/ForgotPassword.js","routes/Auth/ResetPassword.js","parts/Spinner/Spinner.js","assets/img/no_data_image.svg","assets/img/general_error_image.svg","parts/PageMessage/styled.js","parts/PageMessage/NoData.js","parts/Drawer/Drawer.js","assets/img/calendar_icon.svg","assets/img/leaderboard_icon.svg","assets/img/pending_actions_icon.svg","assets/img/home_icon.svg","assets/img/check_icon.svg","assets/img/cancel_icon.svg","assets/img/schedule_icon.svg","assets/img/clock_icon.svg","assets/img/rocket_icon.svg","assets/img/success_measurement_report.svg","routes/Dashboard/styled.js","routes/Dashboard/Dashboard.js","stores/measurements.js","routes/Dashboard/MeasurementReportModal.js","stores/bills.js","routes/Dashboard/MeasurementReportSuccessModal.js","parts/Toggler/styled.js","parts/Toggler/Toggler.js","routes/Dashboard/OnlineBill.js","routes/Dashboard/DeviceDetails.js","routes/Dashboard/utils.js","parts/Number/Number.js","routes/Dashboard/Chart.js","routes/Dashboard/YearDetails.js","stores/payment.js","routes/Bills/utils.js","assets/img/rule_icon.svg","assets/img/download_icon.svg","assets/img/payment_icon.svg","assets/img/success_pay.svg","routes/Bills/styled.js","routes/Bills/Bills.js","routes/Bills/OnlineBill.js","routes/Bills/BillDetails.js","routes/Bills/PayCancel.js","assets/img/logo_full_2.svg","routes/Info/styled.js","routes/Info/Info.js","routes/Notifications/utils.js","assets/img/notification_icon.svg","assets/img/notification_active_icon.svg","routes/Notifications/styled.js","routes/Notifications/Notifications.js","routes/Notifications/NotificationDetails.js","assets/img/logout_icon.svg","assets/img/settings_icon.svg","assets/img/delete_icon.svg","assets/img/verified_icon.svg","routes/Profile/styled.js","routes/Profile/Settings.js","routes/Profile/Profile.js","parts/ProtectedRoute.js","assets/img/privacy_icon.svg","parts/Footer/styled.js","parts/Footer/Footer.js","assets/img/vodovod_logo_2.svg","assets/img/bills_icon.svg","parts/Sidebar/styled.js","parts/Sidebar/Sidebar.js","parts/PageMessage/NotFound.js","routes/Privacy/styled.js","routes/Privacy/PrivacyPolicy.js","App.js","index.js"],"names":["theme","createTheme","palette","primary50","primary100","primary200","primary400","primary500","primary600","primary800","primary900","neutral0","neutral50","neutral100","danger500","fonts","h100","h200","h300","h400","h500","h600","h700","h800","h900","b100","b200","b300","b400","b500","b600","b700","b800","b900","components","MuiButton","defaultProps","disableRipple","MuiIconButton","MuiTooltip","styleOverrides","tooltip","backgroundColor","color","maxWidth","arrow","GlobalStyle","createGlobalStyle","MontserratThin","MontserratExtraLight","MontserratLight","MontserratRegular","MontserratMedium","MontserratSemiBold","MontserratBold","MontserratExtraBold","MontserratBlack","PoppinsThin","PoppinsExtraLight","PoppinsLight","PoppinsRegular","PoppinsMedium","PoppinsSemiBold","PoppinsBold","PoppinsExtraBold","PoppinsBlack","StyleProvider","children","ThemeProvider","CssBaseline","API_ENDPOINT","process","devices","store","isLoadingGet","allDevices","device","yearData","isLoadingUpdate","isUpdateSuccessfull","getDevices","fetch","method","headers","Accept","authHeader","response","ok","Error","statusText","json","responseJson","data","console","log","yearlyBills","yearly_bills","length","Array","from","sort","a","b","parseInt","bills","reading_date","substring","updateDevice","id","e_bill","body","JSON","stringify","notifications","allNotifications","notification","isLoadingReadAll","isLoadingDelete","isReadAllSuccessfull","isReadSingleSuccessfull","isDeleteAllSuccessfull","getNotifications","auth","unreadCount","filter","n","read_at","readNotifications","readNotification","token","parse","localStorage","getItem","Authorization","timeout","userDetails","isLoggedIn","errors","isLoading","isLoadingUser","isRegisterSuccess","isForgotPasswordSuccess","isResetSuccess","isResetError","isUpdateSuccess","register","email","oib","user_code","password","userData","setItem","login","getUser","getUserDetails","updateUser","mailNotifiable","mail_notifiable","logout","removeItem","forgotPassword","resetPassword","registerSchema","yup","shape","required","matches","confirmPassword","oneOf","terms","loginSchema","forgotPasswordSchema","resetPasswordSchema","ButtonSC","styled","Button","colbg","outlined","size","coltext","colhov","view","rest","WrapperSC","Box","ContentSC","TextSC","p","IconLoginSC","Icon","LoginIconSvg","IconKeySC","KeyIconSvg","LoginTitleWrapperSC","IconInfoSC","InfoIconSvg","IconInfoLabelSC","InfoLabelIconSvg","LabelIconBoxSC","LinkBackWrapperSC","IconMailSendSC","img","attrs","src","MailSendImageSvg","IconArrowBackSC","ArrowBackIconSvg","FormFooterSC","InnerWrapperSC","MainSC","main","ColumnSpinnerSC","LoadingUserSpinnerSC","FormGroupsSC","flexrow","TextErrorSC","CheckboxWrapperSC","CheckboxSC","Checkbox","Login","useForm","resolver","yupResolver","handleSubmit","formState","navigate","useNavigate","useState","errorEmail","setErrorEmail","errorPassword","setErrorPassword","autoEffect","message","useEffect","onSubmit","Tooltip","title","placement","component","Link","to","className","type","onInput","htmlFor","onClick","endIcon","sx","marginBottom","style","minWidth","CircularProgress","thickness","ModalSC","ModalUnstyled","ModalBackdropSC","ModalBoxSC","ModalTitleSC","h2","Modal","BackdropComponent","Registration","errorOib","setErrorOib","errorUserCode","setErrorUserCode","modalOpen","setModalOpen","onKeyPress","e","charCode","window","event","which","keyCode","String","fromCharCode","match","target","value","preventDefault","textDecoration","href","rel","open","ForgotPassword","authError","setAuthError","startsWith","ResetPassword","useSearchParams","get","modalSuccessOpen","setModalSuccessOpen","modalErrorOpen","setModalErrorOpen","autoComplete","replace","Spinner","MessageWrapperSC","variant","IconNoDataSC","NoDataImageSvg","IconGeneralErrorSC","GeneralErrorImageSvg","NoData","messageArray","map","marginTop","Drawer","breakpoint","PageWrapperSC","LeftPageSideSC","TitleSC","h1","DeviceListSC","ul","RightPageSideSC","RightPageSideContainerSC","ButtonBillsBackSC","button","ArrowBackSC","ArrowBackSvg","DeviceCardSC","Paper","TooltipWrapperSC","TooltipTitleSC","h3","TooltipAmountSC","TooltipDateSC","h4","IconCalendarSC","CalendarIconSvg","YearNavigationSC","YearMenuSC","YearMenuItemSC","YearListSC","YearButtonSC","IconChartInfoCircleSC","InfoCircleIconSvg","IconLeaderboardSC","LeaderboardIconSvg","IconPendingActionsSC","PendingActionsIconSvg","IconHomeSC","HomeIconSvg","IconCheckSC","CheckIconSvg","IconClockSC","ScheduleIconSvg","ClockIconSvg","IconCancelSC","CancelIconSvg","IconRocketSC","RocketIconSvg","MeasurementReportNavSC","GraphicSectionSC","ChartSectionSC","ChartInfoSC","ChartInfoTextSC","StatisticSectionSC","StatisticCardSC","bg","last","BillsSectionSC","OnlineBillBoxSC","LastConsumptionWrapperSC","TextLightSC","TextBoldSC","TextLastConsumptionSC","SubsectionSC","ButtonsWrapperSC","center","IconSuccessMRSC","SuccessMRImageSvg","Dashboard","location","useLocation","drawerOpen","setDrawerOpen","shouldNavigateForward","setShouldNavigateForward","firstRender","setFirstRender","matches1024Up","useMediaQuery","matches501Up","pathname","firstDevId","measuring_place_code","toggleDrawer","onClose","dev","NavLink","Street","name","street_number","City","measuring_device_code","measurements","isLoadingPost","isPostSuccessfull","postMeasurement","amount","measurement_amount","MeasurementReportModal","deviceId","averageMonthlyConsumption","lastMeasurement","lastConsumption","lastReadingDate","measuringPlaceCode","address","setIsOpen","setSuccessIsOpen","modalState","setModalState","inputValue","setInputValue","errorInput","setErrorInput","setData","parseFloat","format","Date","width","min","onChange","disabled","allBills","allTransformedBills","bill","isLoadingGetABill","aBill","isLoadingPDF","getBills","getBill","downloadPDF","blob","res","URL","createObjectURL","Blob","link","document","createElement","setAttribute","appendChild","click","removeChild","revokeObjectURL","MeasurementReportSuccessModal","handleClose","SwitchSC","Switch","Toggler","props","OnlineBill","handleChangeToggler","checked","Boolean","DeviceDetails","useParams","year","calendarRef","useRef","calendarOpen","setCalendarOpen","archiveYear","setArchiveYear","modalIsOpen","setModalIsOpen","modalSuccessIsOpen","setModalSuccessIsOpen","find","findIndex","index","y0","measurable","ClickAwayListener","onClickAway","height","ref","prev","Popper","anchorEl","current","yb","yearExtract","contains","handlePickCalendarYear","selected","water_gauge","average_monthly_consumption","bill_consumption","months","yAxisFormater","number","toString","Number","isNumericString","decimalSeparator","thousandSeparator","fixedDecimalScale","displayType","CustomTooltip","active","payload","label","empty","amt","decimalScale","Chart","activeBarIndex","setActiveBarIndex","toolTipYPosition","setToolTipYPosition","barWidth","setBarWidth","matches1600Up","barCharts","querySelectorAll","undefined","barChart","getBoundingClientRect","ResponsiveContainer","BarChart","margin","top","right","bottom","left","onMouseMove","activeTooltipIndex","x1","y1","x2","y2","gradientTransform","offset","stopColor","XAxis","dataKey","slice","charAt","tick","dy","stroke","fontSize","letterSpacing","fontFamily","axisLine","tickLine","YAxis","tickCount","dx","tickFormatter","CartesianGrid","strokeDasharray","strokeWidth","vertical","cursor","content","position","y","allowEscapeViewBox","x","Bar","barSize","radius","month","Cell","fill","YearDetails","chartData","setChartData","tableData","setTableData","matches600Up","formatedData","i","isPresent","isBillIssued","bill_date","record","push","largestNumber","reduce","formatedDataWithEmptyAmounts","r","formatChartData","average_daily_consumption","latest_consumption","TableContainer","Table","TableHead","TableRow","TableCell","TableBody","item","bill_state","redirectId","handleRowClick","bill_amount_euro","bill_amount_hrk","align","state","reverse","payment","billIdLoading","isLoadingPayAll","paymentUrl","isLoadingConfirm","isConfirmSuccessfull","isConfirmError","pay","idArray","url","bill_id","payment_url","confirmPayment","key","fromatBillDateString","monthObject","m","BillListSettingsSC","TopPartSC","IconRuleSC","RuleIconSvg","TotalDebtSC","BottomPartSC","FilterButtonSC","BillListSC","BillCardSC","BodySC","div","DateAndButtonSC","TotalPriceSC","TitleBillSC","AddressSectionSC","AddressSC","SummarySC","ConversionSC","ConversionTextSC","SummaryTextLightSC","SummaryDateSC","SummaryConsumptionSC","SummaryTotalSC","ActionSectionSC","IconDownloadSC","DownloadIconSvg","IconPaymentSC","PaymentIconSvg","PaymentWrapperSC","PaymentInnerWrapperSC","PaymentTitle","PaymentText","IconPaySuccessSC","PaySuccessSvg","Bills","listRef","billId","selectedFilter","setSelectedFilter","totalKunaDebt","setTotalKunaDebt","totalEuroDebt","setTotalEuroDebt","billsFiltered","sortByDate","firstBillId","pixelsOffset","el","scroll","behavior","kunaDebt","next","euroDebt","array","handlePayButton","origin","handlePayAllButton","unpaidBills","billState","classList","parentNode","handleClickCard","Device","isBefore","forEach","BillDetails","postal_code","marginRight","erp_bill_id","PaySuccess","searchParams","split","setTimeout","clearTimeout","PayCancel","TitlePrimarySC","LogoFullSC","LogoFullSvg","SubtitleSC","ParagraphSC","IconInfoLargeSC","TitleSecondarySC","InfoContentSC","IconInfoCircleSC","ButtonWrapperSC","ButtonSmallScreenWrapperSC","InfoContentInnerSC","Info","matches800Up","formatDateString","date","difference","now","getTime","msInDay","NotificationListSettingsSC","SettingsButtonSC","NotificationListSC","NotificationCardSC","NotificationCardContentSC","IconWrapperSC","IconNotificationSC","NotificationIconSvg","IconNotificationActiveSC","NotificationActiveIconSvg","ModalContentSC","TitleNotificationSC","DateNotificationSC","MessageNotificationSC","Notifications","modalReadAllOpen","setModalReadAllOpen","handleConfirmReadAll","ntf","readAt","heading","trim","created_at","NotificationDetails","notificationId","text","AvatarLargeSC","Avatar","hoverable","VersionAndLogoutSC","VersionTextSC","IconLogoutSC","LogoutIconSvg","IconSettingsLargeSC","SettingsIconSvg","SettingsContentSC","SettingsSubsectionSC","SettingsSubsectionInnerSC","flexed","IconDeleteSC","DeleteIconSvg","VerifiedIconSvg","Settings","setModalRequestOpen","Profile","modalRequestOpen","handleLogout","firstLetter","secondLetter","result","toUpperCase","getUserInitials","company","justifyContent","ProtectedRoute","FooterSC","footer","TextPrivacySC","FooterLinksSC","IconPrivacySC","PrivacyIconSvg","NavbarLink","Footer","SidebarUnauthenticatedSC","NavSC","nav","zIndex","drawer","NavWrapperSC","LogoWrapperSC","NavLinkListSC","IconButtonLinkSC","IconButton","activesubroute","IconLogoSC","VodovodLogoSvg","IconBillsSC","BillsIconSvg","Badge","BadgeMUI","IconButtonAvatarSC","AvatarSC","Sidebar","activeSubRoute","setActiveSubroute","badgeContent","NotFound","li","PrivacyPolicy","App","path","element","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.cb12d332.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/Montserrat-Thin.4a799b11.ttf\";","export default __webpack_public_path__ + \"static/media/Montserrat-ExtraLight.62a749ca.ttf\";","export default __webpack_public_path__ + \"static/media/Montserrat-Light.02afb26f.ttf\";","export default __webpack_public_path__ + \"static/media/Montserrat-Regular.3cd78665.ttf\";","export default __webpack_public_path__ + \"static/media/Montserrat-Medium.e2d60bc4.ttf\";","export default __webpack_public_path__ + \"static/media/Montserrat-SemiBold.fa8441f3.ttf\";","export default __webpack_public_path__ + \"static/media/Montserrat-Bold.079ca05d.ttf\";","export default __webpack_public_path__ + \"static/media/Montserrat-ExtraBold.1944c8d1.ttf\";","export default __webpack_public_path__ + \"static/media/Montserrat-Black.46e8b3d6.ttf\";","export default __webpack_public_path__ + \"static/media/Poppins-Thin.a61eaf4c.ttf\";","export default __webpack_public_path__ + \"static/media/Poppins-ExtraLight.94b768c0.ttf\";","export default __webpack_public_path__ + \"static/media/Poppins-Light.f41b63c0.ttf\";","export default __webpack_public_path__ + \"static/media/Poppins-Regular.8081832f.ttf\";","export default __webpack_public_path__ + \"static/media/Poppins-Medium.9e1bb626.ttf\";","export default __webpack_public_path__ + \"static/media/Poppins-SemiBold.cce5625b.ttf\";","export default __webpack_public_path__ + \"static/media/Poppins-Bold.404e299b.ttf\";","export default __webpack_public_path__ + \"static/media/Poppins-ExtraBold.4ed78cd5.ttf\";","export default __webpack_public_path__ + \"static/media/Poppins-Black.eacee5bb.ttf\";","import { createGlobalStyle } from \"styled-components\";\nimport { ThemeProvider as SCThemeProvider } from \"styled-components\";\nimport { createTheme } from \"@mui/material/styles\";\nimport { ThemeProvider } from \"@mui/material/styles\";\nimport CssBaseline from \"@mui/material/CssBaseline\";\n\n// Todo: remove unnecesary fonts\n// Montserrat fonts\nimport MontserratThin from \"../assets/fonts/Montserrat/Montserrat-Thin.ttf\"; // 100\nimport MontserratExtraLight from \"../assets/fonts/Montserrat/Montserrat-ExtraLight.ttf\"; // 200\nimport MontserratLight from \"../assets/fonts/Montserrat/Montserrat-Light.ttf\"; //300\nimport MontserratRegular from \"../assets/fonts/Montserrat/Montserrat-Regular.ttf\"; // 400\nimport MontserratMedium from \"../assets/fonts/Montserrat/Montserrat-Medium.ttf\"; // 500\nimport MontserratSemiBold from \"../assets/fonts/Montserrat/Montserrat-SemiBold.ttf\"; // 600\nimport MontserratBold from \"../assets/fonts/Montserrat/Montserrat-Bold.ttf\"; // 700\nimport MontserratExtraBold from \"../assets/fonts/Montserrat/Montserrat-ExtraBold.ttf\"; // 800\nimport MontserratBlack from \"../assets/fonts/Montserrat/Montserrat-Black.ttf\"; // 900\n\n// Poppins fonts\nimport PoppinsThin from \"../assets/fonts/Poppins/Poppins-Thin.ttf\"; // 100\nimport PoppinsExtraLight from \"../assets/fonts/Poppins/Poppins-ExtraLight.ttf\"; // 200\nimport PoppinsLight from \"../assets/fonts/Poppins/Poppins-Light.ttf\"; //300\nimport PoppinsRegular from \"../assets/fonts/Poppins/Poppins-Regular.ttf\"; // 400\nimport PoppinsMedium from \"../assets/fonts/Poppins/Poppins-Medium.ttf\"; // 500\nimport PoppinsSemiBold from \"../assets/fonts/Poppins/Poppins-SemiBold.ttf\"; // 600\nimport PoppinsBold from \"../assets/fonts/Poppins/Poppins-Bold.ttf\"; // 700\nimport PoppinsExtraBold from \"../assets/fonts/Poppins/Poppins-ExtraBold.ttf\"; // 800\nimport PoppinsBlack from \"../assets/fonts/Poppins/Poppins-Black.ttf\"; // 900\n\nconst theme = createTheme({\n palette: {\n // Primary Colors //\n primary50: \"#E5F8FF\",\n primary100: \"#CCF1FF\",\n primary200: \"#99E3FF\",\n primary400: \"#33C8FF\",\n primary500: \"#00BAFF\",\n primary600: \"#0095CC\",\n primary800: \"#004A66\",\n primary900: \"#002533\",\n // Neutral Colors\n neutral0: \"#FFFFFF\",\n neutral50: \"#FBFBFC\",\n neutral100: \"#F4F3F6\",\n // Danger Colors\n danger500: \"#FF0100\",\n },\n fonts: {\n // Heading Fonts\n h100: \"MontserratThin\",\n h200: \"MontserratExtraLight\",\n h300: \"MontserratLight\",\n h400: \"MontserratRegular\",\n h500: \"MontserratMedium\",\n h600: \"MontserratSemiBold\",\n h700: \"MontserratBold\",\n h800: \"MontserratExtraBold\",\n h900: \"MontserratBlack\",\n // Body Fonts\n b100: \"PoppinsThin\",\n b200: \"PoppinsExtraLight\",\n b300: \"PoppinsLight\",\n b400: \"PoppinsRegular\",\n b500: \"PoppinsMedium\",\n b600: \"PoppinsSemiBold\",\n b700: \"PoppinsBold\",\n b800: \"PoppinsExtraBold\",\n b900: \"PoppinsBlack\",\n },\n components: {\n MuiButton: {\n defaultProps: {\n disableRipple: true,\n },\n },\n MuiIconButton: {\n defaultProps: {\n disableRipple: true,\n },\n },\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n backgroundColor: \"#002533\",\n color: \"#F4F3F6\",\n maxWidth: \"350px\",\n },\n arrow: {\n color: \"#002533\",\n },\n },\n },\n },\n});\n\nconst GlobalStyle = createGlobalStyle`\n // Montserrat Fonts\n @font-face {\n font-family: 'MontserratThin'; // 100\n src: local('MontserratThin'), local('MontserratThin'),\n url(${MontserratThin}) format('truetype')\n }\n @font-face {\n font-family: 'MontserratExtraLight'; // 200\n src: local('MontserratExtraLight'), local('MontserratExtraLight'),\n url(${MontserratExtraLight}) format('truetype')\n }\n @font-face {\n font-family: 'MontserratLight'; // 300\n src: local('MontserratLight'), local('MontserratLight'),\n url(${MontserratLight}) format('truetype')\n }\n @font-face {\n font-family: 'MontserratRegular'; // 400\n src: local('MontserratRegular'), local('MontserratRegular'),\n url(${MontserratRegular}) format('truetype')\n }\n @font-face {\n font-family: 'MontserratMedium'; // 500\n src: local('MontserratMedium'), local('MontserratMedium'),\n url(${MontserratMedium}) format('truetype')\n }\n @font-face {\n font-family: 'MontserratSemiBold'; // 600\n src: local('MontserratSemiBold'), local('MontserratSemiBold'),\n url(${MontserratSemiBold}) format('truetype')\n }\n @font-face {\n font-family: 'MontserratBold'; // 700\n src: local('MontserratBold'), local('MontserratBold'),\n url(${MontserratBold}) format('truetype')\n }\n @font-face {\n font-family: 'MontserratExtraBold'; // 800\n src: local('MontserratExtraBold'), local('MontserratExtraBold'),\n url(${MontserratExtraBold}) format('truetype')\n }\n @font-face {\n font-family: 'MontserratBlack'; // 900\n src: local('MontserratBlack'), local('MontserratBlack'),\n url(${MontserratBlack}) format('truetype')\n }\n\n // Poppins Fonts\n @font-face {\n font-family: 'PoppinsThin'; // 100\n src: local('PoppinsThin'), local('PoppinsThin'),\n url(${PoppinsThin}) format('truetype')\n }\n @font-face {\n font-family: 'PoppinsExtraLight'; // 200\n src: local('PoppinsExtraLight'), local('PoppinsExtraLight'),\n url(${PoppinsExtraLight}) format('truetype')\n }\n @font-face {\n font-family: 'PoppinsLight'; // 300\n src: local('PoppinsLight'), local('PoppinsLight'),\n url(${PoppinsLight}) format('truetype')\n }\n @font-face {\n font-family: 'PoppinsRegular'; // 400\n src: local('PoppinsRegular'), local('PoppinsRegular'),\n url(${PoppinsRegular}) format('truetype')\n }\n @font-face {\n font-family: 'PoppinsMedium'; // 500\n src: local('PoppinsMedium'), local('PoppinsMedium'),\n url(${PoppinsMedium}) format('truetype')\n }\n @font-face {\n font-family: 'PoppinsSemiBold'; // 600\n src: local('PoppinsSemiBold'), local('PoppinsSemiBold'),\n url(${PoppinsSemiBold}) format('truetype')\n }\n @font-face {\n font-family: 'PoppinsBold'; // 700\n src: local('PoppinsBold'), local('PoppinsBold'),\n url(${PoppinsBold}) format('truetype')\n }\n @font-face {\n font-family: 'PoppinsExtraBold'; // 800\n src: local('PoppinsExtraBold'), local('PoppinsExtraBold'),\n url(${PoppinsExtraBold}) format('truetype')\n }\n @font-face {\n font-family: 'PoppinsBlack'; // 900\n src: local('PoppinsBlack'), local('PoppinsBlack'),\n url(${PoppinsBlack}) format('truetype')\n }\n\n ul, li {\n list-style: none;\n }\n\n a {\n text-decoration: none;\n }\n\n h1, h2, h3, h4, h5, h6, p {\n margin: 0;\n }\n`;\n\nconst StyleProvider = ({ children }) => {\n return (\n \n \n \n \n {children}\n \n \n );\n};\n\nexport default StyleProvider;\n","export const API_ENDPOINT = process.env.REACT_APP_API_ENDPOINT;\n","import { store } from \"@risingstack/react-easy-state\";\nimport { API_ENDPOINT } from \"../config/constants.js\";\nimport { authHeader } from \"./auth\";\n\nexport const devices = store({\n isLoadingGet: false,\n allDevices: null,\n device: null,\n yearData: null,\n isLoadingUpdate: false,\n isUpdateSuccessfull: false,\n\n async getDevices() {\n devices.isLoadingGet = true;\n\n try {\n const response = await fetch(\n `${API_ENDPOINT}/system/user-devices?include=street,city`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json\",\n Accept: \"application/json\",\n ...authHeader(),\n },\n }\n );\n\n if (!response.ok) {\n throw Error(response.statusText);\n }\n\n const responseJson = await response.json();\n\n devices.allDevices = responseJson.data;\n devices.isLoadingGet = false;\n } catch (error) {\n devices.isLoadingGet = false;\n console.log(error);\n }\n },\n\n get yearlyBills() {\n if (devices.device && devices.device.yearly_bills?.length > 0) {\n const billsSorted = Array.from(devices.device.yearly_bills).sort(\n (a, b) => {\n return (\n parseInt(b.bills[0].reading_date.substring(0, 4)) -\n parseInt(a.bills[0].reading_date.substring(0, 4))\n );\n }\n );\n return billsSorted;\n } else {\n return null;\n }\n },\n\n async updateDevice(id, e_bill) {\n devices.isLoadingUpdate = true;\n\n try {\n const response = await fetch(\n `${API_ENDPOINT}/system/devices-ebill/${id}`,\n {\n method: \"PATCH\",\n headers: {\n \"Content-type\": \"application/json\",\n Accept: \"application/json\",\n ...authHeader(),\n },\n body: JSON.stringify({ e_bill: e_bill }),\n }\n );\n\n if (!response.ok) {\n throw Error(response.statusText);\n }\n\n await response.json();\n\n devices.isUpdateSuccessfull = true;\n devices.isLoadingUpdate = false;\n } catch (error) {\n devices.isLoadingUpdate = false;\n console.log(error);\n }\n },\n});\n","import { store } from \"@risingstack/react-easy-state\";\nimport { API_ENDPOINT } from \"../config/constants.js\";\nimport { auth, authHeader } from \"./auth\";\n// import { generateNotifications } from \"../routes/Notifications/mockup.js\";\n\nexport const notifications = store({\n allNotifications: null,\n notification: null,\n isLoadingGet: false,\n isLoadingReadAll: false,\n isLoadingDelete: false,\n isReadAllSuccessfull: false,\n isReadSingleSuccessfull: false,\n isDeleteAllSuccessfull: false,\n\n async getNotifications() {\n auth.isLoadingGet = true;\n try {\n const response = await fetch(\n `${API_ENDPOINT}/system/user-notifications`,\n {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json\",\n Accept: \"application/json\",\n ...authHeader(),\n },\n }\n );\n\n if (!response.ok) {\n throw Error(response.statusText);\n }\n\n const responseJson = await response.json();\n notifications.allNotifications = responseJson.data;\n notifications.isLoadingGet = false;\n } catch (error) {\n notifications.isLoadingGet = false;\n console.log(error);\n }\n },\n\n get unreadCount() {\n if (notifications.allNotifications?.length > 0) {\n return notifications.allNotifications.filter(n => !n.read_at).length;\n } else {\n return 0;\n }\n },\n\n async readNotifications() {\n notifications.isLoadingReadAll = true;\n try {\n const response = await fetch(\n `${API_ENDPOINT}/system/read-notifications`,\n {\n method: \"PATCH\",\n headers: {\n \"Content-type\": \"application/json\",\n Accept: \"application/json\",\n ...authHeader(),\n },\n }\n );\n\n if (!response.ok) {\n throw Error(response.statusText);\n }\n await response.json();\n\n notifications.isReadAllSuccessfull = true;\n notifications.isLoadingReadAll = false;\n } catch (error) {\n notifications.isReadAllSuccessfull = false;\n notifications.isLoadingReadAll = false;;\n console.log(error);\n }\n },\n\n async readNotification(id) {\n try {\n const response = await fetch(\n `${API_ENDPOINT}/system/read-notification/${id}`,\n {\n method: \"PATCH\",\n headers: {\n \"Content-type\": \"application/json\",\n Accept: \"application/json\",\n ...authHeader(),\n },\n }\n );\n\n if (!response.ok) {\n throw Error(response.statusText);\n }\n await response.json();\n\n notifications.isReadSingleSuccessfull = true;\n } catch (error) {\n notifications.isReadSingleSuccessfull = false;\n console.log(error);\n }\n },\n});\n","import { store } from \"@risingstack/react-easy-state\";\n\nimport { API_ENDPOINT } from \"../config/constants.js\";\n\nimport { devices } from \"./devices.js\";\nimport { notifications } from \"./notifications.js\";\n\nexport function authHeader() {\n const token = JSON.parse(localStorage.getItem(\"vodovod-user\"));\n if (token) {\n return { Authorization: \"Bearer \" + token };\n }\n}\n\nfunction clearStore() {\n auth.token = null;\n auth.userDetails = null;\n auth.isLoggedIn = false;\n auth.errors = null;\n devices.allDevices = null;\n devices.device = null;\n notifications.allNotifications = null;\n notifications.notification = null;\n}\n\nexport const auth = store({\n token: null,\n userDetails: null,\n isLoggedIn: false,\n errors: null,\n isLoading: false,\n isLoadingUser: false,\n isRegisterSuccess: false,\n isForgotPasswordSuccess: false,\n isResetSuccess: false,\n isResetError: false,\n isLoadingUpdate: false,\n isUpdateSuccess: false,\n\n async register({ email, oib, user_code, password }) {\n auth.errors = null;\n auth.isLoading = true;\n try {\n const response = await fetch(`${API_ENDPOINT}/system/register`, {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n email: email,\n password: password,\n user_code: user_code,\n oib: oib,\n }),\n });\n if (!response.ok) {\n const responseJson = await response.json();\n auth.errors = responseJson.errors;\n throw Error(response.statusText);\n }\n\n const responseJson = await response.json();\n const { token, ...userData } = responseJson;\n localStorage.setItem(\"vodovod-user\", JSON.stringify(token));\n auth.userDetails = userData;\n auth.isRegisterSuccess = true;\n auth.isLoggedIn = true;\n auth.isLoading = false;\n } catch (error) {\n auth.token = null;\n auth.userDetails = null;\n auth.isLoading = false;\n }\n },\n\n async login({ email, password }) {\n auth.isLoading = true;\n try {\n const response = await fetch(`${API_ENDPOINT}/system/login`, {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n email: email,\n password: password,\n }),\n });\n if (!response.ok) {\n const responseJson = await response.json();\n auth.errors = responseJson;\n throw Error(response.statusText);\n }\n const responseJson = await response.json();\n const { token, ...userData } = responseJson;\n localStorage.setItem(\"vodovod-user\", JSON.stringify(token));\n auth.userDetails = userData;\n auth.errors = null;\n auth.isLoggedIn = true;\n auth.isLoading = false;\n } catch (error) {\n auth.token = null;\n auth.userDetails = null;\n auth.isLoading = false;\n console.log(error);\n }\n },\n\n async getUser() {\n auth.isLoadingUser = true;\n let token = JSON.parse(localStorage.getItem(\"vodovod-user\"));\n if (token) {\n auth.token = token;\n await auth.getUserDetails();\n }\n auth.isLoadingUser = false;\n },\n\n async getUserDetails() {\n try {\n const response = await fetch(`${API_ENDPOINT}/system/user-details`, {\n method: \"GET\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n ...authHeader(),\n },\n });\n if (!response.ok) {\n throw Error(response.statusText);\n }\n const responseJson = await response.json();\n auth.userDetails = responseJson;\n auth.isLoggedIn = true;\n } catch (error) {\n console.log(error);\n }\n },\n\n async updateUser(mailNotifiable) {\n auth.isLoadingUpdate = true;\n try {\n const response = await fetch(`${API_ENDPOINT}/system/user-details`, {\n method: \"PATCH\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n ...authHeader(),\n },\n body: JSON.stringify({\n mail_notifiable: mailNotifiable,\n }),\n });\n if (!response.ok) {\n throw Error(response.statusText);\n }\n await response.json();\n auth.isUpdateSuccess = true;\n auth.isLoadingUpdate = false;\n } catch (error) {\n auth.isLoadingUpdate = false;\n console.log(error);\n }\n },\n\n async logout() {\n auth.isLoading = true;\n try {\n const response = await fetch(`${API_ENDPOINT}/system/logout`, {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n ...authHeader(),\n },\n });\n if (!response.ok) {\n throw Error(response.statusText);\n }\n localStorage.removeItem(\"vodovod-user\");\n clearStore();\n auth.isLoading = false;\n } catch (error) {\n auth.isLoading = false;\n console.log(error);\n }\n },\n\n async forgotPassword({ email }) {\n auth.isLoading = true;\n try {\n const response = await fetch(`${API_ENDPOINT}/system/forgot-password`, {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n email: email,\n }),\n });\n if (!response.ok) {\n const responseJson = await response.json();\n auth.errors = responseJson;\n throw Error(response.statusText);\n }\n auth.isForgotPasswordSuccess = true;\n auth.isLoading = false;\n } catch (error) {\n console.log(error);\n auth.isLoading = false;\n }\n },\n\n async resetPassword(password, token) {\n auth.isLoading = true;\n try {\n const response = await fetch(`${API_ENDPOINT}/system/reset-password`, {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n password: password,\n token: token,\n }),\n });\n if (!response.ok) {\n throw Error(response.statusText);\n }\n auth.isResetSuccess = true;\n auth.isLoading = false;\n } catch (error) {\n console.log(error);\n auth.isResetError = true;\n auth.isLoading = false;\n }\n },\n});\n","import { useEffect } from \"react\";\nimport { view, autoEffect } from \"@risingstack/react-easy-state\";\nimport { useSearchParams, useNavigate } from \"react-router-dom\";\n\nimport { payment } from \"../../stores/payment\";\n\nimport {\n IconPaySuccessSC,\n PaymentInnerWrapperSC,\n PaymentText,\n PaymentTitle,\n PaymentWrapperSC,\n} from \"./styled\";\n\nimport Spinner from \"../../parts/Spinner/Spinner\";\n\nlet timeout;\n\nconst PaySuccess = view(() => {\n const [searchParams] = useSearchParams();\n const navigate = useNavigate();\n\n const key = searchParams.get(\"key\");\n const idArray = searchParams.get(\"bill\")?.split(\",\");\n\n autoEffect(async () => {\n if (!key || idArray.length === 0) {\n navigate(\"/racuni\");\n } else {\n await payment.confirmPayment(key, idArray);\n if (payment.isConfirmError) {\n timeout = setTimeout(() => {\n navigate(`/racuni`, {\n replace: true,\n });\n }, 3000);\n }\n if (payment.isConfirmSuccessfull) {\n if (idArray.length === 1) {\n timeout = setTimeout(() => {\n navigate(`/racuni/${idArray[0]}`, {\n replace: true,\n state: { redirectId: idArray[0] },\n });\n }, 3000);\n } else {\n timeout = setTimeout(() => {\n navigate(`/racuni`, {\n replace: true,\n });\n }, 3000);\n }\n }\n }\n }, []);\n\n useEffect(() => {\n return () => {\n payment.isConfirmError = false;\n payment.isConfirmSuccessfull = false;\n clearTimeout(timeout);\n };\n }, []);\n\n return (\n \n {payment.isLoadingConfirm ? (\n \n ) : (\n \n {payment.isConfirmError ? (\n Došlo je do pogreške.\n ) : (\n payment.isConfirmSuccessfull && (\n <>\n \n {idArray.length === 1 && \"Račun uspješno plaćen.\"}\n {idArray.length > 1 && \"Računi uspješno plaćeni.\"}\n \n \n \n )\n )}\n Uskoro ćete biti preusmjereni na račune.\n \n )}\n \n );\n});\n\nexport default PaySuccess;\n","import * as yup from \"yup\";\n\nexport const registerSchema = yup.object().shape({\n oib: yup\n .string()\n .required(\"Upišite OIB\")\n .matches(/^$|^\\d{11}$/, \"OIB mora sadržavati 11 znamenki\"),\n user_code: yup\n .string()\n .required(\"Upišite šifru korisnika\")\n .matches(/^$|^\\d{6}$/, \"MbV mora sadržavati 6 znamenki\"),\n email: yup\n .string()\n .email(\"Upišite ispravnu e-mail adresu\")\n .required(\"Upišite e-mail adresu\"),\n password: yup\n .string()\n .required(\"Upišite lozinku\")\n .matches(\n /^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&_])[A-Za-z\\d@$!%*#?&_]{8,}$/,\n \"Lozinka je neispravna. Upiši minimalno 8 znakova, veliko slovo, malo slovo, broj i specijalni znak\"\n ),\n confirmPassword: yup\n .string()\n .oneOf([yup.ref(\"password\"), null], \"Lozinke se ne podudaraju\"),\n terms: yup\n .bool()\n .oneOf(\n [true],\n \"Uvjeti i pravila korištenja nisu označeni kao pročitani i prihvaćeni\"\n ),\n});\n\nexport const loginSchema = yup.object().shape({\n email: yup\n .string()\n .email(\"Upišite ispravnu e-mail adresu\")\n .required(\"Upišite e-mail adresu\"),\n password: yup.string().required(\"Upišite lozinku\"),\n});\n\nexport const forgotPasswordSchema = yup.object().shape({\n email: yup\n .string()\n .email(\"Upišite ispravnu e-mail adresu\")\n .required(\"Upišite e-mail adresu\"),\n});\n\nexport const resetPasswordSchema = yup.object().shape({\n password: yup\n .string()\n .required(\"Lozinka je obavezna\")\n .matches(\n /^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&_])[A-Za-z\\d@$!%*#?&_]{8,}$/,\n \"Potrebno 8 znakova, veliko slovo, malo slovo, broj i specijalni znak\"\n ),\n confirmPassword: yup\n .string()\n .oneOf([yup.ref(\"password\"), null], \"Lozinke se ne podudaraju\"),\n});\n","import styled from \"styled-components\";\n\nimport { Button } from \"@mui/material\";\n\nexport const ButtonSC = styled(Button)`\n &.MuiButton-root {\n background-color: ${({ theme, colbg }) => theme.palette[colbg]};\n background-color: ${({ outlined }) => outlined && \"transparent\"};\n border: ${({ theme, colbg }) => `2px solid ${theme.palette[colbg]}`};\n border-radius: 50px;\n padding: ${({ theme, size }) =>\n size === \"small\" ? \"2px 10px\" : \"6px 18px\"};\n color: ${({ theme, coltext }) => theme.palette[coltext]};\n font-family: ${({ theme }) => theme.fonts.b700};\n font-size: 12px;\n letter-spacing: 0.12px;\n line-height: 24px;\n text-transform: none;\n\n &:disabled {\n background-color: #a2a1a4;\n border: 2px solid #a2a1a4;\n color: white;\n }\n\n &:hover {\n background-color: ${({ theme, colhov, colbg }) =>\n colhov ? theme.palette[colhov] : theme.palette[colbg]};\n background-color: ${({ outlined }) => outlined && \"transparent\"};\n }\n }\n\n .MuiIcon-root {\n margin-left: 6px;\n margin-right: 4px;\n background-color: ${({ theme, coltext }) => theme.palette[coltext]};\n }\n\n span {\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n`;\n","import { view } from \"@risingstack/react-easy-state\";\n\nimport { ButtonSC } from \"./styled\";\n\nconst Button = view(({ children, ...rest }) => {\n return {children};\n});\n\nexport default Button;\n","export default __webpack_public_path__ + \"static/media/login_icon.077d275b.svg\";","export default __webpack_public_path__ + \"static/media/key_icon.813dcae2.svg\";","export default __webpack_public_path__ + \"static/media/success_mail.8d5f7dec.svg\";","export default __webpack_public_path__ + \"static/media/arrow_back_icon.58acb58c.svg\";","export default __webpack_public_path__ + \"static/media/info_circle_icon.c7814e0d.svg\";","export default __webpack_public_path__ + \"static/media/info_icon.5f31c123.svg\";","import styled from \"styled-components\";\n\nimport { Box, Icon } from \"@mui/material\";\n\nimport LoginIconSvg from \"../../assets/img/login_icon.svg\";\nimport KeyIconSvg from \"../../assets/img/key_icon.svg\";\nimport MailSendImageSvg from \"../../assets/img/success_mail.svg\";\nimport ArrowBackIconSvg from \"../../assets/img/arrow_back_icon.svg\";\nimport InfoLabelIconSvg from \"../../assets/img/info_circle_icon.svg\";\nimport InfoIconSvg from \"../../assets/img/info_icon.svg\";\n\nexport const WrapperSC = styled(Box)`\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px 52px;\n\n &.registration {\n min-height: 800px;\n overflow-y: auto;\n\n @media (max-width: 600px) {\n min-height: 1100px;\n }\n }\n\n @media (max-width: 1024px) {\n align-items: start;\n }\n`;\n\nexport const ContentSC = styled(Box)`\n width: 370px;\n overflow-y: hidden;\n\n h1 {\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n font-size: 28px;\n line-height: 36px;\n letter-spacing: 0.56px;\n color: ${({ theme }) => theme.palette.primary800};\n margin-bottom: 20px;\n }\n`;\n\nexport const TextSC = styled.p`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-size: 14px;\n line-height: 24px;\n color: ${({ theme }) => theme.palette.primary800};\n margin-bottom: 40px;\n\n a {\n font-family: ${({ theme }) => theme.fonts.b700};\n color: ${({ theme }) => theme.palette.primary500};\n }\n`;\n\nexport const IconLoginSC = styled(Icon)`\n &.MuiIcon-root {\n width: 20px;\n height: 18px;\n -webkit-mask: url(${LoginIconSvg}) no-repeat center;\n mask: url(${LoginIconSvg}) no-repeat center;\n margin-left: 24px;\n }\n`;\n\nexport const IconKeySC = styled(Icon)`\n &.MuiIcon-root {\n width: 22px;\n height: 12px;\n -webkit-mask: url(${KeyIconSvg}) no-repeat center;\n mask: url(${KeyIconSvg}) no-repeat center;\n }\n`;\n\nexport const LoginTitleWrapperSC = styled(Box)`\n width: 100%;\n display: flex;\n align-items: center;\n`;\n\nexport const IconInfoSC = styled(Icon)`\n margin-left: 24px;\n margin-bottom: 20px;\n &.MuiIcon-root {\n width: 17px;\n height: 20px;\n -webkit-mask: url(${InfoIconSvg}) no-repeat center;\n mask: url(${InfoIconSvg}) no-repeat center;\n background-color: ${({ theme }) => theme.palette.primary800};\n\n :hover {\n cursor: pointer;\n }\n }\n`;\n\nexport const IconInfoLabelSC = styled(Icon)`\n &.MuiIcon-root {\n width: 13px;\n height: 13px;\n -webkit-mask: url(${InfoLabelIconSvg}) no-repeat center;\n mask: url(${InfoLabelIconSvg}) no-repeat center;\n mask-size: cover;\n background-color: ${({ theme }) => theme.palette.primary800};\n margin-bottom: 8px;\n }\n`;\n\nexport const LabelIconBoxSC = styled(Box)`\n width: 100%;\n height: fit-content;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-right: 24px;\n`;\n\nexport const LinkBackWrapperSC = styled(Box)`\n a {\n font-family: ${({ theme }) => theme.fonts.b700};\n font-size: 14px;\n line-height: 24px;\n color: ${({ theme }) => theme.palette.primary500};\n }\n`;\n\nexport const IconMailSendSC = styled.img.attrs({\n src: MailSendImageSvg,\n})`\n width: 108.6px;\n height: 96px;\n margin-bottom: 40px;\n`;\n\nexport const IconArrowBackSC = styled(Icon)`\n &.MuiIcon-root {\n width: 16px;\n height: 16px;\n -webkit-mask: url(${ArrowBackIconSvg}) no-repeat center;\n mask: url(${ArrowBackIconSvg}) no-repeat center;\n }\n`;\n\nexport const FormFooterSC = styled(Box)`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n`;\n","import styled from \"styled-components\";\n\nimport { Box, Checkbox } from \"@mui/material\";\n\n//\n//\n// ---------------------------------------------------------------\n// -------------------------- App --------------------------------\n// ---------------------------------------------------------------\nexport const WrapperSC = styled(Box)`\n height: 100vh;\n width: 100%;\n display: flex;\n background-color: ${({ theme }) => theme.palette.neutral50};\n overflow-x: hidden;\n position: relative;\n\n @media (max-width: 1024px) {\n position: relative;\n flex-direction: column;\n min-height: 100vh;\n }\n`;\n\nexport const InnerWrapperSC = styled(Box)`\n display: flex;\n flex-direction: column;\n position: relative;\n min-height: 479px;\n width: 100%;\n\n @media (max-width: 1024px) {\n min-height: 0;\n height: 100%;\n }\n`;\n\nexport const MainSC = styled.main`\n overflow-y: auto;\n margin-bottom: 40px;\n height: 100%;\n\n @media (max-width: 600px) {\n margin-bottom: 80px;\n }\n`;\n\nexport const ColumnSpinnerSC = styled(Box)`\n padding-top: 71px;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const LoadingUserSpinnerSC = styled(Box)`\n background-color: ${({ theme }) => theme.palette.neutral50};\n position: absolute;\n min-width: 100vw;\n min-height: 100vh;\n z-index: 999;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\n//\n//\n// ---------------------------------------------------------------\n// ---------------------- Form Elements -----------------------------\n// ---------------------------------------------------------------\n\nexport const FormGroupsSC = styled(Box)`\n display: ${({ flexrow }) => (flexrow ? \"flex\" : \"block\")};\n justify-content: space-between;\n\n @media (max-width: 600px) {\n display: block;\n }\n\n // Form group - input & label & error\n .form-group {\n display: flex;\n flex-direction: column;\n width: ${({ flexrow }) => (flexrow ? \"47%\" : \"100%\")};\n\n @media (max-width: 600px) {\n width: 100%;\n }\n\n // Input and label\n & > div {\n display: flex;\n flex-direction: column-reverse;\n }\n\n label {\n font-family: ${({ theme }) => theme.fonts.h700};\n font-size: 12px;\n line-height: 24px;\n color: ${({ theme }) => theme.palette.primary800};\n margin-left: 24px;\n margin-bottom: 8px;\n width: fit-content;\n }\n\n input {\n border-radius: 24px;\n border: ${({ theme }) => `1px solid ${theme.palette.primary800}`};\n padding: 7px 23px;\n font-size: 12px;\n line-height: 24px;\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n color: ${({ theme }) => theme.palette.primary800};\n\n &::-webkit-outer-spin-button,\n &::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n &[type=\"number\"] {\n -moz-appearance: textfield;\n }\n\n &:focus {\n outline: none;\n background-color: ${({ theme }) => theme.palette.primary50};\n border-color: ${({ theme }) => theme.palette.primary500};\n\n & ~ label,\n & ~ div label {\n color: ${({ theme }) => theme.palette.primary400};\n }\n }\n\n &:disabled {\n border-color: #a2a1a4;\n }\n }\n\n &.error {\n label {\n color: ${({ theme }) => theme.palette.danger500} !important;\n }\n input {\n border-color: ${({ theme }) => theme.palette.danger500};\n }\n }\n }\n`;\n\nexport const TextErrorSC = styled.p`\n min-height: 24px;\n font-size: 10px;\n line-height: 12px;\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n color: ${({ theme }) => theme.palette.danger500};\n margin: 4px;\n`;\n\nexport const CheckboxWrapperSC = styled(Box)`\n margin-bottom: 28px;\n & > div {\n display: flex;\n align-items: center;\n }\n\n label {\n font-size: 14px;\n line-height: 24px;\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n color: ${({ theme }) => theme.palette.primary800};\n }\n`;\n\nexport const CheckboxSC = styled(Checkbox)`\n &.MuiCheckbox-root {\n height: 24px;\n width: 24px;\n margin-right: 6px;\n }\n &.Mui-checked {\n color: ${({ theme }) => theme.palette.primary500} !important;\n }\n`;\n","import { useState, useEffect } from \"react\";\nimport { useNavigate, Link } from \"react-router-dom\";\nimport { view, autoEffect } from \"@risingstack/react-easy-state\";\nimport { useForm } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\n\nimport { loginSchema } from \"./schemas\";\nimport { auth } from \"../../stores/auth\";\n\nimport Button from \"../../parts/Button/Button\";\n\nimport { CircularProgress, Tooltip } from \"@mui/material\";\n\nimport {\n WrapperSC,\n ContentSC,\n TextSC,\n IconLoginSC,\n IconInfoSC,\n FormFooterSC,\n LoginTitleWrapperSC,\n} from \"./styled\";\nimport { FormGroupsSC, TextErrorSC } from \"../../parts/styled\";\n\nconst Login = view(() => {\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm({ resolver: yupResolver(loginSchema) });\n const navigate = useNavigate();\n\n const [errorEmail, setErrorEmail] = useState(\"\");\n const [errorPassword, setErrorPassword] = useState(\"\");\n\n autoEffect(() => {\n if (auth.isLoggedIn) {\n navigate(\"/\");\n }\n });\n\n autoEffect(() => {\n if (auth.errors?.message === \"Password ili email ne postoji\") {\n setErrorPassword(\"Kriva e-mail adresa ili lozinka\");\n }\n if (\n auth.errors?.message === \"Password ili email ne postoji\"\n ) {\n setErrorEmail(\"Kriva e-mail adresa ili lozinka\");\n }\n if (\n auth.errors?.errors?.email[0] === \"The email must be a valid email address.\"\n ) {\n setErrorEmail(\"Upišite ispravnu e-mail adresu\")\n }\n });\n\n useEffect(() => {\n return () => {\n auth.errors = null;\n };\n }, []);\n\n const onSubmit = async (data) => {\n await auth.login(data);\n };\n\n return (\n \n \n \n

Prijava

\n \n \n \n
\n
\n \n Nemate korisnički račun?{\" \"}\n Registrirajte se!\n \n \n \n
\n setErrorEmail(\"\")}\n />\n \n
\n {errorEmail || errors.email?.message}\n \n \n
\n setErrorPassword(\"\")}\n />\n \n
\n \n {errorPassword || errors.password?.message}\n \n \n
\n \n Zaboravljena lozinka?{\" \"}\n Promijenite lozinku.\n \n \n \n }\n sx={{ marginBottom: \"40px\" }}\n >\n \n {auth.isLoading ? (\n \n ) : (\n \"Prijava\"\n )}\n \n \n \n
\n
\n
\n );\n});\n\nexport default Login;\n","import styled from \"styled-components\";\n\nimport { Box } from \"@mui/material\";\nimport { ModalUnstyled } from \"@mui/base\";\nexport const ModalSC = styled(ModalUnstyled)`\n &.MuiModal-root {\n position: fixed;\n z-index: 9999;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n`;\n\nexport const ModalBackdropSC = styled(Box)`\n z-index: -1;\n position: fixed;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n background-color: ${({ theme }) => theme.palette.primary800};\n opacity: 0.4;\n`;\n\nexport const ModalBoxSC = styled(Box)`\n outline: none;\n max-width: 562px;\n width: 100%;\n height: fit-content;\n display: flex;\n flex-direction: column;\n align-items: center;\n background-color: ${({ theme }) => theme.palette.neutral0};\n padding: 40px 100px;\n border-radius: 16px;\n margin: 24px;\n\n & > div {\n width: 100%;\n }\n\n @media (max-width: 600px) {\n padding: 40px;\n }\n`;\n\nexport const ModalTitleSC = styled.h2`\n font-size: 24px;\n line-height: 38px;\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n color: ${({ theme }) => theme.palette.primary800};\n text-align: center;\n margin-bottom: 40px;\n`;\n","import { view } from \"@risingstack/react-easy-state\";\n\nimport { ModalSC, ModalBackdropSC, ModalBoxSC, ModalTitleSC } from \"./styled\";\n\nconst Modal = view(({ children, title, ...rest }) => {\n return (\n \n \n {title}\n {children}\n \n \n );\n});\n\nexport default Modal;\n","import { useEffect, useState } from \"react\";\nimport { view, autoEffect } from \"@risingstack/react-easy-state\";\nimport { useNavigate, Link } from \"react-router-dom\";\nimport { useForm } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\n\nimport { registerSchema } from \"./schemas\";\nimport { auth } from \"../../stores/auth\";\n\nimport Button from \"../../parts/Button/Button\";\nimport Modal from \"../../parts/Modal/Modal\";\n\nimport { CircularProgress, Tooltip } from \"@mui/material\";\n\nimport {\n WrapperSC,\n ContentSC,\n TextSC,\n IconLoginSC,\n IconInfoLabelSC,\n IconMailSendSC,\n LabelIconBoxSC,\n FormFooterSC,\n} from \"./styled\";\nimport {\n FormGroupsSC,\n TextErrorSC,\n CheckboxWrapperSC,\n CheckboxSC,\n} from \"../../parts/styled\";\n\nconst Registration = view(() => {\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm({ resolver: yupResolver(registerSchema) });\n const navigate = useNavigate();\n\n const [errorEmail, setErrorEmail] = useState(\"\");\n const [errorOib, setErrorOib] = useState(\"\");\n const [errorUserCode, setErrorUserCode] = useState(\"\");\n const [modalOpen, setModalOpen] = useState(false);\n\n autoEffect(() => {\n if (auth.isLoggedIn && !auth.isRegisterSuccess) {\n navigate(\"/\");\n }\n });\n\n autoEffect(() => {\n if (\n auth.errors?.email &&\n auth.errors.email[0] === \"Email adresa je zauzeta\"\n ) {\n setErrorEmail(\"Korisnički račun s navedenom e-mail adresom već postoji\");\n }\n if (\n auth.errors?.oib &&\n auth.errors.oib[0] === \"Korisnik s ovim OIB-om je ve\\u0107 registriran\"\n ) {\n setErrorOib(\"Korisnički račun s navedenom OIB-om već postoji\");\n }\n if (\n auth.errors?.user_code &&\n auth.errors.user_code[0] === \"The user code has already been taken.\"\n ) {\n setErrorUserCode(\"Korisnički račun s navedenom šifrom već postoji\");\n }\n });\n\n useEffect(() => {\n return () => {\n auth.errors = null;\n auth.isRegisterSuccess = false;\n };\n }, []);\n\n const preventNonNumericalInputOib = (e) => {\n e = e || window.event;\n var charCode = typeof e.which == \"undefined\" ? e.keyCode : e.which;\n var charStr = String.fromCharCode(charCode);\n if (!charStr.match(/^[0-9]+$/) || e.target.value.length === 11) {\n e.preventDefault();\n }\n };\n\n const preventNonNumericalInputCode = (e) => {\n e = e || window.event;\n var charCode = typeof e.which == \"undefined\" ? e.keyCode : e.which;\n var charStr = String.fromCharCode(charCode);\n if (!charStr.match(/^[0-9]+$/) || e.target.value.length === 6) {\n e.preventDefault();\n }\n };\n\n const onSubmit = async (data) => {\n await auth.register(data);\n if (auth.isRegisterSuccess) {\n setModalOpen(true);\n }\n };\n\n const handleCloseModal = () => {\n auth.isRegisterSuccess = false;\n setModalOpen(false);\n navigate(\"/\");\n };\n\n return (\n \n \n

Registracija

\n
\n \n Imate korisnički račun? Prijavite se!\n \n \n \n
\n setErrorOib(\"\")}\n onKeyPress={preventNonNumericalInputOib}\n />\n \n
\n {errorOib || errors.oib?.message}\n \n \n
\n \n \n \n \n Šesteroznamenkasta oznaka na računu MbV. \n \n Više\n \n \n }\n placement=\"top\"\n arrow\n >\n \n \n \n
\n {errorUserCode}\n \n
\n \n \n
\n setErrorEmail(\"\")}\n />\n \n
\n {errorEmail || errors.email?.message}\n \n
\n \n \n
\n \n \n
\n {errors.password?.message}\n \n \n
\n \n \n
\n {errors.confirmPassword?.message}\n \n
\n \n
\n \n \n
\n {errors.terms?.message}\n
\n \n \n }\n >\n \n {auth.isLoading ? (\n \n ) : (\n \"Registracija\"\n )}\n \n \n \n
\n
\n \n \n Uspješno ste završili registraciju.\n \n Nastavi\n \n \n
\n );\n});\n\nexport default Registration;\n","import { useState, useEffect } from \"react\";\nimport { useNavigate, Link } from \"react-router-dom\";\nimport { view, autoEffect } from \"@risingstack/react-easy-state\";\nimport { useForm } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\n\nimport { forgotPasswordSchema } from \"./schemas\";\nimport { auth } from \"../../stores/auth\";\n\nimport Button from \"../../parts/Button/Button\";\nimport Modal from \"../../parts/Modal/Modal\";\n\nimport { CircularProgress } from \"@mui/material\";\n\nimport {\n WrapperSC,\n ContentSC,\n TextSC,\n LinkBackWrapperSC,\n IconKeySC,\n IconMailSendSC,\n IconArrowBackSC,\n FormFooterSC,\n} from \"./styled\";\nimport { FormGroupsSC, TextErrorSC } from \"../../parts/styled\";\n\nconst ForgotPassword = view(() => {\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm({ resolver: yupResolver(forgotPasswordSchema) });\n const navigate = useNavigate();\n\n const [authError, setAuthError] = useState(\"\");\n const [modalOpen, setModalOpen] = useState(false);\n\n autoEffect(() => {\n if (auth.isLoggedIn) {\n navigate(\"/\");\n }\n });\n\n autoEffect(() => {\n if (auth.errors?.message.startsWith(\"There is no user with email\")) {\n setAuthError(\"Korisnički račun s navedenom e-mail adresom ne postoji\");\n }\n });\n\n useEffect(() => {\n return () => {\n auth.isForgotPasswordSuccess = false;\n };\n }, []);\n\n const onSubmit = async (data) => {\n await auth.forgotPassword(data);\n if (auth.isForgotPasswordSuccess) {\n setModalOpen(true);\n }\n };\n\n return (\n \n \n

Promjena lozinke

\n
\n \n Upišite svoju email adresu kako biste promijenili svoju lozinku.\n \n \n \n
\n setAuthError(\"\")}\n />\n \n
\n {authError || errors.email?.message}\n \n
\n \n \n Povratak na prijavu\n \n }\n >\n \n {auth.isLoading ? (\n \n ) : (\n \"Pošalji\"\n )}\n \n \n \n
\n
\n \n \n \n Provjerite svoj inbox. Ako imate korisnički račun s ovom email\n adresom, pratite upute i link za reset lozinke.\n \n }\n >\n Povratak na prijavu\n \n \n
\n );\n});\n\nexport default ForgotPassword;\n","import { useState, useEffect } from \"react\";\nimport { useNavigate, Link, useSearchParams } from \"react-router-dom\";\nimport { view, autoEffect } from \"@risingstack/react-easy-state\";\nimport { useForm } from \"react-hook-form\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\n\nimport { resetPasswordSchema } from \"./schemas\";\nimport { auth } from \"../../stores/auth\";\n\nimport Modal from \"../../parts/Modal/Modal\";\nimport Button from \"../../parts/Button/Button\";\n\nimport { CircularProgress } from \"@mui/material\";\n\nimport {\n WrapperSC,\n ContentSC,\n TextSC,\n LinkBackWrapperSC,\n FormFooterSC,\n} from \"./styled\";\nimport { FormGroupsSC, TextErrorSC } from \"../../parts/styled\";\n\nconst ResetPassword = view(() => {\n const [searchParams] = useSearchParams();\n const token = searchParams.get(\"token\");\n const [modalSuccessOpen, setModalSuccessOpen] = useState(false);\n const [modalErrorOpen, setModalErrorOpen] = useState(false);\n const navigate = useNavigate();\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm({ resolver: yupResolver(resetPasswordSchema) });\n\n autoEffect(() => {\n if (!token && !auth.isLoggedIn) {\n navigate(\"/prijava\");\n }\n if (auth.isLoggedIn) {\n navigate(\"/\");\n }\n });\n\n useEffect(() => {\n return () => {\n auth.isResetError = false;\n auth.isResetSuccess = false;\n };\n }, []);\n\n const onSubmit = async ({password}) => {\n await auth.resetPassword(password, token);\n if (auth.isResetSuccess) {\n setModalSuccessOpen(true);\n }\n if (auth.isResetError) {\n setModalErrorOpen(true);\n }\n };\n\n const handleCloseModalSuccess = () => {\n auth.isRegisterSuccess = false;\n setModalSuccessOpen(false);\n navigate(\"/prijava\", { replace: true });\n };\n\n const handleCloseModalError = () => {\n auth.errors = false;\n setModalErrorOpen(false);\n navigate(\"/prijava\", { replace: true });\n };\n\n return (\n \n \n

Promjena lozinke

\n
\n Unesite novu lozinku.\n \n \n
\n \n \n
\n {errors.password?.message}\n \n \n
\n \n \n
\n {errors.confirmPassword?.message}\n \n
\n \n \n Povratak na prijavu\n \n \n \n {auth.isLoading ? (\n \n ) : (\n \"Potvrdi\"\n )}\n \n \n \n
\n
\n \n \n Povratak na prijavu\n \n \n \n \n Povratak na prijavu\n \n \n
\n );\n});\n\nexport default ResetPassword;\n","import { view } from \"@risingstack/react-easy-state\";\n\nimport { CircularProgress } from \"@mui/material\";\n\nconst Spinner = view(({...rest}) => {\n return (\n \n );\n});\n\nexport default Spinner;\n","export default __webpack_public_path__ + \"static/media/no_data_image.8417a669.svg\";","export default __webpack_public_path__ + \"static/media/general_error_image.31ef1025.svg\";","import styled from \"styled-components\";\n\nimport { Icon, Box } from \"@mui/material\";\n\nimport NoDataImageSvg from \"../../assets/img/no_data_image.svg\";\nimport GeneralErrorImageSvg from \"../../assets/img/general_error_image.svg\";\n\nexport const MessageWrapperSC = styled(Box)`\n position: ${({ variant }) =>\n variant === \"relative\" ? \"relative\" : \"absolute\"};\n width: 100%;\n display: flex;\n justify-content: center;\n margin: 60px 0;\n\n div {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n }\n\n p {\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n margin-top: 24px;\n font-size: 12px;\n color: ${({ theme }) => theme.palette.primary900};\n text-align: center;\n }\n`;\n\nexport const IconNoDataSC = styled(Icon)`\n &.MuiIcon-root {\n width: 160px;\n height: 160px;\n background: url(${NoDataImageSvg}) no-repeat center;\n background-color: transparent;\n }\n`;\n\nexport const IconGeneralErrorSC = styled(Icon)`\n &.MuiIcon-root {\n width: 160px;\n height: 160px;\n background: url(${GeneralErrorImageSvg}) no-repeat center;\n background-color: transparent;\n }\n`;\n","import { view } from \"@risingstack/react-easy-state\";\nimport { IconNoDataSC, MessageWrapperSC } from \"./styled\";\n\nconst NoData = view(({ variant, message, messageArray }) => {\n return (\n \n
\n \n {message &&

{message}

}\n {messageArray?.length &&\n messageArray.map((p) => {\n return

{p}

;\n })}\n
\n
\n );\n});\n\nexport default NoData;\n","import { view } from \"@risingstack/react-easy-state\";\n\nimport { Drawer as DrawerMUI } from \"@mui/material\";\n\nconst Drawer = view(({ children, breakpoint, ...rest }) => {\n if (breakpoint) {\n return {children};\n } else {\n return children;\n }\n});\n\nexport default Drawer;\n","export default __webpack_public_path__ + \"static/media/calendar_icon.db3677fb.svg\";","export default __webpack_public_path__ + \"static/media/leaderboard_icon.393ec251.svg\";","export default __webpack_public_path__ + \"static/media/pending_actions_icon.fcd078c3.svg\";","export default __webpack_public_path__ + \"static/media/home_icon.e0950d27.svg\";","export default __webpack_public_path__ + \"static/media/check_icon.3de807f1.svg\";","export default __webpack_public_path__ + \"static/media/cancel_icon.ca8605e4.svg\";","export default __webpack_public_path__ + \"static/media/schedule_icon.b874782f.svg\";","export default __webpack_public_path__ + \"static/media/clock_icon.5724d471.svg\";","export default __webpack_public_path__ + \"static/media/rocket_icon.1b22138c.svg\";","export default __webpack_public_path__ + \"static/media/success_measurement_report.c03da7d5.svg\";","import styled from \"styled-components\";\n\nimport { Box, Button, Icon, Paper } from \"@mui/material\";\n\nimport CalendarIconSvg from \"../../assets/img/calendar_icon.svg\";\nimport InfoCircleIconSvg from \"../../assets/img/info_circle_icon.svg\";\nimport LeaderboardIconSvg from \"../../assets/img/leaderboard_icon.svg\";\nimport PendingActionsIconSvg from \"../../assets/img/pending_actions_icon.svg\";\nimport HomeIconSvg from \"../../assets/img/home_icon.svg\";\nimport CheckIconSvg from \"../../assets/img/check_icon.svg\";\nimport CancelIconSvg from \"../../assets/img/cancel_icon.svg\";\nimport ScheduleIconSvg from \"../../assets/img/schedule_icon.svg\";\nimport ClockIconSvg from \"../../assets/img/clock_icon.svg\";\nimport RocketIconSvg from \"../../assets/img/rocket_icon.svg\";\nimport SuccessMRImageSvg from \"../../assets/img/success_measurement_report.svg\";\nimport ArrowBackSvg from \"../../assets/img/arrow_back_icon.svg\";\n\n// Dashboard\n// Device Card\n// Chart\n// Device Details\n// Year Details\n\n//\n//\n// ---------------------------------------------------------------\n// ---------------------- Dashboard ------------------------------\n// ---------------------------------------------------------------\n\nexport const PageWrapperSC = styled(Box)`\n display: flex;\n width: 100%;\n height: 100%;\n`;\n\nexport const LeftPageSideSC = styled(Box)`\n width: 392px;\n height: calc(100% - 120px);\n\n @media (max-width: 1024px) {\n height: calc(100% - 186px);\n margin-top: 64px;\n }\n\n @media (max-width: 500px) {\n height: calc(100% - 120px);\n margin-top: 0px;\n width: 100%;\n }\n`;\n\nexport const TitleSC = styled.h1`\n font-family: ${({ theme }) => theme.fonts.h600};\n color: ${({ theme }) => theme.palette.primary800};\n font-size: 32px;\n line-height: 40px;\n letter-spacing: 0.56px;\n margin: 40px 0;\n padding-left: 24px;\n`;\n\nexport const DeviceListSC = styled.ul`\n margin: 0;\n padding-left: 24px;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n overflow: auto;\n\n &::-webkit-scrollbar {\n width: 4px;\n }\n &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n &::-webkit-scrollbar-thumb {\n background-color: #e5e4e8;\n border: none;\n }\n // Firefox\n scrollbar-color: #e5e4e8 transparent;\n`;\n\nexport const RightPageSideSC = styled(Box)`\n flex: 1;\n overflow: auto;\n padding: 0 24px;\n`;\n\nexport const RightPageSideContainerSC = styled(Box)`\n max-width: 1200px;\n margin: auto;\n position: relative;\n`;\n\nexport const ButtonBillsBackSC = styled.button`\n position: absolute;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: transparent;\n border: none;\n outline: none;\n font-family: ${({ theme }) => theme.fonts.b400};\n color: ${({ theme }) => theme.palette.primary900};\n font-size: 18px;\n line-height: 24px;\n padding: 0;\n margin: 48px 0 8px;\n cursor: pointer;\n`;\n\nexport const ArrowBackSC = styled(Icon)`\n margin-right: 12px;\n &.MuiIcon-root {\n width: 16px;\n height: 16px;\n -webkit-mask: url(${ArrowBackSvg}) no-repeat center;\n mask: url(${ArrowBackSvg}) no-repeat center;\n background-color: ${({ theme }) => theme.palette.primary900};\n }\n`;\n\n//\n//\n// ---------------------------------------------------------------\n// ---------------------- Device Card ----------------------------\n// ---------------------------------------------------------------\n\nexport const DeviceCardSC = styled(Paper)`\n margin-bottom: 20px;\n\n &.MuiPaper-root {\n cursor: pointer;\n padding: 20px 32px;\n background-color: ${({ theme }) => theme.palette.neutral0};\n border: 1px solid #eeeff9;\n border-radius: 8px;\n box-shadow: 0px 8px 24px -8px rgba(34, 3, 101, 0.1);\n width: 344px;\n\n @media (max-width: 500px) {\n width: calc(100vw - 48px);\n }\n }\n\n &.active {\n &.MuiPaper-root {\n user-select: text;\n -webkit-user-drag: none;\n background-color: ${({ theme }) => theme.palette.primary50};\n }\n\n header h3 {\n color: ${({ theme }) => theme.palette.primary500};\n }\n }\n\n header {\n display: flex;\n justify-content: space-between;\n margin-bottom: 24px;\n\n h3 {\n color: ${({ theme }) => theme.palette.primary800};\n }\n }\n\n div {\n margin-bottom: 24px;\n }\n\n footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n h3 {\n color: ${({ theme }) => theme.palette.primary500};\n }\n }\n\n h3 {\n font-family: ${({ theme }) => theme.fonts.b700};\n color: ${({ theme }) => theme.palette.primary900};\n font-size: 16px;\n line-height: 24px;\n letter-spacing: 0.32px;\n }\n\n h4 {\n font-family: ${({ theme }) => theme.fonts.b700};\n font-size: 10px;\n line-height: 16px;\n letter-spacing: 0.12px;\n }\n\n p {\n font-family: ${({ theme }) => theme.fonts.b400};\n color: ${({ theme }) => theme.palette.primary900};\n font-size: 14px;\n line-height: 24px;\n letter-spacing: 0.12px;\n }\n`;\n\n//\n//\n// ---------------------------------------------------------------\n// ---------------------- Chart -----------------------------\n// ---------------------------------------------------------------\n\nexport const TooltipWrapperSC = styled(Box)`\n min-width: 120px;\n height: 80px;\n background-color: ${({ theme }) => theme.palette.neutral0};\n border-radius: 4px;\n padding-left: 20px;\n padding-right: 20px;\n padding-top: 12px;\n position: relative;\n box-shadow: 0px 0px 12px 2px rgba(100, 100, 100, 0.1);\n z-index: 10;\n\n .box-tip {\n width: 16px;\n height: 16px;\n position: absolute;\n left: 52px;\n bottom: -14px;\n overflow: hidden;\n clip-path: polygon(50% 50%, 0 0, 100% 0);\n background-color: ${({ theme }) => theme.palette.neutral0};\n }\n`;\n\nexport const TooltipTitleSC = styled.h3`\n font-family: ${({ theme }) => theme.fonts.b700};\n color: #b8b7bb;\n font-size: 10px;\n line-height: 16px;\n`;\n\nexport const TooltipAmountSC = styled(Box)`\n .amount {\n display: inline;\n font-family: ${({ theme }) => theme.fonts.h700};\n color: ${({ theme }) => theme.palette.primary500};\n font-size: 18px;\n line-height: 20px;\n margin-right: 4px;\n }\n\n span {\n font-family: ${({ theme }) => theme.fonts.h700};\n color: ${({ theme }) => theme.palette.primary800};\n font-size: 12px;\n line-height: 16px;\n\n sup {\n font-size: 7px;\n }\n }\n`;\n\nexport const TooltipDateSC = styled.h4`\n font-family: ${({ theme }) => theme.fonts.h500};\n font-weight: 500;\n font-size: 10px;\n color: ${({ theme }) => theme.palette.primary800};\n line-height: 16px;\n`;\n\n//\n//\n// ---------------------------------------------------------------\n// ---------------------- DeviceDetails --------------------------\n// ---------------------------------------------------------------\n\nexport const IconCalendarSC = styled(Icon)`\n &.MuiIcon-root {\n width: 18px;\n height: 20px;\n -webkit-mask: url(${CalendarIconSvg}) no-repeat center;\n mask: url(${CalendarIconSvg}) no-repeat center;\n\n &.clickable {\n background-color: ${({ theme }) => theme.palette.primary500};\n cursor: pointer;\n }\n }\n`;\n\nexport const YearNavigationSC = styled(Box)`\n display: flex;\n align-items: center;\n margin-bottom: 20px;\n height: 32px;\n\n .MuiIcon-root {\n background-color: ${({ theme }) => theme.palette.primary800};\n margin: 0 3px;\n }\n`;\n\nexport const YearMenuSC = styled(Box)`\n display: flex;\n flex-direction: column;\n background-color: ${({ theme }) => theme.palette.neutral0};\n height: fit-content;\n margin-top: 12px;\n box-shadow: 0px 0px 12px 2px rgba(100, 100, 100, 0.1);\n\n &::-webkit-scrollbar {\n width: 4px;\n }\n &::-webkit-scrollbar-track {\n background-color: ${({ theme }) => theme.palette.neutral0};\n }\n &::-webkit-scrollbar-thumb {\n background-color: #e5e4e8;\n border: none;\n }\n scrollbar-color: #e5e4e8 transparent;\n\n .box-tip {\n width: 16px;\n height: 16px;\n position: absolute;\n left: 33px;\n top: -4px;\n overflow: hidden;\n clip-path: polygon(50% 50%, 0% 100%, 100% 100%);\n background-color: ${({ theme }) => theme.palette.neutral0};\n }\n`;\n\nexport const YearMenuItemSC = styled(Box)`\n background-color: transparent;\n color: ${({ theme }) => theme.palette.primary800};\n font-family: ${({ theme }) => theme.fonts.b700};\n font-size: 12px;\n line-height: 32px;\n width: 82px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:hover {\n color: ${({ theme }) => theme.palette.neutral0};\n background-color: ${({ theme }) => theme.palette.primary500};\n }\n`;\n\nexport const YearListSC = styled.ul`\n display: flex;\n margin-left: 32px;\n padding-left: 0;\n`;\n\nexport const YearButtonSC = styled(Button)`\n &.MuiButton-root {\n min-width: 46px;\n width: 46px;\n height: 32px;\n margin-right: 8px;\n border-radius: 16px;\n background-color: transparent;\n color: ${({ theme }) => theme.palette.primary800};\n font-family: ${({ theme }) => theme.fonts.b700};\n font-size: 12px;\n &:hover {\n background-color: ${({ theme }) => theme.palette.primary500};\n color: ${({ theme }) => theme.palette.primary50};\n }\n }\n\n &.active {\n &.MuiButton-root {\n background-color: ${({ theme }) => theme.palette.primary500};\n color: ${({ theme }) => theme.palette.primary50};\n }\n }\n`;\n\n//\n//\n// ---------------------------------------------------------------\n// ------------------------ YearDetails --------------------------\n// ---------------------------------------------------------------\nexport const IconChartInfoCircleSC = styled(Icon)`\n &.MuiIcon-root {\n width: 20px;\n height: 20px;\n -webkit-mask: url(${InfoCircleIconSvg}) no-repeat center;\n mask: url(${InfoCircleIconSvg}) no-repeat center;\n }\n`;\n\nexport const IconLeaderboardSC = styled(Icon)`\n &.MuiIcon-root {\n width: 20px;\n height: 18px;\n -webkit-mask: url(${LeaderboardIconSvg}) no-repeat center;\n mask: url(${LeaderboardIconSvg}) no-repeat center;\n }\n`;\n\nexport const IconPendingActionsSC = styled(Icon)`\n &.MuiIcon-root {\n width: 18px;\n height: 21px;\n -webkit-mask: url(${PendingActionsIconSvg}) no-repeat center;\n mask: url(${PendingActionsIconSvg}) no-repeat center;\n }\n`;\n\nexport const IconHomeSC = styled(Icon)`\n &.MuiIcon-root {\n width: 18px;\n height: 17px;\n -webkit-mask: url(${HomeIconSvg}) no-repeat center;\n mask: url(${HomeIconSvg}) no-repeat center;\n }\n`;\n\nexport const IconCheckSC = styled(Icon)`\n &.MuiIcon-root {\n width: 20px;\n height: 20px;\n -webkit-mask: url(${CheckIconSvg}) no-repeat center;\n mask: url(${CheckIconSvg}) no-repeat center;\n background-color: ${({ theme }) => theme.palette.primary500};\n }\n`;\n\nexport const IconScheduleSC = styled(Icon)`\n &.MuiIcon-root {\n width: 20px;\n height: 20px;\n -webkit-mask: url(${ScheduleIconSvg}) no-repeat center;\n mask: url(${ScheduleIconSvg}) no-repeat center;\n background-color: ${({ theme }) => \"#eecc00\"};\n }\n`;\n\nexport const IconClockSC = styled(Icon)`\n &.MuiIcon-root {\n width: 20px;\n height: 20px;\n -webkit-mask: url(${ClockIconSvg}) no-repeat center;\n mask: url(${ClockIconSvg}) no-repeat center;\n background-color: ${({ theme }) => theme.palette.primary900};\n }\n`;\n\nexport const IconCancelSC = styled(Icon)`\n &.MuiIcon-root {\n width: 20px;\n height: 20px;\n -webkit-mask: url(${CancelIconSvg}) no-repeat center;\n mask: url(${CancelIconSvg}) no-repeat center;\n background-color: ${({ theme }) => theme.palette.danger500};\n }\n`;\n\nexport const IconRocketSC = styled(Icon)`\n &.MuiIcon-root {\n width: 19px;\n height: 19px;\n -webkit-mask: url(${RocketIconSvg}) no-repeat center;\n mask: url(${RocketIconSvg}) no-repeat center;\n }\n`;\n\nexport const MeasurementReportNavSC = styled(Box)`\n height: 120px;\n display: flex;\n align-items: center;\n\n @media (max-width: 1024px) {\n justify-content: end;\n }\n`;\n\nexport const GraphicSectionSC = styled(Box)`\n display: flex;\n width: 100%;\n margin-top: -50px;\n\n @media (max-width: 600px) {\n flex-direction: column;\n }\n`;\n\nexport const ChartSectionSC = styled(Box)`\n display: flex;\n flex-direction: column;\n margin-right: 24px;\n flex: 1;\n margin-top: 50px;\n\n @media (max-width: 600px) {\n margin-bottom: 24px;\n margin-right: 20px;\n }\n`;\n\nexport const ChartInfoSC = styled(Box)`\n display: flex;\n align-items: center;\n margin-bottom: 20px;\n min-height: 32px;\n\n .MuiIcon-root {\n background-color: ${({ theme }) => theme.palette.primary800};\n margin: 0 2px;\n }\n`;\n\nexport const ChartInfoTextSC = styled.p`\n color: ${({ theme }) => theme.palette.primary800};\n font-family: ${({ theme }) => theme.fonts.b400};\n font-size: 10px;\n line-height: 16px;\n margin-left: 32px;\n`;\n\nexport const StatisticSectionSC = styled(Box)`\n display: flex;\n flex-direction: column;\n width: 200px;\n height: auto;\n\n @media (max-width: 600px) {\n width: 100%;\n }\n\n & > div:first-child {\n display: flex;\n flex-direction: column;\n\n @media (max-width: 600px) {\n flex-direction: row;\n gap: 24px;\n flex: 1;\n }\n\n @media (max-width: 500px) {\n flex-direction: column;\n gap: 0;\n }\n }\n`;\n\nexport const StatisticCardSC = styled(Paper)`\n &.MuiPaper-root {\n width: 200px;\n border-radius: 16px;\n padding: ${({ size }) =>\n size === \"large\" ? \"17px 28px 20px 28px\" : \"19px 24px 16px 24px\"};\n background-color: ${({ theme, bg }) =>\n bg === \"dark\" ? theme.palette.primary800 : theme.palette.primary500};\n color: ${({ theme }) => theme.palette.primary50};\n margin-bottom: 32px;\n\n @media (max-width: 1024px) {\n width: 100%;\n }\n\n @media (max-width: 600px) {\n display: flex;\n flex-direction: column;\n align-items: center;\n margin-bottom: ${({ last }) => !last && \"24px\"};\n }\n }\n\n .MuiIcon-root {\n background-color: ${({ theme }) => theme.palette.primary50};\n }\n\n p {\n font-family: ${({ theme }) => theme.fonts.b700};\n font-size: 10px;\n line-height: 16px;\n letter-spacing: 0.12px;\n margin-bottom: ${({ size }) => (size === \"large\" ? \"12px\" : \"4px\")};\n }\n\n footer {\n display: flex;\n align-items: flex-end;\n\n .num-large {\n display: inline-block;\n font-family: ${({ theme }) => theme.fonts.h700};\n font-size: 28px;\n line-height: 36px;\n letter-spacing: 0.12px;\n }\n\n .num-small {\n display: inline-block;\n font-family: ${({ theme }) => theme.fonts.h700};\n font-size: 18px;\n line-height: 20px;\n letter-spacing: 0.12px;\n }\n\n span {\n font-size: 12px;\n line-height: 16px;\n margin-left: 4px;\n\n sup {\n font-size: 7px;\n }\n }\n }\n`;\n\nexport const BillsSectionSC = styled(Box)`\n margin-top: 32px;\n padding-bottom: 24px;\n\n h2 {\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n font-size: 28px;\n line-height: 36px;\n color: ${({ theme }) => theme.palette.primary800};\n margin-bottom: 16px;\n }\n\n .MuiTableContainer-root {\n margin-bottom: 32px;\n }\n\n .MuiTableHead-root {\n .MuiTableCell-root {\n font-family: ${({ theme }) => theme.fonts.b700};\n font-size: 10px;\n line-height: 16px;\n color: ${({ theme }) => theme.palette.primary900};\n padding: 0;\n border-bottom: 0;\n }\n }\n\n .MuiTableBody-root {\n .MuiTableCell-root {\n height: 40px;\n font-family: ${({ theme }) => theme.fonts.b400};\n font-size: 12px;\n color: ${({ theme }) => theme.palette.primary800};\n padding: 8px 0;\n border-bottom: 1px solid #f4f3f6;\n\n a {\n font-family: ${({ theme }) => theme.fonts.b700};\n font-size: 12px;\n color: ${({ theme }) => theme.palette.primary500};\n }\n }\n .MuiIcon-root {\n vertical-align: middle;\n }\n }\n`;\n\nexport const OnlineBillBoxSC = styled(Box)`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-bottom: 16px;\n border-bottom: 1px solid #e5e4e8;\n\n h3 {\n font-family: ${({ theme }) => theme.fonts.b700};\n display: inline-block;\n font-size: 12px;\n line-height: 24px;\n color: #313132;\n cursor: pointer;\n }\n\n p {\n font-family: ${({ theme }) => theme.fonts.b400};\n font-size: 14px;\n line-height: 24px;\n color: #313132;\n }\n`;\n\n// Measurement Report Modal\n\nexport const LastConsumptionWrapperSC = styled(Box)`\n width: 100%;\n margin-bottom: 32px;\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const TextLightSC = styled.p`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n color: ${({ theme }) => theme.palette.primary900};\n font-size: 14px;\n line-height: 24px;\n letter-spacing: 0.12px;\n`;\n\nexport const TextBoldSC = styled.h3`\n font-family: ${({ theme }) => theme.fonts.b700};\n font-size: 12px;\n line-height: 24px;\n color: #313132;\n`;\n\nexport const TextLastConsumptionSC = styled.p`\n margin-top: 8px;\n font-family: ${({ theme }) => theme.fonts.h700};\n font-size: 16px;\n line-height: 24px;\n color: ${({ theme }) => theme.palette.primary900};\n`;\n\nexport const SubsectionSC = styled(Box)`\n width: 100%;\n margin-bottom: 16px;\n display: flex;\n\n & > *:first-child {\n flex: 1;\n text-align: left;\n margin-right: 4px;\n }\n\n & > *:last-child {\n flex: 1;\n text-align: left;\n margin-left: 4px;\n }\n`;\n\nexport const ButtonsWrapperSC = styled(Box)`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: ${({ center }) => (center ? \"center\" : \"space-between\")};\n margin-top: 8px;\n`;\n\nexport const IconSuccessMRSC = styled.img.attrs({\n src: SuccessMRImageSvg,\n})`\n width: 108.6px;\n height: 96px;\n margin-bottom: 40px;\n`;\n\nexport const TextSC = styled.p`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-size: 14px;\n line-height: 24px;\n color: ${({ theme }) => theme.palette.primary800};\n margin-bottom: 40px;\n\n a {\n font-family: ${({ theme }) => theme.fonts.b700};\n color: ${({ theme }) => theme.palette.primary500};\n }\n`;\n","import { useEffect, useState } from \"react\";\nimport { view, autoEffect } from \"@risingstack/react-easy-state\";\nimport { Outlet, NavLink, useNavigate, useLocation } from \"react-router-dom\";\n\nimport { devices } from \"../../stores/devices\";\n\nimport Spinner from \"../../parts/Spinner/Spinner\";\nimport NoData from \"../../parts/PageMessage/NoData\";\nimport Drawer from \"../../parts/Drawer/Drawer\";\n\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\n\nimport {\n TitleSC,\n LeftPageSideSC,\n DeviceListSC,\n DeviceCardSC,\n PageWrapperSC,\n RightPageSideSC,\n RightPageSideContainerSC,\n ButtonBillsBackSC,\n ArrowBackSC,\n} from \"./styled\";\n\nimport { ColumnSpinnerSC } from \"../../parts/styled\";\n\nconst Dashboard = view(() => {\n const navigate = useNavigate();\n const location = useLocation();\n const [drawerOpen, setDrawerOpen] = useState(true);\n const [shouldNavigateForward, setShouldNavigateForward] = useState(true);\n const [firstRender, setFirstRender] = useState(true);\n const matches1024Up = useMediaQuery(\"(min-width:1024px)\");\n const matches501Up = useMediaQuery(\"(min-width:501px)\");\n\n autoEffect(async () => {\n if (!devices.allDevices && firstRender) {\n await devices.getDevices();\n }\n }, [location]);\n\n autoEffect(() => {\n if (\n matches501Up &&\n devices.allDevices?.length > 0 &&\n !devices.device &&\n location.pathname === \"/\" &&\n shouldNavigateForward\n ) {\n const firstDevId = devices.allDevices[0].measuring_place_code;\n navigate(`/vodomjeri/${firstDevId}`);\n }\n }, [matches501Up, shouldNavigateForward]);\n\n autoEffect(() => {\n if (devices.device && shouldNavigateForward) {\n setShouldNavigateForward(false);\n }\n });\n\n useEffect(() => {\n setFirstRender(false);\n return () => {\n devices.allDevices = null;\n };\n }, []);\n\n const toggleDrawer = () => {\n setDrawerOpen(!drawerOpen);\n };\n\n const handleDevicesBackLink = () => {\n devices.device = null;\n navigate(\"/\");\n };\n\n return (\n \n \n {(!location.pathname.startsWith(\"/vodomjeri/\") ||\n matches501Up ||\n matches1024Up) && (\n \n Vodomjeri\n {devices.isLoadingGet ? (\n \n \n \n ) : devices.allDevices?.length === 0 ? (\n \n ) : devices.allDevices?.length > 0 ? (\n \n {devices.allDevices.map((dev) => {\n return (\n setDrawerOpen(false)}\n >\n
\n

Mjesto potrošnje

\n

{dev.measuring_place_code}

\n
\n
\n

\n {dev.Street.name + \" \" + dev.street_number}\n {dev.City && \", \" + dev.City.name}\n

\n
\n
\n {dev.measuring_device_code && (\n <>\n

Vodomjer br.

\n

{dev.measuring_device_code}

\n \n )}\n
\n \n );\n })}\n
\n ) : null}\n
\n )}\n \n {(location.pathname.startsWith(\"/vodomjeri/\") || matches501Up) && (\n \n \n {matches501Up && !matches1024Up && (\n \n \n Vodomjeri\n \n )}\n {!matches501Up && (\n \n \n Vodomjeri\n \n )}\n \n \n \n )}\n
\n );\n});\n\nexport default Dashboard;\n","import { store } from \"@risingstack/react-easy-state\";\nimport { API_ENDPOINT } from \"../config/constants.js\";\nimport { authHeader } from \"./auth\";\n\nexport const measurements = store({\n isLoadingPost: false,\n isPostSuccessfull: false,\n\n async postMeasurement(id, amount) {\n measurements.isLoadingPost = true;\n\n try {\n const response = await fetch(\n `${API_ENDPOINT}/system/user-measurement/${id}`,\n {\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n Accept: \"application/json\",\n ...authHeader(),\n },\n body: JSON.stringify({ measurement_amount: amount }),\n }\n );\n\n if (!response.ok) {\n throw Error(response.statusText);\n }\n\n await response.json();\n\n measurements.isPostSuccessfull = true;\n measurements.isLoadingPost = false;\n } catch (error) {\n measurements.isLoadingPost = false;\n console.log(error);\n }\n },\n});\n","import { useState, useEffect } from \"react\";\nimport { view } from \"@risingstack/react-easy-state\";\nimport { format } from \"date-fns\";\n\nimport { measurements } from \"../../stores/measurements\";\n\nimport Modal from \"../../parts/Modal/Modal\";\nimport Button from \"../../parts/Button/Button\";\n\nimport { FormGroupsSC, TextErrorSC } from \"../../parts/styled\";\nimport {\n LastConsumptionWrapperSC,\n TextLightSC,\n TextBoldSC,\n TextLastConsumptionSC,\n ButtonsWrapperSC,\n SubsectionSC,\n} from \"./styled\";\n\nconst MeasurementReportModal = view(\n ({\n deviceId,\n averageMonthlyConsumption,\n lastMeasurement,\n lastConsumption,\n lastReadingDate,\n measuringPlaceCode,\n address,\n open,\n setIsOpen,\n setSuccessIsOpen,\n }) => {\n const [modalState, setModalState] = useState(\"input\");\n const [inputValue, setInputValue] = useState(\"\");\n const [errorInput, setErrorInput] = useState(\"\");\n const [data, setData] = useState(null);\n\n useEffect(() => {\n setData({\n deviceId: deviceId,\n averageMonthlyConsumption: averageMonthlyConsumption,\n lastMeasurement: lastMeasurement,\n lastConsumption: parseFloat(lastConsumption),\n lastReadingDate: lastReadingDate,\n measuringPlaceCode: measuringPlaceCode,\n address: address,\n });\n // eslint-disable-next-line\n }, [deviceId]);\n\n const preventNonNumericalInput = (e) => {\n e = e || window.event;\n var charCode = typeof e.which == \"undefined\" ? e.keyCode : e.which;\n var charStr = String.fromCharCode(charCode);\n if (!charStr.match(/^[0-9]+$/)) {\n e.preventDefault();\n }\n };\n\n const handleInputChange = (e) => {\n setErrorInput(\"\");\n setInputValue(e.target.value);\n };\n\n const handleCancel = () => {\n setModalState(\"input\");\n setInputValue(\"\");\n setErrorInput(\"\");\n setIsOpen(false);\n };\n\n const handleConfirmInput = (e) => {\n e.preventDefault();\n if (parseInt(inputValue) >= data.lastMeasurement + 100) {\n setErrorInput(\n \"Provjerite vodomjer još jednom, potrošnja je veća za više od 100m2 od prošlog očitanja.\"\n );\n } else if (\n parseInt(inputValue) - data.averageMonthlyConsumption >=\n data.averageMonthlyConsumption * 1.3\n ) {\n setModalState(\"30percent\");\n } else {\n setModalState(\"confirmation\");\n }\n };\n\n const handleSubmit = async () => {\n await measurements.postMeasurement(data.deviceId, inputValue);\n if (measurements.isPostSuccessfull) {\n setInputValue(\"\");\n setModalState(\"input\");\n setErrorInput(\"\");\n setIsOpen(false);\n setSuccessIsOpen(true);\n measurements.isPostSuccessfull = false;\n }\n };\n\n return (\n \n {modalState === \"input\" && data ? (\n <>\n \n {data.lastMeasurement ? (\n <>\n \n Stanje brojila dana{\" \"}\n {data.lastReadingDate &&\n format(new Date(data.lastReadingDate), \"d.M.yyyy\")}{\" \"}\n iznosilo je:\n \n \n {data.lastMeasurement}\n \n \n ) : (\n Nema podataka o prošlom mjerenju\n )}\n \n
\n \n
\n
\n \n \n
\n {errorInput}\n
\n
\n \n \n Odustani\n \n \n Pošalji\n \n \n
\n \n ) : modalState === \"30percent\" && data ? (\n <>\n \n \n Trenutno mjerenje je veće za 30% od prosjeka.\n \n \n \n setModalState(\"input\")}\n >\n Izmijeni\n \n setModalState(\"confirmation\")}\n >\n Nastavi\n \n \n \n ) : (\n modalState === \"confirmation\" &&\n data && (\n <>\n \n Adresa mjesta potrošnje\n {data.address}\n \n \n Broj vodomjera\n {data.deviceId}\n \n \n Stanje vodomjera\n {inputValue}\n \n \n setModalState(\"input\")}\n >\n Izmijeni\n \n \n Pošalji\n \n \n \n )\n )}\n
\n );\n }\n);\n\nexport default MeasurementReportModal;\n","import { store } from \"@risingstack/react-easy-state\";\nimport { API_ENDPOINT } from \"../config/constants.js\";\nimport { authHeader } from \"./auth\";\n\nexport const bills = store({\n isLoadingGet: false,\n allBills: null,\n allTransformedBills: null,\n bill: null,\n isLoadingGetABill: false,\n aBill: null,\n isLoadingUpdate: false,\n isUpdateSuccessfull: false,\n isLoadingPDF: false,\n\n async getBills() {\n bills.isLoadingGet = true;\n\n try {\n const response = await fetch(`${API_ENDPOINT}/system/user-bills`, {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json\",\n Accept: \"application/json\",\n ...authHeader(),\n },\n });\n\n if (!response.ok) {\n throw Error(response.statusText);\n }\n\n const responseJson = await response.json();\n bills.allBills = responseJson.data;\n bills.isLoadingGet = false;\n } catch (error) {\n bills.isLoadingGet = false;\n console.log(error);\n }\n },\n\n async getBill(id) {\n bills.isLoadingGetABill = true;\n\n try {\n const response = await fetch(`${API_ENDPOINT}/system/user-bill/${id}`, {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json\",\n Accept: \"application/json\",\n ...authHeader(),\n },\n });\n\n if (!response.ok) {\n throw Error(response.statusText);\n }\n\n const responseJson = await response.json();\n bills.aBill = responseJson;\n bills.isLoadingGetABill = false;\n } catch (error) {\n bills.isLoadingGetABill = false;\n console.log(error);\n }\n },\n\n async downloadPDF(id) {\n bills.isLoadingPDF = true;\n\n try {\n const response = await fetch(`${API_ENDPOINT}/system/pdf-bill/${id}`, {\n method: \"GET\",\n headers: {\n \"Content-type\": \"application/json\",\n Accept: \"application/json\",\n ...authHeader(),\n },\n });\n console.log(response);\n\n if (!response.ok) {\n throw Error(response.statusText);\n }\n console.log(bills.bill);\n const res = await response.blob();\n const href = URL.createObjectURL(new Blob([res]));\n const link = document.createElement(\"a\");\n link.href = href;\n link.setAttribute(\n \"download\",\n `racun${\n bills?.bill?.id ? bills.bill.id : \"\"\n }.pdf`\n );\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(href);\n\n bills.isLoadingPDF = false;\n } catch (error) {\n bills.isLoadingPDF = false;\n console.log(error);\n }\n },\n});\n","import { view } from \"@risingstack/react-easy-state\";\n\nimport { devices } from \"../../stores/devices\";\nimport { bills } from \"../../stores/bills\";\n\nimport Modal from \"../../parts/Modal/Modal\";\nimport Button from \"../../parts/Button/Button\";\nimport { IconSuccessMRSC, TextSC } from \"./styled\";\n\nconst MeasurementReportSuccessModal = view(({ open, setIsOpen }) => {\n const handleClose = async () => {\n setIsOpen(false);\n if (devices.device) {\n await devices.getDevices();\n }\n if (bills.bill) {\n await bills.getBills();\n }\n };\n return (\n \n \n \n Zahvaljujemo Vam što koristite opciju dostave stanja brojila. Nakon\n obrade podataka, račun ćete dobiti na temelju unesenog stanja.\n \n \n \n );\n});\n\nexport default MeasurementReportSuccessModal;\n","import styled from \"styled-components\";\n\nimport { Switch } from \"@mui/material\";\n\nexport const SwitchSC = styled(Switch)`\n &.MuiSwitch-root {\n display: flex;\n align-items: center;\n justify-content: center;\n\n // Dot\n .MuiSwitch-thumb {\n width: 18px;\n height: 18px;\n color: ${({ theme }) => theme.palette.primary50};\n margin-top: 1px;\n margin-left: 1px;\n }\n\n // Bg\n .MuiSwitch-track {\n min-width: 46px;\n height: 24px;\n border-radius: 50px;\n background-color: ${({ theme }) => theme.palette.primary800};\n opacity: 1;\n }\n\n // Bg - when checked\n .Mui-checked + .MuiSwitch-track {\n background-color: ${({ theme }) => theme.palette.primary500};\n opacity: 1;\n }\n\n // Bg - disabled\n .Mui-disabled + .MuiSwitch-track {\n background-color: #a2a1a4;\n opacity: 1;\n }\n }\n`;\n","import { view } from \"@risingstack/react-easy-state\";\n\nimport { SwitchSC } from \"./styled\";\n\nconst Toggler = view(({ ...props }) => {\n return ;\n});\n\nexport default Toggler;\n","import { view } from \"@risingstack/react-easy-state\";\n\nimport { devices } from \"../../stores/devices\";\n\nimport Toggler from \"../../parts/Toggler/Toggler\";\n\nimport { OnlineBillBoxSC } from \"./styled\";\n\nconst OnlineBill = view(() => {\n const handleChangeToggler = async () => {\n await devices.updateDevice(devices.device.id, !devices.device.e_bill);\n if (devices.isUpdateSuccessfull) {\n devices.device.e_bill = !devices.device.e_bill;\n }\n devices.isUpdateSuccessfull = false;\n };\n\n return (\n <>\n {devices.device && (\n \n
\n

Online račun

\n

\n {devices.device.e_bill\n ? \"Hvala Vam što brinete za okoliš!\"\n : \"Aktivirajte opciju online dostave računa\"}\n

\n
\n
\n \n
\n
\n )}\n \n );\n});\n\nexport default OnlineBill;\n","import { useEffect, useState, useRef } from \"react\";\nimport { view, autoEffect } from \"@risingstack/react-easy-state\";\nimport { Outlet, useParams, useNavigate, NavLink } from \"react-router-dom\";\n\nimport { devices } from \"../../stores/devices\";\n\nimport Button from \"../../parts/Button/Button\";\nimport MeasurementReportModal from \"./MeasurementReportModal\";\nimport MeasurementReportSuccessModal from \"./MeasurementReportSuccessModal\";\nimport OnlineBill from \"./OnlineBill\";\n\nimport { Box, Tooltip, Popper, ClickAwayListener } from \"@mui/material\";\n\nimport {\n MeasurementReportNavSC,\n IconCalendarSC,\n IconRocketSC,\n YearButtonSC,\n YearListSC,\n YearNavigationSC,\n YearMenuSC,\n YearMenuItemSC,\n} from \"./styled\";\nimport NoData from \"../../parts/PageMessage/NoData\";\n\nconst DeviceDetails = view(() => {\n const navigate = useNavigate();\n const { deviceId } = useParams();\n const { year } = useParams();\n const calendarRef = useRef(null);\n const [calendarOpen, setCalendarOpen] = useState(false);\n const [archiveYear, setArchiveYear] = useState(null);\n const [modalIsOpen, setModalIsOpen] = useState(false);\n const [modalSuccessIsOpen, setModalSuccessIsOpen] = useState(false);\n\n autoEffect(() => {\n devices.device = null;\n if (devices.allDevices?.length > 0) {\n devices.device = devices.allDevices.find(\n (dev) => dev.measuring_place_code === deviceId\n );\n if (devices.device && devices.yearlyBills?.length > 0) {\n if (!year) {\n let y0 = devices.yearlyBills[0].bills[0].reading_date.substring(0, 4);\n navigate(`/vodomjeri/${deviceId}/${y0}`);\n setCalendarOpen(false);\n setArchiveYear(null);\n } else {\n // set archive year\n devices.yearlyBills.findIndex((b, index) => {\n if (\n index > 1 &&\n b.bills[0]?.reading_date.substring(0, 4) === year\n ) {\n setArchiveYear(year);\n return true;\n }\n return false;\n });\n }\n }\n if (!devices.device) {\n navigate(\"/\");\n }\n }\n }, [deviceId]);\n\n useEffect(() => {\n return () => {\n devices.device = null;\n };\n // eslint-disable-next-line\n }, []);\n\n const handleClickCalendar = () => {\n setCalendarOpen((prev) => !prev);\n };\n\n const handlePickCalendarYear = (e, year) => {\n if (calendarRef.current?.contains(e.target)) {\n return;\n }\n setArchiveYear(year);\n setCalendarOpen(false);\n };\n\n return (\n <>\n {devices.device?.measuring_place_code === deviceId && (\n <>\n \n {devices.device.measurable ? (\n setModalIsOpen(true)}\n endIcon={}\n >\n Dostava očitanja\n \n ) : (\n \n \n }\n >\n Dostava očitanja\n \n \n \n )}\n \n {devices.yearlyBills?.length > 0 && (\n \n {devices.yearlyBills.length > 2 ? (\n setCalendarOpen(false)}>\n \n \n \n \n\n {calendarOpen && (\n \n \n \n {devices.yearlyBills.map((yb, index) => {\n let yearExtract =\n yb.bills[0].reading_date.substring(0, 4);\n if (index > 1) {\n return (\n \n handlePickCalendarYear(e, yearExtract)\n }\n component={NavLink}\n to={`/vodomjeri/${deviceId}/${yearExtract}`}\n key={yearExtract}\n >\n {yearExtract}.\n \n );\n } else {\n return null;\n }\n })}\n \n \n )}\n \n \n ) : (\n \n )}\n\n \n {devices.yearlyBills.map((yb, index) => {\n let yearExtract = yb.bills[0].reading_date.substring(0, 4);\n if (index < 2) {\n return (\n setArchiveYear(null)}\n selected={yearExtract === year}\n component={NavLink}\n to={`/vodomjeri/${deviceId}/${yearExtract}`}\n key={yearExtract}\n >\n {yearExtract}.\n \n );\n } else {\n return null;\n }\n })}\n {archiveYear && year && (\n \n {year}.\n \n )}\n \n \n )}\n {devices.device.id && (\n \n )}\n\n \n\n {/* Year Details */}\n \n\n \n\n {!devices.yearlyBills && (\n \n )}\n \n )}\n \n );\n});\n\nexport default DeviceDetails;\n","let months = [\n \"Siječanj\",\n \"Veljača\",\n \"Ožujak\",\n \"Travanj\",\n \"Svibanj\",\n \"Lipanj\",\n \"Srpanj\",\n \"Kolovoz\",\n \"Rujan\",\n \"Listopad\",\n \"Studeni\",\n \"Prosinac\",\n];\n\nexport const formatChartData = (data, year) => {\n let formatedData = [];\n\n for (let i = 0; i < 12; i++) {\n const month = data.find(\n (x) => parseInt(x.reading_date.substring(5, 7)) === i + 1\n );\n const isPresent = Boolean(month);\n const isBillIssued = isPresent && Boolean(month.bill_date);\n const amount =\n isPresent && isBillIssued ? parseFloat(month.bill_consumption) : null;\n let record = {\n name: months[i] + \" \" + year + \".\",\n amt: amount,\n ...(((!isPresent && !isBillIssued) || !amount) && { empty: true }),\n };\n formatedData.push(record);\n }\n\n let largestNumber = formatedData.reduce((a, b) =>\n a.amt > b.amt ? a : b\n ).amt;\n\n const formatedDataWithEmptyAmounts = formatedData.map((r) => {\n if (r.empty) {\n return { ...r, amt: largestNumber };\n }\n return r;\n });\n\n return largestNumber ? formatedDataWithEmptyAmounts : null;\n};\n\nexport const yAxisFormater = (number) => {\n if (number >= 1000000) {\n return (number / 1000000).toString().replace(\".\", \",\") + \"M\";\n } else if (number >= 1000) {\n return (number / 1000).toString().replace(\".\", \",\") + \"K\";\n } else {\n return number.toString().replace(\".\", \",\");\n }\n};\n","import { view } from \"@risingstack/react-easy-state\";\nimport NumberFormat from \"react-number-format\";\n\nconst Number = view(({ ...rest }) => {\n return (\n \n );\n});\n\nexport default Number;\n","import { useState, useEffect } from \"react\";\nimport { view } from \"@risingstack/react-easy-state\";\n\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\n\nimport { yAxisFormater } from \"./utils\";\n\nimport {\n BarChart,\n Bar,\n Cell,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n ResponsiveContainer,\n} from \"recharts\";\n\nimport Number from \"../../parts/Number/Number\";\n\nimport {\n TooltipWrapperSC,\n TooltipTitleSC,\n TooltipAmountSC,\n TooltipDateSC,\n} from \"./styled\";\n\nconst CustomTooltip = view(({ active, payload, label }) => {\n if (payload.length > 0 && !payload[0].payload?.empty) {\n return (\n \n Potrošnja\n \n \n \n m3\n \n \n {payload[0].payload?.name}\n \n \n );\n }\n return null;\n});\n\nconst Chart = view(({ data }) => {\n const [activeBarIndex, setActiveBarIndex] = useState();\n const [toolTipYPosition, setToolTipYPosition] = useState({});\n const [barWidth, setBarWidth] = useState();\n const matches1600Up = useMediaQuery(\"(min-width:1600px)\");\n\n useEffect(() => {\n const barCharts = document.querySelectorAll(\".recharts-bar-rectangle\");\n if (!barCharts || activeBarIndex === undefined) return;\n // Init tooltip values\n const barChart = barCharts[activeBarIndex];\n setToolTipYPosition(barChart.getBoundingClientRect().height);\n }, [activeBarIndex]);\n\n useEffect(() => {\n if (matches1600Up) {\n setBarWidth(20);\n } else {\n setBarWidth(16);\n }\n }, [matches1600Up]);\n\n return (\n \n {\n setActiveBarIndex(e.activeTooltipIndex);\n }}\n >\n \n \n \n \n \n \n \n matches1600Up ? name.slice(0, -6) : name.charAt(0)\n }\n height={36}\n tick={{\n dy: 16,\n stroke: \"#8B8A8D\",\n fontSize: 10,\n letterSpacing: \"1px\",\n fontFamily: \"PoppinsThin\",\n }}\n axisLine={false}\n tickLine={false}\n />\n \n {/* } /> */}\n \n }\n position={{ y: 200 - toolTipYPosition }}\n offset={-60}\n allowEscapeViewBox={{ x: true, y: true }}\n />\n \n {data?.map((month, index) => (\n \n ))}\n \n \n \n );\n});\n\nexport default Chart;\n","import { useEffect, useState } from \"react\";\nimport { view, autoEffect } from \"@risingstack/react-easy-state\";\nimport { Link, useParams, useNavigate } from \"react-router-dom\";\nimport { format } from \"date-fns\";\n\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\n\nimport { devices } from \"../../stores/devices\";\nimport { formatChartData } from \"./utils\";\n\nimport Chart from \"./Chart\";\nimport Number from \"../../parts/Number/Number\";\n\nimport {\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n} from \"@mui/material\";\nimport {\n BillsSectionSC,\n ChartInfoSC,\n ChartInfoTextSC,\n ChartSectionSC,\n GraphicSectionSC,\n IconCancelSC,\n IconChartInfoCircleSC,\n IconCheckSC,\n IconClockSC,\n IconHomeSC,\n IconLeaderboardSC,\n IconPendingActionsSC,\n StatisticCardSC,\n StatisticSectionSC,\n} from \"./styled\";\n\nconst YearDetails = view(() => {\n const navigate = useNavigate();\n const { deviceId } = useParams();\n const { year } = useParams();\n const [chartData, setChartData] = useState([]);\n const [tableData, setTableData] = useState([]);\n const matches600Up = useMediaQuery(\"(min-width:600px)\");\n const matches501Up = useMediaQuery(\"(min-width:501px)\");\n\n autoEffect(() => {\n devices.yearData = null;\n if (devices.device && devices.yearlyBills?.length > 0) {\n devices.yearData = devices.yearlyBills.find(\n (y) => y.bills[0].reading_date.substring(0, 4) === year\n );\n }\n if (!devices.yearData && devices.device) {\n navigate(`/vodomjeri/${deviceId}`);\n }\n if (devices.yearData && devices.device) {\n setChartData(formatChartData(devices.yearData.bills, year));\n setTableData(devices.yearData.bills);\n }\n }, [year, deviceId]);\n\n useEffect(() => {\n return () => {\n devices.yearData = null;\n };\n }, []);\n\n const handleRowClick = (item) => {\n if (!matches501Up && item.bill_state !== \"pending\") {\n navigate(`/racuni/${item.id}`, { redirectId: item.id });\n }\n };\n\n return (\n <>\n {year && (\n <>\n \n \n \n \n \n Prikazana potrošnja je isključivo informativnog karaktera i\n može se razlikovati od obračunate potrošnje.\n \n \n {chartData?.length > 0 && }\n \n \n
\n \n \n

Prosječna potrošnja

\n
\n

\n \n \n m3\n \n

\n
\n
\n \n \n

Prosječna dnevna potrošnja

\n
\n

\n \n \n m3\n \n

\n
\n
\n
\n \n \n

Stanje vodomjera kod zadnjeg očitanja

\n
\n

\n \n \n m3\n \n

\n
\n
\n
\n
\n \n

Računi

\n {tableData?.length > 0 && (\n \n \n \n \n \n Datum očitanja\n Stanje brojila\n {matches600Up && Datum dospijeća}\n Potrošnja\n Iznos EUR\n Iznos HRK\n {matches501Up && }\n \n \n \n {tableData\n .map((item) => (\n handleRowClick(item)}\n sx={\n item.bill_state !== \"pending\" && !matches501Up\n ? {\n cursor: \"pointer\",\n }\n : null\n }\n >\n \n {item.bill_state === \"paid\" ? (\n \n ) : item.bill_state === \"unpaid\" ? (\n \n ) : (\n \n )}\n \n \n {item.reading_date &&\n format(\n new Date(item.reading_date),\n matches501Up ? \"d.M.yyyy.\" : \"d.M.\"\n )}\n \n \n \n \n {matches600Up && (\n \n {item.bill_date &&\n format(new Date(item.bill_date), \"d.M.yyyy.\")}\n \n )}\n \n \n \n \n \n \n \n \n \n {matches501Up && (\n \n {item.bill_date && (\n \n Detalji\n \n )}\n \n )}\n \n ))\n .reverse()}\n \n
\n
\n )}\n
\n \n )}\n \n );\n});\n\nexport default YearDetails;\n","import { store } from \"@risingstack/react-easy-state\";\nimport { API_ENDPOINT } from \"../config/constants.js\";\nimport { authHeader } from \"./auth\";\n\nexport const payment = store({\n billIdLoading: null,\n isLoadingPayAll: false,\n paymentUrl: null,\n isLoadingConfirm: false,\n isConfirmSuccessfull: false,\n isConfirmError: false,\n\n async pay(amount, idArray, url) {\n try {\n const response = await fetch(`${API_ENDPOINT}/system/make-payment`, {\n method: \"POST\",\n headers: {\n \"Content-type\": \"application/json\",\n Accept: \"application/json\",\n ...authHeader(),\n },\n body: JSON.stringify({ amount: amount, bill_id: idArray, url: url }),\n });\n\n if (!response.ok) {\n throw Error(response.statusText);\n }\n\n const responseJson = await response.json();\n\n payment.paymentUrl = responseJson.payment_url;\n } catch (error) {\n console.log(error);\n }\n },\n\n async confirmPayment(key, id) {\n payment.isLoadingConfirm = true;\n\n try {\n const response = await fetch(`${API_ENDPOINT}/system/confirm-payment?key=${key}&bill=${id}`, {\n method: \"PATCH\",\n headers: {\n \"Content-type\": \"application/json\",\n Accept: \"application/json\",\n ...authHeader(),\n },\n });\n\n if (!response.ok) {\n throw Error(response.statusText);\n }\n\n await response.json();\n\n payment.isConfirmSuccessfull = true;\n payment.isLoadingConfirm = false;\n } catch (error) {\n payment.isConfirmError = true;\n payment.isLoadingConfirm = false;\n console.log(error);\n }\n },\n});\n","let months = [\n { key: \"01\", value: \"siječanj\" },\n { key: \"02\", value: \"veljača\" },\n { key: \"03\", value: \"ožujak\" },\n { key: \"04\", value: \"travanj\" },\n { key: \"05\", value: \"svibanj\" },\n { key: \"06\", value: \"lipanj\" },\n { key: \"07\", value: \"srpanj\" },\n { key: \"08\", value: \"kolovoz\" },\n { key: \"09\", value: \"rujan\" },\n { key: \"10\", value: \"listopad\" },\n { key: \"11\", value: \"studeni\" },\n { key: \"12\", value: \"prosinac\" },\n];\n\nexport const fromatBillDateString = (data) => {\n const month = data.reading_date.substring(5, 7);\n const year = data.reading_date.substring(0, 4);\n\n const monthObject = months.find((m) => m.key === month);\n return `${monthObject.value} ${year}.`;\n};\n","export default __webpack_public_path__ + \"static/media/rule_icon.52efb5ed.svg\";","export default __webpack_public_path__ + \"static/media/download_icon.c2613e1c.svg\";","export default __webpack_public_path__ + \"static/media/payment_icon.76e0a7d7.svg\";","export default __webpack_public_path__ + \"static/media/success_pay.dfd53b44.svg\";","import styled from \"styled-components\";\n\nimport { Box, Button, Icon, Paper } from \"@mui/material\";\n\nimport RuleIconSvg from \"../../assets/img/rule_icon.svg\";\nimport DownloadIconSvg from \"../../assets/img/download_icon.svg\";\nimport PaymentIconSvg from \"../../assets/img/payment_icon.svg\";\nimport ArrowBackSvg from \"../../assets/img/arrow_back_icon.svg\";\nimport PaySuccessSvg from \"../../assets/img/success_pay.svg\";\n\n// Bills\n// Bill Details\n\n//\n//\n// ---------------------------------------------------------------\n// --------------------------- Bills -----------------------------\n// ---------------------------------------------------------------\nexport const PageWrapperSC = styled(Box)`\n display: flex;\n width: 100%;\n height: 100%;\n`;\n\nexport const LeftPageSideSC = styled(Box)`\n width: 392px;\n height: calc(100% - 296px);\n\n @media (max-width: 1024px) {\n height: calc(100% - 360px);\n margin-top: 64px;\n }\n\n @media (max-width: 500px) {\n height: calc(100% - 296px);\n margin-top: 0px;\n width: 100%;\n }\n`;\n\nexport const TitleSC = styled.h1`\n font-family: ${({ theme }) => theme.fonts.h600};\n color: ${({ theme }) => theme.palette.primary800};\n font-size: 32px;\n line-height: 40px;\n letter-spacing: 0.56px;\n margin: 40px 0;\n padding-left: 24px;\n`;\n\nexport const BillListSettingsSC = styled(Box)`\n top: 120px;\n width: 100%;\n height: 176px;\n padding: 0 24px;\n`;\n\nexport const TopPartSC = styled(Box)`\n display: flex;\n justify-content: space-between;\n align-items: start;\n\n button {\n margin-top: 20px;\n }\n`;\n\nexport const IconRuleSC = styled(Icon)`\n &.MuiIcon-root {\n width: 20px;\n height: 15px;\n -webkit-mask: url(${RuleIconSvg}) no-repeat center;\n mask: url(${RuleIconSvg}) no-repeat center;\n background-color: ${({ theme }) => theme.palette.neutral100};\n }\n`;\n\nexport const TotalDebtSC = styled(Box)`\n display: flex;\n flex-direction: column;\n justify-content: center;\n\n & > p {\n text-align: right;\n margin-bottom: 4px;\n font-family: ${({ theme }) => theme.fonts.h700};\n color: ${({ theme }) => theme.palette.primary900};\n font-size: 10px;\n line-height: 16px;\n }\n\n div {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n\n p.hrk {\n display: flex;\n align-items: end;\n\n .hrk-num {\n font-family: ${({ theme }) => theme.fonts.h700};\n color: ${({ theme }) => theme.palette.primary500};\n font-size: 28px;\n line-height: 36px;\n }\n\n .unpaid {\n color: ${({ theme }) => theme.palette.danger500};\n }\n\n span {\n line-height: 24px;\n font-size: 12px;\n font-family: ${({ theme }) => theme.fonts.h700};\n color: ${({ theme }) => theme.palette.primary900};\n margin-left: 4px;\n }\n }\n\n p.eur {\n display: flex;\n align-items: end;\n margin-right: -6px;\n\n .eur-num {\n font-family: ${({ theme }) => theme.fonts.h700};\n color: #8b8a8d;\n font-size: 18px;\n line-height: 24px;\n }\n\n span {\n font-family: ${({ theme }) => theme.fonts.h700};\n font-size: 10px;\n line-height: 19px;\n color: #8b8a8d;\n margin-left: 4px;\n }\n\n span.bracket {\n font-size: 18px;\n line-height: 24px;\n color: #8b8a8d;\n font-family: ${({ theme }) => theme.fonts.h500};\n }\n }\n }\n`;\n\nexport const BottomPartSC = styled(Box)`\n display: flex;\n justify-content: space-between;\n margin-top: 36px;\n`;\n\nexport const FilterButtonSC = styled(Button)`\n &.MuiButton-root {\n background-color: ${({ theme, selected }) =>\n selected ? theme.palette.primary500 : theme.palette.primary50};\n border-radius: 50px;\n border: ${({ theme, selected }) =>\n selected\n ? `1px solid ${theme.palette.primary500}`\n : `1px solid ${theme.palette.primary100}`};\n padding: 12px 20px;\n color: ${({ theme, selected }) =>\n selected ? theme.palette.neutral100 : theme.palette.primary500};\n font-family: ${({ theme }) => theme.fonts.b700};\n font-size: 10px;\n line-height: 16px;\n text-transform: none;\n box-shadow: ${({ selected }) =>\n selected ? \"none\" : \"0px 4px 8px 1px rgba(0, 186, 255, 0.1)\"};\n &:hover {\n border: ${({ theme }) => `1px solid ${theme.palette.primary500}`};\n background-color: ${({ theme }) => theme.palette.primary500};\n color: ${({ theme }) => theme.palette.primary50};\n box-shadow: none;\n }\n }\n`;\n\nexport const BillListSC = styled(Box)`\n margin: 0;\n padding-left: 24px;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n overflow: auto;\n\n &::-webkit-scrollbar {\n width: 4px;\n }\n\n &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n\n &::-webkit-scrollbar-thumb {\n background-color: #e5e4e8;\n border: none;\n }\n\n // Firefox\n scrollbar-color: #e5e4e8 transparent;\n`;\n\nexport const RightPageSideSC = styled(Box)`\n flex: 1;\n overflow: auto;\n padding: 0 24px;\n`;\n\nexport const RightPageSideContainerSC = styled(Box)`\n max-width: 1200px;\n margin: auto;\n`;\n\n// Bill Card\nexport const BillCardSC = styled(Paper)`\n margin-bottom: 20px;\n &.MuiPaper-root {\n cursor: pointer;\n padding: 20px 32px;\n background-color: ${({ theme }) => theme.palette.neutral0};\n border: 1px solid #eeeff9;\n border-radius: 8px;\n box-shadow: 0px 8px 24px -8px rgba(34, 3, 101, 0.1);\n width: 344px;\n\n @media (max-width: 500px) {\n width: calc(100vw - 48px);\n }\n }\n\n &.active {\n &.MuiPaper-root {\n user-select: text;\n -webkit-user-drag: none;\n background-color: ${({ theme }) => theme.palette.primary50};\n }\n\n header h3 {\n color: ${({ theme }) => theme.palette.primary500};\n }\n }\n\n header {\n margin-bottom: 24px;\n div {\n display: flex;\n justify-content: space-between;\n margin-bottom: 2px;\n }\n h3 {\n font-family: ${({ theme }) => theme.fonts.b700};\n color: ${({ theme }) => theme.palette.primary800};\n font-size: 16px;\n line-height: 24px;\n letter-spacing: 0.32px;\n }\n }\n`;\n\nexport const BodySC = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\nexport const DateAndButtonSC = styled.div`\n p {\n font-family: ${({ theme }) => theme.fonts.h500};\n color: #333;\n font-size: 10px;\n line-height: 16px;\n margin-bottom: 8px;\n text-align: center;\n }\n`;\n\nexport const TotalPriceSC = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n font-family: ${({ theme }) => theme.fonts.h700};\n color: ${({ theme }) => theme.palette.primary900};\n font-size: 10px;\n line-height: 16px;\n\n & > p {\n text-align: right;\n margin-bottom: 4px;\n }\n\n div {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n\n p.hrk {\n .hrk-num {\n color: ${({ theme }) => theme.palette.primary500};\n font-size: 18px;\n line-height: 20px;\n margin-right: 4px;\n }\n\n .unpaid {\n color: ${({ theme }) => theme.palette.danger500};\n }\n\n span {\n font-size: 12px;\n line-height: 20px;\n color: ${({ theme }) => theme.palette.primary900};\n }\n }\n\n p.eur {\n margin-bottom: 0;\n margin-right: -4px;\n .eur-num {\n color: #8b8a8d;\n font-size: 12px;\n line-height: 20px;\n margin-right: 4px;\n }\n\n span {\n font-size: 10px;\n line-height: 20px;\n color: #8b8a8d;\n }\n\n span.bracket {\n font-size: 12px;\n line-height: 20px;\n color: #8b8a8d;\n margin: 0 4px;\n\n &:last-of-type {\n margin-right: 0;\n }\n }\n }\n }\n`;\n\nexport const ButtonBillsBackSC = styled.button`\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: transparent;\n border: none;\n outline: none;\n font-family: ${({ theme }) => theme.fonts.b400};\n color: ${({ theme }) => theme.palette.primary900};\n font-size: 18px;\n line-height: 24px;\n padding: 0;\n margin: 48px 0 8px;\n cursor: pointer;\n`;\n\nexport const ArrowBackSC = styled(Icon)`\n margin-right: 12px;\n &.MuiIcon-root {\n width: 16px;\n height: 16px;\n -webkit-mask: url(${ArrowBackSvg}) no-repeat center;\n mask: url(${ArrowBackSvg}) no-repeat center;\n background-color: ${({ theme }) => theme.palette.primary900};\n }\n`;\n\n//\n//\n// ---------------------------------------------------------------\n// ---------------------- Bill Details ---------------------------\n// ---------------------------------------------------------------\n\nexport const TitleBillSC = styled.h2`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n font-size: 28px;\n line-height: 36px;\n letter-spacing: 0.56px;\n color: ${({ theme }) => theme.palette.primary900};\n margin-top: 120px;\n margin-bottom: 40px;\n\n @media (max-width: 1024px) {\n margin-top: 40px;\n }\n`;\n\nexport const OnlineBillBoxSC = styled(Box)`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-bottom: 16px;\n border-bottom: 1px solid #e5e4e8;\n\n h3 {\n font-family: ${({ theme }) => theme.fonts.b700};\n display: inline-block;\n font-size: 12px;\n line-height: 24px;\n color: #313132;\n cursor: pointer;\n }\n\n p {\n font-family: ${({ theme }) => theme.fonts.b400};\n font-size: 14px;\n line-height: 24px;\n color: #313132;\n }\n`;\n\nexport const AddressSectionSC = styled(Box)`\n h3 {\n font-family: ${({ theme }) => theme.fonts.b700};\n font-size: 12px;\n line-height: 24px;\n color: #313132;\n }\n\n p {\n font-family: ${({ theme }) => theme.fonts.b400};\n font-size: 14px;\n line-height: 24px;\n color: #313132;\n }\n`;\n\nexport const AddressSC = styled(Box)`\n display: flex;\n margin: 15px 0;\n\n & > div {\n flex: 1;\n }\n`;\n\nexport const SummarySC = styled(Box)`\n background-color: ${({ theme }) => theme.palette.neutral100};\n width: 100%;\n display: flex;\n align-items: start;\n justify-content: space-between;\n padding: 0 16px;\n border-radius: 8px;\n margin: 40px 0 0 0;\n padding: 24px 16px 16px;\n`;\n\nexport const ConversionSC = styled(Box)`\n display: flex;\n justify-content: flex-end;\n align-items: center;\n padding: 8px 16px;\n margin-bottom: 40px;\n`;\n\nexport const ConversionTextSC = styled.p`\n color: #8b8a8d;\n font-size: 12px;\n line-height: 20px;\n`;\n\nexport const SummaryTextLightSC = styled.p`\n font-family: ${({ theme }) => theme.fonts.h400};\n font-size: 12px;\n line-height: 16px;\n color: #333333;\n margin-bottom: 8px;\n text-align: ${({ align }) => (align === \"right\" ? \"right\" : \"left\")};\n`;\n\nexport const SummaryDateSC = styled.p`\n font-family: ${({ theme }) => theme.fonts.h700};\n font-size: 12px;\n line-height: 16px;\n color: ${({ theme }) => theme.palette.primary900};\n`;\n\nexport const SummaryConsumptionSC = styled.p`\n font-family: ${({ theme }) => theme.fonts.h700};\n color: ${({ theme }) => theme.palette.primary900};\n\n .consumption {\n font-size: 18px;\n line-height: 20px;\n }\n\n span {\n font-size: 12px;\n line-height: 16px;\n\n sup {\n font-size: 7px;\n }\n }\n`;\n\nexport const SummaryTotalSC = styled(Box)`\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n font-family: ${({ theme }) => theme.fonts.h700};\n font-size: 10px;\n line-height: 16px;\n\n p.hrk {\n .hrk-num {\n color: ${({ theme }) => theme.palette.primary500};\n font-size: 18px;\n line-height: 20px;\n margin-right: 4px;\n }\n\n .unpaid {\n color: ${({ theme }) => theme.palette.danger500};\n }\n\n span {\n font-size: 12px;\n line-height: 20px;\n color: ${({ theme }) => theme.palette.primary900};\n }\n }\n\n p.eur {\n margin-bottom: 0;\n margin-right: -4px;\n .eur-num {\n color: #8b8a8d;\n font-size: 12px;\n line-height: 20px;\n margin-right: 4px;\n }\n\n span {\n font-size: 10px;\n line-height: 20px;\n color: #8b8a8d;\n }\n\n span.bracket {\n font-size: 12px;\n line-height: 20px;\n color: #8b8a8d;\n margin: 0 4px;\n\n &:last-of-type {\n margin-right: 0;\n }\n }\n }\n`;\n\nexport const ActionSectionSC = styled(Box)`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n margin-bottom: 32px;\n`;\n\nexport const IconDownloadSC = styled(Icon)`\n &.MuiIcon-root {\n width: 14px;\n height: 17px;\n -webkit-mask: url(${DownloadIconSvg}) no-repeat center;\n mask: url(${DownloadIconSvg}) no-repeat center;\n background-color: ${({ theme }) => theme.palette.primary900};\n }\n`;\n\nexport const IconPaymentSC = styled(Icon)`\n &.MuiIcon-root {\n width: 20px;\n height: 16px;\n -webkit-mask: url(${PaymentIconSvg}) no-repeat center;\n mask: url(${PaymentIconSvg}) no-repeat center;\n background-color: ${({ theme }) => theme.palette.neutral100};\n }\n`;\n\nexport const DownloadBillButtonSC = styled(Button)`\n &.MuiButton-root {\n background-color: transparent;\n border-radius: 53px;\n height: 40px;\n width: 146px;\n color: ${({ theme }) => theme.palette.primary900};\n font-family: ${({ theme }) => theme.fonts.b700};\n font-size: 12px;\n letter-spacing: 0.12px;\n text-transform: none;\n margin-right: 22px;\n\n &:hover {\n background-color: transparent;\n }\n }\n`;\n\n//\n//\n// ---------------------------------------------------------------\n// ---------------------- Bill Payment ---------------------------\n// ---------------------------------------------------------------\n\nexport const PaymentWrapperSC = styled(Box)`\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n width: 100%;\n`;\n\nexport const PaymentInnerWrapperSC = styled(Box)`\n margin-top: 120px;\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const PaymentTitle = styled.h2`\n font-size: 24px;\n line-height: 48px;\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n color: ${({ theme }) => theme.palette.primary800};\n text-align: center;\n margin-bottom: 40px;\n`;\n\nexport const PaymentText = styled.p`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-size: 14px;\n line-height: 24px;\n color: ${({ theme }) => theme.palette.primary800};\n`;\n\nexport const IconPaySuccessSC = styled(Icon)`\n margin-bottom: 40px;\n &.MuiIcon-root {\n width: 258px;\n height: 158px;\n background: url(${PaySuccessSvg}) no-repeat center;\n background-color: transparent;\n }\n`;\n","import { useState, useEffect, useRef } from \"react\";\nimport { view, autoEffect } from \"@risingstack/react-easy-state\";\nimport {\n Outlet,\n NavLink,\n useNavigate,\n useLocation,\n useParams,\n} from \"react-router-dom\";\nimport { format, isBefore } from \"date-fns\";\n\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\n\nimport { bills } from \"../../stores/bills\";\nimport { payment } from \"../../stores/payment\";\nimport { fromatBillDateString } from \"./utils\";\n\nimport Button from \"../../parts/Button/Button\";\nimport Spinner from \"../../parts/Spinner/Spinner\";\nimport NoData from \"../../parts/PageMessage/NoData\";\nimport Number from \"../../parts/Number/Number\";\nimport Drawer from \"../../parts/Drawer/Drawer\";\n\nimport { CircularProgress } from \"@mui/material\";\n\nimport {\n TitleSC,\n BillListSettingsSC,\n BillListSC,\n BillCardSC,\n BottomPartSC,\n DateAndButtonSC,\n FilterButtonSC,\n LeftPageSideSC,\n PageWrapperSC,\n RightPageSideSC,\n RightPageSideContainerSC,\n IconRuleSC,\n TopPartSC,\n TotalDebtSC,\n BodySC,\n TotalPriceSC,\n ButtonBillsBackSC,\n ArrowBackSC,\n} from \"./styled\";\nimport { ColumnSpinnerSC } from \"../../parts/styled\";\n\nconst Bills = view(() => {\n const navigate = useNavigate();\n const location = useLocation();\n const listRef = useRef(null);\n const { billId } = useParams();\n const [shouldNavigateForward, setShouldNavigateForward] = useState(true);\n const [firstRender, setFirstRender] = useState(true);\n const [selectedFilter, setSelectedFilter] = useState(\"all\");\n const [totalKunaDebt, setTotalKunaDebt] = useState(0);\n const [totalEuroDebt, setTotalEuroDebt] = useState(0);\n const [drawerOpen, setDrawerOpen] = useState(true);\n const matches1024Up = useMediaQuery(\"(min-width:1024px)\");\n const matches501Up = useMediaQuery(\"(min-width:501px)\");\n\n autoEffect(async () => {\n if (!bills.allBills && firstRender) {\n await bills.getBills();\n if (bills.allBills) {\n bills.allBills = bills.allBills.filter((b) => b.bill_date);\n const billsFiltered = bills.allBills.filter((b) => b.bill_date);\n bills.allTransformedBills = sortByDate(Array.from(billsFiltered));\n }\n }\n }, [location]);\n\n autoEffect(() => {\n if (\n matches501Up &&\n bills.allTransformedBills?.length > 0 &&\n !bills.bill &&\n location.pathname === \"/racuni\" &&\n shouldNavigateForward\n ) {\n const firstBillId = bills.allTransformedBills[0].id;\n navigate(`/racuni/${firstBillId}`);\n }\n }, [matches501Up, shouldNavigateForward]);\n\n autoEffect(() => {\n if (bills.bill && shouldNavigateForward) {\n setShouldNavigateForward(false);\n }\n });\n\n autoEffect(() => {\n if (\n bills.allTransformedBills?.length > 0 &&\n location.state?.redirectId &&\n listRef.current\n ) {\n setDrawerOpen(false);\n navigate(`/racuni/${location.state.redirectId}`, { replace: true });\n const redirectIndex = bills.allTransformedBills.findIndex(\n (el) => el.id === parseInt(billId)\n );\n const pixelsOffset = redirectIndex * 199;\n listRef.current?.scroll({ top: pixelsOffset, behavior: \"smooth\" });\n }\n }, [location]);\n\n autoEffect(() => {\n if (bills.allBills?.length > 0) {\n const kunaDebt = bills.allBills\n .filter((b) => b.bill_state === \"unpaid\")\n .map((b) => parseFloat(b.bill_amount_hrk))\n .reduce((prev, next) => prev + next, 0);\n const euroDebt = bills.allBills\n .filter((b) => b.bill_state === \"unpaid\")\n .map((b) => parseFloat(b.bill_amount_euro))\n .reduce((prev, next) => prev + next, 0);\n setTotalKunaDebt(kunaDebt);\n setTotalEuroDebt(euroDebt);\n }\n }, [bills.allBills]);\n\n useEffect(() => {\n setFirstRender(false);\n return () => {\n bills.allBills = null;\n };\n }, []);\n\n const sortByDate = (array) => {\n return array.sort(\n (a, b) => new Date(b.reading_date) - new Date(a.reading_date)\n );\n };\n\n const toggleDrawer = () => {\n setDrawerOpen(!drawerOpen);\n };\n\n const handleBillsBackLink = () => {\n bills.bill = null;\n navigate(\"/racuni\");\n };\n\n const handleFilterAll = () => {\n const billsFiltered = bills.allBills.filter((b) => b.bill_date);\n bills.allTransformedBills = sortByDate(Array.from(billsFiltered));\n setSelectedFilter(\"all\");\n };\n\n const handleFilterUnpaid = () => {\n const billsFiltered = bills.allBills.filter(\n (b) => b.bill_state === \"unpaid\"\n );\n bills.allTransformedBills = sortByDate(Array.from(billsFiltered));\n setSelectedFilter(\"unpaid\");\n };\n\n const handleFilterPaid = () => {\n const billsFiltered = bills.allBills.filter((b) => b.bill_state === \"paid\");\n bills.allTransformedBills = sortByDate(Array.from(billsFiltered));\n setSelectedFilter(\"paid\");\n };\n\n const handleClickCard = (e, billState) => {\n if (\n (!e.target.classList.contains(\"pay-button\") &&\n !e.target.parentNode.classList.contains(\"pay-button\")) ||\n billState !== \"unpaid\"\n ) {\n setDrawerOpen(false);\n }\n };\n\n const handlePayButton = async (amount, id) => {\n if (!payment.billIdLoading && !payment.isLoadingPayAll) {\n payment.billIdLoading = id;\n await payment.pay(parseFloat(amount), [id], window.location.origin);\n payment.billIdLoading = null;\n }\n if (payment.paymentUrl) {\n window.location = payment.paymentUrl;\n }\n };\n\n const handlePayAllButton = async () => {\n if (!payment.isLoadingPayAll) {\n payment.isLoadingPayAll = true;\n const unpaidBills = bills.allBills.filter(\n (b) => b.bill_state === \"unpaid\"\n );\n await payment.pay(\n totalEuroDebt,\n unpaidBills.map((b) => parseFloat(b.id)),\n window.location.origin\n );\n payment.isLoadingPayAll = false;\n }\n if (payment.paymentUrl) {\n window.location = payment.paymentUrl;\n }\n };\n\n return (\n \n \n {(!location.pathname.startsWith(\"/racuni/\") ||\n matches501Up ||\n matches1024Up) && (\n \n Računi\n {bills.isLoadingGet ? (\n \n \n \n ) : bills.allBills?.length === 0 ? (\n \n ) : bills.allBills?.length > 0 ? (\n <>\n \n \n }\n onClick={handlePayAllButton}\n disabled={totalKunaDebt === 0}\n >\n \n {payment.isLoadingPayAll ? (\n \n ) : (\n \"Plati sve\"\n )}\n \n \n \n

Ukupan dug

\n
\n

\n \n EUR\n

\n
\n
\n
\n \n \n Svi\n \n \n Platiti\n \n \n Plaćeni\n \n \n
\n \n {bills.allTransformedBills?.map((bill) => {\n return (\n handleClickCard(e, bill.bill_state)}\n >\n
\n
\n

Mjesto potrošnje

\n

{bill.Device.measuring_place_code}

\n
\n
\n

Račun

\n

{fromatBillDateString(bill)}

\n
\n
\n \n \n

\n {format(new Date(bill.bill_date), \"d.M.yyyy.\")}\n

\n \n handlePayButton(bill.bill_amount_euro, bill.id)\n }\n >\n \n {bill.bill_state === \"unpaid\" &&\n (payment.billIdLoading === bill.id ||\n payment.isLoadingPayAll) ? (\n \n ) : (\n \"Plati\"\n )}\n \n \n
\n \n

Ukupno

\n
\n {isBefore(\n new Date(bill.bill_date),\n new Date(2023, 1, 1)\n ) ? (\n <>\n

\n \n HRK\n

\n

\n (\n \n EUR\n )\n

\n \n ) : (\n <>\n

\n \n EUR\n

\n

\n (\n \n HRK\n )\n

\n \n )}\n
\n
\n
\n \n );\n })}\n
\n \n ) : null}\n
\n )}\n \n {(location.pathname.startsWith(\"/racuni/\") || matches501Up) && (\n \n \n {matches501Up && !matches1024Up && (\n \n \n Računi\n \n )}\n {!matches501Up && (\n \n \n Računi\n \n )}\n \n \n \n )}\n
\n );\n});\n\nexport default Bills;\n","import { view } from \"@risingstack/react-easy-state\";\n\nimport { devices } from \"../../stores/devices\";\n\nimport Toggler from \"../../parts/Toggler/Toggler\";\n\nimport { OnlineBillBoxSC } from \"./styled\";\nimport { bills } from \"../../stores/bills\";\n\nconst OnlineBill = view(() => {\n const handleChangeToggler = async () => {\n await devices.updateDevice(bills.bill.Device.id, !bills.bill.Device.e_bill);\n if (devices.isUpdateSuccessfull) {\n bills.allBills\n .filter((b) => b.Device.id === bills.bill.Device.id)\n .forEach((b) => (b.Device.e_bill = !bills.bill.Device.e_bill));\n }\n devices.isUpdateSuccessfull = false;\n };\n\n return (\n <>\n \n
\n

Online račun

\n

\n {bills.bill?.Device.e_bill\n ? \"Hvala Vam što brinete za okoliš!\"\n : \"Aktivirajte opciju online dostave računa\"}\n

\n
\n
\n \n
\n
\n \n );\n});\n\nexport default OnlineBill;\n","import { useEffect } from \"react\";\nimport { view, autoEffect } from \"@risingstack/react-easy-state\";\nimport { useParams, useNavigate } from \"react-router-dom\";\nimport { format, isBefore } from \"date-fns\";\n\nimport { bills } from \"../../stores/bills\";\nimport { payment } from \"../../stores/payment\";\n\nimport Button from \"../../parts/Button/Button\";\nimport OnlineBill from \"./OnlineBill\";\nimport Number from \"../../parts/Number/Number\";\n\nimport { Tooltip, CircularProgress } from \"@mui/material\";\nimport {\n AddressSC,\n AddressSectionSC,\n ActionSectionSC,\n IconPaymentSC,\n IconDownloadSC,\n SummarySC,\n SummaryConsumptionSC,\n SummaryDateSC,\n SummaryTextLightSC,\n SummaryTotalSC,\n TitleBillSC,\n ConversionSC,\n ConversionTextSC,\n} from \"./styled\";\n\nconst BillDetails = view(() => {\n const navigate = useNavigate();\n const { billId } = useParams();\n\n autoEffect(async () => {\n bills.bill = null;\n if (bills.allBills?.length > 0) {\n bills.bill = bills.allBills.find((b) => b.id === parseInt(billId));\n if (!bills.bill) {\n navigate(\"/racuni\");\n }\n }\n }, [billId]);\n\n useEffect(() => {\n return () => {\n bills.bill = null;\n };\n }, []);\n\n const handlePayButton = async (amount, id) => {\n if (!payment.billIdLoading && !payment.isLoadingPayAll) {\n payment.billIdLoading = id;\n await payment.pay(parseFloat(amount), [id], window.location.origin);\n payment.billIdLoading = null;\n }\n if (payment.paymentUrl) {\n window.location = payment.paymentUrl;\n }\n };\n\n const handleDownloadPdf = () => {\n if (bills?.bill?.erp_bill_id) {\n bills.downloadPDF(bills.bill.erp_bill_id);\n }\n };\n\n return (\n <>\n {bills.bill?.id && (\n <>\n Detalji računa\n\n \n\n \n \n
\n

Adresa mjesta potrošnje

\n

\n {bills.bill.Device.Street.name +\n \" \" +\n bills.bill.Device.street_number}\n

\n

\n {bills.bill.Device.City &&\n `${bills.bill.Device.City.postal_code} ${bills.bill.Device.City.name}`}\n

\n
\n
\n

Adresa dostave računa

\n {bills.bill.Device.e_bill ? (\n <>\n

Račun se dostavlja elektronski.

\n \n ) : (\n <>\n

\n {bills.bill.Device.Street.name +\n \" \" +\n bills.bill.Device.street_number}\n

\n

\n {bills.bill.Device.City &&\n `${bills.bill.Device.City.postal_code} ${bills.bill.Device.City.name}`}\n

\n \n )}\n
\n
\n
\n

Broj mjesta potrošnje

\n

{bills.bill.Device.measuring_place_code}

\n
\n
\n \n
\n Datum dospijeća\n \n {format(new Date(bills.bill.bill_date), \"d.M.yyyy.\")}\n \n
\n
\n Potrošnja\n \n {\" \"}\n \n m3\n \n \n
\n
\n Ukupno\n \n {isBefore(\n new Date(bills.bill.bill_date),\n new Date(2023, 1, 1)\n ) ? (\n <>\n

\n \n HRK\n

\n

\n (\n \n EUR\n )\n

\n \n ) : (\n <>\n

\n \n EUR\n

\n

\n (\n \n HRK\n )\n

\n \n )}\n
\n
\n
\n \n *1 EUR = 7,5345 HRK\n \n \n }\n sx={{ marginRight: \"20px\" }}\n onClick={handleDownloadPdf}\n disabled={bills.isLoadingPDF}\n >\n Preuzmi račun\n \n {bills.bill.bill_state === \"unpaid\" ? (\n }\n onClick={() =>\n handlePayButton(bills.bill.bill_amount_euro, bills.bill.id)\n }\n >\n \n {bills.bill.bill_state === \"unpaid\" &&\n (payment.billIdLoading === bills.bill.id ||\n payment.isLoadingPayAll) ? (\n \n ) : (\n \"Plati račun\"\n )}\n \n \n ) : (\n \n \n }\n disabled={true}\n >\n Plati račun\n \n \n \n )}\n \n \n )}\n \n );\n});\n\nexport default BillDetails;\n","import { useEffect } from \"react\";\nimport { view } from \"@risingstack/react-easy-state\";\nimport { useNavigate } from \"react-router-dom\";\nimport {\n PaymentInnerWrapperSC,\n PaymentText,\n PaymentTitle,\n PaymentWrapperSC,\n} from \"./styled\";\n\nconst PayCancel = view(() => {\n const navigate = useNavigate();\n\n useEffect(() => {\n const timeout = setTimeout(() => {\n navigate(`/racuni`, { replace: true });\n }, 3000);\n\n return () => clearTimeout(timeout);\n }, [navigate]);\n\n return (\n \n \n Plačanje poništeno.\n Uskoro ćete biti preusmjereni na račune.\n \n \n );\n});\n\nexport default PayCancel;\n","export default __webpack_public_path__ + \"static/media/logo_full_2.c6399b21.svg\";","import styled from \"styled-components\";\n\nimport { Box, Icon } from \"@mui/material\";\n\nimport LogoFullSvg from \"../../assets/img/logo_full_2.svg\";\nimport InfoIconSvg from \"../../assets/img/info_icon.svg\";\nimport InfoCircleIconSvg from \"../../assets/img/info_circle_icon.svg\";\nimport ArrowBackIconSvg from \"../../assets/img/arrow_back_icon.svg\";\n\nexport const WrapperSC = styled(Box)`\n display: flex;\n height: 100%;\n\n @media (max-width: 1024px) {\n overflow-y: hidden;\n }\n`;\n\nexport const LeftPageSideSC = styled(Box)`\n background-color: ${({ theme }) => theme.palette.primary900};\n width: 392px;\n min-height: 100%;\n height: calc(100vh - 40px);\n overflow-y: auto;\n padding: 0 24px;\n\n @media (max-width: 1024px) {\n height: calc(100% - 40px);\n }\n\n @media (max-width: 800px) {\n width: 100%;\n }\n`;\n\nexport const TitlePrimarySC = styled.h1`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n font-size: 32px;\n line-height: 40px;\n letter-spacing: 0.56px;\n color: ${({ theme }) => theme.palette.primary50};\n margin: 40px 0;\n`;\n\nexport const LogoFullSC = styled(Icon)`\n margin: 3.5px 0 27.5px;\n &.MuiIcon-root {\n width: 160px;\n height: 90px;\n background: url(${LogoFullSvg}) no-repeat center;\n background-color: transparent;\n }\n`;\n\nexport const SubsectionSC = styled(Box)`\n margin-bottom: 40px;\n`;\n\nexport const SubtitleSC = styled.h3`\n font-family: ${({ theme }) => theme.fonts.b700};\n font-size: 12px;\n line-height: 24px;\n letter-spacing: 0.12px;\n color: ${({ theme }) => theme.palette.primary200};\n`;\n\nexport const ParagraphSC = styled.p`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-size: 14px;\n line-height: 24px;\n letter-spacing: 0.12px;\n color: ${({ theme, color }) =>\n color === \"black\" ? theme.palette.primary800 : theme.palette.primary50};\n\n a {\n color: ${({ theme }) => theme.palette.primary500};\n }\n\n strong {\n font-family: ${({ theme }) => theme.fonts.b700};\n }\n`;\n\nexport const RightPageSideSC = styled(Box)`\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n position: relative;\n padding: 24px;\n padding-right: 48px;\n\n div {\n max-width: 400px;\n }\n\n @media (max-width: 800px) {\n display: none;\n }\n`;\n\nexport const IconInfoLargeSC = styled(Icon)`\n position: absolute;\n top: 52px;\n right: 48px;\n\n &.MuiIcon-root {\n width: 102px;\n height: 120px;\n -webkit-mask: url(${InfoIconSvg}) no-repeat center;\n -webkit-mask-size: contain;\n mask: url(${InfoIconSvg}) no-repeat center;\n mask-size: contain;\n background-color: ${({ theme }) => theme.palette.primary100};\n\n @media (max-width: 1024px) {\n display: none;\n }\n }\n`;\n\nexport const RightContentSC = styled(Box)`\n height: fit-content;\n`;\n\nexport const TitleSecondarySC = styled.h2`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n font-size: 32px;\n line-height: 56px;\n letter-spacing: 0.56px;\n color: ${({ theme }) => theme.palette.primary800};\n margin-bottom: 40px;\n`;\n\nexport const InfoContentSC = styled(Box)`\n display: flex;\n`;\n\nexport const IconInfoCircleSC = styled(Icon)`\n margin-top: 2px;\n margin-left: 2px;\n &.MuiIcon-root {\n width: 20px;\n height: 20px;\n -webkit-mask: url(${InfoCircleIconSvg}) no-repeat center;\n mask: url(${InfoCircleIconSvg}) no-repeat center;\n background-color: ${({ theme }) => theme.palette.primary500};\n }\n`;\n\nexport const ButtonWrapperSC = styled(Box)`\n margin-top: 40px;\n display: flex;\n justify-content: end;\n`;\n\nexport const ButtonSmallScreenWrapperSC = styled(Box)`\n margin: 40px 0;\n display: flex;\n justify-content: center;\n`;\n\nexport const IconArrowBackSC = styled(Icon)`\n &.MuiIcon-root {\n width: 16px;\n height: 16px;\n -webkit-mask: url(${ArrowBackIconSvg}) no-repeat center;\n mask: url(${ArrowBackIconSvg}) no-repeat center;\n }\n`;\n\nexport const InfoContentInnerSC = styled(Box)`\n padding-left: 34px;\n\n ul {\n margin-top: 0;\n margin-bottom: 24px;\n padding-left: 24px;\n\n li {\n list-style-type: disc;\n color: ${({ theme }) => theme.palette.primary800};\n }\n }\n`;\n\nexport const TextLoginSC = styled.p`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-size: 14px;\n line-height: 24px;\n color: ${({ theme }) => theme.palette.primary800};\n margin-top: 32px;\n text-align: right;\n\n a {\n font-family: ${({ theme }) => theme.fonts.b700};\n color: ${({ theme }) => theme.palette.primary500};\n }\n`;\n","import { view } from \"@risingstack/react-easy-state\";\nimport { Link } from \"react-router-dom\";\n\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\n\nimport { auth } from \"../../stores/auth\";\n\nimport Button from \"../../parts/Button/Button\";\n\nimport {\n WrapperSC,\n LeftPageSideSC,\n TitlePrimarySC,\n LogoFullSC,\n SubsectionSC,\n SubtitleSC,\n ParagraphSC,\n RightPageSideSC,\n IconInfoLargeSC,\n IconInfoCircleSC,\n IconArrowBackSC,\n TitleSecondarySC,\n InfoContentSC,\n InfoContentInnerSC,\n ButtonWrapperSC,\n ButtonSmallScreenWrapperSC,\n} from \"./styled\";\n\nconst Info = view(() => {\n const matches800Up = useMediaQuery(\"(min-width:800px)\");\n\n return (\n \n \n Impressum\n \n \n Miholjački vodovod d.o.o\n Pavla Radića 99\n 31540 Donji Miholjac\n OIB: 30605443172\n \n Tel. (031) 631 - 507\n \n \n Fax. (031) 630 - 973\n \n \n e-mail:{\" \"}\n \n info@miholjacki-vodovod.hr\n \n \n \n \n Direktor:\n Dragana Pnjak, dipl.ing.\n e-mail:\n \n \n dragana.pnjak@miholjacki-vodovod.hr\n \n \n \n \n \n Voditelj službe za financijsko-računovodstvene poslove:\n \n Matija Vidaković\n \n e-mail:{\" \"}\n \n matija@miholjacki-vodovod.hr\n \n \n \n \n Financijski knjigovođa:\n Damir Skeledžija\n \n Tel. (031) 630 - 946\n \n \n e-mail:{\" \"}\n \n damir@miholjacki-vodovod.hr\n \n \n \n \n Saldo-konti kupaca:\n Ljekra Hrupački\n \n e-mail:{\" \"}\n \n ljerka@miholjacki-vodovod.hr\n \n \n \n \n Djelatnost poduzeća:\n vodoopskrba, odvodnja\n \n {!auth.isLoggedIn && !matches800Up && (\n \n }\n >\n Povratak na prijavu\n \n \n )}\n \n \n \n
\n Informacije o aplikaciji\n \n \n \n \n Aplikacija \"Miholjački vodovod\" omogućava\n korisnicima:\n \n
    \n
  • \n \n pregled potrošnje vodnih usluga\n \n
  • \n
  • \n slanje upita\n
  • \n
  • \n \n plaćanja obveza za vodne usluge\n \n
  • \n
  • \n \n uvid u račune za vodne usluge u elektroničkom obliku\n \n
  • \n
\n \n O novim mogućnostima i nadogradnjama pravodobno ćemo Vas\n izvijestiti.\n \n {!auth.isLoggedIn && (\n \n }\n >\n Povratak na prijavu\n \n \n )}\n
\n
\n
\n
\n
\n );\n});\n\nexport default Info;\n","import { format } from \"date-fns\";\n\nexport const formatDateString = (date) => {\n const now = Date.now();\n const notificationDate = new Date(date.substring(0, 10)).getTime();\n const difference = now - notificationDate;\n const msInDay = 86400000;\n let stringToReturn;\n\n if (difference < msInDay) {\n stringToReturn = \"Danas\";\n } else if (difference < msInDay * 2) {\n stringToReturn = \"Jučer\";\n } else if (difference < msInDay * 3) {\n stringToReturn = \"Prije 2 dana\";\n } else if (difference < msInDay * 4) {\n stringToReturn = \"Prije 3 dana\";\n } else if (difference < msInDay * 5) {\n stringToReturn = \"Prije 4 dana\";\n } else if (difference < msInDay * 6) {\n stringToReturn = \"Prije 5 dana\";\n } else {\n stringToReturn = format(new Date(date), \"d.M.yyyy.\");\n }\n\n return stringToReturn;\n};\n","export default __webpack_public_path__ + \"static/media/notification_icon.50fb2a2a.svg\";","export default __webpack_public_path__ + \"static/media/notification_active_icon.97f940aa.svg\";","import styled from \"styled-components\";\n\nimport { Box, Paper, Icon } from \"@mui/material\";\n\nimport NotificationIconSvg from \"../../assets/img/notification_icon.svg\";\nimport NotificationActiveIconSvg from \"../../assets/img/notification_active_icon.svg\";\nimport ArrowBackSvg from \"../../assets/img/arrow_back_icon.svg\";\n\n// Notifications\n// Notification Details\n\n//\n//\n// ---------------------------------------------------------------\n// --------------------------- Notifications -----------------------------\n// ---------------------------------------------------------------\nexport const PageWrapperSC = styled(Box)`\n display: flex;\n width: 100%;\n height: 100%;\n`;\n\nexport const LeftPageSideSC = styled(Box)`\n width: 392px;\n height: calc(100% - 160px);\n\n @media (max-width: 1024px) {\n height: calc(100% - 224px);\n margin-top: 64px;\n }\n\n @media (max-width: 500px) {\n height: calc(100% - 160px);\n margin-top: 0px;\n width: 100%;\n }\n`;\n\nexport const TitleSC = styled.h1`\n font-family: ${({ theme }) => theme.fonts.h600};\n color: ${({ theme }) => theme.palette.primary800};\n font-size: 32px;\n line-height: 40px;\n letter-spacing: 0.56px;\n margin: 40px 0;\n padding-left: 24px;\n`;\n\nexport const NotificationListSettingsSC = styled(Box)`\n top: 120px;\n width: 100%;\n height: 40px;\n padding: 0 24px;\n display: flex;\n justify-content: end;\n align-items: end;\n`;\n\nexport const SettingsButtonSC = styled.button`\n padding: 0;\n margin-bottom: 20px;\n height: fit-content;\n outline: none;\n border: none;\n background-color: transparent;\n font-size: 12px;\n font-family: ${({ theme }) => theme.fonts.h700};\n color: ${({ theme }) => theme.palette.primary800};\n cursor: pointer;\n`;\n\nexport const NotificationListSC = styled(Box)`\n margin: 0;\n padding-left: 24px;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n overflow: auto;\n\n &::-webkit-scrollbar {\n width: 4px;\n }\n\n &::-webkit-scrollbar-track {\n background-color: transparent;\n }\n\n &::-webkit-scrollbar-thumb {\n background-color: #e5e4e8;\n border: none;\n }\n\n // Firefox\n scrollbar-color: #e5e4e8 transparent;\n`;\n\nexport const RightPageSideSC = styled(Box)`\n flex: 1;\n overflow: auto;\n padding: 0 24px;\n`;\n\nexport const RightPageSideContainerSC = styled(Box)`\n max-width: 1200px;\n margin: auto;\n`;\n\nexport const ButtonBillsBackSC = styled.button`\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: transparent;\n border: none;\n outline: none;\n font-family: ${({ theme }) => theme.fonts.b400};\n color: ${({ theme }) => theme.palette.primary900};\n font-size: 18px;\n line-height: 24px;\n padding: 0;\n margin: 48px 0 8px;\n cursor: pointer;\n`;\n\nexport const ArrowBackSC = styled(Icon)`\n margin-right: 12px;\n &.MuiIcon-root {\n width: 16px;\n height: 16px;\n -webkit-mask: url(${ArrowBackSvg}) no-repeat center;\n mask: url(${ArrowBackSvg}) no-repeat center;\n background-color: ${({ theme }) => theme.palette.primary900};\n }\n`;\n\n// Notification Card\nexport const NotificationCardSC = styled(Paper)`\n margin-bottom: 8px;\n &.MuiPaper-root {\n display: flex;\n align-items: center;\n cursor: pointer;\n padding: 8px 12px;\n background-color: ${({ theme }) => theme.palette.neutral0};\n border: 1px solid #eeeff9;\n border-radius: 8px;\n box-shadow: 0px 4px 12px -4px rgba(34, 3, 101, 0.1);\n width: 344px;\n\n &.unseen {\n background-color: ${({ theme }) => theme.palette.primary100};\n }\n\n @media (max-width: 500px) {\n width: calc(100% - 20px);\n }\n }\n\n &.active {\n &.MuiPaper-root {\n user-select: text;\n -webkit-user-drag: none;\n background-color: ${({ theme }) => theme.palette.primary50};\n }\n h3 {\n color: ${({ theme }) => theme.palette.primary500};\n }\n }\n`;\n\nexport const NotificationCardContentSC = styled(Box)`\n margin-left: 8px;\n h3 {\n font-size: 12px;\n line-height: 16px;\n font-family: ${({ theme }) => theme.fonts.h700};\n color: ${({ theme }) => theme.palette.primary800};\n }\n\n p {\n font-size: 10px;\n line-height: 16px;\n font-family: ${({ theme }) => theme.fonts.h400};\n color: ${({ theme }) => theme.palette.primary800};\n }\n`;\n\nexport const IconWrapperSC = styled(Box)`\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background-color: ${({ theme }) => theme.palette.primary50};\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const IconNotificationSC = styled(Icon)`\n &.MuiIcon-root {\n width: 15.2px;\n height: 19.5px;\n -webkit-mask: url(${NotificationIconSvg}) no-repeat center;\n mask: url(${NotificationIconSvg}) no-repeat center;\n background-color: ${({ theme }) => theme.palette.primary500};\n }\n`;\n\nexport const IconNotificationActiveSC = styled(Icon)`\n &.MuiIcon-root {\n width: 19.75px;\n height: 19.5px;\n -webkit-mask: url(${NotificationActiveIconSvg}) no-repeat center;\n mask: url(${NotificationActiveIconSvg}) no-repeat center;\n background-color: ${({ theme }) => theme.palette.primary500};\n }\n`;\n\nexport const ModalContentSC = styled(Box)`\n display: flex;\n justify-content: space-between;\n`;\n\n//\n//\n// ---------------------------------------------------------------\n// ---------------------- Notification Details ---------------------------\n// ---------------------------------------------------------------\n\nexport const TitleNotificationSC = styled.h2`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n font-size: 28px;\n line-height: 36px;\n letter-spacing: 0.56px;\n color: ${({ theme }) => theme.palette.primary900};\n margin-top: 120px;\n\n @media (max-width: 1024px) {\n margin-top: 40px;\n }\n`;\n\nexport const DateNotificationSC = styled.p`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n color: ${({ theme }) => theme.palette.primary900};\n margin-bottom: 40px;\n margin-top: 8px;\n`;\n\nexport const MessageNotificationSC = styled.p`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n font-size: 14px;\n line-height: 24px;\n color: ${({ theme }) => theme.palette.primary900};\n margin-bottom: 40px;\n`;\n","import { useState } from \"react\";\nimport { view } from \"@risingstack/react-easy-state\";\nimport { Outlet, NavLink, useNavigate, useLocation } from \"react-router-dom\";\n\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\n\nimport { notifications } from \"../../stores/notifications\";\nimport { formatDateString } from \"./utils\";\n\nimport Spinner from \"../../parts/Spinner/Spinner\";\nimport Modal from \"../../parts/Modal/Modal\";\nimport Button from \"../../parts/Button/Button\";\nimport NoData from \"../../parts/PageMessage/NoData\";\nimport Drawer from \"../../parts/Drawer/Drawer\";\n\nimport { CircularProgress } from \"@mui/material\";\n\nimport { ColumnSpinnerSC } from \"../../parts/styled\";\n\nimport {\n SettingsButtonSC,\n IconNotificationActiveSC,\n IconNotificationSC,\n IconWrapperSC,\n LeftPageSideSC,\n ModalContentSC,\n NotificationCardContentSC,\n NotificationCardSC,\n NotificationListSC,\n NotificationListSettingsSC,\n PageWrapperSC,\n RightPageSideContainerSC,\n RightPageSideSC,\n TitleSC,\n ButtonBillsBackSC,\n ArrowBackSC,\n} from \"./styled\";\n\nconst Notifications = view(() => {\n const navigate = useNavigate();\n const location = useLocation();\n const [modalReadAllOpen, setModalReadAllOpen] = useState(false);\n const [drawerOpen, setDrawerOpen] = useState(true);\n const matches1024Up = useMediaQuery(\"(min-width:1024px)\");\n const matches501Up = useMediaQuery(\"(min-width:501px)\");\n\n const handleButtonReadAll = () => {\n notifications.unreadCount > 0 && setModalReadAllOpen(true);\n };\n\n const handleConfirmReadAll = async () => {\n await notifications.readNotifications();\n if (notifications.isReadAllSuccessfull) {\n notifications.allNotifications.forEach((ntf) => {\n if (!ntf.read_at) {\n ntf.read_at = true;\n }\n });\n notifications.isReadAllSuccessfull = false;\n }\n setModalReadAllOpen(false);\n };\n\n const handleClickCard = async (id, readAt) => {\n if (!readAt) {\n await notifications.readNotification(id);\n if (notifications.isReadSingleSuccessfull) {\n notifications.allNotifications.find(\n (ntf) => ntf.id === id\n ).read_at = true;\n notifications.isReadSingleSuccessfull = false;\n }\n }\n if (drawerOpen) {\n toggleDrawer();\n }\n };\n\n const toggleDrawer = () => {\n setDrawerOpen(!drawerOpen);\n };\n\n const handleNotificationsBackLink = () => {\n notifications.notification = null;\n navigate(\"/obavijesti\");\n };\n\n return (\n \n \n {(!location.pathname.startsWith(\"/obavijesti/\") ||\n matches501Up ||\n matches1024Up) && (\n \n Obavijesti\n {notifications.isLoadingGet ? (\n \n \n \n ) : notifications.allNotifications?.length === 0 ? (\n \n ) : notifications.allNotifications?.length > 0 ? (\n <>\n \n \n Označi sve kao pročitano\n \n \n \n {notifications.allNotifications.map((ntf) => {\n return (\n handleClickCard(ntf.id, ntf.read_at)}\n >\n \n {!ntf.read_at ? (\n \n ) : (\n \n )}\n \n \n

\n {ntf.heading.length < 38\n ? ntf.heading\n : ntf.heading.substring(0, 38).trim() + \"...\"}\n

\n

{formatDateString(ntf.created_at)}

\n
\n \n );\n })}\n
\n \n ) : null}\n
\n )}\n \n {(location.pathname.startsWith(\"/obavijesti/\") || matches501Up) && (\n \n \n {matches501Up && !matches1024Up && (\n \n \n Obavijesti\n \n )}\n {!matches501Up && (\n \n \n Obavijesti\n \n )}\n \n \n \n )}\n \n \n setModalReadAllOpen(false)}\n >\n Odustani\n \n \n \n {notifications.isLoadingReadAll ? (\n \n ) : (\n \"Označi sve\"\n )}\n \n \n \n \n
\n );\n});\n\nexport default Notifications;\n","import { useEffect } from \"react\";\nimport { view, autoEffect } from \"@risingstack/react-easy-state\";\nimport { useParams, useNavigate } from \"react-router-dom\";\nimport { format } from \"date-fns\";\n\nimport { notifications } from \"../../stores/notifications\";\n\nimport {\n DateNotificationSC,\n MessageNotificationSC,\n TitleNotificationSC,\n} from \"./styled\";\n\nconst NotificationDetails = view(() => {\n const navigate = useNavigate();\n const { notificationId } = useParams();\n\n autoEffect(async () => {\n notifications.notification = null;\n if (notifications.allNotifications?.length > 0) {\n notifications.notification = notifications.allNotifications.find(\n (b) => b.id === notificationId\n );\n if (!notifications.notification) {\n navigate(\"/obavijesti\");\n }\n }\n }, [notificationId]);\n\n useEffect(() => {\n return () => {\n notifications.notification = null;\n };\n }, []);\n\n return (\n <>\n {notifications.notification && (\n <>\n \n {notifications.notification.heading}\n \n \n {format(new Date(notifications.notification.created_at), \"d.M.yyyy.\")}\n \n \n {notifications.notification.text}\n \n \n )}\n \n );\n});\n\nexport default NotificationDetails;\n","export default __webpack_public_path__ + \"static/media/logout_icon.61cf6659.svg\";","export default __webpack_public_path__ + \"static/media/settings_icon.8a5781e7.svg\";","export default __webpack_public_path__ + \"static/media/delete_icon.66417d2c.svg\";","export default __webpack_public_path__ + \"static/media/verified_icon.f59afe6b.svg\";","import styled from \"styled-components\";\n\nimport { Box, Icon, Avatar } from \"@mui/material\";\n\nimport LogoutIconSvg from \"../../assets/img/logout_icon.svg\";\nimport SettingsIconSvg from \"../../assets/img/settings_icon.svg\";\nimport NotificationIconSvg from \"../../assets/img/notification_icon.svg\";\nimport DeleteIconSvg from \"../../assets/img/delete_icon.svg\";\nimport VerifiedIconSvg from \"../../assets/img/verified_icon.svg\";\nimport MailSendImageSvg from \"../../assets/img/success_mail.svg\";\n\nexport const WrapperSC = styled(Box)`\n display: flex;\n height: 100%;\n`;\n\nexport const LeftPageSideSC = styled(Box)`\n background-color: ${({ theme }) => theme.palette.primary900};\n display: flex;\n flex-direction: column;\n width: 392px;\n min-height: 100%;\n height: fit-content;\n padding: 0 24px 44px 24px;\n\n @media (max-width: 800px) {\n width: 100%;\n }\n`;\n\nexport const TitlePrimarySC = styled.h1`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n font-size: 32px;\n line-height: 40px;\n letter-spacing: 0.56px;\n color: ${({ theme }) => theme.palette.primary50};\n margin: 40px 0;\n`;\n\nexport const AvatarLargeSC = styled(Avatar)`\n margin-bottom: 24px;\n &.MuiAvatar-root {\n width: 104px;\n height: 104px;\n background-color: ${({ theme }) => theme.palette.primary800};\n color: ${({ theme }) => theme.palette.neutral50};\n font-family: ${({ theme }) => theme.fonts.h600};\n font-size: 44px;\n }\n`;\n\nexport const SubsectionSC = styled(Box)`\n margin-bottom: 40px;\n`;\n\nexport const SubtitleSC = styled.h3`\n font-family: ${({ theme }) => theme.fonts.b700};\n font-size: 12px;\n line-height: 24px;\n letter-spacing: 0.12px;\n color: ${({ theme, color }) =>\n color === \"black\" ? theme.palette.primary800 : theme.palette.primary200};\n cursor: ${({ hoverable }) => hoverable && \"pointer\"};\n\n @media (max-width: 800px) {\n color: ${({ theme }) => theme.palette.primary500};\n }\n`;\n\nexport const ParagraphSC = styled.p`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-size: 14px;\n line-height: 24px;\n letter-spacing: 0.12px;\n color: ${({ theme, color }) =>\n color === \"black\" ? theme.palette.primary800 : theme.palette.primary50};\n\n a {\n color: ${({ theme }) => theme.palette.primary500};\n }\n\n @media (max-width: 800px) {\n color: ${({ theme }) => theme.palette.primary50};\n }\n`;\n\nexport const VersionAndLogoutSC = styled(Box)`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n margin-top: auto;\n\n div:first-child {\n margin-right: 24px;\n }\n`;\n\nexport const VersionTextSC = styled.p`\n font-family: ${({ theme }) => theme.fonts.h600};\n font-size: 10px;\n line-height: 16px;\n color: ${({ theme }) => theme.palette.primary50};\n`;\n\nexport const IconLogoutSC = styled(Icon)`\n &.MuiIcon-root {\n width: 24px;\n height: 24px;\n -webkit-mask: url(${LogoutIconSvg}) no-repeat center;\n mask: url(${LogoutIconSvg}) no-repeat center;\n }\n`;\n\nexport const RightPageSideSC = styled(Box)`\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 24px;\n position: relative;\n height: 100%;\n\n div {\n max-width: 424px;\n }\n\n @media (max-width: 800px) {\n display: none;\n }\n`;\n\nexport const IconSettingsLargeSC = styled(Icon)`\n position: absolute;\n top: 52px;\n right: 48px;\n\n &.MuiIcon-root {\n width: 116.6px;\n height: 120px;\n -webkit-mask: url(${SettingsIconSvg}) no-repeat center;\n -webkit-mask-size: contain;\n mask: url(${SettingsIconSvg}) no-repeat center;\n mask-size: contain;\n background-color: ${({ theme }) => theme.palette.primary100};\n\n @media (max-width: 1024px) {\n display: none;\n }\n }\n`;\n\nexport const TitleSecondarySC = styled.h2`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n font-size: 32px;\n line-height: 56px;\n letter-spacing: 0.56px;\n color: ${({ theme }) => theme.palette.primary800};\n margin-bottom: 40px;\n`;\n\nexport const SettingsContentSC = styled(Box)`\n display: flex;\n flex-direction: column;\n`;\n\nexport const SettingsSubsectionSC = styled(Box)`\n display: flex;\n margin-bottom: 40px;\n`;\n\nexport const SettingsSubsectionInnerSC = styled(Box)`\n padding-left: 34px;\n display: ${({ flexed }) => flexed && \"flex\"};\n align-items: center;\n\n div {\n padding-right: 12px;\n }\n\n @media (max-width: 800px) {\n width: 100%;\n justify-content: space-between;\n padding-left: 24px;\n }\n`;\n\nexport const IconNotificationSC = styled(Icon)`\n margin-top: 2px;\n margin-left: 2px;\n &.MuiIcon-root {\n width: 20px;\n height: 20px;\n -webkit-mask: url(${NotificationIconSvg}) no-repeat center;\n mask: url(${NotificationIconSvg}) no-repeat center;\n background-color: ${({ theme }) => theme.palette.primary500};\n }\n`;\n\nexport const IconDeleteSC = styled(Icon)`\n margin-top: 3px;\n margin-left: 5px;\n &.MuiIcon-root {\n width: 14px;\n height: 18px;\n -webkit-mask: url(${DeleteIconSvg}) no-repeat center;\n mask: url(${DeleteIconSvg}) no-repeat center;\n background-color: ${({ theme }) => theme.palette.primary500};\n }\n`;\n\nexport const IconVerifiedSC = styled(Icon)`\n margin-top: 1px;\n margin-left: 3px;\n &.MuiIcon-root {\n width: 18px;\n height: 21.8px;\n -webkit-mask: url(${VerifiedIconSvg}) no-repeat center;\n mask: url(${VerifiedIconSvg}) no-repeat center;\n background-color: ${({ theme }) => theme.palette.primary500};\n }\n`;\n\nexport const ModalContentSC = styled(Box)`\n display: flex;\n justify-content: space-between;\n`;\n\nexport const TextSC = styled.p`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-size: 14px;\n line-height: 24px;\n color: ${({ theme }) => theme.palette.primary800};\n margin-top: -20px;\n margin-bottom: 20px;\n text-align: center;\n`;\n\nexport const IconMailSendSC = styled.img.attrs({\n src: MailSendImageSvg,\n})`\n width: 108.6px;\n height: 96px;\n margin-bottom: 40px;\n`;\n","import { view } from \"@risingstack/react-easy-state\";\n\nimport { auth } from \"../../stores/auth\";\n\nimport Toggler from \"../../parts/Toggler/Toggler\";\n\nimport {\n IconDeleteSC,\n IconNotificationSC,\n ParagraphSC,\n SettingsContentSC,\n SettingsSubsectionInnerSC,\n SettingsSubsectionSC,\n SubtitleSC,\n} from \"./styled\";\n\nconst Settings = view(({ setModalRequestOpen }) => {\n const handleChangeToggler = async () => {\n await auth.updateUser(!auth.userDetails.mail_notifiable);\n if (auth.isUpdateSuccess) {\n auth.userDetails.mail_notifiable = !auth.userDetails.mail_notifiable;\n }\n auth.isUpdateSuccess = false;\n };\n\n return (\n \n \n \n \n
\n \n Dozvoli slanje obavijesti putem email-a\n \n \n {auth.userDetails?.mail_notifiable\n ? \"Aplikacija dopušta slanje obavijesti putem email-a\"\n : \"Aplikacija ne dopušta slanje obavijesti email-a\"}\n \n
\n \n
\n
\n \n \n \n setModalRequestOpen(true)}\n >\n Uklonite podatke\n \n \n Uklanja sve podatke o aplikaciji\n \n \n \n
\n );\n});\n\nexport default Settings;\n","import { useState } from \"react\";\nimport { view } from \"@risingstack/react-easy-state\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\n\nimport { auth } from \"../../stores/auth\";\n\nimport Button from \"../../parts/Button/Button\";\nimport Modal from \"../../parts/Modal/Modal\";\n\nimport { CircularProgress } from \"@mui/material\";\n\nimport Settings from \"./Settings\";\n\nimport {\n WrapperSC,\n LeftPageSideSC,\n TitlePrimarySC,\n AvatarLargeSC,\n SubsectionSC,\n SubtitleSC,\n ParagraphSC,\n VersionAndLogoutSC,\n VersionTextSC,\n RightPageSideSC,\n IconLogoutSC,\n IconSettingsLargeSC,\n TitleSecondarySC,\n ModalContentSC,\n TextSC,\n IconMailSendSC,\n} from \"./styled\";\n\nconst Profile = view(() => {\n const navigate = useNavigate();\n const [modalRequestOpen, setModalRequestOpen] = useState(false);\n const [modalSuccessOpen, setModalSuccessOpen] = useState(false);\n const matches800Up = useMediaQuery(\"(min-width:800px)\");\n\n const handleLogout = async () => {\n await auth.logout();\n navigate(\"/prijava\");\n };\n\n const getUserInitials = () => {\n let firstLetter = \"\";\n let secondLetter = \"\";\n if (auth.userDetails?.name?.split(\" \").length > 1) {\n firstLetter = auth.userDetails?.name?.split(\" \")[0][0];\n secondLetter = auth.userDetails?.name?.split(\" \")[1][0];\n } else {\n firstLetter = auth.userDetails?.name?.[0] || \"\";\n }\n let result = firstLetter?.toUpperCase() + secondLetter?.toUpperCase();\n if (!result) {\n return \"K\";\n }\n return result;\n };\n\n const handleRemoveAppDetails = () => {\n const mailReceiver = \"info@miholjacki-vodovod.hr\";\n const subject = \"Zahtjev za brisanje osobnih podataka\";\n const body =\n \"Molim vas obrazac Zahtjeva za brisanje osobnih podataka koji su obrađeni u sustavu aplikacije Miholjačkog vodovoda.\";\n window.location = `mailto:${mailReceiver}?subject=${subject}&body=${body}`;\n setModalRequestOpen(false);\n setModalSuccessOpen(true);\n };\n\n return (\n \n \n {auth.userDetails?.name}\n {getUserInitials()}\n \n Elektronička pošta\n \n \n {auth.userDetails?.email}\n \n \n \n \n OIB\n {auth.userDetails?.oib}\n \n {auth.userDetails?.user_code && (\n \n Šifra korisnika\n {auth.userDetails?.user_code}\n \n )}\n {auth.userDetails?.company && (\n \n Tvrtka\n {auth.userDetails?.company}\n \n )}\n {!matches800Up && (\n \n )}\n \n
\n Verzija: 1.0.0.\n
\n
\n }\n >\n \n {auth.isLoading ? (\n \n ) : (\n \"Odjava\"\n )}\n \n \n
\n
\n
\n {matches800Up && (\n \n \n
\n Postavke korisničkog računa\n \n
\n
\n )}\n \n \n Žao nam je što brišete Vaš korisnički račun i želite se odreći mnogih\n pogodnosti koje aplikacija nudi. Ako ste još uvijek sigurni, možete\n zatražiti obrazac Zahtjeva za brisanje od naše korisničke službe.\n \n \n setModalRequestOpen(false)}\n >\n Odustani\n \n \n Potvrdi\n \n \n \n \n \n \n setModalSuccessOpen(false)}\n >\n Povratak na aplikaciju\n \n \n \n
\n );\n});\n\nexport default Profile;\n","import { view } from \"@risingstack/react-easy-state\";\nimport { Outlet } from \"react-router-dom\";\n\nimport { auth } from \"../stores/auth\";\n\nconst ProtectedRoute = view(() => {\n return <>{auth.isLoggedIn ? : null};\n});\n\nexport default ProtectedRoute;\n","export default __webpack_public_path__ + \"static/media/privacy_icon.e00bd16b.svg\";","import styled from \"styled-components\";\n\nimport { Icon } from \"@mui/material\";\nimport { Link } from \"react-router-dom\";\nimport PrivacyIconSvg from \"../../assets/img/privacy_icon.svg\";\n\nexport const FooterSC = styled.footer`\n min-height: 40px;\n background-color: ${({ theme }) => theme.palette.primary900};\n width: 100%;\n padding: 0 24px;\n position: absolute;\n bottom: 0;\n z-index: 100;\n display: flex;\n align-items: center;\n justify-content: space-between;\n color: white;\n font-family: ${({ theme }) => theme.fonts.h600};\n font-size: 10px;\n\n @media (max-width: 600px) {\n flex-direction: column;\n justify-content: space-evenly;\n align-items: start;\n min-height: 80px;\n }\n`;\n\nexport const TextPrivacySC = styled.div`\n display: flex;\n align-items: center;\n span {\n font-size: 18px;\n margin-right: 9px;\n\n @media (max-width: 600px) {\n margin-left: 2px;\n }\n }\n`;\n\nexport const FooterLinksSC = styled.div`\n display: flex;\n align-items: center;\n\n div {\n display: flex;\n align-items: center;\n margin-right: 12px;\n span {\n margin-left: 14px;\n\n @media (max-width: 600px) {\n margin-left: 0;\n margin-right: 8px;\n }\n }\n }\n`;\n\nexport const IconPrivacySC = styled(Icon)`\n &.MuiIcon-root {\n width: 18px;\n height: 22px;\n -webkit-mask: url(${PrivacyIconSvg}) no-repeat center;\n mask: url(${PrivacyIconSvg}) no-repeat center;\n background-color: ${({ theme }) => theme.palette.primary50};\n transform: scale(0.8);\n }\n`;\n\nexport const NavbarLink = styled(Link)`\n text-decoration: none;\n color: white;\n &:active {\n color: ${({ theme }) => theme.palette.primary200};\n }\n`;\n","import { useState, useEffect } from \"react\";\nimport { view } from \"@risingstack/react-easy-state\";\nimport { useLocation } from \"react-router-dom\";\n\nimport {\n FooterSC,\n IconPrivacySC,\n TextPrivacySC,\n FooterLinksSC,\n NavbarLink,\n} from \"./styled\";\n\nconst Footer = view(() => {\n const [firstRender, setFirstRender] = useState(true);\n const location = useLocation();\n\n useEffect(() => {\n setFirstRender(false);\n }, []);\n return (\n <>\n {firstRender ||\n location.pathname.startsWith(\"/uspjesno-placanje\") ||\n location.pathname.startsWith(\"/ponisteno-placanje\") ? null : (\n \n \n ©\n

2023. Miholjački Vodovod d.o.o. Sva prava pridržana.

\n
\n \n
\n \n
\n \n

Politika privatnosti

\n
\n {/*

Cookie policy

*/}\n
\n
\n )}\n \n );\n});\n\nexport default Footer;\n","export default __webpack_public_path__ + \"static/media/vodovod_logo_2.9d9ce4be.svg\";","export default __webpack_public_path__ + \"static/media/bills_icon.76e0a7d7.svg\";","import styled from \"styled-components\";\n\nimport {\n Box,\n Icon,\n IconButton,\n Avatar,\n Badge as BadgeMUI,\n} from \"@mui/material\";\n\nimport VodovodLogoSvg from \"../../assets/img/vodovod_logo_2.svg\";\nimport HomeIconSvg from \"../../assets/img/home_icon.svg\";\nimport BillsIconSvg from \"../../assets/img/bills_icon.svg\";\nimport SettingsIconSvg from \"../../assets/img/settings_icon.svg\";\nimport InfoIconSvg from \"../../assets/img/info_icon.svg\";\nimport NotificationIconSvg from \"../../assets/img/notification_icon.svg\";\nimport LogoutIconSvg from \"../../assets/img/logout_icon.svg\";\nimport LogoFullSvg from \"../../assets/img/logo_full_2.svg\";\n\n// Unautentcated\nexport const SidebarUnauthenticatedSC = styled(Box)`\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 392px;\n min-height: 479px;\n background-color: ${({ theme }) => theme.palette.primary800};\n\n @media (max-width: 1024px) {\n min-height: 104px;\n min-width: 0;\n width: 100%;\n }\n`;\n\nexport const LogoFullSC = styled(Icon)`\n &.MuiIcon-root {\n width: 160px;\n height: 90px;\n background: url(${LogoFullSvg}) no-repeat center;\n background-color: transparent;\n }\n`;\n\n// Authenticated\nexport const NavSC = styled.nav`\n min-height: 100vh;\n height: fit-content;\n background-color: ${({ theme }) => theme.palette.primary800};\n min-width: 64px;\n padding: 40px 0;\n display: flex;\n justify-content: center;\n z-index: ${({ theme }) => theme.zIndex.drawer + 1};\n\n @media (max-width: 1024px) {\n padding: 0;\n min-height: 64px;\n height: 64px;\n min-width: 100%;\n }\n`;\n\nexport const NavWrapperSC = styled(Box)`\n padding: 0px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n\n a {\n padding: 0;\n }\n\n @media (max-width: 1024px) {\n padding: 0 24px;\n width: 100%;\n flex-direction: row;\n }\n`;\n\nexport const LogoWrapperSC = styled(Box)`\n margin-bottom: 20px;\n\n @media (max-width: 1024px) {\n margin-bottom: 0;\n }\n\n @media (max-width: 500px) {\n display: none;\n }\n`;\n\nexport const NavLinkListSC = styled.ul`\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-left: 0;\n\n & .MuiIconButton-root {\n margin-bottom: 25px;\n }\n\n @media (max-width: 1024px) {\n margin-left: auto;\n flex-direction: row;\n & .MuiIconButton-root {\n margin-bottom: 0;\n margin-right: 24px;\n }\n }\n\n @media (max-width: 500px) {\n .MuiIconButton-root:first-of-type {\n }\n .MuiIconButton-root:last-of-type {\n }\n flex: 1;\n justify-content: space-between;\n }\n`;\n\nexport const IconButtonLinkSC = styled(IconButton)`\n &.MuiIconButton-root {\n background-color: ${({ theme, activesubroute }) =>\n activesubroute === \"dashboard\"\n ? theme.palette.primary500\n : \"transparent\"};\n width: 40px;\n height: 40px;\n }\n & .MuiIcon-root {\n background-color: ${({ theme, activesubroute }) =>\n activesubroute === \"dashboard\"\n ? theme.palette.primary50\n : theme.palette.primary600};\n }\n\n &:hover,\n &.active {\n &.MuiIconButton-root {\n background-color: ${({ theme }) => theme.palette.primary500};\n }\n & .MuiIcon-root {\n background-color: ${({ theme }) => theme.palette.primary50};\n }\n }\n`;\n\nexport const IconLogoSC = styled(Icon)`\n &.MuiIcon-root {\n width: 40px;\n height: 40px;\n background: url(${VodovodLogoSvg}) no-repeat center;\n background-color: transparent;\n }\n`;\n\nexport const IconHomeSC = styled(Icon)`\n &.MuiIcon-root {\n width: 18px;\n height: 17px;\n -webkit-mask: url(${HomeIconSvg}) no-repeat center;\n mask: url(${HomeIconSvg}) no-repeat center;\n }\n`;\n\nexport const IconBillsSC = styled(Icon)`\n &.MuiIcon-root {\n width: 20px;\n height: 16px;\n -webkit-mask: url(${BillsIconSvg}) no-repeat center;\n mask: url(${BillsIconSvg}) no-repeat center;\n }\n`;\n\nexport const IconSettingsSC = styled(Icon)`\n &.MuiIcon-root {\n width: 20px;\n height: 20px;\n -webkit-mask: url(${SettingsIconSvg}) no-repeat center;\n mask: url(${SettingsIconSvg}) no-repeat center;\n background-color: #999;\n }\n`;\n\nexport const IconInfoSC = styled(Icon)`\n &.MuiIcon-root {\n width: 17px;\n height: 20px;\n -webkit-mask: url(${InfoIconSvg}) no-repeat center;\n mask: url(${InfoIconSvg}) no-repeat center;\n }\n`;\n\nexport const IconNotificationSC = styled(Icon)`\n &.MuiIcon-root {\n width: 15px;\n height: 20px;\n -webkit-mask: url(${NotificationIconSvg}) no-repeat center;\n mask: url(${NotificationIconSvg}) no-repeat center;\n }\n`;\n\nexport const Badge = styled(BadgeMUI)`\n position: relative;\n & .MuiBadge-badge {\n background-color: ${({ theme }) => theme.palette.danger500};\n color: ${({ theme }) => theme.palette.neutral0};\n font-size: 12px;\n font-family: ${({ theme }) => theme.fonts.h500};\n height: 16px;\n min-width: 16px;\n padding: 0 4px;\n border-radius: 50%;\n position: absolute;\n top: -4px;\n right: -4px;\n }\n`;\n\nexport const IconLogoutSC = styled(Icon)`\n &.MuiIcon-root {\n width: 24px;\n height: 24px;\n -webkit-mask: url(${LogoutIconSvg}) no-repeat center;\n mask: url(${LogoutIconSvg}) no-repeat center;\n background-color: #999;\n }\n`;\n\nexport const IconButtonAvatarSC = styled(IconButton)`\n &.MuiIconButton-root {\n padding: 2px;\n background-color: ${({ theme }) => theme.palette.primary500};\n &:hover {\n background-color: ${({ theme }) => theme.palette.primary500};\n }\n\n @media (max-width: 500px) {\n margin-left: 5%;\n }\n }\n`;\n\nexport const AvatarSC = styled(Avatar)`\n &.MuiAvatar-root {\n width: 36px;\n height: 36px;\n background-color: ${({ theme }) => theme.palette.primary800};\n color: ${({ theme }) => theme.palette.neutral50};\n font-family: ${({ theme }) => theme.fonts.h600};\n font-size: 15px;\n &:hover {\n background-color: ${({ theme }) => theme.palette.primary500};\n }\n }\n\n &.active {\n background-color: ${({ theme }) => theme.palette.primary500};\n }\n`;\n","import { useState, useEffect } from \"react\";\nimport { view } from \"@risingstack/react-easy-state\";\nimport { NavLink, useLocation } from \"react-router-dom\";\n\nimport { auth } from \"../../stores/auth\";\nimport { notifications } from \"../../stores/notifications\";\n\nimport {\n AvatarSC,\n NavSC,\n NavWrapperSC,\n NavLinkListSC,\n LogoWrapperSC,\n IconButtonLinkSC,\n IconHomeSC,\n IconBillsSC,\n IconNotificationSC,\n Badge,\n IconInfoSC,\n IconLogoSC,\n IconButtonAvatarSC,\n SidebarUnauthenticatedSC,\n LogoFullSC,\n} from \"./styled\";\n\nconst Sidebar = view(() => {\n const [activeSubRoute, setActiveSubroute] = useState(\"dashboard\");\n const [firstRender, setFirstRender] = useState(true);\n const location = useLocation();\n\n useEffect(() => {\n setFirstRender(false);\n }, []);\n\n useEffect(() => {\n if (\n location.pathname === \"/\" ||\n location.pathname.startsWith(\"/vodomjeri\")\n ) {\n setActiveSubroute(\"dashboard\");\n } else {\n setActiveSubroute(\"\");\n }\n }, [location]);\n\n const getUserInitials = () => {\n let firstLetter = \"\";\n let secondLetter = \"\";\n if (auth.userDetails?.name?.split(\" \").length > 1) {\n firstLetter = auth.userDetails?.name?.split(\" \")[0][0];\n secondLetter = auth.userDetails?.name?.split(\" \")[1][0];\n } else if (auth.userDetails?.name?.length) {\n firstLetter = auth.userDetails?.name?.[0];\n }\n let result = firstLetter?.toUpperCase() + secondLetter?.toUpperCase();\n if (!result) {\n return \"K\";\n }\n return result;\n };\n\n return (\n <>\n {firstRender ? (\n
\n ) : (!auth.isLoggedIn || auth.isRegisterSuccess) &&\n !(location.pathname === \"/info\") ? (\n \n \n \n ) : location.pathname === \"/uspjesno-placanje\" ||\n location.pathname === \"/ponisteno-placanje\" ? null : (\n auth.isLoggedIn && (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {getUserInitials()}\n \n \n \n \n )\n )}\n \n );\n});\n\nexport default Sidebar;\n","import { view } from \"@risingstack/react-easy-state\";\nimport { IconGeneralErrorSC, MessageWrapperSC } from \"./styled\";\n\nconst NotFound = view(({ message }) => {\n return (\n \n
\n \n

{message}

\n
\n
\n );\n});\n\nexport default NotFound;\n","import styled from \"styled-components\";\nimport { Box } from \"@mui/material\";\n\nexport const WrapperSC = styled(Box)`\n height: auto;\n margin: 0px 20px;\n @media (max-width: 1024px) {\n overflow-y: hidden;\n }\n`;\n\nexport const TitlePrimarySC = styled.h1`\n font-family: ${({ theme }) => theme.fonts.h600};\n color: ${({ theme }) => theme.palette.primary800};\n font-size: 28px;\n line-height: 36px;\n letter-spacing: 0.56px;\n margin: 40px 0;\n`;\n\nexport const SubtitleSC = styled.h3`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n font-size: 14px;\n line-height: 24px;\n color: ${({ theme }) => theme.palette.primary800};\n margin-bottom: 20px;\n`;\nexport const ListItemSC = styled.li`\n font-family: ${({ theme }) => theme.fonts.b400};\n font-weight: 400;\n font-size: 14px;\n line-height: 24px;\n color: ${({ theme }) => theme.palette.primary600};\n\n margin-bottom: 20px;\n`;\n\nexport const NavbarLink = styled.a`\n text-decoration: none;\n color: rgb(85, 26, 139);\n &:active {\n color: blue;\n }\n`;\n\nexport const LinkBackWrapperSC = styled(Box)`\n a {\n font-family: ${({ theme }) => theme.fonts.b700};\n font-size: 14px;\n line-height: 24px;\n color: ${({ theme }) => theme.palette.primary500};\n }\n margin-bottom: 20px;\n`;\n","import React from \"react\";\nimport {\n TitlePrimarySC,\n WrapperSC,\n SubtitleSC,\n NavbarLink,\n LinkBackWrapperSC,\n} from \"./styled\";\n\nconst PrivacyPolicy = () => {\n return (\n \n Politika zaštite privatnih podataka\n \n MIHOLJAČKI VODOVOD D.O.O. sa svim svojim voditeljima\n organizacijskih dijelova i zaposlenicima opredijeljeni su da provode\n obvezu zaštite osobnih podataka ispitanika temeljem Zakona o provedbi\n Opće uredbe o zaštiti podataka NN 42/2018, drugih zakona na temelju\n izvršavanje službene ovlasti voditelja obrade i odredbama UREDBE (EU)\n 2016/679 EUROPSKOG PARLAMENTA I VIJEĆA od 27. travnja 2016. o zaštiti\n pojedinca u vezi s obradom osobnih podataka i o slobodnom kretanju\n takvih podataka.\n \n \n MIHOLJAČKI VODOVOD D.O.O. prepoznaje važnost zaštite privatnosti,\n sigurnosti i zaštite podataka za ispitanike stoga je naš cilj provesti\n zaštitu njihovih osobnih podataka za sve njih te implementirati sustav\n koji će to omogućiti.\n \n \n Svrha prikupljanja osobnih podataka od ispitanika temelji se na\n odrednicama zakona ili na privoli ispitanika. O svim podacima koje\n dobijemo iz drugih izvora redovito se obavještava ispitanik pa ukoliko\n su isti potrebni za daljnju obradu zatražit će se privola ispitanika.\n Ispitanik uvijek može povući privolu o obradi njegovih podataka u\n određenoj zbirci. Također može zatražiti brisanje podataka koristeći\n princip zaborava osobnog podataka.\n \n \n Zaštita privatnosti podataka ispitanika je trajna obveza voditelja i\n izvršitelja obrade te osoba koje su na bilo koji način u kontaktu sa\n podacima.\n \n \n Prikupljeni podaci ispitanika čuvaju se na primjeren način u skladu sa\n zakonom osiguravajući organizacijske, tehničke i programske mjere\n zaštite u skladu sa njihovom povjerljivosti. Svi podaci moraju biti\n zaštićeni od gubitka, uništenja, mijenjanja/krivotvorenja, manipulacije\n i nedozvoljenog pristupa, kao i od nedozvoljenog razotkrivanja.\n Prikupljeni podaci neće se prenositi trećim osobama bez zakonskog\n utemeljenja ili izričitog dopuštenja ispitanika.\n \n \n Sve što ispitanik smatra ne primjerenim u obradi osobnih podataka treba\n obavijestiti službenika za zaštitu podataka pa će se poduzeti\n odgovarajuće korektivne mjere.\n \n \n Prikupljanje i obrada podatke od maloljetnika, mlađih od 16 godina,\n dopušteno je samo uz zakonsko dopuštenje ili privolu roditelja ili\n zakonskog staratelja.\n \n \n Ova izjava o politici zaštite osobnih podataka ispitanika javno će se\n obznaniti, a obvezuje sve zaposlenike da je se pridržavaju i provode u\n praksi. Svako njeno kršenje tretirat će se kao teža povreda radne\n dužnosti.\n \n
    \n
  • \n \n \n Procedura obrade zahtjeva ispitanika za uvid u osobne podatke\n \n \n
  • \n
  • \n \n \n Procedura u slučaju povrede osobnih podataka ispitanika\n \n \n
  • \n
  • \n \n \n Privola za obradu podataka prikupljenih na Web stranicama\n \n \n
  • \n
  • \n \n \n Uputa o privoli za ispitanika\n \n \n
  • \n
  • \n \n \n Kodeks ponašanja voditelja obrade podataka\n \n \n
  • \n
\n Donji Miholjac, 23.05.2018.\n \n Povratak na prijavu\n \n
\n );\n};\n\nexport default PrivacyPolicy;\n","import { autoEffect, view } from \"@risingstack/react-easy-state\";\nimport { Routes, Route, useNavigate, useLocation } from \"react-router-dom\";\n\nimport { auth } from \"./stores/auth\";\nimport { notifications } from \"./stores/notifications\";\n\nimport Login from \"./routes/Auth/Login\";\nimport Registration from \"./routes/Auth/Registration\";\nimport ForgotPassword from \"./routes/Auth/ForgotPassword\";\nimport ResetPassword from \"./routes/Auth/ResetPassword\";\nimport Dashboard from \"./routes/Dashboard/Dashboard\";\nimport DeviceDetails from \"./routes/Dashboard/DeviceDetails\";\nimport YearDetails from \"./routes/Dashboard/YearDetails\";\nimport Bills from \"./routes/Bills/Bills\";\nimport BillDetails from \"./routes/Bills/BillDetails\";\nimport PaySuccess from \"./routes/Bills/PaySuccess\";\nimport PayCancel from \"./routes/Bills/PayCancel\";\nimport Info from \"./routes/Info/Info\";\nimport Notifications from \"./routes/Notifications/Notifications\";\nimport NotificationDetails from \"./routes/Notifications/NotificationDetails\";\nimport Profile from \"./routes/Profile/Profile\";\n\nimport ProtectedRoute from \"./parts/ProtectedRoute\";\nimport Footer from \"./parts/Footer/Footer\";\nimport Sidebar from \"./parts/Sidebar/Sidebar\";\nimport Spinner from \"./parts/Spinner/Spinner\";\nimport NotFound from \"./parts/PageMessage/NotFound\";\n\nimport {\n WrapperSC,\n InnerWrapperSC,\n MainSC,\n LoadingUserSpinnerSC,\n} from \"./parts/styled\";\nimport PrivacyPolicy from \"./routes/Privacy/PrivacyPolicy\";\n\nconst App = view(() => {\n const navigate = useNavigate();\n const location = useLocation();\n\n autoEffect(async () => {\n await auth.getUser();\n if (!auth.isLoggedIn) {\n if (\n location.pathname !== \"/registracija\" &&\n location.pathname !== \"/info\" &&\n location.pathname !== \"/zaboravljena-lozinka\" &&\n location.pathname !== \"/reset-lozinke\"\n )\n navigate(\"/prijava\");\n }\n });\n\n autoEffect(async () => {\n if (auth.isLoggedIn) {\n await notifications.getNotifications();\n }\n });\n\n return (\n <>\n \n <>\n {auth.isLoadingUser ? (\n \n \n \n ) : (\n <>\n \n \n \n \n }\n />\n } />\n } />\n }\n />\n } />\n } />\n }>\n }>\n }\n >\n } />\n \n \n }>\n }\n />\n \n }\n />\n }\n />\n }>\n }\n />\n \n } />\n \n }\n />\n \n \n \n