Want to skip the docs? Check out pandamastery.com - the best way to learn Panda CSS

theming
theme

Theme

Customizing the default theme

Panda comes with a default theme that is used to generate the utilities for your project. You can customize this theme to match your design requirements.

Breakpoints

Use the breakpoints key in the theme section of your Panda config file to customize the default breakpoints.

panda.config.ts

import { defineConfig } from '@pandacss/dev'
 
export default defineConfig({
  theme: {
    extend: {
      breakpoints: {
        '3xl': '1800px'
      }
    }
  }
})

Panda ships with the following breakpoints by default:

sm
@media screen (min-width >= 40rem)
md
@media screen (min-width >= 48rem)
lg
@media screen (min-width >= 64rem)
xl
@media screen (min-width >= 80rem)
2xl
@media screen (min-width >= 96rem)

Tokens

Colors

Use the colors key in the token section of your Panda config file to customize the default color values.

💡

We recommend using numeric ranges from 50 to 900

panda.config.ts

import { defineConfig } from '@pandacss/dev'
 
export default defineConfig({
  theme: {
    extend: {
      tokens: {
        colors: {
          brand: { value: '#EA8433' }
        }
      }
    }
  }
})

Panda comes with a handful of colors picked from the amazing Tailwind color palette

slate

slate.50
oklch(98.4% 0.003 247.858)
slate.100
oklch(96.8% 0.007 247.896)
slate.200
oklch(92.9% 0.013 255.508)
slate.300
oklch(86.9% 0.022 252.894)
slate.400
oklch(70.4% 0.04 256.788)
slate.500
oklch(55.4% 0.046 257.417)
slate.600
oklch(44.6% 0.043 257.281)
slate.700
oklch(37.2% 0.044 257.287)
slate.800
oklch(27.9% 0.041 260.031)
slate.900
oklch(20.8% 0.042 265.755)
slate.950
oklch(12.9% 0.042 264.695)

gray

gray.50
oklch(98.5% 0.002 247.839)
gray.100
oklch(96.7% 0.003 264.542)
gray.200
oklch(92.8% 0.006 264.531)
gray.300
oklch(87.2% 0.01 258.338)
gray.400
oklch(70.7% 0.022 261.325)
gray.500
oklch(55.1% 0.027 264.364)
gray.600
oklch(44.6% 0.03 256.802)
gray.700
oklch(37.3% 0.034 259.733)
gray.800
oklch(27.8% 0.033 256.848)
gray.900
oklch(21% 0.034 264.665)
gray.950
oklch(13% 0.028 261.692)

zinc

zinc.50
oklch(98.5% 0 0)
zinc.100
oklch(96.7% 0.001 286.375)
zinc.200
oklch(92% 0.004 286.32)
zinc.300
oklch(87.1% 0.006 286.286)
zinc.400
oklch(70.5% 0.015 286.067)
zinc.500
oklch(55.2% 0.016 285.938)
zinc.600
oklch(44.2% 0.017 285.786)
zinc.700
oklch(37% 0.013 285.805)
zinc.800
oklch(27.4% 0.006 286.033)
zinc.900
oklch(21% 0.006 285.885)
zinc.950
oklch(14.1% 0.005 285.823)

neutral

neutral.50
oklch(98.5% 0 0)
neutral.100
oklch(97% 0 0)
neutral.200
oklch(92.2% 0 0)
neutral.300
oklch(87% 0 0)
neutral.400
oklch(70.8% 0 0)
neutral.500
oklch(55.6% 0 0)
neutral.600
oklch(43.9% 0 0)
neutral.700
oklch(37.1% 0 0)
neutral.800
oklch(26.9% 0 0)
neutral.900
oklch(20.5% 0 0)
neutral.950
oklch(14.5% 0 0)

stone

