diff --git a/assets/images/acc-icon1.png b/assets/images/acc-icon1.png new file mode 100644 index 0000000..61764bf Binary files /dev/null and b/assets/images/acc-icon1.png differ diff --git a/assets/images/acc-icon2.png b/assets/images/acc-icon2.png new file mode 100644 index 0000000..76eb964 Binary files /dev/null and b/assets/images/acc-icon2.png differ diff --git a/assets/images/acc-icon3.png b/assets/images/acc-icon3.png new file mode 100644 index 0000000..ccfb3d1 Binary files /dev/null and b/assets/images/acc-icon3.png differ diff --git a/assets/images/acc-icon4.png b/assets/images/acc-icon4.png new file mode 100644 index 0000000..23d959c Binary files /dev/null and b/assets/images/acc-icon4.png differ diff --git a/assets/images/acc-icon5.png b/assets/images/acc-icon5.png new file mode 100644 index 0000000..7d386bf Binary files /dev/null and b/assets/images/acc-icon5.png differ diff --git a/assets/images/acc-icon6.png b/assets/images/acc-icon6.png new file mode 100644 index 0000000..c71cf9f Binary files /dev/null and b/assets/images/acc-icon6.png differ diff --git a/assets/images/acc-icon7.png b/assets/images/acc-icon7.png new file mode 100644 index 0000000..ba40412 Binary files /dev/null and b/assets/images/acc-icon7.png differ diff --git a/assets/images/acc-icon8.png b/assets/images/acc-icon8.png new file mode 100644 index 0000000..0cbae82 Binary files /dev/null and b/assets/images/acc-icon8.png differ diff --git a/assets/images/bg-account.png b/assets/images/bg-account.png new file mode 100644 index 0000000..a094670 Binary files /dev/null and b/assets/images/bg-account.png differ diff --git a/assets/images/bg-coin.png b/assets/images/bg-coin.png new file mode 100644 index 0000000..3ad35f4 Binary files /dev/null and b/assets/images/bg-coin.png differ diff --git a/assets/images/check.png b/assets/images/check.png deleted file mode 100644 index 1ef5f92..0000000 Binary files a/assets/images/check.png and /dev/null differ diff --git a/assets/images/check@2x.png b/assets/images/check@2x.png deleted file mode 100644 index af07eb6..0000000 Binary files a/assets/images/check@2x.png and /dev/null differ diff --git a/assets/images/coin.png b/assets/images/coin.png new file mode 100644 index 0000000..29ee5f2 Binary files /dev/null and b/assets/images/coin.png differ diff --git a/assets/images/cus-img-account.png b/assets/images/cus-img-account.png new file mode 100644 index 0000000..922a046 Binary files /dev/null and b/assets/images/cus-img-account.png differ diff --git a/assets/images/facebook.png b/assets/images/facebook.png new file mode 100644 index 0000000..614128c Binary files /dev/null and b/assets/images/facebook.png differ diff --git a/assets/images/naga-xu.png b/assets/images/naga-xu.png new file mode 100644 index 0000000..9260108 Binary files /dev/null and b/assets/images/naga-xu.png differ diff --git a/assets/images/payinstall-bank.png b/assets/images/payinstall-bank.png new file mode 100644 index 0000000..dc4f6ce Binary files /dev/null and b/assets/images/payinstall-bank.png differ diff --git a/assets/images/zalo-login.png b/assets/images/zalo-login.png new file mode 100644 index 0000000..5d880e4 Binary files /dev/null and b/assets/images/zalo-login.png differ diff --git a/components/header/HeaderAllPage.tsx b/components/header/HeaderAllPage.tsx index 896bff7..5195d5e 100644 --- a/components/header/HeaderAllPage.tsx +++ b/components/header/HeaderAllPage.tsx @@ -110,8 +110,26 @@ const HeaderAllOtherPage = (props : {headerTitle: string}) => { ) } +const HeaderLogin = (props : {headerTitle: string}) => { + const {headerTitle} = props + const navigation = useNavigation(); + return ( + + navigation.goBack()} style={styles.boxHeaderProductDetailGoBack}> + + + {headerTitle} + + + Trợ giúp + + + + ) +} -export { HeaderHome, HeaderCategory, HeaderProductDetail, HeaderAllOtherPage }; + +export { HeaderHome, HeaderCategory, HeaderProductDetail, HeaderAllOtherPage, HeaderLogin }; const styles = StyleSheet.create({ container: { @@ -318,4 +336,8 @@ const styles = StyleSheet.create({ fontWeight: 'bold', fontSize: 16, }, + headerLoginSp: { + fontWeight: '300', + color: '#777' + }, }) \ No newline at end of file diff --git a/navigation/BottomTabNavigator.tsx b/navigation/BottomTabNavigator.tsx index 994b7ac..1fbd2ea 100644 --- a/navigation/BottomTabNavigator.tsx +++ b/navigation/BottomTabNavigator.tsx @@ -9,6 +9,7 @@ import Colors from '../constants/Colors'; import useColorScheme from '../hooks/useColorScheme'; import HomePage from '../screens/HomePage'; import ProductList from '../screens/ProductList'; +import ProductHotList from '../screens/ProductHotList'; import MenuCategory from '../screens/MenuCategory'; import ProductDetail from '../screens/ProductDetail'; import Cart from '../screens/Cart'; @@ -19,7 +20,20 @@ import ArticleHome from '../screens/ArticleHome'; import ArticleList from '../screens/ArticleList'; import ArticleDetail from '../screens/ArticleDetail'; import AccountHome from '../screens/AccountHome'; -import { HeaderHome, HeaderCategory, HeaderProductDetail, HeaderAllOtherPage } from '../components/header/HeaderAllPage' +import ForgotPassword from '../screens/ForgotPassword'; +import CartStep from '../screens/CartStep'; +import CartPayInstallment from '../screens/CartPayInstallment'; +import AccountIndex from '../screens/AccountIndex'; +import SettingAccount from '../screens/SettingAccount'; +import AccountOrderList from '../screens/AccountOrderList'; +import AccountOrderDetail from '../screens/AccountOrderDetail'; +import AccountProductBought from '../screens/AccountProductBought'; +import AccountProductViewHistory from '../screens/AccountProductViewHistory'; +import AccountProductFavorite from '../screens/AccountProductFavorite'; +import AccountProductSave from '../screens/AccountProductSave'; +import AccountCoin from '../screens/AccountCoin'; +import CustomerInfo from '../screens/CustomerInfo'; +import { HeaderHome, HeaderCategory, HeaderProductDetail, HeaderAllOtherPage, HeaderLogin } from '../components/header/HeaderAllPage' const BottomTab = createBottomTabNavigator(); @@ -59,7 +73,7 @@ export default function BottomTabNavigator() { /> , }} @@ -174,10 +188,58 @@ function CartNavigation() { + + ); +} + +const CartStepStack = createStackNavigator(); + +function CartStepNavigation() { + return ( + + + + ); +} + +const CartPayInstallmentStack = createStackNavigator(); + +function CartPayInstallmentNavigation() { + return ( + + + + ); +} + +const AccountIndexStack = createStackNavigator(); + +function AccountIndexNavigation() { + return ( + + ( - + ), headerStyle: { backgroundColor: '#fff', @@ -185,7 +247,7 @@ function CartNavigation() { } }} /> - + ); } @@ -200,7 +262,7 @@ function LoginNavigation() { options={{ headerTitle: '', headerLeft: () => ( - + ), headerStyle: { backgroundColor: '#fff', @@ -223,7 +285,7 @@ function RegisterNavigation() { options={{ headerTitle: '', headerLeft: () => ( - + ), headerStyle: { backgroundColor: '#fff', @@ -351,6 +413,197 @@ function AccountHomeNavigation() { ); } +const ProductHotListStack = createStackNavigator(); + +function ProductHotListNavigation() { + return ( + + ( + + ), + headerStyle: { + backgroundColor: '#fff', + height: 80, + } + }} + /> + + ); +} + +const ForgotPasswordStack = createStackNavigator(); + +function ForgotPasswordNavigation() { + return ( + + ( + + ), + headerStyle: { + backgroundColor: '#fff', + height: 80, + } + }} + /> + + ); +} + +const SettingAccountStack = createStackNavigator(); + +function SettingAccountNavigation() { + return ( + + + + ); +} + +const AccountOrderListStack = createStackNavigator(); + +function AccountOrderListNavigation() { + return ( + + + + ); +} + +const AccountOrderDetailStack = createStackNavigator(); + +function AccountOrderDetailNavigation() { + return ( + + + + ); +} + +const AccountProductBoughtStack = createStackNavigator(); + +function AccountProductBoughtNavigation() { + return ( + + + + ); +} + +const AccountProductViewHistoryStack = createStackNavigator(); + +function AccountProductViewHistoryNavigation() { + return ( + + + + ); +} + +const AccountProductFavoriteStack = createStackNavigator(); + +function AccountProductFavoriteNavigation() { + return ( + + + + ); +} + +const AccountProductSaveStack = createStackNavigator(); + +function AccountProductSaveNavigation() { + return ( + + + + ); +} + +const AccountCoinStack = createStackNavigator(); + +function AccountCoinNavigation() { + return ( + + + + ); +} + +const CustomerInfoStack = createStackNavigator(); + +function CustomerInfoNavigation() { + return ( + + + + ); +} + + const AllStack = createStackNavigator(); function AllStackNavigation() { @@ -381,6 +634,16 @@ function AllStackNavigation() { component={CartNavigation} options={{ headerShown: false }} /> + + + + + + + + + + + + + ); } diff --git a/package-lock.json b/package-lock.json index 0bed90c..79bbad4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,8 +21,10 @@ "expo-status-bar": "~1.0.3", "expo-web-browser": "~8.6.0", "react": "16.13.1", + "react-bootstrap-icons": "^1.4.0", "react-dom": "16.13.1", "react-native": "https://github.com/expo/react-native/archive/sdk-40.0.1.tar.gz", + "react-native-bootstrap-icons": "^1.0.0-rc.1", "react-native-gesture-handler": "~1.8.0", "react-native-paper": "^4.7.2", "react-native-safe-area-context": "3.1.9", @@ -4840,6 +4842,12 @@ "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=" }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "peer": true + }, "node_modules/bplist-creator": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz", @@ -5621,6 +5629,52 @@ "isobject": "^3.0.1" } }, + "node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "peer": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "peer": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-tree/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "peer": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", @@ -5839,11 +5893,39 @@ "node": ">= 8.3" } }, + "node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "peer": true, + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "peer": true + }, "node_modules/dom-walk": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "peer": true + }, "node_modules/domexception": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", @@ -5853,6 +5935,16 @@ "webidl-conversions": "^4.0.2" } }, + "node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "peer": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -5913,6 +6005,15 @@ "once": "^1.4.0" } }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "peer": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/envinfo": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", @@ -10560,6 +10661,12 @@ "node": ">=0.10" } }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "peer": true + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -12478,6 +12585,15 @@ "node": ">=8" } }, + "node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "peer": true, + "dependencies": { + "boolbase": "~1.0.0" + } + }, "node_modules/nullthrows": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", @@ -13496,6 +13612,17 @@ "node": ">=0.10.0" } }, + "node_modules/react-bootstrap-icons": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-bootstrap-icons/-/react-bootstrap-icons-1.4.0.tgz", + "integrity": "sha512-rxT8IxIU3Cnnj4y+rDJvlj5qITNfQP0jdw0e1gGCuyNDQDxvRvrA6QEFSLmWBgMqC/hig3CnZ+Snx2GwXbPxmQ==", + "dependencies": { + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "^16.8.6 || ^17" + } + }, "node_modules/react-devtools-core": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.10.1.tgz", @@ -13568,6 +13695,15 @@ "react": "16.13.1" } }, + "node_modules/react-native-bootstrap-icons": { + "version": "1.0.0-rc.1", + "resolved": "https://registry.npmjs.org/react-native-bootstrap-icons/-/react-native-bootstrap-icons-1.0.0-rc.1.tgz", + "integrity": "sha512-V+LQbhzEegsrbnsMxLVDmOIyyTbK6iqDHQCypFkx3IUSR74a35n4s51Jam3cQW96PB/Y8BxP0TM1b/jPOY04Iw==", + "peerDependencies": { + "react": "*", + "react-native-svg": "*" + } + }, "node_modules/react-native-gesture-handler": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-1.8.0.tgz", @@ -13620,6 +13756,20 @@ "react-native": "*" } }, + "node_modules/react-native-svg": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-12.1.1.tgz", + "integrity": "sha512-NIAJ8jCnXGCqGWXkkJ1GTzO4a3Md5at5sagYV8Vh4MXYnL4z5Rh428Wahjhh+LIjx40EE5xM5YtwyJBqOIba2Q==", + "peer": true, + "dependencies": { + "css-select": "^2.1.0", + "css-tree": "^1.0.0-alpha.39" + }, + "peerDependencies": { + "react": "*", + "react-native": ">=0.50.0" + } + }, "node_modules/react-native-swiper": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/react-native-swiper/-/react-native-swiper-1.6.0.tgz", @@ -20667,6 +20817,12 @@ "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=" }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "peer": true + }, "bplist-creator": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz", @@ -21298,6 +21454,42 @@ "isobject": "^3.0.1" } }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "peer": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "peer": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "peer": true + } + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "peer": true + }, "cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", @@ -21470,11 +21662,35 @@ "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==", "dev": true }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "peer": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "peer": true + } + } + }, "dom-walk": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "peer": true + }, "domexception": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", @@ -21484,6 +21700,16 @@ "webidl-conversions": "^4.0.2" } }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "peer": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -21540,6 +21766,12 @@ "once": "^1.4.0" } }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "peer": true + }, "envinfo": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", @@ -25132,6 +25364,12 @@ "buffer-alloc": "^1.1.0" } }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "peer": true + }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -26698,6 +26936,15 @@ } } }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "peer": true, + "requires": { + "boolbase": "~1.0.0" + } + }, "nullthrows": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", @@ -27463,6 +27710,14 @@ "prop-types": "^15.6.2" } }, + "react-bootstrap-icons": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/react-bootstrap-icons/-/react-bootstrap-icons-1.4.0.tgz", + "integrity": "sha512-rxT8IxIU3Cnnj4y+rDJvlj5qITNfQP0jdw0e1gGCuyNDQDxvRvrA6QEFSLmWBgMqC/hig3CnZ+Snx2GwXbPxmQ==", + "requires": { + "prop-types": "^15.7.2" + } + }, "react-devtools-core": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.10.1.tgz", @@ -27565,6 +27820,12 @@ } } }, + "react-native-bootstrap-icons": { + "version": "1.0.0-rc.1", + "resolved": "https://registry.npmjs.org/react-native-bootstrap-icons/-/react-native-bootstrap-icons-1.0.0-rc.1.tgz", + "integrity": "sha512-V+LQbhzEegsrbnsMxLVDmOIyyTbK6iqDHQCypFkx3IUSR74a35n4s51Jam3cQW96PB/Y8BxP0TM1b/jPOY04Iw==", + "requires": {} + }, "react-native-gesture-handler": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-1.8.0.tgz", @@ -27604,6 +27865,16 @@ "integrity": "sha512-CagNf2APXkVoRlF3Mugr264FbKbrBg9eXUkqhIPVeZB8EsdS8XPrnt99yj/pzmT+yJMBY0dGrjXT8+68WYh6YQ==", "requires": {} }, + "react-native-svg": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-12.1.1.tgz", + "integrity": "sha512-NIAJ8jCnXGCqGWXkkJ1GTzO4a3Md5at5sagYV8Vh4MXYnL4z5Rh428Wahjhh+LIjx40EE5xM5YtwyJBqOIba2Q==", + "peer": true, + "requires": { + "css-select": "^2.1.0", + "css-tree": "^1.0.0-alpha.39" + } + }, "react-native-swiper": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/react-native-swiper/-/react-native-swiper-1.6.0.tgz", diff --git a/package.json b/package.json index 357a36b..182363b 100644 --- a/package.json +++ b/package.json @@ -28,8 +28,10 @@ "expo-status-bar": "~1.0.3", "expo-web-browser": "~8.6.0", "react": "16.13.1", + "react-bootstrap-icons": "^1.4.0", "react-dom": "16.13.1", "react-native": "https://github.com/expo/react-native/archive/sdk-40.0.1.tar.gz", + "react-native-bootstrap-icons": "^1.0.0-rc.1", "react-native-gesture-handler": "~1.8.0", "react-native-paper": "^4.7.2", "react-native-safe-area-context": "3.1.9", diff --git a/screens/AccountChagePassword.tsx b/screens/AccountChagePassword.tsx new file mode 100644 index 0000000..e69de29 diff --git a/screens/AccountCoin.tsx b/screens/AccountCoin.tsx new file mode 100644 index 0000000..d1b37e3 --- /dev/null +++ b/screens/AccountCoin.tsx @@ -0,0 +1,177 @@ +import 'react-native-gesture-handler'; +import * as React from 'react'; +import { useState } from 'react'; +import { Alert, Button, Image, StyleSheet, Dimensions, SafeAreaView, ScrollView, TouchableOpacity, Modal, Pressable, Share } from 'react-native'; +import Constants from 'expo-constants'; +import { Ionicons, FontAwesome } from '@expo/vector-icons'; +import { LinearGradient } from 'expo-linear-gradient'; +import { useNavigation } from '@react-navigation/native'; +import EditScreenInfo from '../components/EditScreenInfo'; +import { Text, View, } from '../components/Themed'; +import useColorScheme from '../hooks/useColorScheme'; +import { TextInput } from 'react-native-gesture-handler'; +import { RadioButton, Checkbox } from 'react-native-paper'; +import { Picker } from '@react-native-picker/picker'; + +export default function AccountCoin() { + return ( + + + + + + + + ) +} + +function formatCurrency(price: string | number) { + let priceConvert = parseFloat(`${price}`).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1.").toString(); + let len = priceConvert.length; + return priceConvert.substring(0, len - 3); +} + +const HeaderAccountOrderList = () => { + const navigation = useNavigation(); + return ( + + + + navigation.goBack()} style={styles.headerAOLBack}> + + + Naga Xu + + + + + 10 + + Bạn có 10 xu trong tài khoản + + + ) +} + +const NoteCoin = () => { + return( + + Giới thiệu về Naga xu + - Naga Xu là hệ thống tích điểm dành cho Khách hàng của Nagakawa Shop. + - 10 Naga Xu = 1.000 đồng. + - Thời gian sử dụng Naga Xu là 01 năm từ khi bắt đầu đăng ký tài khoản tại website + - Khách hàng nhận Naga Xu khi mua hàng hoặc tương tác comment tại website Nagakawa + + ) +} + +const winWidth = Dimensions.get('window').width; //full width +const winHeight = Dimensions.get('window').height; //full height +const winWidthP10 = winWidth - 20; +const halfWinWidth = winWidth / 2; +const ratio = winWidthP10 / 850; //541 is actual image width + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: '#fff', + }, + headerAOL: { + width: winWidth, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + position: 'absolute', + top: 50, + left: 0, + paddingHorizontal: 10, + backgroundColor: 'rgba(0,0,0,0)' + }, + headerAOLBack: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + headerAOLBackIcon: { + fontSize: 24, + color: '#fff', + }, + headerAOLSearch: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + headerAOLSearchIcon: { + fontSize: 24, + }, + headerAOLTitle: { + width: winWidth - 60, + textAlign: 'center', + fontWeight: '700', + color: '#fff', + }, + GreenColor: { + color: '#008445', + }, + OrangeColor: { + color: '#FE9923', + }, + RedColor: { + color: '#D8262F', + }, + headerCoin: { + width: winWidth, + position: 'relative', + }, + headerCoinBg: { + width: winWidth, + }, + headerCoinCtBot: { + width: winWidth, + paddingHorizontal: 10, + position: 'absolute', + bottom: 20, + left: 0, + backgroundColor: 'rgba(0,0,0,0)' + }, + headerCoinCount: { + width: '100%', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + backgroundColor: 'rgba(0,0,0,0)' + }, + headerCoinCountImg: { + width: 105, + height: 105, + marginRight: 10, + }, + headerCoinCountText: { + fontSize: 50, + fontWeight: '700', + marginLeft: 10, + color: '#fff' + }, + headerCoinText: { + width: '100%', + textAlign: 'center', + color: '#fff' + }, + textBold: { + fontWeight: '700', + color: '#fff', + }, + noteCoin: { + width: winWidth, + padding: 10, + }, + noteCoinText: { + width: '100%', + marginBottom: 6, + fontWeight: '300', + }, +}) \ No newline at end of file diff --git a/screens/AccountHome.tsx b/screens/AccountHome.tsx index 9caebb6..fa99745 100644 --- a/screens/AccountHome.tsx +++ b/screens/AccountHome.tsx @@ -5,7 +5,7 @@ import { Alert, Button, Image, StyleSheet, Dimensions, SafeAreaView, ScrollView, import Constants from 'expo-constants'; import { Ionicons, FontAwesome } from '@expo/vector-icons'; import { LinearGradient } from 'expo-linear-gradient'; - +import { useNavigation } from '@react-navigation/native'; import EditScreenInfo from '../components/EditScreenInfo'; import { Text, View, } from '../components/Themed'; import useColorScheme from '../hooks/useColorScheme'; @@ -17,91 +17,136 @@ export default function AccountHome() { return ( - - Trang chủ - - Tài khoản của bạn - + + + - - - - - - - Tài khoản - Hurasoft test - - - - - - - Bạn đang ở trang tài khoản. Vui lòng chọn XEM THÔNG TIN để xem các mục. - - - - - - - - - - - - - - - - - - ) } -const MenuAccount = () => { - const [showMenuAccount, setShowMenuAccount] = useState(true) +const HeaderAccountHome = () => { + const navigation = useNavigation(); return ( - - setShowMenuAccount(!showMenuAccount)}> - Xem thông tin - - - - - - Thông tin tài khoản - - - - Quản lý đơn hàng - - - - Sản phẩm đã xem - - - - Sản phẩm đã lưu - - - - Sản phẩm bạn đã đánh giá - - - - Sản phẩm bạn đã thích - - - - Thay đổi mật khẩu - - - - Logout - + + + + + + + Nguyễn Quỳnh + Xu 10 + + + + navigation.navigate('SettingAccount')} style={styles.headerAccountHomeCtSetting}> + + + + + + ) +} + +const ListContentAccount = () => { + const navigation = useNavigation(); + return ( + + + + navigation.navigate('AccountOrderList')} style={styles.boxListItemAccBt}> + + + Đơn hàng của tôi + + + Xem tất cả + + + + + + navigation.navigate('AccountProductBought')} style={styles.boxListItemAccBt}> + + + Sản phẩm bạn đã mua + + + + + + + + + + navigation.navigate('AccountProductViewHistory')} style={styles.boxListItemAccBt}> + + + Sản phẩm bạn đã xem + + + + + + + + navigation.navigate('AccountProductFavorite')} style={styles.boxListItemAccBt}> + + + Sản phẩm yêu thích + + + + + + + + navigation.navigate('AccountProductSave')} style={styles.boxListItemAccBt}> + + + Sản phẩm mua sau + + + + + + + + navigation.navigate('AccountCoin')} style={styles.boxListItemAccBt}> + + + Quản lý Xu của tôi + + + + + + + + + + navigation.navigate('CustomerInfo')} style={styles.boxListItemAccBt}> + + + Tài khoản + + + + + + + + + + + Trung tậm trợ giúp + + + + + + ) @@ -214,109 +259,6 @@ function formatCurrency(price: string | number) { return priceConvert.substring(0, len - 3); } -const ShowProductItemSave = (props: { id: number, productName: string, productSKU: string, summary: string, productImage: { small: string, medium: string, large: string, original: string }, price: number, marketPrice: number, quantity: number, privateStyle: object }) => { - - const { id, productName, productSKU, summary, productImage, price, marketPrice, quantity, privateStyle } = props; - const discount = Math.ceil(100 - (price / marketPrice * 100)); - - - return ( - - - - - - {productSKU} - -{discount}% - - - - - - {productName} - - {summary} - {formatCurrency(price)} đ - {formatCurrency(marketPrice)} đ - - ); -} - -const productData = [ - { - id: 1, - productName: 'Máy làm mát Nagakawa NFC452 (110W) - Hàng chính hãng', - productSKU: 'TESTSKU', - productImage: { - small: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', - medium: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', - large: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', - original: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', - }, - price: 30000000, - marketPrice: 50000000, - quantity: 1, - summary: 'CPU: Intel Core i5 1035G1\nRAM: 8GB\nỔ cứng: 256GB SSD\nMàn hình: 15.6 inch FHD\nHĐH: Win 10\nMàu: Đen' - }, - { - id: 2, - productName: 'Máy làm mát Nagakawa NFC452 (110W) - Hàng chính hãng', - productSKU: 'TESTSKU', - productImage: { - small: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', - medium: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', - large: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', - original: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', - }, - price: 25000000, - marketPrice: 50000000, - quantity: 0, - summary: 'CPU: Intel Core i5 1035G1\nRAM: 8GB\nỔ cứng: 256GB SSD\nMàn hình: 15.6 inch FHD\nHĐH: Win 10\nMàu: Đen' - }, -] - -const ProductSave = () => { - const itemProductStyle = { - width: '100%', - borderBottomWidth: 1, - borderBottomColor: '#e8e8e8', - position: 'relative', - } - return ( - - Sản phẩm mua sau - - { - productData.map(item => ) - } - - - ) -} - -const ProductFavorite = () => { - const itemProductStyle = { - width: '100%', - borderBottomWidth: 1, - borderBottomColor: '#e8e8e8', - position: 'relative', - } - return ( - - Sản phẩm Bạn đã thích - - { - productData.map(item => ) - } - - - ) -} - const ChangePassword = () => { return ( @@ -350,154 +292,6 @@ const ChangePassword = () => { ) } -const ListOrder = () => { - return ( - - Danh Sách đơn hàng - - - Số đơn hàng - Giá trị - Thời gian - Thông tin - - - - #123456 - - Xem chi tiết - - - 100.000.000 đ - 13-03-2021 - Đã hoàn thành - - - - #123457 - - Xem chi tiết - - - 100.000.000 đ - 13-03-2021 - Hủy bỏ - - - - ) -} - -const OrderDetail = () => { - return ( - - Đơn hàng số #123456 - Thời gian đặt mua: 13-3-2021, 5:00 pm - - Thông tin người mua - - Họ và tên: - Hurasoft Test - - - Email: - test@mail.com - - - Số điện thoại: - 0912345678 - - - Địa chỉ: - 30 Nguyên Hồng - Láng Hạ - Đống Đa - HN - - - - - - - STT - - - 1 - - - - - Ảnh - - - - - - - - - - Tên Sản phẩm - - - - Bàn Game K-Deck ( Khung Kim Loại , Mặt Gỗ Tự Nhiên Phủ PU Bóng ) - - - - - - Giá bán - - - 30.000.000 đ - - - - - Số lượng - - - 1 - - - - - Tổng - - - 30.000.000 đ - - - - - - - Giá trị - - - 30.000.000 đ - - - - - Phí vận chuyển - - - 30.000 đ - - - - - Tổng giá trị đơn hàng - - - 30.030.000 đ - - - - - - ) -} - const winWidth = Dimensions.get('window').width; //full width const winHeight = Dimensions.get('window').height; //full height const winWidthP10 = winWidth - 20; @@ -511,30 +305,110 @@ const styles = StyleSheet.create({ justifyContent: 'center', backgroundColor: '#fff', }, - brecrumb: { - display: 'flex', + headerAccountHome: { width: winWidth, - paddingLeft: 10, - paddingRight: 10, + position: 'relative', + }, + headerAccountHomeImg: { + width: '100%', + height: 122, + }, + headerAccountHomeCt: { + width: '100%', + position: 'absolute', + left: 0, + bottom: 18, + flexDirection: 'row', + justifyContent: 'space-between', + backgroundColor: 'rgba(0,0,0,0)', + paddingHorizontal: 10, + }, + headerAccountHomeCtLeft: { flexDirection: 'row', - height: 18, alignItems: 'center', - marginTop: 10, + backgroundColor: 'rgba(0,0,0,0)', + }, + headerAccountHomeCtCusImg: { + width: 56, + height: 56, + marginRight: 10, + borderRadius: 28, + overflow: 'hidden' + }, + headerAccountHomeCtCusInfo: { + backgroundColor: 'rgba(0,0,0,0)', + }, + headerAccountHomeCtCusName: { + fontSize: 16, + fontWeight: '700', + color: '#fff', + marginBottom: 5, + }, + headerAccountHomeCtCusXu: { + fontSize: 13, + fontWeight: '300', + color: '#fff' + }, + headerAccountHomeCtRight: { + backgroundColor: 'rgba(0,0,0,0)', + }, + headerAccountHomeCtSetting: { + width: 30, + height: 30, + borderRadius: 15, + backgroundColor: '#fff', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + }, + headerAccountHomeCtSettingIcon: { + fontSize: 18, + }, + boxListItemAcc: { + width: winWidth, + backgroundColor: '#f2f2f2', + }, + boxListItemAccList: { + width: '100%', + backgroundColor: '#fff', marginBottom: 10, }, - brecrumbText: { - fontSize: 13, - color: '#222', + borderBot: { + borderBottomColor: '#e1e1e1', + borderBottomWidth: 1, }, - brecrumbTextLast: { - fontSize: 13, - color: '#b7b7b7', + boxListItemAccItem: { + width: '100%', + paddingHorizontal: 10, }, - brecrumbIcon: { - fontSize: 13, - color: '#222', - marginLeft: 6, - marginRight: 6 + boxListItemAccBt: { + width: '100%', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + height: 48, + }, + boxListItemAccItemLeft: { + flexDirection: 'row', + alignItems: 'center', + }, + boxListItemAccItemImg: { + width: 20, + marginRight: 10, + }, + boxListItemAccItemLeftText: { + fontWeight: '500', + }, + boxListItemAccItemRight: { + flexDirection: 'row', + alignItems: 'center', + }, + boxListItemAccItemRightText: { + marginRight: 10, + }, + boxListItemAccItemIcon: { + fontSize: 24, + color: '#777' }, accountBox: { marginBottom: 20, @@ -574,47 +448,6 @@ const styles = StyleSheet.create({ textTransform: 'uppercase', fontWeight: 'bold' }, - accountBoxSelec: { - marginBottom: 20, - }, - accountBoxSelecBox: { - borderRadius: 3, - borderWidth: 1, - borderColor: '#999', - paddingHorizontal: 10, - height: 40, - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', - }, - accountBoxSelecBoxText: { - textTransform: 'uppercase', - fontWeight: 'bold', - }, - accountBoxSelecBoxIcon: {}, - accountBoxSelecList: { - width: '100%', - borderRadius: 3, - borderWidth: 1, - borderColor: '#999', - display: 'none', - }, - active: { - display: 'flex', - }, - accountNameTab: { - padding: 10, - flexDirection: 'row', - alignItems: 'center', - }, - accountNameTabIcon: { - fontSize: 24, - color: '#7b7b7b', - marginRight: 8, - }, - accountNameTabText: {}, - accountBoxContent: {}, - accountBoxTextHome: {}, custommerInfo: { }, custommerInfoItemHeader: { @@ -700,287 +533,4 @@ const styles = StyleSheet.create({ boxCustommerInfoChangeSubmitText: { color: '#fff' }, - boxProductSave: {}, - boxProductSaveTitle: { - fontSize: 16, - fontWeight: 'bold', - marginBottom: 15, - }, - listProductSave: {}, - ListOrder: {}, - ListOrderList: { - width: '100%', - borderColor: '#e1e1e1', - borderWidth: 1, - borderRadius: 5, - padding: 5 - }, - ListOrderListHeader: { - flexDirection: 'row', - alignItems: 'center', - borderBottomColor: '#e1e1e1', - borderBottomWidth: 1, - height: 40, - }, - ListOrderListHeaderSt: { - fontWeight: 'bold', - width: winWidthP10 - 260, - fontSize: 12, - }, - ListOrderListHeaderNd: { - fontWeight: 'bold', - width: 90, - fontSize: 12, - }, - ListOrderListHeaderRd: { - fontWeight: 'bold', - width: 75, - fontSize: 12, - }, - ListOrderListHeaderInfo: { - fontWeight: 'bold', - width: 90, - fontSize: 12, - }, - ListOrderItem: { - flexDirection: 'row', - alignItems: 'center', - borderBottomColor: '#e1e1e1', - borderBottomWidth: 1, - paddingVertical: 10, - }, - ListOrderItemLast: { - borderBottomWidth: 0, - }, - ListOrderItemSt: { - width: winWidthP10 - 260, - flexDirection: 'row', - flexWrap: 'wrap', - alignItems: 'center', - }, - ListOrderItemStText: { - fontSize: 12, - marginRight: 6, - }, - ListOrderItemStButton: {}, - ListOrderItemStButtonText: { - fontSize: 12, - color: '#f78d1c' - }, - ListOrderItemNd: { - width: 90, - fontSize: 12, - }, - ListOrderItemRd: { - width: 75, - fontSize: 12, - }, - ListOrderItemInfo: { - width: 90, - fontSize: 12, - }, - boxOrderDetail: {}, - boxOrderDetailNum: { - width: '100%', - marginBottom: 15, - fontSize: 21, - fontWeight: 'bold', - textAlign: 'center' - }, - boxOrderDetailTime: { - marginBottom: 15, - }, - boxOrderDetailInfo: { - borderWidth: 1, - borderRadius: 5, - borderColor: '#e1e1e1', - marginBottom: 20, - padding: 8, - }, - boxOrderDetailInfoTitle: { - fontWeight: 'bold', - color: '#f60', - marginBottom: 10, - }, - boxOrderDetailInfoItem: { - flexDirection: 'row', - alignItems: 'center', - marginBottom: 10, - }, - boxOrderDetailInfoItemTextSt: { - width: 100, - }, - boxOrderDetailInfoItemTextNd: { - width: winWidthP10 - 120, - }, - boxOrderDetailList: { - borderWidth: 1, - borderRadius: 5, - borderColor: '#e1e1e1', - width: '100%', - flexDirection: 'column', - }, - bold: { - fontWeight: 'bold', - }, - boxOrderDetailListItem: { - width: '100%', - flexDirection: 'column', - }, - boxOrderDetailListItemLine: { - flexDirection: 'row', - borderBottomWidth: 1, - borderBottomColor: '#e1e1e1', - width: '100%', - }, - boxOrderDetailListItemLineTotal: { - width: '100%', - flexDirection: 'row', - borderBottomWidth: 1, - borderBottomColor: '#e1e1e1', - alignItems: 'center', - }, - boxOrderDetailListItemLeft: { - width: 100, - padding: 10, - }, - boxOrderDetailListItemText: {}, - boxOrderDetailListItemRight: { - width: winWidthP10 - 120, - borderLeftColor: '#e1e1e1', - borderLeftWidth: 1, - padding: 10, - }, - boxOrderDetailListItemImage: { - width: 75, - height: 75, - position: 'relative', - }, - boxOrderDetailListItemImageCt: { - width: '100%', - position: 'absolute', - left: 0, - right: 0, - top: 0, - bottom: 0, - }, - boxOrderTotalItemLeft: { - width: '50%', - flexDirection: 'row', - justifyContent: 'flex-end', - padding: 10, - }, - boxOrderTotalItemRight: { - width: '50%', - flexDirection: 'row', - justifyContent: 'flex-start', - borderLeftColor: '#e1e1e1', - borderLeftWidth: 1, - padding: 10, - }, - boxOrderDetailTotal: { - width: '100%', - flexDirection: 'column', - }, - itemProduct: { - padding: 10, - }, - pBloxImgProduct: { - position: 'relative', - marginBottom: 10, - }, - pSkuProduct: { - position: 'absolute', - fontSize: 12, - color: '#e00', - top: 0, - left: 0, - lineHeight: 36, - zIndex: 10, - }, - pDiscountProduct: { - width: 36, - height: 36, - backgroundColor: '#e00', - position: 'absolute', - top: 0, - right: 0, - color: '#fff', - textAlign: 'center', - lineHeight: 36, - borderRadius: 18, - overflow: 'hidden', - fontSize: 12, - zIndex: 10, - }, - pBloxImgProductBao: { - position: 'relative', - paddingTop: '100%', - overflow: 'hidden', - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - flexDirection: 'row', - }, - pImgProduct: { - position: 'absolute', - top: 0, - left: '5%', - right: 0, - bottom: 0, - maxHeight: 500, - width: '90%', - }, - pNameProduct: { - height: 40, - lineHeight: 20, - overflow: 'hidden', - fontSize: 14, - color: '#111', - marginBottom: 5, - }, - priceProduct: { - fontSize: 16, - fontWeight: 'bold', - color: '#f10000', - marginBottom: 5, - }, - oldPriceProduct: { - fontSize: 14, - color: '#b7b7b7', - marginBottom: 5, - height: 24, - lineHeight: 24, - overflow: 'hidden', - textDecorationLine: 'line-through', - }, - pBottonProduct: { - display: 'flex', - justifyContent: 'space-between', - alignItems: 'center', - flexDirection: 'row', - marginTop: 5, - }, - pStatusProduct: { - fontSize: 13, - color: '#00a706', - }, - pCartProduct: { - fontSize: 13, - color: '#333', - }, - pStatusProductIcon: { - fontSize: 15, - }, - pCartProductIcon: { - fontSize: 15 - }, - pProductDelete: {}, - pProductDeleteIcon: { - fontSize: 18, - }, - pSummaryProduct: { - marginBottom: 10, - lineHeight: 20, - }, }) \ No newline at end of file diff --git a/screens/AccountIndex.tsx b/screens/AccountIndex.tsx new file mode 100644 index 0000000..2d9e244 --- /dev/null +++ b/screens/AccountIndex.tsx @@ -0,0 +1,259 @@ +import * as React from 'react'; +import { useState } from 'react'; +import { Alert, Button, Image, StyleSheet, Dimensions, SafeAreaView, ScrollView, TouchableOpacity, ImageBackground, Modal, Pressable } from 'react-native'; +import { LinearGradient } from 'expo-linear-gradient'; +import { Ionicons, FontAwesome } from '@expo/vector-icons'; +import EditScreenInfo from '../components/EditScreenInfo'; +import { Text, View } from '../components/Themed'; +import { TextInput } from 'react-native-gesture-handler'; +import { useNavigation } from '@react-navigation/native'; + +export default function AccountIndex() { + const navigation = useNavigation(); + return ( + + + + + + + + ); +} + +const HeaderAccountIndex = () => { + const navigation = useNavigation(); + return ( + + + Chào mừng đến với Nagakawa, Đăng nhập ngay! + + navigation.navigate('Login')} style={styles.headerAccountIndexLogin}> + Đăng nhập + + navigation.navigate('Register')} style={styles.headerAccountIndexRegis}> + Đăng ký + + + + ) +} + +const ListContentAccount = () => { + return ( + + + + + + + Đơn hàng của tôi + + + Xem tất cả + + + + + + + + + Sản phẩm bạn đã mua + + + + + + + + + + + + + Sản phẩm bạn đã xem + + + Xem tất cả + + + + + + + + + Sản phẩm yêu thích + + + + + + + + + + + Sản phẩm mua sau + + + + + + + + + + + Quản lý Xu của tôi + + + + + + + + + + + + + Tài khoản + + + + + + + + + + + Trung tậm trợ giúp + + + + + + + + + ) +} + +const winWidth = Dimensions.get('window').width; //full width +const winHeight = Dimensions.get('window').height; //full height + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + }, + headerAccountIndex: { + width: winWidth, + position: 'relative', + }, + headerAccountIndexImg: { + width: '100%', + height: 122, + }, + headerAccountIndexTitle: { + width: '100%', + textAlign: 'center', + fontSize: 12, + color: '#fff', + position: 'absolute', + top: 45, + left: 0, + }, + headerAccountIndexBt: { + width: '100%', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + position: 'absolute', + left: 0, + bottom: 16, + backgroundColor: 'rgba(0,0,0,0)', + }, + headerAccountIndexLogin: { + width: 84, + height: 32, + backgroundColor: '#fff', + borderColor: '#fff', + borderWidth: 1, + borderRadius: 3, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + marginRight: 5, + }, + headerAccountIndexLoginText: { + fontWeight: '700', + color: '#D8262F' + }, + headerAccountIndexRegis: { + width: 84, + height: 32, + backgroundColor: 'rgba(0,0,0,0)', + borderColor: '#fff', + borderWidth: 1, + borderRadius: 3, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + marginLeft: 5, + }, + headerAccountIndexRegisText: { + fontWeight: '700', + color: '#fff' + }, + boxListItemAcc: { + width: winWidth, + backgroundColor: '#f2f2f2', + }, + boxListItemAccList: { + width: '100%', + backgroundColor: '#fff', + marginBottom: 10, + }, + borderBot: { + borderBottomColor: '#e1e1e1', + borderBottomWidth: 1, + }, + boxListItemAccItem: { + width: '100%', + paddingHorizontal: 10, + }, + boxListItemAccBt: { + width: '100%', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + height: 48, + }, + boxListItemAccItemLeft: { + flexDirection: 'row', + alignItems: 'center', + }, + boxListItemAccItemImg: { + width: 20, + marginRight: 10, + }, + boxListItemAccItemLeftText: { + fontWeight: '500', + }, + boxListItemAccItemRight: { + flexDirection: 'row', + alignItems: 'center', + }, + boxListItemAccItemRightText: { + marginRight: 10, + }, + boxListItemAccItemIcon: { + fontSize: 24, + color: '#777' + }, +}); diff --git a/screens/AccountOrderDetail.tsx b/screens/AccountOrderDetail.tsx new file mode 100644 index 0000000..e28ad35 --- /dev/null +++ b/screens/AccountOrderDetail.tsx @@ -0,0 +1,316 @@ +import 'react-native-gesture-handler'; +import * as React from 'react'; +import { useState } from 'react'; +import { Alert, Button, Image, StyleSheet, Dimensions, SafeAreaView, ScrollView, TouchableOpacity, Modal, Pressable, Share } from 'react-native'; +import Constants from 'expo-constants'; +import { Ionicons, FontAwesome } from '@expo/vector-icons'; +import { LinearGradient } from 'expo-linear-gradient'; +import { useNavigation } from '@react-navigation/native'; +import EditScreenInfo from '../components/EditScreenInfo'; +import { Text, View, } from '../components/Themed'; +import useColorScheme from '../hooks/useColorScheme'; +import { TextInput } from 'react-native-gesture-handler'; +import { RadioButton, Checkbox } from 'react-native-paper'; +import { Picker } from '@react-native-picker/picker'; + +export default function AccountOrderDetail() { + return ( + + + + + + + + + + + ) +} + +function formatCurrency(price: string | number) { + let priceConvert = parseFloat(`${price}`).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1.").toString(); + let len = priceConvert.length; + return priceConvert.substring(0, len - 3); +} + +const HeaderAccountOrderList = () => { + const navigation = useNavigation(); + return ( + + navigation.goBack()} style={styles.headerAOLBack}> + + + Đơn hàng 88899999 + + + + + ) +} + +const AccountOrderDetailContent = () => { + return ( + + + Thời gian đặt mua: + 06-05-2021, 4:01 pm + + + Tình trạng: + Giao hàng thành công + + + + 1 + Thông tin khách hàng + + + + Họ tên: + Nguyễn Quỳnh + + + Email: + Quynhqt@gmail.com + + + Số điện thoại: + 0932108199 + + + Địa chỉ: + 100 Láng Hạ + + + + + + 1 + Thông tin đơn hàng + + + + + + ĐIỀU HÒA 1 CHIỀU 9000 BTU/H NAGAKAWA NS-C09R1M05 - MADE IN MALAYSIA - BẢO HÀNH 2 NĂM() + 15.000.000đ + Số lượng: 1 + + + + + + ) +} + +const AccountOrderDetailBottom = () => { + return ( + + + Giá trị + 10.500.000đ + + + Phí vận chuyển + + + + Tổng giá trị đơn hàng + 10.500.000đ + + + Đặt lại + + + ) +} + +const winWidth = Dimensions.get('window').width; //full width +const winHeight = Dimensions.get('window').height; //full height +const winWidthP10 = winWidth - 20; +const halfWinWidth = winWidth / 2; +const ratio = winWidthP10 / 850; //541 is actual image width + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: '#fff', + }, + headerAOL: { + width: winWidth, + padding: 10, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + headerAOLBack: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + headerAOLBackIcon: { + fontSize: 24, + }, + headerAOLSearch: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + headerAOLSearchIcon: { + fontSize: 24, + }, + headerAOLTitle: { + width: winWidth - 100, + textAlign: 'center', + fontWeight: '700', + }, + headerAOLChat: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'flex-end', + }, + headerAOLChatIcon: { + fontSize: 24, + }, + GreenColor: { + color: '#008445', + }, + OrangeColor: { + color: '#FE9923', + }, + RedColor: { + color: '#D8262F', + }, + boxAccOrDt: { + width: winWidth, + padding: 10, + }, + boxAccOrDtCtTop: { + flexDirection: 'row', + alignItems: 'center', + flexWrap: 'wrap', + marginBottom: 10, + }, + boxAccOrDtCtTopTextLeft: { + fontWeight: '700', + }, + boxAccOrDtCtTopTextRight: {}, + boxAccOrDtCus: { + marginBottom: 10, + marginTop: 10, + }, + boxAccOrDtTitle: { + flexDirection: 'row', + alignItems: 'center', + paddingBottom: 5, + marginBottom: 10, + borderBottomColor: '#ababab', + borderBottomWidth: 1, + }, + boxAccOrDtTitleNum: { + width: 20, + height: 20, + fontSize: 16, + fontWeight: '700', + color: '#008445', + textAlign: 'center', + lineHeight: 20, + borderColor: '#008445', + borderWidth: 1, + marginRight: 5, + borderRadius: 10, + }, + boxAccOrDtTitleText: { + fontSize: 16, + fontWeight: '700', + color: '#008445', + textTransform: 'uppercase', + }, + boxAccOrDtCusInfo: {}, + boxAccOrDtCusInfoItem: { + flexDirection: 'row', + alignItems: 'center', + marginBottom: 10, + }, + boxAccOrDtCusInfoItemLeft: { + width: 100, + fontWeight: '300', + }, + boxAccOrDtCusInfoItemRight: { + width: winWidth - 120, + fontWeight: '300', + }, + boxAccOrDtList: {}, + boxAccOrDtListItem: { + width: '100%', + marginBottom: 10, + flexDirection: 'row', + }, + boxAccOrDtListItemImg: { + width: 48, + height: 48, + marginRight: 10, + }, + boxAccOrDtListItemInfo: { + width: winWidth - 78, + }, + boxAccOrDtListItemName: { + fontWeight: '700', + fontSize: 16, + marginBottom: 10, + }, + boxAccOrDtListItemPrice: { + fontSize: 18, + fontWeight: '700', + color: '#D8262F', + marginBottom: 10, + }, + boxAccOrDtListItemQuan: {}, + accDtBt: { + width: winWidth, + padding: 10, + shadowColor: "#000", + shadowOffset: { + width: 0, + height: 1, + }, + shadowOpacity: 0.20, + shadowRadius: 1.41, + elevation: 2, + }, + accDtBtItem: { + marginBottom: 5, + flexDirection: 'row', + justifyContent: 'flex-end', + alignItems: 'center', + }, + accDtBtItemTextLeft: { + fontSize: 12, + marginRight: 10, + }, + accDtBtItemTextRight: { + fontWeight: '700', + width: 150, + }, + accDtBtButton: { + width: '100%', + height: 40, + backgroundColor: '#D8262F', + borderRadius: 5, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + }, + accDtBtButtonText: { + textTransform: 'uppercase', + fontWeight: '700', + color: '#fff' + }, +}) \ No newline at end of file diff --git a/screens/AccountOrderList.tsx b/screens/AccountOrderList.tsx new file mode 100644 index 0000000..22a9011 --- /dev/null +++ b/screens/AccountOrderList.tsx @@ -0,0 +1,255 @@ +import 'react-native-gesture-handler'; +import * as React from 'react'; +import { useState } from 'react'; +import { Alert, Button, Image, StyleSheet, Dimensions, SafeAreaView, ScrollView, TouchableOpacity, Modal, Pressable, Share } from 'react-native'; +import Constants from 'expo-constants'; +import { Ionicons, FontAwesome } from '@expo/vector-icons'; +import { LinearGradient } from 'expo-linear-gradient'; +import { useNavigation } from '@react-navigation/native'; +import EditScreenInfo from '../components/EditScreenInfo'; +import { Text, View, } from '../components/Themed'; +import useColorScheme from '../hooks/useColorScheme'; +import { TextInput } from 'react-native-gesture-handler'; +import { RadioButton, Checkbox } from 'react-native-paper'; +import { Picker } from '@react-native-picker/picker'; + +export default function AccountOrderList() { + return ( + + + + + + + + ) +} + +function formatCurrency(price: string | number) { + let priceConvert = parseFloat(`${price}`).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1.").toString(); + let len = priceConvert.length; + return priceConvert.substring(0, len - 3); +} + +const HeaderAccountOrderList = () => { + const navigation = useNavigation(); + return ( + + navigation.goBack()} style={styles.headerAOLBack}> + + + + + + Đơn hàng của tôi + + + + + ) +} + +const ListOrder = () => { + const navigation = useNavigation(); + return ( + + + + + Mã đơn hàng + 09888888 + + + Ngày mua + 15/5/2021 + + + Tổng tiền + 5.000.000đ + + + Trạng thái + Giao hàng thành công + + + Đặt lại + + + navigation.navigate('AccountOrderDetail')} style={styles.ListOrderItemBtDetail}> + + + + + + + Mã đơn hàng + 09888888 + + + Ngày mua + 15/5/2021 + + + Tổng tiền + 5.000.000đ + + + Trạng thái + Giao hàng thành công + + + Đặt lại + + + navigation.navigate('AccountOrderDetail')} style={styles.ListOrderItemBtDetail}> + + + + + + + Mã đơn hàng + 09888888 + + + Ngày mua + 15/5/2021 + + + Tổng tiền + 5.000.000đ + + + Trạng thái + Đã hủy + + + Đặt lại + + + navigation.navigate('AccountOrderDetail')} style={styles.ListOrderItemBtDetail}> + + + + + + ) +} + +const winWidth = Dimensions.get('window').width; //full width +const winHeight = Dimensions.get('window').height; //full height +const winWidthP10 = winWidth - 20; +const halfWinWidth = winWidth / 2; +const ratio = winWidthP10 / 850; //541 is actual image width + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: '#fff', + }, + headerAOL: { + width: winWidth, + padding: 10, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + headerAOLBack: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + headerAOLBackIcon: { + fontSize: 24, + }, + headerAOLSearch: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + headerAOLSearchIcon: { + fontSize: 24, + }, + headerAOLTitle: { + width: winWidth - 140, + textAlign: 'center', + fontWeight: '700', + }, + headerAOLChat: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'flex-end', + }, + headerAOLChatIcon: { + fontSize: 24, + }, + ListOrder: { + width: winWidth, + backgroundColor: '#f2f2f2', + }, + ListOrderItem: { + width: winWidth, + padding: 10, + marginTop: 10, + position: 'relative', + flexDirection: 'row', + alignItems: 'center', + }, + ListOrderItemLine: { + flexDirection: 'row', + alignItems: 'center', + marginBottom: 10, + }, + ListOrderItemTextLeft: { + width: 100, + fontSize: 14, + fontWeight: '300', + color: '#777777', + }, + ListOrderItemLineTextRight: { + width: winWidth - 170, + }, + GreenColor: { + color: '#008445', + }, + OrangeColor: { + color: '#FE9923', + }, + RedColor: { + color: '#D8262F', + }, + ListOrderItemBt: { + width: 104, + height: 40, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + borderColor: '#D8262F', + borderWidth: 1, + borderRadius: 5, + }, + ListOrderItemBtText: { + fontWeight: '700', + textTransform: 'uppercase', + color: '#D8262F', + }, + ListOrderItemLeft: { + width: winWidth - 70, + }, + ListOrderItemBtDetail: { + width: 50, + height: 150, + flexDirection: 'row', + justifyContent: 'flex-end', + alignItems: 'center', + }, + ListOrderItemBtDetailIcon: { + fontSize: 26, + }, +}) \ No newline at end of file diff --git a/screens/AccountProductBought.tsx b/screens/AccountProductBought.tsx new file mode 100644 index 0000000..9090ab7 --- /dev/null +++ b/screens/AccountProductBought.tsx @@ -0,0 +1,257 @@ +import 'react-native-gesture-handler'; +import * as React from 'react'; +import { useState } from 'react'; +import { Alert, Button, Image, StyleSheet, Dimensions, SafeAreaView, ScrollView, TouchableOpacity, Modal, Pressable, Share } from 'react-native'; +import Constants from 'expo-constants'; +import { Ionicons, FontAwesome } from '@expo/vector-icons'; +import { LinearGradient } from 'expo-linear-gradient'; +import { useNavigation } from '@react-navigation/native'; +import EditScreenInfo from '../components/EditScreenInfo'; +import { Text, View, } from '../components/Themed'; +import useColorScheme from '../hooks/useColorScheme'; +import { TextInput } from 'react-native-gesture-handler'; +import { RadioButton, Checkbox } from 'react-native-paper'; +import { Picker } from '@react-native-picker/picker'; + +export default function AccountProductBought() { + return ( + + + + + + + + ) +} + +function formatCurrency(price: string | number) { + let priceConvert = parseFloat(`${price}`).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1.").toString(); + let len = priceConvert.length; + return priceConvert.substring(0, len - 3); +} + +const HeaderAccountOrderList = () => { + const navigation = useNavigation(); + return ( + + navigation.goBack()} style={styles.headerAOLBack}> + + + Sản phẩm bạn đã mua + + ) +} + +const ShowProductItemBought = (props: { id: number, productName: string, productSKU: string, summary: string, productImage: { small: string, medium: string, large: string, original: string }, price: number, marketPrice: number, quantity: number }) => { + + const { id, productName, productSKU, summary, productImage, price, marketPrice, quantity } = props; + const discount = Math.ceil(100 - (price / marketPrice * 100)); + + + return ( + + + + + + + + + + {productName} + + {formatCurrency(price)} đ + + + + Viết nhận xét + + + ); +} + +const productData = [ + { + id: 1, + productName: 'Máy làm mát Nagakawa NFC452 (110W) - Hàng chính hãng', + productSKU: 'TESTSKU', + productImage: { + small: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + medium: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + large: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + original: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + }, + price: 30000000, + marketPrice: 50000000, + quantity: 1, + summary: 'CPU: Intel Core i5 1035G1\nRAM: 8GB\nỔ cứng: 256GB SSD\nMàn hình: 15.6 inch FHD\nHĐH: Win 10\nMàu: Đen' + }, + { + id: 2, + productName: 'Máy làm mát Nagakawa NFC452 (110W) - Hàng chính hãng', + productSKU: 'TESTSKU', + productImage: { + small: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + medium: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + large: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + original: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + }, + price: 25000000, + marketPrice: 50000000, + quantity: 0, + summary: 'CPU: Intel Core i5 1035G1\nRAM: 8GB\nỔ cứng: 256GB SSD\nMàn hình: 15.6 inch FHD\nHĐH: Win 10\nMàu: Đen' + }, +] + +const ProductBought = () => { + return ( + + + { + productData.map(item => ) + } + + + ) +} + + +const winWidth = Dimensions.get('window').width; //full width +const winHeight = Dimensions.get('window').height; //full height +const winWidthP10 = winWidth - 20; +const halfWinWidth = winWidth / 2; +const ratio = winWidthP10 / 850; //541 is actual image width + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: '#fff', + }, + headerAOL: { + width: winWidth, + padding: 10, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + headerAOLBack: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + headerAOLBackIcon: { + fontSize: 24, + }, + headerAOLSearch: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + headerAOLSearchIcon: { + fontSize: 24, + }, + headerAOLTitle: { + width: winWidth - 60, + textAlign: 'center', + fontWeight: '700', + }, + headerAOLChat: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'flex-end', + }, + headerAOLChatIcon: { + fontSize: 24, + }, + GreenColor: { + color: '#008445', + }, + OrangeColor: { + color: '#FE9923', + }, + RedColor: { + color: '#D8262F', + }, + boxAccOrDt: { + width: winWidth, + padding: 10, + }, + boxProductSave: { + backgroundColor: '#f2f2f2' + }, + listProductSave: { + backgroundColor: '#f2f2f2' + }, + itemProduct: { + padding: 10, + marginBottom: 10, + }, + itemProducCt: { + width: '100%', + flexDirection: 'row', + marginBottom: 10, + }, + pBloxImgProduct: { + position: 'relative', + width: 96, + height: 96, + marginRight: 10, + }, + pBloxImgProductBao: { + position: 'relative', + paddingTop: '100%', + overflow: 'hidden', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexDirection: 'row', + }, + pImgProduct: { + position: 'absolute', + top: 0, + left: '5%', + right: 0, + bottom: 0, + maxHeight: 500, + width: '90%', + }, + pBloxImgProductInfo: { + width: winWidth - 136, + }, + pNameProduct: { + fontSize: 16, + color: '#111', + marginBottom: 10, + fontWeight: '700', + textTransform: 'uppercase' + }, + priceProduct: { + fontSize: 18, + fontWeight: 'bold', + color: '#f10000', + marginBottom: 5, + }, + proReview: { + width: '100%', + height: 40, + backgroundColor: '#D8262F', + borderRadius: 5, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + }, + proReviewText: { + textTransform: 'uppercase', + fontWeight: '700', + color: '#fff' + }, +}) \ No newline at end of file diff --git a/screens/AccountProductFavorite.tsx b/screens/AccountProductFavorite.tsx new file mode 100644 index 0000000..f524607 --- /dev/null +++ b/screens/AccountProductFavorite.tsx @@ -0,0 +1,308 @@ +import 'react-native-gesture-handler'; +import * as React from 'react'; +import { useState } from 'react'; +import { Alert, Button, Image, StyleSheet, Dimensions, SafeAreaView, ScrollView, TouchableOpacity, Modal, Pressable, Share } from 'react-native'; +import Constants from 'expo-constants'; +import { Ionicons, FontAwesome } from '@expo/vector-icons'; +import { LinearGradient } from 'expo-linear-gradient'; +import { useNavigation } from '@react-navigation/native'; +import EditScreenInfo from '../components/EditScreenInfo'; +import { Text, View, } from '../components/Themed'; +import useColorScheme from '../hooks/useColorScheme'; +import { TextInput } from 'react-native-gesture-handler'; +import { RadioButton, Checkbox } from 'react-native-paper'; +import { Picker } from '@react-native-picker/picker'; + +export default function AccountProductFavorite() { + return ( + + + + + + + + ) +} + +function formatCurrency(price: string | number) { + let priceConvert = parseFloat(`${price}`).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1.").toString(); + let len = priceConvert.length; + return priceConvert.substring(0, len - 3); +} + +const HeaderAccountOrderList = () => { + const navigation = useNavigation(); + return ( + + navigation.goBack()} style={styles.headerAOLBack}> + + + Sản phẩm yêu thích + + ) +} + +const ShowProductItemBought = (props: { id: number, productName: string, productSKU: string, summary: string, productImage: { small: string, medium: string, large: string, original: string }, price: number, marketPrice: number, quantity: number }) => { + + const { id, productName, productSKU, summary, productImage, price, marketPrice, quantity } = props; + const discount = Math.ceil(100 - (price / marketPrice * 100)); + + + return ( + + + + + + + + + + + + + {productName} + + + {formatCurrency(price)} đ + + + + + + + + + + + + + ); +} + +const productData = [ + { + id: 1, + productName: 'Máy làm mát Nagakawa NFC452 (110W) - Hàng chính hãng', + productSKU: 'TESTSKU', + productImage: { + small: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + medium: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + large: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + original: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + }, + price: 30000000, + marketPrice: 50000000, + quantity: 1, + summary: 'CPU: Intel Core i5 1035G1\nRAM: 8GB\nỔ cứng: 256GB SSD\nMàn hình: 15.6 inch FHD\nHĐH: Win 10\nMàu: Đen' + }, + { + id: 2, + productName: 'Máy làm mát Nagakawa NFC452 (110W) - Hàng chính hãng', + productSKU: 'TESTSKU', + productImage: { + small: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + medium: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + large: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + original: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + }, + price: 25000000, + marketPrice: 50000000, + quantity: 0, + summary: 'CPU: Intel Core i5 1035G1\nRAM: 8GB\nỔ cứng: 256GB SSD\nMàn hình: 15.6 inch FHD\nHĐH: Win 10\nMàu: Đen' + }, +] + +const ProductBought = () => { + return ( + + + { + productData.map(item => ) + } + + + ) +} + + +const winWidth = Dimensions.get('window').width; //full width +const winHeight = Dimensions.get('window').height; //full height +const winWidthP10 = winWidth - 20; +const halfWinWidth = winWidth / 2; +const ratio = winWidthP10 / 850; //541 is actual image width + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: '#fff', + }, + headerAOL: { + width: winWidth, + padding: 10, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + headerAOLBack: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + headerAOLBackIcon: { + fontSize: 24, + }, + headerAOLSearch: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + headerAOLSearchIcon: { + fontSize: 24, + }, + headerAOLTitle: { + width: winWidth - 60, + textAlign: 'center', + fontWeight: '700', + }, + headerAOLChat: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'flex-end', + }, + headerAOLChatIcon: { + fontSize: 24, + }, + GreenColor: { + color: '#008445', + }, + OrangeColor: { + color: '#FE9923', + }, + RedColor: { + color: '#D8262F', + }, + boxAccOrDt: { + width: winWidth, + padding: 10, + }, + boxProductSave: { + backgroundColor: '#f2f2f2' + }, + listProductSave: { + backgroundColor: '#f2f2f2' + }, + itemProduct: { + padding: 10, + marginBottom: 10, + }, + itemProducCt: { + width: '100%', + flexDirection: 'row', + marginBottom: 10, + }, + pBloxImgProduct: { + width: 96, + marginRight: 10, + flexDirection: 'column', + alignItems: 'center', + }, + pBloxImgProductBao: { + width: 96, + position: 'relative', + paddingTop: 96, + overflow: 'hidden', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexDirection: 'row', + }, + pImgProduct: { + position: 'absolute', + top: 0, + left: '5%', + right: 0, + bottom: 0, + maxHeight: 500, + width: '90%', + }, + pBloxImgProductInfo: { + width: winWidth - 136, + }, + pNameProduct: { + fontSize: 16, + color: '#111', + marginBottom: 10, + fontWeight: '700', + textTransform: 'uppercase' + }, + priceProduct: { + fontSize: 18, + fontWeight: 'bold', + color: '#f10000', + marginBottom: 5, + }, + proReview: { + width: '100%', + height: 40, + backgroundColor: '#D8262F', + borderRadius: 5, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + }, + proReviewText: { + textTransform: 'uppercase', + fontWeight: '700', + color: '#fff' + }, + pNameProductFavo: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + pNameProductFavoBt: { + flexDirection: 'row', + alignItems: 'center' + }, + pNameProductFavoHeart: { + marginRight: 10, + }, + pNameProductFavoHeartIcon: { + fontSize: 24, + color: '#D8262F', + }, + pNameProductFavoCart: { + width: 32, + height: 32, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + backgroundColor: '#D8262F', + borderRadius: 3, + }, + pNameProductFavoCartIcon: { + fontSize: 18, + color: '#fff', + }, + pBloxImgProductDelete: { + marginTop: 10, + padding: 5, + borderRadius: 3, + borderWidth: 1, + borderColor: '#ababab', + }, + pBloxImgProductDeleteIcon: { + fontSize: 16, + color: '#ababab', + }, +}) \ No newline at end of file diff --git a/screens/AccountProductSave.tsx b/screens/AccountProductSave.tsx new file mode 100644 index 0000000..d5013bd --- /dev/null +++ b/screens/AccountProductSave.tsx @@ -0,0 +1,305 @@ +import 'react-native-gesture-handler'; +import * as React from 'react'; +import { useState } from 'react'; +import { Alert, Button, Image, StyleSheet, Dimensions, SafeAreaView, ScrollView, TouchableOpacity, Modal, Pressable, Share } from 'react-native'; +import Constants from 'expo-constants'; +import { Ionicons, FontAwesome } from '@expo/vector-icons'; +import { LinearGradient } from 'expo-linear-gradient'; +import { useNavigation } from '@react-navigation/native'; +import EditScreenInfo from '../components/EditScreenInfo'; +import { Text, View, } from '../components/Themed'; +import useColorScheme from '../hooks/useColorScheme'; +import { TextInput } from 'react-native-gesture-handler'; +import { RadioButton, Checkbox } from 'react-native-paper'; +import { Picker } from '@react-native-picker/picker'; + +export default function AccountProductSave() { + return ( + + + + + + + + ) +} + +function formatCurrency(price: string | number) { + let priceConvert = parseFloat(`${price}`).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1.").toString(); + let len = priceConvert.length; + return priceConvert.substring(0, len - 3); +} + +const HeaderAccountOrderList = () => { + const navigation = useNavigation(); + return ( + + navigation.goBack()} style={styles.headerAOLBack}> + + + Sản phẩm mua sau + + ) +} + +const ShowProductItemBought = (props: { id: number, productName: string, productSKU: string, summary: string, productImage: { small: string, medium: string, large: string, original: string }, price: number, marketPrice: number, quantity: number }) => { + + const { id, productName, productSKU, summary, productImage, price, marketPrice, quantity } = props; + const discount = Math.ceil(100 - (price / marketPrice * 100)); + + + return ( + + + + + + + + + + + + + {productName} + + + {formatCurrency(price)} đ + + + + + + + + + + ); +} + +const productData = [ + { + id: 1, + productName: 'Máy làm mát Nagakawa NFC452 (110W) - Hàng chính hãng', + productSKU: 'TESTSKU', + productImage: { + small: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + medium: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + large: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + original: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + }, + price: 30000000, + marketPrice: 50000000, + quantity: 1, + summary: 'CPU: Intel Core i5 1035G1\nRAM: 8GB\nỔ cứng: 256GB SSD\nMàn hình: 15.6 inch FHD\nHĐH: Win 10\nMàu: Đen' + }, + { + id: 2, + productName: 'Máy làm mát Nagakawa NFC452 (110W) - Hàng chính hãng', + productSKU: 'TESTSKU', + productImage: { + small: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + medium: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + large: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + original: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + }, + price: 25000000, + marketPrice: 50000000, + quantity: 0, + summary: 'CPU: Intel Core i5 1035G1\nRAM: 8GB\nỔ cứng: 256GB SSD\nMàn hình: 15.6 inch FHD\nHĐH: Win 10\nMàu: Đen' + }, +] + +const ProductBought = () => { + return ( + + + { + productData.map(item => ) + } + + + ) +} + + +const winWidth = Dimensions.get('window').width; //full width +const winHeight = Dimensions.get('window').height; //full height +const winWidthP10 = winWidth - 20; +const halfWinWidth = winWidth / 2; +const ratio = winWidthP10 / 850; //541 is actual image width + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: '#fff', + }, + headerAOL: { + width: winWidth, + padding: 10, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + headerAOLBack: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + headerAOLBackIcon: { + fontSize: 24, + }, + headerAOLSearch: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + headerAOLSearchIcon: { + fontSize: 24, + }, + headerAOLTitle: { + width: winWidth - 60, + textAlign: 'center', + fontWeight: '700', + }, + headerAOLChat: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'flex-end', + }, + headerAOLChatIcon: { + fontSize: 24, + }, + GreenColor: { + color: '#008445', + }, + OrangeColor: { + color: '#FE9923', + }, + RedColor: { + color: '#D8262F', + }, + boxAccOrDt: { + width: winWidth, + padding: 10, + }, + boxProductSave: { + backgroundColor: '#f2f2f2' + }, + listProductSave: { + backgroundColor: '#f2f2f2' + }, + itemProduct: { + padding: 10, + marginBottom: 10, + }, + itemProducCt: { + width: '100%', + flexDirection: 'row', + marginBottom: 10, + }, + pBloxImgProduct: { + width: 96, + marginRight: 10, + flexDirection: 'column', + alignItems: 'center', + }, + pBloxImgProductBao: { + width: 96, + position: 'relative', + paddingTop: 96, + overflow: 'hidden', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexDirection: 'row', + }, + pImgProduct: { + position: 'absolute', + top: 0, + left: '5%', + right: 0, + bottom: 0, + maxHeight: 500, + width: '90%', + }, + pBloxImgProductInfo: { + width: winWidth - 136, + }, + pNameProduct: { + fontSize: 16, + color: '#111', + marginBottom: 10, + fontWeight: '700', + textTransform: 'uppercase' + }, + priceProduct: { + fontSize: 18, + fontWeight: 'bold', + color: '#f10000', + marginBottom: 5, + }, + proReview: { + width: '100%', + height: 40, + backgroundColor: '#D8262F', + borderRadius: 5, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + }, + proReviewText: { + textTransform: 'uppercase', + fontWeight: '700', + color: '#fff' + }, + pNameProductFavo: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + pNameProductFavoBt: { + flexDirection: 'row', + alignItems: 'center' + }, + pNameProductFavoHeart: { + marginRight: 10, + }, + pNameProductFavoHeartIcon: { + fontSize: 24, + color: '#D8262F', + }, + pNameProductFavoCart: { + width: 32, + height: 32, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + backgroundColor: '#D8262F', + borderRadius: 3, + }, + pNameProductFavoCartIcon: { + fontSize: 18, + color: '#fff', + }, + pBloxImgProductDelete: { + marginTop: 10, + padding: 5, + borderRadius: 3, + borderWidth: 1, + borderColor: '#ababab', + }, + pBloxImgProductDeleteIcon: { + fontSize: 16, + color: '#ababab', + }, +}) \ No newline at end of file diff --git a/screens/AccountProductViewHistory.tsx b/screens/AccountProductViewHistory.tsx new file mode 100644 index 0000000..478bfee --- /dev/null +++ b/screens/AccountProductViewHistory.tsx @@ -0,0 +1,346 @@ +import 'react-native-gesture-handler'; +import * as React from 'react'; +import { useState } from 'react'; +import { Alert, Button, Image, StyleSheet, Dimensions, SafeAreaView, ScrollView, TouchableOpacity, Modal, Pressable, Share } from 'react-native'; +import Constants from 'expo-constants'; +import { Ionicons, FontAwesome } from '@expo/vector-icons'; +import { LinearGradient } from 'expo-linear-gradient'; +import { useNavigation } from '@react-navigation/native'; +import EditScreenInfo from '../components/EditScreenInfo'; +import { Text, View, } from '../components/Themed'; +import useColorScheme from '../hooks/useColorScheme'; +import { TextInput } from 'react-native-gesture-handler'; +import { RadioButton, Checkbox } from 'react-native-paper'; +import { Picker } from '@react-native-picker/picker'; + +export default function AccountProductViewHistory() { + return ( + + + + + + + + ) +} + +function formatCurrency(price: string | number) { + let priceConvert = parseFloat(`${price}`).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, "$1.").toString(); + let len = priceConvert.length; + return priceConvert.substring(0, len - 3); +} + +const HeaderAccountOrderList = () => { + const navigation = useNavigation(); + return ( + + navigation.goBack()} style={styles.headerAOLBack}> + + + Sản phẩm đã xem + + ) +} + +const ProductCategory = () => { + const navigation = useNavigation(); + return ( + + + + + + + + + + navigation.navigate('ProductDetail')}> + Nồi áp suất inox 304 cao cấp Nagakawa NAG1452 (5L) + + 1.292.000đ + + 1.634.000đ + -30% + + + *3 khuyến mãi trị giá + 500.000đ + + + + + + + + + + + + + Nồi áp suất inox 304 cao cấp Nagakawa NAG1452 (5L) + 1.292.000đ + + 1.634.000đ + -30% + + + *3 khuyến mãi trị giá + 500.000đ + + + + + + + + + + + + + Nồi áp suất inox 304 cao cấp Nagakawa NAG1452 (5L) + 1.292.000đ + + 1.634.000đ + -30% + + + *3 khuyến mãi trị giá + 500.000đ + + + + + + + + + + + + + Nồi áp suất inox 304 cao cấp Nagakawa NAG1452 (5L) + 1.292.000đ + + 1.634.000đ + -30% + + + *3 khuyến mãi trị giá + 500.000đ + + + + + + ) +} + +const productData = [ + { + id: 1, + productName: 'Máy làm mát Nagakawa NFC452 (110W) - Hàng chính hãng', + productSKU: 'TESTSKU', + productImage: { + small: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + medium: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + large: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + original: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + }, + price: 30000000, + marketPrice: 50000000, + quantity: 1, + summary: 'CPU: Intel Core i5 1035G1\nRAM: 8GB\nỔ cứng: 256GB SSD\nMàn hình: 15.6 inch FHD\nHĐH: Win 10\nMàu: Đen' + }, + { + id: 2, + productName: 'Máy làm mát Nagakawa NFC452 (110W) - Hàng chính hãng', + productSKU: 'TESTSKU', + productImage: { + small: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + medium: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + large: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + original: 'https://shop.nagakawa.com.vn/media/product/137_nfc452.jpg', + }, + price: 25000000, + marketPrice: 50000000, + quantity: 0, + summary: 'CPU: Intel Core i5 1035G1\nRAM: 8GB\nỔ cứng: 256GB SSD\nMàn hình: 15.6 inch FHD\nHĐH: Win 10\nMàu: Đen' + }, +] + +const winWidth = Dimensions.get('window').width; //full width +const winHeight = Dimensions.get('window').height; //full height +const winWidthP10 = winWidth - 20; +const halfWinWidth = winWidth / 2; +const ratio = winWidthP10 / 850; //541 is actual image width + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: '#fff', + }, + headerAOL: { + width: winWidth, + padding: 10, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + headerAOLBack: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + headerAOLBackIcon: { + fontSize: 24, + }, + headerAOLSearch: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + headerAOLSearchIcon: { + fontSize: 24, + }, + headerAOLTitle: { + width: winWidth - 60, + textAlign: 'center', + fontWeight: '700', + }, + headerAOLChat: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'flex-end', + }, + headerAOLChatIcon: { + fontSize: 24, + }, + GreenColor: { + color: '#008445', + }, + OrangeColor: { + color: '#FE9923', + }, + RedColor: { + color: '#D8262F', + }, + boxAccOrDt: { + width: winWidth, + padding: 10, + }, + pContainer: { + width: '100%', + padding: 10, + }, + pImgContent: { + width: '100%', + position: 'relative', + paddingTop: '100%', + marginBottom: 10, + }, + pNew: { + width: 24, + height: 18, + position: 'absolute', + zIndex: 6, + top: 0, + left: 0, + }, + pImg: { + width: '100%', + position: 'absolute', + zIndex: 5, + top: 0, + left: 0, + right: 0, + bottom: 0, + }, + pTraGop: { + width: 68, + height: 16, + position: 'absolute', + zIndex: 6, + bottom: 0, + left: '50%', + transform: [{ translateX: -34 }], + }, + pInfo: { + width: '100%', + }, + pName: { + width: '100%', + fontSize: 14, + marginBottom: 10, + }, + pPrice: { + width: '100%', + fontSize: 18, + marginBottom: 10, + color: '#D8262F', + fontWeight: 'bold', + }, + pAllSale: { + width: '100%', + flexDirection: 'row', + alignItems: 'center', + marginBottom: 10, + }, + pOldPrice: { + color: '#A1A1A1', + fontSize: 14, + textDecorationLine: 'line-through', + }, + pDiscount: { + paddingVertical: 5, + backgroundColor: '#D8262F', + width: 50, + textAlign: 'center', + color: '#fff', + borderRadius: 5, + overflow: 'hidden', + marginLeft: 5, + }, + pOffer: { + flexDirection: 'row', + alignItems: 'center', + }, + pOfferText: { + fontSize: 10, + color: '#A1A1A1', + }, + pOfferPrice: { + fontSize: 10, + color: '#D8262F', + }, + pItem: { + width: winWidth / 2 - 15, + marginBottom: 10, + borderRadius: 5, + overflow: 'hidden', + shadowColor: "#000", + shadowOffset: { + width: 0, + height: 3, + }, + shadowOpacity: 0.27, + shadowRadius: 4.65, + elevation: 6, + }, + boxProductCategoryList: { + width: winWidth, + padding: 10, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + flexWrap: 'wrap', + backgroundColor: '#f2f2f2', + }, +}) \ No newline at end of file diff --git a/screens/Cart.tsx b/screens/Cart.tsx index bb90ade..2b85322 100644 --- a/screens/Cart.tsx +++ b/screens/Cart.tsx @@ -10,6 +10,7 @@ import Swiper from 'react-native-swiper'; import { Asset } from 'expo-asset'; import { RadioButton, Checkbox } from 'react-native-paper'; import { Picker } from '@react-native-picker/picker'; +import { useNavigation } from '@react-navigation/core'; export default function Cart() { return ( @@ -22,308 +23,109 @@ export default function Cart() { } const CustommerInfo = () => { - const [selecTab, setSelecTab] = React.useState('cus') return ( - - setSelecTab('login')}> - Đăng nhập - Đã là thành viên của Nagakawa - - setSelecTab('cus')}> - Mua hàng nhanh - Dành cho khách hàng mới - - - - - - - - - - - - + + + + + - - ) } -const LoginCart = () => { +const HeaderCart = () => { return ( - - Thanh toán đơn hàng chỉ trong 1 bước với - - - - - - Facebook + + + Giỏ hàng + (0) + + + + - - - - - Google - - - - - - Facebook - - - - - Email đăng nhập - - - - Mật khẩu - - - - - Quên mật khẩu? Khôi phục mật khẩu - - Tại đây - - - - Đăng nhập - - - ) -} - -const CustommerInfoCart = () => { - const [selecSex, setSelecSex] = React.useState('male'); - const [checkedInfo, setCheckedInfo] = React.useState(false); - const [selectedProvince, setSelectedProvince] = React.useState(); - const [selectedDistrict, setSelectedDistrict] = React.useState(); - return ( - - Thông tin khách hàng - - Thông tin người mua - (*) Thông tin bắt buộc - - - - - setSelecSex('male')} /> - - Anh - - - - setSelecSex('female')} /> - - Chị - - - - - - - - - - - - - - - - - - - - - - - - - - Thông tin người nhận - (*) Thông tin bắt buộc - - - - setCheckedInfo(!checkedInfo)} /> - - Lấy thông tin người mua - - - - - - - - - - - - - - setSelectedProvince(itemValue) - } - > - - - - - - - - - - setSelectedDistrict(itemValue) - } - > - - - - - - - - - - - - - - ) -} - -const SelecPayOption = () => { - const [checkedPayment, setCheckedPayment] = React.useState('pay1'); - const listPayment = [ - { - id: 1, - name: 'COD - Thanh toán khi nhận hàng', - description: '', - image: require('../assets/images/pay_1.png'), - }, - { - id: 2, - name: 'Thanh toán trực tuyến (bằng thẻ ATM, VISA, MASTER) ', - description: '', - image: require('../assets/images/pay_2.png'), - }, - { - id: 3, - name: 'Trả góp qua Alepay (Ngân Lượng)', - description: '', - image: require('../assets/images/pay_2.png'), - }, - ] - return ( - - Phương thức thanh toán - Chọn phương thức thanh toán - - { - listPayment.map(item => { - let idpay = 'pay' + item.id; - return ( - - - - - {item.name} - - setCheckedPayment(idpay)} /> - - - ) - }) - } - - - ) -} - -const Bill = () => { - const [checkedBill, setCheckedBill] = React.useState(false); - return ( - - - - setCheckedBill(!checkedBill)} /> - - Yêu cầu xuất hóa đơn GTGT cho đơn hàng này - - - - - - - - - - - ) } const CartItem = () => { + const [selectCartItem, setSelectedCartItem] = React.useState(false); return ( - - - Quay lại mua thêm sản phẩm khác - - Giỏ hàng của bạn + + setSelectedCartItem(!selectCartItem)} /> + - - - Xóa + + + + Khẩu trang vải kháng khuẩn Nagakawa 2 lớp - Công nghệ Nhật Bản Hộp 10 chiếc (Hộp 10 chiếc - L) + + + + 121.000.000 đ + + + + + + + + - + + + + Để dành mua sau + + + + + + + + + setSelectedCartItem(!selectCartItem)} /> + + + + + + Khẩu trang vải kháng khuẩn Nagakawa 2 lớp - Công nghệ Nhật Bản Hộp 10 chiếc (Hộp 10 chiếc - L) - - Để dành mua sau - - - - 121.000.000 đ - - - + - - - - - - + + + 121.000.000 đ + + + + + + + + - + + + + Để dành mua sau + + @@ -333,27 +135,78 @@ const CartItem = () => { ) } +const VoucherList = () => { + return ( + + + + + Voucher 1.000.000đ dành riêng cho điều hòa NS-C09R1M05 + + + + Đăng ký tài khoản nhận ngay 500 NagaXu = 50.000đ + + + + Bộ 3 nồi inox 4 đáy Nagakawa NAG1306 (16cm, 20cm, 24cm) - Quai mạ vàng - Dùng trên mọi loại bếp- Hàng Chính Hãng + + + + Lưu ý: Mã giảm giá không áp dụng kèm với chương trình trả góp 0%, sản phẩm Flash sale. + - Các mã giảm giá được áp dụng đồng thời nếu đủ điều kiện. + - Tài khoản đăng ký chưa được xác thực dùng NagaXu hệ thống sẽ tự động hủy đơn hàng + + + ) +} + +const TotalPriceCatStepSt = () => { + const [selecAllItemCart, setSelecAllItemCart] = useState(false); + const navigation = useNavigation(); + return( + + + + setSelecAllItemCart(!selecAllItemCart)} /> + + Tất cả + + + + Tổng cộng: + 10.500.000đ + + + Phí vận chuyển: + + + + navigation.navigate('CartStep')} style={styles.stepStTotalGoStepNd}> + Thanh toán + + + ) +} + const Voucher = () => { const [openPopVoucher, setOpenPopVoucher] = useState(false); const [checkedVoucher, setCheckedVoucher,] = useState(''); return ( - - - - Áp dụng - - setOpenPopVoucher(true)}> - - Chọn mã voucher + + + Chọn mã voucher + + + + + + Bạn chưa có naga xu + - - - Lưu ý: Mã giảm giá không áp dụng kèm với chương trình trả góp 0%, sản phẩm Flash sale. - - Các mã giảm giá được áp dụng đồng thời nếu đủ điều kiện. - - Tài khoản đăng ký chưa được xác thực dùng NagaXu hệ thống sẽ tự động hủy đơn hàng { setOpenPopVoucher(!openPopVoucher); }}> @@ -361,7 +214,12 @@ const Voucher = () => { - Chọn Nagakawa Voucher + + setOpenPopVoucher(false)} style={styles.contentPopVoucherBack}> + + + Chọn Nagakawa Voucher + Mã Voucher @@ -373,8 +231,8 @@ const Voucher = () => { Voucher có thể áp dụng - - + + Nhập NAG9CVFGZ @@ -433,13 +291,50 @@ const Voucher = () => { setCheckedVoucher('vc5')} /> + + + Nhập + NAG9CVFGZ + + + Mã giảm giá trị giá 150.000đ áp dụng cho Đơn hàng từ 4.000.000đ + + + setCheckedVoucher('vc5')} /> + + + + + Nhập + NAG9CVFGZ + + + Mã giảm giá trị giá 150.000đ áp dụng cho Đơn hàng từ 4.000.000đ + + + setCheckedVoucher('vc5')} /> + + + + + Nhập + NAG9CVFGZ + + + Mã giảm giá trị giá 150.000đ áp dụng cho Đơn hàng từ 4.000.000đ + + + setCheckedVoucher('vc5')} /> + + - setOpenPopVoucher(false)}> - Trở lại - + + 1 Voucher đã được chọn. + Đã chọn mã NAGAA200 + setOpenPopVoucher(false)}> Ok @@ -450,42 +345,6 @@ const Voucher = () => { ) } -const TotalCart = () => { - return ( - - - - - Bạn chưa có Naga Xu - - - - - Tổng cộng - 5.000.000đ - - - Giảm giá - 00đ - - - Phí giao hàng - 00đ - - - Thanh toán - 5.000.000đ - - - - - Thanh toán - - - - ) -} - const winWidth = Dimensions.get('window').width; //full width const winHeight = Dimensions.get('window').height; //full height @@ -496,147 +355,154 @@ const styles = StyleSheet.create({ flex: 1, alignItems: 'center', justifyContent: 'center', - backgroundColor: '#f2f2f2', + backgroundColor: '#fff', + }, + headerCart: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + padding: 10, + }, + headerCartLeft: { + flexDirection: 'row', + alignItems: 'center', + }, + headerCartTextSt: { + fontSize: 17, + fontWeight: '700', + }, + headerCartCount: {}, + headerCartRight: {}, + headerCartDelete: { + padding: 5, + borderWidth: 1, + borderColor: '#ABABAB', + borderRadius: 3, + }, + headerCartDeleteIcon: { + fontSize: 16, + color: '#ABABAB' }, boxCustommerInfoCart: { width: winWidth, + backgroundColor: '#fff', + }, + boxCartItemContent: { + width: '100%', + }, + boxCartItemList: {}, + boxCartItemItem: { + width: '100%', padding: 10, - backgroundColor: '#f2f2f2', - }, - boxCustommerInfoCartHeader: { - width: '100%', flexDirection: 'row', - alignItems: 'center', - justifyContent: 'space-between', - backgroundColor: 'rgba(0,0,0,0)', - marginBottom: 10, - }, - boxCustommerInfoCartTab: { - width: winWidth / 2 - 15, - padding: 10, - borderWidth: 1, - borderColor: '#ddd', - borderRadius: 5, - flexDirection: 'column', - alignItems: 'center', - }, - boxCustommerInfoCartTextSt: { - fontSize: 13, - textTransform: 'uppercase', - fontWeight: 'bold', - }, - boxCustommerInfoCartTextNd: { - fontSize: 10, - }, - boxCustommerInfoCartTabActive: { - borderColor: '#008445', - }, - green: { - color: '#008445', - }, - boxCustommerInfoCartLoginContent: { - width: '100%', - padding: 5, - display: 'none', - }, - loginCartTitle: { - width: '100%', - textAlign: 'center', - paddingVertical: 10, - }, - loginCartSocial: { - width: '100%', - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'space-between', - marginBottom: 10, - paddingBottom: 10, borderBottomColor: '#e1e1e1', borderBottomWidth: 1, }, - loginCartSocialButtonFace: { - width: 110, - height: 30, + boxCartItemItemCheck: { + width: 36, + height: 36, + borderColor: '#777', + borderWidth: 1, + marginRight: 10, + }, + boxCartItemItemImage: { + width: 90, + }, + boxCartItemItemImageCt: { + width: 90, + height: 90, + position: 'relative', + marginBottom: 10, + }, + boxCartItemItemImageCtImg: { + width: 90, + height: 90, + position: 'absolute', + top: 0, + left: 0, + right: 0, + bottom: 0, + }, + boxCartItemItemDelete: { flexDirection: 'row', alignItems: 'center', - backgroundColor: '#3b5998', - borderRadius: 3, + justifyContent: 'center', }, - loginCartSocialIcCt: { + boxCartItemItemDeleteIcon: { + fontSize: 18, + color: '#999', + }, + boxCartItemItemDeleteText: { + fontSize: 18, + color: '#999', + }, + boxCartItemItemContent: { + width: winWidth - 156, + paddingHorizontal: 10, + }, + boxCartItemItemImageName: { + marginBottom: 10, + fontWeight: '500', + }, + boxCartItemItemImageBuyAfter: { + color: '#00a456', + }, + boxCartItemItemPriceAll: { + width: '100%', + }, + boxCartItemItemPriceAllLeft: { + width: '100%' + }, + boxCartItemItemPrice: { + fontSize: 16, + fontWeight: '500', + color: '#d9282f', + marginBottom: 10, + textAlign: 'left', + }, + selecCountContent: { + width: 100, + flexDirection: 'row', + justifyContent: 'flex-end', + alignItems: 'center', + marginBottom: 10, + marginLeft: 10, + }, + selecCountButton: { width: 30, height: 30, - borderRightWidth: 1, - borderRightColor: '#fff', flexDirection: 'row', - alignItems: 'center', justifyContent: 'center', - backgroundColor: 'rgba(0,0,0,0)', + alignItems: 'center', + backgroundColor: '#DFDFDF', }, - loginCartSocialButtonIcon: { + selecCountButtonText: { fontSize: 24, - color: '#fff' }, - loginCartSocialButtonText: { - width: 80, + selecCountInput: { + width: 50, + height: 30, textAlign: 'center', - color: '#fff', + backgroundColor: '#f2f2f2', + fontSize: 22, }, - loginCartSocialButtonGoogle: { - width: 110, - height: 30, - flexDirection: 'row', - alignItems: 'center', - backgroundColor: '#df4a32', - borderRadius: 3, + boxVoucherList: { + padding: 10, }, - loginCartSocialButtonImg: { - width: 24, - height: 24, - }, - loginCartSocialButtonZalo: { - width: 110, - height: 30, - flexDirection: 'row', - alignItems: 'center', - backgroundColor: '#0f8edd', - borderRadius: 3, - }, - loginCartSocialForm: { - marginBottom: 10, - }, - loginCartSocialFormItem: { - width: '100%', - marginBottom: 10, - }, - loginCartSocialFormItemText: { - marginBottom: 5, - }, - loginCartSocialFormItemInput: { - width: '100%', - height: 40, - borderWidth: 1, - borderColor: '#e1e1e1', - borderRadius: 5, - }, - loginCartSocialFormNote: { + boxVoucherListItem: { marginBottom: 10, flexDirection: 'row', }, - loginCartSocialFormNoteText: {}, - loginCartSocialFormNoteButton: {}, - loginCartSocialFormButton: { - width: '100%', - height: 40, - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'center', - borderRadius: 5, - overflow: 'hidden', - backgroundColor: '#d9282f', + boxVoucherListItemImg: { + width: 26, + maxHeight: 26, + marginRight: 10, }, - loginCartSocialFormButtonText: { - fontWeight: 'bold', - color: '#fff' + boxVoucherListItemText: { + width: winWidth - 56, + }, + green: { + color: '#008445', }, boxInfoCusCart: { width: '100%', @@ -750,70 +616,6 @@ const styles = StyleSheet.create({ width: '100%', backgroundColor: 'rgba(0,0,0,0)' }, - boxPayment: { - width: '100%', - marginBottom: 20, - backgroundColor: 'rgba(0,0,0,0)' - }, - boxPaymentHead: { - width: '100%', - marginBottom: 10, - backgroundColor: '#008445', - lineHeight: 40, - paddingHorizontal: 10, - fontSize: 18, - fontWeight: 'bold', - textTransform: 'uppercase', - color: '#fff', - }, - boxPaymentTitle: { - marginBottom: 10, - fontSize: 16, - fontWeight: 'bold', - }, - boxPaymentList: {}, - paymentItem: { - width: '100%', - padding: 10, - borderBottomWidth: 1, - borderBottomColor: '#e1e1e1', - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'center', - }, - paymentItemImage: { - width: 31, - height: 31, - borderRadius: 15.5, - overflow: 'hidden', - marginRight: 10, - }, - paymentItemImageCt: { - width: 31, - height: 31, - }, - paymentItemText: { - width: winWidth - 130, - }, - paymentItemRadio: { - width: 36, - height: 36, - borderRadius: 18, - borderWidth: 1, - borderColor: '#e1e1e1', - marginLeft: 10, - }, - boxBill: { - width: '100%', - padding: 10, - marginBottom: 20, - }, - boxBillList: { - display: 'none', - }, - boxBillText: { - fontSize: 12, - }, boxCartItem: { width: '100%', marginBottom: 20, @@ -835,99 +637,6 @@ const styles = StyleSheet.create({ marginRight: 5, textTransform: 'uppercase' }, - boxCartItemContent: { - width: '100%', - padding: 5, - }, - boxCartItemContentTitle: { - fontSize: 18, - fontWeight: 'bold', - lineHeight: 40, - }, - boxCartItemList: {}, - boxCartItemItem: { - width: '100%', - paddingVertical: 10, - flexDirection: 'row', - borderTopColor: '#e1e1e1', - borderTopWidth: 1, - }, - boxCartItemItemImage: { - width: 90, - }, - boxCartItemItemImageCt: { - width: 90, - height: 90, - position: 'relative', - marginBottom: 10, - }, - boxCartItemItemImageCtImg: { - width: 90, - height: 90, - position: 'absolute', - top: 0, - left: 0, - right: 0, - bottom: 0, - }, - boxCartItemItemDelete: { - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'center', - }, - boxCartItemItemDeleteIcon: { - fontSize: 18, - color: '#999', - }, - boxCartItemItemDeleteText: { - fontSize: 18, - color: '#999', - }, - boxCartItemItemContent: { - width: winWidth - 230, - paddingHorizontal: 10, - }, - boxCartItemItemImageName: { - marginBottom: 10, - fontWeight: '500', - }, - boxCartItemItemImageBuyAfter: { - color: '#00a456', - }, - boxCartItemItemPriceAll: { - width: 110, - }, - boxCartItemItemPrice: { - fontSize: 16, - fontWeight: '500', - color: '#d9282f', - marginBottom: 10, - textAlign: 'left', - }, - selecCountContent: { - width: 100, - flexDirection: 'row', - justifyContent: 'flex-end', - alignItems: 'center', - }, - selecCountButton: { - width: 30, - height: 30, - flexDirection: 'row', - justifyContent: 'center', - alignItems: 'center', - backgroundColor: '#DFDFDF', - }, - selecCountButtonText: { - fontSize: 24, - }, - selecCountInput: { - width: 50, - height: 30, - textAlign: 'center', - backgroundColor: '#f2f2f2', - fontSize: 22, - }, boxVoucher: { width: '100%', marginBottom: 20, @@ -968,7 +677,14 @@ const styles = StyleSheet.create({ boxVoucherShowPopButton: { flexDirection: 'row', alignItems: 'center', - marginBottom: 15, + justifyContent: 'space-between', + padding: 10, + borderBottomWidth: 1, + borderBottomColor: '#e1e1e1' + }, + boxVoucherShowPopButtonCt: { + flexDirection: 'row', + alignItems: 'center', }, boxVoucherShowPopImg: { marginRight: 10, @@ -976,34 +692,66 @@ const styles = StyleSheet.create({ boxVoucherShowPopText: { color: '#d9282f', }, + boxVoucherShowPopIcon: {}, + boxXuShowPopButton: { + flexDirection: 'row', + alignItems: 'center', + padding: 10, + borderBottomWidth: 1, + borderBottomColor: '#e1e1e1' + }, + boxXuShowPopButtonImg: { + marginRight: 10, + }, + boxXuShowPopButtonText: { + marginRight: 10, + }, + boxXuShowPopButtonIcon: {}, boxVoucherNote: { - backgroundColor: 'rgba(0,0,0,0)' + backgroundColor: '#f2f2f2', + padding: 10, }, boxVoucherNoteText: { marginBottom: 10, + fontStyle: 'italic', }, TextBold: { fontWeight: 'bold', }, boxCloseModalVoucher: { width: winWidth, - height: 100, backgroundColor: 'rgba(0,0,0,0.5)' }, boxCloseModalVoucherPress: { width: '100%', - height: 100, }, contentPopVoucher: { width: winWidth, padding: 10, - height: winHeight - 100, + height: winHeight, + paddingTop: 50, + }, + contentPopVoucherHeader: { + flexDirection: 'row', + alignItems: 'center', + marginBottom: 10, + }, + contentPopVoucherBack: { + width: 50, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + contentPopVoucherBackIcon: { + fontSize: 24, + height: 24, }, contentPopVoucherTitle: { - width: '100%', + width: winWidth - 70, fontSize: 18, lineHeight: 25, - marginBottom: 10, + textAlign: 'center', + fontWeight: '700' }, contentPopVoucherForm: { width: '100%', @@ -1011,44 +759,47 @@ const styles = StyleSheet.create({ borderRadius: 5, backgroundColor: '#f5f5f5', marginBottom: 10, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', }, contentPopVoucherFormText: { - marginBottom: 5, + width: 78, }, contentPopVoucherFormInput: { - width: '100%', + width: winWidth - 205, height: 40, borderRadius: 5, paddingHorizontal: 10, backgroundColor: '#fff', - marginBottom: 10, + borderWidth: 1, + borderColor: '#ababab' }, contentPopVoucherFormButton: { - width: '100%', + width: 72, height: 40, borderRadius: 5, - paddingHorizontal: 10, backgroundColor: '#d9282f', flexDirection: 'row', alignItems: 'center', justifyContent: 'center', }, contentPopVoucherFormButtonText: { - fontSize: 18, + fontSize: 12, textTransform: 'uppercase', color: '#fff', fontWeight: 'bold' }, contentPopVoucherPop: { width: '100%', - height: winHeight - 350, + height: winHeight - 260, }, contentPopVoucherPopTitle: { marginBottom: 10, }, contentPopVoucherPopList: { width: '100%', - height: winHeight - 370, + height: winHeight - 290, }, contentPopVoucherPopItem: { width: '100%', @@ -1068,6 +819,12 @@ const styles = StyleSheet.create({ flexDirection: 'column', alignItems: 'center', }, + contentPopVoucherPopItemHasUse: { + borderColor: '#008445', + }, + contentPopVoucherPopItemLeftHasUse: { + backgroundColor: '#008445' + }, contentPopVoucherPopItemLeftSt: { color: '#fff', marginBottom: 5, @@ -1096,26 +853,11 @@ const styles = StyleSheet.create({ }, contentPopVoucherPopBot: { width: '100%', - height: 60, - flexDirection: 'row', - justifyContent: 'space-between', - alignItems: 'center', - }, - contentPopVoucherPopBotBack: { - width: winWidth / 2 - 15, - backgroundColor: '#ebebeb', - flexDirection: 'row', - justifyContent: 'center', - alignItems: 'center', - borderRadius: 5, - height: 40, - }, - contentPopVoucherPopBotBackText: { - fontSize: 18, - textTransform: 'uppercase', + height: 90, + paddingVertical: 10, }, contentPopVoucherPopBotOk: { - width: winWidth / 2 - 15, + width: '100%', backgroundColor: '#d9282f', flexDirection: 'row', justifyContent: 'center', @@ -1192,4 +934,73 @@ const styles = StyleSheet.create({ textTransform: 'uppercase', fontWeight: 'bold', }, + stepStTotal: { + padding: 10, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + stepStTotalSelect: { + flexDirection: 'row', + alignItems: 'center', + width: 78, + flexWrap: 'wrap' + }, + stepStTotalSetectItem: { + width: 36, + height: 35, + borderColor: '#ababab', + borderWidth: 1, + marginRight: 10, + marginBottom: 5, + }, + stepStTotalSelectText: { + fontSize: 13, + }, + stepStTotalPrice: {}, + stepStTotalPriceCt: { + flexDirection: 'row', + alignItems: 'center', + width: winWidth - 204, + flexWrap: 'wrap' + }, + stepStTotalPriceText: { + marginRight: 10, + }, + stepStTotalPriceNum: { + fontSize: 16, + color: '#D8262F', + fontWeight: '700' + }, + stepStTotalShip: { + flexDirection: 'row', + alignItems: 'center' + }, + stepStTotalShipText: { + color: '#999' + }, + stepStTotalShupNum: { + color: '#D8262F', + }, + stepStTotalGoStepNd: { + width: 96, + height: 36, + borderRadius: 5, + backgroundColor: '#D8262F', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + }, + stepStTotalGoStepNdText: { + fontSize: 14, + color: '#fff', + }, + countVoucherSelect: { + width: '100%', + marginBottom: 10, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + flexWrap: 'wrap' + }, }); diff --git a/screens/CartPayInstallment.tsx b/screens/CartPayInstallment.tsx new file mode 100644 index 0000000..61a9838 --- /dev/null +++ b/screens/CartPayInstallment.tsx @@ -0,0 +1,248 @@ +import * as React from 'react'; +import { useState } from 'react'; +import { Alert, Button, Image, StyleSheet, Dimensions, SafeAreaView, ScrollView, TouchableOpacity, ImageBackground, Modal, Pressable } from 'react-native'; +import { LinearGradient } from 'expo-linear-gradient'; +import { Ionicons, FontAwesome } from '@expo/vector-icons'; +import EditScreenInfo from '../components/EditScreenInfo'; +import { Text, View } from '../components/Themed'; +import { TextInput } from 'react-native-gesture-handler'; +import { useNavigation } from '@react-navigation/native'; + +export default function CartPayInstallment() { + return ( + + + + + + + + + + ); +} + +const HeaderCart = () => { + const navigation = useNavigation(); + return ( + + navigation.navigate('Cart')}> + + + Mua trả góp + + ) +} + +const CartItemPayInstall = () => { + return( + + + + + + + + + + ĐIỀU HÒA 1 CHIỀU 9000 BTU/H NAGAKAWA NS-C09R1M05 - MADE IN MALAYSIA - BẢO HÀNH 2 NĂM() + 10.000.000đ + + + + + + + + + + + ĐIỀU HÒA 1 CHIỀU 9000 BTU/H NAGAKAWA NS-C09R1M05 - MADE IN MALAYSIA - BẢO HÀNH 2 NĂM() + 10.000.000đ + + + + ) +} + +const BoxPayInstallForm = () => { + return( + + + Trả góp 0% bằng thẻ tín dụng + + + + Giá trị sản phẩm (*) + + + + Số tiền trả góp (*) + + + + Tiền tệ (*) + + + + Họ tên (*) + + + + Địa chỉ (*) + + + + Số tiền trả trước (*) + + + + Số lượng (*) + + + + Email (*) + + + + Số điện thoại (*) + + + + Thành phố (*) + + + + + Thanh toán trả góp + + + + ) +} + +const winWidth = Dimensions.get('window').width; //full width +const winHeight = Dimensions.get('window').height; //full height + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + }, + headerCartStep: { + flexDirection: 'row', + alignItems: 'center', + padding: 10, + }, + goBack: { + width: 50, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + goBackIcon: { + fontSize: 24, + }, + headerCartStepTitle: { + fontWeight: '700', + width: winWidth - 70, + textAlign: 'center' + }, + boxItemCartPayInstall: { + marginBottom: 10, + backgroundColor: '#f2f2f2', + }, + boxItemCartPayInstallItem: { + width: '100%', + padding: 10, + backgroundColor: '#fff', + flexDirection: 'row', + }, + boxItemCartPayInstallItemLeft: { + width: 65, + paddingRight: 15, + flexDirection: 'column', + alignItems: 'center' + }, + boxItemCartPayInstallItemImg: { + width: '100%', + height: 50, + marginBottom: 10, + }, + boxItemCartPayInstallItemDelete: { + padding: 5, + borderColor: '#e1e1e1', + borderWidth: 1, + borderRadius: 3, + }, + boxItemCartPayInstallItemDeleteIcon: { + fontSize: 16, + color: '#999' + }, + boxItemCartPayInstallItemInfo: { + width: winWidth - 85, + }, + boxItemCartPayInstallItemName: { + marginBottom: 10, + fontWeight: '700' + }, + boxItemCartPayInstallItemPrice: { + fontSize: 18, + fontWeight: '700', + color: '#D8262F', + }, + boxPayForm: { + width: winWidth, + padding: 10, + }, + boxPayFormHeader: { + marginBottom: 10, + padding: 10, + borderRadius: 5, + borderWidth: 1, + borderColor: '#008445', + backgroundColor: '#DBF1E6', + flexDirection: 'column', + alignItems: 'center', + }, + boxPayFormHeaderText: { + marginBottom: 10, + fontWeight: '700', + fontSize: 16, + }, + boxPayFormHeaderImg: { + width: 149, + height: 24, + }, + boxPayFormItem: { + marginBottom: 15, + }, + boxPayFormItemText: { + fontSize: 16, + marginBottom: 5, + }, + boxPayFormItemInput: { + width: '100%', + height: 40, + paddingHorizontal: 10, + borderColor: '#ABABAB', + borderWidth: 1, + borderRadius: 3, + }, + boxPayFormItemSend: { + width: '100%', + height: 40, + backgroundColor: '#D8262F', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + borderRadius: 5, + }, + boxPayFormItemSendText: { + fontSize: 14, + color: '#fff', + textTransform: 'uppercase', + fontWeight: 'bold', + }, +}); diff --git a/screens/CartStep.tsx b/screens/CartStep.tsx new file mode 100644 index 0000000..fe56108 --- /dev/null +++ b/screens/CartStep.tsx @@ -0,0 +1,872 @@ +import * as React from 'react'; +import { useState } from 'react'; +import { Alert, Button, Image, StyleSheet, Dimensions, SafeAreaView, ScrollView, TouchableOpacity, ImageBackground, Modal } from 'react-native'; +import { LinearGradient } from 'expo-linear-gradient'; +import { Ionicons, FontAwesome } from '@expo/vector-icons'; +import EditScreenInfo from '../components/EditScreenInfo'; +import { Text, View } from '../components/Themed'; +import { TextInput } from 'react-native-gesture-handler'; +import Swiper from 'react-native-swiper'; +import { Asset } from 'expo-asset'; +import { RadioButton, Checkbox } from 'react-native-paper'; +import { Picker } from '@react-native-picker/picker'; +import { useNavigation } from '@react-navigation/core'; + +export default function CartStep() { + return ( + + + + + + ); +} + +const CustommerInfo = () => { + return ( + + + + + + + + + + + + ) +} + +const HeaderCart = () => { + const navigation = useNavigation(); + return ( + + navigation.navigate('Cart')}> + + + Thanh toán + + ) +} + +const CustommerInfoCart = () => { + const [selecSex, setSelecSex] = React.useState('male'); + const [checkedInfo, setCheckedInfo] = React.useState(false); + const [selectedProvince, setSelectedProvince] = React.useState(); + const [selectedDistrict, setSelectedDistrict] = React.useState(); + return ( + + + 1 + Thông tin khách hàng + + + Thông tin người mua + (*) Thông tin bắt buộc + + + + + setSelecSex('male')} /> + + Anh + + + + setSelecSex('female')} /> + + Chị + + + + + + + + + + + + + + + + + + + + + Thông tin người nhận + (*) Thông tin bắt buộc + + + + setCheckedInfo(!checkedInfo)} /> + + Lấy thông tin người mua + + + + + + + + + + + + setSelectedProvince(itemValue) + } + > + + + + + + + + + + setSelectedDistrict(itemValue) + } + > + + + + + + + + + + + + + + ) +} + +const SelecPayOption = () => { + const [checkedPayment, setCheckedPayment] = React.useState('pay1'); + const listPayment = [ + { + id: 1, + name: 'COD - Thanh toán khi nhận hàng', + description: '', + image: require('../assets/images/pay_1.png'), + }, + { + id: 2, + name: 'Thanh toán trực tuyến (bằng thẻ ATM, VISA, MASTER) ', + description: '', + image: require('../assets/images/pay_2.png'), + }, + { + id: 3, + name: 'Trả góp qua Alepay (Ngân Lượng)', + description: '', + image: require('../assets/images/pay_2.png'), + }, + ] + return ( + + + 1 + Phương thức thanh toán + + Chọn phương thức thanh toán + + { + listPayment.map(item => { + let idpay = 'pay' + item.id; + return ( + + + + + {item.name} + + setCheckedPayment(idpay)} /> + + + ) + }) + } + + + ) +} + +const Bill = () => { + const [checkedBill, setCheckedBill] = React.useState(false); + return ( + + + + setCheckedBill(!checkedBill)} /> + + Yêu cầu xuất hóa đơn GTGT cho đơn hàng này + + + + + + + + + + + + + + ) +} + + + +const TotalCart = () => { + const navigation = useNavigation(); + return ( + + + + + Bạn chưa có Naga Xu + + + + + Tổng cộng + 5.000.000đ + + + Giảm giá Voucher + 00đ + + + Phí giao hàng + 00đ + + + Thanh toán + 5.000.000đ + + + Nhận thêm 500 xu + + + Tổng cộng: + 5.000.000 đ + + + navigation.navigate('CartPayInstallment')} style={styles.boxTotalCartSubmitButtonTragop}> + Mua trả góp + + + Đặt hàng + + + + ) +} + +const winWidth = Dimensions.get('window').width; //full width +const winHeight = Dimensions.get('window').height; //full height + + + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: '#fff', + }, + headerCartStep: { + flexDirection: 'row', + alignItems: 'center', + padding: 10, + }, + goBack: { + width: 50, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + goBackIcon: { + fontSize: 24, + }, + headerCartStepTitle: { + fontWeight: '700', + width: winWidth - 70, + textAlign: 'center' + }, + boxCustommerInfoCart: { + width: winWidth, + backgroundColor: '#fff', + paddingHorizontal: 10, + }, + green: { + color: '#008445', + }, + boxInfoCusCart: { + width: '100%', + backgroundColor: 'rgba(0,0,0,0)', + display: 'none', + }, + boxInfoCusCartTitle: { + fontSize: 18, + fontWeight: 'bold', + textTransform: 'uppercase', + color: '#008445', + }, + boxInfoCusCartTitleAll: { + width: '100%', + marginBottom: 10, + height: 40, + flexDirection: 'row', + alignItems: 'center', + borderBottomColor: '#ababab', + borderBottomWidth: 1, + paddingBottom: 5, + }, + boxInfoCusCartTitleAllNum: { + width: 30, + height: 30, + textAlign: 'center', + lineHeight: 30, + borderColor: '#008445', + borderWidth: 1, + borderRadius: 15, + marginRight: 10, + }, + boxInfoCusCartHeading: { + marginBottom: 10, + backgroundColor: 'rgba(0,0,0,0)', + flexDirection: 'row', + alignItems: 'center' + }, + boxInfoCusCartHeadingText: { + fontSize: 16, + fontWeight: 'bold', + marginRight: 5, + }, + boxInfoCusCartHeadingNote: {}, + boxInfoCusCartItemSex: { + padding: 10, + marginBottom: 10, + width: '100%', + flexDirection: 'row', + }, + boxInfoCusCartItemSexIt: { + flexDirection: 'row', + alignItems: 'center', + marginRight: 20, + }, + itemRadio: { + width: 36, + height: 36, + borderRadius: 18, + borderWidth: 1, + borderColor: '#e1e1e1', + marginRight: 5, + }, + boxInfoCusCartContent: { + width: '100%', + marginBottom: 10, + backgroundColor: 'rgba(0,0,0,0)', + }, + boxInfoCusCartItem: { + width: '100%', + marginBottom: 10, + backgroundColor: 'rgba(0,0,0,0)', + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + }, + boxInfoCusCartItemInput: { + width: '100%', + height: 42, + borderRadius: 5, + borderWidth: 1, + borderColor: '#e1e1e1', + paddingHorizontal: 10, + backgroundColor: '#fff', + }, + red: { + color: '#d9282f' + }, + boxInfoCusCartItemHalf: { + width: winWidth / 2 - 15, + backgroundColor: 'rgba(0,0,0,0)', + }, + boxInfoCusCartItemArea: { + width: '100%', + height: 85, + borderRadius: 5, + borderWidth: 1, + borderColor: '#e1e1e1', + paddingHorizontal: 10, + backgroundColor: '#fff', + }, + boxInfoCusCartItemCheckInfo: { + flexDirection: 'row', + alignItems: 'center', + marginBottom: 10, + backgroundColor: 'rgba(0,0,0,0)' + }, + picker: { + height: 42, + width: '100%', + backgroundColor: '#fff', + borderRadius: 5, + }, + onePickerItem: { + height: 46, + color: '#222', + fontSize: 14, + textAlign: 'center', + width: '100%', + backgroundColor: '#fff', + }, + active: { + display: 'flex', + }, + noBg: { + width: '100%', + backgroundColor: 'rgba(0,0,0,0)' + }, + boxPayment: { + width: '100%', + marginBottom: 20, + backgroundColor: 'rgba(0,0,0,0)' + }, + boxPaymentHead: { + width: '100%', + marginBottom: 10, + backgroundColor: '#008445', + lineHeight: 40, + paddingHorizontal: 10, + fontSize: 18, + fontWeight: 'bold', + textTransform: 'uppercase', + color: '#fff', + }, + boxPaymentTitle: { + marginBottom: 10, + fontSize: 16, + fontWeight: 'bold', + }, + boxPaymentList: {}, + paymentItem: { + width: '100%', + padding: 10, + borderBottomWidth: 1, + borderBottomColor: '#e1e1e1', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + }, + paymentItemImage: { + width: 31, + height: 31, + borderRadius: 15.5, + overflow: 'hidden', + marginRight: 10, + }, + paymentItemImageCt: { + width: 31, + height: 31, + }, + paymentItemText: { + width: winWidth - 130, + }, + paymentItemRadio: { + width: 36, + height: 36, + borderRadius: 18, + borderWidth: 1, + borderColor: '#e1e1e1', + marginLeft: 10, + }, + boxBill: { + width: '100%', + paddingVertical: 10, + marginBottom: 20, + }, + boxBillList: { + display: 'none', + }, + boxBillText: { + fontSize: 12, + }, + boxCartItem: { + width: '100%', + marginBottom: 20, + backgroundColor: 'rgba(0,0,0,0)' + }, + boxCartItemBuyOther: { + marginBottom: 10, + flexDirection: 'row', + alignItems: 'center', + }, + boxCartItemBuyOtherIcon: { + fontSize: 15, + color: '#d9282f', + marginRight: 5, + }, + boxCartItemBuyOtherIconText: { + fontSize: 15, + color: '#d9282f', + marginRight: 5, + textTransform: 'uppercase' + }, + boxVoucher: { + width: '100%', + marginBottom: 20, + backgroundColor: 'rgba(0,0,0,0)' + }, + boxVoucherForm: { + marginBottom: 10, + flexDirection: 'row', + alignItems: 'center', + borderRadius: 5, + }, + boxVoucherFormInput: { + width: winWidth - 98, + height: 40, + paddingHorizontal: 10, + backgroundColor: '#fff', + borderTopLeftRadius: 5, + borderBottomLeftRadius: 5, + overflow: 'hidden', + }, + boxVoucherFormButton: { + width: 78, + height: 40, + backgroundColor: '#6c757d', + borderTopRightRadius: 5, + borderBottomRightRadius: 5, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + }, + boxVoucherFormButtonText: { + color: '#fff', + }, + boxVoucherShowPop: { + width: '100%', + backgroundColor: 'rgba(0,0,0,0)' + }, + boxVoucherShowPopButton: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + padding: 10, + borderBottomWidth: 1, + borderBottomColor: '#e1e1e1' + }, + boxVoucherShowPopButtonCt: { + flexDirection: 'row', + alignItems: 'center', + }, + boxVoucherShowPopImg: { + marginRight: 10, + }, + boxVoucherShowPopText: { + color: '#d9282f', + }, + boxVoucherShowPopIcon: {}, + boxXuShowPopButton: { + flexDirection: 'row', + alignItems: 'center', + padding: 10, + borderBottomWidth: 1, + borderBottomColor: '#e1e1e1' + }, + boxXuShowPopButtonImg: { + marginRight: 10, + }, + boxXuShowPopButtonText: { + marginRight: 10, + }, + boxXuShowPopButtonIcon: {}, + boxVoucherNote: { + backgroundColor: '#f2f2f2', + padding: 10, + }, + boxVoucherNoteText: { + marginBottom: 10, + fontStyle: 'italic', + }, + TextBold: { + fontWeight: 'bold', + }, + boxCloseModalVoucher: { + width: winWidth, + backgroundColor: 'rgba(0,0,0,0.5)' + }, + boxCloseModalVoucherPress: { + width: '100%', + }, + contentPopVoucher: { + width: winWidth, + padding: 10, + height: winHeight, + paddingTop: 50, + }, + contentPopVoucherHeader: { + flexDirection: 'row', + alignItems: 'center', + marginBottom: 10, + }, + contentPopVoucherBack: { + width: 50, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + contentPopVoucherBackIcon: { + fontSize: 24, + height: 24, + }, + contentPopVoucherTitle: { + width: winWidth - 70, + fontSize: 18, + lineHeight: 25, + textAlign: 'center', + fontWeight: '700' + }, + contentPopVoucherForm: { + width: '100%', + padding: 10, + borderRadius: 5, + backgroundColor: '#f5f5f5', + marginBottom: 10, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + contentPopVoucherFormText: { + width: 78, + }, + contentPopVoucherFormInput: { + width: winWidth - 205, + height: 40, + borderRadius: 5, + paddingHorizontal: 10, + backgroundColor: '#fff', + borderWidth: 1, + borderColor: '#ababab' + }, + contentPopVoucherFormButton: { + width: 72, + height: 40, + borderRadius: 5, + backgroundColor: '#d9282f', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + }, + contentPopVoucherFormButtonText: { + fontSize: 12, + textTransform: 'uppercase', + color: '#fff', + fontWeight: 'bold' + }, + contentPopVoucherPop: { + width: '100%', + height: winHeight - 350, + }, + contentPopVoucherPopTitle: { + marginBottom: 10, + }, + contentPopVoucherPopList: { + width: '100%', + height: winHeight - 370, + }, + contentPopVoucherPopItem: { + width: '100%', + marginBottom: 10, + borderWidth: 1, + borderColor: '#999', + flexDirection: 'row', + borderRadius: 5, + overflow: 'hidden', + alignItems: 'center', + paddingRight: 8, + }, + contentPopVoucherPopItemLeft: { + width: 130, + padding: 10, + backgroundColor: '#999', + flexDirection: 'column', + alignItems: 'center', + }, + contentPopVoucherPopItemHasUse: { + borderColor: '#008445', + }, + contentPopVoucherPopItemLeftHasUse: { + backgroundColor: '#008445' + }, + contentPopVoucherPopItemLeftSt: { + color: '#fff', + marginBottom: 5, + fontSize: 15, + }, + contentPopVoucherPopItemLeftNd: { + color: '#fff', + marginBottom: 5, + fontSize: 15, + textTransform: 'uppercase', + fontWeight: 'bold' + }, + contentPopVoucherPopItemCenter: { + + }, + contentPopVoucherPopItemCenterText: { + width: winWidth - 194, + paddingHorizontal: 10, + }, + contentPopVoucherPopItemCheck: { + width: 36, + height: 36, + borderRadius: 18, + borderWidth: 1, + borderColor: '#999', + }, + contentPopVoucherPopBot: { + width: '100%', + height: 60, + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + }, + contentPopVoucherPopBotBack: { + width: winWidth / 2 - 15, + backgroundColor: '#ebebeb', + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + borderRadius: 5, + height: 40, + }, + contentPopVoucherPopBotBackText: { + fontSize: 18, + textTransform: 'uppercase', + }, + contentPopVoucherPopBotOk: { + width: winWidth / 2 - 15, + backgroundColor: '#d9282f', + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + borderRadius: 5, + height: 40, + }, + contentPopVoucherPopBotOkText: { + fontSize: 18, + textTransform: 'uppercase', + color: '#fff', + fontWeight: 'bold', + }, + boxTotalCart: { + }, + boxTotalCartXu: { + width: '100%', + paddingVertical: 15, + borderBottomColor: '#e1e1e1', + borderBottomWidth: 1, + flexDirection: 'row', + alignItems: 'center', + }, + boxTotalCartXuImg: { + width: 20, + height: 20, + marginRight: 10, + }, + boxTotalCartXuButton: { + flexDirection: 'row', + alignItems: 'center', + }, + boxTotalCartButtonTex: {}, + boxTotalCartButtonIcon: {}, + boxTotalCartItem: { + width: '100%', + paddingVertical: 15, + borderBottomColor: '#e1e1e1', + borderBottomWidth: 1, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + boxTotalCartItemLeft: { + fontSize: 14, + textTransform: 'uppercase', + }, + boxTotalCartItemRight: { + fontSize: 14, + }, + boxTotalCartItemCoin: { + color: '#FE9923', + textAlign: 'right', + width: '100%' + }, + boxTotalCartSubmit: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + }, + boxTotalCartSubmitButton: { + width: winWidth / 2 - 15, + height: 40, + backgroundColor: '#d9282f', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + borderRadius: 5, + }, + boxTotalCartSubmitText: { + fontSize: 15, + color: '#fff', + textTransform: 'uppercase', + fontWeight: 'bold', + }, + boxTotalCartItemAll: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'flex-end', + paddingVertical: 10, + }, + boxTotalCartItemAllText: { + marginRight: 5, + }, + boxTotalCartItemAllPrice: { + fontSize: 16, + color: '#D8262F', + }, + boxTotalCartSubmitButtonTragop: { + width: winWidth / 2 - 15, + height: 40, + backgroundColor: '#FE9923', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + borderRadius: 5, + }, + boxTotalCartSubmitTextTragop: { + fontSize: 15, + color: '#fff', + textTransform: 'uppercase', + fontWeight: 'bold', + }, +}); diff --git a/screens/CustomerInfo.tsx b/screens/CustomerInfo.tsx new file mode 100644 index 0000000..fe584b7 --- /dev/null +++ b/screens/CustomerInfo.tsx @@ -0,0 +1,289 @@ +import 'react-native-gesture-handler'; +import * as React from 'react'; +import { useState } from 'react'; +import { Alert, Button, Image, StyleSheet, Dimensions, SafeAreaView, ScrollView, TouchableOpacity, Modal, Pressable, Share } from 'react-native'; +import Constants from 'expo-constants'; +import { Ionicons, FontAwesome } from '@expo/vector-icons'; +import { LinearGradient } from 'expo-linear-gradient'; +import { useNavigation } from '@react-navigation/native'; +import EditScreenInfo from '../components/EditScreenInfo'; +import { Text, View, } from '../components/Themed'; +import useColorScheme from '../hooks/useColorScheme'; +import { TextInput } from 'react-native-gesture-handler'; +import { RadioButton, Checkbox } from 'react-native-paper'; +import { Picker } from '@react-native-picker/picker'; + +export default function CustomerInfo() { + return ( + + + + + + + + ) +} + +const HeaderAccountOrderList = () => { + const navigation = useNavigation(); + return ( + + navigation.goBack()} style={styles.headerAOLBack}> + + + Thông tin tài khoản + + ) +} + +const CustomerInfoContent = () => { + const [openModalCusInfoChange, setOpenModalCusInfoChange] = useState(false); + return ( + + + setOpenModalCusInfoChange(true)} style={styles.boxCustommerBt}> + Họ tên + + Nguyễn Quỳnh + + + + + + + Giới tính + + Nữ + + + + + + + Địa chỉ email + + quynhnt@gmail.com + + + + + + + Địa chỉ nhà + + 100 Láng Hạ, Đống Đa + + + + + + + Tỉnh / TP + + Hà Nội + + + + + + + Điện thoại + + 0912345678 + + + + + + + Thay đổi mật khẩu + + + + + + + { setOpenModalCusInfoChange(!openModalCusInfoChange); }}> + + setOpenModalCusInfoChange(!openModalCusInfoChange)} style={styles.cusInfoContentBg}> + + + + Họ tên + setOpenModalCusInfoChange(!openModalCusInfoChange)}> + + + + + Họ tên + + + + Thay đổi + + + + + + ) +} + + +const winWidth = Dimensions.get('window').width; //full width +const winHeight = Dimensions.get('window').height; //full height +const winWidthP10 = winWidth - 20; +const halfWinWidth = winWidth / 2; +const ratio = winWidthP10 / 850; //541 is actual image width + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: '#fff', + }, + headerAOL: { + width: winWidth, + padding: 10, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + headerAOLBack: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + headerAOLBackIcon: { + fontSize: 24, + }, + headerAOLSearch: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + headerAOLSearchIcon: { + fontSize: 24, + }, + headerAOLTitle: { + width: winWidth - 60, + textAlign: 'center', + fontWeight: '700', + }, + headerAOLChat: { + width: 40, + height: 40, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'flex-end', + }, + headerAOLChatIcon: { + fontSize: 24, + }, + GreenColor: { + color: '#008445', + }, + OrangeColor: { + color: '#FE9923', + }, + RedColor: { + color: '#D8262F', + }, + boxCustommer: { + width: winWidth, + paddingTop: 10, + backgroundColor: '#f2f2f2', + }, + boxCustommerItem: { + width: winWidth, + borderBottomWidth: 1, + borderBottomColor: '#f2f2f2', + }, + boxCustommerBt: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + paddingHorizontal: 10, + height: 40, + }, + boxCustommerTextLeft: {}, + boxCustommerCtRight: { + flexDirection: 'row', + alignItems: 'center', + }, + boxCustommerTextRight: { + color: '#777777', + marginRight: 10, + }, + boxCustommerIcon: { + fontSize: 18, + color: '#777' + }, + cusInfoContent: { + width: winWidth, + height: winHeight, + backgroundColor: 'rgba(0,0,0,0)' + }, + cusInfoContentBg: { + width: winHeight, + height: winHeight - 236, + backgroundColor: 'rgba(0,0,0,0.5)', + }, + cusInfoContentct: { + width: winWidth, + paddingHorizontal: 10, + backgroundColor: '#fff', + height: 236, + }, + cusInfoContentctHead: { + marginBottom: 30, + position: 'relative', + padding: 10, + }, + cusInfoContentctHeadText: { + width: '100%', + textAlign: 'center', + fontSize: 16, + fontWeight: '700' + }, + cusInfoContentctHeadBt: { + position: 'absolute', + top: 10, + right: 10, + zIndex: 2, + }, + cusInfoContentctHeadBtIcon: { + fontSize: 18, + }, + cusInfoContentctIp: { + borderBottomColor: '#ababab', + borderBottomWidth: 1, + marginBottom: 20, + }, + cusInfoContentctIpText: { + marginBottom: 10, + fontWeight: '500', + color: '#008445' + }, + cusInfoContentctIpInput: { + width: '100%', + height: 40, + }, + cusInfoContentctBtSubmit: { + width: '100%', + height: 40, + backgroundColor: '#D8262F', + borderRadius: 5, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + }, + cusInfoContentctBtSubmitText: { + textTransform: 'uppercase', + fontWeight: '700', + color: '#fff' + }, +}) \ No newline at end of file diff --git a/screens/ForgotPassword.tsx b/screens/ForgotPassword.tsx new file mode 100644 index 0000000..2e54a10 --- /dev/null +++ b/screens/ForgotPassword.tsx @@ -0,0 +1,80 @@ +import * as React from 'react'; +import { useState } from 'react'; +import { Alert, Button, Image, StyleSheet, Dimensions, SafeAreaView, ScrollView, TouchableOpacity, ImageBackground, Modal, Pressable } from 'react-native'; +import { LinearGradient } from 'expo-linear-gradient'; +import { Ionicons, FontAwesome } from '@expo/vector-icons'; +import EditScreenInfo from '../components/EditScreenInfo'; +import { Text, View } from '../components/Themed'; +import { TextInput } from 'react-native-gesture-handler'; +import { useNavigation } from '@react-navigation/native'; + +export default function ForgotPassword() { + const navigation = useNavigation(); + return ( + + + Bạn quên mật khẩu vào tài khoản? + Vui lòng nhập địa chỉ email đã đăng ký với chúng tôi để tạo mật khẩu mới. Chúng tôi sẽ gửi 1 email vào địa chỉ email cung cấp và yêu cầu xác minh trước khi có thể tạo mật khẩu mới + + + + + Lấy lại mật khẩu + + + + ); +} + +const winWidth = Dimensions.get('window').width; //full width +const winHeight = Dimensions.get('window').height; //full height + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + }, + boxForgotPassword: { + width: winWidth, + padding: 10, + height: '100%', + }, + boxForgotPasswordTitle: { + marginBottom: 20, + textAlign: 'center', + fontWeight: '700' + }, + boxForgotPasswordNote: { + textAlign: 'center', + marginBottom: 20, + fontWeight: '300' + }, + boxForgotPasswordInput: { + width: '100%', + marginBottom: 15, + borderBottomColor: '#ABABAB', + borderBottomWidth: 1, + paddingBottom: 5, + }, + boxForgotPasswordInputCt: { + width: '100%', + height: 30, + }, + boxForgotPasswordButton: { + width: '100%', + height: 40, + borderRadius: 5, + marginBottom: 10, + backgroundColor: '#D8262F', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + }, + boxForgotPasswordButtonText: { + fontWeight: '700', + color: '#fff', + textTransform: 'uppercase', + }, + +}); diff --git a/screens/Login.tsx b/screens/Login.tsx index 0f875da..0c59287 100644 --- a/screens/Login.tsx +++ b/screens/Login.tsx @@ -12,53 +12,51 @@ export default function Login() { const navigation = useNavigation(); return ( - - - - Chào mừng đến với Nagakawa! - Đăng nhập ngay! + + + + + + + + + + - - Khách hàng mới? - navigation.navigate('Register')}> - Đăng ký + + + + navigation.navigate('ForgotPassword')} style={styles.boxLoginItemForgitPas}> + Quên? - tại đây - - - - Email đăng nhập - - - - Mật khẩu - - - - - Quên mật khẩu? - - - navigation.navigate('AccountHome')}> - Đăng nhập - - - Hoặc đăng nhập bằng - - - - - - - - - - - - - + navigation.navigate('AccountHome')} style={styles.boxLoginButton}> + Đăng nhập + + + Khách hàng mới? + navigation.navigate('Register')}> + Đăng ký + + + + + Hoặc + + + + + + + + + + + + + + ); } @@ -74,110 +72,120 @@ const styles = StyleSheet.create({ }, boxLogin: { width: winWidth, + height: winHeight - 130, padding: 10, - backgroundColor: 'rgba(0,0,0,0)' }, - boxLoginTitle: { - width: '100%', - backgroundColor: 'rgba(0,0,0,0)', + boxLoginTop: { + flexDirection: 'row', + justifyContent: 'center', marginBottom: 20, }, - boxLoginTitleText: { - fontSize: 18, - fontWeight: 'bold', - }, - boxLoginToRegis: { - width: '100%', - backgroundColor: 'rgba(0,0,0,0)', + boxLoginLogo: {}, + boxLoginItemList: {}, + boxLoginItem: { marginBottom: 10, flexDirection: 'row', alignItems: 'center', + borderBottomColor: '#ABABAB', + borderBottomWidth: 1, + paddingBottom: 5, + position: 'relative', + }, + boxLoginItemIcon: { + fontSize: 24, + width: 32, + }, + boxLoginItemInput: { + width: winWidth - 52, + height: 30, + }, + boxLoginItemInputMk: { + paddingRight: 50, + }, + boxLoginItemForgitPas: { + position: 'absolute', + right: 0, + borderLeftColor: '#e1e1e1', + borderLeftWidth: 1, + width: 50, + height: 30, + flexDirection: 'row', justifyContent: 'flex-end', + alignItems: 'center', }, - green: { - color: '#008445', + boxLoginItemForgitPasText: { + color: '#0070C7' }, - loginCartSocialForm: { - marginBottom: 10, - padding: 10, - }, - loginCartSocialFormItem: { - width: '100%', - marginBottom: 10, - }, - loginCartSocialFormItemText: { - marginBottom: 5, - fontWeight: 'bold' - }, - loginCartSocialFormItemInput: { + boxLoginButton: { width: '100%', height: 40, - borderWidth: 1, - borderColor: '#e1e1e1', borderRadius: 5, - }, - loginCartSocialFormNote: { marginBottom: 10, - flexDirection: 'row', - }, - boxLoginForgetPass: { - width: '100%', - flexDirection: 'row', - marginBottom: 15, - justifyContent: 'flex-end', - }, - boxLoginForgetPassText: { - color: '#008445', - }, - boxLoginSubmit: { - width: '100%', - height: 40, + backgroundColor: '#D8262F', flexDirection: 'row', alignItems: 'center', justifyContent: 'center', - borderRadius: 5, - overflow: 'hidden', - backgroundColor: '#d9282f', - marginBottom: 20, }, - boxLoginSubmitText: { - fontWeight: 'bold', + boxLoginButtonText: { + fontWeight: '700', + color: '#fff', + textTransform: 'uppercase', + }, + boxLoginButtonRegis: { + marginBottom: 20, + flexDirection: 'row', + alignItems: 'center', + }, + boxLoginButtonRegisText: { + marginRight: 5, + }, + boxLoginButtonRegisBt: { + color: '#0070C7', + }, + boxLoginLineChia: { + marginBottom: 20, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center' + }, + boxLoginLine: { + width: 80, + height: 1, + backgroundColor: '#e1e1e1', + }, + boxLoginLineChiaText: { + marginHorizontal: 5, + color: '#777', + fontWeight: '300', + }, + loginSocial: { + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + }, + loginSocialItem: { + width: 40, + height: 40, + borderRadius: 20, + backgroundColor: '#3B5998', + marginHorizontal: 8, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + }, + loginSocialItemIcon: { + fontSize: 18, color: '#fff' }, - boxLoginOther: { - marginBottom: 20, - flexDirection: 'row', - justifyContent: 'center', + loginSocialItemImg: { + width: 22, + height: 24, }, - boxLoginOtherText: {}, - boxLoginSocial: { - flexDirection: 'row', - justifyContent: 'center', - alignItems: 'center', + loginSocialItemFace: {}, + loginSocialItemGoogle: { + backgroundColor: '#DF4A32', }, - boxLoginSocialItem: { - width: 34, - height: 34, - flexDirection: 'row', - justifyContent: 'center', - alignItems: 'center', - borderRadius: 5, - marginHorizontal: 5, - backgroundColor: '#3b5998', - }, - boxLoginSocialFace: {}, - boxLoginSocialGoogle: { - backgroundColor: '#df4a32', - }, - boxLoginSocialZalo: { - backgroundColor: '#0f8edd', - }, - boxLoginSocialIcon: { - fontSize: 16, - color: '#fff', - }, - boxLoginSocialImg: { - width: 16, - height: 16, + loginSocialItemZalo: { + backgroundColor: '#0F8EDD' }, }); diff --git a/screens/ProductHotList.tsx b/screens/ProductHotList.tsx new file mode 100644 index 0000000..2db48a4 --- /dev/null +++ b/screens/ProductHotList.tsx @@ -0,0 +1,797 @@ +import * as React from 'react'; +import { useState } from 'react'; +import { Alert, Button, Image, StyleSheet, Dimensions, SafeAreaView, ScrollView, TouchableOpacity, ImageBackground, Modal, Pressable } from 'react-native'; +import { LinearGradient } from 'expo-linear-gradient'; +import { Ionicons, FontAwesome } from '@expo/vector-icons'; +import EditScreenInfo from '../components/EditScreenInfo'; +import { Text, View } from '../components/Themed'; +import { TextInput } from 'react-native-gesture-handler'; +import { useNavigation } from '@react-navigation/native'; + +export default function ProductHotList() { + return ( + + + + + + + + + + + ); +} + +const SortAndFilter = () => { + const [openSort, setopenSort] = useState(true); + const [openFilter, setOpenFilter] = useState(false); + return ( + + + setopenSort(!openSort)}> + Sắp xếp: + Mới nhất + + + + + Mới nhất + + + + Giá giảm dần + + + Giá tăng dần + + + + + setOpenFilter(true)}> + + Lọc + + { setOpenFilter(!openFilter); }}> + + setOpenFilter(!openFilter)} style={styles.filterItemContentBg}> + + + + setOpenFilter(!openFilter)}> + + + Bộ lọc + + + + + + + + + + + + + Xem 1020 sản phẩm + + + + + + + + ) +} + +const PriceFilterList = () => { + const dataPriceFilter = [ + { + url: '/', + name: 'Dưới 200.000', + is_current: 1, + }, + { + url: '/', + name: 'Từ 200.000 đến 500.000', + is_current: 0, + }, + { + url: '/', + name: 'Từ 500.000 đến 1.000.000', + is_current: 0, + }, + { + url: '/', + name: 'Từ 1.000.000 đến 5.000.000', + is_current: 0, + }, + { + url: '/', + name: 'Từ 5.000.000 đến 15.000.000', + is_current: 0, + }, + { + url: '/', + name: 'Trên 15.000.000', + is_current: 0, + }, + ] + return ( + + Khoảng giá + + { + dataPriceFilter.map((item, index) => + + ) + } + + + Hoặc nhập giá ở ô dưới đây + + + + + + + ) +} + +const OtherFilterList = () => { + const [openAllFilter, setOpenAllFilter] = useState(true); + const dataPriceFilter = [ + { + url: '/', + name: '1 - 2 lít', + is_current: 1, + }, + { + url: '/', + name: '2 - 3 lít', + is_current: 0, + }, + { + url: '/', + name: '3 - 4 lít', + is_current: 0, + }, + { + url: '/', + name: '4 - 9 lít', + is_current: 0, + }, + { + url: '/', + name: '9 - 12 lít', + is_current: 0, + }, + { + url: '/', + name: '12 - 15 lít', + is_current: 0, + }, + ] + return ( + + Dung tích + + { + dataPriceFilter.map((item, index) => + + ) + } + + + setOpenAllFilter(!openAllFilter)} style={styles.filterItemBoxVmButton}> + Xem thêm + + + + ) +} + +const OtherFilterListT = () => { + const [openAllFilter, setOpenAllFilter] = useState(true); + const dataPriceFilter = [ + { + url: '/', + name: '30W - 100W', + is_current: 1, + }, + { + url: '/', + name: '100W - 300W', + is_current: 0, + }, + { + url: '/', + name: '300W - 500W', + is_current: 0, + }, + { + url: '/', + name: '500W - 1000W', + is_current: 0, + }, + { + url: '/', + name: '1000W - 2000W', + is_current: 0, + }, + { + url: '/', + name: '2000W - 5000W', + is_current: 0, + }, + ] + return ( + + Công xuất + + { + dataPriceFilter.map((item, index) => + + ) + } + + + setOpenAllFilter(!openAllFilter)} style={styles.filterItemBoxVmButton}> + Xem thêm + + + + ) +} + +const FilterItem = (props: { name: string, isCurrent: number }) => { + const { name, isCurrent } = props; + return ( + 0 ? [styles.filterItem, styles.filterItemActive] : styles.filterItem} onPress={() => Alert.alert('danh muc sp')}> + {name} + { + isCurrent > 0 ? + + + + + : + } + + ); +} + +const ListCatCategory = () => { + const dataCat = [ + { + id: 1, + url: '/', + name: 'Ấm siêu tốc' + }, + { + id: 2, + url: '/', + name: 'Bàn là' + }, + { + id: 3, + url: '/', + name: 'Bếp từ' + }, + { + id: 4, + url: '/', + name: 'Bếp hồng ngoại' + }, + { + id: 5, + url: '/', + name: 'Bình thủy điện' + }, + ] + let dataCatLength = dataCat.length; + return ( + + + { + dataCat.map((item, index) => + + {item.name} + + ) + } + + + ) +} + +const ProductCategory = () => { + const navigation = useNavigation(); + return ( + + + + + + + + + + navigation.navigate('ProductDetail')}> + Nồi áp suất inox 304 cao cấp Nagakawa NAG1452 (5L) + + 1.292.000đ + + 1.634.000đ + -30% + + + *3 khuyến mãi trị giá + 500.000đ + + + + + + + + + + + + + Nồi áp suất inox 304 cao cấp Nagakawa NAG1452 (5L) + 1.292.000đ + + 1.634.000đ + -30% + + + *3 khuyến mãi trị giá + 500.000đ + + + + + + + + + + + + + Nồi áp suất inox 304 cao cấp Nagakawa NAG1452 (5L) + 1.292.000đ + + 1.634.000đ + -30% + + + *3 khuyến mãi trị giá + 500.000đ + + + + + + + + + + + + + Nồi áp suất inox 304 cao cấp Nagakawa NAG1452 (5L) + 1.292.000đ + + 1.634.000đ + -30% + + + *3 khuyến mãi trị giá + 500.000đ + + + + + + ) +} + +const winWidth = Dimensions.get('window').width; //full width +const winHeight = Dimensions.get('window').height; //full height + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + }, + sortAndFilter: { + width: winWidth, + padding: 10, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + position: 'relative', + borderBottomColor: '#e1e1e1', + borderBottomWidth: 1, + zIndex: 5, + }, + boxSort: { + zIndex: 1, + }, + boxSortButton: { + flexDirection: 'row', + alignItems: 'center', + height: 30, + }, + boxSortButtonTextBold: { + fontSize: 14, + fontWeight: 'bold' + }, + boxSortButtonActive: {}, + boxSortButtonIcon: { + marginLeft: 5, + }, + boxSortList: { + width: winWidth, + paddingHorizontal: 10, + position: 'absolute', + left: -10, + top: 40, + display: 'none', + }, + boxSortListActive: { + display: 'flex', + }, + boxSortItem: { + paddingVertical: 10, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + boxSortItemActive: { + borderBottomColor: '#D8262F', + borderBottomWidth: 1, + }, + boxSortItemText: { + fontSize: 14, + }, + boxSortItemTextActive: { + color: '#D8262F' + }, + boxSortItemTextIcon: { + color: '#D8262F' + }, + boxFilter: { + width: 70, + height: 30, + alignItems: 'center', + flexDirection: 'row', + justifyContent: 'flex-end', + borderLeftWidth: 1, + borderLeftColor: '#e1e1e1' + }, + boxFilterButton: { + flexDirection: 'row', + alignItems: 'center' + }, + boxFilterIcon: { + fontSize: 18, + marginRight: 10, + }, + boxFilterText: { + fontSize: 14, + }, + filterItemContent: { + flex: 1, + justifyContent: 'flex-end', + alignItems: 'flex-end', + backgroundColor: 'rgba(0,0,0,0.5)', + position: 'relative', + zIndex: 1, + flexDirection: 'row', + }, + filterItemContentBg: { + width: winWidth - 300, + height: winHeight, + }, + headerPopFilter: { + width: '100%', + paddingTop: 30, + paddingHorizontal: 10, + flexDirection: 'row', + alignItems: 'center', + borderBottomWidth: 1, + borderBottomColor: '#e1e1e1', + position: 'relative', + }, + filterItemListClose: { + width: 40, + height: 40, + lineHeight: 40, + fontSize: 26, + }, + headerPopFilterText: { + textAlign: 'center', + fontSize: 17, + fontWeight: 'bold', + width: '100%', + paddingRight: 40, + }, + filterItemList: { + width: 300, + height: winHeight, + backgroundColor: '#fff', + shadowColor: "#000", + shadowOffset: { + width: 0, + height: 0, + }, + shadowOpacity: 2.22, + shadowRadius: 2.22, + elevation: 3, + overflow: 'hidden', + position: 'relative', + zIndex: 2, + }, + listBoxFilter: { + width: '100%', + height: winHeight - 130, + }, + filterViewAll: { + width: '100%', + height: 60, + paddingHorizontal: 10, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + }, + filterViewAllButton: { + width: '100%', + height: 40, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + backgroundColor: '#D8262F', + borderRadius: 5, + }, + filterViewAllButtonText: { + color: '#fff', + }, + filterItemListTitleName: { + fontWeight: 'bold', + marginBottom: 10, + }, + filterItemBoxList: { + width: '100%', + flexDirection: 'row', + flexWrap: 'wrap', + justifyContent: 'space-between', + alignItems: 'center', + }, + filterItem: { + width: 135, + height: 40, + alignItems: 'center', + flexDirection: 'row', + justifyContent: 'center', + backgroundColor: 'rgba(0,0,0,0.2)', + borderRadius: 3, + marginBottom: 10, + borderWidth: 1, + borderColor: 'rgba(0,0,0,0.2)', + position: 'relative', + }, + filterItemActive: { + borderColor: '#D8262F' + }, + filterItemName: { + width: '100%', + textAlign: 'center' + }, + boxProductCategory: { + width: winWidth, + }, + filterItemBox: { + width: '100%', + padding: 10, + borderBottomWidth: 1, + borderBottomColor: '#e1e1e1', + }, + filterCurrent: { + backgroundColor: 'rgba(0,0,0,0)', + position: 'absolute', + right: 0, + top: 0, + }, + filterCurrentImg: { + width: 24, + height: 22, + }, + filterCurrentIcon: { + position: 'absolute', + zIndex: 1, + color: '#fff', + right: 0, + top: 0, + }, + filterItemBoxInput: { + width: '100%', + marginTop: 10, + }, + filterItemBoxInputText: { + marginBottom: 10, + }, + filterItemBoxInputCtList: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + filterItemBoxInputCt: { + width: 135, + height: 40, + paddingHorizontal: 10, + borderColor: '#e1e1e1', + borderWidth: 1, + borderRadius: 3, + }, + filterItemBoxListHeight: { + width: '100%', + flexDirection: 'row', + flexWrap: 'wrap', + justifyContent: 'space-between', + alignItems: 'center', + maxHeight: 100, + overflow: 'hidden' + }, + filterItemBoxListHeightAuto: { + maxHeight: 'auto' + }, + filterItemBoxVm: { + width: '100%', + marginBottom: 10, + flexDirection: 'row', + justifyContent: 'center', + marginTop: 10, + }, + filterItemBoxVmButton: { + width: 128, + height: 40, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + borderWidth: 1, + borderColor: '#56C4F5', + borderRadius: 3, + }, + filterItemBoxVmButtonText: { + color: '#56C4F5', + fontSize: 14, + }, + boxCatCategory: { + padding: 10, + }, + boxCatCategoryItem: { + display: 'flex', + padding: 10, + backgroundColor: 'rgba(0,0,0,0.08)', + marginRight: 10, + }, + boxCatCategoryItemLast: { + marginRight: 0, + }, + boxCatCategoryItemText: { + fontSize: 14, + }, + pContainer: { + width: '100%', + padding: 10, + }, + pImgContent: { + width: '100%', + position: 'relative', + paddingTop: '100%', + marginBottom: 10, + }, + pNew: { + width: 24, + height: 18, + position: 'absolute', + zIndex: 6, + top: 0, + left: 0, + }, + pImg: { + width: '100%', + position: 'absolute', + zIndex: 5, + top: 0, + left: 0, + right: 0, + bottom: 0, + }, + pTraGop: { + width: 68, + height: 16, + position: 'absolute', + zIndex: 6, + bottom: 0, + left: '50%', + transform: [{ translateX: -34 }], + }, + pInfo: { + width: '100%', + }, + pName: { + width: '100%', + fontSize: 14, + marginBottom: 10, + }, + pPrice: { + width: '100%', + fontSize: 18, + marginBottom: 10, + color: '#D8262F', + fontWeight: 'bold', + }, + pAllSale: { + width: '100%', + flexDirection: 'row', + alignItems: 'center', + marginBottom: 10, + }, + pOldPrice: { + color: '#A1A1A1', + fontSize: 14, + textDecorationLine: 'line-through', + }, + pDiscount: { + paddingVertical: 5, + backgroundColor: '#D8262F', + width: 50, + textAlign: 'center', + color: '#fff', + borderRadius: 5, + overflow: 'hidden', + marginLeft: 5, + }, + pOffer: { + flexDirection: 'row', + alignItems: 'center', + }, + pOfferText: { + fontSize: 10, + color: '#A1A1A1', + }, + pOfferPrice: { + fontSize: 10, + color: '#D8262F', + }, + pItem: { + width: winWidth / 2 - 15, + marginBottom: 10, + borderRadius: 5, + overflow: 'hidden', + shadowColor: "#000", + shadowOffset: { + width: 0, + height: 3, + }, + shadowOpacity: 0.27, + shadowRadius: 4.65, + elevation: 6, + }, + boxProductCategoryList: { + width: winWidth, + padding: 10, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + flexWrap: 'wrap', + backgroundColor: '#f2f2f2', + }, +}); diff --git a/screens/Register.tsx b/screens/Register.tsx index 0fdf8d2..45ba724 100644 --- a/screens/Register.tsx +++ b/screens/Register.tsx @@ -8,81 +8,81 @@ import { Text, View } from '../components/Themed'; import { TextInput } from 'react-native-gesture-handler'; import { useNavigation } from '@react-navigation/native'; import { Checkbox } from 'react-native-paper'; +import Person from "react-native-bootstrap-icons/icons/person"; +import Telephone from "react-native-bootstrap-icons/icons/telephone"; +import Envelope from "react-native-bootstrap-icons/icons/envelope"; +import Geoalt from "react-native-bootstrap-icons/icons/geo-alt"; +import Lock from "react-native-bootstrap-icons/icons/lock"; export default function Register() { const [checkedRegis, setCheckedRegis] = useState(false); + const [checkedRegisBaoMat, setCheckedRegisBaoMat] = useState(false); const navigation = useNavigation(); return ( Tạo tài khoản Nagakawa - - Bạn đã có tài khoản? - navigation.navigate('Login')}> - Đăng nhập - - tại đây + + + - - - Số điện thoại* - + + + + + + + + + + + + + + + + + + + + + + + setCheckedRegis(!checkedRegis)} /> - - Email đăng ký* - + Tôi muốn nhận các thông tin khuyến mãi từ Nagakawa + + + Đăng ký + + + + setCheckedRegisBaoMat(!checkedRegisBaoMat)} /> - - Địa chỉ* - - - - Mật khẩu* - - - - Nhập lại mật khẩu* - - - - Họ tên* - - - - Mã xác nhận - - - - [ Xem mã khác ] - - - - - - - setCheckedRegis(!checkedRegis)} /> - - Tôi muốn nhận các thông tin khuyến mãi từ Nagakawa - - - Đăng ký - - - Hoặc đăng nhập bằng - - - - - - - - - - + + Tôi đồng ý với các + + chính sách bảo mật Nagakawa + + + Hoặc + + + + + + + + + + + + + @@ -100,52 +100,36 @@ const styles = StyleSheet.create({ }, boxRegister: { width: winWidth, + minHeight: winHeight - 130, padding: 10, - backgroundColor: 'rgba(0,0,0,0)', + backgroundColor: '#fff', }, boxRegisterTitle: { - marginBottom: 15, - fontSize: 18, - fontWeight: 'bold', - }, - boxRegisterNote: { - marginBottom: 10, - flexDirection: 'row', - justifyContent: 'flex-end', - alignItems: 'center', - backgroundColor: 'rgba(0,0,0,0)' - }, - green: { - color: '#008445', - }, - boxRegisterList: { - width: '100%', - padding: 10, + marginBottom: 20, + textAlign: 'center', + fontWeight: '700' }, boxRegisterItem: { - width: '100%', - marginBottom: 10, - }, - boxRegisterItemText: { - fontWeight: 'bold', - marginBottom: 5, - }, - boxRegisterItemInput: { - width: '100%', - height: 40, - borderColor: '#e1e1e1', - borderWidth: 1, - borderRadius: 5, - }, - boxRegisterCapcha: { flexDirection: 'row', alignItems: 'center', + borderBottomWidth: 1, + borderBottomColor: '#ABABAB', + paddingBottom: 5, + marginBottom: 10, + }, + boxRegisterItemIcon: { + marginRight: 10, + color: '#999' + }, + boxRegisterItemInput: { + width: winWidth - 49, + height: 30, }, - boxRegisterCapchaOther: {}, checkKmRegis: { flexDirection: 'row', marginBottom: 10, marginTop: 10, + alignItems: 'center', }, checkKmRegisCheck: { width: 36, @@ -154,7 +138,9 @@ const styles = StyleSheet.create({ borderColor: '#e1e1e1', marginRight: 10, }, - checkKmRegisText: {}, + checkKmRegisText: { + width: winWidth - 66, + }, boxLoginSubmit: { width: '100%', height: 40, @@ -170,40 +156,53 @@ const styles = StyleSheet.create({ fontWeight: 'bold', color: '#fff' }, - boxLoginOther: { + colorGreen: { + color: '#008445', + }, + boxLoginLineChia: { marginBottom: 20, flexDirection: 'row', - justifyContent: 'center', - }, - boxLoginOtherText: {}, - boxLoginSocial: { - flexDirection: 'row', - justifyContent: 'center', alignItems: 'center', + justifyContent: 'center' }, - boxLoginSocialItem: { - width: 34, - height: 34, - flexDirection: 'row', - justifyContent: 'center', - alignItems: 'center', - borderRadius: 5, + boxLoginLine: { + width: 80, + height: 1, + backgroundColor: '#e1e1e1', + }, + boxLoginLineChiaText: { marginHorizontal: 5, - backgroundColor: '#3b5998', + color: '#777', + fontWeight: '300', }, - boxLoginSocialFace: {}, - boxLoginSocialGoogle: { - backgroundColor: '#df4a32', + loginSocial: { + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', }, - boxLoginSocialZalo: { - backgroundColor: '#0f8edd', + loginSocialItem: { + width: 40, + height: 40, + borderRadius: 20, + backgroundColor: '#3B5998', + marginHorizontal: 8, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', }, - boxLoginSocialIcon: { - fontSize: 16, - color: '#fff', + loginSocialItemIcon: { + fontSize: 18, + color: '#fff' }, - boxLoginSocialImg: { - width: 16, - height: 16, + loginSocialItemImg: { + width: 22, + height: 24, + }, + loginSocialItemFace: {}, + loginSocialItemGoogle: { + backgroundColor: '#DF4A32', + }, + loginSocialItemZalo: { + backgroundColor: '#0F8EDD' }, }); diff --git a/screens/SettingAccount.tsx b/screens/SettingAccount.tsx new file mode 100644 index 0000000..9ffdf79 --- /dev/null +++ b/screens/SettingAccount.tsx @@ -0,0 +1,160 @@ +import * as React from 'react'; +import { useState } from 'react'; +import { Alert, Button, Image, StyleSheet, Dimensions, SafeAreaView, ScrollView, TouchableOpacity, ImageBackground, Modal, Pressable } from 'react-native'; +import { LinearGradient } from 'expo-linear-gradient'; +import { Ionicons, FontAwesome } from '@expo/vector-icons'; +import EditScreenInfo from '../components/EditScreenInfo'; +import { Text, View } from '../components/Themed'; +import { TextInput } from 'react-native-gesture-handler'; +import { useNavigation } from '@react-navigation/native'; +import { Switch } from 'react-native-paper'; + +export default function SettingAccount() { + const navigation = useNavigation(); + return ( + + + + + + + + ); +} + +const HeaderAll = () => { + const navigation = useNavigation(); + return ( + + navigation.navigate('AccountHome')}> + + + Cài đặt + + ) +} + +const ContentSettingAccount = () => { + const [isSwitchOn, setIsSwitchOn] = useState(false); + return ( + + + + Cho phép nhận thông báo + setIsSwitchOn(!isSwitchOn)} /> + + + + + + Chính sách + + + + + Trung tâm hỗ trợ + + + + + Phản hồi + + + + + Quy chế hoạt động + + + + + Giới thiệu Nagakawa + + + + + + Đăng xuất + + + + ) +} + +const winWidth = Dimensions.get('window').width; //full width +const winHeight = Dimensions.get('window').height; //full height + +const styles = StyleSheet.create({ + container: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + }, + headerAll: { + flexDirection: 'row', + alignItems: 'center', + padding: 10, + }, + goBack: { + width: 50, + height: 40, + flexDirection: 'row', + alignItems: 'center', + }, + goBackIcon: { + fontSize: 24, + }, + headerAllTitle: { + fontWeight: '700', + width: winWidth - 70, + textAlign: 'center' + }, + boxSettingAccountAll: { + width: winWidth, + height: winHeight, + paddingTop: 30, + }, + boxSettingAccount: { + width: winWidth, + backgroundColor: '#f2f2f2', + height: '100%' + }, + boxSettingAccountList: { + marginBottom: 10, + }, + boxSettingAccountListToggleItem: { + flexDirection: 'row', + alignItems: 'center', + padding: 10, + justifyContent: 'space-between', + }, + boxSettingAccountItemTextToggle: {}, + boxSettingAccountItemToggle: {}, + boxSettingAccountItem: { + width: '100%', + borderBottomWidth: 1, + borderBottomColor: '#f2f2f2', + padding: 10, + }, + boxSettingAccountItemText: {}, + boxSettingAccountListLogout: { + padding: 10, + backgroundColor: 'rgba(0,0,0,0)', + }, + boxSettingAccountLogout: { + width: '100%', + height: 40, + borderColor: '#D8262F', + borderWidth: 1, + borderRadius: 5, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + backgroundColor: '#fff', + }, + boxSettingAccountLogoutText: { + fontWeight: '700', + fontSize: 14, + textTransform: 'uppercase', + color: '#D8262F', + }, +});