{"_id":"@alikhalilll/a-tel-input","_rev":"14-83510d2acdcbeb48ffe2e0aa6cfb75d6","name":"@alikhalilll/a-tel-input","dist-tags":{"latest":"1.4.4"},"versions":{"1.0.1":{"name":"@alikhalilll/a-tel-input","version":"1.0.1","keywords":["vue","vue3","nuxt","tel-input","phone-input","headless","shadcn","libphonenumber"],"author":{"name":"alikhalilll"},"license":"MIT","_id":"@alikhalilll/a-tel-input@1.0.1","maintainers":[{"name":"alikhalilll","email":"alikhalilll.dev@gmail.com"}],"homepage":"https://alikhalilll.github.io/ali-nuxt-toolkit/ui","bugs":{"url":"https://github.com/alikhalilll/ali-nuxt-toolkit/issues"},"dist":{"shasum":"b8838883bc36ffd5d713c38732f82e45c6453a0c","tarball":"https://registry.npmjs.org/@alikhalilll/a-tel-input/-/a-tel-input-1.0.1.tgz","fileCount":44,"integrity":"sha512-R2X5t962ezzmolp2fKSaqJBouGCDRCLuQtv6SMUFS3Bqv3FBv36PsWM8N5ba0uyagqoJkiLtvzVABZxq/aNqQQ==","signatures":[{"sig":"MEYCIQCS5u7vJybl6Eieur6wA2OvWTdRAO4GNmXKn73PWc4XTwIhALlVUgFAb/Ho0SUaWLDD6nH2i909ig0lh6T+85/oDRFF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1171299},"type":"module","_from":"file:alikhalilll-a-tel-input-1.0.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./nuxt":{"import":{"types":"./dist/nuxt/index.d.ts","default":"./dist/nuxt/index.js"},"require":{"types":"./dist/nuxt/index.d.cts","default":"./dist/nuxt/index.cjs"}},"./resolver":{"import":{"types":"./dist/resolver/index.d.ts","default":"./dist/resolver/index.js"},"require":{"types":"./dist/resolver/index.d.cts","default":"./dist/resolver/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json"},"scripts":{"build":"tsx ../../../scripts/build/run-component-build.ts","clean":"rimraf dist web-types.json","validate":"pnpm build && pnpm validate-dist && pnpm validate-consumer","typecheck":"vue-tsc --noEmit -p tsconfig.json","validate-dist":"tsx ../../../scripts/validate/dist-validate.ts --pkg a-tel-input","validate-consumer":"tsx ../../../scripts/validate/consumer-validate.ts --pkg a-tel-input"},"_npmUser":{"name":"alikhalilll","email":"alikhalilll.dev@gmail.com"},"_resolved":"/private/var/folders/4j/cgljlpzd0n550x2mkwwsrj6c0000gn/T/42499a0c247157741e9c90347c5d11a2/alikhalilll-a-tel-input-1.0.1.tgz","web-types":"./web-types.json","_integrity":"sha512-R2X5t962ezzmolp2fKSaqJBouGCDRCLuQtv6SMUFS3Bqv3FBv36PsWM8N5ba0uyagqoJkiLtvzVABZxq/aNqQQ==","repository":{"url":"git+https://github.com/alikhalilll/ali-nuxt-toolkit.git","type":"git","directory":"packages/ui-components/ATelInput"},"_npmVersion":"11.12.1","description":"Headless, shadcn-vue style Vue 3 international telephone input with country detection, validation, and a responsive country picker. Part of the @alikhalilll/a-* toolkit.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"libphonenumber-js":"^1.12.0","class-variance-authority":"^0.7.1","@alikhalilll/a-responsive-popover":"1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","rimraf":"^6.0.1","tsdown":"0.22.0","vue-tsc":"^3.2.4","@nuxt/kit":"^4.4.2","typescript":"^5.9.2","@tsdown/css":"0.22.0","@types/node":"^22.13.0","tailwindcss":"^4.0.0","@nuxt/schema":"^4.4.2","@vueuse/core":"^14.0.0","unplugin-vue":"7.2.0","@tailwindcss/cli":"^4.0.0","@alikhalilll/a-ui-base":"1.0.0","unplugin-vue-components":"^32.1.0"},"peerDependencies":{"vue":"^3.5.0","@nuxt/kit":"^3.0.0 || ^4.0.0","@vueuse/core":"^14.0.0","unplugin-vue-components":"^28.0.0 || ^29.0.0 || ^30.0.0 || ^31.0.0 || ^32.0.0"},"peerDependenciesMeta":{"@nuxt/kit":{"optional":true},"unplugin-vue-components":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/a-tel-input_1.0.1_1780147917978_0.5785966939427727","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@alikhalilll/a-tel-input","version":"1.0.2","keywords":["vue","vue3","nuxt","tel-input","phone-input","headless","shadcn","libphonenumber"],"author":{"name":"alikhalilll"},"license":"MIT","_id":"@alikhalilll/a-tel-input@1.0.2","maintainers":[{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"}],"homepage":"https://alikhalilll.github.io/ali-nuxt-toolkit/ui","bugs":{"url":"https://github.com/alikhalilll/ali-nuxt-toolkit/issues"},"dist":{"shasum":"96fab720f78b076c481e324efc9ad01ed4068574","tarball":"https://registry.npmjs.org/@alikhalilll/a-tel-input/-/a-tel-input-1.0.2.tgz","fileCount":44,"integrity":"sha512-UoU3q0zS7LT21s5LhDxwWIC2rvgrcS7HZGrVwH+L+D2W47vJD0TccjrMuYvhFzK9KFZuYwdvcY8NtHwiYBbQLw==","signatures":[{"sig":"MEUCID4rIkLHOGAe0xV50x71Ax6cyFxCm0zJ6g/ThxLNFBi8AiEA3n6TLxPVYNDdm6QQYL+eVPRj7m51K3rwYoAZ3jUpAwc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3221171},"type":"module","_from":"file:alikhalilll-a-tel-input-1.0.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./nuxt":{"import":{"types":"./dist/nuxt/index.d.ts","default":"./dist/nuxt/index.js"},"require":{"types":"./dist/nuxt/index.d.cts","default":"./dist/nuxt/index.cjs"}},"./resolver":{"import":{"types":"./dist/resolver/index.d.ts","default":"./dist/resolver/index.js"},"require":{"types":"./dist/resolver/index.d.cts","default":"./dist/resolver/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json"},"scripts":{"build":"tsx ../../../scripts/build/run-component-build.ts","clean":"rimraf dist web-types.json","validate":"pnpm build && pnpm validate-dist && pnpm validate-consumer","typecheck":"vue-tsc --noEmit -p tsconfig.json","validate-dist":"tsx ../../../scripts/validate/dist-validate.ts --pkg a-tel-input","validate-consumer":"tsx ../../../scripts/validate/consumer-validate.ts --pkg a-tel-input"},"_npmUser":{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"},"_resolved":"/private/var/folders/4j/cgljlpzd0n550x2mkwwsrj6c0000gn/T/5eb056bbf874dd22c955f8dec6f88bab/alikhalilll-a-tel-input-1.0.2.tgz","web-types":"./web-types.json","_integrity":"sha512-UoU3q0zS7LT21s5LhDxwWIC2rvgrcS7HZGrVwH+L+D2W47vJD0TccjrMuYvhFzK9KFZuYwdvcY8NtHwiYBbQLw==","repository":{"url":"git+https://github.com/alikhalilll/ali-nuxt-toolkit.git","type":"git","directory":"packages/ui-components/ATelInput"},"_npmVersion":"11.12.1","description":"Headless, shadcn-vue style Vue 3 international telephone input with country detection, validation, and a responsive country picker. Part of the @alikhalilll/a-* toolkit.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"libphonenumber-js":"^1.12.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","rimraf":"^6.0.1","tsdown":"0.22.0","vue-tsc":"^3.2.4","@nuxt/kit":"^4.4.2","typescript":"^5.9.2","@tsdown/css":"0.22.0","@types/node":"^22.13.0","tailwindcss":"^4.0.0","@nuxt/schema":"^4.4.2","@vueuse/core":"^14.0.0","unplugin-vue":"7.2.0","@tailwindcss/cli":"^4.0.0","@alikhalilll/a-ui-base":"1.0.0","unplugin-vue-components":"^32.1.0","@alikhalilll/a-responsive-popover":"1.0.1"},"peerDependencies":{"vue":"^3.5.0","@nuxt/kit":"^3.0.0 || ^4.0.0","@vueuse/core":"^14.0.0","unplugin-vue-components":"^28.0.0 || ^29.0.0 || ^30.0.0 || ^31.0.0 || ^32.0.0"},"cssBundleRequires":["a-popover__content","a-drawer__content","a-tel-input"],"peerDependenciesMeta":{"@nuxt/kit":{"optional":true},"unplugin-vue-components":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/a-tel-input_1.0.2_1780174450805_0.2644302535107752","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@alikhalilll/a-tel-input","version":"1.1.0","keywords":["vue","vue3","nuxt","tel-input","phone-input","headless","shadcn","libphonenumber"],"author":{"name":"alikhalilll"},"license":"MIT","_id":"@alikhalilll/a-tel-input@1.1.0","maintainers":[{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"}],"homepage":"https://alikhalilll.github.io/ali-nuxt-toolkit/ui/tel-input/#install","bugs":{"url":"https://github.com/alikhalilll/ali-nuxt-toolkit/issues"},"dist":{"shasum":"19729cb04e2891d282ff42a1978c91a43e09379c","tarball":"https://registry.npmjs.org/@alikhalilll/a-tel-input/-/a-tel-input-1.1.0.tgz","fileCount":66,"integrity":"sha512-lAhC+yMTJ2eKj1MdzIzk9s9C2lRGpfSK7J87mAyVuMpSZUa1RxJmJTDNLd+rQk5YMcw46hDhtBpJyq0o6nXE+w==","signatures":[{"sig":"MEYCIQD3kqLK6PWT2N+H/ZSGfYv9ofSWCd/jx6mU7fXmvYHhSQIhAObLc6CCj90cilauGDlI4Rc1PMRYPeJuhu7fZSzLMylS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3385879},"type":"module","_from":"file:alikhalilll-a-tel-input-1.1.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./zod":{"import":{"types":"./dist/zod/index.d.ts","default":"./dist/zod/index.js"},"require":{"types":"./dist/zod/index.d.cts","default":"./dist/zod/index.cjs"}},"./nuxt":{"import":{"types":"./dist/nuxt/index.d.ts","default":"./dist/nuxt/index.js"},"require":{"types":"./dist/nuxt/index.d.cts","default":"./dist/nuxt/index.cjs"}},"./resolver":{"import":{"types":"./dist/resolver/index.d.ts","default":"./dist/resolver/index.js"},"require":{"types":"./dist/resolver/index.d.cts","default":"./dist/resolver/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json","./vee-validate":{"import":{"types":"./dist/vee-validate/index.d.ts","default":"./dist/vee-validate/index.js"},"require":{"types":"./dist/vee-validate/index.d.cts","default":"./dist/vee-validate/index.cjs"}}},"scripts":{"build":"tsx ../../../scripts/build/run-component-build.ts","clean":"rimraf dist web-types.json","validate":"pnpm build && pnpm validate-dist && pnpm validate-consumer","typecheck":"vue-tsc --noEmit -p tsconfig.json","validate-dist":"tsx ../../../scripts/validate/dist-validate.ts --pkg a-tel-input","validate-consumer":"tsx ../../../scripts/validate/consumer-validate.ts --pkg a-tel-input"},"_npmUser":{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"},"_resolved":"/private/var/folders/4j/cgljlpzd0n550x2mkwwsrj6c0000gn/T/1bb658f614c72fe46ef8f84c1885b8d0/alikhalilll-a-tel-input-1.1.0.tgz","web-types":"./web-types.json","_integrity":"sha512-lAhC+yMTJ2eKj1MdzIzk9s9C2lRGpfSK7J87mAyVuMpSZUa1RxJmJTDNLd+rQk5YMcw46hDhtBpJyq0o6nXE+w==","repository":{"url":"git+https://github.com/alikhalilll/ali-nuxt-toolkit.git","type":"git","directory":"packages/ui-components/ATelInput"},"_npmVersion":"11.12.1","description":"Headless, shadcn-vue style Vue 3 international telephone input with country detection, validation, and a responsive country picker. Part of the @alikhalilll/a-* toolkit.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"libphonenumber-js":"^1.12.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","zod":"^3.23.8","rimraf":"^6.0.1","tsdown":"0.22.0","vue-tsc":"^3.2.4","@nuxt/kit":"^4.4.2","typescript":"^5.9.2","@tsdown/css":"0.22.0","@types/node":"^22.13.0","tailwindcss":"^4.0.0","@nuxt/schema":"^4.4.2","@vueuse/core":"^14.0.0","unplugin-vue":"7.2.0","vee-validate":"^4.13.0","@tailwindcss/cli":"^4.0.0","@alikhalilll/a-ui-base":"1.0.0","unplugin-vue-components":"^32.1.0","@alikhalilll/a-responsive-popover":"1.0.1"},"peerDependencies":{"vue":"^3.5.0","zod":"^3.23.0 || ^4.0.0","@nuxt/kit":"^3.0.0 || ^4.0.0","@vueuse/core":"^14.0.0","vee-validate":"^4.13.0","unplugin-vue-components":"^28.0.0 || ^29.0.0 || ^30.0.0 || ^31.0.0 || ^32.0.0"},"cssBundleRequires":["a-popover__content","a-drawer__content","a-tel-input"],"peerDependenciesMeta":{"zod":{"optional":true},"@nuxt/kit":{"optional":true},"vee-validate":{"optional":true},"unplugin-vue-components":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/a-tel-input_1.1.0_1780248615299_0.3050922968996159","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@alikhalilll/a-tel-input","version":"1.1.1","keywords":["vue","vue3","nuxt","tel-input","phone-input","headless","shadcn","libphonenumber"],"author":{"name":"alikhalilll"},"license":"MIT","_id":"@alikhalilll/a-tel-input@1.1.1","maintainers":[{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"}],"homepage":"https://alikhalilll.github.io/ali-nuxt-toolkit/ui/tel-input/#install","bugs":{"url":"https://github.com/alikhalilll/ali-nuxt-toolkit/issues"},"dist":{"shasum":"c3fc74a287244af932885dedcfa6fa53277cde94","tarball":"https://registry.npmjs.org/@alikhalilll/a-tel-input/-/a-tel-input-1.1.1.tgz","fileCount":68,"integrity":"sha512-blKA1L85i434bRgaWqrPRwceMyQ68ycH1xNiK0q+myqrcXHLfXBf1qQ2koXKlYXq7pA+2QEpWsf4FUjF+7ryvA==","signatures":[{"sig":"MEUCIDVahk5ViHQ4wqEeYSImG7S7G+YsmiNUy7/2QKm2WvW/AiEAwLD+N9+cL4xcvDAz9M8n2EzUVdWNyMWjxjKg/eJ+wus=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4571913},"type":"module","_from":"file:alikhalilll-a-tel-input-1.1.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./zod":{"import":{"types":"./dist/zod/index.d.ts","default":"./dist/zod/index.js"},"require":{"types":"./dist/zod/index.d.cts","default":"./dist/zod/index.cjs"}},"./nuxt":{"import":{"types":"./dist/nuxt/index.d.ts","default":"./dist/nuxt/index.js"},"require":{"types":"./dist/nuxt/index.d.cts","default":"./dist/nuxt/index.cjs"}},"./resolver":{"import":{"types":"./dist/resolver/index.d.ts","default":"./dist/resolver/index.js"},"require":{"types":"./dist/resolver/index.d.cts","default":"./dist/resolver/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json","./vee-validate":{"import":{"types":"./dist/vee-validate/index.d.ts","default":"./dist/vee-validate/index.js"},"require":{"types":"./dist/vee-validate/index.d.cts","default":"./dist/vee-validate/index.cjs"}}},"scripts":{"build":"tsx ../../../scripts/build/run-component-build.ts","clean":"rimraf dist web-types.json","validate":"pnpm build && pnpm validate-dist && pnpm validate-consumer","typecheck":"vue-tsc --noEmit -p tsconfig.json","validate-dist":"tsx ../../../scripts/validate/dist-validate.ts --pkg a-tel-input","validate-consumer":"tsx ../../../scripts/validate/consumer-validate.ts --pkg a-tel-input"},"_npmUser":{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"},"_resolved":"/private/var/folders/4j/cgljlpzd0n550x2mkwwsrj6c0000gn/T/1f1f31be152a24f225c2de638914ccea/alikhalilll-a-tel-input-1.1.1.tgz","web-types":"./web-types.json","_integrity":"sha512-blKA1L85i434bRgaWqrPRwceMyQ68ycH1xNiK0q+myqrcXHLfXBf1qQ2koXKlYXq7pA+2QEpWsf4FUjF+7ryvA==","repository":{"url":"git+https://github.com/alikhalilll/ali-nuxt-toolkit.git","type":"git","directory":"packages/ui-components/ATelInput"},"_npmVersion":"11.12.1","description":"Headless, shadcn-vue style Vue 3 international telephone input with country detection, validation, and a responsive country picker. Part of the @alikhalilll/a-* toolkit.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"libphonenumber-js":"^1.12.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","zod":"^3.23.8","rimraf":"^6.0.1","tsdown":"0.22.0","vue-tsc":"^3.2.4","@nuxt/kit":"^4.4.2","typescript":"^5.9.2","@tsdown/css":"0.22.0","@types/node":"^22.13.0","tailwindcss":"^4.0.0","@nuxt/schema":"^4.4.2","@vueuse/core":"^14.0.0","unplugin-vue":"7.2.0","vee-validate":"^4.13.0","@tailwindcss/cli":"^4.0.0","@alikhalilll/a-ui-base":"1.0.0","unplugin-vue-components":"^32.1.0","@alikhalilll/a-responsive-popover":"1.0.1"},"peerDependencies":{"vue":"^3.5.0","zod":"^3.23.0 || ^4.0.0","@nuxt/kit":"^3.0.0 || ^4.0.0","@vueuse/core":"^14.0.0","vee-validate":"^4.13.0","unplugin-vue-components":"^28.0.0 || ^29.0.0 || ^30.0.0 || ^31.0.0 || ^32.0.0"},"cssBundleRequires":["a-popover__content","a-drawer__content","a-tel-input"],"peerDependenciesMeta":{"zod":{"optional":true},"@nuxt/kit":{"optional":true},"vee-validate":{"optional":true},"unplugin-vue-components":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/a-tel-input_1.1.1_1780360038879_0.4604231878849325","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@alikhalilll/a-tel-input","version":"1.1.2","keywords":["vue","vue3","nuxt","tel-input","phone-input","headless","shadcn","libphonenumber"],"author":{"name":"alikhalilll"},"license":"MIT","_id":"@alikhalilll/a-tel-input@1.1.2","maintainers":[{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"}],"homepage":"https://alikhalilll.github.io/ali-nuxt-toolkit/ui/tel-input/#install","bugs":{"url":"https://github.com/alikhalilll/ali-nuxt-toolkit/issues"},"dist":{"shasum":"aa20f7d9317bccff4cb2daa83261c9bbe5743c74","tarball":"https://registry.npmjs.org/@alikhalilll/a-tel-input/-/a-tel-input-1.1.2.tgz","fileCount":68,"integrity":"sha512-L/lO+LweNjPLqjZWG5552Lth4Pch0U4FarMVlN8ZkzZHO12EvFwR26WGUn3su74xlS639H7FfwlIZAit/dH6wQ==","signatures":[{"sig":"MEUCIFpf7DdcuREX2I+Qi6iXrIjys4niogtLWNBu59W5ptCyAiEAp0HxhlxWJLtG0LEKpL46GJo8x1XldZZRcAMCi0mA4q4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4571980},"type":"module","_from":"file:alikhalilll-a-tel-input-1.1.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./zod":{"import":{"types":"./dist/zod/index.d.ts","default":"./dist/zod/index.js"},"require":{"types":"./dist/zod/index.d.cts","default":"./dist/zod/index.cjs"}},"./nuxt":{"import":{"types":"./dist/nuxt/index.d.ts","default":"./dist/nuxt/index.js"},"require":{"types":"./dist/nuxt/index.d.cts","default":"./dist/nuxt/index.cjs"}},"./resolver":{"import":{"types":"./dist/resolver/index.d.ts","default":"./dist/resolver/index.js"},"require":{"types":"./dist/resolver/index.d.cts","default":"./dist/resolver/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json","./vee-validate":{"import":{"types":"./dist/vee-validate/index.d.ts","default":"./dist/vee-validate/index.js"},"require":{"types":"./dist/vee-validate/index.d.cts","default":"./dist/vee-validate/index.cjs"}}},"scripts":{"build":"tsx ../../../scripts/build/run-component-build.ts","clean":"rimraf dist web-types.json","validate":"pnpm build && pnpm validate-dist && pnpm validate-consumer","typecheck":"vue-tsc --noEmit -p tsconfig.json","validate-dist":"tsx ../../../scripts/validate/dist-validate.ts --pkg a-tel-input","validate-consumer":"tsx ../../../scripts/validate/consumer-validate.ts --pkg a-tel-input"},"_npmUser":{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"},"_resolved":"/private/var/folders/4j/cgljlpzd0n550x2mkwwsrj6c0000gn/T/13de7ecdda937868f1a7d1ecae0a9b21/alikhalilll-a-tel-input-1.1.2.tgz","web-types":"./web-types.json","_integrity":"sha512-L/lO+LweNjPLqjZWG5552Lth4Pch0U4FarMVlN8ZkzZHO12EvFwR26WGUn3su74xlS639H7FfwlIZAit/dH6wQ==","repository":{"url":"git+https://github.com/alikhalilll/ali-nuxt-toolkit.git","type":"git","directory":"packages/ui-components/ATelInput"},"_npmVersion":"11.12.1","description":"Headless, shadcn-vue style Vue 3 international telephone input with country detection, validation, and a responsive country picker. Part of the @alikhalilll/a-* toolkit.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"libphonenumber-js":"^1.12.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","zod":"^3.23.8","rimraf":"^6.0.1","tsdown":"0.22.0","vue-tsc":"^3.2.4","@nuxt/kit":"^4.4.2","typescript":"^5.9.2","@tsdown/css":"0.22.0","@types/node":"^22.13.0","tailwindcss":"^4.0.0","@nuxt/schema":"^4.4.2","@vueuse/core":"^14.0.0","unplugin-vue":"7.2.0","vee-validate":"^4.13.0","@tailwindcss/cli":"^4.0.0","@alikhalilll/a-ui-base":"1.0.0","unplugin-vue-components":"^32.1.0","@alikhalilll/a-responsive-popover":"1.0.1"},"peerDependencies":{"vue":"^3.5.0","zod":"^3.23.0 || ^4.0.0","@nuxt/kit":"^3.0.0 || ^4.0.0","@vueuse/core":"^14.0.0","vee-validate":"^4.13.0","unplugin-vue-components":"^28.0.0 || ^29.0.0 || ^30.0.0 || ^31.0.0 || ^32.0.0"},"cssBundleRequires":["a-popover__content","a-drawer__content","a-tel-input"],"peerDependenciesMeta":{"zod":{"optional":true},"@nuxt/kit":{"optional":true},"vee-validate":{"optional":true},"unplugin-vue-components":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/a-tel-input_1.1.2_1780392123150_0.1846743317117827","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@alikhalilll/a-tel-input","version":"1.2.0","keywords":["vue","vue3","nuxt","tel-input","phone-input","headless","shadcn","libphonenumber"],"author":{"name":"alikhalilll"},"license":"MIT","_id":"@alikhalilll/a-tel-input@1.2.0","maintainers":[{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"}],"homepage":"https://alikhalilll.github.io/ali-nuxt-toolkit/ui/tel-input/#install","bugs":{"url":"https://github.com/alikhalilll/ali-nuxt-toolkit/issues"},"dist":{"shasum":"ff14437db7d0a51fd773d6281f7b2b8191816024","tarball":"https://registry.npmjs.org/@alikhalilll/a-tel-input/-/a-tel-input-1.2.0.tgz","fileCount":68,"integrity":"sha512-RwNayywSrz4tWcKO9ynZWixTXW1/d+thLFNLJWqveOgc27uYsKcMTZcCmpLFKLe1+RvkHc3YhT86TJtTEwCwXA==","signatures":[{"sig":"MEUCIQCWFI1cilkMrpSbdnsii87vuizMBedmPWglFI/44EefBAIgN5rv54eR0IJNMboA/c5TEHitckgqOggRYDwXQXFJw2Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4604473},"type":"module","_from":"file:alikhalilll-a-tel-input-1.2.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./zod":{"import":{"types":"./dist/zod/index.d.ts","default":"./dist/zod/index.js"},"require":{"types":"./dist/zod/index.d.cts","default":"./dist/zod/index.cjs"}},"./nuxt":{"import":{"types":"./dist/nuxt/index.d.ts","default":"./dist/nuxt/index.js"},"require":{"types":"./dist/nuxt/index.d.cts","default":"./dist/nuxt/index.cjs"}},"./resolver":{"import":{"types":"./dist/resolver/index.d.ts","default":"./dist/resolver/index.js"},"require":{"types":"./dist/resolver/index.d.cts","default":"./dist/resolver/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json","./vee-validate":{"import":{"types":"./dist/vee-validate/index.d.ts","default":"./dist/vee-validate/index.js"},"require":{"types":"./dist/vee-validate/index.d.cts","default":"./dist/vee-validate/index.cjs"}}},"scripts":{"build":"tsx ../../../scripts/build/run-component-build.ts","clean":"rimraf dist web-types.json","validate":"pnpm build && pnpm validate-dist && pnpm validate-consumer","typecheck":"vue-tsc --noEmit -p tsconfig.json","validate-dist":"tsx ../../../scripts/validate/dist-validate.ts --pkg a-tel-input","validate-consumer":"tsx ../../../scripts/validate/consumer-validate.ts --pkg a-tel-input"},"_npmUser":{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"},"_resolved":"/private/var/folders/4j/cgljlpzd0n550x2mkwwsrj6c0000gn/T/73b8fc2dcfde88bd986a3a70ff0c2a5b/alikhalilll-a-tel-input-1.2.0.tgz","web-types":"./web-types.json","_integrity":"sha512-RwNayywSrz4tWcKO9ynZWixTXW1/d+thLFNLJWqveOgc27uYsKcMTZcCmpLFKLe1+RvkHc3YhT86TJtTEwCwXA==","repository":{"url":"git+https://github.com/alikhalilll/ali-nuxt-toolkit.git","type":"git","directory":"packages/ui-components/ATelInput"},"_npmVersion":"11.12.1","description":"Headless, shadcn-vue style Vue 3 international telephone input with country detection, validation, and a responsive country picker. Part of the @alikhalilll/a-* toolkit.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"libphonenumber-js":"^1.12.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","zod":"^3.23.8","rimraf":"^6.0.1","tsdown":"0.22.0","vue-tsc":"^3.2.4","@nuxt/kit":"^4.4.2","typescript":"^5.9.2","@tsdown/css":"0.22.0","@types/node":"^22.13.0","tailwindcss":"^4.0.0","@nuxt/schema":"^4.4.2","@vueuse/core":"^14.0.0","unplugin-vue":"7.2.0","vee-validate":"^4.13.0","@tailwindcss/cli":"^4.0.0","@alikhalilll/a-ui-base":"1.0.0","unplugin-vue-components":"^32.1.0","@alikhalilll/a-responsive-popover":"1.0.1"},"peerDependencies":{"vue":"^3.5.0","zod":"^3.23.0 || ^4.0.0","@nuxt/kit":"^3.0.0 || ^4.0.0","@vueuse/core":"^14.0.0","vee-validate":"^4.13.0","unplugin-vue-components":"^28.0.0 || ^29.0.0 || ^30.0.0 || ^31.0.0 || ^32.0.0"},"cssBundleRequires":["a-popover__content","a-drawer__content","a-tel-input"],"peerDependenciesMeta":{"zod":{"optional":true},"@nuxt/kit":{"optional":true},"vee-validate":{"optional":true},"unplugin-vue-components":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/a-tel-input_1.2.0_1780415375173_0.900144345584323","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@alikhalilll/a-tel-input","version":"1.2.1","keywords":["vue","vue3","nuxt","tel-input","phone-input","headless","shadcn","libphonenumber"],"author":{"name":"alikhalilll"},"license":"MIT","_id":"@alikhalilll/a-tel-input@1.2.1","maintainers":[{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"}],"homepage":"https://alikhalilll.github.io/ali-nuxt-toolkit/ui/tel-input/#install","bugs":{"url":"https://github.com/alikhalilll/ali-nuxt-toolkit/issues"},"dist":{"shasum":"13b8684a3a504b5ac10d17c641a2dfbac0227472","tarball":"https://registry.npmjs.org/@alikhalilll/a-tel-input/-/a-tel-input-1.2.1.tgz","fileCount":68,"integrity":"sha512-3uYH3aHbCY/BhPiw2Bo3nMRjeFfumYMg3UiaV7ViIVSwHTgdPGcpTES7o0ib33OrBJvR+z5qoucli/PsUe0MgQ==","signatures":[{"sig":"MEYCIQD7ld/se0E3Mv6slwXu37SYC/H/z1r6PI4K07N295y32gIhAIPT2y9U+Z5vfo4h6gqNUoYSyeuQcgqDf8hfj4SUTSxl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4603708},"type":"module","_from":"file:alikhalilll-a-tel-input-1.2.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./zod":{"import":{"types":"./dist/zod/index.d.ts","default":"./dist/zod/index.js"},"require":{"types":"./dist/zod/index.d.cts","default":"./dist/zod/index.cjs"}},"./nuxt":{"import":{"types":"./dist/nuxt/index.d.ts","default":"./dist/nuxt/index.js"},"require":{"types":"./dist/nuxt/index.d.cts","default":"./dist/nuxt/index.cjs"}},"./resolver":{"import":{"types":"./dist/resolver/index.d.ts","default":"./dist/resolver/index.js"},"require":{"types":"./dist/resolver/index.d.cts","default":"./dist/resolver/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json","./vee-validate":{"import":{"types":"./dist/vee-validate/index.d.ts","default":"./dist/vee-validate/index.js"},"require":{"types":"./dist/vee-validate/index.d.cts","default":"./dist/vee-validate/index.cjs"}}},"scripts":{"build":"tsx ../../../scripts/build/run-component-build.ts","clean":"rimraf dist web-types.json","validate":"pnpm build && pnpm validate-dist && pnpm validate-consumer","typecheck":"vue-tsc --noEmit -p tsconfig.json","validate-dist":"tsx ../../../scripts/validate/dist-validate.ts --pkg a-tel-input","validate-consumer":"tsx ../../../scripts/validate/consumer-validate.ts --pkg a-tel-input"},"_npmUser":{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"},"_resolved":"/private/var/folders/4j/cgljlpzd0n550x2mkwwsrj6c0000gn/T/2f09a3102fc13a387ad72bb98afd369e/alikhalilll-a-tel-input-1.2.1.tgz","web-types":"./web-types.json","_integrity":"sha512-3uYH3aHbCY/BhPiw2Bo3nMRjeFfumYMg3UiaV7ViIVSwHTgdPGcpTES7o0ib33OrBJvR+z5qoucli/PsUe0MgQ==","repository":{"url":"git+https://github.com/alikhalilll/ali-nuxt-toolkit.git","type":"git","directory":"packages/ui-components/ATelInput"},"_npmVersion":"11.12.1","description":"Headless, shadcn-vue style Vue 3 international telephone input with country detection, validation, and a responsive country picker. Part of the @alikhalilll/a-* toolkit.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"libphonenumber-js":"^1.12.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","zod":"^3.23.8","rimraf":"^6.0.1","tsdown":"0.22.0","vue-tsc":"^3.2.4","@nuxt/kit":"^4.4.2","typescript":"^5.9.2","@tsdown/css":"0.22.0","@types/node":"^22.13.0","tailwindcss":"^4.0.0","@nuxt/schema":"^4.4.2","@vueuse/core":"^14.0.0","unplugin-vue":"7.2.0","vee-validate":"^4.13.0","@tailwindcss/cli":"^4.0.0","@alikhalilll/a-ui-base":"1.0.0","unplugin-vue-components":"^32.1.0","@alikhalilll/a-responsive-popover":"1.0.1"},"peerDependencies":{"vue":"^3.5.0","zod":"^3.23.0 || ^4.0.0","@nuxt/kit":"^3.0.0 || ^4.0.0","@vueuse/core":"^14.0.0","vee-validate":"^4.13.0","unplugin-vue-components":"^28.0.0 || ^29.0.0 || ^30.0.0 || ^31.0.0 || ^32.0.0"},"cssBundleRequires":["a-popover__content","a-drawer__content","a-tel-input"],"peerDependenciesMeta":{"zod":{"optional":true},"@nuxt/kit":{"optional":true},"vee-validate":{"optional":true},"unplugin-vue-components":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/a-tel-input_1.2.1_1780487823218_0.39463263885836386","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@alikhalilll/a-tel-input","version":"1.3.0","keywords":["vue","vue3","nuxt","tel-input","phone-input","headless","shadcn","libphonenumber"],"author":{"name":"alikhalilll"},"license":"MIT","_id":"@alikhalilll/a-tel-input@1.3.0","maintainers":[{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"}],"homepage":"https://alikhalilll.github.io/ali-nuxt-toolkit/ui/tel-input/#install","bugs":{"url":"https://github.com/alikhalilll/ali-nuxt-toolkit/issues"},"dist":{"shasum":"04fbb7b3a7336a769590762f33550caaea17d03a","tarball":"https://registry.npmjs.org/@alikhalilll/a-tel-input/-/a-tel-input-1.3.0.tgz","fileCount":69,"integrity":"sha512-GsTgMl3shQlaA/JxW88pIdRXK19X41xyxLttq6L8LvRVxCp6UL/eT4V2RGMVUiYqhuGC8upSML3ZFuASeDN1oA==","signatures":[{"sig":"MEQCIH7StpNb9j6vZiijfG6LG7IUKPZGf5WiQFdm1BVSiGNWAiBnhj4MUzrUzgxk5UiyuVGi4cOxMB+Az5Yl/0JJLhoA/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4640093},"type":"module","_from":"file:alikhalilll-a-tel-input-1.3.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./zod":{"import":{"types":"./dist/zod/index.d.ts","default":"./dist/zod/index.js"},"require":{"types":"./dist/zod/index.d.cts","default":"./dist/zod/index.cjs"}},"./nuxt":{"import":{"types":"./dist/nuxt/index.d.ts","default":"./dist/nuxt/index.js"},"require":{"types":"./dist/nuxt/index.d.cts","default":"./dist/nuxt/index.cjs"}},"./resolver":{"import":{"types":"./dist/resolver/index.d.ts","default":"./dist/resolver/index.js"},"require":{"types":"./dist/resolver/index.d.cts","default":"./dist/resolver/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json","./vee-validate":{"import":{"types":"./dist/vee-validate/index.d.ts","default":"./dist/vee-validate/index.js"},"require":{"types":"./dist/vee-validate/index.d.cts","default":"./dist/vee-validate/index.cjs"}}},"scripts":{"build":"tsx ../../../scripts/build/run-component-build.ts","clean":"rimraf dist web-types.json","validate":"pnpm build && pnpm validate-dist && pnpm validate-consumer","typecheck":"vue-tsc --noEmit -p tsconfig.json","validate-dist":"tsx ../../../scripts/validate/dist-validate.ts --pkg a-tel-input","validate-consumer":"tsx ../../../scripts/validate/consumer-validate.ts --pkg a-tel-input"},"_npmUser":{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"},"_resolved":"/private/var/folders/4j/cgljlpzd0n550x2mkwwsrj6c0000gn/T/f2d6892f758afd09b0a5f59f115901fa/alikhalilll-a-tel-input-1.3.0.tgz","web-types":"./web-types.json","_integrity":"sha512-GsTgMl3shQlaA/JxW88pIdRXK19X41xyxLttq6L8LvRVxCp6UL/eT4V2RGMVUiYqhuGC8upSML3ZFuASeDN1oA==","repository":{"url":"git+https://github.com/alikhalilll/ali-nuxt-toolkit.git","type":"git","directory":"packages/ui-components/ATelInput"},"_npmVersion":"11.12.1","description":"Headless, shadcn-vue style Vue 3 international telephone input with country detection, validation, and a responsive country picker. Part of the @alikhalilll/a-* toolkit.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"libphonenumber-js":"^1.12.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","zod":"^3.23.8","rimraf":"^6.0.1","tsdown":"0.22.0","vue-tsc":"^3.2.4","@nuxt/kit":"^4.4.2","typescript":"^5.9.2","@tsdown/css":"0.22.0","@types/node":"^22.13.0","tailwindcss":"^4.0.0","@nuxt/schema":"^4.4.2","@vueuse/core":"^14.0.0","unplugin-vue":"7.2.0","vee-validate":"^4.13.0","@tailwindcss/cli":"^4.0.0","@alikhalilll/a-ui-base":"1.0.0","unplugin-vue-components":"^32.1.0","@alikhalilll/a-responsive-popover":"1.0.1"},"peerDependencies":{"vue":"^3.5.0","zod":"^3.23.0 || ^4.0.0","@nuxt/kit":"^3.0.0 || ^4.0.0","@vueuse/core":"^14.0.0","vee-validate":"^4.13.0","unplugin-vue-components":"^28.0.0 || ^29.0.0 || ^30.0.0 || ^31.0.0 || ^32.0.0"},"cssBundleRequires":["a-popover__content","a-drawer__content","a-tel-input"],"peerDependenciesMeta":{"zod":{"optional":true},"@nuxt/kit":{"optional":true},"vee-validate":{"optional":true},"unplugin-vue-components":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/a-tel-input_1.3.0_1782735628888_0.6057338949319717","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@alikhalilll/a-tel-input","version":"1.4.0","keywords":["vue","vue3","nuxt","tel-input","phone-input","headless","shadcn","libphonenumber"],"author":{"name":"alikhalilll"},"license":"MIT","_id":"@alikhalilll/a-tel-input@1.4.0","maintainers":[{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"}],"homepage":"https://alikhalilll.github.io/ali-nuxt-toolkit/ui/tel-input/#install","bugs":{"url":"https://github.com/alikhalilll/ali-nuxt-toolkit/issues"},"dist":{"shasum":"4f33f37cdc3a66d2d8bf8ec2569bc130ea097ba8","tarball":"https://registry.npmjs.org/@alikhalilll/a-tel-input/-/a-tel-input-1.4.0.tgz","fileCount":69,"integrity":"sha512-C8W3GSWeZqafI5kE0Pm5/8UGDhRCdnvXGu1bKSmME81Re4cn82rei882X88lvLmw/YsraiwuoL2RiFFiLntiDw==","signatures":[{"sig":"MEUCICC6myHR8IqAYI6KyTFhFGVmr+vR6jSSMRN3aUiyhLYBAiEAzf+k192Vk49moa+vbsBp3R50cMALQHnbULZtNqEsfD8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4646081},"type":"module","_from":"file:alikhalilll-a-tel-input-1.4.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./zod":{"import":{"types":"./dist/zod/index.d.ts","default":"./dist/zod/index.js"},"require":{"types":"./dist/zod/index.d.cts","default":"./dist/zod/index.cjs"}},"./nuxt":{"import":{"types":"./dist/nuxt/index.d.ts","default":"./dist/nuxt/index.js"},"require":{"types":"./dist/nuxt/index.d.cts","default":"./dist/nuxt/index.cjs"}},"./resolver":{"import":{"types":"./dist/resolver/index.d.ts","default":"./dist/resolver/index.js"},"require":{"types":"./dist/resolver/index.d.cts","default":"./dist/resolver/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json","./vee-validate":{"import":{"types":"./dist/vee-validate/index.d.ts","default":"./dist/vee-validate/index.js"},"require":{"types":"./dist/vee-validate/index.d.cts","default":"./dist/vee-validate/index.cjs"}}},"scripts":{"build":"tsx ../../../scripts/build/run-component-build.ts","clean":"rimraf dist web-types.json","validate":"pnpm build && pnpm validate-dist && pnpm validate-consumer","typecheck":"vue-tsc --noEmit -p tsconfig.json","validate-dist":"tsx ../../../scripts/validate/dist-validate.ts --pkg a-tel-input","validate-consumer":"tsx ../../../scripts/validate/consumer-validate.ts --pkg a-tel-input"},"_npmUser":{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"},"_resolved":"/private/var/folders/4j/cgljlpzd0n550x2mkwwsrj6c0000gn/T/7442125e9212b34e953723cf2e188fde/alikhalilll-a-tel-input-1.4.0.tgz","web-types":"./web-types.json","_integrity":"sha512-C8W3GSWeZqafI5kE0Pm5/8UGDhRCdnvXGu1bKSmME81Re4cn82rei882X88lvLmw/YsraiwuoL2RiFFiLntiDw==","repository":{"url":"git+https://github.com/alikhalilll/ali-nuxt-toolkit.git","type":"git","directory":"packages/ui-components/ATelInput"},"_npmVersion":"11.12.1","description":"Headless, shadcn-vue style Vue 3 international telephone input with country detection, validation, and a responsive country picker. Part of the @alikhalilll/a-* toolkit.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"libphonenumber-js":"^1.12.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","zod":"^3.23.8","rimraf":"^6.0.1","tsdown":"0.22.0","vue-tsc":"^3.2.4","@nuxt/kit":"^4.4.2","typescript":"^5.9.2","@tsdown/css":"0.22.0","@types/node":"^22.13.0","tailwindcss":"^4.0.0","@nuxt/schema":"^4.4.2","@vueuse/core":"^14.0.0","unplugin-vue":"7.2.0","vee-validate":"^4.13.0","@tailwindcss/cli":"^4.0.0","@alikhalilll/a-ui-base":"1.0.0","unplugin-vue-components":"^32.1.0","@alikhalilll/a-responsive-popover":"1.0.1"},"peerDependencies":{"vue":"^3.5.0","zod":"^3.23.0 || ^4.0.0","@nuxt/kit":"^3.0.0 || ^4.0.0","@vueuse/core":"^14.0.0","vee-validate":"^4.13.0","unplugin-vue-components":"^28.0.0 || ^29.0.0 || ^30.0.0 || ^31.0.0 || ^32.0.0"},"cssBundleRequires":["a-popover__content","a-drawer__content","a-tel-input"],"peerDependenciesMeta":{"zod":{"optional":true},"@nuxt/kit":{"optional":true},"vee-validate":{"optional":true},"unplugin-vue-components":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/a-tel-input_1.4.0_1782739174382_0.6365449790566178","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@alikhalilll/a-tel-input","version":"1.4.1","keywords":["vue","vue3","nuxt","tel-input","phone-input","headless","shadcn","libphonenumber"],"author":{"name":"alikhalilll"},"license":"MIT","_id":"@alikhalilll/a-tel-input@1.4.1","maintainers":[{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"}],"homepage":"https://alikhalilll.github.io/ali-nuxt-toolkit/ui/tel-input/#install","bugs":{"url":"https://github.com/alikhalilll/ali-nuxt-toolkit/issues"},"dist":{"shasum":"f8101ca74f7b51e6580de1ad234aebf84f7d0918","tarball":"https://registry.npmjs.org/@alikhalilll/a-tel-input/-/a-tel-input-1.4.1.tgz","fileCount":69,"integrity":"sha512-I8qrX6y6xgDQ6hWtMsLT8IFk60PM+eREtC0xTCQBxEdqKPS6ZerYCKx6k+F1evdxu90PGoAmnzJffh/BVu9qyw==","signatures":[{"sig":"MEYCIQDwmXxP7a2cvbTaVL8d6y2vaQ6z+mTLhpS5pEcuYqtmOwIhAJC1heYnvkviZXAPDc7apOQlz7CjjnL1QKchgoe1Gz36","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4646967},"type":"module","_from":"file:alikhalilll-a-tel-input-1.4.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./zod":{"import":{"types":"./dist/zod/index.d.ts","default":"./dist/zod/index.js"},"require":{"types":"./dist/zod/index.d.cts","default":"./dist/zod/index.cjs"}},"./nuxt":{"import":{"types":"./dist/nuxt/index.d.ts","default":"./dist/nuxt/index.js"},"require":{"types":"./dist/nuxt/index.d.cts","default":"./dist/nuxt/index.cjs"}},"./resolver":{"import":{"types":"./dist/resolver/index.d.ts","default":"./dist/resolver/index.js"},"require":{"types":"./dist/resolver/index.d.cts","default":"./dist/resolver/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json","./vee-validate":{"import":{"types":"./dist/vee-validate/index.d.ts","default":"./dist/vee-validate/index.js"},"require":{"types":"./dist/vee-validate/index.d.cts","default":"./dist/vee-validate/index.cjs"}}},"scripts":{"build":"tsx ../../../scripts/build/run-component-build.ts","clean":"rimraf dist web-types.json","validate":"pnpm build && pnpm validate-dist && pnpm validate-consumer","typecheck":"vue-tsc --noEmit -p tsconfig.json","validate-dist":"tsx ../../../scripts/validate/dist-validate.ts --pkg a-tel-input","validate-consumer":"tsx ../../../scripts/validate/consumer-validate.ts --pkg a-tel-input"},"_npmUser":{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"},"_resolved":"/private/var/folders/4j/cgljlpzd0n550x2mkwwsrj6c0000gn/T/decc91978bd9b2b66910643704b209a6/alikhalilll-a-tel-input-1.4.1.tgz","web-types":"./web-types.json","_integrity":"sha512-I8qrX6y6xgDQ6hWtMsLT8IFk60PM+eREtC0xTCQBxEdqKPS6ZerYCKx6k+F1evdxu90PGoAmnzJffh/BVu9qyw==","repository":{"url":"git+https://github.com/alikhalilll/ali-nuxt-toolkit.git","type":"git","directory":"packages/ui-components/ATelInput"},"_npmVersion":"11.12.1","description":"Headless, shadcn-vue style Vue 3 international telephone input with country detection, validation, and a responsive country picker. Part of the @alikhalilll/a-* toolkit.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"libphonenumber-js":"^1.12.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","zod":"^3.23.8","rimraf":"^6.0.1","tsdown":"0.22.0","vue-tsc":"^3.2.4","@nuxt/kit":"^4.4.2","typescript":"^5.9.2","@tsdown/css":"0.22.0","@types/node":"^22.13.0","tailwindcss":"^4.0.0","@nuxt/schema":"^4.4.2","@vueuse/core":"^14.0.0","unplugin-vue":"7.2.0","vee-validate":"^4.13.0","@tailwindcss/cli":"^4.0.0","@alikhalilll/a-ui-base":"1.0.0","unplugin-vue-components":"^32.1.0","@alikhalilll/a-responsive-popover":"1.0.1"},"peerDependencies":{"vue":"^3.5.0","zod":"^3.23.0 || ^4.0.0","@nuxt/kit":"^3.0.0 || ^4.0.0","@vueuse/core":"^14.0.0","vee-validate":"^4.13.0","unplugin-vue-components":"^28.0.0 || ^29.0.0 || ^30.0.0 || ^31.0.0 || ^32.0.0"},"cssBundleRequires":["a-popover__content","a-drawer__content","a-tel-input"],"peerDependenciesMeta":{"zod":{"optional":true},"@nuxt/kit":{"optional":true},"vee-validate":{"optional":true},"unplugin-vue-components":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/a-tel-input_1.4.1_1782739713060_0.813412159782372","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@alikhalilll/a-tel-input","version":"1.4.2","keywords":["vue","vue3","nuxt","tel-input","phone-input","headless","shadcn","libphonenumber"],"author":{"name":"alikhalilll"},"license":"MIT","_id":"@alikhalilll/a-tel-input@1.4.2","maintainers":[{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"}],"homepage":"https://alikhalilll.github.io/ali-nuxt-toolkit/ui/tel-input/#install","bugs":{"url":"https://github.com/alikhalilll/ali-nuxt-toolkit/issues"},"dist":{"shasum":"b6f7491e34eb7d6aac1b956dcecfb80c8dce91dd","tarball":"https://registry.npmjs.org/@alikhalilll/a-tel-input/-/a-tel-input-1.4.2.tgz","fileCount":69,"integrity":"sha512-6pMWYZ+5ZdQwHpx5prO7CpLIBz1VbuwoyRWrUFUS950NzeOkgwkE8lAc+nWJsV3pygmJIU/p6/o/qflHQd6Q3A==","signatures":[{"sig":"MEUCIQDmvUpTZQAdNRPulwie5dw08IMw9Vmteur8N4cy0DmqQAIgGDIYDswGl7ecWH8e0OuvKLf+PxfZCxhWNvVsyLk9bVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3708428},"type":"module","_from":"file:alikhalilll-a-tel-input-1.4.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./zod":{"import":{"types":"./dist/zod/index.d.ts","default":"./dist/zod/index.js"},"require":{"types":"./dist/zod/index.d.cts","default":"./dist/zod/index.cjs"}},"./nuxt":{"import":{"types":"./dist/nuxt/index.d.ts","default":"./dist/nuxt/index.js"},"require":{"types":"./dist/nuxt/index.d.cts","default":"./dist/nuxt/index.cjs"}},"./resolver":{"import":{"types":"./dist/resolver/index.d.ts","default":"./dist/resolver/index.js"},"require":{"types":"./dist/resolver/index.d.cts","default":"./dist/resolver/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json","./vee-validate":{"import":{"types":"./dist/vee-validate/index.d.ts","default":"./dist/vee-validate/index.js"},"require":{"types":"./dist/vee-validate/index.d.cts","default":"./dist/vee-validate/index.cjs"}}},"scripts":{"build":"tsx ../../../scripts/build/run-component-build.ts","clean":"rimraf dist web-types.json","validate":"pnpm build && pnpm validate-dist && pnpm validate-consumer","typecheck":"vue-tsc --noEmit -p tsconfig.json","validate-dist":"tsx ../../../scripts/validate/dist-validate.ts --pkg a-tel-input","validate-consumer":"tsx ../../../scripts/validate/consumer-validate.ts --pkg a-tel-input"},"_npmUser":{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"},"_resolved":"/private/var/folders/4j/cgljlpzd0n550x2mkwwsrj6c0000gn/T/5cfb0b1e071a6b14a135de9e6006aad8/alikhalilll-a-tel-input-1.4.2.tgz","web-types":"./web-types.json","_integrity":"sha512-6pMWYZ+5ZdQwHpx5prO7CpLIBz1VbuwoyRWrUFUS950NzeOkgwkE8lAc+nWJsV3pygmJIU/p6/o/qflHQd6Q3A==","repository":{"url":"git+https://github.com/alikhalilll/ali-nuxt-toolkit.git","type":"git","directory":"packages/ui-components/ATelInput"},"_npmVersion":"11.12.1","description":"Headless, shadcn-vue style Vue 3 international telephone input with country detection, validation, and a responsive country picker. Part of the @alikhalilll/a-* toolkit.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"reka-ui":"^2.9.0","vaul-vue":"^0.4.0","libphonenumber-js":"^1.12.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","zod":"^3.23.8","rimraf":"^6.0.1","tsdown":"0.22.0","vue-tsc":"^3.2.4","@nuxt/kit":"^4.4.2","typescript":"^5.9.2","@tsdown/css":"0.22.0","@types/node":"^22.13.0","tailwindcss":"^4.0.0","@nuxt/schema":"^4.4.2","@vueuse/core":"^14.0.0","unplugin-vue":"7.2.0","vee-validate":"^4.13.0","@tailwindcss/cli":"^4.0.0","@alikhalilll/a-ui-base":"1.0.0","unplugin-vue-components":"^32.1.0","@alikhalilll/a-responsive-popover":"1.0.1"},"peerDependencies":{"vue":"^3.5.0","zod":"^3.23.0 || ^4.0.0","@nuxt/kit":"^3.0.0 || ^4.0.0","@vueuse/core":"^14.0.0","vee-validate":"^4.13.0","unplugin-vue-components":"^28.0.0 || ^29.0.0 || ^30.0.0 || ^31.0.0 || ^32.0.0"},"cssBundleRequires":["a-popover__content","a-drawer__content","a-tel-input"],"peerDependenciesMeta":{"zod":{"optional":true},"@nuxt/kit":{"optional":true},"vee-validate":{"optional":true},"unplugin-vue-components":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/a-tel-input_1.4.2_1782999720761_0.8185686283668614","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"name":"@alikhalilll/a-tel-input","version":"1.4.3","keywords":["vue","vue3","nuxt","tel-input","phone-input","headless","shadcn","libphonenumber"],"author":{"name":"alikhalilll"},"license":"MIT","_id":"@alikhalilll/a-tel-input@1.4.3","maintainers":[{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"}],"homepage":"https://alikhalilll.github.io/ali-nuxt-toolkit/ui/tel-input/#install","bugs":{"url":"https://github.com/alikhalilll/ali-nuxt-toolkit/issues"},"dist":{"shasum":"1ea7c44d94f082467ee52f0d9b617215d5fb45eb","tarball":"https://registry.npmjs.org/@alikhalilll/a-tel-input/-/a-tel-input-1.4.3.tgz","fileCount":69,"integrity":"sha512-SHS4O1GxxO8GL/PvoyiRIUF4AGhLNJMKfhRyTrtOIpXxQ/TBqhzkdqWTVtVDdnvsDtZtFaml9UVXPYmSZpWh+w==","signatures":[{"sig":"MEUCIEmQFwa+8vvpuRUQX0rYVw1FRn8dsMe/a/5/VkvoWOBTAiEAi7+mttXBgyh8V7/QU5YYs8tRzm7fV1E1D4ZZiP8auDQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3716750},"type":"module","_from":"file:alikhalilll-a-tel-input-1.4.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./zod":{"import":{"types":"./dist/zod/index.d.ts","default":"./dist/zod/index.js"},"require":{"types":"./dist/zod/index.d.cts","default":"./dist/zod/index.cjs"}},"./nuxt":{"import":{"types":"./dist/nuxt/index.d.ts","default":"./dist/nuxt/index.js"},"require":{"types":"./dist/nuxt/index.d.cts","default":"./dist/nuxt/index.cjs"}},"./resolver":{"import":{"types":"./dist/resolver/index.d.ts","default":"./dist/resolver/index.js"},"require":{"types":"./dist/resolver/index.d.cts","default":"./dist/resolver/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json","./vee-validate":{"import":{"types":"./dist/vee-validate/index.d.ts","default":"./dist/vee-validate/index.js"},"require":{"types":"./dist/vee-validate/index.d.cts","default":"./dist/vee-validate/index.cjs"}}},"scripts":{"build":"tsx ../../../scripts/build/run-component-build.ts","clean":"rimraf dist web-types.json","validate":"pnpm build && pnpm validate-dist && pnpm validate-consumer","typecheck":"vue-tsc --noEmit -p tsconfig.json","validate-dist":"tsx ../../../scripts/validate/dist-validate.ts --pkg a-tel-input","validate-consumer":"tsx ../../../scripts/validate/consumer-validate.ts --pkg a-tel-input"},"_npmUser":{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"},"_resolved":"/private/var/folders/4j/cgljlpzd0n550x2mkwwsrj6c0000gn/T/b78ed3c47e2406eafd9eba284b98ad66/alikhalilll-a-tel-input-1.4.3.tgz","web-types":"./web-types.json","_integrity":"sha512-SHS4O1GxxO8GL/PvoyiRIUF4AGhLNJMKfhRyTrtOIpXxQ/TBqhzkdqWTVtVDdnvsDtZtFaml9UVXPYmSZpWh+w==","repository":{"url":"git+https://github.com/alikhalilll/ali-nuxt-toolkit.git","type":"git","directory":"packages/ui-components/ATelInput"},"_npmVersion":"11.12.1","description":"Headless, shadcn-vue style Vue 3 international telephone input with country detection, validation, and a responsive country picker. Part of the @alikhalilll/a-* toolkit.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"26.0.0","dependencies":{"reka-ui":"^2.9.0","vaul-vue":"^0.4.0","libphonenumber-js":"^1.12.0","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","zod":"^3.23.8","rimraf":"^6.0.1","tsdown":"0.22.0","vue-tsc":"^3.2.4","@nuxt/kit":"^4.4.2","typescript":"^5.9.2","@tsdown/css":"0.22.0","@types/node":"^22.13.0","tailwindcss":"^4.0.0","@nuxt/schema":"^4.4.2","@vueuse/core":"^14.0.0","unplugin-vue":"7.2.0","vee-validate":"^4.13.0","@tailwindcss/cli":"^4.0.0","@alikhalilll/a-ui-base":"1.0.0","unplugin-vue-components":"^32.1.0","@alikhalilll/a-responsive-popover":"1.0.1"},"peerDependencies":{"vue":"^3.5.0","zod":"^3.23.0 || ^4.0.0","@nuxt/kit":"^3.0.0 || ^4.0.0","@vueuse/core":"^14.0.0","vee-validate":"^4.13.0","unplugin-vue-components":"^28.0.0 || ^29.0.0 || ^30.0.0 || ^31.0.0 || ^32.0.0"},"cssBundleRequires":["a-popover__content","a-drawer__content","a-tel-input"],"peerDependenciesMeta":{"zod":{"optional":true},"@nuxt/kit":{"optional":true},"vee-validate":{"optional":true},"unplugin-vue-components":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/a-tel-input_1.4.3_1783601786281_0.48211687650068735","host":"s3://npm-registry-packages-npm-production"}},"1.4.4":{"name":"@alikhalilll/a-tel-input","version":"1.4.4","description":"Headless, shadcn-vue style Vue 3 international telephone input with country detection, validation, and a responsive country picker. Part of the @alikhalilll/a-* toolkit.","license":"MIT","author":{"name":"alikhalilll"},"repository":{"type":"git","url":"git+https://github.com/alikhalilll/ali-nuxt-toolkit.git","directory":"packages/ui-components/ATelInput"},"homepage":"https://alikhalilll.github.io/ali-nuxt-toolkit/ui/tel-input/#install","bugs":{"url":"https://github.com/alikhalilll/ali-nuxt-toolkit/issues"},"type":"module","sideEffects":["**/*.css"],"publishConfig":{"access":"public"},"keywords":["vue","vue3","nuxt","tel-input","phone-input","headless","shadcn","libphonenumber"],"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./nuxt":{"import":{"types":"./dist/nuxt/index.d.ts","default":"./dist/nuxt/index.js"},"require":{"types":"./dist/nuxt/index.d.cts","default":"./dist/nuxt/index.cjs"}},"./resolver":{"import":{"types":"./dist/resolver/index.d.ts","default":"./dist/resolver/index.js"},"require":{"types":"./dist/resolver/index.d.cts","default":"./dist/resolver/index.cjs"}},"./vee-validate":{"import":{"types":"./dist/vee-validate/index.d.ts","default":"./dist/vee-validate/index.js"},"require":{"types":"./dist/vee-validate/index.d.cts","default":"./dist/vee-validate/index.cjs"}},"./zod":{"import":{"types":"./dist/zod/index.d.ts","default":"./dist/zod/index.js"},"require":{"types":"./dist/zod/index.d.cts","default":"./dist/zod/index.cjs"}},"./styles.css":"./dist/styles.css","./package.json":"./package.json"},"cssBundleRequires":["a-popover__content","a-drawer__content","a-tel-input"],"types":"./dist/index.d.ts","web-types":"./web-types.json","engines":{"node":">=18"},"peerDependencies":{"@nuxt/kit":"^3.0.0 || ^4.0.0","@vueuse/core":"^14.0.0","unplugin-vue-components":"^28.0.0 || ^29.0.0 || ^30.0.0 || ^31.0.0 || ^32.0.0","vee-validate":"^4.13.0","vue":"^3.5.0","zod":"^3.23.0 || ^4.0.0"},"peerDependenciesMeta":{"@nuxt/kit":{"optional":true},"unplugin-vue-components":{"optional":true},"vee-validate":{"optional":true},"zod":{"optional":true}},"dependencies":{"class-variance-authority":"^0.7.1","libphonenumber-js":"^1.12.0","reka-ui":"^2.9.0","vaul-vue":"^0.4.0"},"devDependencies":{"@nuxt/kit":"^4.4.2","@nuxt/schema":"^4.4.2","@tailwindcss/cli":"^4.0.0","@tsdown/css":"0.22.0","@types/node":"^22.13.0","@vueuse/core":"^14.0.0","rimraf":"^6.0.1","tailwindcss":"^4.0.0","tsdown":"0.22.0","typescript":"^5.9.2","unplugin-vue":"7.2.0","unplugin-vue-components":"^32.1.0","vue":"^3.5.0","vue-tsc":"^3.2.4","vee-validate":"^4.13.0","zod":"^3.23.8","@alikhalilll/a-responsive-popover":"1.0.1","@alikhalilll/a-ui-base":"1.0.0"},"scripts":{"clean":"rimraf dist web-types.json","build":"tsx ../../../scripts/build/run-component-build.ts","typecheck":"vue-tsc --noEmit -p tsconfig.json","validate-dist":"tsx ../../../scripts/validate/dist-validate.ts --pkg a-tel-input","validate-consumer":"tsx ../../../scripts/validate/consumer-validate.ts --pkg a-tel-input","validate":"pnpm build && pnpm validate-dist && pnpm validate-consumer"},"_id":"@alikhalilll/a-tel-input@1.4.4","_integrity":"sha512-+R1+z22HfbkmtNio7gaTKQOj/8z0E8I4D4zzeWIwxsr+q2CbWEzaqwrUQLTJcXB9CS8KyZhStUMA9R7RZPshsQ==","_resolved":"/private/var/folders/4j/cgljlpzd0n550x2mkwwsrj6c0000gn/T/1ccbcf79121883dc22f76eca374073bd/alikhalilll-a-tel-input-1.4.4.tgz","_from":"file:alikhalilll-a-tel-input-1.4.4.tgz","_nodeVersion":"26.0.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-+R1+z22HfbkmtNio7gaTKQOj/8z0E8I4D4zzeWIwxsr+q2CbWEzaqwrUQLTJcXB9CS8KyZhStUMA9R7RZPshsQ==","shasum":"c1073429e57ee0a897a9da69bdbc525630b2b3a4","tarball":"https://registry.npmjs.org/@alikhalilll/a-tel-input/-/a-tel-input-1.4.4.tgz","fileCount":69,"unpackedSize":3717781,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCXMaPPXcmTbqhvx1KZZkv9JbN+5T6dDs7ROvGccGCzXQIgQQaAmmrhkgcvrxSP1GGWKpoLCz+3imydZ1jsU5w6qXM="}]},"_npmUser":{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"},"directories":{},"maintainers":[{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/a-tel-input_1.4.4_1783603063148_0.8222913438209334"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-30T13:31:57.810Z","modified":"2026-07-09T13:17:43.444Z","1.0.1":"2026-05-30T13:31:58.131Z","1.0.2":"2026-05-30T20:54:10.977Z","1.1.0":"2026-05-31T17:30:15.502Z","1.1.1":"2026-06-02T00:27:19.110Z","1.1.2":"2026-06-02T09:22:03.362Z","1.2.0":"2026-06-02T15:49:35.362Z","1.2.1":"2026-06-03T11:57:03.402Z","1.3.0":"2026-06-29T12:20:29.144Z","1.4.0":"2026-06-29T13:19:34.588Z","1.4.1":"2026-06-29T13:28:33.273Z","1.4.2":"2026-07-02T13:42:00.922Z","1.4.3":"2026-07-09T12:56:26.467Z","1.4.4":"2026-07-09T13:17:43.332Z"},"bugs":{"url":"https://github.com/alikhalilll/ali-nuxt-toolkit/issues"},"author":{"name":"alikhalilll"},"license":"MIT","homepage":"https://alikhalilll.github.io/ali-nuxt-toolkit/ui/tel-input/#install","keywords":["vue","vue3","nuxt","tel-input","phone-input","headless","shadcn","libphonenumber"],"repository":{"type":"git","url":"git+https://github.com/alikhalilll/ali-nuxt-toolkit.git","directory":"packages/ui-components/ATelInput"},"description":"Headless, shadcn-vue style Vue 3 international telephone input with country detection, validation, and a responsive country picker. Part of the @alikhalilll/a-* toolkit.","maintainers":[{"name":"alikhalilll_dev","email":"alikhalilll.dev@gmail.com"}],"readme":"# `@alikhalilll/a-tel-input`\n\n> A headless, shadcn-vue style **international telephone input** for Vue 3 / Nuxt 3+.\n> Country auto-detect · libphonenumber-js validation · responsive picker (popover ⇆ drawer) ·\n> RTL & i18n ready · first-class VeeValidate + Zod integration · server-side validation hook.\n\n<p align=\"center\">\n  <img\n    src=\"https://raw.githubusercontent.com/alikhalilll/ali-nuxt-toolkit/master/packages/ui-components/ATelInput/.media/hero.png\"\n    alt=\"ATelInput — input on the left with the country picker open next to it, showing flags, country names, and dial codes\"\n    width=\"820\"\n  />\n</p>\n\n<p align=\"center\">\n  <sub>Headless picker — popover on desktop, bottom-sheet on mobile.</sub>\n</p>\n\n[![npm version](https://img.shields.io/npm/v/%40alikhalilll%2Fa-tel-input.svg?style=for-the-badge&label=npm&labelColor=0a0a0a&color=635bff)](https://www.npmjs.com/package/@alikhalilll/a-tel-input)\n[![license](https://img.shields.io/npm/l/%40alikhalilll%2Fa-tel-input.svg?style=for-the-badge&labelColor=0a0a0a&color=635bff)](./LICENSE)\n[![types](https://img.shields.io/npm/types/%40alikhalilll%2Fa-tel-input.svg?style=for-the-badge&labelColor=0a0a0a&color=635bff)](https://www.npmjs.com/package/@alikhalilll/a-tel-input)\n\n## Setup\n\n### Nuxt 3 / 4\n\n```bash\npnpm add @alikhalilll/a-tel-input\n# npm install @alikhalilll/a-tel-input\n# yarn add @alikhalilll/a-tel-input\n# bun add @alikhalilll/a-tel-input\n```\n\n```ts\n// nuxt.config.ts\nexport default defineNuxtConfig({\n  modules: ['@alikhalilll/a-tel-input/nuxt'],\n  css: ['@alikhalilll/a-tel-input/styles.css'],\n});\n```\n\n`ATelInput`, `ACountrySelect`, and `ACountryFlag` are auto-imported — no `import` statement needed in your `.vue` files.\n\n### Vue + Vite\n\n```bash\npnpm add @alikhalilll/a-tel-input\n```\n\n```ts\n// main.ts\nimport '@alikhalilll/a-tel-input/styles.css';\n```\n\nOptional auto-resolve via `unplugin-vue-components`:\n\n```ts\n// vite.config.ts\nimport Components from 'unplugin-vue-components/vite';\nimport { ATelInputResolver } from '@alikhalilll/a-tel-input/resolver';\n\nexport default { plugins: [Components({ resolvers: [ATelInputResolver()] })] };\n```\n\n### REST Countries v5 (optional)\n\nThe component renders with a synchronous, offline country list built from `libphonenumber-js` + `Intl.DisplayNames` — no network, no auth. Pass `restCountriesApiKey` to opt into the v5 fetch (one request per browser, cached in `localStorage` for 30 days):\n\n```ts\n// nuxt.config.ts — applies app-wide\nexport default defineNuxtConfig({\n  modules: ['@alikhalilll/a-tel-input/nuxt'],\n  aTelInput: { apiKey: 'rc_live_...' },\n});\n```\n\n```vue\n<!-- Per-component override -->\n<ATelInput :rest-countries-api-key=\"myKey\" v-model=\"phone\" />\n```\n\n```ts\n// Vue + Vite — install once at bootstrap\nimport { installTelInputDefaults } from '@alikhalilll/a-tel-input';\ninstallTelInputDefaults(app, { apiKey: 'rc_live_...' });\n```\n\nPer-component props win over the injected default. Any failure (CORS, network, non-2xx) silently falls back to the offline baseline — never an empty dropdown. CORS requires you to allowlist your origin's hostnames on the REST Countries dashboard.\n\n---\n\n## Why this component\n\n- **Universal country detection** — debounced parse against the **full libphonenumber\n  metadata (~250 countries)**. Works with international format (`+201066105963`) AND\n  local format (`01066105963`), with NANP disambiguation and a hint-priority chain\n  (env → current → recents → popular → all). No \"only the popular countries\" caveats.\n- **Validates and formats** — error reasons, format hint, E.164 output, every keystroke.\n- **Responsive surface** — popover on desktop, bottom-sheet drawer on mobile, sticky-safe\n  scroll lock on **both**. The page underneath never scrolls; the inner picker list does.\n- **Headless slots for every region** — trigger, chevron, flag, item, search, hint,\n  error. Restyle the field down to the pixel without forking the logic.\n- **First-class form-library integration** — controlled `error` prop, `@blur` event,\n  `useTelField()` composable for VeeValidate, `zPhone()` factory for Zod schemas, and a\n  `validating` spinner for async server-side checks (\"is this number already registered?\").\n- **Two binding contracts, your pick** — single default `v-model` (E.164 string, drops\n  into VeeValidate's `<Field v-slot=\"{ field }\">` via `v-bind=\"field\"`), or split\n  `v-model:phone` + `v-model:country`. Both stay in sync.\n- **i18n + RTL out of the box** — country names localised via `Intl.DisplayNames`,\n  alternative numerals (Arabic-Indic, Persian, Devanagari, Bengali) folded to ASCII on\n  input, RTL inherited from the page or forced via `dir`.\n- **Efficient by default** — country list built synchronously from\n  `libphonenumber-js` metadata + `Intl.DisplayNames` — **zero network requests**.\n  Lookup indexes are populated at first call, so country detection (`+20`, `+44`,\n  ambiguous `+1` NANP, etc.) works from first paint. IP geolocation request still\n  deduped to one call per page across every `<ATelInput>` / `<ACountrySelect>` /\n  `useTelField()` / `zPhone()` instance. LRU-cached matcher.\n- **Optional REST Countries v5 upgrade** — pass `restCountriesApiKey` (or\n  configure it via the Nuxt module / `installTelInputDefaults`) to fire one\n  `api.restcountries.com/countries/v5` request per browser; the result is cached\n  in `localStorage` for 30 days. Without a key the picker stays on the offline\n  baseline — no behaviour change required.\n- **SSR-safe** — country detection runs only after mount, hydration is clean.\n- **TypeScript-first** — every prop, slot, and event fully typed; web-types ship for\n  JetBrains IDEs.\n\n---\n\n## Table of contents\n\n- [Setup](#setup)\n- [Quick start](#quick-start)\n- [Form integration](#form-integration)\n  - [VeeValidate + Zod](#veevalidate--zod)\n  - [Server-side validation](#server-side-validation-is-this-phone-already-registered)\n  - [Native HTML forms](#native-html-forms)\n- [API reference](#api-reference)\n  - [Props](#props)\n  - [Events](#events)\n  - [Slots](#slots)\n  - [Exposed methods](#exposed-methods)\n  - [Composables](#composables)\n- [Theming](#theming)\n- [Accessibility](#accessibility)\n- [SSR](#ssr)\n- [TypeScript](#typescript)\n- [Browser support](#browser-support)\n- [Troubleshooting](#troubleshooting)\n- [License](#license)\n\n---\n\n## Quick start\n\nThe component supports **two binding contracts** — pick whichever fits your form code:\n\n### Single v-model (E.164 string)\n\nThe friendliest with VeeValidate's `<Field v-slot=\"{ field }\">`, native HTML `<form>`\nsubmission, and anything else that expects one canonical value:\n\n```vue\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ATelInput } from '@alikhalilll/a-tel-input';\n\nconst phone = ref(''); // → '+201066105963'\n</script>\n\n<template>\n  <ATelInput v-model=\"phone\" default-country=\"SA\" show-validation />\n</template>\n```\n\n### Split `v-model:phone` + `v-model:country`\n\nWhen you want the raw national digits and the dial code as separate values:\n\n```vue\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { ATelInput } from '@alikhalilll/a-tel-input';\n\nconst phone = ref(''); // → '1066105963'\nconst country = ref<number | null>(null); // → 20  (the dial code as a number)\n</script>\n\n<template>\n  <ATelInput v-model:phone=\"phone\" v-model:country=\"country\" default-country=\"SA\" show-validation />\n</template>\n```\n\n| Binding           | Type             | Carries                                                               |\n| ----------------- | ---------------- | --------------------------------------------------------------------- |\n| `v-model`         | `string`         | Full E.164 string (`'+201066105963'`). Empty when invalid / blank.    |\n| `v-model:phone`   | `string`         | Digits-only national number (no `+`, no spaces).                      |\n| `v-model:country` | `number \\| null` | Dial-digit number (e.g. `20` for Egypt, `1` for NANP). `null` ≈ none. |\n\n> The two contracts stay in sync — you can mix them, but most apps pick one and stick with it.\n\nThe picker is **hidden by default** until a leading dial code is detected from typing —\npass `default-country` to show it pre-selected, or `:detect-from-input=\"false\"` for the\nlegacy always-visible picker.\n\n---\n\n## Form integration\n\n`@alikhalilll/a-tel-input` ships two thin subpath entries so the same validation engine\nthat powers the in-field UI is also available to your form layer:\n\n- **`@alikhalilll/a-tel-input/vee-validate`** — `useTelField()` composable.\n- **`@alikhalilll/a-tel-input/zod`** — `zPhone()` / `zPhoneObject()` schema factories.\n\nBoth `vee-validate` and `zod` are **optional peer dependencies** — install them yourself.\n\n### Drop-in `<Field v-slot=\"{ field, errors }\">` pattern\n\nIf you're already using VeeValidate's slot-style fields, **`v-bind=\"field\"` just works**.\nATelInput's default `v-model` is the E.164 string, and Vue auto-spreads\n`field.modelValue` + `field['onUpdate:modelValue']` + `field.name` + `field.onBlur`\nfrom the slot prop directly onto the component:\n\n```vue\n<script setup lang=\"ts\">\nimport { useForm, Field as VeeField } from 'vee-validate';\nimport { toTypedSchema } from '@vee-validate/zod';\nimport { z } from 'zod';\nimport { ATelInput } from '@alikhalilll/a-tel-input';\nimport { zPhone } from '@alikhalilll/a-tel-input/zod';\n\nconst { handleSubmit } = useForm({\n  validationSchema: toTypedSchema(z.object({ phone: zPhone() })),\n});\n</script>\n\n<template>\n  <form @submit=\"handleSubmit(onSubmit)\">\n    <VeeField v-slot=\"{ field, errors }\" name=\"phone\">\n      <label for=\"phone\">Phone</label>\n      <ATelInput\n        id=\"phone\"\n        v-bind=\"field\"\n        :error=\"errors[0]\"\n        :aria-invalid=\"!!errors.length\"\n        default-country=\"SA\"\n        show-validation\n      />\n    </VeeField>\n    <button type=\"submit\">Submit</button>\n  </form>\n</template>\n```\n\nThat's it — no `useTelField()`, no manual wiring, no `handleBlur` to forward. `field`\nprovides everything; `:error=\"errors[0]\"` surfaces the first error message in the\nexisting error region.\n\n> Prefer `useTelField()` (below) when you also need async / server-side validation in\n> flight, or when you want the helper to manage `defaultCountry` for you.\n\n### VeeValidate + Zod (with useTelField)\n\n```bash\n# pnpm\npnpm add vee-validate @vee-validate/zod zod\n\n# npm\nnpm install vee-validate @vee-validate/zod zod\n\n# yarn\nyarn add vee-validate @vee-validate/zod zod\n\n# bun\nbun add vee-validate @vee-validate/zod zod\n```\n\n```ts\nimport { useForm } from 'vee-validate';\nimport { toTypedSchema } from '@vee-validate/zod';\nimport { z } from 'zod';\nimport { useTelField } from '@alikhalilll/a-tel-input/vee-validate';\nimport { zPhone } from '@alikhalilll/a-tel-input/zod';\n\nconst { handleSubmit } = useForm({\n  validationSchema: toTypedSchema(z.object({ phone: zPhone() })),\n});\n\nconst { phone, country, error, handleBlur, fieldProps } = useTelField('phone', {\n  validateOn: 'blur',\n  defaultCountry: 'SA',\n});\n```\n\n```vue\n<form @submit=\"handleSubmit(onSubmit)\">\n  <ATelInput\n    v-model:phone=\"phone\"\n    v-model:country=\"country\"\n    v-bind=\"fieldProps\"\n    :error=\"error\"\n    @blur=\"handleBlur\"\n  />\n  <button type=\"submit\">Submit</button>\n</form>\n```\n\n`useTelField` composes the digits-only `phone` + the dial-code `country` into an E.164\nstring under the hood, and feeds **that** to VeeValidate's schema — so your Zod schema\nvalidates a single canonical value while the component still binds to two v-models.\n\n### Server-side validation (\"is this phone already registered?\")\n\n> **Important** — VeeValidate **ignores field-level `rules`** when `useForm` is given a\n> `validationSchema`. To run an async server check, chain it onto the schema itself via\n> `z.refine(async)`. `handleSubmit` awaits the schema, and `meta.pending` (which drives\n> `useTelField`'s `validating` ref → the in-field spinner) follows the schema's async work.\n\n```ts\nimport { useForm } from 'vee-validate';\nimport { toTypedSchema } from '@vee-validate/zod';\nimport { z } from 'zod';\nimport { useTelField } from '@alikhalilll/a-tel-input/vee-validate';\nimport { zPhone } from '@alikhalilll/a-tel-input/zod';\n\n// Build the schema: sync zPhone() first (cheap — runs locally via libphonenumber-js),\n// then an async refine that hits your server. Refines run AFTER the parent passes, so\n// the server is only contacted when the value is syntactically valid.\nconst phoneSchema = zPhone().refine(\n  async (value) => {\n    if (!value) return true;\n    const { exists } = await $fetch('/api/phone/exists', { query: { phone: value } });\n    return !exists;\n  },\n  { message: 'This phone number is already registered.' }\n);\n\nconst { handleSubmit } = useForm({\n  validationSchema: toTypedSchema(z.object({ phone: phoneSchema })),\n});\n\nconst { phone, country, error, handleBlur, fieldProps, validating } = useTelField('phone', {\n  validateOn: 'blur',\n});\n```\n\n```vue\n<ATelInput\n  v-model:phone=\"phone\"\n  v-model:country=\"country\"\n  v-bind=\"fieldProps\"\n  :error=\"error\"\n  :validating=\"validating\"\n  show-validation\n  @blur=\"handleBlur\"\n/>\n```\n\n- `error` displays the server message in the existing error region.\n- `validating` is `true` while the request is in flight — renders a small spinner inside\n  the field and sets `aria-busy=\"true\"`. It does **not** disable the input.\n- `handleSubmit` awaits the async refine before invoking your callback, so a failing\n  server check blocks submission automatically.\n\n### Native HTML forms\n\n```vue\n<form>\n  <ATelInput v-model:phone=\"phone\" v-model:country=\"country\" name=\"phone\" />\n</form>\n```\n\n`name` is forwarded to the inner `<input>` so `FormData` picks the value up. The submitted\nvalue is the digits-only national number — compose the E.164 with `usePhoneValidation()`\nin your submit handler if you want the international form.\n\n---\n\n## API reference\n\n### Props\n\n| Prop                   | Type                                   | Default    | Description                                                                                                                                                                       |\n| ---------------------- | -------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `modelValue`           | `string`                               | `''`       | Default `v-model` — full **E.164** string (`'+201066105963'`). Drops directly into VeeValidate's `<Field v-slot=\"{ field }\">` via `v-bind=\"field\"`.                               |\n| `phone`                | `string`                               | `''`       | `v-model:phone` — digits-only national number.                                                                                                                                    |\n| `country`              | `number \\| null`                       | `null`     | `v-model:country` — selected dial-digit number (e.g. `20`).                                                                                                                       |\n| `name`                 | `string`                               | —          | Forwarded to the inner `<input name=\"\">` for native form submission / form libraries.                                                                                             |\n| `error`                | `string \\| null`                       | —          | Externally controlled error message. When non-empty, overrides internal validation.                                                                                               |\n| `validating`           | `boolean`                              | `false`    | `true` while an async validation is in flight. Renders a spinner inside the field.                                                                                                |\n| `validateOn`           | `'change' \\| 'blur' \\| 'eager'`        | `'change'` | When to surface validation in the UI.                                                                                                                                             |\n| `defaultCountry`       | `string`                               | —          | Initial country — ISO2 (`'EG'`) or dial code (`'20'` / `'+20'`).                                                                                                                  |\n| `detectCountry`        | `DetectionStrategy`                    | `'auto'`   | Silent country hint chain: IP → timezone → `navigator.language`.                                                                                                                  |\n| `detectFromInput`      | `boolean`                              | `true`     | Reveal the picker on first dial-code match while typing.                                                                                                                          |\n| `detectDebounceMs`     | `number`                               | `800`      | Debounce window for `detectFromInput`.                                                                                                                                            |\n| `trimDisplay`          | `boolean`                              | `false`    | When a country is pinned, sync the visible input to the trunk-zero-stripped national number after the settle. Off by default — display stays as typed, only the model normalizes. |\n| `allowedDialCodes`     | `string[]`                             | —          | Whitelist of dial codes; others render disabled.                                                                                                                                  |\n| `size`                 | `'xs' \\| 'sm' \\| 'md' \\| 'lg' \\| 'xl'` | `'md'`     | Control size — mirrors the shared `Size` scale.                                                                                                                                   |\n| `dir`                  | `'ltr' \\| 'rtl' \\| 'auto'`             | `'auto'`   | Text direction (inherits from the page by default).                                                                                                                               |\n| `locale`               | `string`                               | —          | BCP-47 locale — localises country names + numerals in hints.                                                                                                                      |\n| `messages`             | `TelInputMessagesInput`                | —          | Bag of every UI string; merged onto English defaults.                                                                                                                             |\n| `showValidation`       | `boolean`                              | `false`    | Colour the field border + error line by validity.                                                                                                                                 |\n| `showValidationIcon`   | `boolean`                              | `false`    | Show the valid / error icon at the field end.                                                                                                                                     |\n| `disabled` / `loading` | `boolean`                              | `false`    | Field state.                                                                                                                                                                      |\n| `placeholder`          | `string`                               | derived    | Falls back to the country's `format_hint` when empty.                                                                                                                             |\n| `flagUrl`              | `(iso2, w) => string`                  | flagcdn    | Override the flag image source.                                                                                                                                                   |\n| `countries`            | `CountryOption[]`                      | derived    | Provide your own country list (bypasses the internal libphonenumber-derived list).                                                                                                |\n| `restCountriesApiKey`  | `string`                               | —          | Opt-in REST Countries v5 API key. One fetch per browser, cached for 30 days. Falls back to the sync baseline on any failure.                                                      |\n| `searcher`             | `(q, c) => boolean`                    | substring  | Custom search predicate.                                                                                                                                                          |\n| `detector`             | `async (opts) => string \\| null`       | built-in   | Fully custom country detection.                                                                                                                                                   |\n| `ipEndpoint`           | `string`                               | `ipapi.co` | Override the IP geolocation endpoint.                                                                                                                                             |\n| `scrollLock`           | `'events' \\| 'body' \\| 'none'`         | `'events'` | How page-scroll is blocked while the picker is open. Applies on both desktop and mobile.                                                                                          |\n| `forceBottomSheet`     | `boolean`                              | `false`    | Force the picker to render as a bottom-sheet drawer regardless of viewport width. Useful for primarily-mobile flows where the picker should feel modal on every form factor.      |\n| Class hooks            | `string`                               | —          | `class`, `fieldClass`, `inputClass`, `contentClass`, `popoverClass`, `drawerClass`, `hintClass`, `errorClass`.                                                                    |\n| Localised strings      | `string`                               | —          | `searchPlaceholder`, `emptyText`, `loadingText`, `errorMessages`.                                                                                                                 |\n\n> The full prop / type reference (with every default and every JSDoc note) lives in\n> [`src/types.ts`](./src/types.ts) and is published as part of the package types.\n\n### Events\n\n| Event               | Payload          | Fires when                                                 |\n| ------------------- | ---------------- | ---------------------------------------------------------- |\n| `update:modelValue` | `string`         | Composed E.164 string changed (the default `v-model`).     |\n| `update:phone`      | `string`         | Digits-only national number changed.                       |\n| `update:country`    | `number \\| null` | Dial-code number changed.                                  |\n| `blur`              | `FocusEvent`     | Inner input lost focus (also flips internal `hasBlurred`). |\n| `focus`             | `FocusEvent`     | Inner input gained focus.                                  |\n\n### Slots\n\nEvery visual region is a slot — the component is fully recomposable.\n\n| Slot            | Props                                                         |\n| --------------- | ------------------------------------------------------------- |\n| `prefix`        | —                                                             |\n| `suffix`        | `{ validationState, validation }`                             |\n| `trigger`       | `{ selectedCountry, open, sizeClasses }`                      |\n| `chevron`       | `{ open }`                                                    |\n| `selected-flag` | `{ country, open }` — trigger only                            |\n| `item-flag`     | `{ country }` — popover option rows only                      |\n| `flag`          | `{ country, context: 'trigger' \\| 'item' }` — legacy unified¹ |\n| `item`          | `{ country, selected, disabled, select }`                     |\n| `group-header`  | `{ label, group: 'suggested' \\| 'all' }`                      |\n| `search`        | `{ value, setValue, isSearching }`                            |\n| `loading`       | —                                                             |\n| `empty`         | `{ query }`                                                   |\n| `detecting`     | — (during country detection)                                  |\n| `validating`    | — (during async form validation)                              |\n| `valid-icon`    | —                                                             |\n| `error-icon`    | `{ reason }`                                                  |\n| `hint`          | `{ country, formatHint, example }`                            |\n| `error`         | `{ message, reason, validation }`                             |\n\n¹ Legacy unified slot — still fires for both the trigger and each option row\n(distinguished by `context`) so existing consumers keep working. Prefer\n`selected-flag` / `item-flag` in new code so changes to one location don't\nspill into the other. Example: customising the trigger to render flag +\ncountry name without changing how rows in the popover look:\n\n```vue\n<ACountrySelect v-model:selected=\"country\" trigger-class=\"w-full\">\n  <template #selected-flag=\"{ country: c }\">\n    <ACountryFlag :iso2=\"c.raw_data.iso2\" :src=\"c.raw_data.flag\" />\n    <span>{{ c.raw_data.name }}</span>\n  </template>\n</ACountrySelect>\n```\n\n### Exposed methods\n\nReach these via `<ATelInput ref=\"tel\" />` → `tel.value?.<method>()`:\n\n| Member                   | Type                                        | Notes                                           |\n| ------------------------ | ------------------------------------------- | ----------------------------------------------- |\n| `validation`             | `ComputedRef<PhoneValidationResult>`        | Full validation result.                         |\n| `required`               | `ComputedRef<PhoneRequiredInfo \\| null>`    | Country format hint + example E.164.            |\n| `selectedDialCode`       | `ComputedRef<string \\| null>`               | `+`-prefixed dial code of the selected country. |\n| `validationState`        | `ComputedRef<'idle' \\| 'valid' \\| 'error'>` | Raw state (no typing-pause gating).             |\n| `visibleValidationState` | `ComputedRef<'idle' \\| 'valid' \\| 'error'>` | UI-surfacing state (gated by `validateOn`).     |\n| `isDetecting`            | `Readonly<Ref<boolean>>`                    | `true` during the first debounce window.        |\n| `hasFinishedTyping`      | `Readonly<Ref<boolean>>`                    | Flips after the debounce settles.               |\n| `detectionAttempted`     | `Readonly<Ref<boolean>>`                    | `true` after at least one detection pass.       |\n| `focus(options?)`        | `() => void`                                | Focus the inner `<input>`.                      |\n| `blur()`                 | `() => void`                                | Blur the inner `<input>`.                       |\n| `select()`               | `() => void`                                | Select the inner `<input>`'s text.              |\n\n### Composables\n\nRe-exported from the main entry — compose your own field from the same primitives the\ncomponent uses.\n\n| Symbol                    | Source path                             | Purpose                                                                                                                                                                     |\n| ------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `usePhoneValidation`      | `@alikhalilll/a-tel-input`              | The libphonenumber-js wrapper — `validate`, `getRequiredInfo`, `searchCountries`, `getCountryByValue`, `getCountriesByDial`.                                                |\n| `useCountryMatching`      | `@alikhalilll/a-tel-input`              | Longest-prefix dial-code matching with tier-3 NANP tie-break.                                                                                                               |\n| `detectCountry`           | `@alikhalilll/a-tel-input`              | The IP → timezone → locale → default chain (callable standalone).                                                                                                           |\n| `useTypingPhase`          | `@alikhalilll/a-tel-input`              | Debounced typing-pause state machine.                                                                                                                                       |\n| `useTelInputValidation`   | `@alikhalilll/a-tel-input`              | View-layer facade (visible state, error message, show flags).                                                                                                               |\n| `useCountrySelection`     | `@alikhalilll/a-tel-input`              | Picker selection state machine (`iso2` + `source` enum + `detectionLocked`). The single state machine the component uses internally — useful when composing your own field. |\n| `useSyncedModel`          | `@alikhalilll/a-tel-input`              | Generic bidirectional sync between a `defineModel` ref and internal state, with the echo-loop guard built in. Reusable in any v-model bridge.                               |\n| `useTelField`             | `@alikhalilll/a-tel-input/vee-validate` | VeeValidate adapter — see [Form integration](#form-integration).                                                                                                            |\n| `zPhone` / `zPhoneObject` | `@alikhalilll/a-tel-input/zod`          | Zod schema factories — see [Form integration](#form-integration).                                                                                                           |\n| `normalizeDigits`         | `@alikhalilll/a-tel-input`              | Fold Arabic-Indic / Persian / Devanagari / Bengali numerals → ASCII.                                                                                                        |\n| `defaultFlagUrl`          | `@alikhalilll/a-tel-input`              | Default flagcdn URL builder.                                                                                                                                                |\n| `provideTelInputDefaults` | `@alikhalilll/a-tel-input`              | Vue `provide` helper — set `apiKey` / `restCountriesBaseUrl` once for an ancestor subtree.                                                                                  |\n| `installTelInputDefaults` | `@alikhalilll/a-tel-input`              | Same as above but bound to a Vue `App` (called by the Nuxt module's auto-installed plugin).                                                                                 |\n\n---\n\n## Theming\n\nThe component renders with neutral defaults and reads global design tokens — restyle from\nyour app's stylesheet without touching the component itself.\n\n### CSS custom properties\n\nSet these on `:root` (or any ancestor) to retint the component:\n\n| Token                      | Used for                              |\n| -------------------------- | ------------------------------------- |\n| `--ak-ui-background`       | Field + popover/drawer background.    |\n| `--ak-ui-foreground`       | Field + popover/drawer text.          |\n| `--ak-ui-input`            | Field border.                         |\n| `--ak-ui-ring`             | Focus ring colour.                    |\n| `--ak-ui-muted-foreground` | Dial prefix, hint text, placeholder.  |\n| `--ak-ui-destructive`      | Error border / ring / icon / message. |\n| `--ak-ui-radius`           | Field corner radius.                  |\n\nValid / error tints (green / red) read literal values — override via the class hooks below.\n\n### Class hooks\n\nEach visual region accepts a class prop you can target with utility classes (Tailwind,\nyour own utility framework, or plain CSS):\n\n| Prop           | Targets                                                                    |\n| -------------- | -------------------------------------------------------------------------- |\n| `class`        | The root wrapper (`.a-tel-input`).                                         |\n| `fieldClass`   | The field row that contains input + dial + picker (`.a-tel-input__field`). |\n| `inputClass`   | The actual `<input>` element.                                              |\n| `hintClass`    | The hint paragraph below the field.                                        |\n| `errorClass`   | The error paragraph below the field.                                       |\n| `popoverClass` | The desktop popover surface.                                               |\n| `drawerClass`  | The mobile drawer surface.                                                 |\n| `contentClass` | Both branches (applied alongside `popoverClass` / `drawerClass`).          |\n\n### Stateful selectors\n\n- `[data-state=\"idle\" | \"valid\" | \"error\"]` on the root and on `.a-tel-input__field`.\n- `[data-size=\"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"]` on the root.\n- `[data-show-validation]` on the root when `showValidation` is on.\n- `[aria-invalid=\"true\"]` on the input when the surfaced state is error.\n- `[aria-busy=\"true\"]` on the input when `validating` is true.\n\n### Dark mode\n\nLight / dark is driven entirely by the `--ak-ui-*` tokens — set them to dark values under\n`[data-theme=\"dark\"]` (or however your app gates dark mode) and everything follows.\n\n---\n\n## Accessibility\n\n- `aria-label` on the inner `<input>` (overrideable via `messages.phoneInputLabel`).\n- `aria-invalid=\"true\"` mirrors the surfaced error state.\n- `aria-describedby` points at the hint / error line whenever it has content; the line is\n  an `aria-live=\"polite\"` region so screen readers announce new errors.\n- `aria-errormessage` points at the same line when the field is in error.\n- `aria-busy=\"true\"` on the input while `validating` is on.\n- Country picker is keyboard-navigable — arrow keys, `/` to focus search, Enter to pick,\n  Esc to close.\n- Focus management is handled by the underlying popover/drawer — focus returns to the\n  trigger on close.\n\n---\n\n## SSR\n\nCountry detection runs **only inside `onMounted`** — the field renders immediately with\n`defaultCountry` (or empty) on the server, and the IP / timezone / locale chain patches\nin on hydration. There are no SSR network calls, and `useEventScrollLock` short-circuits\nwhen `document` is unavailable.\n\nIf `default-country` is set, the picker is visible at first paint and hydration is a\nno-op visually. If you rely on `detect-from-input`, the picker stays hidden until the\nclient-side parser sees a leading dial code — also hydration-safe.\n\n---\n\n## TypeScript\n\nImport the public types from the main entry:\n\n```ts\nimport type {\n  ATelInputProps,\n  ATelInputEmits,\n  ATelInputSlots,\n  ATelInputSize,\n  ATelInputDir,\n  ATelInputValidateOn,\n  TelInputMessages,\n  TelInputMessagesInput,\n  PhoneValidationResult,\n  PhoneValidationReason,\n  PhoneRequiredInfo,\n  CountryOption,\n} from '@alikhalilll/a-tel-input';\n```\n\nSlot props are inferable in templates:\n\n```vue\n<ATelInput #suffix=\"{ validationState, validation }\"> … </ATelInput>\n```\n\nOr in script:\n\n```ts\ntype SuffixProps = Parameters<NonNullable<ATelInputSlots['suffix']>>[0];\n```\n\n---\n\n## Browser support\n\nModern evergreen browsers — last two versions of Chrome, Edge, Firefox, Safari, and the\nmatching mobile WebViews. Uses `Intl.DisplayNames` for localized country names (universal\nsince 2020). No polyfills required.\n\n---\n\n## Troubleshooting\n\n**Why is the picker hidden until I type?**\n`detectFromInput` is on by default — the field starts as a single clean input and the\npicker reveals once a leading dial code is recognised. Pass `default-country=\"EG\"` (or\nany ISO2 / dial-code string) to show it pre-selected, or `:detect-from-input=\"false\"`\nfor the legacy always-visible picker.\n\n**How do I show validation only after blur?**\n`validateOn=\"blur\"`. Or use `useTelField()` — its `fieldProps` already includes that.\n\n**I want a single E.164 value out of the field.**\nTwo options. From a form: `useTelField()` tracks the E.164 string as VeeValidate's value\n(see [Form integration](#form-integration)). Without a form: `tellRef.value?.validation.full_phone`.\n\n**My Zod schema rejects a valid number.**\nCheck `allowedDialCodes` and `country` — `zPhone({ country: 'EG' })` expects the **national**\ndigits (`'1066105963'`), while `zPhone()` (no `country`) expects the **E.164** form\n(`'+201066105963'`). Use `zPhoneObject()` if you want to pass `{ phone, country }` directly.\n\n**The page underneath the drawer scrolls.**\nThat was a bug in versions < 1.1.0 — the event scroll-lock was desktop-only. Upgrade.\n\n**Opening the picker mid-scroll makes my page header / sticky TOC vanish.**\nFixed in 1.1.3. The legacy `scroll-lock=\"body\"` mode (and reka-ui's `modal=true`\nbody lock that fired alongside it) used to mutate `body { overflow: hidden }`,\nwhich silently broke `position: sticky` on the host page. Both paths now share\nthe event-based lock (sticky-safe). The default `scroll-lock=\"events\"` always\nbehaved correctly; only `'body'` was destructive, and it's now equivalent.\n\n**Country auto-detect didn't work.**\nThe default `ipEndpoint` is `https://ipapi.co/json/` — it's free-tier rate-limited.\nEither provide your own endpoint (`ip-endpoint=\"/api/geo\"` returning `{ country_code }`),\nswap the entire chain via the `detector` prop, or disable IP and fall through to timezone:\n`detect-country=\"locale\"`.\n\n---\n\n## License\n\n[MIT](./LICENSE) © alikhalilll\n","readmeFilename":"README.md"}