Mui Skeleton

import : 
import SuspenseProviders from '@/providers/Suspense-providers';
import Skeleton from '@mui/material/Skeleton';

component : https://mui.com/material-ui/react-skeleton/
demo : code

Don Diablo @ Tomorrowland Main Stage 2019 | Official…
Don Diablo @ Tomorrowland Main Stage 2019 | Official…Don Diablo396k views • a week ago
Queen - Greatest Hits
Queen - Greatest HitsQueen Official40M views • 3 years ago
Calvin Harris, Sam Smith - Promises (Official Video)
Calvin Harris, Sam Smith - Promises (Official Video)Calvin Harris130M views • 10 months ago

const data = [
      {
           src: 'https://i.ytimg.com/vi/pLqipJNItIo/hqdefault.jpg?sqp=-oaymwEYCNIBEHZIVfKriqkDCwgBFQAAiEIYAXAB&rs=AOn4CLBkklsyaw9FxDmMKapyBYCn9tbPNQ',
           title: 'Don Diablo @ Tomorrowland Main Stage 2019 | Official…',
           channel: 'Don Diablo',
           views: '396k views',
           createdAt: 'a week ago',

      },
      {
           src: 'https://i.ytimg.com/vi/_Uu12zY01ts/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLCpX6Jan2rxrCAZxJYDXppTP4MoQA',
           title: 'Queen - Greatest Hits',
           channel: 'Queen Official',
           views: '40M views',
           createdAt: '3 years ago',

      },
      {
           src: 'https://i.ytimg.com/vi/kkLk2XWMBf8/hqdefault.jpg?sqp=-oaymwEYCNIBEHZIVfKriqkDCwgBFQAAiEIYAXAB&rs=AOn4CLB4GZTFu1Ju2EPPPXnhMZtFVvYBaw',
           title: 'Calvin Harris, Sam Smith - Promises (Official Video)',
           channel: 'Calvin Harris',
           views: '130M views',
           createdAt: '10 months ago',

      },
];
function SkeletonCard() {
      return (
           <Grid container wrap="nowrap">
                 {(data).map((_item, index) => (
                        <Box key={index} sx={{ width: 210, marginRight: 0.5, my: 5 }}>
                             <Skeleton variant="rectangular" width={210} height={118} />
                              <Box sx={{ pt: 0.5 }}>
                                   <Skeleton />
                                   <Skeleton width="60%" />
                              </Box>
                        </Box>

                 ))}
           </Grid>
      );
}
<SuspenseProviders fallback={<SkeletonCard /> }>
     <Grid container wrap="nowrap">
           {(data).map((item, index) => (
                  <Box key={index} sx={{ width: 210, marginRight: 0.5, my: 2 }}>
                        <img
                              style={{ width: 210, height: 118 }}
                              alt={item.title}
                              src={item.src}
                        />
                        <Box sx={{ pr: 2 }}>
                              <Typography gutterBottom variant="body2">{item.title}</Typography>
                              <Typography
                                    variant="caption"
                                    sx={{ display: 'block', color: 'text.secondary' }}
                              >
                                    {item.channel}
                              </Typography>
                              <Typography variant="caption" sx={{ color: 'text.secondary' }}>
                                    {`${item.views} • ${item.createdAt}`}
                              </Typography>
                        </Box>
                  </Box>

           ))}
     </Grid>
</SuspenseProviders>
skeleton : Variants


<Skeleton variant="text" sx={{ fontSize: '1rem' }} />
<Skeleton variant="circular" width={40} height={40} />
<Skeleton variant="rectangular" width={210} height={60} />
<Skeleton variant="rounded" width={210} height={60} />
skeleton : Animations


<Skeleton />
<Skeleton animation="wave" />
<Skeleton animation={false} />