Skip to content

Commit d7ab73f

Browse files
aacevskipluvio72
authored andcommitted
[material-ui][Card] Convert to support CSS extraction (mui#41580)
1 parent 5cad6a4 commit d7ab73f

File tree

7 files changed

+118
-38
lines changed

7 files changed

+118
-38
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
'use client';
2+
import * as React from 'react';
3+
import ActionAreaCard from '../../../../../../docs/data/material/components/cards/ActionAreaCard';
4+
import BasicCard from '../../../../../../docs/data/material/components/cards/BasicCard';
5+
import ImgMediaCard from '../../../../../../docs/data/material/components/cards/ImgMediaCard';
6+
import MediaCard from '../../../../../../docs/data/material/components/cards/MediaCard';
7+
import MediaControlCard from '../../../../../../docs/data/material/components/cards/MediaControlCard';
8+
import MultiActionAreaCard from '../../../../../../docs/data/material/components/cards/MultiActionAreaCard';
9+
import OutlinedCard from '../../../../../../docs/data/material/components/cards/OutlinedCard';
10+
import RecipeReviewCard from '../../../../../../docs/data/material/components/cards/RecipeReviewCard';
11+
12+
export default function Cards() {
13+
return (
14+
<React.Fragment>
15+
<section>
16+
<h2> Action Area Card</h2>
17+
<div className="demo-container">
18+
<ActionAreaCard />
19+
</div>
20+
</section>
21+
<section>
22+
<h2> Basic Card</h2>
23+
<div className="demo-container">
24+
<BasicCard />
25+
</div>
26+
</section>
27+
<section>
28+
<h2> Img Media Card</h2>
29+
<div className="demo-container">
30+
<ImgMediaCard />
31+
</div>
32+
</section>
33+
<section>
34+
<h2> Media Card</h2>
35+
<div className="demo-container">
36+
<MediaCard />
37+
</div>
38+
</section>
39+
<section>
40+
<h2> Media Control Card</h2>
41+
<div className="demo-container">
42+
<MediaControlCard />
43+
</div>
44+
</section>
45+
<section>
46+
<h2> Multi Action Area Card</h2>
47+
<div className="demo-container">
48+
<MultiActionAreaCard />
49+
</div>
50+
</section>
51+
<section>
52+
<h2> Outlined Card</h2>
53+
<div className="demo-container">
54+
<OutlinedCard />
55+
</div>
56+
</section>
57+
<section>
58+
<h2> Recipe Review Card</h2>
59+
<div className="demo-container">
60+
<RecipeReviewCard />
61+
</div>
62+
</section>
63+
</React.Fragment>
64+
);
65+
}

packages/mui-material/src/Card/Card.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ import PropTypes from 'prop-types';
44
import clsx from 'clsx';
55
import chainPropTypes from '@mui/utils/chainPropTypes';
66
import composeClasses from '@mui/utils/composeClasses';
7-
import styled from '../styles/styled';
8-
import useThemeProps from '../styles/useThemeProps';
7+
import { styled, createUseThemeProps } from '../zero-styled';
98
import Paper from '../Paper';
109
import { getCardUtilityClass } from './cardClasses';
1110

11+
const useThemeProps = createUseThemeProps('MuiCard');
12+
1213
const useUtilityClasses = (ownerState) => {
1314
const { classes } = ownerState;
1415

@@ -23,10 +24,8 @@ const CardRoot = styled(Paper, {
2324
name: 'MuiCard',
2425
slot: 'Root',
2526
overridesResolver: (props, styles) => styles.root,
26-
})(() => {
27-
return {
28-
overflow: 'hidden',
29-
};
27+
})({
28+
overflow: 'hidden',
3029
});
3130

3231
const Card = React.forwardRef(function Card(inProps, ref) {

packages/mui-material/src/CardActionArea/CardActionArea.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ import * as React from 'react';
33
import PropTypes from 'prop-types';
44
import clsx from 'clsx';
55
import composeClasses from '@mui/utils/composeClasses';
6-
import useThemeProps from '../styles/useThemeProps';
7-
import styled from '../styles/styled';
6+
import { styled, createUseThemeProps } from '../zero-styled';
87
import cardActionAreaClasses, { getCardActionAreaUtilityClass } from './cardActionAreaClasses';
98
import ButtonBase from '../ButtonBase';
109

10+
const useThemeProps = createUseThemeProps('MuiCardActionArea');
11+
1112
const useUtilityClasses = (ownerState) => {
1213
const { classes } = ownerState;
1314

packages/mui-material/src/CardActions/CardActions.js

+14-8
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ import * as React from 'react';
33
import PropTypes from 'prop-types';
44
import clsx from 'clsx';
55
import composeClasses from '@mui/utils/composeClasses';
6-
import styled from '../styles/styled';
7-
import useThemeProps from '../styles/useThemeProps';
6+
import { styled, createUseThemeProps } from '../zero-styled';
87
import { getCardActionsUtilityClass } from './cardActionsClasses';
98

9+
const useThemeProps = createUseThemeProps('MuiCardActions');
10+
1011
const useUtilityClasses = (ownerState) => {
1112
const { classes, disableSpacing } = ownerState;
1213

@@ -25,16 +26,21 @@ const CardActionsRoot = styled('div', {
2526

2627
return [styles.root, !ownerState.disableSpacing && styles.spacing];
2728
},
28-
})(({ ownerState }) => ({
29+
})({
2930
display: 'flex',
3031
alignItems: 'center',
3132
padding: 8,
32-
...(!ownerState.disableSpacing && {
33-
'& > :not(style) ~ :not(style)': {
34-
marginLeft: 8,
33+
variants: [
34+
{
35+
props: { disableSpacing: false },
36+
style: {
37+
'& > :not(style) ~ :not(style)': {
38+
marginLeft: 8,
39+
},
40+
},
3541
},
36-
}),
37-
}));
42+
],
43+
});
3844

3945
const CardActions = React.forwardRef(function CardActions(inProps, ref) {
4046
const props = useThemeProps({

packages/mui-material/src/CardContent/CardContent.js

+8-9
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ import * as React from 'react';
33
import PropTypes from 'prop-types';
44
import clsx from 'clsx';
55
import composeClasses from '@mui/utils/composeClasses';
6-
import styled from '../styles/styled';
7-
import useThemeProps from '../styles/useThemeProps';
6+
import { styled, createUseThemeProps } from '../zero-styled';
87
import { getCardContentUtilityClass } from './cardContentClasses';
98

9+
const useThemeProps = createUseThemeProps('MuiCardContent');
10+
1011
const useUtilityClasses = (ownerState) => {
1112
const { classes } = ownerState;
1213

@@ -21,13 +22,11 @@ const CardContentRoot = styled('div', {
2122
name: 'MuiCardContent',
2223
slot: 'Root',
2324
overridesResolver: (props, styles) => styles.root,
24-
})(() => {
25-
return {
26-
padding: 16,
27-
'&:last-child': {
28-
paddingBottom: 24,
29-
},
30-
};
25+
})({
26+
padding: 16,
27+
'&:last-child': {
28+
paddingBottom: 24,
29+
},
3130
});
3231

3332
const CardContent = React.forwardRef(function CardContent(inProps, ref) {

packages/mui-material/src/CardHeader/CardHeader.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ import PropTypes from 'prop-types';
44
import clsx from 'clsx';
55
import composeClasses from '@mui/utils/composeClasses';
66
import Typography from '../Typography';
7-
import useThemeProps from '../styles/useThemeProps';
8-
import styled from '../styles/styled';
7+
import { styled, createUseThemeProps } from '../zero-styled';
98
import cardHeaderClasses, { getCardHeaderUtilityClass } from './cardHeaderClasses';
109

10+
const useThemeProps = createUseThemeProps('MuiCardHeader');
11+
1112
const useUtilityClasses = (ownerState) => {
1213
const { classes } = ownerState;
1314

packages/mui-material/src/CardMedia/CardMedia.js

+20-11
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ import PropTypes from 'prop-types';
44
import clsx from 'clsx';
55
import chainPropTypes from '@mui/utils/chainPropTypes';
66
import composeClasses from '@mui/utils/composeClasses';
7-
import useThemeProps from '../styles/useThemeProps';
8-
import styled from '../styles/styled';
7+
import { styled, createUseThemeProps } from '../zero-styled';
98
import { getCardMediaUtilityClass } from './cardMediaClasses';
109

10+
const useThemeProps = createUseThemeProps('MuiCardMedia');
11+
1112
const useUtilityClasses = (ownerState) => {
1213
const { classes, isMediaComponent, isImageComponent } = ownerState;
1314

@@ -27,19 +28,27 @@ const CardMediaRoot = styled('div', {
2728

2829
return [styles.root, isMediaComponent && styles.media, isImageComponent && styles.img];
2930
},
30-
})(({ ownerState }) => ({
31+
})({
3132
display: 'block',
3233
backgroundSize: 'cover',
3334
backgroundRepeat: 'no-repeat',
3435
backgroundPosition: 'center',
35-
...(ownerState.isMediaComponent && {
36-
width: '100%',
37-
}),
38-
...(ownerState.isImageComponent && {
39-
// ⚠️ object-fit is not supported by IE11.
40-
objectFit: 'cover',
41-
}),
42-
}));
36+
variants: [
37+
{
38+
props: { isMediaComponent: true },
39+
style: {
40+
width: '100%',
41+
},
42+
},
43+
{
44+
props: { isImageComponent: true },
45+
style: {
46+
// ⚠️ object-fit is not supported by IE11.
47+
objectFit: 'cover',
48+
},
49+
},
50+
],
51+
});
4352

4453
const MEDIA_COMPONENTS = ['video', 'audio', 'picture', 'iframe', 'img'];
4554
const IMAGE_COMPONENTS = ['picture', 'img'];

0 commit comments

Comments
 (0)