Работа с Next

Подключение библиотеки и ее компонентов не отличается от стандартного варианта, за исключением некоторых нюансов, о которых ниже.

caution
Библиотека не поддерживает работу с React Server Components (App router). За исключением тех мест в вашем проекте, где явно задана директива 'use client'.

В дальнейшем речь пойдет исключительно для pages router'a, вне зависимости от версии Next.

Подключение тем

Ниже представлены различные способы подключения темы в проект:

Styled Components

Прежде всего убедитесь, что у вас правильно настроена работа со Styled Components. Для справки: официальный пример работающей реализации.

import type { AppProps } from "next/app";
import { sdds_serv__light } from '@salutejs/sdds-themes';
import { createGlobalStyle } from "styled-components";

const PlasmaTheme = createGlobalStyle(sdds_serv__light);

export default function App({ Component, pageProps }: AppProps) {
return (
<>
<PlasmaTheme />

<Component {...pageProps} />
</>
);
}

Импорт CSS

import type { AppProps } from "next/app";
import '@salutejs/sdds-themes/css/sdds_serv__light.css';

export default function App({ Component, pageProps }: AppProps) {
return <Component {...pageProps} />;
}

Работа с компонентами

Библиотека поставляет компоненты в формате Styled Components, Emotion и на обычном CSS.

Пример со Styled Components

import React from 'react';
import { Button } from '@salutejs/sdds-serv/styled-components'

export default function Home() {
return (
<div>
<Button>Button</Button>
</div>
);
}

Пример с Emotion

import React from 'react';
import { Button } from '@salutejs/sdds-serv/emotion'

export default function Home() {
return (
<div>
<Button>Button</Button>
</div>
);
}

Пример с CSS

caution

Next не разрешает импорт CSS из сторонних модулей, поэтому важно не забыть добавить наши библиотеки в next.config.js следующим образом:

const nextConfig = {
reactStrictMode: true,
transpilePackages: ['@salutejs/sdds-serv', '@salutejs/plasma-new-hope']
};

И далее уже можно подключать наши компоненты:

import React from 'react';
import { Button } from '@salutejs/sdds-serv'

export default function Home() {
return (
<div>
<Button>Button</Button>
</div>
);
}