Snackbar
BetaTransient notification surface with optional action, auto-dismiss, and stacking support.
Installation
npm install @xaui/native
Import
import { Snackbar, SnackbarStack } from '@xaui/native/snackbar'
Basic Usage
Minimal example showing the component with its default configuration.
import { Snackbar } from '@xaui/native/snackbar'export function Example() {return <Snackbar />}
Basic
A simple snackbar with a message.
import { useState } from 'react'import { Snackbar } from '@xaui/native/snackbar'import { Button } from '@xaui/native/button'export function BasicExample() {const [visible, setVisible] = useState(false)return (<><Button onPress={() => setVisible(true)}>Show Snackbar</Button><Snackbarmessage="File saved successfully."isVisible={visible}onClose={() => setVisible(false)}/></>)}
With Action
Snackbar with an action label the user can tap.
import { useState } from 'react'import { Snackbar } from '@xaui/native/snackbar'import { Button } from '@xaui/native/button'export function WithActionExample() {const [visible, setVisible] = useState(false)return (<><Button onPress={() => setVisible(true)}>Show</Button><Snackbarmessage="Message deleted."actionLabel="Undo"onActionPress={() => console.log('undo')}isVisible={visible}onClose={() => setVisible(false)}/></>)}
Theme Colors
Use themeColor to convey semantic meaning.
import { useState } from 'react'import { Snackbar } from '@xaui/native/snackbar'import { Button } from '@xaui/native/button'import { Column } from '@xaui/native/view'export function ThemeColorsExample() {const [color, setColor] = useState<string | null>(null)return (<Column gap={8}><Button onPress={() => setColor('success')}>Success</Button><Button onPress={() => setColor('danger')}>Danger</Button><Button onPress={() => setColor('warning')}>Warning</Button><Snackbarmessage="Operation completed."themeColor={color as 'success' | 'danger' | 'warning'}isVisible={color !== null}onClose={() => setColor(null)}/></Column>)}
Stack
Show multiple snackbars at once with SnackbarStack.
import { useState } from 'react'import { SnackbarStack } from '@xaui/native/snackbar'import type { SnackbarItem } from '@xaui/native/snackbar'import { Button } from '@xaui/native/button'export function StackExample() {const [items, setItems] = useState<SnackbarItem[]>([])const addItem = () => {const id = Date.now().toString()setItems(prev => [...prev, { id, message: `Notification ${prev.length + 1}` }])}const dismiss = (id: string) => {setItems(prev => prev.filter(item => item.id !== id))}return (<><Button onPress={addItem}>Add notification</Button><SnackbarStack items={items} onDismiss={dismiss} /></>)}