diff --git a/app/(application)/admin/app-information/sticker/[id]/index.tsx b/app/(application)/admin/app-information/sticker/[id]/index.tsx new file mode 100644 index 0000000..5dd97e5 --- /dev/null +++ b/app/(application)/admin/app-information/sticker/[id]/index.tsx @@ -0,0 +1,80 @@ +import { + BoxButtonOnFooter, + ButtonCenteredOnly, + ButtonCustom, + CheckboxCustom, + CheckboxGroup, + LandscapeFrameUploaded, + SelectCustom, + Spacing, + StackCustom, + TextCustom, + ViewWrapper, +} from "@/components"; +import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle"; +import { dummyMasterEmotions } from "@/lib/dummy-data/_master/emotions"; +import { router } from "expo-router"; +import { useState } from "react"; +import { View } from "react-native"; + +export default function AdminAppInformation_StickerCreate() { + const [value, setValue] = useState(null); + const [selectedEmotions, setSelectedEmotions] = useState([]); + + const buttonSubmit = ( + + router.back()}>Update + + ); + return ( + <> + + + + + + + {}}> + Upload + + + + setValue(value as string)} + /> + + + Pilih Emosi Stiker + * + + + + setSelectedEmotions(value as string[])} + > + + {dummyMasterEmotions.map((e) => ( + {e.label}} + valueKey={e.id} + /> + ))} + + + + + + + + ); +} diff --git a/app/(application)/admin/app-information/sticker/create.tsx b/app/(application)/admin/app-information/sticker/create.tsx new file mode 100644 index 0000000..22294dd --- /dev/null +++ b/app/(application)/admin/app-information/sticker/create.tsx @@ -0,0 +1,84 @@ +import { + BoxButtonOnFooter, + ButtonCenteredOnly, + ButtonCustom, + CheckboxCustom, + CheckboxGroup, + LandscapeFrameUploaded, + SelectCustom, + Spacing, + StackCustom, + TextCustom, + ViewWrapper +} from "@/components"; +import AdminBackButtonAntTitle from "@/components/_ShareComponent/Admin/BackButtonAntTitle"; +import { dummyMasterEmotions } from "@/lib/dummy-data/_master/emotions"; +import { router } from "expo-router"; +import { useState } from "react"; +import { View } from "react-native"; + +export default function AdminAppInformation_StickerCreate() { + const [value, setValue] = useState(null); + const [selectedEmotions, setSelectedEmotions] = useState([]); + + const buttonSubmit = ( + + router.back()} + > + Tambah + + + ); + return ( + <> + + + + + + + {}}> + Upload + + + + setValue(value as string)} + /> + + + Pilih Emosi Stiker + * + + + + setSelectedEmotions(value as string[])} + > + + {dummyMasterEmotions.map((e) => ( + {e.label}} + valueKey={e.id} + /> + ))} + + + + + + + + ); +} diff --git a/components/Checkbox/CheckboxCustom.tsx b/components/Checkbox/CheckboxCustom.tsx index 1c9a2f4..3f8ebca 100644 --- a/components/Checkbox/CheckboxCustom.tsx +++ b/components/Checkbox/CheckboxCustom.tsx @@ -1,4 +1,4 @@ -import { AccentColor } from "@/constants/color-palet"; +import { AccentColor, MainColor } from "@/constants/color-palet"; import { MaterialIcons } from "@expo/vector-icons"; // Bisa diganti dengan ikon lain import React, { useContext } from "react"; import { Animated, Text, TouchableOpacity, View } from "react-native"; @@ -17,7 +17,7 @@ const CheckboxGroupContext = // Tipe props // Tambahkan prop baru: groupValueKey interface CheckboxProps { - label?: string; + label?: string | React.ReactNode; description?: string; error?: string; value?: boolean; // controlled value (untuk standalone) @@ -39,7 +39,7 @@ const CheckboxCustom: React.FC = ({ onChange, disabled: propDisabled, size = 20, - color = AccentColor.softblue, + color = MainColor.yellow, style, component, valueKey, diff --git a/lib/dummy-data/_master/emotions.ts b/lib/dummy-data/_master/emotions.ts new file mode 100644 index 0000000..23ead44 --- /dev/null +++ b/lib/dummy-data/_master/emotions.ts @@ -0,0 +1,123 @@ +export const dummyMasterEmotions = [ + { + id: 1, + label: "Senang", + value: "senang", + isActive: true, + createdAt: "2025-06-16T09:57:16.726Z", + updatedAt: "2025-06-16T09:57:16.726Z", + }, + { + id: 2, + label: "Sedih", + value: "sedih", + isActive: true, + createdAt: "2025-06-16T09:57:16.730Z", + updatedAt: "2025-06-16T09:57:16.730Z", + }, + { + id: 15, + label: "Takut", + value: "takut", + isActive: true, + createdAt: "2025-06-16T09:57:16.730Z", + updatedAt: "2025-06-16T09:57:16.730Z", + }, + { + id: 6, + label: "Marah", + value: "marah", + isActive: true, + createdAt: "2025-06-16T09:57:16.730Z", + updatedAt: "2025-06-16T09:57:16.730Z", + }, + { + id: 8, + label: "Terkejut", + value: "terkejut", + isActive: true, + createdAt: "2025-06-16T09:57:16.730Z", + updatedAt: "2025-06-16T09:57:16.730Z", + }, + { + id: 14, + label: "Malas", + value: "malas", + isActive: true, + createdAt: "2025-06-16T09:57:16.730Z", + updatedAt: "2025-06-16T09:57:16.730Z", + }, + { + id: 7, + label: "Penasaran", + value: "penasaran", + isActive: true, + createdAt: "2025-06-16T09:57:16.731Z", + updatedAt: "2025-06-16T09:57:16.731Z", + }, + { + id: 3, + label: "Cinta", + value: "cinta", + isActive: true, + createdAt: "2025-06-16T09:57:16.731Z", + updatedAt: "2025-06-16T09:57:16.731Z", + }, + { + id: 4, + label: "Bangga", + value: "bangga", + isActive: true, + createdAt: "2025-06-16T09:57:16.731Z", + updatedAt: "2025-06-16T09:57:16.731Z", + }, + { + id: 5, + label: "Malu", + value: "malu", + isActive: true, + createdAt: "2025-06-16T09:57:16.731Z", + updatedAt: "2025-06-16T09:57:16.731Z", + }, + { + id: 11, + label: "Kesal", + value: "kesal", + isActive: true, + createdAt: "2025-06-16T09:57:16.732Z", + updatedAt: "2025-06-16T09:57:16.732Z", + }, + { + id: 9, + label: "Bingung", + value: "bingung", + isActive: true, + createdAt: "2025-06-16T09:57:16.732Z", + updatedAt: "2025-06-16T09:57:16.732Z", + }, + { + id: 10, + label: "Kaget", + value: "kaget", + isActive: true, + createdAt: "2025-06-16T09:57:16.732Z", + updatedAt: "2025-06-16T09:57:16.732Z", + }, + { + id: 12, + label: "Iri", + value: "iri", + isActive: true, + createdAt: "2025-06-16T09:57:16.732Z", + updatedAt: "2025-06-16T09:57:16.732Z", + }, + { + id: 13, + label: "Lega", + value: "lega", + isActive: true, + createdAt: "2025-06-16T09:57:16.733Z", + updatedAt: "2025-06-16T09:57:16.733Z", + }, +]; + \ No newline at end of file diff --git a/screens/Admin/App-Information/StickerSection.tsx b/screens/Admin/App-Information/StickerSection.tsx index d0709ce..f3383c7 100644 --- a/screens/Admin/App-Information/StickerSection.tsx +++ b/screens/Admin/App-Information/StickerSection.tsx @@ -1,9 +1,109 @@ -import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage"; +import { ActionIcon, Grid, StackCustom, TextCustom } from "@/components"; +import { MainColor } from "@/constants/color-palet"; +import { ICON_SIZE_BUTTON } from "@/constants/constans-value"; +import { FontAwesome5 } from "@expo/vector-icons"; +import { Image } from "expo-image"; +import { router } from "expo-router"; +import { useState } from "react"; +import { View } from "react-native"; +import { Divider, Switch } from "react-native-paper"; export default function AdminAppInformation_StickerSection() { + const [value, setValue] = useState(false); return ( <> - + + + Aksi + + + Status + + + Stiker + + + + + + + {listSticker.map((e, i) => ( + + + + + } + onPress={() => { + router.push(`/admin/app-information/sticker/${i}`); + }} + /> + + + { + setValue(!value); + }} + theme={{ + colors: { + primary: MainColor.yellow, + }, + }} + /> + + + + + + + + ))} + ); } + +const listSticker = [ + { + id: "1", + label: "Stiker 1", + value: "sticker 1", + path: "https://wibu-storage.wibudev.com/api/files/cmb0dkn5700bjbpnnwcfpzxpz", + }, + { + id: "2", + label: "Stiker 2", + value: "sticker 2", + path: "https://wibu-storage.wibudev.com/api/files/cmb0djnya00bhbpnn8b2sfpg3", + }, + { + id: "3", + label: "Stiker 3", + value: "sticker 3", + path: "https://wibu-storage.wibudev.com/api/files/cmb0dj0o400bfbpnn6hrfa71y", + }, + { + id: "4", + label: "Stiker 4", + value: "sticker 4", + path: "https://wibu-storage.wibudev.com/api/files/cmb0d5rdb00abbpnnrbhxrxjz", + }, + { + id: "5", + label: "Stiker 5", + value: "sticker 5", + path: "https://wibu-storage.wibudev.com/api/files/cmb0d4j5q00a9bpnn0qpxa0k4", + }, +]; diff --git a/screens/Authentication/LoginView.tsx b/screens/Authentication/LoginView.tsx index 094027d..f44aca5 100644 --- a/screens/Authentication/LoginView.tsx +++ b/screens/Authentication/LoginView.tsx @@ -32,7 +32,7 @@ export default function LoginView() { // router.navigate("/verification"); // router.navigate(`/(application)/(user)/profile/${id}`); - // router.navigate("/(application)/(user)/home"); + router.navigate("/(application)/(user)/home"); // router.navigate(`/(application)/profile/${id}/edit`); // router.navigate(`/(application)/(user)/portofolio/${id}`) // router.navigate(`/(application)/(image)/preview-image/${id}`); @@ -40,7 +40,7 @@ export default function LoginView() { // router.replace("/(application)/coba"); // router.navigate("/investment/(tabs)")1 // router.navigate("/crowdfunding") - router.navigate("/admin/dashboard") + // router.navigate("/admin/dashboard") } return ( @@ -78,9 +78,15 @@ export default function LoginView() { placeholder="Masukkan nomor" /> - + Login + + + + router.navigate("/admin/dashboard")}> + Admin ( Delete Soon ) + );