{"_id":"@asafarim/booking-calendar","_rev":"8-4205a982ca23be6a9a92dd61000c56c3","name":"@asafarim/booking-calendar","dist-tags":{"latest":"0.5.4"},"versions":{"0.2.0":{"name":"@asafarim/booking-calendar","version":"0.2.0","keywords":["calendar","booking","scheduler","react","typescript","freelance-toolkit"],"author":{"name":"ASafariM"},"license":"MIT","_id":"@asafarim/booking-calendar@0.2.0","maintainers":[{"name":"asafarim.be","email":"asafarim.it@gmail.com"}],"homepage":"https://github.com/AliSafari-IT/booking-calendar#readme","bugs":{"url":"https://github.com/AliSafari-IT/booking-calendar/issues"},"dist":{"shasum":"a65b4f0fe5d0094e128585027ac749227feb28b6","tarball":"https://registry.npmjs.org/@asafarim/booking-calendar/-/booking-calendar-0.2.0.tgz","fileCount":17,"integrity":"sha512-hsVr3gRC/DpG7OV500YzoK8nBp1Fe3gkUOV/38QxItKk7kqnPN78l7zBCc8dgRlj37z1+PktJdVtolNQyGr5DQ==","signatures":[{"sig":"MEUCIGp95litZDEsHSero/cTTQq9OQLM9RTl64fzlvR5bDgdAiEA3NFxLWbJqmcOW+pLwQ82HHM435TQ1UVMy51u+QMZIgM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66564},"main":"./dist/index.js","type":"module","_from":"file:asafarim-booking-calendar-0.2.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./styles":"./dist/index.css"},"private":false,"scripts":{"build":"tsc && vite build","clean":"rm -rf dist","preview":"vite preview"},"_npmUser":{"name":"asafarim.be","email":"asafarim.it@gmail.com"},"_resolved":"C:\\Users\\User\\AppData\\Local\\Temp\\d92f573c737e4cd26e82feef687bbb4b\\asafarim-booking-calendar-0.2.0.tgz","_integrity":"sha512-hsVr3gRC/DpG7OV500YzoK8nBp1Fe3gkUOV/38QxItKk7kqnPN78l7zBCc8dgRlj37z1+PktJdVtolNQyGr5DQ==","repository":{"url":"git+https://github.com/AliSafari-IT/booking-calendar.git","type":"git"},"_npmVersion":"10.9.3","description":"Google Calendar-style booking UI for FreelanceToolkit.Api","directories":{},"_nodeVersion":"22.20.0","dependencies":{"date-fns":"^3.0.0"},"publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","vite-plugin-dts":"^3.7.0","@types/react-dom":"^18.2.0","@vitejs/plugin-react":"^4.2.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/booking-calendar_0.2.0_1765455025582_0.10327600919329627","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@asafarim/booking-calendar","version":"0.2.1","keywords":["calendar","booking","scheduler","react","typescript","freelance-toolkit"],"author":{"name":"ASafariM"},"license":"MIT","_id":"@asafarim/booking-calendar@0.2.1","maintainers":[{"name":"asafarim.be","email":"asafarim.it@gmail.com"}],"homepage":"https://github.com/AliSafari-IT/booking-calendar/blob/main/example/README.md","bugs":{"url":"https://github.com/AliSafari-IT/booking-calendar/issues"},"dist":{"shasum":"392985a355b049fcecdc8d14a7db7a53c25b8a84","tarball":"https://registry.npmjs.org/@asafarim/booking-calendar/-/booking-calendar-0.2.1.tgz","fileCount":17,"integrity":"sha512-q4lXi8ODK5zR+T1C/+8o6m7n0/FQr1Em9medQaic0xZbHbYN56kJM5UuLLEds4vmhaVdwcUcWn4riWsy1ZL+Xg==","signatures":[{"sig":"MEUCIFooC7zmSVY3FPLx0EZx/CoE61fs4/qj5rQ/sSyIbkhnAiEApBLYiOWifob/rUCUU4/OKPyY+XqmcKYOK9qsTkeytAA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66585},"main":"./dist/index.js","type":"module","_from":"file:asafarim-booking-calendar-0.2.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./styles":"./dist/index.css"},"private":false,"scripts":{"build":"tsc && vite build","clean":"rm -rf dist","preview":"vite preview"},"_npmUser":{"name":"asafarim.be","email":"asafarim.it@gmail.com"},"_resolved":"C:\\Users\\User\\AppData\\Local\\Temp\\4409121de87278444b4d77f3ae0f62bb\\asafarim-booking-calendar-0.2.1.tgz","_integrity":"sha512-q4lXi8ODK5zR+T1C/+8o6m7n0/FQr1Em9medQaic0xZbHbYN56kJM5UuLLEds4vmhaVdwcUcWn4riWsy1ZL+Xg==","repository":{"url":"git+https://github.com/AliSafari-IT/booking-calendar.git","type":"git"},"_npmVersion":"10.9.3","description":"Google Calendar-style booking UI for FreelanceToolkit.Api","directories":{},"_nodeVersion":"22.20.0","dependencies":{"date-fns":"^3.0.0"},"publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","vite-plugin-dts":"^3.7.0","@types/react-dom":"^18.2.0","@vitejs/plugin-react":"^4.2.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/booking-calendar_0.2.1_1765455750193_0.7320954392109138","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@asafarim/booking-calendar","version":"0.3.0","keywords":["calendar","booking","scheduler","react","typescript"],"author":{"name":"ASafariM","email":"asafarim@gmail.com"},"license":"MIT","_id":"@asafarim/booking-calendar@0.3.0","maintainers":[{"name":"asafarim.be","email":"asafarim.it@gmail.com"}],"homepage":"https://alisafari-it.github.io/booking-calendar","bugs":{"url":"https://github.com/AliSafari-IT/booking-calendar/issues"},"dist":{"shasum":"c2f874c5db0c9421db5a63f54c522f5ceab83904","tarball":"https://registry.npmjs.org/@asafarim/booking-calendar/-/booking-calendar-0.3.0.tgz","fileCount":17,"integrity":"sha512-ISaihS5BGI7ZemnjmRbb8MfUGZzcmgrOCIJcqcDeCM4pBOtQj4jIv0awTY3YrPW52KylWccOUPduKLiC8ooZrQ==","signatures":[{"sig":"MEYCIQCOpoFro83AOWWKF8f5XKAUxceANr5tJYPFBdql+uWJVAIhANHGHfZkwGHdexlmcz9MryAFNG1T2QQTiauBWJ5t29cc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98782},"main":"./dist/index.js","type":"module","_from":"file:asafarim-booking-calendar-0.3.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./styles":"./dist/index.css"},"private":false,"scripts":{"demo":"cd demo && pnpm run dev","build":"tsc && vite build","clean":"rm -rf dist","deploy":"pnpm run predemo && cd demo && pnpm run deploy-demo","predemo":"pnpm install && pnpm run build","preview":"vite preview","deploy-demo":"cd demo && pnpm run deploy"},"_npmUser":{"name":"asafarim.be","email":"asafarim.it@gmail.com"},"_resolved":"/tmp/37ca6109ba57fba45c6c271d38668367/asafarim-booking-calendar-0.3.0.tgz","_integrity":"sha512-ISaihS5BGI7ZemnjmRbb8MfUGZzcmgrOCIJcqcDeCM4pBOtQj4jIv0awTY3YrPW52KylWccOUPduKLiC8ooZrQ==","repository":{"url":"git+https://github.com/AliSafari-IT/booking-calendar.git","type":"git"},"_npmVersion":"10.8.2","description":"Google Calendar-style booking UI for FreelanceToolkit.Api","directories":{},"_nodeVersion":"20.19.6","dependencies":{"date-fns":"^3.0.0","@asafarim/design-tokens":"^0.5.0"},"publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","vite-plugin-dts":"^3.7.0","@types/react-dom":"^18.2.0","@vitejs/plugin-react":"^4.2.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/booking-calendar_0.3.0_1767909342178_0.6449614836633459","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@asafarim/booking-calendar","version":"0.4.1","keywords":["calendar","booking","scheduler","react","typescript"],"author":{"name":"ASafariM","email":"asafarim@gmail.com"},"license":"MIT","_id":"@asafarim/booking-calendar@0.4.1","maintainers":[{"name":"asafarim.be","email":"asafarim.it@gmail.com"}],"homepage":"https://alisafari-it.github.io/booking-calendar","bugs":{"url":"https://github.com/AliSafari-IT/booking-calendar/issues"},"dist":{"shasum":"0367f161238879771b26f0f341c5a66ff66d5acb","tarball":"https://registry.npmjs.org/@asafarim/booking-calendar/-/booking-calendar-0.4.1.tgz","fileCount":17,"integrity":"sha512-EL/RXfVo4ha/G08mgAz9hoZIugGxX8CeQYd0zF3kYklYqgEaBJJ6u/83FGDgfEDHlFHYTOQuTi4s7B+wwKk2lQ==","signatures":[{"sig":"MEUCIQCcLkpkHbVzQbU2kcoZRsn/Zns8KGlAbeAxmvysz1YIsgIgaRtJrugIjrmgBsgFuEFX6tuPbBAlvJz2nc4bedVNqG8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101062},"main":"./dist/index.js","type":"module","_from":"file:asafarim-booking-calendar-0.4.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./styles":"./dist/index.css"},"private":false,"scripts":{"demo":"cd demo && pnpm run dev","build":"tsc && vite build","clean":"rm -rf dist","deploy":"pnpm run predemo && cd demo && pnpm run deploy-demo","predemo":"pnpm install && pnpm run build","preview":"vite preview","release":"pnpm run build && node ./scripts/release.js","deploy-demo":"cd demo && pnpm run deploy"},"_npmUser":{"name":"asafarim.be","email":"asafarim.it@gmail.com"},"_resolved":"/tmp/78aa8c89a9d862c227cbc29529fbf658/asafarim-booking-calendar-0.4.1.tgz","_integrity":"sha512-EL/RXfVo4ha/G08mgAz9hoZIugGxX8CeQYd0zF3kYklYqgEaBJJ6u/83FGDgfEDHlFHYTOQuTi4s7B+wwKk2lQ==","repository":{"url":"git+https://github.com/AliSafari-IT/booking-calendar.git","type":"git"},"_npmVersion":"10.8.2","description":"Google Calendar-style booking UI for FreelanceToolkit.Api","directories":{},"_nodeVersion":"20.19.6","dependencies":{"date-fns":"^3.0.0","@asafarim/design-tokens":"^0.5.0"},"publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","vite-plugin-dts":"^3.7.0","@types/react-dom":"^18.2.0","@vitejs/plugin-react":"^4.2.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/booking-calendar_0.4.1_1767910543720_0.15283585021504442","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@asafarim/booking-calendar","version":"0.5.0","keywords":["calendar","booking","scheduler","react","typescript"],"author":"ASafariM <asafarim@gmail.com>","license":"MIT","_id":"@asafarim/booking-calendar@0.5.0","maintainers":[{"name":"asafarim.be","email":"asafarim.it@gmail.com"}],"homepage":"https://alisafari-it.github.io/booking-calendar","bugs":{"url":"https://github.com/AliSafari-IT/booking-calendar/issues"},"dist":{"shasum":"5e2ca0e4500a45ed2f9b2e3ce97da97c5f874112","tarball":"https://registry.npmjs.org/@asafarim/booking-calendar/-/booking-calendar-0.5.0.tgz","fileCount":17,"integrity":"sha512-k3QZJ2+LqWj+ujEk0j2W8QWp62EcD9+hvDfGKgW7qMZY4ewklmahL2hmgG15Ioi/vF0zbOSL0e2wHhTAzUR6rw==","signatures":[{"sig":"MEUCIDhz/EQIobHFfW/L/2EdF1I4AehngKyOaIJNgBr6QOjPAiEAn0SGeVMlJl2FyNqqDUhBipxaR1hd/tqL6Of0D/CLFsE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEo0F2XT3GXHwTKpc/ZDjxPjjj5jJeivSVnBl3BjufzVAiAZigNVfF5oqtiMiRVGH+06+3BR1sr1OdkM2kZRzJ7H8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":102008},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./styles":"./dist/index.css"},"private":false,"scripts":{"demo":"cd demo && pnpm run dev","build":"tsc && vite build","clean":"rm -rf dist","deploy":"pnpm run predemo && cd demo && pnpm run deploy-demo","predemo":"pnpm install && pnpm run build","preview":"vite preview","release":"pnpm run build && node ./scripts/release.js","deploy-demo":"cd demo && pnpm run deploy"},"_npmUser":{"name":"asafarim.be","email":"asafarim.it@gmail.com"},"repository":{"url":"git+https://github.com/AliSafari-IT/booking-calendar.git","type":"git"},"description":"Google Calendar-style booking UI for FreelanceToolkit.Api","directories":{},"_nodeVersion":"22.23.2","dependencies":{"date-fns":"^3.0.0","@asafarim/design-tokens":"^0.5.0"},"publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","typescript":"^5.3.0","@types/react":"^18.2.0","vite-plugin-dts":"^3.7.0","@types/react-dom":"^18.2.0","@vitejs/plugin-react":"^4.2.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/booking-calendar_0.5.0_1788196292326_0.4292059082784714","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@asafarim/booking-calendar","version":"0.5.2","keywords":["calendar","booking","scheduler","react","typescript"],"author":"ASafariM <asafarim@gmail.com>","license":"MIT","_id":"@asafarim/booking-calendar@0.5.2","maintainers":[{"name":"asafarim.be","email":"asafarim.it@gmail.com"}],"homepage":"https://alisafari-it.github.io/booking-calendar","bugs":{"url":"https://github.com/AliSafari-IT/booking-calendar/issues"},"dist":{"shasum":"a6a18ab8b8750bb5f9f1c74ab98b92e2356cdeb9","tarball":"https://registry.npmjs.org/@asafarim/booking-calendar/-/booking-calendar-0.5.2.tgz","fileCount":17,"integrity":"sha512-EkTPk4nJoQx4JT8tyNiaVfI632vbwiGEuFFwE/EtgO08af3U6Sp/P7Be5+R77JHPrJKxibpO6W56lsN+y/DbHQ==","signatures":[{"sig":"MEUCIAVBcx5wrEuMr/SwAy0P21uMv6VtbErDTdjzxnFyOCJXAiEA9V5xW8NXkq0hgk6ICpcnglktqVjUbM3xJzZJ3Qc7COQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCZdMv0JnE09xVgY6GFzgk0UwSDzAVfzK04GGCxBDrZYwIgMCiCt18IkDpCJP5wxfYKYcBjmiWyBxd3pwpe8zaK8vc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":105779},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./styles":"./dist/index.css"},"private":false,"scripts":{"dev":"kill-port 5173 5174 && vite demo --config demo/vite.config.ts --host --port 5173","demo":"cd demo && pnpm run dev --port 5173","build":"tsc && vite build","clean":"rm -rf dist","deploy":"pnpm run build && cd demo && pnpm run deploy-demo","preview":"vite preview","release":"pnpm run build && node ./scripts/release.js","deploy-demo":"cd demo && pnpm run deploy"},"_npmUser":{"name":"asafarim.be","email":"asafarim.it@gmail.com"},"repository":{"url":"git+https://github.com/AliSafari-IT/booking-calendar.git","type":"git"},"description":"Google Calendar-style booking UI for FreelanceToolkit.Api","directories":{},"_nodeVersion":"22.23.2","dependencies":{"date-fns":"^3.0.0","@asafarim/design-tokens":"^0.5.0"},"publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","kill-port":"^2.0.1","typescript":"^5.3.0","@types/react":"^18.2.0","vite-plugin-dts":"^3.7.0","@types/react-dom":"^18.2.0","@vitejs/plugin-react":"^4.2.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/booking-calendar_0.5.2_1788357392451_0.4606237876629913","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@asafarim/booking-calendar","version":"0.5.3","keywords":["calendar","booking","scheduler","react","typescript"],"author":"ASafariM <asafarim@gmail.com>","license":"MIT","_id":"@asafarim/booking-calendar@0.5.3","maintainers":[{"name":"asafarim.be","email":"asafarim.it@gmail.com"}],"homepage":"https://alisafari-it.github.io/booking-calendar","bugs":{"url":"https://github.com/AliSafari-IT/booking-calendar/issues"},"dist":{"shasum":"824944fc4533dc0a2b512e60320463918363982e","tarball":"https://registry.npmjs.org/@asafarim/booking-calendar/-/booking-calendar-0.5.3.tgz","fileCount":17,"integrity":"sha512-LccE9cCoGTNsh/XCVuZb6WwV9wVBPR5h4HBLALHqvr5ljAW75XT4rjzrJ7DKjEUUtB3LT8Y9U2beoOowvACeug==","signatures":[{"sig":"MEUCIHybtk8Xl4xTzHAPdHMGDdmdhKselaK6Kv2LuoL6S8T9AiEAr69Ph8nKqYpIypZinLlC7g8rexMvbsv0xWHywddGU0o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBo23bzwT9EdZO120R7rdr98ZHElnE5wY2xlo1WvhqsFAiBUJaiBpHKzrOBuus03LNQaioHh2vWFx9Pcv51LmaUkyg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106203},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./styles":"./dist/index.css"},"private":false,"scripts":{"dev":"kill-port 5173 5174 && vite demo --config demo/vite.config.ts --host --port 5173","demo":"cd demo && pnpm run dev --port 5173","build":"tsc && vite build","clean":"rm -rf dist","deploy":"pnpm run build && cd demo && pnpm run deploy-demo","preview":"vite preview","release":"pnpm run build && node ./scripts/release.js","deploy-demo":"cd demo && pnpm run deploy"},"_npmUser":{"name":"asafarim.be","email":"asafarim.it@gmail.com"},"repository":{"url":"git+https://github.com/AliSafari-IT/booking-calendar.git","type":"git"},"description":"Google Calendar-style booking UI for FreelanceToolkit.Api","directories":{},"_nodeVersion":"22.23.2","dependencies":{"date-fns":"^3.0.0","@asafarim/design-tokens":"^0.5.0"},"publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","kill-port":"^2.0.1","typescript":"^5.3.0","@types/react":"^18.2.0","vite-plugin-dts":"^3.7.0","@types/react-dom":"^18.2.0","@vitejs/plugin-react":"^4.2.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/booking-calendar_0.5.3_1788359251955_0.6755533425247378","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"_id":"@asafarim/booking-calendar@0.5.4","bugs":{"url":"https://github.com/AliSafari-IT/booking-calendar/issues"},"dist":{"shasum":"8f5ad83b90670b1de5d5a12c22b602a16e1b3004","tarball":"https://registry.npmjs.org/@asafarim/booking-calendar/-/booking-calendar-0.5.4.tgz","fileCount":17,"integrity":"sha512-SIjIwIfU9H0fv7zsMibR09fUCOPqh2S+Yrhr3f5Bxpc3t4zhwTgmqFtp8ay4BeGO0taqZ6SWwbTbi0am12+rLw==","signatures":[{"sig":"MEUCIGpPtLGhc8cIMhv3RRAS8SRQkh4Q0fggTlBNsOAU++B1AiEAnMjvY7NMdnNLjpZfqgZF7QFi8gEU/VhRkimJ5peHdAA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHVjRkCYrSwCOw0hOppb0kqGNPUu8ZGX7yM3oqJSjAKzAiBZhFz8ymklDnFb4CSDl4ez+ZXYzmlJNcsL04SYIoKktg=="}],"unpackedSize":106295},"main":"./dist/index.js","name":"@asafarim/booking-calendar","type":"module","types":"./dist/index.d.ts","author":"ASafariM <asafarim@gmail.com>","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./styles":"./dist/index.css"},"license":"MIT","private":false,"scripts":{"dev":"kill-port 5173 5174 && vite demo --config demo/vite.config.ts --host --port 5173","demo":"cd demo && pnpm run dev --port 5173","build":"tsc && vite build","clean":"rm -rf dist","deploy":"pnpm run build && cd demo && pnpm run deploy-demo","preview":"vite preview","release":"pnpm run build && node ./scripts/release.js","deploy-demo":"cd demo && pnpm run deploy"},"version":"0.5.4","_npmUser":{"name":"asafarim.be","email":"asafarim.it@gmail.com"},"homepage":"https://alisafari-it.github.io/booking-calendar","keywords":["calendar","booking","scheduler","react","typescript"],"repository":{"url":"git+https://github.com/AliSafari-IT/booking-calendar.git","type":"git"},"description":"Google Calendar-style booking UI for FreelanceToolkit.Api","directories":{},"maintainers":[{"name":"asafarim.be","email":"asafarim.it@gmail.com"}],"_nodeVersion":"22.23.2","dependencies":{"date-fns":"^3.0.0","@asafarim/design-tokens":"^0.5.0"},"publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","kill-port":"^2.0.1","typescript":"^5.3.0","@types/react":"^18.2.0","vite-plugin-dts":"^3.7.0","@types/react-dom":"^18.2.0","@vitejs/plugin-react":"^4.2.0"},"peerDependencies":{"react":"^18.0.0","react-dom":"^18.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/booking-calendar_0.5.4_1788363973400_0.12529129844267883"}}},"time":{"created":"2025-12-11T12:10:25.523Z","modified":"2026-09-02T15:46:13.746Z","0.2.0":"2025-12-11T12:10:25.723Z","0.2.1":"2025-12-11T12:22:30.361Z","0.3.0":"2026-01-08T21:55:42.330Z","0.4.1":"2026-01-08T22:15:43.868Z","0.5.0":"2026-08-31T17:11:32.409Z","0.5.2":"2026-09-02T13:56:32.553Z","0.5.3":"2026-09-02T14:27:32.059Z","0.5.4":"2026-09-02T15:46:13.499Z"},"bugs":{"url":"https://github.com/AliSafari-IT/booking-calendar/issues"},"author":"ASafariM <asafarim@gmail.com>","license":"MIT","homepage":"https://alisafari-it.github.io/booking-calendar","keywords":["calendar","booking","scheduler","react","typescript"],"repository":{"url":"git+https://github.com/AliSafari-IT/booking-calendar.git","type":"git"},"description":"Google Calendar-style booking UI for FreelanceToolkit.Api","maintainers":[{"name":"asafarim.be","email":"asafarim.it@gmail.com"}],"readme":"# @asafarim/booking-calendar\n\nGoogle Calendar-style booking UI for React, built with TypeScript, Vite, and ASafariM design tokens.\n\n[![npm version](https://img.shields.io/npm/v/%40asafarim%2Fbooking-calendar)](https://www.npmjs.com/package/@asafarim/booking-calendar)\n\nCurrent release: `0.5.4`\n\n[Live demo](https://alisafari-it.github.io/booking-calendar/) · [How to install and use](https://alisafari-it.github.io/booking-calendar/#howto) · [Changelog and roadmap](https://alisafari-it.github.io/booking-calendar/#roadmap)\n\n## What it provides\n\n`@asafarim/booking-calendar` is a responsive calendar component for displaying and managing bookings in month, week, and day views. It provides the calendar UI while your application owns the data and backend operations through async callbacks.\n\n- Month, week, and day views\n- Create, edit, and delete booking workflows\n- Jump-to-Date navigation with year, month, and mini-calendar selection\n- Drag-to-move and drag-to-resize interactions\n- Pending, confirmed, cancelled, completed, and no-show statuses\n- Delivery status indicators\n- Client and meeting details\n- Availability and backend callback types\n- Responsive mobile layout and sheet-style dialogs\n- Light and dark theme support through `@asafarim/design-tokens`\n- Keyboard-accessible controls and semantic dialog structure\n- TypeScript types and Vite-compatible ESM output\n\n## Demo and screenshots\n\nThe demo contains an interactive Calendar page and a Roadmap page with release notes, search, category filters, pagination, and theme switching.\n\nOpen the [live demo](https://alisafari-it.github.io/booking-calendar/) to try the interactions.\n\n### Desktop week view\n\n![Booking Calendar week view](https://raw.githubusercontent.com/AliSafari-IT/booking-calendar/v0.5.4/demo/public/booking-calendar-week.png)\n\n### Desktop month view\n\n![Booking Calendar month view](https://raw.githubusercontent.com/AliSafari-IT/booking-calendar/v0.5.4/demo/public/booking-calendar-month.png)\n\n### Desktop day view\n\n![Booking Calendar day view](https://raw.githubusercontent.com/AliSafari-IT/booking-calendar/v0.5.4/demo/public/booking-calendar-day.png)\n\n### Mobile week view\n\n![Booking Calendar mobile week view](https://raw.githubusercontent.com/AliSafari-IT/booking-calendar/v0.5.4/demo/public/booking-calendar-mobile-view.png)\n\n### Mobile dark theme\n\n![Booking Calendar mobile dark theme](https://raw.githubusercontent.com/AliSafari-IT/booking-calendar/v0.5.4/demo/public/booking-calendar-mobile-view-dark.png)\n\n### Jump-to-Date modal\n\nClick the month/year button in the calendar header to open the date navigation dialog.\n\n![Booking Calendar Jump-to-Date modal](https://raw.githubusercontent.com/AliSafari-IT/booking-calendar/v0.5.4/demo/public/booking-calendar_jumptodate.png)\n\n### Create / update booking dialog\n\nOpen a slot or click an existing booking to open the form dialog. The same dialog handles both creating new bookings and editing existing ones, with client details, status, and scheduling fields.\n\n![Booking Calendar create/update booking dialog](https://raw.githubusercontent.com/AliSafari-IT/booking-calendar/v0.5.4/demo/public/booking-calendar-create-update-booking.png)\n\n### Calendar overview\n\n![Booking Calendar overview](https://raw.githubusercontent.com/AliSafari-IT/booking-calendar/v0.5.4/demo/public/booking-calendar.png)\n\n## Installation\n\n```bash\nnpm install @asafarim/booking-calendar\n```\n\n```bash\npnpm add @asafarim/booking-calendar\n```\n\n## Quick start\n\n```tsx\nimport { useState } from 'react';\nimport { BookingCalendar, type BookingEvent } from '@asafarim/booking-calendar';\nimport '@asafarim/booking-calendar/styles';\nimport '@asafarim/design-tokens/css';\n\nexport function CalendarPage() {\n  const [bookings, setBookings] = useState<BookingEvent[]>([]);\n\n  return (\n    <BookingCalendar\n      bookings={bookings}\n      onCreateBooking={async booking => {\n        const response = await fetch('/api/calendar/bookings', {\n          method: 'POST',\n          headers: { 'Content-Type': 'application/json' },\n          body: JSON.stringify(booking),\n        });\n        const created = await response.json() as BookingEvent;\n        setBookings(current => [...current, created]);\n      }}\n      initialView=\"week\"\n    />\n  );\n}\n```\n\n## API integration\n\nThe calendar is controlled by your application. Pass async callbacks that call your backend and update the `bookings` state after each successful operation.\n\n```tsx\n<BookingCalendar\n  bookings={bookings}\n  onCreateBooking={async booking => {\n    const created = await api.create(booking);\n    setBookings(current => [...current, created]);\n  }}\n  onUpdateBooking={async (id, booking) => {\n    const updated = await api.update(id, booking);\n    setBookings(current => current.map(item => item.id === id ? updated : item));\n  }}\n  onDeleteBooking={async id => {\n    await api.remove(id);\n    setBookings(current => current.filter(item => item.id !== id));\n  }}\n/>\n```\n\nThe repository demo includes a typed fetch client in [`demo/backendApi.ts`](./demo/backendApi.ts) with methods for:\n\n- `load()` — fetch bookings\n- `create(booking)` — create a booking\n- `update(id, booking)` — update a booking\n- `remove(id)` — delete a booking\n- `checkAvailability(booking)` — check a requested time range\n\nSuggested endpoints:\n\n```text\nGET    /api/calendar/bookings\nPOST   /api/calendar/bookings\nPUT    /api/calendar/bookings/{id}\nDELETE /api/calendar/bookings/{id}\nPOST   /api/calendar/bookings/check-availability\n```\n\n## Component props\n\n| Prop | Type | Required | Description |\n| --- | --- | --- | --- |\n| `bookings` | `BookingEvent[]` | Yes | Bookings displayed by the calendar |\n| `onCreateBooking` | `(booking: CreateBookingDto) => Promise<void>` | No | Called when a booking is created |\n| `onUpdateBooking` | `(id: string, booking: UpdateBookingDto) => Promise<void>` | No | Called when a booking is updated |\n| `onDeleteBooking` | `(id: string) => Promise<void>` | No | Called when a booking is deleted |\n| `onRescheduleBooking` | `(id: string, dto: RescheduleBookingDto) => Promise<void>` | No | Rescheduling callback type |\n| `onCheckAvailability` | `(dto: AvailabilityRequest) => Promise<AvailabilityResponse>` | No | Availability callback type |\n| `onSendConfirmation` | `(id: string) => Promise<void>` | No | Sends a booking confirmation |\n| `initialView` | `'month' \\| 'week' \\| 'day'` | No | Defaults to `week` |\n| `initialDate` | `Date` | No | Defaults to the current date |\n| `className` | `string` | No | Additional calendar class name |\n\n## Booking type\n\n```ts\ninterface BookingEvent {\n  id: string;\n  title: string;\n  description?: string;\n  startTime: Date;\n  endTime: Date;\n  durationMinutes: number;\n  status: 'Pending' | 'Confirmed' | 'Cancelled' | 'Completed' | 'NoShow';\n  meetingLink?: string;\n  location?: string;\n  clientName: string;\n  clientEmail: string;\n  clientPhone?: string;\n  meetingReason?: string;\n  cancellationReason?: string;\n  deliveryStatus?: 'Pending' | 'Sent' | 'Failed' | 'Retrying';\n  retryCount: number;\n  createdAt: Date;\n  updatedAt: Date;\n  clientId?: string;\n}\n```\n\n## Jump-to-Date navigation\n\nThe calendar header includes a clickable month/year button. It opens a modal with:\n\n- Year increment and decrement controls\n- A twelve-month selector\n- A six-week mini calendar\n- Keyboard and Escape-key support\n\n## Responsive behavior\n\nThe component is mobile-first:\n\n- **Small screens:** compact controls, stacked form fields, and sheet-style modals\n- **Tablet screens:** single-column modal form layout with comfortable controls\n- **Desktop screens:** full calendar layout with side-by-side form fields\n- **Mobile week view:** columns keep a readable minimum width and can scroll horizontally\n\nThe demo defaults to Day view on narrow screens so bookings remain readable. Desktop starts in Week view.\n\n## Styling and themes\n\nImport the package styles and design tokens once in your application:\n\n```tsx\nimport '@asafarim/design-tokens/css';\nimport '@asafarim/booking-calendar/styles';\n```\n\nThe component consumes `@asafarim/design-tokens` variables for colors, spacing, typography, motion, and radii. Set the active theme on the document root:\n\n```ts\ndocument.documentElement.dataset.theme = 'light';\ndocument.documentElement.dataset.theme = 'dark';\n```\n\n## Accessibility\n\n- Semantic calendar and dialog markup\n- ARIA labels on interactive controls\n- Keyboard navigation and focus-visible states\n- Escape-key dialog dismissal\n- Native form controls and validation feedback\n- Readable status and delivery indicators\n\n## Development\n\n```bash\npnpm install\npnpm build\npnpm dev\n```\n\nThe demo is served at `/booking-calendar/` and includes dynamically generated sample bookings in the current week, so the initial view remains useful regardless of the month in which it is opened.\n\n## License\n\nMIT © ASafariM\n","readmeFilename":""}