Надо в первую очередь в отталкиваться от задач.
Если в вашем проекте несколько размеров кнопок для одного разрешения, несколько стилей, то необходимо передавать соответствующие свойства:
<Button size="sm" type="outline" color="danger" />
Если кнопка при любом значении size должна адаптироваться под разные разрешения, то имеет смысл использовать медиазапросы.
На примере styled-components:
const StyledButton = styled.button`
height: ${props => props.height.sm}px;
${media.md`
height: ${props => props.height.md}px;
`}
${media.lg`
height: ${props => props.height.lg}px;
`}
`;
const getHeightProp = size => {
switch(size) {
case 'sm':
return { ... };
case 'md':
return {
sm: 32,
md: 48,
lg: 64,
};
case 'lg':
return { ... };
}
};
const Button = ({ size }) => {
return <StyledButton height={getHeightProp(size)} />;
}
При использовании других инструментов используют селекторы, модификаторы, объекты стилей и тп.