UNPKG

6.97 kBJavaScriptView Raw
1"use strict";
2'use client';
3
4var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6Object.defineProperty(exports, "__esModule", {
7 value: true
8});
9exports.default = void 0;
10var React = _interopRequireWildcard(require("react"));
11var _propTypes = _interopRequireDefault(require("prop-types"));
12var _clsx = _interopRequireDefault(require("clsx"));
13var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14var _Typography = _interopRequireWildcard(require("../Typography"));
15var _zeroStyled = require("../zero-styled");
16var _DefaultPropsProvider = require("../DefaultPropsProvider");
17var _cardHeaderClasses = _interopRequireWildcard(require("./cardHeaderClasses"));
18var _jsxRuntime = require("react/jsx-runtime");
19const useUtilityClasses = ownerState => {
20 const {
21 classes
22 } = ownerState;
23 const slots = {
24 root: ['root'],
25 avatar: ['avatar'],
26 action: ['action'],
27 content: ['content'],
28 title: ['title'],
29 subheader: ['subheader']
30 };
31 return (0, _composeClasses.default)(slots, _cardHeaderClasses.getCardHeaderUtilityClass, classes);
32};
33const CardHeaderRoot = (0, _zeroStyled.styled)('div', {
34 name: 'MuiCardHeader',
35 slot: 'Root',
36 overridesResolver: (props, styles) => ({
37 [`& .${_cardHeaderClasses.default.title}`]: styles.title,
38 [`& .${_cardHeaderClasses.default.subheader}`]: styles.subheader,
39 ...styles.root
40 })
41})({
42 display: 'flex',
43 alignItems: 'center',
44 padding: 16
45});
46const CardHeaderAvatar = (0, _zeroStyled.styled)('div', {
47 name: 'MuiCardHeader',
48 slot: 'Avatar',
49 overridesResolver: (props, styles) => styles.avatar
50})({
51 display: 'flex',
52 flex: '0 0 auto',
53 marginRight: 16
54});
55const CardHeaderAction = (0, _zeroStyled.styled)('div', {
56 name: 'MuiCardHeader',
57 slot: 'Action',
58 overridesResolver: (props, styles) => styles.action
59})({
60 flex: '0 0 auto',
61 alignSelf: 'flex-start',
62 marginTop: -4,
63 marginRight: -8,
64 marginBottom: -4
65});
66const CardHeaderContent = (0, _zeroStyled.styled)('div', {
67 name: 'MuiCardHeader',
68 slot: 'Content',
69 overridesResolver: (props, styles) => styles.content
70})({
71 flex: '1 1 auto',
72 [`.${_Typography.typographyClasses.root}:where(& .${_cardHeaderClasses.default.title})`]: {
73 display: 'block'
74 },
75 [`.${_Typography.typographyClasses.root}:where(& .${_cardHeaderClasses.default.subheader})`]: {
76 display: 'block'
77 }
78});
79const CardHeader = /*#__PURE__*/React.forwardRef(function CardHeader(inProps, ref) {
80 const props = (0, _DefaultPropsProvider.useDefaultProps)({
81 props: inProps,
82 name: 'MuiCardHeader'
83 });
84 const {
85 action,
86 avatar,
87 className,
88 component = 'div',
89 disableTypography = false,
90 subheader: subheaderProp,
91 subheaderTypographyProps,
92 title: titleProp,
93 titleTypographyProps,
94 ...other
95 } = props;
96 const ownerState = {
97 ...props,
98 component,
99 disableTypography
100 };
101 const classes = useUtilityClasses(ownerState);
102 let title = titleProp;
103 if (title != null && title.type !== _Typography.default && !disableTypography) {
104 title = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
105 variant: avatar ? 'body2' : 'h5',
106 className: classes.title,
107 component: "span",
108 ...titleTypographyProps,
109 children: title
110 });
111 }
112 let subheader = subheaderProp;
113 if (subheader != null && subheader.type !== _Typography.default && !disableTypography) {
114 subheader = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
115 variant: avatar ? 'body2' : 'body1',
116 className: classes.subheader,
117 color: "textSecondary",
118 component: "span",
119 ...subheaderTypographyProps,
120 children: subheader
121 });
122 }
123 return /*#__PURE__*/(0, _jsxRuntime.jsxs)(CardHeaderRoot, {
124 className: (0, _clsx.default)(classes.root, className),
125 as: component,
126 ref: ref,
127 ownerState: ownerState,
128 ...other,
129 children: [avatar && /*#__PURE__*/(0, _jsxRuntime.jsx)(CardHeaderAvatar, {
130 className: classes.avatar,
131 ownerState: ownerState,
132 children: avatar
133 }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(CardHeaderContent, {
134 className: classes.content,
135 ownerState: ownerState,
136 children: [title, subheader]
137 }), action && /*#__PURE__*/(0, _jsxRuntime.jsx)(CardHeaderAction, {
138 className: classes.action,
139 ownerState: ownerState,
140 children: action
141 })]
142 });
143});
144process.env.NODE_ENV !== "production" ? CardHeader.propTypes /* remove-proptypes */ = {
145 // ┌────────────────────────────── Warning ──────────────────────────────┐
146 // │ These PropTypes are generated from the TypeScript type definitions. │
147 // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
148 // └─────────────────────────────────────────────────────────────────────┘
149 /**
150 * The action to display in the card header.
151 */
152 action: _propTypes.default.node,
153 /**
154 * The Avatar element to display.
155 */
156 avatar: _propTypes.default.node,
157 /**
158 * @ignore
159 */
160 children: _propTypes.default.node,
161 /**
162 * Override or extend the styles applied to the component.
163 */
164 classes: _propTypes.default.object,
165 /**
166 * @ignore
167 */
168 className: _propTypes.default.string,
169 /**
170 * The component used for the root node.
171 * Either a string to use a HTML element or a component.
172 */
173 component: _propTypes.default.elementType,
174 /**
175 * If `true`, `subheader` and `title` won't be wrapped by a Typography component.
176 * This can be useful to render an alternative Typography variant by wrapping
177 * the `title` text, and optional `subheader` text
178 * with the Typography component.
179 * @default false
180 */
181 disableTypography: _propTypes.default.bool,
182 /**
183 * The content of the component.
184 */
185 subheader: _propTypes.default.node,
186 /**
187 * These props will be forwarded to the subheader
188 * (as long as disableTypography is not `true`).
189 */
190 subheaderTypographyProps: _propTypes.default.object,
191 /**
192 * The system prop that allows defining system overrides as well as additional CSS styles.
193 */
194 sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]),
195 /**
196 * The content of the component.
197 */
198 title: _propTypes.default.node,
199 /**
200 * These props will be forwarded to the title
201 * (as long as disableTypography is not `true`).
202 */
203 titleTypographyProps: _propTypes.default.object
204} : void 0;
205var _default = exports.default = CardHeader;
\No newline at end of file