0.310.1-canary.1990.15248420614.0 • Published 6 months ago

@salutejs/sdds-scan v0.310.1-canary.1990.15248420614.0

Weekly downloads
-
License
MIT
Repository
github
Last release
6 months ago

SDDS-SCAN

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

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

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

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

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

$ npm install --save @salutejs/sdds-scan @salutejs/sdds-themes

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

$ npm install --save styled-components@5.3.1

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

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

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

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

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

Так же библиотека поставляет компоненты собранные с помощью styled-components

import { Button } from '@salutejs/sdds-scan/styled-components';

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

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

Для того чтобы шрифт было удобно поставлять в 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>Wep App</title>
    </head>
    <body>
        ...
    </body>
</html>

NextJs

import Head from 'next/head';

import { H2, Button } from '@salutejs/sdds-scan';

export default function Home() {
    return (
        <>
            <Head>
                <title>Create Next App with sdds-scan 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 </H2>
                        <Button text="Hello" />
                    </div>
                </main>
            </div>
        </>
    );
}

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

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

  • Если вы используете Create React App, делайте вызов внутри src/index.tsx.
  • Если вы используете Next.js, создайте файл pages/_app.tsx и подключите стили в нем.

CSS

Возможные дополнительные настройки bundle tools для проекта:

В файле, где происходит подключение всех стилей, например index.css

@import '@salutejs/sdss-themes/css/sdds_scan__dark.css';
import React from 'react';
import { Button, BodyL } from '@salutejs/sdds-scan';

import 'index.css';

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

export default App;

Styled-components

import React from 'react';
import { createGlobalStyle } from 'styled-components';
import { Button, BodyL } from '@salutejs/sdds-scan/styled-components';
import { sdds_scan__light } from '@salutejs/sdds-themes';

const Theme = createGlobalStyle(sdds_scan__light);

const App = () => {
    return (
        <>
            <Theme />
            <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/sdds-themes/tokens (подходит в большинстве случаев, т.к там лежит весь базовый набор токенов)
  • Непосредственно из темы @salutejs/sdds-themes/tokens/sdds-scan (следует использовать, когда необходимо импортировать уникальные токены, которые используются только в этой теме)

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

import React from 'react';
import styled from 'styled-components';
import { textAccent, backgroundPrimary, textL } from '@salutejs/sdds-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 world</span>
            </Container>
        </AppStyled>
    );
};

export default App;

Типографика

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

import { BodyL, DsplL, H3 } from '@salutejs/sdds-scan';

Токены типографики на примере компонента 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;
0.312.0

5 months ago

0.312.0-dev.0

6 months ago

0.311.0

6 months ago

0.311.0-dev.0

6 months ago