Admin
App-Information Add: - screens/Admin/App-Information - _ShareComponent/Admin - app/(application)/admin/app-information ### No Issue
This commit is contained in:
@@ -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<ViewStyle>
|
||||
}
|
||||
|
||||
const CircularInput: React.FC<CircularInputProps> = ({ value, onChange }) => {
|
||||
const CircularInput: React.FC<CircularInputProps> = ({ value, onChange, icon, style }) => {
|
||||
return (
|
||||
<View style={styles.circleContainer}>
|
||||
<TextInput
|
||||
value={String(value)}
|
||||
onChangeText={onChange}
|
||||
style={styles.input}
|
||||
keyboardType="numeric"
|
||||
maxLength={2} // Batasan maksimal karakter
|
||||
/>
|
||||
<View style={[styles.circleContainer, style]}>
|
||||
{icon ? (
|
||||
icon
|
||||
) : (
|
||||
<TextInput
|
||||
value={String(value)}
|
||||
onChangeText={onChange}
|
||||
style={styles.input}
|
||||
keyboardType="numeric"
|
||||
maxLength={2} // Batasan maksimal karakter
|
||||
/>
|
||||
)}
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -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,
|
||||
}: {
|
||||
|
||||
@@ -22,7 +22,7 @@ interface TextCustomProps {
|
||||
style?: StyleProp<TextStyle>;
|
||||
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<TextCustomProps> = ({
|
||||
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",
|
||||
|
||||
46
components/_ShareComponent/Admin/BoxDashboard.tsx
Normal file
46
components/_ShareComponent/Admin/BoxDashboard.tsx
Normal file
@@ -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 (
|
||||
<>
|
||||
<BaseBox
|
||||
backgroundColor={MainColor.soft_darkblue}
|
||||
paddingTop={5}
|
||||
paddingBottom={5}
|
||||
>
|
||||
<Grid containerStyle={{ marginBlock: 0 }}>
|
||||
<Grid.Col
|
||||
span={9}
|
||||
style={{
|
||||
paddingLeft: 10,
|
||||
}}
|
||||
>
|
||||
<StackCustom gap={"xs"}>
|
||||
<TextCustom bold>{item.label}</TextCustom>
|
||||
<TextCustom size={50}>{item.value}</TextCustom>
|
||||
</StackCustom>
|
||||
</Grid.Col>
|
||||
<Grid.Col
|
||||
span={3}
|
||||
style={{ alignItems: "flex-start", justifyContent: "center" }}
|
||||
>
|
||||
<CircleContainer icon={item.icon} />
|
||||
</Grid.Col>
|
||||
</Grid>
|
||||
</BaseBox>
|
||||
</>
|
||||
);
|
||||
}
|
||||
16
components/_ShareComponent/Admin/BoxTitlePage.tsx
Normal file
16
components/_ShareComponent/Admin/BoxTitlePage.tsx
Normal file
@@ -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 (
|
||||
<>
|
||||
<BaseBox style={{ flexDirection: "row", justifyContent: "space-between" }}>
|
||||
<TextCustom style={{ alignSelf: "center" }} bold size={TEXT_SIZE_LARGE}>
|
||||
{title}
|
||||
</TextCustom>
|
||||
{rightComponent}
|
||||
</BaseBox>
|
||||
</>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user