{"_id":"@aldoalfaro/magnet","_rev":"5-6554c4a353b562c975390cd6a951806c","name":"@aldoalfaro/magnet","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@aldoalfaro/magnet","version":"1.0.0","keywords":["lead-magnet","modal","popup","lead-capture","conversion"],"author":{"name":"Aldo Alfaro"},"license":"MIT","_id":"@aldoalfaro/magnet@1.0.0","maintainers":[{"name":"aldoalfaro","email":"aldoalfaro@gmail.com"}],"homepage":"https://github.com/aldoalfaro/magnet#readme","bugs":{"url":"https://github.com/aldoalfaro/magnet/issues"},"dist":{"shasum":"ff8e2288e00207f6ffc2e10a82eb44d3fd736a68","tarball":"https://registry.npmjs.org/@aldoalfaro/magnet/-/magnet-1.0.0.tgz","fileCount":8,"integrity":"sha512-WzmAQzDcoPNTJP3mSJ9XnuHQdtiHzS8FwUJe5EWJA+VEEEf/7YvBbACtZ9OOAxRQzBBiI8jYX8KfTEovDgCqyA==","signatures":[{"sig":"MEUCIA+UIc3HhUgqC6b21tyCO3id4/0feqbzxXBNWiuLjJKoAiEAqnqwumIQlwZM+ohZ/JF2Giv67yIatal/OmJCd/IG8A4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31092},"main":"dist/magnet.min.js","type":"module","gitHead":"634ef12adf17dc0e1ab4998d98ba48eb99fcebd8","scripts":{"build":"rollup -c"},"_npmUser":{"name":"aldoalfaro","email":"aldoalfaro@gmail.com"},"repository":{"url":"git+https://github.com/aldoalfaro/magnet.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight JavaScript library for lead capture modals. No dependencies, pure vanilla JS.","directories":{},"_nodeVersion":"20.18.1","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.56.0","@rollup/plugin-terser":"^0.4.4"},"_npmOperationalInternal":{"tmp":"tmp/magnet_1.0.0_1769481362695_0.5881037792056358","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aldoalfaro/magnet","version":"1.0.1","keywords":["lead-magnet","modal","popup","lead-capture","conversion"],"author":{"name":"Aldo Alfaro"},"license":"MIT","_id":"@aldoalfaro/magnet@1.0.1","maintainers":[{"name":"aldoalfaro","email":"aldoalfaro@gmail.com"}],"homepage":"https://github.com/aldoalfaro/magnet#readme","bugs":{"url":"https://github.com/aldoalfaro/magnet/issues"},"dist":{"shasum":"0dea0c07bac61c9806c9fd5f8d27306ec39b8f63","tarball":"https://registry.npmjs.org/@aldoalfaro/magnet/-/magnet-1.0.1.tgz","fileCount":8,"integrity":"sha512-jkQsXtrI6z1pL9vXUTWlXhaEuwfQVbJa7QHQZnnh/gMUoUNZtrb/UwonGBcQ6ypp0JMKhexakovoQya0w9KBSw==","signatures":[{"sig":"MEYCIQDz9h14ORHl9vPWBeGT4ZWgMAMHW4jXCtAUuBvBCBJlfAIhAJTQdh+BbbDLB5A3cbWyeIJV01idYQuwh74B80SlAcYn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37376},"main":"dist/magnet.min.js","type":"module","gitHead":"4e9052d5fccedbf72f13a98656e9b992cf45f171","scripts":{"build":"rollup -c"},"_npmUser":{"name":"aldoalfaro","email":"aldoalfaro@gmail.com"},"repository":{"url":"git+https://github.com/aldoalfaro/magnet.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight JavaScript library for lead capture modals. No dependencies, pure vanilla JS.","directories":{},"_nodeVersion":"20.18.1","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.56.0","@rollup/plugin-terser":"^0.4.4"},"_npmOperationalInternal":{"tmp":"tmp/magnet_1.0.1_1769552593794_0.16029901080658537","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aldoalfaro/magnet","version":"1.0.2","keywords":["lead-magnet","modal","popup","lead-capture","conversion"],"author":{"name":"Aldo Alfaro"},"license":"MIT","_id":"@aldoalfaro/magnet@1.0.2","maintainers":[{"name":"aldoalfaro","email":"aldoalfaro@gmail.com"}],"homepage":"https://github.com/aldoalfaro/magnet#readme","bugs":{"url":"https://github.com/aldoalfaro/magnet/issues"},"dist":{"shasum":"4cbcc78808ba9ed2620a9f14f2dba2ae1377a34b","tarball":"https://registry.npmjs.org/@aldoalfaro/magnet/-/magnet-1.0.2.tgz","fileCount":8,"integrity":"sha512-CqGrg603LovQ9pQGXp4lz9svo1KQOsKIJfqAm8U1N9/05tDc6OelteeftFUMEcTuyVPxATwcFtW2vdYgBF7l0w==","signatures":[{"sig":"MEUCIQDOvwJ2dITwfEq8vFKMY9Hn8tD1fgskzrULoBePJzH3hAIgYOq+Io3G/Y+8I6pzMvwi1Y4cq0CdtZtHS1h20m2e800=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37942},"main":"dist/magnet.min.js","type":"module","gitHead":"74d0f2bd59f7de019d1d077c5b21c8dadda4f61b","scripts":{"build":"rollup -c"},"_npmUser":{"name":"aldoalfaro","email":"aldoalfaro@gmail.com"},"repository":{"url":"git+https://github.com/aldoalfaro/magnet.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight JavaScript library for lead capture modals. No dependencies, pure vanilla JS.","directories":{},"_nodeVersion":"20.18.1","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.56.0","@rollup/plugin-terser":"^0.4.4"},"_npmOperationalInternal":{"tmp":"tmp/magnet_1.0.2_1769565855766_0.7887067724559615","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@aldoalfaro/magnet","version":"1.0.3","keywords":["lead-magnet","modal","popup","lead-capture","conversion"],"author":{"name":"Aldo Alfaro"},"license":"MIT","_id":"@aldoalfaro/magnet@1.0.3","maintainers":[{"name":"aldoalfaro","email":"aldoalfaro@gmail.com"}],"homepage":"https://github.com/aldoalfaro/magnet#readme","bugs":{"url":"https://github.com/aldoalfaro/magnet/issues"},"dist":{"shasum":"9079b09532f36ac7813cad46b60769ba3c117f90","tarball":"https://registry.npmjs.org/@aldoalfaro/magnet/-/magnet-1.0.3.tgz","fileCount":8,"integrity":"sha512-2RuUHLaNn0xLgp0jHETHmxPo0E+vK+/GHHEKALZjhuIq3uMrGfvagug4d/uWvcNWSPFcMEHaK9kfPjLYwTE6DA==","signatures":[{"sig":"MEYCIQCFutb45kq8N4pr6oeVNl0pQLZrXg1LqUTBdzbeKMPkhgIhAP1W/H5fjBUnkPw5219jt2NY1FmbVVsHZkYwUeJJPW74","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38171},"main":"dist/magnet.min.js","type":"module","gitHead":"534d7371fa80da9984c1f6070f578545e3b428e5","scripts":{"build":"rollup -c"},"_npmUser":{"name":"aldoalfaro","email":"aldoalfaro@gmail.com"},"repository":{"url":"git+https://github.com/aldoalfaro/magnet.git","type":"git"},"_npmVersion":"10.8.2","description":"A lightweight JavaScript library for lead capture modals. No dependencies, pure vanilla JS.","directories":{},"_nodeVersion":"20.18.1","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.56.0","@rollup/plugin-terser":"^0.4.4"},"_npmOperationalInternal":{"tmp":"tmp/magnet_1.0.3_1769566202739_0.07156319280156631","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@aldoalfaro/magnet","version":"1.0.4","description":"A lightweight JavaScript library for lead capture modals. No dependencies, pure vanilla JS.","main":"dist/magnet.min.js","type":"module","scripts":{"build":"rollup -c"},"keywords":["lead-magnet","modal","popup","lead-capture","conversion"],"author":{"name":"Aldo Alfaro"},"repository":{"type":"git","url":"git+https://github.com/aldoalfaro/magnet.git"},"license":"MIT","devDependencies":{"@rollup/plugin-terser":"^0.4.4","rollup":"^4.56.0"},"_id":"@aldoalfaro/magnet@1.0.4","gitHead":"534d7371fa80da9984c1f6070f578545e3b428e5","bugs":{"url":"https://github.com/aldoalfaro/magnet/issues"},"homepage":"https://github.com/aldoalfaro/magnet#readme","_nodeVersion":"20.18.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-g1ooTyngsi2x1b0R/sEDdIg7p5uMtFPLKh2l9Xg/+uU+IZeB7qhgQEDI9mfBWR/DcK1JSoCSAozAD9MlU7xCTA==","shasum":"a3426c7ecbdfe87e855e85b44aa96d99ea5ad38e","tarball":"https://registry.npmjs.org/@aldoalfaro/magnet/-/magnet-1.0.4.tgz","fileCount":8,"unpackedSize":38233,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDT4J3PrkiPMi8DxPwC9SqS0RhDb2H8h39S/CYmFN/9mgIgF2ZcTa0H+SvO4OGm0nLRUyF+G6S2+s07vmuPjQ4HSNs="}]},"_npmUser":{"name":"aldoalfaro","email":"aldoalfaro@gmail.com"},"directories":{},"maintainers":[{"name":"aldoalfaro","email":"aldoalfaro@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/magnet_1.0.4_1769566457081_0.10235883920285427"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-27T02:36:02.568Z","modified":"2026-01-28T02:14:17.320Z","1.0.0":"2026-01-27T02:36:02.847Z","1.0.1":"2026-01-27T22:23:13.934Z","1.0.2":"2026-01-28T02:04:15.952Z","1.0.3":"2026-01-28T02:10:02.894Z","1.0.4":"2026-01-28T02:14:17.216Z"},"bugs":{"url":"https://github.com/aldoalfaro/magnet/issues"},"author":{"name":"Aldo Alfaro"},"license":"MIT","homepage":"https://github.com/aldoalfaro/magnet#readme","keywords":["lead-magnet","modal","popup","lead-capture","conversion"],"repository":{"type":"git","url":"git+https://github.com/aldoalfaro/magnet.git"},"description":"A lightweight JavaScript library for lead capture modals. No dependencies, pure vanilla JS.","maintainers":[{"name":"aldoalfaro","email":"aldoalfaro@gmail.com"}],"readme":"# 🧲 Magnet\n\nA lightweight, customizable JavaScript library for creating lead capture modals. No runtime dependencies, pure vanilla JS.\n\n## Features\n\n- 🎯 **Smart Triggers** - Time-based, scroll-based, or exit intent\n- 🎨 **Fully Customizable** - Colors, text, images, and layouts\n- 📱 **Responsive** - Works perfectly on all devices\n- ✅ **Form Validation** - Built-in email validation and error handling\n- ⚡ **Lightweight** - No dependencies, pure vanilla JavaScript\n- 🔄 **Multiple Instances** - Run multiple modals on the same page\n\n## Installation\n\n### NPM\n```bash\nnpm install @aldoalfaro/magnet\n```\n\n### CDN\n```html\n<script src=\"https://cdn.jsdelivr.net/npm/@aldoalfaro/magnet@latest/dist/magnet.min.js\"></script>\n```\n\n## Quick Start\n```html\n<script src=\"https://cdn.jsdelivr.net/npm/@aldoalfaro/magnet@latest/dist/magnet.min.js\"></script>\n<script>\n  new Magnet({\n    trigger: {\n      type: 'time',\n      value: 3\n    },\n    submit: {\n      url: 'https://your-webhook-url.com'\n    }\n  });\n</script>\n```\n\n## Examples\n\n### Time-based Trigger\nOpens after 3 seconds with default styling.\n```javascript\nnew Magnet({\n  trigger: {\n    type: 'time',\n    value: 3\n  },\n  submit: {\n    url: 'https://hooks.website.com/...'\n  }\n});\n```\n\n### Scroll Trigger (No Backdrop)\nAppears at 50% scroll in bottom-right corner without backdrop overlay.\n```javascript\nnew Magnet({\n  trigger: {\n    type: 'scroll',\n    value: 50\n  },\n  submit: {\n    url: 'https://hooks.website.com/...'\n  },\n  design: {\n    position: 'bottom-right',\n    backdrop: false,\n    ctaColor: '#FF5722'\n  },\n  content: {\n    title: '🎁 Special Offer!',\n    introText: 'Get 20% off today.'\n  }\n});\n```\n\n### Exit Intent with Image\nTriggers when user moves mouse to top of viewport.\n```javascript\nnew Magnet({\n  trigger: {\n    type: 'exit'\n  },\n  submit: {\n    url: 'https://hooks.website.com/...'\n  },\n  design: {\n    imageUrl: 'https://images.unsplash.com/photo-example.jpg',\n    layout: 'left',\n    ctaColor: '#9C27B0'\n  },\n  content: {\n    title: 'Download Our eBook',\n    introText: 'Learn advanced techniques.'\n  }\n});\n```\n\n### Custom Hidden Fields\nAdd tracking parameters or custom data.\n```javascript\nnew Magnet({\n  trigger: { type: 'time', value: 3 },\n  submit: { url: 'https://your-webhook.com' },\n  customFields: {\n    utm_source: 'website',\n    utm_campaign: 'summer-2024'\n  }\n});\n```\n\n## Configuration\n\n### Full Configuration Example\n```javascript\nnew Magnet({\n  // Trigger configuration\n  trigger: {\n    type: 'time',           // 'time', 'scroll', 'exit'\n    value: 3                // seconds for time, percentage for scroll\n  },\n  \n  // Submission configuration\n  submit: {\n    url: '',                // Required: webhook/API endpoint\n    format: 'formdata'      // 'formdata' or 'json'\n  },\n  \n  // Custom hidden fields\n  customFields: {\n    source: 'homepage',\n    campaign: 'promo'\n  },\n  \n  // Design configuration\n  design: {\n    position: 'centered',   // See positions below\n    backdrop: true,         // Show backdrop overlay\n    imageUrl: '',           // Optional image URL\n    layout: 'top',          // 'top', 'left', 'right'\n    backgroundColor: '#ffffff',\n    textColor: '#333333',\n    ctaColor: '#007bff'\n  },\n  \n  // Content configuration\n  content: {\n    title: 'Get Your Free Guide',\n    introText: 'Enter your details to download',\n    buttonText: 'Download Now',\n    thankYouTitle: 'Thank You!',\n    thankYouText: 'Check your email for the download link',\n    errorMessage: 'Please fill in all fields correctly.'\n  }\n});\n```\n\n### Configuration Reference\n\n| Parameter | Possible Values | Default | Description |\n|-----------|----------------|---------|-------------|\n| **Trigger** |\n| `trigger.type` | `'time'`, `'scroll'`, `'exit'` | `'time'` | When to trigger the modal |\n| `trigger.value` | Number | `3` | Seconds for time trigger, percentage for scroll trigger |\n| **Submit** |\n| `submit.url` | String (URL) | `''` | Webhook or API endpoint to submit form data |\n| `submit.format` | `'formdata'`, `'json'` | `'formdata'` | Format for submission |\n| **Custom Fields** |\n| `customFields` | Object | `{}` | Key-value pairs for hidden form fields |\n| **Design** |\n| `design.position` | `'centered'`, `'bottom-right'`, `'top-center'`, `'top-left'`, `'bottom-left'`, `'bottom-center'` | `'centered'` | Modal position on screen |\n| `design.backdrop` | `true`, `false` | `true` | Show dark overlay behind modal |\n| `design.imageUrl` | String (URL) | `''` | Optional image to display in modal |\n| `design.layout` | `'top'`, `'left'`, `'right'` | `'top'` | Image position relative to content |\n| `design.backgroundColor` | Hex color | `'#ffffff'` | Modal background color |\n| `design.textColor` | Hex color | `'#333333'` | Text color |\n| `design.ctaColor` | Hex color | `'#007bff'` | Submit button color |\n| **Content** |\n| `content.title` | String | `''` | Optional. Main heading text. |\n| `content.introText` | String | `'Enter your details below'` | Subheading or description text |\n| `content.buttonText` | String | `'Submit'` | Submit button text |\n| `content.thankYouTitle` | String | `'Thank You!'` | Title shown after successful submission |\n| `content.thankYouText` | String | `'We will get back to you soon.'` | Message shown after successful submission |\n| `content.errorMessage` | String | `'Please fill in all fields correctly.'` | Error message for validation failures |\n| `content.nameLabel` | String | `'Name'` | Label for name field |\n| `content.emailLabel` | String | `'Email'` | Label for email field |\n\n## Methods\n\n### `open()`\nManually open the modal. Can be called multiple times.\n```javascript\nconst magnet = new Magnet({ /* config */ });\nmagnet.open();  // Opens the modal\n```\n\n### `close()`\nProgrammatically close the modal.\n```javascript\nmagnet.close();\n```\n\n## Development\n```bash\n# Install build tools\nnpm install\n\n# Build minified version\nnpm run build\n```\n\n---\n\nMade with ❤️ by [Aldo Alfaro](https://aldoalfaro.com)","readmeFilename":"README.md"}