import get from 'lodash/get';

import { BoxShadowToken, BoxShadowTokenRef, PropsWithTheme } from './types';

/**
 * Returns effect that can be used inside styled-component.
 *
 * ```tsx
 * import styled from 'styled-components/macro';
 * import { effect } from '../theme';
 *
 * const StyledDiv = styled.div`
 *   ${effect("elevation/8")};
 * `;
 * ```
 */
export function shadow(name: BoxShadowTokenRef) {
  return (props: PropsWithTheme): BoxShadowToken => get(props.theme, name.split('/'));
}
