@patreon/studio
Version:
Patreon Studio Design System
134 lines (122 loc) • 3.58 kB
JavaScript
// TODO (legacied filenames/match-regex)
// This failure is legacied in and should be updated. DO NOT COPY.
// eslint-disable-next-line filenames/match-regex
import styled, { css } from 'styled-components';
import { tokens } from '../../tokens';
const defaultFocusStyles = css `
/* Firefox default outline color */
outline: solid Highlight;
/* Chrome/Safari default outline color */
outline: solid -webkit-focus-ring-color;
`;
const sizeTo = {
padding: {
sm: '12px',
md: '16px',
lg: '20px',
},
dimensions: {
sm: '16px',
md: '20px',
lg: '24px',
},
};
export const StyledLabel = styled.label `
align-items: flex-start;
display: flex;
${(props) => props.labelPosition === 'left'
? `
flex-direction: row-reverse;
justify-content: flex-end;
`
: ''};
cursor: ${(props) => (props.disabled ? 'default' : 'pointer')};
opacity: ${({ disabled }) => disabled && tokens.global.opacity.disabled};
`;
export const StyledCheckboxContainer = styled.div `
padding-right: ${(props) => (props.labelPosition === 'right' ? sizeTo.padding[props.sizeValue] : 0)};
padding-left: ${(props) => (props.labelPosition === 'left' ? sizeTo.padding[props.sizeValue] : 0)};
> input + div {
background-color: ${tokens.global.bg.base.default};
border: 1px solid ${tokens.global.border.action.default};
svg {
fill: ${tokens.global.primary.onActionBase.default};
}
}
> input:disabled + div {
border-color: ${tokens.global.border.muted.default};
}
> input:enabled + div {
&:hover {
background-color: ${tokens.global.bg.base.hover};
border-color: ${tokens.global.border.action.hover};
}
&:active {
background-color: ${tokens.global.bg.base.pressed};
border-color: ${tokens.global.border.action.pressed};
}
}
> input:indeterminate + div,
> input:checked + div {
border: none;
background-color: ${tokens.global.primary.actionBase.default};
svg {
fill: ${tokens.global.primary.onActionBase.default};
}
}
> input:enabled:indeterminate + div,
> input:enabled:checked + div {
&:hover {
background-color: ${tokens.global.primary.actionBase.hover};
svg {
fill: ${tokens.global.primary.onActionBase.hover};
}
}
&:active {
background-color: ${tokens.global.primary.actionBase.pressed};
svg {
fill: ${tokens.global.primary.onActionBase.pressed};
}
}
}
> input:disabled + div {
cursor: default;
}
> input:focus + div {
outline: none;
}
> input:focus-visible + div {
${defaultFocusStyles};
}
`;
export const StyledCheckbox = styled.input `
display: block;
width: ${(props) => sizeTo.dimensions[props.sizeValue]};
height: ${(props) => sizeTo.dimensions[props.sizeValue]};
position: absolute;
opacity: 0;
margin: 2px;
`;
export const StyledSynthethicCheckbox = styled.div `
cursor: pointer;
align-items: center;
border-radius: ${tokens.global.radius.sm};
box-sizing: border-box;
display: flex;
justify-content: center;
min-width: ${(props) => sizeTo.dimensions[props.sizeValue]};
min-height: ${(props) => sizeTo.dimensions[props.sizeValue]};
width: ${(props) => sizeTo.dimensions[props.sizeValue]};
height: ${(props) => sizeTo.dimensions[props.sizeValue]};
margin: 2px;
position: relative;
svg {
width: 100%;
height: 100%;
}
`;
export const TextContainer = styled.div `
display: inline-flex;
margin: auto 0;
`;
//# sourceMappingURL=styled-components.js.map