Chuyển tới nội dung chính
Phiên bản: 1.10.0

implementation

Component giúp hiển thị dữ liệu văn bản

Properties

Text

NameTypeDefaultDescription
sizeBodyTextSizeText size
boldbooleanBold

Text.Title

NameTypeDefaultDescription
sizeTitleTextSizeText size

Text.Header

NameTypeDefaultDescription
sizeHeaderTextSizeText 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>
      ))}
    </>
  );
}