stone.50
oklch(98.5% 0.001 106.423)
stone.100
oklch(97% 0.001 106.424)
stone.200
oklch(92.3% 0.003 48.717)
stone.300
oklch(86.9% 0.005 56.366)
stone.400
oklch(70.9% 0.01 56.259)
stone.500
oklch(55.3% 0.013 58.071)
stone.600
oklch(44.4% 0.011 73.639)
stone.700
oklch(37.4% 0.01 67.558)
stone.800
oklch(26.8% 0.007 34.298)
stone.900
oklch(21.6% 0.006 56.043)
stone.950
oklch(14.7% 0.004 49.25)

mauve

mauve.50
oklch(98.5% 0 0)
mauve.100
oklch(96% 0.003 325.6)
mauve.200
oklch(92.2% 0.005 325.62)
mauve.300
oklch(86.5% 0.012 325.68)
mauve.400
oklch(71.1% 0.019 323.02)
mauve.500
oklch(54.2% 0.034 322.5)
mauve.600
oklch(43.5% 0.029 321.78)
mauve.700
oklch(36.4% 0.029 323.89)
mauve.800
oklch(26.3% 0.024 320.12)
mauve.900
oklch(21.2% 0.019 322.12)
mauve.950
oklch(14.5% 0.008 326)

olive

olive.50
oklch(98.8% 0.003 106.5)
olive.100
oklch(96.6% 0.005 106.5)
olive.200
oklch(93% 0.007 106.5)
olive.300
oklch(88% 0.011 106.6)
olive.400
oklch(73.7% 0.021 106.9)
olive.500
oklch(58% 0.031 107.3)
olive.600
oklch(46.6% 0.025 107.3)
olive.700
oklch(39.4% 0.023 107.4)
olive.800
oklch(28.6% 0.016 107.4)
olive.900
oklch(22.8% 0.013 107.4)
olive.950
oklch(15.3% 0.006 107.1)

mist

mist.50
oklch(98.7% 0.002 197.1)
mist.100
oklch(96.3% 0.002 197.1)
mist.200
oklch(92.5% 0.005 214.3)
mist.300
oklch(87.2% 0.007 219.6)
mist.400
oklch(72.3% 0.014 214.4)
mist.500
oklch(56% 0.021 213.5)
mist.600
oklch(45% 0.017 213.2)
mist.700
oklch(37.8% 0.015 216)
mist.800
oklch(27.5% 0.011 216.9)
mist.900
oklch(21.8% 0.008 223.9)
mist.950
oklch(14.8% 0.004 228.8)

taupe

taupe.50
oklch(98.6% 0.002 67.8)
taupe.100
oklch(96% 0.002 17.2)
taupe.200
oklch(92.2% 0.005 34.3)
taupe.300
oklch(86.8% 0.007 39.5)
taupe.400
oklch(71.4% 0.014 41.2)
taupe.500
oklch(54.7% 0.021 43.1)
taupe.600
oklch(43.8% 0.017 39.3)
taupe.700
oklch(36.7% 0.016 35.7)
taupe.800
oklch(26.8% 0.011 36.5)
taupe.900
oklch(21.4% 0.009 43.1)
taupe.950
oklch(14.7% 0.004 49.3)

red

red.50
oklch(97.1% 0.013 17.38)
red.100
oklch(93.6% 0.032 17.717)
red.200
oklch(88.5% 0.062 18.334)
red.300
oklch(80.8% 0.114 19.571)
red.400
oklch(70.4% 0.191 22.216)
red.500
oklch(63.7% 0.237 25.331)
red.600
oklch(57.7% 0.245 27.325)
red.700
oklch(50.5% 0.213 27.518)
red.800
oklch(44.4% 0.177 26.899)
red.900
oklch(39.6% 0.141 25.723)
red.950
oklch(25.8% 0.092 26.042)

orange

orange.50
oklch(98% 0.016 73.684)
orange.100
oklch(95.4% 0.038 75.164)
orange.200
oklch(90.1% 0.076 70.697)
orange.300
oklch(83.7% 0.128 66.29)
orange.400
oklch(75% 0.183 55.934)
orange.500
oklch(70.5% 0.213 47.604)
orange.600
oklch(64.6% 0.222 41.116)
orange.700
oklch(55.3% 0.195 38.402)
orange.800
oklch(47% 0.157 37.304)
orange.900
oklch(40.8% 0.123 38.172)
orange.950
oklch(26.6% 0.079 36.259)

