Integrasi Admin: User Acces & Super Admin

Add:
- admin/super-admin/
- admin/user-access/
- service/api-admin/

Fix:
- (user)/profile/[id]/index: penambahan useData dari useAuthuntuk merestart value masterRole
- integrasi pada tampilan admin

### No Issue
This commit is contained in:
2025-10-14 17:28:40 +08:00
parent f750d158be
commit 5f36620988
16 changed files with 833 additions and 174 deletions

View File

@@ -1,6 +1,6 @@
import { MainColor } from "@/constants/color-palet";
import { Href, router } from "expo-router";
import { DimensionValue, TouchableOpacity } from "react-native";
import { DimensionValue, StyleProp, TouchableOpacity, ViewStyle } from "react-native";
type SizeType = "xs" | "sm" | "md" | "lg" | "xl" | number | string | undefined;
@@ -10,12 +10,14 @@ export default function ActionIcon({
icon,
size = "md",
disabled = false,
style,
}: {
href?: Href;
onPress?: () => void;
icon: React.ReactNode;
size?: SizeType;
disabled?: boolean;
style?: StyleProp<ViewStyle>;
}) {
const sizeMap = {
xs: 22,
@@ -39,7 +41,7 @@ export default function ActionIcon({
<TouchableOpacity
disabled={disabled}
activeOpacity={0.7}
style={{
style={[{
backgroundColor: disabled ? MainColor.disabled : MainColor.yellow,
padding: 5,
borderRadius: 50,
@@ -47,7 +49,7 @@ export default function ActionIcon({
justifyContent: "center",
width: iconSize,
height: iconSize,
}}
}, style]}
onPress={() => {
if (disabled) return;
if (href) {

View File

@@ -1,4 +1,4 @@
import { StyleProp, ViewStyle } from "react-native";
import { ViewStyle } from "react-native";
import Grid from "../Grid/GridCustom";
export default function GridTwoView({
@@ -13,15 +13,23 @@ export default function GridTwoView({
spanRight?: number;
leftIcon?: React.ReactNode;
rightIcon?: React.ReactNode;
styleLeft?: StyleProp<ViewStyle>;
styleRight?: StyleProp<ViewStyle>;
styleLeft?: ViewStyle;
styleRight?: ViewStyle;
}) {
const baseStyle: ViewStyle = { justifyContent: "center" };
return (
<Grid containerStyle={{ marginBottom: 0 }}>
<Grid.Col span={spanLeft} style={{ justifyContent: "center" }}>
<Grid.Col
span={spanLeft}
style={styleLeft ? { ...baseStyle, ...styleLeft } : baseStyle}
>
{leftIcon}
</Grid.Col>
<Grid.Col span={spanRight} style={{ justifyContent: "center" }}>
<Grid.Col
span={spanRight}
style={styleRight ? { ...baseStyle, ...styleRight } : baseStyle}
>
{rightIcon}
</Grid.Col>
</Grid>

View File

@@ -1,4 +1,5 @@
import { Grid } from "@/components";
import { StyleProp, ViewStyle } from "react-native";
export const GridViewCustomSpan = ({
span1,
@@ -7,31 +8,52 @@ export const GridViewCustomSpan = ({
component1,
component2,
component3,
style1,
style2,
style3,
}: {
span1: number;
span2: number;
span3: number;
span1?: number;
span2?: number;
span3?: number;
component1: React.ReactNode;
component2: React.ReactNode;
component3: React.ReactNode;
style1?: StyleProp<ViewStyle>;
style2?: StyleProp<ViewStyle>;
style3?: StyleProp<ViewStyle>;
}) => {
return (
<Grid>
<Grid.Col
span={span1 || 4}
style={{ justifyContent: "center", paddingRight: 5, paddingLeft: 5 }}
style={{
justifyContent: "center",
paddingRight: 10,
paddingLeft: 10,
...(style1 as object)
} as ViewStyle}
>
{component1}
</Grid.Col>
<Grid.Col
span={span2 || 4}
style={{ justifyContent: "center", paddingRight: 5, paddingLeft: 5 }}
style={{
justifyContent: "center",
paddingRight: 10,
paddingLeft: 10,
...(style2 as object)
} as ViewStyle}
>
{component2}
</Grid.Col>
<Grid.Col
span={span3 || 4}
style={{ justifyContent: "center", paddingRight: 5, paddingLeft: 5 }}
style={{
justifyContent: "center",
paddingRight: 10,
paddingLeft: 10,
...(style3 as object)
} as ViewStyle}
>
{component3}
</Grid.Col>