
import Link from 'next/link';
import {
CardContent,
Typography,
Avatar,
Grid,
Card
CardMedia,
Stack,
Tooltip,
Chip,
Box,
} from '@mui/material';
import { IconMessage2, IconEye, IconPoint } from '@tabler/icons-react';
const complexCard = [
{
avatar: "/images/profile/user-4.jpg",
coveravatar: "/images/blog/blog-img1.jpg",
title: 'As yen tumbles, gadget-loving Japan goes for secondhand iPhones',
category: 'Social',
name: 'Georgeanna Ramero',
view: '9,125',
comments: '3',
time: 'Mon, Dec 19',
},
{
avatar: "/images/profile/user-5.jpg",
coveravatar: "/images/blog/blog-img2.jpg",
title: 'Intel loses bid to revive antitrust case against patent foe Fortress',
category: 'Gadget',
name: 'Georgeanna Ramero',
view: '4,150',
comments: '38',
time: 'Sun, Dec 18',
},
{
avatar: "/images/profile/user-3.jpg",
coveravatar: "/images/blog/blog-img3.jpg",
title: 'COVID outbreak deepens as more lockdowns loom in China',
category: 'Health',
name: 'Georgeanna Ramero',
view: '9,480',
comments: '12',
time: 'Sat, Dec 17',
},
];
const ComplexCard = () => {
return (
<Grid container spacing={3}>
{complexCard.map((author, index) => (
<Grid item xs={12} sm={4} key={index}>
<Card>
<>
<Typography component={Link} href="/">
<CardMedia
component="img"
height="240"
image={author.coveravatar}
alt="green iguana"
/>
</Typography>
<CardContent>
<Stack direction="row" sx={{ marginTop: '-45px' }}>
<Tooltip title={author.name} placement="top">
<Avatar aria-label="recipe" src={author.avatar}></Avatar>
</Tooltip>
<Chip
sx={{ marginLeft: 'auto', marginTop: '-21px', backgroundColor: 'white' }}
label="2 min Read"
size="small"
></Chip>
</Stack>
<Chip label={author.category} size="small" sx={{ marginTop: 2 }}></Chip>
<Box my={3}>
<Typography
gutterBottom
variant="h5"
color="inherit"
sx={{ textDecoration: 'none' }}
component={Link}
href="/"
>
{author.title}
</Typography>
</Box>
<Stack direction="row" gap={3} alignItems="center">
<Stack direction="row" gap={1} alignItems="center">
<IconEye size="18" /> {author.view}
</Stack>
<Stack direction="row" gap={1} alignItems="center">
<IconMessage2 size="18" /> {author.comments}
</Stack>
<Stack direction="row" ml="auto" alignItems="center">
<IconPoint size="16" />
<small>{author.time}</small>
</Stack>
</Stack>
</CardContent>
</>
</Card>
</Grid>
))}
</Grid>
);
};
export default ComplexCard;
import Link from 'next/link';
import { CardContent, Typography, Grid, Rating, Tooltip, Fab, Card } from '@mui/material';
import { Stack } from '@mui/system';
import { IconBasket } from '@tabler/icons-react';
import Image from 'next/image';
const ecoCard = [
{
title: 'Boat Headphone',
subheader: 'September 14, 2025',
photo: "/images/products/s4.jpg",
salesPrice: 375,
price: 285,
rating: 4,
},
{
title: 'MacBook Air Pro',
subheader: 'September 14, 2025',
photo: "/images/products/s5.jpg",
salesPrice: 650,
price: 900,
rating: 5,
},
{
title: 'Red Valvet Dress',
subheader: 'September 14, 2025',
photo: "/images/products/s7.jpg",
salesPrice: 150,
price: 200,
rating: 3,
},
{
title: 'Cute Soft Teddybear',
subheader: 'September 14, 2025',
photo: "/images/products/s11.jpg",
salesPrice: 285,
price: 345,
rating: 2,
},
];
const EcommerceCard = () => {
return (
<Grid container spacing={3}>
{ecoCard.map((product, index) => (
<Grid item xs={12} sm={4} lg={3} key={index}>
<Card>
<Typography component={Link} href="/">
<Image src={product.photo} alt="img" width={250} height={268} style={{width: '100%'}} />
</Typography>
<Tooltip title="Add To Cart">
<Fab
size="small"
color="primary"
sx={{ bottom: '75px', right: '15px', position: 'absolute' }}
>
<IconBasket size="16" />
</Fab>
</Tooltip>
<CardContent sx={{ p: 3, pt: 2 }}>
<Typography variant="h6">{product.title}</Typography>
<Stack direction="row" alignItems="center" justifyContent="space-between" mt={1}>
<Stack direction="row" alignItems="center">
<Typography variant="h6">{product.price}</Typography>
<Typography color="textSecondary" ml={1} sx={{ textDecoration: 'line-through' }}>
{product.salesPrice}
</Typography>
</Stack>
<Rating name="read-only" size="small" value={product.rating} readOnly />
</Stack>
</CardContent>
</Card>
</Grid>
))}
</Grid>
);
};
export default EcommerceCard;



