Merge branch 'Recent-Activities' of WrenchBoard/Users-Wrench into master

This commit is contained in:
2023-09-27 23:54:04 +00:00
committed by Gogs
5 changed files with 700 additions and 586 deletions
+143 -73
View File
@@ -1,12 +1,10 @@
import React, { import React, {
Suspense, Suspense,
lazy, lazy,
useCallback,
useEffect, useEffect,
useMemo, useMemo,
useRef, useRef,
useState, useState,
useTransition,
} from "react"; } from "react";
import { useReactToPrint } from "react-to-print"; import { useReactToPrint } from "react-to-print";
import profile from "../../assets/images/profile-info-profile.png"; import profile from "../../assets/images/profile-info-profile.png";
@@ -29,27 +27,62 @@ export default function FamilyManageTabs({
listReload, listReload,
loader, loader,
}) { }) {
// Initial state for family details
const initialDetailState = {
loading: false,
data: null,
};
// State for family details, tasks, waitlist, and pending
const [details, setDetails] = useState({ const [details, setDetails] = useState({
familyDetails: { loading: false, data: null }, familyDetails: { ...initialDetailState },
familyTasks: { loading: false, data: null }, familyTasks: { ...initialDetailState },
familyWaitList: { loading: false, data: null }, familyWaitList: { ...initialDetailState },
familyPending: { loading: false, data: null }, familyPending: { ...initialDetailState },
}); });
// Function to reset family details, tasks, waitlist, and pending
const resetDetails = () => {
setDetails({
familyDetails: { ...initialDetailState },
familyTasks: { ...initialDetailState },
familyWaitList: { ...initialDetailState },
familyPending: { ...initialDetailState },
});
};
// State for family task data
const [familyTask, setFamilyTask] = useState({ loading: false, data: [] });
// State for active task
const [activeTask, setActiveTask] = useState({ id: 0, data: {} });
// State for error messages
const [errMsg, setErrMsg] = useState(""); const [errMsg, setErrMsg] = useState("");
// State for family task popout
const [familyTaskPopout, setFamilyTaskPopout] = useState(false); const [familyTaskPopout, setFamilyTaskPopout] = useState(false);
// State for profile image
const [profileImg, setProfileImg] = useState(profile); const [profileImg, setProfileImg] = useState(profile);
// Ref for profile image input
const profileImgInput = useRef(null); const profileImgInput = useRef(null);
const [isPending, startTransition] = useTransition();
// Create an instance of the usersService class
const apiCall = useMemo(() => new usersService(), []); const apiCall = useMemo(() => new usersService(), []);
// Function to handle toggling the family task popout
const familyPopUpHandler = () => { const familyPopUpHandler = () => {
setFamilyTaskPopout((prev) => !prev); setFamilyTaskPopout((prev) => !prev);
}; };
// Function to trigger a click on the hidden profile image input
const browseProfileImg = () => { const browseProfileImg = () => {
profileImgInput.current.click(); profileImgInput.current.click();
}; };
// Function to handle changes in the profile image input
const profileImgChangeHandler = (e) => { const profileImgChangeHandler = (e) => {
if (e.target.value !== "") { if (e.target.value !== "") {
const imgReader = new FileReader(); const imgReader = new FileReader();
@@ -60,82 +93,30 @@ export default function FamilyManageTabs({
} }
}; };
const manageFamily = useCallback(async () => { // Ref for the account section
try {
setDetails((prevDetails) => ({
...prevDetails,
familyDetails: { loading: true },
familyTasks: { loading: true },
familyWaitList: { loading: true },
familyPending: { loading: true },
}));
const { family_uid } = accountDetails;
const reqData = { family_uid };
const [familyRes, tasksRes, familyWaitRes, familyPending] =
await Promise.all([
apiCall.ManageFamily(reqData),
apiCall.ManageTasks(reqData),
apiCall.ManageFamilyWaitlist(),
apiCall.ManageFamilyPending(),
]);
const familyData = familyRes.data;
const tasksData = tasksRes.data;
const familyWaitData = familyWaitRes.data;
const familyPendingData = familyPending.data;
if (
familyData?.internal_return < 0 ||
tasksData?.internal_return < 0 ||
familyWaitData?.internal_return < 0 ||
familyPendingData?.internal_return < 0
) {
return;
}
startTransition(() => {
setDetails({
familyDetails: { loading: false, data: familyData },
familyTasks: { loading: false, data: tasksData },
familyWaitList: { loading: false, data: familyWaitData },
familyPending: { loading: false, data: familyPendingData },
});
});
} catch (error) {
setDetails((prevDetails) => ({
...prevDetails,
familyDetails: { loading: false },
familyTasks: { loading: false },
familyWaitList: { loading: false },
familyPending: { loading: false },
}));
setErrMsg("An error occurred");
throw new Error(error);
}
}, [apiCall, accountDetails]);
const accountRef = useRef(); const accountRef = useRef();
// React-to-Print hook for handling printing
const useHandlePrint = useReactToPrint({ const useHandlePrint = useReactToPrint({
content: () => accountRef.current, content: () => accountRef.current,
}); });
// Array of tab names
const tabs = [ const tabs = [
{ id: 1, name: "Tasks" }, { id: 1, name: "Tasks" },
{ id: 2, name: "Waiting" }, { id: 2, name: "Waiting" },
{ id: 3, name: "Pending" }, { id: 3, name: "Pending" },
]; ];
// State for the currently selected tab
const [tab, setTab] = useState(tabs[0].name); const [tab, setTab] = useState(tabs[0].name);
// Function to handle tab changes
const tabHandler = (value) => { const tabHandler = (value) => {
startTransition(() => {
setTab(value); setTab(value);
});
}; };
// Object that maps tab names to their corresponding components
const tabComponents = { const tabComponents = {
Tasks: ( Tasks: (
<FamilyTasks <FamilyTasks
@@ -156,7 +137,7 @@ export default function FamilyManageTabs({
<FamilyPending <FamilyPending
familyData={details.familyPending.data} familyData={details.familyPending.data}
accountDetails={accountDetails} accountDetails={accountDetails}
loader={details.familyWaitList.loading} loader={details.familyPending.loading}
/> />
), ),
Account: ( Account: (
@@ -170,6 +151,7 @@ export default function FamilyManageTabs({
Profile: <FamilyProfile />, Profile: <FamilyProfile />,
}; };
// Default tab component
const defaultTabComponent = ( const defaultTabComponent = (
<FamilyTasks <FamilyTasks
className={className} className={className}
@@ -179,17 +161,101 @@ export default function FamilyManageTabs({
/> />
); );
// Selected tab component based on the current 'tab'
const selectedTabComponent = tabComponents[tab] || defaultTabComponent; const selectedTabComponent = tabComponents[tab] || defaultTabComponent;
// Effect to manage family details and related data
useEffect(() => { useEffect(() => {
let __manageFamily = true; const manageFamily = async () => {
if (__manageFamily) { try {
manageFamily(); resetDetails();
setDetails({
familyDetails: { loading: true },
familyTasks: { loading: true },
familyWaitList: { loading: true },
familyPending: { loading: true },
});
const { family_uid } = accountDetails;
const reqData = { family_uid };
const [familyRes, tasksRes, familyWaitRes, familyPending] =
await Promise.all([
apiCall.ManageFamily(reqData),
apiCall.ManageTasks(reqData),
apiCall.ManageFamilyWaitlist(),
apiCall.ManageFamilyPending(),
]);
const familyData = familyRes.data;
const tasksData = tasksRes.data;
const familyWaitData = familyWaitRes.data;
const familyPendingData = familyPending.data;
// Function to check for errors in data
const checkDataError = (data) => data?.internal_return < 0;
if (
checkDataError(familyData) ||
checkDataError(tasksData) ||
checkDataError(familyWaitData) ||
checkDataError(familyPendingData)
) {
return;
}
setDetails({
familyDetails: { loading: false, data: familyData },
familyTasks: { loading: false, data: tasksData },
familyWaitList: { loading: false, data: familyWaitData },
familyPending: { loading: false, data: familyPendingData },
});
} catch (error) {
resetDetails();
setErrMsg("An error occurred");
throw new Error(error);
} }
return () => {
__manageFamily = false;
}; };
}, [tab, manageFamily]);
// Invoke the manageFamily function when the component mounts
manageFamily();
}, []);
// Effect to manage family tasks
useEffect(() => {
let checkFamilyTask = true;
const reqData = {
limit: 30,
offset: 0,
job_type: "FAMILY",
action: 13005,
};
if (checkFamilyTask) {
setFamilyTask({ loading: true });
apiCall
.getMyJobList(reqData)
.then((res) => {
setFamilyTask({ loading: false, data: res?.data?.result_list });
if (res?.data?.result_list?.length) {
setActiveTask((prev) => ({
...prev,
data: res?.data?.result_list[0],
}));
}
})
.catch((err) => {
setFamilyTask({ loading: false, data: [] });
console.log("Error", err);
});
}
// Cleanup function to prevent memory leaks
return () => {
checkFamilyTask = false;
};
}, []);
return ( return (
<div <div
@@ -285,7 +351,11 @@ export default function FamilyManageTabs({
<AssignTaskPopout <AssignTaskPopout
action={familyPopUpHandler} action={familyPopUpHandler}
situation={familyTaskPopout} situation={familyTaskPopout}
familyDetails={details.familyDetails.data} familyTask={familyTask}
setFamilyTask={setFamilyTask}
setActiveTask={setActiveTask}
activeTask={activeTask}
familyDetailsData={details.familyDetails.data}
/> />
)} )}
</div> </div>
@@ -1,12 +1,21 @@
import React, { useState, useEffect, useTransition } from "react"; import React, { useState } from "react";
import ModalCom from "../../Helpers/ModalCom";
import Detail from "../../jobPopout/popoutcomponent/Detail";
import usersService from "../../../services/UsersService"; import usersService from "../../../services/UsersService";
import LoadingSpinner from "../../Spinners/LoadingSpinner"; import ModalCom from "../../Helpers/ModalCom";
import { PriceFormatter } from "../../Helpers/PriceFormatter"; import { PriceFormatter } from "../../Helpers/PriceFormatter";
import LoadingSpinner from "../../Spinners/LoadingSpinner";
import Detail from "../../jobPopout/popoutcomponent/Detail";
import { NewTasks } from "./forms"; import { NewTasks } from "./forms";
const AssignTaskPopout = React.memo(({ action, details, situation, familyDetails }) => { const AssignTaskPopout = React.memo(
({
action,
details,
situation,
familyDetailsData,
familyTask,
activeTask,
setActiveTask,
}) => {
const apiCall = new usersService(); const apiCall = new usersService();
let [requestStatus, setRequestStatus] = useState({ let [requestStatus, setRequestStatus] = useState({
@@ -15,12 +24,8 @@ const AssignTaskPopout = React.memo(({ action, details, situation, familyDetail
message: "", message: "",
}); // HOLDS RESPONSE FOR SENDING API REQUEST }); // HOLDS RESPONSE FOR SENDING API REQUEST
let [familyTask, setFamilyTask] = useState({ loading: false, data: [] });
let [taskType, setTaskType] = useState(details ? "new" : "select"); // SWITCHES BTW SELECT TASK AND NEW TASK let [taskType, setTaskType] = useState(details ? "new" : "select"); // SWITCHES BTW SELECT TASK AND NEW TASK
let [activeTask, setActiveTask] = useState({ id: 0, data: {} }); // HOLDS SELECTED TASK
const switchTaskType = ({ target: { value } }) => { const switchTaskType = ({ target: { value } }) => {
// FUNCTION TO CHANGE SELECTED ACTIVE TASK // FUNCTION TO CHANGE SELECTED ACTIVE TASK
setTaskType(value); setTaskType(value);
@@ -63,7 +68,7 @@ const AssignTaskPopout = React.memo(({ action, details, situation, familyDetail
// API PAYLOADS // API PAYLOADS
job_id: activeTask.data?.job_id, job_id: activeTask.data?.job_id,
job_uid: activeTask.data?.job_uid, job_uid: activeTask.data?.job_uid,
family_uid: familyDetails?.uid || details?.family_uid, family_uid: familyDetailsData?.uid || details?.family_uid,
job_description: activeTask.data?.description, job_description: activeTask.data?.description,
assign_mode: 110011, assign_mode: 110011,
}; };
@@ -116,7 +121,7 @@ const AssignTaskPopout = React.memo(({ action, details, situation, familyDetail
timeline_days, timeline_days,
title, title,
assign_mode: 110055, assign_mode: 110055,
family_uid: details?.family_uid || familyDetails?.uid, family_uid: details?.family_uid || familyDetailsData?.uid,
}; };
} }
@@ -155,38 +160,6 @@ const AssignTaskPopout = React.memo(({ action, details, situation, familyDetail
}); });
}; };
useEffect(() => {
let checkFamilyTask = true;
const reqData = {
limit: 30,
offset: 0,
job_type: "FAMILY",
action: 13005,
};
apiCall
.getMyJobList(reqData)
.then((res) => {
if (checkFamilyTask) {
setFamilyTask({ loading: false, data: res?.data?.result_list });
if (res?.data?.result_list?.length) {
setActiveTask((prev) => ({
...prev,
data: res?.data?.result_list[0],
}));
}
}
})
.catch((err) => {
setFamilyTask({ loading: false, data: [] });
console.log("Error", err);
});
return () => {
checkFamilyTask = false;
};
}, []);
return ( return (
<> <>
<ModalCom <ModalCom
@@ -197,7 +170,8 @@ const AssignTaskPopout = React.memo(({ action, details, situation, familyDetail
<div className="w-full h-full lg:w-[700px] lg:h-auto bg-white dark:bg-dark-white lg:rounded-2xl"> <div className="w-full h-full lg:w-[700px] lg:h-auto bg-white dark:bg-dark-white lg:rounded-2xl">
<div className="w-full flex items-center justify-between lg:px-10 lg:py-8 px-[30px] py-[23px] border-b dark:border-[#5356fb29] border-light-purple"> <div className="w-full flex items-center justify-between lg:px-10 lg:py-8 px-[30px] py-[23px] border-b dark:border-[#5356fb29] border-light-purple">
<h1 className="text-26 font-bold text-dark-gray dark:text-white tracking-wide"> <h1 className="text-26 font-bold text-dark-gray dark:text-white tracking-wide">
Assign task to {familyDetails?.firstname || details?.firstName} Assign task to{" "}
{familyDetailsData?.firstname || details?.firstName}
</h1> </h1>
<button <button
type="button" type="button"
@@ -269,7 +243,9 @@ const AssignTaskPopout = React.memo(({ action, details, situation, familyDetail
<div <div
key={item.job_uid} key={item.job_uid}
className="mb-2 flex justify-start items-center gap-2 text-sky-blue text-base cursor-pointer" className="mb-2 flex justify-start items-center gap-2 text-sky-blue text-base cursor-pointer"
onClick={() => handleActiveTask(item.job_uid, item)} onClick={() =>
handleActiveTask(item.job_uid, item)
}
> >
<input <input
type="radio" type="radio"
@@ -423,7 +399,7 @@ const AssignTaskPopout = React.memo(({ action, details, situation, familyDetail
className="px-1 w-40 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white cursor-pointer" className="px-1 w-40 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white cursor-pointer"
> >
{`Assign to ${ {`Assign to ${
familyDetails?.firstname || details?.firstName familyDetailsData?.firstname || details?.firstName
}`} }`}
</button> </button>
)} )}
@@ -436,6 +412,7 @@ const AssignTaskPopout = React.memo(({ action, details, situation, familyDetail
</ModalCom> </ModalCom>
</> </>
); );
}) }
);
export default AssignTaskPopout; export default AssignTaskPopout;
+16 -41
View File
@@ -1,24 +1,17 @@
import React from "react";
import datas from "../../data/product_data.json";
import Hero from "./Hero";
// import HomeTaskDisplay from "./HomeTaskDisplay";
import usersService from "../../services/UsersService";
import { useSelector } from "react-redux"; import { useSelector } from "react-redux";
// import SellHistoryMarketVisitorAnalytic from './SellHistoryMarketVisitorAnalytic';
// import TopSellerTopBuyerSliderSection from "./TopSellerTopBuyerSliderSection";
//import UpdateTable from "./UpdateTable";
import HomeActivities from "./HomeActivities";
import MyOffersTable from "../MyTasks/MyOffersTable";
import MyJobTable from "../MyTasks/MyJobTable"; import MyJobTable from "../MyTasks/MyJobTable";
import MyOffersTable from "../MyTasks/MyOffersTable";
import LoadingSpinner from "../Spinners/LoadingSpinner"; import LoadingSpinner from "../Spinners/LoadingSpinner";
import Hero from "./Hero";
import HomeActivities from "./HomeActivities";
export default function FullAccountDash(props) { export default function FullAccountDash(props) {
console.log("PROPS IN HOME->", props); // console.log("PROPS IN HOME->", props);
const { userDetails } = useSelector((state) => state?.userDetails); const { userDetails } = useSelector((state) => state?.userDetails);
return ( return (
<div> <>
<div className="home-page-wrapper"> <div className="home-page-wrapper">
<Hero <Hero
className="mb-10" className="mb-10"
@@ -26,30 +19,30 @@ export default function FullAccountDash(props) {
bannerList={props.bannerList} bannerList={props.bannerList}
nextDueTask={props.nextDueTask} nextDueTask={props.nextDueTask}
/> />
{ props.offersList?.data?.result_list?.length ? {props.offersList?.data?.result_list?.length ? (
<MyOffersTable <MyOffersTable
MyActiveOffersList={props.offersList?.data} MyActiveOffersList={props.offersList?.data}
className="mb-10" className="mb-10"
/> />
: props.MyActiveJobList?.data?.length ? ) : props.MyActiveJobList?.data?.length ? (
<> <>
<div className="w-full mb-5 flex justify-between items-center gap-1"> <div className="w-full mb-5 flex justify-between items-center gap-1">
<h1 className="text-26 font-bold text-dark-gray dark:text-white"> <h1 className="text-26 font-bold text-dark-gray dark:text-white">
<span> <span>My Tasks</span>
My Tasks
</span>
</h1> </h1>
</div> </div>
<MyJobTable ActiveJobList={props.MyActiveJobList} Account={userDetails} /> <MyJobTable
ActiveJobList={props.MyActiveJobList}
Account={userDetails}
/>
</> </>
) : !props.offersList?.loading && !props.MyActiveJobList?.loading ? (
: !props.offersList?.loading && !props.MyActiveJobList?.loading?
<HomeActivities className="mb-10" /> <HomeActivities className="mb-10" />
: ) : (
<div className="w-full h-[220px] flex items-center justify-center"> <div className="w-full h-[220px] flex items-center justify-center">
<LoadingSpinner size="16" color="sky-blue" /> <LoadingSpinner size="16" color="sky-blue" />
</div> </div>
} )}
{/*<UpdateTable className="mb-10"/>*/} {/*<UpdateTable className="mb-10"/>*/}
{/*<SellHistoryMarketVisitorAnalytic className="mb-10"/>*/} {/*<SellHistoryMarketVisitorAnalytic className="mb-10"/>*/}
@@ -61,24 +54,6 @@ export default function FullAccountDash(props) {
{/* bannerList={props.bannerList}*/} {/* bannerList={props.bannerList}*/}
{/*/>*/} {/*/>*/}
</div> </div>
</div> </>
); );
} }
// /*
// <Layout>
// <div className="home-page-wrapper">
// <Hero className="mb-10" data={userDetails} />
// {/* <CreateNft />
// <TrendingSection trending={trending} className="mb-10" />*/}
// <HomeTaskDisplay
// jobData={jobData}
// className="mb-10"
// bannerList={props.bannerList}
// />
{
/* <SellHistoryMarketVisitorAnalytic className="mb-10"/>
<TopSellerTopBuyerSliderSection className="mb-10" />
<UpdateTable className="mb-10"/>*/
}
// </div>
// </Layout>
+1 -1
View File
@@ -74,7 +74,7 @@ export default function Layout({ children }) {
</div> </div>
{/* container */} {/* container */}
<div className="nft-container 2xl:flex 2xl:space-x-8 h-full mb-12 lg:mt-[140px] mt-24 xl:mt-10 flex flex-col xl:flex-row items-start justify-center gap-4"> <div className="nft-container 2xl:flex 2xl:space-x-8 h-full mb-12 lg:mt-[140px] mt-24 xl:mt-10 flex flex-col xl:flex-row items-start justify-center gap-4">
<div className="nft-main-container flex-[80%]"> <div className="nft-main-container flex-[80%] w-full">
{children && children} {children && children}
</div> </div>
<div className="nft-right-side-content 2xl:w-[270px] w-full h-full 2xl:flex justify-center relative flex-[20%]"> <div className="nft-right-side-content 2xl:w-[270px] w-full h-full 2xl:flex justify-center relative flex-[20%]">
+123 -31
View File
@@ -30,22 +30,24 @@
background-color: darkgreen; background-color: darkgreen;
} }
.referral { .referral {
margin-bottom: 20px margin-bottom: 20px;
} }
.task_action_panel { .task_action_panel {
font-family: sans; color: white; font-family: sans;
color: white;
font-weight: bolder; font-weight: bolder;
font-size: 14px; font-size: 14px;
font-family: Circular, Helvetica Neue, Helvetica, Roboto, Arial, sans-serif; font-family: Circular, Helvetica Neue, Helvetica, Roboto, Arial, sans-serif;
padding: 0px 10px 5px 10px padding: 0px 10px 5px 10px;
} }
.heroSilderTitle { .heroSilderTitle {
text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black; text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;
font-family: sans; color: white; font-family: sans;
color: white;
font-family: Circular, Helvetica Neue, Helvetica, Roboto, Arial, sans-serif; font-family: Circular, Helvetica Neue, Helvetica, Roboto, Arial, sans-serif;
} }
.back-dark1 { .back-dark1 {
background-color: #193F5F; background-color: #193f5f;
min-width: 280px !important; min-width: 280px !important;
} }
.job-action { .job-action {
@@ -110,7 +112,13 @@
} }
.offer-slide-item { .offer-slide-item {
background: rgb(2, 0, 36); background: rgb(2, 0, 36);
background: radial-gradient(circle, rgba(2,0,36,1) 0%, rgba(3,51,2,0.782125350140056) 0%, rgba(0,212,255,0.07904411764705888) 0%, rgba(153,182,201,1) 99%); background: radial-gradient(
circle,
rgba(2, 0, 36, 1) 0%,
rgba(3, 51, 2, 0.782125350140056) 0%,
rgba(0, 212, 255, 0.07904411764705888) 0%,
rgba(153, 182, 201, 1) 99%
);
margin: 5px; margin: 5px;
border-radius: 15px; border-radius: 15px;
padding: 15px; padding: 15px;
@@ -133,6 +141,7 @@
font-family: "Product Sans"; font-family: "Product Sans";
src: url("./assets/fonts/Product Sans Regular.ttf"); src: url("./assets/fonts/Product Sans Regular.ttf");
} }
@tailwind base; @tailwind base;
@tailwind components; @tailwind components;
@tailwind utilities; @tailwind utilities;
@@ -144,7 +153,6 @@
--toastify-color-success: #f539f8; --toastify-color-success: #f539f8;
} }
/* ===================== EXTRA ===================== */ /* ===================== EXTRA ===================== */
.bottomMargin { .bottomMargin {
margin-bottom: 15px; margin-bottom: 15px;
@@ -159,7 +167,12 @@ html {
font-family: "Product Sans"; font-family: "Product Sans";
} }
.primary-gradient { .primary-gradient {
background: linear-gradient(134.38deg, #f539f8 0%, #284f64 43.55%, #1a3544 104.51%); background: linear-gradient(
134.38deg,
#f539f8 0%,
#284f64 43.55%,
#1a3544 104.51%
);
/* background-image: url("./assets/images/left-myft.jpg"); /* background-image: url("./assets/images/left-myft.jpg");
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover; */ background-size: cover; */
@@ -199,7 +212,12 @@ html {
top: 0; top: 0;
width: 100%; width: 100%;
height: 100%; height: 100%;
background: linear-gradient(134.38deg, #5356fb 0%, #c342f9 43.55%, #f539f8 104.51%); background: linear-gradient(
134.38deg,
#5356fb 0%,
#c342f9 43.55%,
#f539f8 104.51%
);
opacity: 30%; opacity: 30%;
} }
/* Chrome, Safari, Edge, Opera */ /* Chrome, Safari, Edge, Opera */
@@ -229,10 +247,20 @@ input[type="text"][dir="rtl"] {
scrollbar-width: none; /* Firefox */ scrollbar-width: none; /* Firefox */
} }
.btn-gradient { .btn-gradient {
background: linear-gradient(134.38deg, #f539f8 0%, #c342f9 43.55%, #5356fb 104.51%); background: linear-gradient(
134.38deg,
#f539f8 0%,
#c342f9 43.55%,
#5356fb 104.51%
);
} }
.btn-gradient:hover { .btn-gradient:hover {
background: linear-gradient(134.38deg, #5356fb 0%, #c342f9 43.55%, #f539f8 104.51%); background: linear-gradient(
134.38deg,
#5356fb 0%,
#c342f9 43.55%,
#f539f8 104.51%
);
} }
.text-26 { .text-26 {
font-size: 26px; font-size: 26px;
@@ -246,7 +274,12 @@ input[type="text"][dir="rtl"] {
} }
.text-gradient { .text-gradient {
background: linear-gradient(134.38deg, #f539f8 0%, #c342f9 43.55%, #5356fb 104.51%); background: linear-gradient(
134.38deg,
#f539f8 0%,
#c342f9 43.55%,
#5356fb 104.51%
);
-webkit-background-clip: text; -webkit-background-clip: text;
-webkit-text-fill-color: transparent; -webkit-text-fill-color: transparent;
} }
@@ -305,6 +338,16 @@ input[type="text"][dir="rtl"] {
transform: scale(1); transform: scale(1);
width: 80%; width: 80%;
} }
@media screen and (min-width: 25rem) {
.sidebar-logo.enter {
width: 65%;
}
.sidebar-logo.enter + span{
position: revert;
}
}
.sidebar-logo { .sidebar-logo {
transform: scale(0); transform: scale(0);
width: 0; width: 0;
@@ -437,7 +480,12 @@ input[type="text"][dir="rtl"] {
.home-page-wrapper .hero-slider .slick-slider .slick-dots li { .home-page-wrapper .hero-slider .slick-slider .slick-dots li {
margin: 0; margin: 0;
} }
.home-page-wrapper .hero-slider .slick-slider .slick-dots li.slick-active button { .home-page-wrapper
.hero-slider
.slick-slider
.slick-dots
li.slick-active
button {
background: white; background: white;
} }
.home-page-wrapper .hero-slider .slick-slider .slick-dots li button { .home-page-wrapper .hero-slider .slick-slider .slick-dots li button {
@@ -460,7 +508,12 @@ input[type="text"][dir="rtl"] {
top: 0; top: 0;
width: 100%; width: 100%;
height: 100%; height: 100%;
background: linear-gradient(134.38deg, #5356fb 0%, #c342f9 43.55%, #f539f8 104.51%); background: linear-gradient(
134.38deg,
#5356fb 0%,
#c342f9 43.55%,
#f539f8 104.51%
);
z-index: -1; z-index: -1;
opacity: 30%; opacity: 30%;
} }
@@ -476,8 +529,10 @@ input[type="text"][dir="rtl"] {
margin: 0 16px; margin: 0 16px;
} }
.transfer-field, .transfer-field:focus, .transfer-field:focus-within{ .transfer-field,
background: #FFF !important; .transfer-field:focus,
.transfer-field:focus-within {
background: #fff !important;
border: none !important; border: none !important;
outline: none !important; outline: none !important;
box-shadow: none !important; box-shadow: none !important;
@@ -597,7 +652,7 @@ input[type="text"][dir="rtl"] {
top: 0; top: 0;
right: -100%; right: -100%;
opacity: 0; opacity: 0;
transition: all .5s; transition: all 0.5s;
background-color: white; background-color: white;
} }
@@ -612,7 +667,12 @@ input[type="text"][dir="rtl"] {
.notification-page .content-item .notifications { .notification-page .content-item .notifications {
@apply flex space-x-4 items-center; @apply flex space-x-4 items-center;
} }
.notification-page .content-item .notifications .notification-page .content-item .notifications { .notification-page
.content-item
.notifications
.notification-page
.content-item
.notifications {
@apply mb-0; @apply mb-0;
} }
.notification-setting-tab .notification-settings-items li:last-child { .notification-setting-tab .notification-settings-items li:last-child {
@@ -621,7 +681,11 @@ input[type="text"][dir="rtl"] {
.faq-tab .accordion-items .accordion-item:first-child .accordion-title-bar { .faq-tab .accordion-items .accordion-item:first-child .accordion-title-bar {
padding-top: 0; padding-top: 0;
} }
.faq-tab .accordion-items .accordion-item:last-child .accordion-body .accordion-body-content { .faq-tab
.accordion-items
.accordion-item:last-child
.accordion-body
.accordion-body-content {
padding-bottom: 20px; padding-bottom: 20px;
} }
.faq-tab .accordion-title-bar { .faq-tab .accordion-title-bar {
@@ -669,7 +733,8 @@ input[type="text"][dir="rtl"] {
height: 100%; height: 100%;
overflow: hidden; overflow: hidden;
} }
.job-action-modal-body button, .message-modal-header button { .job-action-modal-body button,
.message-modal-header button {
display: none; display: none;
} }
.message-modal-wrapper .message-table { .message-modal-wrapper .message-table {
@@ -839,20 +904,26 @@ TODO: Responsive ===========================
} }
} }
/* LoginPage */ /* LoginPage */
.main-wrapper.login-wrapper { .main-wrapper.login-wrapper {
background-image: url('./assets/images/login-dots.jpg'); background-image: url("./assets/images/login-dots.jpg");
background-attachment: fixed; background-attachment: fixed;
background-size: contain; background-size: contain;
background-position-y: bottom; background-position-y: bottom;
background-repeat: no-repeat; background-repeat: no-repeat;
} }
.layout-wrapper.login { .layout-wrapper.login {
background: rgb(236, 237, 241); background: rgb(236, 237, 241);
background: linear-gradient(90deg, rgba(236,237,241,1) 0%, rgba(252,252,252,1) 31%, rgba(255,255,255,0.9416141456582633) 41%, rgba(255,255,255,0.9752275910364145) 61%, rgba(252,252,252,1) 71%, rgba(236,237,241,1) 100%); background: linear-gradient(
90deg,
rgba(236, 237, 241, 1) 0%,
rgba(252, 252, 252, 1) 31%,
rgba(255, 255, 255, 0.9416141456582633) 41%,
rgba(255, 255, 255, 0.9752275910364145) 61%,
rgba(252, 252, 252, 1) 71%,
rgba(236, 237, 241, 1) 100%
);
font-family: Circular, Helvetica Neue, Helvetica, Roboto, Arial, sans-serif; font-family: Circular, Helvetica Neue, Helvetica, Roboto, Arial, sans-serif;
font-weight: 400; font-weight: 400;
font-size: 1.125rem; font-size: 1.125rem;
@@ -861,8 +932,12 @@ TODO: Responsive ===========================
.content-wrapper.login { .content-wrapper.login {
--bg-color: 255, 255, 255; --bg-color: 255, 255, 255;
background: linear-gradient(90deg, rgba(236,237,240,1) 0%, rgba(255,255,255,1) 50%, rgba(236,237,240,1) 100%); background: linear-gradient(
90deg,
rgba(236, 237, 240, 1) 0%,
rgba(255, 255, 255, 1) 50%,
rgba(236, 237, 240, 1) 100%
);
} }
.content-wrapper select { .content-wrapper select {
@@ -880,7 +955,8 @@ TODO: Responsive ===========================
} }
/* Update table scrollbar */ /* Update table scrollbar */
.update-table::-webkit-scrollbar-track, .update-table > *::-webkit-scrollbar-track, .update-table::-webkit-scrollbar-track,
.update-table > *::-webkit-scrollbar-track,
.market-pop::-webkit-scrollbar-track, .market-pop::-webkit-scrollbar-track,
.wallet.coupon::-webkit-scrollbar-track { .wallet.coupon::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.1); -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.1);
@@ -888,19 +964,27 @@ TODO: Responsive ===========================
border-radius: 10px; border-radius: 10px;
} }
.update-table::-webkit-scrollbar, .update-table > *::-webkit-scrollbar, .update-table::-webkit-scrollbar,
.update-table > *::-webkit-scrollbar,
.market-pop::-webkit-scrollbar, .market-pop::-webkit-scrollbar,
.wallet.coupon::-webkit-scrollbar { .wallet.coupon::-webkit-scrollbar {
width: 10px; width: 10px;
background-color: transparent; background-color: transparent;
} }
.update-table::-webkit-scrollbar-thumb, .update-table > *::-webkit-scrollbar-thumb, .wallet.coupon::-webkit-scrollbar-thumb { .update-table::-webkit-scrollbar-thumb,
.update-table > *::-webkit-scrollbar-thumb,
.wallet.coupon::-webkit-scrollbar-thumb {
border-radius: 10px; border-radius: 10px;
border-top-right-radius: 50px; border-top-right-radius: 50px;
border-bottom-right-radius: 50px; border-bottom-right-radius: 50px;
background-color: #fff; background-color: #fff;
background: linear-gradient(134.38deg, #f539f8 0%, #c342f9 43.55%, #5356fb 104.51%); background: linear-gradient(
134.38deg,
#f539f8 0%,
#c342f9 43.55%,
#5356fb 104.51%
);
} }
.market-pop::-webkit-scrollbar-thumb { .market-pop::-webkit-scrollbar-thumb {
@@ -909,7 +993,15 @@ TODO: Responsive ===========================
/* background-color: #fafafa; */ /* background-color: #fafafa; */
/* background: linear-gradient(134.38deg, #f539f8 0%, #c342f9 43.55%, #5356fb 104.51%); */ /* background: linear-gradient(134.38deg, #f539f8 0%, #c342f9 43.55%, #5356fb 104.51%); */
background: rgb(236, 237, 241); background: rgb(236, 237, 241);
background: linear-gradient(90deg, rgba(236,237,241,1) 0%, rgba(252,252,252,1) 31%, rgba(255,255,255,0.9416141456582633) 41%, rgba(255,255,255,0.9752275910364145) 61%, rgba(252,252,252,1) 71%, rgba(236,237,241,1) 100%); background: linear-gradient(
90deg,
rgba(236, 237, 241, 1) 0%,
rgba(252, 252, 252, 1) 31%,
rgba(255, 255, 255, 0.9416141456582633) 41%,
rgba(255, 255, 255, 0.9752275910364145) 61%,
rgba(252, 252, 252, 1) 71%,
rgba(236, 237, 241, 1) 100%
);
} }
.input-curve.lg { .input-curve.lg {