Initial commit - restaurant dashboard

هذا الالتزام موجود في:
RaghadMAlkous
2025-09-04 01:17:15 +03:00
الأصل 13891b47fd
التزام 7b2f8840cb
136 ملفات معدلة مع 16638 إضافات و6033 حذوفات

عرض الملف

@@ -1,11 +1,35 @@
import React from 'react';
import React, { useState } from 'react';
import { Box, Typography, Stack, Button, useTheme, TextField } from '@mui/material';
const ContactInformation = ({ currentStepIndex = 0, onNext, onBack }) => {
const ContactInformation = ({ formData, updateFormData, onNext, onBack }) => {
const theme = useTheme();
const [errors, setErrors] = useState({});
const handleNext = () => {
if (onNext) {
const handleChange = (field, value) => {
updateFormData({ [field]: value });
setErrors(prev => ({ ...prev, [field]: '' })); // إزالة الخطأ عند التعديل
};
const validateFields = () => {
const newErrors = {};
if (!formData.Phone || formData.Phone.trim() === '') {
newErrors.Phone = 'Phone number is required';
} else if (!/^\+?\d{7,15}$/.test(formData.Phone.trim())) {
newErrors.Phone = 'Invalid phone number';
}
if (!formData.Email || formData.Email.trim() === '') {
newErrors.Email = 'Email is required';
} else if (!/^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/.test(formData.Email.trim())) {
newErrors.Email = 'Invalid Email address';
}
setErrors(newErrors);
return Object.keys(newErrors).length === 0;
};
const handleNextClick = () => {
if (validateFields()) {
onNext();
}
};
@@ -25,26 +49,13 @@ const ContactInformation = ({ currentStepIndex = 0, onNext, onBack }) => {
width: { xs: '85%', sm: '90%' },
}}
>
<Stack spacing={2.5}>
<Typography
fontWeight={700}
sx={{
fontSize: {
xs: '1.8rem',
sm: '2rem',
md: '2.2rem'
}
}}
>
<Stack spacing={1.5}>
<Typography fontWeight={700} sx={{ fontSize: { xs: '1.8rem', sm: '2rem', md: '2.2rem' } }}>
Contact Information
</Typography>
<Box sx={{ width: '70%' }}>
<Typography
fontSize="16px"
color="text.secondary"
fontWeight={500}
sx={{ pb: 1 }}
>
<Typography fontSize="16px" color="text.secondary" fontWeight={500} sx={{ pb: 1 }}>
Enter your contact information to proceed to registration of your own restaurant on this platform
</Typography>
</Box>
@@ -58,6 +69,10 @@ const ContactInformation = ({ currentStepIndex = 0, onNext, onBack }) => {
placeholder="03055376864"
variant="outlined"
fullWidth
value={formData.Phone || ''}
onChange={(e) => handleChange('Phone', e.target.value)}
error={!!errors.Phone}
helperText={errors.Phone || ' '}
sx={{
'& input': { fontWeight: 500, fontSize: '15px' },
'& input::placeholder': { color: '#969BA7' },
@@ -84,9 +99,13 @@ const ContactInformation = ({ currentStepIndex = 0, onNext, onBack }) => {
</Typography>
<TextField
placeholder="example@example.com"
type="email"
type="Email"
variant="outlined"
fullWidth
value={formData.Email || ''}
onChange={(e) => handleChange('Email', e.target.value)}
error={!!errors.Email}
helperText={errors.Email || ' '}
sx={{
'& input': { fontWeight: 500, fontSize: '15px' },
'& input::placeholder': { color: '#969BA7' },
@@ -105,56 +124,49 @@ const ContactInformation = ({ currentStepIndex = 0, onNext, onBack }) => {
}}
/>
</Box>
{/* Next Button */}
<Box sx={{ pt: 2 }}>
<Button
variant="contained"
fullWidth
onClick={onNext}
sx={{
fontFamily: 'PlusJakartaSans',
fontWeight: 600,
fontSize: { xs: '14px', sm: '16px' },
height: { xs: '45px', sm: '52px' },
borderRadius: '50px',
textTransform: 'none',
color: 'white',
backgroundColor: theme.palette.primary.main,
'&:hover': {
backgroundColor: theme.palette.primary.hover,
},
}}
>
Next
</Button>
{/* Next & Back Buttons */}
<Box sx={{ pt: 2 }}>
<Button
variant="contained"
fullWidth
onClick={handleNextClick}
sx={{
fontFamily: 'PlusJakartaSans',
fontWeight: 600,
fontSize: { xs: '14px', sm: '16px' },
height: { xs: '45px', sm: '52px' },
borderRadius: '50px',
textTransform: 'none',
color: 'white',
backgroundColor: theme.palette.primary.main,
'&:hover': { backgroundColor: theme.palette.primary.hover },
}}
>
Next
</Button>
{/* زر Back تحت زر Next */}
<Button
variant="outlined"
fullWidth
onClick={onBack}
sx={{
mt: 2,
fontFamily: 'PlusJakartaSans',
fontWeight: 600,
fontSize: { xs: '14px', sm: '16px' },
height: { xs: '45px', sm: '52px' },
borderRadius: '50px',
textTransform: 'none',
display: { xs: 'block', sm: 'block', md: 'none' }, // يظهر فقط في xs و sm
borderColor: theme.palette.primary.main,
color: theme.palette.primary.main,
'&:hover': {
backgroundColor: theme.palette.primary.light,
borderColor: theme.palette.primary.main,
},
}}
>
Back
</Button>
</Box>
<Button
variant="outlined"
fullWidth
onClick={onBack}
sx={{
mt: 2,
fontFamily: 'PlusJakartaSans',
fontWeight: 600,
fontSize: { xs: '14px', sm: '16px' },
height: { xs: '45px', sm: '52px' },
borderRadius: '50px',
textTransform: 'none',
display: { xs: 'block', sm: 'block', md: 'none' },
borderColor: theme.palette.primary.main,
color: theme.palette.primary.main,
'&:hover': { backgroundColor: theme.palette.primary.light, borderColor: theme.palette.primary.main },
}}
>
Back
</Button>
</Box>
</Stack>
</Box>
);