Full Code of gopinav/React-MUI-Tutorials for AI

master 0c069c13b43e cached
53 files
60.3 KB
17.1k tokens
8 symbols
1 requests
Download .txt
Repository: gopinav/React-MUI-Tutorials
Branch: master
Commit: 0c069c13b43e
Files: 53
Total size: 60.3 KB

Directory structure:
gitextract_erixtw6q/

└── react-mui-demo/
    ├── .gitignore
    ├── README.md
    ├── package.json
    ├── public/
    │   ├── index.html
    │   ├── manifest.json
    │   └── robots.txt
    ├── src/
    │   ├── App.css
    │   ├── App.test.tsx
    │   ├── App.tsx
    │   ├── components/
    │   │   ├── MuiAccordion.tsx
    │   │   ├── MuiAlert.tsx
    │   │   ├── MuiAutocomplete.tsx
    │   │   ├── MuiAvatar.tsx
    │   │   ├── MuiBadge.tsx
    │   │   ├── MuiBottomNavigation.tsx
    │   │   ├── MuiBreadcrumbs.tsx
    │   │   ├── MuiButton.tsx
    │   │   ├── MuiCard.tsx
    │   │   ├── MuiCheckbox.tsx
    │   │   ├── MuiChip.tsx
    │   │   ├── MuiCustomTheme.tsx
    │   │   ├── MuiDateRangePicker.tsx
    │   │   ├── MuiDateTimePicker.tsx
    │   │   ├── MuiDialog.tsx
    │   │   ├── MuiDrawer.tsx
    │   │   ├── MuiImageList.tsx
    │   │   ├── MuiLayout.tsx
    │   │   ├── MuiLink.tsx
    │   │   ├── MuiList.tsx
    │   │   ├── MuiLoadingButton.tsx
    │   │   ├── MuiMasonry.tsx
    │   │   ├── MuiNavbar.tsx
    │   │   ├── MuiProgress.tsx
    │   │   ├── MuiRadioButton.tsx
    │   │   ├── MuiRating.tsx
    │   │   ├── MuiSelect.tsx
    │   │   ├── MuiSkeleton.tsx
    │   │   ├── MuiSnackbar.tsx
    │   │   ├── MuiSpeedDial.tsx
    │   │   ├── MuiSwitch.tsx
    │   │   ├── MuiTable.tsx
    │   │   ├── MuiTabs.tsx
    │   │   ├── MuiTextField.tsx
    │   │   ├── MuiTimeline.tsx
    │   │   ├── MuiTooltip.tsx
    │   │   └── MuiTypography.tsx
    │   ├── index.css
    │   ├── index.tsx
    │   ├── react-app-env.d.ts
    │   ├── reportWebVitals.ts
    │   ├── setupTests.ts
    │   └── theme.d.ts
    └── tsconfig.json

================================================
FILE CONTENTS
================================================

================================================
FILE: react-mui-demo/.gitignore
================================================
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*


================================================
FILE: react-mui-demo/README.md
================================================
# Getting Started with Create React App

This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).

## Available Scripts

In the project directory, you can run:

### `npm start`

Runs the app in the development mode.\
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.

The page will reload if you make edits.\
You will also see any lint errors in the console.

### `npm test`

Launches the test runner in the interactive watch mode.\
See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.

### `npm run build`

Builds the app for production to the `build` folder.\
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.\
Your app is ready to be deployed!

See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.

### `npm run eject`

**Note: this is a one-way operation. Once you `eject`, you can’t go back!**

If you aren’t satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.

Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.

You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.

## Learn More

You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).

To learn React, check out the [React documentation](https://reactjs.org/).


================================================
FILE: react-mui-demo/package.json
================================================
{
  "name": "react-mui-demo",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@date-io/date-fns": "^2.13.1",
    "@emotion/react": "^11.7.1",
    "@emotion/styled": "^11.6.0",
    "@mui/icons-material": "^5.3.1",
    "@mui/lab": "^5.0.0-alpha.67",
    "@mui/material": "^5.3.1",
    "@testing-library/jest-dom": "^5.16.1",
    "@testing-library/react": "^12.1.2",
    "@testing-library/user-event": "^13.5.0",
    "@types/jest": "^27.4.0",
    "@types/node": "^16.11.21",
    "@types/react": "^17.0.38",
    "@types/react-dom": "^17.0.11",
    "date-fns": "^2.28.0",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "react-scripts": "5.0.0",
    "typescript": "^4.5.5",
    "web-vitals": "^2.1.4"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}


================================================
FILE: react-mui-demo/public/index.html
================================================
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="theme-color" content="#000000" />
    <meta
      name="description"
      content="Web site created using create-react-app"
    />
    <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
    <!--
      manifest.json provides metadata used when your web app is installed on a
      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
    -->
    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
    <!--
      Notice the use of %PUBLIC_URL% in the tags above.
      It will be replaced with the URL of the `public` folder during the build.
      Only files inside the `public` folder can be referenced from the HTML.

      Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
      work correctly both with client-side routing and a non-root public URL.
      Learn how to configure a non-root public URL by running `npm run build`.
    -->
    <title>React App</title>
  </head>
  <body>
    <noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
    <!--
      This HTML file is a template.
      If you open it directly in the browser, you will see an empty page.

      You can add webfonts, meta tags, or analytics to this file.
      The build step will place the bundled scripts into the <body> tag.

      To begin the development, run `npm start` or `yarn start`.
      To create a production bundle, use `npm run build` or `yarn build`.
    -->
  </body>
</html>


================================================
FILE: react-mui-demo/public/manifest.json
================================================
{
  "short_name": "React App",
  "name": "Create React App Sample",
  "icons": [
    {
      "src": "favicon.ico",
      "sizes": "64x64 32x32 24x24 16x16",
      "type": "image/x-icon"
    },
    {
      "src": "logo192.png",
      "type": "image/png",
      "sizes": "192x192"
    },
    {
      "src": "logo512.png",
      "type": "image/png",
      "sizes": "512x512"
    }
  ],
  "start_url": ".",
  "display": "standalone",
  "theme_color": "#000000",
  "background_color": "#ffffff"
}


================================================
FILE: react-mui-demo/public/robots.txt
================================================
# https://www.robotstxt.org/robotstxt.html
User-agent: *
Disallow:


================================================
FILE: react-mui-demo/src/App.css
================================================
/* body {
  background-color: #eeeeee;
} */
.App {
  margin: 4rem;
}

.App-logo {
  height: 40vmin;
  pointer-events: none;
}

@media (prefers-reduced-motion: no-preference) {
  .App-logo {
    animation: App-logo-spin infinite 20s linear;
  }
}

.App-header {
  background-color: #282c34;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-size: calc(10px + 2vmin);
  color: white;
}

.App-link {
  color: #61dafb;
}

@keyframes App-logo-spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}


================================================
FILE: react-mui-demo/src/App.test.tsx
================================================
import React from 'react';
import { render, screen } from '@testing-library/react';
import App from './App';

test('renders learn react link', () => {
  render(<App />);
  const linkElement = screen.getByText(/learn react/i);
  expect(linkElement).toBeInTheDocument();
});


================================================
FILE: react-mui-demo/src/App.tsx
================================================
import { createTheme, ThemeProvider, colors } from '@mui/material'
import AdapterDateFns from '@mui/lab/AdapterDateFns'
import { LocalizationProvider } from '@mui/lab'
import './App.css'
// import { MuiTable } from './components/MuiTable'
import { MuiCustomTheme } from './components/MuiCustomTheme'

// import { MuiTypography } from './components/MuiTypography'
// import { MuiButton } from './components/MuiButton'
// import { MuiTextField } from './components/MuiTextField'
// import { MuiSelect } from './components/MuiSelect'
// import { MuiRadioButton } from './components/MuiRadioButton'
// import { MuiCheckbox } from './components/MuiCheckbox'
// import { MuiSwitch } from './components/MuiSwitch'
// import { MuiRating } from './components/MuiRating'
// import { MuiAutocomplete } from './components/MuiAutocomplete'
// import { MuiLayout } from './components/MuiLayout'
// import { MuiCard } from './components/MuiCard'
// import { MuiAccordion } from './components/MuiAccordion'
// import { MuiImageList } from './components/MuiImageList'
// import { MuiNavbar } from './components/MuiNavbar'
// import { MuiLink } from './components/MuiLink'
// import { MuiBreadcrumbs } from './components/MuiBreadcrumbs'
// import { MuiDrawer } from './components/MuiDrawer'
// import { MuiTabs } from './components/MuiTabs'
// import { MuiSpeedDial } from './components/MuiSpeedDial'
// import { MuiBottomNavigation } from './components/MuiBottomNavigation'
// import { MuiAvatar } from './components/MuiAvatar'
// import { MuiBadge } from './components/MuiBadge'
// import { MuiList } from './components/MuiList'
// import { MuiChip } from './components/MuiChip'
// import { MuiTooltip } from './components/MuiTooltip'
// import { MuiAlert } from './components/MuiAlert'
// import { MuiSnackbar } from './components/MuiSnackbar'
// import { MuiDialog } from './components/MuiDialog'
// import { MuiSkeleton } from './components/MuiSkeleton'
// import { MuiProgress } from './components/MuiProgress'
// import { MuiLoadingButton } from './components/MuiLoadingButton'
// import { MuiDateTimePicker } from './components/MuiDateTimePicker'
// import { MuiDateRangePicker } from './components/MuiDateRangePicker'
// import { MuiTimeline } from './components/MuiTimeline'
// import { MuiMasonry } from './components/MuiMasonry'

const theme = createTheme({
  status: {
    danger: '#e53e3e'
  },
  palette: {
    secondary: {
      main: colors.orange[500]
    },
    neutral: {
      main: colors.grey[500],
      darker: colors.grey[700]
    }
  }
})

