Group

Compose elements in a horizontal flex container.

Import

import { Group } from '@tidbcloud/uikit'

Usage

import { Group, Button } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <Group>
      <Button variant="default">First</Button>
      <Button variant="default">Second</Button>
      <Button variant="default">Third</Button>
    </Group>
  )
}

Gap

Control spacing between children with gap prop. gap supports all spacing values from theme (xs, sm, md, lg, xl) and numbers:

import { Group, Button } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <Group gap="lg">
      <Button variant="default">First</Button>
      <Button variant="default">Second</Button>
      <Button variant="default">Third</Button>
    </Group>
  )
}

Justify

Control justify-content property with justify prop:

import { Group, Button } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <>
      <Group justify="center">
        <Button variant="default">1</Button>
        <Button variant="default">2</Button>
        <Button variant="default">3</Button>
      </Group>
      <Group justify="flex-end" mt="md">
        <Button variant="default">1</Button>
        <Button variant="default">2</Button>
        <Button variant="default">3</Button>
      </Group>
      <Group justify="space-between" mt="md">
        <Button variant="default">1</Button>
        <Button variant="default">2</Button>
        <Button variant="default">3</Button>
      </Group>
    </>
  )
}

Grow

Set grow to make children grow to fill available space:

import { Group, Button } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <Group grow>
      <Button variant="default">First</Button>
      <Button variant="default">Second</Button>
      <Button variant="default">Third</Button>
    </Group>
  )
}

Wrap

By default, Group wraps children. Set wrap="nowrap" to prevent wrapping:

import { Group, Button } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <Group wrap="nowrap">
      <Button variant="default">First</Button>
      <Button variant="default">Second</Button>
      <Button variant="default">Third</Button>
    </Group>
  )
}

Prevent flex-wrap

Use preventGrowOverflow prop to prevent children from taking more space than expected:

import { Group, Button, Text, Box } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <Group grow preventGrowOverflow={false} wrap="nowrap">
      <Button variant="default">
        <Text truncate>Very long button text</Text>
      </Button>
      <Button variant="default">Button 2</Button>
      <Button variant="default">Button 3</Button>
    </Group>
  )
}

Responsive props

gap and justify props support responsive values:

import { Group, Button } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <Group justify={{ base: 'center', sm: 'flex-start' }} gap={{ base: 'sm', sm: 'lg' }}>
      <Button variant="default">First</Button>
      <Button variant="default">Second</Button>
      <Button variant="default">Third</Button>
    </Group>
  )
}

Props

PropTypeDefaultDescription
gapMantineSpacing’md’Gap between children
justifyCSS justify-content’flex-start’Justify-content property
alignCSS align-items’center’Align-items property
wrapCSS flex-wrap’wrap’Flex-wrap property
growbooleanfalseChildren grow to fill space
preventGrowOverflowbooleantruePrevent grow overflow