diff --git a/dev-dist/sw.js b/dev-dist/sw.js index 24a967b..115230b 100644 --- a/dev-dist/sw.js +++ b/dev-dist/sw.js @@ -82,7 +82,7 @@ define(['./workbox-54d0af47'], (function (workbox) { 'use strict'; "revision": "3ca0b8505b4bec776b69afdba2768812" }, { "url": "index.html", - "revision": "0.f3u8hds6p7" + "revision": "0.3bv9k3911i8" }], {}); workbox.cleanupOutdatedCaches(); workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), { diff --git a/src/Layouts/DefaultLayout.tsx b/src/Layouts/DefaultLayout.tsx index 1cf5b32..97af72e 100644 --- a/src/Layouts/DefaultLayout.tsx +++ b/src/Layouts/DefaultLayout.tsx @@ -7,9 +7,10 @@ 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"; const DefaultLayout: FC<{ children: React.ReactNode }> = ({ children }) => { @@ -23,18 +24,29 @@ const DefaultLayout: FC<{ children: React.ReactNode }> = ({ children }) => { throw new Error('App must be used within a GlobalStateProvider'); } const { setIsAuthenticate } = context; + const [ logOutAdmin ] = useLogOutMutation() // Logout function - const handleLogout = () => { - dispatch(logout()) - localStorage.removeItem("token"); // Clear token - setIsAuthenticate(false); // Update state + 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 ( - @@ -49,13 +61,10 @@ const DefaultLayout: FC<{ children: React.ReactNode }> = ({ children }) => { )} - Logout - - 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/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 ( - - - {/* */} - + + + - - - {/* */} + + + diff --git a/src/Pages/ManageJobs/ManageJobs.tsx b/src/Pages/ManageJobs/ManageJobs.tsx index 0e2beaa..06ec2bf 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"; 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": ( 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 ( - - - + + + - + ), })), diff --git a/src/Pages/ManageUsers/RegisterUsers/EditRegisterUsers.tsx b/src/Pages/ManageUsers/RegisterUsers/EditRegisterUsers.tsx index 30b934f..739830f 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,22 @@ import { } from "../../../components/ui/dialog"; import { BiEdit } from "react-icons/bi"; import { Button } from "../../../components/ui/button"; +import { TbEdit } from "react-icons/tb"; function EditRegisterUsers() { return ( - + + + - + ), "Action": ( 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 ( - + + + - - - + + + - - + + + */} - + diff --git a/src/Pages/SubAdmin/SubAdmin.tsx b/src/Pages/SubAdmin/SubAdmin.tsx index 974216f..51a01b2 100644 --- a/src/Pages/SubAdmin/SubAdmin.tsx +++ b/src/Pages/SubAdmin/SubAdmin.tsx @@ -76,10 +76,10 @@ const SubAdmin = () => { p={3} w={300} bg={"#fff"} - colorPalette={"blue"} + colorPalette={"cyan"} _focus={{ border: "1px solid #02A0A0" }} rounded={"md"} - size={"2xs"} + size={"xs"} fontSize={"2sm"} placeholder="Search..." bgColor={'#EEEEEE'} 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/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..e486ade 100644 --- a/src/components/MainFrame.tsx +++ b/src/components/MainFrame.tsx @@ -13,7 +13,7 @@ interface MainFrameProps { const MainFrame: FC = ({ children }) => { return ( - +