localeCode: en-US order: 15 category: Basic title: Typography subTitle: Typography icon: doc-typography
import { Typography } from '@douyinfe/semi-ui';
Use heading
to set different levels of headint title.
import React from 'react';
import { Typography } from '@douyinfe/semi-ui';
function Demo() {
const { Title } = Typography;
return (
<div>
<Title style={{margin: '8px 0'}} >h1. Semi Design</Title>
<Title with={2} style={{margin: '8px 0'}} >h2. Semi Design</Title>
<Title heading={3} style={{margin: '8px 0'}} >h3. Semi Design</Title>
<Title heading={4} style={{margin: '8px 0'}} >h4. Semi Design</Title>
<Title heading={5} style={{margin: '8px 0'}} >h5. Semi Design</Title>
<Title heading={6} style={{margin: '8px 0'}} >h6. Semi Design</Title>
</div>
);
}
Text component has different built-in styles. You could also pass icon
to use the build-in styles for icon. Different from passing icon to children, using icon
for link will have no underline in compliance with Semi Design principles.
import React from 'react';
import { Typography } from '@douyinfe/semi-ui';
function Demo() {
const { Text } = Typography;
return (
<div>
<Text>Text</Text>
<br />
<br />
<Text type="secondary">Secondary</Text>
<br />
<br />
<Text type="tertiary">{'Tertiary v>=1.2.0'}</Text>
<br />
<br />
<Text type="quaternary">{'Quaternary v>=1.2.0'}</Text>
<br />
<br />
<Text type="warning">Warning</Text>
<br />
<br />
<Text type="success">{'Success v>=1.7.0'}</Text>
<br />
<br />
<Text type="danger">Danger</Text>
<br />
<br />
<Text disabled>Disabled</Text>
<br />
<br />
<Text mark>Default Mark</Text>
<br />
<br />
<Text code>Example Code</Text>
<br />
<br />
<Text underline>Underline</Text>
<br />
<br />
<Text delete>Deleted</Text>
<br />
<br />
<Text strong>Strong</Text>
</div>
);
}
You could pass object to link
, which will be mounted on <a>
.
import React from 'react';
import { Typography } from '@douyinfe/semi-ui';
import { IconLink } from '@douyinfe/semi-icons';
function Demo() {
const { Text } = Typography;
return (
<div>
<Text link={{ href: 'https://semi.design/' }}>Link</Text>
<br />
<br />
<Text link={{ href: 'https://semi.design/' }}>Open Website</Text>
<br />
<br />
<Text link icon={<IconLink />} underline>Link</Text>
</div>
);
}
Paragraph component has two spacings. You could setspacing='extended'
for a looser spacing.
import React from 'react';
import { Typography } from '@douyinfe/semi-ui';
function Demo() {
const { Paragraph, Title } = Typography;
return (
<div>
<Title heading={5}>Default Spacing</Title>
<Paragraph>
{`Life's but a walking shadow, a poor player, that struts and frets his hour upon the stage, and then is heard no more; it is a tale told by an idiot, full of sound and fury, signifying nothing.`}
</Paragraph>
<br />
<Title heading={5}>Extended Spacing</Title>
<Paragraph spacing="extended">
{`Life's but a walking shadow, a poor player, that struts and frets his hour upon the stage, and then is heard no more; it is a tale told by an idiot, full of sound and fury, signifying nothing.`}
</Paragraph>
</div>
);
}
Paragraph and Text component support two sizes, small
(12px) and normal
(14px). By default it is set to normal
。
import React from 'react';
import { Typography } from '@douyinfe/semi-ui';
function Demo() {
const { Paragraph, Text } = Typography;
return (
<div>
<Text>Normal</Text>
<Paragraph spacing="extended">
{`Life's but a walking shadow, a poor player, that struts and frets his hour upon the stage, and then is heard no more; it is a tale told by an idiot, full of sound and fury, signifying nothing.`}
</Paragraph>
<br />
<Text size='small'>Small</Text>
<Paragraph size='small'>
{`Life's but a walking shadow, a poor player, that struts and frets his hour upon the stage, and then is heard no more; it is a tale told by an idiot, full of sound and fury, signifying nothing.`}
</Paragraph>
</div>
);
}
Copyable text.
import React from 'react';
import { Typography, TextArea } from '@douyinfe/semi-ui';
function Demo() {
const { Paragraph, Text } = Typography;
return (
<div>
<Paragraph copyable>Click the right icon to copy text.</Paragraph>
<Paragraph copyable={{ content: 'Hello, Semi Design!' }}>Click to copy text.</Paragraph>
<Paragraph copyable={{ onCopy: () => Toast.success({ content: 'Successfully copied.'}) }}>Click the right icon to copy.</Paragraph>
<br/>
<Text type="secondary">Paste here: </Text>
<br/>
<TextArea autosize style={{width: 320, marginTop: 4}} rows={3} />
</div>
);
}
Show ellipsis if text is overflowed. Refer to Ellipsis Config for detailed configuration.
At this moment, only pure text truncation is supported.
import React from 'react';
import { Typography } from '@douyinfe/semi-ui';
function Demo() {
const { Paragraph, Text, Title } = Typography;
return (
<div>
<Title heading={5} ellipsis={{ showTooltip: true }} style={{ width: 250 }}>
This is a supercalifragilisticexpialidocious title
</Title>
<br />
<Text
ellipsis={{
showTooltip:{
opts: { content: 'This is a supercalifragilisticexpialidocious tooltip' }
}
}}
style={{ width: 150 }}
>
Custom tooltip text if you need
</Text>
<br />
<Text link ellipsis={{ showTooltip: true, pos: 'middle' }} style={{ width: 150 }}>
This is a supercalifragilisticexpialidocious link
</Text>
<br/>
<Paragraph ellipsis={{ suffix: '-Macbeth' }} style={{ width: 300 }}>
{`With suffix: Life's but a walking shadow, a poor player, that struts and frets his hour upon the stage, and then is heard no more; it is a tale told by an idiot, full of sound and fury, signifying nothing.`}
</Paragraph>
<br/>
<Paragraph ellipsis={{ rows: 3 }} style={{ width: 300 }}>
{`Multi-line ellipsis: Life's but a walking shadow, a poor player, that struts and frets his hour upon the stage, and then is heard no more; it is a tale told by an idiot, full of sound and fury, signifying nothing.`}
</Paragraph>
<br/>
<Paragraph ellipsis={{ rows: 3, showTooltip: {type: 'popover', opts: {style: {width: 300}}} }} style={{ width: 300 }}>
{`With Popover: Life's but a walking shadow, a poor player, that struts and frets his hour upon the stage, and then is heard no more; it is a tale told by an idiot, full of sound and fury, signifying nothing.`}
</Paragraph>
<br/>
<Paragraph ellipsis={{ rows: 3, expandable: true, collapsible: true, collapseText: 'Show Less', onExpand: (bool, e) => console.log(bool, e) }} style={{ width: 300 }}>
{`Expandable and collapsible: Life's but a walking shadow, a poor player, that struts and frets his hour upon the stage, and then is heard no more; it is a tale told by an idiot, full of sound and fury, signifying nothing.`}
</Paragraph>
</div>
);
}
<div>When the tooltip does not wrap in the pop-up tooltip when the long text occurs, please set it manually <a href="https://developer.mozilla.org/zh-CN/docs/Web/CSS/word-break" target="_blank" rel="noopener noreferrer">word-break</a>. The reason why we did not have built-in content is that different language content (pure English, Chinese, mixed Chinese and English) have different requirements for word-break, so the component layer does not make this preset.</div>
import React from 'react';
import { Typography } from '@douyinfe/semi-ui';
function Demo() {
const { Text } = Typography;
return (
<div>
<Text
ellipsis={{
showTooltip:{
opts: { content: 'Insfrastructure|Data-inf|bytegraph.cheetah.user_relation' }
}
}}
style={{ width: 150 }}
>
Customized configuration can be made on demand when long text is truncated
</Text>
<br />
<Text
ellipsis={{
showTooltip:{
opts: { content: 'Insfrastructure|Data-inf|bytegraph.cheetah.user_relation', className: 'components-typography-demo' }
}
}}
style={{ width: 150 }}
>
Customized configuration can be made on demand when long text is truncated
</Text>
<br />
<Text
ellipsis={{
showTooltip:{
opts: { content: 'Insfrastructure|Data-inf|bytegraph.cheetah.user_relation', style: { wordBreak: 'break-all' } }
}
}}
style={{ width: 150 }}
>
Customized configuration can be made on demand when long text is truncated
</Text>
</div>
);
}
// config word-break
.components-typography-demo {
word-break: break-word;
// or
word-break: break-all;
}
Properties | Instructions | type | Default | version |
---|---|---|---|---|
copyable | Toggle whether to be copyable | boolean | object:Copyable Config | false | 0.27.0 |
code | wrap with code element |
boolean | - | |
component | Custom rendering html element | html element | span | |
delete | Deleted style | boolean | false | 0.27.0 |
disabled | Disabled style | boolean | false | 0.27.0 |
ellipsis | Display ellipsis when text overflows | boolean|object:Ellipsis Config | false | 0.34.0 |
icon | Prefix icon. | ReactNode | - | 0.27.0 |
link | Toggle whether to display as a link. When passing object, the attributes will be transparently passed to the a tag | boolean|object | false | 0.27.0 |
mark | Marked style | boolean | false | 0.27.0 |
size | Size, one of normal ,small |
string | normal |
0.27.0 |
strong | Bold style | boolean | false | 0.27.0 |
type | Type, one of primary , secondary , warning , danger , tertiary (v>=1.2.0) , quaternary (v>=1.2.0), success (v>=1.7.0) |
string | primary |
0.27.0 |
underline | Underlined style | boolean | false | 0.27.0 |
Properties | Instructions | type | Default | version |
---|---|---|---|---|
copyable | Toggle whether to be copyable | boolean | object:Copyable Config | false | 0.27.0 |
component | Custom rendering html element. The default is determined by heading prop | html element | h1~h6 | |
delete | Deleted style | boolean | false | 0.27.0 |
disabled | Disabled style | boolean | false | 0.27.0 |
ellipsis | Display ellipsis when text overflows | boolean|object:Ellipsis Config | false | 0.34.0 |
heading | Heading level, one of 1, 2, 3,4,5,6 | number | 1 | 0.27.0 |
link | Toggle whether to display as a link. When passing object, the attributes will be transparently passed to the a tag | boolean|object | false | 0.27.0 |
mark | Marked style | boolean | false | 0.27.0 |
type | Type, one of primary , secondary , warning , danger , tertiary (v>=1.2.0), quaternary (v>=1.2.0), success (v>=1.7.0) |
string | primary |
0.27.0 |
underline | Underlined style | boolean | false | 0.27.0 |
Properties | Instructions | type | Default | version |
---|---|---|---|---|
copyable | Toggle whether to be copyable | boolean | object:Copyable Config | false | 0.27.0 |
component | Custom rendering html element | html element | p | |
delete | Deleted style | boolean | false | 0.27.0 |
disabled | Disabled style | boolean | false | 0.27.0 |
ellipsis | Display ellipsis when text overflows | boolean|object:Ellipsis Config | false | 0.34.0 |
link | Toggle whether to display as a link. When passing object, the attributes will be transparently passed to the a tag | boolean|object | false | 0.27.0 |
mark | Marked style | boolean | false | 0.27.0 |
size | Size, one of normal ,small |
string | normal |
0.27.0 |
spacing | paragraph spacing, one of normal , extended |
string | normal |
0.27.0 |
strong | Bold style | boolean | false | 0.27.0 |
type | Type, one of primary , secondary , warning , danger , tertiary (v>=1.2.0), quaternary (v>=1.2.0), success (v>=1.7.0) |
string | primary |
0.27.0 |
underline | Underlined style | boolean | false | 0.27.0 |
v >= 0.34.0
Properties | Instructions | type | Default |
---|---|---|---|
collapseText | Displayed text to collapse | string | Collapse |
collapsible | Toggle whether text is collapsible | boolean | false |
expandText | Displayed text to expand | string | Expand |
expandable | Toggle whether text is expandable | boolean | false |
pos | Position to start ellipsis, one of end , middle |
string | end |
rows | Number of rows that should not be truncated | number | 1 |
showTooltip | Toggle whether to show tooltip, if passed in as object: type,type of component to show tooltip, one of Tooltip , Popover ; opts, properties that will be passed directly to the component |
boolean|{type: 'tooltip'|'popover', opts: object} | false |
suffix | Text suffix that will not be truncated | string | - |
onExpand | Callback when expand or collapse | function(expanded: bool, Event: e) | - |
Properties | Instructions | Type | Default | Version |
---|---|---|---|---|
content | Copied content | string | - | 0.27.0 |
copyTip | Tooltip content when hovering over icon | React.node | - | 1.0.0 |
successTip | Successful tip content | React.node | - | 0.33.0 |
onCopy | Callback for copy action | Function(e:Event, content:string, res:boolean) | - | 0.27.0 |