Theming

Layer Styles

Layer styles provide a way to create consistent and visually appealing elements. By defining a set of properties and effects, you can easily apply them to various design elements, ensuring visual coherence throughout your design system.

  • Color or text color
  • Background color
  • Border width and border color
  • Box shadow
  • Opacity

Defining layer styles

Layer styles are defined in the layerStyles property of the theme.

Here's an example of a layer style:

import { defineLayerStyles } from '@pandacss/dev'
 
const layerStyles = defineLayerStyles({
  container: {
    description: 'container styles',
    value: {
      bg: 'gray.50',
      border: '2px solid',
      borderColor: 'gray.500'
    }
  }
})
💡

Good to know: The value property maps to style objects that will be applied to the element.

Update the config

To use the layer styles, we need to update the config object in the panda.config.ts file.

import { defineConfig } from '@pandacss/dev'
import { layerStyles } from './layer-styles'
 
export default defineConfig({
  theme: {
    extend: {
      layerStyles
    }
  }
})

This should automatically update the generated theme the specified layerStyles. If this doesn't happen, you can run the panda codegen command.

Using layer styles

Now we can use layerStyle property in our components.

import { css } from '../styled-system/css'
 
function App() {
  return (
    <div className={css({ layerStyle: 'container' })}>
      This is inside a container style
    </div>
  )
}