Files
link-free/src/components/Button/styles.ts

219 lines
5.1 KiB
TypeScript
Raw Normal View History

2021-12-13 17:12:51 -03:00
import { Colors, styled, theme, VariantProps } from '../../styles/stitches.config'
2021-12-11 01:48:15 -03:00
2021-12-14 14:18:50 -03:00
const colorSchemaFn = (
2021-12-13 17:12:51 -03:00
lightColor: Colors,
regularColor: Colors,
darkColor: Colors,
darkerColor: Colors
2021-12-11 01:48:15 -03:00
) => ({
background: theme.colors[regularColor],
borderColor: theme.colors[regularColor],
color: theme.colors[lightColor],
'&:hover': {
background: theme.colors[darkColor],
borderColor: theme.colors[darkColor]
},
'&:active': {
background: theme.colors[darkerColor],
borderColor: theme.colors[darkerColor]
}
})
2021-12-13 17:12:51 -03:00
const outlineVariantFn = (color: Colors) => ({
2021-12-12 23:45:41 -03:00
color: theme.colors[color],
2021-12-11 01:48:15 -03:00
'&:hover': {
2021-12-12 23:45:41 -03:00
background: 'rgba(0, 0, 0, 0.05)'
2021-12-11 01:48:15 -03:00
},
'&:active': {
2021-12-12 23:45:41 -03:00
background: 'rgba(0, 0, 0, 0.1)'
2021-12-11 01:48:15 -03:00
}
})
export const Wrapper = styled('button', {
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
width: '100%',
2021-12-15 08:11:58 -03:00
padding: '0 1rem',
2021-12-11 01:48:15 -03:00
borderWidth: '2.5px',
borderStyle: 'solid',
2021-12-12 23:45:41 -03:00
fontWeight: 500,
2021-12-11 01:48:15 -03:00
cursor: 'pointer',
transition: 'all 0.25s ease-in-out',
'&:hover': {
transform: 'translateY(-0.15rem)'
},
variants: {
2021-12-14 14:18:50 -03:00
colorSchema: {
slate: colorSchemaFn('slate50', 'slate600', 'slate700', 'slate800'),
red: colorSchemaFn('red50', 'red600', 'red700', 'red800'),
orange: colorSchemaFn('orange50', 'orange600', 'orange700', 'orange800'),
amber: colorSchemaFn('amber50', 'amber600', 'amber700', 'amber800'),
yellow: colorSchemaFn('yellow50', 'yellow600', 'yellow700', 'yellow800'),
lime: colorSchemaFn('lime50', 'lime600', 'lime700', 'lime800'),
green: colorSchemaFn('green50', 'green600', 'green700', 'green800'),
emerald: colorSchemaFn('emerald50', 'emerald600', 'emerald700', 'emerald800'),
teal: colorSchemaFn('teal50', 'teal600', 'teal700', 'teal800'),
cyan: colorSchemaFn('cyan50', 'cyan600', 'cyan700', 'cyan800'),
sky: colorSchemaFn('sky50', 'sky600', 'sky700', 'sky800'),
blue: colorSchemaFn('blue50', 'blue600', 'blue700', 'blue800'),
indigo: colorSchemaFn('indigo50', 'indigo600', 'indigo700', 'indigo800'),
violet: colorSchemaFn('violet50', 'violet600', 'violet700', 'violet800'),
purple: colorSchemaFn('purple50', 'purple600', 'purple700', 'purple800'),
fuchsia: colorSchemaFn('fuchsia50', 'fuchsia600', 'fuchsia700', 'fuchsia800'),
pink: colorSchemaFn('pink50', 'pink600', 'pink700', 'pink800'),
rose: colorSchemaFn('rose50', 'rose600', 'rose700', 'rose800')
2021-12-11 01:48:15 -03:00
},
2021-12-14 14:18:50 -03:00
styleSchema: {
2021-12-11 01:48:15 -03:00
square: {
borderRadius: '0'
},
rounded: {
borderRadius: '0.5rem'
},
pill: {
borderRadius: '9999px'
2021-12-11 12:37:12 -03:00
}
},
2021-12-15 08:11:58 -03:00
size: {
small: {
height: '2rem',
fontSize: '0.875rem'
},
medium: {
height: '3rem',
fontSize: '1rem'
}
},
2021-12-12 23:45:41 -03:00
font: {
baloo: {
fontFamily: theme.fonts.baloo
},
montserrat: {
fontFamily: theme.fonts.montserrat
},
roboto: {
fontFamily: theme.fonts.roboto
}
},
2021-12-11 12:37:12 -03:00
outline: {
true: {
2021-12-11 01:48:15 -03:00
background: 'transparent'
}
}
},
compoundVariants: [
{
2021-12-14 14:18:50 -03:00
colorSchema: 'slate',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('slate600')
2021-12-11 01:48:15 -03:00
},
{
2021-12-14 14:18:50 -03:00
colorSchema: 'red',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('red600')
2021-12-11 01:48:15 -03:00
},
{
2021-12-14 14:18:50 -03:00
colorSchema: 'orange',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('orange600')
2021-12-11 01:48:15 -03:00
},
{
2021-12-14 14:18:50 -03:00
colorSchema: 'amber',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('amber600')
2021-12-11 01:48:15 -03:00
},
{
2021-12-14 14:18:50 -03:00
colorSchema: 'yellow',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('yellow600')
2021-12-11 01:48:15 -03:00
},
{
2021-12-14 14:18:50 -03:00
colorSchema: 'lime',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('lime600')
2021-12-11 01:48:15 -03:00
},
{
2021-12-14 14:18:50 -03:00
colorSchema: 'green',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('green600')
2021-12-11 01:48:15 -03:00
},
{
2021-12-14 14:18:50 -03:00
colorSchema: 'emerald',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('emerald600')
2021-12-11 01:48:15 -03:00
},
{
2021-12-14 14:18:50 -03:00
colorSchema: 'teal',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('teal600')
2021-12-11 01:48:15 -03:00
},
{
2021-12-14 14:18:50 -03:00
colorSchema: 'cyan',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('cyan600')
2021-12-11 01:48:15 -03:00
},
{
2021-12-14 14:18:50 -03:00
colorSchema: 'sky',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('sky600')
2021-12-11 01:48:15 -03:00
},
{
2021-12-14 14:18:50 -03:00
colorSchema: 'blue',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('blue600')
2021-12-11 01:48:15 -03:00
},
{
2021-12-14 14:18:50 -03:00
colorSchema: 'indigo',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('indigo600')
2021-12-11 01:48:15 -03:00
},
{
2021-12-14 14:18:50 -03:00
colorSchema: 'violet',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('violet600')
2021-12-11 01:48:15 -03:00
},
{
2021-12-14 14:18:50 -03:00
colorSchema: 'purple',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('purple600')
2021-12-11 01:48:15 -03:00
},
{
2021-12-14 14:18:50 -03:00
colorSchema: 'fuchsia',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('fuchsia600')
2021-12-11 01:48:15 -03:00
},
{
2021-12-14 14:18:50 -03:00
colorSchema: 'pink',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('pink600')
2021-12-11 01:48:15 -03:00
},
{
2021-12-14 14:18:50 -03:00
colorSchema: 'rose',
2021-12-11 12:37:12 -03:00
outline: true,
2021-12-12 23:45:41 -03:00
css: outlineVariantFn('rose600')
2021-12-11 01:48:15 -03:00
}
],
defaultVariants: {
2021-12-14 14:18:50 -03:00
colorSchema: 'teal',
styleSchema: 'pill',
2021-12-15 08:11:58 -03:00
size: 'medium',
2021-12-12 23:45:41 -03:00
font: 'roboto',
2021-12-11 12:37:12 -03:00
outline: false
2021-12-11 01:48:15 -03:00
}
})
2021-12-11 13:42:11 -03:00
export type ButtonVariantProps = VariantProps<typeof Wrapper>