Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
64c1b77
refactered the chat code
foverokavindz Sep 25, 2023
e716ad5
Add chatting messages - not funtioning
foverokavindz Sep 25, 2023
4ffbd0d
Add redux store and sidebar
foverokavindz Sep 29, 2023
94ad994
fixed sidebar not toggeling issue
foverokavindz Sep 29, 2023
84f8f56
Finish sidebar top layout
foverokavindz Sep 29, 2023
34b2024
done day 6
foverokavindz Sep 29, 2023
6d95657
Done adding Confirm msg box , Add features to profile bar
foverokavindz Sep 29, 2023
c854da9
add settings panel
foverokavindz Oct 3, 2023
aa3ce4d
done adding shortcuts
foverokavindz Oct 3, 2023
beb44eb
add login page - not done
foverokavindz Oct 3, 2023
5c398e5
Login form
foverokavindz Oct 4, 2023
83c3853
Done Login page
foverokavindz Oct 4, 2023
343a1a4
add sign up page, rest password page
foverokavindz Oct 9, 2023
f8204b9
add reset password page
foverokavindz Oct 14, 2023
6701a81
fix ui problem
foverokavindz Oct 21, 2023
b928e51
Add main screen and social logins in login form
foverokavindz Mar 13, 2024
4654fd2
add product Image
foverokavindz Mar 13, 2024
2b644a7
Update README.md
foverokavindz Mar 13, 2024
632f373
Implement UI for group chat sidebar
foverokavindz Feb 8, 2025
9ba739f
Add CreateGroup dialog and RHFAutoComplete component; update Group pa…
foverokavindz Feb 9, 2025
7d8143d
Add Profile page, implement navigation and update sidebar; enhance Gr…
foverokavindz Feb 14, 2025
62f0f95
Add authentication logic and axios instance; update dashboard and mai…
foverokavindz Feb 25, 2025
89f81a1
Add verification page and integrate OTP verification; update reset pa…
foverokavindz Mar 2, 2025
83a651e
Add TypeScript configuration file with compiler options and paths
foverokavindz Mar 2, 2025
faa4d0b
Remove TypeScript configuration file
foverokavindz Mar 2, 2025
9e8dfb0
Add legacy peer dependencies support in package.json and .npmrc
foverokavindz Mar 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
legacy-peer-deps=true
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
![Project Image](https://github.com/foverokavindz/chat-app-1/blob/main/public/projectImage.png?raw=true)


# Getting Started with Create React App

This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
Expand Down
1,367 changes: 1,023 additions & 344 deletions package-lock.json

Large diffs are not rendered by default.

18 changes: 14 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,39 @@
"@emoji-mart/react": "^1.0.1",
"@emotion/react": "^11.10.4",
"@emotion/styled": "^11.10.4",
"@hookform/resolvers": "^3.3.1",
"@iconify/react": "^4.0.0",
"@mui/material": "^5.10.8",
"@reduxjs/toolkit": "^1.9.6",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"emoji-mart": "^5.2.2",
"axios": "^1.7.9",
"emoji-mart": "^5.5.2",
"framer-motion": "^7.5.3",
"phosphor-react": "^1.4.1",
"prop-types": "^15.8.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-helmet-async": "^1.3.0",
"react-hook-form": "^7.47.0",
"react-i18next": "^11.18.6",
"react-redux": "^8.1.2",
"react-router-dom": "^6.4.2",
"react-scripts": "5.0.1",
"redux": "^4.2.1",
"redux-persist": "^6.0.0",
"simplebar-react": "^2.4.3",
"stylis-plugin-rtl": "^2.0.2",
"web-vitals": "^2.1.4"
"web-vitals": "^2.1.4",
"yup": "^1.3.2"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
"eject": "react-scripts eject",
"install": "npm install --legacy-peer-deps"
},
"eslintConfig": {
"extends": [
Expand All @@ -51,6 +60,7 @@
]
},
"devDependencies": {
"@faker-js/faker": "^7.5.0"
"@faker-js/faker": "^7.5.0",
"visualize-react-component": "^1.0.43"
}
}
Binary file added public/projectImage.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 2 additions & 3 deletions src/App.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// routes
import Router from "./routes";
import Router from './routes';
// theme
import ThemeProvider from './theme';
// components
Expand All @@ -9,8 +9,7 @@ function App() {
return (
<ThemeProvider>
<ThemeSettings>
{" "}
<Router />{" "}
<Router />
</ThemeSettings>
</ThemeProvider>
);
Expand Down
Binary file added src/assets/Images/Talk-logo-transparent.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
47 changes: 25 additions & 22 deletions src/components/AntSwitch.js
Original file line number Diff line number Diff line change
@@ -1,47 +1,50 @@
import { Switch } from "@mui/material";
import { styled } from "@mui/material/styles";
import { Switch } from '@mui/material';
import { styled } from '@mui/material/styles';

const AntSwitch = styled(Switch)(({ theme }) => ({
width: 40,
height: 20,
padding: 0,
display: "flex",
"&:active": {
"& .MuiSwitch-thumb": {
display: 'flex',
'&:active': {
'& .MuiSwitch-thumb': {
width: 15,
},
"& .MuiSwitch-switchBase.Mui-checked": {
transform: "translateX(9px)",
'& .MuiSwitch-switchBase.Mui-checked': {
transform: 'translateX(1px)',
},
},
"& .MuiSwitch-switchBase": {
'& .MuiSwitch-switchBase': {
padding: 2,
"&.Mui-checked": {
transform: "translateX(20px)",
color: "#fff",
"& + .MuiSwitch-track": {
'&.Mui-checked': {
transform: 'translateX(20px)',
color: '#fff',
'& + .MuiSwitch-track': {
opacity: 1,
backgroundColor: theme.palette.primary.main,
backgroundColor:
theme.palette.mode === 'dark'
? '#177ddc'
: theme.palette.primary.main,
},
},
},
"& .MuiSwitch-thumb": {
boxShadow: "0 2px 4px 0 rgb(0 35 11 / 20%)",
'& .MuiSwitch-thumb': {
boxShadow: '0 2px 4px 0 rgb(0 35 11 / 20%)',
width: 16,
height: 16,
borderRadius: 8,
transition: theme.transitions.create(["width"], {
duration: 200,
transition: theme.transitions.create(['width'], {
duration: 300,
}),
},
"& .MuiSwitch-track": {
'& .MuiSwitch-track': {
borderRadius: 20 / 2,
opacity: 1,
backgroundColor:
theme.palette.mode === "dark"
? "rgba(255,255,255,.35)"
: "rgba(0,0,0,.25)",
boxSizing: "border-box",
theme.palette.mode === 'dark'
? 'rgba(255,255,255,.35)'
: 'rgba(0,0,0,.25)',
boxSizing: 'border-box',
},
}));

Expand Down
112 changes: 112 additions & 0 deletions src/components/CallElement.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
import { faker } from '@faker-js/faker';
import { Avatar, Box, IconButton, Stack, Typography } from '@mui/material';
import React from 'react';
import StyledBadge from './StyledBadge';
import { ArrowDownLeft, Phone, VideoCamera } from 'phosphor-react';

const CallElement = ({ img, name, online, incoming, missed }) => {
return (
<>
<Box
sx={{
width: '100%',
borderRadius: 1,
backgroundColor: (theme) =>
theme.palette.mode === 'light'
? '#fff'
: theme.palette.background.default,
}}
p={2}
>
{' '}
<Stack
direction="row"
alignItems={'center'}
justifyContent={'space-between'}
>
<Stack direction="row" spacing={2} alignItems={'center'}>
{online ? (
<StyledBadge
overlap="circular"
anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}
variant="dot"
>
<Avatar src={img} alt={name} />
</StyledBadge>
) : (
<Avatar src={img} alt={name} />
)}

<Stack spacing={0.3}>
<Typography variant="subtitle2">{name}</Typography>
<Stack direction={'row'} spacing={1} alignItems={'center'}>
{incoming ? (
<ArrowDownLeft color={missed ? 'red' : 'green'} />
) : (
<ArrowDownLeft color={missed ? 'red' : 'green'} />
)}
<Typography variant="caption">Yesterday 21:24</Typography>
</Stack>
</Stack>
</Stack>
<IconButton>
<Phone color="green" />
</IconButton>
</Stack>
</Box>
</>
);
};

const CallLogElement = ({ name, img, online }) => {
return (
<>
<Box
sx={{
width: '100%',
borderRadius: 1,
backgroundColor: (theme) =>
theme.palette.mode === 'light'
? '#fff'
: theme.palette.background.default,
}}
p={2}
>
{' '}
<Stack
direction="row"
alignItems={'center'}
justifyContent={'space-between'}
>
<Stack direction="row" spacing={2} alignItems={'center'}>
{online ? (
<StyledBadge
overlap="circular"
anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}
variant="dot"
>
<Avatar src={img} alt={name} />
</StyledBadge>
) : (
<Avatar src={img} alt={name} />
)}

<Stack spacing={0.3}>
<Typography variant="subtitle2">{name}</Typography>
</Stack>
</Stack>
<Stack direction={'row'} spacing={1} alignItems={'center'}>
<IconButton>
<Phone color="green" />
</IconButton>
<IconButton>
<VideoCamera color="green" />
</IconButton>
</Stack>
</Stack>
</Box>
</>
);
};

export { CallElement, CallLogElement };
62 changes: 62 additions & 0 deletions src/components/ChatElement.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import {
Avatar,
Badge,
Box,
Stack,
styled,
Typography,
useTheme,
} from '@mui/material';
import { faker } from '@faker-js/faker';
import StyledBadge from './StyledBadge';

const ChatElement = ({ id, name, img, msg, time, unread, online }) => {
const theme = useTheme();

return (
<Box
sx={{
width: '100%',
borderRadius: 1,
backgroundColor:
theme.palette.mode === 'light'
? '#fff'
: theme.palette.background.default,
}}
p={2}
>
<Stack
direction="row"
alignItems={'center'}
justifyContent={'space-between'}
>
<Stack direction="row" spacing={2}>
{online ? (
<StyledBadge
overlap="circular"
anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}
variant="dot"
>
<Avatar src={faker.image.avatar()} />
</StyledBadge>
) : (
<Avatar src={faker.image.avatar()} />
)}

<Stack spacing={0.3}>
<Typography variant="subtitle2">{name}</Typography>
<Typography variant="caption">{msg}</Typography>
</Stack>
</Stack>
<Stack spacing={2} alignItems={'center'}>
<Typography sx={{ fontWeight: 600 }} variant="caption">
{time}
</Typography>
<Badge color="primary" badgeContent={unread} />
</Stack>
</Stack>
</Box>
);
};

export default ChatElement;
Loading