{"_id":"@devwizard/laravel-localizer-vue","_rev":"6-3c386b8eb0e54aef4389abf679616655","name":"@devwizard/laravel-localizer-vue","dist-tags":{"latest":"1.2.0"},"versions":{"0.0.1":{"name":"@devwizard/laravel-localizer-vue","version":"0.0.1","keywords":["laravel","laravel-localizer","vue","vue3","inertia","inertiajs","localization","internationalization","i18n","l10n","translations","typescript","vite","vite-plugin","spa","composition-api","devwizard"],"author":{"url":"https://github.com/DevWizardHQ","name":"IQBAL HASAN","email":"devwizard24@gmail.com"},"license":"MIT","_id":"@devwizard/laravel-localizer-vue@0.0.1","maintainers":[{"name":"iqbalhasan.dev","email":"iqbalhasan.dev@gmail.com"}],"homepage":"https://github.com/DevWizardHQ/laravel-localizer#readme","bugs":{"url":"https://github.com/DevWizardHQ/laravel-localizer/issues"},"dist":{"shasum":"66b8d141ccbc0fc0c5bde3bf36b2482abf160ef3","tarball":"https://registry.npmjs.org/@devwizard/laravel-localizer-vue/-/laravel-localizer-vue-0.0.1.tgz","fileCount":10,"integrity":"sha512-ne+1RN7tfsqrjeG1tqWVmGNfpwCwgdvi0jpCftlpOhU1ZdTfOEe3V/yHn6WvRM4pQIDOjU87Isy+lyWFdzYPbw==","signatures":[{"sig":"MEYCIQDiM3CF8pzcKsi3x7hqM4eBwnVFXNMEuzqsFuLKrglvvQIhALqdffY9yxmX2ZDUNG0pCnwm5M6zodcl9fWl6N3CdCpK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35406},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./vite":{"types":"./dist/vite-plugin.d.ts","import":"./dist/vite-plugin.js","default":"./dist/vite-plugin.js","require":"./dist/vite-plugin.js"},"./package.json":"./package.json"},"funding":{"url":"https://github.com/sponsors/DevWizardHQ","type":"github"},"gitHead":"2e0541a02aba63d128ca7f64ccd9207f75fc4856","scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest","build":"tsup","format":"prettier --write .","lint:fix":"eslint . --fix","type-check":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest --coverage","prepublishOnly":"npm run type-check && npm run lint && npm run test && npm run build"},"_npmUser":{"name":"iqbalhasan.dev","email":"iqbalhasan.dev@gmail.com"},"repository":{"url":"git+https://github.com/DevWizardHQ/laravel-localizer.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.9.3","description":"Vue 3 integration for Laravel Localizer with Vite plugin, useTranslation composable, and automatic TypeScript generation","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13","tsup":"^8.3.5","vite":"^7.2.2","jsdom":"^27.1.0","eslint":"^9.39.1","vitest":"^4.0.8","prettier":"^3.4.2","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^24.10.0","@vue/test-utils":"^2.4.6","eslint-plugin-vue":"^10.5.1","typescript-eslint":"^8.41.0","vue-eslint-parser":"^10.2.0","@vitejs/plugin-vue":"^6.0.0"},"peerDependencies":{"vue":"^3.0.0","vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@inertiajs/vue3":"^1.0.0 || ^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/laravel-localizer-vue_0.0.1_1762680399055_0.49095906973106707","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@devwizard/laravel-localizer-vue","version":"0.0.2","keywords":["laravel","laravel-localizer","vue","vue3","inertia","inertiajs","localization","internationalization","i18n","l10n","translations","typescript","vite","vite-plugin","spa","composition-api","devwizard"],"author":{"url":"https://github.com/DevWizardHQ","name":"IQBAL HASAN","email":"devwizard24@gmail.com"},"license":"MIT","_id":"@devwizard/laravel-localizer-vue@0.0.2","maintainers":[{"name":"iqbalhasan.dev","email":"iqbalhasan.dev@gmail.com"}],"homepage":"https://github.com/DevWizardHQ/laravel-localizer#readme","bugs":{"url":"https://github.com/DevWizardHQ/laravel-localizer/issues"},"dist":{"shasum":"d342a1e6cf18c832723abb2c181fa9d8eeabbfa9","tarball":"https://registry.npmjs.org/@devwizard/laravel-localizer-vue/-/laravel-localizer-vue-0.0.2.tgz","fileCount":10,"integrity":"sha512-vJxcWYq2u3yvfYbAuqiyEnMsjb6YshUwGP9BGCl6zILBY9XvUx5I1HpYZXI/urrH1cTzgeloPb/VOHt3lrnf3g==","signatures":[{"sig":"MEYCIQDC/lvvmVvTQQa7ej06B8xp8qKBg8DE1Qyyt/x1D9pV1wIhAIWOCZIIdz0Xs5Ou8hkQuL5b50gwujQSWS/8gCSOz/6E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33912},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./vite":{"types":"./dist/vite-plugin.d.ts","import":"./dist/vite-plugin.js","default":"./dist/vite-plugin.js","require":"./dist/vite-plugin.js"},"./package.json":"./package.json"},"funding":{"url":"https://github.com/sponsors/DevWizardHQ","type":"github"},"gitHead":"0a222bb62144e1fa5644f5f51de182fc0a2a84ac","scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","format":"prettier --write .","lint:fix":"eslint . --fix","test:watch":"vitest","type-check":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest --coverage","prepublishOnly":"npm run type-check && npm run lint && npm run test && npm run build"},"_npmUser":{"name":"iqbalhasan.dev","email":"iqbalhasan.dev@gmail.com"},"repository":{"url":"git+https://github.com/DevWizardHQ/laravel-localizer.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.9.3","description":"Vue 3 integration for Laravel Localizer with Vite plugin, useLocalizer composable, and automatic TypeScript generation","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"minimatch":"^10.1.1"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13","tsup":"^8.3.5","vite":"^7.2.2","jsdom":"^27.1.0","eslint":"^9.39.1","vitest":"^4.0.8","prettier":"^3.4.2","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^24.10.0","@vue/test-utils":"^2.4.6","eslint-plugin-vue":"^10.5.1","typescript-eslint":"^8.41.0","vue-eslint-parser":"^10.2.0","@vitejs/plugin-vue":"^6.0.0"},"peerDependencies":{"vue":"^3.0.0","vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@inertiajs/vue3":"^1.0.0 || ^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/laravel-localizer-vue_0.0.2_1762690743407_0.3647613025205474","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@devwizard/laravel-localizer-vue","version":"1.0.0","keywords":["laravel","laravel-localizer","laravel-localizer-vue","vue","vue3","inertia","inertiajs","localization","internationalization","i18n","l10n","translations","typescript","vite","vite-plugin","spa","composition-api","devwizard"],"author":{"url":"https://github.com/DevWizardHQ","name":"IQBAL HASAN","email":"devwizard24@gmail.com"},"license":"MIT","_id":"@devwizard/laravel-localizer-vue@1.0.0","maintainers":[{"name":"iqbalhasan.dev","email":"iqbalhasan.dev@gmail.com"}],"homepage":"https://github.com/DevWizardHQ/laravel-localizer-vue#readme","bugs":{"url":"https://github.com/DevWizardHQ/laravel-localizer-vue/issues"},"dist":{"shasum":"07320d688c062709063d906e3bacab5031533113","tarball":"https://registry.npmjs.org/@devwizard/laravel-localizer-vue/-/laravel-localizer-vue-1.0.0.tgz","fileCount":10,"integrity":"sha512-KsuFXdwTejDB8i6G5XQcE+WBRLJrF3nSg6gh3BU3ywEaoMUjybsX0R77ng+NbhnXJmv8xRbt5oqGh2Dwy0geHg==","signatures":[{"sig":"MEUCIQCtl9gTJVSylcG+JAyiJQUzy37Gviq0Nc/pOlpiNS1nWAIgPwEDDi9aO8HZhkdIFEA2pzb0vnZsoVGy0Ry55PcZQ2Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@devwizard%2flaravel-localizer-vue@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":44529},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./vite":{"types":"./dist/vite-plugin.d.ts","import":"./dist/vite-plugin.js","default":"./dist/vite-plugin.js","require":"./dist/vite-plugin.js"},"./package.json":"./package.json"},"funding":{"url":"https://github.com/sponsors/DevWizardHQ","type":"github"},"gitHead":"51da9f2ad5a9c803f0b6e6301c15f0fdbf491c90","scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","format":"prettier --write .","lint:fix":"eslint . --fix","test:watch":"vitest","type-check":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest --coverage","prepublishOnly":"npm run type-check && npm run lint && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:72e8526b-9ad8-4da5-a95b-fa8a72d88968"}},"repository":{"url":"git+https://github.com/DevWizardHQ/laravel-localizer-vue.git","type":"git","directory":"packages/vue"},"_npmVersion":"11.6.2","description":"Vue 3 integration for Laravel Localizer with Vite plugin, useLocalizer composable, and automatic TypeScript generation","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"minimatch":"^10.1.1"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13","tsup":"^8.3.5","vite":"^7.2.2","jsdom":"^27.1.0","eslint":"^9.39.1","vitest":"^4.0.8","prettier":"^3.4.2","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^24.10.0","@vue/test-utils":"^2.4.6","eslint-plugin-vue":"^10.5.1","typescript-eslint":"^8.41.0","vue-eslint-parser":"^10.2.0","@vitejs/plugin-vue":"^6.0.0"},"peerDependencies":{"vue":"^3.0.0","vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@inertiajs/vue3":"^1.0.0 || ^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/laravel-localizer-vue_1.0.0_1762748242371_0.34744636023107467","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@devwizard/laravel-localizer-vue","version":"1.0.1","keywords":["laravel","laravel-localizer","laravel-localizer-vue","vue","vue3","inertia","inertiajs","localization","internationalization","i18n","l10n","translations","typescript","vite","vite-plugin","spa","composition-api","devwizard"],"author":{"url":"https://github.com/DevWizardHQ","name":"IQBAL HASAN","email":"devwizard24@gmail.com"},"license":"MIT","_id":"@devwizard/laravel-localizer-vue@1.0.1","maintainers":[{"name":"iqbalhasan.dev","email":"iqbalhasan.dev@gmail.com"}],"homepage":"https://github.com/DevWizardHQ/laravel-localizer-vue#readme","bugs":{"url":"https://github.com/DevWizardHQ/laravel-localizer-vue/issues"},"dist":{"shasum":"1f1d287bcc7031f9eb45dca50380f120ebd9c289","tarball":"https://registry.npmjs.org/@devwizard/laravel-localizer-vue/-/laravel-localizer-vue-1.0.1.tgz","fileCount":10,"integrity":"sha512-GTZgI4v75dBBfgmTMUPLhnsJILefm8JQxfUv1upyGtysu0Aer72lcBUIoMW4kMzxaR+AoZbxi0Bf76U+io4zxQ==","signatures":[{"sig":"MEYCIQCmZxoAY6SysCd/0NQidM19FdBR6pE5qy245F1uUYzgegIhALPLti5cPXX1W1mm+mPIsjVQRzU9JKaKWIdsKO8z95Wr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@devwizard%2flaravel-localizer-vue@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":45087},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./vite":{"types":"./dist/vite-plugin.d.ts","import":"./dist/vite-plugin.js","default":"./dist/vite-plugin.js","require":"./dist/vite-plugin.js"},"./package.json":"./package.json"},"funding":{"url":"https://github.com/sponsors/DevWizardHQ","type":"github"},"gitHead":"019d99fec5d864b098007300a067e84140b48a43","scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","format":"prettier --write .","lint:fix":"eslint . --fix","test:watch":"vitest","type-check":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest --coverage","prepublishOnly":"npm run type-check && npm run lint && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:72e8526b-9ad8-4da5-a95b-fa8a72d88968"}},"repository":{"url":"git+https://github.com/DevWizardHQ/laravel-localizer-vue.git","type":"git","directory":"packages/vue"},"_npmVersion":"11.6.2","description":"Vue 3 integration for Laravel Localizer with Vite plugin, useLocalizer composable, and automatic TypeScript generation","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"minimatch":"^10.1.1"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13","tsup":"^8.3.5","vite":"^7.2.2","jsdom":"^27.1.0","eslint":"^9.39.1","vitest":"^4.0.8","prettier":"^3.4.2","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^24.10.0","@vue/test-utils":"^2.4.6","eslint-plugin-vue":"^10.5.1","typescript-eslint":"^8.41.0","vue-eslint-parser":"^10.2.0","@vitejs/plugin-vue":"^6.0.0"},"peerDependencies":{"vue":"^3.0.0","vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@inertiajs/vue3":"^1.0.0 || ^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/laravel-localizer-vue_1.0.1_1762757152238_0.42108010604448776","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@devwizard/laravel-localizer-vue","version":"1.1.0","keywords":["laravel","laravel-localizer","laravel-localizer-vue","vue","vue3","inertia","inertiajs","localization","internationalization","i18n","l10n","translations","typescript","vite","vite-plugin","spa","composition-api","devwizard"],"author":{"url":"https://github.com/DevWizardHQ","name":"IQBAL HASAN","email":"devwizard24@gmail.com"},"license":"MIT","_id":"@devwizard/laravel-localizer-vue@1.1.0","maintainers":[{"name":"iqbalhasan.dev","email":"iqbalhasan.dev@gmail.com"}],"homepage":"https://github.com/DevWizardHQ/laravel-localizer-vue#readme","bugs":{"url":"https://github.com/DevWizardHQ/laravel-localizer-vue/issues"},"dist":{"shasum":"003a3dad28edc066aa96e04b3b74309d11a718e4","tarball":"https://registry.npmjs.org/@devwizard/laravel-localizer-vue/-/laravel-localizer-vue-1.1.0.tgz","fileCount":10,"integrity":"sha512-1I9vWtC/nR2y1Zj0LyRp4xOpEmB3ZPLgUTctgk7JMPaSs2WaXeHtt3Pi5Ldo7IMgjfyBzjQsmqW5XEsqoM6jNA==","signatures":[{"sig":"MEUCIQDiyGqECECM7B7ONSkjQ8QgLkfqXMj0BHysXs6cVZVXkgIgRQ6JU66f+fRs/dnGV5Q3SEtICvLj7tE/DWqeg2atTUA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@devwizard%2flaravel-localizer-vue@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":52691},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./vite":{"types":"./dist/vite-plugin.d.ts","import":"./dist/vite-plugin.js","default":"./dist/vite-plugin.js","require":"./dist/vite-plugin.js"},"./package.json":"./package.json"},"funding":{"url":"https://github.com/sponsors/DevWizardHQ","type":"github"},"gitHead":"233bfd76798bf2d2980a6b5c35d27463c56f50cf","scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","format":"prettier --write .","lint:fix":"eslint . --fix","test:watch":"vitest","type-check":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest --coverage","prepublishOnly":"npm run type-check && npm run lint && npm run test && npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:72e8526b-9ad8-4da5-a95b-fa8a72d88968"}},"repository":{"url":"git+https://github.com/DevWizardHQ/laravel-localizer-vue.git","type":"git","directory":"packages/vue"},"_npmVersion":"11.12.1","description":"Vue 3 integration for Laravel Localizer with Vite plugin, useLocalizer composable, and automatic TypeScript generation","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"minimatch":"^10.1.1"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.13","tsup":"^8.3.5","vite":"^7.2.2","jsdom":"^28.0.0","eslint":"^10.0.0","vitest":"^4.0.8","prettier":"^3.4.2","@eslint/js":"^10.0.1","typescript":"^5.7.2","@types/node":"^25.2.2","@inertiajs/vue3":"^2.3.21","@vue/test-utils":"^2.4.6","eslint-plugin-vue":"^10.5.1","typescript-eslint":"^8.41.0","vue-eslint-parser":"^10.2.0","@vitejs/plugin-vue":"^6.0.0"},"peerDependencies":{"vue":"^3.0.0","vite":"^5.0.0 || ^6.0.0 || ^7.0.0","@inertiajs/vue3":"^1.0.0 || ^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/laravel-localizer-vue_1.1.0_1775971962889_0.11666901828569731","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"_id":"@devwizard/laravel-localizer-vue@1.2.0","bugs":{"url":"https://github.com/DevWizardHQ/laravel-localizer-vue/issues"},"dist":{"shasum":"4d39603261310cff44f9c153849686a04b52c0b2","tarball":"https://registry.npmjs.org/@devwizard/laravel-localizer-vue/-/laravel-localizer-vue-1.2.0.tgz","fileCount":10,"integrity":"sha512-niqz7DIuOoIOmz/Yph/+GwQtvRm3jFSNr700Jpiv1Ixv0I31LHGhakqURRTErn+dBMk5Qd507BomUKnIGCIUTw==","signatures":[{"sig":"MEYCIQCxU9RkfdYC4Y0uMktm62ZdOBOGevhBhuZMG19dXw06TAIhAO3JdMmJ/DDBcFGa9xHbDJaiiCR6iQ6e+IN9Ydsnn3vF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICqOHNTFmTn43hST0ZvJhXHibEcEU0QagOLYCShRj84gAiAqdfkufDOqiqnGpui7XrGheKs0+tXdD836zLl4ZWFKQA=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@devwizard%2flaravel-localizer-vue@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":54287},"main":"dist/index.js","name":"@devwizard/laravel-localizer-vue","type":"module","types":"dist/index.d.ts","author":{"url":"https://github.com/DevWizardHQ","name":"IQBAL HASAN","email":"devwizard24@gmail.com"},"module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.js"},"./vite":{"types":"./dist/vite-plugin.d.ts","import":"./dist/vite-plugin.js","default":"./dist/vite-plugin.js","require":"./dist/vite-plugin.js"},"./package.json":"./package.json"},"funding":{"url":"https://github.com/sponsors/DevWizardHQ","type":"github"},"gitHead":"1f8655e3f4cc10e774a39460fc909101e850adb3","license":"MIT","scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","test":"vitest run","build":"tsup","format":"prettier --write .","lint:fix":"eslint . --fix","test:watch":"vitest","type-check":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest --coverage","prepublishOnly":"npm run type-check && npm run lint && npm run test && npm run build"},"version":"1.2.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:72e8526b-9ad8-4da5-a95b-fa8a72d88968"}},"homepage":"https://github.com/DevWizardHQ/laravel-localizer-vue#readme","keywords":["laravel","laravel-localizer","laravel-localizer-vue","vue","vue3","inertia","inertiajs","localization","internationalization","i18n","l10n","translations","typescript","vite","vite-plugin","spa","composition-api","devwizard"],"repository":{"url":"git+https://github.com/DevWizardHQ/laravel-localizer-vue.git","type":"git","directory":"packages/vue"},"_npmVersion":"12.0.2","description":"Vue 3 integration for Laravel Localizer with Vite plugin, useLocalizer composable, and automatic TypeScript generation","directories":{},"maintainers":[{"name":"iqbalhasan.dev","email":"iqbalhasan.dev@gmail.com"}],"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"minimatch":"^10.2.6"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.43","tsup":"^8.5.1","vite":"^8.3.0","jsdom":"^29.1.1","eslint":"^10.11.0","vitest":"^5.0.1","prettier":"^3.9.8","@eslint/js":"^10.0.1","typescript":"^6.0.3","@types/node":"^26.6.2","@inertiajs/vue3":"^3.7.1","@vue/test-utils":"^2.5.1","eslint-plugin-vue":"^10.11.0","typescript-eslint":"^8.70.0","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.9"},"peerDependencies":{"vue":"^3.0.0","vite":"^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0","@inertiajs/vue3":"^1.0.0 || ^2.0.0 || ^3.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/laravel-localizer-vue_1.2.0_1789901110226_0.2857340339604131"}}},"time":{"created":"2025-11-09T09:26:38.922Z","modified":"2026-09-20T10:45:10.690Z","0.0.1":"2025-11-09T09:26:39.247Z","0.0.2":"2025-11-09T12:19:03.607Z","1.0.0":"2025-11-10T04:17:22.569Z","1.0.1":"2025-11-10T06:45:52.422Z","1.1.0":"2026-04-12T05:32:43.025Z","1.2.0":"2026-09-20T10:45:10.355Z"},"bugs":{"url":"https://github.com/DevWizardHQ/laravel-localizer-vue/issues"},"author":{"url":"https://github.com/DevWizardHQ","name":"IQBAL HASAN","email":"devwizard24@gmail.com"},"license":"MIT","homepage":"https://github.com/DevWizardHQ/laravel-localizer-vue#readme","keywords":["laravel","laravel-localizer","laravel-localizer-vue","vue","vue3","inertia","inertiajs","localization","internationalization","i18n","l10n","translations","typescript","vite","vite-plugin","spa","composition-api","devwizard"],"repository":{"url":"git+https://github.com/DevWizardHQ/laravel-localizer-vue.git","type":"git","directory":"packages/vue"},"description":"Vue 3 integration for Laravel Localizer with Vite plugin, useLocalizer composable, and automatic TypeScript generation","maintainers":[{"name":"iqbalhasan.dev","email":"iqbalhasan.dev@gmail.com"}],"readme":"# @devwizard/laravel-localizer-vue\n\n[![npm version](https://img.shields.io/npm/v/@devwizard/laravel-localizer-vue.svg)](https://www.npmjs.com/package/@devwizard/laravel-localizer-vue)\n[![npm downloads](https://img.shields.io/npm/dm/@devwizard/laravel-localizer-vue.svg)](https://www.npmjs.com/package/@devwizard/laravel-localizer-vue)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\nVue 3 integration for [Laravel Localizer](https://github.com/devwizardhq/laravel-localizer) - seamlessly use Laravel translations in your Vue 3/Inertia.js applications with full TypeScript support.\n\n## Features\n\n- 🎨 **Vue 3 Composable** - `useLocalizer()` composable with Composition API\n- 🔌 **Vite Plugin** - Auto-regenerates TypeScript translations on file changes\n- 🎯 **TypeScript** - Full type safety with TypeScript support\n- ⚡ **Inertia.js** - Native integration with Inertia.js page props\n- 🌐 **Pluralization** - Built-in pluralization support\n- 🔄 **Replacements** - Dynamic placeholder replacement\n- 🌍 **RTL Support** - Automatic text direction detection\n- ⚛️ **Reactive** - Fully reactive locale and direction with Vue refs\n- 📦 **Tree-shakeable** - Modern ESM build\n\n## Requirements\n\n- Vue 3.0+\n- Inertia.js v1 or v2\n- Laravel Localizer backend package\n\n## Installation\n\n```bash\nnpm install @devwizard/laravel-localizer-vue\n```\n\n## Backend Setup\n\nFirst, install and configure the Laravel Localizer package:\n\n```bash\ncomposer require devwizardhq/laravel-localizer\nphp artisan localizer:install\n```\n\nSee the [Laravel Localizer documentation](https://github.com/devwizardhq/laravel-localizer) for complete backend setup.\n\n## Setup\n\n### Step 1: Generate Translation Files\n\nFirst, generate TypeScript translation files from your Laravel app:\n\n```bash\nphp artisan localizer:generate --all\n```\n\nThis creates files like `resources/js/lang/en.ts`, `resources/js/lang/fr.ts`, etc.\n\n### Step 2: Configure Vite Plugin\n\nAdd the Vite plugin to auto-regenerate translations when language files change.\n\n**File: `vite.config.ts`**\n\n```typescript\nimport { defineConfig } from 'vite';\nimport vue from '@vitejs/plugin-vue';\nimport laravel from 'laravel-vite-plugin';\nimport { laravelLocalizer } from '@devwizard/laravel-localizer-vue/vite';\n\nexport default defineConfig({\n  plugins: [\n    laravel({\n      input: ['resources/js/app.ts'],\n      refresh: true,\n    }),\n    vue({\n      template: {\n        transformAssetUrls: {\n          base: null,\n          includeAbsolute: false,\n        },\n      },\n    }),\n    laravelLocalizer({\n      // Watch patterns for language file changes\n      patterns: ['lang/**', 'resources/lang/**'],\n\n      // Command to run when files change\n      command: 'php artisan localizer:generate --all',\n\n      // Enable debug logging (optional)\n      debug: false,\n    }),\n  ],\n});\n```\n\n**What it does:**\n\n- Watches for changes in `lang/**` and `resources/lang/**`\n- Automatically runs `php artisan localizer:generate --all` when files change\n- Triggers HMR to reload your frontend with updated translations\n\n### Step 3: Initialize Window Translations\n\nSet up the global `window.localizer` object in your app entry point.\n\n**File: `resources/js/app.ts`**\n\n```typescript\nimport './bootstrap';\nimport '../css/app.css';\n\nimport { createApp, h, DefineComponent } from 'vue';\nimport { createInertiaApp } from '@inertiajs/vue3';\nimport { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers';\n\n// Import all generated translation files\nimport * as translations from './lang';\n\nconst appName = import.meta.env.VITE_APP_NAME || 'Laravel';\n\ncreateInertiaApp({\n  title: (title) => `${title} - ${appName}`,\n  resolve: (name) =>\n    resolvePageComponent(\n      `./Pages/${name}.vue`,\n      import.meta.glob<DefineComponent>('./Pages/**/*.vue')\n    ),\n  setup({ el, App, props, plugin }) {\n    // Initialize window.localizer with translations\n    if (typeof window !== 'undefined') {\n      window.localizer = {\n        translations,\n      };\n    }\n\n    createApp({ render: () => h(App, props) })\n      .use(plugin)\n      .mount(el);\n  },\n  progress: {\n    color: '#4B5563',\n  },\n});\n```\n\n**TypeScript Declaration**\n\nTo ensure type safety when accessing `window.localizer`, add this global declaration to your project:\n\n```typescript\ndeclare global {\n  interface Window {\n    localizer: {\n      translations: typeof translations;\n    };\n  }\n}\n```\n\n**Alternative: Create a separate file**\n\n**File: `resources/js/lang/index.ts`**\n\n```typescript\n// Export all generated translations\nexport * from './en';\nexport * from './fr';\nexport * from './ar';\n// ... add other locales as needed\n```\n\n**File: `resources/js/app.ts`**\n\n```typescript\nimport * as translations from './lang';\n\n// ... in setup()\nwindow.localizer = { translations };\n```\n\n### 3. Configure TypeScript (Optional)\n\nAdd types to your `tsconfig.json`:\n\n```json\n{\n  \"compilerOptions\": {\n    \"types\": [\"@devwizard/laravel-localizer-vue\"]\n  }\n}\n```\n\n## Usage\n\n### Basic Usage\n\n```vue\n{% raw %}\n<script setup lang=\"ts\">\nimport { useLocalizer } from '@devwizard/laravel-localizer-vue';\n\nconst { __ } = useLocalizer();\n</script>\n\n<template>\n  <div>\n    <h1>{{ __('welcome') }}</h1>\n    <p>{{ __('validation.required') }}</p>\n  </div>\n</template>\n{% endraw %}\n```\n\n### With Replacements\n\n```vue\n{% raw %}\n<script setup lang=\"ts\">\nimport { useLocalizer } from '@devwizard/laravel-localizer-vue';\n\nconst { __ } = useLocalizer();\nconst userName = 'John';\nconst itemCount = 5;\n</script>\n\n<template>\n  <div>\n    <!-- Supports :placeholder format -->\n    <p>{{ __('greeting', { name: userName }) }}</p>\n    <!-- \"Hello :name!\" → \"Hello John!\" -->\n\n    <!-- Also supports {placeholder} format -->\n    <p>{{ __('items', { count: itemCount }) }}</p>\n    <!-- \"You have {count} items\" → \"You have 5 items\" -->\n  </div>\n</template>\n{% endraw %}\n```\n\n### Pluralization\n\n```vue\n{% raw %}\n<script setup lang=\"ts\">\nimport { useLocalizer } from '@devwizard/laravel-localizer-vue';\n\nconst { choice } = useLocalizer();\nconst count = ref(5);\n</script>\n\n<template>\n  <div>\n    <!-- Define in your translation file: -->\n    <!-- \"apples\": \"no apples|one apple|many apples\" -->\n\n    <p>{{ choice('apples', count) }}</p>\n    <!-- count = 0: \"no apples\" -->\n    <!-- count = 1: \"one apple\" -->\n    <!-- count = 5: \"many apples\" -->\n\n    <!-- With replacements -->\n    <p>{{ choice('apples', count, { count }) }}</p>\n    <!-- \"You have {count} apples\" → \"You have 5 apples\" -->\n  </div>\n</template>\n{% endraw %}\n```\n\n### Checking Translation Existence\n\n```vue\n{% raw %}\n<script setup lang=\"ts\">\nimport { useLocalizer } from '@devwizard/laravel-localizer-vue';\n\nconst { __, has } = useLocalizer();\n</script>\n\n<template>\n  <div>\n    <h1 v-if=\"has('welcome')\">{{ __('welcome') }}</h1>\n\n    <p v-if=\"has('custom.message')\">\n      {{ __('custom.message') }}\n    </p>\n    <p v-else>Default message</p>\n  </div>\n</template>\n{% endraw %}\n```\n\n### With Fallback\n\n```vue\n{% raw %}\n<script setup lang=\"ts\">\nimport { useLocalizer } from '@devwizard/laravel-localizer-vue';\n\nconst { __ } = useLocalizer();\n</script>\n\n<template>\n  <div>\n    <!-- Use fallback for missing keys -->\n    <p>{{ __('might.not.exist', {}, 'Default Text') }}</p>\n  </div>\n</template>\n{% endraw %}\n```\n\n### Locale Information (Reactive)\n\n```vue\n{% raw %}\n<script setup lang=\"ts\">\nimport { useLocalizer } from '@devwizard/laravel-localizer-vue';\n\nconst { locale, dir, availableLocales } = useLocalizer();\n// Note: locale and dir are ComputedRef, so use .value in script\n</script>\n\n<template>\n  <div :dir=\"dir\">\n    <p>Current Locale: {{ locale }}</p>\n    <p>Text Direction: {{ dir }}</p>\n\n    <select :value=\"locale\">\n      <option v-for=\"(meta, code) in availableLocales\" :key=\"code\" :value=\"code\">\n        {{ meta.flag }} {{ meta.label }}\n      </option>\n    </select>\n  </div>\n</template>\n{% endraw %}\n```\n\n### RTL Support\n\n```vue\n{% raw %}\n<script setup lang=\"ts\">\nimport { useLocalizer } from '@devwizard/laravel-localizer-vue';\n\nconst { __, dir } = useLocalizer();\n</script>\n\n<template>\n  <div :dir=\"dir\" :class=\"dir === 'rtl' ? 'text-right' : 'text-left'\">\n    <h1>{{ __('welcome') }}</h1>\n    <p>{{ __('description') }}</p>\n  </div>\n</template>\n{% endraw %}\n```\n\n### Accessing All Translations\n\n```vue\n{% raw %}\n<script setup lang=\"ts\">\nimport { useLocalizer } from '@devwizard/laravel-localizer-vue';\n\nconst { translations } = useLocalizer();\n</script>\n\n<template>\n  <div>\n    <h2>All Translations:</h2>\n    <pre>{{ JSON.stringify(translations, null, 2) }}</pre>\n  </div>\n</template>\n{% endraw %}\n```\n\n## API Reference\n\n### `useLocalizer()`\n\nReturns an object with the following properties and methods:\n\n| Property           | Type                                                                      | Description                     |\n| ------------------ | ------------------------------------------------------------------------- | ------------------------------- |\n| `__`               | `(key: string, replacements?: Replacements, fallback?: string) => string` | Main translation function       |\n| `trans`            | `(key: string, replacements?: Replacements, fallback?: string) => string` | Alias for `__()`                |\n| `lang`             | `(key: string, replacements?: Replacements, fallback?: string) => string` | Alias for `__()`                |\n| `has`              | `(key: string) => boolean`                                                | Check if translation key exists |\n| `choice`           | `(key: string, count: number, replacements?: Replacements) => string`     | Pluralization support           |\n| `locale`           | `ComputedRef<string>`                                                     | Reactive current locale code    |\n| `dir`              | `ComputedRef<'ltr' \\| 'rtl'>`                                             | Reactive text direction         |\n| `availableLocales` | `ComputedRef<Record<string, LocaleMeta>>`                                 | Reactive available locales      |\n| `translations`     | `ComputedRef<Record<string, string>>`                                     | Reactive all translations       |\n\n**Note:** Unlike React, `locale`, `dir`, `availableLocales`, and `translations` are `ComputedRef` values, making them fully reactive in Vue.\n\n### Vite Plugin Options\n\n```typescript\ninterface LocalizerOptions {\n  // Watch patterns for language file changes\n  patterns?: string[]; // default: ['lang/**', 'resources/lang/**']\n\n  // Command to run when files change\n  command?: string; // default: 'php artisan localizer:generate --all'\n\n  // Enable debug logging\n  debug?: boolean; // default: false\n}\n```\n\n## TypeScript Support\n\nThe package is written in TypeScript and provides full type definitions:\n\n```typescript\nimport {\n  useLocalizer,\n  UseLocalizerReturn,\n  Replacements,\n  LocaleData,\n  PageProps,\n} from '@devwizard/laravel-localizer-vue';\n\n// All types are available for import\n```\n\n## Testing\n\nThe package includes comprehensive tests using Vitest:\n\n```bash\n# Run tests\nnpm test\n\n# Run tests in watch mode\nnpm run test:watch\n\n# Generate coverage report\nnpm run test:coverage\n```\n\n## Examples\n\n### Language Switcher\n\n```vue\n{% raw %}\n<script setup lang=\"ts\">\nimport { router } from '@inertiajs/vue3';\nimport { useLocalizer } from '@devwizard/laravel-localizer-vue';\n\nconst { locale, availableLocales } = useLocalizer();\n\nconst changeLocale = (newLocale: string) => {\n  router.visit(route('locale.switch', { locale: newLocale }), {\n    preserveScroll: true,\n    preserveState: true,\n  });\n};\n</script>\n\n<template>\n  <select :value=\"locale\" @change=\"changeLocale($event.target.value)\">\n    <option v-for=\"(meta, code) in availableLocales\" :key=\"code\" :value=\"code\">\n      {{ meta.flag }} {{ meta.label }}\n    </option>\n  </select>\n</template>\n{% endraw %}\n```\n\n### Form Validation\n\n```vue\n{% raw %}\n<script setup lang=\"ts\">\nimport { useLocalizer } from '@devwizard/laravel-localizer-vue';\nimport { useForm } from '@inertiajs/vue3';\n\nconst { __ } = useLocalizer();\n\nconst form = useForm({\n  email: '',\n  password: '',\n});\n\nconst submit = () => {\n  form.post('/login');\n};\n</script>\n\n<template>\n  <form @submit.prevent=\"submit\">\n    <div>\n      <label>{{ __('auth.email') }}</label>\n      <input v-model=\"form.email\" type=\"email\" required />\n      <span v-if=\"form.errors.email\" class=\"error\">\n        {{ form.errors.email }}\n      </span>\n    </div>\n\n    <div>\n      <label>{{ __('auth.password') }}</label>\n      <input v-model=\"form.password\" type=\"password\" required />\n      <span v-if=\"form.errors.password\" class=\"error\">\n        {{ form.errors.password }}\n      </span>\n    </div>\n\n    <button type=\"submit\" :disabled=\"form.processing\">\n      {{ __('auth.login') }}\n    </button>\n  </form>\n</template>\n{% endraw %}\n```\n\n### Composition API with Reactive Locale\n\n```vue\n{% raw %}\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { useLocalizer } from '@devwizard/laravel-localizer-vue';\n\nconst { __, locale, dir } = useLocalizer();\n\n// locale and dir are reactive, so this will update automatically\nconst greeting = computed(() => {\n  return __('greeting', { locale: locale.value });\n});\n\nconst containerClass = computed(() => ({\n  'text-right': dir.value === 'rtl',\n  'text-left': dir.value === 'ltr',\n}));\n</script>\n\n<template>\n  <div :class=\"containerClass\">\n    <h1>{{ greeting }}</h1>\n    <p>Direction: {{ dir }}</p>\n  </div>\n</template>\n{% endraw %}\n```\n\n## Complete Working Example\n\nHere's a full example of a multilingual user dashboard:\n\n**Backend: `lang/en.json`**\n\n```json\n{\n  \"welcome\": \"Welcome\",\n  \"dashboard\": \"Dashboard\",\n  \"greeting\": \"Hello, :name!\",\n  \"notifications\": \"You have :count notifications\"\n}\n```\n\n**Backend: `lang/en/dashboard.php`**\n\n```php\n<?php\n\nreturn [\n    'title' => 'User Dashboard',\n    'stats' => [\n        'users' => '{0} No users|{1} One user|[2,*] :count users',\n        'posts' => 'You have :count posts',\n    ],\n];\n```\n\n**Generate translations:**\n\n```bash\nphp artisan localizer:generate --all\n```\n\n**Frontend: `resources/js/Pages/Dashboard.vue`**\n\n```vue\n{% raw %}\n<script setup lang=\"ts\">\nimport { Head } from '@inertiajs/vue3';\nimport { useLocalizer } from '@devwizard/laravel-localizer-vue';\nimport AuthenticatedLayout from '@/Layouts/AuthenticatedLayout.vue';\nimport { PageProps } from '@/types';\n\ninterface DashboardProps extends PageProps {\n  stats: {\n    users: number;\n    posts: number;\n    notifications: number;\n  };\n}\n\nconst props = defineProps<DashboardProps>();\nconst { __, choice, locale, dir } = useLocalizer();\n</script>\n\n<template>\n  <AuthenticatedLayout>\n    <template #header>\n      <h2 class=\"font-semibold text-xl text-gray-800 leading-tight\">\n        {{ __('dashboard.title') }}\n      </h2>\n    </template>\n\n    <Head :title=\"__('dashboard')\" />\n\n    <div class=\"py-12\" :dir=\"dir\">\n      <div class=\"max-w-7xl mx-auto sm:px-6 lg:px-8\">\n        <div class=\"bg-white overflow-hidden shadow-sm sm:rounded-lg\">\n          <div class=\"p-6 text-gray-900\">\n            <!-- Greeting with replacement -->\n            <h1 class=\"text-2xl font-bold mb-4\">\n              {{ __('greeting', { name: auth.user.name }) }}\n            </h1>\n\n            <!-- Notification count -->\n            <p class=\"mb-4\">\n              {{ __('notifications', { count: stats.notifications }) }}\n            </p>\n\n            <!-- Statistics with pluralization -->\n            <div class=\"grid grid-cols-2 gap-4\">\n              <div class=\"p-4 bg-blue-50 rounded\">\n                <h3 class=\"font-semibold\">Users</h3>\n                <p>{{ choice('dashboard.stats.users', stats.users, { count: stats.users }) }}</p>\n              </div>\n\n              <div class=\"p-4 bg-green-50 rounded\">\n                <h3 class=\"font-semibold\">Posts</h3>\n                <p>{{ __('dashboard.stats.posts', { count: stats.posts }) }}</p>\n              </div>\n            </div>\n\n            <!-- Locale info -->\n            <div class=\"mt-4 text-sm text-gray-500\">\n              <p>Current locale: {{ locale }}</p>\n              <p>Text direction: {{ dir }}</p>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </AuthenticatedLayout>\n</template>\n{% endraw %}\n```\n\n**Language Switcher Component:**\n\n```vue\n{% raw %}\n<script setup lang=\"ts\">\nimport { useLocalizer } from '@devwizard/laravel-localizer-vue';\n\nconst { locale, availableLocales } = useLocalizer();\n\nconst switchLocale = (newLocale: string) => {\n  // Simple page reload with locale parameter\n  window.location.href = `${window.location.pathname}?locale=${newLocale}`;\n};\n</script>\n\n<template>\n  <div class=\"relative\">\n    <select\n      :value=\"locale\"\n      @change=\"switchLocale(($event.target as HTMLSelectElement).value)\"\n      class=\"block w-full px-3 py-2 border border-gray-300 rounded-md\"\n    >\n      <option v-for=\"(meta, code) in availableLocales\" :key=\"code\" :value=\"code\">\n        {{ meta.flag }} {{ meta.label }}\n      </option>\n    </select>\n  </div>\n</template>\n{% endraw %}\n```\n\n**What happens:**\n\n1. User changes locale in dropdown\n2. Page reloads with `?locale=fr` parameter\n3. Laravel middleware detects locale and updates session\n4. Vue components re-render with new translations\n5. Text direction automatically adjusts for RTL languages\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Run tests\nnpm test\n\n# Build the package\nnpm run build\n\n# Run linter\nnpm run lint\n\n# Format code\nnpm run format\n```\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING](CONTRIBUTING.md) for details.\n\n## Changelog\n\nPlease see [CHANGELOG](CHANGELOG.md) for recent changes.\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE) for more information.\n\n## Related Packages\n\n- [Laravel Localizer](https://github.com/devwizardhq/laravel-localizer) - Backend package\n- [@devwizard/laravel-localizer-react](https://www.npmjs.com/package/@devwizard/laravel-localizer-react) - React integration\n\n## Credits\n\n- [IQBAL HASAN](https://github.com/iqbalhasandev)\n- [All Contributors](../../contributors)\n","readmeFilename":"README.md"}