UNPKG

@ntragas/pouncejstest

Version:

A collection of UI components from Panther labs

161 lines (133 loc) 4.12 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = exports.getSolidButtonStyles = exports.getThemeColor = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _react = _interopRequireDefault(require("react")); var _helpers = require("../../utils/helpers"); var _useTheme = _interopRequireDefault(require("../../utils/useTheme")); var getThemeColor = function getThemeColor(color) { switch (color) { case 'violet': return 'violet-400'; case 'teal': return 'teal-500'; case 'red': return 'pink-700'; case 'orange': return 'yellow-600'; case 'green': return 'green-400'; case 'gray': return 'gray-500'; case 'darkgray': return 'gray-600'; case 'darkblue': return 'navyblue-700'; case 'navyblue': return 'navyblue-300'; case 'blue': default: return 'blue-400'; } }; exports.getThemeColor = getThemeColor; var getSolidButtonStyles = function getSolidButtonStyles(theme, variantColor) { var themeColorKey = getThemeColor(variantColor); var themeColor = theme.colors[themeColorKey]; var hoverColor = (0, _helpers.lightenDarkenColor)(themeColor, 10); var activeColor = (0, _helpers.lightenDarkenColor)(themeColor, -10); var focusBorderColor = (0, _helpers.lightenDarkenColor)(themeColor, 85); return { transition: 'border-color 100ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, background-color 100ms cubic-bezier(0.0, 0, 0.2, 1) 0ms', // prettier-ignore borderRadius: 'medium', border: '1px solid', borderColor: themeColor, backgroundColor: themeColor, _hover: { backgroundColor: hoverColor, borderColor: hoverColor }, _focus: { backgroundColor: hoverColor, borderColor: focusBorderColor }, _active: { backgroundColor: activeColor, borderColor: activeColor } }; }; exports.getSolidButtonStyles = getSolidButtonStyles; var getOutlineButtonStyles = function getOutlineButtonStyles(theme, variantColor) { var themeColorKey = getThemeColor(variantColor); var themeColor = theme.colors[themeColorKey]; var hoverColor = (0, _helpers.lightenDarkenColor)(themeColor, 8); var activeColor = (0, _helpers.lightenDarkenColor)(themeColor, -25); var focusBorderColor = (0, _helpers.lightenDarkenColor)(themeColor, 85); return { transition: 'border-color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms, background-color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms', // prettier-ignore borderRadius: 'small', border: '1px solid', borderColor: themeColor, backgroundColor: 'transparent', _hover: { backgroundColor: hoverColor, borderColor: hoverColor }, _focus: { backgroundColor: hoverColor, borderColor: focusBorderColor }, _active: { backgroundColor: activeColor, borderColor: activeColor } }; }; var getSizeButtonStyles = function getSizeButtonStyles(size) { switch (size) { case 'small': return { px: 5, height: 24, fontSize: 'small' }; case 'medium': return { px: 5, height: 32, fontSize: 'small-medium' }; case 'large': default: return { px: 5, height: 46, fontSize: 'medium-large' }; } }; var useButtonStyles = function useButtonStyles(_ref) { var variantColor = _ref.variantColor, variant = _ref.variant, size = _ref.size; var theme = (0, _useTheme.default)(); var variantStyles = _react.default.useMemo(function () { switch (variant) { case 'outline': return getOutlineButtonStyles(theme, variantColor); case 'solid': default: return getSolidButtonStyles(theme, variantColor); } }, [variantColor, variant]); var sizeStyles = getSizeButtonStyles(size); return (0, _extends2.default)({ outline: 'none' }, sizeStyles, variantStyles); }; var _default = useButtonStyles; exports.default = _default;