1 | 'use client';
|
2 |
|
3 | import _extends from "@babel/runtime/helpers/esm/extends";
|
4 | import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
5 | import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
6 | import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
7 | import * as React from 'react';
|
8 | import PropTypes from 'prop-types';
|
9 | import clsx from 'clsx';
|
10 | import usePreviousProps from '@mui/utils/usePreviousProps';
|
11 | import composeClasses from '@mui/utils/composeClasses';
|
12 | import { useBadge } from '@mui/base/useBadge';
|
13 | import { useSlotProps } from '@mui/base/utils';
|
14 | import { styled } from '../zero-styled';
|
15 | import { useDefaultProps } from '../DefaultPropsProvider';
|
16 | import capitalize from '../utils/capitalize';
|
17 | import badgeClasses, { getBadgeUtilityClass } from './badgeClasses';
|
18 | import { jsx as _jsx } from "react/jsx-runtime";
|
19 | import { jsxs as _jsxs } from "react/jsx-runtime";
|
20 | var RADIUS_STANDARD = 10;
|
21 | var RADIUS_DOT = 4;
|
22 | var useUtilityClasses = function useUtilityClasses(ownerState) {
|
23 | var color = ownerState.color,
|
24 | anchorOrigin = ownerState.anchorOrigin,
|
25 | invisible = ownerState.invisible,
|
26 | overlap = ownerState.overlap,
|
27 | variant = ownerState.variant,
|
28 | _ownerState$classes = ownerState.classes,
|
29 | classes = _ownerState$classes === void 0 ? {} : _ownerState$classes;
|
30 | var slots = {
|
31 | root: ['root'],
|
32 | badge: ['badge', variant, invisible && 'invisible', "anchorOrigin".concat(capitalize(anchorOrigin.vertical)).concat(capitalize(anchorOrigin.horizontal)), "anchorOrigin".concat(capitalize(anchorOrigin.vertical)).concat(capitalize(anchorOrigin.horizontal)).concat(capitalize(overlap)), "overlap".concat(capitalize(overlap)), color !== 'default' && "color".concat(capitalize(color))]
|
33 | };
|
34 | return composeClasses(slots, getBadgeUtilityClass, classes);
|
35 | };
|
36 | var BadgeRoot = styled('span', {
|
37 | name: 'MuiBadge',
|
38 | slot: 'Root',
|
39 | overridesResolver: function overridesResolver(props, styles) {
|
40 | return styles.root;
|
41 | }
|
42 | })({
|
43 | position: 'relative',
|
44 | display: 'inline-flex',
|
45 |
|
46 | verticalAlign: 'middle',
|
47 | flexShrink: 0
|
48 | });
|
49 | var BadgeBadge = styled('span', {
|
50 | name: 'MuiBadge',
|
51 | slot: 'Badge',
|
52 | overridesResolver: function overridesResolver(props, styles) {
|
53 | var ownerState = props.ownerState;
|
54 | return [styles.badge, styles[ownerState.variant], styles["anchorOrigin".concat(capitalize(ownerState.anchorOrigin.vertical)).concat(capitalize(ownerState.anchorOrigin.horizontal)).concat(capitalize(ownerState.overlap))], ownerState.color !== 'default' && styles["color".concat(capitalize(ownerState.color))], ownerState.invisible && styles.invisible];
|
55 | }
|
56 | })(function (_ref) {
|
57 | var _theme$vars;
|
58 | var theme = _ref.theme;
|
59 | return {
|
60 | display: 'flex',
|
61 | flexDirection: 'row',
|
62 | flexWrap: 'wrap',
|
63 | justifyContent: 'center',
|
64 | alignContent: 'center',
|
65 | alignItems: 'center',
|
66 | position: 'absolute',
|
67 | boxSizing: 'border-box',
|
68 | fontFamily: theme.typography.fontFamily,
|
69 | fontWeight: theme.typography.fontWeightMedium,
|
70 | fontSize: theme.typography.pxToRem(12),
|
71 | minWidth: RADIUS_STANDARD * 2,
|
72 | lineHeight: 1,
|
73 | padding: '0 6px',
|
74 | height: RADIUS_STANDARD * 2,
|
75 | borderRadius: RADIUS_STANDARD,
|
76 | zIndex: 1,
|
77 |
|
78 | transition: theme.transitions.create('transform', {
|
79 | easing: theme.transitions.easing.easeInOut,
|
80 | duration: theme.transitions.duration.enteringScreen
|
81 | }),
|
82 | variants: [].concat(_toConsumableArray(Object.keys(((_theme$vars = theme.vars) != null ? _theme$vars : theme).palette).filter(function (key) {
|
83 | var _theme$vars2, _theme$vars3;
|
84 | return ((_theme$vars2 = theme.vars) != null ? _theme$vars2 : theme).palette[key].main && ((_theme$vars3 = theme.vars) != null ? _theme$vars3 : theme).palette[key].contrastText;
|
85 | }).map(function (color) {
|
86 | return {
|
87 | props: {
|
88 | color: color
|
89 | },
|
90 | style: {
|
91 | backgroundColor: (theme.vars || theme).palette[color].main,
|
92 | color: (theme.vars || theme).palette[color].contrastText
|
93 | }
|
94 | };
|
95 | })), [{
|
96 | props: {
|
97 | variant: 'dot'
|
98 | },
|
99 | style: {
|
100 | borderRadius: RADIUS_DOT,
|
101 | height: RADIUS_DOT * 2,
|
102 | minWidth: RADIUS_DOT * 2,
|
103 | padding: 0
|
104 | }
|
105 | }, {
|
106 | props: function props(_ref2) {
|
107 | var ownerState = _ref2.ownerState;
|
108 | return ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular';
|
109 | },
|
110 | style: _defineProperty({
|
111 | top: 0,
|
112 | right: 0,
|
113 | transform: 'scale(1) translate(50%, -50%)',
|
114 | transformOrigin: '100% 0%'
|
115 | }, "&.".concat(badgeClasses.invisible), {
|
116 | transform: 'scale(0) translate(50%, -50%)'
|
117 | })
|
118 | }, {
|
119 | props: function props(_ref3) {
|
120 | var ownerState = _ref3.ownerState;
|
121 | return ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular';
|
122 | },
|
123 | style: _defineProperty({
|
124 | bottom: 0,
|
125 | right: 0,
|
126 | transform: 'scale(1) translate(50%, 50%)',
|
127 | transformOrigin: '100% 100%'
|
128 | }, "&.".concat(badgeClasses.invisible), {
|
129 | transform: 'scale(0) translate(50%, 50%)'
|
130 | })
|
131 | }, {
|
132 | props: function props(_ref4) {
|
133 | var ownerState = _ref4.ownerState;
|
134 | return ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular';
|
135 | },
|
136 | style: _defineProperty({
|
137 | top: 0,
|
138 | left: 0,
|
139 | transform: 'scale(1) translate(-50%, -50%)',
|
140 | transformOrigin: '0% 0%'
|
141 | }, "&.".concat(badgeClasses.invisible), {
|
142 | transform: 'scale(0) translate(-50%, -50%)'
|
143 | })
|
144 | }, {
|
145 | props: function props(_ref5) {
|
146 | var ownerState = _ref5.ownerState;
|
147 | return ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular';
|
148 | },
|
149 | style: _defineProperty({
|
150 | bottom: 0,
|
151 | left: 0,
|
152 | transform: 'scale(1) translate(-50%, 50%)',
|
153 | transformOrigin: '0% 100%'
|
154 | }, "&.".concat(badgeClasses.invisible), {
|
155 | transform: 'scale(0) translate(-50%, 50%)'
|
156 | })
|
157 | }, {
|
158 | props: function props(_ref6) {
|
159 | var ownerState = _ref6.ownerState;
|
160 | return ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular';
|
161 | },
|
162 | style: _defineProperty({
|
163 | top: '14%',
|
164 | right: '14%',
|
165 | transform: 'scale(1) translate(50%, -50%)',
|
166 | transformOrigin: '100% 0%'
|
167 | }, "&.".concat(badgeClasses.invisible), {
|
168 | transform: 'scale(0) translate(50%, -50%)'
|
169 | })
|
170 | }, {
|
171 | props: function props(_ref7) {
|
172 | var ownerState = _ref7.ownerState;
|
173 | return ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular';
|
174 | },
|
175 | style: _defineProperty({
|
176 | bottom: '14%',
|
177 | right: '14%',
|
178 | transform: 'scale(1) translate(50%, 50%)',
|
179 | transformOrigin: '100% 100%'
|
180 | }, "&.".concat(badgeClasses.invisible), {
|
181 | transform: 'scale(0) translate(50%, 50%)'
|
182 | })
|
183 | }, {
|
184 | props: function props(_ref8) {
|
185 | var ownerState = _ref8.ownerState;
|
186 | return ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular';
|
187 | },
|
188 | style: _defineProperty({
|
189 | top: '14%',
|
190 | left: '14%',
|
191 | transform: 'scale(1) translate(-50%, -50%)',
|
192 | transformOrigin: '0% 0%'
|
193 | }, "&.".concat(badgeClasses.invisible), {
|
194 | transform: 'scale(0) translate(-50%, -50%)'
|
195 | })
|
196 | }, {
|
197 | props: function props(_ref9) {
|
198 | var ownerState = _ref9.ownerState;
|
199 | return ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular';
|
200 | },
|
201 | style: _defineProperty({
|
202 | bottom: '14%',
|
203 | left: '14%',
|
204 | transform: 'scale(1) translate(-50%, 50%)',
|
205 | transformOrigin: '0% 100%'
|
206 | }, "&.".concat(badgeClasses.invisible), {
|
207 | transform: 'scale(0) translate(-50%, 50%)'
|
208 | })
|
209 | }, {
|
210 | props: {
|
211 | invisible: true
|
212 | },
|
213 | style: {
|
214 | transition: theme.transitions.create('transform', {
|
215 | easing: theme.transitions.easing.easeInOut,
|
216 | duration: theme.transitions.duration.leavingScreen
|
217 | })
|
218 | }
|
219 | }])
|
220 | };
|
221 | });
|
222 | var Badge = React.forwardRef(function Badge(inProps, ref) {
|
223 | var _ref11, _slots$root, _ref12, _slots$badge, _slotProps$root, _slotProps$badge;
|
224 | var props = useDefaultProps({
|
225 | props: inProps,
|
226 | name: 'MuiBadge'
|
227 | });
|
228 | var _props$anchorOrigin = props.anchorOrigin,
|
229 | anchorOriginProp = _props$anchorOrigin === void 0 ? {
|
230 | vertical: 'top',
|
231 | horizontal: 'right'
|
232 | } : _props$anchorOrigin,
|
233 | className = props.className,
|
234 | classesProp = props.classes,
|
235 | component = props.component,
|
236 | _props$components = props.components,
|
237 | components = _props$components === void 0 ? {} : _props$components,
|
238 | _props$componentsProp = props.componentsProps,
|
239 | componentsProps = _props$componentsProp === void 0 ? {} : _props$componentsProp,
|
240 | children = props.children,
|
241 | _props$overlap = props.overlap,
|
242 | overlapProp = _props$overlap === void 0 ? 'rectangular' : _props$overlap,
|
243 | _props$color = props.color,
|
244 | colorProp = _props$color === void 0 ? 'default' : _props$color,
|
245 | _props$invisible = props.invisible,
|
246 | invisibleProp = _props$invisible === void 0 ? false : _props$invisible,
|
247 | _props$max = props.max,
|
248 | maxProp = _props$max === void 0 ? 99 : _props$max,
|
249 | badgeContentProp = props.badgeContent,
|
250 | slots = props.slots,
|
251 | slotProps = props.slotProps,
|
252 | _props$showZero = props.showZero,
|
253 | showZero = _props$showZero === void 0 ? false : _props$showZero,
|
254 | _props$variant = props.variant,
|
255 | variantProp = _props$variant === void 0 ? 'standard' : _props$variant,
|
256 | other = _objectWithoutProperties(props, ["anchorOrigin", "className", "classes", "component", "components", "componentsProps", "children", "overlap", "color", "invisible", "max", "badgeContent", "slots", "slotProps", "showZero", "variant"]);
|
257 | var _useBadge = useBadge({
|
258 | max: maxProp,
|
259 | invisible: invisibleProp,
|
260 | badgeContent: badgeContentProp,
|
261 | showZero: showZero
|
262 | }),
|
263 | badgeContent = _useBadge.badgeContent,
|
264 | invisibleFromHook = _useBadge.invisible,
|
265 | max = _useBadge.max,
|
266 | displayValueFromHook = _useBadge.displayValue;
|
267 | var prevProps = usePreviousProps({
|
268 | anchorOrigin: anchorOriginProp,
|
269 | color: colorProp,
|
270 | overlap: overlapProp,
|
271 | variant: variantProp,
|
272 | badgeContent: badgeContentProp
|
273 | });
|
274 | var invisible = invisibleFromHook || badgeContent == null && variantProp !== 'dot';
|
275 | var _ref10 = invisible ? prevProps : props,
|
276 | _ref10$color = _ref10.color,
|
277 | color = _ref10$color === void 0 ? colorProp : _ref10$color,
|
278 | _ref10$overlap = _ref10.overlap,
|
279 | overlap = _ref10$overlap === void 0 ? overlapProp : _ref10$overlap,
|
280 | _ref10$anchorOrigin = _ref10.anchorOrigin,
|
281 | anchorOrigin = _ref10$anchorOrigin === void 0 ? anchorOriginProp : _ref10$anchorOrigin,
|
282 | _ref10$variant = _ref10.variant,
|
283 | variant = _ref10$variant === void 0 ? variantProp : _ref10$variant;
|
284 | var displayValue = variant !== 'dot' ? displayValueFromHook : undefined;
|
285 | var ownerState = _extends({}, props, {
|
286 | badgeContent: badgeContent,
|
287 | invisible: invisible,
|
288 | max: max,
|
289 | displayValue: displayValue,
|
290 | showZero: showZero,
|
291 | anchorOrigin: anchorOrigin,
|
292 | color: color,
|
293 | overlap: overlap,
|
294 | variant: variant
|
295 | });
|
296 | var classes = useUtilityClasses(ownerState);
|
297 |
|
298 |
|
299 | var RootSlot = (_ref11 = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components.Root) != null ? _ref11 : BadgeRoot;
|
300 | var BadgeSlot = (_ref12 = (_slots$badge = slots == null ? void 0 : slots.badge) != null ? _slots$badge : components.Badge) != null ? _ref12 : BadgeBadge;
|
301 | var rootSlotProps = (_slotProps$root = slotProps == null ? void 0 : slotProps.root) != null ? _slotProps$root : componentsProps.root;
|
302 | var badgeSlotProps = (_slotProps$badge = slotProps == null ? void 0 : slotProps.badge) != null ? _slotProps$badge : componentsProps.badge;
|
303 | var rootProps = useSlotProps({
|
304 | elementType: RootSlot,
|
305 | externalSlotProps: rootSlotProps,
|
306 | externalForwardedProps: other,
|
307 | additionalProps: {
|
308 | ref: ref,
|
309 | as: component
|
310 | },
|
311 | ownerState: ownerState,
|
312 | className: clsx(rootSlotProps == null ? void 0 : rootSlotProps.className, classes.root, className)
|
313 | });
|
314 | var badgeProps = useSlotProps({
|
315 | elementType: BadgeSlot,
|
316 | externalSlotProps: badgeSlotProps,
|
317 | ownerState: ownerState,
|
318 | className: clsx(classes.badge, badgeSlotProps == null ? void 0 : badgeSlotProps.className)
|
319 | });
|
320 | return _jsxs(RootSlot, _extends({}, rootProps, {
|
321 | children: [children, _jsx(BadgeSlot, _extends({}, badgeProps, {
|
322 | children: displayValue
|
323 | }))]
|
324 | }));
|
325 | });
|
326 | process.env.NODE_ENV !== "production" ? Badge.propTypes = {
|
327 |
|
328 |
|
329 |
|
330 |
|
331 | |
332 |
|
333 |
|
334 |
|
335 |
|
336 |
|
337 |
|
338 | anchorOrigin: PropTypes.shape({
|
339 | horizontal: PropTypes.oneOf(['left', 'right']).isRequired,
|
340 | vertical: PropTypes.oneOf(['bottom', 'top']).isRequired
|
341 | }),
|
342 | |
343 |
|
344 |
|
345 | badgeContent: PropTypes.node,
|
346 | |
347 |
|
348 |
|
349 | children: PropTypes.node,
|
350 | |
351 |
|
352 |
|
353 | classes: PropTypes.object,
|
354 | |
355 |
|
356 |
|
357 | className: PropTypes.string,
|
358 | |
359 |
|
360 |
|
361 |
|
362 |
|
363 |
|
364 | color: PropTypes .oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),
|
365 | |
366 |
|
367 |
|
368 |
|
369 | component: PropTypes.elementType,
|
370 | |
371 |
|
372 |
|
373 |
|
374 |
|
375 |
|
376 |
|
377 |
|
378 | components: PropTypes.shape({
|
379 | Badge: PropTypes.elementType,
|
380 | Root: PropTypes.elementType
|
381 | }),
|
382 | |
383 |
|
384 |
|
385 |
|
386 |
|
387 |
|
388 |
|
389 |
|
390 |
|
391 | componentsProps: PropTypes.shape({
|
392 | badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
|
393 | root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])
|
394 | }),
|
395 | |
396 |
|
397 |
|
398 |
|
399 | invisible: PropTypes.bool,
|
400 | |
401 |
|
402 |
|
403 |
|
404 | max: PropTypes.number,
|
405 | |
406 |
|
407 |
|
408 |
|
409 | overlap: PropTypes.oneOf(['circular', 'rectangular']),
|
410 | |
411 |
|
412 |
|
413 |
|
414 | showZero: PropTypes.bool,
|
415 | |
416 |
|
417 |
|
418 |
|
419 | slotProps: PropTypes.shape({
|
420 | badge: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
|
421 | root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])
|
422 | }),
|
423 | |
424 |
|
425 |
|
426 |
|
427 |
|
428 | slots: PropTypes.shape({
|
429 | badge: PropTypes.elementType,
|
430 | root: PropTypes.elementType
|
431 | }),
|
432 | |
433 |
|
434 |
|
435 | sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
|
436 | |
437 |
|
438 |
|
439 |
|
440 | variant: PropTypes .oneOfType([PropTypes.oneOf(['dot', 'standard']), PropTypes.string])
|
441 | } : void 0;
|
442 | export default Badge; |
\ | No newline at end of file |