// import snacks import clsx from 'clsx'; import { Transition } from '@headlessui/react'; import React, { Fragment, useEffect } from 'react'; import { addSnack, removeSnack, SnacksSignal } from '../signals/Snacks'; // locals import Loading from './Loading'; import IconTick from '../icons/Tick'; import IconClose from '../icons/Close'; import ButtonIcon from './Button/Icon'; /** * snacks component * * @param props */ const ComponentSnacks = (props = {}) => { // use effect useEffect(() => { // check window if (typeof window === 'undefined') return; window.addSnack = addSnack; }, [typeof window]); // return jsx return !!Object.keys(SnacksSignal.value || {}).length && (
{/* Notification panel, dynamically insert this into the live region when it needs to be displayed */}
{Object.values(SnacksSignal.value || {}).map((snack) => (
{typeof snack.progress !== 'undefined' ? ( ((snack.progress || 0) >= 100) ? (

{snack.message}

removeSnack(snack)} >
))}
); }; // export default export default ComponentSnacks;