function App() {
  return (
    <ThemeProvider theme={theme}>
      <LocalizationProvider dateAdapter={AdapterDateFns}>
        <div className='App'>
          {/* <MuiTypography /> */}
          {/* <MuiButton /> */}
          {/* <MuiTextField /> */}
          {/* <MuiSelect /> */}
          {/* <MuiRadioButton /> */}
          {/* <MuiCheckbox /> */}
          {/* <MuiSwitch /> */}
          {/* <MuiRating /> */}
          {/* <MuiAutocomplete /> */}
          {/* <MuiLayout /> */}
          {/* <MuiCard /> */}
          {/* <MuiAccordion /> */}
          {/* <MuiImageList /> */}
          {/* <MuiNavbar /> */}
          {/* <MuiLink /> */}
          {/* <MuiBreadcrumbs /> */}
          {/* <MuiDrawer /> */}
          {/* <MuiTabs /> */}
          {/* <MuiSpeedDial /> */}
          {/* <MuiBottomNavigation /> */}
          {/* <MuiAvatar /> */}
          {/* <MuiBadge /> */}
          {/* <MuiList /> */}
          {/* <MuiChip /> */}
          {/* <MuiTooltip /> */}
          {/* <MuiTable /> */}
          {/* <MuiAlert /> */}
          {/* <MuiSnackbar /> */}
          {/* <MuiDialog /> */}
          {/* <MuiSkeleton /> */}
          {/* <MuiProgress /> */}
          {/* <MuiLoadingButton /> */}
          {/* <MuiDateTimePicker /> */}
          {/* <MuiDateRangePicker /> */}
          {/* <MuiMasonry /> */}
          {/* <MuiTimeline /> */}
          <MuiCustomTheme />
        </div>
      </LocalizationProvider>
    </ThemeProvider>
  )
}

export default App


================================================
FILE: react-mui-demo/src/components/MuiAccordion.tsx
================================================
import {
  Accordion,
  AccordionSummary,
  AccordionDetails,
  Typography
} from '@mui/material'
import ExpandMoreIcon from '@mui/icons-material/ExpandMore'
import { useState } from 'react'

