Getting Started with Nextjs
A guide for installing Saas UI with Nextjs projects
1. Installation
In your Next.js project, install Saas UI by running either of the following:
npm i @saas-ui/react @chakra-ui/react @chakra-ui/next-js @emotion/react @emotion/styled framer-motion
yarn add @saas-ui/react @chakra-ui/react @chakra-ui/next-js @emotion/react @emotion/styled framer-motion
pnpm add @saas-ui/react @chakra-ui/react @chakra-ui/next-js @emotion/react @emotion/styled framer-motion
2. Provider Setup
After installing Saas UI, you need to set up the SaasProvider
at the root
of your application. If you already have ChakraProvider
in your app, you can replace this with SaasProvider
.
Go to pages/_app.js
or pages/_app.tsx
(create it if it doesn't exist) and
wrap the Component
with the SaasProvider
:
// pages/_app.jsimport { SaasProvider } from '@saas-ui/react'function MyApp({ Component, pageProps }) {return (<SaasProvider><Component {...pageProps} /></SaasProvider>)}export default MyApp
3. Link Component
Configure a linkComponent
to make the Saas UI Link
works with the Next.js router.
import Link, { LinkProps } from 'next/link'import { SaasProvider } from '@saas-ui/react'const NextLink = React.forwardRef<HTMLAnchorElement, LinkProps>((props, ref) => <Link ref={ref} {...props} />)function MyApp({ Component, pageProps }) {return (<SaasProvider linkComponent={NextLink}><Component {...pageProps} /></SaasProvider>)}
4. Customizing Theme
If you intend to customise the default theme object to match your design
requirements, you can extend the theme
from @chakra-ui/react
.
Chakra UI provides an extendTheme
function that deep merges the default theme
with your customizations.
// 1. Import the extendTheme functionimport { extendTheme } from '@chakra-ui/react'// 2. Import the Saas UI themeimport { SaasProvider, theme as baseTheme } from '@saas-ui/react'// 2. Extend the theme to include custom colors, fonts, etcconst colors = {brand: {900: '#1a365d',800: '#153e75',700: '#2a69ac',},}const theme = extendTheme({ colors }, baseTheme)// 3. Pass the `theme` prop to the `SaasProvider`function MyApp({ Component, pageProps }) {return (<SaasProvider theme={theme}><Component {...pageProps} /></SaasProvider>)}
To further customize components or build your own design system, the
theme-tools
package includes useful utilities.
6. Color Mode Script
The color mode script needs to be added before the content inside the body
tag
for local storage syncing to work correctly.
When setting the initial color mode, we recommend adding it as a config to your theme and reference that in the
ColorModeScript
.
To use
ColorModeScript
on a site with strictContent-Security-Policy
, you can use thenonce
prop that will be passed to the<script>
tag.
// pages/_document.jsimport { ColorModeScript } from '@chakra-ui/react'import NextDocument, { Html, Head, Main, NextScript } from 'next/document'import theme from './theme'export default class Document extends NextDocument {render() {return (<Html lang="en"><Head /><body>{/* 👇 Here's the script */}<ColorModeScript initialColorMode={theme.config.initialColorMode} /><Main /><NextScript /></body></Html>)}}
Was this helpful?