react-snackbar-glass 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/createSnackbarStore.ts","../src/core/defaultStore.ts","../src/components/icons.tsx","../src/components/SnackbarItem.tsx","../src/SnackbarHost.tsx","../src/SnackbarProvider.tsx","../src/toast.ts"],"names":["isValidElement","record","jsxs","jsx","useState","useRef","useEffect","useSyncExternalStore","useLayoutEffect","createPortal","createContext","useMemo","preset","useContext","toast"],"mappings":"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","file":"index.cjs","sourcesContent":["import { isValidElement } from 'react';\nimport type {\n ResolvedSnackbarStoreConfig,\n SnackbarCloseReason,\n SnackbarOptions,\n SnackbarPromiseContent,\n SnackbarPromiseOptions,\n SnackbarRecord,\n SnackbarStore,\n SnackbarStoreConfig,\n} from '../types';\n\nconst EMPTY: readonly SnackbarRecord[] = Object.freeze([]);\n\nconst DEFAULT_CONFIG: ResolvedSnackbarStoreConfig = {\n position: 'bottom-right',\n duration: 5000,\n dismissible: true,\n progress: true,\n compact: false,\n tone: 'glass',\n size: 'md',\n maxVisible: 3,\n};\n\ninterface TimerState {\n remaining: number;\n startedAt: number | null;\n handle: ReturnType<typeof setTimeout> | null;\n}\n\nlet sequence = 0;\n\nfunction createId(): string {\n sequence += 1;\n const random = Math.random().toString(36).slice(2, 7);\n return `prs-${Date.now().toString(36)}-${sequence.toString(36)}-${random}`;\n}\n\n/**\n * Turns user-facing duration input into milliseconds.\n * `null`, `0`, negative or non-finite values mean \"persistent\".\n */\nfunction normalizeDuration(\n value: number | null | undefined,\n fallback: number,\n): number {\n if (value === undefined) return fallback;\n if (value === null) return Infinity;\n if (!Number.isFinite(value) || value <= 0) return Infinity;\n return Math.max(1, Math.round(value));\n}\n\nfunction isPlainOptions(value: unknown): value is SnackbarOptions {\n return (\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n !isValidElement(value) &&\n !('$$typeof' in value)\n );\n}\n\nfunction contentToOptions(content: unknown): SnackbarOptions {\n if (isPlainOptions(content)) return content;\n return { message: content as SnackbarOptions['message'] };\n}\n\nfunction resolveContent<T>(\n content: SnackbarPromiseContent<T>,\n value: T,\n): SnackbarOptions {\n const resolved = typeof content === 'function' ? content(value) : content;\n return contentToOptions(resolved);\n}\n\nexport function createSnackbarStore(\n initialConfig: SnackbarStoreConfig = {},\n): SnackbarStore {\n let config: ResolvedSnackbarStoreConfig = {\n ...DEFAULT_CONFIG,\n ...(initialConfig.position !== undefined\n ? { position: initialConfig.position }\n : null),\n ...(initialConfig.duration !== undefined\n ? {\n duration: normalizeDuration(\n initialConfig.duration,\n DEFAULT_CONFIG.duration,\n ),\n }\n : null),\n ...(initialConfig.dismissible !== undefined\n ? { dismissible: initialConfig.dismissible }\n : null),\n ...(initialConfig.progress !== undefined\n ? { progress: initialConfig.progress }\n : null),\n ...(initialConfig.compact !== undefined\n ? { compact: initialConfig.compact }\n : null),\n ...(initialConfig.tone !== undefined ? { tone: initialConfig.tone } : null),\n ...(initialConfig.size !== undefined ? { size: initialConfig.size } : null),\n ...(initialConfig.maxVisible !== undefined\n ? { maxVisible: Math.max(1, Math.floor(initialConfig.maxVisible)) }\n : null),\n };\n\n let records: readonly SnackbarRecord[] = EMPTY;\n const listeners = new Set<() => void>();\n const timers = new Map<string, TimerState>();\n const shown = new Set<string>();\n const pauseReasons = new Map<string, Set<string>>();\n let pageHidden = false;\n let minimized = false;\n\n const emit = () => {\n for (const listener of listeners) listener();\n };\n\n const find = (id: string) => records.find((record) => record.id === id);\n\n const replace = (id: string, record: SnackbarRecord) => {\n records = records.map((current) => (current.id === id ? record : current));\n };\n\n const cleanup = (id: string) => {\n timers.delete(id);\n shown.delete(id);\n pauseReasons.delete(id);\n };\n\n const stopTimer = (timer: TimerState) => {\n if (timer.handle !== null) {\n clearTimeout(timer.handle);\n timer.handle = null;\n }\n if (timer.startedAt !== null) {\n timer.remaining = Math.max(0, timer.remaining - (Date.now() - timer.startedAt));\n timer.startedAt = null;\n }\n };\n\n const schedule = (id: string, timer: TimerState) => {\n timer.startedAt = Date.now();\n timer.handle = setTimeout(() => {\n timer.handle = null;\n timer.startedAt = null;\n timer.remaining = 0;\n dismiss(id, 'timeout');\n }, Math.max(0, timer.remaining));\n };\n\n const startTimer = (id: string) => {\n const record = find(id);\n if (\n !record ||\n record.phase !== 'visible' ||\n !shown.has(id) ||\n record.duration === Infinity ||\n pageHidden ||\n (pauseReasons.get(id)?.size ?? 0) > 0\n ) {\n return;\n }\n\n const existing = timers.get(id);\n if (existing) {\n // Pause stops the handle but keeps the remaining time on the entry.\n if (existing.handle === null && existing.startedAt === null) {\n schedule(id, existing);\n }\n return;\n }\n\n const timer: TimerState = {\n remaining: record.duration,\n startedAt: null,\n handle: null,\n };\n timers.set(id, timer);\n schedule(id, timer);\n };\n\n const resetTimer = (id: string) => {\n const timer = timers.get(id);\n if (timer) {\n if (timer.handle !== null) clearTimeout(timer.handle);\n timers.delete(id);\n }\n startTimer(id);\n };\n\n const setPaused = (id: string, paused: boolean) => {\n const record = find(id);\n if (!record || record.paused === paused) return;\n replace(id, { ...record, paused });\n emit();\n };\n\n const pause = (id: string, reason = 'manual') => {\n const record = find(id);\n if (!record || record.phase !== 'visible') return;\n\n let reasons = pauseReasons.get(id);\n if (!reasons) {\n reasons = new Set();\n pauseReasons.set(id, reasons);\n }\n if (reasons.has(reason)) return;\n reasons.add(reason);\n\n const timer = timers.get(id);\n if (timer) stopTimer(timer);\n setPaused(id, true);\n };\n\n const resume = (id: string, reason = 'manual') => {\n const reasons = pauseReasons.get(id);\n if (!reasons || !reasons.has(reason)) return;\n reasons.delete(reason);\n if (reasons.size > 0) return;\n\n pauseReasons.delete(id);\n setPaused(id, false);\n startTimer(id);\n };\n\n const dismiss = (id: string, reason: SnackbarCloseReason = 'manual') => {\n const record = find(id);\n if (!record || record.phase === 'exiting') return;\n\n const timer = timers.get(id);\n if (timer) {\n stopTimer(timer);\n timers.delete(id);\n }\n\n // A queued snackbar has never been painted, so it can be removed at once.\n if (!shown.has(id)) {\n records = records.filter((current) => current.id !== id);\n cleanup(id);\n emit();\n record.onClose?.(reason, id);\n return;\n }\n\n pauseReasons.delete(id);\n replace(id, {\n ...record,\n phase: 'exiting',\n closeReason: reason,\n paused: false,\n });\n emit();\n record.onClose?.(reason, id);\n };\n\n const dismissAll = (reason: SnackbarCloseReason = 'dismissAll') => {\n const callbacks: Array<() => void> = [];\n const remaining: SnackbarRecord[] = [];\n\n for (const record of records) {\n if (record.phase === 'exiting') {\n remaining.push(record);\n continue;\n }\n\n const timer = timers.get(record.id);\n if (timer) {\n stopTimer(timer);\n timers.delete(record.id);\n }\n\n if (!shown.has(record.id)) {\n cleanup(record.id);\n callbacks.push(() => record.onClose?.(reason, record.id));\n continue;\n }\n\n pauseReasons.delete(record.id);\n remaining.push({\n ...record,\n phase: 'exiting',\n closeReason: reason,\n paused: false,\n });\n callbacks.push(() => record.onClose?.(reason, record.id));\n }\n\n records = remaining;\n emit();\n for (const callback of callbacks) callback();\n };\n\n const show = (options: SnackbarOptions): string => {\n const id = options.id ?? createId();\n const existing = find(id);\n\n if (existing) {\n update(id, options);\n const current = find(id);\n if (current && current.phase === 'exiting') {\n records = records.map((record) =>\n record.id === id\n ? { ...record, phase: 'visible', closeReason: undefined, paused: false }\n : record,\n );\n pauseReasons.delete(id);\n emit();\n startTimer(id);\n }\n return id;\n }\n\n const record: SnackbarRecord = {\n id,\n title: options.title,\n message: options.message,\n variant: options.variant ?? 'neutral',\n tone: options.tone ?? config.tone,\n size: options.size ?? config.size,\n duration: normalizeDuration(options.duration, config.duration),\n position: options.position ?? config.position,\n icon: options.icon,\n action: options.action ?? null,\n dismissible: options.dismissible ?? config.dismissible,\n progress: options.progress ?? config.progress,\n compact: options.compact ?? config.compact,\n className: options.className,\n style: options.style,\n createdAt: Date.now(),\n phase: 'visible',\n paused: false,\n closeReason: undefined,\n onOpen: options.onOpen,\n onClose: options.onClose,\n };\n\n records = [...records, record];\n emit();\n return id;\n };\n\n const update = (id: string, options: Partial<SnackbarOptions>): void => {\n const record = find(id);\n if (!record) return;\n\n const next: SnackbarRecord = {\n ...record,\n ...(options.title !== undefined ? { title: options.title } : null),\n ...(options.message !== undefined ? { message: options.message } : null),\n ...(options.variant !== undefined ? { variant: options.variant } : null),\n ...(options.tone !== undefined ? { tone: options.tone } : null),\n ...(options.size !== undefined ? { size: options.size } : null),\n ...(options.position !== undefined ? { position: options.position } : null),\n ...(options.icon !== undefined ? { icon: options.icon } : null),\n ...(options.action !== undefined ? { action: options.action } : null),\n ...(options.dismissible !== undefined\n ? { dismissible: options.dismissible }\n : null),\n ...(options.progress !== undefined ? { progress: options.progress } : null),\n ...(options.compact !== undefined ? { compact: options.compact } : null),\n ...(options.className !== undefined ? { className: options.className } : null),\n ...(options.style !== undefined ? { style: options.style } : null),\n ...(options.onOpen !== undefined ? { onOpen: options.onOpen } : null),\n ...(options.onClose !== undefined ? { onClose: options.onClose } : null),\n ...(options.duration !== undefined\n ? { duration: normalizeDuration(options.duration, record.duration) }\n : null),\n };\n\n const durationChanged = next.duration !== record.duration;\n replace(id, next);\n emit();\n\n if (\n durationChanged &&\n next.phase === 'visible' &&\n shown.has(id)\n ) {\n if (next.duration === Infinity) {\n const timer = timers.get(id);\n if (timer) {\n stopTimer(timer);\n timers.delete(id);\n }\n } else {\n resetTimer(id);\n }\n }\n };\n\n const notifyShown = (id: string) => {\n if (shown.has(id)) return;\n const record = find(id);\n if (!record || record.phase !== 'visible') return;\n shown.add(id);\n record.onOpen?.(id);\n startTimer(id);\n };\n\n const notifyExited = (id: string) => {\n const record = find(id);\n if (!record || record.phase !== 'exiting') return;\n cleanup(id);\n records = records.filter((current) => current.id !== id);\n emit();\n };\n\n const setPageHidden = (hidden: boolean) => {\n if (pageHidden === hidden) return;\n pageHidden = hidden;\n for (const record of records) {\n if (hidden) {\n pause(record.id, 'page');\n } else {\n resume(record.id, 'page');\n startTimer(record.id);\n }\n }\n };\n\n const setConfig = (patch: SnackbarStoreConfig) => {\n config = {\n ...config,\n ...(patch.position !== undefined ? { position: patch.position } : null),\n ...(patch.duration !== undefined\n ? {\n duration: normalizeDuration(patch.duration, config.duration),\n }\n : null),\n ...(patch.dismissible !== undefined\n ? { dismissible: patch.dismissible }\n : null),\n ...(patch.progress !== undefined ? { progress: patch.progress } : null),\n ...(patch.compact !== undefined ? { compact: patch.compact } : null),\n ...(patch.tone !== undefined ? { tone: patch.tone } : null),\n ...(patch.size !== undefined ? { size: patch.size } : null),\n ...(patch.maxVisible !== undefined\n ? { maxVisible: Math.max(1, Math.floor(patch.maxVisible)) }\n : null),\n };\n };\n\n const promise = <T,>(\n input: Promise<T>,\n messages: SnackbarPromiseOptions<T>,\n options: SnackbarOptions = {},\n ): Promise<T> => {\n const loadingOptions = contentToOptions(messages.loading ?? 'Loading…');\n const id = options.id ?? createId();\n\n show({\n dismissible: false,\n ...options,\n ...loadingOptions,\n id,\n duration:\n loadingOptions.duration !== undefined ? loadingOptions.duration : null,\n variant: loadingOptions.variant ?? 'loading',\n progress: loadingOptions.progress ?? false,\n });\n\n const settle = <Value,>(\n content: SnackbarPromiseContent<Value>,\n value: Value,\n variant: 'success' | 'error',\n ) => {\n const next = resolveContent(content, value);\n update(id, {\n ...next,\n variant: next.variant ?? variant,\n duration:\n next.duration !== undefined\n ? next.duration\n : options.duration !== undefined\n ? options.duration\n : 4000,\n });\n };\n\n return input.then(\n (value) => {\n settle(messages.success, value, 'success');\n return value;\n },\n (error: unknown) => {\n settle(messages.error, error, 'error');\n throw error;\n },\n );\n };\n\n return {\n show,\n update,\n dismiss,\n dismissAll,\n promise,\n subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n getSnapshot: () => records,\n getServerSnapshot: () => EMPTY,\n getConfig: () => ({ ...config }),\n setConfig,\n pause,\n resume,\n notifyShown,\n notifyExited,\n setPageHidden,\n getMinimized: () => minimized,\n getServerMinimized: () => false,\n setMinimized(next: boolean) {\n if (minimized === next) return;\n minimized = next;\n emit();\n },\n };\n}\n\n","import type { SnackbarStore } from '../types';\nimport { createSnackbarStore } from './createSnackbarStore';\n\nlet defaultStore: SnackbarStore | null = null;\n\n/**\n * The store shared by the module-level `toast` API and any\n * `<SnackbarProvider>` that is not given an explicit `store`.\n *\n * Created lazily so importing the package on the server has no side effects.\n */\nexport function getDefaultStore(): SnackbarStore {\n if (!defaultStore) defaultStore = createSnackbarStore();\n return defaultStore;\n}\n\n/**\n * Swaps the global store. Useful for tests, isolating apps or wiring the\n * global `toast` API to a store you created yourself.\n * Pass `null` to go back to a fresh default store on next use.\n */\nexport function setDefaultStore(store: SnackbarStore | null): void {\n defaultStore = store;\n}\n","import type { ReactNode } from 'react';\nimport type { SnackbarVariant } from '../types';\n\nconst strokeProps = {\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 1.7,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n} as const;\n\nconst BellIcon = (\n <svg viewBox=\"0 0 20 20\" width=\"18\" height=\"18\" aria-hidden=\"true\">\n <path\n {...strokeProps}\n d=\"M5.2 8.1a4.8 4.8 0 0 1 9.6 0c0 3.1 1.3 4.3 1.3 4.3H3.9s1.3-1.2 1.3-4.3Z\"\n />\n <path {...strokeProps} d=\"M8.2 15.2a1.9 1.9 0 0 0 3.6 0\" />\n </svg>\n);\n\nconst CheckIcon = (\n <svg viewBox=\"0 0 20 20\" width=\"18\" height=\"18\" aria-hidden=\"true\">\n <path {...strokeProps} d=\"M4.6 10.4 8 13.8l7.4-7.6\" strokeWidth={2} />\n </svg>\n);\n\nconst ErrorIcon = (\n <svg viewBox=\"0 0 20 20\" width=\"18\" height=\"18\" aria-hidden=\"true\">\n <circle {...strokeProps} cx=\"10\" cy=\"10\" r=\"6.6\" />\n <path {...strokeProps} d=\"M10 6.4v4.2\" />\n <circle cx=\"10\" cy=\"13.5\" r=\"0.95\" fill=\"currentColor\" />\n </svg>\n);\n\nconst WarningIcon = (\n <svg viewBox=\"0 0 20 20\" width=\"18\" height=\"18\" aria-hidden=\"true\">\n <path\n {...strokeProps}\n d=\"M8.6 3.6a1.6 1.6 0 0 1 2.8 0l5.2 9.6a1.6 1.6 0 0 1-1.4 2.4H4.8a1.6 1.6 0 0 1-1.4-2.4l5.2-9.6Z\"\n />\n <path {...strokeProps} d=\"M10 7.6v3.2\" />\n <circle cx=\"10\" cy=\"13.3\" r=\"0.95\" fill=\"currentColor\" />\n </svg>\n);\n\nconst InfoIcon = (\n <svg viewBox=\"0 0 20 20\" width=\"18\" height=\"18\" aria-hidden=\"true\">\n <circle {...strokeProps} cx=\"10\" cy=\"10\" r=\"6.6\" />\n <path {...strokeProps} d=\"M10 9.1v4.2\" />\n <circle cx=\"10\" cy=\"6.5\" r=\"0.95\" fill=\"currentColor\" />\n </svg>\n);\n\nconst SpinnerIcon = (\n <svg\n viewBox=\"0 0 20 20\"\n width=\"18\"\n height=\"18\"\n aria-hidden=\"true\"\n className=\"prs-icon-spin\"\n >\n <circle\n {...strokeProps}\n cx=\"10\"\n cy=\"10\"\n r=\"6.4\"\n opacity=\"0.22\"\n strokeWidth={2}\n />\n <path\n {...strokeProps}\n d=\"M10 3.6a6.4 6.4 0 0 1 6.4 6.4\"\n strokeWidth={2}\n />\n </svg>\n);\n\nconst SparkIcon = (\n <svg viewBox=\"0 0 20 20\" width=\"18\" height=\"18\" aria-hidden=\"true\">\n <path\n {...strokeProps}\n d=\"M10 2.9c.55 3.9 2.2 5.55 6.1 6.1-3.9.55-5.55 2.2-6.1 6.1-.55-3.9-2.2-5.55-6.1-6.1C7.8 8.45 9.45 6.8 10 2.9Z\"\n />\n <path {...strokeProps} d=\"M15.2 13.4c.2 1.4.8 2 2.2 2.2-1.4.2-2 .8-2.2 2.2-.2-1.4-.8-2-2.2-2.2 1.4-.2 2-.8 2.2-2.2Z\" />\n </svg>\n);\n\nexport const defaultIcons: Record<SnackbarVariant, ReactNode> = {\n neutral: BellIcon,\n success: CheckIcon,\n error: ErrorIcon,\n warning: WarningIcon,\n info: InfoIcon,\n loading: SpinnerIcon,\n custom: SparkIcon,\n};\n\nexport const DefaultCloseIcon = (\n <svg viewBox=\"0 0 16 16\" width=\"14\" height=\"14\" aria-hidden=\"true\">\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n d=\"M4.2 4.2l7.6 7.6M11.8 4.2l-7.6 7.6\"\n />\n </svg>\n);\n","import {\n useEffect,\n useRef,\n useState,\n type AnimationEvent,\n type CSSProperties,\n type FocusEvent,\n type PointerEvent as ReactPointerEvent,\n type ReactNode,\n} from 'react';\nimport type {\n SnackbarRecord,\n SnackbarStore,\n SnackbarVariant,\n} from '../types';\nimport { DefaultCloseIcon, defaultIcons } from './icons';\n\ninterface SnackbarItemProps {\n record: SnackbarRecord;\n store: SnackbarStore;\n icons?: Partial<Record<SnackbarVariant, ReactNode>> | undefined;\n closeIcon?: ReactNode | undefined;\n closeLabel: string;\n pauseOnHover: boolean;\n pauseOnFocus: boolean;\n swipeToDismiss: boolean;\n swipeThreshold: number;\n}\n\ninterface Gesture {\n pointerId: number;\n startX: number;\n startY: number;\n axis: 'pending' | 'x';\n}\n\nexport function SnackbarItem({\n record,\n store,\n icons,\n closeIcon,\n closeLabel,\n pauseOnHover,\n pauseOnFocus,\n swipeToDismiss,\n swipeThreshold,\n}: SnackbarItemProps) {\n const [dragX, setDragX] = useState(0);\n const [dragging, setDragging] = useState(false);\n const [actionPending, setActionPending] = useState(false);\n const gesture = useRef<Gesture | null>(null);\n const dragXRef = useRef(0);\n const draggingRef = useRef(false);\n const suppressClick = useRef(false);\n const surfaceRef = useRef<HTMLDivElement>(null);\n\n const { id, phase, action, title, message, variant, duration } = record;\n\n useEffect(() => {\n store.notifyShown(id);\n }, [store, id]);\n\n useEffect(() => {\n if (phase !== 'exiting') return;\n const timeout = setTimeout(() => store.notifyExited(id), 400);\n return () => clearTimeout(timeout);\n }, [phase, store, id]);\n\n const resetDrag = () => {\n dragXRef.current = 0;\n draggingRef.current = false;\n setDragX(0);\n setDragging(false);\n };\n\n const pauseForDrag = () => {\n store.pause(id, 'drag');\n };\n\n const resumeForDrag = () => {\n store.resume(id, 'drag');\n };\n\n const handlePointerDown = (event: ReactPointerEvent<HTMLDivElement>) => {\n suppressClick.current = false;\n if (!swipeToDismiss || phase === 'exiting') return;\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n\n const target = event.target as HTMLElement;\n if (\n target.closest(\n 'button, a, input, textarea, select, [role=\"button\"], [data-prs-no-swipe]',\n )\n ) {\n return;\n }\n\n gesture.current = {\n pointerId: event.pointerId,\n startX: event.clientX,\n startY: event.clientY,\n axis: 'pending',\n };\n };\n\n const handlePointerMove = (event: ReactPointerEvent<HTMLDivElement>) => {\n const current = gesture.current;\n if (!current) return;\n\n const dx = event.clientX - current.startX;\n const dy = event.clientY - current.startY;\n\n if (current.axis === 'pending') {\n if (Math.abs(dx) < 6 && Math.abs(dy) < 6) return;\n if (Math.abs(dy) > Math.abs(dx)) {\n // Vertical intent: let the page scroll.\n gesture.current = null;\n return;\n }\n current.axis = 'x';\n draggingRef.current = true;\n setDragging(true);\n pauseForDrag();\n surfaceRef.current?.setPointerCapture?.(event.pointerId);\n }\n\n if (event.cancelable) event.preventDefault();\n const absolute = Math.abs(dx);\n const damped = absolute > 96 ? 96 + (absolute - 96) * 0.32 : absolute;\n const next = Math.sign(dx) * damped;\n dragXRef.current = next;\n setDragX(next);\n if (absolute > 8) suppressClick.current = true;\n };\n\n const finishGesture = (event: ReactPointerEvent<HTMLDivElement>) => {\n const current = gesture.current;\n if (!current) return;\n\n if (draggingRef.current) {\n const shouldDismiss = Math.abs(dragXRef.current) >= swipeThreshold;\n resetDrag();\n resumeForDrag();\n if (surfaceRef.current?.hasPointerCapture?.(current.pointerId)) {\n surfaceRef.current.releasePointerCapture(current.pointerId);\n }\n if (shouldDismiss) {\n suppressClick.current = true;\n store.dismiss(id, 'swipe');\n }\n } else {\n resetDrag();\n }\n\n gesture.current = null;\n if (event.type === 'pointercancel') resumeForDrag();\n };\n\n const handleLostPointerCapture = () => {\n if (!draggingRef.current) return;\n resetDrag();\n resumeForDrag();\n gesture.current = null;\n };\n\n const handleAnimationEnd = (event: AnimationEvent<HTMLDivElement>) => {\n if (event.target !== event.currentTarget) return;\n if (phase === 'exiting') store.notifyExited(id);\n };\n\n const handleAction = async () => {\n if (!action || actionPending) return;\n\n const result = action.onClick?.(id);\n if (result && typeof result.then === 'function') {\n setActionPending(true);\n try {\n await result;\n } finally {\n setActionPending(false);\n }\n }\n\n if (action.closeOnClick !== false) store.dismiss(id, 'action');\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n if (!pauseOnFocus) return;\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) {\n store.resume(id, 'focus');\n }\n };\n\n const resolvedIcon =\n record.icon === undefined\n ? (icons?.[variant] ?? defaultIcons[variant])\n : record.icon;\n const showIcon = record.icon !== false;\n const showProgress =\n !record.compact &&\n record.progress &&\n Number.isFinite(duration) &&\n duration > 0;\n\n const style = {\n ...record.style,\n '--prs-drag-x': `${dragX}px`,\n '--prs-drag-opacity': String(\n 1 - Math.min(Math.abs(dragX) / 300, 0.55),\n ),\n } as CSSProperties;\n\n return (\n <div\n className={`prs-item${record.className ? ` ${record.className}` : ''}`}\n data-variant={variant}\n data-tone={record.tone}\n data-size={record.size}\n data-state={phase}\n data-paused={record.paused ? 'true' : 'false'}\n data-dragging={dragging ? 'true' : 'false'}\n data-has-icon={showIcon ? 'true' : 'false'}\n data-dismissible={record.dismissible ? 'true' : 'false'}\n data-compact={record.compact ? 'true' : 'false'}\n data-prs-id={record.id}\n data-position={record.position}\n style={style}\n role={variant === 'error' ? 'alert' : 'status'}\n aria-live={variant === 'error' ? 'assertive' : 'polite'}\n aria-atomic=\"true\"\n aria-busy={actionPending || variant === 'loading' ? true : undefined}\n onPointerEnter={() => {\n if (pauseOnHover) store.pause(id, 'hover');\n }}\n onPointerLeave={() => {\n if (pauseOnHover) store.resume(id, 'hover');\n }}\n onFocus={() => {\n if (pauseOnFocus) store.pause(id, 'focus');\n }}\n onBlur={handleBlur}\n onKeyDown={(event) => {\n if (event.key === 'Escape' && record.dismissible) {\n event.stopPropagation();\n store.dismiss(id, 'escape');\n }\n }}\n onAnimationEnd={handleAnimationEnd}\n >\n <div\n ref={surfaceRef}\n className=\"prs-item__surface\"\n onClickCapture={(event) => {\n if (!suppressClick.current) return;\n suppressClick.current = false;\n event.preventDefault();\n event.stopPropagation();\n }}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={finishGesture}\n onPointerCancel={finishGesture}\n onLostPointerCapture={handleLostPointerCapture}\n >\n {showIcon ? (\n <span className=\"prs-item__icon\" aria-hidden=\"true\">\n {resolvedIcon}\n </span>\n ) : null}\n\n <div\n className=\"prs-item__content\"\n data-has-title={title !== undefined && title !== null ? 'true' : 'false'}\n >\n {title !== undefined && title !== null ? (\n <div className=\"prs-item__title\">{title}</div>\n ) : null}\n {message !== undefined && message !== null ? (\n <div className=\"prs-item__message\">{message}</div>\n ) : null}\n {action ? (\n <div className=\"prs-item__actions\">\n <button\n type=\"button\"\n className=\"prs-action\"\n onClick={handleAction}\n disabled={actionPending}\n aria-busy={actionPending || undefined}\n >\n {actionPending ? (\n <span className=\"prs-action__spinner\" aria-hidden=\"true\" />\n ) : null}\n <span>{action.label}</span>\n </button>\n </div>\n ) : null}\n </div>\n\n {record.dismissible ? (\n <button\n type=\"button\"\n className=\"prs-close\"\n aria-label={closeLabel}\n onClick={() => store.dismiss(id, 'manual')}\n >\n {closeIcon ?? DefaultCloseIcon}\n </button>\n ) : null}\n\n {showProgress ? (\n <div className=\"prs-progress\" aria-hidden=\"true\">\n <span\n key={duration}\n className=\"prs-progress__bar\"\n style={{ animationDuration: `${duration}ms` }}\n />\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n useSyncExternalStore,\n type CSSProperties,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport type {\n SnackbarHostProps,\n SnackbarPosition,\n SnackbarRecord,\n} from './types';\nimport { SnackbarItem } from './components/SnackbarItem';\n\nconst POSITIONS: readonly SnackbarPosition[] = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\n\nfunction defaultMinimizedLabel(count: number): string {\n return `${count} notification${count === 1 ? '' : 's'}`;\n}\n\nexport function SnackbarHost({\n store,\n maxVisible = 3,\n offset = 20,\n gap = 12,\n width = 384,\n theme = 'auto',\n container,\n pauseOnHover = true,\n pauseOnFocus = true,\n pauseOnDocumentHidden = true,\n swipeToDismiss = true,\n swipeThreshold = 88,\n icons,\n closeIcon,\n closeLabel = 'Dismiss notification',\n regionLabel = 'Notifications',\n minimizedLabel = defaultMinimizedLabel,\n className,\n style,\n zIndex = 2147483000,\n dir,\n}: SnackbarHostProps) {\n const records = useSyncExternalStore(\n store.subscribe,\n store.getSnapshot,\n store.getServerSnapshot,\n );\n const minimized = useSyncExternalStore(\n store.subscribe,\n store.getMinimized,\n store.getServerMinimized,\n );\n const [portalNode, setPortalNode] = useState<HTMLElement | null>(null);\n const regionRefs = useRef(new Map<SnackbarPosition, HTMLElement>());\n const topsRef = useRef(new Map<string, number>());\n\n useEffect(() => {\n if (typeof document === 'undefined') return;\n const target =\n typeof container === 'function'\n ? container()\n : container ?? document.body;\n setPortalNode(target);\n return () => setPortalNode(null);\n }, [container]);\n\n useEffect(() => {\n if (!pauseOnDocumentHidden || typeof document === 'undefined') return;\n\n const sync = () => store.setPageHidden(document.visibilityState === 'hidden');\n sync();\n document.addEventListener('visibilitychange', sync);\n return () => {\n document.removeEventListener('visibilitychange', sync);\n store.setPageHidden(false);\n };\n }, [store, pauseOnDocumentHidden]);\n\n // FLIP: when the stack grows or collapses, existing cards glide into their\n // new slot instead of snapping. New cards are left to the CSS enter spring.\n useLayoutEffect(() => {\n if (!portalNode) {\n topsRef.current.clear();\n return;\n }\n if (typeof window === 'undefined') return;\n\n const reduced =\n typeof window.matchMedia === 'function' &&\n window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n const next = new Map<string, number>();\n\n for (const region of regionRefs.current.values()) {\n const regionTop = region.getBoundingClientRect().top;\n const nodes = region.querySelectorAll<HTMLElement>('[data-prs-id]');\n\n for (const node of nodes) {\n const id = node.dataset.prsId;\n if (!id) continue;\n\n const top = regionTop + node.offsetTop;\n next.set(id, top);\n\n const previous = topsRef.current.get(id);\n if (\n reduced ||\n previous === undefined ||\n node.dataset.state === 'exiting' ||\n typeof node.animate !== 'function'\n ) {\n continue;\n }\n\n const delta = previous - top;\n if (Math.abs(delta) < 0.5) continue;\n\n node.animate(\n [\n { transform: `translate3d(0, ${delta}px, 0)` },\n { transform: 'translate3d(0, 0, 0)' },\n ],\n {\n duration: 320,\n easing: 'cubic-bezier(0.22, 1, 0.36, 1)',\n },\n );\n }\n }\n\n topsRef.current = next;\n });\n\n if (!portalNode) return null;\n\n const byPosition = new Map<SnackbarPosition, SnackbarRecord[]>();\n for (const record of records) {\n const bucket = byPosition.get(record.position);\n if (bucket) bucket.push(record);\n else byPosition.set(record.position, [record]);\n }\n\n const limit = Math.max(1, Math.floor(maxVisible));\n const minimizedPosition = records[0]?.position ?? null;\n\n const rootStyle = {\n '--prs-width': `${width}px`,\n '--prs-offset': `${offset}px`,\n '--prs-gap': `${gap}px`,\n '--prs-z-index': String(zIndex),\n ...style,\n } as CSSProperties;\n\n return createPortal(\n <div\n className={`prs-root${className ? ` ${className}` : ''}`}\n data-prs-theme={theme}\n dir={dir}\n style={rootStyle}\n >\n {POSITIONS.map((position) => {\n const items = byPosition.get(position);\n if (!items || items.length === 0) return null;\n\n if (minimized) {\n if (position !== minimizedPosition) return null;\n\n return (\n <section\n key={position}\n className=\"prs-region prs-region--minimized\"\n data-position={position}\n aria-label={regionLabel}\n >\n <button\n type=\"button\"\n className=\"prs-minimized\"\n data-count={items.length}\n onClick={() => store.setMinimized(false)}\n title=\"Expand notifications\"\n >\n <span className=\"prs-minimized__dot\" aria-hidden=\"true\" />\n <span className=\"prs-minimized__count\">\n {minimizedLabel(items.length)}\n </span>\n </button>\n </section>\n );\n }\n\n const visible = items.slice(0, limit);\n\n return (\n <section\n key={position}\n ref={(node) => {\n if (node) regionRefs.current.set(position, node);\n else regionRefs.current.delete(position);\n }}\n className=\"prs-region\"\n data-position={position}\n aria-label={regionLabel}\n >\n {visible.map((record) => (\n <SnackbarItem\n key={record.id}\n record={record}\n store={store}\n icons={icons}\n closeIcon={closeIcon}\n closeLabel={closeLabel}\n pauseOnHover={pauseOnHover}\n pauseOnFocus={pauseOnFocus}\n swipeToDismiss={swipeToDismiss}\n swipeThreshold={swipeThreshold}\n />\n ))}\n </section>\n );\n })}\n </div>,\n portalNode,\n );\n}\n","import {\n createContext,\n useContext,\n useEffect,\n useMemo,\n type ReactNode,\n} from 'react';\nimport { getDefaultStore } from './core/defaultStore';\nimport { SnackbarHost } from './SnackbarHost';\nimport type {\n SnackbarApi,\n SnackbarOptions,\n SnackbarProviderProps,\n SnackbarStore,\n SnackbarVariant,\n} from './types';\n\ninterface SnackbarContextValue {\n store: SnackbarStore;\n api: SnackbarApi;\n}\n\nconst SnackbarContext = createContext<SnackbarContextValue | null>(null);\n\ntype PresetOptions = Omit<SnackbarOptions, 'message' | 'variant'>;\n\nexport function SnackbarProvider({\n children,\n store: providedStore,\n position,\n duration,\n dismissible,\n progress,\n compact,\n tone,\n size,\n maxVisible,\n ...hostProps\n}: SnackbarProviderProps) {\n const store = useMemo(\n () =>\n // Falling back to the shared default store is what makes the\n // module-level `toast` API render without extra wiring.\n providedStore ?? getDefaultStore(),\n // The store is intentionally created once per provider instance.\n // Subsequent config changes are pushed below.\n [providedStore],\n );\n\n useEffect(() => {\n store.setConfig({\n position,\n duration,\n dismissible,\n progress,\n compact,\n tone,\n size,\n maxVisible,\n });\n }, [\n store,\n position,\n duration,\n dismissible,\n progress,\n compact,\n tone,\n size,\n maxVisible,\n ]);\n\n const api = useMemo<SnackbarApi>(() => {\n const preset =\n (variant: SnackbarVariant) =>\n (message: ReactNode, options: PresetOptions = {}) =>\n store.show({ ...options, message, variant });\n\n return {\n show: store.show,\n update: store.update,\n dismiss: store.dismiss,\n dismissAll: store.dismissAll,\n promise: store.promise,\n success: preset('success'),\n error: preset('error'),\n warning: preset('warning'),\n info: preset('info'),\n neutral: preset('neutral'),\n custom: preset('custom'),\n loading: (message, options = {}) =>\n store.show({\n ...options,\n message,\n variant: 'loading',\n duration:\n options.duration !== undefined ? options.duration : null,\n }),\n minimize: () => store.setMinimized(true),\n expand: () => store.setMinimized(false),\n isMinimized: () => store.getMinimized(),\n store,\n };\n }, [store]);\n\n const value = useMemo(() => ({ store, api }), [store, api]);\n\n return (\n <SnackbarContext.Provider value={value}>\n {children}\n <SnackbarHost\n store={store}\n maxVisible={maxVisible ?? store.getConfig().maxVisible}\n {...hostProps}\n />\n </SnackbarContext.Provider>\n );\n}\n\nfunction useSnackbarContext(): SnackbarContextValue {\n const context = useContext(SnackbarContext);\n if (!context) {\n throw new Error(\n 'useSnackbar must be used inside a <SnackbarProvider>. ' +\n 'Render the provider above the component that displays snackbars.',\n );\n }\n return context;\n}\n\n/** Imperative API for showing and managing snackbars. */\nexport function useSnackbar(): SnackbarApi {\n return useSnackbarContext().api;\n}\n\n/** Low-level store access for subscriptions and advanced integrations. */\nexport function useSnackbarStore(): SnackbarStore {\n return useSnackbarContext().store;\n}\n","import { isValidElement, type ReactNode } from 'react';\nimport { getDefaultStore } from './core/defaultStore';\nimport type {\n SnackbarCloseReason,\n SnackbarOptions,\n SnackbarPromiseOptions,\n SnackbarVariant,\n ToastApi,\n ToastPresetOptions,\n} from './types';\n\n/** Same shape as `SnackbarOptions`, minus what the preset supplies. */\nfunction isOptionsObject(value: unknown): value is SnackbarOptions {\n return (\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n !isValidElement(value) &&\n !('$$typeof' in value)\n );\n}\n\nfunction preset(variant: SnackbarVariant) {\n return (message: ReactNode, options: ToastPresetOptions = {}): string =>\n getDefaultStore().show({ ...options, message, variant });\n}\n\nfunction createToast(): ToastApi {\n const toast = ((\n content: ReactNode | SnackbarOptions,\n options?: ToastPresetOptions,\n ): string => {\n // `toast({ message, variant })` and `toast('Saved')` are both valid.\n if (options === undefined && isOptionsObject(content)) {\n return getDefaultStore().show(content);\n }\n return getDefaultStore().show({\n ...options,\n message: content as ReactNode,\n });\n }) as ToastApi;\n\n toast.show = (options) => getDefaultStore().show(options);\n toast.update = (id, options) => getDefaultStore().update(id, options);\n toast.dismiss = (id?: string, reason?: SnackbarCloseReason) =>\n getDefaultStore().dismiss(id, reason);\n toast.dismissAll = (reason?: SnackbarCloseReason) =>\n getDefaultStore().dismissAll(reason);\n\n toast.success = preset('success');\n toast.error = preset('error');\n toast.warning = preset('warning');\n toast.info = preset('info');\n toast.neutral = preset('neutral');\n toast.custom = preset('custom');\n toast.loading = (message, options = {}) =>\n getDefaultStore().show({\n ...options,\n message,\n variant: 'loading',\n duration: options.duration !== undefined ? options.duration : null,\n });\n\n toast.promise = <T,>(\n input: Promise<T>,\n messages: SnackbarPromiseOptions<T>,\n options?: SnackbarOptions,\n ): Promise<T> => getDefaultStore().promise(input, messages, options);\n\n toast.minimize = () => getDefaultStore().setMinimized(true);\n toast.expand = () => getDefaultStore().setMinimized(false);\n toast.isMinimized = () => getDefaultStore().getMinimized();\n\n Object.defineProperty(toast, 'store', {\n get: getDefaultStore,\n enumerable: true,\n });\n\n return toast;\n}\n\n/**\n * Fire-and-forget toast API that works anywhere — event handlers, data\n * layers, non-React modules — as long as a `<SnackbarProvider>` (or a\n * `<SnackbarHost store={getDefaultStore()} />`) is mounted.\n *\n * ```ts\n * import { toast } from 'react-snackbar-glass';\n *\n * toast.success('Deployment complete.', { title: 'v1.4.0 is live' });\n * toast.promise(save(), { loading: 'Saving…', success: 'Saved', error: 'Failed' });\n * ```\n */\nexport const toast: ToastApi = createToast();\n"]}
1
+ {"version":3,"sources":["../src/core/createSnackbarStore.ts","../src/core/defaultStore.ts","../src/components/icons.tsx","../src/components/SnackbarItem.tsx","../src/SnackbarHost.tsx","../src/SnackbarProvider.tsx","../src/toast.ts"],"names":["isValidElement","record","jsxs","jsx","useState","useRef","useEffect","useSyncExternalStore","useLayoutEffect","createPortal","createContext","useMemo","preset","useContext","toast"],"mappings":"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","file":"index.cjs","sourcesContent":["import { isValidElement } from 'react';\nimport type {\n ResolvedSnackbarStoreConfig,\n SnackbarCloseReason,\n SnackbarLayout,\n SnackbarOptions,\n SnackbarPromiseContent,\n SnackbarPromiseOptions,\n SnackbarRecord,\n SnackbarStore,\n SnackbarStoreConfig,\n} from '../types';\n\nconst EMPTY: readonly SnackbarRecord[] = Object.freeze([]);\n\nconst DEFAULT_CONFIG: ResolvedSnackbarStoreConfig = {\n position: 'bottom-right',\n duration: 5000,\n dismissible: true,\n progress: true,\n compact: false,\n layout: 'card',\n animation: 'slide',\n enterAnimation: 'slide',\n exitAnimation: 'slide',\n tone: 'glass',\n size: 'md',\n maxVisible: 3,\n};\n\ninterface TimerState {\n remaining: number;\n startedAt: number | null;\n handle: ReturnType<typeof setTimeout> | null;\n}\n\nlet sequence = 0;\n\nfunction createId(): string {\n sequence += 1;\n const random = Math.random().toString(36).slice(2, 7);\n return `prs-${Date.now().toString(36)}-${sequence.toString(36)}-${random}`;\n}\n\n/**\n * Turns user-facing duration input into milliseconds.\n * `null`, `0`, negative or non-finite values mean \"persistent\".\n */\nfunction normalizeDuration(\n value: number | null | undefined,\n fallback: number,\n): number {\n if (value === undefined) return fallback;\n if (value === null) return Infinity;\n if (!Number.isFinite(value) || value <= 0) return Infinity;\n return Math.max(1, Math.round(value));\n}\n\nfunction isPlainOptions(value: unknown): value is SnackbarOptions {\n return (\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n !isValidElement(value) &&\n !('$$typeof' in value)\n );\n}\n\nfunction contentToOptions(content: unknown): SnackbarOptions {\n if (isPlainOptions(content)) return content;\n return { message: content as SnackbarOptions['message'] };\n}\n\nfunction resolveContent<T>(\n content: SnackbarPromiseContent<T>,\n value: T,\n): SnackbarOptions {\n const resolved = typeof content === 'function' ? content(value) : content;\n return contentToOptions(resolved);\n}\n\n/**\n * `layout` wins over the legacy `compact` flag; both fall back to the\n * store-level default.\n */\nfunction resolveLayout(\n layout: SnackbarLayout | undefined,\n compact: boolean | undefined,\n fallback: SnackbarLayout,\n): SnackbarLayout {\n if (layout !== undefined) return layout;\n if (compact !== undefined) return compact ? 'compact' : 'card';\n return fallback;\n}\n\nfunction resolveLayoutPatch(\n record: SnackbarRecord,\n options: Partial<SnackbarOptions>,\n): Partial<SnackbarRecord> {\n if (options.layout === undefined && options.compact === undefined) return {};\n const layout = resolveLayout(options.layout, options.compact, record.layout);\n return { layout, compact: layout === 'compact' };\n}\n\nfunction mergeConfig(\n previous: ResolvedSnackbarStoreConfig,\n patch: SnackbarStoreConfig,\n): ResolvedSnackbarStoreConfig {\n const layout = resolveLayout(patch.layout, patch.compact, previous.layout);\n\n return {\n position: patch.position ?? previous.position,\n duration:\n patch.duration !== undefined\n ? normalizeDuration(patch.duration, previous.duration)\n : previous.duration,\n dismissible: patch.dismissible ?? previous.dismissible,\n progress: patch.progress ?? previous.progress,\n compact: layout === 'compact',\n layout,\n animation: patch.animation ?? previous.animation,\n enterAnimation:\n patch.enterAnimation ?? patch.animation ?? previous.enterAnimation,\n exitAnimation: patch.exitAnimation ?? patch.animation ?? previous.exitAnimation,\n tone: patch.tone ?? previous.tone,\n size: patch.size ?? previous.size,\n maxVisible:\n patch.maxVisible !== undefined\n ? Math.max(1, Math.floor(patch.maxVisible))\n : previous.maxVisible,\n };\n}\n\nexport function createSnackbarStore(\n initialConfig: SnackbarStoreConfig = {},\n): SnackbarStore {\n let config: ResolvedSnackbarStoreConfig = mergeConfig(\n DEFAULT_CONFIG,\n initialConfig,\n );\n\n let records: readonly SnackbarRecord[] = EMPTY;\n const listeners = new Set<() => void>();\n const timers = new Map<string, TimerState>();\n const shown = new Set<string>();\n const pauseReasons = new Map<string, Set<string>>();\n let pageHidden = false;\n let minimized = false;\n\n const emit = () => {\n for (const listener of listeners) listener();\n };\n\n const find = (id: string) => records.find((record) => record.id === id);\n\n const replace = (id: string, record: SnackbarRecord) => {\n records = records.map((current) => (current.id === id ? record : current));\n };\n\n const cleanup = (id: string) => {\n timers.delete(id);\n shown.delete(id);\n pauseReasons.delete(id);\n };\n\n const stopTimer = (timer: TimerState) => {\n if (timer.handle !== null) {\n clearTimeout(timer.handle);\n timer.handle = null;\n }\n if (timer.startedAt !== null) {\n timer.remaining = Math.max(0, timer.remaining - (Date.now() - timer.startedAt));\n timer.startedAt = null;\n }\n };\n\n const schedule = (id: string, timer: TimerState) => {\n timer.startedAt = Date.now();\n timer.handle = setTimeout(() => {\n timer.handle = null;\n timer.startedAt = null;\n timer.remaining = 0;\n dismiss(id, 'timeout');\n }, Math.max(0, timer.remaining));\n };\n\n const startTimer = (id: string) => {\n const record = find(id);\n if (\n !record ||\n record.phase !== 'visible' ||\n !shown.has(id) ||\n record.duration === Infinity ||\n pageHidden ||\n (pauseReasons.get(id)?.size ?? 0) > 0\n ) {\n return;\n }\n\n const existing = timers.get(id);\n if (existing) {\n // Pause stops the handle but keeps the remaining time on the entry.\n if (existing.handle === null && existing.startedAt === null) {\n schedule(id, existing);\n }\n return;\n }\n\n const timer: TimerState = {\n remaining: record.duration,\n startedAt: null,\n handle: null,\n };\n timers.set(id, timer);\n schedule(id, timer);\n };\n\n const resetTimer = (id: string) => {\n const timer = timers.get(id);\n if (timer) {\n if (timer.handle !== null) clearTimeout(timer.handle);\n timers.delete(id);\n }\n startTimer(id);\n };\n\n const setPaused = (id: string, paused: boolean) => {\n const record = find(id);\n if (!record || record.paused === paused) return;\n replace(id, { ...record, paused });\n emit();\n };\n\n const pause = (id: string, reason = 'manual') => {\n const record = find(id);\n if (!record || record.phase !== 'visible') return;\n\n let reasons = pauseReasons.get(id);\n if (!reasons) {\n reasons = new Set();\n pauseReasons.set(id, reasons);\n }\n if (reasons.has(reason)) return;\n reasons.add(reason);\n\n const timer = timers.get(id);\n if (timer) stopTimer(timer);\n setPaused(id, true);\n };\n\n const resume = (id: string, reason = 'manual') => {\n const reasons = pauseReasons.get(id);\n if (!reasons || !reasons.has(reason)) return;\n reasons.delete(reason);\n if (reasons.size > 0) return;\n\n pauseReasons.delete(id);\n setPaused(id, false);\n startTimer(id);\n };\n\n const dismiss = (id: string, reason: SnackbarCloseReason = 'manual') => {\n const record = find(id);\n if (!record || record.phase === 'exiting') return;\n\n const timer = timers.get(id);\n if (timer) {\n stopTimer(timer);\n timers.delete(id);\n }\n\n // A queued snackbar has never been painted, so it can be removed at once.\n if (!shown.has(id)) {\n records = records.filter((current) => current.id !== id);\n cleanup(id);\n emit();\n record.onClose?.(reason, id);\n return;\n }\n\n pauseReasons.delete(id);\n replace(id, {\n ...record,\n phase: 'exiting',\n closeReason: reason,\n paused: false,\n });\n emit();\n record.onClose?.(reason, id);\n };\n\n const dismissAll = (reason: SnackbarCloseReason = 'dismissAll') => {\n const callbacks: Array<() => void> = [];\n const remaining: SnackbarRecord[] = [];\n\n for (const record of records) {\n if (record.phase === 'exiting') {\n remaining.push(record);\n continue;\n }\n\n const timer = timers.get(record.id);\n if (timer) {\n stopTimer(timer);\n timers.delete(record.id);\n }\n\n if (!shown.has(record.id)) {\n cleanup(record.id);\n callbacks.push(() => record.onClose?.(reason, record.id));\n continue;\n }\n\n pauseReasons.delete(record.id);\n remaining.push({\n ...record,\n phase: 'exiting',\n closeReason: reason,\n paused: false,\n });\n callbacks.push(() => record.onClose?.(reason, record.id));\n }\n\n records = remaining;\n emit();\n for (const callback of callbacks) callback();\n };\n\n const show = (options: SnackbarOptions): string => {\n const id = options.id ?? createId();\n const existing = find(id);\n\n if (existing) {\n update(id, options);\n const current = find(id);\n if (current && current.phase === 'exiting') {\n records = records.map((record) =>\n record.id === id\n ? { ...record, phase: 'visible', closeReason: undefined, paused: false }\n : record,\n );\n pauseReasons.delete(id);\n emit();\n startTimer(id);\n }\n return id;\n }\n\n const layout = resolveLayout(options.layout, options.compact, config.layout);\n\n const record: SnackbarRecord = {\n id,\n title: options.title,\n message: options.message,\n variant: options.variant ?? 'neutral',\n tone: options.tone ?? config.tone,\n size: options.size ?? config.size,\n duration: normalizeDuration(options.duration, config.duration),\n position: options.position ?? config.position,\n icon: options.icon,\n action: options.action ?? null,\n dismissible: options.dismissible ?? config.dismissible,\n progress: options.progress ?? config.progress,\n compact: layout === 'compact',\n layout,\n animation: options.animation ?? config.animation,\n enterAnimation:\n options.enterAnimation ?? options.animation ?? config.enterAnimation,\n exitAnimation:\n options.exitAnimation ?? options.animation ?? config.exitAnimation,\n className: options.className,\n style: options.style,\n createdAt: Date.now(),\n phase: 'visible',\n paused: false,\n closeReason: undefined,\n onOpen: options.onOpen,\n onClose: options.onClose,\n };\n\n records = [...records, record];\n emit();\n return id;\n };\n\n const update = (id: string, options: Partial<SnackbarOptions>): void => {\n const record = find(id);\n if (!record) return;\n\n const next: SnackbarRecord = {\n ...record,\n ...(options.title !== undefined ? { title: options.title } : null),\n ...(options.message !== undefined ? { message: options.message } : null),\n ...(options.variant !== undefined ? { variant: options.variant } : null),\n ...(options.tone !== undefined ? { tone: options.tone } : null),\n ...(options.size !== undefined ? { size: options.size } : null),\n ...(options.position !== undefined ? { position: options.position } : null),\n ...(options.icon !== undefined ? { icon: options.icon } : null),\n ...(options.action !== undefined ? { action: options.action } : null),\n ...(options.dismissible !== undefined\n ? { dismissible: options.dismissible }\n : null),\n ...(options.progress !== undefined ? { progress: options.progress } : null),\n ...resolveLayoutPatch(record, options),\n ...(options.animation !== undefined\n ? {\n animation: options.animation,\n enterAnimation: options.animation,\n exitAnimation: options.animation,\n }\n : null),\n ...(options.enterAnimation !== undefined\n ? { enterAnimation: options.enterAnimation }\n : null),\n ...(options.exitAnimation !== undefined\n ? { exitAnimation: options.exitAnimation }\n : null),\n ...(options.className !== undefined ? { className: options.className } : null),\n ...(options.style !== undefined ? { style: options.style } : null),\n ...(options.onOpen !== undefined ? { onOpen: options.onOpen } : null),\n ...(options.onClose !== undefined ? { onClose: options.onClose } : null),\n ...(options.duration !== undefined\n ? { duration: normalizeDuration(options.duration, record.duration) }\n : null),\n };\n\n const durationChanged = next.duration !== record.duration;\n replace(id, next);\n emit();\n\n if (\n durationChanged &&\n next.phase === 'visible' &&\n shown.has(id)\n ) {\n if (next.duration === Infinity) {\n const timer = timers.get(id);\n if (timer) {\n stopTimer(timer);\n timers.delete(id);\n }\n } else {\n resetTimer(id);\n }\n }\n };\n\n const notifyShown = (id: string) => {\n if (shown.has(id)) return;\n const record = find(id);\n if (!record || record.phase !== 'visible') return;\n shown.add(id);\n record.onOpen?.(id);\n startTimer(id);\n };\n\n const notifyExited = (id: string) => {\n const record = find(id);\n if (!record || record.phase !== 'exiting') return;\n cleanup(id);\n records = records.filter((current) => current.id !== id);\n emit();\n };\n\n const setPageHidden = (hidden: boolean) => {\n if (pageHidden === hidden) return;\n pageHidden = hidden;\n for (const record of records) {\n if (hidden) {\n pause(record.id, 'page');\n } else {\n resume(record.id, 'page');\n startTimer(record.id);\n }\n }\n };\n\n const setConfig = (patch: SnackbarStoreConfig) => {\n config = mergeConfig(config, patch);\n };\n\n const promise = <T,>(\n input: Promise<T>,\n messages: SnackbarPromiseOptions<T>,\n options: SnackbarOptions = {},\n ): Promise<T> => {\n const loadingOptions = contentToOptions(messages.loading ?? 'Loading…');\n const id = options.id ?? createId();\n\n show({\n dismissible: false,\n ...options,\n ...loadingOptions,\n id,\n duration:\n loadingOptions.duration !== undefined ? loadingOptions.duration : null,\n variant: loadingOptions.variant ?? 'loading',\n progress: loadingOptions.progress ?? false,\n });\n\n const settle = <Value,>(\n content: SnackbarPromiseContent<Value>,\n value: Value,\n variant: 'success' | 'error',\n ) => {\n const next = resolveContent(content, value);\n update(id, {\n ...next,\n variant: next.variant ?? variant,\n duration:\n next.duration !== undefined\n ? next.duration\n : options.duration !== undefined\n ? options.duration\n : 4000,\n });\n };\n\n return input.then(\n (value) => {\n settle(messages.success, value, 'success');\n return value;\n },\n (error: unknown) => {\n settle(messages.error, error, 'error');\n throw error;\n },\n );\n };\n\n return {\n show,\n update,\n dismiss,\n dismissAll,\n promise,\n subscribe(listener) {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n getSnapshot: () => records,\n getServerSnapshot: () => EMPTY,\n getConfig: () => ({ ...config }),\n setConfig,\n pause,\n resume,\n notifyShown,\n notifyExited,\n setPageHidden,\n getMinimized: () => minimized,\n getServerMinimized: () => false,\n setMinimized(next: boolean) {\n if (minimized === next) return;\n minimized = next;\n emit();\n },\n };\n}\n\n","import type { SnackbarStore } from '../types';\nimport { createSnackbarStore } from './createSnackbarStore';\n\nlet defaultStore: SnackbarStore | null = null;\n\n/**\n * The store shared by the module-level `toast` API and any\n * `<SnackbarProvider>` that is not given an explicit `store`.\n *\n * Created lazily so importing the package on the server has no side effects.\n */\nexport function getDefaultStore(): SnackbarStore {\n if (!defaultStore) defaultStore = createSnackbarStore();\n return defaultStore;\n}\n\n/**\n * Swaps the global store. Useful for tests, isolating apps or wiring the\n * global `toast` API to a store you created yourself.\n * Pass `null` to go back to a fresh default store on next use.\n */\nexport function setDefaultStore(store: SnackbarStore | null): void {\n defaultStore = store;\n}\n","import type { ReactNode } from 'react';\nimport type { SnackbarVariant } from '../types';\n\nconst strokeProps = {\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 1.7,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n} as const;\n\nconst BellIcon = (\n <svg viewBox=\"0 0 20 20\" width=\"18\" height=\"18\" aria-hidden=\"true\">\n <path\n {...strokeProps}\n d=\"M5.2 8.1a4.8 4.8 0 0 1 9.6 0c0 3.1 1.3 4.3 1.3 4.3H3.9s1.3-1.2 1.3-4.3Z\"\n />\n <path {...strokeProps} d=\"M8.2 15.2a1.9 1.9 0 0 0 3.6 0\" />\n </svg>\n);\n\nconst CheckIcon = (\n <svg viewBox=\"0 0 20 20\" width=\"18\" height=\"18\" aria-hidden=\"true\">\n <path {...strokeProps} d=\"M4.6 10.4 8 13.8l7.4-7.6\" strokeWidth={2} />\n </svg>\n);\n\nconst ErrorIcon = (\n <svg viewBox=\"0 0 20 20\" width=\"18\" height=\"18\" aria-hidden=\"true\">\n <circle {...strokeProps} cx=\"10\" cy=\"10\" r=\"6.6\" />\n <path {...strokeProps} d=\"M10 6.4v4.2\" />\n <circle cx=\"10\" cy=\"13.5\" r=\"0.95\" fill=\"currentColor\" />\n </svg>\n);\n\nconst WarningIcon = (\n <svg viewBox=\"0 0 20 20\" width=\"18\" height=\"18\" aria-hidden=\"true\">\n <path\n {...strokeProps}\n d=\"M8.6 3.6a1.6 1.6 0 0 1 2.8 0l5.2 9.6a1.6 1.6 0 0 1-1.4 2.4H4.8a1.6 1.6 0 0 1-1.4-2.4l5.2-9.6Z\"\n />\n <path {...strokeProps} d=\"M10 7.6v3.2\" />\n <circle cx=\"10\" cy=\"13.3\" r=\"0.95\" fill=\"currentColor\" />\n </svg>\n);\n\nconst InfoIcon = (\n <svg viewBox=\"0 0 20 20\" width=\"18\" height=\"18\" aria-hidden=\"true\">\n <circle {...strokeProps} cx=\"10\" cy=\"10\" r=\"6.6\" />\n <path {...strokeProps} d=\"M10 9.1v4.2\" />\n <circle cx=\"10\" cy=\"6.5\" r=\"0.95\" fill=\"currentColor\" />\n </svg>\n);\n\nconst SpinnerIcon = (\n <svg\n viewBox=\"0 0 20 20\"\n width=\"18\"\n height=\"18\"\n aria-hidden=\"true\"\n className=\"prs-icon-spin\"\n >\n <circle\n {...strokeProps}\n cx=\"10\"\n cy=\"10\"\n r=\"6.4\"\n opacity=\"0.22\"\n strokeWidth={2}\n />\n <path\n {...strokeProps}\n d=\"M10 3.6a6.4 6.4 0 0 1 6.4 6.4\"\n strokeWidth={2}\n />\n </svg>\n);\n\nconst SparkIcon = (\n <svg viewBox=\"0 0 20 20\" width=\"18\" height=\"18\" aria-hidden=\"true\">\n <path\n {...strokeProps}\n d=\"M10 2.9c.55 3.9 2.2 5.55 6.1 6.1-3.9.55-5.55 2.2-6.1 6.1-.55-3.9-2.2-5.55-6.1-6.1C7.8 8.45 9.45 6.8 10 2.9Z\"\n />\n <path {...strokeProps} d=\"M15.2 13.4c.2 1.4.8 2 2.2 2.2-1.4.2-2 .8-2.2 2.2-.2-1.4-.8-2-2.2-2.2 1.4-.2 2-.8 2.2-2.2Z\" />\n </svg>\n);\n\nexport const defaultIcons: Record<SnackbarVariant, ReactNode> = {\n neutral: BellIcon,\n success: CheckIcon,\n error: ErrorIcon,\n warning: WarningIcon,\n info: InfoIcon,\n loading: SpinnerIcon,\n custom: SparkIcon,\n};\n\nexport const DefaultCloseIcon = (\n <svg viewBox=\"0 0 16 16\" width=\"14\" height=\"14\" aria-hidden=\"true\">\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n d=\"M4.2 4.2l7.6 7.6M11.8 4.2l-7.6 7.6\"\n />\n </svg>\n);\n","import {\n useEffect,\n useRef,\n useState,\n type AnimationEvent,\n type CSSProperties,\n type FocusEvent,\n type PointerEvent as ReactPointerEvent,\n type ReactNode,\n} from 'react';\nimport type {\n SnackbarRecord,\n SnackbarStore,\n SnackbarVariant,\n} from '../types';\nimport { DefaultCloseIcon, defaultIcons } from './icons';\n\ninterface SnackbarItemProps {\n record: SnackbarRecord;\n store: SnackbarStore;\n icons?: Partial<Record<SnackbarVariant, ReactNode>> | undefined;\n closeIcon?: ReactNode | undefined;\n closeLabel: string;\n pauseOnHover: boolean;\n pauseOnFocus: boolean;\n swipeToDismiss: boolean;\n swipeThreshold: number;\n}\n\ninterface Gesture {\n pointerId: number;\n startX: number;\n startY: number;\n axis: 'pending' | 'x';\n}\n\nexport function SnackbarItem({\n record,\n store,\n icons,\n closeIcon,\n closeLabel,\n pauseOnHover,\n pauseOnFocus,\n swipeToDismiss,\n swipeThreshold,\n}: SnackbarItemProps) {\n const [dragX, setDragX] = useState(0);\n const [dragging, setDragging] = useState(false);\n const [actionPending, setActionPending] = useState(false);\n const gesture = useRef<Gesture | null>(null);\n const dragXRef = useRef(0);\n const draggingRef = useRef(false);\n const suppressClick = useRef(false);\n const surfaceRef = useRef<HTMLDivElement>(null);\n\n const { id, phase, action, title, message, variant, duration } = record;\n\n useEffect(() => {\n store.notifyShown(id);\n }, [store, id]);\n\n useEffect(() => {\n if (phase !== 'exiting') return;\n const timeout = setTimeout(() => store.notifyExited(id), 400);\n return () => clearTimeout(timeout);\n }, [phase, store, id]);\n\n const resetDrag = () => {\n dragXRef.current = 0;\n draggingRef.current = false;\n setDragX(0);\n setDragging(false);\n };\n\n const pauseForDrag = () => {\n store.pause(id, 'drag');\n };\n\n const resumeForDrag = () => {\n store.resume(id, 'drag');\n };\n\n const handlePointerDown = (event: ReactPointerEvent<HTMLDivElement>) => {\n suppressClick.current = false;\n if (!swipeToDismiss || phase === 'exiting') return;\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n\n const target = event.target as HTMLElement;\n if (\n target.closest(\n 'button, a, input, textarea, select, [role=\"button\"], [data-prs-no-swipe]',\n )\n ) {\n return;\n }\n\n gesture.current = {\n pointerId: event.pointerId,\n startX: event.clientX,\n startY: event.clientY,\n axis: 'pending',\n };\n };\n\n const handlePointerMove = (event: ReactPointerEvent<HTMLDivElement>) => {\n const current = gesture.current;\n if (!current) return;\n\n const dx = event.clientX - current.startX;\n const dy = event.clientY - current.startY;\n\n if (current.axis === 'pending') {\n if (Math.abs(dx) < 6 && Math.abs(dy) < 6) return;\n if (Math.abs(dy) > Math.abs(dx)) {\n // Vertical intent: let the page scroll.\n gesture.current = null;\n return;\n }\n current.axis = 'x';\n draggingRef.current = true;\n setDragging(true);\n pauseForDrag();\n surfaceRef.current?.setPointerCapture?.(event.pointerId);\n }\n\n if (event.cancelable) event.preventDefault();\n const absolute = Math.abs(dx);\n const damped = absolute > 96 ? 96 + (absolute - 96) * 0.32 : absolute;\n const next = Math.sign(dx) * damped;\n dragXRef.current = next;\n setDragX(next);\n if (absolute > 8) suppressClick.current = true;\n };\n\n const finishGesture = (event: ReactPointerEvent<HTMLDivElement>) => {\n const current = gesture.current;\n if (!current) return;\n\n if (draggingRef.current) {\n const shouldDismiss = Math.abs(dragXRef.current) >= swipeThreshold;\n resetDrag();\n resumeForDrag();\n if (surfaceRef.current?.hasPointerCapture?.(current.pointerId)) {\n surfaceRef.current.releasePointerCapture(current.pointerId);\n }\n if (shouldDismiss) {\n suppressClick.current = true;\n store.dismiss(id, 'swipe');\n }\n } else {\n resetDrag();\n }\n\n gesture.current = null;\n if (event.type === 'pointercancel') resumeForDrag();\n };\n\n const handleLostPointerCapture = () => {\n if (!draggingRef.current) return;\n resetDrag();\n resumeForDrag();\n gesture.current = null;\n };\n\n const handleAnimationEnd = (event: AnimationEvent<HTMLDivElement>) => {\n if (event.target !== event.currentTarget) return;\n if (phase === 'exiting') store.notifyExited(id);\n };\n\n const handleAction = async () => {\n if (!action || actionPending) return;\n\n const result = action.onClick?.(id);\n if (result && typeof result.then === 'function') {\n setActionPending(true);\n try {\n await result;\n } finally {\n setActionPending(false);\n }\n }\n\n if (action.closeOnClick !== false) store.dismiss(id, 'action');\n };\n\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n if (!pauseOnFocus) return;\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) {\n store.resume(id, 'focus');\n }\n };\n\n const resolvedIcon =\n record.icon === undefined\n ? (icons?.[variant] ?? defaultIcons[variant])\n : record.icon;\n const showIcon = record.icon !== false;\n const isInline = record.layout === 'inline';\n const isTimed = Number.isFinite(duration) && duration > 0;\n const showProgress = record.layout === 'card' && record.progress && isTimed;\n // Status lines stay clean; the close button only appears when the snackbar\n // would otherwise never go away on its own.\n const showClose = record.dismissible && (!isInline || !isTimed);\n\n const style = {\n ...record.style,\n '--prs-drag-x': `${dragX}px`,\n '--prs-drag-opacity': String(\n 1 - Math.min(Math.abs(dragX) / 300, 0.55),\n ),\n } as CSSProperties;\n\n return (\n <div\n className={`prs-item${record.className ? ` ${record.className}` : ''}`}\n data-variant={variant}\n data-tone={record.tone}\n data-size={record.size}\n data-state={phase}\n data-paused={record.paused ? 'true' : 'false'}\n data-dragging={dragging ? 'true' : 'false'}\n data-has-icon={showIcon ? 'true' : 'false'}\n data-dismissible={record.dismissible ? 'true' : 'false'}\n data-compact={record.compact ? 'true' : 'false'}\n data-layout={record.layout}\n data-enter={record.enterAnimation}\n data-exit={record.exitAnimation}\n data-prs-id={record.id}\n data-position={record.position}\n style={style}\n role={variant === 'error' ? 'alert' : 'status'}\n aria-live={variant === 'error' ? 'assertive' : 'polite'}\n aria-atomic=\"true\"\n aria-busy={actionPending || variant === 'loading' ? true : undefined}\n onPointerEnter={() => {\n if (pauseOnHover) store.pause(id, 'hover');\n }}\n onPointerLeave={() => {\n if (pauseOnHover) store.resume(id, 'hover');\n }}\n onFocus={() => {\n if (pauseOnFocus) store.pause(id, 'focus');\n }}\n onBlur={handleBlur}\n onKeyDown={(event) => {\n if (event.key === 'Escape' && record.dismissible) {\n event.stopPropagation();\n store.dismiss(id, 'escape');\n }\n }}\n onAnimationEnd={handleAnimationEnd}\n >\n <div\n ref={surfaceRef}\n className=\"prs-item__surface\"\n onClickCapture={(event) => {\n if (!suppressClick.current) return;\n suppressClick.current = false;\n event.preventDefault();\n event.stopPropagation();\n }}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={finishGesture}\n onPointerCancel={finishGesture}\n onLostPointerCapture={handleLostPointerCapture}\n >\n {showIcon ? (\n <span className=\"prs-item__icon\" aria-hidden=\"true\">\n {resolvedIcon}\n </span>\n ) : null}\n\n <div\n className=\"prs-item__content\"\n data-has-title={title !== undefined && title !== null ? 'true' : 'false'}\n >\n {title !== undefined && title !== null && !isInline ? (\n <div className=\"prs-item__title\">{title}</div>\n ) : null}\n {message !== undefined && message !== null ? (\n <div className=\"prs-item__message\">{message}</div>\n ) : null}\n {action ? (\n <div className=\"prs-item__actions\">\n <button\n type=\"button\"\n className=\"prs-action\"\n onClick={handleAction}\n disabled={actionPending}\n aria-busy={actionPending || undefined}\n >\n {actionPending ? (\n <span className=\"prs-action__spinner\" aria-hidden=\"true\" />\n ) : null}\n <span>{action.label}</span>\n </button>\n </div>\n ) : null}\n </div>\n\n {showClose ? (\n <button\n type=\"button\"\n className=\"prs-close\"\n aria-label={closeLabel}\n onClick={() => store.dismiss(id, 'manual')}\n >\n {closeIcon ?? DefaultCloseIcon}\n </button>\n ) : null}\n\n {showProgress ? (\n <div className=\"prs-progress\" aria-hidden=\"true\">\n <span\n key={duration}\n className=\"prs-progress__bar\"\n style={{ animationDuration: `${duration}ms` }}\n />\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n","import {\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n useSyncExternalStore,\n type CSSProperties,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport type {\n SnackbarHostProps,\n SnackbarPosition,\n SnackbarRecord,\n} from './types';\nimport { SnackbarItem } from './components/SnackbarItem';\n\nconst POSITIONS: readonly SnackbarPosition[] = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\n\nfunction defaultMinimizedLabel(count: number): string {\n return `${count} notification${count === 1 ? '' : 's'}`;\n}\n\nexport function SnackbarHost({\n store,\n maxVisible = 3,\n offset = 20,\n gap = 12,\n width = 384,\n theme = 'auto',\n container,\n pauseOnHover = true,\n pauseOnFocus = true,\n pauseOnDocumentHidden = true,\n swipeToDismiss = true,\n swipeThreshold = 88,\n icons,\n closeIcon,\n closeLabel = 'Dismiss notification',\n regionLabel = 'Notifications',\n minimizedLabel = defaultMinimizedLabel,\n className,\n style,\n zIndex = 2147483000,\n dir,\n}: SnackbarHostProps) {\n const records = useSyncExternalStore(\n store.subscribe,\n store.getSnapshot,\n store.getServerSnapshot,\n );\n const minimized = useSyncExternalStore(\n store.subscribe,\n store.getMinimized,\n store.getServerMinimized,\n );\n const [portalNode, setPortalNode] = useState<HTMLElement | null>(null);\n const regionRefs = useRef(new Map<SnackbarPosition, HTMLElement>());\n const topsRef = useRef(new Map<string, number>());\n\n useEffect(() => {\n if (typeof document === 'undefined') return;\n const target =\n typeof container === 'function'\n ? container()\n : container ?? document.body;\n setPortalNode(target);\n return () => setPortalNode(null);\n }, [container]);\n\n useEffect(() => {\n if (!pauseOnDocumentHidden || typeof document === 'undefined') return;\n\n const sync = () => store.setPageHidden(document.visibilityState === 'hidden');\n sync();\n document.addEventListener('visibilitychange', sync);\n return () => {\n document.removeEventListener('visibilitychange', sync);\n store.setPageHidden(false);\n };\n }, [store, pauseOnDocumentHidden]);\n\n // FLIP: when the stack grows or collapses, existing cards glide into their\n // new slot instead of snapping. New cards are left to the CSS enter spring.\n useLayoutEffect(() => {\n if (!portalNode) {\n topsRef.current.clear();\n return;\n }\n if (typeof window === 'undefined') return;\n\n const reduced =\n typeof window.matchMedia === 'function' &&\n window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n const next = new Map<string, number>();\n\n for (const region of regionRefs.current.values()) {\n const regionTop = region.getBoundingClientRect().top;\n const nodes = region.querySelectorAll<HTMLElement>('[data-prs-id]');\n\n for (const node of nodes) {\n const id = node.dataset.prsId;\n if (!id) continue;\n\n const top = regionTop + node.offsetTop;\n next.set(id, top);\n\n const previous = topsRef.current.get(id);\n if (\n reduced ||\n previous === undefined ||\n node.dataset.state === 'exiting' ||\n typeof node.animate !== 'function'\n ) {\n continue;\n }\n\n const delta = previous - top;\n if (Math.abs(delta) < 0.5) continue;\n\n node.animate(\n [\n { transform: `translate3d(0, ${delta}px, 0)` },\n { transform: 'translate3d(0, 0, 0)' },\n ],\n {\n duration: 320,\n easing: 'cubic-bezier(0.22, 1, 0.36, 1)',\n },\n );\n }\n }\n\n topsRef.current = next;\n });\n\n if (!portalNode) return null;\n\n const byPosition = new Map<SnackbarPosition, SnackbarRecord[]>();\n for (const record of records) {\n const bucket = byPosition.get(record.position);\n if (bucket) bucket.push(record);\n else byPosition.set(record.position, [record]);\n }\n\n const limit = Math.max(1, Math.floor(maxVisible));\n const minimizedPosition = records[0]?.position ?? null;\n\n const rootStyle = {\n '--prs-width': `${width}px`,\n '--prs-offset': `${offset}px`,\n '--prs-gap': `${gap}px`,\n '--prs-z-index': String(zIndex),\n ...style,\n } as CSSProperties;\n\n return createPortal(\n <div\n className={`prs-root${className ? ` ${className}` : ''}`}\n data-prs-theme={theme}\n dir={dir}\n style={rootStyle}\n >\n {POSITIONS.map((position) => {\n const items = byPosition.get(position);\n if (!items || items.length === 0) return null;\n\n if (minimized) {\n if (position !== minimizedPosition) return null;\n\n return (\n <section\n key={position}\n className=\"prs-region prs-region--minimized\"\n data-position={position}\n aria-label={regionLabel}\n >\n <button\n type=\"button\"\n className=\"prs-minimized\"\n data-count={items.length}\n onClick={() => store.setMinimized(false)}\n title=\"Expand notifications\"\n >\n <span className=\"prs-minimized__dot\" aria-hidden=\"true\" />\n <span className=\"prs-minimized__count\">\n {minimizedLabel(items.length)}\n </span>\n </button>\n </section>\n );\n }\n\n const visible = items.slice(0, limit);\n\n return (\n <section\n key={position}\n ref={(node) => {\n if (node) regionRefs.current.set(position, node);\n else regionRefs.current.delete(position);\n }}\n className=\"prs-region\"\n data-position={position}\n aria-label={regionLabel}\n >\n {visible.map((record) => (\n <SnackbarItem\n key={record.id}\n record={record}\n store={store}\n icons={icons}\n closeIcon={closeIcon}\n closeLabel={closeLabel}\n pauseOnHover={pauseOnHover}\n pauseOnFocus={pauseOnFocus}\n swipeToDismiss={swipeToDismiss}\n swipeThreshold={swipeThreshold}\n />\n ))}\n </section>\n );\n })}\n </div>,\n portalNode,\n );\n}\n","import {\n createContext,\n useContext,\n useEffect,\n useMemo,\n type ReactNode,\n} from 'react';\nimport { getDefaultStore } from './core/defaultStore';\nimport { SnackbarHost } from './SnackbarHost';\nimport type {\n SnackbarApi,\n SnackbarOptions,\n SnackbarProviderProps,\n SnackbarStore,\n SnackbarVariant,\n} from './types';\n\ninterface SnackbarContextValue {\n store: SnackbarStore;\n api: SnackbarApi;\n}\n\nconst SnackbarContext = createContext<SnackbarContextValue | null>(null);\n\ntype PresetOptions = Omit<SnackbarOptions, 'message' | 'variant'>;\n\nexport function SnackbarProvider({\n children,\n store: providedStore,\n position,\n duration,\n dismissible,\n progress,\n compact,\n layout,\n animation,\n enterAnimation,\n exitAnimation,\n tone,\n size,\n maxVisible,\n ...hostProps\n}: SnackbarProviderProps) {\n const store = useMemo(\n () =>\n // Falling back to the shared default store is what makes the\n // module-level `toast` API render without extra wiring.\n providedStore ?? getDefaultStore(),\n // The store is intentionally created once per provider instance.\n // Subsequent config changes are pushed below.\n [providedStore],\n );\n\n useEffect(() => {\n store.setConfig({\n position,\n duration,\n dismissible,\n progress,\n compact,\n layout,\n animation,\n enterAnimation,\n exitAnimation,\n tone,\n size,\n maxVisible,\n });\n }, [\n store,\n position,\n duration,\n dismissible,\n progress,\n compact,\n layout,\n animation,\n enterAnimation,\n exitAnimation,\n tone,\n size,\n maxVisible,\n ]);\n\n const api = useMemo<SnackbarApi>(() => {\n const preset =\n (variant: SnackbarVariant) =>\n (message: ReactNode, options: PresetOptions = {}) =>\n store.show({ ...options, message, variant });\n\n return {\n show: store.show,\n update: store.update,\n dismiss: store.dismiss,\n dismissAll: store.dismissAll,\n promise: store.promise,\n success: preset('success'),\n error: preset('error'),\n warning: preset('warning'),\n info: preset('info'),\n neutral: preset('neutral'),\n custom: preset('custom'),\n single: (message, options = {}) =>\n store.show({ ...options, message, layout: 'inline' }),\n loading: (message, options = {}) =>\n store.show({\n ...options,\n message,\n variant: 'loading',\n duration:\n options.duration !== undefined ? options.duration : null,\n }),\n minimize: () => store.setMinimized(true),\n expand: () => store.setMinimized(false),\n isMinimized: () => store.getMinimized(),\n store,\n };\n }, [store]);\n\n const value = useMemo(() => ({ store, api }), [store, api]);\n\n return (\n <SnackbarContext.Provider value={value}>\n {children}\n <SnackbarHost\n store={store}\n maxVisible={maxVisible ?? store.getConfig().maxVisible}\n {...hostProps}\n />\n </SnackbarContext.Provider>\n );\n}\n\nfunction useSnackbarContext(): SnackbarContextValue {\n const context = useContext(SnackbarContext);\n if (!context) {\n throw new Error(\n 'useSnackbar must be used inside a <SnackbarProvider>. ' +\n 'Render the provider above the component that displays snackbars.',\n );\n }\n return context;\n}\n\n/** Imperative API for showing and managing snackbars. */\nexport function useSnackbar(): SnackbarApi {\n return useSnackbarContext().api;\n}\n\n/** Low-level store access for subscriptions and advanced integrations. */\nexport function useSnackbarStore(): SnackbarStore {\n return useSnackbarContext().store;\n}\n","import { isValidElement, type ReactNode } from 'react';\nimport { getDefaultStore } from './core/defaultStore';\nimport type {\n SnackbarCloseReason,\n SnackbarOptions,\n SnackbarPromiseOptions,\n SnackbarVariant,\n ToastApi,\n ToastPresetOptions,\n} from './types';\n\n/** Same shape as `SnackbarOptions`, minus what the preset supplies. */\nfunction isOptionsObject(value: unknown): value is SnackbarOptions {\n return (\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n !isValidElement(value) &&\n !('$$typeof' in value)\n );\n}\n\nfunction preset(variant: SnackbarVariant) {\n return (message: ReactNode, options: ToastPresetOptions = {}): string =>\n getDefaultStore().show({ ...options, message, variant });\n}\n\nfunction createToast(): ToastApi {\n const toast = ((\n content: ReactNode | SnackbarOptions,\n options?: ToastPresetOptions,\n ): string => {\n // `toast({ message, variant })` and `toast('Saved')` are both valid.\n if (options === undefined && isOptionsObject(content)) {\n return getDefaultStore().show(content);\n }\n return getDefaultStore().show({\n ...options,\n message: content as ReactNode,\n });\n }) as ToastApi;\n\n toast.show = (options) => getDefaultStore().show(options);\n toast.update = (id, options) => getDefaultStore().update(id, options);\n toast.dismiss = (id?: string, reason?: SnackbarCloseReason) =>\n getDefaultStore().dismiss(id, reason);\n toast.dismissAll = (reason?: SnackbarCloseReason) =>\n getDefaultStore().dismissAll(reason);\n\n toast.success = preset('success');\n toast.error = preset('error');\n toast.warning = preset('warning');\n toast.info = preset('info');\n toast.neutral = preset('neutral');\n toast.custom = preset('custom');\n toast.single = (message, options = {}) =>\n getDefaultStore().show({ ...options, message, layout: 'inline' });\n toast.loading = (message, options = {}) =>\n getDefaultStore().show({\n ...options,\n message,\n variant: 'loading',\n duration: options.duration !== undefined ? options.duration : null,\n });\n\n toast.promise = <T,>(\n input: Promise<T>,\n messages: SnackbarPromiseOptions<T>,\n options?: SnackbarOptions,\n ): Promise<T> => getDefaultStore().promise(input, messages, options);\n\n toast.minimize = () => getDefaultStore().setMinimized(true);\n toast.expand = () => getDefaultStore().setMinimized(false);\n toast.isMinimized = () => getDefaultStore().getMinimized();\n\n Object.defineProperty(toast, 'store', {\n get: getDefaultStore,\n enumerable: true,\n });\n\n return toast;\n}\n\n/**\n * Fire-and-forget toast API that works anywhere — event handlers, data\n * layers, non-React modules — as long as a `<SnackbarProvider>` (or a\n * `<SnackbarHost store={getDefaultStore()} />`) is mounted.\n *\n * ```ts\n * import { toast } from 'react-snackbar-glass';\n *\n * toast.success('Deployment complete.', { title: 'v1.4.0 is live' });\n * toast.promise(save(), { loading: 'Saving…', success: 'Saved', error: 'Failed' });\n * ```\n */\nexport const toast: ToastApi = createToast();\n"]}
package/dist/index.css CHANGED
@@ -121,7 +121,7 @@
121
121
  max-width: 100%;
122
122
  pointer-events: auto;
123
123
  transform-origin: bottom center;
124
- animation: prs-in 440ms var(--prs-ease-spring) both;
124
+ animation: prs-in var(--prs-enter-duration, 440ms) var(--prs-ease-spring) both;
125
125
  will-change: transform, opacity;
126
126
  }
127
127
  .prs-item[data-size=xs] {
@@ -189,7 +189,7 @@
189
189
  }
190
190
  .prs-item[data-state=exiting] {
191
191
  pointer-events: none;
192
- animation: prs-out 190ms cubic-bezier(0.4, 0, 1, 1) both;
192
+ animation: prs-out var(--prs-exit-duration, 190ms) cubic-bezier(0.4, 0, 1, 1) both;
193
193
  }
194
194
  .prs-item[data-dragging=true] {
195
195
  user-select: none;
@@ -661,6 +661,50 @@
661
661
  --prs-close-icon: 11px;
662
662
  margin: 0;
663
663
  }
664
+ .prs-item[data-layout=inline] {
665
+ --prs-item-width: auto;
666
+ max-width: min(420px, 100%);
667
+ }
668
+ .prs-item[data-layout=inline] .prs-item__surface {
669
+ align-items: center;
670
+ column-gap: 9px;
671
+ padding: 8px 13px 8px 9px;
672
+ border-radius: var(--prs-radius-inline, 12px);
673
+ }
674
+ .prs-item[data-layout=inline] .prs-item__icon {
675
+ --prs-icon-size: 22px;
676
+ --prs-glyph-size: 13px;
677
+ --prs-icon-radius: 999px;
678
+ flex: none;
679
+ margin-top: 0;
680
+ }
681
+ .prs-item[data-layout=inline] .prs-item__content {
682
+ min-width: 0;
683
+ padding-top: 0;
684
+ }
685
+ .prs-item[data-layout=inline] .prs-item__title {
686
+ display: none;
687
+ }
688
+ .prs-item[data-layout=inline] .prs-item__message {
689
+ overflow: hidden;
690
+ font-size: 13px;
691
+ font-weight: 500;
692
+ line-height: 1.4;
693
+ white-space: nowrap;
694
+ text-overflow: ellipsis;
695
+ }
696
+ .prs-item[data-layout=inline] .prs-item__actions {
697
+ margin-top: 0;
698
+ }
699
+ .prs-item[data-layout=inline] .prs-action {
700
+ padding: 2px 8px;
701
+ font-size: 11.5px;
702
+ }
703
+ .prs-item[data-layout=inline] .prs-close {
704
+ --prs-close-size: 22px;
705
+ --prs-close-icon: 11px;
706
+ margin: 0;
707
+ }
664
708
  .prs-region--minimized {
665
709
  width: auto;
666
710
  padding: var(--prs-offset);
@@ -724,4 +768,124 @@
724
768
  animation: none;
725
769
  }
726
770
  }
771
+ .prs-item[data-state=visible][data-enter=fade] {
772
+ animation: prs-fade-in var(--prs-enter-duration, 260ms) ease both;
773
+ }
774
+ .prs-item[data-state=exiting][data-exit=fade] {
775
+ animation: prs-fade-out var(--prs-exit-duration, 180ms) ease both;
776
+ }
777
+ .prs-item[data-state=visible][data-enter=scale] {
778
+ animation: prs-scale-in var(--prs-enter-duration, 300ms) var(--prs-ease-out) both;
779
+ }
780
+ .prs-item[data-state=exiting][data-exit=scale] {
781
+ animation: prs-scale-out var(--prs-exit-duration, 170ms) ease both;
782
+ }
783
+ .prs-item[data-state=visible][data-enter=pop] {
784
+ animation: prs-pop-in var(--prs-enter-duration, 460ms) var(--prs-ease-spring) both;
785
+ }
786
+ .prs-item[data-state=exiting][data-exit=pop] {
787
+ animation: prs-pop-out var(--prs-exit-duration, 210ms) ease both;
788
+ }
789
+ .prs-item[data-state=visible][data-enter=flip] {
790
+ animation: prs-flip-in var(--prs-enter-duration, 420ms) var(--prs-ease-out) both;
791
+ }
792
+ .prs-item[data-state=exiting][data-exit=flip] {
793
+ animation: prs-flip-out var(--prs-exit-duration, 220ms) ease both;
794
+ }
795
+ .prs-item[data-state=visible][data-enter=none] {
796
+ animation: none;
797
+ }
798
+ .prs-item[data-state=exiting][data-exit=none] {
799
+ animation: none;
800
+ }
801
+ .prs-item[data-enter=none] .prs-item__icon {
802
+ animation: none;
803
+ }
804
+ @keyframes prs-fade-in {
805
+ from {
806
+ opacity: 0;
807
+ }
808
+ to {
809
+ opacity: 1;
810
+ }
811
+ }
812
+ @keyframes prs-fade-out {
813
+ from {
814
+ opacity: 1;
815
+ }
816
+ to {
817
+ opacity: 0;
818
+ }
819
+ }
820
+ @keyframes prs-scale-in {
821
+ from {
822
+ opacity: 0;
823
+ transform: scale(0.86);
824
+ }
825
+ to {
826
+ opacity: 1;
827
+ transform: scale(1);
828
+ }
829
+ }
830
+ @keyframes prs-scale-out {
831
+ from {
832
+ opacity: 1;
833
+ transform: scale(1);
834
+ }
835
+ to {
836
+ opacity: 0;
837
+ transform: scale(0.9);
838
+ }
839
+ }
840
+ @keyframes prs-pop-in {
841
+ 0% {
842
+ opacity: 0;
843
+ transform: scale(0.72);
844
+ }
845
+ 55% {
846
+ opacity: 1;
847
+ transform: scale(1.06);
848
+ }
849
+ 78% {
850
+ transform: scale(0.985);
851
+ }
852
+ 100% {
853
+ opacity: 1;
854
+ transform: scale(1);
855
+ }
856
+ }
857
+ @keyframes prs-pop-out {
858
+ 0% {
859
+ opacity: 1;
860
+ transform: scale(1);
861
+ }
862
+ 35% {
863
+ opacity: 1;
864
+ transform: scale(1.04);
865
+ }
866
+ 100% {
867
+ opacity: 0;
868
+ transform: scale(0.85);
869
+ }
870
+ }
871
+ @keyframes prs-flip-in {
872
+ from {
873
+ opacity: 0;
874
+ transform: perspective(900px) rotateX(-70deg);
875
+ }
876
+ to {
877
+ opacity: 1;
878
+ transform: perspective(900px) rotateX(0deg);
879
+ }
880
+ }
881
+ @keyframes prs-flip-out {
882
+ from {
883
+ opacity: 1;
884
+ transform: perspective(900px) rotateX(0deg);
885
+ }
886
+ to {
887
+ opacity: 0;
888
+ transform: perspective(900px) rotateX(70deg);
889
+ }
890
+ }
727
891
  /*# sourceMappingURL=index.css.map */