Skip to main content

Typography

Typography helps establish hierarchy and communicate important information to users.

Import

import { Typography } from '@md3-react/core';

Basic Usage

Live Editor
<Demo>
  <Typography>Default body text</Typography>
</Demo>
Result
Loading...

Scale

MD3 defines a comprehensive type scale:

Display

Live Editor
<Demo>
  <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>
    <Typography variant="displayLarge">Display Large</Typography>
    <Typography variant="displayMedium">Display Medium</Typography>
    <Typography variant="displaySmall">Display Small</Typography>
  </div>
</Demo>
Result
Loading...

Headline

Live Editor
<Demo>
  <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>
    <Typography variant="headlineLarge">Headline Large</Typography>
    <Typography variant="headlineMedium">Headline Medium</Typography>
    <Typography variant="headlineSmall">Headline Small</Typography>
  </div>
</Demo>
Result
Loading...

Title

Live Editor
<Demo>
  <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>
    <Typography variant="titleLarge">Title Large</Typography>
    <Typography variant="titleMedium">Title Medium</Typography>
    <Typography variant="titleSmall">Title Small</Typography>
  </div>
</Demo>
Result
Loading...

Body

Live Editor
<Demo>
  <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>
    <Typography variant="bodyLarge">Body Large - The quick brown fox jumps over the lazy dog.</Typography>
    <Typography variant="bodyMedium">Body Medium - The quick brown fox jumps over the lazy dog.</Typography>
    <Typography variant="bodySmall">Body Small - The quick brown fox jumps over the lazy dog.</Typography>
  </div>
</Demo>
Result
Loading...

Label

Live Editor
<Demo>
  <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>
    <Typography variant="labelLarge">Label Large</Typography>
    <Typography variant="labelMedium">Label Medium</Typography>
    <Typography variant="labelSmall">Label Small</Typography>
  </div>
</Demo>
Result
Loading...

Semantic Elements

Use the as prop to render different HTML elements:

Live Editor
<Demo>
  <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>
    <Typography variant="headlineLarge" as="h1">This is an H1</Typography>
    <Typography variant="headlineMedium" as="h2">This is an H2</Typography>
    <Typography variant="bodyLarge" as="p">This is a paragraph.</Typography>
    <Typography variant="labelMedium" as="span">This is a span.</Typography>
  </div>
</Demo>
Result
Loading...

Props

PropTypeDefaultDescription
variantTypographyVariant'bodyMedium'Typography style variant
asElementTypevariesHTML element to render
childrenReactNode-Text content

Variants Reference

VariantFont SizeLine HeightFont Weight
displayLarge57px64px400
displayMedium45px52px400
displaySmall36px44px400
headlineLarge32px40px400
headlineMedium28px36px400
headlineSmall24px32px400
titleLarge22px28px400
titleMedium16px24px500
titleSmall14px20px500
bodyLarge16px24px400
bodyMedium14px20px400
bodySmall12px16px400
labelLarge14px20px500
labelMedium12px16px500
labelSmall11px16px500