From dfd816d1891545aa8ead982b57891858f1c82bb4 Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Wed, 6 Apr 2022 16:24:05 +0200 Subject: chore: add a ResponsiveImage component --- .../molecules/images/responsive-image.tsx | 68 ++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/components/molecules/images/responsive-image.tsx (limited to 'src/components/molecules/images/responsive-image.tsx') diff --git a/src/components/molecules/images/responsive-image.tsx b/src/components/molecules/images/responsive-image.tsx new file mode 100644 index 0000000..db2f5ab --- /dev/null +++ b/src/components/molecules/images/responsive-image.tsx @@ -0,0 +1,68 @@ +import Link from '@components/atoms/links/link'; +import Image, { ImageProps } from 'next/image'; +import { FC } from 'react'; +import styles from './responsive-image.module.scss'; + +type ResponsiveImageProps = Omit & { + /** + * An alternative text. + */ + alt: string; + /** + * A figure caption. + */ + caption?: string; + /** + * The image height. + */ + height: number | string; + /** + * A link target. + */ + target?: string; + /** + * The image width. + */ + width: number | string; +}; + +/** + * ResponsiveImage component + * + * Render a responsive image wrapped in a figure element. + */ +const ResponsiveImage: FC = ({ + alt, + caption, + layout, + objectFit, + target, + ...props +}) => { + return ( +
+ {target ? ( + + {alt} + {caption && ( +
{caption}
+ )} + + ) : ( + <> + {alt} + {caption && ( +
{caption}
+ )} + + )} +
+ ); +}; + +export default ResponsiveImage; -- cgit v1.2.3