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>