Heading

Heading is intended to be used to define the title of the page. They are displayed as h1 by default. Accessibility requires having just one h1 tag on the page. Keep that in mind during the implementation.

Import

import { Heading } from '@contentful/f36-components';
// or
import { Heading } from '@contentful/f36-typography';

Examples

Margins

Forma 36 typography components provide a way to set their own margins. By default Heading component has a margin bottom of 1rem (16px). You can override the default margin bottom by specifying it explicitly on the component level by marginBottom="none" or any other value from our spacing options

as property

For some cases, you might have to use Heading in a different context than the page title. For that we provide you with as property, to allow you to set the tag of the component to another tag than h1

Truncated text

Sometimes you might have to truncate the text in the Heading component, so we provide the prop especially for that. Under the hood, what it does is add overflow: hidden and set text-overflow to ellipsis. Have a look at the example below:

Composition

Props (API reference)

Open in Storybook

Name

Type

Default

as
HTML Tag or React Component (e.g. div, span, etc)

children
ReactNode

className
string

CSS class to be appended to the root element

css
string
number
false
true
ComponentSelector
Keyframes
SerializedStyles
ArrayInterpolation<undefined>
ObjectInterpolation<undefined>
(theme: any) => Interpolation<undefined>

fontColor
"blue100"
"blue200"
"blue300"
"blue400"
"blue500"
"blue600"
"blue700"
"blue800"
"blue900"
"gray100"
"gray200"
"gray300"
"gray400"
"gray500"
"gray600"
"gray700"
"gray800"
"gray900"
"green100"
"green200"
"green300"
"green400"
"green500"
"green600"
"green700"
"green800"
"green900"
"orange100"
"orange200"
"orange300"
"orange400"
"orange500"
"orange600"
"orange700"
"orange800"
"orange900"
"purple100"
"purple200"
"purple300"
"purple400"
"purple500"
"purple600"
"purple700"
"purple800"
"purple900"
"red100"
"red200"
"red300"
"red400"
"red500"
"red600"
"red700"
"red800"
"red900"
"colorPrimary"
"colorPositive"
"colorNegative"
"colorWarning"
"colorWhite"
"yellow100"
"yellow200"
"yellow300"
"yellow400"
"yellow500"
"yellow600"
"yellow700"
"yellow800"
"yellow900"

fontSize
"fontSize4Xl"
"fontSize3Xl"
"fontSize2Xl"
"fontSizeXl"
"fontSizeXlHigh"
"fontSizeL"
"fontSizeLHigh"
"fontSizeM"
"fontSizeMHigh"
"fontSizeS"
"fontSizeSHigh"

fontStack
"fontStackPrimary"
"fontStackMonospace"

fontWeight
"fontWeightNormal"
"fontWeightMedium"
"fontWeightDemiBold"

isTruncated
false
true

isWordBreak
false
true

letterSpacing
"letterSpacingDefault"
"letterSpacingWide"

lineHeight
"lineHeightDefault"
"lineHeightCondensed"
"lineHeight4Xl"
"lineHeight3Xl"
"lineHeight2Xl"
"lineHeightXl"
"lineHeightXlHigh"
"lineHeightL"
"lineHeightLHigh"
"lineHeightM"
"lineHeightMHigh"
"lineHeightS"
"lineHeightSHigh"

margin
"none"
"spacing2Xs"
"spacingXs"
"spacingS"
"spacingM"
"spacingL"
"spacingXl"
"spacing2Xl"
"spacing3Xl"
"spacing4Xl"

sets margin to one of the corresponding spacing tokens

marginBottom
"none"
"spacing2Xs"
"spacingXs"
"spacingS"
"spacingM"
"spacingL"
"spacingXl"
"spacing2Xl"
"spacing3Xl"
"spacing4Xl"

sets margin-bottom to one of the corresponding spacing tokens

marginLeft
"none"
"spacing2Xs"
"spacingXs"
"spacingS"
"spacingM"
"spacingL"
"spacingXl"
"spacing2Xl"
"spacing3Xl"
"spacing4Xl"

sets margin-left to one of the corresponding spacing tokens

marginRight
"none"
"spacing2Xs"
"spacingXs"
"spacingS"
"spacingM"
"spacingL"
"spacingXl"
"spacing2Xl"
"spacing3Xl"
"spacing4Xl"

sets margin-right to one of the corresponding spacing tokens

marginTop
"none"
"spacing2Xs"
"spacingXs"
"spacingS"
"spacingM"
"spacingL"
"spacingXl"
"spacing2Xl"
"spacing3Xl"
"spacing4Xl"

sets margin-top to one of the corresponding spacing tokens

testId
string

A [data-test-id] attribute used for testing purposes

Density support

This component supports multiple densities thanks to the useDensity hook and automatically adjusts its styling for each density (when wrapped with the DensityProvider).