StructuredList

A component used to display collections of data in a consistent manner.

Theming#

The StructuredList component is a multipart component. The styling needs to be applied to each part specifically.

To learn more about styling multipart components, visit the Chakra UI Component Style page.

Anatomy#

  • list
  • item
  • button
  • header
  • cell
  • icon

Default theme#

import { createMultiStyleConfigHelpers } from '@chakra-ui/styled-system'
import { structuredListAnatomy } from '@saas-ui/theme/anatomy'
const { definePartsStyle, defineMultiStyleConfig } =
createMultiStyleConfigHelpers(structuredListAnatomy.keys)
const baseStyle = definePartsStyle((props) => {
return {
item: {
py: 2,
px: 4,
},
button: {
transitionProperty: 'common',
transitionDuration: 'normal',
borderRadius: 'inherit',
outline: 'none',
_hover: {
bg: 'blackAlpha.50',
_dark: {
bg: 'whiteAlpha.50',
},
},
_focusVisible: {
boxShadow: 'outline',
},
_focus: {
bg: 'blackAlpha.50',
_dark: {
bg: 'whiteAlpha.50',
},
},
_active: {
bg: 'blackAlpha.100',
_dark: {
bg: 'whiteAlpha.100',
},
},
},
}
})
export const structuredListTheme = defineMultiStyleConfig({
defaultProps: {
size: 'md',
},
baseStyle,
sizes: {
sm: {
item: {
py: 1,
px: 1,
},
button: {
py: 1,
px: 1,
},
cell: {
px: 1,
},
icon: {
px: 1,
},
},
md: {
item: {
py: 2,
px: 2,
},
button: { py: 2, px: 2 },
cell: {
px: 2,
},
icon: {
px: 2,
},
},
},
})

Customize the theme#

The StructuredList component uses the SuiStructuredList key within the theme object.

import { extendTheme } from '@chakra-ui/react'
const theme = extendTheme({
components: {
SuiStructuredList: {
baseStyle: {
item: {
py: 4,
px: 8,
},
button: {
borderRadius: 'full',
_hover: {
bg: 'teal.500',
color: 'white',
},
_focus: {
bg: 'teal.500',
color: 'white',
},
_active: {
bg: 'teal.600',
color: 'white',
},
},
},
sizes: {
sm: {
item: {
py: 2,
px: 4,
},
button: {
py: 2,
px: 4,
},
},
md: {
item: {
py: 4,
px: 8,
},
button: {
py: 4,
px: 8,
},
},
},
},
},
})

Was this helpful?