basic app
This commit is contained in:
182
src/screens/Main/MenuScreen.js
Normal file
182
src/screens/Main/MenuScreen.js
Normal file
@@ -0,0 +1,182 @@
|
||||
import React from 'react';
|
||||
import {
|
||||
View,
|
||||
Text,
|
||||
StyleSheet,
|
||||
SafeAreaView,
|
||||
ScrollView,
|
||||
TouchableOpacity,
|
||||
} from 'react-native';
|
||||
import { StatusBar } from 'expo-status-bar';
|
||||
import { Ionicons } from '@expo/vector-icons';
|
||||
import { COLORS } from '../../constants/colors';
|
||||
|
||||
const MenuScreen = () => {
|
||||
const menuSections = [
|
||||
{
|
||||
title: 'Pul hereketleri',
|
||||
items: [
|
||||
{ id: 1, title: 'Pul ugrat', icon: 'send', description: 'Başga hasaplara pul ugrat' },
|
||||
{ id: 2, title: 'Pul al', icon: 'download', description: 'Pul al we hasabyňa geçir' },
|
||||
{ id: 3, title: 'Geleşikler taryhy', icon: 'time', description: 'Geçen geleşikleri gör' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Tölegler',
|
||||
items: [
|
||||
{ id: 4, title: 'Telefon töleg', icon: 'phone-portrait', description: 'Mobil telefon töleg' },
|
||||
{ id: 5, title: 'Elektrik töleg', icon: 'flash', description: 'Elektrik töleg et' },
|
||||
{ id: 6, title: 'Suw töleg', icon: 'water', description: 'Suw töleg et' },
|
||||
{ id: 7, title: 'Internet töleg', icon: 'wifi', description: 'Internet töleg et' },
|
||||
{ id: 8, title: 'Gaz töleg', icon: 'flame', description: 'Gaz töleg et' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Kartlar',
|
||||
items: [
|
||||
{ id: 9, title: 'Meniň kartlarym', icon: 'card', description: 'Kartlaryňyzy dolandyr' },
|
||||
{ id: 10, title: 'Täze kart sargyt', icon: 'add-circle', description: 'Täze kart sargyt ediň' },
|
||||
{ id: 11, title: 'Kart bloklat', icon: 'lock-closed', description: 'Karty blokla' },
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Karzlar',
|
||||
items: [
|
||||
{ id: 12, title: 'Meniň karzlarym', icon: 'document-text', description: 'Karzlaryňyzy gör' },
|
||||
{ id: 13, title: 'Täze karz sargyt', icon: 'trending-up', description: 'Täze karz al' },
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
const handleMenuItemPress = (item) => {
|
||||
console.log('Menu item pressed:', item.title);
|
||||
// Handle navigation or action here
|
||||
};
|
||||
|
||||
return (
|
||||
<SafeAreaView style={styles.container}>
|
||||
<StatusBar style="dark" />
|
||||
|
||||
<View style={styles.header}>
|
||||
<Text style={styles.headerTitle}>Hyzmatlar</Text>
|
||||
</View>
|
||||
|
||||
<ScrollView style={styles.scrollView} showsVerticalScrollIndicator={false}>
|
||||
{menuSections.map((section, sectionIndex) => (
|
||||
<View key={sectionIndex} style={styles.section}>
|
||||
<Text style={styles.sectionTitle}>{section.title}</Text>
|
||||
<View style={styles.sectionContent}>
|
||||
{section.items.map((item, itemIndex) => (
|
||||
<TouchableOpacity
|
||||
key={item.id}
|
||||
style={[
|
||||
styles.menuItem,
|
||||
itemIndex === section.items.length - 1 && styles.lastMenuItem,
|
||||
]}
|
||||
onPress={() => handleMenuItemPress(item)}
|
||||
>
|
||||
<View style={styles.menuItemLeft}>
|
||||
<View style={styles.menuItemIcon}>
|
||||
<Ionicons name={item.icon} size={24} color={COLORS.primary} />
|
||||
</View>
|
||||
<View style={styles.menuItemTextContainer}>
|
||||
<Text style={styles.menuItemTitle}>{item.title}</Text>
|
||||
<Text style={styles.menuItemDescription}>{item.description}</Text>
|
||||
</View>
|
||||
</View>
|
||||
<Ionicons name="chevron-forward" size={20} color={COLORS.gray[400]} />
|
||||
</TouchableOpacity>
|
||||
))}
|
||||
</View>
|
||||
</View>
|
||||
))}
|
||||
|
||||
<View style={styles.bottomSpacing} />
|
||||
</ScrollView>
|
||||
</SafeAreaView>
|
||||
);
|
||||
};
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
flex: 1,
|
||||
backgroundColor: COLORS.backgroundSecondary,
|
||||
},
|
||||
header: {
|
||||
backgroundColor: COLORS.white,
|
||||
paddingHorizontal: 24,
|
||||
paddingTop: 16,
|
||||
paddingBottom: 24,
|
||||
borderBottomWidth: 1,
|
||||
borderBottomColor: COLORS.gray[200],
|
||||
},
|
||||
headerTitle: {
|
||||
fontSize: 28,
|
||||
fontWeight: 'bold',
|
||||
color: COLORS.textPrimary,
|
||||
},
|
||||
scrollView: {
|
||||
flex: 1,
|
||||
},
|
||||
section: {
|
||||
marginTop: 24,
|
||||
marginHorizontal: 24,
|
||||
},
|
||||
sectionTitle: {
|
||||
fontSize: 18,
|
||||
fontWeight: 'bold',
|
||||
color: COLORS.textPrimary,
|
||||
marginBottom: 12,
|
||||
paddingHorizontal: 4,
|
||||
},
|
||||
sectionContent: {
|
||||
backgroundColor: COLORS.white,
|
||||
borderRadius: 12,
|
||||
overflow: 'hidden',
|
||||
},
|
||||
menuItem: {
|
||||
flexDirection: 'row',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'space-between',
|
||||
paddingHorizontal: 20,
|
||||
paddingVertical: 16,
|
||||
borderBottomWidth: 1,
|
||||
borderBottomColor: COLORS.gray[200],
|
||||
},
|
||||
lastMenuItem: {
|
||||
borderBottomWidth: 0,
|
||||
},
|
||||
menuItemLeft: {
|
||||
flexDirection: 'row',
|
||||
alignItems: 'center',
|
||||
flex: 1,
|
||||
},
|
||||
menuItemIcon: {
|
||||
width: 48,
|
||||
height: 48,
|
||||
borderRadius: 24,
|
||||
backgroundColor: COLORS.backgroundSecondary,
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
marginRight: 16,
|
||||
},
|
||||
menuItemTextContainer: {
|
||||
flex: 1,
|
||||
},
|
||||
menuItemTitle: {
|
||||
fontSize: 16,
|
||||
fontWeight: '600',
|
||||
color: COLORS.textPrimary,
|
||||
marginBottom: 4,
|
||||
},
|
||||
menuItemDescription: {
|
||||
fontSize: 14,
|
||||
color: COLORS.textSecondary,
|
||||
lineHeight: 18,
|
||||
},
|
||||
bottomSpacing: {
|
||||
height: 24,
|
||||
},
|
||||
});
|
||||
|
||||
export default MenuScreen;
|
||||
Reference in New Issue
Block a user