{"_id":"@2security/lunar-date-picker","_rev":"9-24238f1aa4efd74e59c78af450761619","name":"@2security/lunar-date-picker","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@2security/lunar-date-picker","version":"1.0.0","keywords":["react-native","lunar-calendar","date-picker","nitro-modules","timezone","lazy-loading","performance","vietnamese-calendar","ios","android","2security"],"author":{"url":"https://github.com/duongnguyen17","name":"2Security","email":"duongthptnt@gmail.com"},"license":"MIT","_id":"@2security/lunar-date-picker@1.0.0","maintainers":[{"name":"duongnguyen17","email":"duongthptnt@gmail.com"}],"homepage":"https://github.com/duongnguyen17/react-native-lunar-date-picker#readme","bugs":{"url":"https://github.com/duongnguyen17/react-native-lunar-date-picker/issues"},"dist":{"shasum":"d4c0c60aac99b598f8cf999af4caf6718048126f","tarball":"https://registry.npmjs.org/@2security/lunar-date-picker/-/lunar-date-picker-1.0.0.tgz","fileCount":136,"integrity":"sha512-DtH9Zs/oQx0EKCS1Ijcekl8f9R/TkF44LgNnXAKhoBTinIFRE59/u8nDMGjDJ5Pt+ygJCDWcZEWEeyL01OZV7Q==","signatures":[{"sig":"MEYCIQDFoHLy6vZCtChv5xxSc/NX3zycY0RDcvy03/O/QrS+MwIhAKhSOtX+u/6UcSYmfzWUU4EhXWBsQSjJSgTxrNXDSC4A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":427463},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"d00d22d8de41434c86b02ac775b4bf0ac2947819","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @2security/lunar-date-picker-example","prepare":"bob build","publish":"npm publish --access public","release":"release-it --only-version","nitrogen":"nitrogen","typecheck":"tsc"},"_npmUser":{"name":"duongnguyen17","email":"duongthptnt@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"rules":{"type-enum":[2,"always",["build","chore","ci","docs","feat","fix","perf","refactor","release","revert","style","test"]],"type-empty":[0,"always"],"subject-case":[0,"always"],"subject-empty":[0,"always"],"header-max-length":[2,"always",200],"subject-full-stop":[0,"always"],"body-max-line-length":[0,"always",100],"footer-max-line-length":[0,"always",100]},"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/duongnguyen17/react-native-lunar-date-picker.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.2","description":"A powerful React Native lunar date picker with timezone support, lazy loading, and native performance built on Nitro Modules","directories":{},"_nodeVersion":"22.15.0","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.11.0","devDependencies":{"jest":"^29.7.0","react":"19.2.0","turbo":"^2.5.6","eslint":"^9.35.0","del-cli":"^6.0.0","lefthook":"^2.0.3","nitrogen":"^0.35.2","prettier":"^2.8.8","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.2.0","react-native":"0.83.2","@eslint/compat":"^1.3.2","@eslint/eslintrc":"^3.3.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.18","@react-native/babel-preset":"0.83.2","react-native-nitro-modules":"^0.35.2","@react-native/eslint-config":"0.83.2","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":"*","react-native":"*","react-native-nitro-modules":"^0.35.2"},"_npmOperationalInternal":{"tmp":"tmp/lunar-date-picker_1.0.0_1777968078997_0.23795342574249756","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["custom",{"clean":"nitrogen/","script":"nitrogen"}],["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"nitro-module","tools":["eslint","jest","lefthook","release-it"],"version":"0.57.2","languages":"kotlin-swift"}},"1.0.1":{"name":"@2security/lunar-date-picker","version":"1.0.1","keywords":["react-native","lunar-calendar","date-picker","nitro-modules","timezone","lazy-loading","performance","vietnamese-calendar","ios","android","2security"],"author":{"url":"https://github.com/duongnguyen17","name":"2Security","email":"duongthptnt@gmail.com"},"license":"MIT","_id":"@2security/lunar-date-picker@1.0.1","maintainers":[{"name":"duongnguyen17","email":"duongthptnt@gmail.com"}],"homepage":"https://github.com/duongnguyen17/react-native-lunar-date-picker#readme","bugs":{"url":"https://github.com/duongnguyen17/react-native-lunar-date-picker/issues"},"dist":{"shasum":"e87d7a8f486a532d67ab9c918f5588c939d3017d","tarball":"https://registry.npmjs.org/@2security/lunar-date-picker/-/lunar-date-picker-1.0.1.tgz","fileCount":138,"integrity":"sha512-NQPOpUw4VEAToKKLh3PsgXuvTCIb9bMJ/ly4SF1Xp8N3kCZkuPmUTp7A9zTMgoHGNuKKKkTiWqjD7VYxuUWVVg==","signatures":[{"sig":"MEQCIEN3e6c3kVUM0d5QOVQ2ykKxQOJSiwp0zVCxWaqdBTJxAiBA6z2f8deR1+tDgjQ1vcNsxVGTyMDOM4Zlcm8hkuHFNg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37394468},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"d00d22d8de41434c86b02ac775b4bf0ac2947819","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @2security/lunar-date-picker-example","prepare":"bob build","publish":"npm publish --access public","release":"release-it --only-version","nitrogen":"nitrogen","typecheck":"tsc"},"_npmUser":{"name":"duongnguyen17","email":"duongthptnt@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"rules":{"type-enum":[2,"always",["build","chore","ci","docs","feat","fix","perf","refactor","release","revert","style","test"]],"type-empty":[0,"always"],"subject-case":[0,"always"],"subject-empty":[0,"always"],"header-max-length":[2,"always",200],"subject-full-stop":[0,"always"],"body-max-line-length":[0,"always",100],"footer-max-line-length":[0,"always",100]},"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/duongnguyen17/react-native-lunar-date-picker.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.2","description":"A powerful React Native lunar date picker with timezone support, lazy loading, and native performance built on Nitro Modules","directories":{},"_nodeVersion":"22.15.0","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.11.0","devDependencies":{"jest":"^29.7.0","react":"19.2.0","turbo":"^2.5.6","eslint":"^9.35.0","del-cli":"^6.0.0","lefthook":"^2.0.3","nitrogen":"^0.35.2","prettier":"^2.8.8","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.2.0","react-native":"0.83.2","@eslint/compat":"^1.3.2","@eslint/eslintrc":"^3.3.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.18","@react-native/babel-preset":"0.83.2","react-native-nitro-modules":"^0.35.2","@react-native/eslint-config":"0.83.2","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":"*","react-native":"*","react-native-nitro-modules":"^0.35.2"},"_npmOperationalInternal":{"tmp":"tmp/lunar-date-picker_1.0.1_1777968327783_0.27208844197210946","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["custom",{"clean":"nitrogen/","script":"nitrogen"}],["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"nitro-module","tools":["eslint","jest","lefthook","release-it"],"version":"0.57.2","languages":"kotlin-swift"}},"1.0.2":{"name":"@2security/lunar-date-picker","version":"1.0.2","keywords":["react-native","lunar-calendar","date-picker","nitro-modules","timezone","lazy-loading","performance","vietnamese-calendar","ios","android","2security"],"author":{"url":"https://github.com/duongnguyen17","name":"2Security","email":"duongthptnt@gmail.com"},"license":"MIT","_id":"@2security/lunar-date-picker@1.0.2","maintainers":[{"name":"duongnguyen17","email":"duongthptnt@gmail.com"}],"homepage":"https://github.com/duongnguyen17/react-native-lunar-date-picker#readme","bugs":{"url":"https://github.com/duongnguyen17/react-native-lunar-date-picker/issues"},"dist":{"shasum":"02aeeadf9960a6c118b09e205851154011108b75","tarball":"https://registry.npmjs.org/@2security/lunar-date-picker/-/lunar-date-picker-1.0.2.tgz","fileCount":138,"integrity":"sha512-CKGEA36eMfdLE8gVrIzt40lpc9lwS7rdPmdrG9nB3rWzkgalboa/J9MP+87/f1u36Qc4/2m7ojOLgNV78BFTBw==","signatures":[{"sig":"MEQCICo49m6kMNqZGo6UDEbjZHympAWDaraK+yAX5Mdxd3AnAiBgzYeRb8uhcTG37J/iukJXAnAh0h1w3m3QViek1CR+vw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37395220},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"1d645c7592de550d9fb3420c0ca7b25a1b917be6","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @2security/lunar-date-picker-example","prepare":"bob build","publish":"npm publish --access public","release":"release-it --only-version","nitrogen":"nitrogen","typecheck":"tsc"},"_npmUser":{"name":"duongnguyen17","email":"duongthptnt@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"rules":{"type-enum":[2,"always",["build","chore","ci","docs","feat","fix","perf","refactor","release","revert","style","test"]],"type-empty":[0,"always"],"subject-case":[0,"always"],"subject-empty":[0,"always"],"header-max-length":[2,"always",200],"subject-full-stop":[0,"always"],"body-max-line-length":[0,"always",100],"footer-max-line-length":[0,"always",100]},"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/duongnguyen17/react-native-lunar-date-picker.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.2","description":"A powerful React Native lunar date picker with timezone support, lazy loading, and native performance built on Nitro Modules","directories":{},"_nodeVersion":"22.15.0","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.11.0","devDependencies":{"jest":"^29.7.0","react":"19.2.0","turbo":"^2.5.6","eslint":"^9.35.0","del-cli":"^6.0.0","lefthook":"^2.0.3","nitrogen":"^0.35.2","prettier":"^2.8.8","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.2.0","react-native":"0.83.2","@eslint/compat":"^1.3.2","@eslint/eslintrc":"^3.3.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.18","@react-native/babel-preset":"0.83.2","react-native-nitro-modules":"^0.35.2","@react-native/eslint-config":"0.83.2","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":"*","react-native":"*","react-native-nitro-modules":"^0.35.2"},"_npmOperationalInternal":{"tmp":"tmp/lunar-date-picker_1.0.2_1778568785270_0.20626076979734198","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["custom",{"clean":"nitrogen/","script":"nitrogen"}],["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"nitro-module","tools":["eslint","jest","lefthook","release-it"],"version":"0.57.2","languages":"kotlin-swift"}},"1.0.3":{"name":"@2security/lunar-date-picker","version":"1.0.3","keywords":["react-native","lunar-calendar","date-picker","nitro-modules","timezone","lazy-loading","performance","vietnamese-calendar","ios","android","2security"],"author":{"url":"https://github.com/duongnguyen17","name":"2Security","email":"duongthptnt@gmail.com"},"license":"MIT","_id":"@2security/lunar-date-picker@1.0.3","maintainers":[{"name":"duongnguyen17","email":"duongthptnt@gmail.com"}],"homepage":"https://github.com/duongnguyen17/react-native-lunar-date-picker#readme","bugs":{"url":"https://github.com/duongnguyen17/react-native-lunar-date-picker/issues"},"dist":{"shasum":"ac42699689c5c7f68bb6a92ecf2f390c655ac937","tarball":"https://registry.npmjs.org/@2security/lunar-date-picker/-/lunar-date-picker-1.0.3.tgz","fileCount":138,"integrity":"sha512-GHnT8/Q4A2/B5Hmc9b3X+4eY1dEBH23qtd6IiIWXtMdmHNdUXxqD4ISlL+vZazYzAhGCQcYoTU3lIYnYmTTeXA==","signatures":[{"sig":"MEUCIBjzKxK8zCeTIjyhtDIOC/92y5WDSzuKrf0T7FEOceJfAiEAroo0hG10HiJ8iQZO/mQQjMKVdleR9LRui/Kmgu2btJI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37395153},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"851f9b08c3eddc3be8f2315492f5f8e6bc48829f","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @2security/lunar-date-picker-example","prepare":"bob build","publish":"npm publish --access public","release":"release-it --only-version","nitrogen":"nitrogen","typecheck":"tsc"},"_npmUser":{"name":"duongnguyen17","email":"duongthptnt@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"rules":{"type-enum":[2,"always",["build","chore","ci","docs","feat","fix","perf","refactor","release","revert","style","test"]],"type-empty":[0,"always"],"subject-case":[0,"always"],"subject-empty":[0,"always"],"header-max-length":[2,"always",200],"subject-full-stop":[0,"always"],"body-max-line-length":[0,"always",100],"footer-max-line-length":[0,"always",100]},"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/duongnguyen17/react-native-lunar-date-picker.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.2","description":"A powerful React Native lunar date picker with timezone support, lazy loading, and native performance built on Nitro Modules","directories":{},"_nodeVersion":"22.15.0","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.11.0","devDependencies":{"jest":"^29.7.0","react":"19.2.0","turbo":"^2.5.6","eslint":"^9.35.0","del-cli":"^6.0.0","lefthook":"^2.0.3","nitrogen":"^0.35.2","prettier":"^2.8.8","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.2.0","react-native":"0.83.2","@eslint/compat":"^1.3.2","@eslint/eslintrc":"^3.3.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.18","@react-native/babel-preset":"0.83.2","react-native-nitro-modules":"^0.35.2","@react-native/eslint-config":"0.83.2","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":"*","react-native":"*","react-native-nitro-modules":"^0.35.2"},"_npmOperationalInternal":{"tmp":"tmp/lunar-date-picker_1.0.3_1778570281087_0.698703874534343","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["custom",{"clean":"nitrogen/","script":"nitrogen"}],["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"nitro-module","tools":["eslint","jest","lefthook","release-it"],"version":"0.57.2","languages":"kotlin-swift"}},"1.1.0":{"name":"@2security/lunar-date-picker","version":"1.1.0","keywords":["react-native","lunar-calendar","date-picker","nitro-modules","timezone","lazy-loading","performance","vietnamese-calendar","ios","android","2security"],"author":{"url":"https://github.com/duongnguyen17","name":"2Security","email":"duongthptnt@gmail.com"},"license":"MIT","_id":"@2security/lunar-date-picker@1.1.0","maintainers":[{"name":"duongnguyen17","email":"duongthptnt@gmail.com"}],"homepage":"https://github.com/duongnguyen17/react-native-lunar-date-picker#readme","bugs":{"url":"https://github.com/duongnguyen17/react-native-lunar-date-picker/issues"},"dist":{"shasum":"db31b03fe181f8b755d70148c33f6b5e86cca2d5","tarball":"https://registry.npmjs.org/@2security/lunar-date-picker/-/lunar-date-picker-1.1.0.tgz","fileCount":138,"integrity":"sha512-TEHQbGQaiS8WACxZkN81iPaww5gYQ5XHP1UXJq0y3ffJJPqGm0sO9PwtEEyzQ7ZTYA1FRdQYEN9m+hyiWsY5Cw==","signatures":[{"sig":"MEUCIHun1hNmtT4r9Mwest0sioU32Nz7qlURu5fCrbvjBYMqAiEAvEgfyV5tYbA7oCg0AfXJBqmXbbT72YdONAop1gowijw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37396602},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"26bebc227fedeca0e447446b51a026e08d9ae1f8","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @2security/lunar-date-picker-example","prepare":"bob build","publish":"npm publish --access public","release":"release-it --only-version","nitrogen":"nitrogen","typecheck":"tsc"},"_npmUser":{"name":"duongnguyen17","email":"duongthptnt@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"rules":{"type-enum":[2,"always",["build","chore","ci","docs","feat","fix","perf","refactor","release","revert","style","test"]],"type-empty":[0,"always"],"subject-case":[0,"always"],"subject-empty":[0,"always"],"header-max-length":[2,"always",200],"subject-full-stop":[0,"always"],"body-max-line-length":[0,"always",100],"footer-max-line-length":[0,"always",100]},"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/duongnguyen17/react-native-lunar-date-picker.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.2","description":"A powerful React Native lunar date picker with timezone support, lazy loading, and native performance built on Nitro Modules","directories":{},"_nodeVersion":"22.15.0","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.11.0","devDependencies":{"jest":"^29.7.0","react":"19.2.0","turbo":"^2.5.6","eslint":"^9.35.0","del-cli":"^6.0.0","lefthook":"^2.0.3","nitrogen":"^0.35.2","prettier":"^2.8.8","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.2.0","react-native":"0.83.2","@eslint/compat":"^1.3.2","@eslint/eslintrc":"^3.3.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.18","@react-native/babel-preset":"0.83.2","react-native-nitro-modules":"^0.35.2","@react-native/eslint-config":"0.83.2","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":"*","react-native":"*","react-native-nitro-modules":"^0.35.2"},"_npmOperationalInternal":{"tmp":"tmp/lunar-date-picker_1.1.0_1780895822744_0.581262366686057","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["custom",{"clean":"nitrogen/","script":"nitrogen"}],["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"nitro-module","tools":["eslint","jest","lefthook","release-it"],"version":"0.57.2","languages":"kotlin-swift"}},"1.1.1":{"name":"@2security/lunar-date-picker","version":"1.1.1","keywords":["react-native","lunar-calendar","date-picker","nitro-modules","timezone","lazy-loading","performance","vietnamese-calendar","ios","android","2security"],"author":{"url":"https://github.com/duongnguyen17","name":"2Security","email":"duongthptnt@gmail.com"},"license":"MIT","_id":"@2security/lunar-date-picker@1.1.1","maintainers":[{"name":"duongnguyen17","email":"duongthptnt@gmail.com"}],"homepage":"https://github.com/duongnguyen17/react-native-lunar-date-picker#readme","bugs":{"url":"https://github.com/duongnguyen17/react-native-lunar-date-picker/issues"},"dist":{"shasum":"c8af082a46da041a583d4e775d5e93d26d013d09","tarball":"https://registry.npmjs.org/@2security/lunar-date-picker/-/lunar-date-picker-1.1.1.tgz","fileCount":138,"integrity":"sha512-hSBTxQOITeTmd36xYc0aGhhsV9beayhfikast1h5NVKhk9ZX0a8EOQhn1x5st7fJqLGz4kWx2ZvD/kh8JK/53w==","signatures":[{"sig":"MEYCIQCLUSlRRvryCQisAciQ5y0XWonahUYSgpVzoTbdyqvVogIhAPcihT1j9yCCHAJ89cyBWXugFEALNbFbE0oAEaY/qqxE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37397736},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"fe08c7b05c53b866959b44f161831f111f807791","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @2security/lunar-date-picker-example","prepare":"bob build","publish":"npm publish --access public","release":"release-it --only-version","nitrogen":"nitrogen","typecheck":"tsc"},"_npmUser":{"name":"duongnguyen17","email":"duongthptnt@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"rules":{"type-enum":[2,"always",["build","chore","ci","docs","feat","fix","perf","refactor","release","revert","style","test"]],"type-empty":[0,"always"],"subject-case":[0,"always"],"subject-empty":[0,"always"],"header-max-length":[2,"always",200],"subject-full-stop":[0,"always"],"body-max-line-length":[0,"always",100],"footer-max-line-length":[0,"always",100]},"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/duongnguyen17/react-native-lunar-date-picker.git","type":"git"},"workspaces":["example"],"_npmVersion":"10.9.2","description":"A powerful React Native lunar date picker with timezone support, lazy loading, and native performance built on Nitro Modules","directories":{},"_nodeVersion":"22.15.0","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.11.0","devDependencies":{"jest":"^29.7.0","react":"19.2.0","turbo":"^2.5.6","eslint":"^9.35.0","del-cli":"^6.0.0","lefthook":"^2.0.3","nitrogen":"^0.35.2","prettier":"^2.8.8","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.2.0","react-native":"0.83.2","@eslint/compat":"^1.3.2","@eslint/eslintrc":"^3.3.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.18","@react-native/babel-preset":"0.83.2","react-native-nitro-modules":"^0.35.2","@react-native/eslint-config":"0.83.2","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":"*","react-native":"*","react-native-nitro-modules":"^0.35.2"},"_npmOperationalInternal":{"tmp":"tmp/lunar-date-picker_1.1.1_1780903654964_0.16062694000616395","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["custom",{"clean":"nitrogen/","script":"nitrogen"}],["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"nitro-module","tools":["eslint","jest","lefthook","release-it"],"version":"0.57.2","languages":"kotlin-swift"}},"1.1.2":{"name":"@2security/lunar-date-picker","version":"1.1.2","keywords":["react-native","lunar-calendar","date-picker","nitro-modules","timezone","lazy-loading","performance","vietnamese-calendar","ios","android","2security"],"author":{"url":"https://github.com/duongnguyen17","name":"2Security","email":"duongthptnt@gmail.com"},"license":"MIT","_id":"@2security/lunar-date-picker@1.1.2","maintainers":[{"name":"duongnguyen17","email":"duongthptnt@gmail.com"}],"homepage":"https://github.com/duongnguyen17/react-native-lunar-date-picker#readme","bugs":{"url":"https://github.com/duongnguyen17/react-native-lunar-date-picker/issues"},"dist":{"shasum":"6d665ce7acfdd97e2c8e6a21ad295fecfa75fe9a","tarball":"https://registry.npmjs.org/@2security/lunar-date-picker/-/lunar-date-picker-1.1.2.tgz","fileCount":138,"integrity":"sha512-u9/+X+HeClFwP9vogTRQQ/bvuZxSHWmN14d9rNI04T2rIcrRW75f6BaKiaqzjZogiG6lsQ4o0T0kAna9L2U7PQ==","signatures":[{"sig":"MEQCIE2wN4j2iApjmsBGRP/YUMuxafAn3AWQG43yOlcIKNpHAiBbcgGbsmJ8t/hUMXDmU3RQOBFTwNGEmthi4TwDVAw4OA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37399856},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"077e3d9931683d2a9bd9f2f437cc59d2cc870e9a","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @2security/lunar-date-picker-example","prepare":"bob build","publish":"npm publish --access public","release":"release-it --only-version","nitrogen":"nitrogen","typecheck":"tsc"},"_npmUser":{"name":"duongnguyen17","email":"duongthptnt@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"rules":{"type-enum":[2,"always",["build","chore","ci","docs","feat","fix","perf","refactor","release","revert","style","test"]],"type-empty":[0,"always"],"subject-case":[0,"always"],"subject-empty":[0,"always"],"header-max-length":[2,"always",200],"subject-full-stop":[0,"always"],"body-max-line-length":[0,"always",100],"footer-max-line-length":[0,"always",100]},"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/duongnguyen17/react-native-lunar-date-picker.git","type":"git"},"workspaces":["example"],"_npmVersion":"11.11.0","description":"A powerful React Native lunar date picker with timezone support, lazy loading, and native performance built on Nitro Modules","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.11.0","devDependencies":{"jest":"^29.7.0","react":"19.2.0","turbo":"^2.5.6","eslint":"^9.35.0","del-cli":"^6.0.0","lefthook":"^2.0.3","nitrogen":"^0.35.2","prettier":"^2.8.8","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.2.0","react-native":"0.83.2","@eslint/compat":"^1.3.2","@eslint/eslintrc":"^3.3.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.18","@react-native/babel-preset":"0.83.2","react-native-nitro-modules":"^0.35.2","@react-native/eslint-config":"0.83.2","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":"*","react-native":"*","react-native-nitro-modules":"^0.35.2"},"_npmOperationalInternal":{"tmp":"tmp/lunar-date-picker_1.1.2_1782616716453_0.2657022053026632","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["custom",{"clean":"nitrogen/","script":"nitrogen"}],["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"nitro-module","tools":["eslint","jest","lefthook","release-it"],"version":"0.57.2","languages":"kotlin-swift"}},"1.1.3":{"name":"@2security/lunar-date-picker","version":"1.1.3","keywords":["react-native","lunar-calendar","date-picker","nitro-modules","timezone","lazy-loading","performance","vietnamese-calendar","ios","android","2security"],"author":{"url":"https://github.com/duongnguyen17","name":"2Security","email":"duongthptnt@gmail.com"},"license":"MIT","_id":"@2security/lunar-date-picker@1.1.3","maintainers":[{"name":"duongnguyen17","email":"duongthptnt@gmail.com"}],"homepage":"https://github.com/duongnguyen17/react-native-lunar-date-picker#readme","bugs":{"url":"https://github.com/duongnguyen17/react-native-lunar-date-picker/issues"},"dist":{"shasum":"839add753a488825726a2b437066506e0ee5e44b","tarball":"https://registry.npmjs.org/@2security/lunar-date-picker/-/lunar-date-picker-1.1.3.tgz","fileCount":138,"integrity":"sha512-FJFTtP2crsuM+yRUaq2klMJecV9Okc4tttjxMKQujbPqjOFH4SD2adVdudhSlcG7KGZEh9O4XH5YOlNR2bfwBQ==","signatures":[{"sig":"MEYCIQDaCLADkGkPFCCtQYlL59649cmyyvoWSn1pq1LepVYkTQIhANDrfOHjECYa7kYnlwBlUvz3A4CFiVZ//eLieQdNn/X7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37400441},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"types":"./lib/typescript/src/index.d.ts","source":"./src/index.tsx","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"1baed5c7241e98e261fd920842265f112950baee","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","example":"yarn workspace @2security/lunar-date-picker-example","prepare":"bob build","publish":"npm publish --access public","release":"release-it --only-version","nitrogen":"nitrogen","typecheck":"tsc"},"_npmUser":{"name":"duongnguyen17","email":"duongthptnt@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"rules":{"type-enum":[2,"always",["build","chore","ci","docs","feat","fix","perf","refactor","release","revert","style","test"]],"type-empty":[0,"always"],"subject-case":[0,"always"],"subject-empty":[0,"always"],"header-max-length":[2,"always",200],"subject-full-stop":[0,"always"],"body-max-line-length":[0,"always",100],"footer-max-line-length":[0,"always",100]},"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/duongnguyen17/react-native-lunar-date-picker.git","type":"git"},"workspaces":["example"],"_npmVersion":"11.11.0","description":"A powerful React Native lunar date picker with timezone support, lazy loading, and native performance built on Nitro Modules","directories":{},"_nodeVersion":"22.21.1","publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@4.11.0","devDependencies":{"jest":"^29.7.0","react":"19.2.0","turbo":"^2.5.6","eslint":"^9.35.0","del-cli":"^6.0.0","lefthook":"^2.0.3","nitrogen":"^0.35.2","prettier":"^2.8.8","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.2.0","react-native":"0.83.2","@eslint/compat":"^1.3.2","@eslint/eslintrc":"^3.3.1","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.18","@react-native/babel-preset":"0.83.2","react-native-nitro-modules":"^0.35.2","@react-native/eslint-config":"0.83.2","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":"*","react-native":"*","react-native-nitro-modules":"^0.35.2"},"_npmOperationalInternal":{"tmp":"tmp/lunar-date-picker_1.1.3_1782620376962_0.5291443956091375","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["custom",{"clean":"nitrogen/","script":"nitrogen"}],["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"nitro-module","tools":["eslint","jest","lefthook","release-it"],"version":"0.57.2","languages":"kotlin-swift"}},"1.2.0":{"name":"@2security/lunar-date-picker","version":"1.2.0","description":"A powerful React Native lunar date picker with timezone support, lazy loading, and native performance built on Nitro Modules","main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"source":"./src/index.tsx","types":"./lib/typescript/src/index.d.ts","default":"./lib/module/index.js"},"./package.json":"./package.json"},"scripts":{"example":"yarn workspace @2security/lunar-date-picker-example","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","prepare":"bob build","nitrogen":"nitrogen","typecheck":"tsc","lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","release":"release-it --only-version","publish":"npm publish --access public"},"keywords":["react-native","lunar-calendar","date-picker","nitro-modules","timezone","lazy-loading","performance","vietnamese-calendar","ios","android","2security"],"repository":{"type":"git","url":"git+https://github.com/duongnguyen17/react-native-lunar-date-picker.git"},"author":{"name":"2Security","email":"duongthptnt@gmail.com","url":"https://github.com/duongnguyen17"},"license":"MIT","bugs":{"url":"https://github.com/duongnguyen17/react-native-lunar-date-picker/issues"},"homepage":"https://github.com/duongnguyen17/react-native-lunar-date-picker#readme","publishConfig":{"registry":"https://registry.npmjs.org/"},"devDependencies":{"@babel/core":"^7.29.7","@babel/eslint-parser":"^7.29.7","@commitlint/config-conventional":"^19.8.1","@eslint/compat":"^1.3.2","@eslint/eslintrc":"^3.3.1","@eslint/js":"^9.35.0","@react-native/babel-preset":"0.87.0","@react-native/eslint-config":"0.87.0","@release-it/conventional-changelog":"^10.0.1","@types/jest":"^29.5.14","@types/react":"^19.2.0","commitlint":"^19.8.1","del-cli":"^6.0.0","eslint":"^9.35.0","eslint-config-prettier":"^10.1.8","eslint-plugin-ft-flow":"^2.0.3","eslint-plugin-prettier":"^5.5.4","jest":"^29.7.0","lefthook":"^2.0.3","nitrogen":"^0.36.5","prettier":"^2.8.8","react":"19.2.8","react-native":"0.87.0","react-native-builder-bob":"^0.43.0","react-native-nitro-modules":"^0.36.5","release-it":"^19.0.4","turbo":"^2.5.6","typescript":"^5.9.2"},"peerDependencies":{"react":"*","react-native":"*","react-native-nitro-modules":"^0.36.5"},"workspaces":["example"],"packageManager":"yarn@4.11.0","react-native-builder-bob":{"source":"src","output":"lib","targets":[["custom",{"script":"nitrogen","clean":"nitrogen/"}],["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":2,"trailingComma":"es5","useTabs":false},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"commitlint":{"extends":["@commitlint/config-conventional"],"rules":{"header-max-length":[2,"always",200],"body-max-line-length":[0,"always",100],"footer-max-line-length":[0,"always",100],"subject-case":[0,"always"],"subject-full-stop":[0,"always"],"type-empty":[0,"always"],"subject-empty":[0,"always"],"type-enum":[2,"always",["build","chore","ci","docs","feat","fix","perf","refactor","release","revert","style","test"]]}},"release-it":{"git":{"commitMessage":"chore: release ${version}","tagName":"v${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"create-react-native-library":{"type":"nitro-module","languages":"kotlin-swift","tools":["eslint","jest","lefthook","release-it"],"version":"0.57.2"},"_id":"@2security/lunar-date-picker@1.2.0","gitHead":"c53137955951335a82e26103ee3cfb0c1a4c5957","_nodeVersion":"22.15.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-C2uXfGu5IlG/NWNEbFst6VOS5S6puTrnCvMJluxdoKy7LBcoMtVhnBiIh941kJbrBug1fLzmsSPi6wSq+7bk8w==","shasum":"cc448f97c2f1698e7acd03dd65175f34d9beada7","tarball":"https://registry.npmjs.org/@2security/lunar-date-picker/-/lunar-date-picker-1.2.0.tgz","fileCount":138,"unpackedSize":37410832,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCOJEfn0P4Nyu8BSpIxLs33qt4LPvX4S7/GZO0evlR6NgIgTfvngcp+8rwWW2Uhq7QPBO1U1ku71of13PQNI55w9NU="}]},"_npmUser":{"name":"duongnguyen17","email":"duongthptnt@gmail.com"},"directories":{},"maintainers":[{"name":"duongnguyen17","email":"duongthptnt@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lunar-date-picker_1.2.0_1786679978306_0.11923429412562103"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-05T08:01:18.715Z","modified":"2026-08-14T03:59:39.092Z","1.0.0":"2026-05-05T08:01:19.237Z","1.0.1":"2026-05-05T08:05:28.852Z","1.0.2":"2026-05-12T06:53:06.368Z","1.0.3":"2026-05-12T07:18:02.642Z","1.1.0":"2026-06-08T05:17:03.473Z","1.1.1":"2026-06-08T07:27:35.806Z","1.1.2":"2026-06-28T03:18:37.193Z","1.1.3":"2026-06-28T04:19:37.525Z","1.2.0":"2026-08-14T03:59:38.889Z"},"bugs":{"url":"https://github.com/duongnguyen17/react-native-lunar-date-picker/issues"},"author":{"name":"2Security","email":"duongthptnt@gmail.com","url":"https://github.com/duongnguyen17"},"license":"MIT","homepage":"https://github.com/duongnguyen17/react-native-lunar-date-picker#readme","keywords":["react-native","lunar-calendar","date-picker","nitro-modules","timezone","lazy-loading","performance","vietnamese-calendar","ios","android","2security"],"repository":{"type":"git","url":"git+https://github.com/duongnguyen17/react-native-lunar-date-picker.git"},"description":"A powerful React Native lunar date picker with timezone support, lazy loading, and native performance built on Nitro Modules","maintainers":[{"name":"duongnguyen17","email":"duongthptnt@gmail.com"}],"readme":"# @2security/lunar-date-picker\n\n[![npm version](https://badge.fury.io/js/@2security%2Flunar-date-picker.svg)](https://www.npmjs.com/package/@2security/lunar-date-picker)\n[![npm downloads](https://img.shields.io/npm/dm/@2security/lunar-date-picker.svg)](https://www.npmjs.com/package/@2security/lunar-date-picker)\n[![MIT License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\nA powerful and feature-rich React Native lunar date picker component built with Nitro Modules, providing native performance for both iOS and Android platforms.\n\n## 📱 Preview\n\n| iOS Preview | Android Preview |\n| :---: | :---: |\n| <img src=\"https://raw.githubusercontent.com/duongnguyen17/react-native-lunar-date-picker/main/assets/ios.gif\" width=\"300\" /> | <img src=\"https://raw.githubusercontent.com/duongnguyen17/react-native-lunar-date-picker/main/assets/android.gif\" width=\"300\" /> |\n\n## ✨ Features\n\n- 🌙 **Lunar calendar support** - Display both solar and lunar dates with proper timezone handling\n- 📱 **Cross-platform** - Works seamlessly on iOS and Android with identical behavior\n- ⚡ **High performance** - Built with Nitro Modules for native performance\n- 🚀 **Optimized Android rendering** - Uses high-performance [kizitonwose Calendar](https://github.com/kizitonwose/Calendar) library for 60% faster scrolling\n- 📏 **Fluid layout scaling** - Automatically scales typography and UI elements for a consistent look across all phone sizes (390px to 430px)\n- 🖥️ **Native tablet support** - Beautiful centered Form Sheet presentation on iPads and Android tablets\n- 🎨 **Customizable themes** - Light/dark themes with full customization\n- 🌍 **Multi-language support** - Vietnamese, English, and extensible for other languages\n- 📅 **Flexible date selection** - Single date or date range selection\n- ⏰ **Timezone aware** - Proper timezone support for accurate date handling across regions\n- 🚀 **Optimized rendering** - Hash-based change detection and partial updates for better performance\n\n> **Note:** This calendar is designed specifically for flight booking and scheduling use cases. As such, it is intentionally not an \"infinite\" calendar. It only renders a limited number of years (configurable via `yearRangeOffset`) to optimize performance and memory usage for booking scenarios.\n\n## 📦 Installation\n\n```sh\nnpm install @2security/lunar-date-picker react-native-nitro-modules\n# or\nyarn add @2security/lunar-date-picker react-native-nitro-modules\n```\n\n> **Note:** `react-native-nitro-modules` is required as this library relies on [Nitro Modules](https://nitro.margelo.com/) for native performance.\n\n## 📱 Expo Usage\n\nThis library uses native code and **cannot** be used with Expo Go. You must use [Development Builds](https://docs.expo.dev/develop/development-builds/introduction/).\n\n### 1. Installation\n\n```sh\nnpx expo install @2security/lunar-date-picker react-native-nitro-modules\n```\n\n### 2. Run with Development Build\n\n```sh\nnpx expo run:ios\n# or\nnpx expo run:android\n```\n\n## 🚀 Quick Start\n\n### 1. Configure the picker (Required)\n\n```javascript\nimport { configure } from '@2security/lunar-date-picker';\n\nconst pickerConfig = {\n  languages: {\n    vi: {\n      weekdayNames: ['T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'CN'],\n      locale: 'vi-VN',\n    },\n    en: {\n      weekdayNames: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],\n      locale: 'en-US',\n    },\n  },\n  themes: {\n    light: {\n      backgroundColor: '#ffffff',\n      titleColor: '#000000',\n      dateLabelColor: '#030712',\n      todayLabelColor: '#3B82F6',\n      lunarDateLabelColor: '#6B7280',\n      selectedTextColor: '#FFFFFF',\n      weekendLabelColor: '#E27B00',\n      specialDayLabelColor: '#ff3300',\n      monthLabelColor: '#030712',\n      secondColor: '#3B82F6',\n      weekViewBackgroundColor: '#F3F4F6',\n      selectedBackgroundColor: '#3B82F6',\n      rangeBackgroundColor: '#EFF6FF',\n      submitButtonColor: '#3B82F6',\n      noticeLabelColor: '#004085',\n      noticeBackgroundColor: '#cce5ff',\n    },\n  },\n  yearRangeOffset: 2,\n  timeZoneOffset: 7, // GMT+7 for Vietnam\n  showSubmitButton: true,\n};\n\n// Configure once in your app initialization\nconfigure(pickerConfig);\n```\n\n### 2. Basic usage\n\n```javascript\nimport { pickDate } from '@2security/lunar-date-picker';\n\nconst openDatePicker = () => {\n  pickDate({\n    theme: 'light',\n    language: 'vi',\n    title: 'Chọn ngày',\n    mode: 'range', // or 'single'\n    minimumDate: '01/01/2024', // Optional: minimum selectable date (DD/MM/YYYY)\n    maximumDate: '31/12/2024', // Optional: maximum selectable date (DD/MM/YYYY)\n    notice: 'Lưu ý: Giá vé có thể thay đổi tùy thời điểm.', // Optional banner text\n    onMounted: (start, end) => {\n      console.log('Calendar visible range:', start, 'to', end);\n    },\n    onSelectFromDate: (start, end) => {\n      console.log('Selected from-date. New range:', start, 'to', end);\n    },\n    onDone: (result) => {\n      console.log('Selected range:', result);\n      // result: LDP_Range = { from: \"15/01/2024\", to?: \"20/01/2024\" }\n    },\n  });\n};\n```\n\n## 📚 API Reference\n\n### Functions\n\n#### `configure(config: LDP_ConfigParams): void`\n\nConfigure the picker with themes, languages, and global settings. **Must be called before using the picker.**\n\n#### `pickDate(params: LDP_PresentParams): void`\n\nDisplay the date picker with specified configuration.\n\n#### `updatePrices(params: LDP_PriceUpdateParams): void`\n\nUpdate the prices displayed on the calendar. This can be called while the picker is open to update the UI immediately (e.g., when lazy-loading prices for new months).\n\n#### `updateMaximumDate(maximumDate: string): void`\n\nUpdate the maximum selectable date dynamically while the calendar is open. Useful in `onSelectFromDate` to restrict the selectable range (e.g., maximum 30 days from the selected `from` date).\n\n### Types\n\n\n#### `LDP_PriceUpdateParams`\n\n```typescript\ninterface LDP_PriceUpdateParams {\n  prices: LDP_PriceData[]; // Array of price data objects\n}\n```\n\n#### `LDP_PriceData`\n\n```typescript\ninterface LDP_PriceData {\n  date: string; // Date in DD/MM/YYYY format\n  price: number; // Price value (in thousands, e.g., 1500 for 1.5M)\n  isCheapest?: boolean; // Highlight as cheapest price\n}\n```\n\n#### `LDP_PresentParams`\n\n```typescript\ninterface LDP_PresentParams {\n  theme: string; // Theme key from configuration\n  language: string; // Language key from configuration\n  title: string; // Picker title\n  mode: LDP_Mode; // Selection mode ('range' | 'single')\n  onDone: (result: LDP_Range) => void; // Selection callback\n  minimumDate?: string; // Minimum selectable date (DD/MM/YYYY)\n  maximumDate?: string; // Maximum selectable date (DD/MM/YYYY)\n  initialValue?: LDP_Range; // Initial selected range\n  notice?: string; // Optional notice text to display below navigation bar\n  onMounted?: (startDate: string, endDate: string) => void; // Calendar mounted callback\n  onSelectFromDate?: (startDate: string, endDate: string) => void; // User selected from-date callback\n}\n```\n\n#### `LDP_Range`\n\n```typescript\ninterface LDP_Range {\n  from: string; // Start date in DD/MM/YYYY format\n  to?: string; // End date in DD/MM/YYYY format (optional for single mode)\n}\n```\n\n#### `LDP_ConfigParams`\n\n```typescript\ninterface LDP_ConfigParams {\n  themes: Record<string, LDP_CustomStyle>; // Theme configurations\n  languages: Record<string, LDP_CustomLanguage>; // Language configurations\n  yearRangeOffset: number; // Year range offset for calendar\n  timeZoneOffset: number; // Timezone offset (e.g., 7 for GMT+7)\n  showSubmitButton: boolean; // Show/hide submit button on header\n}\n```\n\n#### `LDP_CustomStyle`\n\n```typescript\ninterface LDP_CustomStyle {\n  titleColor: string; // Title text color (hex)\n  dateLabelColor: string; // Date label color (hex)\n  todayLabelColor: string; // Today label color (hex)\n  lunarDateLabelColor: string; // Lunar date label color (hex)\n  selectedTextColor: string; // Selected text color (hex)\n  weekendLabelColor: string; // Weekend label color (hex)\n  specialDayLabelColor: string; // Special day label color (hex)\n  monthLabelColor: string; // Month label color (hex)\n  secondColor: string; // Secondary color (hex)\n  backgroundColor: string; // Background color (hex)\n  weekViewBackgroundColor: string; // Week view background color (hex)\n  selectedBackgroundColor: string; // Selected background color (hex)\n  rangeBackgroundColor: string; // Range background color (hex)\n  submitButtonColor: string; // Submit button color (hex)\n  noticeLabelColor: string; // Notice banner text color (hex)\n  noticeBackgroundColor: string; // Notice banner background color (hex)\n}\n```\n\n#### `LDP_CustomLanguage`\n\n```typescript\ninterface LDP_CustomLanguage {\n  weekdayNames: string[]; // Array of weekday names (7 items)\n  locale: string; // Locale identifier (e.g., 'vi-VN')\n}\n```\n\n#### `LDP_Mode`\n\n```typescript\ntype LDP_Mode = 'range' | 'single';\n```\n\n## 🎯 Advanced Usage\n\n### Timezone Configuration\n\nThe picker properly handles timezones for accurate date operations and lunar calendar calculations:\n\n```javascript\nconfigure({\n  timeZoneOffset: 7, // GMT+7 for Vietnam\n  // All date formatting, lunar calculations will use this timezone\n});\n\n// Dates will be formatted according to the configured timezone\npickDate({\n  minimumDate: '01/01/2024', // DD/MM/YYYY interpreted in GMT+7\n  maximumDate: '31/12/2024', // DD/MM/YYYY interpreted in GMT+7\n  onDone: (result) => {\n    // result.from and result.to are in DD/MM/YYYY format using GMT+7\n    console.log('Selected:', result);\n  },\n});\n```\n\n### Lazy Loading Prices\n \n You can use `onMounted` and `onSelectFromDate` to implement efficient lazy loading for pricing data. Since the calendar only displays a specific range of years, these callbacks provide the full visible range once the picker is opened or when the user starts selecting a range.\n \n ```javascript\n import { pickDate, updatePrices } from '@2security/lunar-date-picker';\n \n const openLazyLoadingPicker = () => {\n   pickDate({\n     theme: 'light',\n     language: 'vi',\n     title: 'Chọn ngày',\n     mode: 'range',\n     onMounted: (startDate, endDate) => {\n       // Called when calendar is first opened\n       // Fetch prices for the entire visible range: startDate to endDate\n       fetchPrices(startDate, endDate).then(prices => {\n         updatePrices({ prices });\n       });\n     },\n     onSelectFromDate: (startDate, endDate) => {\n       // Called when user selects a 'from' date\n       // You can use this to refresh prices for the remaining range if needed\n       fetchPrices(startDate, endDate).then(prices => {\n         updatePrices({ prices });\n       });\n     },\n     onDone: (result) => {\n       console.log('Final selection:', result);\n     },\n   });\n };\n ```\n \n ### Performance Optimizations\n\nThe picker includes several performance improvements:\n\n**Android Optimizations:**\n\n- **High-performance calendar library**: Uses [kizitonwose Calendar](https://github.com/kizitonwose/Calendar) for 60% faster scrolling\n- **Optimized RecyclerView**: Hardware-accelerated rendering with better memory management\n- **Smooth range selection**: Streamlined selection logic inspired by Example4Fragment\n\n**Cross-platform Optimizations:**\n\n- **Timezone-aware caching**: Consistent date formatting and lunar calculations\n- **Fluid scaling & Tablet bounds**: Responsive typography on mobile and centered Dialogs/Form Sheets on tablets\n- **Memory leak prevention**: Proper cleanup of handlers, work items, and references\n- **LRU cache management**: Smart cache eviction prevents memory growth (iOS)\n- **Object reuse**: Calendar instances and formatters are reused to reduce allocations\n\n### Theme Customization\n\n```javascript\nconst customTheme = {\n  backgroundColor: '#ffffff',\n  titleColor: '#000000',\n  dateLabelColor: '#030712',\n  todayLabelColor: '#3B82F6',\n  lunarDateLabelColor: '#6B7280',\n  selectedTextColor: '#FFFFFF',\n  weekendLabelColor: '#E27B00',\n  specialDayLabelColor: '#ff3300',\n  rangeBackgroundColor: '#EFF6FF',\n  monthLabelColor: '#030712',\n  secondColor: '#3B82F6',\n  weekViewBackgroundColor: '#F3F4F6',\n  selectedBackgroundColor: '#3B82F6',\n  submitButtonColor: '#3B82F6',\n};\n\nconfigure({\n  themes: {\n    custom: customTheme,\n  },\n  // ... other config\n});\n```\n\n## 🏃‍♂️ Running the Example\n\nThe example app demonstrates all features including lazy loading, timezone handling, and performance optimizations:\n\n```sh\ncd example\nnpm install\n# iOS\nnpx react-native run-ios\n# Android\nnpx react-native run-android\n```\n\n### Example App Features\n\n- **Basic Usage**: Single and range date selection\n- **Timezone Demo**: See how timezone affects date formatting and lunar calculations\n\n## 🛠️ Development\n\n```sh\n# Install dependencies\nyarn install\n\n# Generate native code\nyarn nitrogen\n\n# Build the library\nyarn prepare\n\n# Run tests\nyarn test\n\n# Lint code\nyarn lint\n\n# Run example app\nyarn example ios\nyarn example android\n```\n\n## 🤝 Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) to learn how to contribute to the repository and development workflow.\n\n## 📋 Documentation\n\n- **[API Reference](README.md#-api-reference)** - Complete API documentation with examples\n- **[Contributing Guide](CONTRIBUTING.md)** - How to contribute to the project\n- **[Publishing Guide](PUBLISHING.md)** - Steps to publish new versions\n- **[Changelog](CHANGELOG.md)** - Version history and changes\n\n## 📄 License\n\nMIT © [2Security](https://github.com/duongnguyen17/react-native-lunar-date-picker)\n\n---\n\nBuilt with ❤️ by [2Security](https://github.com/duongnguyen17/react-native-lunar-date-picker) using [Nitro Modules](https://nitro.margelo.com/)\n","readmeFilename":"README.md"}