Callout
Callouts are an excerpt of text used to draw attention to important or interesting information. They should not be confused with Page alerts.
import { ... } from '@ag.ds-next/react/callout';
<Callout title="Callout heading"> <Text as="p">Description of the callout.</Text> </Callout>
Use callout to draw a user’s attention to important snippets of static information.
Do
- use sparingly as they are intrusive
- use to help users quickly scan to find essential information in a long text page
- use to reiterate important content
- use for quotes in long-form content
- use different tones and variants on the same page to convey information hierarchy
- use to format content not included in the main text such as support and contact details, checklists, definitions and ‘Did you know?’ content.
Don’t
- embed form inputs in Callouts
- use in conditionally revealed checkbox or radio groups
- make them the focus of content; they are a supporting tool
- use for errors and alerts – use a Page alert or Section alert instead
- use for primary content, as it may be missed
- mix colour palettes.
Tones
Callouts can be used to convey different tones of information. The tone of a callout is conveyed through the background colour and icon.
Neutral Callout
The default tone of a callout is neutral
.
<Callout title="Callout heading"> <Text as="p">Description of the callout.</Text> </Callout>
By default, neutral Callouts make use of the shade
background token, which must be paired with the normal body
background.
If the neutral Callout component is placed on a page with bodyAlt
background, set the onBodyAlt
prop to true
. This ensures the correct shade background token is used by the component.
<Stack background="bodyAlt" padding={2} gap={1}> <Text>An area with `bodyAlt` background</Text> <Callout title="Callout heading" tone="neutral" onBodyAlt> <Text as="p">Description of the callout.</Text> </Callout> </Stack>
Information Callout
Use an info
tone to highlight information which is important for users.
<Callout title="Callout heading" tone="info"> <Text as="p">Description of the callout.</Text> </Callout>
Compact
Compact version of the callout can be used when there is limited space, such as inside of an Accordion.
<Accordion> <AccordionItem title="Accordion 1"> <AccordionItemContent> <Text as="p">Here is the accordion content.</Text> </AccordionItemContent> </AccordionItem> <AccordionItem isInitiallyOpen title="Accordion 2"> <AccordionItemContent> <Stack gap="1"> <Text as="p"> Here is the conditionally revealed content with callout. </Text> <TextLink href="#">Light link</TextLink> <Callout title="Callout heading" tone="info" variant="compact"> <Text as="p">Description of the callout.</Text> </Callout> </Stack> </AccordionItemContent> </AccordionItem> <AccordionItem title="Accordion 3"> <AccordionItemContent> <Text as="p">Here is the accordion content.</Text> </AccordionItemContent> </AccordionItem> <AccordionItem title="Accordion 4"> <AccordionItemContent> <Text as="p">Here is the accordion content.</Text> </AccordionItemContent> </AccordionItem> </Accordion>
Feature
The feature variant of the callout can be used to draw even more emphasis to the content.
<Callout title="Feature Callout heading" tone="info" variant="feature"> <Text as="p">Description of the callout.</Text> </Callout>
Colour
AgDS foreground components respond to the background colour of their parent container. When placed on a dark palette background, the dark palette variant of the component is displayed. When placed on a light palette background the light palette variant is displayed.
This logic ensures sufficient contrast between foreground and background elements is maintained to meet WCAG 2.1AA, 4.5:1 contrast ratio for text (WCAG 1.4.3) and 3:1 for graphic elements that convey information (WCAG 1.4.11).
<Fragment> <Stack as="ul" css={{ listStyle: 'none' }} gap="1" paddingBottom="1"> <Box as="li"> <Callout title="Callout light 1"> <Text as="p">Description of the callout.</Text> </Callout> </Box> <Box as="li"> <Callout title="Callout light 2" tone="info"> <Text as="p">Description of the callout.</Text> </Callout> </Box> </Stack> <Stack as="ul" css={{ listStyle: 'none' }} gap="1" palette="dark"> <Box as="li"> <Callout title="Callout dark 1"> <Text as="p">Description of the callout.</Text> </Callout> </Box> <Box as="li"> <Callout title="Callout dark 2" tone="info"> <Text as="p">Description of the callout.</Text> </Callout> </Box> </Stack> </Fragment>
Customising the title
By default, Callout
renders its title as an h2
. However, should the need arise, you can change the title’s semantic tag to an h3
, for example, by passing the CalloutTitle
component to the title
prop. For information on maintaining proper heading levels, refer to Structuring headings and labels.
import { CalloutTitle } from '@ag.ds-next/react/callout';
<Callout tone="info" variant="feature" title={<CalloutTitle as="h3">Callout heading</CalloutTitle>}> <Text as="p">Description of the callout.</Text></Callout>;
Related components
- Global alert – Global alerts display prominent service or system wide messages at the top of the screen.
- Page alert – Page alerts are colour-coded, non-disruptive notifications that provide Success, Error, Warning or Information messages at relevant times during the user journey. They should not be confused with Callouts.
Related patterns
- Messaging – Messaging conveys contextual information to the user, provides information in relation to a service or interaction, and provides feedback in response to their actions or the current system status.