{"_id":"@anfo/vite-dialogs-plugin","_rev":"9-466bb04c443cf409b309e094e62f5a64","name":"@anfo/vite-dialogs-plugin","dist-tags":{"latest":"1.0.8"},"versions":{"1.0.0":{"name":"@anfo/vite-dialogs-plugin","version":"1.0.0","keywords":["vite","vite-plugin","vue","dialog","drawer","vue3"],"author":{"name":"anfo"},"license":"MIT","_id":"@anfo/vite-dialogs-plugin@1.0.0","maintainers":[{"name":"longjiahui","email":"longjiahui@hotmail.com"}],"dist":{"shasum":"de9671e6b64f68343f158275c20aef5266b42826","tarball":"https://registry.npmjs.org/@anfo/vite-dialogs-plugin/-/vite-dialogs-plugin-1.0.0.tgz","fileCount":7,"integrity":"sha512-OJgKncxawQv5yz+XKEOkjUtn6p/6PxZG+mq/mBTaur2jcGLMsrDpfzbSqdfw/jSCsmBrikgGhUmuGhbjDS+aJw==","signatures":[{"sig":"MEUCIFQAHaqtaCIJdJZfR2CDw0KCqrvAX7PKP77NASQIyVD1AiEAg+H4kYYv2ecSkmYhl02pGkokuq/efDxqYjEWocfv/iE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38011},"main":"./dist/dialogs-plugin.cjs","type":"module","types":"./dist/dialogs-plugin.d.ts","module":"./dist/dialogs-plugin.js","exports":{".":{"types":"./dist/dialogs-plugin.d.ts","import":"./dist/dialogs-plugin.js","require":"./dist/dialogs-plugin.cjs"}},"scripts":{"build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"longjiahui","email":"longjiahui@hotmail.com"},"_npmVersion":"10.9.2","description":"A Vite plugin that auto-generates a type-safe virtual module for mounting Vue dialog/drawer components programmatically.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vite":"^6.0.0","typescript":"^5.0.0","@types/node":"^25.6.0"},"peerDependencies":{"vite":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-dialogs-plugin_1.0.0_1776443254513_0.7258728334545494","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@anfo/vite-dialogs-plugin","version":"1.0.1","keywords":["vite","vite-plugin","vue","dialog","drawer","vue3"],"author":{"name":"anfo"},"license":"MIT","_id":"@anfo/vite-dialogs-plugin@1.0.1","maintainers":[{"name":"longjiahui","email":"longjiahui@hotmail.com"}],"dist":{"shasum":"ed2946a77ee73329408a0d5291537ef0640aa3ce","tarball":"https://registry.npmjs.org/@anfo/vite-dialogs-plugin/-/vite-dialogs-plugin-1.0.1.tgz","fileCount":15,"integrity":"sha512-yfdNLvfQtrD5fJWgSPnKeIq7JIgcXXIxF6XCX/GjPzJcsyaqVZgV0aVIlqzKIwZxlWHvzaXRt+b/eOD1JqBjbQ==","signatures":[{"sig":"MEQCIBTZ1yRnoz8MpVVt1nAAWx1PM+jXlwE3/Wy1R/OGoLkhAiBzJ2VgMbU9qWVgTWK+S2LkyxUyH6G/oz/RfGp/ErHDAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62865},"main":"./dist/dialogs-plugin.cjs","type":"module","types":"./dist/dialogs-plugin.d.ts","module":"./dist/dialogs-plugin.js","exports":{".":{"types":"./dist/dialogs-plugin.d.ts","import":"./dist/dialogs-plugin.js","require":"./dist/dialogs-plugin.cjs"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js","require":"./dist/runtime.cjs"},"./Dialog.vue":"./Dialog.vue"},"gitHead":"05cc75c53f2445d1f631fe0d1d80dd6f668ad537","scripts":{"build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"longjiahui","email":"longjiahui@hotmail.com"},"_npmVersion":"10.9.2","description":"A Vite plugin that auto-generates a type-safe virtual module for mounting Vue dialog/drawer components programmatically.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.0.0","vite":"^6.0.0","typescript":"^5.0.0","@types/node":"^25.6.0"},"peerDependencies":{"vue":">=3.0.0","vite":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-dialogs-plugin_1.0.1_1776444235103_0.4235391867825866","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@anfo/vite-dialogs-plugin","version":"1.0.2","keywords":["vite","vite-plugin","vue","dialog","drawer","vue3"],"author":{"name":"anfo"},"license":"MIT","_id":"@anfo/vite-dialogs-plugin@1.0.2","maintainers":[{"name":"longjiahui","email":"longjiahui@hotmail.com"}],"dist":{"shasum":"10e24e7dc6feedc8f896b74463e66b674c7ac86e","tarball":"https://registry.npmjs.org/@anfo/vite-dialogs-plugin/-/vite-dialogs-plugin-1.0.2.tgz","fileCount":16,"integrity":"sha512-YnCDfCuMhKM/wE3qcXhVnErbYmLdJvHRLJzG5gP6qxXKaB9EFkWqXsVA6z8KY5n84I3McY40Q0tRDlRPocB+ug==","signatures":[{"sig":"MEYCIQCJTuS022HSa+Eo785mslEpi7nD+xybEBHX4FTGvV8unAIhAPbDAGgPPSFhk/iCyf+BWe3qCvjb5TasdPL0tEgfHbzf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70626},"main":"./dist/dialogs-plugin.cjs","type":"module","types":"./dist/dialogs-plugin.d.ts","module":"./dist/dialogs-plugin.js","exports":{".":{"types":"./dist/dialogs-plugin.d.ts","import":"./dist/dialogs-plugin.js","require":"./dist/dialogs-plugin.cjs"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js","require":"./dist/runtime.cjs"},"./Dialog.vue":"./Dialog.vue"},"gitHead":"05cc75c53f2445d1f631fe0d1d80dd6f668ad537","scripts":{"build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"longjiahui","email":"longjiahui@hotmail.com"},"_npmVersion":"10.9.2","description":"A Vite plugin that auto-generates a type-safe virtual module for mounting Vue dialog/drawer components programmatically.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.0.0","vite":"^6.0.0","typescript":"^5.0.0","@types/node":"^25.6.0"},"peerDependencies":{"vue":">=3.0.0","vite":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-dialogs-plugin_1.0.2_1776444487431_0.49337352466259055","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@anfo/vite-dialogs-plugin","version":"1.0.3","keywords":["vite","vite-plugin","vue","dialog","drawer","vue3"],"author":{"name":"anfo"},"license":"MIT","_id":"@anfo/vite-dialogs-plugin@1.0.3","maintainers":[{"name":"longjiahui","email":"longjiahui@hotmail.com"}],"dist":{"shasum":"c892abca1a29a60edaf765cbcda3c3b068d533fe","tarball":"https://registry.npmjs.org/@anfo/vite-dialogs-plugin/-/vite-dialogs-plugin-1.0.3.tgz","fileCount":15,"integrity":"sha512-Yvpssgp85SlYnUKm2IQUcXi9Y5SrmDZwgn/hXpR3KjWC1eimoLEiE2rPW84VRHMuR5KCMF6AXcuNZycSedlUcg==","signatures":[{"sig":"MEUCICyg80vEj5yxoRQb42BUpjyQO+CebTwczl58tMOy6+JnAiEAmuiYGOT3L9zdMpqoyKwI55wag2Q6Eu/FDFMjgCa2S4I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55971},"main":"./dist/dialogs-plugin.cjs","type":"module","types":"./dist/dialogs-plugin.d.ts","module":"./dist/dialogs-plugin.js","exports":{".":{"types":"./dist/dialogs-plugin.d.ts","import":"./dist/dialogs-plugin.js","require":"./dist/dialogs-plugin.cjs"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js","require":"./dist/runtime.cjs"}},"gitHead":"05cc75c53f2445d1f631fe0d1d80dd6f668ad537","scripts":{"build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"longjiahui","email":"longjiahui@hotmail.com"},"_npmVersion":"10.9.2","description":"A Vite plugin that auto-generates a type-safe virtual module for mounting Vue dialog/drawer components programmatically.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.0.0","vite":"^6.0.0","typescript":"^5.0.0","@types/node":"^25.6.0"},"peerDependencies":{"vite":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-dialogs-plugin_1.0.3_1776445720901_0.9210913260741893","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@anfo/vite-dialogs-plugin","version":"1.0.4","keywords":["vite","vite-plugin","vue","dialog","drawer","vue3"],"author":{"name":"anfo"},"license":"MIT","_id":"@anfo/vite-dialogs-plugin@1.0.4","maintainers":[{"name":"longjiahui","email":"longjiahui@hotmail.com"}],"dist":{"shasum":"1b292322946c5ca7b7f381b386ca6dc7838d79dc","tarball":"https://registry.npmjs.org/@anfo/vite-dialogs-plugin/-/vite-dialogs-plugin-1.0.4.tgz","fileCount":15,"integrity":"sha512-Xqp/eGS+M57qgcINSZraSI7j2Og83u486mBNOhSFXDwC3xTzniWNTqis+0Izz4dO8z7HKJjlOYKMsK4/NTty2Q==","signatures":[{"sig":"MEYCIQD5VjqEZfpO/4ZcoPI/r5AlKO7pKJBnCG+A4vY7gL5XcwIhAIt2F5dnHVMvNgkxzWsqPXcRXemCGeOfpBiMZd+Xco90","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56807},"main":"./dist/dialogs-plugin.cjs","type":"module","types":"./dist/dialogs-plugin.d.ts","module":"./dist/dialogs-plugin.js","exports":{".":{"types":"./dist/dialogs-plugin.d.ts","import":"./dist/dialogs-plugin.js","require":"./dist/dialogs-plugin.cjs"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js","require":"./dist/runtime.cjs"}},"gitHead":"05cc75c53f2445d1f631fe0d1d80dd6f668ad537","scripts":{"build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"longjiahui","email":"longjiahui@hotmail.com"},"_npmVersion":"10.9.2","description":"A Vite plugin that auto-generates a type-safe virtual module for mounting Vue dialog/drawer components programmatically.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.0.0","vite":"^6.0.0","typescript":"^5.0.0","@types/node":"^25.6.0"},"peerDependencies":{"vite":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-dialogs-plugin_1.0.4_1776447032159_0.32468693681345484","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@anfo/vite-dialogs-plugin","version":"1.0.5","keywords":["vite","vite-plugin","vue","dialog","drawer","vue3"],"author":{"name":"anfo"},"license":"MIT","_id":"@anfo/vite-dialogs-plugin@1.0.5","maintainers":[{"name":"longjiahui","email":"longjiahui@hotmail.com"}],"dist":{"shasum":"e9e66f2c65b3fb2b4132985b74d721b1d9cc6c3e","tarball":"https://registry.npmjs.org/@anfo/vite-dialogs-plugin/-/vite-dialogs-plugin-1.0.5.tgz","fileCount":17,"integrity":"sha512-TUB9qNXG+o0VB6DN1SDxP1kB932ox7D+98fuo4dHuggbi5sWu6XDYtCFYBSwVPiNUHlyXwZuhJ8ZBYSgXkf3fw==","signatures":[{"sig":"MEYCIQCCKoLLIY3MBDhEK6gZtoEspDoBPvdQC64U+HXWFhrEZQIhANoOi5l35B/vq849UNBs0pJp1PWSwSwt19fTULJSX0ce","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59263},"main":"./dist/dialogs-plugin.cjs","type":"module","types":"./dist/dialogs-plugin.d.ts","module":"./dist/dialogs-plugin.js","exports":{".":{"types":"./dist/dialogs-plugin.d.ts","import":"./dist/dialogs-plugin.js","require":"./dist/dialogs-plugin.cjs"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js","require":"./dist/runtime.cjs"}},"gitHead":"05cc75c53f2445d1f631fe0d1d80dd6f668ad537","scripts":{"build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"longjiahui","email":"longjiahui@hotmail.com"},"_npmVersion":"10.9.2","description":"A Vite plugin that auto-generates a type-safe virtual module for mounting Vue dialog/drawer components programmatically.","directories":{},"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.0.0","vite":"^6.0.0","typescript":"^5.0.0","@types/node":"^25.6.0"},"peerDependencies":{"vite":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-dialogs-plugin_1.0.5_1776448409850_0.3253197939560728","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@anfo/vite-dialogs-plugin","version":"1.0.6","keywords":["vite","vite-plugin","vue","dialog","drawer","vue3"],"author":{"name":"anfo"},"license":"MIT","_id":"@anfo/vite-dialogs-plugin@1.0.6","maintainers":[{"name":"longjiahui","email":"longjiahui@hotmail.com"}],"dist":{"shasum":"0e995132f5199e6452422205aab7a57e2b1db229","tarball":"https://registry.npmjs.org/@anfo/vite-dialogs-plugin/-/vite-dialogs-plugin-1.0.6.tgz","fileCount":15,"integrity":"sha512-ShnFQtee4mD3tkOdqGbE7XKC9rrwYLSzHvPCyXMzB+dQDZvb4/b3A+PiRq7bvlAUKuLRj29RkZ9es6xSWkcpvw==","signatures":[{"sig":"MEYCIQCVFPM48gI0pMWXda3lck05884Xl4HXd6+OeNEDaZRw9wIhAMqvvXZ7Rp/MmW0LWCOiBmUDosyCbXPXTErTke9Ljv4R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59876},"main":"./dist/dialogs-plugin.cjs","type":"module","types":"./dist/dialogs-plugin.d.ts","module":"./dist/dialogs-plugin.js","exports":{".":{"types":"./dist/dialogs-plugin.d.ts","import":"./dist/dialogs-plugin.js","require":"./dist/dialogs-plugin.cjs"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js","require":"./dist/runtime.cjs"}},"gitHead":"a936d9c3eb34f3a7ed643b0c0f99340904a4b59d","scripts":{"build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"longjiahui","email":"longjiahui@hotmail.com"},"_npmVersion":"11.6.2","description":"A Vite plugin that auto-generates a type-safe virtual module for mounting Vue dialog/drawer components programmatically.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.0.0","vite":"^6.0.0","typescript":"^5.0.0","@types/node":"^25.6.0"},"peerDependencies":{"vite":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-dialogs-plugin_1.0.6_1777219932069_0.3049287800182239","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@anfo/vite-dialogs-plugin","version":"1.0.7","keywords":["vite","vite-plugin","vue","dialog","drawer","vue3"],"author":{"name":"anfo"},"license":"MIT","_id":"@anfo/vite-dialogs-plugin@1.0.7","maintainers":[{"name":"longjiahui","email":"longjiahui@hotmail.com"}],"dist":{"shasum":"f51576ed268fa170748d6fef20b72b4251fa1de6","tarball":"https://registry.npmjs.org/@anfo/vite-dialogs-plugin/-/vite-dialogs-plugin-1.0.7.tgz","fileCount":15,"integrity":"sha512-vEYK5p2MV0ALGYDDwIgGRd87kKJKqFdkW+jG/q7XYT8j+HhPt99KGOw7adNxq4oWFFKfvbgOLNpEGQui41EJDA==","signatures":[{"sig":"MEYCIQCTZSPwmd4+kjlc1fKPiC0FDaFd9arwm6FkcJIVurqDIQIhAJ7YLSp//AXQCYd/yfR4BYXSdECbw/JpuvNyM/YaRZst","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59953},"main":"./dist/dialogs-plugin.cjs","type":"module","types":"./dist/dialogs-plugin.d.ts","module":"./dist/dialogs-plugin.js","exports":{".":{"types":"./dist/dialogs-plugin.d.ts","import":"./dist/dialogs-plugin.js","require":"./dist/dialogs-plugin.cjs"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js","require":"./dist/runtime.cjs"}},"gitHead":"a936d9c3eb34f3a7ed643b0c0f99340904a4b59d","scripts":{"build":"tsup","prepublishOnly":"npm run build"},"_npmUser":{"name":"longjiahui","email":"longjiahui@hotmail.com"},"_npmVersion":"11.6.2","description":"A Vite plugin that auto-generates a type-safe virtual module for mounting Vue dialog/drawer components programmatically.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.0.0","vite":"^6.0.0","typescript":"^5.0.0","@types/node":"^25.6.0"},"peerDependencies":{"vite":">=4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vite-dialogs-plugin_1.0.7_1777220290539_0.10352596886763799","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@anfo/vite-dialogs-plugin","version":"1.0.8","description":"A Vite plugin that auto-generates a type-safe virtual module for mounting Vue dialog/drawer components programmatically.","keywords":["vite","vite-plugin","vue","dialog","drawer","vue3"],"author":{"name":"anfo"},"license":"MIT","type":"module","main":"./dist/dialogs-plugin.cjs","module":"./dist/dialogs-plugin.js","types":"./dist/dialogs-plugin.d.ts","exports":{".":{"types":"./dist/dialogs-plugin.d.ts","import":"./dist/dialogs-plugin.js","require":"./dist/dialogs-plugin.cjs"},"./runtime":{"types":"./dist/runtime.d.ts","import":"./dist/runtime.js","require":"./dist/runtime.cjs"}},"scripts":{"build":"tsup","prepublishOnly":"npm run build"},"peerDependencies":{"vite":">=4.0.0"},"devDependencies":{"@types/node":"^25.6.0","tsup":"^8.0.0","typescript":"^5.0.0","vite":"^6.0.0","vue":"^3.5.0"},"gitHead":"e89ea792a50bab3c21f574a8902c551fb7ff1132","_id":"@anfo/vite-dialogs-plugin@1.0.8","_nodeVersion":"25.2.1","_npmVersion":"11.14.0","dist":{"integrity":"sha512-JJ6bfLoxMDiNeZPoylhpHgatQ0Vj2HETCtMp/bMGea/uJEC9yrOywlVhMDHCyV0yzdH+7pd71YmSEJ9CTwyJyg==","shasum":"1dc5c76c4686a64252d5f9d2023c5cf3990f49c0","tarball":"https://registry.npmjs.org/@anfo/vite-dialogs-plugin/-/vite-dialogs-plugin-1.0.8.tgz","fileCount":15,"unpackedSize":65554,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCFO2j9At9PJ+8JYK7GZsGRDhyAB1yoKUNMsKUfWBxjcQIhALJisjDnUpmZMjMsfkgfke+5oaZbEFroLM8Y8SMIkMCA"}]},"_npmUser":{"name":"longjiahui","email":"longjiahui@hotmail.com"},"directories":{},"maintainers":[{"name":"longjiahui","email":"longjiahui@hotmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vite-dialogs-plugin_1.0.8_1787103397725_0.7415686750877442"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-17T16:27:34.381Z","modified":"2026-08-19T01:36:38.036Z","1.0.0":"2026-04-17T16:27:34.646Z","1.0.1":"2026-04-17T16:43:55.241Z","1.0.2":"2026-04-17T16:48:07.590Z","1.0.3":"2026-04-17T17:08:41.070Z","1.0.4":"2026-04-17T17:30:32.292Z","1.0.5":"2026-04-17T17:53:30.026Z","1.0.6":"2026-04-26T16:12:12.258Z","1.0.7":"2026-04-26T16:18:10.666Z","1.0.8":"2026-08-19T01:36:37.896Z"},"author":{"name":"anfo"},"license":"MIT","keywords":["vite","vite-plugin","vue","dialog","drawer","vue3"],"description":"A Vite plugin that auto-generates a type-safe virtual module for mounting Vue dialog/drawer components programmatically.","maintainers":[{"name":"longjiahui","email":"longjiahui@hotmail.com"}],"readme":"# @anfo/vite-dialogs-plugin\r\n\r\nA Vite plugin that auto-scans a directory for Vue dialog/drawer components and exposes them through a fully type-safe virtual module (`virtual:dialogs`). Dialogs are mounted programmatically into isolated Vue app instances — no `<Teleport>` boilerplate, no global store, automatic cleanup on close.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install -D @anfo/vite-dialogs-plugin\r\n```\r\n\r\n> `vite` is a peer dependency and must already be present in your project.\r\n\r\n## Quick Start\r\n\r\n### 1. Register the plugin — `vite.config.ts`\r\n\r\n```ts\r\nimport { defineConfig } from \"vite\";\r\nimport vue from \"@vitejs/plugin-vue\";\r\nimport { dialogsPlugin } from \"@anfo/vite-dialogs-plugin\";\r\nimport { resolve } from \"node:path\";\r\n\r\nexport default defineConfig({\r\n  plugins: [\r\n    vue(),\r\n    dialogsPlugin({\r\n      dir: resolve(__dirname, \"src/dialogs\"), // folder that contains your dialog components\r\n    }),\r\n  ],\r\n});\r\n```\r\n\r\n### 2. Include the generated declaration — `tsconfig.json`\r\n\r\nThe plugin writes `src/dialogs.d.ts` automatically on every build/dev-server start.\r\n\r\n```json\r\n{\r\n  \"include\": [\"src/**/*.ts\", \"src/**/*.d.ts\", \"src/**/*.vue\"]\r\n}\r\n```\r\n\r\n### 3. Create a dialog component\r\n\r\nEvery `.vue` file whose name ends with `Dialog.vue` or `Drawer.vue` inside your `dir` becomes a key on the `dialogs` object. Import your runtime helpers directly from the package — no manual `Dialog.vue` setup required.\r\n\r\n```vue\r\n<!-- src/dialogs/ConfirmDialog.vue -->\r\n<script setup lang=\"ts\">\r\nimport {\r\n  useDialogContext,\r\n  createDialogExpose,\r\n  type DialogExposed,\r\n} from \"@anfo/vite-dialogs-plugin/runtime\";\r\n\r\ndefineProps<{ message: string }>();\r\n\r\nconst { resolve, reject } = useDialogContext<boolean>();\r\n\r\ndefineExpose<DialogExposed<boolean>>(createDialogExpose<boolean>());\r\n</script>\r\n\r\n<template>\r\n  <div class=\"overlay\">\r\n    <div class=\"box\">\r\n      <p>{{ message }}</p>\r\n      <button @click=\"resolve(true)\">Confirm</button>\r\n      <button @click=\"resolve(false)\">Cancel</button>\r\n    </div>\r\n  </div>\r\n</template>\r\n```\r\n\r\n### 4. Open dialogs from anywhere\r\n\r\n```ts\r\nimport { dialogs } from \"virtual:dialogs\";\r\n\r\n// Await the result\r\nconst result = await dialogs.ConfirmDialog({ message: \"Delete this item?\" });\r\nif (result.type === \"resolve\" && result.value) {\r\n  // confirmed\r\n}\r\n\r\n// Or chain callbacks\r\ndialogs\r\n  .ConfirmDialog({ message: \"Are you sure?\" })\r\n  .resolve((value) => console.log(\"resolved:\", value))\r\n  .reject((reason) => console.log(\"rejected:\", reason));\r\n```\r\n\r\n### 5. Share plugins with dialogs (Pinia, Router, UI libs)\r\n\r\nEach dialog is mounted into its own isolated `createApp()` instance, so plugins registered on the main app are not available inside dialogs by default. Register them once with `configureDialogs()` — it runs `app.use(...)` on every dialog app:\r\n\r\n```ts\r\n// src/main.ts\r\nimport { createApp } from \"vue\";\r\nimport { createPinia } from \"pinia\";\r\nimport ElementPlus from \"element-plus\";\r\nimport { configureDialogs } from \"@anfo/vite-dialogs-plugin/runtime\";\r\n\r\nconst pinia = createPinia();\r\n\r\nconfigureDialogs({\r\n  use: [\r\n    pinia, // shared store state between the main app and dialogs\r\n    ElementPlus,\r\n    (app) => {\r\n      app.config.globalProperties.$t = translate;\r\n    },\r\n  ],\r\n});\r\n\r\ncreateApp(App).use(pinia).mount(\"#app\");\r\n```\r\n\r\nBoth plugin objects and plain `(app) => void` functions are accepted. Call it once, before any dialog is opened.\r\n\r\n## Plugin Options\r\n\r\n| Option | Type | Default | Description |\r\n|---|---|---|---|\r\n| `dir` | `string` | — | **Required.** Absolute path to the dialogs directory. |\r\n| `pattern` | `RegExp` | `/(Dialog\\|Drawer)\\.vue$/` | RegExp to identify which files are dialogs. |\r\n| `dts` | `string` | `\"src/dialogs.d.ts\"` | Root-relative path for the generated declaration file. |\r\n\r\n## Package Exports\r\n\r\n| Specifier | Contents |\r\n|---|---|\r\n| `@anfo/vite-dialogs-plugin` | Vite plugin factory — `dialogsPlugin(options)` |\r\n| `@anfo/vite-dialogs-plugin/runtime` | Types, `useDialogContext`, `createDialogExpose`, `configureDialogs`, `DialogExposed` |\r\n\r\n## Project Structure\r\n\r\n```\r\nsrc/\r\n├── dialogs.d.ts          ← Auto-generated — do not edit\r\n└── dialogs/\r\n    ├── ConfirmDialog.vue\r\n    ├── AlertDialog.vue\r\n    └── UserDrawer.vue\r\n```\r\n\r\n## How It Works\r\n\r\n1. On build start (and on file add/remove in dev), the plugin scans `dir` for matching `.vue` files.\r\n2. It generates a virtual module (`virtual:dialogs`) that imports each component and wraps it in `mountDialog()`.\r\n3. `mountDialog()` creates an isolated `createApp()` instance per call, applies any plugins registered via `configureDialogs()`, provides a `DialogController` via injection, mounts it into a temporary `<div>`, and returns a Promise-based handle.\r\n4. When the component calls `resolve(value)` or `reject(reason)`, the app is unmounted and the host element removed automatically.\r\n5. A `.d.ts` file is written so every `dialogs.*` entry is typed end-to-end — props, return value, and callbacks.\r\n\r\n> See [SKILL.md](SKILL.md) for step-by-step examples covering all dialog patterns.\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md"}