diff --git a/QWEN.md b/QWEN.md
index b7954b6..d0ee346 100644
--- a/QWEN.md
+++ b/QWEN.md
@@ -540,3 +540,4 @@ Contoh:
- User akan review dan tambahkan sendiri jika perlu
Profile screens: PADDING_INLINE dihapus dari edit.tsx dan create.tsx
+- User ingin mengecek semua user layout tabs setelah perubahan height layout tabs donation di constants. Pattern yang perlu dicek: semua tabs screens harus pakai contentPadding={PADDING_INLINE} untuk konsistensi layout.
diff --git a/app/(application)/(user)/crowdfunding/index.tsx b/app/(application)/(user)/crowdfunding/index.tsx
index 0a5a76a..ee9d6ab 100644
--- a/app/(application)/(user)/crowdfunding/index.tsx
+++ b/app/(application)/(user)/crowdfunding/index.tsx
@@ -1,9 +1,9 @@
import {
BaseBox,
Grid,
+ OS_Wrapper,
StackCustom,
TextCustom,
- ViewWrapper,
} from "@/components";
import { MainColor } from "@/constants/color-palet";
import { ICON_SIZE_SMALL } from "@/constants/constans-value";
@@ -25,7 +25,7 @@ export default function Crowdfunding() {
];
return (
-
+
))}
-
+
);
}
diff --git a/app/(application)/(user)/donation/(tabs)/_layout.tsx b/app/(application)/(user)/donation/(tabs)/_layout.tsx
index 88a7d59..45348a2 100644
--- a/app/(application)/(user)/donation/(tabs)/_layout.tsx
+++ b/app/(application)/(user)/donation/(tabs)/_layout.tsx
@@ -1,5 +1,5 @@
import { IconHome, IconStatus } from "@/components/_Icon";
-import { ICON_SIZE_SMALL } from "@/constants/constans-value";
+import { ICON_SIZE_SMALL, OS_ANDROID_HEIGHT, OS_IOS_HEIGHT } from "@/constants/constans-value";
import { TabsStyles } from "@/styles/tabs-styles";
import {
FontAwesome5
@@ -23,12 +23,12 @@ function DonationTabsWrapper() {
ios: {
borderTopWidth: 0,
paddingTop: 12,
- height: 80,
+ height: OS_IOS_HEIGHT,
},
android: {
borderTopWidth: 0,
paddingTop: 5,
- height: 70 + paddingBottom,
+ height: OS_ANDROID_HEIGHT + paddingBottom,
},
}),
}}
diff --git a/app/(application)/(user)/donation/[id]/(news)/[news]/edit-news.tsx b/app/(application)/(user)/donation/[id]/(news)/[news]/edit-news.tsx
index 78094fa..eb29d72 100644
--- a/app/(application)/(user)/donation/[id]/(news)/[news]/edit-news.tsx
+++ b/app/(application)/(user)/donation/[id]/(news)/[news]/edit-news.tsx
@@ -5,11 +5,11 @@ import {
ButtonCustom,
InformationBox,
LandscapeFrameUploaded,
+ OS_Wrapper,
Spacing,
StackCustom,
TextAreaCustom,
TextInputCustom,
- ViewWrapper,
} from "@/components";
import API_STRORAGE from "@/constants/base-url-api-strorage";
import DIRECTORY_ID from "@/constants/directory-id";
@@ -105,7 +105,9 @@ export default function DonationEditNews() {
};
return (
-
-
+
);
}
diff --git a/app/(application)/(user)/donation/[id]/(news)/[news]/index.tsx b/app/(application)/(user)/donation/[id]/(news)/[news]/index.tsx
index 4d9b4cd..27a6eab 100644
--- a/app/(application)/(user)/donation/[id]/(news)/[news]/index.tsx
+++ b/app/(application)/(user)/donation/[id]/(news)/[news]/index.tsx
@@ -7,9 +7,9 @@ import {
DrawerCustom,
DummyLandscapeImage,
MenuDrawerDynamicGrid,
+ OS_Wrapper,
StackCustom,
TextCustom,
- ViewWrapper,
} from "@/components";
import AppHeader from "@/components/_ShareComponent/AppHeader";
import { IconEdit } from "@/components/_Icon";
@@ -28,6 +28,7 @@ import {
} from "expo-router";
import { useCallback, useState } from "react";
import Toast from "react-native-toast-message";
+import { dateTimeView } from "@/utils/dateTimeView";
export default function DonationNews() {
const { user } = useAuth();
@@ -71,11 +72,11 @@ export default function DonationNews() {
),
}}
/>
-
+
-
- {formatChatTime(data?.createdAt)}
+
+ {dateTimeView({date: data?.createdAt})}
{data && data.imageId && (
@@ -89,7 +90,7 @@ export default function DonationNews() {
{data?.deskripsi || "-"}
-
+
-
+
);
}
diff --git a/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/failed.tsx b/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/failed.tsx
index b715c52..4841ae0 100644
--- a/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/failed.tsx
+++ b/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/failed.tsx
@@ -2,10 +2,10 @@
import {
BaseBox,
Grid,
+ OS_Wrapper,
Spacing,
StackCustom,
TextCustom,
- ViewWrapper,
} from "@/components";
import { MainColor } from "@/constants/color-palet";
import { apiDonationGetInvoiceById } from "@/service/api-client/api-donation";
@@ -63,7 +63,7 @@ export default function DonasiFailed() {
];
return (
-
+
@@ -105,6 +105,6 @@ export default function DonasiFailed() {
-
+
);
}
diff --git a/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/invoice.tsx b/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/invoice.tsx
index 943ec6d..9fab646 100644
--- a/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/invoice.tsx
+++ b/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/invoice.tsx
@@ -6,10 +6,10 @@ import {
ButtonCustom,
Grid,
InformationBox,
+ OS_Wrapper,
Spacing,
StackCustom,
TextCustom,
- ViewWrapper,
} from "@/components";
import CopyButton from "@/components/Button/CoyButton";
import { MainColor } from "@/constants/color-palet";
@@ -101,8 +101,7 @@ export default function DonationInvoice() {
return (
<>
-
-
+
>
);
}
diff --git a/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/process.tsx b/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/process.tsx
index d08401b..c1f2ede 100644
--- a/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/process.tsx
+++ b/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/process.tsx
@@ -1,11 +1,11 @@
-import { BaseBox, StackCustom, TextCustom, ViewWrapper } from "@/components";
+import { BaseBox, OS_Wrapper, StackCustom, TextCustom } from "@/components";
import MoneyTransferAnimation from "@/components/_ShareComponent/MoneyTransferAnimation";
import { View } from "react-native";
export default function DonationProcess() {
return (
<>
-
+
@@ -35,7 +35,7 @@ export default function DonationProcess() {
*/}
-
+
>
);
}
diff --git a/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/success.tsx b/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/success.tsx
index eb9f456..903e428 100644
--- a/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/success.tsx
+++ b/app/(application)/(user)/donation/[id]/(transaction-flow)/[invoiceId]/success.tsx
@@ -2,10 +2,10 @@
import {
BaseBox,
Grid,
+ OS_Wrapper,
Spacing,
StackCustom,
TextCustom,
- ViewWrapper,
} from "@/components";
import { MainColor } from "@/constants/color-palet";
import { apiDonationGetInvoiceById } from "@/service/api-client/api-donation";
@@ -63,7 +63,7 @@ export default function DonationSuccess() {
];
return (
-
+
@@ -105,7 +105,7 @@ export default function DonationSuccess() {
-
+
);
}
diff --git a/app/(application)/(user)/donation/[id]/(transaction-flow)/index.tsx b/app/(application)/(user)/donation/[id]/(transaction-flow)/index.tsx
index ef31135..972730a 100644
--- a/app/(application)/(user)/donation/[id]/(transaction-flow)/index.tsx
+++ b/app/(application)/(user)/donation/[id]/(transaction-flow)/index.tsx
@@ -3,9 +3,9 @@ import {
BoxButtonOnFooter,
ButtonCustom,
Grid,
+ OS_Wrapper,
TextCustom,
TextInputCustom,
- ViewWrapper,
} from "@/components";
import { MainColor } from "@/constants/color-palet";
import { ICON_SIZE_SMALL } from "@/constants/constans-value";
@@ -64,7 +64,7 @@ export default function InvestmentInputDonation() {
);
return (
<>
-
+
{listData.map((item, i) => (
setNominal(item.value)}>
@@ -98,7 +98,7 @@ export default function InvestmentInputDonation() {
Minimal donasi Rp. 10.000
-
+
>
);
}
diff --git a/app/(application)/(user)/donation/[id]/(transaction-flow)/select-bank.tsx b/app/(application)/(user)/donation/[id]/(transaction-flow)/select-bank.tsx
index 558bee0..a78d0c4 100644
--- a/app/(application)/(user)/donation/[id]/(transaction-flow)/select-bank.tsx
+++ b/app/(application)/(user)/donation/[id]/(transaction-flow)/select-bank.tsx
@@ -2,7 +2,7 @@ import {
BaseBox,
BoxButtonOnFooter,
ButtonCustom,
- ViewWrapper,
+ OS_Wrapper,
} from "@/components";
import { RadioCustom, RadioGroup } from "@/components/Radio/RadioCustom";
import { LOCAL_STORAGE_KEY } from "@/constants/local-storage-key";
@@ -91,7 +91,7 @@ export default function DonationSelectBank() {
);
};
return (
-
+
{_.isEmpty(listBank)
? []
@@ -101,6 +101,6 @@ export default function DonationSelectBank() {
))}
-
+
);
}
diff --git a/app/(application)/(user)/donation/[id]/[status]/detail.tsx b/app/(application)/(user)/donation/[id]/[status]/detail.tsx
index a67320f..c1fa59b 100644
--- a/app/(application)/(user)/donation/[id]/[status]/detail.tsx
+++ b/app/(application)/(user)/donation/[id]/[status]/detail.tsx
@@ -4,7 +4,7 @@ import {
DotButton,
DrawerCustom,
MenuDrawerDynamicGrid,
- NewWrapper,
+ OS_Wrapper,
Spacing,
} from "@/components";
import AppHeader from "@/components/_ShareComponent/AppHeader";
@@ -113,7 +113,7 @@ export default function DonasiDetailStatus() {
),
}}
/>
-
>
)}
-
+
+
{data?.pembukaan || "-"}
{data?.cerita || "-"}
-
+
);
}
diff --git a/app/(application)/(user)/donation/[id]/edit-rekening.tsx b/app/(application)/(user)/donation/[id]/edit-rekening.tsx
index 7e71a1e..25c2250 100644
--- a/app/(application)/(user)/donation/[id]/edit-rekening.tsx
+++ b/app/(application)/(user)/donation/[id]/edit-rekening.tsx
@@ -1,6 +1,6 @@
/* eslint-disable react-hooks/exhaustive-deps */
import {
- ViewWrapper,
+ OS_Wrapper,
StackCustom,
InformationBox,
TextInputCustom,
@@ -76,7 +76,7 @@ export default function DonationEditRekening() {
};
return (
-
+
-
+
);
}
diff --git a/app/(application)/(user)/donation/[id]/edit-story.tsx b/app/(application)/(user)/donation/[id]/edit-story.tsx
index b0aef59..02af19a 100644
--- a/app/(application)/(user)/donation/[id]/edit-story.tsx
+++ b/app/(application)/(user)/donation/[id]/edit-story.tsx
@@ -4,10 +4,10 @@ import {
ButtonCustom,
InformationBox,
LandscapeFrameUploaded,
+ OS_Wrapper,
Spacing,
StackCustom,
TextAreaCustom,
- ViewWrapper,
} from "@/components";
import API_IMAGE from "@/constants/api-storage";
import DIRECTORY_ID from "@/constants/directory-id";
@@ -93,7 +93,7 @@ export default function DonationEditStory() {
};
return (
-
+
-
+
);
}
diff --git a/app/(application)/(user)/donation/[id]/edit.tsx b/app/(application)/(user)/donation/[id]/edit.tsx
index 1d4d7fa..77bc5e2 100644
--- a/app/(application)/(user)/donation/[id]/edit.tsx
+++ b/app/(application)/(user)/donation/[id]/edit.tsx
@@ -6,12 +6,11 @@ import {
InformationBox,
LandscapeFrameUploaded,
LoaderCustom,
- NewWrapper,
+ OS_Wrapper,
SelectCustom,
Spacing,
StackCustom,
TextInputCustom,
- ViewWrapper,
} from "@/components";
import ListSkeletonComponent from "@/components/_ShareComponent/ListSkeletonComponent";
import API_IMAGE from "@/constants/api-storage";
@@ -184,7 +183,9 @@ export default function DonationEdit() {
};
return (
-
)}
-
+
);
}
diff --git a/app/(application)/(user)/donation/[id]/index.tsx b/app/(application)/(user)/donation/[id]/index.tsx
index 06c0429..85ecaa0 100644
--- a/app/(application)/(user)/donation/[id]/index.tsx
+++ b/app/(application)/(user)/donation/[id]/index.tsx
@@ -6,9 +6,8 @@ import {
DotButton,
DrawerCustom,
MenuDrawerDynamicGrid,
- NewWrapper,
+ OS_Wrapper,
StackCustom,
- ViewWrapper,
} from "@/components";
import AppHeader from "@/components/_ShareComponent/AppHeader";
import { IconNews } from "@/components/_Icon";
@@ -104,7 +103,7 @@ export default function DonasiDetailBeranda() {
),
}}
/>
-
+
{!data ? (
) : (
@@ -127,7 +126,7 @@ export default function DonasiDetailBeranda() {
/>
)}
-
+
-
+
@@ -80,7 +80,7 @@ export default function DonationInformationFunrising() {
))
)}
-
+
>
);
}
diff --git a/app/(application)/(user)/donation/create-story.tsx b/app/(application)/(user)/donation/create-story.tsx
index bd325c3..dc38f1d 100644
--- a/app/(application)/(user)/donation/create-story.tsx
+++ b/app/(application)/(user)/donation/create-story.tsx
@@ -10,7 +10,7 @@ import {
TextAreaCustom,
TextInputCustom,
} from "@/components";
-import NewWrapper from "@/components/_ShareComponent/NewWrapper";
+import OS_Wrapper from "@/components/_ShareComponent/OS_Wrapper";
import DIRECTORY_ID from "@/constants/directory-id";
import { useAuth } from "@/hooks/use-auth";
import {
@@ -113,7 +113,9 @@ export default function DonationCreateStory() {
};
return (
-
@@ -184,6 +186,6 @@ export default function DonationCreateStory() {
/>
-
+
);
}
diff --git a/app/(application)/(user)/donation/create.tsx b/app/(application)/(user)/donation/create.tsx
index 330f751..6157826 100644
--- a/app/(application)/(user)/donation/create.tsx
+++ b/app/(application)/(user)/donation/create.tsx
@@ -5,12 +5,12 @@ import {
InformationBox,
LandscapeFrameUploaded,
LoaderCustom,
+ OS_Wrapper,
SelectCustom,
Spacing,
StackCustom,
TextInputCustom,
} from "@/components";
-import NewWrapper from "@/components/_ShareComponent/NewWrapper";
import DIRECTORY_ID from "@/constants/directory-id";
import { apiDonationCreate } from "@/service/api-client/api-donation";
import { apiMasterDonation } from "@/service/api-client/api-master";
@@ -126,7 +126,9 @@ export default function DonationCreate() {
};
return (
-
@@ -220,6 +222,6 @@ export default function DonationCreate() {
)}
-
+
);
}
diff --git a/app/(application)/(user)/voting/(tabs)/_layout.tsx b/app/(application)/(user)/voting/(tabs)/_layout.tsx
index 7b956b5..8eac092 100644
--- a/app/(application)/(user)/voting/(tabs)/_layout.tsx
+++ b/app/(application)/(user)/voting/(tabs)/_layout.tsx
@@ -6,6 +6,7 @@ import {
} from "@/components/_Icon";
import AppHeader from "@/components/_ShareComponent/AppHeader";
import BackButtonFromNotification from "@/components/Button/BackButtonFromNotification";
+import { OS_ANDROID_HEIGHT, OS_IOS_HEIGHT } from "@/constants/constans-value";
import { TabsStyles } from "@/styles/tabs-styles";
import { router, Tabs, useLocalSearchParams } from "expo-router";
import { View } from "react-native";
@@ -30,12 +31,12 @@ function VotingTabsWrapper() {
ios: {
borderTopWidth: 0,
paddingTop: 12,
- height: 80,
+ height: OS_IOS_HEIGHT,
},
android: {
borderTopWidth: 0,
paddingTop: 5,
- height: 70 + paddingBottom,
+ height: OS_ANDROID_HEIGHT + paddingBottom,
},
}),
header: () => (
diff --git a/ios/HIPMIBadungConnect.xcodeproj/project.pbxproj b/ios/HIPMIBadungConnect.xcodeproj/project.pbxproj
index a315e55..baa851f 100644
--- a/ios/HIPMIBadungConnect.xcodeproj/project.pbxproj
+++ b/ios/HIPMIBadungConnect.xcodeproj/project.pbxproj
@@ -156,6 +156,7 @@
92A25C61F4E34FB6A36E415B /* Remove signature files (Xcode workaround) */,
B122FE573BBA4E8C86B8F1C3 /* Remove signature files (Xcode workaround) */,
ADB72F0A1419463BA2155F49 /* Remove signature files (Xcode workaround) */,
+ 21D46E3C915645A094ACF413 /* Remove signature files (Xcode workaround) */,
);
buildRules = (
);
@@ -489,6 +490,23 @@
shellPath = /bin/sh;
shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-HIPMIBadungConnect/expo-configure-project.sh\"\n";
};
+ 21D46E3C915645A094ACF413 /* Remove signature files (Xcode workaround) */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ name = "Remove signature files (Xcode workaround)";
+ inputPaths = (
+ );
+ outputPaths = (
+ );
+ shellPath = /bin/sh;
+ shellScript = "
+ echo \"Remove signature files (Xcode workaround)\";
+ rm -rf \"$CONFIGURATION_BUILD_DIR/MapLibre.xcframework-ios.signature\";
+ ";
+ };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -531,7 +549,7 @@
);
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
PRODUCT_BUNDLE_IDENTIFIER = "com.anonymous.hipmi-mobile";
- PRODUCT_NAME = HIPMIBadungConnect;
+ PRODUCT_NAME = "HIPMIBadungConnect";
SWIFT_OBJC_BRIDGING_HEADER = "HIPMIBadungConnect/HIPMIBadungConnect-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
@@ -562,7 +580,7 @@
);
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
PRODUCT_BUNDLE_IDENTIFIER = "com.anonymous.hipmi-mobile";
- PRODUCT_NAME = HIPMIBadungConnect;
+ PRODUCT_NAME = "HIPMIBadungConnect";
SWIFT_OBJC_BRIDGING_HEADER = "HIPMIBadungConnect/HIPMIBadungConnect-Bridging-Header.h";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
diff --git a/screens/Donation/ScreenBeranda.tsx b/screens/Donation/ScreenBeranda.tsx
index 95b8842..8ca2892 100644
--- a/screens/Donation/ScreenBeranda.tsx
+++ b/screens/Donation/ScreenBeranda.tsx
@@ -1,7 +1,7 @@
import FloatingButton from "@/components/Button/FloatingButton";
-import NewWrapper from "@/components/_ShareComponent/NewWrapper";
+import { OS_Wrapper } from "@/components";
import { MainColor } from "@/constants/color-palet";
-import { PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value";
+import { PADDING_INLINE, PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value";
import { createPaginationComponents } from "@/helpers/paginationHelpers";
import { usePagination } from "@/hooks/use-pagination";
import Donation_BoxPublish from "@/screens/Donation/BoxPublish";
@@ -37,7 +37,8 @@ export default function Donation_ScreenBeranda() {
});
return (
- (
diff --git a/screens/Donation/ScreenFundDisbursement.tsx b/screens/Donation/ScreenFundDisbursement.tsx
index 3a3d358..22c6648 100644
--- a/screens/Donation/ScreenFundDisbursement.tsx
+++ b/screens/Donation/ScreenFundDisbursement.tsx
@@ -4,11 +4,13 @@ import {
BaseBox,
Grid,
InformationBox,
+ OS_Wrapper,
Spacing,
StackCustom,
TextCustom,
} from "@/components";
import { MainColor } from "@/constants/color-palet";
+import { PADDING_INLINE } from "@/constants/constans-value";
import { usePagination } from "@/hooks/use-pagination";
import {
apiDonationDisbursementOfFundsListById,
@@ -23,7 +25,6 @@ import React, { useState } from "react";
import { RefreshControl, View } from "react-native";
import { createPaginationComponents } from "@/helpers/paginationHelpers";
import { PAGINATION_DEFAULT_TAKE } from "@/constants/constans-value";
-import NewWrapper from "@/components/_ShareComponent/NewWrapper";
import { Divider } from "react-native-paper";
interface Donation_ScreenFundDisbursementProps {
@@ -155,7 +156,8 @@ export default function Donation_ScreenFundDisbursement({
);
return (
-
-
-
**Created**: 2026-04-06
**Last Updated**: 2026-04-13
-**Status**: User Phase 1-7 Complete ✅ | Admin Phase 9 Complete ✅ (71 files migrated)
-**Next**: User Phase 8 - Donation Screens OR Admin Phase 1-3 (HIGH Priority)
+**Status**: User Phase 1-8 Complete ✅ | Admin Phase 9 Complete ✅ (104 files migrated)
+**Next**: User Phase 9-11 (~6 files) OR Admin Phase 1-3 (HIGH Priority, ~9 files)