amber

amber.50
oklch(98.7% 0.022 95.277)
amber.100
oklch(96.2% 0.059 95.617)
amber.200
oklch(92.4% 0.12 95.746)
amber.300
oklch(87.9% 0.169 91.605)
amber.400
oklch(82.8% 0.189 84.429)
amber.500
oklch(76.9% 0.188 70.08)
amber.600
oklch(66.6% 0.179 58.318)
amber.700
oklch(55.5% 0.163 48.998)
amber.800
oklch(47.3% 0.137 46.201)
amber.900
oklch(41.4% 0.112 45.904)
amber.950
oklch(27.9% 0.077 45.635)

yellow

yellow.50
oklch(98.7% 0.026 102.212)
yellow.100
oklch(97.3% 0.071 103.193)
yellow.200
oklch(94.5% 0.129 101.54)
yellow.300
oklch(90.5% 0.182 98.111)
yellow.400
oklch(85.2% 0.199 91.936)
yellow.500
oklch(79.5% 0.184 86.047)
yellow.600
oklch(68.1% 0.162 75.834)
yellow.700
oklch(55.4% 0.135 66.442)
yellow.800
oklch(47.6% 0.114 61.907)
yellow.900
oklch(42.1% 0.095 57.708)
yellow.950
oklch(28.6% 0.066 53.813)

lime

lime.50
oklch(98.6% 0.031 120.757)
lime.100
oklch(96.7% 0.067 122.328)
lime.200
oklch(93.8% 0.127 124.321)
lime.300
oklch(89.7% 0.196 126.665)
lime.400
oklch(84.1% 0.238 128.85)
lime.500
oklch(76.8% 0.233 130.85)
lime.600
oklch(64.8% 0.2 131.684)
lime.700
oklch(53.2% 0.157 131.589)
lime.800
oklch(45.3% 0.124 130.933)
lime.900
oklch(40.5% 0.101 131.063)
lime.950
oklch(27.4% 0.072 132.109)

green

green.50
oklch(98.2% 0.018 155.826)
green.100
oklch(96.2% 0.044 156.743)
green.200
oklch(92.5% 0.084 155.995)
green.300
oklch(87.1% 0.15 154.449)
green.400
oklch(79.2% 0.209 151.711)
green.500
oklch(72.3% 0.219 149.579)
green.600
oklch(62.7% 0.194 149.214)
green.700
oklch(52.7% 0.154 150.069)
green.800
oklch(44.8% 0.119 151.328)
green.900
oklch(39.3% 0.095 152.535)
green.950
oklch(26.6% 0.065 152.934)

emerald

emerald.50
oklch(97.9% 0.021 166.113)
emerald.100
oklch(95% 0.052 163.051)
emerald.200
oklch(90.5% 0.093 164.15)
emerald.300
oklch(84.5% 0.143 164.978)
emerald.400
oklch(76.5% 0.177 163.223)
emerald.500
oklch(69.6% 0.17 162.48)
emerald.600
oklch(59.6% 0.145 163.225)
emerald.700
oklch(50.8% 0.118 165.612)
emerald.800
oklch(43.2% 0.095 166.913)
emerald.900
oklch(37.8% 0.077 168.94)
emerald.950
oklch(26.2% 0.051 172.552)

teal

teal.50
oklch(98.4% 0.014 180.72)
teal.100
oklch(95.3% 0.051 180.801)
teal.200
oklch(91% 0.096 180.426)
teal.300
oklch(85.5% 0.138 181.071)
teal.400
oklch(77.7% 0.152 181.912)
teal.500
oklch(70.4% 0.14 182.503)
teal.600
oklch(60% 0.118 184.704)
teal.700
oklch(51.1% 0.096 186.391)
teal.800
oklch(43.7% 0.078 188.216)
teal.900
oklch(38.6% 0.063 188.416)
teal.950
oklch(27.7% 0.046 192.524)

