{"_id":"@amirhpooladi/react-confirm-modal","_rev":"3-a3a31260026a444e430347d9cc6e7bee","name":"@amirhpooladi/react-confirm-modal","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@amirhpooladi/react-confirm-modal","version":"1.0.0","keywords":["react","modal","confirm","animated","dialog"],"author":{"name":"Amir Hossein Pooladi"},"license":"MIT","_id":"@amirhpooladi/react-confirm-modal@1.0.0","maintainers":[{"name":"amirhpooladi","email":"amirhosseinpooladi21@gmail.com"}],"homepage":"https://github.com/amirhpooladi/react-confirm-modal#readme","bugs":{"url":"https://github.com/amirhpooladi/react-confirm-modal/issues"},"dist":{"shasum":"9dc24af0ccb9a18ca2e92237a8d4a64575ad0939","tarball":"https://registry.npmjs.org/@amirhpooladi/react-confirm-modal/-/react-confirm-modal-1.0.0.tgz","fileCount":5,"integrity":"sha512-Okjm37i6g6NeJNjHG+4vb0C67FbqH42YrK5PGhJc7nEl6jacL5iz/8uL2bm0WSaYZ6Ry6Rwi8bmXfhLK8GpvAA==","signatures":[{"sig":"MEUCIFe+EzBdxPj68WAGJAvbZ/UKqpDmK3tK6VUGlPxUicYvAiEAqzFmYRRBtXjQ2S62Wz+dwfbJ5cSPKeLMpW3E1FR5SAs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10520},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"d9d60c8e55d6355853832f039f0b693fb3dd2388","scripts":{"build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"amirhpooladi","email":"amirhosseinpooladi21@gmail.com"},"repository":{"url":"git+https://github.com/amirhpooladi/react-confirm-modal.git","type":"git"},"_npmVersion":"11.6.2","description":"A lightweight animated confirm modal for React","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"peerDependencies":{"react":"^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-confirm-modal_1.0.0_1772106180743_0.9325594129098331","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@amirhpooladi/react-confirm-modal","version":"1.0.1","keywords":["react","modal","confirm","animated","dialog"],"author":{"name":"Amir Hossein Pooladi"},"license":"MIT","_id":"@amirhpooladi/react-confirm-modal@1.0.1","maintainers":[{"name":"amirhpooladi","email":"amirhosseinpooladi21@gmail.com"}],"homepage":"https://github.com/amirhpooladi/react-confirm-modal#readme","bugs":{"url":"https://github.com/amirhpooladi/react-confirm-modal/issues"},"dist":{"shasum":"86b6d61a556fa45aca9fe250a78f1a1d1e6dd8cb","tarball":"https://registry.npmjs.org/@amirhpooladi/react-confirm-modal/-/react-confirm-modal-1.0.1.tgz","fileCount":5,"integrity":"sha512-9BM5Esw0wQO7mwIaCf2TMPHGqiWmqXSGFgb5j/AEZ0su1BqyIAbWxgGNTP8FW9sxTB0QMsUvUyzop/j2+ohrcQ==","signatures":[{"sig":"MEUCIHswW+VDNKvlDmou4CL9eKt+j1FBcQglNcjwYpPooNc8AiEA2+eEDY5cNuRtU/AZgvUnqKQ8/OKNOzVYKDA81pltp5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10522},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","gitHead":"2880bfd41936fd8b87896f4a44437a0424fd597f","scripts":{"build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"amirhpooladi","email":"amirhosseinpooladi21@gmail.com"},"repository":{"url":"git+https://github.com/amirhpooladi/react-confirm-modal.git","type":"git"},"_npmVersion":"11.6.2","description":"A lightweight animated confirm modal for React","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"peerDependencies":{"react":"^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/react-confirm-modal_1.0.1_1772108379688_0.9759967105756404","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@amirhpooladi/react-confirm-modal","version":"1.0.2","description":"A lightweight animated confirm modal for React","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","scripts":{"build":"tsup","prepublishOnly":"npm run build"},"keywords":["react","modal","confirm","animated","dialog"],"author":{"name":"Amir Hossein Pooladi"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/amirhpooladi/react-confirm-modal.git"},"homepage":"https://github.com/amirhpooladi/react-confirm-modal#readme","bugs":{"url":"https://github.com/amirhpooladi/react-confirm-modal/issues"},"peerDependencies":{"react":"^18.0.0"},"devDependencies":{"@types/react":"^19.2.14","@types/react-dom":"^19.2.3","tsup":"^8.0.0","typescript":"^5.9.3"},"gitHead":"7880b96a8a8fc9bf9e2d075f9b6e27adc398c51b","_id":"@amirhpooladi/react-confirm-modal@1.0.2","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-YUIBBEc9Mhw0k91CDhzWTp3Q7m+CTRquRZaEUcPjB+82/8JHR0QZe7k8Or0Fjxuiqv9AsIwHHqovZOWMYgb3MA==","shasum":"59dbd19b676cbf1f7fcd589d0306c0c3cc99ce54","tarball":"https://registry.npmjs.org/@amirhpooladi/react-confirm-modal/-/react-confirm-modal-1.0.2.tgz","fileCount":7,"unpackedSize":11670,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHtZtcl0+KQ0t5zbSljY9ErF4xV4fH5qnFihpUKzURwMAiEA7AYkhvUlbcw+LKs1kUiU9B8TMaDubEbmTQRnFG93by8="}]},"_npmUser":{"name":"amirhpooladi","email":"amirhosseinpooladi21@gmail.com"},"directories":{},"maintainers":[{"name":"amirhpooladi","email":"amirhosseinpooladi21@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-confirm-modal_1.0.2_1772109812020_0.26691973030258653"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-26T11:43:00.650Z","modified":"2026-02-26T12:43:32.294Z","1.0.0":"2026-02-26T11:43:00.897Z","1.0.1":"2026-02-26T12:19:39.833Z","1.0.2":"2026-02-26T12:43:32.154Z"},"bugs":{"url":"https://github.com/amirhpooladi/react-confirm-modal/issues"},"author":{"name":"Amir Hossein Pooladi"},"license":"MIT","homepage":"https://github.com/amirhpooladi/react-confirm-modal#readme","keywords":["react","modal","confirm","animated","dialog"],"repository":{"type":"git","url":"git+https://github.com/amirhpooladi/react-confirm-modal.git"},"description":"A lightweight animated confirm modal for React","maintainers":[{"name":"amirhpooladi","email":"amirhosseinpooladi21@gmail.com"}],"readme":"# ✨ React Confirm Animated Modal\n\nA lightweight and customizable confirm modal for React with a built-in loading spinner for async actions.\n\nPerfect for:\n\n* Delete confirmations\n* Form submissions\n* API actions\n* Critical user decisions\n\nNo Tailwind.\nNo UI libraries.\nNo Radix dependency.\nJust plug & play...\n\n---\n\n## 📦 Installation\n\n```bash\nnpm install @amirhpooladi/react-confirm-modal\n```\n\n---\n\n## 🚀 Usage\n\n```tsx\n\"use client\"\n\nimport { useState } from \"react\"\nimport { ConfirmModal } from \"@amirhpooladi/react-confirm-modal\"\nimport \"@amirhpooladi/react-confirm-modal/dist/index.css\"\n\nexport default function Example() {\n  const [open, setOpen] = useState(false)\n  const [loading, setLoading] = useState(false)\n\n  const handleConfirm = async () => {\n    setLoading(true)\n\n    await new Promise(res => setTimeout(res, 2000))\n\n    setLoading(false)\n    setOpen(false)\n  }\n\n  return (\n    <>\n      <button onClick={() => setOpen(true)}>\n        Delete Item\n      </button>\n\n      <ConfirmModal\n        open={open}\n        onCancel={() => setOpen(false)}\n        onConfirm={handleConfirm}\n        isLoading={loading}\n        title=\"Delete this item?\"\n        description=\"This action cannot be undone.\"\n        confirmLabel=\"Delete\"\n        cancelLabel=\"Cancel\"\n        type=\"delete\"\n      />\n    </>\n  )\n}\n```\n\n---\n\n## ⚙️ Props\n\n| Prop         | Type                 | Default         | Description               |\n| ------------ | -------------------- | --------------- | ------------------------- |\n| open         | boolean              | —               | Controls modal visibility |\n| onConfirm    | () => void           | —               | Confirm action            |\n| onCancel     | () => void           | —               | Cancel action             |\n| title        | string               | \"Are you sure?\" | Modal title               |\n| description  | string               | —               | Optional description      |\n| confirmLabel | string               | \"Confirm\"       | Confirm button text       |\n| cancelLabel  | string               | \"Cancel\"        | Cancel button text        |\n| isLoading    | boolean              | false           | Shows spinner             |\n| type         | \"default\" | \"delete\" | \"default\"       | Button style              |\n\n---\n\n## 🎨 Button Types\n\n```tsx\ntype=\"default\"\ntype=\"delete\"\n```\n\n---\n\n## 🧠 Async Friendly\n\nModal stays open automatically while your async action is loading:\n\n```tsx\nconst handleConfirm = async () => {\n  setLoading(true)\n  await deleteUser()\n  setLoading(false)\n  setOpen(false)\n}\n```\n\n---\n\n## 📌 Notes\n\nYou must import the styles manually:\n\n```ts\nimport \"@amirhpooladi/react-confirm-modal/dist/index.css\"\n```\n\n---\n\n## 🪪 License\n\nMIT\n","readmeFilename":"README.md"}