@zendeskgarden/react-theming
Version: 
Theming utilities and components within the Garden Design System
46 lines (43 loc) • 1.25 kB
JavaScript
/**
* Copyright Zendesk, Inc.
*
* Use of this source code is governed under the Apache License, Version 2.0
* found at http://www.apache.org/licenses/LICENSE-2.0.
*/
import DEFAULT_THEME from '../elements/theme/index.js';
import { getColorV8 } from './getColorV8.js';
import { getColor } from './getColor.js';
const getFocusBoxShadow = _ref => {
  let {
    boxShadow,
    inset = false,
    color = {
      variable: 'border.primaryEmphasis'
    },
    shadowWidth = 'md',
    spacerColor = {
      variable: 'background.default'
    },
    spacerWidth = 'xs',
    theme = DEFAULT_THEME,
    ...args
  } = _ref;
  const _args = args;
  const _color = _args.hue ? getColorV8(_args.hue, _args.shade, theme) : getColor({
    ...color,
    theme
  });
  const shadow = theme.shadows[shadowWidth](_color);
  if (spacerWidth === null) {
    return `${inset ? 'inset' : ''} ${shadow}`;
  }
  const _spacerColor = _args.spacerHue ? getColorV8(_args.spacerHue, _args.spacerShade, theme) : getColor({
    ...spacerColor,
    theme
  });
  const retVal = `
    ${inset ? 'inset' : ''} ${theme.shadows[spacerWidth](_spacerColor)},
    ${inset ? 'inset' : ''} ${shadow}`;
  return boxShadow ? `${retVal}, ${boxShadow}` : retVal;
};
export { getFocusBoxShadow };