cyan

cyan.50
oklch(98.4% 0.019 200.873)
cyan.100
oklch(95.6% 0.045 203.388)
cyan.200
oklch(91.7% 0.08 205.041)
cyan.300
oklch(86.5% 0.127 207.078)
cyan.400
oklch(78.9% 0.154 211.53)
cyan.500
oklch(71.5% 0.143 215.221)
cyan.600
oklch(60.9% 0.126 221.723)
cyan.700
oklch(52% 0.105 223.128)
cyan.800
oklch(45% 0.085 224.283)
cyan.900
oklch(39.8% 0.07 227.392)
cyan.950
oklch(30.2% 0.056 229.695)

sky

sky.50
oklch(97.7% 0.013 236.62)
sky.100
oklch(95.1% 0.026 236.824)
sky.200
oklch(90.1% 0.058 230.902)
sky.300
oklch(82.8% 0.111 230.318)
sky.400
oklch(74.6% 0.16 232.661)
sky.500
oklch(68.5% 0.169 237.323)
sky.600
oklch(58.8% 0.158 241.966)
sky.700
oklch(50% 0.134 242.749)
sky.800
oklch(44.3% 0.11 240.79)
sky.900
oklch(39.1% 0.09 240.876)
sky.950
oklch(29.3% 0.066 243.157)

blue

blue.50
oklch(97% 0.014 254.604)
blue.100
oklch(93.2% 0.032 255.585)
blue.200
oklch(88.2% 0.059 254.128)
blue.300
oklch(80.9% 0.105 251.813)
blue.400
oklch(70.7% 0.165 254.624)
blue.500
oklch(62.3% 0.214 259.815)
blue.600
oklch(54.6% 0.245 262.881)
blue.700
oklch(48.8% 0.243 264.376)
blue.800
oklch(42.4% 0.199 265.638)
blue.900
oklch(37.9% 0.146 265.522)
blue.950
oklch(28.2% 0.091 267.935)

indigo

indigo.50
oklch(96.2% 0.018 272.314)
indigo.100
oklch(93% 0.034 272.788)
indigo.200
oklch(87% 0.065 274.039)
indigo.300
oklch(78.5% 0.115 274.713)
indigo.400
oklch(67.3% 0.182 276.935)
indigo.500
oklch(58.5% 0.233 277.117)
indigo.600
oklch(51.1% 0.262 276.966)
indigo.700
oklch(45.7% 0.24 277.023)
indigo.800
oklch(39.8% 0.195 277.366)
indigo.900
oklch(35.9% 0.144 278.697)
indigo.950
oklch(25.7% 0.09 281.288)

violet

violet.50
oklch(96.9% 0.016 293.756)
violet.100
oklch(94.3% 0.029 294.588)
violet.200
oklch(89.4% 0.057 293.283)
violet.300
oklch(81.1% 0.111 293.571)
violet.400
oklch(70.2% 0.183 293.541)
violet.500
oklch(60.6% 0.25 292.717)
violet.600
oklch(54.1% 0.281 293.009)
violet.700
oklch(49.1% 0.27 292.581)
violet.800
oklch(43.2% 0.232 292.759)
violet.900
oklch(38% 0.189 293.745)
violet.950
oklch(28.3% 0.141 291.089)

purple

purple.50
oklch(97.7% 0.014 308.299)
purple.100
oklch(94.6% 0.033 307.174)
purple.200
oklch(90.2% 0.063 306.703)
purple.300
oklch(82.7% 0.119 306.383)
purple.400
oklch(71.4% 0.203 305.504)
purple.500
oklch(62.7% 0.265 303.9)
purple.600
oklch(55.8% 0.288 302.321)
purple.700
oklch(49.6% 0.265 301.924)
purple.800
oklch(43.8% 0.218 303.724)
purple.900
oklch(38.1% 0.176 304.987)
purple.950
oklch(29.1% 0.149 302.717)

