UNPKG

@mui/material

Version:

Material UI is an open-source React component library that implements Google's Material Design. It's comprehensive and can be used in production out of the box.

275 lines (274 loc) 9.26 kB
"use strict"; 'use client'; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.TypographyRoot = void 0; var React = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _clsx = _interopRequireDefault(require("clsx")); var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses")); var _zeroStyled = require("../zero-styled"); var _memoTheme = _interopRequireDefault(require("../utils/memoTheme")); var _DefaultPropsProvider = require("../DefaultPropsProvider"); var _capitalize = _interopRequireDefault(require("../utils/capitalize")); var _createSimplePaletteValueFilter = _interopRequireDefault(require("../utils/createSimplePaletteValueFilter")); var _typographyClasses = require("./typographyClasses"); var _jsxRuntime = require("react/jsx-runtime"); const v6Colors = { primary: true, secondary: true, error: true, info: true, success: true, warning: true, textPrimary: true, textSecondary: true, textDisabled: true }; const extendSxProp = (0, _zeroStyled.internal_createExtendSxProp)(); const useUtilityClasses = ownerState => { const { align, gutterBottom, noWrap, paragraph, variant, classes } = ownerState; const slots = { root: ['root', variant, ownerState.align !== 'inherit' && `align${(0, _capitalize.default)(align)}`, gutterBottom && 'gutterBottom', noWrap && 'noWrap', paragraph && 'paragraph'] }; return (0, _composeClasses.default)(slots, _typographyClasses.getTypographyUtilityClass, classes); }; const TypographyRoot = exports.TypographyRoot = (0, _zeroStyled.styled)('span', { name: 'MuiTypography', slot: 'Root', overridesResolver: (props, styles) => { const { ownerState } = props; return [styles.root, ownerState.variant && styles[ownerState.variant], ownerState.align !== 'inherit' && styles[`align${(0, _capitalize.default)(ownerState.align)}`], ownerState.noWrap && styles.noWrap, ownerState.gutterBottom && styles.gutterBottom, ownerState.paragraph && styles.paragraph]; } })((0, _memoTheme.default)(({ theme }) => ({ margin: 0, variants: [{ props: { variant: 'inherit' }, style: { // Some elements, like <button> on Chrome have default font that doesn't inherit, reset this. font: 'inherit', lineHeight: 'inherit', letterSpacing: 'inherit' } }, ...Object.entries(theme.typography).filter(([variant, value]) => variant !== 'inherit' && value && typeof value === 'object').map(([variant, value]) => ({ props: { variant }, style: value })), ...Object.entries(theme.palette).filter((0, _createSimplePaletteValueFilter.default)()).map(([color]) => ({ props: { color }, style: { color: (theme.vars || theme).palette[color].main } })), ...Object.entries(theme.palette?.text || {}).filter(([, value]) => typeof value === 'string').map(([color]) => ({ props: { color: `text${(0, _capitalize.default)(color)}` }, style: { color: (theme.vars || theme).palette.text[color] } })), { props: ({ ownerState }) => ownerState.align !== 'inherit', style: { textAlign: 'var(--Typography-textAlign)' } }, { props: ({ ownerState }) => ownerState.noWrap, style: { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' } }, { props: ({ ownerState }) => ownerState.gutterBottom, style: { marginBottom: '0.35em' } }, { props: ({ ownerState }) => ownerState.paragraph, style: { marginBottom: 16 } }] }))); const defaultVariantMapping = { h1: 'h1', h2: 'h2', h3: 'h3', h4: 'h4', h5: 'h5', h6: 'h6', subtitle1: 'h6', subtitle2: 'h6', body1: 'p', body2: 'p', inherit: 'p' }; const Typography = /*#__PURE__*/React.forwardRef(function Typography(inProps, ref) { const { color, ...themeProps } = (0, _DefaultPropsProvider.useDefaultProps)({ props: inProps, name: 'MuiTypography' }); const isSxColor = !v6Colors[color]; // TODO: Remove `extendSxProp` in v7 const props = extendSxProp({ ...themeProps, ...(isSxColor && { color }) }); const { align = 'inherit', className, component, gutterBottom = false, noWrap = false, paragraph = false, variant = 'body1', variantMapping = defaultVariantMapping, ...other } = props; const ownerState = { ...props, align, color, className, component, gutterBottom, noWrap, paragraph, variant, variantMapping }; const Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span'; const classes = useUtilityClasses(ownerState); return /*#__PURE__*/(0, _jsxRuntime.jsx)(TypographyRoot, { as: Component, ref: ref, className: (0, _clsx.default)(classes.root, className), ...other, ownerState: ownerState, style: { ...(align !== 'inherit' && { '--Typography-textAlign': align }), ...other.style } }); }); process.env.NODE_ENV !== "production" ? Typography.propTypes /* remove-proptypes */ = { // ┌────────────────────────────── Warning ──────────────────────────────┐ // │ These PropTypes are generated from the TypeScript type definitions. │ // │ To update them, edit the d.ts file and run `pnpm proptypes`. │ // └─────────────────────────────────────────────────────────────────────┘ /** * Set the text-align on the component. * @default 'inherit' */ align: _propTypes.default.oneOf(['center', 'inherit', 'justify', 'left', 'right']), /** * The content of the component. */ children: _propTypes.default.node, /** * Override or extend the styles applied to the component. */ classes: _propTypes.default.object, /** * @ignore */ className: _propTypes.default.string, /** * The color of the component. * It supports both default and custom theme colors, which can be added as shown in the * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors). */ color: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.oneOf(['primary', 'secondary', 'success', 'error', 'info', 'warning', 'textPrimary', 'textSecondary', 'textDisabled']), _propTypes.default.string]), /** * The component used for the root node. * Either a string to use a HTML element or a component. */ component: _propTypes.default.elementType, /** * If `true`, the text will have a bottom margin. * @default false */ gutterBottom: _propTypes.default.bool, /** * If `true`, the text will not wrap, but instead will truncate with a text overflow ellipsis. * * Note that text overflow can only happen with block or inline-block level elements * (the element needs to have a width in order to overflow). * @default false */ noWrap: _propTypes.default.bool, /** * If `true`, the element will be a paragraph element. * @default false * @deprecated Use the `component` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details. */ paragraph: _propTypes.default.bool, /** * @ignore */ style: _propTypes.default.object, /** * The system prop that allows defining system overrides as well as additional CSS styles. */ 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]), /** * Applies the theme typography styles. * @default 'body1' */ variant: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), _propTypes.default.string]), /** * The component maps the variant prop to a range of different HTML element types. * For instance, subtitle1 to `<h6>`. * If you wish to change that mapping, you can provide your own. * Alternatively, you can use the `component` prop. * @default { * h1: 'h1', * h2: 'h2', * h3: 'h3', * h4: 'h4', * h5: 'h5', * h6: 'h6', * subtitle1: 'h6', * subtitle2: 'h6', * body1: 'p', * body2: 'p', * inherit: 'p', * } */ variantMapping: _propTypes.default /* @typescript-to-proptypes-ignore */.object } : void 0; var _default = exports.default = Typography;