UNPKG

chakra-ui

Version:

Responsive and accessible React UI components built with React and Emotion

87 lines (74 loc) 1.91 kB
import _extends from "@babel/runtime/helpers/extends"; import { addOpacity, generateAlphaColors, get } from "../theme/colors.utils"; import { useTheme, useUIMode } from "../ThemeProvider"; var solidStyle = function solidStyle(_ref) { var colors = _ref.theme.colors, color = _ref.color; var darkModeBg = addOpacity(colors[color][500], 0.6); return { light: { bg: get(color, 500), color: "white" }, dark: { bg: darkModeBg, color: "whiteAlpha.800" } }; }; var subtleStyle = function subtleStyle(_ref2) { var colors = _ref2.theme.colors, color = _ref2.color; var alphaColors = generateAlphaColors(colors[color][200]); var darkModeBg = alphaColors[400]; return { light: { bg: get(color, 100), color: get(color, 800) }, dark: { bg: darkModeBg, color: get(color, 200) } }; }; var outlineStyle = function outlineStyle(_ref3) { var colors = _ref3.theme.colors, color = _ref3.color; var darkModeColor = addOpacity(colors[color][200], 0.8); return { light: { boxShadow: "inset 0 0 0px 1px " + colors[color][500], color: get(color, 500) }, dark: { boxShadow: "inset 0 0 0px 1px " + darkModeColor, color: darkModeColor } }; }; var variantProps = function variantProps(props) { var variant = props.variant, mode = props.mode; switch (variant) { case "solid": return solidStyle(props)[mode]; case "subtle": return subtleStyle(props)[mode]; case "outline": return outlineStyle(props)[mode]; default: return {}; } }; var useBadgeStyle = function useBadgeStyle(props) { var theme = useTheme(); var _useUIMode = useUIMode(), mode = _useUIMode.mode; var _props = _extends({}, props, { theme: theme, mode: mode }); return variantProps(_props); }; export default useBadgeStyle;