Skip to content

Commit 8269ca3

Browse files
committed
add aspectRatio prop back in
1 parent 5313c04 commit 8269ca3

File tree

3 files changed

+34
-12
lines changed

3 files changed

+34
-12
lines changed

packages/react/src/Image/Image.module.css

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,23 @@
44
aspect-ratio: var(--brand-image-aspectRatio);
55
}
66

7-
.Image--aspect-ratio-custom {
7+
.Image--aspectRatio-custom {
88
aspect-ratio: var(--brand-image-aspectRatio);
99
}
1010

11-
.Image--aspect-ratio-1-1 {
11+
.Image--aspectRatio-1-1 {
1212
aspect-ratio: 1 / 1;
1313
}
1414

15-
.Image--aspect-ratio-16-9 {
15+
.Image--aspectRatio-16-9 {
1616
aspect-ratio: 16 / 9;
1717
}
1818

19-
.Image--aspect-ratio-16-10 {
19+
.Image--aspectRatio-16-10 {
2020
aspect-ratio: 16 / 10;
2121
}
2222

23-
.Image--aspect-ratio-4-3 {
23+
.Image--aspectRatio-4-3 {
2424
aspect-ratio: 4 / 3;
2525
}
2626

packages/react/src/Image/Image.module.css.d.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
declare const styles: {
22
readonly "Image": string;
3-
readonly "Image--aspect-ratio-custom": string;
4-
readonly "Image--aspect-ratio-1-1": string;
5-
readonly "Image--aspect-ratio-16-9": string;
6-
readonly "Image--aspect-ratio-16-10": string;
7-
readonly "Image--aspect-ratio-4-3": string;
3+
readonly "Image--aspectRatio-custom": string;
4+
readonly "Image--aspectRatio-1-1": string;
5+
readonly "Image--aspectRatio-16-9": string;
6+
readonly "Image--aspectRatio-16-10": string;
7+
readonly "Image--aspectRatio-4-3": string;
88
readonly "Image--borderRadius-small": string;
99
readonly "Image--borderRadius-medium": string;
1010
readonly "Image--borderRadius-large": string;

packages/react/src/Image/Image.tsx

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,41 @@ import {AnimateProps, useAnimation} from '../animation'
55

66
export const ImageBorderRadiusOptions = ['small', 'medium', 'large', 'xlarge', 'full'] as const
77
export type ImageBorderRadiusOptions = (typeof ImageBorderRadiusOptions)[number]
8+
export type ImageAspectRatio = '1:1' | '16:9' | '16:10' | '4:3' | 'custom'
89

910
export type ImageProps = React.ImgHTMLAttributes<HTMLImageElement> & {
1011
alt: string
1112
animate?: AnimateProps
1213
borderRadius?: ImageBorderRadiusOptions
14+
aspectRatio?: ImageAspectRatio
1315
}
1416

15-
export const Image = ({alt, animate, borderRadius, className, style, ...props}: ImageProps) => {
17+
const getAspectRatioClassName = (aspectRatio?: ImageAspectRatio): string | null => {
18+
if (!aspectRatio) {
19+
return null
20+
}
21+
22+
if (aspectRatio === 'custom') {
23+
return styles['Image--aspectRatio-custom']
24+
}
25+
26+
const className = `Image--aspectRatio-${aspectRatio.replace(':', '-')}`
27+
28+
return styles[className]
29+
}
30+
31+
export const Image = ({alt, animate, borderRadius, className, style, aspectRatio, ...props}: ImageProps) => {
1632
const {classes: animationClasses, styles: animationInlineStyles} = useAnimation(animate)
1733

1834
return (
1935
<img
20-
className={clsx(animationClasses, styles.Image, styles[`Image--borderRadius-${borderRadius}`], className)}
36+
className={clsx(
37+
animationClasses,
38+
styles.Image,
39+
styles[`Image--borderRadius-${borderRadius}`],
40+
getAspectRatioClassName(aspectRatio),
41+
className,
42+
)}
2143
style={{...animationInlineStyles, ...style}}
2244
alt={alt}
2345
{...props}

0 commit comments

Comments
 (0)