UNPKG

@kubit-ui-web/react-components

Version:

Kubit React Components is a customizable, accessible library of React web components, designed to enhance your application's user experience

55 lines (51 loc) 1.69 kB
import styled, { css } from 'styled-components'; // mixin import { focusVisibleAlt } from '../../styles/mixins/focusAlt.mixin'; // theme styles import { getStyles, getTypographyStyles } from '../../utils/getStyles/getStyles'; import { IconPositionType } from './types/buttonIconPosition'; // set tokens const setTokens = (state, styles, sizeStyles) => { if (!styles?.[state]) { return css ``; } const combinedStyles = { ...sizeStyles, ...styles[state] }; return css ` // common styles ${getStyles(combinedStyles)} // typography ${getTypographyStyles(combinedStyles)} `; }; export const ButtonStyled = styled.button ` display: inline-flex; align-items: center; justify-content: center; text-align: ${({ alignText }) => alignText ?? 'left'}; cursor: pointer; flex-direction: ${props => props.$iconPosition === IconPositionType.LEFT ? 'row' : 'row-reverse'}; position: relative; ${({ $state, $styles, $sizeStyles }) => setTokens($state, $styles, $sizeStyles)} &:disabled { cursor: default; } min-width: ${props => props.minWidth}; width: ${props => (props.$fullWidth ? '100%' : 'auto')}; &::after { content: '${props => props.$ghostText}'; display: ${props => (props.$loading ? 'block' : 'none')}; position: relative; visibility: hidden; } // In alternative variants, the focus colors must be change ${({ $styles, $state }) => $styles?.[$state]?.altVariant && focusVisibleAlt()} `; export const ButtonLoaderStyled = styled.span ` position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); display: flex; align-items: center; `; //# sourceMappingURL=button.styled.js.map