{"_id":"persian-calendar-suite","_rev":"20-1a16f6f775c7ee484e3a0621251d86d7","name":"persian-calendar-suite","dist-tags":{"latest":"1.5.6"},"versions":{"1.0.2":{"name":"persian-calendar-suite","version":"1.0.2","keywords":["persian","jalali","shamsi","datepicker","calendar","react","date-range-picker","datetime-picker","event-calendar","persian-calendar","jalali-calendar","shamsi-calendar","iran","farsi","nextjs","react-component"],"author":{"name":"BBBird1450","email":"BBBird1450@users.noreply.github.com"},"license":"MIT","_id":"persian-calendar-suite@1.0.2","maintainers":[{"name":"bbbird1450","email":"bigbadbird20@gmail.com"}],"homepage":"https://github.com/BBBird1450/persian-calendar-suite#readme","bugs":{"url":"https://github.com/BBBird1450/persian-calendar-suite/issues"},"dist":{"shasum":"593bdd9785be7dd90c880a5db246590371974433","tarball":"https://registry.npmjs.org/persian-calendar-suite/-/persian-calendar-suite-1.0.2.tgz","fileCount":7,"integrity":"sha512-ASoxmiqfoIyzMgdu3lt85udic01C+tsc2Z8wDZSQH4peNY64EdWavnNybJ3WliqTF/qP6vBqLs5sAmLEt+8spQ==","signatures":[{"sig":"MEQCIBFPX5Ntp5BWnCSXtu4SozikTRKfwmLjRLvtlXLUtE4yAiBCg4hTN8mkzy9+qDIQaNEzZehRwXKxWxcGyRdI4QAUIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":564131},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"976bc7f9dd67a7db8daee621911c24ec227ae61c","scripts":{"build":"rollup -c","prepublishOnly":"npm run build"},"_npmUser":{"name":"bbbird1450","email":"bigbadbird20@gmail.com"},"repository":{"url":"git+https://github.com/BBBird1450/persian-calendar-suite.git","type":"git"},"_npmVersion":"11.6.2","description":"Complete Persian (Jalali/Shamsi) calendar suite for React with datepicker, range picker, and event calendar","directories":{},"_nodeVersion":"22.21.0","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.9.6","@babel/core":"^7.23.7","@babel/preset-react":"^7.23.3","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/persian-calendar-suite_1.0.2_1765311599154_0.7045957160516314","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"persian-calendar-suite","version":"1.0.3","keywords":["persian","jalali","shamsi","datepicker","calendar","react","date-range-picker","datetime-picker","event-calendar","persian-calendar","jalali-calendar","shamsi-calendar","iran","farsi","nextjs","react-component"],"author":{"name":"BBBird1450","email":"BBBird1450@users.noreply.github.com"},"license":"MIT","_id":"persian-calendar-suite@1.0.3","maintainers":[{"name":"bbbird1450","email":"bigbadbird20@gmail.com"}],"homepage":"https://github.com/BBBird1450/persian-calendar-suite#readme","bugs":{"url":"https://github.com/BBBird1450/persian-calendar-suite/issues"},"dist":{"shasum":"0ece6e05ea1ff586bb4b84e8f911b022e714ff59","tarball":"https://registry.npmjs.org/persian-calendar-suite/-/persian-calendar-suite-1.0.3.tgz","fileCount":7,"integrity":"sha512-/4GtnwXe7DZSj9PNDKhBp3aDsO2q3XUavbIIF+SoreqbjZHJXBUQ06BDFj8RC9X/45bewtcA3KKPlogFzvQtuA==","signatures":[{"sig":"MEYCIQD1CR0DU3CjFCAPFX86Qi2GBEYrHC4WyaZzW6a+OS5PvAIhAJtP/9L9pRfmz2/mIQ+WIcMnnhFmpLEMYZcVT1wujYlY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":564357},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"0e17c47a552d2933e2333093709a6566e5dc23f9","scripts":{"build":"rollup -c","prepublishOnly":"npm run build"},"_npmUser":{"name":"bbbird1450","email":"bigbadbird20@gmail.com"},"repository":{"url":"git+https://github.com/BBBird1450/persian-calendar-suite.git","type":"git"},"_npmVersion":"11.6.2","description":"Complete Persian (Jalali/Shamsi) calendar suite for React with datepicker, range picker, and event calendar","directories":{},"_nodeVersion":"22.21.0","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.9.6","@babel/core":"^7.23.7","@babel/preset-react":"^7.23.3","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/persian-calendar-suite_1.0.3_1765474931625_0.5262889553640775","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"persian-calendar-suite","version":"1.0.4","keywords":["persian","jalali","shamsi","datepicker","calendar","react","date-range-picker","datetime-picker","event-calendar","persian-calendar","jalali-calendar","shamsi-calendar","iran","farsi","nextjs","react-component"],"author":{"name":"BBBird1450","email":"BBBird1450@users.noreply.github.com"},"license":"MIT","_id":"persian-calendar-suite@1.0.4","maintainers":[{"name":"bbbird1450","email":"bigbadbird20@gmail.com"}],"homepage":"https://github.com/BBBird1450/persian-calendar-suite#readme","bugs":{"url":"https://github.com/BBBird1450/persian-calendar-suite/issues"},"dist":{"shasum":"9a8db7b3b6ba0f12df531e38b44f12fe43dd9fc2","tarball":"https://registry.npmjs.org/persian-calendar-suite/-/persian-calendar-suite-1.0.4.tgz","fileCount":7,"integrity":"sha512-G2AkpKvHXXL+ktaOVHaXY4KiS3+EuwnJtUVy6LmzxjUGX6gGA4AU5bu5qxneVuwgoVkoMCw+m6AUe81zw4gafA==","signatures":[{"sig":"MEQCIChdPjBESzVR0RTYZrYl1T3BUy8mOvLy5cX/u9DEHku8AiBQoqBylKAp8fEz/GAQQuoP4bq2Mmdm8YEwV66tTiIo4A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":569075},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"f6e87a091bf0a687c17a543d3e3196e67cc4a01f","scripts":{"build":"rollup -c","prepublishOnly":"npm run build"},"_npmUser":{"name":"bbbird1450","email":"bigbadbird20@gmail.com"},"repository":{"url":"git+https://github.com/BBBird1450/persian-calendar-suite.git","type":"git"},"_npmVersion":"11.6.2","description":"Complete Persian (Jalali/Shamsi) calendar suite for React with datepicker, range picker, and event calendar","directories":{},"_nodeVersion":"22.21.0","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.9.6","@babel/core":"^7.23.7","@babel/preset-react":"^7.23.3","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/persian-calendar-suite_1.0.4_1765529184776_0.7295382347642896","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"persian-calendar-suite","version":"1.1.0","keywords":["persian","jalali","shamsi","datepicker","calendar","react","date-range-picker","datetime-picker","event-calendar","persian-calendar","jalali-calendar","shamsi-calendar","iran","farsi","nextjs","react-component"],"author":{"name":"BBBird1450","email":"BBBird1450@users.noreply.github.com"},"license":"MIT","_id":"persian-calendar-suite@1.1.0","maintainers":[{"name":"bbbird1450","email":"bigbadbird20@gmail.com"}],"homepage":"https://github.com/BBBird1450/persian-calendar-suite#readme","bugs":{"url":"https://github.com/BBBird1450/persian-calendar-suite/issues"},"dist":{"shasum":"08d98fa59fc5970d71ce38f8acccf54788414750","tarball":"https://registry.npmjs.org/persian-calendar-suite/-/persian-calendar-suite-1.1.0.tgz","fileCount":7,"integrity":"sha512-FkzTlzYg8tAOL3gJWuSzhSKIQNTdjVjH8OK+G9mTBsSLvwkmTBlx/R3bsHHM7YRe3lxdXb/XiNs0oxVH2dO01g==","signatures":[{"sig":"MEUCIQDmk2Xt3vi2OlKLjCUSvVCURCrvr9XcjdDNMAWZa1afcgIgdrW71ku8T6WIBzaGBhXKUflKh3tPTQO2iR6elsUwSsI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":687027},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"f504320517d84b2c83188ec0ee2177e2f450cb28","scripts":{"build":"rollup -c","prepublishOnly":"npm run build"},"_npmUser":{"name":"bbbird1450","email":"bigbadbird20@gmail.com"},"repository":{"url":"git+https://github.com/BBBird1450/persian-calendar-suite.git","type":"git"},"_npmVersion":"11.6.2","description":"Complete Persian (Jalali/Shamsi) calendar suite for React with datepicker, range picker, and event calendar","directories":{},"_nodeVersion":"22.21.0","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.9.6","@babel/core":"^7.23.7","@babel/preset-react":"^7.23.3","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/persian-calendar-suite_1.1.0_1765624112912_0.9577755889127775","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"persian-calendar-suite","version":"1.1.1","keywords":["persian","jalali","shamsi","datepicker","calendar","react","date-range-picker","datetime-picker","event-calendar","persian-calendar","jalali-calendar","shamsi-calendar","iran","farsi","nextjs","react-component"],"author":{"name":"BBBird1450","email":"BBBird1450@users.noreply.github.com"},"license":"MIT","_id":"persian-calendar-suite@1.1.1","maintainers":[{"name":"bbbird1450","email":"bigbadbird20@gmail.com"}],"homepage":"https://github.com/BBBird1450/persian-calendar-suite#readme","bugs":{"url":"https://github.com/BBBird1450/persian-calendar-suite/issues"},"dist":{"shasum":"29bfcf8503280754275a837cec74130f453b1b47","tarball":"https://registry.npmjs.org/persian-calendar-suite/-/persian-calendar-suite-1.1.1.tgz","fileCount":7,"integrity":"sha512-YlwSob1Yu8CGyaUIs4+n2PsDFlCobvgYYvP4TjJxhFaofXHW+waPg6fpriiPnJMmsClXvJwJlOWraGBO2ABWjw==","signatures":[{"sig":"MEUCIQC/mJqcxAGpq9gXkLiKTHH8UnFZVf74ianT1iB6VOnH0AIgUpTJfTFt5MiD6c4OwLcbqvsdmQuw72komVG8yfcX7GU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":693845},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"4788065d0c238f72acfd2789ed25bbefe93d983a","scripts":{"build":"rollup -c","prepublishOnly":"npm run build"},"_npmUser":{"name":"bbbird1450","email":"bigbadbird20@gmail.com"},"repository":{"url":"git+https://github.com/BBBird1450/persian-calendar-suite.git","type":"git"},"_npmVersion":"11.6.2","description":"Complete Persian (Jalali/Shamsi) calendar suite for React with datepicker, range picker, and event calendar","directories":{},"_nodeVersion":"22.21.0","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.9.6","@babel/core":"^7.23.7","@babel/preset-react":"^7.23.3","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/persian-calendar-suite_1.1.1_1765678649483_0.3633042885725226","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"persian-calendar-suite","version":"1.1.2","keywords":["persian","jalali","shamsi","datepicker","calendar","react","date-range-picker","datetime-picker","event-calendar","persian-calendar","jalali-calendar","shamsi-calendar","iran","farsi","nextjs","react-component"],"author":{"name":"BBBird1450","email":"BBBird1450@users.noreply.github.com"},"license":"MIT","_id":"persian-calendar-suite@1.1.2","maintainers":[{"name":"bbbird1450","email":"bigbadbird20@gmail.com"}],"homepage":"https://github.com/BBBird1450/persian-calendar-suite#readme","bugs":{"url":"https://github.com/BBBird1450/persian-calendar-suite/issues"},"dist":{"shasum":"b5895d041a2cd2da237729c5f4988b332ac861a9","tarball":"https://registry.npmjs.org/persian-calendar-suite/-/persian-calendar-suite-1.1.2.tgz","fileCount":7,"integrity":"sha512-aK1oRLr4RL7kE3RD9fMECH9S5DX22FFwYf8ZH2SKB1KF4CzqZ/rgE7jyANSUS14AaCzP5tJ8aF8bWHlJLgU0Xg==","signatures":[{"sig":"MEUCIQCbryzOuaHgBMj1RAUH+kTf+CDMcCox3edyVcKREP2IVAIgI3pQVig3yA26CM+/+Z2Tzdj2+tFcQQmvFLJkjWCxFM4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":694216},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"41cb3b0eee590779d6b498b15aecebdd5e08fc85","scripts":{"build":"rollup -c","prepublishOnly":"npm run build"},"_npmUser":{"name":"bbbird1450","email":"bigbadbird20@gmail.com"},"repository":{"url":"git+https://github.com/BBBird1450/persian-calendar-suite.git","type":"git"},"_npmVersion":"11.6.2","description":"Complete Persian (Jalali/Shamsi) calendar suite for React with datepicker, range picker, and event calendar","directories":{},"_nodeVersion":"22.21.0","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.9.6","@babel/core":"^7.23.7","@babel/preset-react":"^7.23.3","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/persian-calendar-suite_1.1.2_1765683079666_0.08863410497224278","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"persian-calendar-suite","version":"1.1.3","keywords":["persian","jalali","shamsi","datepicker","calendar","react","date-range-picker","datetime-picker","event-calendar","persian-calendar","jalali-calendar","shamsi-calendar","iran","farsi","nextjs","react-component"],"author":{"name":"BBBird1450","email":"BBBird1450@users.noreply.github.com"},"license":"MIT","_id":"persian-calendar-suite@1.1.3","maintainers":[{"name":"bbbird1450","email":"bigbadbird20@gmail.com"}],"homepage":"https://github.com/BBBird1450/persian-calendar-suite#readme","bugs":{"url":"https://github.com/BBBird1450/persian-calendar-suite/issues"},"dist":{"shasum":"d90926aba22c252d772302b3945a07363a77efa7","tarball":"https://registry.npmjs.org/persian-calendar-suite/-/persian-calendar-suite-1.1.3.tgz","fileCount":7,"integrity":"sha512-CoEHLKt/cVK/JpQnJaC7J/fQPT54bqTfhCoYLQVkF8nkJxX1+umlMdKgg4kZFJ0he659T0XOZ3P4DQv+NoYnQg==","signatures":[{"sig":"MEUCIGx2K+wCHONLIPAEoNePYDdCyoGpkhkx+2gEt2IMpkgiAiEAu99N8S3jUuL8ZP23XWxDJwDwsfPxA7M12SbmHyk4cvA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":698140},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"e7aae4687fabf47abcb3bec1cb84f91fe7f0fadd","scripts":{"build":"rollup -c","prepublishOnly":"npm run build"},"_npmUser":{"name":"bbbird1450","email":"bigbadbird20@gmail.com"},"repository":{"url":"git+https://github.com/BBBird1450/persian-calendar-suite.git","type":"git"},"_npmVersion":"11.6.2","description":"Complete Persian (Jalali/Shamsi) calendar suite for React with datepicker, range picker, and event calendar","directories":{},"_nodeVersion":"22.21.0","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.9.6","@babel/core":"^7.23.7","@babel/preset-react":"^7.23.3","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/persian-calendar-suite_1.1.3_1765683655691_0.7122668454730636","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"persian-calendar-suite","version":"1.1.5","keywords":["persian","jalali","shamsi","datepicker","calendar","react","date-range-picker","datetime-picker","event-calendar","persian-calendar","jalali-calendar","shamsi-calendar","iran","farsi","nextjs","react-component"],"author":{"name":"BBBird1450","email":"BBBird1450@users.noreply.github.com"},"license":"MIT","_id":"persian-calendar-suite@1.1.5","maintainers":[{"name":"bbbird1450","email":"bigbadbird20@gmail.com"}],"homepage":"https://github.com/BBBird1450/persian-calendar-suite#readme","bugs":{"url":"https://github.com/BBBird1450/persian-calendar-suite/issues"},"dist":{"shasum":"ae03479f44f302b53cb9af96fc77ea4769670955","tarball":"https://registry.npmjs.org/persian-calendar-suite/-/persian-calendar-suite-1.1.5.tgz","fileCount":7,"integrity":"sha512-F1ZgDUKGq3m7/EnB8at4HtTUZcr92IcM7sdNwCeCrWpNyO9TgbZ5RRB0JPx6f0SMzCrKsNjN94vG1s2+lWMYMg==","signatures":[{"sig":"MEYCIQDN+OVX8zr3vxnby33Ke6SyEFiUan2zZFcDz5YY7GMawQIhANocUKCRVsvwPcdP35+55vlOGDO9p1NiNVK/LbKtyFpo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":717683},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"355ec0189771c76f5a94fc6286326a45bff97dbd","scripts":{"build":"rollup -c","prepublishOnly":"npm run build"},"_npmUser":{"name":"bbbird1450","email":"bigbadbird20@gmail.com"},"repository":{"url":"git+https://github.com/BBBird1450/persian-calendar-suite.git","type":"git"},"_npmVersion":"11.6.2","description":"Complete Persian (Jalali/Shamsi) calendar suite for React with datepicker, range picker, and event calendar","directories":{},"_nodeVersion":"22.21.0","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.9.6","@babel/core":"^7.23.7","@babel/preset-react":"^7.23.3","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/persian-calendar-suite_1.1.5_1765819363673_0.5652388963669548","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"persian-calendar-suite","version":"1.1.6","keywords":["persian","jalali","shamsi","datepicker","calendar","react","date-range-picker","datetime-picker","event-calendar","persian-calendar","jalali-calendar","shamsi-calendar","iran","farsi","nextjs","react-component"],"author":{"name":"BBBird1450","email":"BBBird1450@users.noreply.github.com"},"license":"MIT","_id":"persian-calendar-suite@1.1.6","maintainers":[{"name":"bbbird1450","email":"bigbadbird20@gmail.com"}],"homepage":"https://github.com/BBBird1450/persian-calendar-suite#readme","bugs":{"url":"https://github.com/BBBird1450/persian-calendar-suite/issues"},"dist":{"shasum":"dec4433f8185f73b7534a11bcf6ce6d89f17697d","tarball":"https://registry.npmjs.org/persian-calendar-suite/-/persian-calendar-suite-1.1.6.tgz","fileCount":7,"integrity":"sha512-sD/ZVZgtqNToQm6uuyI8ar5+fZofMDuBQTlEhOzLRuZzcmgIDHo0J6vIpuzxsfJnF4+8Gkv2hSZ5NIQsaqSm5w==","signatures":[{"sig":"MEUCIQDOJUm6Sn7ty+ILK5bQb6ol05QR6UNqjgWUz3scbvdnBAIgLt7J6coZ9vglwr0AneBC5AX9yfLuaLMxyWPtVdSBUaY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":717087},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"5f43a087f8f0ab84da01676df5bb17205162f6e9","scripts":{"build":"rollup -c","prepublishOnly":"npm run build"},"_npmUser":{"name":"bbbird1450","email":"bigbadbird20@gmail.com"},"repository":{"url":"git+https://github.com/BBBird1450/persian-calendar-suite.git","type":"git"},"_npmVersion":"11.6.2","description":"Complete Persian (Jalali/Shamsi) calendar suite for React with datepicker, range picker, and event calendar","directories":{},"_nodeVersion":"22.21.0","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.9.6","@babel/core":"^7.23.7","@babel/preset-react":"^7.23.3","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/persian-calendar-suite_1.1.6_1765923949149_0.3784925685745426","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"persian-calendar-suite","version":"1.2.0","keywords":["persian","jalali","shamsi","datepicker","calendar","react","date-range-picker","datetime-picker","event-calendar","persian-calendar","jalali-calendar","shamsi-calendar","timeline","iran","farsi","nextjs","react-component"],"author":{"name":"BBBird1450","email":"BBBird1450@users.noreply.github.com"},"license":"MIT","_id":"persian-calendar-suite@1.2.0","maintainers":[{"name":"bbbird1450","email":"bigbadbird20@gmail.com"}],"homepage":"https://github.com/BBBird1450/persian-calendar-suite#readme","bugs":{"url":"https://github.com/BBBird1450/persian-calendar-suite/issues"},"dist":{"shasum":"64a8ae6d59dd06a3dcae9bd1dfc84b8636b8ef2a","tarball":"https://registry.npmjs.org/persian-calendar-suite/-/persian-calendar-suite-1.2.0.tgz","fileCount":7,"integrity":"sha512-i++uf86RaxiIB1lRFTQ8FGFXSyVTlZWIery5rlNXKd/H/ZRYFqwii/ygff9ye2hJOxv4JsFTW0IhdAV/5eaXqA==","signatures":[{"sig":"MEUCIQDQOQPcb6DTzON/UaF4OKEZPO2a/OQ0vof+r2JuScG3NgIgDoSY9eHql4VxNkTMW9MfmQRKOEoKZzxpoXA+mgnElVk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":796962},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"e85527a7441bf84b9a1ae2f768562326e017ea61","scripts":{"build":"rollup -c","prepublishOnly":"npm run build"},"_npmUser":{"name":"bbbird1450","email":"bigbadbird20@gmail.com"},"repository":{"url":"git+https://github.com/BBBird1450/persian-calendar-suite.git","type":"git"},"_npmVersion":"11.6.2","description":"Complete Persian (Jalali/Shamsi) calendar suite for React with datepicker, range picker, time range picker, event calendar, and timeline","directories":{},"_nodeVersion":"22.21.0","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.9.6","@babel/core":"^7.23.7","@babel/preset-react":"^7.23.3","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/persian-calendar-suite_1.2.0_1765998078106_0.041743505411782955","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"persian-calendar-suite","version":"1.2.1","keywords":["persian","jalali","shamsi","datepicker","calendar","react","date-range-picker","datetime-picker","event-calendar","persian-calendar","jalali-calendar","shamsi-calendar","timeline","iran","farsi","nextjs","react-component"],"author":{"name":"BBBird1450","email":"BBBird1450@users.noreply.github.com"},"license":"MIT","_id":"persian-calendar-suite@1.2.1","maintainers":[{"name":"bbbird1450","email":"bigbadbird20@gmail.com"}],"homepage":"https://github.com/BBBird1450/persian-calendar-suite#readme","bugs":{"url":"https://github.com/BBBird1450/persian-calendar-suite/issues"},"dist":{"shasum":"870cbe3634113e5228660039e7d1582c675acf5b","tarball":"https://registry.npmjs.org/persian-calendar-suite/-/persian-calendar-suite-1.2.1.tgz","fileCount":7,"integrity":"sha512-FTSFtIs1X2j0VcdKsjB6aCc3I5r9xADYkt+9+SxCOMk5cZGc0lt3oMnJ25UC4BA+wUk3eXoENcrJYTFBICmo+A==","signatures":[{"sig":"MEUCIADGtxbUyT2pksb9N4bArmC9Sc3JUEiuPz7f3axGIrNMAiEAoI4tNYDfYJWxVJe+jyU+KMhOUOKPEVbrJ6T75/eoe5Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":802640},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"ba71a66a266a1b12ea21446102e15ea1b7aed638","scripts":{"build":"rollup -c","prepublishOnly":"npm run build"},"_npmUser":{"name":"bbbird1450","email":"bigbadbird20@gmail.com"},"repository":{"url":"git+https://github.com/BBBird1450/persian-calendar-suite.git","type":"git"},"_npmVersion":"11.6.2","description":"Complete Persian (Jalali/Shamsi) calendar suite for React with datepicker, range picker, time range picker, event calendar, and timeline","directories":{},"_nodeVersion":"22.21.0","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.9.6","@babel/core":"^7.23.7","@babel/preset-react":"^7.23.3","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/persian-calendar-suite_1.2.1_1766042295873_0.753958693044064","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"persian-calendar-suite","version":"1.5.0","keywords":["persian","jalali","shamsi","datepicker","calendar","react","date-range-picker","datetime-picker","event-calendar","persian-calendar","jalali-calendar","shamsi-calendar","timeline","convert-dates","date-arithmetic","iran","farsi","nextjs","react-component"],"author":{"name":"BBBird1450","email":"BBBird1450@users.noreply.github.com"},"license":"MIT","_id":"persian-calendar-suite@1.5.0","maintainers":[{"name":"bbbird1450","email":"bigbadbird20@gmail.com"}],"homepage":"https://github.com/BBBird1450/persian-calendar-suite#readme","bugs":{"url":"https://github.com/BBBird1450/persian-calendar-suite/issues"},"dist":{"shasum":"41fcf28b1ecc3223f1b3e450c53727fa9779d1fb","tarball":"https://registry.npmjs.org/persian-calendar-suite/-/persian-calendar-suite-1.5.0.tgz","fileCount":7,"integrity":"sha512-wVI6Km16r54RrEbFZVXaJRgweaOGmKj5b7JUANx4LF9ftW39qnWrBaF7QmXuX6HNFmSdZc2y6K8STWRkSUTp7g==","signatures":[{"sig":"MEYCIQCe60TadOTfJY2z4sgRs2CeyUPVKZH6gAE9bw0booYwsAIhAJwt3lX77WEsSLh3QaR7CsKbRhWMQWE6/HwgpjxQcioc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":900223},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"f6e0e99284941e67ea35447602a5cf1ce901be9b","scripts":{"build":"rollup -c","prepublishOnly":"npm run build"},"_npmUser":{"name":"bbbird1450","email":"bigbadbird20@gmail.com"},"repository":{"url":"git+https://github.com/BBBird1450/persian-calendar-suite.git","type":"git"},"_npmVersion":"11.6.2","description":"Complete Persian (Jalali/Shamsi) calendar suite for React with datepicker, range picker, time range picker, event calendar, and timeline","directories":{},"_nodeVersion":"22.21.0","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.9.6","@babel/core":"^7.23.7","@babel/preset-react":"^7.23.3","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/persian-calendar-suite_1.5.0_1766137121406_0.13334816115432901","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"persian-calendar-suite","version":"1.5.2","keywords":["persian","jalali","shamsi","datepicker","calendar","react","date-range-picker","datetime-picker","event-calendar","persian-calendar","jalali-calendar","shamsi-calendar","timeline","convert-dates","date-arithmetic","iran","farsi","nextjs","react-component"],"author":{"name":"BBBird1450","email":"BBBird1450@users.noreply.github.com"},"license":"MIT","_id":"persian-calendar-suite@1.5.2","maintainers":[{"name":"bbbird1450","email":"bigbadbird20@gmail.com"}],"homepage":"https://github.com/BBBird1450/persian-calendar-suite#readme","bugs":{"url":"https://github.com/BBBird1450/persian-calendar-suite/issues"},"dist":{"shasum":"3ed0c2805279b793dc9db17122b2ad71aa388fd1","tarball":"https://registry.npmjs.org/persian-calendar-suite/-/persian-calendar-suite-1.5.2.tgz","fileCount":7,"integrity":"sha512-82U3Rz0za0rISkxkSk3m59WH8Lzqr1KM1/2P8nhMf0Np+49Q11BagZABKsqj2ZI9/taUo7eu24gHflD5ydgt4Q==","signatures":[{"sig":"MEQCIHIhqiLW56fMc1GoDLWl673nlbfOpIqBKVYTHbwOEgzDAiBN2yI6z0aTl1YHIUzc/mA/quUmVg8emKsoyk0LkH/Dow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":925413},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"63058ae07e43e6893073bcebb1d813c2297109b2","scripts":{"build":"rollup -c","prepublishOnly":"npm run build"},"_npmUser":{"name":"bbbird1450","email":"bigbadbird20@gmail.com"},"repository":{"url":"git+https://github.com/BBBird1450/persian-calendar-suite.git","type":"git"},"_npmVersion":"11.6.2","description":"Complete Persian (Jalali/Shamsi) calendar suite for React with datepicker, range picker, time range picker, event calendar, and timeline","directories":{},"_nodeVersion":"22.21.0","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.9.6","@babel/core":"^7.23.7","@babel/preset-react":"^7.23.3","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/persian-calendar-suite_1.5.2_1766815088219_0.6203005706211837","host":"s3://npm-registry-packages-npm-production"}},"1.5.5":{"name":"persian-calendar-suite","version":"1.5.5","keywords":["persian","jalali","shamsi","datepicker","calendar","react","date-range-picker","datetime-picker","event-calendar","persian-calendar","jalali-calendar","shamsi-calendar","timeline","convert-dates","date-arithmetic","iran","farsi","nextjs","react-component"],"author":{"name":"BBBird1450","email":"BBBird1450@users.noreply.github.com"},"license":"MIT","_id":"persian-calendar-suite@1.5.5","maintainers":[{"name":"bbbird1450","email":"bigbadbird20@gmail.com"}],"homepage":"https://github.com/BBBird1450/persian-calendar-suite#readme","bugs":{"url":"https://github.com/BBBird1450/persian-calendar-suite/issues"},"dist":{"shasum":"d61e58a0968c3f972f72446cc7589d56598f46d3","tarball":"https://registry.npmjs.org/persian-calendar-suite/-/persian-calendar-suite-1.5.5.tgz","fileCount":7,"integrity":"sha512-KJSzN9q7MZKhfkm97X/j+nD6L0AQ5coUq/B7PpIklXAvRjkALwiV+KmYG0pfr546EQxO9l4fBwE7R1HPI3yT7w==","signatures":[{"sig":"MEYCIQD2DOz9na+c7x5JqoZTLscVg5ZDsRuButiXNiLPIXtl+QIhAK0zguols8wTgjUQLdCH20YluGyZG8KCB+EOb0FnN2Lv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1001108},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"725bd09506cded6500242551aa7b2e1faa2c8b45","scripts":{"build":"rollup -c","prepublishOnly":"npm run build"},"_npmUser":{"name":"bbbird1450","email":"bigbadbird20@gmail.com"},"repository":{"url":"git+https://github.com/BBBird1450/persian-calendar-suite.git","type":"git"},"_npmVersion":"11.6.2","description":"Complete Persian (Jalali/Shamsi) calendar suite for React with datepicker, range picker, time range picker, event calendar, and timeline","directories":{},"_nodeVersion":"22.21.0","_hasShrinkwrap":false,"devDependencies":{"rollup":"^4.9.6","@babel/core":"^7.23.7","@babel/preset-react":"^7.23.3","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","rollup-plugin-peer-deps-external":"^2.2.4"},"peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/persian-calendar-suite_1.5.5_1777891143609_0.619930610426779","host":"s3://npm-registry-packages-npm-production"}},"1.5.6":{"name":"persian-calendar-suite","version":"1.5.6","description":"Complete Persian (Jalali/Shamsi) calendar suite for React with datepicker, range picker, time range picker, event calendar, and timeline","type":"module","main":"dist/index.js","module":"dist/index.esm.js","types":"dist/index.d.ts","scripts":{"build":"rollup -c","prepublishOnly":"npm run build"},"keywords":["persian","jalali","shamsi","datepicker","calendar","react","date-range-picker","datetime-picker","event-calendar","persian-calendar","jalali-calendar","shamsi-calendar","timeline","convert-dates","date-arithmetic","iran","farsi","nextjs","react-component"],"author":{"name":"BBBird1450","email":"BBBird1450@users.noreply.github.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/BBBird1450/persian-calendar-suite.git"},"bugs":{"url":"https://github.com/BBBird1450/persian-calendar-suite/issues"},"homepage":"https://github.com/BBBird1450/persian-calendar-suite#readme","peerDependencies":{"react":"^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"},"devDependencies":{"@rollup/plugin-babel":"^6.0.4","@rollup/plugin-node-resolve":"^15.2.3","@rollup/plugin-commonjs":"^25.0.7","rollup":"^4.9.6","rollup-plugin-peer-deps-external":"^2.2.4","@babel/core":"^7.23.7","@babel/preset-react":"^7.23.3"},"gitHead":"ad05bde921e8ec9f05cba7aa7d2d271b848e039a","_id":"persian-calendar-suite@1.5.6","_nodeVersion":"22.21.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-qlWEQZRDDSzN6AgEgjO2Q8jry59LRpijH9BAA37s7mYA8fyMix7SZY8ut6IshcPfdU1aANBDITa5ZIVUH+AOLg==","shasum":"003c0631afb76e3fa0ccac79adc7b9e1c5a14eab","tarball":"https://registry.npmjs.org/persian-calendar-suite/-/persian-calendar-suite-1.5.6.tgz","fileCount":7,"unpackedSize":1034507,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCzTQLMV0H/rKhdCnDNiUX6E5gzpot/MivCZ6NIhJkrugIgdIKTwtIeNnKpAXi4LPQkAFL41/UGZcdLy40FC2Zjqhg="}]},"_npmUser":{"name":"bbbird1450","email":"bigbadbird20@gmail.com"},"directories":{},"maintainers":[{"name":"bbbird1450","email":"bigbadbird20@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/persian-calendar-suite_1.5.6_1785927683379_0.6471959566921939"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-09T19:09:12.758Z","modified":"2026-08-05T11:01:23.654Z","1.0.0":"2025-12-09T19:09:12.942Z","1.0.1":"2025-12-09T19:30:29.244Z","1.0.2":"2025-12-09T20:19:59.330Z","1.0.3":"2025-12-11T17:42:11.799Z","1.0.4":"2025-12-12T08:46:24.922Z","1.1.0":"2025-12-13T11:08:33.096Z","1.1.1":"2025-12-14T02:17:29.643Z","1.1.2":"2025-12-14T03:31:19.911Z","1.1.3":"2025-12-14T03:40:55.879Z","1.1.5":"2025-12-15T17:22:43.814Z","1.1.6":"2025-12-16T22:25:49.344Z","1.2.0":"2025-12-17T19:01:18.259Z","1.2.1":"2025-12-18T07:18:16.085Z","1.5.0":"2025-12-19T09:38:41.618Z","1.5.2":"2025-12-27T05:58:08.390Z","1.5.5":"2026-05-04T10:39:03.787Z","1.5.6":"2026-08-05T11:01:23.507Z"},"bugs":{"url":"https://github.com/BBBird1450/persian-calendar-suite/issues"},"author":{"name":"BBBird1450","email":"BBBird1450@users.noreply.github.com"},"license":"MIT","homepage":"https://github.com/BBBird1450/persian-calendar-suite#readme","keywords":["persian","jalali","shamsi","datepicker","calendar","react","date-range-picker","datetime-picker","event-calendar","persian-calendar","jalali-calendar","shamsi-calendar","timeline","convert-dates","date-arithmetic","iran","farsi","nextjs","react-component"],"repository":{"type":"git","url":"git+https://github.com/BBBird1450/persian-calendar-suite.git"},"description":"Complete Persian (Jalali/Shamsi) calendar suite for React with datepicker, range picker, time range picker, event calendar, and timeline","maintainers":[{"name":"bbbird1450","email":"bigbadbird20@gmail.com"}],"readme":"# Persian Calendar Suite\r\n\r\nA comprehensive Persian (Jalali/Shamsi) calendar suite for React with datepicker, range picker, event calendar, and multiple output formats.\r\n\r\n[![npm version](https://img.shields.io/npm/v/persian-calendar-suite.svg)](https://www.npmjs.com/package/persian-calendar-suite)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\r\n\r\n**[Live Demo](https://bbbird1450.github.io/persian-calendar-suite/)** | [Documentation](#table-of-contents)\r\n\r\n## Table of Contents\r\n\r\n- [Installation](#installation)\r\n- [Compatibility](#compatibility)\r\n- [Quick Start](#quick-start)\r\n- [Components](#components)\r\n  - [PersianDateTimePicker](#persiandatetimepicker)\r\n  - [PersianDateRangePicker](#persiandaterangepicker)\r\n  - [PersianTimePicker](#persiantimepicker)\r\n  - [PersianCalendar](#persiancalendar)\r\n  - [PersianTimeline](#persiantimeline)\r\n  - [PersianMoment](#persianmoment)\r\n- [Theme Customization](#theme-customization)\r\n- [Output Formats](#output-formats)\r\n- [Programmatic Control](#programmatic-control)\r\n- [Examples](#examples)\r\n- [Browser Support](#browser-support)\r\n- [License](#license)\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install persian-calendar-suite\r\n```\r\n\r\nor with yarn:\r\n\r\n```bash\r\nyarn add persian-calendar-suite\r\n```\r\n\r\n## Compatibility\r\n\r\n- **React**: +16.8 (Hooks required)\r\n- **React DOM**: +16.8\r\n- **Next.js**: +12  (Client-side components)\r\n- **Node**: 12+\r\n\r\n### Peer Dependencies\r\n\r\n```bash\r\nnpm install react react-dom\r\n```\r\n\r\n## Quick Start\r\n\r\n### React\r\n\r\n```jsx\r\nimport React, { useState } from 'react';\r\nimport { PersianDateTimePicker } from 'persian-calendar-suite';\r\n\r\nfunction App() {\r\n  const [date, setDate] = useState(null);\r\n\r\n  return (\r\n    <PersianDateTimePicker\r\n      value={date}\r\n      onChange={setDate}\r\n    />\r\n  );\r\n}\r\n```\r\n\r\n### Next.js\r\n\r\n```jsx\r\n'use client'; // Required for Next.js 13+ App Router\r\n\r\nimport { useState } from 'react';\r\nimport { PersianDateTimePicker } from 'persian-calendar-suite';\r\n\r\nexport default function Page() {\r\n  const [date, setDate] = useState(null);\r\n\r\n  return (\r\n    <PersianDateTimePicker\r\n      value={date}\r\n      onChange={setDate}\r\n    />\r\n  );\r\n}\r\n```\r\n\r\n## Components\r\n\r\n### PersianDateTimePicker\r\n\r\nSingle date and time picker with Shamsi calendar.\r\n\r\n#### Import\r\n\r\n```jsx\r\nimport { PersianDateTimePicker } from 'persian-calendar-suite';\r\n```\r\n\r\n#### Basic Usage\r\n\r\n```jsx\r\nconst [value, setValue] = useState(null);\r\n\r\n<PersianDateTimePicker\r\n  value={value}\r\n  onChange={setValue}\r\n/>\r\n```\r\n\r\n#### Props\r\n\r\n| Prop | Type | Default | Description |\r\n|------|------|---------|-------------|\r\n| `value` | `string \\| number \\| null` | `null` | Selected date value |\r\n| `onChange` | `(value: string \\| number) => void` | - | Callback when date changes |\r\n| `defaultValue` | `string \\| number \\| 'now' \\| null` | `null` | Default date/time value |\r\n| `defaultValue` | `string \\| number \\| 'now' \\| null` | `null` | Default date/time value |\r\n| `showTime` | `boolean` | `true` | Show time picker |\r\n| `minuteStep` | `number` | `1` | Minute step interval |\r\n| `outputFormat` | `'iso' \\| 'shamsi' \\| 'gregorian' \\| 'hijri' \\| 'timestamp'` | `'iso'` | Output format |\r\n| `showFooter` | `boolean` | `true` | Show OK/Cancel buttons |\r\n| `theme` | `ThemeObject` | `{}` | Theme customization |\r\n| `disabledHours` | `number[]` | `[]` | Array of disabled hours |\r\n| `minDate` | `string \\| Date` | `null` | Minimum selectable date |\r\n| `maxDate` | `string \\| Date` | `null` | Maximum selectable date |\r\n| `enabledDates` | `string[]` | `null` | Whitelist of specific dates (only these can be selected) |\r\n| `disabledDates` | `string[]` | `null` | Blacklist of specific dates (these cannot be selected) |\r\n| `disabledWeekDays` | `number[]` | `[]` | Disable specific weekdays (0=Sat, 1=Sun, 2=Mon, 3=Tue, 4=Wed, 5=Thu, 6=Fri) |\r\n| `persianNumbers` | `boolean` | `false` | Display numbers in Persian digits |\r\n| `rtlCalendar` | `boolean` | `false` | Start calendar from right (Sunday first) |\r\n\r\n#### Example with Options\r\n\r\n```jsx\r\n<PersianDateTimePicker\r\n  value={value}\r\n  onChange={setValue}\r\n  showTime={true}\r\n  outputFormat=\"shamsi\"\r\n  showFooter={false}\r\n  theme={{\r\n    primaryColor: '#6366f1',\r\n    circularDates: true\r\n  }}\r\n/>\r\n```\r\n\r\n---\r\n\r\n### PersianDateRangePicker\r\n\r\nDate range picker with dual calendars.\r\n\r\n#### Import\r\n\r\n```jsx\r\nimport { PersianDateRangePicker } from 'persian-calendar-suite';\r\n```\r\n\r\n#### Basic Usage\r\n\r\n```jsx\r\nconst [range, setRange] = useState(null);\r\n\r\n<PersianDateRangePicker\r\n  value={range}\r\n  onChange={setRange}\r\n/>\r\n```\r\n\r\n#### Props\r\n\r\n| Prop | Type | Default | Description |\r\n|------|------|---------|-------------|\r\n| `value` | `[string, string] \\| null` | `null` | Selected range [start, end] |\r\n| `onChange` | `(value: [string, string]) => void` | - | Callback when range changes |\r\n| `defaultValue` | `[string, string] \\| [number, number] \\| null` | `null` | Default date range value |\r\n| `defaultValue` | `[string, string] \\| [number, number] \\| null` | `null` | Default date range value |\r\n| `placeholder` | `[string, string]` | `['تاریخ شروع', 'تاریخ پایان']` | Placeholder text |\r\n| `disabled` | `boolean` | `false` | Disable the picker |\r\n| `outputFormat` | `'iso' \\| 'shamsi' \\| 'gregorian' \\| 'hijri' \\| 'timestamp'` | `'iso'` | Output format |\r\n| `showFooter` | `boolean` | `true` | Show OK/Cancel buttons |\r\n| `theme` | `ThemeObject` | `{}` | Theme customization |\r\n| `minDate` | `string \\| Date` | `null` | Minimum selectable date |\r\n| `maxDate` | `string \\| Date` | `null` | Maximum selectable date |\r\n| `enabledDates` | `string[]` | `null` | Whitelist of specific dates (only these can be selected) |\r\n| `disabledDates` | `string[]` | `null` | Blacklist of specific dates (these cannot be selected) |\r\n| `disabledWeekDays` | `number[]` | `[]` | Disable specific weekdays (0=Sat, 1=Sun, 2=Mon, 3=Tue, 4=Wed, 5=Thu, 6=Fri) |\r\n| `persianNumbers` | `boolean` | `false` | Display numbers in Persian digits |\r\n| `rtlCalendar` | `boolean` | `false` | Start calendar from right (Sunday first) |\r\n\r\n#### Example with Options\r\n\r\n```jsx\r\n<PersianDateRangePicker\r\n  value={range}\r\n  onChange={setRange}\r\n  placeholder={['Start', 'End']}\r\n  outputFormat=\"timestamp\"\r\n  theme={{\r\n    primaryColor: '#10b981'\r\n  }}\r\n/>\r\n```\r\n\r\n---\r\n\r\n### PersianTimePicker\r\n\r\nStandalone time picker component with range support.\r\n\r\n#### Import\r\n\r\n```jsx\r\nimport { PersianTimePicker } from 'persian-calendar-suite';\r\n```\r\n\r\n#### Basic Usage\r\n\r\n```jsx\r\nconst [time, setTime] = useState('');\r\n\r\n<PersianTimePicker\r\n  value={time}\r\n  onChange={setTime}\r\n/>\r\n```\r\n\r\n#### Props\r\n\r\n| Prop | Type | Default | Description |\r\n|------|------|---------|-------------|\r\n| `value` | `string \\| string[]` | `''` | Selected time value (HH:MM or [HH:MM, HH:MM] for range) |\r\n| `onChange` | `(value: string \\| string[]) => void` | - | Callback when time changes |\r\n| `defaultValue` | `string \\| 'now'` | `null` | Default time ('now' or 'HH:MM') |\r\n| `minuteStep` | `number` | `1` | Minute step interval |\r\n| `disabledHours` | `number[]` | `[]` | Array of disabled hours |\r\n| `placeholder` | `string` | `'انتخاب زمان'` | Placeholder text |\r\n| `persianNumbers` | `boolean` | `false` | Display numbers in Persian digits |\r\n| `isRange` | `boolean` | `false` | Enable time range selection |\r\n| `theme` | `ThemeObject` | `{}` | Theme customization |\r\n\r\n#### Example with Options\r\n\r\n```jsx\r\n<PersianTimePicker\r\n  value={time}\r\n  onChange={setTime}\r\n  defaultValue=\"now\"\r\n  minuteStep={15}\r\n  disabledHours={[0, 1, 2, 22, 23]}\r\n  theme={{\r\n    primaryColor: '#10b981'\r\n  }}\r\n/>\r\n```\r\n\r\n#### Time Range Picker\r\n\r\n```jsx\r\nconst [timeRange, setTimeRange] = useState([]);\r\n\r\n<PersianTimePicker\r\n  value={timeRange}\r\n  onChange={setTimeRange}\r\n  isRange={true}\r\n  minuteStep={15}\r\n  defaultValue=\"now\" // Sets current time to +1 hour\r\n  // OR\r\n  defaultValue={['09:00', '17:00']} // Sets specific range\r\n/>\r\n// Output: [\"09:00\", \"17:00\"]\r\n```\r\n\r\n---\r\n\r\n### PersianTimeline\r\n\r\nTimeline component for displaying chronological events with Persian dates.\r\n\r\n#### Import\r\n\r\n```jsx\r\nimport { PersianTimeline } from 'persian-calendar-suite';\r\n```\r\n\r\n#### Basic Usage\r\n\r\n```jsx\r\nconst [events] = useState([\r\n  {\r\n    id: 1,\r\n    date: '2025-12-10',\r\n    time: '14:30',\r\n    title: 'Project Started',\r\n    description: 'Initial project setup and planning',\r\n    color: '#10b981',\r\n    icon: '🚀'\r\n  },\r\n  {\r\n    id: 2,\r\n    date: '2025-12-15',\r\n    title: 'Milestone Reached',\r\n    color: '#6366f1',\r\n    image: '/milestone.jpg'\r\n  }\r\n]);\r\n\r\n<PersianTimeline\r\n  events={events}\r\n  onEventClick={(event) => console.log(event)}\r\n/>\r\n```\r\n\r\n#### Props\r\n\r\n| Prop | Type | Default | Description |\r\n|------|------|---------|-------------|\r\n| `events` | `Event[]` | `[]` | Array of timeline events |\r\n| `onEventClick` | `(event: Event) => void` | - | Callback when event is clicked |\r\n| `direction` | `'vertical' \\| 'horizontal'` | `'vertical'` | Timeline orientation |\r\n| `markerShape` | `'circular' \\| 'rect'` | `'circular'` | Shape of event markers |\r\n| `showIcons` | `boolean` | `true` | Show event icons/images |\r\n| `alternating` | `boolean` | `true` | Alternate event sides (vertical only) |\r\n| `persianNumbers` | `boolean` | `false` | Display numbers in Persian digits |\r\n| `theme` | `ThemeObject` | `{}` | Theme customization |\r\n\r\n#### Event Object\r\n\r\n```typescript\r\n{\r\n  id: number;           // Unique identifier\r\n  date: string;         // ISO date string (YYYY-MM-DD)\r\n  time?: string;        // Optional time (HH:mm)\r\n  title: string;        // Event title\r\n  description?: string; // Event description\r\n  color?: string;       // Event color (hex)\r\n  icon?: string | ReactNode; // Event icon (emoji or component)\r\n  image?: string;       // Event image URL\r\n}\r\n```\r\n\r\n#### Timeline Types\r\n\r\n**Vertical Timeline (default)**\r\n```jsx\r\n<PersianTimeline\r\n  events={events}\r\n  direction=\"vertical\"\r\n  alternating={true}\r\n/>\r\n```\r\n\r\n**Horizontal Timeline**\r\n```jsx\r\n<PersianTimeline\r\n  events={events}\r\n  direction=\"horizontal\"\r\n/>\r\n```\r\n\r\n**Custom Markers**\r\n```jsx\r\n<PersianTimeline\r\n  events={events}\r\n  markerShape=\"rect\"\r\n  showIcons={true}\r\n/>\r\n```\r\n\r\n#### Advanced Example\r\n\r\n```jsx\r\nconst timelineEvents = [\r\n  {\r\n    id: 1,\r\n    date: '2025-01-15',\r\n    time: '09:00',\r\n    title: 'Project Kickoff',\r\n    description: 'Initial team meeting and project planning session',\r\n    color: '#10b981',\r\n    icon: '🎯'\r\n  },\r\n  {\r\n    id: 2,\r\n    date: '2025-02-20',\r\n    title: 'Design Phase Complete',\r\n    description: 'UI/UX designs approved and ready for development',\r\n    color: '#6366f1',\r\n    image: '/design-preview.jpg'\r\n  },\r\n  {\r\n    id: 3,\r\n    date: '2025-03-30',\r\n    time: '16:00',\r\n    title: 'Beta Release',\r\n    description: 'First beta version released to testing team',\r\n    color: '#f59e0b',\r\n    icon: <svg>...</svg>\r\n  }\r\n];\r\n\r\n<PersianTimeline\r\n  events={timelineEvents}\r\n  direction=\"vertical\"\r\n  markerShape=\"circular\"\r\n  alternating={true}\r\n  persianNumbers={true}\r\n  onEventClick={(event) => {\r\n    console.log('Timeline event clicked:', event);\r\n  }}\r\n  theme={{\r\n    primaryColor: '#6366f1',\r\n    lineColor: '#e5e7eb',\r\n    markerSize: '16px',\r\n    eventRadius: '12px'\r\n  }}\r\n/>\r\n```\r\n\r\n---\r\n\r\n### PersianMoment\r\n\r\nJalali date arithmetic utility for date calculations and conversions.\r\n\r\n#### Import\r\n\r\n```jsx\r\nimport persianMoment from 'persian-calendar-suite/PersianMoment';\r\n```\r\n\r\n#### Basic Usage\r\n\r\n```jsx\r\n// Create Persian dates\r\nconst m1 = persianMoment('1404/12/30', 'jYYYY/jMM/jDD');\r\nconst m2 = persianMoment('1404/01/02', 'jYYYY/jMM/jDD');\r\n\r\n// Calculate differences\r\nconsole.log(m2.diff(m1, 'day')); // 3\r\nconsole.log(m2.diff(m1, 'jMonth')); // 1\r\n\r\n// Format conversion\r\nconsole.log(m1.format('YYYY/MM/DD')); // 2025/03/19\r\nconsole.log(m1.format('jYYYY/jMM/jDD')); // 1404/12/30\r\n```\r\n\r\n#### Supported Input Formats\r\n\r\n- **Jalali**: `'1404/12/30'` with format `'jYYYY/jMM/jDD'`\r\n- **Gregorian**: `'2025/03/19'` with format `'YYYY/MM/DD'`\r\n- **ISO**: `'2025-03-19'` (no format needed)\r\n\r\n#### Methods\r\n\r\n**diff(other, unit, outputFormat)**\r\n- `unit`: `'day'`, `'jDay'`, `'jMonth'`, `'jYear'`\r\n- `outputFormat`: `'number'`, `'persian'`, `'persian-text'`\r\n\r\n**format(format)**\r\n- `format`: `'jYYYY/jMM/jDD'`, `'YYYY/MM/DD'`, `'iso'`\r\n\r\n#### Output Formats\r\n\r\n```jsx\r\nconst diff = m2.diff(m1, 'day', 'persian-text');\r\n// Output: \"۳ روز\"\r\n\r\nconst diff2 = m2.diff(m1, 'jMonth', 'persian');\r\n// Output: \"۱\"\r\n```\r\n\r\n---\r\n\r\n### PersianCalendar\r\n\r\nFull-featured calendar with event management (like FullCalendar).\r\n\r\n#### Import\r\n\r\n```jsx\r\nimport { PersianCalendar } from 'persian-calendar-suite';\r\n```\r\n\r\n#### Basic Usage\r\n\r\n```jsx\r\nconst [events, setEvents] = useState([]);\r\n\r\n<PersianCalendar\r\n  events={events}\r\n  onEventCreate={(event) => setEvents([...events, event])}\r\n  onEventUpdate={(updated) => setEvents(events.map(e => e.id === updated.id ? updated : e))}\r\n  onEventDelete={(deleted) => setEvents(events.filter(e => e.id !== deleted.id))}\r\n/>\r\n```\r\n\r\n#### Props\r\n\r\n| Prop | Type | Default | Description |\r\n|------|------|---------|-------------|\r\n| `events` | `Event[]` | `[]` | Array of event objects |\r\n| `onEventCreate` | `(event: Event) => void` | - | Callback when event is created |\r\n| `onEventUpdate` | `(event: Event) => void` | - | Callback when event is updated |\r\n| `onEventDelete` | `(event: Event) => void` | - | Callback when event is deleted |\r\n| `onEventClick` | `(event: Event) => void` | - | Callback when event is clicked |\r\n| `initialView` | `'day' \\| 'week' \\| 'month'` | `'month'` | Initial view mode |\r\n| `editable` | `boolean` | `true` | Enable event creation/editing |\r\n| `showWeekends` | `boolean` | `true` | Show weekend days |\r\n| `headerFormat` | `'full' \\| 'short'` | `'full'` | Header format |\r\n| `disabledHours` | `number[]` | `[]` | Array of disabled hours (0-23) |\r\n| `minDate` | `string \\| Date` | `null` | Minimum selectable date |\r\n| `maxDate` | `string \\| Date` | `null` | Maximum selectable date |\r\n| `enabledDates` | `string[]` | `null` | Whitelist of specific dates (only these can be selected) |\r\n| `disabledDates` | `string[]` | `null` | Blacklist of specific dates (these cannot be selected) |\r\n| `disabledWeekDays` | `number[]` | `[]` | Disable specific weekdays (0=Sat, 1=Sun, 2=Mon, 3=Tue, 4=Wed, 5=Thu, 6=Fri) |\r\n| `theme` | `ThemeObject` | `{}` | Theme customization |\r\n\r\n#### Event Object\r\n\r\n```typescript\r\n{\r\n  id: number;           // Unique identifier\r\n  date: string;         // ISO date string (YYYY-MM-DD)\r\n  startTime: string;    // Start time (HH:mm)\r\n  endTime: string;      // End time (HH:mm)\r\n  title: string;        // Event title\r\n  color: string;        // Event color (hex)\r\n  description?: string; // Event description (optional)\r\n  isAllDay?: boolean;   // All-day event flag\r\n  isRecurring?: boolean; // Recurring event flag\r\n  recurringType?: 'daily' | 'weekly' | 'monthly' | 'yearly'; // Recurrence pattern\r\n  recurringEnd?: string; // End date for recurring events\r\n  isMultiDay?: boolean; // Multi-day event flag\r\n  endDate?: string;     // End date for multi-day events\r\n  readOnly?: boolean;   // Read-only event flag (cannot be edited)\r\n}\r\n```\r\n\r\n#### Creating Events\r\n\r\n**Day View**: Click on hour slots (00:00 - 23:00)\r\n```jsx\r\n// User clicks on 09:00 slot\r\n// Modal opens with startTime: \"09:00\", endTime: \"10:00\"\r\n```\r\n\r\n**Week View**: Click on time cells for any day\r\n```jsx\r\n// User clicks on Tuesday 14:00\r\n// Modal opens for that specific day and time\r\n```\r\n\r\n**Month View**: Click on day cells\r\n```jsx\r\n// User clicks on day 15\r\n// Modal opens with default time 09:00\r\n```\r\n\r\n#### Editing Events\r\n\r\nClick on any existing event to open the edit modal:\r\n- Modify title, start/end time, color, description\r\n- Delete button available in modal\r\n- Changes trigger `onEventUpdate` callback\r\n\r\n#### Advanced Features\r\n\r\n**Event Types:**\r\n- **All-day events**: Check \"رویداد تمام روز\" to create events spanning entire days\r\n- **Multi-day events**: Check \"رویداد چند روزه\" to create events spanning multiple days\r\n- **Recurring events**: Check \"رویداد تکراری\" for daily/weekly/monthly/yearly repetition\r\n- **Today button**: Quick navigation to current date\r\n- **Event tooltips**: Hover over events to see full details\r\n\r\n**Overlap Detection:**\r\n- Shows orange badge with count (e.g., \"2 تداخل\")\r\n- Highlights slots with light orange background\r\n- Displays events side-by-side in day view\r\n\r\n**Visual Indicators:**\r\n- All-day events: Gradient background with dashed border and sun icon\r\n- Recurring events: Refresh icon after title\r\n- Multi-day and recurring events are mutually exclusive\r\n\r\n#### Full Example\r\n\r\n```jsx\r\nconst [events, setEvents] = useState([\r\n  {\r\n    id: 1,\r\n    date: '2025-12-10',\r\n    startTime: '09:00',\r\n    endTime: '10:00',\r\n    title: 'Team Meeting',\r\n    color: '#10b981',\r\n    description: 'Weekly team sync',\r\n    isRecurring: true,\r\n    recurringType: 'weekly'\r\n  },\r\n  {\r\n    id: 2,\r\n    date: '2025-12-11',\r\n    title: 'Company Event',\r\n    color: '#ef4444',\r\n    isAllDay: true\r\n  }\r\n]);\r\n\r\n<PersianCalendar\r\n  events={events}\r\n  onEventCreate={(event) => {\r\n    console.log('Created:', event);\r\n    setEvents([...events, event]);\r\n  }}\r\n  onEventUpdate={(updated) => {\r\n    console.log('Updated:', updated);\r\n    setEvents(events.map(e => e.id === updated.id ? updated : e));\r\n  }}\r\n  onEventDelete={(deleted) => {\r\n    console.log('Deleted:', deleted);\r\n    setEvents(events.filter(e => e.id !== deleted.id));\r\n  }}\r\n  onEventClick={(event) => {\r\n    console.log('Clicked:', event);\r\n  }}\r\n  initialView=\"day\"\r\n  editable={true}\r\n  theme={{\r\n    primaryColor: '#6366f1'\r\n  }}\r\n  disabledHours={[0, 1, 2, 22, 23]} // Disable late night/early morning hours\r\n/>\r\n```\r\n\r\n## Theme Customization\r\n\r\nAll components support theme customization via the `theme` prop.\r\n\r\n### Theme Object\r\n\r\n```typescript\r\n{\r\n  primaryColor?: string;      // Primary color (default: '#1890ff')\r\n  backgroundColor?: string;   // Background color (default: '#ffffff')\r\n  textColor?: string;         // Text color (default: '#000000')\r\n  borderColor?: string;       // Border color (default: '#d9d9d9')\r\n  hoverColor?: string;        // Hover color (default: '#f0f0f0')\r\n  selectedTextColor?: string; // Selected text color (default: '#ffffff')\r\n  circularDates?: boolean;    // Circular date cells (default: false)\r\n  // Calendar specific\r\n  headerBg?: string;          // Header background (default: '#fafafa')\r\n  eventRadius?: string;       // Event border radius (default: '6px')\r\n  shadow?: string;            // Shadow (default: '0 2px 8px rgba(0,0,0,0.08)')\r\n}\r\n```\r\n\r\n### Example\r\n\r\n```jsx\r\nconst customTheme = {\r\n  primaryColor: '#6366f1',\r\n  backgroundColor: '#ffffff',\r\n  textColor: '#1f2937',\r\n  borderColor: '#e5e7eb',\r\n  hoverColor: '#f3f4f6',\r\n  circularDates: true\r\n};\r\n\r\n<PersianDateTimePicker\r\n  value={value}\r\n  onChange={setValue}\r\n  theme={customTheme}\r\n/>\r\n```\r\n\r\n## Output Formats\r\n\r\n### ISO 8601 (default)\r\n```\r\n2025-12-10T14:30:00\r\n```\r\n\r\n### Shamsi\r\n```\r\n1404/09/20 14:30\r\n```\r\n\r\n### Gregorian\r\n```\r\n2025/12/10 14:30\r\n```\r\n\r\n### Hijri\r\n```\r\n1446/06/08 14:30\r\n```\r\n\r\n### Timestamp\r\n```\r\n1702217400000\r\n```\r\n\r\n### Changing Format\r\n\r\n```jsx\r\n<PersianDateTimePicker\r\n  value={value}\r\n  onChange={setValue}\r\n  outputFormat=\"shamsi\"  // or 'iso', 'gregorian', 'hijri', 'timestamp'\r\n/>\r\n```\r\n\r\n## Programmatic Control\r\n\r\n### Reading Data\r\n\r\nAll components are **controlled** - you manage the state:\r\n\r\n```jsx\r\nconst [date, setDate] = useState(null);\r\nconst [range, setRange] = useState(null);\r\nconst [events, setEvents] = useState([]);\r\n\r\n// Read current values anytime\r\nconsole.log('Current date:', date);\r\nconsole.log('Current range:', range);\r\nconsole.log('All events:', events);\r\n```\r\n\r\n### Setting Data Programmatically\r\n\r\n#### Set Date/Time\r\n\r\n```jsx\r\nconst [date, setDate] = useState(null);\r\n\r\n// Set to current date\r\nsetDate(new Date().toISOString());\r\n\r\n// Set specific date (ISO format)\r\nsetDate('2025-12-10T14:30:00');\r\n\r\n// Set via timestamp\r\nsetDate(1702217400000);\r\n\r\n// Clear date\r\nsetDate(null);\r\n```\r\n\r\n#### Set Date Range\r\n\r\n```jsx\r\nconst [range, setRange] = useState(null);\r\n\r\n// Set range\r\nsetRange(['2025-12-01T00:00:00', '2025-12-31T23:59:59']);\r\n\r\n// Set last 7 days\r\nconst end = new Date();\r\nconst start = new Date(end.getTime() - 7 * 24 * 60 * 60 * 1000);\r\nsetRange([start.toISOString(), end.toISOString()]);\r\n\r\n// Clear range\r\nsetRange(null);\r\n```\r\n\r\n#### Manage Events\r\n\r\n```jsx\r\nconst [events, setEvents] = useState([]);\r\n\r\n// Add event programmatically\r\nconst addEvent = () => {\r\n  const newEvent = {\r\n    id: Date.now(),\r\n    date: '2025-12-15',\r\n    startTime: '10:00',\r\n    endTime: '11:00',\r\n    title: 'New Meeting',\r\n    color: '#3b82f6',\r\n    description: 'Auto-created event'\r\n  };\r\n  setEvents([...events, newEvent]);\r\n};\r\n\r\n// Update specific event\r\nconst updateEvent = (id, updates) => {\r\n  setEvents(events.map(e => \r\n    e.id === id ? { ...e, ...updates } : e\r\n  ));\r\n};\r\n\r\n// Delete event\r\nconst deleteEvent = (id) => {\r\n  setEvents(events.filter(e => e.id !== id));\r\n};\r\n\r\n// Clear all events\r\nsetEvents([]);\r\n\r\n// Load events from API\r\nfetch('/api/events')\r\n  .then(res => res.json())\r\n  .then(data => setEvents(data));\r\n```\r\n\r\n### Dynamic Updates\r\n\r\n#### Auto-select Today\r\n\r\n```jsx\r\nconst [date, setDate] = useState(new Date().toISOString());\r\n\r\n// Update to today on mount\r\nuseEffect(() => {\r\n  setDate(new Date().toISOString());\r\n}, []);\r\n```\r\n\r\n#### Filter Events by Date\r\n\r\n```jsx\r\nconst [events, setEvents] = useState([...]);\r\nconst [selectedDate, setSelectedDate] = useState('2025-12-10');\r\n\r\n// Get events for specific date\r\nconst todayEvents = events.filter(e => e.date === selectedDate);\r\n\r\n// Get events in date range\r\nconst rangeEvents = events.filter(e => \r\n  e.date >= '2025-12-01' && e.date <= '2025-12-31'\r\n);\r\n```\r\n\r\n#### Bulk Operations\r\n\r\n```jsx\r\n// Change all event colors\r\nconst changeAllColors = (newColor) => {\r\n  setEvents(events.map(e => ({ ...e, color: newColor })));\r\n};\r\n\r\n// Shift all events by 1 hour\r\nconst shiftEvents = () => {\r\n  setEvents(events.map(e => ({\r\n    ...e,\r\n    startTime: addHour(e.startTime),\r\n    endTime: addHour(e.endTime)\r\n  })));\r\n};\r\n\r\n// Delete events by criteria\r\nconst deletePastEvents = () => {\r\n  const today = new Date().toISOString().split('T')[0];\r\n  setEvents(events.filter(e => e.date >= today));\r\n};\r\n```\r\n\r\n### Responding to Changes\r\n\r\n```jsx\r\n// Track date changes\r\nconst [date, setDate] = useState(null);\r\n\r\nuseEffect(() => {\r\n  if (date) {\r\n    console.log('Date changed to:', date);\r\n    // Trigger API call, validation, etc.\r\n  }\r\n}, [date]);\r\n\r\n// Track event changes\r\nconst [events, setEvents] = useState([]);\r\n\r\nuseEffect(() => {\r\n  console.log('Events updated:', events.length);\r\n  // Save to localStorage, sync with backend, etc.\r\n  localStorage.setItem('events', JSON.stringify(events));\r\n}, [events]);\r\n```\r\n\r\n### Complete Interactive Example\r\n\r\n```jsx\r\nfunction App() {\r\n  const [events, setEvents] = useState([]);\r\n  const [selectedDate, setSelectedDate] = useState(null);\r\n\r\n  // Add event via button\r\n  const addQuickEvent = () => {\r\n    setEvents([...events, {\r\n      id: Date.now(),\r\n      date: new Date().toISOString().split('T')[0],\r\n      startTime: '09:00',\r\n      endTime: '10:00',\r\n      title: 'Quick Event',\r\n      color: '#10b981'\r\n    }]);\r\n  };\r\n\r\n  // Jump to specific date\r\n  const jumpToDate = (dateStr) => {\r\n    setSelectedDate(dateStr);\r\n  };\r\n\r\n  // Export events\r\n  const exportEvents = () => {\r\n    const json = JSON.stringify(events, null, 2);\r\n    console.log(json);\r\n    // Download or send to API\r\n  };\r\n\r\n  // Import events\r\n  const importEvents = (jsonData) => {\r\n    setEvents(JSON.parse(jsonData));\r\n  };\r\n\r\n  return (\r\n    <div>\r\n      <button onClick={addQuickEvent}>Add Event</button>\r\n      <button onClick={() => jumpToDate('2025-12-25')}>Jump to Dec 25</button>\r\n      <button onClick={exportEvents}>Export</button>\r\n      \r\n      <PersianCalendar\r\n        events={events}\r\n        onEventCreate={(e) => setEvents([...events, e])}\r\n        onEventUpdate={(e) => setEvents(events.map(ev => ev.id === e.id ? e : ev))}\r\n        onEventDelete={(e) => setEvents(events.filter(ev => ev.id !== e.id))}\r\n      />\r\n    </div>\r\n  );\r\n}\r\n```\r\n\r\n## Examples\r\n\r\n### DateTime Picker with Time\r\n\r\n```jsx\r\n<PersianDateTimePicker\r\n  value={value}\r\n  onChange={setValue}\r\n  showTime={true}\r\n  minuteStep={15}\r\n/>\r\n```\r\n\r\n### Date Only (No Time)\r\n\r\n```jsx\r\n<PersianDateTimePicker\r\n  value={value}\r\n  onChange={setValue}\r\n  showTime={false}\r\n/>\r\n```\r\n\r\n### Default Values\r\n\r\n```jsx\r\n// DateTimePicker with default to current date/time\r\n<PersianDateTimePicker\r\n  value={value}\r\n  onChange={setValue}\r\n  defaultValue=\"now\"\r\n/>\r\n\r\n// DateTimePicker with specific default date\r\n<PersianDateTimePicker\r\n  value={value}\r\n  onChange={setValue}\r\n  defaultValue=\"2025-12-10T14:30:00\"\r\n/>\r\n\r\n// DateRangePicker with default range\r\n<PersianDateRangePicker\r\n  value={range}\r\n  onChange={setRange}\r\n  defaultValue={['2025-12-01', '2025-12-31']}\r\n/>\r\n\r\n// TimePicker with default time\r\n<PersianTimePicker\r\n  value={time}\r\n  onChange={setTime}\r\n  defaultValue=\"now\"\r\n/>\r\n\r\n// Time Range Picker with default range\r\n<PersianTimePicker\r\n  value={timeRange}\r\n  onChange={setTimeRange}\r\n  isRange={true}\r\n  defaultValue={['09:00', '17:00']}\r\n/>\r\n```\r\n\r\n### Date Restrictions\r\n\r\n```jsx\r\n<PersianDateTimePicker\r\n  value={value}\r\n  onChange={setValue}\r\n  minDate=\"2025-01-01\"\r\n  maxDate=\"2025-12-31\"\r\n/>\r\n```\r\n\r\n### Date Restrictions\r\n\r\n```jsx\r\n// Min/Max date range\r\n<PersianDateTimePicker\r\n  value={value}\r\n  onChange={setValue}\r\n  minDate=\"2025-01-01\"\r\n  maxDate=\"2025-12-31\"\r\n/>\r\n\r\n// Only allow specific dates (whitelist)\r\n<PersianDateTimePicker\r\n  value={value}\r\n  onChange={setValue}\r\n  enabledDates={['2025-12-10', '2025-12-15', '2025-12-20']}\r\n/>\r\n\r\n// Disable specific dates (blacklist)\r\n<PersianDateRangePicker\r\n  value={range}\r\n  onChange={setRange}\r\n  disabledDates={['2025-12-25', '2025-12-31']}\r\n/>\r\n\r\n// Disable all Wednesdays (4) and Fridays (6)\r\n<PersianCalendar\r\n  events={events}\r\n  disabledWeekDays={[4, 6]}\r\n  onEventCreate={handleCreate}\r\n/>\r\n\r\n// Combine multiple restrictions\r\n<PersianDateTimePicker\r\n  value={value}\r\n  onChange={setValue}\r\n  minDate=\"2025-01-01\"\r\n  maxDate=\"2025-12-31\"\r\n  disabledWeekDays={[4, 6]}  // No Wednesdays or Fridays\r\n  disabledDates={['2025-12-25']}  // No Christmas\r\n/>\r\n```\r\n\r\n#### Date Restriction Priority\r\n\r\nWhen multiple restrictions are applied, they follow this priority:\r\n1. `enabledDates` (whitelist) - if set, only these dates are selectable\r\n2. `disabledDates` (blacklist) - specific dates to disable\r\n3. `disabledWeekDays` - disable all occurrences of specific weekdays\r\n4. `minDate` / `maxDate` - date range boundaries\r\n\r\n#### Weekday Numbers\r\n\r\nPersian week format (Saturday first):\r\n- 0 = Saturday (شنبه)\r\n- 1 = Sunday (یکشنبه)\r\n- 2 = Monday (دوشنبه)\r\n- 3 = Tuesday (سه‌شنبه)\r\n- 4 = Wednesday (چهارشنبه)\r\n- 5 = Thursday (پنج‌شنبه)\r\n- 6 = Friday (جمعه)\r\n\r\n### Time Picker with Default\r\n\r\n```jsx\r\n<PersianTimePicker\r\n  value={time}\r\n  onChange={setTime}\r\n  defaultValue=\"now\"\r\n  minuteStep={15}\r\n/>\r\n```\r\n\r\n### Auto-close (No Footer)\r\n\r\n```jsx\r\n<PersianDateTimePicker\r\n  value={value}\r\n  onChange={setValue}\r\n  showFooter={false}\r\n/>\r\n```\r\n\r\n### Range Picker with Timestamp\r\n\r\n```jsx\r\n<PersianDateRangePicker\r\n  value={range}\r\n  onChange={setRange}\r\n  outputFormat=\"timestamp\"\r\n/>\r\n```\r\n\r\n### Calendar with Custom Theme\r\n\r\n```jsx\r\n<PersianCalendar\r\n  events={events}\r\n  onEventCreate={handleCreate}\r\n  onEventUpdate={handleUpdate}\r\n  onEventDelete={handleDelete}\r\n  theme={{\r\n    primaryColor: '#ef4444',\r\n    headerBg: '#fee2e2',\r\n    eventRadius: '12px'\r\n  }}\r\n/>\r\n```\r\n\r\n### Read-only Calendar\r\n\r\n```jsx\r\n<PersianCalendar\r\n  events={events}\r\n  onEventClick={handleClick}\r\n  editable={false}\r\n/>\r\n```\r\n\r\n## Mobile Support\r\n\r\nAll components are fully responsive and optimized for mobile devices:\r\n- Touch-friendly interface with larger tap targets\r\n- Adaptive layouts for small screens\r\n- Centered modals on mobile\r\n- Optimized spacing and font sizes\r\n- Smooth scrolling within pickers\r\n\r\n## Browser Support\r\n\r\n- Chrome (latest)\r\n- Firefox (latest)\r\n- Safari (latest)\r\n- Edge (latest)\r\n- Opera (latest)\r\n- Mobile browsers (iOS Safari, Chrome Mobile, Samsung Internet)\r\n\r\n## Persian Holiday Integration\r\n\r\nAll calendar components support Persian holiday integration via the Time.ir API:\r\n\r\n```jsx\r\n<PersianDateTimePicker showHolidays={true} />\r\n<PersianDateRangePicker showHolidays={true} />\r\n<PersianCalendar showHolidays={true} />\r\n```\r\n\r\n### Holiday Features\r\n- **Automatic Loading**: Holidays load automatically for the current month\r\n- **Visual Highlighting**: Holiday dates appear with red background\r\n- **Read-Only**: Holidays cannot be edited or deleted\r\n- **Clickable**: Click holidays to see details\r\n- **API Integration**: Uses Time.ir Persian calendar API with CORS proxy\r\n\r\n## License\r\n\r\nMIT © BBBird1450\r\n\r\n## Contributing\r\n\r\nContributions are welcome! Please feel free to submit a Pull Request.\r\n\r\n1. Fork the repository\r\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\r\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\r\n4. Push to the branch (`git push origin feature/AmazingFeature`)\r\n5. Open a Pull Request\r\n\r\n## Support\r\n\r\nFor issues and questions:\r\n- Open an issue on [GitHub](https://github.com/BBBird1450/persian-calendar-suite/issues)\r\n\r\n## Changelog\r\n\r\nSee [CHANGELOG.md](CHANGELOG.md) for release history.\r\n","readmeFilename":"README.md"}