Utils

animatedScrollToX / animatedScrollToY

Плавная прокрутка по оси X и Y.

import React from 'react';
import { animatedScrollToX } from '@salutejs/plasma-b2c';

const ScrollComponent: React.FC = ({ children }) => {
const ref = React.useRef(null);

React.useLayoutEffect(() => {
if (ref.current) {
// Плавный скролл на 400px после первого рендера компонента
animatedScrollToX(ref.current, 400);
}
}, []);

return <div ref={ref}>{children}</div>;
};

convertRoundnessMatrix

По заданному шаблону-матрице выводит значения для border-radius. Значение символов: r - радиус стандартный, h - радиус округлый (вычисляется из высоты).

import styled from 'styled-components';
import { convertRoundnessMatrix } from '@salutejs/plasma-b2c';

// Выведет значение для border-radius, равное '1em 2em 2em 1em'
const Box = styled.div`
border-radius: ${convertRoundnessMatrix('r h h r', '1em', '2em')};
`;

mediaQuery

Обертка над css media query с заранее определенными Breakpoints.

Для корректной работы на разных поверхностях, необходимо указывать второй параметр deviceScale.

import styled, { css } from 'styled-components';
import { mediaQuery, breakpoints } from '@salutejs/plasma-b2c';

// Определяем поверхность
const deviceScale = 2;

// Блок Box примет красный цвет фона на больших экранах
const Box = styled.div`
${mediaQuery('XL', deviceScale)(css`
background-color: red;
`)};
`;

// Возможно использование массива `breakpoints`, в котором перечислен список разрешений
const colors = {
xl: 'azure',
lg: 'aliceblue',
md: 'aquamarine',
sm: 'cadetblue'
};

const Text = styled.span`
${breakpoints.map((breakpoint) =>
mediaQuery(breakpoint)(css`
color: ${colors[breakpoint]};
`)
)}
`;