issue fix for dev env

This commit is contained in:
Malini 2025-10-29 18:26:41 +05:30
parent ddcfa59045
commit af0524b785
43 changed files with 256 additions and 214 deletions

View File

@ -1,17 +1,17 @@
import React from 'react' import React from 'react';
import { Routes, Route, Navigate } from 'react-router-dom' import { Routes, Route, Navigate } from 'react-router-dom';
import Dashboard from './pages/Dashboard/Dashboard' import Dashboard from '@/pages/Dashboard/Dashboard';
import AdminDashboard from './pages/Admin/AdminDashboard' import AdminDashboard from '@/pages/Admin/AdminDashboard';
import AdminUsers from './pages/Admin/AdminUsers' import AdminUsers from '@/pages/Admin/AdminUsers';
import Validations from './pages/Admin/Validations' import Validations from '@/pages/Admin/Validations';
import ValidationReview from './pages/Admin/ValidationReview' import ValidationReview from '@/pages/Admin/ValidationReview';
import Configuration from './pages/Admin/Configuration' import Configuration from '@/pages/Admin/Configuration';
import Survey from './pages/Survey/Survey' import Survey from '@/pages/Survey/Survey';
import Login from './pages/Login/Login' import Login from '@/pages/Login/Login';
import History from './pages/History/History' import History from '@/pages/History/History';
import ChangePassword from './pages/ChangePassword/ChangePassword' import ChangePassword from '@/pages/ChangePassword/ChangePassword';
import ForgotPassword from './pages/ForgotPassword/ForgotPassword' import ForgotPassword from '@/pages/ForgotPassword/ForgotPassword';
import PublicContactForm from './pages/PublicContactForm' import PublicContactForm from '@/pages/PublicContactForm';
const RequireRole = ({ allowedRoles = [], children }) => { const RequireRole = ({ allowedRoles = [], children }) => {
let role let role

View File

@ -1,15 +1,15 @@
import React from 'react'; import React from 'react';
import { NavLink, useNavigate } from 'react-router-dom'; import { NavLink, useNavigate } from 'react-router-dom';
import Logo from '../../assets/images/fcsclogo.svg'; import Logo from '@/assets/images/fcsclogo.svg';
import DashboardIconActive from '../../assets/images/cuida_dashboard-outline.svg'; import DashboardIconActive from '@/assets/images/cuida_dashboard-outline.svg';
import DashboardIconInactive from '../../assets/images/cuida_dashboard-outline-inactive.svg'; import DashboardIconInactive from '@/assets/images/cuida_dashboard-outline-inactive.svg';
import CheckCircleActive from '../../assets/images/checkcircle-active.svg'; import CheckCircleActive from '@/assets/images/checkcircle-active.svg';
import ConfigActive from '../../assets/images/configrationicon-active.svg'; import ConfigActive from '@/assets/images/configrationicon-active.svg';
import ConfigInactive from '../../assets/images/configrationicon-inactive.svg'; import ConfigInactive from '@/assets/images/configrationicon-inactive.svg';
import UserActive from '../../assets/images/user-active.svg'; import UserActive from '@/assets/images/user-active.svg';
import UserInactive from '../../assets/images/user-inactive.svg'; import UserInactive from '@/assets/images/user-inactive.svg';
import ManageSubmissionInactive from '../../assets/images/managesubmission - inactive.svg'; import ManageSubmissionInactive from '@/assets/images/managesubmission - inactive.svg';
import BellIconAsset from '../../assets/images/bell.svg'; import BellIconAsset from '@/assets/images/bell.svg';
const NavItem = ({ label, to, iconActive, iconInactive, end = false }) => ( const NavItem = ({ label, to, iconActive, iconInactive, end = false }) => (
<NavLink <NavLink

View File

@ -1,6 +1,6 @@
import React from 'react'; import React from 'react';
import Table from '../common/Table'; import Table from '@/components/common/Table';
import SearchIcon from '../../assets/images/material-symbols_search-rounded.svg'; import SearchIcon from '@/assets/images/material-symbols_search-rounded.svg';
const submissions = [ const submissions = [
{ {

View File

@ -1,6 +1,6 @@
import React from 'react'; import React from 'react';
import CaretDownActive from '../../assets/images/caretdown-active.svg'; import CaretDownActive from '@/assets/images/caretdown-active.svg';
import CalendarIcon from '../../assets/images/uil_calender.svg'; import CalendarIcon from '@/assets/images/uil_calender.svg';
const baseInputStyles = { const baseInputStyles = {
default: { default: {

View File

@ -1,8 +1,8 @@
import React from 'react'; import React from 'react';
import CaretLeftIcon from '../../assets/images/caretleft.svg'; import CaretLeftIcon from '@/assets/images/caretleft.svg';
import CaretRightIcon from '../../assets/images/caretright.svg'; import CaretRightIcon from '@/assets/images/caretright.svg';
import CaretDoubleLeftIcon from '../../assets/images/caretdoubleleft.svg'; import CaretDoubleLeftIcon from '@/assets/images/caretdoubleleft.svg';
import CaretDoubleRightIcon from '../../assets/images/caretdoubleright.svg'; import CaretDoubleRightIcon from '@/assets/images/caretdoubleright.svg';
// Generic, reusable table // Generic, reusable table
// Props: // Props:

View File

@ -1,8 +1,8 @@
import React from 'react'; import React from 'react';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import Table from '../common/Table'; import Table from '@/components/common/Table';
import SearchIcon from '../../assets/images/material-symbols_search-rounded.svg'; import SearchIcon from '@/assets/images/material-symbols_search-rounded.svg';
import CaretDown from '../../assets/images/caretdown.svg'; import CaretDown from '@/assets/images/caretdown.svg';
const getStatusClass = (status) => { const getStatusClass = (status) => {
const normalized = String(status || '').toLowerCase(); const normalized = String(status || '').toLowerCase();

View File

@ -1,5 +1,5 @@
import React from 'react'; import React from 'react';
import HeaderBar from '../../components/layout/HeaderBar'; import HeaderBar from '@/components/layout/HeaderBar';
const formatDate = (value) => { const formatDate = (value) => {
if (!value) return '—'; if (!value) return '—';

View File

@ -1,12 +1,12 @@
import React from 'react'; import React from 'react';
import { NavLink, useNavigate } from 'react-router-dom'; import { NavLink, useNavigate } from 'react-router-dom';
import Logo from '../../assets/images/fcsclogo.svg'; import Logo from '@/assets/images/fcsclogo.svg';
import SurveyIconActive from '../../assets/images/vector.svg'; import SurveyIconActive from '@/assets/images/vector.svg';
import SurveyIconInactive from '../../assets/images/vectorblack.svg'; import SurveyIconInactive from '@/assets/images/vectorblack.svg';
import DashboardIconActive from '../../assets/images/cuida_dashboard-outline.svg'; import DashboardIconActive from '@/assets/images/cuida_dashboard-outline.svg';
import DashboardIconInactive from '../../assets/images/cuida_dashboard-outline-inactive.svg'; import DashboardIconInactive from '@/assets/images/cuida_dashboard-outline-inactive.svg';
import HistoryIconActive from '../../assets/images/mdi_history.svg'; import HistoryIconActive from '@/assets/images/mdi_history.svg';
import HistoryIconInactive from '../../assets/images/history.svg'; import HistoryIconInactive from '@/assets/images/history.svg';
const HeaderBar = () => { const HeaderBar = () => {
const [open, setOpen] = React.useState(false); const [open, setOpen] = React.useState(false);

View File

@ -1,6 +1,6 @@
import React from 'react'; import React from 'react';
import CaretDown from '../../../assets/images/caretdown.svg'; import CaretDown from '@/assets/images/caretdown.svg';
import BackVendor from '../../../assets/images/backvector.svg'; import BackVendor from '@/assets/images/backvector.svg';
const Field = ({ label, placeholder = '', type = 'text', value = '', onChange = () => {}, disabled = false }) => ( const Field = ({ label, placeholder = '', type = 'text', value = '', onChange = () => {}, disabled = false }) => (
<div> <div>

View File

@ -4,8 +4,8 @@ import {
fetchZeroTargetReasons, fetchZeroTargetReasons,
fetchProducts, fetchProducts,
fetchUnits, fetchUnits,
} from '../../../services/masters/masterService.js'; } from '@/services/masters/masterService.js';
import CaretDown from '../../../assets/images/caretdown-black.svg'; import CaretDown from '@/assets/images/caretdown-black.svg';
const Input = ({ placeholder = '', type = 'text', value = '', onChange = () => {} }) => ( const Input = ({ placeholder = '', type = 'text', value = '', onChange = () => {} }) => (
<input <input

View File

@ -1,6 +1,6 @@
import React from 'react'; import React from 'react';
import Table from '../../common/Table'; import Table from '@/components/common/Table';
import BackVendor from '../../../assets/images/caretdown-black.svg'; import BackVendor from '@/assets/images/caretdown-black.svg';
const Card = ({ title, children }) => ( const Card = ({ title, children }) => (
<div className="bg-white w-full rounded-lg shadow-sm ring-1 ring-gray-200"> <div className="bg-white w-full rounded-lg shadow-sm ring-1 ring-gray-200">

View File

@ -1,8 +1,8 @@
import React from 'react' import React from 'react';
import ReactDOM from 'react-dom/client' import ReactDOM from 'react-dom/client';
import App from './App.jsx' import { BrowserRouter } from 'react-router-dom';
import './index.css' import App from '@/App';
import { BrowserRouter } from 'react-router-dom' import '@/index.css';
ReactDOM.createRoot(document.getElementById('root')).render( ReactDOM.createRoot(document.getElementById('root')).render(
<React.StrictMode> <React.StrictMode>

View File

@ -1,13 +1,13 @@
import React from 'react'; import React from 'react';
import AdminHeader from '../../components/admin/AdminHeader'; import AdminHeader from '@/components/admin/AdminHeader';
import StatCard from '../../components/admin/StatCard'; import StatCard from '@/components/admin/StatCard';
import WpfSurveyIcon from '../../assets/images/wpf_survey.svg'; import WpfSurveyIcon from '@/assets/images/wpf_survey.svg';
import SubmittedIcon from '../../assets/images/check-circle-fill 1.svg'; import SubmittedIcon from '@/assets/images/check-circle-fill 1.svg';
import ApprovedIcon from '../../assets/images/check-circle-fill 1-approved.svg'; import ApprovedIcon from '@/assets/images/check-circle-fill 1-approved.svg';
import RejectedIcon from '../../assets/images/warning-circle-fill 1.svg'; import RejectedIcon from '@/assets/images/warning-circle-fill 1.svg';
import OverdueIcon from '../../assets/images/warning-fill 1.svg'; import OverdueIcon from '@/assets/images/warning-fill 1.svg';
import PendingIcon from '../../assets/images/info-fill 1.svg'; import PendingIcon from '@/assets/images/info-fill 1.svg';
import SubmissionTable from '../../components/admin/SubmissionTable'; import SubmissionTable from '@/components/admin/SubmissionTable';
const AdminDashboard = () => { const AdminDashboard = () => {
return ( return (

View File

@ -1,8 +1,8 @@
import React from 'react'; import React from 'react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import AdminHeader from '../../components/admin/AdminHeader'; import AdminHeader from '@/components/admin/AdminHeader';
import AdminUsersContent from './configuration/AdminUsers'; import AdminUsersContent from './configuration/AdminUsers';
import CaretUp from '../../assets/images/caret-up.svg'; import CaretUp from '@/assets/images/caret-up.svg';
const AdminUsersPage = () => { const AdminUsersPage = () => {
return ( return (

View File

@ -1,12 +1,12 @@
import React from 'react'; import React from 'react';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import AdminHeader from '../../components/admin/AdminHeader'; import AdminHeader from '@/components/admin/AdminHeader';
import QuarterlyWindows from './configuration/QuarterlyWindows'; import QuarterlyWindows from '@/pages/Admin/configuration/QuarterlyWindows';
import IsicHsCodes from './configuration/IsicHsCodes'; import IsicHsCodes from '@/pages/Admin/configuration/IsicHsCodes';
import UnitMaster from './configuration/UnitMaster'; import UnitMaster from '@/pages/Admin/configuration/UnitMaster';
import AdminUsers from './configuration/AdminUsers'; import AdminUsers from '@/pages/Admin/configuration/AdminUsers';
import CompanyProfile from './configuration/CompanyProfile'; import CompanyProfile from '@/pages/Admin/configuration/CompanyProfile';
import CaretUp from '../../assets/images/caret-up.svg'; import CaretUp from '@/assets/images/caret-up.svg';
const Configuration = () => { const Configuration = () => {
const tabs = ['Quarterly Windows', 'HS Codes', 'Unit Master', 'Admin Users', 'Company Profile']; const tabs = ['Quarterly Windows', 'HS Codes', 'Unit Master', 'Admin Users', 'Company Profile'];

View File

@ -1,16 +1,16 @@
import React from 'react'; import React from 'react';
import { Link, useNavigate, useParams } from 'react-router-dom'; import { Link, useNavigate, useParams } from 'react-router-dom';
import AdminHeader from '../../components/admin/AdminHeader'; import AdminHeader from '@/components/admin/AdminHeader';
import CaretUp from '../../assets/images/caret-up.svg'; import CaretUp from '@/assets/images/caret-up.svg';
import EstablishmentIcon from '../../assets/images/establishment.svg'; import EstablishmentIcon from '@/assets/images/establishment.svg';
import EstablishmentIdIcon from '../../assets/images/establishmentid.svg'; import EstablishmentIdIcon from '@/assets/images/establishmentid.svg';
import EmailIcon from '../../assets/images/emailid.svg'; import EmailIcon from '@/assets/images/emailid.svg';
import EmiratesIcon from '../../assets/images/emirates.svg'; import EmiratesIcon from '@/assets/images/emirates.svg';
import TotalEmployeesIcon from '../../assets/images/totalemployess.svg'; import TotalEmployeesIcon from '@/assets/images/totalemployess.svg';
import MaleEmployeesIcon from '../../assets/images/maleemployes.svg'; import MaleEmployeesIcon from '@/assets/images/maleemployes.svg';
import FemaleEmployeesIcon from '../../assets/images/femaleemployess.svg'; import FemaleEmployeesIcon from '@/assets/images/femaleemployess.svg';
import UaeIcon from '../../assets/images/uae.svg'; import UaeIcon from '@/assets/images/uae.svg';
import NonUaeIcon from '../../assets/images/nonuae.svg'; import NonUaeIcon from '@/assets/images/nonuae.svg';
const establishmentDetails = [ const establishmentDetails = [
{ label: 'Establishment Name', value: 'ABC Manufacturing LLC' }, { label: 'Establishment Name', value: 'ABC Manufacturing LLC' },

View File

@ -1,12 +1,12 @@
import React from 'react'; import React from 'react';
import { Link, useNavigate } from 'react-router-dom'; import { Link, useNavigate } from 'react-router-dom';
import AdminHeader from '../../components/admin/AdminHeader'; import AdminHeader from '@/components/admin/AdminHeader';
import Table from '../../components/common/Table'; import Table from '@/components/common/Table';
import SearchIcon from '../../assets/images/material-symbols_search-rounded.svg'; import { SelectField } from '@/components/common/FormControls';
import DownloadIcon from '../../assets/images/downloadsimple.svg'; import { getSubmissions } from '@/services/admin/submission';
import CaretUp from '../../assets/images/caret-up.svg'; import SearchIcon from '@/assets/images/material-symbols_search-rounded.svg';
import { SelectField } from '../../components/common/FormControls'; import DownloadIcon from '@/assets/images/downloadsimple.svg';
import { getSubmissions } from '../../services/admin/submission.js'; import CaretUp from '@/assets/images/caret-up.svg';
const STATUS_VARIANTS = { const STATUS_VARIANTS = {
Approved: { background: '#F3FAF4', text: '#2F663C', border: '#F3FAF4' }, Approved: { background: '#F3FAF4', text: '#2F663C', border: '#F3FAF4' },

View File

@ -1,17 +1,17 @@
import React from 'react'; import React from 'react';
import Table from '../../../components/common/Table'; import Table from '@/components/common/Table';
import SearchIcon from '../../../assets/images/material-symbols_search-rounded.svg'; import SearchIcon from '@/assets/images/material-symbols_search-rounded.svg';
import ExportIcon from '../../../assets/images/downloadsimple.svg'; import ExportIcon from '@/assets/images/downloadsimple.svg';
import AddIcon from '../../../assets/images/ic_baseline-plus.svg'; import AddIcon from '@/assets/images/ic_baseline-plus.svg';
import PencilActive from '../../../assets/images/pencilsimple.svg'; import PencilActive from '@/assets/images/pencilsimple.svg';
import PencilInactive from '../../../assets/images/pencilsimple-inactive.svg'; import PencilInactive from '@/assets/images/pencilsimple-inactive.svg';
import TrashActive from '../../../assets/images/trash - active.svg'; import TrashActive from '@/assets/images/trash - active.svg';
import TrashInactive from '../../../assets/images/trash - inactive.svg'; import TrashInactive from '@/assets/images/trash - inactive.svg';
import AdminUserIcon from '../../../assets/images/usergear.svg'; import AdminUserIcon from '@/assets/images/usergear.svg';
import ActiveUserIcon from '../../../assets/images/active-user.svg'; import ActiveUserIcon from '@/assets/images/active-user.svg';
import InactiveUserIcon from '../../../assets/images/inactive-user.svg'; import InactiveUserIcon from '@/assets/images/inactive-user.svg';
import ResetPasswordIcon from '../../../assets/images/hugeicons_reset-password.svg'; import ResetPasswordIcon from '@/assets/images/hugeicons_reset-password.svg';
import ResetPasswordInactiveIcon from '../../../assets/images/hugeicons_reset-password-inactive.svg'; import ResetPasswordInactiveIcon from '@/assets/images/hugeicons_reset-password-inactive.svg';
const SummaryCard = ({ label, count, icon, iconBg = '#FDF7EB' }) => ( const SummaryCard = ({ label, count, icon, iconBg = '#FDF7EB' }) => (
<div className="flex min-h-[96px] min-w-[220px] flex-1 items-center justify-between rounded-[16px] border border-[#E6EAF5] bg-white px-6 py-5 shadow-[0_12px_24px_rgba(15,23,42,0.06)]"> <div className="flex min-h-[96px] min-w-[220px] flex-1 items-center justify-between rounded-[16px] border border-[#E6EAF5] bg-white px-6 py-5 shadow-[0_12px_24px_rgba(15,23,42,0.06)]">

View File

@ -1,25 +1,25 @@
import React from 'react'; import React from 'react';
import Table from '../../../components/common/Table'; import Table from '@/components/common/Table';
import Loader from '../../../components/common/Loader'; import Loader from '@/components/common/Loader';
import { TextField, SelectField, PhoneField } from '../../../components/common/FormControls'; import { TextField, SelectField, PhoneField } from '@/components/common/FormControls';
import { fetchEmirates, fetchCityTowns } from '../../../services/masters/masterService'; import { fetchEmirates, fetchCityTowns } from '@/services/masters/masterService';
import { import {
createEstablishment, createEstablishment,
fetchEstablishments, fetchEstablishments,
fetchEstablishmentDetail, fetchEstablishmentDetail,
updateEstablishment, updateEstablishment,
deleteEstablishment, deleteEstablishment,
} from '../../../services/establishments/establishmentService'; } from '@/services/establishments/establishmentService';
import SearchIcon from '../../../assets/images/material-symbols_search-rounded.svg'; import SearchIcon from '@/assets/images/material-symbols_search-rounded.svg';
import DownloadIcon from '../../../assets/images/downloadsimple.svg'; import DownloadIcon from '@/assets/images/downloadsimple.svg';
import AddIcon from '../../../assets/images/ic_baseline-plus.svg'; import AddIcon from '@/assets/images/ic_baseline-plus.svg';
import PencilActive from '../../../assets/images/pencilsimple.svg'; import PencilActive from '@/assets/images/pencilsimple.svg';
import PencilInactive from '../../../assets/images/pencilsimple-inactive.svg'; import PencilInactive from '@/assets/images/pencilsimple-inactive.svg';
import TrashActive from '../../../assets/images/trash - active.svg'; import TrashActive from '@/assets/images/trash - active.svg';
import TrashInactive from '../../../assets/images/trash - inactive.svg'; import TrashInactive from '@/assets/images/trash - inactive.svg';
import ResetPasswordActive from '../../../assets/images/hugeicons_reset-password.svg'; import ResetPasswordActive from '@/assets/images/hugeicons_reset-password.svg';
import ResetPasswordInactive from '../../../assets/images/hugeicons_reset-password-inactive.svg'; import ResetPasswordInactive from '@/assets/images/hugeicons_reset-password-inactive.svg';
import DeleteIcon from '../../../assets/images/delete.svg'; import DeleteIcon from '@/assets/images/delete.svg';
const PASSWORD_POLICY = { const PASSWORD_POLICY = {
minLength: 12, minLength: 12,

View File

@ -1,5 +1,5 @@
import React from 'react'; import React from 'react';
import { SelectField, TextField } from '../../../components/common/FormControls'; import { SelectField, TextField } from '@/components/common/FormControls';
const initialTemplate = { const initialTemplate = {
subject: 'IPI Survey Submission Reminder - {{quarter}}', subject: 'IPI Survey Submission Reminder - {{quarter}}',

View File

@ -1,13 +1,13 @@
import React from 'react'; import React from 'react';
import Table from '../../../components/common/Table'; import Table from '@/components/common/Table';
import { TextField, SelectField } from '../../../components/common/FormControls'; import { TextField, SelectField } from '@/components/common/FormControls';
import SearchIcon from '../../../assets/images/material-symbols_search-rounded.svg'; import SearchIcon from '@/assets/images/material-symbols_search-rounded.svg';
import ExportIcon from '../../../assets/images/downloadsimple.svg'; import ExportIcon from '@/assets/images/downloadsimple.svg';
import AddIcon from '../../../assets/images/ic_baseline-plus.svg'; import AddIcon from '@/assets/images/ic_baseline-plus.svg';
import PencilActive from '../../../assets/images/pencilsimple.svg'; import PencilActive from '@/assets/images/pencilsimple.svg';
import PencilInactive from '../../../assets/images/pencilsimple-inactive.svg'; import PencilInactive from '@/assets/images/pencilsimple-inactive.svg';
import TrashActive from '../../../assets/images/trash - active.svg'; import TrashActive from '@/assets/images/trash - active.svg';
import TrashInactive from '../../../assets/images/trash - inactive.svg'; import TrashInactive from '@/assets/images/trash - inactive.svg';
const establishmentsSeed = [ const establishmentsSeed = [
{ {

View File

@ -1,15 +1,15 @@
import React from 'react'; import React from 'react';
import Table from '../../../components/common/Table'; import Table from '@/components/common/Table';
import DownloadIcon from '../../../assets/images/downloadsimple.svg'; import DownloadIcon from '@/assets/images/downloadsimple.svg';
import UploadImportIcon from '../../../assets/images/upload-import.svg'; import UploadImportIcon from '@/assets/images/upload-import.svg';
import AddIcon from '../../../assets/images/ic_baseline-plus.svg'; import AddIcon from '@/assets/images/ic_baseline-plus.svg';
import PencilActive from '../../../assets/images/pencilsimple.svg'; import PencilActive from '@/assets/images/pencilsimple.svg';
import PencilInactive from '../../../assets/images/pencilsimple-inactive.svg'; import PencilInactive from '@/assets/images/pencilsimple-inactive.svg';
import TrashActive from '../../../assets/images/trash - active.svg'; import TrashActive from '@/assets/images/trash - active.svg';
import TrashInactive from '../../../assets/images/trash - inactive.svg'; import TrashInactive from '@/assets/images/trash - inactive.svg';
import DeleteIcon from '../../../assets/images/delete.svg'; import DeleteIcon from '@/assets/images/delete.svg';
import StatusBadge from '../../../components/common/StatusBadge'; import StatusBadge from '@/components/common/StatusBadge';
import { TextField, SelectField } from '../../../components/common/FormControls'; import { TextField, SelectField } from '@/components/common/FormControls';
const createEmptyCodeForm = () => ({ const createEmptyCodeForm = () => ({
code: '', code: '',

View File

@ -1,17 +1,17 @@
import React from 'react'; import React from 'react';
import Table from '../../../components/common/Table'; import Table from '@/components/common/Table';
import DownloadIcon from '../../../assets/images/downloadsimple.svg'; import { TextField, SelectField, DateField } from '@/components/common/FormControls';
import AddIcon from '../../../assets/images/ic_baseline-plus.svg'; import StatusBadge from '@/components/common/StatusBadge';
import PencilActive from '../../../assets/images/pencilsimple.svg'; import DownloadIcon from '@/assets/images/downloadsimple.svg';
import PencilInactive from '../../../assets/images/pencilsimple-inactive.svg'; import AddIcon from '@/assets/images/ic_baseline-plus.svg';
import TrashActive from '../../../assets/images/trash - active.svg'; import PencilActive from '@/assets/images/pencilsimple.svg';
import TrashInactive from '../../../assets/images/trash - inactive.svg'; import PencilInactive from '@/assets/images/pencilsimple-inactive.svg';
import DeleteIcon from '../../../assets/images/delete.svg'; import TrashActive from '@/assets/images/trash - active.svg';
import CaretDownActive from '../../../assets/images/caretdown-active.svg'; import TrashInactive from '@/assets/images/trash - inactive.svg';
import SearchIcon from '../../../assets/images/material-symbols_search-rounded.svg'; import DeleteIcon from '@/assets/images/delete.svg';
import CaretDown from '../../../assets/images/caretdown-black.svg'; import CaretDownActive from '@/assets/images/caretdown-active.svg';
import { TextField, SelectField, DateField } from '../../../components/common/FormControls'; import SearchIcon from '@/assets/images/material-symbols_search-rounded.svg';
import StatusBadge from '../../../components/common/StatusBadge'; import CaretDown from '@/assets/images/caretdown-black.svg';
const createEmptyQuarterForm = () => ({ const createEmptyQuarterForm = () => ({
establishment: '', establishment: '',

View File

@ -1,5 +1,5 @@
import React from 'react'; import React from 'react';
import { TextField } from '../../../components/common/FormControls'; import { TextField } from '@/components/common/FormControls';
const SubmissionDeadlines = () => { const SubmissionDeadlines = () => {
const [form, setForm] = React.useState({ const [form, setForm] = React.useState({

View File

@ -1,17 +1,17 @@
import React from 'react'; import React from 'react';
import Table from '../../../components/common/Table'; import Table from '@/components/common/Table';
import DownloadIcon from '../../../assets/images/downloadsimple.svg'; import DownloadIcon from '@/assets/images/downloadsimple.svg';
import AddIcon from '../../../assets/images/ic_baseline-plus.svg'; import AddIcon from '@/assets/images/ic_baseline-plus.svg';
import PencilActive from '../../../assets/images/pencilsimple.svg'; import PencilActive from '@/assets/images/pencilsimple.svg';
import PencilInactive from '../../../assets/images/pencilsimple-inactive.svg'; import PencilInactive from '@/assets/images/pencilsimple-inactive.svg';
import TrashActive from '../../../assets/images/trash - active.svg'; import TrashActive from '@/assets/images/trash - active.svg';
import TrashInactive from '../../../assets/images/trash - inactive.svg'; import TrashInactive from '@/assets/images/trash - inactive.svg';
import DeleteIcon from '../../../assets/images/delete.svg'; import DeleteIcon from '@/assets/images/delete.svg';
import StatusBadge from '../../../components/common/StatusBadge'; import StatusBadge from '@/components/common/StatusBadge';
import { TextField, SelectField } from '../../../components/common/FormControls'; import { TextField, SelectField } from '@/components/common/FormControls';
import CaretDownIcon from '../../../assets/images/caretdown-active.svg'; import CaretDownIcon from '@/assets/images/caretdown-active.svg';
import RectangleIcon from '../../../assets/images/rectangle.svg'; import RectangleIcon from '@/assets/images/rectangle.svg';
import CheckboxIcon from '../../../assets/images/checkbox.svg'; import CheckboxIcon from '@/assets/images/checkbox.svg';
const createEmptyUnitForm = () => ({ const createEmptyUnitForm = () => ({
unitName: '', unitName: '',

View File

@ -1,7 +1,7 @@
import React from "react"; import React from 'react';
import Logo from "../../assets/images/fcsclogo.svg"; import { useNavigate, useLocation } from 'react-router-dom';
import { useNavigate, useLocation } from "react-router-dom"; import Logo from '@/assets/images/fcsclogo.svg';
import apiClient from "../../services/api/apiClient.js"; import apiClient from '@/services/api/apiClient';
const ChangePassword = () => { const ChangePassword = () => {
const navigate = useNavigate(); const navigate = useNavigate();

View File

@ -1,8 +1,8 @@
import React from 'react'; import React from 'react';
import { WelcomeSection } from '../../components/dashboard/WelcomeSection'; import { WelcomeSection } from '@/components/dashboard/WelcomeSection';
import { SurveyStatus } from '../../components/dashboard/SurveyStatus'; import { SurveyStatus } from '@/components/dashboard/SurveyStatus';
import { SubmissionHistory } from '../../components/dashboard/SubmissionHistory'; import { SubmissionHistory } from '@/components/dashboard/SubmissionHistory';
import { fetchEstablishmentDashboard } from '../../services/establishments/establishmentService.js'; import { fetchEstablishmentDashboard } from '@/services/establishments/establishmentService.js';
const Dashboard = () => { const Dashboard = () => {
const [dashboardData, setDashboardData] = React.useState(null); const [dashboardData, setDashboardData] = React.useState(null);

View File

@ -1,7 +1,7 @@
import React from 'react'; import React from 'react';
import Logo from '../../assets/images/fcsclogo.svg';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { requestPasswordReset } from '../../services/auth/authService.js'; import Logo from '@/assets/images/fcsclogo.svg';
import { requestPasswordReset } from '@/services/auth/authService.js';
const ForgotPassword = () => { const ForgotPassword = () => {
const navigate = useNavigate(); const navigate = useNavigate();

View File

@ -1,10 +1,10 @@
import React from 'react'; import React from 'react';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import Table from '../../components/common/Table'; import Table from '@/components/common/Table';
import HeaderBar from '../../components/layout/HeaderBar'; import HeaderBar from '@/components/layout/HeaderBar';
import { fetchSubmissionHistory } from '../../services/submissions/submissionService.js'; import { fetchSubmissionHistory } from '@/services/submissions/submissionService.js';
import SearchIcon from '../../assets/images/material-symbols_search-rounded.svg'; import SearchIcon from '@/assets/images/material-symbols_search-rounded.svg';
import CaretDown from '../../assets/images/caretdown.svg'; import CaretDown from '@/assets/images/caretdown.svg';
const Badge = ({ variant = 'default', children }) => { const Badge = ({ variant = 'default', children }) => {
const styles = { const styles = {

View File

@ -1,7 +1,7 @@
import React from 'react'; import React from 'react';
import Logo from '../../assets/images/fcsclogo.svg';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { login } from '../../services/auth/authService.js'; import Logo from '@/assets/images/fcsclogo.svg';
import { login } from '@/services/auth/authService.js';
const Login = () => { const Login = () => {
const navigate = useNavigate(); const navigate = useNavigate();

View File

@ -1,7 +1,7 @@
import React, { useState, useEffect } from "react"; import React, { useState, useEffect } from 'react';
import Logo from "../assets/images/fcsclogo.svg"; import { useNavigate } from 'react-router-dom';
import { useNavigate } from "react-router-dom"; import Logo from '@/assets/images/fcsclogo.svg';
import apiClient from "../services/api/apiClient.js"; import apiClient from '@/services/api/apiClient';
const PublicContactForm = () => { const PublicContactForm = () => {
const navigate = useNavigate(); const navigate = useNavigate();

View File

@ -1,12 +1,12 @@
import React from 'react'; import React from 'react';
import { useLocation, useNavigate } from 'react-router-dom'; import { useLocation, useNavigate } from 'react-router-dom';
import { submitSurvey, fetchSubmissionDetail } from '../../services/submissions/submissionService.js'; import { submitSurvey, fetchSubmissionDetail } from '@/services/submissions/submissionService';
import { fetchEstablishmentDetail } from '../../services/establishments/establishmentService.js'; import { fetchEstablishmentDetail } from '@/services/establishments/establishmentService';
import EstablishmentInfo from '../../components/survey/EstablishmentInfo/EstablishmentInfo'; import EstablishmentInfo from '@/components/survey/EstablishmentInfo/EstablishmentInfo';
import HeaderBar from '../../components/layout/HeaderBar'; import HeaderBar from '@/components/layout/HeaderBar';
import ProductData from '../../components/survey/ProductData/ProductData'; import ProductData from '@/components/survey/ProductData/ProductData';
import ReviewSubmit from '../../components/survey/ReviewSubmit/ReviewSubmit'; import ReviewSubmit from '@/components/survey/ReviewSubmit/ReviewSubmit';
import CheckCircleActive from '../../assets/images/circleframe.svg'; import CheckCircleActive from '@/assets/images/circleframe.svg';
const createEmptyProduct = (id) => ({ const createEmptyProduct = (id) => ({
id, id,

View File

@ -1,10 +1,10 @@
import React from 'react'; import React from 'react';
import { Routes, Route } from 'react-router-dom'; import { Routes, Route } from 'react-router-dom';
import Dashboard from '../pages/Dashboard/Dashboard'; import Dashboard from '@/pages/Dashboard/Dashboard';
import Survey from '../pages/Survey/Survey'; import Survey from '@/pages/Survey/Survey';
import History from '../pages/History/History'; import History from '@/pages/History/History';
import Configuration from '../pages/Admin/Configuration'; import Configuration from '@/pages/Admin/Configuration';
import AdminDashboard from '../pages/Admin/AdminDashboard'; import AdminDashboard from '@/pages/Admin/AdminDashboard';
const AppRoutes = () => { const AppRoutes = () => {
return ( return (

View File

@ -1,4 +1,4 @@
import apiClient from '../api/apiClient.js'; import apiClient from '@/services/api/apiClient';
/** Fetch all submissions for the listing page */ /** Fetch all submissions for the listing page */
export const getSubmissions = async () => { export const getSubmissions = async () => {

View File

@ -1,4 +1,4 @@
import apiClient from './apiClient.js'; import apiClient from '@/services/api/apiClient';
export const getRequest = (url, config = {}) => apiClient.get(url, config); export const getRequest = (url, config = {}) => apiClient.get(url, config);

View File

@ -1,4 +1,4 @@
import apiClient from '../api/apiClient.js'; import apiClient from '@/services/api/apiClient';
export const login = async ({ email, password }) => { export const login = async ({ email, password }) => {
const response = await apiClient.post('/auth/login', { email, password }, { skipAuth: true }); const response = await apiClient.post('/auth/login', { email, password }, { skipAuth: true });

View File

@ -1,5 +1,5 @@
import { getRequest, postRequest, putRequest, deleteRequest } from '../api/CommonService.js'; import { getRequest, postRequest, putRequest, deleteRequest } from '@/services/api/CommonService';
import resolveEstablishmentId from '../utils/establishment.js'; import resolveEstablishmentId from '@/services/utils/establishment';
const dashboardEndpoint = '/establishment_dashboard'; const dashboardEndpoint = '/establishment_dashboard';
const establishmentsEndpoint = '/establishments'; const establishmentsEndpoint = '/establishments';

View File

@ -1,4 +1,4 @@
import { getRequest } from '../api/CommonService.js'; import { getRequest } from '@/services/api/CommonService';
const endpoints = { const endpoints = {
variationReasons: '/variation_reasons', variationReasons: '/variation_reasons',

View File

@ -1,5 +1,5 @@
import { getRequest, postRequest } from '../api/CommonService.js'; import { getRequest, postRequest } from '@/services/api/CommonService';
import resolveEstablishmentId from '../utils/establishment.js'; import resolveEstablishmentId from '@/services/utils/establishment';
const endpoint = '/submissions'; const endpoint = '/submissions';

View File

@ -2,11 +2,11 @@ export {
submitSurvey, submitSurvey,
fetchSubmissionHistory, fetchSubmissionHistory,
fetchSubmissionDetail, fetchSubmissionDetail,
} from '../submissions/submissionService.js'; } from '@/services/submissions/submissionService';
export { export {
fetchEstablishmentDashboard, fetchEstablishmentDashboard,
fetchEstablishmentDetail, fetchEstablishmentDetail,
} from '../establishments/establishmentService.js'; } from '@/services/establishments/establishmentService';
export { default as resolveEstablishmentId } from '../utils/establishment.js'; export { default as resolveEstablishmentId } from '@/services/utils/establishment';

View File

@ -1,3 +1,8 @@
/**
* Resolves an establishment ID from various input types
* @param {string|number} inputId - The input ID to resolve
* @returns {number|undefined} The resolved establishment ID or undefined if not found
*/
export const resolveEstablishmentId = (inputId) => { export const resolveEstablishmentId = (inputId) => {
if (typeof inputId === 'number' && Number.isFinite(inputId)) { if (typeof inputId === 'number' && Number.isFinite(inputId)) {
return inputId; return inputId;

View File

@ -0,0 +1,25 @@
{
"compilerOptions": {
"target": "ES2020",
"useDefineForClassFields": true,
"lib": ["DOM", "DOM.Iterable", "ESNext"],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "ESNext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx",
"baseUrl": ".",
"paths": {
"@assets/*": ["src/assets/*"]
}
},
"include": ["src"],
"exclude": ["node_modules", "dist"]
}

View File

@ -1,7 +1,19 @@
import { defineConfig } from 'vite' import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react' import react from '@vitejs/plugin-react';
import path from 'path';
// https://vite.dev/config/
export default defineConfig({ export default defineConfig({
plugins: [react()], plugins: [react()],
}) resolve: {
alias: {
'@': path.resolve(__dirname, 'src'),
'@assets': path.resolve(__dirname, 'src/assets'),
},
},
// Ensure Vite handles these file types
assetsInclude: ['**/*.svg', '**/*.png', '**/*.jpg', '**/*.jpeg', '**/*.gif'],
build: {
assetsDir: 'assets',
outDir: 'dist',
}
});