@fluent-windows/core
Version:
React components that inspired by Microsoft's Fluent Design System.
60 lines (53 loc) • 1.53 kB
JavaScript
import { lighten } from '../styles';
const root = theme => ({
border: 'none',
outline: 'none',
display: 'inline-flex',
flexDirection: 'column',
alignItems: 'center',
justifyContent: 'center',
cursor: 'pointer',
color: 'inherit',
borderRadius: '50%',
overflow: 'hidden',
transition: theme.transitions.button,
'&:disabled': {
color: theme.colors.standard.dark3,
cursor: 'not-allowed',
pointerEvents: 'none'
}
});
const variantStandard = theme => ({
color: theme.colors.primary.default,
backgroundColor: 'transparent',
'&:hover, &:focus': {
backgroundColor: lighten(theme.colors.primary.light1, 0.08)
},
'&:active': {
backgroundColor: lighten(theme.colors.primary.light1, 0.36)
}
});
const variantPrimary = theme => ({
color: theme.colors.white.default,
backgroundColor: theme.colors.primary.default,
boxShadow: theme.shadows[3],
'&:hover, &:focus': {
backgroundColor: theme.colors.primary.dark1
},
'&:active': {
color: theme.colors.white.default,
backgroundColor: theme.colors.primary.dark3,
boxShadow: theme.shadows[4]
}
});
const sizeSmall = theme => theme.sizes.small.iconButton;
const sizeMedium = theme => theme.sizes.medium.iconButton;
const sizeLarge = theme => theme.sizes.large.iconButton;
export const styles = theme => ({
root: root(theme),
variantStandard: variantStandard(theme),
variantPrimary: variantPrimary(theme),
sizeSmall: sizeSmall(theme),
sizeMedium: sizeMedium(theme),
sizeLarge: sizeLarge(theme)
});