UNPKG

8.23 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 _zeroStyled = require("../zero-styled");
15var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
16var _DefaultPropsProvider = require("../DefaultPropsProvider");
17var _capitalize = _interopRequireDefault(require("../utils/capitalize"));
18var _createSimplePaletteValueFilter = _interopRequireDefault(require("../utils/createSimplePaletteValueFilter"));
19var _Paper = _interopRequireDefault(require("../Paper"));
20var _appBarClasses = require("./appBarClasses");
21var _jsxRuntime = require("react/jsx-runtime");
22const useUtilityClasses = ownerState => {
23 const {
24 color,
25 position,
26 classes
27 } = ownerState;
28 const slots = {
29 root: ['root', `color${(0, _capitalize.default)(color)}`, `position${(0, _capitalize.default)(position)}`]
30 };
31 return (0, _composeClasses.default)(slots, _appBarClasses.getAppBarUtilityClass, classes);
32};
33
34// var2 is the fallback.
35// Ex. var1: 'var(--a)', var2: 'var(--b)'; return: 'var(--a, var(--b))'
36const joinVars = (var1, var2) => var1 ? `${var1?.replace(')', '')}, ${var2})` : var2;
37const AppBarRoot = (0, _zeroStyled.styled)(_Paper.default, {
38 name: 'MuiAppBar',
39 slot: 'Root',
40 overridesResolver: (props, styles) => {
41 const {
42 ownerState
43 } = props;
44 return [styles.root, styles[`position${(0, _capitalize.default)(ownerState.position)}`], styles[`color${(0, _capitalize.default)(ownerState.color)}`]];
45 }
46})((0, _memoTheme.default)(({
47 theme
48}) => ({
49 display: 'flex',
50 flexDirection: 'column',
51 width: '100%',
52 boxSizing: 'border-box',
53 // Prevent padding issue with the Modal and fixed positioned AppBar.
54 flexShrink: 0,
55 variants: [{
56 props: {
57 position: 'fixed'
58 },
59 style: {
60 position: 'fixed',
61 zIndex: (theme.vars || theme).zIndex.appBar,
62 top: 0,
63 left: 'auto',
64 right: 0,
65 '@media print': {
66 // Prevent the app bar to be visible on each printed page.
67 position: 'absolute'
68 }
69 }
70 }, {
71 props: {
72 position: 'absolute'
73 },
74 style: {
75 position: 'absolute',
76 zIndex: (theme.vars || theme).zIndex.appBar,
77 top: 0,
78 left: 'auto',
79 right: 0
80 }
81 }, {
82 props: {
83 position: 'sticky'
84 },
85 style: {
86 position: 'sticky',
87 zIndex: (theme.vars || theme).zIndex.appBar,
88 top: 0,
89 left: 'auto',
90 right: 0
91 }
92 }, {
93 props: {
94 position: 'static'
95 },
96 style: {
97 position: 'static'
98 }
99 }, {
100 props: {
101 position: 'relative'
102 },
103 style: {
104 position: 'relative'
105 }
106 }, {
107 props: {
108 color: 'inherit'
109 },
110 style: {
111 '--AppBar-color': 'inherit'
112 }
113 }, {
114 props: {
115 color: 'default'
116 },
117 style: {
118 '--AppBar-background': theme.vars ? theme.vars.palette.AppBar.defaultBg : theme.palette.grey[100],
119 '--AppBar-color': theme.vars ? theme.vars.palette.text.primary : theme.palette.getContrastText(theme.palette.grey[100]),
120 ...theme.applyStyles('dark', {
121 '--AppBar-background': theme.vars ? theme.vars.palette.AppBar.defaultBg : theme.palette.grey[900],
122 '--AppBar-color': theme.vars ? theme.vars.palette.text.primary : theme.palette.getContrastText(theme.palette.grey[900])
123 })
124 }
125 }, ...Object.entries(theme.palette).filter((0, _createSimplePaletteValueFilter.default)(['contrastText'])).map(([color]) => ({
126 props: {
127 color
128 },
129 style: {
130 '--AppBar-background': (theme.vars ?? theme).palette[color].main,
131 '--AppBar-color': (theme.vars ?? theme).palette[color].contrastText
132 }
133 })), {
134 props: props => props.enableColorOnDark === true && !['inherit', 'transparent'].includes(props.color),
135 style: {
136 backgroundColor: 'var(--AppBar-background)',
137 color: 'var(--AppBar-color)'
138 }
139 }, {
140 props: props => props.enableColorOnDark === false && !['inherit', 'transparent'].includes(props.color),
141 style: {
142 backgroundColor: 'var(--AppBar-background)',
143 color: 'var(--AppBar-color)',
144 ...theme.applyStyles('dark', {
145 backgroundColor: theme.vars ? joinVars(theme.vars.palette.AppBar.darkBg, 'var(--AppBar-background)') : null,
146 color: theme.vars ? joinVars(theme.vars.palette.AppBar.darkColor, 'var(--AppBar-color)') : null
147 })
148 }
149 }, {
150 props: {
151 color: 'transparent'
152 },
153 style: {
154 '--AppBar-background': 'transparent',
155 '--AppBar-color': 'inherit',
156 backgroundColor: 'var(--AppBar-background)',
157 color: 'var(--AppBar-color)',
158 ...theme.applyStyles('dark', {
159 backgroundImage: 'none'
160 })
161 }
162 }]
163})));
164const AppBar = /*#__PURE__*/React.forwardRef(function AppBar(inProps, ref) {
165 const props = (0, _DefaultPropsProvider.useDefaultProps)({
166 props: inProps,
167 name: 'MuiAppBar'
168 });
169 const {
170 className,
171 color = 'primary',
172 enableColorOnDark = false,
173 position = 'fixed',
174 ...other
175 } = props;
176 const ownerState = {
177 ...props,
178 color,
179 position,
180 enableColorOnDark
181 };
182 const classes = useUtilityClasses(ownerState);
183 return /*#__PURE__*/(0, _jsxRuntime.jsx)(AppBarRoot, {
184 square: true,
185 component: "header",
186 ownerState: ownerState,
187 elevation: 4,
188 className: (0, _clsx.default)(classes.root, className, position === 'fixed' && 'mui-fixed'),
189 ref: ref,
190 ...other
191 });
192});
193process.env.NODE_ENV !== "production" ? AppBar.propTypes /* remove-proptypes */ = {
194 // ┌────────────────────────────── Warning ──────────────────────────────┐
195 // │ These PropTypes are generated from the TypeScript type definitions. │
196 // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
197 // └─────────────────────────────────────────────────────────────────────┘
198 /**
199 * The content of the component.
200 */
201 children: _propTypes.default.node,
202 /**
203 * Override or extend the styles applied to the component.
204 */
205 classes: _propTypes.default.object,
206 /**
207 * @ignore
208 */
209 className: _propTypes.default.string,
210 /**
211 * The color of the component.
212 * It supports both default and custom theme colors, which can be added as shown in the
213 * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
214 * @default 'primary'
215 */
216 color: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.oneOf(['default', 'inherit', 'primary', 'secondary', 'transparent', 'error', 'info', 'success', 'warning']), _propTypes.default.string]),
217 /**
218 * If true, the `color` prop is applied in dark mode.
219 * @default false
220 */
221 enableColorOnDark: _propTypes.default.bool,
222 /**
223 * The positioning type. The behavior of the different options is described
224 * [in the MDN web docs](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Positioning).
225 * Note: `sticky` is not universally supported and will fall back to `static` when unavailable.
226 * @default 'fixed'
227 */
228 position: _propTypes.default.oneOf(['absolute', 'fixed', 'relative', 'static', 'sticky']),
229 /**
230 * The system prop that allows defining system overrides as well as additional CSS styles.
231 */
232 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])
233} : void 0;
234var _default = exports.default = AppBar;
\No newline at end of file