Реализация компонентов для создания веб-приложений.
Компоненты реализованы на typescript с помощью react , styled-components и emotion;
Использование данного пакета предполагает установку зависимостей: react
& react-dom
;
Использование styled-components
и emotion
на проект необязательно, так же как и использование typescript
.
Но для того чтобы компоненты работали корректно необходимо установить styled-components
или emotion
.
$ npm install --save react react-dom
$ npm install --save @salutejs/sdds-serv @salutejs/plasma-typo @salutejs/sdds-themes
Так же надо установить пакет styled-components
$ npm install --save styled-components@5.3.1
Или, если вы используете пакет @emotion
$ npm install --save @emotion/styled @emotion/react @emotion/css
Создайте компонент для подключения глобальных стилей:
import { createGlobalStyle } from 'styled-components';
import { standard } from '@salutejs/plasma-typo';
import { sdds_serv__light } from '@salutejs/sdds-themes';
const ThemeStyle = createGlobalStyle(sdds_serv__light);
const TypoStyle = createGlobalStyle(standard);
export const GlobalStyle = () => (
<>
<ThemeStyle />
<TypoStyle />
</>
);
Создайте компонент для подключения глобальных стилей:
import { Global, css } from '@emotion/react';
import { standard } from '@salutejs/plasma-typo';
import { sdds_serv__light } from '@salutejs/sdds-themes';
const themeStyle = css(sdds_serv__light);
const typoStyle = css(standard);
export const GlobalStyle = () => (
<>
<Global styles={themeStyle} />
<Global styles={typoStyle} />
</>
);
В корне приложения вызовите компонент глобальных стилей GlobalStyle
:
- Если вы используете Create React App, делайте вызов внутри
src/index.tsx
. - Если вы используете Next.js, создайте файл
pages/_app.tsx
и подключите стили в нем.
Для корректной работы server side rendering приложение нужно обернуть SSRProvider
(доступен в sdds-serv);
Все компоненты styled-components доступны из директории components
или напрямую из пакета:
// App.tsx
import { Button } from '@salutejs/sdds-serv';
import { textAccent } from '@salutejs/plasma-tokens/brands/sdds-serv';
export const App = () => {
return (
<>
<Button>Hello, Plasma!</Button>
<p style={{ color: textAccent }}>Token usage example</p>
</>
);
};
Все компоненты @emotion
доступны из директории emotion
:
// App.tsx
import { Button } from '@salutejs/sdds-serv/emotion';
import { textAccent } from '@salutejs/plasma-tokens/brands/sdds-serv';
export const App = () => {
return (
<>
<Button>Hello, Plasma!</Button>
<p style={{ color: textAccent }}>Token usage example</p>
</>
);
};