{"_id":"@dsplce-co/vue-modal","_rev":"15-aea6e274943ef87f501fda2afc375c15","name":"@dsplce-co/vue-modal","dist-tags":{"latest":"0.4.7"},"versions":{"0.1.0":{"name":"@dsplce-co/vue-modal","version":"0.1.0","keywords":[],"author":{"name":"dsplce.co"},"license":"ISC","_id":"@dsplce-co/vue-modal@0.1.0","maintainers":[{"name":"v1olen","email":"violence@dsplce.co"},{"name":"d14mndz","email":"barbara@dsplce.co"}],"dist":{"shasum":"08d21011288594302312f4faeb321453676c6807","tarball":"https://registry.npmjs.org/@dsplce-co/vue-modal/-/vue-modal-0.1.0.tgz","fileCount":14,"integrity":"sha512-srDCagMAnrNxOdHwV5j7vItFd++/EpoPhtiWXKuWfN5uqC8IyIqybLCB4FhGFQUh56GLsxrljxELwL7jVnfj1A==","signatures":[{"sig":"MEQCIGTMID4oVVyGi1RLv9g/BDWJl73aetT5nfGoZce3Ko9DAiAdJVecgEI9BFmZhdvn3MvqbDPaWVGSOxAwnZu5GCgC2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7572},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"gitHead":"6dae64fc0193c6c93007443579a67de2a18db757","scripts":{"dev":"vite","build":"rm -rf dist && vue-tsc --noEmit && vite build"},"_npmUser":{"name":"d14mndz","email":"barbara@dsplce.co"},"deprecated":"Mislicensed as ISC; please use @dsplce-co/vue-modal@>=0.2 which is (MIT OR Apache-2.0)","_npmVersion":"8.15.0","description":"Utility library for displaying modals in Vue","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@vueuse/core":"^14.1.0","@vueuse/components":"^14.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.8.1","devDependencies":{"vue":"3.5.24","vite":"^7.3.0","vue-tsc":"^3.1.8","typescript":"^5.9.3","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.3","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"3.x"},"_npmOperationalInternal":{"tmp":"tmp/vue-modal_0.1.0_1767281780342_0.8940443497144852","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dsplce-co/vue-modal","version":"0.1.1","keywords":[],"author":{"name":"dsplce.co"},"license":"ISC","_id":"@dsplce-co/vue-modal@0.1.1","maintainers":[{"name":"v1olen","email":"violence@dsplce.co"},{"name":"d14mndz","email":"barbara@dsplce.co"}],"dist":{"shasum":"da21f3de51d8da2121789bd22a6a41ddeed9074c","tarball":"https://registry.npmjs.org/@dsplce-co/vue-modal/-/vue-modal-0.1.1.tgz","fileCount":5,"integrity":"sha512-QGYzSsU1UBDXkOiipjiCBeOJlbeGGejpiVWGnr061h9qUMxUoXuQfFrhJgAIEnZsnGhrfpFf1gqx+j+wK/6PZQ==","signatures":[{"sig":"MEUCIDoBOs8+EIh4uwnl8GqikaoqG9zlqJumXYagPYDWHNqiAiEAjFFFZlDjbHfjjHFHJET/g4o8dYJ2fTDnCEqETzLJKC4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25581},"_from":"file:dsplce-co-vue-modal-0.1.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"scripts":{"dev":"vite","build":"rm -rf dist && vue-tsc --noEmit && vite build"},"_npmUser":{"name":"d14mndz","email":"barbara@dsplce.co"},"_resolved":"/private/var/folders/47/_4118b9d2j100c8jyf_044680000gn/T/108f357c11e11027039fa4708d067a05/dsplce-co-vue-modal-0.1.1.tgz","_integrity":"sha512-QGYzSsU1UBDXkOiipjiCBeOJlbeGGejpiVWGnr061h9qUMxUoXuQfFrhJgAIEnZsnGhrfpFf1gqx+j+wK/6PZQ==","deprecated":"Mislicensed as ISC; please use @dsplce-co/vue-modal@>=0.2 which is (MIT OR Apache-2.0)","_npmVersion":"11.6.2","description":"Utility library for displaying modals in Vue","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@vueuse/core":"^14.1.0","@vueuse/components":"^14.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"3.5.24","vite":"^7.3.0","vue-tsc":"^3.1.8","typescript":"^5.9.3","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.3","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"3.x"},"_npmOperationalInternal":{"tmp":"tmp/vue-modal_0.1.1_1767381514577_0.21876171899090213","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dsplce-co/vue-modal","version":"0.2.0","keywords":[],"author":{"name":"dsplce.co"},"license":"(MIT OR Apache-2.0)","_id":"@dsplce-co/vue-modal@0.2.0","maintainers":[{"name":"v1olen","email":"violence@dsplce.co"},{"name":"d14mndz","email":"barbara@dsplce.co"}],"dist":{"shasum":"e10625f8b4e82ccee5291f8fab1de418d50c4cc3","tarball":"https://registry.npmjs.org/@dsplce-co/vue-modal/-/vue-modal-0.2.0.tgz","fileCount":5,"integrity":"sha512-oFgjVeljAADl5funfZyAZFEAYw73nSkiUqLEMUbr3mVtXgQS9ehuabviV/kfhQiJkWK4ML27melxS93D+i993g==","signatures":[{"sig":"MEQCIHFvIf4vXQQoyjqh9a72ScVRsRPky5q6S0uAmt15HBLsAiBvxDwlFxSwZV7Itzt8wQ5o5jBGMFMEJ1Htb5nA6tNrTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25597},"_from":"file:dsplce-co-vue-modal-0.2.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"scripts":{"dev":"vite","build":"rm -rf dist && vue-tsc --noEmit && vite build"},"_npmUser":{"name":"d14mndz","email":"barbara@dsplce.co"},"_resolved":"/private/var/folders/47/_4118b9d2j100c8jyf_044680000gn/T/23f3e675e0d667f47fbba463a51ea684/dsplce-co-vue-modal-0.2.0.tgz","_integrity":"sha512-oFgjVeljAADl5funfZyAZFEAYw73nSkiUqLEMUbr3mVtXgQS9ehuabviV/kfhQiJkWK4ML27melxS93D+i993g==","_npmVersion":"11.6.2","description":"Utility library for displaying modals in Vue","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@vueuse/core":"^14.1.0","@vueuse/components":"^14.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"3.5.24","vite":"^7.3.0","vue-tsc":"^3.1.8","typescript":"^5.9.3","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.3","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"3.x"},"_npmOperationalInternal":{"tmp":"tmp/vue-modal_0.2.0_1767709047857_0.13154739209554211","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@dsplce-co/vue-modal","version":"0.3.0","keywords":[],"author":{"name":"dsplce.co"},"license":"ISC","_id":"@dsplce-co/vue-modal@0.3.0","maintainers":[{"name":"v1olen","email":"violence@dsplce.co"},{"name":"d14mndz","email":"barbara@dsplce.co"},{"name":"xkcm","email":"xkcm16+npm@gmail.com"}],"homepage":"https://github.com/dsplce-co/vue-modal#readme","bugs":{"url":"https://github.com/dsplce-co/vue-modal/issues"},"dist":{"shasum":"d2909e086cb8d2a1d8684e6c30b24f989b27deb3","tarball":"https://registry.npmjs.org/@dsplce-co/vue-modal/-/vue-modal-0.3.0.tgz","fileCount":4,"integrity":"sha512-8p6CM0BOx0LYRAIC/1HOU0pngOa4VSXw43JPMRw++hrm9cBUDL6xgObMkScyZRHhybeaBvKKvwNTVtjK0waVhg==","signatures":[{"sig":"MEYCIQDoH3cZQ2nhv1kHlp9U9npW36q32sjbLhDb3UbmGQm7sAIhAO4hfRrOxIGE8aHQDKvJWKHFspE1tQCt2/ox+TlPM6E+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dsplce-co%2fvue-modal@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":20628},"_from":"file:dsplce-co-vue-modal-0.3.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"}},"scripts":{"dev":"vite","build":"rm -rf dist && vue-tsc --noEmit && vite build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:56bf70ad-6d77-4dae-ada5-788dfc7b0cfd"}},"_resolved":"/tmp/4f4d308e6b86189a93fefda8e9ded3c4/dsplce-co-vue-modal-0.3.0.tgz","_integrity":"sha512-8p6CM0BOx0LYRAIC/1HOU0pngOa4VSXw43JPMRw++hrm9cBUDL6xgObMkScyZRHhybeaBvKKvwNTVtjK0waVhg==","deprecated":"Mislicensed as ISC; please use @dsplce-co/vue-modal@>=0.4 which is (MIT OR Apache-2.0)","repository":{"url":"git+https://github.com/dsplce-co/vue-modal.git"},"_npmVersion":"11.6.2","description":"Utility library for displaying modals in Vue","directories":{},"_nodeVersion":"25.1.0","dependencies":{"@vueuse/core":"^14.1.0","@vueuse/components":"^14.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"3.5.24","vite":"^7.3.0","vue-tsc":"^3.1.8","typescript":"^5.9.3","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.3","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"3.x"},"_npmOperationalInternal":{"tmp":"tmp/vue-modal_0.3.0_1767894354454_0.4859975885434962","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@dsplce-co/vue-modal","version":"0.4.0","keywords":[],"author":{"name":"dsplce.co"},"license":"(MIT OR Apache-2.0)","_id":"@dsplce-co/vue-modal@0.4.0","maintainers":[{"name":"v1olen","email":"violence@dsplce.co"},{"name":"d14mndz","email":"barbara@dsplce.co"},{"name":"xkcm","email":"xkcm16+npm@gmail.com"}],"homepage":"https://github.com/dsplce-co/vue-modal#readme","bugs":{"url":"https://github.com/dsplce-co/vue-modal/issues"},"dist":{"shasum":"a7285e59ecdbe378fdbde3fe564a9281d4bb9bd7","tarball":"https://registry.npmjs.org/@dsplce-co/vue-modal/-/vue-modal-0.4.0.tgz","fileCount":4,"integrity":"sha512-/UUy+8v6iyf4h72yOZJdY14LHU3uxur8e9X8DDseUe9FXvDeqAsHnwFqZi6r44E7PkFRXYpc4gXBjB3x11fFzQ==","signatures":[{"sig":"MEQCIDshapHDGdJlpFUUZ96l6D34qUEbQguMlXcweOkIJLsfAiBEm9MnM1Pdk28I2eV4nEnOM38jVzTabzOHjUkazH0fig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20644},"_from":"file:dsplce-co-vue-modal-0.4.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"}},"scripts":{"dev":"vite","build":"rm -rf dist && vue-tsc --noEmit && vite build"},"_npmUser":{"name":"d14mndz","email":"barbara@dsplce.co"},"_resolved":"/private/var/folders/47/_4118b9d2j100c8jyf_044680000gn/T/d023413dba37325108be61edecb253d1/dsplce-co-vue-modal-0.4.0.tgz","_integrity":"sha512-/UUy+8v6iyf4h72yOZJdY14LHU3uxur8e9X8DDseUe9FXvDeqAsHnwFqZi6r44E7PkFRXYpc4gXBjB3x11fFzQ==","repository":{"url":"git+https://github.com/dsplce-co/vue-modal.git"},"_npmVersion":"11.6.2","description":"Utility library for displaying modals in Vue","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@vueuse/core":"^14.1.0","@vueuse/components":"^14.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"3.5.24","vite":"^7.3.0","vue-tsc":"^3.1.8","typescript":"^5.9.3","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.3","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"3.x"},"_npmOperationalInternal":{"tmp":"tmp/vue-modal_0.4.0_1767947924173_0.62083509320859","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@dsplce-co/vue-modal","version":"0.4.1","keywords":[],"author":{"name":"dsplce.co"},"license":"(MIT OR Apache-2.0)","_id":"@dsplce-co/vue-modal@0.4.1","maintainers":[{"name":"v1olen","email":"violence@dsplce.co"},{"name":"d14mndz","email":"barbara@dsplce.co"},{"name":"xkcm","email":"xkcm16+npm@gmail.com"}],"homepage":"https://github.com/dsplce-co/vue-modal#readme","bugs":{"url":"https://github.com/dsplce-co/vue-modal/issues"},"dist":{"shasum":"bb74579cb47ee0e634fecd3bd8ce2383e29a2ac3","tarball":"https://registry.npmjs.org/@dsplce-co/vue-modal/-/vue-modal-0.4.1.tgz","fileCount":4,"integrity":"sha512-lWXYCUsqn4hkyVPgDXNIWR139hxxzk+w2EA9pydXBKDjbDtnKBTWArqLYQHYSrixpLoC73EJTZlwCtmDH9BBEg==","signatures":[{"sig":"MEUCIEffeE7emNxaP81e9Dphw5EC0HcuuXGkQrAJ/UjMebvsAiEAy8g9XlyAKX2QFfs4GbbDQxLgaysYjc29QRTCwzVqRGo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dsplce-co%2fvue-modal@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21607},"_from":"file:dsplce-co-vue-modal-0.4.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"}},"scripts":{"dev":"vite","build":"rm -rf dist && vue-tsc --noEmit && vite build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:56bf70ad-6d77-4dae-ada5-788dfc7b0cfd"}},"_resolved":"/tmp/c6213b49e58f8cdc02faf16632989ec1/dsplce-co-vue-modal-0.4.1.tgz","_integrity":"sha512-lWXYCUsqn4hkyVPgDXNIWR139hxxzk+w2EA9pydXBKDjbDtnKBTWArqLYQHYSrixpLoC73EJTZlwCtmDH9BBEg==","repository":{"url":"git+https://github.com/dsplce-co/vue-modal.git"},"_npmVersion":"11.6.2","description":"Utility library for displaying modals in Vue","directories":{},"_nodeVersion":"25.1.0","dependencies":{"@vueuse/core":"^14.1.0","@vueuse/components":"^14.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"3.5.24","vite":"^7.3.0","vue-tsc":"^3.1.8","typescript":"^5.9.3","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.3","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"3.x"},"_npmOperationalInternal":{"tmp":"tmp/vue-modal_0.4.1_1768304047311_0.353573082826939","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@dsplce-co/vue-modal","version":"0.4.2","keywords":[],"author":{"name":"dsplce.co"},"license":"(MIT OR Apache-2.0)","_id":"@dsplce-co/vue-modal@0.4.2","maintainers":[{"name":"v1olen","email":"violence@dsplce.co"},{"name":"d14mndz","email":"barbara@dsplce.co"},{"name":"xkcm","email":"xkcm16+npm@gmail.com"}],"homepage":"https://github.com/dsplce-co/vue-modal#readme","bugs":{"url":"https://github.com/dsplce-co/vue-modal/issues"},"dist":{"shasum":"88231c7b059dea3871a904357f52aa496676c15c","tarball":"https://registry.npmjs.org/@dsplce-co/vue-modal/-/vue-modal-0.4.2.tgz","fileCount":4,"integrity":"sha512-MeUPk8zn30L5ruF9sAxtvF9iJH5YkLd92rJTLCuwmvml+ElzTw66pkfCYch/5VSg8KgYnsS2UJSMAEiJ1xrkEw==","signatures":[{"sig":"MEUCIEXpgVuI/NIsneyC/uQ09v29Uieq6wDLFnHn7r8/aj6ZAiEA7qngxeO5In6by+JVUL+aYzdRFXPJRSlwq4uFutxMkXk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21620},"_from":"file:dsplce-co-vue-modal-0.4.2.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"}},"scripts":{"dev":"vite","build":"rm -rf dist && vue-tsc --noEmit && vite build"},"_npmUser":{"name":"d14mndz","email":"barbara@dsplce.co"},"_resolved":"/private/var/folders/47/_4118b9d2j100c8jyf_044680000gn/T/6e05dcb585bc8e4a6bca9c6296f2beb8/dsplce-co-vue-modal-0.4.2.tgz","_integrity":"sha512-MeUPk8zn30L5ruF9sAxtvF9iJH5YkLd92rJTLCuwmvml+ElzTw66pkfCYch/5VSg8KgYnsS2UJSMAEiJ1xrkEw==","repository":{"url":"git+https://github.com/dsplce-co/vue-modal.git"},"_npmVersion":"11.6.2","description":"Utility library for displaying modals in Vue","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@vueuse/core":"^14.1.0","@vueuse/components":"^14.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"3.5.24","vite":"^7.3.0","vue-tsc":"^3.1.8","typescript":"^5.9.3","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.3","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"3.x"},"_npmOperationalInternal":{"tmp":"tmp/vue-modal_0.4.2_1768313246436_0.3030624597719276","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@dsplce-co/vue-modal","version":"0.4.3","keywords":[],"author":{"name":"dsplce.co"},"license":"(MIT OR Apache-2.0)","_id":"@dsplce-co/vue-modal@0.4.3","maintainers":[{"name":"v1olen","email":"violence@dsplce.co"},{"name":"d14mndz","email":"barbara@dsplce.co"},{"name":"xkcm","email":"xkcm16+npm@gmail.com"}],"homepage":"https://github.com/dsplce-co/vue-modal#readme","bugs":{"url":"https://github.com/dsplce-co/vue-modal/issues"},"dist":{"shasum":"c03621f4b436b9fe94ab52fa69b25cb1a9e6271c","tarball":"https://registry.npmjs.org/@dsplce-co/vue-modal/-/vue-modal-0.4.3.tgz","fileCount":4,"integrity":"sha512-z9BHcrM1BUAavjpIWTOWJx1nPejHwOpC4DAIircpzp58oolVe76d9xg+uHkUH8xqivJgs+L9TJ0/C8QGdDdldQ==","signatures":[{"sig":"MEYCIQDV2r2qqV1qLVYZMbtgyVZVc7QFnaRAt+Qj5RCe87zGtQIhAK3e4QKnJru6CCxzIk1UBe6FlFuy098k1f7r3WUfRKaY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21677},"_from":"file:dsplce-co-vue-modal-0.4.3.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"}},"scripts":{"dev":"vite","build":"rm -rf dist && vue-tsc --noEmit && vite build"},"_npmUser":{"name":"d14mndz","email":"barbara@dsplce.co"},"_resolved":"/private/var/folders/47/_4118b9d2j100c8jyf_044680000gn/T/6936f8ebc2ce0a5f3e1c12f1515c5f1b/dsplce-co-vue-modal-0.4.3.tgz","_integrity":"sha512-z9BHcrM1BUAavjpIWTOWJx1nPejHwOpC4DAIircpzp58oolVe76d9xg+uHkUH8xqivJgs+L9TJ0/C8QGdDdldQ==","repository":{"url":"git+https://github.com/dsplce-co/vue-modal.git"},"_npmVersion":"11.6.2","description":"Utility library for displaying modals in Vue","directories":{},"_nodeVersion":"24.12.0","dependencies":{"@vueuse/core":"^14.1.0","@vueuse/components":"^14.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"3.5.24","vite":"^7.3.0","vue-tsc":"^3.1.8","typescript":"^5.9.3","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.3","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"3.x"},"_npmOperationalInternal":{"tmp":"tmp/vue-modal_0.4.3_1768313866618_0.17908417707399438","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@dsplce-co/vue-modal","version":"0.4.4","keywords":[],"author":{"name":"dsplce.co"},"license":"(MIT OR Apache-2.0)","_id":"@dsplce-co/vue-modal@0.4.4","maintainers":[{"name":"v1olen","email":"violence@dsplce.co"},{"name":"robertjuszczynski","email":"robertj.webdev@icloud.com"},{"name":"d14mndz","email":"barbara@dsplce.co"},{"name":"xkcm","email":"xkcm16+npm@gmail.com"}],"homepage":"https://github.com/dsplce-co/vue-modal#readme","bugs":{"url":"https://github.com/dsplce-co/vue-modal/issues"},"dist":{"shasum":"e67d4103c922c3dfc7377d19961a6b3bf9ceed2a","tarball":"https://registry.npmjs.org/@dsplce-co/vue-modal/-/vue-modal-0.4.4.tgz","fileCount":4,"integrity":"sha512-1ILV3tm1KFXYtvzj8X3E1SGEiSgjV2m4NJcqgI6dGF5xOzrnW2+Cd6jnTq14Am4WaNXeI43UGufeyLx9HByIxw==","signatures":[{"sig":"MEUCIF1x91fJ7u8VWhuHzKIgGAYTogYks3SmiQbbS97488EzAiEAujq9dRZ2VrWSKTiCO/6IKqivRhdh0MVoxEDsy9GBF7g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dsplce-co%2fvue-modal@0.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21677},"_from":"file:dsplce-co-vue-modal-0.4.4.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"}},"scripts":{"dev":"vite","build":"rm -rf dist && vue-tsc --noEmit && vite build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:56bf70ad-6d77-4dae-ada5-788dfc7b0cfd"}},"_resolved":"/tmp/655d02036bd300ac05af6d5bbd03b7c6/dsplce-co-vue-modal-0.4.4.tgz","_integrity":"sha512-1ILV3tm1KFXYtvzj8X3E1SGEiSgjV2m4NJcqgI6dGF5xOzrnW2+Cd6jnTq14Am4WaNXeI43UGufeyLx9HByIxw==","repository":{"url":"git+https://github.com/dsplce-co/vue-modal.git"},"_npmVersion":"11.6.2","description":"Utility library for displaying modals in Vue","directories":{},"_nodeVersion":"25.1.0","dependencies":{"@vueuse/core":"^14.1.0","@vueuse/components":"^14.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"3.5.24","vite":"^7.3.0","vue-tsc":"^3.1.8","typescript":"^5.9.3","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.3","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"3.x"},"_npmOperationalInternal":{"tmp":"tmp/vue-modal_0.4.4_1772533445382_0.30750208558513226","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@dsplce-co/vue-modal","version":"0.4.5","keywords":[],"author":{"name":"dsplce.co"},"license":"(MIT OR Apache-2.0)","_id":"@dsplce-co/vue-modal@0.4.5","maintainers":[{"name":"v1olen","email":"violence@dsplce.co"},{"name":"robertjuszczynski","email":"robertj.webdev@icloud.com"},{"name":"d14mndz","email":"barbara@dsplce.co"},{"name":"xkcm","email":"xkcm16+npm@gmail.com"}],"homepage":"https://github.com/dsplce-co/vue-modal#readme","bugs":{"url":"https://github.com/dsplce-co/vue-modal/issues"},"dist":{"shasum":"b684475cd6b7801ae62cfbb4ac9727f90aafef69","tarball":"https://registry.npmjs.org/@dsplce-co/vue-modal/-/vue-modal-0.4.5.tgz","fileCount":4,"integrity":"sha512-vS36PB+6pyjdQ/0hJIayHXEYqWO9T/+pI94J8R9YTamHUp9HgIoI7oe2B8Hny86RV63CH2BP6rZjEm8VfvnInA==","signatures":[{"sig":"MEYCIQCxE+9xj0UsfuTyLEaW7+0PKoQAqC93XNWRARDnD1DkzwIhAK8pROIR92lHSghdlII0v8BALLb+kV05tFBYDEJi04rK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dsplce-co%2fvue-modal@0.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21677},"_from":"file:dsplce-co-vue-modal-0.4.5.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"}},"scripts":{"dev":"vite","build":"rm -rf dist && vue-tsc --noEmit && vite build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:56bf70ad-6d77-4dae-ada5-788dfc7b0cfd"}},"_resolved":"/tmp/f9af5b31afd0e92c5f7ed83acd51de21/dsplce-co-vue-modal-0.4.5.tgz","_integrity":"sha512-vS36PB+6pyjdQ/0hJIayHXEYqWO9T/+pI94J8R9YTamHUp9HgIoI7oe2B8Hny86RV63CH2BP6rZjEm8VfvnInA==","repository":{"url":"git+https://github.com/dsplce-co/vue-modal.git"},"_npmVersion":"11.6.2","description":"Utility library for displaying modals in Vue","directories":{},"_nodeVersion":"25.1.0","dependencies":{"@vueuse/core":"^14.1.0","@vueuse/components":"^14.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"3.5.24","vite":"^7.3.0","vue-tsc":"^3.1.8","typescript":"^5.9.3","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.3","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"3.x"},"_npmOperationalInternal":{"tmp":"tmp/vue-modal_0.4.5_1772534302409_0.6200723085507391","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@dsplce-co/vue-modal","version":"0.4.6","keywords":[],"author":{"name":"dsplce.co"},"license":"(MIT OR Apache-2.0)","_id":"@dsplce-co/vue-modal@0.4.6","maintainers":[{"name":"v1olen","email":"violence@dsplce.co"},{"name":"robertjuszczynski","email":"robertj.webdev@icloud.com"},{"name":"d14mndz","email":"barbara@dsplce.co"},{"name":"xkcm","email":"xkcm16+npm@gmail.com"}],"homepage":"https://github.com/dsplce-co/vue-modal#readme","bugs":{"url":"https://github.com/dsplce-co/vue-modal/issues"},"dist":{"shasum":"69cda653bc6217dd0227e2b8c7889aaa1e66a4e6","tarball":"https://registry.npmjs.org/@dsplce-co/vue-modal/-/vue-modal-0.4.6.tgz","fileCount":14,"integrity":"sha512-djKKRttsGKwrmazholhsc/4ID8rALhzJVvIInVu2bY0c6gWeXoCHjKNqphifxBp7l7umg+8WW7k0kNKqVDfK9w==","signatures":[{"sig":"MEYCIQDwje9DOUL+LjvjH3PFsJT5QcUCnqDYSuTcmgR95FUtSgIhAM2UifTg9WUtTdYJsoVOju+dpszv2zl0aYoGJK6+AORx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dsplce-co%2fvue-modal@0.4.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":24356},"_from":"file:dsplce-co-vue-modal-0.4.6.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"},"./resolver":{"types":"./dist/resolver.d.ts","import":"./dist/resolver.mjs"}},"scripts":{"dev":"vite","build":"rm -rf dist && vue-tsc --noEmit && vite build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:56bf70ad-6d77-4dae-ada5-788dfc7b0cfd"}},"_resolved":"/tmp/b0336f0f76e96df1f80c7fcc04701810/dsplce-co-vue-modal-0.4.6.tgz","_integrity":"sha512-djKKRttsGKwrmazholhsc/4ID8rALhzJVvIInVu2bY0c6gWeXoCHjKNqphifxBp7l7umg+8WW7k0kNKqVDfK9w==","repository":{"url":"git+https://github.com/dsplce-co/vue-modal.git"},"_npmVersion":"11.6.2","description":"Utility library for displaying modals in Vue","directories":{},"_nodeVersion":"25.1.0","dependencies":{"@vueuse/core":"^14.1.0","@vueuse/components":"^14.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"3.5.24","vite":"^7.3.0","vue-tsc":"^3.1.8","typescript":"^5.9.3","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.3","unplugin-auto-import":"^21.0.0","unplugin-vue-components":"^31.0.0","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"3.x"},"_npmOperationalInternal":{"tmp":"tmp/vue-modal_0.4.6_1774858507409_0.29437880613518774","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"@dsplce-co/vue-modal","version":"0.4.7","description":"Utility library for displaying modals in Vue","repository":{"url":"git+https://github.com/dsplce-co/vue-modal.git"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"},"./resolver":{"types":"./dist/resolver.d.ts","import":"./dist/resolver.mjs"}},"keywords":[],"author":{"name":"dsplce.co"},"license":"(MIT OR Apache-2.0)","devDependencies":{"@vitejs/plugin-vue":"^6.0.3","typescript":"^5.9.3","unplugin-auto-import":"^21.0.0","unplugin-vue-components":"^31.0.0","vite":"^7.3.0","vite-plugin-css-injected-by-js":"^3.5.2","vite-plugin-dts":"^4.5.4","vue":"3.5.24","vue-tsc":"^3.1.8"},"peerDependencies":{"vue":"3.x"},"dependencies":{"@vueuse/components":"^14.1.0","@vueuse/core":"^14.1.0"},"publishConfig":{"access":"public"},"scripts":{"dev":"vite","build":"rm -rf dist && vue-tsc --noEmit && vite build"},"_id":"@dsplce-co/vue-modal@0.4.7","bugs":{"url":"https://github.com/dsplce-co/vue-modal/issues"},"homepage":"https://github.com/dsplce-co/vue-modal#readme","_integrity":"sha512-vsNu+/8PVWEOW8oG7vjioS78hKrVF8RB7VEH/7wICjuS7Ln2s+WFuHVKCZVmbduVVn6hkbd20wt9dp9RJdIhuQ==","_resolved":"/tmp/d7fd5863e90e13bd68fb5114a4c709da/dsplce-co-vue-modal-0.4.7.tgz","_from":"file:dsplce-co-vue-modal-0.4.7.tgz","_nodeVersion":"25.1.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-vsNu+/8PVWEOW8oG7vjioS78hKrVF8RB7VEH/7wICjuS7Ln2s+WFuHVKCZVmbduVVn6hkbd20wt9dp9RJdIhuQ==","shasum":"f063cbf8b63174b1cca69624ca58822a7575dd53","tarball":"https://registry.npmjs.org/@dsplce-co/vue-modal/-/vue-modal-0.4.7.tgz","fileCount":14,"unpackedSize":28649,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dsplce-co%2fvue-modal@0.4.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCc+uY1sSFfvvR2gNX0Ab/mWivIuHdpcAXidzBKgcJ87gIgVclkWwPvpvRE/+yTdLbdpsJtiV6ZlhStxLXGstPzbl0="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:56bf70ad-6d77-4dae-ada5-788dfc7b0cfd"}},"directories":{},"maintainers":[{"name":"v1olen","email":"violence@dsplce.co"},{"name":"robertjuszczynski","email":"robertj.webdev@icloud.com"},{"name":"d14mndz","email":"barbara@dsplce.co"},{"name":"xkcm","email":"xkcm16+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vue-modal_0.4.7_1781990586709_0.8597883093075238"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-01T15:36:20.181Z","modified":"2026-06-20T21:23:07.208Z","0.1.0":"2026-01-01T15:36:20.488Z","0.1.1":"2026-01-02T19:18:34.733Z","0.2.0":"2026-01-06T14:17:28.022Z","0.3.0":"2026-01-08T17:45:54.626Z","0.4.0":"2026-01-09T08:38:44.376Z","0.4.1":"2026-01-13T11:34:07.444Z","0.4.2":"2026-01-13T14:07:26.601Z","0.4.3":"2026-01-13T14:17:46.754Z","0.4.4":"2026-03-03T10:24:05.542Z","0.4.5":"2026-03-03T10:38:22.544Z","0.4.6":"2026-03-30T08:15:07.537Z","0.4.7":"2026-06-20T21:23:06.848Z"},"bugs":{"url":"https://github.com/dsplce-co/vue-modal/issues"},"author":{"name":"dsplce.co"},"license":"(MIT OR Apache-2.0)","homepage":"https://github.com/dsplce-co/vue-modal#readme","keywords":[],"repository":{"url":"git+https://github.com/dsplce-co/vue-modal.git"},"description":"Utility library for displaying modals in Vue","maintainers":[{"name":"v1olen","email":"violence@dsplce.co"},{"name":"robertjuszczynski","email":"robertj.webdev@icloud.com"},{"name":"d14mndz","email":"barbara@dsplce.co"},{"name":"xkcm","email":"xkcm16+npm@gmail.com"}],"readme":"> We're dsplce.co, check out our work on our website: [dsplce.co](https://dsplce.co) 🖤\n\n# vue-modal\n\n[![Vue version](https://img.shields.io/npm/dependency-version/%40dsplce-co%2Fvue-modal/dev/vue?style=for-the-badge&logo=vuedotjs&logoColor=white&label=%20&color=4FC08D)](https://vuejs.org/)\n[![TypeScript version](https://img.shields.io/npm/dependency-version/%40dsplce-co%2Fvue-modal/dev/typescript?style=for-the-badge&logo=typescript&logoColor=white&label=%20&color=3279C6)](https://www.typescriptlang.org/)\n[![NPM downloads](https://img.shields.io/npm/dw/%40dsplce-co%2Fvue-modal?style=for-the-badge&color=FF0447)](https://www.npmjs.com/package/@dsplce-co/vue-modal)\n[![NPM unpacked size](https://img.shields.io/npm/unpacked-size/%40dsplce-co%2Fvue-modal?style=for-the-badge)](https://www.npmjs.com/package/@dsplce-co/vue-modal)\n[![License](https://img.shields.io/npm/l/%40dsplce-co%2Fvue-modal?style=for-the-badge&color=007EC7)](https://www.npmjs.com/package/@dsplce-co/vue-modal)\n[![NPM version](https://img.shields.io/npm/v/%40dsplce-co%2Fvue-modal?style=for-the-badge&color=0F80C1)](https://www.npmjs.com/package/@dsplce-co/vue-modal)\n\n🧩 **Call modals imperatively, declare them declaratively** — a minimal, type-safe modal framework for [Vue 3](https://vuejs.org/).\n\n`vue-modal` lets you register a modal once and then drive it from anywhere — open it, close it, hand it fully-typed props — without prop-drilling a single `isOpen` flag through your component tree. It's the elevator, not the staircase: you don't pour a new shaft on every floor, you mount one collector and press the button (`modal.open()`) from wherever you happen to be standing.\n\n## 🖤 Features\n\n- **Type-safe by construction** — `useModal` reads your component's own props and makes you pass the required ones; the wrong shape gets caught by your editor, not by your users.\n- **Open and close from anywhere** — modal state lives outside the component tree, so whoever holds the composable holds the off-switch. No `isOpen` ref drilled through five components that don't care.\n- **Teleport-rendered** — mount one `<ModalCollector />` and every modal renders at `<body>` with a z-index that _always wins_; no `overflow: hidden` parent clips it in half.\n- **Esc _and_ click-outside** — both dismissals wired out of the box, the two things every human reflexively reaches for.\n- **Zero CSS to import** — built-in fade (tune it with `transitionDuration`), styles injected straight from the JS; no stylesheet for you to forget.\n\nAnd the bits you'd expect to _just work_:\n\n- one modal on screen at a time (why would you ever want two? 🤨)\n- a `ModalCollector` slot for bringing your own overlay and wrapper\n- `<script setup>`-native, Composition API throughout\n- an `unplugin` resolver + preset, so `useModal` and `ModalCollector` auto-import themselves\n\n---\n\n## Table of Contents\n\n- [🖤 Features](#-features)\n- [📦 Installation](#-installation)\n- [🧪 Usage](#-usage)\n  - [1. Install the plugin](#1-install-the-plugin)\n  - [2. Drop in the collector](#2-drop-in-the-collector)\n  - [3. Build a modal](#3-build-a-modal)\n  - [4. Open it with useModal](#4-open-it-with-usemodal)\n- [📐 API reference](#-api-reference)\n  - [VueModalPlugin](#vuemodalplugin)\n  - [ModalCollector](#modalcollector)\n  - [useModal](#usemodal)\n  - [ModalOverlay](#modaloverlay)\n  - [What the collector handles](#what-the-collector-handles)\n  - [Writing a modal component](#writing-a-modal-component)\n- [🎨 Styling](#-styling)\n- [🔧 Advanced usage](#-advanced-usage)\n  - [Auto-import with unplugin](#auto-import-with-unplugin)\n  - [Custom modal overlay and wrapper](#custom-modal-overlay-and-wrapper)\n- [🛠️ Requirements](#%EF%B8%8F-requirements)\n- [📁 Repo & Contributions](#-repo--contributions)\n- [📄 License](#-license)\n\n⸻\n\n## 📦 Installation\n\n```bash\nnpm install @dsplce-co/vue-modal\n# or\nyarn add @dsplce-co/vue-modal\n# or\npnpm add @dsplce-co/vue-modal\n```\n\nThat's the whole dependency — it leans on Vue 3 and nothing else you have to install yourself (see [Requirements](#%EF%B8%8F-requirements)).\n\n⸻\n\n## 🧪 Usage\n\nFour steps: install the plugin, drop the collector in once, write a modal, open it. The first two you do a single time; after that it's just `useModal` wherever you need it.\n\n### 1. Install the plugin\n\nThe plugin wires up the global modal state every `useModal` call reaches into. Add it in your app entry:\n\n```js\nimport { createApp } from 'vue';\nimport VueModalPlugin from '@dsplce-co/vue-modal';\nimport App from './App.vue';\n\nconst app = createApp(App);\n\napp.use(VueModalPlugin);\napp.mount('#app');\n```\n\n### 2. Drop in the collector\n\n`ModalCollector` is the single place all your modals actually render — your one elevator shaft. Put it once at your app root and never think about it again:\n\n```vue\n<template>\n  <div id=\"app\">\n    <router-view />\n\n    <users-view /> <!-- We'll get to this in a moment -->\n\n    <modal-collector />\n  </div>\n</template>\n\n<script setup>\nimport { ModalCollector } from '@dsplce-co/vue-modal';\n</script>\n```\n\n### 3. Build a modal\n\nHere's the part people expect to be hard and isn't: a modal is just a component. Say you've got a user list and you want an \"are you sure?\" before deleting one — that confirmation dialog is a plain Vue component that takes props like any other and emits `close` when it's done:\n\n```vue\n<template>\n  <div class=\"confirmation-modal\">\n    <h2>Confirm Action</h2>\n    <p>Are you sure you want to delete {{ user.name }}?</p>\n\n    <div class=\"confirmation-modal__actions\">\n      <button @click=\"$emit('close')\">Cancel</button>\n      <button @click=\"confirmDelete\">Confirm</button>\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport type { User } from './UsersView.vue';\n\nconst props = defineProps({\n  user: {\n    type: Object as () => User,\n    required: true,\n  },\n  onConfirm: {\n    type: Function,\n    required: true,\n  },\n});\n\nconst emit = defineEmits(['close']);\n\nconst confirmDelete = () => {\n  props.onConfirm(props.user.id);\n  emit('close');\n};\n</script>\n\n<style>\n.confirmation-modal {\n  background: white;\n  padding: 2rem;\n  max-width: 400px;\n  width: 100%;\n}\n\n.confirmation-modal__actions {\n  display: flex;\n  gap: .5rem;\n  margin-top: 1.5rem;\n  justify-content: flex-end;\n}\n\n.confirmation-modal__actions button {\n  padding: 0.5rem 1rem;\n  border: none;\n  cursor: pointer;\n}\n\n.confirmation-modal__actions button:first-child {\n  background: #e5e7eb;\n}\n\n.confirmation-modal__actions button:last-child {\n  background: #ff3b89;\n  color: white;\n}\n</style>\n```\n\n### 4. Open it with `useModal`\n\nNow wire it up. `useModal` takes your component and hands back an `open`/`close` pair — and because it read your props, it *knows* `user` and `onConfirm` are required and won't let you call `open()` without them:\n\n```vue\n<template>\n  <div class=\"users-view\">\n    <!-- ❗ Notice the ConfirmationModal is not mounted directly -->\n    <!-- anywhere — it is the ModalCollector's job to render modals -->\n    <ul>\n      <li v-for=\"user in users\" :key=\"user.id\">\n        {{ user.name }}\n        <button @click=\"onDelete(user)\">Delete</button>\n      </li>\n    </ul>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useModal } from '@dsplce-co/vue-modal';\nimport { ref } from 'vue';\nimport ConfirmationModal from './ConfirmationModal.vue';\n\nexport type User = {\n  id: string;\n  name: string;\n};\n\nconst users = ref<User[]>([\n  { id: '1', name: 'Walter White' },\n  { id: '2', name: 'Hank Schrader' },\n]);\n\nconst deleteUser = (id) => {\n  console.log('Deleting user with id:', id);\n  // Your deletion logic here\n};\n\n// Register the modal\nconst modal = useModal(ConfirmationModal);\n\nconst onDelete = (user: User) => {\n  // Open modal with required props\n  modal.open({\n    user,\n    onConfirm: () => deleteUser(user.id),\n  });\n};\n</script>\n```\n\n⸻\n\n## 📐 API reference\n\n### `VueModalPlugin`\n\nThe Vue plugin that sets up global modal state. Install it once — everything else assumes it's there, and `useModal` throws a clear error if it isn't:\n\n```js\nimport { createApp } from 'vue';\nimport VueModalPlugin from '@dsplce-co/vue-modal';\n\napp.use(VueModalPlugin);\n```\n\n### `ModalCollector`\n\nThe component that renders the active modal, via Vue's `<teleport>`. Mount it once, near your app root.\n\n| Prop | Type | Default | What it does |\n|------|------|---------|--------------|\n| `transitionDuration` | `string` | `\"0.5s\"` | Length of the fade in/out — any CSS time value (`\"200ms\"`, `\"1s\"`, …) |\n\nIt also exposes a default slot — `{ component, payload, close }` — for when you want to render the overlay and wrapper yourself. See [Custom modal overlay and wrapper](#custom-modal-overlay-and-wrapper).\n\n```vue\n<template>\n  <ModalCollector />\n  <!-- or, slower fade: -->\n  <ModalCollector transition-duration=\"1s\" />\n</template>\n```\n\n### `useModal`\n\nCreates a typed controller for one modal component:\n\n```js\nimport { useModal } from '@dsplce-co/vue-modal';\n\nconst modal = useModal(YourModalComponent);\n```\n\nReturns:\n\n- `open(props)` — opens the modal, passing `props` through to your component\n- `close()` — closes whatever's open\n\n**Type safety is the whole point.** The controller infers from your component whether props are required or optional, and the compiler holds you to it:\n\n```ts\n// If the modal has required props\nmodal.open({ requiredProp: 'value' }); // ✅ TypeScript enforces this\n\n// If the modal has only optional props\nmodal.open(); // ✅ props can be omitted\nmodal.open({ optionalProp: 'value' }); // ✅ or provided\n```\n\n### `ModalOverlay`\n\nThe default backdrop — a fixed, centered, blurred overlay that the collector wraps your modal in automatically. You only import it directly when you're building a [custom collector slot](#custom-modal-overlay-and-wrapper) and want the stock backdrop back. Like `ModalCollector`, it's exported from the package and resolvable via the [unplugin resolver](#auto-import-with-unplugin).\n\n### What the collector handles\n\n- **Teleport** — modals render at `<body>` level, above everything (`z-index: 10000`)\n- **Backdrop** — a semi-transparent overlay with a `blur(4px)` behind your content\n- **Dismissal** — `Esc` and click-outside both close the active modal\n- **Transitions** — fade in/out, timed by `transitionDuration`\n- **One at a time** — opening a modal replaces whatever was already open\n- **Centering** — full-viewport overlay, content centered\n\n> **On accessibility:** vue-modal deliberately stays out of your modal's *content*, which means it doesn't impose ARIA roles or a focus trap on you. `role=\"dialog\"`, `aria-modal`, labelling and focus management belong in your own modal component — that's where the content lives, so that's where they make sense. Wire them there.\n\n### Writing a modal component\n\nWhatever you open just needs to play along with two things:\n\n1. **Emit `close`** — `$emit('close')` (or `defineEmits(['close'])`) is how your modal asks to be dismissed. The collector also closes on `Esc` and click-outside, but an in-modal \"Close\" button needs this.\n2. **Declare props normally** — `defineProps` as usual; the collector binds whatever you passed to `open()` straight onto your component.\n\nStyling the *content* is yours; the overlay and positioning are the collector's (see [Styling](#-styling)).\n\n```vue\n<template>\n  <div class=\"my-modal\">\n    <h2>{{ title }}</h2>\n    <button @click=\"$emit('close')\">Close</button>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\ndefineProps({\n  title: {\n    type: String,\n    required: true,\n  },\n});\n\ndefineEmits(['close']);\n</script>\n```\n\n⸻\n\n## 🎨 Styling\n\nThe library brings the bare minimum: the overlay, the blur, the centering, the fade. Everything *inside* the modal — the card, the padding, the buttons — is yours, because it's your component. No design opinions shipped, nothing of yours to override.\n\n⸻\n\n## 🔧 Advanced usage\n\n### Auto-import with unplugin\n\n`vue-modal` ships a resolver for [unplugin-vue-components](https://github.com/unplugin/unplugin-vue-components) and a preset for [unplugin-auto-import](https://github.com/unplugin/unplugin-auto-import), so the components and the composable show up without you importing them by hand.\n\n```bash\nnpm install -D unplugin-vue-components unplugin-auto-import\n```\n\n```ts\n// vite.config.ts\nimport Components from 'unplugin-vue-components/vite'\nimport AutoImport from 'unplugin-auto-import/vite'\nimport { VueModalResolver, VueModalPreset } from '@dsplce-co/vue-modal/resolver'\n\nexport default defineConfig({\n  plugins: [\n    Components({ resolvers: [VueModalResolver()] }),\n    AutoImport({ imports: [VueModalPreset] }),\n  ],\n})\n```\n\nNow `ModalCollector` and `ModalOverlay` are auto-imported as components, and `useModal` is globally available without imports:\n\n```vue\n<script setup lang=\"ts\">\nimport ConfirmationModal from './ConfirmationModal.vue'\n\nconst modal = useModal(ConfirmationModal) // no import needed\n</script>\n\n<template>\n  <ModalCollector /> <!-- no import needed -->\n</template>\n```\n\n### Custom modal overlay and wrapper\n\nDon't like the stock overlay? The `ModalCollector` default slot hands you the active `component`, its `payload`, and a `close` function — render the lot however you like:\n\n```vue\n<ModalCollector v-slot=\"{ component, payload, close }\">\n  <div v-if=\"component !== null\" class=\"custom-overlay\">\n    <div class=\"custom-modal-container\">\n      <div class=\"modal-header\">\n        <button @click=\"close\">×</button>\n      </div>\n\n      <component :is=\"component\" v-bind=\"payload\" @close=\"close\" />\n    </div>\n  </div>\n</ModalCollector>\n```\n\n⸻\n\n## 🛠️ Requirements\n\n- **Vue 3** — declared as a peer dependency (`3.x`)\n\n⸻\n\n## 📁 Repo & Contributions\n\n📦 **Package**: [@dsplce-co/vue-modal](https://www.npmjs.com/package/@dsplce-co/vue-modal)<br/>\n🛠️ **Repo**: [github.com/dsplce-co/vue-modal](https://github.com/dsplce-co/vue-modal)\n\nContributions, issues, suggestions welcome. Hit us up 🖤\n\n⸻\n\n## 📄 License\n\nMIT or Apache-2.0, at your option.\n","readmeFilename":"README.md"}