Basic · Typography

Typography

The basic format of text, images, paragraphs, and numeric.

When to Use

  • To display the text content of articles, blogs, logs, etc.
  • To take basic operations such as copying and omitting text.

Demos

How to import

import { Typography } from '@fibrous/semi-ui-solid';

Title

Use heading to set different levels of headint title.

h1. Semi Design

h2. Semi Design

h3. Semi Design

h4. Semi Design

h5. Semi Design
h6. Semi Design
Code
import { Typography } from '@fibrous/semi-ui-solid';

export default function TypographyDemo() {
    const { Title } = Typography;
    return (
        <div>
            <Title style={{ margin: '8px 0' }}>h1. Semi Design</Title>
            <Title heading={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

Text component has different built-in styles.

You could also pass an icon element or an icon component to icon to use the built-in styles for icon. Different from putting the icon in children, using icon for link will have no underline in compliance with Semi Design Next principles.

Text

Secondary

Tertiary v>=1.2.0

Quaternary v>=1.2.0

Warning

Danger

Success v>=1.7.0

Disabled

Default Mark

Example Code

Underline

Deleted

Strong
Code
import { Typography } from '@fibrous/semi-ui-solid';

export default function TypographyDemo() {
    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="danger">Danger</Text>
            <br />
            <br />
            <Text type="success">{`Success v>=1.7.0`}</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>.

Paragraph

Paragraph component has two spacings. You could setspacing='extended' for a looser spacing.

默认行距

Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。


宽松行距

Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。

Code
import { Typography } from '@fibrous/semi-ui-solid';

export default function TypographyDemo() {
    const { Paragraph, Title } = Typography;
    return (
        <div>
            <Title heading={5}>默认行距</Title>
            <Paragraph>Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。</Paragraph>
            <br />
            <Title heading={5}>宽松行距</Title>
            <Paragraph spacing="extended">Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。</Paragraph>
        </div>
    );
}

Numeral

Based on Text component, added properties: rule, precision, truncate, parser, to provide the ability to handle Numeral in text separately.

precision allows you to set the number of decimal places to be retained, used to set precision
truncate The truncation of the number of decimal places, optionally ceil, floor, round, aligned with Math.ceil, Math.floor, Math.round
rule for setting the parsing rules

  • set to percentages to automatically convert numbers to percentages
  • set to bytes-decimal to automatically convert numbers to bytes, 1 KB is defined as 1000 bytes, (B, KB, MB, GB, TB, PB, EB, ZB, YB)
  • Set to bytes-binary automatically converts the number to the unit of display corresponding to bytes, 1 KiB is defined as equal to 1024 bytes, (B, KiB, MiB, GiB, TiB, PiB, EiB, ZiB, YiB)
  • When set to text, Automatic rounding of numbers only, based on the precision and truncate attributes
  • When set to numbers, non-numeric characters will be filtered and only numbers will be displayed
  • When set to exponential, numbers are automatically converted to scientific notation

Numeral renders a span by default. When the content has block elements such as p, use component="div" to render a block container.

点赞量:16.1 K

播放量:244.4K

好评率: 91.50%

这场比赛我的胜率是60%,输的概率是40%

已使用: 1.00 KB

未使用: 1.02 MB

已使用: 1.00 KiB

未使用: 1.81 TiB

Code
import { Typography } from '@fibrous/semi-ui-solid';

export default function TypographyDemo() {
    const { Numeral } = Typography;
    return (
        <div>
            <Numeral precision={1} component="p">
                点赞量:1.6111e1 K
            </Numeral>

            <p>
                播放量:
                <Numeral rule="numbers" precision={1}>
                    2.4444e2
                </Numeral>
                K
            </p>

            <Numeral rule="percentages" precision={2} component="p" style={{ 'margin-bottom': '12px' }}>
                好评率: 0.915
            </Numeral>

            <Numeral rule="percentages" style={{ 'margin-bottom': '12px' }}>
                这场比赛我的胜率是0.6,输的概率是0.4
            </Numeral>

            <Numeral rule="bytes-decimal" precision={2} truncate="floor" component="p">
                已使用: 1000
            </Numeral>
            <Numeral rule="bytes-decimal" precision={2} truncate="floor" component="p">
                未使用: {1024 * 1000}
            </Numeral>

            <Numeral rule="bytes-binary" precision={2} truncate="floor" component="p">
                已使用: 1024
            </Numeral>
            <Numeral rule="bytes-binary" precision={2} truncate="floor" component="p">
                未使用: {2e12}
            </Numeral>
        </div>
    );
}

Parsing rules can be customised via parser.

Semi Design 重视我们的用户,加入并助力我们不断完善

Stars:7,100+

Fork:560+

Downloads:5,000,000+

Contributors:100+


现已服务 100,000+ 用户,前往官网 >>
Code
import { For } from 'solid-js';
import { Typography } from '@fibrous/semi-ui-solid';

const infos = [
    { type: 'Stars', min: '7100' },
    { type: 'Fork', min: '560' },
    { type: 'Downloads', min: '5000000' },
    { type: 'Contributors', min: '100' },
];

function parserTCH(oldVal: string) {
    return oldVal
        .split(' ')
        .map((item) => (Number(item) ? `${item.replace(/(\d)(?=(?:\d{3})+(?:\.|$))/g, '$1,')}+` : item))
        .join(' ');
}

export default function TypographyDemo() {
    const { Numeral } = Typography;

    return (
        <div>
            <Numeral parser={parserTCH} component="div">
                Semi Design 重视我们的用户,加入并助力我们不断完善
                <For each={infos}>
                    {(item) => (
                        <p>
                            {item.type}:
                            <Numeral parser={parserTCH} component="b" style={{ color: 'var(--semi-violet-5)' }}>
                                {item.min}
                            </Numeral>
                        </p>
                    )}
                </For>
            </Numeral>
            <br />
            <Numeral link={{ href: 'https://semi.design', target: '_blank' }} parser={parserTCH}>
                现已服务 {1e5} 用户,前往官网 &gt;&gt;
            </Numeral>
        </div>
    );
}

Size

Paragraph and Text component support two sizes, small(12px) and normal(14px), and inherit to take the outer size. By default it is set to normal.

When the paragraph component or text component are used nested, set the size property of the inner component to inherit, and the size of the inner component will inherit the size setting of the outer component.

正常文本

Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。


小文本

Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。


这是一段文本,样式为 small这是一段链接,设置 size 为 inherit 继承外部样式设置
Code
import { Typography } from '@fibrous/semi-ui-solid';

export default function TypographyDemo() {
    const { Paragraph, Text } = Typography;
    return (
        <div>
            <Text>正常文本</Text>
            <Paragraph spacing="extended">Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。</Paragraph>
            <br />
            <Text size="small">小文本</Text>
            <Paragraph size="small">Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。</Paragraph>
            <br />
            <Text size="small">
                这是一段文本,样式为 small
                <Text link size="inherit">
                    这是一段链接,设置 size 为 inherit 继承外部样式设置
                </Text>
            </Text>
        </div>
    );
}

Copyable text

Copying of text can be supported by configuring the copyable property.
When copyable is configured as true, the default copied content is children itself. Note that at this time, children only support string type.
When copyable is configured as object, you can specify the content copied to the clipboard through copyable.content, which is no longer strongly associated with children.
At this time, children will no longer limit the type, but copyable.content still needs to be a string.

You can use the copyable.render attribute to customize the copyable button render.

点击右边的图标复制文本。

点击复制文本。

点击右边的图标复制文本。

时间戳: 1714982400s

自定义复制节点

自定义复制渲染



粘贴区域:
Code
import { IconSetting } from '@fibrous/semi-icons-solid';
import { Typography, TextArea, Button, Toast } from '@fibrous/semi-ui-solid';

export default function TypographyDemo() {
    const { Paragraph, Text, Numeral } = Typography;
    const timestamp = new Date(2024, 4, 6, 12).getTime() / 1000;

    return (
        <div>
            <Paragraph copyable>点击右边的图标复制文本。</Paragraph>
            <Paragraph copyable={{ content: 'Hello, Semi Design!' }}>点击复制文本。</Paragraph>
            <Paragraph copyable={{ onCopy: () => Toast.success({ content: '复制文本成功' }) }}>点击右边的图标复制文本。</Paragraph>
            时间戳:{' '}
            <Numeral truncate="ceil" copyable underline>
                {timestamp}s
            </Numeral>
            <Paragraph copyable={{ icon: () => <IconSetting style={{ color: 'var(--semi-color-link)' }} /> }}>自定义复制节点</Paragraph>
            <Paragraph
                copyable={{
                    content: 'Custom render!',
                    render: (copied, doCopy, config) => (
                        <Button size="small" onClick={doCopy}>
                            <span>{copied ? '复制成功' : `点击复制:${config.content}`}</span>
                        </Button>
                    ),
                }}
            >
                自定义复制渲染
            </Paragraph>
            <br />
            <br />
            <Text id="typography-copyable-paste" type="secondary">
                粘贴区域:
            </Text>
            <br />
            <TextArea aria-labelledby="typography-copyable-paste" autosize style={{ width: '320px', 'margin-top': '4px' }} rows={3} />
        </div>
    );
}

Ellipsis

Show ellipsis if text is overflowed. Refer to Ellipsis Config for detailed configuration.

是一个很长很长很长很长5号标题

可以自定义浮层里的展示内容试试看吧
是一个很长很长很长很长的链接

有后缀的情况:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。小尾巴


这是一个多行截断的例子:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。


多行截断,展示 Popover:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。


支持展开和折叠:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。


sssssssssssssssssssssssss

这是一个自定义弹出层组件的省略文本,背景色是蓝色
Code
import type { JSX } from 'solid-js';
import { Typography, Tooltip, type TooltipProps } from '@fibrous/semi-ui-solid';

function renderBlueTooltip(content: TooltipProps['content'], children: JSX.Element) {
    return (
        <Tooltip content={content} style={{ 'background-color': 'var(--semi-color-primary)' }}>
            {children}
        </Tooltip>
    );
}

export default function TypographyDemo() {
    const { Paragraph, Title, Text } = Typography;

    return (
        <div>
            <Title heading={5} ellipsis={{ showTooltip: true }} style={{ width: '250px' }}>
                是一个很长很长很长很长5号标题
            </Title>
            <br />
            <Text
                ellipsis={{
                    showTooltip: {
                        opts: { content: '这是自定义要展示的内容' },
                    },
                }}
                style={{ width: '150px' }}
            >
                可以自定义浮层里的展示内容试试看吧
            </Text>
            <br />
            {/* link 也可以传对象,例如 link={{ href: 'https://semi.design/zh-CN/basic/typography', target: '_blank' }} */}
            <Text link ellipsis={{ showTooltip: true, pos: 'middle' }} style={{ width: '150px' }}>
                是一个很长很长很长很长的链接
            </Text>
            <br />
            <Paragraph ellipsis={{ suffix: '小尾巴' }} style={{ width: '300px' }}>
                有后缀的情况:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。
            </Paragraph>
            <br />
            <Paragraph ellipsis={{ rows: 3 }} style={{ width: '300px' }}>
                这是一个多行截断的例子:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
            </Paragraph>
            <br />
            <Paragraph ellipsis={{ rows: 3, showTooltip: { type: 'popover', opts: { style: { width: '300px' } } } }} style={{ width: '300px' }}>
                多行截断,展示 Popover:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
            </Paragraph>
            <br />
            <Paragraph
                ellipsis={{
                    rows: 3,
                    expandable: true,
                    collapsible: true,
                    collapseText: '折叠我吧',
                    onExpand: (bool, e) => console.log(bool, e),
                }}
                style={{ width: '300px' }}
            >
                支持展开和折叠:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
            </Paragraph>
            <br />
            <Text
                ellipsis={{
                    showTooltip: {
                        opts: { content: '全英文设置了word-break' },
                    },
                    pos: 'middle',
                }}
                style={{ width: '150px', 'word-break': 'break-word' }}
            >
                sssssssssssssssssssssssss
            </Text>
            <br />
            <br />
            <Title
                heading={5}
                ellipsis={{
                    showTooltip: {
                        renderTooltip: renderBlueTooltip,
                    },
                }}
                style={{ width: '250px' }}
            >
                这是一个自定义弹出层组件的省略文本,背景色是蓝色
            </Title>
        </div>
    );
}
有问题的超长文本发生截断时可按需进行自定义配置
覆盖类名超长文本发生截断时可使用类名覆盖进行自定义配置
覆盖style超长文本发生截断时可使用style进行自定义配置
Code
import { Typography } from '@fibrous/semi-ui-solid';

export default function TypographyDemo() {
    const { Text } = Typography;

    return (
        <div>
            <Text
                ellipsis={{
                    showTooltip: {
                        opts: { content: '架构|Semi-inf|graph.cheet.relation' },
                    },
                }}
                style={{ width: '150px' }}
            >
                有问题的超长文本发生截断时可按需进行自定义配置
            </Text>
            <br />
            <Text
                ellipsis={{
                    showTooltip: {
                        opts: {
                            content: '架构|Semi-inf|graph.cheet.relation',
                            class: 'components-typography-demo',
                        },
                    },
                }}
                style={{ width: '150px' }}
            >
                覆盖类名超长文本发生截断时可使用类名覆盖进行自定义配置
            </Text>
            <br />
            <Text
                ellipsis={{
                    showTooltip: {
                        opts: { content: '架构|Semi-inf|graph.cheet.relation', style: { 'word-break': 'break-all' } },
                    },
                }}
                style={{ width: '150px' }}
            >
                覆盖style超长文本发生截断时可使用style进行自定义配置
            </Text>
        </div>
    );
}
// config word-break

.components-typography-demo {
    word-break: break-word;
    // or
    word-break: break-all;
}

API Reference

Typography.Text

Props

PropertyDescriptionTypeDefault
codeWhether the text is wrapped in a code element.boolean-
componentElement to render: a tag name or a component. Defaults to span.ValidComponent-
copyableWhether the text can be copied; pass an object for the Copyable Config.CopyableConfig | boolean-
deleteAdds a strikethrough.boolean-
disabledDisables the text.boolean-
ellipsisTruncates overflowing text; pass an object for the Ellipsis Config.Ellipsis | boolean-
iconPrefix icon, an element or an icon component; an icon component receives the size the text implies.TypographyIcon-
linkWhether the text is a link; with an object, its attributes (href, target, class, style, onClick and so on) are applied to the a element.LinkType-
markAdds a highlight.boolean-
sizeText size; inherit takes the size of the enclosing Text or Paragraph. Defaults to normal.TypographyBaseSize-
strongWhether the text is bold.boolean-
typeText type. Defaults to primary.TypographyBaseType-
underlineAdds an underline.boolean-
weightFont weight as a number.number-

class, style, ref and native attributes and events (such as id, aria-* and onClick) land on the text element.

Typography.Title

Props

PropertyDescriptionTypeDefault
componentElement to render: a tag name or a component. Defaults to h1 to h6 by heading.ValidComponent-
copyableWhether the text can be copied; pass an object for the Copyable Config.CopyableConfig | boolean-
deleteAdds a strikethrough.boolean-
disabledDisables the text.boolean-
ellipsisTruncates overflowing text; pass an object for the Ellipsis Config.Ellipsis | boolean-
headingHeading level, matching h1 to h6. Defaults to 1.1 | 2 | 3 | 4 | 5 | 6-
linkWhether the text is a link; with an object, its attributes (href, target, class, style, onClick and so on) are applied to the a element.LinkType-
markAdds a highlight.boolean-
strongWhether the text is bold.boolean-
typeText type. Defaults to primary.TypographyBaseType-
underlineAdds an underline.boolean-
weightFont weight: light, regular, medium, semibold, bold, default, or a number.Type'light' | 'regular' | 'medium' | 'semibold' | 'bold' | 'default' | number-

class, style, ref and native attributes and events (such as id, aria-* and onClick) land on the text element.

Typography.Paragraph

Props

PropertyDescriptionTypeDefault
componentElement to render: a tag name or a component. Defaults to p.ValidComponent-
copyableWhether the text can be copied; pass an object for the Copyable Config.CopyableConfig | boolean-
deleteAdds a strikethrough.boolean-
disabledDisables the text.boolean-
ellipsisTruncates overflowing text; pass an object for the Ellipsis Config.Ellipsis | boolean-
linkWhether the text is a link; with an object, its attributes (href, target, class, style, onClick and so on) are applied to the a element.LinkType-
markAdds a highlight.boolean-
sizeText size; inherit takes the size of the enclosing Text or Paragraph. Defaults to normal.TypographyBaseSize-
spacingLine spacing; extended is looser. Defaults to normal.TypographyBaseSpacing-
strongWhether the text is bold.boolean-
typeText type. Defaults to primary.TypographyBaseType-
underlineAdds an underline.boolean-

class, style, ref and native attributes and events (such as id, aria-* and onClick) land on the text element.

Typography.Numeral

Props

PropertyDescriptionTypeDefault
codeWhether the text is wrapped in a code element.boolean-
componentElement to render: a tag name or a component. Defaults to span; use div when the content has block elements such as p.ValidComponent-
copyableWhether the text can be copied; pass an object for the Copyable Config.CopyableConfig | boolean-
deleteAdds a strikethrough.boolean-
disabledDisables the text.boolean-
iconPrefix icon, an element or an icon component; an icon component receives the size the text implies.TypographyIcon-
linkWhether the text is a link; with an object, its attributes (href, target, class, style, onClick and so on) are applied to the a element.LinkType-
markAdds a highlight.boolean-
parserCustom number parser.Type(value: string) => string-
precisionNumber of decimal places to keep. Defaults to 0.number-
ruleParsing rule: text only rounds, numbers filters out non-numeric characters, bytes-decimal and bytes-binary convert byte units, percentages converts to percent, exponential converts to scientific notation. Defaults to text.TypographyBaseRule-
sizeText size; inherit takes the size of the enclosing Text or Paragraph. Defaults to normal.TypographyBaseSize-
strongWhether the text is bold.boolean-
truncateHow the kept decimals are rounded, matching Math.round, Math.ceil and Math.floor. Defaults to round.TypographyBaseTruncate-
typeText type. Defaults to primary.TypographyBaseType-
underlineAdds an underline.boolean-

class, style, ref and native attributes and events (such as id, aria-* and onClick) land on the text element.

Ellipsis Config

PropertiesInstructionstypeDefault
collapseTextDisplayed text to collapsestringCollapse
collapsibleToggle whether text is collapsiblebooleanfalse
expandTextDisplayed text to expandstringExpand
expandableToggle whether text is expandablebooleanfalse
posPosition to start ellipsis, one of end, middlestringend
rowsNumber of rows that should not be truncatednumber1
showTooltipToggle 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; renderTooltip, custom rendering popup layer component. While the Tooltip can show, the text is a tab stop; inside an item of a composite widget (option, treeitem, menuitem, gridcell, row) it stays out of the tab order. showTooltip has no effect when expandable is true or expandText is set; the two are mutually exclusiveboolean|{type?: 'tooltip'|'popover', opts?: object, renderTooltip?: (content: JSX.Element | function, children: JSX.Element) => JSX.Element}false
suffixText suffix that will not be truncatedstring-
onExpandCallback when expand or collapsefunction(expanded: boolean, event: MouseEvent)-

Copyable Config

PropertiesInstructionsTypeDefault
contentCopied contentstring-
classClass name of the copy action's wrapping spanstring-
copyTipTooltip content when hovering over icon; a node is a render function, called only while the tooltip is shown; a string also names the button before copying, otherwise the locale's "Copy" is usedstring | (() => JSX.Element)-
durationSeconds the copied state lastsnumber3
iconContent of the copy button, the returned node rendered as given; it does not take part in the button's accessible name() => JSX.Element-
onCopyCallback for copy action, called asynchronously once the clipboard write (navigator.clipboard.writeText) settles; res is true when the write succeeds and false when it is rejected, in which case the copied state is not shownfunction(e: MouseEvent, content: string, res: boolean)-
renderCustom render copy nodefunction(copied, doCopy, configs)(copied: boolean, doCopy: (e: MouseEvent) => void, configs: CopyableConfig) => JSX.Element-
styleStyle of the copy action's wrapping spanJSX.CSSProperties | string-
successTipSuccessful tip content; a node is a render function, called only in the copied state; a string also names the button once copied, otherwise the locale's "Copied" is usedstring | (() => JSX.Element)-

Content Guidelines

  • Link
    • Text links need to be clear and predictable, users should be able to predict what will happen when they click on the link
    • Do not mislead users by mislabeling links
    • Avoid using "Click here" or "Here" as stand-alone links
✅ Recommended usage❌ Deprecated usage
No spaces yet? Create space No spaces yet? Click here
  • Avoid using entire sentences as clickable text links, and instead use text that describes where to go as the link content
✅ Recommended usage❌ Deprecated usage
Views user documentation for detailsView user documentation for details
  • Using short terms or words as link text is more conducive to internationalization, to avoid the problem of link text being split due to different grammar and word order in different languages
✅ Recommended usage❌ Deprecated usage
Manage notifications toManage notifications to
  • When ending with a text link, there is no need to follow punctuation, except for the question mark "?"
✅ Recommended usage❌ Deprecated usage
No spaces yet? Create space No spaces yet? Click here
Forgot password ?Forgot password
  • Link text does not contain the articles "the, a, an"
✅ Recommended usage❌ Deprecated usage
View user documentation for detailsView the user documentation for details

Design Tokens

These are the component's internal Sass variables and cannot be overridden. To customize styles, override the --semi-* CSS variables (see the Design Token page) or write unlayered CSS rules.
Sass variableValueUsage
$color-typography_default-text-defaultvar(--semi-color-text-0)默认文本颜色
$color-typography_secondary-text-defaultvar(--semi-color-text-1)稍次要文本颜色
$color-typography_tertiary-text-defaultvar(--semi-color-text-2)次要文本颜色
$color-typography_quaternary-text-defaultvar(--semi-color-text-3)最次要文本颜色
$color-typography_warning-text-defaultvar(--semi-color-warning)警告文本颜色
$color-typography_danger-text-defaultvar(--semi-color-danger)错误文本颜色
$color-typography_success-text-defaultvar(--semi-color-success)成功文本颜色
$color-typography_disabled-text-defaultvar(--semi-color-disabled-text)禁用文本颜色
$color-typography_mark-bg-defaultvar(--semi-color-primary-light-default)标记文本颜色
$color-typography_mark-text-defaultvar(--semi-color-text-0)标记文本文字颜色
$font-typography_code-fontFamilyui-monospace, sfmono-regular, menlo, consolas, monospace代码文本字体
$font-typography_code-fontSize1em代码文本字号
$color-typography_code-bg-defaultvar(--semi-color-fill-1)代码文本背景颜色
$color-typography_code-text-defaultvar(--semi-color-text-2)代码文本颜色
$color-typography_link-text-defaultvar(--semi-color-link)链接文本颜色 - 默认
$color-typography_link-text-visitedvar(--semi-color-link-visited)链接文本颜色 - 已访问
$color-typography_link-text-hovervar(--semi-color-link-hover)链接文本颜色 - 悬浮
$color-typography_link-text-activevar(--semi-color-link-active)链接文本颜色 - 激活
$color-typography_link-text-disabledvar(--semi-color-link)链接文本颜色 - 禁用
$color-typography_copied-text-successvar(--semi-color-text-2)可复制文本颜色
$color-typography_copied-icon-successvar(--semi-color-success)可复制文本复制成功图标颜色
$color-typography_code-border-defaultvar(--semi-color-border)代码文本描边颜色
$font-typography_title-fontWeight$font-weight-bold标题文本字重
$font-typography_link-fontWeight$font-weight-bold链接文本字重
$font-typography_strong-fontWeight$font-weight-bold强调文本字重
$font-typography_paragraph_extended-lineHeight24px宽松行距段落文本行高
$font-typography_smallText-regular-fontWeight$font-weight-regularsmall text 字重 - 正常
$font-typography_normalParagraph-regular-fontWeight$font-weight-regularnormal paragraph 字重 - 正常
$font-typography_smallParagraph-regular-fontWeight$font-weight-regularsmall paragraph 字重 - 正常
$font-typography_title1-fontWeight$font-typography_title-fontWeight一级标题文本字重
$font-typography_title2-fontWeight$font-typography_title-fontWeight二级标题文本字重
$font-typography_title3-fontWeight$font-typography_title-fontWeight三级标题文本字重
$font-typography_title4-fontWeight$font-typography_title-fontWeight四级标题文本字重
$font-typography_title5-fontWeight$font-typography_title-fontWeight五级标题文本字重
$font-typography_title6-fontWeight$font-typography_title-fontWeight六级标题文本字重
$font-typography_title1-light-fontWeight200一级标题文本字重 - 细
$font-typography_title2-light-fontWeight200二级标题文本字重 - 细
$font-typography_title3-light-fontWeight200三级标题文本字重 - 细
$font-typography_title4-light-fontWeight200四级标题文本字重 - 细
$font-typography_title5-light-fontWeight200五级标题文本字重 - 细
$font-typography_title6-light-fontWeight200六级标题文本字重 - 细
$font-typography_title1-regular-fontWeight400一级标题文本字重 - 正常
$font-typography_title2-regular-fontWeight400二级标题文本字重 - 正常
$font-typography_title3-regular-fontWeight400三级标题文本字重 - 正常
$font-typography_title4-regular-fontWeight400四级标题文本字重 - 正常
$font-typography_title5-regular-fontWeight400五级标题文本字重 - 正常
$font-typography_title6-regular-fontWeight400六级标题文本字重 - 正常
$font-typography_title1-medium-fontWeight500一级标题文本字重 - 中等
$font-typography_title2-medium-fontWeight500二级标题文本字重 - 中等
$font-typography_title3-medium-fontWeight500三级标题文本字重 - 中等
$font-typography_title4-medium-fontWeight500四级标题文本字重 - 中等
$font-typography_title5-medium-fontWeight500五级标题文本字重 - 中等
$font-typography_title6-medium-fontWeight500六级标题文本字重 - 中等
$font-typography_title1-semibold-fontWeight600一级标题文本字重 - 半粗
$font-typography_title2-semibold-fontWeight600二级标题文本字重 - 半粗
$font-typography_title3-semibold-fontWeight600三级标题文本字重 - 半粗
$font-typography_title4-semibold-fontWeight600三级标题文本字重 - 半粗
$font-typography_title5-semibold-fontWeight600三级标题文本字重 - 半粗
$font-typography_title6-semibold-fontWeight600三级标题文本字重 - 半粗
$font-typography_title1-bold-fontWeight700一级标题文本字重 - 粗
$font-typography_title2-bold-fontWeight700二级标题文本字重 - 粗
$font-typography_title3-bold-fontWeight700三级标题文本字重 - 粗
$font-typography_title4-bold-fontWeight700三级标题文本字重 - 粗
$font-typography_title5-bold-fontWeight700三级标题文本字重 - 粗
$font-typography_title6-bold-fontWeight700三级标题文本字重 - 粗
$spacing-typography_iconPrefix-marginRight4px带前缀文本图标右侧外边距
$spacing-typography_expandText-marginLeft8px支持展开文本展开按钮左侧外边距
$spacing-typography_copyIcon-marginLeft4px可复制文本复制图标左侧外边距
$spacing-typography_copyIcon-padding0可复制文本复制图标内边距
$spacing-typography_title_h1-margin0一级标题外边距
$spacing-typography_title_h2-margin0二级标题外边距
$spacing-typography_title_h3-margin0三级标题外边距
$spacing-typography_title_h4-margin0四级标题外边距
$spacing-typography_title_h5-margin0五级标题外边距
$spacing-typography_title_h6-margin0六级标题外边距
$spacing-typography_title_paragraph-margin0段落外边距
$width-typography_code-border1px代码文本描边宽度
$width-typography_link-border1px链接文本下划线宽度
$radius-typography_code2px代码文本圆角

FAQ

  • What are the specific mechanism and precautions of Typography ellipsis?

    Semi ellipsis has two strategies, CSS ellipsis and JS ellipsis. When setting middle truncation (pos='middle')、 expandable、 expandText is set (not undefined)、 suffix is not empty string、copyable, the JS ellipsis strategy is enabled. Otherwise, enable the CSS ellipsis strategy.

    In general CSS truncation performance is better than JS truncation. when the children and container size remain unchanged, CSS truncation only involves 1~2 calculations, while js truncation is based on dichotomy and may require multiple calculations.

    Pay attention to performance consumption when using a large number of Typography with ellipsis. For example, in Table, you can reduce performance loss by setting a reasonable pageSize for paging.