@spark-web/text
Version:
--- title: Text storybookPath: typography-text--default isExperimentalPackage: false ---
146 lines (120 loc) • 3.33 kB
Markdown
---
title: Text
storybookPath: typography-text--default
isExperimentalPackage: false
---
Constrained, purposeful text styles as a component.
## Examples
```jsx live
const textSizes = ['large', 'standard', 'small', 'xsmall'];
return (
<Columns collapseBelow="tablet" gap="xlarge">
<Stack gap="large">
{textSizes.map(textSize => (
<Text key={textSize} size={textSize} weight="regular">
Text {textSize} regular
</Text>
))}
</Stack>
<Stack gap="large">
{textSizes.map(textSize => (
<Text key={textSize} size={textSize} weight="semibold">
Text {textSize} regular
</Text>
))}
</Stack>
</Columns>
);
```
### Align
Text can be aligned with the `align` prop.
```jsx live
<Stack gap="large" dividers>
<Text align="left">Left (default)</Text>
<Text align="center">Center</Text>
<Text align="right">Right</Text>
</Stack>
```
### Overflow strategy
Use the `overflowStrategy` prop to manage how `Text` behaves with regard to
overflow.
```jsx live
const overflowStrategies = ['truncate', 'nowrap', 'breakword'];
return (
<Stack gap="large" style={{ width: 200 }}>
<Stack gap="small">
<Text weight="semibold">Default</Text>
<Text>The quick brown fox jumps over the lazy dog.</Text>
</Stack>
{overflowStrategies.map(overflowStrategy => (
<Stack key={overflowStrategy} gap="small">
<Text weight="semibold">{overflowStrategy}</Text>
<Text overflowStrategy={overflowStrategy}>
The quick brown fox jumps over the lazy dog.
</Text>
</Stack>
))}
</Stack>
);
```
### Tone
The foreground colour of text can be set by applying a `tone`. In addition to
the foundation tones, “muted” provides a way to de-emphasise text.
```jsx live
const textTones = [
'neutral', // Default
'accent',
'caution',
'critical',
'disabled',
'fieldAccent',
'info',
'link',
'muted',
'placeholder',
'positive',
'primary',
'primaryActive',
'primaryHover',
'secondary',
'secondaryActive',
'secondaryHover',
];
return (
<Columns collapseBelow="tablet" gap="large" template={[1, 1]}>
{textTones.map(tone => (
<Text key={tone} tone={tone}>
{tone}
</Text>
))}
</Columns>
);
```
### Weight
Text is available in two weight: `regular` and `semibold`.
```jsx live
<Inline gap="small">
<Text weight="regular">Regular</Text>
<Text weight="semibold">Semibold</Text>
</Inline>
```
### Contrast
To ensure text has sufficient contrast, when on a dark background the foreground
tones “neutral” and “muted” will be inverted.
```jsx live
<Inline gap="large">
<Box background="neutral" padding="small" borderRadius="small">
<Text>neutral</Text>
</Box>
<Box background="neutral" padding="small" borderRadius="small">
<Text tone="muted">muted</Text>
</Box>
</Inline>
```
## Props
<PropsTable displayName="Text" />
Extra props are also passed into the underlying [`Box`](/package/box) component.
[brighte-theme]:
https://github.com/brighte-labs/spark-web/blob/e503bea4f7668d187ec7a78f99c5ed374417588b/packages/theme/src/makeTheme.ts#L158
[data-attribute-map]:
https://github.com/brighte-labs/spark-web/blob/e7f6f4285b4cfd876312cc89fbdd094039aa239a/packages/utils/src/internal/buildDataAttributes.ts#L1