import { CardContent, Typography, Grid, Card, CardMedia, Box, IconButton } from '@mui/material';
import { Stack } from '@mui/system';
import { IconPlayerPlay, IconPlayerSkipBack, IconPlayerSkipForward } from '@tabler/icons-react';
const musicCard = [
{
title: 'Uptown Funk',
subheader: 'Jon Bon Jovi',
img: "/images/blog/blog-img5.jpg",
},
{
title: 'Blank Space',
subheader: 'Madonna',
img: "/images/blog/blog-img4.jpg",
},
{
title: 'Lean On',
subheader: 'Jennifer Lopez',
img: "/images/blog/blog-img3.jpg",
},
];
const MusicCard = () => {
return (
<Grid container spacing={3}>
{musicCard.map((card, index) => (
<Grid item xs={12} sm={4} key={index}>
<Card sx={{ display: 'flex', p: 0 }}>
<Box sx={{ display: 'flex', flexDirection: 'column' }}>
<CardContent sx={{ flex: '1 0 auto' }}>
<Typography component="div" variant="h5">
{card.title}
</Typography>
<Typography variant="subtitle1" color="text.secondary" component="div">
{card.subheader}
</Typography>
</CardContent>
<Stack direction="row" spacing={2} px={2} pb={3}>
<IconButton aria-label="previous">
<IconPlayerSkipBack width="20" />
</IconButton>
<IconButton aria-label="play/pause" color="error">
<IconPlayerPlay width="20" />
</IconButton>
<IconButton aria-label="next">
<IconPlayerSkipForward width="20" />
</IconButton>
</Stack>
</Box>
<CardMedia
component="img"
sx={{ width: '100%', height: 180 }}
image={card.img}
alt="Live from space album cover"
/>
</Card>
</Grid>
))}
</Grid>
);
};
export default MusicCard;
import { CardContent, Typography, Grid, Button, Avatar, Box, Card } from '@mui/material';
import { Stack } from '@mui/system';
import { IconMapPin } from '@tabler/icons-react';
const followerCard = [
{
title: 'Andrew Grant',
location: 'El Salvador',
avatar: "/images/profile/user-4.jpg",
},
{
title: 'Leo Pratt',
location: 'Bulgaria',
avatar: "/images/profile/user-2.jpg",
},
{
title: 'Charles Nunez',
location: 'Nepal',
avatar: "/images/profile/user-3.jpg",
},
];
const FollowerCard = () => {
return (
<Grid container spacing={3}>
{followerCard.map((card, index) => (
<Grid item xs={12} sm={4} key={index}>
<Card>
<CardContent>
<Stack direction="row" spacing={2} alignItems="center" justifyContent="space-between">
<Stack direction="row" spacing={2}>
<Avatar src={card.avatar} alt={card.avatar} />
<Box>
<Typography variant="h6">{card.title}</Typography>
<Typography
variant="subtitle1"
color="textSecondary"
display="flex"
alignItems="center"
gap="3px"
>
<IconMapPin width={18} /> {card.location}
</Typography>
</Box>
</Stack>
<Button variant="contained" color="primary">
Follow
</Button>
</Stack>
</CardContent>
</Card>
</Grid>
))}
</Grid>
);
};
export default FollowerCard;
import { CardContent, Typography, Grid, Button, Box, AvatarGroup, Avatar, Card } from '@mui/material';
import { Stack } from '@mui/system';
const followerCard = [
{
title: 'Andrew Grant',
location: 'El Salvador',
avatar: "/images/profile/user-5.jpg",
},
{
title: 'Leo Pratt',
location: 'Bulgaria',
avatar: "/images/profile/user-2.jpg",
},
{
title: 'Charles Nunez',
location: 'Nepal',
avatar: "/images/profile/user-3.jpg",
},
{
title: 'Lora Powers',
location: 'Nepal',
avatar: "/images/profile/user-2.jpg",
},
];
const FriendCard = () => {
return (
<Grid container spacing={3}>
{followerCard.map((card, index) => (
<Grid item xs={12} sm={6} lg={3} key={index}>
<BlankCard>
<CardContent>
<Avatar src={card.avatar} sx={{ height: 80, width: 80 }}></Avatar>
<Stack direction="row" spacing={2} mt={3}>
<Box>
<Typography variant="h6" mb={1}>
{card.title}
</Typography>
<Stack direction="row" spacing={2} alignItems="center">
<AvatarGroup>
<Avatar sx={{ height: 28, width: 28 }} alt="Remy Sharp" src={"/images/profile/user-4.jpg"} />
<Avatar sx={{ height: 28, width: 28 }} alt="Travis Howard" src={"/images/profile/user-2.jpg"} />
<Avatar sx={{ height: 28, width: 28 }} alt="Cindy Baker" src={"/images/profile/user-3.jpg"} />
</AvatarGroup>
<Typography variant="subtitle2" color="textSecondary">
3 mutual friends
</Typography>
</Stack>
</Box>
</Stack>
<Stack spacing={2} mt={3}>
<Button size="large" variant="text" color="primary">
Add Friend
</Button>
<Button size="large" variant="text" color="secondary">
Remove
</Button>
</Stack>
</CardContent>
</BlankCard>
</Grid>
))}
</Grid>
);
};
export default FriendCard;
import React from 'react';
import { CardContent, Typography, Grid, IconButton, Divider, Avatar, Box, Card } from '@mui/material';
import { useTheme } from '@mui/material/styles';
import { Stack } from '@mui/system';
import {
IconBrandFacebook,
IconBrandGithub,
IconBrandInstagram,
IconBrandTwitter,
} from '@tabler/icons-react';
const SocialIcons = [
{
name: 'Facebook',
icon: <IconBrandFacebook size="18" color="#1877F2" />,
},
{
name: 'Instagram',
icon: <IconBrandInstagram size="18" color="#D7336D" />,
},
{
name: 'Github',
icon: <IconBrandGithub size="18" color="#006097" />,
},
{
name: 'Twitter',
icon: <IconBrandTwitter size="18" color="#1C9CEA" />,
},
];
const profileCard = [
{
name: 'Andrew Grant',
role: 'Technology Director',
avatar: "/images/profile/user-3.jpg",
},
{
name: 'Leo Pratt',
role: 'Telecom Analyst',
avatar: "/images/profile/user-4.jpg",
},
{
name: 'Charles Nunez',
role: 'Environmental Specialist',
avatar: "/images/profile/user-5.jpg",
},
];
const ProfileCard = () => {
const theme = useTheme();
return (
<Grid container spacing={3}>
{profileCard.map((card, index) => (
<Grid item xs={12} sm={4} key={index}>
<Card>
<CardContent>
<Stack direction={'column'} gap={2} alignItems="center">
<Avatar alt="Remy Sharp" src={card.avatar} sx={{ width: '80px', height: '80px' }} />
<Box textAlign={'center'}>
<Typography variant="h5">{card.name}</Typography>
<Typography variant="caption">{card.role}</Typography>
</Box>
</Stack>
</CardContent>
<Divider />
<Box
p={2}
py={1}
textAlign={'center'}
sx={{
backgroundColor: theme.palette.mode === 'dark' ? 'rgba(0, 0, 0, 0.05)' : 'grey.100',
}}
>
{SocialIcons.map((sicon) => {
return <IconButton key={sicon.name}>{sicon.icon}</IconButton>;
})}
</Box>
</Card>
</Grid>
))}
</Grid>
);
};
export default ProfileCard;
import React from 'react';
import { CardContent, Typography, Avatar, Divider, Button, Card } from '@mui/material';
import { Box, Stack } from '@mui/system';
import { IconMessage, IconVolume } from '@tabler/icons-react';
import { styled } from '@mui/material/styles';
import { Slider } from '@mui/material';
import { Switch } from '@mui/material';
const CustomSlider = styled(Slider)(({ theme }) => ({
'& .MuiSlider-rail': {
height: '9px',
borderRadius: '9px',
opacity: '1',
backgroundColor: theme.palette.grey[200],
},
'& .MuiSlider-thumb': {
borderRadius: '50%',
backgroundColor: () => theme.palette.secondary.main,
width: '23px',
height: '23px',
},
'& .MuiSlider-track': {
height: '9px',
borderRadius: '9px',
},
}));
const CustomSwitch = styled((props) => <Switch {...props} />)(({ theme }) => ({
'&.MuiSwitch-root': {
width: '68px',
height: '49px',
},
'& .MuiButtonBase-root': {
top: '6px',
left: '6px',
},
'& .MuiButtonBase-root.Mui-checked .MuiSwitch-thumb': {
backgroundColor: 'primary.main',
},
'& .MuiSwitch-thumb': {
width: '18px',
height: '18px',
borderRadius: '6px',
},
'& .MuiSwitch-track': {
backgroundColor: theme.palette.grey[200],
opacity: 1,
borderRadius: '5px',
},
'& .MuiSwitch-switchBase': {
'&.Mui-checked': {
'& + .MuiSwitch-track': {
backgroundColor: 'primary',
opacity: 0.18,
},
},
},
}));
const Settings = () => {
const [value3, setValue3] = React.useState(45);
const handleChange6 = (event, newValue) => {
setValue3(newValue);
};
return (
<Card>
<CardContent sx={{p: "30px"}}>
<Typography variant="h5">Settings</Typography>
<Stack spacing={2} mt={3}>
<Stack direction="row" spacing={2}>
<Avatar variant="rounded" sx={{ bgcolor: 'primary.main', width: 48, height: 48 }}>
<IconVolume width={22} />
</Avatar>
<Box width="100%">
<Box display="flex" alignItems="center" justifyContent="space-between">
<Typography variant="h6">Sound</Typography>
<Typography variant="subtitle2" color="textSecondary">
45%
</Typography>
</Box>
<CustomSlider aria-label="Volume" value={value3} onChange={handleChange6} />
</Box>
</Stack>
<Divider />
<Stack direction="row" spacing={2}>
<Avatar variant="rounded" sx={{ bgcolor: 'secondary.main', width: 48, height: 48 }}>
<IconMessage width={22} />
</Avatar>
<Box display="flex" alignItems="center" justifyContent="space-between" width="100%">
<Box>
<Typography variant="h6" mb={1}>Chat</Typography>
<Typography variant="subtitle2" color="textSecondary">
Turn on chat during call
</Typography>
</Box>
<Box>
<CustomSwitch />
</Box>
</Box>
</Stack>
<Divider />
</Stack>
<Stack direction="row" justifyContent="end" spacing={2} mt={2}>
<Button variant="outlined" color="error">Cancel</Button>
<Button variant="contained" color="primary">Save</Button>
</Stack>
</CardContent>
</Card>
);
};
export default Settings;


