{"_id":"goey-toast","_rev":"13-1cbcd90f0b27b9354bebba58098144c6","name":"goey-toast","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"goey-toast","version":"0.1.0","keywords":["toast","notification","sonner","framer-motion","animation","morph"],"license":"MIT","_id":"goey-toast@0.1.0","maintainers":[{"name":"alfredonatal","email":"anatal31@gmail.com"}],"homepage":"https://github.com/anl331/goey-toast","bugs":{"url":"https://github.com/anl331/goey-toast/issues"},"dist":{"shasum":"353144bde9aff0507897d0b9155a829b0e832fa4","tarball":"https://registry.npmjs.org/goey-toast/-/goey-toast-0.1.0.tgz","fileCount":11,"integrity":"sha512-wjB9n+06QO4lB8J6HjMWjFTrIYK8eWR3wa3Oo9aix/MEqbU4S/sCl6DjOsnxMLW905p7pyl8Jy/qmvfHBEZpQw==","signatures":[{"sig":"MEYCIQCGpF+7bvPXl6TZMshUf2axb8WgPmNUo4aVAxH5XbLOZAIhAMIoZt7T7VCKjbgR4ssVAJ3iIFROXgLnO9dm52jRjShw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273177},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/index.css"},"gitHead":"1fee3065f50ea29b8851ab1d4625b71d124913bd","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"alfredonatal","email":"anatal31@gmail.com"},"repository":{"url":"git+https://github.com/anl331/goey-toast.git","type":"git"},"_npmVersion":"11.6.2","description":"A gooey, morphing toast component built on Sonner with Framer Motion animations","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"sonner":"^2.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^28.0.0","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","typescript":"^5.9.3","@types/react":"^19.2.14","framer-motion":"^12.34.0","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","framer-motion":">=10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/goey-toast_0.1.0_1771097957566_0.7123373064527012","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"goey-toast","version":"0.1.1","keywords":["toast","notification","sonner","framer-motion","animation","morph"],"license":"MIT","_id":"goey-toast@0.1.1","maintainers":[{"name":"alfredonatal","email":"anatal31@gmail.com"}],"homepage":"https://github.com/anl331/goey-toast","bugs":{"url":"https://github.com/anl331/goey-toast/issues"},"dist":{"shasum":"bef722bb526d68f87ba7197d03cb9d6a7441b1ac","tarball":"https://registry.npmjs.org/goey-toast/-/goey-toast-0.1.1.tgz","fileCount":11,"integrity":"sha512-q1dHALKekfcvTum/HRQrvnT3rJ7vwmYgIDcbjxaZPI033/wkHZs8jkwjq1SsrS3CZzhRw2Gi3x3iwL1CzUxNGw==","signatures":[{"sig":"MEYCIQDqKl4RkvzbIkob6/hiDiKSGdFzT5PJ9d8LRxIb7ACO1AIhAJBnhzr4oi6saN3UahEXtLDayx/oO5FJfR1PA0ZSYoIe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273177},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/index.css"},"gitHead":"1eead213701a43b190415a63a262392dd54baaca","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"alfredonatal","email":"anatal31@gmail.com"},"repository":{"url":"git+https://github.com/anl331/goey-toast.git","type":"git"},"_npmVersion":"11.6.2","description":"A gooey, morphing toast component built on Sonner with Framer Motion animations","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"sonner":"^2.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^28.0.0","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","typescript":"^5.9.3","@types/react":"^19.2.14","framer-motion":"^12.34.0","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","framer-motion":">=10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/goey-toast_0.1.1_1771098771386_0.7909395790886804","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"goey-toast","version":"0.1.2","keywords":["toast","notification","sonner","framer-motion","animation","morph"],"license":"MIT","_id":"goey-toast@0.1.2","maintainers":[{"name":"alfredonatal","email":"anatal31@gmail.com"}],"homepage":"https://goey-toast.vercel.app","bugs":{"url":"https://github.com/anl331/goey-toast/issues"},"dist":{"shasum":"9dc95ff3a2f13310675e8e38164d5a8ab5f5899d","tarball":"https://registry.npmjs.org/goey-toast/-/goey-toast-0.1.2.tgz","fileCount":11,"integrity":"sha512-wwX5copuYHwJWAxL/x8Ak8jvh9skVoAuzD7qkBGWGGMAn8V28S0n3NHKkNxXxoibkS+pWdOxhzgOYf6bhgV+EQ==","signatures":[{"sig":"MEYCIQDD5hlqPie2WaXQMxDtiDPqws/lZPVqtFBpoRynzEbh/wIhAIjl41jOJ7bmcfhyFFzTZ6p0MOd9DBNFxslqLS0ceDWQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273225},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/index.css"},"gitHead":"ec23aba54a49be067a6664bb976edbebfb025210","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"alfredonatal","email":"anatal31@gmail.com"},"repository":{"url":"git+https://github.com/anl331/goey-toast.git","type":"git"},"_npmVersion":"11.6.2","description":"A gooey, morphing toast component built on Sonner with Framer Motion animations","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"sonner":"^2.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^28.0.0","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","typescript":"^5.9.3","@types/react":"^19.2.14","framer-motion":"^12.34.0","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","framer-motion":">=10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/goey-toast_0.1.2_1771098996863_0.1039640483295381","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"goey-toast","version":"0.1.3","keywords":["toast","notification","sonner","framer-motion","animation","morph"],"license":"MIT","_id":"goey-toast@0.1.3","maintainers":[{"name":"alfredonatal","email":"anatal31@gmail.com"}],"homepage":"https://goey-toast.vercel.app","bugs":{"url":"https://github.com/anl331/goey-toast/issues"},"dist":{"shasum":"b452925b68a7c6aa143ffa1e69e7beee5d423c75","tarball":"https://registry.npmjs.org/goey-toast/-/goey-toast-0.1.3.tgz","fileCount":11,"integrity":"sha512-Dc2y8UJIEX1FaB2QLbVPNBDF+DCjM2mYLI8QOi7KwbtJm0aAGpcWqMSoB8Dixw5wmT1DMPZVX0AIyOKG46MV6Q==","signatures":[{"sig":"MEQCIDZHEHVLKAuUwlZlZh+ofBbj8Zfpg7+7/u/Ffd+NbNNDAiB/6PFFYWU72iMIpuqfWIqHlQeoVsafElg1ACL4PuLKJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273148},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/index.css"},"gitHead":"36d1c99b57d4ca72e048f7c2733bdc5f9c7373fb","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"alfredonatal","email":"anatal31@gmail.com"},"repository":{"url":"git+https://github.com/anl331/goey-toast.git","type":"git"},"_npmVersion":"11.6.2","description":"A gooey, morphing toast component built on Sonner with Framer Motion animations","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"sonner":"^2.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^28.0.0","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","typescript":"^5.9.3","@types/react":"^19.2.14","framer-motion":"^12.34.0","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","framer-motion":">=10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/goey-toast_0.1.3_1771099116309_0.3334819614909239","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"goey-toast","version":"0.1.4","keywords":["toast","notification","sonner","framer-motion","animation","morph"],"license":"MIT","_id":"goey-toast@0.1.4","maintainers":[{"name":"alfredonatal","email":"anatal31@gmail.com"}],"homepage":"https://goey-toast.vercel.app","bugs":{"url":"https://github.com/anl331/goey-toast/issues"},"dist":{"shasum":"75143369543e2d6189fbcf641d599fe9f26e4ec1","tarball":"https://registry.npmjs.org/goey-toast/-/goey-toast-0.1.4.tgz","fileCount":11,"integrity":"sha512-hPlPVXUfjaytir171FsJK43w4LqvqhPo8YRuJKooSqmTPAqU0Tca9ju+oDZXpbffCThTtupZTyHN41jHCKoFIA==","signatures":[{"sig":"MEYCIQC5sJhjJCSUJYGGCJU2M4VcNBiTETpUOAEo+oW2/donmAIhAIXSu1qvGjlMeZVdvBrHP+xOW4/q7ukaniRGjPy2Y/tH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273389},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/index.css"},"gitHead":"1463e0f58ae1a28a4bd9eda4f531a2f4b3ebecbd","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"alfredonatal","email":"anatal31@gmail.com"},"repository":{"url":"git+https://github.com/anl331/goey-toast.git","type":"git"},"_npmVersion":"11.6.2","description":"A gooey, morphing toast component built on Sonner with Framer Motion animations","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"sonner":"^2.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^28.0.0","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","typescript":"^5.9.3","@types/react":"^19.2.14","framer-motion":"^12.34.0","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","framer-motion":">=10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/goey-toast_0.1.4_1771104418229_0.7186843708089652","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"goey-toast","version":"0.1.5","keywords":["toast","notification","sonner","framer-motion","animation","morph"],"license":"MIT","_id":"goey-toast@0.1.5","maintainers":[{"name":"alfredonatal","email":"anatal31@gmail.com"}],"homepage":"https://goey-toast.vercel.app","bugs":{"url":"https://github.com/anl331/goey-toast/issues"},"dist":{"shasum":"8738d62367491259f8391b834cdcccdf7c5748ee","tarball":"https://registry.npmjs.org/goey-toast/-/goey-toast-0.1.5.tgz","fileCount":11,"integrity":"sha512-xoJ3w0UFhtMlM4U3jzvAnvF51kWhI5GPRBecfS8jqrdud+GSgHFmTeNmRiq+gjhy+h+glRY4LejmU+0W0HDdFw==","signatures":[{"sig":"MEUCIQDipoIVPCnGtrHYMwJvX3zpeFgxd8kXe78E68AGzwPhUgIgBGHnZQPwOmtenHqHmUhAp2z6kQfyQM9vp3R/SuJl/Eg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265450},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/index.css"},"gitHead":"13f23ffad861b3864c788bb53b75ad304b3cf9af","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"alfredonatal","email":"anatal31@gmail.com"},"repository":{"url":"git+https://github.com/anl331/goey-toast.git","type":"git"},"_npmVersion":"11.6.2","description":"A gooey, morphing toast component built on Sonner with Framer Motion animations","directories":{},"sideEffects":false,"_nodeVersion":"24.13.0","dependencies":{"sonner":"^2.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^28.0.0","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","typescript":"^5.9.3","@types/react":"^19.2.14","framer-motion":"^12.34.0","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","framer-motion":">=10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/goey-toast_0.1.5_1771105645925_0.8999321790237531","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"goey-toast","version":"0.2.0","keywords":["toast","notification","sonner","framer-motion","animation","morph"],"license":"MIT","_id":"goey-toast@0.2.0","maintainers":[{"name":"alfredonatal","email":"anatal31@gmail.com"}],"homepage":"https://goey-toast.vercel.app","bugs":{"url":"https://github.com/anl331/goey-toast/issues"},"dist":{"shasum":"66e301994742625c0250a74b7d750924a064f00d","tarball":"https://registry.npmjs.org/goey-toast/-/goey-toast-0.2.0.tgz","fileCount":11,"integrity":"sha512-hWvL1XABCt+ntosl2ab2mSPE2i58eF9MCGxtCqcMiHq6pfo/iQDSCFh8f5DedrjdLoUlBA3L1I6CE3RbUqAY5A==","signatures":[{"sig":"MEQCIE4L+9bWasniRfi1p1bQNR/MpOyK2+YzGbUvpjo/N5d6AiB1mAVbClvY3RXTN6oLiOifQyYIefiYWyCP1vzBScYb6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":321623},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/index.css"},"gitHead":"46cdbb321bbeb455062f2408b093d1746ba25fc1","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"alfredonatal","email":"anatal31@gmail.com"},"repository":{"url":"git+https://github.com/anl331/goey-toast.git","type":"git"},"_npmVersion":"11.8.0","description":"A gooey, morphing toast component built on Sonner with Framer Motion animations","directories":{},"sideEffects":false,"_nodeVersion":"25.5.0","dependencies":{"sonner":"^2.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^28.0.0","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","framer-motion":"^12.34.0","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","framer-motion":">=10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/goey-toast_0.2.0_1771174849298_0.6197229922432248","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"goey-toast","version":"0.2.1","keywords":["toast","notification","sonner","framer-motion","animation","morph"],"license":"MIT","_id":"goey-toast@0.2.1","maintainers":[{"name":"alfredonatal","email":"anatal31@gmail.com"}],"homepage":"https://goey-toast.vercel.app","bugs":{"url":"https://github.com/anl331/goey-toast/issues"},"dist":{"shasum":"5cae366ff3b0e48b568e569f78b939edc8901b1d","tarball":"https://registry.npmjs.org/goey-toast/-/goey-toast-0.2.1.tgz","fileCount":11,"integrity":"sha512-ZkseG2F1YOb5o9/V1cRYcL23Z7oY6cSZFiqWjUSHc+HEYRPdUXwiD2wBqeJ3CYa0q+G116w23RdswdYHY63ZAQ==","signatures":[{"sig":"MEUCIEFqCepClY3jNerVTcwe0qPExAnds+zTmAKOqTz6O3aIAiEA4a3sVfoTIPRuizfQdTr8Yv4RrwdXForXVIC7SN40O5s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":370233},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/index.css"},"gitHead":"96458a5cacd87c3f9db54a83b5d92b2fa1f322dc","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"alfredonatal","email":"anatal31@gmail.com"},"repository":{"url":"git+https://github.com/anl331/goey-toast.git","type":"git"},"_npmVersion":"11.6.2","description":"A gooey, morphing toast component built on Sonner with Framer Motion animations","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.13.0","dependencies":{"sonner":"^2.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^28.0.0","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","framer-motion":"^12.34.0","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","framer-motion":">=10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/goey-toast_0.2.1_1771990689566_0.6318406242762351","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"goey-toast","version":"0.2.2","keywords":["toast","notification","sonner","framer-motion","animation","morph"],"license":"MIT","_id":"goey-toast@0.2.2","maintainers":[{"name":"alfredonatal","email":"anatal31@gmail.com"}],"homepage":"https://goey-toast.vercel.app","bugs":{"url":"https://github.com/anl331/goey-toast/issues"},"dist":{"shasum":"b66d09a973189678bd050d52aa04534d806f343e","tarball":"https://registry.npmjs.org/goey-toast/-/goey-toast-0.2.2.tgz","fileCount":11,"integrity":"sha512-SJCEA0D2CVGA+XfoPg04w8m3C2+djl+O3kjN2FhRLy/J+qoIeogEv+chrUJe78RJYIEnNyrJflI1g0ijRoT1nQ==","signatures":[{"sig":"MEUCIDVFh8/eecg6LuxnGbmI6I7siwoB5IEPP/+kzB/ACx4HAiEAsqxCm+gg5Hk1vLyPHYw8LaJjtAcxu1s3g8VYdl1So3c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":492968},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/index.css"},"gitHead":"be944305ba03a1a0e2418ef916b32882f2ef5007","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"alfredonatal","email":"anatal31@gmail.com"},"repository":{"url":"git+https://github.com/anl331/goey-toast.git","type":"git"},"_npmVersion":"11.6.2","description":"A gooey, morphing toast component built on Sonner with Framer Motion animations","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.13.0","dependencies":{"sonner":"^2.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^28.0.0","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","framer-motion":"^12.34.0","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","framer-motion":">=10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/goey-toast_0.2.2_1772142613095_0.0020405515019505938","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"goey-toast","version":"0.3.0","keywords":["toast","notification","sonner","framer-motion","animation","morph"],"license":"MIT","_id":"goey-toast@0.3.0","maintainers":[{"name":"alfredonatal","email":"anatal31@gmail.com"}],"homepage":"https://goey-toast.vercel.app","bugs":{"url":"https://github.com/anl331/goey-toast/issues"},"dist":{"shasum":"e4ea824aa79c2beff01cbb268b8f005df42dcf2d","tarball":"https://registry.npmjs.org/goey-toast/-/goey-toast-0.3.0.tgz","fileCount":11,"integrity":"sha512-JJiXihHDDsKy8GkWWac5ADYYPz7b1cMJjEsp91pL9QNubXIH8Yc08j6XbymLbv/Nh2NUgiVxNUxNQZXcnMejFA==","signatures":[{"sig":"MEYCIQCzocq8bxLgmYgpdexHpjhUF/s2RfNZulx+BtRWET+pgQIhAMcNQn3+0FaAs0vgFZ8DtyOg+XA412IHorq3c4fk1UAC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":493989},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/index.css"},"gitHead":"20b57ae2de8f8dbae66dab60afb6f163d5d2cc27","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"alfredonatal","email":"anatal31@gmail.com"},"repository":{"url":"git+https://github.com/anl331/goey-toast.git","type":"git"},"_npmVersion":"11.6.2","description":"A gooey, morphing toast component built on Sonner with Framer Motion animations","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.13.0","dependencies":{"sonner":"^2.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^28.0.0","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","framer-motion":"^12.34.0","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","framer-motion":">=10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/goey-toast_0.3.0_1772416085815_0.4801564416578199","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"goey-toast","version":"0.4.0","keywords":["toast","notification","sonner","framer-motion","animation","morph"],"license":"MIT","_id":"goey-toast@0.4.0","maintainers":[{"name":"alfredonatal","email":"anatal31@gmail.com"}],"homepage":"https://goey-toast.vercel.app","bugs":{"url":"https://github.com/anl331/goey-toast/issues"},"dist":{"shasum":"27cf6d61c57ed6f3eb363f7a6ba282b18a19af49","tarball":"https://registry.npmjs.org/goey-toast/-/goey-toast-0.4.0.tgz","fileCount":11,"integrity":"sha512-ga9kKqHV3FpX12O/r7Yv+cga9iKnLifVRenTse2ShlrybNWPEPxAD/+948iVMQ+1ds3pgM2R9ox6EnTZw5J4Nw==","signatures":[{"sig":"MEYCIQDfnNcgKQy1UgInZ54oKK3wVjqKOXfuAHLvK6RHuPJAXAIhAN1ntd3CcHDOcq7mv8/9ipBWBpKtvd1xlHo1zCq8OSO8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":513398},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/index.css"},"gitHead":"44a96c8e47c2fdb8bf0d0b305c97527703cf67ef","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"alfredonatal","email":"anatal31@gmail.com"},"repository":{"url":"git+https://github.com/anl331/goey-toast.git","type":"git"},"_npmVersion":"11.6.2","description":"A gooey, morphing toast component built on Sonner with Framer Motion animations","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.13.0","dependencies":{"sonner":"^2.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^28.0.0","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","framer-motion":"^12.34.0","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","framer-motion":">=10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/goey-toast_0.4.0_1774840574949_0.29861128717018115","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"goey-toast","version":"0.4.1","keywords":["toast","notification","sonner","framer-motion","animation","morph"],"license":"MIT","_id":"goey-toast@0.4.1","maintainers":[{"name":"alfredonatal","email":"anatal31@gmail.com"}],"homepage":"https://goey-toast.vercel.app","bugs":{"url":"https://github.com/anl331/goey-toast/issues"},"dist":{"shasum":"be76948518e2f6801642239b34cf9135f289e08c","tarball":"https://registry.npmjs.org/goey-toast/-/goey-toast-0.4.1.tgz","fileCount":11,"integrity":"sha512-vCEAUbNGhHy/4z1rQmk1RZxS8uzEhoJjAYJ34odkuRD5Rrh7ZSS18BYtpVy+UH36qJPYN/HaJfIMlj9vCz/D0A==","signatures":[{"sig":"MEUCIFxDYIAcNCoH+tFF0tU5TsJv+LG4tpevuWd50obWuOjPAiEAhNPZjjpSG9owF47mRT/UIvp1Kr4Uxpux8ClGIsV3N9I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":514161},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/index.css"},"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"alfredonatal","email":"anatal31@gmail.com"},"repository":{"url":"git+https://github.com/anl331/goey-toast.git","type":"git"},"_npmVersion":"11.6.2","description":"A gooey, morphing toast component built on Sonner with Framer Motion animations","directories":{},"sideEffects":["*.css"],"_nodeVersion":"24.13.0","dependencies":{"sonner":"^2.0.7"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","jsdom":"^28.0.0","react":"^19.2.4","vitest":"^4.0.18","react-dom":"^19.2.4","typescript":"^5.9.3","@types/node":"^25.2.3","@types/react":"^19.2.14","framer-motion":"^12.34.0","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.4","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1"},"peerDependencies":{"react":">=18.0.0","react-dom":">=18.0.0","framer-motion":">=10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/goey-toast_0.4.1_1780932794129_0.14101316724122004","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"goey-toast","version":"0.5.0","description":"A gooey, morphing toast component built on Sonner with Framer Motion animations","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./styles.css":"./dist/index.css"},"sideEffects":["*.css"],"bin":{"goey-toast":"bin/cli.mjs"},"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit"},"peerDependencies":{"framer-motion":">=10.0.0","react":">=18.0.0","react-dom":">=18.0.0"},"dependencies":{"sonner":"^2.0.7"},"devDependencies":{"@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.1.4","framer-motion":"^12.34.0","jsdom":"^28.0.0","react":"^19.2.4","react-dom":"^19.2.4","tsup":"^8.5.1","typescript":"^5.9.3","vitest":"^4.0.18"},"keywords":["toast","notification","sonner","framer-motion","animation","morph"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/anl331/goey-toast.git"},"homepage":"https://goey-toast.vercel.app","bugs":{"url":"https://github.com/anl331/goey-toast/issues"},"engines":{"node":">=18.0.0"},"_id":"goey-toast@0.5.0","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-g6r9PyaUmaZy4Bv7h0CJksOC9VASXtMWxwBZjLgQuz8ZA5/S/uKpDdxgPP/tV22ZzyUatjuieAITIdsHfArtWg==","shasum":"d5416f9d87efd6063f1c92a2f584851dfe2ae63b","tarball":"https://registry.npmjs.org/goey-toast/-/goey-toast-0.5.0.tgz","fileCount":13,"unpackedSize":523542,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCXpOO7LUcW1/bTyL87xjCau6xKh7LWRsSdp37wWiHvHQIhAMdBviuvQJPS6lyOUaa7w+a7zfzI2Jgy0EDl21RiI1XA"}]},"_npmUser":{"name":"alfredonatal","email":"anatal31@gmail.com"},"directories":{},"maintainers":[{"name":"alfredonatal","email":"anatal31@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/goey-toast_0.5.0_1780933811367_0.20319692501930087"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-14T19:39:17.566Z","modified":"2026-06-08T15:50:11.663Z","0.1.0":"2026-02-14T19:39:17.717Z","0.1.1":"2026-02-14T19:52:51.545Z","0.1.2":"2026-02-14T19:56:37.022Z","0.1.3":"2026-02-14T19:58:36.491Z","0.1.4":"2026-02-14T21:26:58.378Z","0.1.5":"2026-02-14T21:47:26.085Z","0.2.0":"2026-02-15T17:00:49.441Z","0.2.1":"2026-02-25T03:38:09.719Z","0.2.2":"2026-02-26T21:50:13.264Z","0.3.0":"2026-03-02T01:48:06.018Z","0.4.0":"2026-03-30T03:16:15.104Z","0.4.1":"2026-06-08T15:33:14.276Z","0.5.0":"2026-06-08T15:50:11.568Z"},"bugs":{"url":"https://github.com/anl331/goey-toast/issues"},"license":"MIT","homepage":"https://goey-toast.vercel.app","keywords":["toast","notification","sonner","framer-motion","animation","morph"],"repository":{"type":"git","url":"git+https://github.com/anl331/goey-toast.git"},"description":"A gooey, morphing toast component built on Sonner with Framer Motion animations","maintainers":[{"name":"alfredonatal","email":"anatal31@gmail.com"}],"readme":"# gooey-toast\n\n[![gooey-toast](https://goey-toast.vercel.app/og-image.png)](https://goey-toast.vercel.app)\n\n**[Live Demo & Docs](https://goey-toast.vercel.app)**\n\n## Features\n\n- Organic blob morph animation (pill &rarr; blob &rarr; pill)\n- Five toast types: default, success, error, warning, info\n- Promise toasts with loading &rarr; success/error transitions\n- Action buttons with optional success label morph-back\n- Description body supporting strings and React components\n- Configurable display duration and bounce intensity\n- Custom fill color, border color, and border width\n- CSS class overrides via `classNames` prop\n- 6 positions with automatic horizontal mirroring for right-side positions\n- Center positions with symmetric morph animation\n- Hover pause: hovering an expanded toast pauses the dismiss timer\n- Hover re-expand: hovering a collapsed pill re-expands the toast\n- Pre-dismiss collapse animation\n- In-place toast updates via `gooeyToast.update()`\n- Dismiss by type filter: `gooeyToast.dismiss({ type: 'error' })`\n- Dark mode and RTL layout support\n- Animation presets: smooth, bouncy, subtle, snappy\n- Timestamp display on expanded toasts with optional `showTimestamp` toggle\n- Close button with configurable position (`top-left` / `top-right`)\n- Countdown progress bar with hover-pause and re-expand\n- Keyboard dismiss (Escape) and swipe-to-dismiss on mobile\n- Toast queue with configurable overflow strategy\n- Dismiss callbacks: `onDismiss` and `onAutoClose`\n\n## Installation\n\n```bash\nnpm install goey-toast\n```\n\n### shadcn/ui\n\n```bash\nnpx shadcn@latest add https://goey-toast.vercel.app/r/goey-toaster.json\n```\n\nThis installs a thin wrapper component at `components/ui/goey-toaster.tsx` and auto-installs the `goey-toast` and `framer-motion` packages.\n\n### AI Agents (Skill)\n\ngoey-toast ships a bundled [Agent Skill](https://www.skills.sh/) (`SKILL.md`) so coding agents (Claude Code, Cursor, etc.) know how to install and use it correctly — the required `<GooeyToaster />` mount, the `styles.css` import, and the full API.\n\nInstall from the skills.sh registry:\n\n```bash\nnpx skills add anl331/goey-toast\n```\n\nOr copy the skill into your project from the package itself:\n\n```bash\nnpx goey-toast add-skill            # -> .claude/skills/goey-toast/SKILL.md\nnpx goey-toast add-skill --agents   # also append an AGENTS.md pointer\nnpx goey-toast add-skill --dir .cursor/skills/goey-toast\n```\n\n### Peer Dependencies\n\ngoey-toast requires the following peer dependencies:\n\n```bash\nnpm install react react-dom framer-motion\n```\n\n| Package        | Version    |\n| -------------- | ---------- |\n| react          | >= 18.0.0  |\n| react-dom      | >= 18.0.0  |\n| framer-motion  | >= 10.0.0  |\n\n### CSS Import (Required)\n\nYou **must** import the goey-toast stylesheet for the component to render correctly:\n\n```tsx\nimport 'goey-toast/styles.css'\n```\n\nAdd this import once in your app's entry point (e.g., `main.tsx` or `App.tsx`). Without it, toasts will appear unstyled.\n\n## Quick Start\n\n```tsx\nimport { GooeyToaster, gooeyToast } from 'goey-toast'\nimport 'goey-toast/styles.css'\n\nfunction App() {\n  return (\n    <>\n      <GooeyToaster position=\"bottom-right\" />\n      <button onClick={() => gooeyToast.success('Saved!')}>\n        Save\n      </button>\n    </>\n  )\n}\n```\n\n## API Reference\n\n### `gooeyToast` Methods\n\n```ts\ngooeyToast(title, options?)              // default (neutral)\ngooeyToast.success(title, options?)      // green\ngooeyToast.error(title, options?)        // red\ngooeyToast.warning(title, options?)      // yellow\ngooeyToast.info(title, options?)         // blue\ngooeyToast.promise(promise, data)        // loading -> success/error\ngooeyToast.update(id, options)           // update an existing toast in-place\ngooeyToast.dismiss(idOrFilter?)          // dismiss one, by type, or all toasts\n```\n\n#### `gooeyToast.update(id, options)`\n\nUpdates an existing toast in-place without removing and re-creating it.\n\n```tsx\nconst id = gooeyToast('Uploading...', {\n  icon: <SpinnerIcon />,\n})\n\n// Later, update the toast\ngooeyToast.update(id, {\n  title: 'Upload complete',\n  type: 'success',\n  description: '3 files uploaded.',\n  icon: null, // clears the custom icon\n})\n```\n\n**`GooeyToastUpdateOptions`:**\n\n| Option        | Type              | Description                   |\n| ------------- | ----------------- | ----------------------------- |\n| `title`       | `string`          | New title text                |\n| `description` | `ReactNode`       | New body content              |\n| `type`        | `GooeyToastType`   | Change the toast type/color   |\n| `action`      | `GooeyToastAction` | New action button             |\n| `icon`        | `ReactNode \\| null` | Custom icon (pass `null` to clear) |\n\n#### `gooeyToast.dismiss(idOrFilter?)`\n\nDismiss a single toast by ID, all toasts of a given type, or all toasts at once.\n\n```ts\n// Dismiss a specific toast\ngooeyToast.dismiss(toastId)\n\n// Dismiss all error toasts\ngooeyToast.dismiss({ type: 'error' })\n\n// Dismiss multiple types\ngooeyToast.dismiss({ type: ['error', 'warning'] })\n\n// Dismiss all toasts\ngooeyToast.dismiss()\n```\n\n### `GooeyToastOptions`\n\nOptions passed as the second argument to `gooeyToast()` and type-specific methods.\n\n| Option        | Type                 | Description                        |\n| ------------- | -------------------- | ---------------------------------- |\n| `description` | `ReactNode`          | Body content (string or component) |\n| `action`      | `GooeyToastAction`    | Action button configuration        |\n| `icon`        | `ReactNode`          | Custom icon override               |\n| `duration`    | `number`             | Display duration in ms             |\n| `id`          | `string \\| number`   | Unique toast identifier            |\n| `classNames`  | `GooeyToastClassNames`| CSS class overrides                |\n| `fillColor`   | `string`             | Background color of the blob       |\n| `borderColor` | `string`             | Border color of the blob           |\n| `borderWidth` | `number`             | Border width in px (default 1.5)   |\n| `timing`      | `GooeyToastTimings`   | Animation timing overrides         |\n| `spring`      | `boolean`            | Enable spring/bounce animations (default `true`) |\n| `bounce`      | `number`             | Spring intensity from `0.05` (subtle) to `0.8` (dramatic), default `0.4` |\n| `showTimestamp` | `boolean`         | Show/hide timestamp in toast header/body (default `true`) |\n| `showProgress`| `boolean`            | Show countdown progress bar                      |\n| `onDismiss`   | `(id) => void`       | Called when toast is dismissed (any reason)       |\n| `onAutoClose` | `(id) => void`       | Called only on timer-based auto-dismiss           |\n| `preset`      | `AnimationPresetName`| Animation preset (`'smooth'`, `'bouncy'`, `'subtle'`, `'snappy'`) |\n\n### `GooeyToastAction`\n\n| Property       | Type       | Required | Description                                  |\n| -------------- | ---------- | -------- | -------------------------------------------- |\n| `label`        | `string`   | Yes      | Button text                                  |\n| `onClick`      | `() => void` | Yes   | Click handler                                |\n| `successLabel` | `string`   | No       | Label shown after click (morphs back to pill)|\n\n### `GooeyToastTimings`\n\nFine-tune animation speeds per toast.\n\n| Property           | Type     | Default | Description                          |\n| ------------------ | -------- | ------- | ------------------------------------ |\n| `displayDuration`  | `number` | 4000    | Milliseconds toast stays expanded    |\n\n### `GooeyToastClassNames`\n\nOverride styles for any part of the toast.\n\n| Key             | Target           |\n| --------------- | ---------------- |\n| `wrapper`       | Outer container  |\n| `content`       | Content area     |\n| `header`        | Icon + title row |\n| `title`         | Title text       |\n| `icon`          | Icon wrapper     |\n| `description`   | Body text        |\n| `actionWrapper` | Button container |\n| `actionButton`  | Action button    |\n\n### `GooeyToasterProps`\n\nProps for the `<GooeyToaster />` component.\n\n| Prop         | Type                                  | Default          | Description                                   |\n| ------------ | ------------------------------------- | ---------------- | --------------------------------------------- |\n| `position`   | `'top-left' \\| 'top-center' \\| 'top-right' \\| 'bottom-left' \\| 'bottom-center' \\| 'bottom-right'` | `'bottom-right'` | Toast position |\n| `duration`   | `number`                              | --               | Default display duration in ms                |\n| `gap`        | `number`                              | `14`             | Gap between stacked toasts (px)               |\n| `offset`     | `number \\| string`                    | `'24px'`         | Distance from screen edge                     |\n| `theme`      | `'light' \\| 'dark'`                   | `'light'`        | Color theme                                   |\n| `toastOptions` | `Partial<ExternalToast>`            | --               | Default options passed to Sonner              |\n| `spring`     | `boolean`                             | `true`           | Enable spring/bounce animations globally      |\n| `bounce`     | `number`                              | `0.4`            | Spring intensity: `0.05` (subtle) to `0.8` (dramatic) |\n| `preset`     | `AnimationPresetName`                 | --               | Animation preset for all toasts               |\n| `closeOnEscape` | `boolean`                          | `true`           | Dismiss most recent toast on Escape key       |\n| `closeButton`  | `boolean \\| 'top-left' \\| 'top-right'` | `false`       | Show close button on hover                    |\n| `showProgress` | `boolean`                           | `false`          | Show countdown progress bar on all toasts     |\n| `maxQueue`   | `number`                              | `Infinity`       | Maximum queued toasts                         |\n| `queueOverflow` | `'drop-oldest' \\| 'drop-newest'`   | `'drop-oldest'`  | Queue overflow strategy                       |\n| `dir`        | `'ltr' \\| 'rtl'`                     | `'ltr'`          | Layout direction                              |\n| `swipeToDismiss` | `boolean`                         | `true`           | Enable swipe-to-dismiss on mobile             |\n| `showTimestamp` | `boolean`                         | `true`           | Show/hide timestamp on all toasts globally     |\n\n### `GooeyPromiseData<T>`\n\nConfiguration for `gooeyToast.promise()`.\n\n| Property      | Type                                          | Required | Description                                    |\n| ------------- | --------------------------------------------- | -------- | ---------------------------------------------- |\n| `loading`     | `string`                                      | Yes      | Title shown during loading                     |\n| `success`     | `string \\| ((data: T) => string)`             | Yes      | Title on success (static or derived from result)|\n| `error`       | `string \\| ((error: unknown) => string)`      | Yes      | Title on error (static or derived from error)  |\n| `description` | `object`                                      | No       | Per-phase descriptions (see below)             |\n| `action`      | `object`                                      | No       | Per-phase action buttons (see below)           |\n| `classNames`  | `GooeyToastClassNames`                         | No       | CSS class overrides                            |\n| `fillColor`   | `string`                                      | No       | Background color of the blob                   |\n| `borderColor` | `string`                                      | No       | Border color of the blob                       |\n| `borderWidth` | `number`                                      | No       | Border width in px                             |\n| `timing`      | `GooeyToastTimings`                            | No       | Animation timing overrides                     |\n| `spring`      | `boolean`                                     | No       | Enable spring/bounce animations (default `true`) |\n| `bounce`      | `number`                                      | No       | Spring intensity: `0.05` (subtle) to `0.8` (dramatic), default `0.4` |\n| `onDismiss`   | `(id: string \\| number) => void`              | No       | Called when toast is dismissed (any reason)       |\n| `onAutoClose` | `(id: string \\| number) => void`              | No       | Called only on timer-based auto-dismiss           |\n\n**`description` sub-fields:**\n\n| Key       | Type                                             |\n| --------- | ------------------------------------------------ |\n| `loading` | `ReactNode`                                      |\n| `success` | `ReactNode \\| ((data: T) => ReactNode)`          |\n| `error`   | `ReactNode \\| ((error: unknown) => ReactNode)`   |\n\n**`action` sub-fields:**\n\n| Key       | Type              |\n| --------- | ----------------- |\n| `success` | `GooeyToastAction` |\n| `error`   | `GooeyToastAction` |\n\n## Usage Examples\n\n### Description\n\n```tsx\ngooeyToast.error('Payment failed', {\n  description: 'Your card was declined. Please try again.',\n})\n```\n\n### Custom React Component as Description\n\n```tsx\ngooeyToast.success('Deployment complete', {\n  description: (\n    <div style={{ display: 'flex', flexDirection: 'column', gap: 10 }}>\n      <div>\n        <span>Environment:</span> <strong>Production</strong>\n      </div>\n      <div>\n        <span>Branch:</span> <strong>main @ 3f8a2c1</strong>\n      </div>\n    </div>\n  ),\n})\n```\n\n### Action Button with Success Label\n\n```tsx\ngooeyToast.info('Share link ready', {\n  description: 'Your link has been generated.',\n  action: {\n    label: 'Copy to Clipboard',\n    onClick: () => navigator.clipboard.writeText(url),\n    successLabel: 'Copied!',\n  },\n})\n```\n\n### Promise Toast\n\n```tsx\ngooeyToast.promise(saveData(), {\n  loading: 'Saving...',\n  success: 'Changes saved',\n  error: 'Something went wrong',\n  description: {\n    success: 'All changes have been synced.',\n    error: 'Please try again later.',\n  },\n  action: {\n    error: {\n      label: 'Retry',\n      onClick: () => retry(),\n    },\n  },\n})\n```\n\n### Custom Styling\n\n```tsx\ngooeyToast.success('Styled!', {\n  fillColor: '#1a1a2e',\n  borderColor: '#333',\n  borderWidth: 2,\n  classNames: {\n    wrapper: 'my-wrapper',\n    title: 'my-title',\n    description: 'my-desc',\n    actionButton: 'my-btn',\n  },\n})\n```\n\n### Display Duration\n\n```tsx\ngooeyToast.success('Saved', {\n  description: 'Your changes have been synced.',\n  timing: { displayDuration: 5000 },\n})\n```\n\n### Disabling Spring Animations\n\nDisable bounce/spring animations for a cleaner, more subtle look:\n\n```tsx\n// Per-toast: disable spring for this toast only\ngooeyToast.success('Saved', {\n  description: 'Your changes have been synced.',\n  spring: false,\n})\n\n// Globally: disable spring for all toasts\n<GooeyToaster spring={false} />\n```\n\nWhen `spring` is `false`, all spring-based animations (landing squish, blob squish, morph transitions, pill resize, header squish) use smooth ease-in-out curves instead. Error shake animations still work regardless of this setting.\n\n### Bounce Intensity\n\nControl how dramatic the spring effect feels with a single `bounce` value:\n\n```tsx\n// Subtle, barely-there spring\ngooeyToast.success('Saved', { bounce: 0.1 })\n\n// Default feel\ngooeyToast.success('Saved', { bounce: 0.4 })\n\n// Jelly mode\ngooeyToast.success('Saved', { bounce: 0.8 })\n\n// Set globally via GooeyToaster\n<GooeyToaster bounce={0.6} />\n```\n\nThe `bounce` value (0.05 to 0.8) controls spring stiffness, damping, and squish magnitude together so you get a consistent feel from one number.\n\n### Dark Mode\n\n```tsx\n<GooeyToaster theme=\"dark\" />\n```\n\n### RTL Support\n\n```tsx\n<GooeyToaster dir=\"rtl\" />\n```\n\n### Animation Presets\n\nFour built-in presets: `smooth`, `bouncy`, `subtle`, `snappy`. Apply per-toast or globally:\n\n```tsx\ngooeyToast.success('Saved', { preset: 'bouncy' })\n\n// Or globally\n<GooeyToaster preset=\"smooth\" />\n```\n\n### Progress Bar\n\nShow a countdown progress bar on toasts:\n\n```tsx\ngooeyToast.success('Saved', { showProgress: true })\n\n// Or enable globally\n<GooeyToaster showProgress />\n```\n\n### Keyboard Shortcuts\n\nPress **Escape** to dismiss the most recent toast. Enabled by default; disable with `closeOnEscape={false}`.\n\n### Swipe to Dismiss\n\nOn mobile, swipe toasts to dismiss them. Enabled by default; disable with `swipeToDismiss={false}`.\n\n### Close Button\n\nShow a close button on hover. Position it `top-left` (default) or `top-right`:\n\n```tsx\n<GooeyToaster closeButton />\n<GooeyToaster closeButton=\"top-left\" />\n<GooeyToaster closeButton=\"top-right\" />\n```\n\nThe close button inherits the toast's border and fill color styling. Hidden during the loading phase of promise toasts.\n\n### Hiding Timestamps\n\n```tsx\n// Per-toast: hide timestamp for this toast only\ngooeyToast.success('Saved', { showTimestamp: false })\n\n// Globally: hide timestamp for all toasts\n<GooeyToaster showTimestamp={false} />\n```\n\n## Exports\n\n```ts\n// Components\nexport { GooeyToaster } from 'goey-toast'\n\n// Toast function\nexport { gooeyToast } from 'goey-toast'\n\n// Animation presets\nexport { animationPresets } from 'goey-toast'\n\n// Types\nexport type {\n  GooeyToastOptions,\n  GooeyPromiseData,\n  GooeyToasterProps,\n  GooeyToastAction,\n  GooeyToastClassNames,\n  GooeyToastTimings,\n  GooeyToastUpdateOptions,\n  DismissFilter,\n  AnimationPreset,\n  AnimationPresetName,\n} from 'goey-toast'\n```\n\n## Browser Support\n\ngoey-toast works in all modern browsers that support:\n\n- CSS Modules\n- SVG path animations\n- ResizeObserver\n- `framer-motion` (Chrome, Firefox, Safari, Edge)\n\n## See Also\n\n- **[gooey-search-tabs](https://github.com/anl331/gooey-search-tabs)** — A morphing search bar with animated tab navigation for React. [Live Demo](https://gooey-search-tabs.vercel.app)\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md"}