Component API
Paragraph
The Paragraph component is used to present paragraph content in a clear and consistent manner, by limiting the number to sizes and styles with a UI.
Basic Usage
import React from 'react';import { Paragraph } from 'react-magma-dom';export function Example() {return <Paragraph>Basic paragraph component.</Paragraph>;}
Sizes
There are four visual styles for the paragraph: bodyLarge, bodyMedium, bodySmall, and bodyXSmall, which determine the paragraph's relative size (including font-size, line-height, margins, font-weight, etc).
The default visualStyle is bodyMedium.
In addition to the paragraph visual styles, the visualStyle prop can also accept the values for the different heading visual styles: headingXLarge, headingLarge, headingMedium, headingSmall, headingXSmall and heading2XSmall.
These visual styles are also used with the Heading component. The underlying HTML will still render as a p element.
import React from 'react';import { Paragraph, TypographyVisualStyle } from 'react-magma-dom';export function Example() {return (<><Paragraph visualStyle={TypographyVisualStyle.headingXLarge}>Heading x-large styles.</Paragraph><Paragraph visualStyle={TypographyVisualStyle.headingLarge}>Heading large styles.</Paragraph><Paragraph visualStyle={TypographyVisualStyle.headingMedium}>Heading medium styles.</Paragraph><Paragraph visualStyle={TypographyVisualStyle.headingSmall}>Heading small styles.</Paragraph><Paragraph visualStyle={TypographyVisualStyle.headingXSmall}>Heading x-small styles.</Paragraph><Paragraph visualStyle={TypographyVisualStyle.heading2XSmall}>Heading 2x-small styles.</Paragraph><Paragraph visualStyle={TypographyVisualStyle.bodyLarge}>Body large styles. Lorem ipsum dolar sit amet.</Paragraph><Paragraph visualStyle={TypographyVisualStyle.bodyMedium}>Body medium (default) styles. Lorem ipsum dolar sit amet.</Paragraph><Paragraph visualStyle={TypographyVisualStyle.bodySmall}>Body small styles. Lorem ipsum dolar sit amet.</Paragraph><Paragraph visualStyle={TypographyVisualStyle.bodyXSmall}>Body x-small styles. Lorem ipsum dolar sit amet.</Paragraph></>);}
Context Variant
The contextVariant prop can be used to set additional styles on a component. The default contextVariant is default.
The expressive context variant can be used in marketing contexts, which may require more variety than the default styles.
The narrative context variant can be used for content-heavy contexts, such as a blog-post or an e-reader.
import React from 'react';import {Paragraph,TypographyContextVariant,TypographyVisualStyle,} from 'react-magma-dom';export function Example() {return (<><ParagraphcontextVariant={TypographyContextVariant.expressive}visualStyle={TypographyVisualStyle.bodyLarge}>Body large. Lorem ipsum dolar sit amet.</Paragraph><ParagraphcontextVariant={TypographyContextVariant.expressive}visualStyle={TypographyVisualStyle.bodyMedium}>Body medium (default). Lorem ipsum dolar sit amet.</Paragraph><ParagraphcontextVariant={TypographyContextVariant.expressive}visualStyle={TypographyVisualStyle.bodySmall}>Body small. Lorem ipsum dolar sit amet.</Paragraph><ParagraphcontextVariant={TypographyContextVariant.expressive}visualStyle={TypographyVisualStyle.bodyXSmall}>Body x-small. Lorem ipsum dolar sit amet.</Paragraph><ParagraphcontextVariant={TypographyContextVariant.narrative}visualStyle={TypographyVisualStyle.bodyLarge}>Body large. Lorem ipsum dolar sit amet.</Paragraph><ParagraphcontextVariant={TypographyContextVariant.narrative}visualStyle={TypographyVisualStyle.bodyMedium}>Body medium (default). Lorem ipsum dolar sit amet.</Paragraph><ParagraphcontextVariant={TypographyContextVariant.narrative}visualStyle={TypographyVisualStyle.bodySmall}>Body small. Lorem ipsum dolar sit amet.</Paragraph><ParagraphcontextVariant={TypographyContextVariant.narrative}visualStyle={TypographyVisualStyle.bodyXSmall}>Body x-small. Lorem ipsum dolar sit amet.</Paragraph></>);}
Color
The color prop can be used to change the color of the paragraph to convey additional meaning. It accepts the values: success, danger and subdued.
import React from 'react';import { Paragraph, TypographyColor } from 'react-magma-dom';export function Example() {return (<><Paragraph color={TypographyColor.success}>Success paragraph. Lorem ipsum dolar sit amet.</Paragraph><Paragraph color={TypographyColor.subdued}>Subdued paragraph. Lorem ipsum dolar sit amet.</Paragraph><Paragraph color={TypographyColor.danger}>Danger paragraph. Lorem ipsum dolar sit amet.</Paragraph></>);}
Inverse
The isInverse property is an optional boolean that changes the colors so the component can appear on a dark background.
import React from 'react';import { Card, CardBody, Paragraph, TypographyColor } from 'react-magma-dom';export function Example() {return (<Card isInverse><CardBody><Paragraph isInverse>Inverse paragraph. Lorem ipsum dolar sit amet.</Paragraph><Paragraph color={TypographyColor.success} isInverse>Success inverse paragraph. Lorem ipsum dolar sit amet.</Paragraph><Paragraph color={TypographyColor.subdued} isInverse>Subdued inverse paragraph. Lorem ipsum dolar sit amet.</Paragraph><Paragraph color={TypographyColor.danger} isInverse>Danger inverse paragraph. Lorem ipsum dolar sit amet.</Paragraph></CardBody></Card>);}
No Margins
By default, the Paragraph component includes margins on the top and bottom. When the noMargins prop is applied, the element will have a margin value of 0.
import React from 'react';import { Paragraph, TypographyVisualStyle } from 'react-magma-dom';export function Example() {return (<><Paragraph noMargins visualStyle={TypographyVisualStyle.bodyLarge}>Body large. Lorem ipsum dolar sit amet.</Paragraph><Paragraph noMargins visualStyle={TypographyVisualStyle.bodyMedium}>Body medium (default). Lorem ipsum dolar sit amet.</Paragraph><Paragraph noMargins visualStyle={TypographyVisualStyle.bodySmall}>Body small. Lorem ipsum dolar sit amet.</Paragraph><Paragraph noMargins visualStyle={TypographyVisualStyle.bodyXSmall}>Body x-small. Lorem ipsum dolar sit amet.</Paragraph></>);}
Paragraph Props
This component uses forwardRef. The ref is applied to the outer p element.
All of the global HTML attributes can be provided as props and will be applied to the wrapping p element that gets rendered.
= required prop
| Property | Type | Default | Description | 
|---|---|---|---|
| children Required | ReactNode | undefined | - | The content of the component | 
| color | enum, one of: TypographyColor.dangerTypographyColor.defaultTypographyColor.subduedTypographyColor.success | TypographyColor.default | The color of the component, helping to convey meaning or relative emphasis | 
| contextVariant | enum, one of: TypographyContextVariant.defaultTypographyContextVariant.expressiveTypographyContextVariant.narrative | TypographyContextVariant.default | Additional styles for typography based on the context of the content | 
| isInverse | boolean | false | If true, the component will have inverse styling to better appear on a dark background | 
| noMargins | boolean | false | If true, the component will not have the default top and bottom margin and instead will a margin value of 0 | 
| testId | string | - | Test ID attached to an internal element as `data-testid` for consumer testing | 
| visualStyle | enum, one of: TypographyVisualStyle.bodyLargeTypographyVisualStyle.bodyMediumTypographyVisualStyle.bodySmallTypographyVisualStyle.bodyXSmallTypographyVisualStyle.heading2XSmallTypographyVisualStyle.headingLargeTypographyVisualStyle.headingMediumTypographyVisualStyle.headingSmallTypographyVisualStyle.headingXLargeTypographyVisualStyle.headingXSmall | TypographyVisualStyle.bodyMedium | Applies visual styles including font-size, font-weight, line-height and margins |