import { CardContent, Typography, Grid, Button, CardMedia, IconButton, Card } from '@mui/material';
import { Stack } from '@mui/system';
import { IconGift } from '@tabler/icons-react';
const giftCard = [
{
title: 'Andrew Grant',
avatar: "/images/products/s1.jpg",
},
{
title: 'Leo Pratt',
avatar: "/images/products/s2.jpg",
},
];
const GiftCard = () => {
return (
<Grid container spacing={3}>
{giftCard.map((card, index) => (
<Grid item xs={12} sm={6} key={index}>
<Card>
<CardContent>
<Stack direction="row" alignItems="center" justifyContent="space-between" spacing={2}>
<Typography variant="h6" mb={1}>
{card.title}
</Typography>
<IconButton color="secondary">
<IconGift width={20} />
</IconButton>
</Stack>
<CardMedia component="img" image={card.avatar} sx={{ height: 160, borderRadius: 2 }} />
<Stack spacing={2} mt={3}>
<Button size="large" variant="contained" color="primary">
Gift to Friend ($50.00)
</Button>
</Stack>
</CardContent>
</Card>
</Grid>
))}
</Grid>
);
};
export default GiftCard;
import React,{useContext} from 'react';
import { useTheme } from '@mui/material/styles';
import { Stack, Typography, Avatar, Box, Card, CardContent } from '@mui/material';
import { IconDatabase, IconMail, IconMapPin, IconPhone, IconScreenShare } from '@tabler/icons-react';
import { useTheme } from '@mui/material/styles';
import { CustomizerContext } from '@/app/context/customizerContext';
type Props = {
title?: string;
subtitle?: string;
action?: React.ReactNode | any;
footer?: React.ReactNode;
cardheading?: string | React.ReactNode;
headtitle?: string | React.ReactNode;
headsubtitle?: string | React.ReactNode;
children?: React.ReactNode;
middlecontent?: string | React.ReactNode;
};
const DashboardCard = ({
title,
subtitle,
children,
action,
footer,
cardheading,
headtitle,
headsubtitle,
middlecontent,
}: Props) => {
const { isCardShadow } = useContext(CustomizerContext);
const theme = useTheme();
const borderColor = theme.palette.divider;
return (
<Card
sx={{ padding: 0, border: !isCardShadow ? '1px solid {borderColor}' : 'none' }}
elevation={isCardShadow ? 9 : 0}
variant={!isCardShadow ? 'outlined' : undefined}
>
{cardheading ? (
<CardContent>
<Typography variant="h5">{headtitle}</Typography>
<Typography variant="subtitle2" color="textSecondary">
{headsubtitle}
</Typography>
</CardContent>
) : (
<CardContent sx={{p: "30px"}}>
{title ? (
<Stack
direction="row"
spacing={2}
justifyContent="space-between"
alignItems={'center'}
mb={3}
>
<Box>
{title ? <Typography variant="h5">{title}</Typography> : ''}
{subtitle ? (
<Typography variant="subtitle2" color="textSecondary">
{subtitle}
</Typography>
) : (
''
)}
</Box>
{action}
</Stack>
) : null}
{children}
</CardContent>
)}
{middlecontent}
{footer}
</Card>
);
};
const UpcomingActivity = () => {
// chart color
const theme = useTheme();
const primary = theme.palette.primary.main;
const primarylight = theme.palette.primary.light;
const error = theme.palette.error.main;
const errorlight = theme.palette.error.light;
const warning = theme.palette.warning.main;
const warninglight = theme.palette.warning.light;
const secondary = theme.palette.secondary.main;
const secondarylight = theme.palette.secondary.light;
const success = theme.palette.success.main;
const successlight = theme.palette.success.light;
const stats = [
{
title: 'Trip to singapore',
subtitle: 'working on',
time: 5,
color: primary,
lightcolor: primarylight,
icon: <IconMapPin width={20} />,
},
{
title: 'Archived Data',
subtitle: 'working on',
time: 10,
color: secondary,
lightcolor: secondarylight,
icon: <IconDatabase width={20} />,
},
{
title: 'Meeting with client',
subtitle: 'pending',
time: 15,
color: warning,
lightcolor: warninglight,
icon: <IconPhone width={20} />,
},
{
title: 'Screening Task Team',
subtitle: 'working on',
time: 20,
color: error,
lightcolor: errorlight,
icon: <IconScreenShare width={20} />,
},
{
title: 'Send envelope to John',
subtitle: 'done',
time: 20,
color: success,
lightcolor: successlight,
icon: <IconMail width={20} />,
},
];
return (
<DashboardCard title="Upcoming Activity" subtitle='In New year'>
<>
<Stack spacing={3} mt={5}>
{stats.map((stat, i) => (
<Stack
direction="row"
spacing={3}
justifyContent="space-between"
alignItems="center"
key={i}
>
<Stack direction="row" alignItems="center" spacing={2}>
<Avatar
variant="rounded"
sx={{ bgcolor: stat.lightcolor, color: stat.color, width: 40, height: 40 }}
>
{stat.icon}
</Avatar>
<Box>
<Typography variant="h6" mb="4px">
{stat.title}
</Typography>
<Typography variant="subtitle2" color="textSecondary">
{stat.subtitle}
</Typography>
</Box>
</Stack>
<Typography variant="subtitle2" color="textSecondary">
{stat.time} mins
</Typography>
</Stack>
))}
</Stack>
</>
</DashboardCard>
);
};
export default UpcomingActivity;