Toast
A message that appears on the screen to provide feedback on an action.
import { defineConfig } from '@pandacss/dev'
import { createPreset } from '@park-ui/panda-preset'
export default defineConfig({
preflight: true,
presets: [
'@pandacss/preset-base',
createPreset({
accentColor: '__ACCENT_COLOR__',
grayColor: '__GRAY_COLOR__',
borderRadius: '__BORDER_RADIUS__',
}),
],
include: ['./src/**/*.{js,jsx,ts,tsx}'],
jsxFramework: '__JS_FRAMEWORK__',
outdir: 'styled-system',
})
import { parkwindPlugin } from '@park-ui/tailwind-plugin'
import type { Config } from 'tailwindcss'
const config: Config = {
content: ['./src/**/*.{astro,html,js,jsx,svelte,ts,tsx,vue}'],
theme: {
extend: {},
},
plugins: [parkwindPlugin],
parkUI: {
accentColor: '__ACCENT_COLOR__',
grayColor: '__GRAY_COLOR__',
borderRadius: '__BORDER_RADIUS__',
},
darkMode: ['class'],
}
export default config
A message that appears on the screen to provide feedback on an action.
import { createToaster } from '@ark-ui/react/toast'
import { XIcon } from 'lucide-react'
import { Button } from '~/components/ui/button'
import { IconButton } from '~/components/ui/icon-button'
import * as Toast from '~/components/ui/toast'
const [Toaster, toast] = createToaster({
placement: 'top-end',
render(toast) {
return (
<Toast.Root>
<Toast.Title>{toast.title}</Toast.Title>
<Toast.Description>{toast.description}</Toast.Description>
<Toast.CloseTrigger asChild>
<IconButton size="sm" variant="link">
<XIcon />
</IconButton>
</Toast.CloseTrigger>
</Toast.Root>
)
},
})
export const Demo = () => (
<>
<Button
variant="outline"
onClick={() => toast.create({ title: 'Title', description: 'Description' })}
>
Create Toast
</Button>
<Toaster />
</>
)
Insert code snippet into your project. Update import paths as needed.
import { Toast } from '@ark-ui/react/toast'
import type { ComponentProps } from 'react'
import { tv } from 'tailwind-variants'
import { createStyleContext } from '~/lib/create-style-context'
const styles = tv(
{
base: 'toast',
slots: {
group: 'toast__group',
root: 'toast__root',
title: 'toast__title',
description: 'toast__description',
closeTrigger: 'toast__closeTrigger',
},
variants: {},
},
{ twMerge: false },
)
const { withProvider, withContext } = createStyleContext(styles)
export const Root = withProvider(Toast.Root, 'root')
export const CloseTrigger = withContext(Toast.CloseTrigger, 'closeTrigger')
export const Description = withContext(Toast.Description, 'description')
export const Group = withContext(Toast.Group, 'group')
export const Title = withContext(Toast.Title, 'title')
export type RootProps = ComponentProps<typeof Root>
export interface CloseTriggerProps extends ComponentProps<typeof CloseTrigger> {}
export interface DescriptionProps extends ComponentProps<typeof Description> {}
export interface GroupProps extends ComponentProps<typeof Group> {}
export interface TitleProps extends ComponentProps<typeof Title> {}
import { Toast } from '@ark-ui/solid'
import type { ComponentProps } from 'solid-js'
import { tv } from 'tailwind-variants'
import { createStyleContext } from '~/lib/create-style-context'
const styles = tv(
{
base: 'toast',
slots: {
group: 'toast__group',
root: 'toast__root',
title: 'toast__title',
description: 'toast__description',
closeTrigger: 'toast__closeTrigger',
},
variants: {},
},
{ twMerge: false },
)
const { withProvider, withContext } = createStyleContext(styles)
export const Root = withProvider(Toast.Root, 'root')
export const CloseTrigger = withContext(Toast.CloseTrigger, 'closeTrigger')
export const Description = withContext(Toast.Description, 'description')
export const Group = withContext(Toast.Group, 'group')
export const Title = withContext(Toast.Title, 'title')
export type RootProps = ComponentProps<typeof Root>
export interface CloseTriggerProps extends ComponentProps<typeof CloseTrigger> {}
export interface DescriptionProps extends ComponentProps<typeof Description> {}
export interface GroupProps extends ComponentProps<typeof Group> {}
export interface TitleProps extends ComponentProps<typeof Title> {}
Not yet available
Previous
TextareaNext
Toggle Group