diff --git a/app/(application)/admin/_layout.tsx b/app/(application)/admin/_layout.tsx index 303345c..bd4383c 100644 --- a/app/(application)/admin/_layout.tsx +++ b/app/(application)/admin/_layout.tsx @@ -23,6 +23,7 @@ export default function AdminLayout() { <> - + + + + + + + - - - - - - diff --git a/app/(application)/admin/app-information/index.tsx b/app/(application)/admin/app-information/index.tsx new file mode 100644 index 0000000..213ad29 --- /dev/null +++ b/app/(application)/admin/app-information/index.tsx @@ -0,0 +1,62 @@ +import { + ScrollableCustom, + ViewWrapper +} from "@/components"; +import AdminAppInformation_BusinessFieldSection from "@/screens/Admin/App-Information/BusinessFieldSection"; +import AdminAppInformation_Bank from "@/screens/Admin/App-Information/InformationBankSection"; +import AdminAppInformation_StickerSection from "@/screens/Admin/App-Information/StickerSection"; +import { useState } from "react"; + +export default function AdminInformation() { + const [activeCategory, setActiveCategory] = useState("bank"); + + const handlePress = (item: any) => { + setActiveCategory(item.value); + // tambahkan logika lain seperti filter dsb. + }; + + const scrollComponent = ( + + ); + + const renderContent = () => { + switch (activeCategory) { + case "bank": + return ; + case "business": + return ; + case "sticker": + return ; + default: + return ; + } + }; + + return ( + <> + + {renderContent()} + + + ); +} diff --git a/app/(application)/admin/dashboard.tsx b/app/(application)/admin/dashboard.tsx index ceb6d04..4748f08 100644 --- a/app/(application)/admin/dashboard.tsx +++ b/app/(application)/admin/dashboard.tsx @@ -1,11 +1,40 @@ -import { TextCustom, ViewWrapper } from "@/components"; +import { + StackCustom, + TextCustom, + ViewWrapper +} from "@/components"; +import AdminComp_BoxDashboard from "@/components/_ShareComponent/Admin/BoxDashboard"; +import { MainColor } from "@/constants/color-palet"; +import { Ionicons } from "@expo/vector-icons"; export default function AdminDashboard() { return ( <> - Admin Dashboard + + + Main Dashboard + + {listData.map((item, i) => ( + + ))} + ); } + +const listData = [ + { + label: "User", + value: 4, + icon: , + }, + { + label: "Portofolio", + value: 7, + icon: ( + + ), + }, +]; diff --git a/app/(application)/admin/information.tsx b/app/(application)/admin/information.tsx deleted file mode 100644 index d7831ef..0000000 --- a/app/(application)/admin/information.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { TextCustom, ViewWrapper } from "@/components"; - -export default function AdminInformation() { - return ( - <> - - Information - - - ); -} diff --git a/app/(application)/admin/maps.tsx b/app/(application)/admin/maps.tsx index c08541d..f27ac3d 100644 --- a/app/(application)/admin/maps.tsx +++ b/app/(application)/admin/maps.tsx @@ -1,10 +1,10 @@ -import { TextCustom, ViewWrapper } from "@/components"; +import { MapCustom, ViewWrapper } from "@/components"; export default function AdminMaps() { return ( <> - Maps + ); diff --git a/components/Container/CircleContainer.tsx b/components/Container/CircleContainer.tsx index 187b994..39987f9 100644 --- a/components/Container/CircleContainer.tsx +++ b/components/Container/CircleContainer.tsx @@ -1,22 +1,28 @@ import { MainColor } from "@/constants/color-palet"; import React from "react"; -import { StyleSheet, TextInput, View } from "react-native"; +import { StyleProp, StyleSheet, TextInput, View, ViewStyle } from "react-native"; interface CircularInputProps { - value: string | number; - onChange?: (value: string) => void; + value?: string | number + onChange?: (value: string | number) => void; + icon?: React.ReactNode; + style?: StyleProp } -const CircularInput: React.FC = ({ value, onChange }) => { +const CircularInput: React.FC = ({ value, onChange, icon, style }) => { return ( - - + + {icon ? ( + icon + ) : ( + + )} ); }; diff --git a/components/Divider/Divider.tsx b/components/Divider/Divider.tsx index 810ab6e..477d354 100644 --- a/components/Divider/Divider.tsx +++ b/components/Divider/Divider.tsx @@ -2,8 +2,8 @@ import { AccentColor } from "@/constants/color-palet"; import { View } from "react-native"; export default function Divider({ - color = AccentColor.blue, - size = 1, + color = AccentColor.white, + size = 0.5, marginTop= 12, marginBottom= 12, }: { diff --git a/components/Text/TextCustom.tsx b/components/Text/TextCustom.tsx index c1ad0e7..49fbf3d 100644 --- a/components/Text/TextCustom.tsx +++ b/components/Text/TextCustom.tsx @@ -22,7 +22,7 @@ interface TextCustomProps { style?: StyleProp; bold?: boolean; semiBold?: boolean; - size?: "default" | "large" | "small" | "xlarge"; + size?: "default" | "large" | "small" | "xlarge" | number color?: "default" | "yellow" | "red" | "gray" | "green" | "black" align?: TextAlign; // Prop untuk alignment truncate?: boolean | number; @@ -54,6 +54,7 @@ const TextCustom: React.FC = ({ if (size === "large") selectedStyles.push(styles.large); else if (size === "xlarge") selectedStyles.push(styles.xlarge); else if (size === "small") selectedStyles.push(styles.small); + else if (typeof size === "number") selectedStyles.push({ fontSize: size }); // Color if (color === "yellow") selectedStyles.push(styles.yellow); @@ -105,7 +106,7 @@ export const styles = StyleSheet.create({ fontSize: TEXT_SIZE_MEDIUM, color: MainColor.white, fontFamily: "Poppins-Regular", - lineHeight: 20, + // lineHeight: 20, }, bold: { fontFamily: "Poppins-Bold", diff --git a/components/_ShareComponent/Admin/BoxDashboard.tsx b/components/_ShareComponent/Admin/BoxDashboard.tsx new file mode 100644 index 0000000..4c85dae --- /dev/null +++ b/components/_ShareComponent/Admin/BoxDashboard.tsx @@ -0,0 +1,46 @@ +import BaseBox from "@/components/Box/BaseBox"; +import CircleContainer from "@/components/Container/CircleContainer"; +import Grid from "@/components/Grid/GridCustom"; +import StackCustom from "@/components/Stack/StackCustom"; +import TextCustom from "@/components/Text/TextCustom"; +import { MainColor } from "@/constants/color-palet"; + +interface BoxDashboardProps { + item: { + label: string; + value: string | number; + icon: React.ReactNode; + }; +} + +export default function AdminComp_BoxDashboard({ item }: BoxDashboardProps) { + return ( + <> + + + + + {item.label} + {item.value} + + + + + + + + + ); +} diff --git a/components/_ShareComponent/Admin/BoxTitlePage.tsx b/components/_ShareComponent/Admin/BoxTitlePage.tsx new file mode 100644 index 0000000..1e97491 --- /dev/null +++ b/components/_ShareComponent/Admin/BoxTitlePage.tsx @@ -0,0 +1,16 @@ +import BaseBox from "@/components/Box/BaseBox"; +import TextCustom from "@/components/Text/TextCustom"; +import { TEXT_SIZE_LARGE } from "@/constants/constans-value"; + +export default function AdminComp_BoxTitle({ title , rightComponent}: { title: string , rightComponent?: React.ReactNode}) { + return ( + <> + + + {title} + + {rightComponent} + + + ); +} diff --git a/screens/Admin/App-Information/BusinessFieldSection.tsx b/screens/Admin/App-Information/BusinessFieldSection.tsx new file mode 100644 index 0000000..949fec4 --- /dev/null +++ b/screens/Admin/App-Information/BusinessFieldSection.tsx @@ -0,0 +1,9 @@ +import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage"; + +export default function AdminAppInformation_BusinessFieldSection() { + return ( + <> + + + ); +} diff --git a/screens/Admin/App-Information/InformationBankSection.tsx b/screens/Admin/App-Information/InformationBankSection.tsx new file mode 100644 index 0000000..eab8ea9 --- /dev/null +++ b/screens/Admin/App-Information/InformationBankSection.tsx @@ -0,0 +1,95 @@ +import { + BaseBox, + ButtonCustom, + Divider, + Grid, + TextCustom +} from "@/components"; +import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage"; +import { MainColor } from "@/constants/color-palet"; +import { ICON_SIZE_SMALL } from "@/constants/constans-value"; +import { dummyMasterBank } from "@/lib/dummy-data/_master/bank"; +import { FontAwesome5, Ionicons } from "@expo/vector-icons"; +import { useState } from "react"; +import { TouchableOpacity, View } from "react-native"; +import { Switch } from "react-native-paper"; + +export default function AdminAppInformation_Bank() { + const [value, setValue] = useState(false); + return ( + <> + {}} + > + + + } + /> + + + + Aksi + + + Status + + + Nama Bank + + + + + + {dummyMasterBank.map((e, i) => ( + + + + + } + onPress={() => {}} + > + Edit + + + + { + setValue(!value); + }} + theme={{ + colors: { + primary: MainColor.yellow, + }, + }} + /> + + + {e.code} + + + + + ))} + + + ); +} diff --git a/screens/Admin/App-Information/StickerSection.tsx b/screens/Admin/App-Information/StickerSection.tsx new file mode 100644 index 0000000..d0709ce --- /dev/null +++ b/screens/Admin/App-Information/StickerSection.tsx @@ -0,0 +1,9 @@ +import AdminComp_BoxTitle from "@/components/_ShareComponent/Admin/BoxTitlePage"; + +export default function AdminAppInformation_StickerSection() { + return ( + <> + + + ); +} diff --git a/screens/Admin/listPageAdmin.tsx b/screens/Admin/listPageAdmin.tsx index 2ec3f62..e05ec4d 100644 --- a/screens/Admin/listPageAdmin.tsx +++ b/screens/Admin/listPageAdmin.tsx @@ -86,7 +86,7 @@ const adminListMenu: NavbarItem[] = [ { label: "App Information", icon: "information-circle", - link: "/admin/information", + link: "/admin/app-information", }, { label: "User Access", diff --git a/screens/Authentication/LoginView.tsx b/screens/Authentication/LoginView.tsx index 5f244fb..094027d 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 (