fuchsia

fuchsia.50
oklch(97.7% 0.017 320.058)
fuchsia.100
oklch(95.2% 0.037 318.852)
fuchsia.200
oklch(90.3% 0.076 319.62)
fuchsia.300
oklch(83.3% 0.145 321.434)
fuchsia.400
oklch(74% 0.238 322.16)
fuchsia.500
oklch(66.7% 0.295 322.15)
fuchsia.600
oklch(59.1% 0.293 322.896)
fuchsia.700
oklch(51.8% 0.253 323.949)
fuchsia.800
oklch(45.2% 0.211 324.591)
fuchsia.900
oklch(40.1% 0.17 325.612)
fuchsia.950
oklch(29.3% 0.136 325.661)

pink

pink.50
oklch(97.1% 0.014 343.198)
pink.100
oklch(94.8% 0.028 342.258)
pink.200
oklch(89.9% 0.061 343.231)
pink.300
oklch(82.3% 0.12 346.018)
pink.400
oklch(71.8% 0.202 349.761)
pink.500
oklch(65.6% 0.241 354.308)
pink.600
oklch(59.2% 0.249 0.584)
pink.700
oklch(52.5% 0.223 3.958)
pink.800
oklch(45.9% 0.187 3.815)
pink.900
oklch(40.8% 0.153 2.432)
pink.950
oklch(28.4% 0.109 3.907)

rose

rose.50
oklch(96.9% 0.015 12.422)
rose.100
oklch(94.1% 0.03 12.58)
rose.200
oklch(89.2% 0.058 10.001)
rose.300
oklch(81% 0.117 11.638)
rose.400
oklch(71.2% 0.194 13.428)
rose.500
oklch(64.5% 0.246 16.439)
rose.600
oklch(58.6% 0.253 17.585)
rose.700
oklch(51.4% 0.222 16.935)
rose.800
oklch(45.5% 0.188 13.697)
rose.900
oklch(41% 0.159 10.272)
rose.950
oklch(27.1% 0.105 12.094)

Spacing

Use the spacing key in the theme section of your Panda config file to customize the default spacing values.

panda.config.ts

import { defineConfig } from '@pandacss/dev'
 
export default defineConfig({
  theme: {
    extend: {
      tokens: {
        spacing: {
          gutter: { value: '32px' }
        }
      }
    }
  }
})

Panda ships with the following spacing tokens by default:

Name

Value

Pixel

0

0rem

0px

0.5

0.125rem

2px

1

0.25rem

4px

1.5

0.375rem

6px

2

0.5rem

8px

2.5

0.625rem

10px

3

0.75rem

12px

3.5

0.875rem

14px

4

1rem

16px

4.5

1.125rem

18px

5

1.25rem

20px

5.5

1.375rem

22px

6

1.5rem

24px

7

1.75rem

28px

8

2rem

32px

9

2.25rem

36px

10

2.5rem

40px

11

2.75rem

44px

12

3rem

48px

14

3.5rem

56px

16

4rem

64px

20

5rem

80px

24

6rem

96px

28

7rem

112px

32

8rem

128px

36

9rem

144px

40

10rem

160px

44

11rem

176px

48

12rem

192px

52

13rem

208px

56

14rem

224px

60

15rem

240px

64

16rem

256px

72

18rem

288px

80

20rem

320px

96

24rem

384px

Border Radius

Use the radii key in the theme section of your Panda config file to customize the default border radius values.

xs

0.125rem (2px)

sm

0.25rem (4px)

md

0.375rem (6px)

lg

0.5rem (8px)

xl

0.75rem (12px)

2xl

1rem (16px)

3xl

1.5rem (24px)

4xl

2rem (32px)

full

9999px (9999px)

Shadows

Use the shadows key in the theme section of your Panda config file to customize the default box shadows values.

