/
sdds
/
plasma
Обзор
Документация
Войти
/
sdds
/
plasma
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
dev
packages/plasma-ui/src/components/Button/Button.tsx
52 строки
2 KB
TitanKuzmich
feat: update to launch tests
19 июн 2025, 12:16
19 июн 2025, 12:16
b23ee29
Код
Авторство
О чём код?
import React, { forwardRef } from 'react'; import styled from 'styled-components'; import { createButton, ButtonRoot, applyNoSelect } from '@salutejs/plasma-core'; import type { ButtonProps as BaseProps, ButtonContentProps, ButtonSizeProps, ButtonViewProps, ThemeProviderContextBase, } from '@salutejs/plasma-core'; import { applyInteraction, InteractionProps } from '../../mixins'; import { useThemeContext } from '../../hooks'; import { spatnavClassNameAttrs } from '../../utils'; import { applySizes, applyViews } from './Button.mixins'; import { sizes } from './Button.sizes'; export type ButtonProps = BaseProps & ButtonContentProps & Partial<ButtonSizeProps> & Partial<ButtonViewProps> & InteractionProps; const StyledButtonRoot = styled(ButtonRoot).attrs(spatnavClassNameAttrs)<InteractionProps>` ${sizes} ${applyViews} ${applySizes} ${applyInteraction} ${applyNoSelect} `; /** * Основной компонент для отображения кнопок. * Поддерживает несколько режимов отображения (`view`) и размеров (`size`). */ const ButtonBase = createButton<HTMLButtonElement, ButtonProps & ThemeProviderContextBase>(StyledButtonRoot); export const Button = forwardRef<HTMLButtonElement, ButtonProps>((props, ref) => { const { deviceScale } = useThemeContext(); return <ButtonBase {...props} ref={ref} deviceScale={deviceScale} />; }); Button.defaultProps = { size: 'l', view: 'secondary', pin: 'square-square', outlined: true, scaleOnInteraction: true, };