diff --git a/packages/banner/package.json b/packages/banner/package.json index 0ae44750a..888ebf7b9 100644 --- a/packages/banner/package.json +++ b/packages/banner/package.json @@ -29,6 +29,7 @@ "react-dom": ">=16.2.0 <18" }, "devDependencies": { + "@storybook/react": "6.3.7", "@tablecheck/tablekit-enzyme": "^1.0.0", "@tablecheck/tablekit-free-icon-config": "^1.0.0" }, diff --git a/packages/banner/src/Banner.tsx b/packages/banner/src/Banner.tsx index cc1c7b3c5..9e8c15e07 100644 --- a/packages/banner/src/Banner.tsx +++ b/packages/banner/src/Banner.tsx @@ -1,6 +1,7 @@ import { ButtonAppearance, ButtonSize } from '@tablecheck/tablekit-button'; import { Icon, getIcon } from '@tablecheck/tablekit-icon'; import { Size } from '@tablecheck/tablekit-theme'; +import { MutableRefObject, useRef, useState, useEffect } from 'react'; import { adjustedIconSizes, @@ -21,15 +22,21 @@ export const Banner = ({ size = Size.Regular, ...restProps }: BannerProps): JSX.Element => { + const [height, setHeight] = useState(0); + const ref = useRef() as MutableRefObject; + useEffect(() => { + setHeight(ref.current.clientHeight); + }, []); const displayedIcon = customIcon || getIcon(appearance); return ( - + {displayedIcon && ( - +
- +
` display: flex; flex: 1; justify-content: center; padding: 6px 0; + display: flex; + ${({ height, size }) => + height && + height <= parseFloat(sizedTypography[size].lineHeight) + 12 && + 'align-items: center;'} &:only-child { padding: 6px ${Spacing.L2} 6px 0;