import { createStyle } from '@gluestack-style/react'; export const Fab = createStyle({ 'bg': '$primary500', 'rounded': '$full', 'zIndex': 20, 'p': 16, 'flexDirection': 'row', 'alignItems': 'center', 'justifyContent': 'center', 'position': 'absolute', ':hover': { bg: '$primary600', }, ':active': { bg: '$primary700', }, ':disabled': { opacity: 0.4, _web: { // @ts-ignore pointerEvents: 'all !important', cursor: 'not-allowed', }, }, '_text': { color: '$textLight50', fontWeight: '$normal', _dark: { _text: { color: '$textDark50', }, }, }, '_icon': { 'color': '$textLight50', ':hover': { color: '$textLight0', }, ':active': { color: '$textLight0', }, '_dark': { _icon: { 'color': '$textDark0', ':hover': { color: '$textDark0', }, ':active': { color: '$textDark0', }, }, }, }, '_dark': { 'bg': '$primary400', ':hover': { bg: '$primary500', }, ':active': { bg: '$primary600', }, ':disabled': { opacity: 0.4, _web: { cursor: 'not-allowed', }, }, }, '_web': { ':focusVisible': { outlineWidth: 2, outlineColor: '$primary700', outlineStyle: 'solid', _dark: { outlineColor: '$primary300', }, }, }, 'variants': { size: { sm: { px: '$2.5', py: '$2.5', _text: { fontSize: '$sm', }, _icon: { props: { size: 'sm', }, }, }, md: { px: '$3', py: '$3', _text: { fontSize: '$md', }, _icon: { props: { size: 'md', }, }, }, lg: { px: '$4', py: '$4', _text: { fontSize: '$lg', }, _icon: { props: { size: 'md', }, }, }, }, placement: { 'top right': { top: '$4', right: '$4', }, 'top left': { top: '$4', left: '$4', }, 'bottom right': { bottom: '$4', right: '$4', }, 'bottom left': { bottom: '$4', left: '$4', }, 'top center': { top: '$4', alignSelf: 'center', // TODO: fix this, this is correct way, but React Native doesn't support this on Native // left: '50%', // transform: [ // { // // @ts-ignore // translateX: '-50%', // }, // ], }, 'bottom center': { bottom: '$4', alignSelf: 'center', // TODO: fix this, this is correct way, but React Native doesn't support this on Native // left: '50%', // transform: [ // { // // @ts-ignore // translateX: '-50%', // }, // ], }, }, }, 'defaultProps': { placement: 'bottom right', size: 'md', hardShadow: '2', }, });