Nhảy tới nội dung

Text

Properties

Text

NameTypeDefaultDescription
sizeBodyTextSize

Text size

boldboolean

Bold

Text.Title

NameTypeDefaultDescription
sizeTitleTextSize

Text size

Text.Header

NameTypeDefaultDescription
sizeHeaderTextSize

Text size

Type

BodyTextSize

NameDescription
"xLarge"

Size xLarge

"large"

Size large

"normal"

Size normal

"small"

Size small

"xSmall"

Size xSmall

"xxSmall"

Size xxSmall

"xxxSmall"

Size xxxSmall

"xxxxSmall"

Size xxxxSmall

TitleTextSize

NameDescription
"xLarge"

Size xLarge

"large"

Size large

"normal"

Size normal

"small"

Size small

HeaderTextSize

NameDescription
"normal"

Size normal

"small"

Size small

Example

import React from 'react';
import { Page, Text, List, Box } from 'zmp-ui';

function TextSize({ size, lineHeight }) {
  return (
    <Box flex flexDirection='row' className='text-size-info'>
      <Box>
        <Text size='small'>
          Size:
          {size}
        </Text>
      </Box>
      <Box ml={6}>
        <Text size='small'>
          Line height:
          {lineHeight}
        </Text>
      </Box>
    </Box>
  );
}

const { Item } = List;
const data = {
  Header: ['normal', 'small'],
  Title: ['xLarge', 'large', 'normal', 'small'],
  Body: [
    'xLarge',
    'large',
    'normal',
    'small',
    'xSmall',
    'xxSmall',
    'xxxSmall',
    'xxxxSmall'
  ]
};
const textStyles = {
  Header: {
    normal: {
      size: 16,
      lineHeight: 22
    },
    small: {
      size: 15,
      lineHeight: 20
    }
  },
  Title: {
    xLarge: {
      size: 22,
      lineHeight: 26
    },
    large: {
      size: 20,
      lineHeight: 26
    },
    normal: {
      size: 18,
      lineHeight: 24
    },
    small: {
      size: 15,
      lineHeight: 20
    }
  },
  Body: {
    xLarge: {
      size: 18,
      lineHeight: 24
    },
    large: {
      size: 16,
      lineHeight: 22
    },
    normal: {
      size: 15,
      lineHeight: 20
    },
    small: {
      size: 14,
      lineHeight: 18
    },
    xSmall: {
      size: 13,
      lineHeight: 18
    },
    xxSmall: {
      size: 12,
      lineHeight: 16
    },
    xxxSmall: {
      size: 11,
      lineHeight: 16
    },
    xxxxSmall: {
      size: 10,
      lineHeight: 14
    }
  }
};

export default function HomePage(props) {
  const { title } = props;
  return (
    <>
      {Object.keys(data).map((key) => (
        <Page key={key} className='section-container p-0'>
          <Box p={4}>
            <Text.Header>{key} Text</Text.Header>
          </Box>
          <List>
            {data[key].map((size) => {
              if (key === 'Header') {
                return (
                  <Item key={`${key}-${size}`} className='mb-0'>
                    <Text bold size='small' className='text-style'>
                      {size}
                    </Text>
                    <Box mt={2}>
                      <Text.Header size={size}>
                        Bầu trời trong xanh thăm thẳm, không một gợn mây
                      </Text.Header>
                    </Box>

                    <Box>
                      <TextSize
                        // eslint-disable-next-line react/jsx-props-no-spreading
                        {...textStyles.Header[size]}
                      />
                    </Box>
                  </Item>
                );
              }
              if (key === 'Title') {
                return (
                  <Item key={`${key}-${size}`} className='mb-0'>
                    <Text bold size='small' className='text-style'>
                      {size}
                    </Text>
                    <Box mt={2}>
                      <Text.Title size={size}>
                        Bầu trời trong xanh thăm thẳm, không một gợn mây
                      </Text.Title>
                    </Box>

                    <Box>
                      <TextSize
                        // eslint-disable-next-line react/jsx-props-no-spreading
                        {...textStyles.Title[size]}
                      />
                    </Box>
                  </Item>
                );
              }
              return (
                <Item key={`${key}-${size}`} className='mb-0'>
                  <Box>
                    <Text bold size='small' className='text-style'>
                      {size}
                    </Text>
                  </Box>
                  <Box mt={2}>
                    <Text size={size}>
                      Bầu trời trong xanh thăm thẳm, không một gợn mây
                    </Text>
                  </Box>

                  <Box mt={6}>
                    <Text size='small' bold className='text-style'>
                      {size} M
                    </Text>
                  </Box>
                  <Box mt={2}>
                    <Text bold size={size}>
                      Bầu trời trong xanh thăm thẳm, không một gợn mây
                    </Text>
                  </Box>

                  <Box mt={2}>
                    <TextSize
                      // eslint-disable-next-line react/jsx-props-no-spreading
                      {...textStyles.Body[size]}
                    />
                  </Box>
                </Item>
              );
            })}
          </List>
        </Page>
      ))}
    </>
  );
}