diff --git a/app/(application)/admin/_layout.tsx b/app/(application)/admin/_layout.tsx
index fb5c959..94674c0 100644
--- a/app/(application)/admin/_layout.tsx
+++ b/app/(application)/admin/_layout.tsx
@@ -86,10 +86,33 @@ export default function AdminLayout() {
-
{/* ================== Forum End ================== */}
+
+ {/* ================== Voting Start ================== */}
+
+
+
+
+ {/* ================== Voting End ================== */}
+
+ {/* ================== Event Start ================== */}
+
+
+
+
+
+ {/*
+ */}
+ {/* ================== Event End ================== */}
+
+ {/* ================== Donasi Start ================== */}
+ {/* */}
+ {/* */}
+ {/*
+ */}
+ {/* ================== Donasi End ================== */}
("bank");
@@ -53,22 +50,17 @@ export default function AdminInformation() {
-
+ {
+ if (activeCategory === "bank") {
+ router.push("/admin/app-information/information-bank/create");
+ } else if (activeCategory === "business") {
+ router.push("/admin/app-information/business-field/create");
+ } else if (activeCategory === "sticker") {
+ router.push("/admin/app-information/sticker/create");
}
- onPress={() => {
- if (activeCategory === "bank") {
- router.push("/admin/app-information/information-bank/create");
- } else if (activeCategory === "business") {
- router.push("/admin/app-information/business-field/create");
- } else if (activeCategory === "sticker") {
- router.push("/admin/app-information/sticker/create");
- }
- }}
- />
-
+ }}
+ />
}
/>
{renderContent()}
diff --git a/app/(application)/admin/donation/[status]/status.tsx b/app/(application)/admin/donation/[status]/status.tsx
new file mode 100644
index 0000000..ebf9c43
--- /dev/null
+++ b/app/(application)/admin/donation/[status]/status.tsx
@@ -0,0 +1,76 @@
+import {
+ ActionIcon,
+ BaseBox,
+ SearchInput,
+ Spacing,
+ TextCustom,
+ ViewWrapper,
+} from "@/components";
+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 { Octicons } from "@expo/vector-icons";
+import { useLocalSearchParams } from "expo-router";
+import _ from "lodash";
+import { Divider } from "react-native-paper";
+
+export default function AdminDonationStatus() {
+ const { status } = useLocalSearchParams();
+ const rightComponent = (
+
+ );
+ return (
+ <>
+ }>
+
+
+
+
+
+
+
+ {Array.from({ length: 10 }).map((_, index) => (
+
+ }
+ onPress={() => {
+ // router.push(`/admin/donation/${index}/${status}`);
+ }}
+ />
+ }
+ 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/donation/category-create.tsx b/app/(application)/admin/donation/category-create.tsx
new file mode 100644
index 0000000..587ea69
--- /dev/null
+++ b/app/(application)/admin/donation/category-create.tsx
@@ -0,0 +1,27 @@
+import {
+ BoxButtonOnFooter,
+ ButtonCustom,
+ TextInputCustom,
+ ViewWrapper,
+} from "@/components";
+import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
+import { useRouter } from "expo-router";
+
+export default function AdminDonationCategoryCreate() {
+ const router = useRouter();
+ const buttonSubmit = (
+
+ router.back()}>Simpan
+
+ );
+ return (
+ <>
+ }
+ footerComponent={buttonSubmit}
+ >
+
+
+ >
+ );
+}
diff --git a/app/(application)/admin/donation/category-update.tsx b/app/(application)/admin/donation/category-update.tsx
new file mode 100644
index 0000000..91c1241
--- /dev/null
+++ b/app/(application)/admin/donation/category-update.tsx
@@ -0,0 +1,35 @@
+import {
+ BoxButtonOnFooter,
+ ButtonCustom,
+ TextInputCustom,
+ ViewWrapper,
+} from "@/components";
+import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
+import { useLocalSearchParams, useRouter } from "expo-router";
+import { useState } from "react";
+
+export default function AdminDonationCategoryUpdate() {
+ const { id } = useLocalSearchParams();
+ const [value, setValue] = useState(id);
+
+ const router = useRouter();
+ const buttonSubmit = (
+
+ router.back()}>Update
+
+ );
+ return (
+ <>
+ }
+ footerComponent={buttonSubmit}
+ >
+
+
+ >
+ );
+}
diff --git a/app/(application)/admin/donation/category.tsx b/app/(application)/admin/donation/category.tsx
new file mode 100644
index 0000000..20f7cf4
--- /dev/null
+++ b/app/(application)/admin/donation/category.tsx
@@ -0,0 +1,113 @@
+import {
+ ActionIcon,
+ BaseBox,
+ CenterCustom,
+ Spacing,
+ StackCustom,
+ TextCustom,
+ ViewWrapper,
+} from "@/components";
+import { IconEdit } from "@/components/_Icon";
+import AdminActionIconPlus from "@/components/_ShareComponent/Admin/ActionIconPlus";
+import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage";
+import AdminTitlePage from "@/components/_ShareComponent/Admin/TitlePage";
+import { GridView_3_3_6 } from "@/components/_ShareComponent/GridView_3_3_6";
+import { MainColor } from "@/constants/color-palet";
+import { ICON_SIZE_BUTTON } from "@/constants/constans-value";
+import { View } from "react-native";
+import { Divider, Switch } from "react-native-paper";
+import { router } from "expo-router";
+
+export default function AdminDonationCategory() {
+ return (
+ <>
+ }>
+ {
+ router.push(`/admin/donation/category-create`);
+ }}
+ />
+ }
+ />
+
+
+
+ Aksi
+
+ }
+ component2={Status}
+ component3={Kategori}
+ />
+
+
+
+
+ {listData.map((item, index) => (
+
+
+
+ }
+ onPress={() => {
+ router.push(`/admin/donation/category-update?id=${index}`);
+ }}
+ />
+
+ }
+ component2={
+ {
+ console.log(item);
+ }}
+ color={MainColor.yellow}
+
+ />
+ }
+ component3={{item.label}}
+ />
+
+
+
+ ))}
+
+
+
+ >
+ );
+}
+
+const listData = [
+ {
+ label: "Kegiatan Sosial",
+ value: "kegiatan_sosial",
+ },
+ {
+ label: "Pendidikan",
+ value: "pendidikan",
+ },
+ {
+ label: "Kesehatan",
+ value: "kesehatan",
+ },
+ {
+ label: "Kebudayaan",
+ value: "kebudayaan",
+ },
+ {
+ label: "Bencana Alami",
+ value: "bencana_alami",
+ },
+ {
+ label: "Lainnya",
+ value: "lainnya",
+ },
+];
diff --git a/app/(application)/admin/donation/index.tsx b/app/(application)/admin/donation/index.tsx
new file mode 100644
index 0000000..d63ec2c
--- /dev/null
+++ b/app/(application)/admin/donation/index.tsx
@@ -0,0 +1,49 @@
+import { Spacing, StackCustom, ViewWrapper } from "@/components";
+import {
+ IconList,
+ 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";
+
+export default function AdminDonation() {
+ return (
+ <>
+
+
+
+
+ {listData.map((item, i) => (
+
+ ))}
+
+
+ >
+ );
+}
+
+const listData = [
+ {
+ label: "Publish",
+ value: 4,
+ icon: ,
+ },
+ {
+ label: "Review",
+ value: 7,
+ icon: ,
+ },
+ {
+ label: "Reject",
+ value: 5,
+ icon: ,
+ },
+ {
+ label: "Kategori",
+ value: 4,
+ icon: ,
+ },
+];
diff --git a/app/(application)/admin/event/[id]/[status]/index.tsx b/app/(application)/admin/event/[id]/[status]/index.tsx
new file mode 100644
index 0000000..cfd44aa
--- /dev/null
+++ b/app/(application)/admin/event/[id]/[status]/index.tsx
@@ -0,0 +1,217 @@
+import {
+ ActionIcon,
+ AlertDefaultSystem,
+ BadgeCustom,
+ BaseBox,
+ DrawerCustom,
+ MenuDrawerDynamicGrid,
+ Spacing,
+ StackCustom,
+ TextCustom,
+ ViewWrapper,
+} from "@/components";
+import { IconDot, IconList } from "@/components/_Icon/IconComponent";
+import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
+import AdminButtonReject from "@/components/_ShareComponent/Admin/ButtonReject";
+import AdminButtonReview from "@/components/_ShareComponent/Admin/ButtonReview";
+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 dayjs from "dayjs";
+import { router, useLocalSearchParams } from "expo-router";
+import _ from "lodash";
+import React from "react";
+import QRCode from "react-native-qrcode-svg";
+
+export default function AdminEventDetail() {
+ const { id, status } = useLocalSearchParams();
+ const [openDrawer, setOpenDrawer] = React.useState(false);
+
+ const colorBadge = () => {
+ if (status === "publish") {
+ return MainColor.green;
+ } else if (status === "review") {
+ return MainColor.orange;
+ } else if (status === "reject") {
+ return MainColor.red;
+ } else {
+ return MainColor.placeholder;
+ }
+ };
+
+ const listData = [
+ {
+ label: "Pembuat Event",
+ value: `Bagas Banuna ${id}`,
+ },
+ {
+ label: "Judul Event",
+ value: `Event 123`,
+ },
+ {
+ label: "Status",
+ value: (
+
+ {_.startCase(status as string)}
+
+ ),
+ },
+ {
+ label: "Lokasi",
+ value: "Lokasi Event",
+ },
+ {
+ label: "Tipe Acara",
+ value: "Tipe Acara",
+ },
+ {
+ label: "Mulai Event",
+ value: dayjs().format("DD/MM/YYYY HH:mm:ss"),
+ },
+ {
+ label: "Event Berakhir",
+ value: dayjs().add(3, "day").format("DD/MM/YYYY HH:mm:ss"),
+ },
+ {
+ label: "Deskripsi",
+ value: "Lorem ipsum dolor sit amet consectetur adipisicing elit.",
+ },
+ // {
+ // label: "Daftar Tipe Acara",
+ // value: (
+ // <>
+ // Pilihan 1}
+ // left={(props) => (
+ //
+ // )}
+ // />
+ // Pilihan 2}
+ // left={(props) => (
+ //
+ // )}
+ // />
+ // Pilihan 3}
+ // left={(props) => (
+ //
+ // )}
+ // />
+ // Pilihan 4}
+ // left={(props) => (
+ //
+ // )}
+ // />
+ // >
+ // ),
+ // },
+ ];
+
+ const rightComponent = (
+ }
+ onPress={() => {
+ setOpenDrawer(true);
+ }}
+ />
+ );
+
+ return (
+ <>
+
+ }
+ >
+
+
+ {listData.map((item, i) => (
+ {item.label}}
+ value={{item.value}}
+ />
+ ))}
+
+
+
+
+ {(status === "publish" || status === "riwayat") && (
+
+
+ QR Code Event
+
+
+
+ )}
+
+ {status === "review" && (
+ {
+ AlertDefaultSystem({
+ title: "Publish",
+ message: "Apakah anda yakin ingin mempublikasikan data ini?",
+ textLeft: "Batal",
+ textRight: "Ya",
+ onPressLeft: () => {
+ router.back();
+ },
+ onPressRight: () => {
+ router.back();
+ },
+ });
+ }}
+ onReject={() => {
+ router.push(`/admin/event/${id}/reject-input`);
+ }}
+ />
+ )}
+
+ {status === "reject" && (
+ {
+ router.push(`/admin/event/${id}/reject-input`);
+ }}
+ />
+ )}
+
+
+
+ setOpenDrawer(false)}
+ height={"auto"}
+ >
+ ,
+ path: `/admin/event/${id}/list-of-participants`,
+ },
+ ]}
+ onPressItem={(item) => {
+ setOpenDrawer(false);
+ router.push(item.path as any);
+ }}
+ />
+
+ >
+ );
+}
diff --git a/app/(application)/admin/event/[id]/list-of-participants.tsx b/app/(application)/admin/event/[id]/list-of-participants.tsx
new file mode 100644
index 0000000..9cbc3e5
--- /dev/null
+++ b/app/(application)/admin/event/[id]/list-of-participants.tsx
@@ -0,0 +1,42 @@
+import { BadgeCustom, BaseBox, Grid, TextCustom, ViewWrapper } from "@/components";
+import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
+import { MainColor } from "@/constants/color-palet";
+
+export default function AdminEventListOfParticipants() {
+
+ const isPresent = ({id}: {id: number}) => {
+ const check = id % 3 * 3;
+ if (check === 0) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ return (
+ <>
+ }
+ >
+ {Array.from({ length: 10 }).map((item, index) => (
+
+
+
+ Username {index + 1}
+ +6282123456789
+
+
+
+ {isPresent({id: index}) ? "Hadir" : "Tidak Hadir"}
+
+
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/app/(application)/admin/event/[id]/reject-input.tsx b/app/(application)/admin/event/[id]/reject-input.tsx
new file mode 100644
index 0000000..d74cf06
--- /dev/null
+++ b/app/(application)/admin/event/[id]/reject-input.tsx
@@ -0,0 +1,55 @@
+import {
+ AlertDefaultSystem,
+ BoxButtonOnFooter,
+ TextAreaCustom,
+ ViewWrapper,
+} from "@/components";
+import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
+import AdminButtonReject from "@/components/_ShareComponent/Admin/ButtonReject";
+import { router, useLocalSearchParams } from "expo-router";
+import { useState } from "react";
+
+export default function AdminEventRejectInput() {
+ const { id } = useLocalSearchParams();
+ const [value, setValue] = useState(id as string);
+ const buttonSubmit = (
+
+
+ AlertDefaultSystem({
+ title: "Reject",
+ message: "Apakah anda yakin ingin menolak data ini?",
+ textLeft: "Batal",
+ textRight: "Ya",
+ onPressLeft: () => {
+ router.back();
+ },
+ onPressRight: () => {
+ console.log("value:", value);
+ router.replace(`/admin/event/reject/status`);
+ },
+ })
+ }
+ />
+
+ );
+
+ return (
+ <>
+ }
+ >
+
+
+ >
+ );
+}
diff --git a/app/(application)/admin/event/[status]/status.tsx b/app/(application)/admin/event/[status]/status.tsx
new file mode 100644
index 0000000..9edad80
--- /dev/null
+++ b/app/(application)/admin/event/[status]/status.tsx
@@ -0,0 +1,76 @@
+import {
+ ActionIcon,
+ BaseBox,
+ SearchInput,
+ Spacing,
+ TextCustom,
+ ViewWrapper,
+} from "@/components";
+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 { Octicons } from "@expo/vector-icons";
+import { router, useLocalSearchParams } from "expo-router";
+import _ from "lodash";
+import { Divider } from "react-native-paper";
+
+export default function AdminEventStatus() {
+ const { status } = useLocalSearchParams();
+ const rightComponent = (
+
+ );
+ return (
+ <>
+ }>
+
+
+
+
+
+
+
+ {Array.from({ length: 10 }).map((_, index) => (
+
+ }
+ onPress={() => {
+ router.push(`/admin/event/${index}/${status}`);
+ }}
+ />
+ }
+ 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/event/index.tsx b/app/(application)/admin/event/index.tsx
new file mode 100644
index 0000000..f72fc9a
--- /dev/null
+++ b/app/(application)/admin/event/index.tsx
@@ -0,0 +1,55 @@
+import { Spacing, StackCustom, ViewWrapper } from "@/components";
+import { IconArchive } from "@/components/_Icon";
+import {
+ IconList,
+ 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";
+
+export default function AdminVoting() {
+ return (
+ <>
+
+
+
+
+ {listData.map((item, i) => (
+
+ ))}
+
+
+ >
+ );
+}
+
+const listData = [
+ {
+ label: "Publish",
+ value: 3,
+ icon: ,
+ },
+ {
+ label: "Review",
+ value: 8,
+ icon: ,
+ },
+ {
+ label: "Reject",
+ value: 4,
+ icon: ,
+ },
+ {
+ label: "Riwayat",
+ value: 6,
+ icon: ,
+ },
+ {
+ label: "Tipe Acara",
+ value: 7,
+ icon: ,
+ },
+];
diff --git a/app/(application)/admin/event/type-create.tsx b/app/(application)/admin/event/type-create.tsx
new file mode 100644
index 0000000..ca69b0f
--- /dev/null
+++ b/app/(application)/admin/event/type-create.tsx
@@ -0,0 +1,27 @@
+import {
+ BoxButtonOnFooter,
+ ButtonCustom,
+ TextInputCustom,
+ ViewWrapper,
+} from "@/components";
+import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
+import { useRouter } from "expo-router";
+
+export default function AdminEventTypeOfEventCreate() {
+ const router = useRouter();
+ const buttonSubmit = (
+
+ router.back()}>Simpan
+
+ );
+ return (
+ <>
+ }
+ footerComponent={buttonSubmit}
+ >
+
+
+ >
+ );
+}
diff --git a/app/(application)/admin/event/type-of-event.tsx b/app/(application)/admin/event/type-of-event.tsx
new file mode 100644
index 0000000..7df44ea
--- /dev/null
+++ b/app/(application)/admin/event/type-of-event.tsx
@@ -0,0 +1,104 @@
+import {
+ ActionIcon,
+ BaseBox,
+ CenterCustom,
+ Spacing,
+ StackCustom,
+ TextCustom,
+ ViewWrapper,
+} from "@/components";
+import { IconEdit } from "@/components/_Icon";
+import AdminActionIconPlus from "@/components/_ShareComponent/Admin/ActionIconPlus";
+import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage";
+import AdminTitlePage from "@/components/_ShareComponent/Admin/TitlePage";
+import { GridDetail_4_8 } from "@/components/_ShareComponent/GridDetail_4_8";
+import { ICON_SIZE_BUTTON } from "@/constants/constans-value";
+import { router } from "expo-router";
+import { View } from "react-native";
+import { Divider } from "react-native-paper";
+
+export default function AdminEventTypeOfEvent() {
+ return (
+ <>
+ }>
+ {
+ router.push(`/admin/event/type-create`);
+ }}
+ />
+ }
+ />
+
+
+
+ Aksi
+
+ }
+ value={Tipe Acara}
+ />
+
+
+
+
+ {listData.map((item, index) => (
+
+
+
+ }
+ onPress={() => {
+ router.push(`/admin/event/type-update?id=${index}`);
+ }}
+ />
+
+ }
+ value={{item.label}}
+ />
+
+
+ ))}
+
+
+
+ >
+ );
+}
+
+const listData = [
+ {
+ label: "Seminar",
+ value: "seminar",
+ },
+ {
+ label: "Workshop",
+ value: "workshop",
+ },
+ {
+ label: "Konferensi",
+ value: "konferensi",
+ },
+ {
+ label: "Lomba",
+ value: "lomba",
+ },
+ {
+ label: "Pameran",
+ value: "pameran",
+ },
+ {
+ label: "Pesta",
+ value: "pesta",
+ },
+ {
+ label: "Pertandingan",
+ value: "pertandingan",
+ },
+];
diff --git a/app/(application)/admin/event/type-update.tsx b/app/(application)/admin/event/type-update.tsx
new file mode 100644
index 0000000..134b2bb
--- /dev/null
+++ b/app/(application)/admin/event/type-update.tsx
@@ -0,0 +1,30 @@
+import {
+ BoxButtonOnFooter,
+ ButtonCustom,
+ TextInputCustom,
+ ViewWrapper,
+} from "@/components";
+import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
+import { useLocalSearchParams, useRouter } from "expo-router";
+
+export default function AdminEventTypeOfEventUpdate() {
+ const { id } = useLocalSearchParams();
+ console.log("id >", id);
+
+ const router = useRouter();
+ const buttonSubmit = (
+
+ router.back()}>Update
+
+ );
+ return (
+ <>
+ }
+ footerComponent={buttonSubmit}
+ >
+
+
+ >
+ );
+}
diff --git a/app/(application)/admin/job/[id]/[status]/index.tsx b/app/(application)/admin/job/[id]/[status]/index.tsx
index 5d36e72..7cc9cab 100644
--- a/app/(application)/admin/job/[id]/[status]/index.tsx
+++ b/app/(application)/admin/job/[id]/[status]/index.tsx
@@ -1,16 +1,19 @@
import {
+ AlertDefaultSystem,
BadgeCustom,
BaseBox,
- ButtonCustom,
DummyLandscapeImage,
Grid,
+ Spacing,
StackCustom,
TextCustom,
- ViewWrapper,
+ ViewWrapper
} from "@/components";
import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
+import AdminButtonReject from "@/components/_ShareComponent/Admin/ButtonReject";
+import AdminButtonReview from "@/components/_ShareComponent/Admin/ButtonReview";
import { MainColor } from "@/constants/color-palet";
-import { useLocalSearchParams } from "expo-router";
+import { router, useLocalSearchParams } from "expo-router";
import _ from "lodash";
export default function AdminJobDetailStatus() {
@@ -91,19 +94,35 @@ export default function AdminJobDetailStatus() {
{status === "review" && (
-
-
-
- Publish
-
-
-
-
- Reject
-
-
-
+ {
+ AlertDefaultSystem({
+ title: "Publish",
+ message: "Apakah anda yakin ingin mempublikasikan data ini?",
+ textLeft: "Batal",
+ textRight: "Ya",
+ onPressLeft: () => {
+ router.back();
+ },
+ onPressRight: () => {
+ router.back();
+ },
+ });
+ }}
+ onReject={() => {
+ router.push(`/admin/job/${id}/reject-input`);
+ }}
+ />
)}
+ {status === "reject" && (
+ {
+ router.push(`/admin/job/${id}/reject-input`);
+ }}
+ />
+ )}
+
>
);
diff --git a/app/(application)/admin/job/[id]/reject-input.tsx b/app/(application)/admin/job/[id]/reject-input.tsx
new file mode 100644
index 0000000..aca878e
--- /dev/null
+++ b/app/(application)/admin/job/[id]/reject-input.tsx
@@ -0,0 +1,55 @@
+import {
+ AlertDefaultSystem,
+ BoxButtonOnFooter,
+ TextAreaCustom,
+ ViewWrapper,
+} from "@/components";
+import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
+import AdminButtonReject from "@/components/_ShareComponent/Admin/ButtonReject";
+import { router, useLocalSearchParams } from "expo-router";
+import { useState } from "react";
+
+export default function AdminJobRejectInput() {
+ const { id } = useLocalSearchParams();
+ const [value, setValue] = useState(id as string);
+ const buttonSubmit = (
+
+
+ AlertDefaultSystem({
+ title: "Reject",
+ message: "Apakah anda yakin ingin menolak data ini?",
+ textLeft: "Batal",
+ textRight: "Ya",
+ onPressLeft: () => {
+ router.back();
+ },
+ onPressRight: () => {
+ console.log("value:", value);
+ router.replace(`/admin/job/reject/status`);
+ },
+ })
+ }
+ />
+
+ );
+
+ return (
+ <>
+ }
+ >
+
+
+ >
+ );
+}
diff --git a/app/(application)/admin/voting/[id]/[status]/index.tsx b/app/(application)/admin/voting/[id]/[status]/index.tsx
new file mode 100644
index 0000000..1e64ab7
--- /dev/null
+++ b/app/(application)/admin/voting/[id]/[status]/index.tsx
@@ -0,0 +1,173 @@
+import {
+ AlertDefaultSystem,
+ BadgeCustom,
+ BaseBox,
+ CircleContainer,
+ Grid,
+ Spacing,
+ StackCustom,
+ TextCustom,
+ ViewWrapper,
+} from "@/components";
+import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
+import AdminButtonReject from "@/components/_ShareComponent/Admin/ButtonReject";
+import AdminButtonReview from "@/components/_ShareComponent/Admin/ButtonReview";
+import { GridDetail_4_8 } from "@/components/_ShareComponent/GridDetail_4_8";
+import { MainColor } from "@/constants/color-palet";
+import dayjs from "dayjs";
+import { router, useLocalSearchParams } from "expo-router";
+import _ from "lodash";
+import { List } from "react-native-paper";
+
+export default function AdminVotingDetail() {
+ const { id, status } = useLocalSearchParams();
+
+ const colorBadge = () => {
+ if (status === "publish") {
+ return MainColor.green;
+ } else if (status === "review") {
+ return MainColor.orange;
+ } else if (status === "reject") {
+ return MainColor.red;
+ } else {
+ return MainColor.placeholder;
+ }
+ };
+
+ const listData = [
+ {
+ label: "Username",
+ value: "Bagas Banuna",
+ },
+ {
+ label: "Judul",
+ value: `Judul Proyek: ${id}Lorem ipsum dolor sit amet consectetur adipisicing elit.`,
+ },
+ {
+ label: "Status",
+ value: (
+
+ {_.startCase(status as string)}
+
+ ),
+ },
+ {
+ label: "Mulai Voting",
+ value: dayjs().format("DD/MM/YYYY"),
+ },
+ {
+ label: "Voting Berakhir",
+ value: dayjs().format("DD/MM/YYYY"),
+ },
+
+ {
+ label: "Deskripsi",
+ value: "Lorem ipsum dolor sit amet consectetur adipisicing elit.",
+ },
+ {
+ label: "Daftar Pilhan",
+ value: (
+ <>
+ Pilihan 1}
+ left={(props) => (
+
+ )}
+ />
+ Pilihan 2}
+ left={(props) => (
+
+ )}
+ />
+ Pilihan 3}
+ left={(props) => (
+
+ )}
+ />
+ Pilihan 4}
+ left={(props) => (
+
+ )}
+ />
+ >
+ ),
+ },
+ ];
+
+ return (
+ <>
+ }
+ >
+
+
+ {listData.map((item, i) => (
+ {item.label}}
+ value={{item.value}}
+ />
+ ))}
+
+
+
+ {status === "publish" && (
+
+
+ Hasil Voting
+
+
+
+
+ {Array.from({length: 4}).map((_, index) => (
+
+
+
+
+ Pilihan {index + 1}
+
+
+
+ ))}
+
+
+ )}
+
+ {status === "review" && (
+ {
+ AlertDefaultSystem({
+ title: "Publish",
+ message: "Apakah anda yakin ingin mempublikasikan data ini?",
+ textLeft: "Cancel",
+ textRight: "Publish",
+ onPressLeft: () => {
+ router.back();
+ },
+ onPressRight: () => {
+ router.back();
+ },
+ });
+ }}
+ onReject={() => {
+ router.push(`/admin/voting/${id}/reject-input`);
+ }}
+ />
+ )}
+
+ {status === "reject" && (
+ {
+ router.push(`/admin/voting/${id}/reject-input`);
+ }}
+ />
+ )}
+
+
+ >
+ );
+}
diff --git a/app/(application)/admin/voting/[id]/reject-input.tsx b/app/(application)/admin/voting/[id]/reject-input.tsx
new file mode 100644
index 0000000..949986d
--- /dev/null
+++ b/app/(application)/admin/voting/[id]/reject-input.tsx
@@ -0,0 +1,55 @@
+import {
+ AlertDefaultSystem,
+ BoxButtonOnFooter,
+ TextAreaCustom,
+ ViewWrapper,
+} from "@/components";
+import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle";
+import AdminButtonReject from "@/components/_ShareComponent/Admin/ButtonReject";
+import { router, useLocalSearchParams } from "expo-router";
+import { useState } from "react";
+
+export default function AdminVotingRejectInput() {
+ const { id } = useLocalSearchParams();
+ const [value, setValue] = useState(id as string);
+ const buttonSubmit = (
+
+
+ AlertDefaultSystem({
+ title: "Reject",
+ message: "Apakah anda yakin ingin menolak data ini?",
+ textLeft: "Batal",
+ textRight: "Ya",
+ onPressLeft: () => {
+ router.back();
+ },
+ onPressRight: () => {
+ console.log("value:", value);
+ router.replace(`/admin/voting/reject/status`);
+ },
+ })
+ }
+ />
+
+ );
+
+ return (
+ <>
+ }
+ >
+
+
+ >
+ );
+}
diff --git a/app/(application)/admin/voting/[status]/status.tsx b/app/(application)/admin/voting/[status]/status.tsx
new file mode 100644
index 0000000..7f82a65
--- /dev/null
+++ b/app/(application)/admin/voting/[status]/status.tsx
@@ -0,0 +1,76 @@
+import {
+ ActionIcon,
+ BaseBox,
+ SearchInput,
+ Spacing,
+ TextCustom,
+ ViewWrapper,
+} from "@/components";
+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 { Octicons } from "@expo/vector-icons";
+import { router, useLocalSearchParams } from "expo-router";
+import _ from "lodash";
+import { Divider } from "react-native-paper";
+
+export default function AdminVotingStatus() {
+ const { status } = useLocalSearchParams();
+ const rightComponent = (
+
+ );
+ return (
+ <>
+ }>
+
+
+
+
+
+
+
+ {Array.from({ length: 10 }).map((_, index) => (
+
+ }
+ onPress={() => {
+ router.push(`/admin/voting/${index}/${status}`);
+ }}
+ />
+ }
+ 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/voting/index.tsx b/app/(application)/admin/voting/index.tsx
new file mode 100644
index 0000000..210f03f
--- /dev/null
+++ b/app/(application)/admin/voting/index.tsx
@@ -0,0 +1,49 @@
+import { Spacing, StackCustom, ViewWrapper } from "@/components";
+import { IconArchive } from "@/components/_Icon";
+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";
+
+export default function AdminVoting() {
+ return (
+ <>
+
+
+
+
+ {listData.map((item, i) => (
+
+ ))}
+
+
+ >
+ );
+}
+
+const listData = [
+ {
+ label: "Publish",
+ value: 4,
+ icon: ,
+ },
+ {
+ label: "Review",
+ value: 7,
+ icon: ,
+ },
+ {
+ label: "Reject",
+ value: 5,
+ icon: ,
+ },
+ {
+ label: "Riwayat",
+ value: 5,
+ icon: ,
+ },
+];
diff --git a/bun.lock b/bun.lock
index 5c0881c..19e59d9 100644
--- a/bun.lock
+++ b/bun.lock
@@ -42,9 +42,11 @@
"react-native-otp-entry": "^1.8.5",
"react-native-pager-view": "6.7.1",
"react-native-paper": "^5.14.5",
+ "react-native-qrcode-svg": "^6.3.15",
"react-native-reanimated": "~3.17.4",
"react-native-safe-area-context": "5.4.0",
"react-native-screens": "~4.11.1",
+ "react-native-svg": "15.11.2",
"react-native-toast-message": "^2.3.3",
"react-native-vector-icons": "^10.2.0",
"react-native-web": "~0.20.0",
@@ -622,6 +624,8 @@
"big-integer": ["big-integer@1.6.52", "", {}, "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg=="],
+ "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="],
+
"bplist-creator": ["bplist-creator@0.1.0", "", { "dependencies": { "stream-buffers": "2.2.x" } }, "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg=="],
"bplist-parser": ["bplist-parser@0.3.2", "", { "dependencies": { "big-integer": "1.6.x" } }, "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ=="],
@@ -708,6 +712,12 @@
"css-in-js-utils": ["css-in-js-utils@3.1.0", "", { "dependencies": { "hyphenate-style-name": "^1.0.3" } }, "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A=="],
+ "css-select": ["css-select@5.2.2", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw=="],
+
+ "css-tree": ["css-tree@1.1.3", "", { "dependencies": { "mdn-data": "2.0.14", "source-map": "^0.6.1" } }, "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q=="],
+
+ "css-what": ["css-what@6.2.2", "", {}, "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA=="],
+
"csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="],
"data-view-buffer": ["data-view-buffer@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ=="],
@@ -720,6 +730,8 @@
"debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="],
+ "decamelize": ["decamelize@1.2.0", "", {}, "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="],
+
"decode-uri-component": ["decode-uri-component@0.2.2", "", {}, "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ=="],
"deep-extend": ["deep-extend@0.6.0", "", {}, "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="],
@@ -742,8 +754,18 @@
"detect-libc": ["detect-libc@1.0.3", "", { "bin": "bin/detect-libc.js" }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="],
+ "dijkstrajs": ["dijkstrajs@1.0.3", "", {}, "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="],
+
"doctrine": ["doctrine@2.1.0", "", { "dependencies": { "esutils": "^2.0.2" } }, "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="],
+ "dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="],
+
+ "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="],
+
+ "domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="],
+
+ "domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="],
+
"dotenv": ["dotenv@16.4.7", "", {}, "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ=="],
"dotenv-expand": ["dotenv-expand@11.0.7", "", { "dependencies": { "dotenv": "^16.4.5" } }, "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA=="],
@@ -760,6 +782,8 @@
"encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="],
+ "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="],
+
"env-editor": ["env-editor@0.4.2", "", {}, "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA=="],
"error-ex": ["error-ex@1.3.2", "", { "dependencies": { "is-arrayish": "^0.2.1" } }, "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="],
@@ -1184,6 +1208,8 @@
"math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="],
+ "mdn-data": ["mdn-data@2.0.14", "", {}, "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow=="],
+
"memoize-one": ["memoize-one@5.2.1", "", {}, "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q=="],
"merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="],
@@ -1264,6 +1290,8 @@
"npm-package-arg": ["npm-package-arg@11.0.3", "", { "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^4.0.0", "semver": "^7.3.5", "validate-npm-package-name": "^5.0.0" } }, "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw=="],
+ "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="],
+
"nullthrows": ["nullthrows@1.1.1", "", {}, "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw=="],
"ob1": ["ob1@0.82.4", "", { "dependencies": { "flow-enums-runtime": "^0.0.6" } }, "sha512-n9S8e4l5TvkrequEAMDidl4yXesruWTNTzVkeaHSGywoTOIwTzZzKw7Z670H3eaXDZui5MJXjWGNzYowVZIxCA=="],
@@ -1336,7 +1364,7 @@
"plist": ["plist@3.1.0", "", { "dependencies": { "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.5.1", "xmlbuilder": "^15.1.1" } }, "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ=="],
- "pngjs": ["pngjs@3.4.0", "", {}, "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="],
+ "pngjs": ["pngjs@5.0.0", "", {}, "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="],
"possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="],
@@ -1362,6 +1390,8 @@
"punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="],
+ "qrcode": ["qrcode@1.5.4", "", { "dependencies": { "dijkstrajs": "^1.0.1", "pngjs": "^5.0.0", "yargs": "^15.3.1" }, "bin": { "qrcode": "bin/qrcode" } }, "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg=="],
+
"qrcode-terminal": ["qrcode-terminal@0.11.0", "", { "bin": "bin/qrcode-terminal.js" }, "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ=="],
"query-string": ["query-string@7.1.3", "", { "dependencies": { "decode-uri-component": "^0.2.2", "filter-obj": "^1.1.0", "split-on-first": "^1.0.0", "strict-uri-encode": "^2.0.0" } }, "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg=="],
@@ -1408,12 +1438,16 @@
"react-native-paper": ["react-native-paper@5.14.5", "", { "dependencies": { "@callstack/react-theme-provider": "^3.0.9", "color": "^3.1.2", "use-latest-callback": "^0.2.3" }, "peerDependencies": { "react": "*", "react-native": "*", "react-native-safe-area-context": "*" } }, "sha512-eaIH5bUQjJ/mYm4AkI6caaiyc7BcHDwX6CqNDi6RIxfxfWxROsHpll1oBuwn/cFvknvA8uEAkqLk/vzVihI3AQ=="],
+ "react-native-qrcode-svg": ["react-native-qrcode-svg@6.3.15", "", { "dependencies": { "prop-types": "^15.8.0", "qrcode": "^1.5.4", "text-encoding": "^0.7.0" }, "peerDependencies": { "react": "*", "react-native": ">=0.63.4", "react-native-svg": ">=14.0.0" } }, "sha512-vLuNImGfstE8u+rlF4JfFpq65nPhmByuDG6XUPWh8yp8MgLQX11rN5eQ8nb/bf4OB+V8XoLTJB/AZF2g7jQSSQ=="],
+
"react-native-reanimated": ["react-native-reanimated@3.17.5", "", { "dependencies": { "@babel/plugin-transform-arrow-functions": "^7.0.0-0", "@babel/plugin-transform-class-properties": "^7.0.0-0", "@babel/plugin-transform-classes": "^7.0.0-0", "@babel/plugin-transform-nullish-coalescing-operator": "^7.0.0-0", "@babel/plugin-transform-optional-chaining": "^7.0.0-0", "@babel/plugin-transform-shorthand-properties": "^7.0.0-0", "@babel/plugin-transform-template-literals": "^7.0.0-0", "@babel/plugin-transform-unicode-regex": "^7.0.0-0", "@babel/preset-typescript": "^7.16.7", "convert-source-map": "^2.0.0", "invariant": "^2.2.4", "react-native-is-edge-to-edge": "1.1.7" }, "peerDependencies": { "@babel/core": "^7.0.0-0", "react": "*", "react-native": "*" } }, "sha512-SxBK7wQfJ4UoWoJqQnmIC7ZjuNgVb9rcY5Xc67upXAFKftWg0rnkknTw6vgwnjRcvYThrjzUVti66XoZdDJGtw=="],
"react-native-safe-area-context": ["react-native-safe-area-context@5.4.0", "", { "peerDependencies": { "react": "*", "react-native": "*" } }, "sha512-JaEThVyJcLhA+vU0NU8bZ0a1ih6GiF4faZ+ArZLqpYbL6j7R3caRqj+mE3lEtKCuHgwjLg3bCxLL1GPUJZVqUA=="],
"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-svg": ["react-native-svg@15.11.2", "", { "dependencies": { "css-select": "^5.1.0", "css-tree": "^1.1.3", "warn-once": "0.1.1" }, "peerDependencies": { "react": "*", "react-native": "*" } }, "sha512-+YfF72IbWQUKzCIydlijV1fLuBsQNGMT6Da2kFlo1sh+LE3BIm/2Q7AR1zAAR6L0BFLi1WaQPLfFUC9bNZpOmw=="],
+
"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=="],
@@ -1444,6 +1478,8 @@
"require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="],
+ "require-main-filename": ["require-main-filename@2.0.0", "", {}, "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="],
+
"requireg": ["requireg@0.2.2", "", { "dependencies": { "nested-error-stacks": "~2.0.1", "rc": "~1.2.7", "resolve": "~1.7.1" } }, "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg=="],
"resolve": ["resolve@2.0.0-next.5", "", { "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": "bin/resolve" }, "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA=="],
@@ -1488,6 +1524,8 @@
"server-only": ["server-only@0.0.1", "", {}, "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA=="],
+ "set-blocking": ["set-blocking@2.0.0", "", {}, "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="],
+
"set-function-length": ["set-function-length@1.2.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="],
"set-function-name": ["set-function-name@2.0.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.2" } }, "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ=="],
@@ -1598,6 +1636,8 @@
"test-exclude": ["test-exclude@6.0.0", "", { "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", "minimatch": "^3.0.4" } }, "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w=="],
+ "text-encoding": ["text-encoding@0.7.0", "", {}, "sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA=="],
+
"thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="],
"thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="],
@@ -1700,6 +1740,8 @@
"which-collection": ["which-collection@1.0.2", "", { "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", "is-weakmap": "^2.0.2", "is-weakset": "^2.0.3" } }, "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw=="],
+ "which-module": ["which-module@2.0.1", "", {}, "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="],
+
"which-typed-array": ["which-typed-array@1.1.19", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw=="],
"wonka": ["wonka@6.3.5", "", {}, "sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw=="],
@@ -1852,6 +1894,8 @@
"cosmiconfig/js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": "bin/js-yaml.js" }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="],
+ "css-tree/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="],
+
"error-ex/is-arrayish": ["is-arrayish@0.2.1", "", {}, "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="],
"eslint-import-resolver-node/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="],
@@ -1910,6 +1954,8 @@
"ora/chalk": ["chalk@2.4.2", "", { "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="],
+ "parse-png/pngjs": ["pngjs@3.4.0", "", {}, "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="],
+
"path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
"pretty-format/ansi-styles": ["ansi-styles@5.2.0", "", {}, "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="],
@@ -1918,6 +1964,8 @@
"prop-types/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="],
+ "qrcode/yargs": ["yargs@15.4.1", "", { "dependencies": { "cliui": "^6.0.0", "decamelize": "^1.2.0", "find-up": "^4.1.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", "string-width": "^4.2.0", "which-module": "^2.0.0", "y18n": "^4.0.0", "yargs-parser": "^18.1.2" } }, "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A=="],
+
"rc/strip-json-comments": ["strip-json-comments@2.0.1", "", {}, "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="],
"react-devtools-core/ws": ["ws@7.5.10", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ=="],
@@ -2046,6 +2094,14 @@
"ora/chalk/supports-color": ["supports-color@5.5.0", "", { "dependencies": { "has-flag": "^3.0.0" } }, "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="],
+ "qrcode/yargs/cliui": ["cliui@6.0.0", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ=="],
+
+ "qrcode/yargs/find-up": ["find-up@4.1.0", "", { "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="],
+
+ "qrcode/yargs/y18n": ["y18n@4.0.3", "", {}, "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="],
+
+ "qrcode/yargs/yargs-parser": ["yargs-parser@18.1.3", "", { "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" } }, "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ=="],
+
"react-native-paper/color/color-convert": ["color-convert@1.9.3", "", { "dependencies": { "color-name": "1.1.3" } }, "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="],
"react-native-vector-icons/yargs/cliui": ["cliui@7.0.4", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="],
@@ -2084,6 +2140,14 @@
"ora/chalk/supports-color/has-flag": ["has-flag@3.0.0", "", {}, "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="],
+ "qrcode/yargs/cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "qrcode/yargs/cliui/wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="],
+
+ "qrcode/yargs/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="],
+
+ "qrcode/yargs/yargs-parser/camelcase": ["camelcase@5.3.1", "", {}, "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="],
+
"react-native-paper/color/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="],
"react-native-vector-icons/yargs/cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
@@ -2099,5 +2163,9 @@
"log-symbols/chalk/ansi-styles/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="],
"ora/chalk/ansi-styles/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="],
+
+ "qrcode/yargs/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="],
+
+ "qrcode/yargs/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="],
}
}
diff --git a/components/_Icon/IconComponent.tsx b/components/_Icon/IconComponent.tsx
index 88fb5bf..247f47f 100644
--- a/components/_Icon/IconComponent.tsx
+++ b/components/_Icon/IconComponent.tsx
@@ -109,3 +109,23 @@ export const IconDot = ({ size, color }: { size?: number; color?: string }) => {
>
);
};
+
+export const IconList = ({
+ size,
+ color,
+}: {
+ size?: number;
+ color?: string;
+}) => {
+ return (
+ <>
+
+ >
+ );
+};
+
+
\ No newline at end of file
diff --git a/components/_Icon/IconEdit.tsx b/components/_Icon/IconEdit.tsx
index a370fb8..8b436d1 100644
--- a/components/_Icon/IconEdit.tsx
+++ b/components/_Icon/IconEdit.tsx
@@ -1,10 +1,21 @@
+import { MainColor } from "@/constants/color-palet";
import { ICON_SIZE_SMALL } from "@/constants/constans-value";
import { FontAwesome5 } from "@expo/vector-icons";
-export default function IconEdit() {
+export default function IconEdit({
+ size,
+ color,
+}: {
+ size: number;
+ color: string;
+}) {
return (
<>
-
+
>
);
}
diff --git a/components/_ShareComponent/Admin/ActionIconPlus.tsx b/components/_ShareComponent/Admin/ActionIconPlus.tsx
new file mode 100644
index 0000000..4036755
--- /dev/null
+++ b/components/_ShareComponent/Admin/ActionIconPlus.tsx
@@ -0,0 +1,21 @@
+import ActionIcon from "@/components/ActionIcon/ActionIcon";
+import { ICON_SIZE_SMALL } from "@/constants/constans-value";
+import { Ionicons } from "@expo/vector-icons";
+import { View } from "react-native";
+
+export default function AdminActionIconPlus({
+ onPress,
+}: {
+ onPress?: () => void;
+}) {
+ return (
+ <>
+
+ }
+ onPress={onPress}
+ />
+
+ >
+ );
+}
diff --git a/components/_ShareComponent/Admin/ButtonReject.tsx b/components/_ShareComponent/Admin/ButtonReject.tsx
new file mode 100644
index 0000000..28ed71d
--- /dev/null
+++ b/components/_ShareComponent/Admin/ButtonReject.tsx
@@ -0,0 +1,24 @@
+import { IconReject } from "@/components/_Icon/IconComponent";
+import ButtonCustom from "@/components/Button/ButtonCustom";
+import { MainColor } from "@/constants/color-palet";
+
+export default function AdminButtonReject({
+ title,
+ onReject,
+}: {
+ title: string;
+ onReject: () => void;
+}) {
+ return (
+ <>
+ }
+ backgroundColor={MainColor.red}
+ textColor="white"
+ onPress={onReject}
+ >
+ {title}
+
+ >
+ );
+}
diff --git a/components/_ShareComponent/Admin/ButtonReview.tsx b/components/_ShareComponent/Admin/ButtonReview.tsx
new file mode 100644
index 0000000..ea1075d
--- /dev/null
+++ b/components/_ShareComponent/Admin/ButtonReview.tsx
@@ -0,0 +1,39 @@
+import { IconPublish, IconReject } from "@/components/_Icon/IconComponent";
+import ButtonCustom from "@/components/Button/ButtonCustom";
+import Grid from "@/components/Grid/GridCustom";
+import { MainColor } from "@/constants/color-palet";
+
+export default function AdminButtonReview({
+ onPublish,
+ onReject,
+}: {
+ onPublish: () => void;
+ onReject: () => void;
+}) {
+ return (
+ <>
+
+
+ }
+ backgroundColor={MainColor.green}
+ textColor="white"
+ onPress={onPublish}
+ >
+ Publish
+
+
+
+ }
+ backgroundColor={MainColor.red}
+ textColor="white"
+ onPress={onReject}
+ >
+ Reject
+
+
+
+ >
+ );
+}
diff --git a/components/_ShareComponent/GridView_3_3_6.tsx b/components/_ShareComponent/GridView_3_3_6.tsx
new file mode 100644
index 0000000..3e7be13
--- /dev/null
+++ b/components/_ShareComponent/GridView_3_3_6.tsx
@@ -0,0 +1,25 @@
+import { Grid } from "@/components";
+
+export const GridView_3_3_6 = ({
+ component1,
+ component2,
+ component3,
+}: {
+ component1: React.ReactNode;
+ component2: React.ReactNode;
+ component3: React.ReactNode;
+}) => {
+ return (
+
+
+ {component1}
+
+
+ {component2}
+
+
+ {component3}
+
+
+ );
+};
diff --git a/package-lock.json b/package-lock.json
index 9c323e0..f01de29 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,6 +15,7 @@
"@react-navigation/elements": "^2.3.8",
"@react-navigation/native": "^7.1.6",
"@react-navigation/native-stack": "^7.3.21",
+ "@types/lodash": "^4.17.20",
"@types/react-native-vector-icons": "^6.4.18",
"dayjs": "^1.11.13",
"expo": "53.0.17",
@@ -35,6 +36,7 @@
"expo-symbols": "~0.4.5",
"expo-system-ui": "~5.0.10",
"expo-web-browser": "~14.2.0",
+ "lodash": "^4.17.21",
"react": "19.0.0",
"react-dom": "19.0.0",
"react-native": "0.79.5",
@@ -47,6 +49,8 @@
"react-native-reanimated": "~3.17.4",
"react-native-safe-area-context": "5.4.0",
"react-native-screens": "~4.11.1",
+ "react-native-svg": "15.11.2",
+ "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"
@@ -3354,6 +3358,12 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/lodash": {
+ "version": "4.17.20",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz",
+ "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==",
+ "license": "MIT"
+ },
"node_modules/@types/node": {
"version": "24.0.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.3.tgz",
@@ -4651,6 +4661,12 @@
"node": ">=0.6"
}
},
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "license": "ISC"
+ },
"node_modules/bplist-creator": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz",
@@ -5312,6 +5328,56 @@
"hyphenate-style-name": "^1.0.3"
}
},
+ "node_modules/css-select": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
+ "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-tree": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
+ "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+ "license": "MIT",
+ "dependencies": {
+ "mdn-data": "2.0.14",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/css-tree/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
+ "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
"node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
@@ -5530,6 +5596,61 @@
"node": ">=0.10.0"
}
},
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
"node_modules/dotenv": {
"version": "16.4.7",
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz",
@@ -5605,6 +5726,18 @@
"node": ">= 0.8"
}
},
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
"node_modules/env-editor": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz",
@@ -8678,6 +8811,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "license": "MIT"
+ },
"node_modules/lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
@@ -8826,6 +8965,12 @@
"node": ">= 0.4"
}
},
+ "node_modules/mdn-data": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
+ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
+ "license": "CC0-1.0"
+ },
"node_modules/memoize-one": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz",
@@ -9454,6 +9599,18 @@
"node": ">=10"
}
},
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
"node_modules/nullthrows": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz",
@@ -10602,6 +10759,31 @@
"react-native": "*"
}
},
+ "node_modules/react-native-svg": {
+ "version": "15.11.2",
+ "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.11.2.tgz",
+ "integrity": "sha512-+YfF72IbWQUKzCIydlijV1fLuBsQNGMT6Da2kFlo1sh+LE3BIm/2Q7AR1zAAR6L0BFLi1WaQPLfFUC9bNZpOmw==",
+ "license": "MIT",
+ "dependencies": {
+ "css-select": "^5.1.0",
+ "css-tree": "^1.1.3",
+ "warn-once": "0.1.1"
+ },
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
+ "node_modules/react-native-toast-message": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/react-native-toast-message/-/react-native-toast-message-2.3.3.tgz",
+ "integrity": "sha512-4IIUHwUPvKHu4gjD0Vj2aGQzqPATiblL1ey8tOqsxOWRPGGu52iIbL8M/mCz4uyqecvPdIcMY38AfwRuUADfQQ==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
"node_modules/react-native-vector-icons": {
"version": "10.2.0",
"resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-10.2.0.tgz",
diff --git a/package.json b/package.json
index c931ec0..3e46964 100644
--- a/package.json
+++ b/package.json
@@ -49,9 +49,11 @@
"react-native-otp-entry": "^1.8.5",
"react-native-pager-view": "6.7.1",
"react-native-paper": "^5.14.5",
+ "react-native-qrcode-svg": "^6.3.15",
"react-native-reanimated": "~3.17.4",
"react-native-safe-area-context": "5.4.0",
"react-native-screens": "~4.11.1",
+ "react-native-svg": "15.11.2",
"react-native-toast-message": "^2.3.3",
"react-native-vector-icons": "^10.2.0",
"react-native-web": "~0.20.0",
diff --git a/screens/Admin/listPageAdmin.tsx b/screens/Admin/listPageAdmin.tsx
index f53bc9f..e38da87 100644
--- a/screens/Admin/listPageAdmin.tsx
+++ b/screens/Admin/listPageAdmin.tsx
@@ -22,11 +22,11 @@ const adminListMenu: NavbarItem[] = [
label: "Donasi",
icon: "hand-right",
links: [
- { label: "Dashboard", link: "/admin/donasi" },
- { label: "Publish", link: "/admin/donasi/publish" },
- { label: "Review", link: "/admin/donasi/review" },
- { label: "Reject", link: "/admin/donasi/reject" },
- { label: "Kategori", link: "/admin/donasi/kategori" },
+ { label: "Dashboard", link: "/admin/donation" },
+ { label: "Publish", link: "/admin/donation/publish/status" },
+ { label: "Review", link: "/admin/donation/review/status" },
+ { label: "Reject", link: "/admin/donation/reject/status" },
+ { label: "Kategori", link: "/admin/donation/category" },
],
},
{
@@ -34,11 +34,11 @@ const adminListMenu: NavbarItem[] = [
icon: "calendar-clear",
links: [
{ label: "Dashboard", link: "/admin/event" },
- { label: "Publish", link: "/admin/event/publish" },
- { label: "Review", link: "/admin/event/review" },
- { label: "Reject", link: "/admin/event/reject" },
- { label: "Tipe Acara", link: "/admin/event/tipe-acara" },
- { label: "Riwayat", link: "/admin/event/riwayat" },
+ { label: "Publish", link: "/admin/event/publish/status" },
+ { label: "Review", link: "/admin/event/review/status" },
+ { label: "Reject", link: "/admin/event/reject/status" },
+ { label: "Tipe Acara", link: "/admin/event/type-of-event" },
+ { label: "Riwayat", link: "/admin/event/riwayat/status" },
],
},
{
@@ -46,10 +46,10 @@ const adminListMenu: NavbarItem[] = [
icon: "accessibility-outline",
links: [
{ label: "Dashboard", link: "/admin/voting" },
- { label: "Publish", link: "/admin/voting/publish" },
- { label: "Review", link: "/admin/voting/review" },
- { label: "Reject", link: "/admin/voting/reject" },
- { label: "Riwayat", link: "/admin/voting/riwayat" },
+ { label: "Publish", link: "/admin/voting/publish/status" },
+ { label: "Review", link: "/admin/voting/review/status" },
+ { label: "Reject", link: "/admin/voting/reject/status" },
+ { label: "Riwayat", link: "/admin/voting/riwayat/status" },
],
},
{
diff --git a/screens/Authentication/LoginView.tsx b/screens/Authentication/LoginView.tsx
index c654cb0..af685d5 100644
--- a/screens/Authentication/LoginView.tsx
+++ b/screens/Authentication/LoginView.tsx
@@ -84,9 +84,9 @@ export default function LoginView() {
- router.navigate("/admin/forum")}>
+ {/* router.navigate("/admin/donation")}>
Admin ( Delete Soon )
-
+ */}
);