npm.io
1.623.0 • Published 6d ago

@salutejs/plasma-b2c

Licence
MIT
Version
1.623.0
Deps
7
Size
15.6 MB
Vulns
0
Weekly
0
Stars
46

Библиотека компонентов Plasma B2C

Набор компонентов и утилит для создания web-приложений на базе ReactJS.

Использование

Библиотека реализована с помощью:

Однако их использование необязательно!

Установка зависимостей

$ npm install --save @salutejs/plasma-b2c @salutejs/plasma-themes

Для работы со styled-components, необходимо установить

$ npm install --save styled-components@5.3.1
Использование компонентов

Все компоненты доступны напрямую из пакета

import styled from 'styled-components';
import { Button } from '@salutejs/plasma-b2c';
import { textAccent } from '@salutejs/plasma-themes/tokens';

export const App = () => {
    const StyledP = styled.p`
        color: ${textAccent};
    `;

    return (
        <>
            <Button>Hello, B2C!</Button>
            <StyledP>Token usage example</StyledP>
        </>
    );
};

Подключение шрифтов

Типографическая система основана на фирменных шрифтах.

Для того чтобы шрифт было удобно поставлять в web-приложения, шрифт был загружен на CDN

Для использования типографической системы необходимо загрузить два css файла в зависимости от используемых шрифтов в теме.

Create react app

Добавить внутрь тега head.

<html>
    <head>
        <link rel="stylesheet" href="https://cdn-app.sberdevices.ru/shared-static/0.0.0/styles/SBSansText.0.2.0.css" />
        <link
            rel="stylesheet"
            href="https://cdn-app.sberdevices.ru/shared-static/0.0.0/styles/SBSansDisplay.0.2.0.css"
        />
        <title>B2C App</title>
    </head>
    <body>
        ...
    </body>
</html>
NextJs
import Head from 'next/head';

import { H2, Button } from '@salutejs/plasma-b2c';

export default function Home() {
    return (
        <>
            <Head>
                <title>Create Next App with plasma-b2c components</title>
                <link
                    rel="stylesheet"
                    href="https://cdn-app.sberdevices.ru/shared-static/0.0.0/styles/SBSansText.0.2.0.css"
                />
                <link
                    rel="stylesheet"
                    href="https://cdn-app.sberdevices.ru/shared-static/0.0.0/styles/SBSansDisplay.0.2.0.css"
                />
            </Head>
            <div>
                <main>
                    <div>
                        <H2> Salute B2C </H2>
                        <Button text="Hello" />
                    </div>
                </main>
            </div>
        </>
    );
}

Примечание: Библиотека поддерживает работу с RSC только при явном использовании директивы 'use client'.

'use client';

import { Button } from '@salutejs/plasma-b2c';

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

Точкой входа является корень приложения:

  • Если вы используете Create React App, делайте вызов внутри src/index.tsx.
  • Если вы используете Next.js, создайте файл pages/_app.tsx и подключите стили в нем.
Styled components
import React from 'react';
import { createGlobalStyle } from 'styled-components';
import { Button, BodyL } from '@salutejs/plasma-b2c';
import { plasma_b2c__light } from '@salutejs/plasma-themes';

const Theme = createGlobalStyle(plasma_b2c__light);

const App = () => {
    return (
        <>
            <Theme />
            <BodyL>Hello B2C</BodyL>
            <Button text="This is themed button" />
        </>
    );
};

export default App;
CSS

Подключение с помощью импорта css файла:

import React from 'react';

import { Button, BodyL } from '@salutejs/plasma-b2c';

import '@salutejs/plasma-themes/css/plasma_b2c__dark.css';

const App = () => {
    return (
        <>
            <BodyL>Hello world</BodyL>
            <Button text="This is themed button" />
        </>
    );
};

export default App;

Токены

Все css токены завернуты в js переменные для более удобного доступа:

/** Основной цвет текста */
export const textPrimary = 'var(--text-primary, #F5F5F5)';
/** Основной фон */
export const backgroundPrimary = 'var(--background-primary, #000000)';
Способы подключения

Есть два пути импорта токенов:

  • Из вертикали @salutejs/plasma-themes/tokens (подходит в большинстве случаев, т.к там лежит весь базовый набор токенов)
  • Непосредственно из темы @salutejs/plasma-themes/tokens/plasma-b2c (следует использовать, когда необходимо импортировать уникальные токены, которые используются только в этой теме)
Использование
import React from 'react';
import styled from 'styled-components';
import { textAccent, backgroundPrimary, textL } from '@salutejs/plasma-themes/tokens';

const AppStyled = styled.div`
    padding: 2rem;
    color: ${textAccent};
    background-color: ${backgroundPrimary};
`;

const Container = styled.div`
    ${textL};
    margin: 1rem;
`;

const App = () => {
    return (
        <AppStyled>
            <Container>
                <span>Hello B2C</span>
            </Container>
        </AppStyled>
    );
};

export default App;

Типографика

Рекомендуем использовать типографические компоненты, которые поставляет библиотека.

import { BodyL, DsplL, H3 } from '@salutejs/plasma-b2c';
Токены типографики на примере компонента DsplL

Так же в пакете есть типографические токены, для случаев, когда необходимо точечно применить типографику к контейнеру.

import { CSSObject } from 'styled-components';

export const dsplL = ({
    fontFamily: 'var(--plasma-typo-dspl-l-font-family)',
    fontSize: 'var(--plasma-typo-dspl-l-font-size)',
    fontStyle: 'var(--plasma-typo-dspl-l-font-style)',
    fontWeight: 'var(--plasma-typo-dspl-l-font-weight)',
    letterSpacing: 'var(--plasma-typo-dspl-l-letter-spacing)',
    lineHeight: 'var(--plasma-typo-dspl-l-line-height)',
} as unknown) as CSSObject;

Keywords