diff --git a/dev-dist/sw.js b/dev-dist/sw.js
index 24a967b..2b1ee05 100644
--- a/dev-dist/sw.js
+++ b/dev-dist/sw.js
@@ -82,7 +82,11 @@ define(['./workbox-54d0af47'], (function (workbox) { 'use strict';
"revision": "3ca0b8505b4bec776b69afdba2768812"
}, {
"url": "index.html",
- "revision": "0.f3u8hds6p7"
+<<<<<<< HEAD
+ "revision": "0.iv1sobg60j"
+=======
+ "revision": "0.3bv9k3911i8"
+>>>>>>> 688f6740627f6cdb421849d1fb012420be1d9d10
}], {});
workbox.cleanupOutdatedCaches();
workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), {
diff --git a/src/App.tsx b/src/App.tsx
index b9302aa..a4eae2f 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -1,21 +1,47 @@
-import { useContext } from 'react';
-import { Route, BrowserRouter as Router, Routes } from "react-router-dom";
-import GlobalStateContext from './Contexts/GlobalStateContext';
-import DefaultLayout from './Layouts/DefaultLayout';
-import Login from './Pages/Login';
-import { RouteLink } from './Routes/Routes';
+import { useContext, useEffect } from "react";
+import { BrowserRouter as Router, Routes, Route, Navigate } from "react-router-dom";
+import GlobalStateContext from "./Contexts/GlobalStateContext";
+import DefaultLayout from "./Layouts/DefaultLayout";
+import Login from "./Pages/Login";
+import { RouteLink } from "./Routes/Routes";
-function App() {
+function App() {
const context = useContext(GlobalStateContext);
- if (!context) throw new Error('App must be used within a GlobalStateProvider');
- const { isAuthenticate } = context;
+ if (!context) throw new Error("App must be used within a GlobalStateProvider");
+
+ const { isAuthenticate, setIsAuthenticate } = context;
+
+ useEffect(() => {
+ const token = localStorage.getItem("token");
+ setIsAuthenticate(!!token); // Converts token to boolean
+ }, [setIsAuthenticate]);
+
+ console.log("Auth Status:", isAuthenticate);
return (
- } />
- {RouteLink.map(({ path, Component }, index) => (} />))}) : ()} />
- } />
+ {/* Redirect logged-in users away from login */}
+ : } />
+
+ {/* Protected Routes */}
+
+
+ {RouteLink.map(({ path, Component }, index) => (
+ } />
+ ))}
+
+
+ ) : (
+
+ )}
+ />
+
+ {/* Catch-all route to prevent unauthorized access */}
+ } />
);
diff --git a/src/Layouts/DefaultLayout.tsx b/src/Layouts/DefaultLayout.tsx
index 2e63eae..ac7cd29 100644
--- a/src/Layouts/DefaultLayout.tsx
+++ b/src/Layouts/DefaultLayout.tsx
@@ -1,5 +1,5 @@
import { HStack, Image, Text, VStack } from "@chakra-ui/react";
-import React, { FC } from "react";
+import React, { FC, useContext } from "react";
import { RiNotificationLine } from "react-icons/ri";
import { NavLink, useLocation, useNavigate } from "react-router-dom";
import { nav } from "../Routes/Nav";
@@ -7,43 +7,72 @@ import logo from '../assets/logo.svg';
import { AccordionItem, AccordionItemContent, AccordionItemTrigger, AccordionRoot } from "../components/ui/accordion";
import { Avatar } from "../components/ui/avatar";
import { LuLogOut } from "react-icons/lu";
-import { logout, setToken } from "../Redux/Service/authSlice";
+import { logout } from "../Redux/Service/authSlice";
import { useDispatch } from "react-redux";
+import GlobalStateContext from "../Contexts/GlobalStateContext";
+import { useLogOutMutation } from "../Redux/Service/apiSlice";
+import ProgressBar from "../components/ProgressBar/ProgressBar";
const DefaultLayout: FC<{ children: React.ReactNode }> = ({ children }) => {
+
const dispatch = useDispatch()
const navigate = useNavigate()
const location = useLocation()
+ const context = useContext(GlobalStateContext);
+ if (!context) {
+ throw new Error('App must be used within a GlobalStateProvider');
+ }
+ const { setIsAuthenticate } = context;
+ const [ logOutAdmin ] = useLogOutMutation()
+ // Logout function
+ const handleLogout = async () => {
+ try {
+ // ✅ Call mutation and wait for the response
+ const res = await logOutAdmin().unwrap();
+ console.log("Logout Success:", res);
+
+ // ✅ Clear local storage & update authentication state
+ dispatch(logout());
+ localStorage.removeItem("token");
+ setIsAuthenticate(false);
+ // ✅ Redirect to login page
+ navigate("/login");
+ } catch (error) {
+ console.error("Logout Failed:", error);
+ }
+ };
+
return (
-
-
-
-
+
+
+
+
+
+
-
+
{nav?.map(({ title, path, Icon, type, children }, index) => type === 'single' ?
- {title} :
-
+ {title} :
+
navigate(path)} gap={0} style={{ cursor: 'pointer', borderRadius: '8px', padding: '5px', width: '100%', display: 'flex', alignItems: 'center', border: '1px solid #ffffff', backgroundColor:'#fff',color:'#000', fontSize: '14px', }}> {title}
{children?.map(({ title, path, Icon }, index) => navigate(path)} style={{ marginTop: 6, cursor: 'pointer', borderRadius: '8px', padding: '6px', width: '100%', display: 'flex', alignItems: 'center', gap: 6, border: '1px solid #ffffff', backgroundColor:'#fff',color:'#919198' }} > {title})}
)}
-
- {dispatch(logout()), navigate('/login')}} className="link" style={{ cursor: 'pointer', borderRadius: '8px', padding: '6px', width: '100%', display: 'flex', alignItems: 'center', gap: 6, border: '1px solid #ffffff', backgroundColor:'#fff', color:'#000', boxShadow:'rgba(99, 99, 99, 0.2) 0px 2px 8px 0px'}} > Logout
+ Logout
-
-
-
+
+
+
navigate('/profile')} >
@@ -56,6 +85,7 @@ const DefaultLayout: FC<{ children: React.ReactNode }> = ({ children }) => {
{children}
+
);
};
diff --git a/src/Pages/Dashboard/Dashboard.tsx b/src/Pages/Dashboard/Dashboard.tsx
index 10539a7..a01dcf6 100644
--- a/src/Pages/Dashboard/Dashboard.tsx
+++ b/src/Pages/Dashboard/Dashboard.tsx
@@ -26,6 +26,7 @@ import {
SelectValueText
} from "../../components/ui/select";
import AgencyName from "./AgencyName";
+import { Spinner } from "../../components/Sipnner/Spinner";
const Dashboard = () => {
const frameworks = createListCollection({
@@ -186,6 +187,7 @@ const Dashboard = () => {
+
);
};
diff --git a/src/Pages/ForgetPassword.tsx b/src/Pages/ForgetPassword.tsx
new file mode 100644
index 0000000..e0be6bc
--- /dev/null
+++ b/src/Pages/ForgetPassword.tsx
@@ -0,0 +1,65 @@
+import { Field, Input, Stack, Text } from "@chakra-ui/react";
+import { Button } from "../components/ui/button";
+import {
+ DialogBody,
+ DialogContent,
+ DialogFooter,
+ DialogHeader,
+ DialogRoot,
+ DialogTitle,
+ DialogTrigger,
+} from "../components/ui/dialog";
+function ForgetPassword() {
+ return (
+
+
+
+ Forgot password?
+
+
+
+
+
+
+ Forgot Password
+
+
+
+
+
+
+
+ Please Enter Email Address
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export default ForgetPassword;
diff --git a/src/Pages/Login.tsx b/src/Pages/Login.tsx
index 512f1fe..585aada 100644
--- a/src/Pages/Login.tsx
+++ b/src/Pages/Login.tsx
@@ -1,45 +1,54 @@
-import { Center, HStack, Image, Input, Text, VStack } from "@chakra-ui/react"
-import axios from "axios"
-import { useContext, useState } from "react"
-import { useForm } from "react-hook-form"
-import { useDispatch } from "react-redux"
-import GlobalStateContext from "../Contexts/GlobalStateContext"
-import { setToken } from "../Redux/Service/authSlice"
-import logo from '../assets/logo.svg'
-import { Button } from "../components/ui/button"
-import { Field } from "../components/ui/field"
-import { Toaster } from "../components/ui/toaster"
-import { PasswordInput } from "../components/ui/password-input"
-import { useNavigate } from "react-router-dom"
+import {
+ Box,
+ Center,
+ HStack,
+ Image,
+ Input,
+ Text,
+ Theme,
+ VStack,
+} from "@chakra-ui/react";
+import axios from "axios";
+import { useContext, useState } from "react";
+import { useForm } from "react-hook-form";
+import { useDispatch } from "react-redux";
+import GlobalStateContext from "../Contexts/GlobalStateContext";
+import { setToken } from "../Redux/Service/authSlice";
+import logo from "../assets/logo.svg";
+import { Button } from "../components/ui/button";
+import { Field } from "../components/ui/field";
+import { toaster, Toaster } from "../components/ui/toaster";
+import { PasswordInput } from "../components/ui/password-input";
+import { useNavigate } from "react-router-dom";
+import ForgetPassword from "./ForgetPassword";
interface FormValues {
- mobileNumber: number
- password: string
+ mobileNumber: number;
+ password: string;
}
const Login = () => {
- const navigate = useNavigate()
- const dispatch = useDispatch()
- const [isLoading, setIsLoading] = useState(false)
+ const navigate = useNavigate();
+ const dispatch = useDispatch();
+ const [isLoading, setIsLoading] = useState(false);
const context = useContext(GlobalStateContext);
if (!context) {
- throw new Error('App must be used within a GlobalStateProvider');
+ throw new Error("App must be used within a GlobalStateProvider");
}
const { setIsAuthenticate } = context;
const {
register,
handleSubmit,
formState: { errors },
- } = useForm()
+ } = useForm();
const onSubmit = handleSubmit(async (data) => {
setIsLoading(true);
-
// Encode Basic Auth Credentials
- const username = import.meta.env.VITE_USER_NAME||''; // Replace with actual username
- const password = import.meta.env.VITE_PASSWORD||''; // Replace with actual password
+ const username = import.meta.env.VITE_USER_NAME || ""; // Replace with actual username
+ const password = import.meta.env.VITE_PASSWORD || ""; // Replace with actual password
const basicAuth = `${username} : ${password}`; // Encode to Base64
-
+
try {
const res = await axios.post(
`${import.meta.env.VITE_API_URL}/login`,
@@ -52,89 +61,135 @@ const Login = () => {
Authorization: `Basic ${basicAuth}`,
"Content-Type": "application/json",
},
-
}
);
+ console.log("============",res);
+
if (res.data) {
- setIsAuthenticate(true)
- console.log('====================================');
+ setIsAuthenticate(true);
+ console.log("====================================");
console.log(res.data?.data);
- console.log('====================================');
- navigate('/dashboard')
+ console.log("====================================");
+ navigate("/dashboard");
dispatch(setToken(String(res.data?.data["access-token"])));
} else {
-
console.log("====================================");
console.log(res);
console.log("====================================");
-
}
-
} catch (error) {
+ console.log('error', error);
+
if (error) {
-
- console.error("Login failed", error);
- setIsLoading(false)
-
+ toaster.create({
+ // title: error?.response?.data?.message,
+ title: "Something Went Wrong",
+ type: "info",
+ })
+ // console.log("Login failed", error?.response?.data?.message);
+ setIsLoading(false);
}
}
});
-
-
-
return (
-
-
-
-
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+ LOGIN
+
-
-
-
-
-
- LOGIN
-
-
-
-
- {/* Forget password */}
+
+
+
+ {/* Forget password */}
-
-
- {/* Forget password */}
+
+
+ {/* Forget password */}
-
-
- Forgot password
-
-
+
+
+
-
+
- )
-}
+ );
+};
-export default Login
\ No newline at end of file
+export default Login;
diff --git a/src/Pages/ManageCMS/AboutUs/AboutUs.tsx b/src/Pages/ManageCMS/AboutUs/AboutUs.tsx
index acc13b6..2275af0 100644
--- a/src/Pages/ManageCMS/AboutUs/AboutUs.tsx
+++ b/src/Pages/ManageCMS/AboutUs/AboutUs.tsx
@@ -3,35 +3,17 @@ import MainFrame from "../../../components/MainFrame"
import AboutUsAddModel from "../../ManageCMS/AboutUs/AboutUsAddModel";
import { useGetAboutUsQuery } from "../../../Redux/Service/manage.aboutus.service";
-interface AboutUsContent {
- content: string;
-}
-
-interface ApiResponse {
- data: AboutUsContent[];
-}
-interface AboutUs {
- content: string;
-}
const AboutUs = () => {
- // const {
- // data: data
- // } = useGetAboutUsQuery()
- // const { data: response,isLoading, } = useGetAboutUsQuery<{ data: ApiResponse }>();
+ const { data, isLoading } = useGetAboutUsQuery();
- // Simple way to fetch data
- const { data } = useGetAboutUsQuery();
-
- // Safely access the first content item
- const content = data?.data?.[0]?.content;
+ const content = data?.data?.[0]?.content
console.log('====================================');
- console.log(response);
+ // console.log(response);
console.log('====================================');
- // const content = response?.data?.[0]?.content;
return (
diff --git a/src/Pages/ManageCMS/FAQ/EditDetails.tsx b/src/Pages/ManageCMS/FAQ/EditDetails.tsx
index 2ea1b8d..ee9a64e 100644
--- a/src/Pages/ManageCMS/FAQ/EditDetails.tsx
+++ b/src/Pages/ManageCMS/FAQ/EditDetails.tsx
@@ -1,15 +1,23 @@
+import { TbEdit } from "react-icons/tb";
import { Button } from "../../../components/ui/button"
import { DialogBody, DialogCloseTrigger, DialogContent, DialogFooter, DialogHeader, DialogRoot, DialogTitle, DialogTrigger } from "../../../components/ui/dialog"
-import { Field, Grid, Input, Stack, Text, Textarea } from "@chakra-ui/react"
+import { Field, Grid, Icon, Input, Stack, Text, Textarea } from "@chakra-ui/react"
import { FaRegEdit } from "react-icons/fa";
function EditDetails() {
return (
-
-
-
+
+
+
{/* */}
diff --git a/src/Pages/ManageCMS/FAQ/FAQ.tsx b/src/Pages/ManageCMS/FAQ/FAQ.tsx
index 4b833de..bcb9a6d 100644
--- a/src/Pages/ManageCMS/FAQ/FAQ.tsx
+++ b/src/Pages/ManageCMS/FAQ/FAQ.tsx
@@ -74,7 +74,7 @@ const FAQ = () => {
colorPalette={"blue"}
_focus={{ border: "1px solid #02A0A0" }}
rounded={"md"}
- size={"2xs"}
+ size={"xs"}
fontSize={"2sm"}
placeholder="Search..."
bgColor={'#EEEEEE'}
diff --git a/src/Pages/ManageCMS/PrivacyPolicy/PrivacyPolicy.tsx b/src/Pages/ManageCMS/PrivacyPolicy/PrivacyPolicy.tsx
index d6fa126..f33ba9c 100644
--- a/src/Pages/ManageCMS/PrivacyPolicy/PrivacyPolicy.tsx
+++ b/src/Pages/ManageCMS/PrivacyPolicy/PrivacyPolicy.tsx
@@ -1,12 +1,35 @@
-import { Box, HStack, Text } from "@chakra-ui/react";
-import MainFrame from "../../../components/MainFrame"
-import { p } from "framer-motion/client";
+import { Box, HStack, Text, Skeleton } from "@chakra-ui/react";
+import MainFrame from "../../../components/MainFrame";
import PrivacyPolicyAddModel from "./PrivacyPolicyAddModel";
+import { useGetPrivacyPolicyQuery } from "../../../Redux/Service/privacy.policy.service";
+// Define interfaces
+interface PrivacyPolicyContent {
+ id: number;
+ content: string;
+}
+
+interface ApiResponse {
+ data: {data:PrivacyPolicyContent[]};
+ isLoading: boolean
+}
const PrivacyPolicy = () => {
- return (
+ // Fetch data using RTK Query with type annotations
+ const { data, isLoading } = useGetPrivacyPolicyQuery();
+ console.log(isLoading);
+
+
+ // Log the response for debugging
+ console.log("====================================");
+ console.log(data);
+ console.log("====================================");
+
+ // Extract content array from the response
+ const content = data?.data?.[0]?.content;
+
+ return (
{
px={3}
>
- Privacy Policy
+ Privacy Policy
-
-
+
-
- Lorem ipsum dolor sit amet, consectetur adipisicing elit. Numquam soluta doloremque quibusdam facilis quas, unde hic eaque doloribus sed perferendis atque, eos dolores eius consectetur iure sint adipisci itaque tempora fugit quidem culpa provident possimus. Ullam, vitae in voluptatum dignissimos, quos blanditiis sequi aut repellat error eaque veritatis unde quam temporibus adipisci consectetur neque vero exercitationem dolor cum numquam maiores alias, totam minima quas. Possimus, ratione harum. Alias laboriosam nesciunt esse fugit deserunt pariatur corporis tempora quia veniam laborum aliquid enim voluptatibus asperiores minima tempore repudiandae vero quo porro, doloribus explicabo sit beatae et hic natus. Non earum nisi reiciendis?
-
-
- Lorem ipsum dolor sit amet, consectetur adipisicing elit. Numquam soluta doloremque quibusdam facilis quas, unde hic eaque doloribus sed perferendis atque, eos dolores eius consectetur iure sint adipisci itaque tempora fugit quidem culpa provident possimus. Ullam, vitae in voluptatum dignissimos, quos blanditiis sequi aut repellat error eaque veritatis unde quam temporibus adipisci consectetur neque vero exercitationem dolor cum numquam maiores alias, totam minima quas. Possimus, ratione harum. Alias laboriosam nesciunt esse fugit deserunt pariatur corporis tempora quia veniam laborum aliquid enim voluptatibus asperiores minima tempore repudiandae vero quo porro, doloribus explicabo sit beatae et hic natus. Non earum nisi reiciendis?
-
-
+
+ {/* Render multiple skeletons or content based on loading state */}
+ {isLoading || !content ? (
+
+
+
+
+
+
+
+ ) : (
+
+ {content}
+
+ )}
+
- )
-}
-export default PrivacyPolicy
\ No newline at end of file
+ );
+};
+
+export default PrivacyPolicy;
\ No newline at end of file
diff --git a/src/Pages/ManageContact/ManageContact.tsx b/src/Pages/ManageContact/ManageContact.tsx
index d4d44ed..9861955 100644
--- a/src/Pages/ManageContact/ManageContact.tsx
+++ b/src/Pages/ManageContact/ManageContact.tsx
@@ -60,8 +60,8 @@ const ManageContact = () => {
colorPalette={"blue"}
_focus={{ border: "1px solid #02A0A0" }}
rounded={"md"}
- size={"2xs"}
- fontSize={"2sm"}
+ size={"xs"}
+ fontSize={"sm"}
placeholder="Search..."
bgColor={'#EEEEEE'}
ps={8}
diff --git a/src/Pages/ManageGroups/EditDetailGroup.tsx b/src/Pages/ManageGroups/EditDetailGroup.tsx
index 31ad9ba..b7da10c 100644
--- a/src/Pages/ManageGroups/EditDetailGroup.tsx
+++ b/src/Pages/ManageGroups/EditDetailGroup.tsx
@@ -1,19 +1,26 @@
import { Button } from "../../components/ui/button"
import { DialogBody, DialogCloseTrigger, DialogContent, DialogFooter, DialogHeader, DialogRoot, DialogTitle, DialogTrigger } from "../../components/ui/dialog"
-import { Avatar, Box, Field, Heading, Input, Stack, Text } from "@chakra-ui/react"
+import { Avatar, Box, Field, Heading, Icon, Input, Stack, Text } from "@chakra-ui/react"
import { Switch } from "../../components/ui/switch";
import { FaRegEdit } from "react-icons/fa";
import { AvatarGroup } from "../../components/ui/avatar";
+import { TbEdit } from "react-icons/tb";
function EditDetailGroups() {
return (
-
-
- {/* */}
-
+
+
+
{
colorPalette={"blue"}
_focus={{ border: "1px solid #02A0A0" }}
rounded={"md"}
- size={"2xs"}
- fontSize={"2sm"}
+ size={"xs"}
+ fontSize={"sm"}
placeholder="Search..."
bgColor={'#EEEEEE'}
ps={8}
diff --git a/src/Pages/ManageGroups/ViewManageGroup.tsx b/src/Pages/ManageGroups/ViewManageGroup.tsx
index 720e799..4622904 100644
--- a/src/Pages/ManageGroups/ViewManageGroup.tsx
+++ b/src/Pages/ManageGroups/ViewManageGroup.tsx
@@ -1,19 +1,27 @@
import { Button } from "../../components/ui/button"
import { DialogBody, DialogCloseTrigger, DialogContent, DialogFooter, DialogHeader, DialogRoot, DialogTitle, DialogTrigger } from "../../components/ui/dialog"
-import { Avatar, Box, Field, Grid, Heading, Input, Stack, Text } from "@chakra-ui/react"
+import { Avatar, Box, Field, Grid, Heading, Icon, Input, Stack, Text } from "@chakra-ui/react"
import { Checkbox } from "../../components/ui/checkbox"
import { MdOutlineRemoveRedEye } from "react-icons/md";
import { Switch } from "../../components/ui/switch";
import { AvatarGroup } from "../../components/ui/avatar";
+import { TbEdit } from "react-icons/tb";
function ViewManageGroup() {
return (
-
-
- {/* */}
+
+
+
diff --git a/src/Pages/ManageJobs/ManageJobs.tsx b/src/Pages/ManageJobs/ManageJobs.tsx
index 0e2beaa..3d408ab 100644
--- a/src/Pages/ManageJobs/ManageJobs.tsx
+++ b/src/Pages/ManageJobs/ManageJobs.tsx
@@ -1,15 +1,11 @@
-import { Box, createListCollection, HStack, Image, Input, Text } from "@chakra-ui/react";
-import MainFrame from "../../components/MainFrame"
-import ViewSubAdmin from "../SubAdmin/ViewSubAdmin";
-import EditSubAdmin from "../../components/EditSubAdmin";
-import AlertDailog from "../../components/AlertDailog";
-import { InputGroup } from "../../components/ui/input-group";
+import { Box, HStack, Image, Input, Text } from "@chakra-ui/react";
import { LuSearch } from "react-icons/lu";
-import AddModel from "../SubAdmin/AddModel";
-import DataTable from "../../components/DataTable";
import { RiDeleteBin5Line } from "react-icons/ri";
+import AlertDailog from "../../components/AlertDailog";
+import DataTable from "../../components/DataTable";
+import MainFrame from "../../components/MainFrame";
+import { InputGroup } from "../../components/ui/input-group";
import ManageJobsAdd from "./ManageJobsAdd";
-import { SelectContent, SelectItem, SelectLabel, SelectRoot, SelectTrigger, SelectValueText } from "../../components/ui/select";
import ViewManageJob from "./ViewManageJob";
@@ -87,8 +83,8 @@ const ManageJobs = () => {
colorPalette={"blue"}
_focus={{ border: "1px solid #02A0A0" }}
rounded={"md"}
- size={"2xs"}
- fontSize={"2sm"}
+ size={"xs"}
+ fontSize={"sm"}
placeholder="Search..."
bgColor={'#EEEEEE'}
ps={8}
diff --git a/src/Pages/ManageJobs/ManageJobsAdd.tsx b/src/Pages/ManageJobs/ManageJobsAdd.tsx
index 4d90998..60f300e 100644
--- a/src/Pages/ManageJobs/ManageJobsAdd.tsx
+++ b/src/Pages/ManageJobs/ManageJobsAdd.tsx
@@ -1,9 +1,9 @@
-import { Button } from "../../components/ui/button"
-import { DialogBody, DialogCloseTrigger, DialogContent, DialogFooter, DialogHeader, DialogRoot, DialogTitle, DialogTrigger } from "../../components/ui/dialog"
-import { createListCollection, Field, Input, SelectValueText, Stack } from "@chakra-ui/react"
+import { Field, Icon, Input, SelectValueText, Stack, createListCollection } from "@chakra-ui/react";
+import { Button } from "../../components/ui/button";
+import { DialogBody, DialogCloseTrigger, DialogContent, DialogFooter, DialogHeader, DialogRoot, DialogTitle, DialogTrigger } from "../../components/ui/dialog";
-import { FaRegEdit } from "react-icons/fa"
-import { SelectContent, SelectItem, SelectLabel, SelectRoot, SelectTrigger } from "../../components/ui/select"
+import { TbEdit } from "react-icons/tb";
+import { SelectContent, SelectItem, SelectLabel, SelectRoot, SelectTrigger } from "../../components/ui/select";
const frameworks = createListCollection({
items: [
@@ -19,9 +19,16 @@ function ManageJobsAdd() {
-
-
-
+
+
+
-
-
-
+
+
+
-
+
),
@@ -36,8 +36,8 @@ const managepost: any[] = [
),
"Publish Data": "12/01/2025",
"Activate/Deactivate": (
-
-
+
+
),
"Action": (
@@ -90,8 +90,8 @@ const ManagePost = () => {
colorPalette={"blue"}
_focus={{ border: "1px solid #02A0A0" }}
rounded={"md"}
- size={"2xs"}
- fontSize={"2sm"}
+ size={"xs"}
+ fontSize={"sm"}
placeholder="Search..."
bgColor={'#EEEEEE'}
ps={8}
diff --git a/src/Pages/ManagePost/ViewDailog.tsx b/src/Pages/ManagePost/ViewDailog.tsx
index dcd0c94..390da84 100644
--- a/src/Pages/ManagePost/ViewDailog.tsx
+++ b/src/Pages/ManagePost/ViewDailog.tsx
@@ -1,16 +1,23 @@
-import { MdOutlineRemoveRedEye } from "react-icons/md"
-import { Button } from "../../components/ui/button"
-import { DialogBody, DialogCloseTrigger, DialogContent, DialogHeader, DialogRoot, DialogTitle, DialogTrigger } from "../../components/ui/dialog"
-import { Field, Image, Input, Stack } from "@chakra-ui/react"
+import { Field, Icon, Image, Input, Stack } from "@chakra-ui/react"
+import { TbEdit } from "react-icons/tb"
import img from "../../assets/waterfall.jpg"
+import { DialogBody, DialogCloseTrigger, DialogContent, DialogHeader, DialogRoot, DialogTitle, DialogTrigger } from "../../components/ui/dialog"
+
function ViewDailog() {
return (
-
-
-
+
+
+
-
+
),
})),
@@ -57,7 +57,7 @@ const DeactivatedAccounts = () => {
_focus={{ border: "1px solid #02A0A0" }}
rounded={"md"}
size={"2xs"}
- fontSize={"2sm"}
+ fontSize={"sm"}
placeholder="Search..."
bgColor={'#EEEEEE'}
ps={8}
diff --git a/src/Pages/ManageUsers/RegisterUsers/EditRegisterUsers.tsx b/src/Pages/ManageUsers/RegisterUsers/EditRegisterUsers.tsx
index 30b934f..56462c9 100644
--- a/src/Pages/ManageUsers/RegisterUsers/EditRegisterUsers.tsx
+++ b/src/Pages/ManageUsers/RegisterUsers/EditRegisterUsers.tsx
@@ -1,5 +1,5 @@
import { MdOutlineRemoveRedEye } from "react-icons/md";
-import { Field, Input, Stack } from "@chakra-ui/react";
+import { Field, Icon, Input, Stack } from "@chakra-ui/react";
import {
DialogActionTrigger,
DialogBody,
@@ -13,12 +13,14 @@ import {
} from "../../../components/ui/dialog";
import { BiEdit } from "react-icons/bi";
import { Button } from "../../../components/ui/button";
+import { TbEdit } from "react-icons/tb";
+import Edit from "../../../components/ActionIcons/Edit";
function EditRegisterUsers() {
return (
-
+
-
+
),
"Action": (
@@ -84,8 +84,8 @@ const RegisterUsers = () => {
colorPalette={"blue"}
_focus={{ border: "1px solid #02A0A0" }}
rounded={"md"}
- size={"2xs"}
- fontSize={"2sm"}
+ size={"xs"}
+ fontSize={"sm"}
placeholder="Search..."
bgColor={'#EEEEEE'}
ps={8}
diff --git a/src/Pages/ManageUsers/RegisterUsers/ViewRegisterUsers.tsx b/src/Pages/ManageUsers/RegisterUsers/ViewRegisterUsers.tsx
index 7826ee4..5f26943 100644
--- a/src/Pages/ManageUsers/RegisterUsers/ViewRegisterUsers.tsx
+++ b/src/Pages/ManageUsers/RegisterUsers/ViewRegisterUsers.tsx
@@ -1,5 +1,5 @@
import { MdOutlineRemoveRedEye } from "react-icons/md";
-import { Field, Input, Stack } from "@chakra-ui/react";
+import { Field, Icon, Input, Stack } from "@chakra-ui/react";
import {
DialogBody,
DialogCloseTrigger,
@@ -14,10 +14,16 @@ function ViewRegisterUsers() {
return (
-
+
+
+
{
colorPalette={"blue"}
_focus={{ border: "1px solid #02A0A0" }}
rounded={"md"}
- size={"2xs"}
- fontSize={"2sm"}
+ size={"xs"}
+ fontSize={"sm"}
placeholder="Search..."
bgColor={'#EEEEEE'}
ps={8}
diff --git a/src/Pages/MasterModule/AgencyMaster/EditAgencyMaster.tsx b/src/Pages/MasterModule/AgencyMaster/EditAgencyMaster.tsx
index c075e91..e524e50 100644
--- a/src/Pages/MasterModule/AgencyMaster/EditAgencyMaster.tsx
+++ b/src/Pages/MasterModule/AgencyMaster/EditAgencyMaster.tsx
@@ -1,7 +1,8 @@
import { FaRegEdit } from "react-icons/fa"
import { Button } from "../../../components/ui/button"
import { DialogBody, DialogCloseTrigger, DialogContent, DialogFooter, DialogHeader, DialogRoot, DialogTitle, DialogTrigger } from "../../../components/ui/dialog"
-import { Field, Input, Stack, } from "@chakra-ui/react"
+import { Field, Icon, Input, Stack, } from "@chakra-ui/react"
+import { TbEdit } from "react-icons/tb"
function EditAgencyMaster() {
@@ -10,9 +11,16 @@ function EditAgencyMaster() {
-
-
-
+
+
+
-
-
+
+
+
{
colorPalette={"blue"}
_focus={{ border: "1px solid #02A0A0" }}
rounded={"md"}
- size={"2xs"}
- fontSize={"2sm"}
+ size={"xs"}
+ fontSize={"sm"}
placeholder="Search..."
bgColor={'#EEEEEE'}
ps={8}
diff --git a/src/Pages/MasterModule/JobStatus/JobStatus.tsx b/src/Pages/MasterModule/JobStatus/JobStatus.tsx
index 409dfc1..403509a 100644
--- a/src/Pages/MasterModule/JobStatus/JobStatus.tsx
+++ b/src/Pages/MasterModule/JobStatus/JobStatus.tsx
@@ -63,8 +63,8 @@ const JobStatus = () => {
colorPalette={"blue"}
_focus={{ border: "1px solid #02A0A0" }}
rounded={"md"}
- size={"2xs"}
- fontSize={"2sm"}
+ size={"xs"}
+ fontSize={"sm"}
placeholder="Search..."
bgColor={'#EEEEEE'}
ps={8}
diff --git a/src/Pages/MasterModule/JobType/JobType.tsx b/src/Pages/MasterModule/JobType/JobType.tsx
index 353387f..6c7b3d4 100644
--- a/src/Pages/MasterModule/JobType/JobType.tsx
+++ b/src/Pages/MasterModule/JobType/JobType.tsx
@@ -63,8 +63,8 @@ const JobType = () => {
colorPalette={"blue"}
_focus={{ border: "1px solid #02A0A0" }}
rounded={"md"}
- size={"2xs"}
- fontSize={"2sm"}
+ size={"xs"}
+ fontSize={"sm"}
placeholder="Search..."
bgColor={'#EEEEEE'}
ps={8}
diff --git a/src/Pages/MasterModule/TemplateMaster/TemplateMaster.tsx b/src/Pages/MasterModule/TemplateMaster/TemplateMaster.tsx
index de0a4d3..a26c28f 100644
--- a/src/Pages/MasterModule/TemplateMaster/TemplateMaster.tsx
+++ b/src/Pages/MasterModule/TemplateMaster/TemplateMaster.tsx
@@ -28,8 +28,8 @@ const managepost: any[] = [
"Images": (
//
-
-
+
+
@@ -76,8 +76,8 @@ const TemplateMaster = () => {
colorPalette={"blue"}
_focus={{ border: "1px solid #02A0A0" }}
rounded={"md"}
- size={"2xs"}
- fontSize={"2sm"}
+ size={"xs"}
+ fontSize={"sm"}
placeholder="Search..."
bgColor={'#EEEEEE'}
ps={8}
diff --git a/src/Pages/MasterModule/WorkspaceMode/WorkspaceMode.tsx b/src/Pages/MasterModule/WorkspaceMode/WorkspaceMode.tsx
index c5a2a21..ffc6939 100644
--- a/src/Pages/MasterModule/WorkspaceMode/WorkspaceMode.tsx
+++ b/src/Pages/MasterModule/WorkspaceMode/WorkspaceMode.tsx
@@ -63,8 +63,8 @@ const WorkspaceMode = () => {
colorPalette={"blue"}
_focus={{ border: "1px solid #02A0A0" }}
rounded={"md"}
- size={"2xs"}
- fontSize={"2sm"}
+ size={"xs"}
+ fontSize={"sm"}
placeholder="Search..."
bgColor={'#EEEEEE'}
ps={8}
diff --git a/src/Pages/SubAdmin/AddModel.tsx b/src/Pages/SubAdmin/AddModel.tsx
index 5fab47e..03472cb 100644
--- a/src/Pages/SubAdmin/AddModel.tsx
+++ b/src/Pages/SubAdmin/AddModel.tsx
@@ -12,7 +12,7 @@ function AddModel() {
{/* */}
-
+
diff --git a/src/Pages/SubAdmin/SubAdmin.tsx b/src/Pages/SubAdmin/SubAdmin.tsx
index 974216f..b48a452 100644
--- a/src/Pages/SubAdmin/SubAdmin.tsx
+++ b/src/Pages/SubAdmin/SubAdmin.tsx
@@ -76,11 +76,11 @@ const SubAdmin = () => {
p={3}
w={300}
bg={"#fff"}
- colorPalette={"blue"}
+ colorPalette={"cyan"}
_focus={{ border: "1px solid #02A0A0" }}
rounded={"md"}
- size={"2xs"}
- fontSize={"2sm"}
+ size={"xs"}
+ fontSize={"sm"}
placeholder="Search..."
bgColor={'#EEEEEE'}
ps={8}
diff --git a/src/Pages/SubAdmin/ViewSubAdmin.tsx b/src/Pages/SubAdmin/ViewSubAdmin.tsx
index c1d3a56..b566162 100644
--- a/src/Pages/SubAdmin/ViewSubAdmin.tsx
+++ b/src/Pages/SubAdmin/ViewSubAdmin.tsx
@@ -1,17 +1,28 @@
import { Button } from "../../components/ui/button"
import { DialogBody, DialogCloseTrigger, DialogContent, DialogFooter, DialogHeader, DialogRoot, DialogTitle, DialogTrigger } from "../../components/ui/dialog"
-import { Field, Grid, Heading, Input, Stack, Text } from "@chakra-ui/react"
+import { Field, Grid, Heading, Icon, Input, Stack, Text } from "@chakra-ui/react"
import { Checkbox } from "../../components/ui/checkbox"
import { MdOutlineRemoveRedEye } from "react-icons/md";
+import { FaRegEdit } from "react-icons/fa";
function ViewSubAdmin() {
return (
+
+
+
-
+ {/* */}
- {/* */}
+ {/* */}
diff --git a/src/Redux/Service/apiSlice.tsx b/src/Redux/Service/apiSlice.tsx
index 13eb4e6..b93eaf0 100644
--- a/src/Redux/Service/apiSlice.tsx
+++ b/src/Redux/Service/apiSlice.tsx
@@ -51,6 +51,14 @@ export const dashboard = createApi({
getPosts: builder.query({ query: () => "/posts" }),
+
+ // 🔹 POST: Create a new post
+ logOut: builder.mutation({
+ query: () => ({
+ url: "/logout",
+ method: "POST",
+ }),
+ }),
@@ -58,7 +66,7 @@ export const dashboard = createApi({
}),
});
-export const { useGetPostsQuery } = dashboard;
+export const { useGetPostsQuery, useLogOutMutation } = dashboard;
export type Post = {
id: number;
diff --git a/src/Redux/Service/forget.password.service.ts b/src/Redux/Service/forget.password.service.ts
new file mode 100644
index 0000000..6e88741
--- /dev/null
+++ b/src/Redux/Service/forget.password.service.ts
@@ -0,0 +1,36 @@
+import { createApi } from "@reduxjs/toolkit/query/react";
+import { baseQueryWithReauth } from "./apiSlice";
+
+export const forgetPassword = createApi({
+ reducerPath: "aboutUs",
+ baseQuery: baseQueryWithReauth, // Use enhanced baseQuery with error handling
+ endpoints: (builder) => ({
+
+
+
+ // 🔹 GET: Fetch all posts
+ getAboutUs: builder.query({
+ query: () => "/send-otp",
+ }),
+
+ }),
+});
+
+export const {
+ useGetAboutUsQuery,
+} = forgetPassword;
+
+// Define Post type
+export type Post = {
+ id: number;
+ title: string;
+ body: string;
+};
+
+
+export type AboutUs = {
+ id: number;
+ language_master_xid: number;
+ content: string;
+ is_active: boolean;
+};
diff --git a/src/Redux/Service/manage.aboutus.service.ts b/src/Redux/Service/manage.aboutus.service.ts
index 0e55fbb..428eb61 100644
--- a/src/Redux/Service/manage.aboutus.service.ts
+++ b/src/Redux/Service/manage.aboutus.service.ts
@@ -9,7 +9,7 @@ export const aboutUs = createApi({
// 🔹 GET: Fetch all posts
- getAboutUs: builder.query({
+ getAboutUs: builder.query({
query: () => "/about-us",
}),
@@ -93,3 +93,11 @@ export type AboutUs = {
content: string;
is_active: boolean;
};
+
+// First define your interface
+interface AboutUsResponse {
+ data: {
+ content: string;
+ // other fields...
+ }[];
+}
\ No newline at end of file
diff --git a/src/Redux/Service/privacy.policy.service.ts b/src/Redux/Service/privacy.policy.service.ts
index b7e3126..b2e0bbb 100644
--- a/src/Redux/Service/privacy.policy.service.ts
+++ b/src/Redux/Service/privacy.policy.service.ts
@@ -1,26 +1,68 @@
-import { createApi } from "@reduxjs/toolkit/query";
+import { createApi } from "@reduxjs/toolkit/query/react"; // Fix import
import { baseQueryWithReauth } from "./apiSlice";
+
+
+
export const privacyPolicy = createApi({
- reducerPath: "privacyPolicy",
- baseQuery: baseQueryWithReauth, // Use enhanced baseQuery with error handling
- endpoints: (builder) => ({
-
-
-
- getPosts: builder.query({ query: () => "/posts" }),
-
-
-
-
-
+ reducerPath: "privacyPolicy",
+ baseQuery: baseQueryWithReauth, // Use enhanced baseQuery with error handling
+ endpoints: (builder) => ({
+ // 🔹 GET: Fetch all privacy policies
+ getPrivacyPolicy: builder.query({
+ query: () => "/privacy-policy",
}),
- });
+
+ // 🔹 GET: Fetch a single post by ID
+ // getPostById: builder.query({
+ // query: (id) => `/posts/${id}`,
+ // }),
+
+ // 🔹 POST: Create a new post
+ // createPost: builder.mutation>({
+ // query: (newPost) => ({
+ // url: "/posts",
+ // method: "POST",
+ // body: newPost,
+ // }),
+ // }),
+
+ // 🔹 PUT: Update an existing post
+ // updatePost: builder.mutation }>({
+ // query: ({ id, updatedData }) => ({
+ // url: `/posts/${id}`,
+ // method: "PUT",
+ // body: updatedData,
+ // }),
+ // }),
+
+ // 🔹 DELETE: Remove a post by ID
+ // deletePost: builder.mutation<{ success: boolean }, number>({
+ // query: (id) => ({
+ // url: `/posts/${id}`,
+ // method: "DELETE",
+ // }),
+ // }),
+ }),
+});
+
+// Export hooks for usage in components
+export const {
+ useGetPrivacyPolicyQuery, // Export the correct hook
- export const { } = privacyPolicy;
-
- export type Post = {
- id: number;
- title: string;
- body: string;
- };
\ No newline at end of file
+} = privacyPolicy;
+
+
+// Define types at the top for better readability
+export type Post = {
+ id: number;
+ title: string;
+ body: string;
+};
+
+export type PrivacyPolicy = {
+ id: number;
+ language_master_xid: number;
+ content: string;
+ is_active: boolean;
+};
\ No newline at end of file
diff --git a/src/Routes/Nav.ts b/src/Routes/Nav.ts
index e0c0a56..83956b9 100644
--- a/src/Routes/Nav.ts
+++ b/src/Routes/Nav.ts
@@ -17,7 +17,7 @@ export const nav = [
},
{
title: "Manage Users",
- path: "",
+ path: "/register-users",
Icon: BiUserPin,
type:'multiple',
children: [
@@ -65,7 +65,7 @@ export const nav = [
},
{
title: "Manage CMS",
- path: "",
+ path: "/faq",
Icon: AiOutlineFileText,
type:'multiple',
children: [
@@ -104,7 +104,7 @@ export const nav = [
},
{
title: "Master Module",
- path: "",
+ path: "/agency-master",
Icon: BsBoxes,
type:'multiple',
children: [
diff --git a/src/Routes/Routes.ts b/src/Routes/Routes.ts
index 084cc1b..c014a40 100644
--- a/src/Routes/Routes.ts
+++ b/src/Routes/Routes.ts
@@ -22,6 +22,7 @@ import Country from "../Pages/MasterModule/Country/Country";
import JobStatus from "../Pages/MasterModule/JobStatus/JobStatus";
import RegisterUsers from "../Pages/ManageUsers/RegisterUsers/RegisterUsers";
import DeactivatedAccounts from "../Pages/ManageUsers/DeactivatedAccounts/DeactivatedAccounts";
+import { Spinner } from "../components/Sipnner/Spinner";
export const RouteLink = [
{ path: "/", Component: Dashboard },
@@ -47,4 +48,6 @@ export const RouteLink = [
{ path: "/workspace-mode", Component: WorkspaceMode},
{ path: "/country", Component: Country},
{ path: "/job-status", Component: JobStatus},
+ // { path: "/job-status", Component: Spinner},
+
]
\ No newline at end of file
diff --git a/src/components/ActionIcons/Edit.tsx b/src/components/ActionIcons/Edit.tsx
new file mode 100644
index 0000000..d6d4b09
--- /dev/null
+++ b/src/components/ActionIcons/Edit.tsx
@@ -0,0 +1,22 @@
+import { Icon } from '@chakra-ui/react'
+import { TbEdit } from 'react-icons/tb'
+import { Tooltip } from '../ui/tooltip'
+
+const Edit = () => {
+ return (
+
+
+
+
+
+ )
+}
+
+export default Edit
\ No newline at end of file
diff --git a/src/components/EditSubAdmin.tsx b/src/components/EditSubAdmin.tsx
index 9b826a4..4928b75 100644
--- a/src/components/EditSubAdmin.tsx
+++ b/src/components/EditSubAdmin.tsx
@@ -1,4 +1,7 @@
+import { Field, Grid, Heading, Icon, Input, Stack, Text } from "@chakra-ui/react";
+import { TbEdit } from "react-icons/tb";
import { Button } from "./ui/button";
+import { Checkbox } from "./ui/checkbox";
import {
DialogBody,
DialogCloseTrigger,
@@ -9,16 +12,22 @@ import {
DialogTitle,
DialogTrigger,
} from "./ui/dialog";
-import { Field, Grid, Heading, Input, Stack, Text } from "@chakra-ui/react";
-import { Checkbox } from "./ui/checkbox";
-import { FaRegEdit } from "react-icons/fa";
function EditSubAdmin() {
return (
-
+ {/* */}
+
+
+
+
{/* */}
diff --git a/src/components/MainFrame.tsx b/src/components/MainFrame.tsx
index 2646c63..d6a3404 100644
--- a/src/components/MainFrame.tsx
+++ b/src/components/MainFrame.tsx
@@ -13,7 +13,7 @@ interface MainFrameProps {
const MainFrame: FC = ({ children }) => {
return (
-
+
= ({ children }) => {
rounded="lg"
boxShadow={'rgba(99, 99, 99, 0.2) 0px 2px 8px 0px'}
pt={3}
+
>
{children}
diff --git a/src/components/ProgressBar/ProgessBar.css b/src/components/ProgressBar/ProgessBar.css
new file mode 100644
index 0000000..4c270b8
--- /dev/null
+++ b/src/components/ProgressBar/ProgessBar.css
@@ -0,0 +1,20 @@
+/* HTML: */
+.progressbar {
+ height: 4px;
+ width: 100%;
+ --c: no-repeat linear-gradient(#02A0A0 0 0);
+ background: var(--c), var(--c), #B8F8F8;
+ background-size: 60% 100%;
+ animation: l16 3s infinite;
+}
+
+@keyframes l16 {
+ 0% {background-position: -150% 0, -150% 0}
+ 66% {background-position: 250% 0, -150% 0}
+ 100% {background-position: 250% 0, 250% 0}
+}
+
+.progressbarInactive{
+ height: 4px;
+ width: 100%;
+}
\ No newline at end of file
diff --git a/src/components/ProgressBar/ProgressBar.tsx b/src/components/ProgressBar/ProgressBar.tsx
new file mode 100644
index 0000000..f5ff9ac
--- /dev/null
+++ b/src/components/ProgressBar/ProgressBar.tsx
@@ -0,0 +1,12 @@
+import React from "react";
+import './ProgessBar.css';
+
+interface ProgressBarProps {
+ isLoading: boolean;
+}
+
+const ProgressBar: React.FC = ({ isLoading }) => {
+ return ;
+};
+
+export default ProgressBar;
diff --git a/src/components/Sipnner/Spinner.css b/src/components/Sipnner/Spinner.css
new file mode 100644
index 0000000..b6df8cd
--- /dev/null
+++ b/src/components/Sipnner/Spinner.css
@@ -0,0 +1,28 @@
+/* HTML: */
+.loader {
+ width: 25px;
+ aspect-ratio: 1;
+ display: grid;
+ border-radius: 50%;
+ background:
+ linear-gradient(0deg, rgba(2, 160, 160, 0.5) 30%, transparent 0 70%, rgba(2, 160, 160, 1) 0) 50% / 8% 100%,
+ linear-gradient(90deg, rgba(2, 160, 160, 0.25) 30%, transparent 0 70%, rgba(2, 160, 160, 0.75) 0) 50% / 100% 8%;
+ background-repeat: no-repeat;
+ animation: l23 1s infinite steps(12);
+ }
+ .loader::before,
+ .loader::after {
+ content: "";
+ grid-area: 1/1;
+ border-radius: 50%;
+ background: inherit;
+ opacity: 0.915;
+ transform: rotate(30deg);
+ }
+ .loader::after {
+ opacity: 0.83;
+ transform: rotate(60deg);
+ }
+ @keyframes l23 {
+ 100% {transform: rotate(1turn)}
+ }
\ No newline at end of file
diff --git a/src/components/Sipnner/Spinner.tsx b/src/components/Sipnner/Spinner.tsx
new file mode 100644
index 0000000..12dc49d
--- /dev/null
+++ b/src/components/Sipnner/Spinner.tsx
@@ -0,0 +1,7 @@
+import { Center } from '@chakra-ui/react'
+import './Spinner.css'
+export const Spinner = () =>
+
+
+
+
diff --git a/src/components/ui/password-input.tsx b/src/components/ui/password-input.tsx
index 0c608a9..03b8415 100644
--- a/src/components/ui/password-input.tsx
+++ b/src/components/ui/password-input.tsx
@@ -86,7 +86,7 @@ const VisibilityTrigger = React.forwardRef(
{
return (
-
+
{(toast) => (
-
+
{toast.type === "loading" ? (
) : (
)}
-
- {toast.title && {toast.title}}
+
+ {toast.title && {toast.title}}
{toast.description && (
{toast.description}
)}
diff --git a/src/index.css b/src/index.css
index 521b87f..a7a0c7c 100644
--- a/src/index.css
+++ b/src/index.css
@@ -14,12 +14,26 @@ body {
margin: 0;
padding: 0;
font-family: "Roboto", serif;
+ background-color: #fff;
}
.Oxygen {
font-family: "Oxygen", serif
}
+/* Change text selection color */
+::selection {
+ background-color: #02A0A0; /* Yellow */
+ color: #fff; /* Black */
+}
+
+/* For Firefox */
+::-moz-selection {
+ background-color: #02A0A0;
+ color: #fff;
+}
+
+
.active {
background-color: #02A0A0 !important;
@@ -133,32 +147,10 @@ body {
}
-/* Style the scrollbar */
-::-webkit-scrollbar {
- width: 6px;
- /* Width of the vertical scrollbar */
- height: 12px;
- /* Height of the horizontal scrollbar */
-}
-
-/* Style the scrollbar track (the background area) */
-::-webkit-scrollbar-track {
- background-color: #f1f1f1;
- border-radius: 10px;
-}
-
-/* Style the scrollbar thumb (the draggable part) */
-::-webkit-scrollbar-thumb {
- background-color: #c8c8c8cf;
- /* Gray color for the thumb */
- border-radius: 10px;
- border: 1px solid #f1f1f1;
- /* Border around the thumb */
-}
/* Scrollbar width */
::-webkit-scrollbar {
- width: 8px;
+ width: 6px;
height: 8px;
cursor: pointer;
}
@@ -170,14 +162,15 @@ body {
/* Scrollbar thumb (the draggable part) */
::-webkit-scrollbar-thumb {
- background: rgba(0, 0, 0, 0.3); /* Light black (30% opacity) */
+ background: rgba(0, 0, 0, 0.2); /* Light black (30% opacity) */
border-radius: 10px; /* Rounded edges */
transition: background 0.3s;
}
/* On hover, make it darker */
::-webkit-scrollbar-thumb:hover {
- background: rgba(0, 0, 0, 0.5);
+ background: rgba(0, 0, 0, 0.411);
+ cursor: pointer;
}