Usage with Gatsby

Get started with a template

The easiest way to get started is to use one of the templates. All templates are configured correctly: they include PostCSS setup, ColorSchemeScript and other essential features. Some templates also include additional features like Jest, Storybook and ESLint.

If you are not familiar with GitHub, you can find a detailed instruction on how to bootstrap a project from a template on this page.

gatsby-template

Gatsby template with basic setup

Use template

Generate new application

Follow Gatsby quick start guide to create new Gatsby application:

yarn create gatsby

When asked "Would you like to install a styling system?", select PostCSS.

Installation

Choose packages that you will use in your application:

PackageDescription
@thinker-core/mantine-hooks

Hooks for state and UI management

@thinker-core/mantine-core

Core components library: inputs, buttons, overlays, etc.

@thinker-core/mantine-form

Form management library

@thinker-core/mantine-dates

Date inputs, calendars

@thinker-core/mantine-charts

Recharts based charts library

@thinker-core/mantine-notifications

Notifications system

@thinker-core/mantine-code-highlight

Code highlight with your theme colors and styles

@thinker-core/mantine-tiptap

Rich text editor based on Tiptap

@thinker-core/mantine-dropzone

Capture files with drag and drop

@thinker-core/mantine-carousel

Embla based carousel component

@thinker-core/mantine-spotlight

Overlay command center

@thinker-core/mantine-modals

Centralized modals manager

@thinker-core/mantine-nprogress

Navigation progress

@thinker-core/mantine-icons

Icons for Thinker

Add @thinker-core registry to your .npmrc file:

echo @thinker-core:registry=https://repo.blockfint.com/api/v4/projects/1449/packages/npm/ >> .npmrc

Install dependencies:

yarn add @thinker-core/mantine-core @thinker-core/mantine-hooks

PostCSS setup

Install PostCSS plugins and postcss-preset-mantine:

yarn add --dev postcss postcss-preset-mantine postcss-simple-vars

Create postcss.config.cjs file at the root of your application with the following content:

module.exports = {
  plugins: {
    'postcss-preset-mantine': {},
    'postcss-simple-vars': {
      variables: {
        'mantine-breakpoint-xs': '36em',
        'mantine-breakpoint-sm': '48em',
        'mantine-breakpoint-md': '62em',
        'mantine-breakpoint-lg': '75em',
        'mantine-breakpoint-xl': '88em',
      },
    },
  },
};

Setup

Create src/theme.ts file with your theme override:

// src/theme.ts
import { createTheme } from '@thinker-core/mantine-core';

export const theme = createTheme({
  fontFamily: 'serif',
  // ... other theme override properties
});

Create gatsby-ssr.tsx with the following content:

import { ColorSchemeScript, MantineProvider } from '@thinker-core/mantine-core';
import { theme } from './src/theme';

export const onPreRenderHTML = ({
  getHeadComponents,
  replaceHeadComponents,
}) => {
  const headComponents = getHeadComponents();
  replaceHeadComponents([
    ...headComponents,
    <ColorSchemeScript key="color-scheme-script" />,
  ]);
};

export const wrapPageElement = ({ element }) => {
  return <MantineProvider theme={theme}>{element}</MantineProvider>;
};

Create gatsby-browser.tsx with the following content:

// Import styles of packages that you've installed.
// All packages except `@thinker-core/mantine-hooks` require styles imports
import '@thinker-core/mantine-core/styles.css';

import { MantineProvider } from '@thinker-core/mantine-core';
import { theme } from './src/theme';

export const wrapPageElement = ({ element }) => {
  return <MantineProvider theme={theme}>{element}</MantineProvider>;
};

All set! Start development server:

npm run develop

CSS modules

By default, Gatsby has different syntax for importing CSS modules:

// Default syntax – will not work in Gatsby
import classes from './Demo.module.css';

// Gatsby syntax
import * as classes from './Demo.module.css';