Grid

Flexbox-based 12-column grid system.

Import

import { Grid } from '@tidbcloud/uikit'

Usage

import { Grid } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <Grid>
      <Grid.Col span={4}>1</Grid.Col>
      <Grid.Col span={4}>2</Grid.Col>
      <Grid.Col span={4}>3</Grid.Col>
    </Grid>
  )
}

Columns span

Grid.Col span prop controls the ratio of column width to total width of the row. By default, grid uses 12 columns layout, so span can be any number from 1 to 12.

import { Grid } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <Grid>
      <Grid.Col span={3}>1</Grid.Col>
      <Grid.Col span={3}>2</Grid.Col>
      <Grid.Col span={3}>3</Grid.Col>
      <Grid.Col span={3}>4</Grid.Col>
      <Grid.Col span={4}>5</Grid.Col>
      <Grid.Col span={8}>6</Grid.Col>
    </Grid>
  )
}

Gutter

Control spacing between columns with gutter prop:

import { Grid } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <Grid gutter="xl">
      <Grid.Col span={4}>1</Grid.Col>
      <Grid.Col span={4}>2</Grid.Col>
      <Grid.Col span={4}>3</Grid.Col>
    </Grid>
  )
}

Grow

Set grow prop to make columns grow to fill available space:

import { Grid } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <Grid grow>
      <Grid.Col span={4}>1</Grid.Col>
      <Grid.Col span={4}>2</Grid.Col>
      <Grid.Col span={4}>3</Grid.Col>
      <Grid.Col span={4}>4</Grid.Col>
      <Grid.Col span={4}>5</Grid.Col>
    </Grid>
  )
}

Column offset

Set offset prop on Grid.Col to create space before the column:

import { Grid } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <Grid>
      <Grid.Col span={3}>1</Grid.Col>
      <Grid.Col span={3}>2</Grid.Col>
      <Grid.Col span={3} offset={3}>
        3
      </Grid.Col>
    </Grid>
  )
}

Column order

Set order prop on Grid.Col to control visual order:

import { Grid } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <Grid>
      <Grid.Col span={4} order={2}>
        1
      </Grid.Col>
      <Grid.Col span={4} order={3}>
        2
      </Grid.Col>
      <Grid.Col span={4} order={1}>
        3
      </Grid.Col>
    </Grid>
  )
}

Responsive props

span, offset, and order props support responsive values:

import { Grid } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <Grid>
      <Grid.Col span={{ base: 12, md: 6, lg: 3 }}>1</Grid.Col>
      <Grid.Col span={{ base: 12, md: 6, lg: 3 }}>2</Grid.Col>
      <Grid.Col span={{ base: 12, md: 6, lg: 3 }}>3</Grid.Col>
      <Grid.Col span={{ base: 12, md: 6, lg: 3 }}>4</Grid.Col>
    </Grid>
  )
}

Auto-sized columns

Set span="auto" to let column take available space:

import { Grid } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <Grid>
      <Grid.Col span="auto">1</Grid.Col>
      <Grid.Col span={6}>2</Grid.Col>
      <Grid.Col span="auto">3</Grid.Col>
    </Grid>
  )
}

Content-sized columns

Set span="content" to make column take space based on content:

import { Grid } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <Grid>
      <Grid.Col span="content">Fit content</Grid.Col>
      <Grid.Col span={6}>2</Grid.Col>
    </Grid>
  )
}

Change columns count

Set columns prop to change the default 12 columns layout:

import { Grid } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <Grid columns={24}>
      <Grid.Col span={12}>1</Grid.Col>
      <Grid.Col span={6}>2</Grid.Col>
      <Grid.Col span={6}>3</Grid.Col>
    </Grid>
  )
}

Props

Grid

PropTypeDefaultDescription
columnsnumber12Number of grid columns
gutterMantineSpacing’md’Space between columns
growbooleanfalseColumns grow to fill available space
justifyCSS justify-content-Justify-content property
alignCSS align-items-Align-items property

Grid.Col

PropTypeDefaultDescription
spannumber | ‘auto’ | ‘content’-Column span (1-12)
offsetnumber-Space before column
ordernumber-Visual order