From 21f89aeec526540f9a73f847eefa424540148273 Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Tue, 12 Aug 2025 11:27:17 +0800 Subject: [PATCH 1/4] Admin Voting Add: - admin/voting: tambah [id] dan [status] Component Admin Add: - components/_ShareComponent/Admin/ButtonReject - components/_ShareComponent/Admin/ButtonReview ### No Issue --- app/(application)/admin/_layout.tsx | 8 +- .../admin/voting/[id]/[status]/index.tsx | 173 ++++++++++++++++++ .../admin/voting/[id]/reject-input.tsx | 55 ++++++ .../admin/voting/[status]/status.tsx | 76 ++++++++ app/(application)/admin/voting/index.tsx | 49 +++++ .../_ShareComponent/Admin/ButtonReject.tsx | 24 +++ .../_ShareComponent/Admin/ButtonReview.tsx | 39 ++++ screens/Admin/listPageAdmin.tsx | 8 +- screens/Authentication/LoginView.tsx | 2 +- 9 files changed, 428 insertions(+), 6 deletions(-) create mode 100644 app/(application)/admin/voting/[id]/[status]/index.tsx create mode 100644 app/(application)/admin/voting/[id]/reject-input.tsx create mode 100644 app/(application)/admin/voting/[status]/status.tsx create mode 100644 app/(application)/admin/voting/index.tsx create mode 100644 components/_ShareComponent/Admin/ButtonReject.tsx create mode 100644 components/_ShareComponent/Admin/ButtonReview.tsx diff --git a/app/(application)/admin/_layout.tsx b/app/(application)/admin/_layout.tsx index fb5c959..750afc0 100644 --- a/app/(application)/admin/_layout.tsx +++ b/app/(application)/admin/_layout.tsx @@ -86,10 +86,16 @@ export default function AdminLayout() { - {/* ================== Forum End ================== */} + + {/* ================== Voting Start ================== */} + + + + + {/* ================== Voting End ================== */} { + 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/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/screens/Admin/listPageAdmin.tsx b/screens/Admin/listPageAdmin.tsx index f53bc9f..2e531c7 100644 --- a/screens/Admin/listPageAdmin.tsx +++ b/screens/Admin/listPageAdmin.tsx @@ -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..9ff47b2 100644 --- a/screens/Authentication/LoginView.tsx +++ b/screens/Authentication/LoginView.tsx @@ -84,7 +84,7 @@ export default function LoginView() { - router.navigate("/admin/forum")}> + router.navigate("/admin/voting")}> Admin ( Delete Soon ) From 25884b64e7b52fe780e114f0e05a1b67d625d588 Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Tue, 12 Aug 2025 15:29:13 +0800 Subject: [PATCH 2/4] Admin Event Add: - admin/event: Tambah halaman detail dan status Component Admin Add: - ShareComponent/Admin/ActionIconPlus Package: Install: react-native-qrcode-svg && react-native-svg ### No Issue --- app/(application)/admin/_layout.tsx | 10 + .../admin/app-information/index.tsx | 32 +-- .../admin/event/[id]/[status]/index.tsx | 218 ++++++++++++++++++ .../admin/event/[id]/list-of-participants.tsx | 42 ++++ .../admin/event/[id]/reject-input.tsx | 55 +++++ .../admin/event/[status]/status.tsx | 76 ++++++ app/(application)/admin/event/index.tsx | 55 +++++ app/(application)/admin/event/type-create.tsx | 27 +++ .../admin/event/type-of-event.tsx | 104 +++++++++ app/(application)/admin/event/type-update.tsx | 30 +++ bun.lock | 70 +++++- components/_Icon/IconComponent.tsx | 20 ++ components/_Icon/IconEdit.tsx | 15 +- .../_ShareComponent/Admin/ActionIconPlus.tsx | 21 ++ package-lock.json | 182 +++++++++++++++ package.json | 2 + screens/Admin/listPageAdmin.tsx | 10 +- screens/Authentication/LoginView.tsx | 2 +- 18 files changed, 942 insertions(+), 29 deletions(-) create mode 100644 app/(application)/admin/event/[id]/[status]/index.tsx create mode 100644 app/(application)/admin/event/[id]/list-of-participants.tsx create mode 100644 app/(application)/admin/event/[id]/reject-input.tsx create mode 100644 app/(application)/admin/event/[status]/status.tsx create mode 100644 app/(application)/admin/event/index.tsx create mode 100644 app/(application)/admin/event/type-create.tsx create mode 100644 app/(application)/admin/event/type-of-event.tsx create mode 100644 app/(application)/admin/event/type-update.tsx create mode 100644 components/_ShareComponent/Admin/ActionIconPlus.tsx diff --git a/app/(application)/admin/_layout.tsx b/app/(application)/admin/_layout.tsx index 750afc0..b1c8c50 100644 --- a/app/(application)/admin/_layout.tsx +++ b/app/(application)/admin/_layout.tsx @@ -96,6 +96,16 @@ export default function AdminLayout() { {/* ================== Voting End ================== */} + + {/* ================== Event Start ================== */} + + + + + + {/* + */} + {/* ================== Event 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/event/[id]/[status]/index.tsx b/app/(application)/admin/event/[id]/[status]/index.tsx new file mode 100644 index 0000000..07c753b --- /dev/null +++ b/app/(application)/admin/event/[id]/[status]/index.tsx @@ -0,0 +1,218 @@ +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: "Cancel", + textRight: "Publish", + 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/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/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 2e531c7..7fcbeef 100644 --- a/screens/Admin/listPageAdmin.tsx +++ b/screens/Admin/listPageAdmin.tsx @@ -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" }, ], }, { diff --git a/screens/Authentication/LoginView.tsx b/screens/Authentication/LoginView.tsx index 9ff47b2..1963e28 100644 --- a/screens/Authentication/LoginView.tsx +++ b/screens/Authentication/LoginView.tsx @@ -84,7 +84,7 @@ export default function LoginView() { - router.navigate("/admin/voting")}> + router.navigate("/admin/event")}> Admin ( Delete Soon ) From c2f18948bf2bcee6b5707f14d8762e260e0e1950 Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Tue, 12 Aug 2025 16:42:47 +0800 Subject: [PATCH 3/4] Admin Job Add: - admin/job/[id]/reject-input Fix: - admin/job/[id]/[status]/index Admin Event Fix: - admin/event/[id]/[status]/index ### No Issue --- .../admin/event/[id]/[status]/index.tsx | 5 +- .../admin/job/[id]/[status]/index.tsx | 49 ++++++++++++----- .../admin/job/[id]/reject-input.tsx | 55 +++++++++++++++++++ 3 files changed, 91 insertions(+), 18 deletions(-) create mode 100644 app/(application)/admin/job/[id]/reject-input.tsx diff --git a/app/(application)/admin/event/[id]/[status]/index.tsx b/app/(application)/admin/event/[id]/[status]/index.tsx index 07c753b..cfd44aa 100644 --- a/app/(application)/admin/event/[id]/[status]/index.tsx +++ b/app/(application)/admin/event/[id]/[status]/index.tsx @@ -166,8 +166,8 @@ export default function AdminEventDetail() { AlertDefaultSystem({ title: "Publish", message: "Apakah anda yakin ingin mempublikasikan data ini?", - textLeft: "Cancel", - textRight: "Publish", + textLeft: "Batal", + textRight: "Ya", onPressLeft: () => { router.back(); }, @@ -191,7 +191,6 @@ export default function AdminEventDetail() { /> )} - {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 ( + <> + } + > + + + + ); +} From 6f3cc03fa5d310acc04533566427d96c7c199376 Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Tue, 12 Aug 2025 17:32:07 +0800 Subject: [PATCH 4/4] Admin Donation Add: - (application)/admin/donation/ Component Admin Add: - _ShareComponent/GridView_3_3_6.tsx ### No Issue --- app/(application)/admin/_layout.tsx | 7 ++ .../admin/donation/[status]/status.tsx | 76 ++++++++++++ .../admin/donation/category-create.tsx | 27 +++++ .../admin/donation/category-update.tsx | 35 ++++++ app/(application)/admin/donation/category.tsx | 113 ++++++++++++++++++ app/(application)/admin/donation/index.tsx | 49 ++++++++ components/_ShareComponent/GridView_3_3_6.tsx | 25 ++++ screens/Admin/listPageAdmin.tsx | 10 +- screens/Authentication/LoginView.tsx | 4 +- 9 files changed, 339 insertions(+), 7 deletions(-) create mode 100644 app/(application)/admin/donation/[status]/status.tsx create mode 100644 app/(application)/admin/donation/category-create.tsx create mode 100644 app/(application)/admin/donation/category-update.tsx create mode 100644 app/(application)/admin/donation/category.tsx create mode 100644 app/(application)/admin/donation/index.tsx create mode 100644 components/_ShareComponent/GridView_3_3_6.tsx diff --git a/app/(application)/admin/_layout.tsx b/app/(application)/admin/_layout.tsx index b1c8c50..94674c0 100644 --- a/app/(application)/admin/_layout.tsx +++ b/app/(application)/admin/_layout.tsx @@ -106,6 +106,13 @@ export default function AdminLayout() { {/* */} {/* ================== Event End ================== */} + + {/* ================== Donasi Start ================== */} + {/* */} + {/* */} + {/* + */} + {/* ================== Donasi End ================== */} + ); + 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/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/screens/Admin/listPageAdmin.tsx b/screens/Admin/listPageAdmin.tsx index 7fcbeef..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" }, ], }, { diff --git a/screens/Authentication/LoginView.tsx b/screens/Authentication/LoginView.tsx index 1963e28..af685d5 100644 --- a/screens/Authentication/LoginView.tsx +++ b/screens/Authentication/LoginView.tsx @@ -84,9 +84,9 @@ export default function LoginView() { - router.navigate("/admin/event")}> + {/* router.navigate("/admin/donation")}> Admin ( Delete Soon ) - + */} );