export const MuiAccordion = () => {
  const [expanded, setExpanded] = useState<string | false>(false)
  const handleChange = (isExpanded: boolean, panel: string) => {
    setExpanded(isExpanded ? panel : false)
  }
  return (
    <>
      <Accordion
        expanded={expanded === 'panel1'}
        onChange={(event, isExpanded) => handleChange(isExpanded, 'panel1')}>
        <AccordionSummary
          aria-controls='panel1-content'
          id='panel1-header'
          expandIcon={<ExpandMoreIcon />}>
          <Typography>Accordion 1</Typography>
        </AccordionSummary>
        <AccordionDetails>
          <Typography>
            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse
            malesuada lacus ex, sit amet blandit leo lobortis eget.
          </Typography>
        </AccordionDetails>
      </Accordion>
      <Accordion
        expanded={expanded === 'panel2'}
        onChange={(event, isExpanded) => handleChange(isExpanded, 'panel2')}>
        <AccordionSummary
          aria-controls='panel2-content'
          id='panel2-header'
          expandIcon={<ExpandMoreIcon />}>
          <Typography>Accordion 2</Typography>
        </AccordionSummary>
        <AccordionDetails>
          <Typography>
            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse
            malesuada lacus ex, sit amet blandit leo lobortis eget.
          </Typography>
        </AccordionDetails>
      </Accordion>
      <Accordion
        expanded={expanded === 'panel3'}
        onChange={(event, isExpanded) => handleChange(isExpanded, 'panel3')}>
        <AccordionSummary
          aria-controls='panel3-content'
          id='panel3-header'
          expandIcon={<ExpandMoreIcon />}>
          <Typography>Accordion 3</Typography>
        </AccordionSummary>
        <AccordionDetails>
          <Typography>
            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse
            malesuada lacus ex, sit amet blandit leo lobortis eget.
          </Typography>
        </AccordionDetails>
      </Accordion>
    </>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiAlert.tsx
================================================
import { Stack, Alert, AlertTitle, Button } from '@mui/material'
import CheckIcon from '@mui/icons-material/Check'
export const MuiAlert = () => {
  return (
    <Stack spacing={2}>
      <Alert severity='error' onClose={() => alert('Close alert')}>
        <AlertTitle>Error</AlertTitle>This is an error alert
      </Alert>
      <Alert severity='warning'>
        <AlertTitle>Warning</AlertTitle>This is a warning alert
      </Alert>
      <Alert severity='info'>
        <AlertTitle>Info</AlertTitle>This is an info alert
      </Alert>
      <Alert
        severity='success'
        icon={<CheckIcon fontSize='inherit' />}
        action={
          <Button color='inherit' size='small'>
            UNDO
          </Button>
        }>
        <AlertTitle>Success</AlertTitle>This is a success alert
      </Alert>
      <Alert variant='outlined' severity='error'>
        This is an outlined error alert
      </Alert>
      <Alert variant='outlined' severity='warning'>
        This is a outlined warning alert
      </Alert>
      <Alert variant='outlined' severity='info'>
        This is an outlined info alert
      </Alert>
      <Alert variant='outlined' severity='success'>
        This is a outlined success alert
      </Alert>
      <Alert variant='filled' severity='error'>
        This is an filled error alert
      </Alert>
      <Alert variant='filled' severity='warning'>
        This is a filled warning alert
      </Alert>
      <Alert variant='filled' severity='info'>
        This is an filled info alert
      </Alert>
      <Alert variant='filled' severity='success'>
        This is a filled success alert
      </Alert>
    </Stack>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiAutocomplete.tsx
================================================
import { Stack, Autocomplete, TextField } from '@mui/material'
import { useState } from 'react'

type Skill = {
  id: number
  label: string
}

const skills = ['HTML', 'CSS', 'JavaScript', 'TypeScript', 'React']
const skillsOptions = skills.map((skill, index) => ({
  id: index + 1,
  label: skill
}))

export const MuiAutocomplete = () => {
  const [value, setValue] = useState<string | null>(null)
  const [skill, setSkill] = useState<Skill | null>(null)
  console.log(skill)
  return (
    <Stack spacing={2} width='250px'>
      <Autocomplete
        options={skills}
        renderInput={params => <TextField {...params} label='Skills' />}
        value={value}
        onChange={(event: any, newValue: string | null) => {
          setValue(newValue)
        }}
      />
      <Autocomplete
        options={skillsOptions}
        renderInput={params => <TextField {...params} label='Skills' />}
        value={skill}
        onChange={(_event: any, newValue: Skill | null) => {
          setSkill(newValue)
        }}
      />
    </Stack>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiAvatar.tsx
================================================
import { Stack, Avatar, AvatarGroup } from '@mui/material'
export const MuiAvatar = () => {
  return (
    <Stack spacing={4}>
      <Stack direction='row' spacing={1}>
        <Avatar sx={{ bgcolor: 'primary.light' }}>BW</Avatar>
        <Avatar sx={{ bgcolor: 'success.light' }}>CK</Avatar>
      </Stack>
      <Stack direction='row' spacing={1}>
        <AvatarGroup max={3}>
          <Avatar sx={{ bgcolor: 'primary.light' }}>BW</Avatar>
          <Avatar sx={{ bgcolor: 'success.light' }}>CK</Avatar>
          <Avatar
            src='https://randomuser.me/api/portraits/women/79.jpg'
            alt='Jane Doe'
          />
          <Avatar
            src='https://randomuser.me/api/portraits/men/51.jpg'
            alt='John Doe'
          />
        </AvatarGroup>
      </Stack>
      <Stack direction='row' spacing={1}>
        <Avatar
          variant='rounded'
          sx={{ bgcolor: 'primary.light', width: 48, height: 48 }}>
          BW
        </Avatar>
        <Avatar
          variant='rounded'
          sx={{ bgcolor: 'success.light', width: 48, height: 48 }}>
          CK
        </Avatar>
      </Stack>
    </Stack>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiBadge.tsx
================================================
import { Stack, Badge } from '@mui/material'
import MailIcon from '@mui/icons-material/Mail'

export const MuiBadge = () => {
  return (
    <Stack spacing={2} direction='row'>
      <Badge badgeContent={5} color='secondary'>
        <MailIcon />
      </Badge>
      <Badge badgeContent={0} color='secondary' showZero>
        <MailIcon />
      </Badge>
      <Badge badgeContent={100} color='secondary' max={999}>
        <MailIcon />
      </Badge>
      <Badge color='secondary' variant='dot'>
        <MailIcon />
      </Badge>
    </Stack>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiBottomNavigation.tsx
================================================
import { BottomNavigation, BottomNavigationAction } from '@mui/material'
import HomeIcon from '@mui/icons-material/Home'
import FavoriteIcon from '@mui/icons-material/Favorite'
import PersonIcon from '@mui/icons-material/Person'
import { useState } from 'react'

export const MuiBottomNavigation = () => {
  const [value, setValue] = useState(0)
  return (
    <BottomNavigation
      sx={{ width: '100%', position: 'absolute', bottom: 0 }}
      showLabels
      value={value}
      onChange={(event, newValue) => {
        setValue(newValue)
      }}>
      <BottomNavigationAction label='Home' icon={<HomeIcon />} />
      <BottomNavigationAction label='Favorites' icon={<FavoriteIcon />} />
      <BottomNavigationAction label='Profile' icon={<PersonIcon />} />
    </BottomNavigation>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiBreadcrumbs.tsx
================================================
import { Box, Breadcrumbs, Link, Typography } from '@mui/material'
import NavigateNextIcon from '@mui/icons-material/NavigateNext'

export const MuiBreadcrumbs = () => {
  return (
    <Box m={2}>
      <Breadcrumbs
        separator={<NavigateNextIcon fontSize='small' />}
        maxItems={3}
        itemsAfterCollapse={2}
        aria-label='breadcrumb'>
        <Link underline='hover' href='#'>
          Home
        </Link>
        <Link underline='hover' href='#'>
          Catalog
        </Link>
        <Link underline='hover' href='#'>
          Accessories
        </Link>
        <Link underline='hover' href='#'>
          New Collection
        </Link>
        <Typography color='text.primary'>Shoes</Typography>
      </Breadcrumbs>
    </Box>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiButton.tsx
================================================
import { useState } from 'react'
import {
  Stack,
  Button,
  IconButton,
  ButtonGroup,
  ToggleButtonGroup,
  ToggleButton
} from '@mui/material'
import SendIcon from '@mui/icons-material/Send'
import FormatBoldIcon from '@mui/icons-material/FormatBold'
import FormatItalicIcon from '@mui/icons-material/FormatItalic'
import FormatUnderlinedIcon from '@mui/icons-material/FormatUnderlined'

export const MuiButton = () => {
  const [formats, setFormats] = useState<string[]>([])
  console.log(formats)

  const handleFormatChange = (
    _event: React.MouseEvent<HTMLElement>,
    updatedFormats: string[]
  ) => {
    setFormats(updatedFormats)
  }
  return (
    <Stack spacing={4}>
      <Stack spacing={2} direction='row'>
        <Button variant='text' href='https://google.com'>
          Text
        </Button>
        <Button variant='contained'>Contained</Button>
        <Button variant='outlined'>Outlined</Button>
      </Stack>
      <Stack spacing={2} direction='row'>
        <Button variant='contained' color='primary'>
          Primary
        </Button>
        <Button variant='contained' color='secondary'>
          Secondary
        </Button>
        <Button variant='contained' color='error'>
          Error
        </Button>
        <Button variant='contained' color='warning'>
          Warning
        </Button>
        <Button variant='contained' color='info'>
          Info
        </Button>
        <Button variant='contained' color='success'>
          Success
        </Button>
      </Stack>
      <Stack display='block' spacing={2} direction='row'>
        <Button variant='contained' size='small'>
          Small
        </Button>
        <Button variant='contained' size='medium'>
          Medium
        </Button>
        <Button variant='contained' size='large'>
          Large
        </Button>
      </Stack>
      <Stack spacing={2} direction='row'>
        <Button
          variant='contained'
          startIcon={<SendIcon />}
          disableRipple
          onClick={() => alert('Clicked')}>
          Send
        </Button>
        <Button variant='contained' endIcon={<SendIcon />} disableElevation>
          Send
        </Button>
        <IconButton color='success' size='small' aria-label='send'>
          <SendIcon />
        </IconButton>
      </Stack>
      <Stack direction='row'>
        <ButtonGroup
          variant='text'
          orientation='vertical'
          size='small'
          color='secondary'
          aria-label='alignment button group'>
          <Button onClick={() => alert('Left clicked')}>Left</Button>
          <Button>Center</Button>
          <Button>Right</Button>
        </ButtonGroup>
      </Stack>
      <Stack direction='row'>
        <ToggleButtonGroup
          exclusive
          value={formats}
          onChange={handleFormatChange}
          aria-label='text formatting'>
          <ToggleButton value='bold' aria-label='bold'>
            <FormatBoldIcon />
          </ToggleButton>
          <ToggleButton value='italic' aria-label='italic'>
            <FormatItalicIcon />
          </ToggleButton>
          <ToggleButton value='underlined' aria-label='underline'>
            <FormatUnderlinedIcon />
          </ToggleButton>
        </ToggleButtonGroup>
      </Stack>
    </Stack>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiCard.tsx
================================================
import {
  Box,
  Card,
  CardContent,
  CardActions,
  Typography,
  Button,
  CardMedia
} from '@mui/material'

export const MuiCard = () => {
  return (
    <Box width='300px'>
      <Card>
        <CardMedia
          component='img'
          height='140'
          image='https://source.unsplash.com/random'
          alt='unsplash image'
        />
        <CardContent>
          <Typography gutterBottom variant='h5' component='div'>
            React
          </Typography>
          <Typography variant='body2' color='text.secondary'>
            React is a JavaScript library for building user interfaces. React
            can be used as a base in the development of single-page or mobile
            applications.
          </Typography>
        </CardContent>
        <CardActions>
          <Button size='small'>Share</Button>
          <Button size='small'>Learn More</Button>
        </CardActions>
      </Card>
    </Box>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiCheckbox.tsx
================================================
import { useState } from 'react'
import {
  Box,
  FormControlLabel,
  Checkbox,
  FormControl,
  FormLabel,
  FormGroup
} from '@mui/material'
import BookmarkBorderIcon from '@mui/icons-material/BookmarkBorder'
import BookmarkIcon from '@mui/icons-material/Bookmark'

export const MuiCheckbox = () => {
  const [acceptTnC, setAcceptTnC] = useState(false)
  const [skills, setSkills] = useState<string[]>([])
  console.log(skills)

  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
    setAcceptTnC(event.target.checked)
  }
  const handleSkillChange = (event: React.ChangeEvent<HTMLInputElement>) => {
    const index = skills.indexOf(event.target.value)
    if (index === -1) {
      setSkills([...skills, event.target.value])
    } else {
      setSkills(skills.filter(skill => skill !== event.target.value))
    }
  }
  return (
    <Box>
      <Box>
        <FormControlLabel
          control={
            <Checkbox
              checked={acceptTnC}
              onChange={handleChange}
              size='small'
              color='secondary'
            />
          }
          label='Accept terms and conditions'
        />
      </Box>
      <Box>
        <Checkbox
          icon={<BookmarkBorderIcon />}
          checkedIcon={<BookmarkIcon />}
          checked={acceptTnC}
          onChange={handleChange}
        />
      </Box>
      <Box>
        <FormControl error>
          <FormLabel>Skills</FormLabel>
          <FormGroup>
            <FormControlLabel
              control={
                <Checkbox
                  value='html'
                  checked={skills.includes('html')}
                  onChange={handleSkillChange}
                />
              }
              label='HTML'
            />
            <FormControlLabel
              control={
                <Checkbox
                  value='css'
                  checked={skills.includes('css')}
                  onChange={handleSkillChange}
                />
              }
              label='CSS'
            />
            <FormControlLabel
              control={
                <Checkbox
                  value='javascript'
                  checked={skills.includes('javascript')}
                  onChange={handleSkillChange}
                />
              }
              label='JavaScript'
            />
          </FormGroup>
        </FormControl>
      </Box>
    </Box>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiChip.tsx
================================================
import { Stack, Chip, Avatar } from '@mui/material'
import { useState } from 'react'

export const MuiChip = () => {
  const [chips, setChips] = useState(['Chip 1', 'Chip 2', 'Chip 3'])
  const handleDelete = (chipToDelete: string) => {
    setChips(chips => chips.filter(chip => chip !== chipToDelete))
  }
  return (
    <Stack direction='row' spacing={1}>
      <Chip label='Chip' color='primary' size='small' />
      <Chip
        label='Chip Outlined'
        variant='outlined'
        color='secondary'
        avatar={<Avatar>V</Avatar>}
      />
      <Chip label='Click' color='success' onClick={() => alert('Clicked')} />
      <Chip
        label='Delete'
        color='error'
        onClick={() => alert('Clicked')}
        onDelete={() => alert('Delete')}
      />
      {chips.map(chip => (
        <Chip key={chip} label={chip} onDelete={() => handleDelete(chip)} />
      ))}
    </Stack>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiCustomTheme.tsx
================================================
import { Box, styled } from '@mui/material'

const StyledBox = styled(Box)(({ theme }) => ({
  height: '250px',
  width: '250px',
  backgroundColor: theme.palette.neutral?.darker
}))

export const MuiCustomTheme = () => {
  return (
    <>
      <Box
        sx={{
          height: '250px',
          width: {
            xs: 100,
            sm: 200,
            md: 300,
            lg: 400,
            xl: 500
          },
          bgcolor: 'secondary.main'
        }}></Box>
      <StyledBox></StyledBox>
    </>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiDateRangePicker.tsx
================================================
import { Box, TextField } from '@mui/material'
import { DateRangePicker, DateRange } from '@mui/lab'
import { useState } from 'react'

export const MuiDateRangePicker = () => {
  const [value, setValue] = useState<DateRange<Date>>([null, null])
  console.log('value', value)
  return (
    <Box width='500px'>
      <DateRangePicker
        startText='Check-in'
        endText='Check-out'
        value={value}
        onChange={newValue => {
          setValue(newValue)
        }}
        renderInput={(startProps, endProps) => (
          <>
            <TextField {...startProps} />
            <Box sx={{ mx: 2 }}> to </Box>
            <TextField {...endProps} />
          </>
        )}
      />
    </Box>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiDateTimePicker.tsx
================================================
import { Stack, TextField } from '@mui/material'
import { DatePicker, TimePicker, DateTimePicker } from '@mui/lab'
import { useState } from 'react'

export const MuiDateTimePicker = () => {
  const [selectedDate, setSelectedDate] = useState<Date | null>(null)
  const [selectedTime, setSelectedTime] = useState<Date | null>(null)
  const [selectedDateTime, setSelectedDateTime] = useState<Date | null>(null)

  console.log({
    selectedDate,
    selectedTime: selectedTime && selectedTime.toLocaleTimeString(),
    selectedDateTime
  })
  return (
    <Stack spacing={4} sx={{ width: '250px' }}>
      <DatePicker
        label='Date Picker'
        value={selectedDate}
        onChange={newValue => {
          setSelectedDate(newValue)
        }}
        renderInput={params => <TextField {...params} />}
      />
      <TimePicker
        label='Time Picker'
        value={selectedTime}
        onChange={newValue => {
          setSelectedTime(newValue)
        }}
        renderInput={params => <TextField {...params} />}
      />
      <DateTimePicker
        label='Date Time Picker'
        value={selectedDateTime}
        onChange={newValue => {
          setSelectedDateTime(newValue)
        }}
        renderInput={params => <TextField {...params} />}
      />
    </Stack>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiDialog.tsx
================================================
import {
  Button,
  Dialog,
  DialogTitle,
  DialogContent,
  DialogContentText,
  DialogActions
} from '@mui/material'
import { useState } from 'react'

export const MuiDialog = () => {
  const [open, setOpen] = useState(false)
  return (
    <>
      <Button onClick={() => setOpen(true)}>Open dialog</Button>
      <Dialog
        open={open}
        onClose={() => setOpen(false)}
        aria-labelledby='dialog-title'
        aria-describedby='dialog-description'>
        <DialogTitle id='dialog-title'>Submit the test?</DialogTitle>
        <DialogContent>
          <DialogContentText id='dialog-description'>
            Are you sure you want to submit the test? You will not be able to
            edit it after submitting.
          </DialogContentText>
        </DialogContent>
        <DialogActions>
          <Button onClick={() => setOpen(false)}>Cancel</Button>
          <Button onClick={() => setOpen(false)} autoFocus>
            Submit
          </Button>
        </DialogActions>
      </Dialog>
    </>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiDrawer.tsx
================================================
import { Drawer, Box, Typography, IconButton } from '@mui/material'
import { useState } from 'react'
import MenuIcon from '@mui/icons-material/Menu'

export const MuiDrawer = () => {
  const [isDrawerOpen, setIsDrawerOpen] = useState(false)

  return (
    <>
      <IconButton
        onClick={() => setIsDrawerOpen(true)}
        size='large'
        edge='start'
        color='inherit'
        aria-label='logo'>
        <MenuIcon />
      </IconButton>
      <Drawer
        anchor='left'
        open={isDrawerOpen}
        onClose={() => setIsDrawerOpen(false)}>
        <Box p={2} width='250px' role='presentation' textAlign='center'>
          <Typography variant='h6' component='div'>
            Side Panel
          </Typography>
        </Box>
      </Drawer>
    </>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiImageList.tsx
================================================
import { Stack, ImageList, ImageListItem, Box } from '@mui/material'
export const MuiImageList = () => {
  return (
    <Stack spacing={4}>
      <ImageList sx={{ width: 500, height: 450 }} cols={3} rowHeight={164}>
        {itemData.map(item => (
          <ImageListItem key={item.img}>
            <img
              src={`${item.img}?w=164&h=164&fit=crop&auto=format&dpr=2`}
              alt={item.title}
              loading='lazy'
            />
          </ImageListItem>
        ))}
      </ImageList>
      <ImageList
        sx={{ width: 500, height: 450 }}
        variant='woven'
        cols={3}
        gap={8}>
        {itemData2.map(item => (
          <ImageListItem key={item.img}>
            <img
              src={`${item.img}?w=164&h=164&fit=crop&auto=format&dpr=2`}
              alt={item.title}
              loading='lazy'
            />
          </ImageListItem>
        ))}
      </ImageList>
      <Box sx={{ width: 500, height: 450, overflowY: 'scroll' }}>
        <ImageList variant='masonry' cols={3} gap={8}>
          {itemData3.map(item => (
            <ImageListItem key={item.img}>
              <img
                src={`${item.img}?w=248&fit=crop&auto=format&dpr=2`}
                alt={item.title}
                loading='lazy'
              />
            </ImageListItem>
          ))}
        </ImageList>
      </Box>
    </Stack>
  )
}

const itemData = [
  {
    img: 'https://images.unsplash.com/photo-1551963831-b3b1ca40c98e',
    title: 'Breakfast'
  },
  {
    img: 'https://images.unsplash.com/photo-1551782450-a2132b4ba21d',
    title: 'Burger'
  },
  {
    img: 'https://images.unsplash.com/photo-1522770179533-24471fcdba45',
    title: 'Camera'
  },
  {
    img: 'https://images.unsplash.com/photo-1444418776041-9c7e33cc5a9c',
    title: 'Coffee'
  },
  {
    img: 'https://images.unsplash.com/photo-1533827432537-70133748f5c8',
    title: 'Hats'
  },
  {
    img: 'https://images.unsplash.com/photo-1558642452-9d2a7deb7f62',
    title: 'Honey'
  },
  {
    img: 'https://images.unsplash.com/photo-1516802273409-68526ee1bdd6',
    title: 'Basketball'
  },
  {
    img: 'https://images.unsplash.com/photo-1518756131217-31eb79b20e8f',
    title: 'Fern'
  },
  {
    img: 'https://images.unsplash.com/photo-1597645587822-e99fa5d45d25',
    title: 'Mushrooms'
  },
  {
    img: 'https://images.unsplash.com/photo-1567306301408-9b74779a11af',
    title: 'Tomato basil'
  },
  {
    img: 'https://images.unsplash.com/photo-1471357674240-e1a485acb3e1',
    title: 'Sea star'
  },
  {
    img: 'https://images.unsplash.com/photo-1589118949245-7d38baf380d6',
    title: 'Bike'
  }
]

const itemData2 = [
  {
    img: 'https://images.unsplash.com/photo-1549388604-817d15aa0110',
    title: 'Bed'
  },
  {
    img: 'https://images.unsplash.com/photo-1563298723-dcfebaa392e3',
    title: 'Kitchen'
  },
  {
    img: 'https://images.unsplash.com/photo-1523413651479-597eb2da0ad6',
    title: 'Sink'
  },
  {
    img: 'https://images.unsplash.com/photo-1525097487452-6278ff080c31',
    title: 'Books'
  },
  {
    img: 'https://images.unsplash.com/photo-1574180045827-681f8a1a9622',
    title: 'Chairs'
  },
  {
    img: 'https://images.unsplash.com/photo-1597262975002-c5c3b14bbd62',
    title: 'Candle'
  },
  {
    img: 'https://images.unsplash.com/photo-1530731141654-5993c3016c77',
    title: 'Laptop'
  },
  {
    img: 'https://images.unsplash.com/photo-1481277542470-605612bd2d61',
    title: 'Doors'
  },
  {
    img: 'https://images.unsplash.com/photo-1517487881594-2787fef5ebf7',
    title: 'Coffee'
  },
  {
    img: 'https://images.unsplash.com/photo-1516455207990-7a41ce80f7ee',
    title: 'Storage'
  },
  {
    img: 'https://images.unsplash.com/photo-1519710164239-da123dc03ef4',
    title: 'Coffee table'
  },
  {
    img: 'https://images.unsplash.com/photo-1588436706487-9d55d73a39e3',
    title: 'Blinds'
  }
]
const itemData3 = [
  {
    img: 'https://images.unsplash.com/photo-1549388604-817d15aa0110',
    title: 'Bed'
  },
  {
    img: 'https://images.unsplash.com/photo-1525097487452-6278ff080c31',
    title: 'Books'
  },
  {
    img: 'https://images.unsplash.com/photo-1523413651479-597eb2da0ad6',
    title: 'Sink'
  },
  {
    img: 'https://images.unsplash.com/photo-1563298723-dcfebaa392e3',
    title: 'Kitchen'
  },
  {
    img: 'https://images.unsplash.com/photo-1588436706487-9d55d73a39e3',
    title: 'Blinds'
  },
  {
    img: 'https://images.unsplash.com/photo-1574180045827-681f8a1a9622',
    title: 'Chairs'
  },
  {
    img: 'https://images.unsplash.com/photo-1530731141654-5993c3016c77',
    title: 'Laptop'
  },
  {
    img: 'https://images.unsplash.com/photo-1481277542470-605612bd2d61',
    title: 'Doors'
  },
  {
    img: 'https://images.unsplash.com/photo-1517487881594-2787fef5ebf7',
    title: 'Coffee'
  },
  {
    img: 'https://images.unsplash.com/photo-1516455207990-7a41ce80f7ee',
    title: 'Storage'
  },
  {
    img: 'https://images.unsplash.com/photo-1597262975002-c5c3b14bbd62',
    title: 'Candle'
  },
  {
    img: 'https://images.unsplash.com/photo-1519710164239-da123dc03ef4',
    title: 'Coffee table'
  }
]


================================================
FILE: react-mui-demo/src/components/MuiLayout.tsx
================================================
import { Box, Stack, Grid, Paper } from '@mui/material'

export const MuiLayout = () => {
  return (
    <Paper sx={{ padding: '32px' }} elevation={2}>
      <Stack border='1px solid' spacing={2} direction='row'>
        <Box
          component='span'
          sx={{
            backgroundColor: 'primary.main',
            color: 'white',
            height: '100px',
            width: '100px',
            padding: '16px',
            '&:hover': {
              backgroundColor: 'primary.light'
            }
          }}>
          Codevolution
        </Box>
        <Box
          display='flex'
          height='100px'
          width='100px'
          bgcolor='success.light'
          p={2}></Box>
      </Stack>
      <Grid rowSpacing={2} columnSpacing={1} container my={4}>
        <Grid item xs={6}>
          <Box p={2} bgcolor='primary.light'>
            Item 1
          </Box>
        </Grid>
        <Grid item xs={6}>
          <Box p={2} bgcolor='primary.light'>
            Item 2
          </Box>
        </Grid>
        <Grid item xs={6}>
          <Box p={2} bgcolor='primary.light'>
            Item 3
          </Box>
        </Grid>
        <Grid item xs={6}>
          <Box p={2} bgcolor='primary.light'>
            Item 4
          </Box>
        </Grid>
      </Grid>
    </Paper>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiLink.tsx
================================================
import { Stack, Link, Typography } from '@mui/material'

export const MuiLink = () => {
  return (
    <Stack spacing={2} m={4} direction='row'>
      <Typography variant='h6'>
        <Link href='#'>Link</Link>
      </Typography>
      <Link href='#' color='secondary' underline='hover'>
        Secondary
      </Link>
      <Link href='#' variant='body2' underline='none'>
        Body 2 link
      </Link>
    </Stack>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiList.tsx
================================================
import {
  Box,
  List,
  ListItem,
  ListItemText,
  ListItemButton,
  ListItemIcon,
  Divider,
  ListItemAvatar,
  Avatar
} from '@mui/material'
import InboxIcon from '@mui/icons-material/Inbox'

export const MuiList = () => {
  return (
    <Box sx={{ width: '400px', bgcolor: '#efefef' }}>
      <List>
        <ListItem disablePadding>
          <ListItemButton>
            <ListItemIcon>
              <InboxIcon />
            </ListItemIcon>
            <ListItemText primary='List item 1' />
          </ListItemButton>
        </ListItem>
        <Divider />
        <ListItem>
          <ListItemAvatar>
            <Avatar>
              <InboxIcon />
            </Avatar>
          </ListItemAvatar>
          <ListItemText primary='List item 2' secondary='Secondary text' />
        </ListItem>
        <ListItem>
          <ListItemText primary='List item 3' />
        </ListItem>
      </List>
    </Box>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiLoadingButton.tsx
================================================
import { Stack } from '@mui/material'
import { LoadingButton } from '@mui/lab'
import SaveIcon from '@mui/icons-material/Save'

export const MuiLoadingButton = () => {
  return (
    <Stack direction='row' spacing={2}>
      <LoadingButton variant='outlined'>Submit</LoadingButton>
      <LoadingButton loading variant='outlined'>
        Submit
      </LoadingButton>
      <LoadingButton loadingIndicator='Loading...' variant='outlined'>
        Fetch data
      </LoadingButton>
      <LoadingButton loading loadingIndicator='Loading...' variant='outlined'>
        Fetch data
      </LoadingButton>
      <LoadingButton
        loadingPosition='start'
        startIcon={<SaveIcon />}
        variant='outlined'>
        Save
      </LoadingButton>
      <LoadingButton
        loading
        loadingPosition='start'
        startIcon={<SaveIcon />}
        variant='outlined'>
        Save
      </LoadingButton>
    </Stack>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiMasonry.tsx
================================================
import { Masonry } from '@mui/lab'
import {
  Box,
  Paper,
  Accordion,
  AccordionSummary,
  AccordionDetails,
  Typography
} from '@mui/material'
import ExpandMoreIcon from '@mui/icons-material/ExpandMore'

const heights = [
  150, 30, 90, 70, 110, 150, 130, 80, 50, 90, 100, 150, 30, 50, 80
]

export const MuiMasonry = () => {
  return (
    <Box sx={{ width: 500, minHeight: 400 }}>
      <Masonry columns={4} spacing={1}>
        {heights.map((height, index) => (
          <Paper
            key={index}
            sx={{
              //   display: 'flex',
              //   justifyContent: 'center',
              //   alignItems: 'center',
              //   height,
              border: '1px solid'
            }}>
            <Accordion sx={{ minHeight: height }}>
              <AccordionSummary expandIcon={<ExpandMoreIcon />}>
                <Typography>Accordion {index + 1}</Typography>
              </AccordionSummary>
              <AccordionDetails>Contents</AccordionDetails>
            </Accordion>
          </Paper>
        ))}
      </Masonry>
    </Box>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiNavbar.tsx
================================================
import {
  AppBar,
  Toolbar,
  IconButton,
  Typography,
  Button,
  Stack,
  Menu,
  MenuItem
} from '@mui/material'
import CatchingPokemonIcon from '@mui/icons-material/CatchingPokemon'
import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'
import { useState } from 'react'

export const MuiNavbar = () => {
  const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)
  const open = Boolean(anchorEl)
  const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {
    setAnchorEl(event.currentTarget)
  }
  const handleClose = () => {
    setAnchorEl(null)
  }
  return (
    <AppBar position='static' color='transparent'>
      <Toolbar>
        <IconButton size='large' edge='start' color='inherit' aria-label='logo'>
          <CatchingPokemonIcon />
        </IconButton>
        <Typography variant='h6' component='div' sx={{ flexGrow: 1 }}>
          POKEMONAPP
        </Typography>
        <Stack direction='row' spacing={2}>
          <Button color='inherit'>Features</Button>
          <Button color='inherit'>Pricing</Button>
          <Button color='inherit'>About</Button>
          <Button
            color='inherit'
            id='resources-button'
            aria-controls={open ? 'resources-menu' : undefined}
            aria-haspopup='true'
            aria-expanded={open ? 'true' : undefined}
            endIcon={<KeyboardArrowDownIcon />}
            onClick={handleClick}>
            Resources
          </Button>
          <Button color='inherit'>Login</Button>
        </Stack>
        <Menu
          id='resources-menu'
          anchorEl={anchorEl}
          open={open}
          onClose={handleClose}
          anchorOrigin={{
            vertical: 'bottom',
            horizontal: 'right'
          }}
          transformOrigin={{
            vertical: 'top',
            horizontal: 'right'
          }}
          MenuListProps={{
            'aria-labelledby': 'resources-button'
          }}>
          <MenuItem onClick={handleClose}>Blog</MenuItem>
          <MenuItem onClick={handleClose}>Podcast</MenuItem>
        </Menu>
      </Toolbar>
    </AppBar>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiProgress.tsx
================================================
import { Stack, CircularProgress, LinearProgress } from '@mui/material'
export const MuiProgress = () => {
  return (
    <Stack spacing={2}>
      <CircularProgress />
      <CircularProgress color='success' />
      <CircularProgress variant='determinate' value={60} />
      <LinearProgress />
      <LinearProgress color='success' />
      <LinearProgress variant='determinate' value={60} />
    </Stack>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiRadioButton.tsx
================================================
import { useState } from 'react'
import {
  Box,
  FormControl,
  FormLabel,
  FormControlLabel,
  RadioGroup,
  Radio
} from '@mui/material'

export const MuiRadioButton = () => {
  const [value, setValue] = useState('')
  console.log(value)

  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
    setValue(event.target.value)
  }
  return (
    <Box>
      <FormControl>
        <FormLabel id='job-experience-group-label'>
          Years of experience
        </FormLabel>
        <RadioGroup
          row
          aria-labelledby='job-experience-group-label'
          name='job-experience-group'
          value={value}
          onChange={handleChange}>
          <FormControlLabel
            labelPlacement='start'
            value='0-2'
            control={<Radio size='small' color='secondary' />}
            label='0-2 years'
          />
          <FormControlLabel
            labelPlacement='start'
            value='3-5'
            control={<Radio size='small' color='secondary' />}
            label='3-5 years'
          />
          <FormControlLabel
            labelPlacement='start'
            value='6-10'
            control={<Radio size='small' color='secondary' />}
            label='6-10 years'
          />
        </RadioGroup>
      </FormControl>
    </Box>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiRating.tsx
================================================
import { Stack, Rating } from '@mui/material'
import { useState } from 'react'
import FavoriteIcon from '@mui/icons-material/Favorite'
import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'

export const MuiRating = () => {
  const [value, setValue] = useState<number | null>(3)
  console.log(value)
  const handleChange = (
    _event: React.ChangeEvent<{}>,
    newValue: number | null
  ) => {
    setValue(newValue)
  }
  return (
    <Stack spacing={2}>
      <Rating
        value={value}
        onChange={handleChange}
        precision={0.5}
        size='large'
        icon={<FavoriteIcon fontSize='inherit' color='error' />}
        emptyIcon={<FavoriteBorderIcon fontSize='inherit' />}
        readOnly
      />
    </Stack>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiSelect.tsx
================================================
import { useState } from 'react'
import { Box, TextField, MenuItem } from '@mui/material'

export const MuiSelect = () => {
  const [countries, setCountries] = useState<string[]>([])
  console.log(countries)

  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
    const value = event.target.value
    setCountries(typeof value === 'string' ? value.split(',') : value)
  }
  return (
    <Box width='250px'>
      <TextField
        label='Select country'
        select
        SelectProps={{
          multiple: true
        }}
        size='small'
        color='secondary'
        helperText='Please select your country'
        value={countries}
        onChange={handleChange}>
        <MenuItem value='IN'>India</MenuItem>
        <MenuItem value='US'>USA</MenuItem>
        <MenuItem value='AU'>Australia</MenuItem>
      </TextField>
    </Box>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiSkeleton.tsx
================================================
import { Avatar, Box, Skeleton, Stack, Typography } from '@mui/material'
import { useState, useEffect } from 'react'

export const MuiSkeleton = () => {
  const [loading, setLoading] = useState(true)
  useEffect(() => {
    setTimeout(() => {
      setLoading(false)
    }, 3000)
  }, [])
  return (
    <Box sx={{ width: '250px' }}>
      {loading ? (
        <Skeleton
          variant='rectangular'
          width={256}
          height={144}
          animation='wave'
        />
      ) : (
        <img
          src='https://source.unsplash.com/random/256x144'
          alt='skeleton'
          width={256}
          height={144}
        />
      )}

      <Stack
        direction='row'
        spacing={1}
        sx={{ width: '100%', marginTop: '12px' }}>
        {loading ? (
          <Skeleton
            variant='circular'
            width={40}
            height={40}
            animation='wave'
          />
        ) : (
          <Avatar>V</Avatar>
        )}

        <Stack sx={{ width: '80%' }}>
          {loading ? (
            <>
              <Typography variant='body1'>
                <Skeleton variant='text' width='100%' animation='wave' />
              </Typography>
              <Typography variant='body2'>
                <Skeleton variant='text' width='100%' animation='wave' />
              </Typography>
            </>
          ) : (
            <>
              <Typography variant='body1'>React MUI Tutorial</Typography>
            </>
          )}
        </Stack>
      </Stack>
    </Box>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiSnackbar.tsx
================================================
import { Snackbar, Button, Alert, AlertProps } from '@mui/material'
import { useState, forwardRef } from 'react'

const SnackbarAlert = forwardRef<HTMLDivElement, AlertProps>(
  function SnackbarAlert(props, ref) {
    return <Alert elevation={6} ref={ref} {...props} />
  }
)

export const MuiSnackbar = () => {
  const [open, setOpen] = useState(false)
  const handleClose = (
    event?: React.SyntheticEvent | Event,
    reason?: string
  ) => {
    if (reason === 'clickaway') {
      return
    }
    setOpen(false)
  }
  return (
    <>
      <Button onClick={() => setOpen(true)}>Submit</Button>
      <Snackbar
        open={open}
        autoHideDuration={4000}
        onClose={handleClose}
        message='Form submitted successfully!'
        anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}
      />
      <Snackbar open={open} autoHideDuration={6000} onClose={handleClose}>
        <SnackbarAlert onClose={handleClose} severity='success'>
          Form submitted successfully!
        </SnackbarAlert>
      </Snackbar>
    </>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiSpeedDial.tsx
================================================
import { SpeedDial, SpeedDialAction, SpeedDialIcon } from '@mui/material'
import CopyIcon from '@mui/icons-material/FileCopyOutlined'
import PrintIcon from '@mui/icons-material/Print'
import ShareIcon from '@mui/icons-material/Share'
import EditIcon from '@mui/icons-material/Edit'

export const MuiSpeedDial = () => {
  return (
    <SpeedDial
      ariaLabel='Navigation speed dial'
      sx={{ position: 'absolute', bottom: 16, right: 16 }}
      icon={<SpeedDialIcon openIcon={<EditIcon />} />}>
      <SpeedDialAction icon={<CopyIcon />} tooltipTitle='Copy' tooltipOpen />
      <SpeedDialAction icon={<PrintIcon />} tooltipTitle='Print' tooltipOpen />
      <SpeedDialAction icon={<ShareIcon />} tooltipTitle='Share' tooltipOpen />
    </SpeedDial>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiSwitch.tsx
================================================
import { Box, FormControlLabel, Switch } from '@mui/material'
import { useState } from 'react'

export const MuiSwitch = () => {
  const [checked, setChecked] = useState(false)
  console.log(checked)
  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
    setChecked(event.target.checked)
  }
  return (
    <Box>
      <FormControlLabel
        control={<Switch checked={checked} onChange={handleChange} />}
        label='Dark mode'
      />
    </Box>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiTable.tsx
================================================
import {
  TableContainer,
  Table,
  TableHead,
  TableBody,
  TableRow,
  TableCell,
  Paper
} from '@mui/material'

export const MuiTable = () => {
  return (
    <TableContainer sx={{ maxHeight: '300px' }} component={Paper}>
      <Table stickyHeader aria-label='simple table'>
        <TableHead>
          <TableRow>
            <TableCell>Id</TableCell>
            <TableCell>First Name</TableCell>
            <TableCell>Last Name</TableCell>
            <TableCell align='center'>Email</TableCell>
          </TableRow>
        </TableHead>
        <TableBody>
          {tableData.map(row => (
            <TableRow
              key={row.id}
              sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>
              <TableCell>{row.id}</TableCell>
              <TableCell>{row.first_name}</TableCell>
              <TableCell>{row.last_name}</TableCell>
              <TableCell align='center'>{row.email}</TableCell>
            </TableRow>
          ))}
        </TableBody>
      </Table>
    </TableContainer>
  )
}

const tableData = [
  {
    id: 1,
    first_name: 'Beret',
    last_name: 'Lennard',
    email: 'blennard0@pcworld.com',
    gender: 'Female',
    ip_address: '213.196.192.52'
  },
  {
    id: 2,
    first_name: 'Tera',
    last_name: 'Choke',
    email: 'tchoke1@theatlantic.com',
    gender: 'Male',
    ip_address: '101.152.241.70'
  },
  {
    id: 3,
    first_name: 'Lyn',
    last_name: 'Bowart',
    email: 'lbowart2@odnoklassniki.ru',
    gender: 'Male',
    ip_address: '188.127.126.94'
  },
  {
    id: 4,
    first_name: 'Bert',
    last_name: 'Huckett',
    email: 'bhuckett3@tinypic.com',
    gender: 'Female',
    ip_address: '247.156.243.148'
  },
  {
    id: 5,
    first_name: 'Drew',
    last_name: 'Jenicke',
    email: 'djenicke4@businessinsider.com',
    gender: 'Male',
    ip_address: '0.185.35.172'
  },
  {
    id: 6,
    first_name: 'Deloria',
    last_name: 'Pepperill',
    email: 'dpepperill5@meetup.com',
    gender: 'Non-binary',
    ip_address: '101.44.39.120'
  },
  {
    id: 7,
    first_name: 'Spense',
    last_name: 'Ivashnyov',
    email: 'sivashnyov6@hexun.com',
    gender: 'Female',
    ip_address: '253.192.252.49'
  },
  {
    id: 8,
    first_name: 'Elden',
    last_name: 'Chaucer',
    email: 'echaucer7@mozilla.com',
    gender: 'Agender',
    ip_address: '60.70.120.186'
  },
  {
    id: 9,
    first_name: 'Sholom',
    last_name: 'Deetch',
    email: 'sdeetch8@so-net.ne.jp',
    gender: 'Female',
    ip_address: '218.36.95.147'
  },
  {
    id: 10,
    first_name: 'Genovera',
    last_name: 'Colby',
    email: 'gcolby9@dagondesign.com',
    gender: 'Non-binary',
    ip_address: '199.140.221.248'
  }
]


================================================
FILE: react-mui-demo/src/components/MuiTabs.tsx
================================================
import { Box, Tab } from '@mui/material'
import { TabContext, TabList, TabPanel } from '@mui/lab'
import { useState } from 'react'
import FavoriteIcon from '@mui/icons-material/Favorite'

export const MuiTabs = () => {
  const [value, setValue] = useState('1')

  const handleChange = (event: React.SyntheticEvent, newValue: string) => {
    setValue(newValue)
  }
  return (
    <Box sx={{ width: '300px' }}>
      <TabContext value={value}>
        <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>
          <TabList
            onChange={handleChange}
            aria-label='Tabs example'
            textColor='secondary'
            indicatorColor='secondary'
            centered
            variant='scrollable'
            scrollButtons='auto'>
            <Tab
              icon={<FavoriteIcon />}
              iconPosition='start'
              label='Tab One'
              value='1'
            />
            <Tab label='Tab Two' value='2' disabled />
            <Tab label='Tab Three' value='3' />
            <Tab label='Tab Four' value='4' />
            <Tab label='Tab Five' value='5' />
            <Tab label='Tab Six' value='6' />
          </TabList>
        </Box>
        <TabPanel value='1'>Item One</TabPanel>
        <TabPanel value='2'>Item Two</TabPanel>
        <TabPanel value='3'>Item Three</TabPanel>
        <TabPanel value='4'>Item Four</TabPanel>
        <TabPanel value='5'>Item Five</TabPanel>
        <TabPanel value='6'>Item Six</TabPanel>
      </TabContext>
    </Box>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiTextField.tsx
================================================
import { useState } from 'react'
import { Stack, TextField, InputAdornment } from '@mui/material'

export const MuiTextField = () => {
  const [value, setValue] = useState('')

  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
    setValue(event.target.value)
  }
  return (
    <Stack spacing={4}>
      <Stack spacing={2} direction='row'>
        <TextField label='Outlined' variant='outlined' />
        <TextField label='Filled' variant='filled' />
        <TextField label='Standard' variant='standard' />
      </Stack>
      <Stack spacing={2} direction='row'>
        <TextField label='Small secondary' size='small' color='secondary' />
      </Stack>
      <Stack spacing={2} direction='row'>
        <TextField
          label='Form Input'
          required
          helperText={
            !value ? 'Required' : 'Do not share your password with anyone'
          }
          type='password'
          error={!value}
          value={value}
          onChange={handleChange}
        />
      </Stack>
      <Stack spacing={2} direction='row'>
        <TextField
          label='Amount'
          InputProps={{
            startAdornment: <InputAdornment position='start'>$</InputAdornment>
          }}
        />
        <TextField
          label='Weight'
          InputProps={{
            endAdornment: <InputAdornment position='end'>kg</InputAdornment>
          }}
        />
      </Stack>
    </Stack>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiTimeline.tsx
================================================
import {
  Timeline,
  TimelineItem,
  TimelineSeparator,
  TimelineConnector,
  TimelineContent,
  TimelineDot,
  TimelineOppositeContent
} from '@mui/lab'
export const MuiTimeline = () => {
  return (
    <Timeline>
      <TimelineItem>
        <TimelineOppositeContent color='text.secondary'>
          09:30 am
        </TimelineOppositeContent>
        <TimelineSeparator>
          <TimelineDot color='secondary' variant='outlined' />
          <TimelineConnector />
        </TimelineSeparator>
        <TimelineContent>Eat</TimelineContent>
      </TimelineItem>
      <TimelineItem>
        <TimelineOppositeContent color='text.secondary'>
          10:30 am
        </TimelineOppositeContent>
        <TimelineSeparator>
          <TimelineDot color='secondary' variant='outlined' />
          <TimelineConnector />
        </TimelineSeparator>
        <TimelineContent>Code</TimelineContent>
      </TimelineItem>
      <TimelineItem>
        <TimelineOppositeContent color='text.secondary'>
          10:30 am
        </TimelineOppositeContent>
        <TimelineSeparator>
          <TimelineDot color='secondary' variant='outlined' />
          <TimelineConnector />
        </TimelineSeparator>
        <TimelineContent>Sleep</TimelineContent>
      </TimelineItem>
      <TimelineItem>
        <TimelineOppositeContent color='text.secondary'>
          09:00 am
        </TimelineOppositeContent>
        <TimelineSeparator>
          <TimelineDot color='secondary' variant='outlined' />
        </TimelineSeparator>
        <TimelineContent>Repeat</TimelineContent>
      </TimelineItem>
    </Timeline>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiTooltip.tsx
================================================
import { Tooltip, IconButton } from '@mui/material'
import DeleteIcon from '@mui/icons-material/Delete'

export const MuiTooltip = () => {
  return (
    <Tooltip
      title='Delete'
      placement='right'
      arrow
      enterDelay={500}
      leaveDelay={200}>
      <IconButton>
        <DeleteIcon />
      </IconButton>
    </Tooltip>
  )
}


================================================
FILE: react-mui-demo/src/components/MuiTypography.tsx
================================================
import { Typography } from '@mui/material'

export const MuiTypography = () => {
  return (
    <div>
      <Typography variant='h1'>h1 Heading</Typography>
      <Typography variant='h2'>h2 Heading</Typography>
      <Typography variant='h3'>h3 Heading</Typography>
      <Typography variant='h4' component='h1' gutterBottom>
        h4 Heading
      </Typography>
      <Typography variant='h5'>h5 Heading</Typography>
      <Typography variant='h6'>h6 Heading</Typography>
      <Typography variant='subtitle1'>subtitle1</Typography>
      <Typography variant='subtitle2'>subtitle2</Typography>
      <Typography>
        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nam saepe
        magnam illo quas illum minus, aperiam, iusto optio quisquam veniam
        obcaecati quasi libero aspernatur alias quia modi minima excepturi ad.
      </Typography>
      <Typography variant='body2'>
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolorum, harum
        quam deserunt optio atque illo iste! Qui ullam ut nisi. Porro adipisci
        eius nesciunt excepturi id! Eius nemo asperiores natus?
      </Typography>
    </div>
  )
}


================================================
FILE: react-mui-demo/src/index.css
================================================
body {
  margin: 0;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
    'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
    sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

code {
  font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
    monospace;
}


================================================
FILE: react-mui-demo/src/index.tsx
================================================
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById('root')
);

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();


================================================
FILE: react-mui-demo/src/react-app-env.d.ts
================================================
/// <reference types="react-scripts" />


================================================
FILE: react-mui-demo/src/reportWebVitals.ts
================================================
import { ReportHandler } from 'web-vitals';

const reportWebVitals = (onPerfEntry?: ReportHandler) => {
  if (onPerfEntry && onPerfEntry instanceof Function) {
    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
      getCLS(onPerfEntry);
      getFID(onPerfEntry);
      getFCP(onPerfEntry);
      getLCP(onPerfEntry);
      getTTFB(onPerfEntry);
    });
  }
};

export default reportWebVitals;


================================================
FILE: react-mui-demo/src/setupTests.ts
================================================
// jest-dom adds custom jest matchers for asserting on DOM nodes.
// allows you to do things like:
// expect(element).toHaveTextContent(/react/i)
// learn more: https://github.com/testing-library/jest-dom
import '@testing-library/jest-dom';


================================================
FILE: react-mui-demo/src/theme.d.ts
================================================
import { Theme, ThemeOptions } from '@mui/material/styles'

declare module '@mui/material/styles' {
  interface Theme {
    status: {
      danger: string
    }
  }
  interface ThemeOptions {
    status: {
      danger: React.CSSProperties['color']
    }
  }

  interface Palette {
    neutral?: PaletteColor
  }
  interface PaletteOptions {
    neutral?: PaletteColorOptions
  }

  interface PaletteColor {
    darker?: string
  }

  interface SimplePaletteColorOptions {
    darker?: string
  }
}


================================================
FILE: react-mui-demo/tsconfig.json
================================================
{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noFallthroughCasesInSwitch": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react-jsx"
  },
  "include": [
    "src"
  ]
}
Download .txt
gitextract_erixtw6q/

└── react-mui-demo/
    ├── .gitignore
    ├── README.md
    ├── package.json
    ├── public/
    │   ├── index.html
    │   ├── manifest.json
    │   └── robots.txt
    ├── src/
    │   ├── App.css
    │   ├── App.test.tsx
    │   ├── App.tsx
    │   ├── components/
    │   │   ├── MuiAccordion.tsx
    │   │   ├── MuiAlert.tsx
    │   │   ├── MuiAutocomplete.tsx
    │   │   ├── MuiAvatar.tsx
    │   │   ├── MuiBadge.tsx
    │   │   ├── MuiBottomNavigation.tsx
    │   │   ├── MuiBreadcrumbs.tsx
    │   │   ├── MuiButton.tsx
    │   │   ├── MuiCard.tsx
    │   │   ├── MuiCheckbox.tsx
    │   │   ├── MuiChip.tsx
    │   │   ├── MuiCustomTheme.tsx
    │   │   ├── MuiDateRangePicker.tsx
    │   │   ├── MuiDateTimePicker.tsx
    │   │   ├── MuiDialog.tsx
    │   │   ├── MuiDrawer.tsx
    │   │   ├── MuiImageList.tsx
    │   │   ├── MuiLayout.tsx
    │   │   ├── MuiLink.tsx
    │   │   ├── MuiList.tsx
    │   │   ├── MuiLoadingButton.tsx
    │   │   ├── MuiMasonry.tsx
    │   │   ├── MuiNavbar.tsx
    │   │   ├── MuiProgress.tsx
    │   │   ├── MuiRadioButton.tsx
    │   │   ├── MuiRating.tsx
    │   │   ├── MuiSelect.tsx
    │   │   ├── MuiSkeleton.tsx
    │   │   ├── MuiSnackbar.tsx
    │   │   ├── MuiSpeedDial.tsx
    │   │   ├── MuiSwitch.tsx
    │   │   ├── MuiTable.tsx
    │   │   ├── MuiTabs.tsx
    │   │   ├── MuiTextField.tsx
    │   │   ├── MuiTimeline.tsx
    │   │   ├── MuiTooltip.tsx
    │   │   └── MuiTypography.tsx
    │   ├── index.css
    │   ├── index.tsx
    │   ├── react-app-env.d.ts
    │   ├── reportWebVitals.ts
    │   ├── setupTests.ts
    │   └── theme.d.ts
    └── tsconfig.json
Download .txt
SYMBOL INDEX (8 symbols across 3 files)

FILE: react-mui-demo/src/App.tsx
  function App (line 59) | function App() {

FILE: react-mui-demo/src/components/MuiAutocomplete.tsx
  type Skill (line 4) | type Skill = {

FILE: react-mui-demo/src/theme.d.ts
  type Theme (line 4) | interface Theme {
  type ThemeOptions (line 9) | interface ThemeOptions {
  type Palette (line 15) | interface Palette {
  type PaletteOptions (line 18) | interface PaletteOptions {
  type PaletteColor (line 22) | interface PaletteColor {
  type SimplePaletteColorOptions (line 26) | interface SimplePaletteColorOptions {
Condensed preview — 53 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (68K chars).
[
  {
    "path": "react-mui-demo/.gitignore",
    "chars": 310,
    "preview": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pn"
  },
  {
    "path": "react-mui-demo/README.md",
    "chars": 2103,
    "preview": "# Getting Started with Create React App\n\nThis project was bootstrapped with [Create React App](https://github.com/facebo"
  },
  {
    "path": "react-mui-demo/package.json",
    "chars": 1208,
    "preview": "{\n  \"name\": \"react-mui-demo\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"dependencies\": {\n    \"@date-io/date-fns\": \"^2."
  },
  {
    "path": "react-mui-demo/public/index.html",
    "chars": 1721,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <link rel=\"icon\" href=\"%PUBLIC_URL%/favicon.i"
  },
  {
    "path": "react-mui-demo/public/manifest.json",
    "chars": 492,
    "preview": "{\n  \"short_name\": \"React App\",\n  \"name\": \"Create React App Sample\",\n  \"icons\": [\n    {\n      \"src\": \"favicon.ico\",\n     "
  },
  {
    "path": "react-mui-demo/public/robots.txt",
    "chars": 67,
    "preview": "# https://www.robotstxt.org/robotstxt.html\nUser-agent: *\nDisallow:\n"
  },
  {
    "path": "react-mui-demo/src/App.css",
    "chars": 602,
    "preview": "/* body {\n  background-color: #eeeeee;\n} */\n.App {\n  margin: 4rem;\n}\n\n.App-logo {\n  height: 40vmin;\n  pointer-events: no"
  },
  {
    "path": "react-mui-demo/src/App.test.tsx",
    "chars": 273,
    "preview": "import React from 'react';\nimport { render, screen } from '@testing-library/react';\nimport App from './App';\n\ntest('rend"
  },
  {
    "path": "react-mui-demo/src/App.tsx",
    "chars": 4037,
    "preview": "import { createTheme, ThemeProvider, colors } from '@mui/material'\nimport AdapterDateFns from '@mui/lab/AdapterDateFns'\n"
  },
  {
    "path": "react-mui-demo/src/components/MuiAccordion.tsx",
    "chars": 2299,
    "preview": "import {\n  Accordion,\n  AccordionSummary,\n  AccordionDetails,\n  Typography\n} from '@mui/material'\nimport ExpandMoreIcon "
  },
  {
    "path": "react-mui-demo/src/components/MuiAlert.tsx",
    "chars": 1673,
    "preview": "import { Stack, Alert, AlertTitle, Button } from '@mui/material'\nimport CheckIcon from '@mui/icons-material/Check'\nexpor"
  },
  {
    "path": "react-mui-demo/src/components/MuiAutocomplete.tsx",
    "chars": 1053,
    "preview": "import { Stack, Autocomplete, TextField } from '@mui/material'\nimport { useState } from 'react'\n\ntype Skill = {\n  id: nu"
  },
  {
    "path": "react-mui-demo/src/components/MuiAvatar.tsx",
    "chars": 1156,
    "preview": "import { Stack, Avatar, AvatarGroup } from '@mui/material'\nexport const MuiAvatar = () => {\n  return (\n    <Stack spacin"
  },
  {
    "path": "react-mui-demo/src/components/MuiBadge.tsx",
    "chars": 554,
    "preview": "import { Stack, Badge } from '@mui/material'\nimport MailIcon from '@mui/icons-material/Mail'\n\nexport const MuiBadge = ()"
  },
  {
    "path": "react-mui-demo/src/components/MuiBottomNavigation.tsx",
    "chars": 796,
    "preview": "import { BottomNavigation, BottomNavigationAction } from '@mui/material'\nimport HomeIcon from '@mui/icons-material/Home'"
  },
  {
    "path": "react-mui-demo/src/components/MuiBreadcrumbs.tsx",
    "chars": 769,
    "preview": "import { Box, Breadcrumbs, Link, Typography } from '@mui/material'\nimport NavigateNextIcon from '@mui/icons-material/Nav"
  },
  {
    "path": "react-mui-demo/src/components/MuiButton.tsx",
    "chars": 3308,
    "preview": "import { useState } from 'react'\nimport {\n  Stack,\n  Button,\n  IconButton,\n  ButtonGroup,\n  ToggleButtonGroup,\n  ToggleB"
  },
  {
    "path": "react-mui-demo/src/components/MuiCard.tsx",
    "chars": 949,
    "preview": "import {\n  Box,\n  Card,\n  CardContent,\n  CardActions,\n  Typography,\n  Button,\n  CardMedia\n} from '@mui/material'\n\nexport"
  },
  {
    "path": "react-mui-demo/src/components/MuiCheckbox.tsx",
    "chars": 2427,
    "preview": "import { useState } from 'react'\nimport {\n  Box,\n  FormControlLabel,\n  Checkbox,\n  FormControl,\n  FormLabel,\n  FormGroup"
  },
  {
    "path": "react-mui-demo/src/components/MuiChip.tsx",
    "chars": 915,
    "preview": "import { Stack, Chip, Avatar } from '@mui/material'\nimport { useState } from 'react'\n\nexport const MuiChip = () => {\n  c"
  },
  {
    "path": "react-mui-demo/src/components/MuiCustomTheme.tsx",
    "chars": 526,
    "preview": "import { Box, styled } from '@mui/material'\n\nconst StyledBox = styled(Box)(({ theme }) => ({\n  height: '250px',\n  width:"
  },
  {
    "path": "react-mui-demo/src/components/MuiDateRangePicker.tsx",
    "chars": 722,
    "preview": "import { Box, TextField } from '@mui/material'\nimport { DateRangePicker, DateRange } from '@mui/lab'\nimport { useState }"
  },
  {
    "path": "react-mui-demo/src/components/MuiDateTimePicker.tsx",
    "chars": 1296,
    "preview": "import { Stack, TextField } from '@mui/material'\nimport { DatePicker, TimePicker, DateTimePicker } from '@mui/lab'\nimpor"
  },
  {
    "path": "react-mui-demo/src/components/MuiDialog.tsx",
    "chars": 1035,
    "preview": "import {\n  Button,\n  Dialog,\n  DialogTitle,\n  DialogContent,\n  DialogContentText,\n  DialogActions\n} from '@mui/material'"
  },
  {
    "path": "react-mui-demo/src/components/MuiDrawer.tsx",
    "chars": 787,
    "preview": "import { Drawer, Box, Typography, IconButton } from '@mui/material'\nimport { useState } from 'react'\nimport MenuIcon fro"
  },
  {
    "path": "react-mui-demo/src/components/MuiImageList.tsx",
    "chars": 5117,
    "preview": "import { Stack, ImageList, ImageListItem, Box } from '@mui/material'\nexport const MuiImageList = () => {\n  return (\n    "
  },
  {
    "path": "react-mui-demo/src/components/MuiLayout.tsx",
    "chars": 1321,
    "preview": "import { Box, Stack, Grid, Paper } from '@mui/material'\n\nexport const MuiLayout = () => {\n  return (\n    <Paper sx={{ pa"
  },
  {
    "path": "react-mui-demo/src/components/MuiLink.tsx",
    "chars": 430,
    "preview": "import { Stack, Link, Typography } from '@mui/material'\n\nexport const MuiLink = () => {\n  return (\n    <Stack spacing={2"
  },
  {
    "path": "react-mui-demo/src/components/MuiList.tsx",
    "chars": 930,
    "preview": "import {\n  Box,\n  List,\n  ListItem,\n  ListItemText,\n  ListItemButton,\n  ListItemIcon,\n  Divider,\n  ListItemAvatar,\n  Ava"
  },
  {
    "path": "react-mui-demo/src/components/MuiLoadingButton.tsx",
    "chars": 938,
    "preview": "import { Stack } from '@mui/material'\nimport { LoadingButton } from '@mui/lab'\nimport SaveIcon from '@mui/icons-material"
  },
  {
    "path": "react-mui-demo/src/components/MuiMasonry.tsx",
    "chars": 1092,
    "preview": "import { Masonry } from '@mui/lab'\nimport {\n  Box,\n  Paper,\n  Accordion,\n  AccordionSummary,\n  AccordionDetails,\n  Typog"
  },
  {
    "path": "react-mui-demo/src/components/MuiNavbar.tsx",
    "chars": 2145,
    "preview": "import {\n  AppBar,\n  Toolbar,\n  IconButton,\n  Typography,\n  Button,\n  Stack,\n  Menu,\n  MenuItem\n} from '@mui/material'\ni"
  },
  {
    "path": "react-mui-demo/src/components/MuiProgress.tsx",
    "chars": 415,
    "preview": "import { Stack, CircularProgress, LinearProgress } from '@mui/material'\nexport const MuiProgress = () => {\n  return (\n  "
  },
  {
    "path": "react-mui-demo/src/components/MuiRadioButton.tsx",
    "chars": 1325,
    "preview": "import { useState } from 'react'\nimport {\n  Box,\n  FormControl,\n  FormLabel,\n  FormControlLabel,\n  RadioGroup,\n  Radio\n}"
  },
  {
    "path": "react-mui-demo/src/components/MuiRating.tsx",
    "chars": 757,
    "preview": "import { Stack, Rating } from '@mui/material'\nimport { useState } from 'react'\nimport FavoriteIcon from '@mui/icons-mate"
  },
  {
    "path": "react-mui-demo/src/components/MuiSelect.tsx",
    "chars": 881,
    "preview": "import { useState } from 'react'\nimport { Box, TextField, MenuItem } from '@mui/material'\n\nexport const MuiSelect = () ="
  },
  {
    "path": "react-mui-demo/src/components/MuiSkeleton.tsx",
    "chars": 1550,
    "preview": "import { Avatar, Box, Skeleton, Stack, Typography } from '@mui/material'\nimport { useState, useEffect } from 'react'\n\nex"
  },
  {
    "path": "react-mui-demo/src/components/MuiSnackbar.tsx",
    "chars": 1062,
    "preview": "import { Snackbar, Button, Alert, AlertProps } from '@mui/material'\nimport { useState, forwardRef } from 'react'\n\nconst "
  },
  {
    "path": "react-mui-demo/src/components/MuiSpeedDial.tsx",
    "chars": 761,
    "preview": "import { SpeedDial, SpeedDialAction, SpeedDialIcon } from '@mui/material'\nimport CopyIcon from '@mui/icons-material/File"
  },
  {
    "path": "react-mui-demo/src/components/MuiSwitch.tsx",
    "chars": 482,
    "preview": "import { Box, FormControlLabel, Switch } from '@mui/material'\nimport { useState } from 'react'\n\nexport const MuiSwitch ="
  },
  {
    "path": "react-mui-demo/src/components/MuiTable.tsx",
    "chars": 2707,
    "preview": "import {\n  TableContainer,\n  Table,\n  TableHead,\n  TableBody,\n  TableRow,\n  TableCell,\n  Paper\n} from '@mui/material'\n\ne"
  },
  {
    "path": "react-mui-demo/src/components/MuiTabs.tsx",
    "chars": 1527,
    "preview": "import { Box, Tab } from '@mui/material'\nimport { TabContext, TabList, TabPanel } from '@mui/lab'\nimport { useState } fr"
  },
  {
    "path": "react-mui-demo/src/components/MuiTextField.tsx",
    "chars": 1454,
    "preview": "import { useState } from 'react'\nimport { Stack, TextField, InputAdornment } from '@mui/material'\n\nexport const MuiTextF"
  },
  {
    "path": "react-mui-demo/src/components/MuiTimeline.tsx",
    "chars": 1626,
    "preview": "import {\n  Timeline,\n  TimelineItem,\n  TimelineSeparator,\n  TimelineConnector,\n  TimelineContent,\n  TimelineDot,\n  Timel"
  },
  {
    "path": "react-mui-demo/src/components/MuiTooltip.tsx",
    "chars": 350,
    "preview": "import { Tooltip, IconButton } from '@mui/material'\nimport DeleteIcon from '@mui/icons-material/Delete'\n\nexport const Mu"
  },
  {
    "path": "react-mui-demo/src/components/MuiTypography.tsx",
    "chars": 1162,
    "preview": "import { Typography } from '@mui/material'\n\nexport const MuiTypography = () => {\n  return (\n    <div>\n      <Typography "
  },
  {
    "path": "react-mui-demo/src/index.css",
    "chars": 366,
    "preview": "body {\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n    'Ubuntu', 'Can"
  },
  {
    "path": "react-mui-demo/src/index.tsx",
    "chars": 500,
    "preview": "import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport repor"
  },
  {
    "path": "react-mui-demo/src/react-app-env.d.ts",
    "chars": 40,
    "preview": "/// <reference types=\"react-scripts\" />\n"
  },
  {
    "path": "react-mui-demo/src/reportWebVitals.ts",
    "chars": 425,
    "preview": "import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n  if (onPerfEntr"
  },
  {
    "path": "react-mui-demo/src/setupTests.ts",
    "chars": 241,
    "preview": "// jest-dom adds custom jest matchers for asserting on DOM nodes.\n// allows you to do things like:\n// expect(element).to"
  },
  {
    "path": "react-mui-demo/src/theme.d.ts",
    "chars": 499,
    "preview": "import { Theme, ThemeOptions } from '@mui/material/styles'\n\ndeclare module '@mui/material/styles' {\n  interface Theme {\n"
  },
  {
    "path": "react-mui-demo/tsconfig.json",
    "chars": 535,
    "preview": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\n      \"dom\",\n      \"dom.iterable\",\n      \"esnext\"\n    ],\n    "
  }
]

About this extraction

This page contains the full source code of the gopinav/React-MUI-Tutorials GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 53 files (60.3 KB), approximately 17.1k tokens, and a symbol index with 8 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!