diff --git a/app/(application)/admin/_layout.tsx b/app/(application)/admin/_layout.tsx
index 208aa4a..fb5c959 100644
--- a/app/(application)/admin/_layout.tsx
+++ b/app/(application)/admin/_layout.tsx
@@ -66,9 +66,9 @@ export default function AdminLayout() {
{/* ================== Job Start ================== */}
-
+ {/*
-
+ */}
@@ -80,6 +80,16 @@ export default function AdminLayout() {
{/* ================== Collaboration End ================== */}
+
+ {/* ================== Forum Start ================== */}
+
+
+
+
+
+
+
+ {/* ================== Forum End ================== */}
();
+
+ const handlerAction = (item: { value: string; path: string }) => {
+ if (item.value === "delete") {
+ AlertDefaultSystem({
+ title: "Hapus Posting",
+ message: "Apakah Anda yakin ingin menghapus posting ini?",
+ textLeft: "Batal",
+ textRight: "Hapus",
+ onPressRight: () => {
+ Toast.show({
+ type: "success",
+ text1: "Posting berhasil dihapus",
+ });
+ },
+ });
+ } else {
+ router.navigate(item.path as any);
+ }
+ setOpenDrawerAction(false);
+ };
+
+ return (
+ <>
+ }
+ onPress={() => setOpenDrawerPage(true)}
+ />
+ }
+ />
+ }
+ >
+
+
+ {listDataAction.map((item, i) => (
+ {item.label}}
+ value={{item.value}}
+ />
+ ))}
+ Posting
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit.
+ Asperiores cupiditate nobis dignissimos explicabo quo unde dolorum
+ numquam eos ab laborum fugiat illo nam velit quibusdam, maxime
+ assumenda aut vero provident!
+
+
+
+
+ {/* */}
+
+
+
+
+ {Array.from({ length: 10 }).map((_, index) => (
+
+ }
+ onPress={() => {
+ setOpenDrawerAction(true);
+ setId(index + 1);
+ }}
+ />
+ }
+ value2={Username username}
+ value3={
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit.
+ Blanditiis asperiores quidem deleniti architecto eaque et
+ nostrum, ad consequuntur eveniet quisquam quae voluptatum
+ ducimus! Dolorem nobis modi officia debitis, beatae mollitia.
+
+ }
+ />
+ ))}
+
+
+
+ setOpenDrawerPage(false)}
+ height={"auto"}
+ >
+
+ ),
+ label: "Daftar Report Posting",
+ value: "detail",
+ path: `/admin/forum/${id}/list-report-posting`,
+ },
+ ]}
+ onPressItem={(item) => {
+ router.navigate(item.path as any);
+ setOpenDrawerPage(false);
+ }}
+ />
+
+
+ setOpenDrawerAction(false)}
+ height={"auto"}
+ >
+ ,
+ label: "Detail Komentar",
+ value: "detail",
+ path: `admin/forum/${id}/list-report-comment`,
+ },
+ {
+ icon: (
+
+ ),
+ label: "Hapus Komentar",
+ value: "delete",
+ path: "",
+ color: MainColor.red,
+ },
+ ]}
+ onPressItem={(item) => {
+ handlerAction(item as any);
+ }}
+ />
+
+ >
+ );
+}
+
+const listDataAction = [
+ {
+ label: "Username",
+ value: "Username",
+ },
+ {
+ label: "Status",
+ value: Open,
+ },
+ {
+ label: "Komentar",
+ value: "10",
+ },
+ {
+ label: "Total Report",
+ value: "1",
+ },
+];
diff --git a/app/(application)/admin/forum/[id]/list-report-comment.tsx b/app/(application)/admin/forum/[id]/list-report-comment.tsx
new file mode 100644
index 0000000..2a6a99d
--- /dev/null
+++ b/app/(application)/admin/forum/[id]/list-report-comment.tsx
@@ -0,0 +1,168 @@
+import {
+ ActionIcon,
+ AlertDefaultSystem,
+ BaseBox,
+ DrawerCustom,
+ MenuDrawerDynamicGrid,
+ Spacing,
+ StackCustom,
+ TextCustom,
+ ViewWrapper,
+} from "@/components";
+import { IconDot, IconView } from "@/components/_Icon/IconComponent";
+import { IconTrash } from "@/components/_Icon/IconTrash";
+import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
+import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage";
+import AdminTitleTable from "@/components/_ShareComponent/Admin/TableTitle";
+import AdminTableValue from "@/components/_ShareComponent/Admin/TableValue";
+import { GridDetail_4_8 } from "@/components/_ShareComponent/GridDetail_4_8";
+import { MainColor } from "@/constants/color-palet";
+import { ICON_SIZE_BUTTON } from "@/constants/constans-value";
+import { router } from "expo-router";
+import { useState } from "react";
+import { Divider } from "react-native-paper";
+import Toast from "react-native-toast-message";
+
+export default function AdminForumReportComment() {
+ const [openDrawer, setOpenDrawer] = useState(false);
+ const [openDrawerAction, setOpenDrawerAction] = useState(false);
+
+ return (
+ <>
+ }
+ onPress={() => setOpenDrawer(true)}
+ />
+ }
+ />
+ }
+ >
+
+
+ {listData.map((item, i) => (
+ {item.label}}
+ value={{item.value}}
+ />
+ ))}
+ Posting
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit.
+ Asperiores cupiditate nobis dignissimos explicabo quo unde dolorum
+ numquam eos ab laborum fugiat illo nam velit quibusdam, maxime
+ assumenda aut vero provident!
+
+
+
+
+
+
+
+
+
+
+ {Array.from({ length: 5 }).map((_, index) => (
+ }
+ onPress={() => {
+ setOpenDrawerAction(true);
+ }}
+ />
+ }
+ value2={Username username}
+ value3={
+
+ SPAM
+
+ }
+ />
+ ))}
+
+
+
+ setOpenDrawer(false)}
+ height={"auto"}
+ >
+ ,
+ label: "Hapus Komentar",
+ value: "delete",
+ path: "",
+ color: MainColor.red,
+ },
+ ]}
+ onPressItem={(item) => {
+ AlertDefaultSystem({
+ title: "Hapus Komentar",
+ message: "Apakah Anda yakin ingin menghapus komentar ini?",
+ textLeft: "Batal",
+ textRight: "Hapus",
+ onPressRight: () => {
+ setOpenDrawer(false);
+ Toast.show({
+ type: "success",
+ text1: "Komentar berhasil dihapus",
+ });
+ router.back();
+ },
+ });
+ }}
+ />
+
+
+ setOpenDrawerAction(false)}
+ height={"auto"}
+ >
+ {listDataAction.map((item, i) => (
+ {item.label}}
+ value={{item.value}}
+ />
+ ))}
+
+ >
+ );
+}
+
+const listData = [
+ {
+ label: "Username",
+ value: "Username",
+ },
+];
+
+const listDataAction = [
+ {
+ label: "Username",
+ value: "Riyusa",
+ },
+ {
+ label: "Kategori Report",
+ value: "SPAM",
+ },
+ {
+ label: "Deskripsi",
+ value:
+ "Lorem ipsum dolor sit amet consectetur adipisicing elit. Blanditiis asperiores quidem deleniti architecto eaque et nostrum, ad consequuntur eveniet quisquam quae voluptatum ducimus! Dolorem nobis modi officia debitis, beatae mollitia.",
+ },
+];
diff --git a/app/(application)/admin/forum/[id]/list-report-posting.tsx b/app/(application)/admin/forum/[id]/list-report-posting.tsx
new file mode 100644
index 0000000..9fa2b05
--- /dev/null
+++ b/app/(application)/admin/forum/[id]/list-report-posting.tsx
@@ -0,0 +1,170 @@
+import {
+ ActionIcon,
+ AlertDefaultSystem,
+ BadgeCustom,
+ BaseBox,
+ DrawerCustom,
+ MenuDrawerDynamicGrid,
+ Spacing,
+ StackCustom,
+ TextCustom,
+ ViewWrapper,
+} from "@/components";
+import { IconDot, IconView } from "@/components/_Icon/IconComponent";
+import { IconTrash } from "@/components/_Icon/IconTrash";
+import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
+import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage";
+import AdminTitleTable from "@/components/_ShareComponent/Admin/TableTitle";
+import AdminTableValue from "@/components/_ShareComponent/Admin/TableValue";
+import { GridDetail_4_8 } from "@/components/_ShareComponent/GridDetail_4_8";
+import { MainColor } from "@/constants/color-palet";
+import { ICON_SIZE_BUTTON } from "@/constants/constans-value";
+import { router } from "expo-router";
+import { useState } from "react";
+import { Divider } from "react-native-paper";
+import Toast from "react-native-toast-message";
+
+export default function AdminForumReportPosting() {
+ const [openDrawerPage, setOpenDrawerPage] = useState(false);
+ const [openDrawerAction, setOpenDrawerAction] = useState(false);
+
+ return (
+ <>
+ }
+ onPress={() => setOpenDrawerPage(true)}
+ />
+ }
+ />
+ }
+ >
+
+
+ {listData.map((item, i) => (
+ {item.label}}
+ value={{item.value}}
+ />
+ ))}
+ Posting
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit.
+ Asperiores cupiditate nobis dignissimos explicabo quo unde dolorum
+ numquam eos ab laborum fugiat illo nam velit quibusdam, maxime
+ assumenda aut vero provident!
+
+
+
+
+
+
+
+
+
+ {Array.from({ length: 5 }).map((_, index) => (
+ }
+ onPress={() => setOpenDrawerAction(true)}
+ />
+ }
+ value2={Username username}
+ value3={
+
+ SPAM
+
+ }
+ />
+ ))}
+
+
+
+ setOpenDrawerPage(false)}
+ height={"auto"}
+ >
+ ,
+ label: "Hapus Posting",
+ value: "delete",
+ path: "",
+ color: MainColor.red,
+ },
+ ]}
+ onPressItem={(item) => {
+ AlertDefaultSystem({
+ title: "Hapus Posting",
+ message: "Apakah Anda yakin ingin menghapus posting ini?",
+ textLeft: "Batal",
+ textRight: "Hapus",
+ onPressRight: () => {
+ setOpenDrawerPage(false);
+ Toast.show({
+ type: "success",
+ text1: "Posting berhasil dihapus",
+ });
+ router.back()
+ },
+ });
+ }}
+ />
+
+
+ setOpenDrawerAction(false)}
+ height={"auto"}
+ >
+ {listDataAction.map((item, i) => (
+ {item.label}}
+ value={{item.value}}
+ />
+ ))}
+
+ >
+ );
+}
+
+const listData = [
+ {
+ label: "Username",
+ value: "Username",
+ },
+ {
+ label: "Status",
+ value: Open,
+ },
+];
+
+const listDataAction = [
+ {
+ label: "Username",
+ value: "Firman Nusantara",
+ },
+ {
+ label: "Kategori Report",
+ value: "SPAM",
+ },
+ {
+ label: "Deskripsi",
+ value:
+ "Lorem ipsum dolor sit amet consectetur adipisicing elit. Blanditiis asperiores quidem deleniti architecto eaque et nostrum, ad consequuntur eveniet quisquam quae voluptatum ducimus! Dolorem nobis modi officia debitis, beatae mollitia.",
+ },
+];
diff --git a/app/(application)/admin/forum/index.tsx b/app/(application)/admin/forum/index.tsx
new file mode 100644
index 0000000..c80e0c6
--- /dev/null
+++ b/app/(application)/admin/forum/index.tsx
@@ -0,0 +1,42 @@
+import { Spacing, StackCustom, ViewWrapper } from "@/components";
+import {
+ IconPublish,
+ IconReport,
+} from "@/components/_Icon/IconComponent";
+import AdminComp_BoxDashboard from "@/components/_ShareComponent/Admin/BoxDashboard";
+import AdminTitlePage from "@/components/_ShareComponent/Admin/TitlePage";
+import { MainColor } from "@/constants/color-palet";
+
+export default function AdminForum() {
+ return (
+ <>
+
+
+
+
+ {listData.map((item, i) => (
+
+ ))}
+
+
+ >
+ );
+}
+
+const listData = [
+ {
+ label: "Posting",
+ value: 4,
+ icon: ,
+ },
+ {
+ label: "Report Posting",
+ value: 7,
+ icon: ,
+ },
+ {
+ label: "Report Comment",
+ value: 5,
+ icon: ,
+ },
+];
diff --git a/app/(application)/admin/forum/posting.tsx b/app/(application)/admin/forum/posting.tsx
new file mode 100644
index 0000000..b928f1e
--- /dev/null
+++ b/app/(application)/admin/forum/posting.tsx
@@ -0,0 +1,61 @@
+import {
+ ActionIcon,
+ BaseBox,
+ SearchInput,
+ Spacing,
+ TextCustom,
+ ViewWrapper,
+} from "@/components";
+import { IconView } from "@/components/_Icon/IconComponent";
+import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage";
+import AdminTitleTable from "@/components/_ShareComponent/Admin/TableTitle";
+import AdminTableValue from "@/components/_ShareComponent/Admin/TableValue";
+import AdminTitlePage from "@/components/_ShareComponent/Admin/TitlePage";
+import { ICON_SIZE_BUTTON } from "@/constants/constans-value";
+import { router } from "expo-router";
+import React from "react";
+import { Divider } from "react-native-paper";
+
+export default function AdminForumPosting() {
+ const rightComponent = (
+
+ );
+
+ return (
+ <>
+ }>
+
+
+
+
+
+ {Array.from({ length: 10 }).map((_, index) => (
+ }
+ onPress={() => {
+ router.push(`/admin/forum/${index + 1}`);
+ }}
+ />
+ }
+ value2={Username username}
+ value3={
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit.
+ Blanditiis asperiores quidem deleniti architecto eaque et
+ nostrum, ad consequuntur eveniet quisquam quae voluptatum
+ ducimus! Dolorem nobis modi officia debitis, beatae mollitia.
+
+ }
+ />
+ ))}
+
+
+ >
+ );
+}
diff --git a/app/(application)/admin/forum/report-comment.tsx b/app/(application)/admin/forum/report-comment.tsx
new file mode 100644
index 0000000..0b6a18a
--- /dev/null
+++ b/app/(application)/admin/forum/report-comment.tsx
@@ -0,0 +1,65 @@
+import {
+ ActionIcon,
+ BaseBox,
+ Divider,
+ SearchInput,
+ Spacing,
+ TextCustom,
+ ViewWrapper,
+} from "@/components";
+import { IconView } from "@/components/_Icon/IconComponent";
+import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage";
+import AdminTitleTable from "@/components/_ShareComponent/Admin/TableTitle";
+import AdminTableValue from "@/components/_ShareComponent/Admin/TableValue";
+import AdminTitlePage from "@/components/_ShareComponent/Admin/TitlePage";
+import { MainColor } from "@/constants/color-palet";
+import { ICON_SIZE_BUTTON } from "@/constants/constans-value";
+import { router } from "expo-router";
+
+export default function AdminForumReportComment() {
+
+ const rightComponent = (
+
+ );
+
+ return (
+ <>
+ }>
+
+
+
+
+
+
+ {Array.from({ length: 10 }).map((_, index) => (
+
+ }
+ onPress={() => {
+ router.push(`/admin/forum/${index + 1}/list-report-comment`);
+ }}
+ />
+ }
+ value2={Username username}
+ value3={
+
+ SPAM
+
+ }
+ />
+ ))}
+
+
+ >
+ );
+}
diff --git a/app/(application)/admin/forum/report-posting.tsx b/app/(application)/admin/forum/report-posting.tsx
new file mode 100644
index 0000000..1e36326
--- /dev/null
+++ b/app/(application)/admin/forum/report-posting.tsx
@@ -0,0 +1,73 @@
+/* eslint-disable @typescript-eslint/no-unused-vars */
+import {
+ ActionIcon,
+ BaseBox,
+ Divider,
+ SearchInput,
+ Spacing,
+ TextCustom,
+ ViewWrapper,
+} from "@/components";
+import { IconView } from "@/components/_Icon/IconComponent";
+import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage";
+import AdminTitleTable from "@/components/_ShareComponent/Admin/TableTitle";
+import AdminTableValue from "@/components/_ShareComponent/Admin/TableValue";
+import AdminTitlePage from "@/components/_ShareComponent/Admin/TitlePage";
+import { MainColor } from "@/constants/color-palet";
+import { ICON_SIZE_BUTTON } from "@/constants/constans-value";
+import { router } from "expo-router";
+import { useState } from "react";
+
+export default function AdminForumReportPosting() {
+ const [openDrawer, setOpenDrawer] = useState(false);
+ const [id, setId] = useState();
+
+ const rightComponent = (
+
+ );
+
+ return (
+ <>
+ }>
+
+
+
+
+
+
+ {Array.from({ length: 10 }).map((_, index) => (
+
+ }
+ onPress={() => {
+ router.push(`/admin/forum/${id}/list-report-posting`);
+ }}
+ />
+ }
+ value2={Username username}
+ value3={
+
+ Lorem, ipsum dolor sit amet consectetur adipisicing elit.
+ Omnis laborum doloremque eius velit voluptate corrupti vel,
+ provident quaerat tempore animi sed accusamus amet.
+ Temporibus, praesentium? Rem voluptatum nesciunt voluptas
+ repellat.
+
+ }
+ />
+ ))}
+
+
+ >
+ );
+}
diff --git a/app/(application)/admin/job/index.tsx b/app/(application)/admin/job/index.tsx
index 00d4d44..e58c36a 100644
--- a/app/(application)/admin/job/index.tsx
+++ b/app/(application)/admin/job/index.tsx
@@ -1,8 +1,12 @@
import { Spacing, StackCustom, ViewWrapper } from "@/components";
+import {
+ IconPublish,
+ IconReject,
+ IconReview,
+} from "@/components/_Icon/IconComponent";
import AdminComp_BoxDashboard from "@/components/_ShareComponent/Admin/BoxDashboard";
import AdminTitlePage from "@/components/_ShareComponent/Admin/TitlePage";
import { MainColor } from "@/constants/color-palet";
-import { Entypo, FontAwesome, FontAwesome6 } from "@expo/vector-icons";
export default function AdminJob() {
return (
@@ -24,22 +28,16 @@ const listData = [
{
label: "Publish",
value: 4,
- icon: ,
+ icon: ,
},
{
label: "Review",
value: 7,
- icon: (
-
- ),
+ icon: ,
},
{
label: "Reject",
value: 5,
- icon: ,
+ icon: ,
},
];
diff --git a/app/(application)/admin/job/publish.tsx b/app/(application)/admin/job/publish.tsx
deleted file mode 100644
index 49e013a..0000000
--- a/app/(application)/admin/job/publish.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import { TextCustom, ViewWrapper } from "@/components";
-
-export default function AdminJobPublish() {
- return (
- <>
-
- Admin Job Publish
-
- >
- );
-}
diff --git a/app/(application)/admin/job/reject.tsx b/app/(application)/admin/job/reject.tsx
deleted file mode 100644
index c48b32b..0000000
--- a/app/(application)/admin/job/reject.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import { TextCustom, ViewWrapper } from "@/components";
-
-export default function AdminJobReject() {
- return (
- <>
-
- Admin Job Reject
-
- >
- );
-}
diff --git a/app/(application)/admin/job/review.tsx b/app/(application)/admin/job/review.tsx
deleted file mode 100644
index 31d5858..0000000
--- a/app/(application)/admin/job/review.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import { TextCustom, ViewWrapper } from "@/components";
-
-export default function AdminJobReview() {
- return (
- <>
-
- Admin Job Review
-
- >
- );
-}
diff --git a/app/_layout.tsx b/app/_layout.tsx
index 14240ab..db994f2 100644
--- a/app/_layout.tsx
+++ b/app/_layout.tsx
@@ -2,6 +2,7 @@ import { MainColor } from "@/constants/color-palet";
import { Stack } from "expo-router";
import "react-native-gesture-handler";
import { SafeAreaProvider } from "react-native-safe-area-context";
+import Toast from "react-native-toast-message";
export default function RootLayout() {
return (
@@ -30,6 +31,7 @@ export default function RootLayout() {
+
>
);
}
diff --git a/bun.lock b/bun.lock
index ab9bd15..5c0881c 100644
--- a/bun.lock
+++ b/bun.lock
@@ -45,6 +45,7 @@
"react-native-reanimated": "~3.17.4",
"react-native-safe-area-context": "5.4.0",
"react-native-screens": "~4.11.1",
+ "react-native-toast-message": "^2.3.3",
"react-native-vector-icons": "^10.2.0",
"react-native-web": "~0.20.0",
"react-native-webview": "13.13.5",
@@ -1413,6 +1414,8 @@
"react-native-screens": ["react-native-screens@4.11.1", "", { "dependencies": { "react-freeze": "^1.0.0", "react-native-is-edge-to-edge": "^1.1.7", "warn-once": "^0.1.0" }, "peerDependencies": { "react": "*", "react-native": "*" } }, "sha512-F0zOzRVa3ptZfLpD0J8ROdo+y1fEPw+VBFq1MTY/iyDu08al7qFUO5hLMd+EYMda5VXGaTFCa8q7bOppUszhJw=="],
+ "react-native-toast-message": ["react-native-toast-message@2.3.3", "", { "peerDependencies": { "react": "*", "react-native": "*" } }, "sha512-4IIUHwUPvKHu4gjD0Vj2aGQzqPATiblL1ey8tOqsxOWRPGGu52iIbL8M/mCz4uyqecvPdIcMY38AfwRuUADfQQ=="],
+
"react-native-vector-icons": ["react-native-vector-icons@10.2.0", "", { "dependencies": { "prop-types": "^15.7.2", "yargs": "^16.1.1" }, "bin": { "fa-upgrade.sh": "bin/fa-upgrade.sh", "fa5-upgrade": "bin/fa5-upgrade.sh", "fa6-upgrade": "bin/fa6-upgrade.sh", "generate-icon": "bin/generate-icon.js" } }, "sha512-n5HGcxUuVaTf9QJPs/W22xQpC2Z9u0nb0KgLPnVltP8vdUvOp6+R26gF55kilP/fV4eL4vsAHUqUjewppJMBOQ=="],
"react-native-web": ["react-native-web@0.20.0", "", { "dependencies": { "@babel/runtime": "^7.18.6", "@react-native/normalize-colors": "^0.74.1", "fbjs": "^3.0.4", "inline-style-prefixer": "^7.0.1", "memoize-one": "^6.0.0", "nullthrows": "^1.1.1", "postcss-value-parser": "^4.2.0", "styleq": "^0.1.3" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-OOSgrw+aON6R3hRosCau/xVxdLzbjEcsLysYedka0ZON4ZZe6n9xgeN9ZkoejhARM36oTlUgHIQqxGutEJ9Wxg=="],
diff --git a/components/Drawer/MenuDrawerDynamicGird.tsx b/components/Drawer/MenuDrawerDynamicGird.tsx
index 5b4c8ac..a462959 100644
--- a/components/Drawer/MenuDrawerDynamicGird.tsx
+++ b/components/Drawer/MenuDrawerDynamicGird.tsx
@@ -8,7 +8,7 @@ type IMenuDrawerItemProps = {
icon: React.ReactNode;
label: string;
value?: string;
- path?: Href;
+ path?: Href | string;
color?: string;
}
diff --git a/components/_Icon/IconComponent.tsx b/components/_Icon/IconComponent.tsx
new file mode 100644
index 0000000..88fb5bf
--- /dev/null
+++ b/components/_Icon/IconComponent.tsx
@@ -0,0 +1,111 @@
+import { MainColor } from "@/constants/color-palet";
+import { ICON_SIZE_MEDIUM } from "@/constants/constans-value";
+import {
+ Entypo,
+ FontAwesome,
+ FontAwesome6,
+ Ionicons,
+ Octicons,
+} from "@expo/vector-icons";
+
+export const IconPublish = ({
+ size,
+ color,
+}: {
+ size?: number;
+ color?: string;
+}) => {
+ return (
+ <>
+
+ >
+ );
+};
+
+export const IconReview = ({
+ size,
+ color,
+}: {
+ size?: number;
+ color?: string;
+}) => {
+ return (
+ <>
+
+ >
+ );
+};
+
+export const IconReject = ({
+ size,
+ color,
+}: {
+ size?: number;
+ color?: string;
+}) => {
+ return (
+ <>
+
+ >
+ );
+};
+
+export const IconReport = ({
+ size,
+ color,
+}: {
+ size?: number;
+ color?: string;
+}) => {
+ return (
+ <>
+
+ >
+ );
+};
+
+export const IconView = ({
+ size,
+ color,
+}: {
+ size?: number;
+ color?: string;
+}) => {
+ return (
+ <>
+
+ >
+ );
+};
+
+export const IconDot = ({ size, color }: { size?: number; color?: string }) => {
+ return (
+ <>
+
+ >
+ );
+};
diff --git a/components/_ShareComponent/Admin/BackButtonAntTitle.tsx b/components/_ShareComponent/Admin/BackButtonAntTitle.tsx
index c0751de..55f456d 100644
--- a/components/_ShareComponent/Admin/BackButtonAntTitle.tsx
+++ b/components/_ShareComponent/Admin/BackButtonAntTitle.tsx
@@ -1,12 +1,13 @@
import Grid from "@/components/Grid/GridCustom";
import TextCustom from "@/components/Text/TextCustom";
-import { View } from "react-native";
import AdminBackButton from "./BackButton";
export default function AdminBackButtonAntTitle({
title,
+ rightComponent,
}: {
title: string;
+ rightComponent?: React.ReactNode;
}) {
return (
<>
@@ -22,8 +23,8 @@ export default function AdminBackButtonAntTitle({
{title}
-
-
+
+ {rightComponent}
>
diff --git a/components/_ShareComponent/Admin/BoxTitlePage.tsx b/components/_ShareComponent/Admin/BoxTitlePage.tsx
index fe7160c..b34b230 100644
--- a/components/_ShareComponent/Admin/BoxTitlePage.tsx
+++ b/components/_ShareComponent/Admin/BoxTitlePage.tsx
@@ -17,17 +17,8 @@ export default function AdminComp_BoxTitle({
paddingTop={5}
paddingBottom={5}
>
- {/*
- {title}
-
- {rightComponent} */}
-
-
+
-
- {rightComponent}
-
+ {rightComponent && (
+
+ {rightComponent}
+
+ )}
>
diff --git a/components/_ShareComponent/Admin/TitlePage.tsx b/components/_ShareComponent/Admin/TitlePage.tsx
index 416e222..2cc0487 100644
--- a/components/_ShareComponent/Admin/TitlePage.tsx
+++ b/components/_ShareComponent/Admin/TitlePage.tsx
@@ -3,7 +3,7 @@ import TextCustom from "@/components/Text/TextCustom";
export default function AdminTitlePage({ title }: { title: string }) {
return (
<>
-
+
{title}
>
diff --git a/components/_ShareComponent/GridDetail_4_8.tsx b/components/_ShareComponent/GridDetail_4_8.tsx
new file mode 100644
index 0000000..2ce5b1e
--- /dev/null
+++ b/components/_ShareComponent/GridDetail_4_8.tsx
@@ -0,0 +1,20 @@
+import { Grid } from "@/components";
+
+export const GridDetail_4_8 = ({
+ label,
+ value,
+}: {
+ label: React.ReactNode;
+ value: React.ReactNode;
+}) => {
+ return (
+
+
+ {label}
+
+
+ {value}
+
+
+ );
+};
\ No newline at end of file
diff --git a/package.json b/package.json
index a56e141..c931ec0 100644
--- a/package.json
+++ b/package.json
@@ -52,6 +52,7 @@
"react-native-reanimated": "~3.17.4",
"react-native-safe-area-context": "5.4.0",
"react-native-screens": "~4.11.1",
+ "react-native-toast-message": "^2.3.3",
"react-native-vector-icons": "^10.2.0",
"react-native-web": "~0.20.0",
"react-native-webview": "13.13.5"
diff --git a/screens/Admin/listPageAdmin.tsx b/screens/Admin/listPageAdmin.tsx
index 9b03995..f53bc9f 100644
--- a/screens/Admin/listPageAdmin.tsx
+++ b/screens/Admin/listPageAdmin.tsx
@@ -67,9 +67,9 @@ const adminListMenu: NavbarItem[] = [
icon: "chatbubble-ellipses-outline",
links: [
{ label: "Dashboard", link: "/admin/forum" },
- { label: "Posting", link: "/admin/forum/publish" },
- { label: "Report Posting", link: "/admin/forum/review" },
- { label: "Report Comment", link: "/admin/forum/reject" },
+ { label: "Posting", link: "/admin/forum/posting" },
+ { label: "Report Posting", link: "/admin/forum/report-posting" },
+ { label: "Report Comment", link: "/admin/forum/report-comment" },
],
},
{
diff --git a/screens/Authentication/LoginView.tsx b/screens/Authentication/LoginView.tsx
index 916c473..c654cb0 100644
--- a/screens/Authentication/LoginView.tsx
+++ b/screens/Authentication/LoginView.tsx
@@ -84,9 +84,9 @@ export default function LoginView() {
- {/* router.navigate("/admin/job")}>
+ router.navigate("/admin/forum")}>
Admin ( Delete Soon )
- */}
+
);