Skip to content

Styling ​

You can style your notifications globally with the toastOptions inside the Toaster component, or for each notification manually.

Set default for all toasts ​

vue
<template>
  <Toaster
    class=""
    :toast-options="{
      style: {
        border: '1px solid #713200',
        padding: '16px',
        color: '#713200',
      },
    }"
  />
</template>

Set default for specific types ​

vue
<Toaster
  :toastOptions="{
    success: {
      style: {
        background: 'green',
      },
    },
    error: {
      style: {
        background: 'red',
      },
    },
  }"
/>

Style per toast ​

js
toast('I have a border.', {
  style: {
    border: '1px solid black',
  },
});

Change the offset ​

If you want to change the offset of your notifications, you can adapt the absolute position in containerStyle.

vue
<Toaster
  :containerStyle="{
    top: 20,
    left: 20,
    bottom: 20,
    right: 20,
  }"
/>

Change position of the toaster ​

By default, the toaster is position fixed in the window. If you want to place it somewhere else, you can ovewrite the position with containerStyle.

vue
<Toaster
  :containerStyle="{
    position: 'relative',
  }"
/>

Change offset between toasts ​

If you want to change the offset between notifications change the gutter.

vue
<Toaster :gutter="24" />

Change icon color ​

All icon colors can be changed by supplying a iconTheme with a primary & secondary color.

vue
<Toaster
  :toastOptions="{
    success: {
      iconTheme: {
        primary: 'green',
        secondary: 'black',
      },
    },
  }"
/>

Change enter and exit animations ​

In this example, we provide a render function with the default <ToastBar />. We overwrite the animation style based on the current state.

vue
<script setup lang="ts">
import { Toaster, ToastBar } from 'react-hot-toast';

</script>

<template>
  <Toaster position="bottom-center" :toast-options="{ duration: 500000 }">
    <template #toastBar="{ toast, position }">
      <ToastBar
        :toast="toast"
        :position="position"
        :style="{
          ...toast.style,
          animation: toast.visible ? 'custom-enter 1s ease' : 'custom-exit 1s ease',
        }"
      >
        <button @click="handleDismiss(toast)">
          X
        </button>
      </ToastBar>
    </template>
  </Toaster>
</template>