Panda ships with the following shadows by default:

2xs

0 1px rgb(0 0 0 / 0.05)

xs

0 1px 2px 0 rgb(0 0 0 / 0.05)

sm

0 1px 3px 0 rgb(0 0 0 / 0.1)

0 1px 2px -1px rgb(0 0 0 / 0.1)

md

0 4px 6px -1px rgb(0 0 0 / 0.1)

0 2px 4px -2px rgb(0 0 0 / 0.1)

lg

0 10px 15px -3px rgb(0 0 0 / 0.1)

0 4px 6px -4px rgb(0 0 0 / 0.1)

xl

0 20px 25px -5px rgb(0 0 0 / 0.1)

0 8px 10px -6px rgb(0 0 0 / 0.1)

2xl

0 25px 50px -12px rgb(0 0 0 / 0.25)

inner

inset 0 2px 4px 0 rgb(0 0 0 / 0.05)

inset-2xs

inset 0 1px rgb(0 0 0 / 0.05)

inset-xs

inset 0 1px 1px rgb(0 0 0 / 0.05)

inset-sm

inset 0 2px 4px rgb(0 0 0 / 0.05)

Sizing

Use the sizes key in the theme section of your Panda config file to customize the default sizing values.

panda.config.ts

import { defineConfig } from '@pandacss/dev'
 
export default defineConfig({
  theme: {
    extend: {
      tokens: {
        sizes: {
          icon: { value: '24px' }
        }
      }
    }
  }
})

Panda ships with the following sizing tokens by default, in addition with the values from the default Panda spacing tokens:

Name

Value

Pixel

md

28rem

448px

lg

32rem

512px

xl

36rem

576px

2xl

42rem

672px

3xl

48rem

768px

4xl

56rem

896px

prose

60ch

60ch

5xl

64rem

1024px

6xl

72rem

1152px

7xl

80rem

1280px

8xl

90rem

1440px

full

100%

100%

min

min-content

min-content

max

max-content

max-content

fit

fit-content

fit-content

Fonts

Use the fonts key in the theme object to customize the default font families.

panda.config.ts

import { defineConfig } from '@pandacss/dev'
 
export default defineConfig({
  theme: {
    extend: {
      tokens: {
        fonts: {
          marketing: { value: 'Inter Variable' }
        }
      }
    }
  }
})

Panda ships with the following font families tokens by default:

Ag

sans

ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"

Ag

serif

ui-serif,Georgia,Cambria,"Times New Roman",Times,serif

Ag

mono

ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace

Font Sizes

Use the fontSizes key in the theme object to customize the default font sizes.

panda.config.ts

import { defineConfig } from '@pandacss/dev'
 
export default defineConfig({
  theme: {
    extend: {
      tokens: {
        fontSizes: {
          big: { value: '80px' }
        }
      }
    }
  }
})

Panda ships with the following font size tokens by default:

2xs

0.5rem

Ag

xs

0.75rem

Ag

sm

0.875rem

Ag

md

1rem

Ag

lg

1.125rem

Ag

xl

1.25rem

Ag

2xl

1.5rem

Ag

3xl

1.875rem

Ag

4xl

2.25rem

Ag

5xl

3rem

Ag

6xl

3.75rem

Ag

7xl

4.5rem

Ag

8xl

6rem

Ag

9xl

8rem

Ag

Keyframes

Use the keyframes key in the theme section of your Panda config file to customize the default keyframes.

panda.config.ts

import { defineConfig } from '@pandacss/dev'
 
export default defineConfig({
  theme: {
    extend: {
      keyframes: {
        fadein: {
          '0%': { opacity: '0' },
          '100%': { opacity: '1' }
        },
        fadeout: {
          '0%': { opacity: '1' },
          '100%': { opacity: '0' }
        }
      }
    }
  }
})

Panda ships with the following keyframes by default:

spin

ping

pulse

bounce

Minimal setup

If you want to use Panda with the bare minimum, without any of the defaults, you can read more about it here