# gatsby-theme-material-ui

> Gatsby theme for Material-UI

Latest version **5.3.0** (published 2022-08-11) · MIT license · 0 weekly downloads

## Install

```sh
npm install gatsby-theme-material-ui
pnpm add gatsby-theme-material-ui
yarn add gatsby-theme-material-ui
bun add gatsby-theme-material-ui
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 5.3.0 |
| Published | 2022-08-11 |
| First published | 2019-04-17 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 5 |
| Unpacked size | 7.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 97 |
| Maintainers | hupe1980 |
| Keywords | react, gatsby, gatsby-plugin, gatsby-theme, material-ui |

## Links

- npm: https://www.npmjs.com/package/gatsby-theme-material-ui
- Repository: https://github.com/hupe1980/gatsby-theme-material-ui
- Homepage: https://github.com/hupe1980/gatsby-theme-material-ui#readme
- Issues: https://github.com/hupe1980/gatsby-theme-material-ui/issues
- npm.io page: https://npm.io/package/gatsby-theme-material-ui

## Dependencies (5)

- [gatsby-plugin-webfonts](https://npm.io/package/gatsby-plugin-webfonts.md) ^2.2.1
- [gatsby-plugin-material-ui](https://npm.io/package/gatsby-plugin-material-ui.md) ^4.1.0
- [gatsby-material-ui-components](https://npm.io/package/gatsby-material-ui-components.md) ^5.3.0
- [gatsby-plugin-compile-es6-packages](https://npm.io/package/gatsby-plugin-compile-es6-packages.md) ^2.1.0
- [gatsby-theme-material-ui-top-layout](https://npm.io/package/gatsby-theme-material-ui-top-layout.md) ^5.2.0

## Alternatives

- [mobx-react](https://npm.io/package/mobx-react.md) — 2.8M weekly downloads
- [rc-tree](https://npm.io/package/rc-tree.md) — 2.6M weekly downloads
- [@react-oauth/google](https://npm.io/package/@react-oauth/google.md) — 1.3M weekly downloads
- [@wagmi/connectors](https://npm.io/package/@wagmi/connectors.md) — 877.0K weekly downloads
- [vee-validate](https://npm.io/package/vee-validate.md) — 836.4K weekly downloads

## Recent versions

- 5.3.0 (latest) — 2022-08-11
- 5.2.0 — 2022-04-10
- 5.1.0 — 2021-11-21
- 5.0.0 — 2021-10-09
- 4.13.0 — 2021-10-09
- 2.0.1 — 2021-04-08
- 1.0.13 — 2020-07-28
- 1.0.12 — 2020-07-21
- 1.0.11 — 2020-07-21
- 1.0.10 — 2020-05-23
- 1.0.9 — 2020-04-29
- 1.0.8 — 2020-01-24
- 1.0.7 — 2020-01-22
- 1.0.6 — 2020-01-05
- 1.0.5 — 2019-09-12
- … 31 more at https://npm.io/package/gatsby-theme-material-ui/versions

## README

# gatsby-theme-material-ui

> A [Gatsby](https://github.com/gatsbyjs/gatsby) theme for
> [Material-UI](https://github.com/mui-org/material-ui): The fastest way to build server-side rendered Material-UI websites

## Install

```sh
// with npm
npm install gatsby-theme-material-ui @mui/material @emotion/react @emotion/styled

// with yarn
yarn add gatsby-theme-material-ui @mui/material @emotion/react @emotion/styled
```

## Theme vs. Plugin
- `gatsby-plugin-material-ui` solves FOUC, auto prefixing and minification.
- `gatsby-theme-material-ui` uses the plugin under the hood, adds web fonts, meta-viewport, CSS baseline and mui theme support and has material ui styled gatsby link components

## How to use

Edit `gatsby-config.js`

```javascript
module.exports = {
  plugins: [`gatsby-theme-material-ui`],
};
```

## Testing your installation

Replace the contents in your `pages/index.js` with the following
```javascript
import React from "react";
import { Button, Box } from "@mui/material";

const IndexPage = () => {
  return (
    <Box p={4}>
      <Button variant="contained">Hello gatsby-theme-material-ui</Button>
    </Box>
  );
};

export default IndexPage;
```

You should be greeted with a MUI button when you navigate to the root of your site.

### top-layout

You'll see several references below to the ["top-layout" theme](https://github.com/hupe1980/gatsby-theme-material-ui/tree/master/packages/gatsby-theme-material-ui-top-layout). Its role is to [prevent the Flash Of Unstyle Content](https://github.com/hupe1980/gatsby-theme-material-ui/pull/8).

## WebFonts

Material-UI was designed with the [Roboto](https://fonts.google.com/specimen/Roboto) font in mind. The Roboto font will be automatically loaded by gatsby-theme-material-ui. You can override this behavior as follows:

Edit `theme.js`

```javascript
// src/gatsby-theme-material-ui-top-layout/theme.js

import { createTheme } from "@mui/material";

const theme = createTheme({
  typography: {
    fontFamily: [
        'Montserrat',
        'sans-serif'
      ].join(','),
    },
    ...
  });

export default theme;

```

Edit `gatsby-config.js`

```javascript
// gatsby-config.js

module.exports = {
  plugins: [
    {
      resolve: `gatsby-theme-material-ui`,
      options: {
        webFontsConfig: {
          fonts: {
            google: [
              {
                family: `Montserrat`,
                variants: [`300`, `400`, `500`],
              },
            ],
          },
        },
      },
    },
  ],
};
```

For more options, have a look at the plugin [readme](https://github.com/hupe1980/gatsby-plugin-webfonts/blob/master/gatsby-plugin-webfonts/README.md).

> Note: If the changes you made in `src/gatsby-theme-material-ui-top-layout/theme.js` are not showing up, you might want to run `gatsby clean` to clean up the .cache folder and try again. This is required for newly shadowed files.

## Theming

Create & Edit src/gatsby-theme-material-ui-top-layout/theme.js

```javascript
import { createTheme } from "@mui/material";

const theme = createTheme({
  //   palette: {
  //     mode: 'dark',
  //   },
});

export default theme;
```

## Gatsby Link

```javascript
import React from "react";
import { Typography } from "@mui/material";
//import { Link } from "gatsby"
import { Link } from "gatsby-theme-material-ui";

const Page = () => (
  <div>
    <Typography>
      Check out my <Link to="/blog">blog</Link>!
    </Typography>
  </div>
);

export default Page;
```

The following components have also been adapted for use with Gatsby:

```javascript
import {
  BottomNavigationAction,
  Button,
  CardActionArea,
  Fab,
  IconButton,
  Link,
} from "gatsby-theme-material-ui";
```

For `<Button>`s with [`href` URLs](https://material-ui.com/api/button/#props), use the `to` attribute instead of `href`, to enable [Gatsby link features](https://www.gatsbyjs.org/docs/gatsby-link/).

## Customizing

Create & Edit src/gatsby-theme-material-ui-top-layout/components/top-layout.js

```javascript
import React from "react";
import { Provider } from "react-redux";
import ThemeTopLayout from "gatsby-theme-material-ui-top-layout/src/components/top-layout";

import createStore from "../../state/createStore";

export default function TopLayout({ children, theme }) {
  const store = createStore();

  return (
    <Provider store={store}>
      <ThemeTopLayout theme={theme}>{children}</ThemeTopLayout>
    </Provider>
  );
}
```

## License

[MIT](LICENSE)

---
_Source: https://npm.io/package/gatsby-theme-material-ui · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
