{"_id":"@ravja/custom-react-components","_rev":"105-ff61f753668ebe6f9da4a289401ef527","name":"@ravja/custom-react-components","dist-tags":{"latest":"1.0.0-129"},"versions":{"0.0.1":{"name":"@ravja/custom-react-components","version":"0.0.1","keywords":["react","components","scheduler","calendar","modal","shadcn","tailwind","typescript","ui-components"],"author":{"url":"https://www.npmjs.com/~ravja","name":"ravja"},"license":"MIT","_id":"@ravja/custom-react-components@0.0.1","maintainers":[{"name":"ravja","email":"ryan.m.lam@gmail.com"}],"homepage":"https://github.com/RAVJA81/Custom-React-Components#readme","bugs":{"url":"https://github.com/RAVJA81/Custom-React-Components/issues"},"dist":{"shasum":"55444eaa6078c9af9b8c4b4a6b5626b0d00fd534","tarball":"https://registry.npmjs.org/@ravja/custom-react-components/-/custom-react-components-0.0.1.tgz","fileCount":6,"integrity":"sha512-6ICj4PI5aA+c1H0VICxctnK5oLeVZfwRhPeOSfRZJa9RO6Th4LsAtGRfojA6TqWmnII0UJXlTu7v2jdBqlqpRQ==","signatures":[{"sig":"MEQCIDdbocfG2qeORbOOZ0u3kzTLdk44ozs1tYMXRypOjtEmAiBABKKEE1oQobUdbk48wJZmWMiOivZhpTpw9eZyO18baA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134032},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./scheduler.css":"./dist/ravja.scheduler.css","./ravja.scheduler.css":"./dist/ravja.scheduler.css"},"gitHead":"61d6169de75ddea889f3b6f2156bd19758f2e04f","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && vite build","preview":"vite preview","build:lib":"tsc -b && vite build","prepublishOnly":"npm run build"},"_npmUser":{"name":"ravja","email":"ryan.m.lam@gmail.com"},"deprecated":"This version is deprecated. Please use 1.0.1 or later.","repository":{"url":"git+https://github.com/RAVJA81/Custom-React-Components.git","type":"git"},"_npmVersion":"10.9.0","description":"A collection of custom React components built on top of shadcn/ui with Tailwind CSS, including Scheduler, AnimatedModal, and more","directories":{},"_nodeVersion":"22.17.1","dependencies":{"clsx":"^2.1.1","date-fns":"^4.1.0","lucide-react":"^0.553.0","react-markdown":"^10.1.0","tailwind-merge":"^3.4.0","@radix-ui/react-dialog":"^1.1.15","react-resizable-panels":"^3.0.6","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vite":"^7.2.2","eslint":"^9.39.1","globals":"^16.5.0","postcss":"^8.5.6","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.0","tailwindcss":"^3.4.18","@types/react":"^19.2.2","autoprefixer":"^10.4.22","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.2.2","typescript-eslint":"^8.46.3","@vitejs/plugin-react":"^5.1.0","esbuild-plugin-path-alias":"^1.0.7","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/custom-react-components_0.0.1_1763695089274_0.3609055057871371","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-123":{"name":"@ravja/custom-react-components","version":"1.0.0-123","keywords":["react","components","scheduler","calendar","modal","shadcn","tailwind","typescript","ui-components"],"author":{"url":"https://www.npmjs.com/~ravja","name":"ravja"},"license":"MIT","_id":"@ravja/custom-react-components@1.0.0-123","maintainers":[{"name":"ravja","email":"ryan.m.lam@gmail.com"}],"homepage":"http://react.ryanlam.net","dist":{"shasum":"d497f91935f942763156f04b4128a94949074a2e","tarball":"https://registry.npmjs.org/@ravja/custom-react-components/-/custom-react-components-1.0.0-123.tgz","fileCount":54,"integrity":"sha512-qEGjUL2nt+4ASilhTC2CPs59iVuWDMxbZRWassh+KxAPdTJWPpkMO2x29N5iyK4HgLT1NH/TpYBggti3hm878g==","signatures":[{"sig":"MEQCIBzpHlODq164eb6RAbi8qmEk5Dpl8ELZfLWW5raZO1BuAiAVDe43Hf4cDZrQMK/sufRvvQa7AVFRTOBKmqUUHGwO/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":350803},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}},"./package.json":"./package.json","./scheduler.css":"./dist/ravja.scheduler.css","./ravja.scheduler.css":"./dist/ravja.scheduler.css"},"gitHead":"705e339c6fef4859b010c8906df9646f14b967d4","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && vite build && npm run generate:dts && npm run copy:css","preview":"vite preview","copy:css":"node -e \"const fs=require('fs');const files=fs.readdirSync('dist');const cssFile=files.find(f=>f.endsWith('.css')&&f!=='ravja.scheduler.css');if(cssFile){fs.copyFileSync('dist/'+cssFile,'dist/ravja.scheduler.css');console.log('✓ CSS processed and copied')}\"","build:lib":"tsc -b && vite build && npm run generate:dts && npm run copy:css","build:tsup":"tsup","generate:dts":"npx tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outDir dist","build:website":"vite build --config vite.config.website.ts","prepublishOnly":"npm run build","preview:website":"vite preview --config vite.config.website.ts"},"_npmUser":{"name":"ravja","email":"ryan.m.lam@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.0","description":"A collection of custom React components built on top of shadcn/ui with Tailwind CSS, including Scheduler, AnimatedModal, and more","directories":{},"_nodeVersion":"22.17.1","dependencies":{"clsx":"^2.1.1","date-fns":"^4.1.0","remark-gfm":"^4.0.1","lucide-react":"^0.553.0","react-markdown":"^10.1.0","tailwind-merge":"^3.4.0","react-easy-crop":"^5.5.5","react-router-dom":"^7.9.6","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-slider":"^1.3.6","react-resizable-panels":"^3.0.6","class-variance-authority":"^0.7.1","react-syntax-highlighter":"^16.1.0","@types/react-syntax-highlighter":"^15.5.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vite":"^7.2.2","eslint":"^9.39.1","globals":"^16.5.0","postcss":"^8.5.6","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.0","tailwindcss":"^3.4.18","@types/react":"^19.2.2","autoprefixer":"^10.4.22","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.2.2","typescript-eslint":"^8.46.3","@vitejs/plugin-react":"^5.1.0","esbuild-plugin-path-alias":"^1.0.7","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24","@esbuild-plugins/node-resolve":"^0.2.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/custom-react-components_1.0.0-123_1764143729618_0.9904049124486802","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-125":{"name":"@ravja/custom-react-components","version":"1.0.0-125","keywords":["react","components","scheduler","calendar","modal","shadcn","tailwind","typescript","ui-components"],"author":{"url":"https://www.npmjs.com/~ravja","name":"ravja"},"license":"MIT","_id":"@ravja/custom-react-components@1.0.0-125","maintainers":[{"name":"ravja","email":"ryan.m.lam@gmail.com"}],"homepage":"http://react.ryanlam.net","dist":{"shasum":"8eaf917b3f430d415f41ae9e6494b0e5d3ebd2a9","tarball":"https://registry.npmjs.org/@ravja/custom-react-components/-/custom-react-components-1.0.0-125.tgz","fileCount":54,"integrity":"sha512-jMfd1dzoiPB/EfofJgt5xEEb4Sz5M8jYygVNTQnDQ3hCaFcUK1OqdIeVFlr8/YQr8+7FN4Fe76HeJ7XjZP5nHA==","signatures":[{"sig":"MEUCIQCFkL0kOv33RA3gxzULe1SYA6+oWBS22GE4dxMiz93pfgIgNj8DvEq39esn5kwA9TVn41vLOHiaOa0Yn98dzWESe7U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":296508},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}},"./package.json":"./package.json","./scheduler.css":"./dist/ravja.scheduler.css","./ravja.scheduler.css":"./dist/ravja.scheduler.css"},"gitHead":"705e339c6fef4859b010c8906df9646f14b967d4","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && vite build && npm run generate:dts && npm run copy:css","preview":"vite preview","copy:css":"node -e \"const fs=require('fs');const path=require('path');const sourceCss=path.join('src','components','custom','scheduler.css');const destCss=path.join('dist','ravja.scheduler.css');if(fs.existsSync(sourceCss)){fs.copyFileSync(sourceCss,destCss);console.log('✓ CSS copied to dist/ravja.scheduler.css')}else{console.warn('⚠ CSS source file not found:',sourceCss)}\"","build:lib":"tsc -b && vite build && npm run generate:dts && npm run copy:css","build:tsup":"tsup","generate:dts":"npx tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outDir dist","build:website":"vite build --config vite.config.website.ts","prepublishOnly":"npm run build","preview:website":"vite preview --config vite.config.website.ts"},"_npmUser":{"name":"ravja","email":"ryan.m.lam@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.0","description":"A collection of custom React components built on top of shadcn/ui with Tailwind CSS, including Scheduler, AnimatedModal, and more","directories":{},"_nodeVersion":"22.17.1","dependencies":{"clsx":"^2.1.1","date-fns":"^4.1.0","remark-gfm":"^4.0.1","lucide-react":"^0.553.0","react-markdown":"^10.1.0","tailwind-merge":"^3.4.0","react-easy-crop":"^5.5.5","react-router-dom":"^7.9.6","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-slider":"^1.3.6","react-resizable-panels":"^3.0.6","class-variance-authority":"^0.7.1","react-syntax-highlighter":"^16.1.0","@types/react-syntax-highlighter":"^15.5.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vite":"^7.2.2","eslint":"^9.39.1","globals":"^16.5.0","postcss":"^8.5.6","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.0","tailwindcss":"^3.4.18","@types/react":"^19.2.2","autoprefixer":"^10.4.22","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.2.2","typescript-eslint":"^8.46.3","@vitejs/plugin-react":"^5.1.0","esbuild-plugin-path-alias":"^1.0.7","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24","@esbuild-plugins/node-resolve":"^0.2.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/custom-react-components_1.0.0-125_1764145980304_0.4880881042452785","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-126":{"name":"@ravja/custom-react-components","version":"1.0.0-126","keywords":["react","components","scheduler","calendar","modal","shadcn","tailwind","typescript","ui-components"],"author":{"url":"https://www.npmjs.com/~ravja","name":"ravja"},"license":"MIT","_id":"@ravja/custom-react-components@1.0.0-126","maintainers":[{"name":"ravja","email":"ryan.m.lam@gmail.com"}],"homepage":"http://react.ryanlam.net","dist":{"shasum":"2164ab8a654ada30f81b4bc6771c95867213ea07","tarball":"https://registry.npmjs.org/@ravja/custom-react-components/-/custom-react-components-1.0.0-126.tgz","fileCount":54,"integrity":"sha512-wCnVK9XqhQFvh+lhQK6I4rR+OY7i6wbvazjuJv5YLVWVSh21E/WV49joV4wfofDGE6rOSH8wLfj5ZyzNXhFCbw==","signatures":[{"sig":"MEYCIQCt1c/sKl65ZdA8nCFU3GaZ9bQdYwggfteelsty+3tqhgIhAL+YTEfDg3JHwV0GYpKXQ5G/z+Cyz3xQWGHAJf0I8Ef1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":355208},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}},"./package.json":"./package.json","./ravja.scheduler.css":"./dist/ravja.scheduler.css"},"gitHead":"705e339c6fef4859b010c8906df9646f14b967d4","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && vite build && npm run generate:dts && npm run build:css","preview":"vite preview","build:css":"node scripts/build-css.cjs","build:lib":"tsc -b && vite build && npm run generate:dts && npm run build:css","build:tsup":"tsup","generate:dts":"npx tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outDir dist","build:website":"vite build --config vite.config.website.ts","prepublishOnly":"npm run build","preview:website":"vite preview --config vite.config.website.ts"},"_npmUser":{"name":"ravja","email":"ryan.m.lam@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.0","description":"A collection of custom React components built on top of shadcn/ui with Tailwind CSS, including Scheduler, AnimatedModal, and more","directories":{},"_nodeVersion":"22.17.1","dependencies":{"clsx":"^2.1.1","date-fns":"^4.1.0","remark-gfm":"^4.0.1","lucide-react":"^0.553.0","react-markdown":"^10.1.0","tailwind-merge":"^3.4.0","react-easy-crop":"^5.5.5","react-router-dom":"^7.9.6","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-slider":"^1.3.6","react-resizable-panels":"^3.0.6","class-variance-authority":"^0.7.1","react-syntax-highlighter":"^16.1.0","@types/react-syntax-highlighter":"^15.5.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vite":"^7.2.2","eslint":"^9.39.1","globals":"^16.5.0","postcss":"^8.5.6","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.0","tailwindcss":"^3.4.18","@types/react":"^19.2.2","autoprefixer":"^10.4.22","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.2.2","typescript-eslint":"^8.46.3","@vitejs/plugin-react":"^5.1.0","esbuild-plugin-path-alias":"^1.0.7","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24","@esbuild-plugins/node-resolve":"^0.2.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/custom-react-components_1.0.0-126_1764178468885_0.9163429138643386","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-128":{"name":"@ravja/custom-react-components","version":"1.0.0-128","keywords":["react","components","scheduler","calendar","modal","shadcn","tailwind","typescript","ui-components"],"author":{"url":"https://www.npmjs.com/~ravja","name":"ravja"},"license":"MIT","_id":"@ravja/custom-react-components@1.0.0-128","maintainers":[{"name":"ravja","email":"ryan.m.lam@gmail.com"}],"homepage":"http://react.ryanlam.net","dist":{"shasum":"5656ce2531a4279a64b3a12b978b03cd6a091ac8","tarball":"https://registry.npmjs.org/@ravja/custom-react-components/-/custom-react-components-1.0.0-128.tgz","fileCount":54,"integrity":"sha512-7e5lmb1KpmAX+ier9ISKfYxnLH6wPCh6Gcfl7w4f0dR0LR2x9F84J7BIb1RV8g6O51SHj58UVXq3hpzuuVq9ZA==","signatures":[{"sig":"MEYCIQDCb4NaMSf6DBiqKNkiM+jWCxuFkmb5a545Npx1K+F00gIhAJOEaliE/ozbmA25pqw/vySndss8g3kKY2BGEK3/jDit","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":346589},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}},"./package.json":"./package.json","./scheduler.css":"./dist/ravja.scheduler.css","./ravja.scheduler.css":"./dist/ravja.scheduler.css"},"gitHead":"705e339c6fef4859b010c8906df9646f14b967d4","scripts":{"dev":"vite","lint":"eslint .","build":"tsc -b && vite build && npm run generate:dts && npm run build:css","preview":"vite preview","build:css":"node scripts/build-css.cjs","build:lib":"tsc -b && vite build && npm run generate:dts && npm run build:css","build:tsup":"tsup","generate:dts":"npx tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outDir dist","build:website":"vite build --config vite.config.website.ts","prepublishOnly":"npm run build","preview:website":"vite preview --config vite.config.website.ts"},"_npmUser":{"name":"ravja","email":"ryan.m.lam@gmail.com"},"repository":{"url":"","type":"git"},"_npmVersion":"10.9.0","description":"A collection of custom React components built on top of shadcn/ui with Tailwind CSS, including Scheduler, AnimatedModal, and more","directories":{},"_nodeVersion":"22.17.1","dependencies":{"clsx":"^2.1.1","date-fns":"^4.1.0","remark-gfm":"^4.0.1","lucide-react":"^0.553.0","react-markdown":"^10.1.0","tailwind-merge":"^3.4.0","react-easy-crop":"^5.5.5","react-router-dom":"^7.9.6","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-slider":"^1.3.6","react-resizable-panels":"^3.0.6","class-variance-authority":"^0.7.1","react-syntax-highlighter":"^16.1.0","@types/react-syntax-highlighter":"^15.5.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vite":"^7.2.2","eslint":"^9.39.1","globals":"^16.5.0","postcss":"^8.5.6","@eslint/js":"^9.39.1","typescript":"~5.9.3","@types/node":"^24.10.0","tailwindcss":"^3.4.18","@types/react":"^19.2.2","autoprefixer":"^10.4.22","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.2.2","typescript-eslint":"^8.46.3","@vitejs/plugin-react":"^5.1.0","esbuild-plugin-path-alias":"^1.0.7","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24","@esbuild-plugins/node-resolve":"^0.2.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/custom-react-components_1.0.0-128_1764180775681_0.19970370622896527","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-129":{"name":"@ravja/custom-react-components","version":"1.0.0-129","description":"A collection of custom React components built on top of shadcn/ui with Tailwind CSS, including Scheduler, AnimatedModal, and more","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.cjs"}},"./ravja.scheduler.css":"./dist/ravja.scheduler.css","./scheduler.css":"./dist/ravja.scheduler.css","./package.json":"./package.json"},"keywords":["react","components","scheduler","calendar","modal","shadcn","tailwind","typescript","ui-components"],"author":{"name":"ravja","url":"https://www.npmjs.com/~ravja"},"license":"MIT","repository":{"type":"git","url":""},"homepage":"http://react.ryanlam.net","scripts":{"dev":"vite","build":"tsc -b && vite build && npm run generate:dts && npm run build:css","build:lib":"tsc -b && vite build && npm run generate:dts && npm run build:css","build:website":"vite build --config vite.config.website.ts","build:tsup":"tsup","generate:dts":"npx tsc --project tsconfig.build.json --declaration --emitDeclarationOnly --outDir dist","build:css":"node scripts/build-css.cjs","lint":"eslint .","preview":"vite preview","preview:website":"vite preview --config vite.config.website.ts","prepublishOnly":"npm run build"},"dependencies":{"@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-slider":"^1.3.6","@radix-ui/react-slot":"^1.2.4","@types/react-syntax-highlighter":"^15.5.13","class-variance-authority":"^0.7.1","clsx":"^2.1.1","date-fns":"^4.1.0","lucide-react":"^0.553.0","react-easy-crop":"^5.5.5","react-markdown":"^10.1.0","react-resizable-panels":"^3.0.6","react-router-dom":"^7.9.6","react-syntax-highlighter":"^16.1.0","remark-gfm":"^4.0.1","tailwind-merge":"^3.4.0"},"devDependencies":{"@esbuild-plugins/node-resolve":"^0.2.2","@eslint/js":"^9.39.1","@types/node":"^24.10.0","@types/react":"^19.2.2","@types/react-dom":"^19.2.2","@vitejs/plugin-react":"^5.1.0","autoprefixer":"^10.4.22","esbuild-plugin-path-alias":"^1.0.7","eslint":"^9.39.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24","globals":"^16.5.0","postcss":"^8.5.6","tailwindcss":"^3.4.18","tsup":"^8.0.0","typescript":"~5.9.3","typescript-eslint":"^8.46.3","vite":"^7.2.2","vite-plugin-dts":"^4.5.4"},"publishConfig":{"access":"public"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_id":"@ravja/custom-react-components@1.0.0-129","gitHead":"705e339c6fef4859b010c8906df9646f14b967d4","_nodeVersion":"22.17.1","_npmVersion":"10.9.0","dist":{"integrity":"sha512-xIgZ1EETXLgQp28m7tj8171ka3zWBjoRgkl6fy1JLUHayHoCe1NO/7U0xOw/8ij2MCoJ+hR41cZoFto2TRGVZQ==","shasum":"4a20d888cd35daff996c45c2503bc03f6a05db90","tarball":"https://registry.npmjs.org/@ravja/custom-react-components/-/custom-react-components-1.0.0-129.tgz","fileCount":54,"unpackedSize":348115,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIE1OLDlLQYnUQTyR9s+sqCH4ekTVusi7LaxL0SmHlJYuAiAQm2zc85TglTG5r8FLS+vRX3BXpYQr8DDrjB/BrBKmMA=="}]},"_npmUser":{"name":"ravja","email":"ryan.m.lam@gmail.com"},"directories":{},"maintainers":[{"name":"ravja","email":"ryan.m.lam@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/custom-react-components_1.0.0-129_1764183934471_0.45142926348416323"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-16T19:48:23.835Z","modified":"2025-11-26T19:05:34.847Z","1.0.0":"2025-11-16T19:48:24.201Z","1.1.0":"2025-11-16T20:25:21.670Z","1.1.1":"2025-11-16T20:25:45.569Z","1.2.0":"2025-11-16T20:26:45.157Z","1.0.0-1":"2025-11-16T20:27:43.579Z","1.0.0-2":"2025-11-16T20:31:42.939Z","1.0.0-3":"2025-11-16T20:37:31.933Z","1.0.0-4":"2025-11-17T18:14:17.195Z","1.0.0-5":"2025-11-17T18:14:33.069Z","1.0.0-6":"2025-11-17T18:23:02.685Z","1.0.0-7":"2025-11-17T18:25:11.859Z","1.0.0-8":"2025-11-17T18:26:09.974Z","1.0.0-9":"2025-11-17T18:35:11.291Z","1.0.0-10":"2025-11-17T18:44:11.649Z","1.0.0-11":"2025-11-17T18:44:52.553Z","1.0.0-12":"2025-11-17T18:49:12.922Z","0.0.1":"2025-11-21T03:18:09.474Z","0.0.2":"2025-11-21T05:15:17.283Z","0.0.3":"2025-11-21T05:46:55.447Z","0.0.4":"2025-11-21T05:53:28.370Z","0.0.5":"2025-11-21T05:54:03.433Z","0.0.6":"2025-11-21T06:01:45.449Z","0.0.7":"2025-11-21T06:03:00.380Z","1.0.1":"2025-11-21T17:57:54.748Z","1.0.12":"2025-11-23T02:00:33.974Z","1.0.12-2":"2025-11-23T02:46:30.028Z","1.0.12-3":"2025-11-23T02:54:07.023Z","1.1.12-5":"2025-11-23T03:29:06.831Z","1.0.0-112":"2025-11-23T04:00:36.926Z","1.0.0-113":"2025-11-23T06:11:50.602Z","1.0.0-114":"2025-11-23T07:29:42.656Z","1.0.0-115":"2025-11-23T07:34:43.199Z","1.0.0-116":"2025-11-23T07:39:51.917Z","1.0.0-117":"2025-11-23T18:19:25.164Z","1.0.0-118":"2025-11-23T18:28:49.084Z","1.0.0-119":"2025-11-23T18:50:09.475Z","1.0.0-120":"2025-11-23T19:16:49.633Z","1.0.0-121":"2025-11-24T04:45:52.939Z","1.0.0-122":"2025-11-26T07:43:49.967Z","1.0.0-123":"2025-11-26T07:55:29.868Z","1.0.0-124":"2025-11-26T08:32:01.198Z","1.0.0-125":"2025-11-26T08:33:00.480Z","1.0.0-126":"2025-11-26T17:34:29.068Z","1.0.0-128":"2025-11-26T18:12:55.877Z","1.0.0-129":"2025-11-26T19:05:34.673Z"},"author":{"name":"ravja","url":"https://www.npmjs.com/~ravja"},"license":"MIT","homepage":"http://react.ryanlam.net","keywords":["react","components","scheduler","calendar","modal","shadcn","tailwind","typescript","ui-components"],"repository":{"type":"git","url":""},"description":"A collection of custom React components built on top of shadcn/ui with Tailwind CSS, including Scheduler, AnimatedModal, and more","maintainers":[{"name":"ravja","email":"ryan.m.lam@gmail.com"}],"readme":"# @ravja/custom-react-components\r\n\r\nA collection of custom React components built on top of shadcn/ui with Tailwind CSS, including Scheduler, AnimatedModal, and more.\r\n\r\n📦 **Published on npm**: [https://www.npmjs.com/package/@ravja/custom-react-components](https://www.npmjs.com/package/@ravja/custom-react-components)\r\n\r\n🌐 **Sample Page & Documentation**: [http://react.ryanlam.net/scheduler](http://react.ryanlam.net/scheduler)\r\n\r\n[![npm version](https://img.shields.io/npm/v/@ravja/custom-react-components)](https://www.npmjs.com/package/@ravja/custom-react-components)\r\n[![npm](https://img.shields.io/npm/dm/@ravja/custom-react-components)](https://www.npmjs.com/package/@ravja/custom-react-components)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\r\n\r\n## 📦 Installation\r\n\r\nInstall the package using npm:\r\n\r\n```bash\r\nnpm install @ravja/custom-react-components\r\n```\r\n\r\nOr using yarn:\r\n\r\n```bash\r\nyarn add @ravja/custom-react-components\r\n```\r\n\r\nOr using pnpm:\r\n\r\n```bash\r\npnpm add @ravja/custom-react-components\r\n```\r\n\r\n## 📋 Package Information\r\n\r\n- **Package Name**: `@ravja/custom-react-components`\r\n- **Version**: `0.0.1`\r\n- **NPM**: [https://www.npmjs.com/package/@ravja/custom-react-components](https://www.npmjs.com/package/@ravja/custom-react-components)\r\n- **Author**: [ravja](https://www.npmjs.com/~ravja)\r\n- **License**: MIT\r\n\r\n## 🚀 Quick Start\r\n\r\n### Installation\r\n\r\n```bash\r\nnpm install @ravja/custom-react-components\r\n# or\r\nyarn add @ravja/custom-react-components\r\n# or\r\npnpm add @ravja/custom-react-components\r\n```\r\n\r\n### Prerequisites\r\n\r\n- React 18+ or React 19+\r\n- TypeScript (recommended)\r\n- Tailwind CSS configured in your project (for styling)\r\n- Node.js 18+\r\n\r\n### Basic Usage\r\n\r\n#### Scheduler Component\r\n\r\n```tsx\r\nimport { Scheduler, type SchedulerEvent, type SchedulerResource } from '@ravja/custom-react-components';\r\nimport '@ravja/custom-react-components/ravja.scheduler.css';\r\n\r\nfunction App() {\r\n  const resources: SchedulerResource[] = [\r\n    { id: \"1\", name: \"John Doe\", color: \"#3b82f6\" },\r\n    { id: \"2\", name: \"Jane Smith\", color: \"#10b981\" },\r\n  ];\r\n\r\n  const events: SchedulerEvent[] = [\r\n    {\r\n      id: \"e1\",\r\n      title: \"Team Meeting\",\r\n      resourceId: \"1\",\r\n      start: new Date(2024, 0, 15, 10, 0),\r\n      end: new Date(2024, 0, 15, 11, 30),\r\n      description: \"Weekly team sync\",\r\n    },\r\n  ];\r\n\r\n  return (\r\n    <Scheduler\r\n      resources={resources}\r\n      events={events}\r\n      onEventClick={(event) => console.log('Event clicked:', event)}\r\n      onEventDrop={(event, newStart, newResourceId) => {\r\n        console.log('Event dropped:', { event, newStart, newResourceId });\r\n      }}\r\n      onEventResize={(event, newEnd) => {\r\n        console.log('Event resized:', { event, newEnd });\r\n      }}\r\n      startHour={8}\r\n      endHour={20}\r\n    />\r\n  );\r\n}\r\n```\r\n\r\n#### AnimatedModal Component\r\n\r\n```tsx\r\nimport { AnimatedModal } from '@ravja/custom-react-components';\r\n\r\nfunction App() {\r\n  return (\r\n    <AnimatedModal\r\n      title=\"Confirm Action\"\r\n      description=\"Are you sure you want to proceed?\"\r\n      triggerText=\"Open Modal\"\r\n      maxWidth=\"lg\"\r\n      footerActions={\r\n        <>\r\n          <button onClick={() => console.log('Canceled')}>Cancel</button>\r\n          <button onClick={() => console.log('Confirmed')}>Confirm</button>\r\n        </>\r\n      }\r\n    >\r\n      <p>Your modal content goes here.</p>\r\n    </AnimatedModal>\r\n  );\r\n}\r\n```\r\n\r\n#### ImageUploaderCropper Component\r\n\r\n```tsx\r\nimport { ImageUploaderCropper, type ImageUploaderCropperProps } from '@ravja/custom-react-components';\r\nimport { useState } from 'react';\r\n\r\nfunction App() {\r\n  const [croppedImage, setCroppedImage] = useState<string | null>(null);\r\n\r\n  return (\r\n    <div>\r\n      <ImageUploaderCropper\r\n        onChange={(image) => {\r\n          // image can be Blob or string (base64)\r\n          if (typeof image === 'string') {\r\n            setCroppedImage(image);\r\n          } else {\r\n            const reader = new FileReader();\r\n            reader.onloadend = () => {\r\n              setCroppedImage(reader.result as string);\r\n            };\r\n            reader.readAsDataURL(image);\r\n          }\r\n        }}\r\n        aspectRatios={[\r\n          { label: 'Square (1:1)', value: 1 },\r\n          { label: '4:3', value: 4 / 3 },\r\n          { label: '16:9', value: 16 / 9 },\r\n          { label: 'Custom', value: null },\r\n        ]}\r\n        outputFormat=\"base64\"\r\n      />\r\n      \r\n      {croppedImage && (\r\n        <img src={croppedImage} alt=\"Cropped\" className=\"mt-4 rounded-lg\" />\r\n      )}\r\n    </div>\r\n  );\r\n}\r\n```\r\n\r\n### Import CSS Styles\r\n\r\n**Important**: Don't forget to import the CSS file for the Scheduler component:\r\n\r\n```tsx\r\nimport '@ravja/custom-react-components/ravja.scheduler.css';\r\n// or\r\nimport '@ravja/custom-react-components/scheduler.css';\r\n```\r\n\r\nThe CSS file includes all necessary Tailwind styles including dialog/modal animations - no additional Tailwind configuration needed!\r\n\r\n## ✨ Features\r\n\r\n- 🎨 **Beautiful UI** - Built with shadcn/ui and Tailwind CSS\r\n- 📱 **Responsive Layout** - Resizable panels for optimal viewing experience\r\n- 🔍 **Component Browser** - Easy navigation through component categories\r\n- 📖 **Documentation** - Each component includes detailed documentation\r\n- 📋 **Copy to Clipboard** - One-click code copying for easy integration\r\n- 🌓 **Dark Mode** - Built-in theme switcher\r\n- 🎯 **Modern Scrollers** - Custom styled scrollbars throughout\r\n- 📅 **Scheduler Component** - Full-featured calendar/scheduler with drag & drop and event resizing\r\n- 🎭 **Animated Modal** - Smooth animated modal dialogs with header and footer\r\n\r\n## 🛠️ Development Setup\r\n\r\n### Building the Library\r\n\r\nTo build the library for production:\r\n\r\n```bash\r\nnpm run build\r\n```\r\n\r\nThis will generate:\r\n- `dist/index.js` - ESM build (for modern bundlers)\r\n- `dist/index.cjs` - CommonJS build (for Node.js and older bundlers)\r\n- `dist/index.d.ts` - TypeScript declarations\r\n- `dist/ravja.scheduler.css` - Component styles\r\n\r\nThe library supports both ESM and CommonJS formats, making it compatible with:\r\n- ✅ Create React App (CRA)\r\n- ✅ Vite\r\n- ✅ Next.js\r\n- ✅ Webpack\r\n- ✅ Rollup\r\n- ✅ Any modern React application\r\n\r\n### Publishing\r\n\r\n```bash\r\nnpm run build\r\nnpm publish --access public\r\n```\r\n\r\n### Local Development\r\n\r\nIf you want to contribute or run the showcase locally:\r\n\r\n1. Clone the repository:\r\n```bash\r\n# Clone the repository (if available)\r\ncd Custom-React-Components\r\n```\r\n\r\n2. Install dependencies:\r\n```bash\r\nnpm install\r\n```\r\n\r\n3. Start the development server:\r\n```bash\r\nnpm run dev\r\n```\r\n\r\n4. Open [http://localhost:5173](http://localhost:5173) in your browser\r\n\r\n### Demo/Testing\r\n\r\nSee the `demo/` folder for example usage of the components.\r\n\r\n## Project Structure\r\n\r\n```\r\nsrc/\r\n├── components/\r\n│   ├── custom/          # Custom component implementations\r\n│   │   ├── Scheduler.tsx      # Calendar/scheduler component\r\n│   │   ├── AnimatedModal.tsx # Modal with bounce animations\r\n│   │   └── ...               # Other custom components\r\n│   ├── layout/          # Layout components (Sidebar, TopNav)\r\n│   └── ui/              # shadcn/ui base components\r\n├── data/\r\n│   └── components.ts    # Component data and metadata\r\n├── documents/           # Component documentation guides\r\n│   ├── SCHEDULER-COMPONENT-GUIDE.md\r\n│   └── MODAL-COMPONENT-GUIDE.md\r\n├── lib/\r\n│   └── utils.ts         # Utility functions\r\n└── App.tsx              # Main application component\r\n```\r\n\r\n## Documentation\r\n\r\nDetailed component guides are available in the `documents/` folder:\r\n\r\n- **[Scheduler Component Guide](./documents/SCHEDULER-COMPONENT-GUIDE.md)** - Complete guide for the calendar/scheduler component with drag & drop, event resizing, and multiple views\r\n- **[Modal Component Guide](./documents/MODAL-COMPONENT-GUIDE.md)** - Guide for creating animated modal dialogs with bounce effects\r\n\r\n## Adding New Components\r\n\r\nTo add a new component to the showcase:\r\n\r\n1. Create your component in `src/components/custom/`\r\n2. Add component data to `src/data/components.ts`:\r\n\r\n```typescript\r\n{\r\n  id: \"my-component\",\r\n  name: \"My Component\",\r\n  description: \"A brief description\",\r\n  category: \"Category Name\",\r\n  component: () => <MyComponent />,\r\n  code: `// Your component code here`,\r\n  documentation: `# My Component\\n\\nDocumentation in markdown...`\r\n}\r\n```\r\n\r\n## 📚 Components\r\n\r\n### Scheduler\r\n\r\nA full-featured calendar/scheduler component with:\r\n- Multiple views (Day, Week, Month)\r\n- Drag & drop events\r\n- Event resizing\r\n- Multiple resources support\r\n- Time slot highlighting\r\n- Event details modal\r\n\r\n**Example:**\r\n```tsx\r\nimport { Scheduler, type SchedulerEvent, type SchedulerResource } from '@ravja/custom-react-components';\r\n\r\nconst resources: SchedulerResource[] = [\r\n  { id: \"1\", name: \"John Doe\", color: \"#3b82f6\" },\r\n  { id: \"2\", name: \"Jane Smith\", color: \"#10b981\" },\r\n];\r\n\r\nconst events: SchedulerEvent[] = [\r\n  {\r\n    id: \"e1\",\r\n    title: \"Meeting\",\r\n    resourceId: \"1\",\r\n    start: new Date(),\r\n    end: new Date(),\r\n  },\r\n];\r\n\r\n<Scheduler\r\n  resources={resources}\r\n  events={events}\r\n  onEventClick={(event) => console.log(event)}\r\n/>\r\n```\r\n\r\n### AnimatedModal\r\n\r\nA modal dialog component with smooth animations:\r\n- Fixed header and footer\r\n- Scrollable content area\r\n- Customizable width\r\n- Smooth animations\r\n\r\n**Example:**\r\n```tsx\r\nimport { AnimatedModal } from '@ravja/custom-react-components';\r\n\r\n<AnimatedModal\r\n  title=\"Confirm Action\"\r\n  description=\"Are you sure you want to proceed?\"\r\n  triggerText=\"Open Modal\"\r\n  maxWidth=\"lg\"\r\n>\r\n  <p>Your content here</p>\r\n</AnimatedModal>\r\n```\r\n\r\n## 📖 Documentation\r\n\r\nDetailed component guides are available:\r\n\r\n- **[Scheduler Component Guide](./documents/SCHEDULER-COMPONENT-GUIDE.md)** - Complete guide for the calendar/scheduler component with drag & drop, event resizing, and multiple views\r\n- **[Modal Component Guide](./documents/MODAL-COMPONENT-GUIDE.md)** - Guide for creating animated modal dialogs with bounce effects\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## 📝 License\r\n\r\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\r\n\r\n## 🔗 Links\r\n\r\n- **NPM Package**: [https://www.npmjs.com/package/@ravja/custom-react-components](https://www.npmjs.com/package/@ravja/custom-react-components)\r\n- **Author**: [ravja on npm](https://www.npmjs.com/~ravja)\r\n- **Live Demo**: [http://react.ryanlam.net/scheduler](http://react.ryanlam.net/scheduler)\r\n\r\n## 🛠️ Built With\r\n\r\n- [React](https://react.dev/)\r\n- [TypeScript](https://www.typescriptlang.org/)\r\n- [Vite](https://vitejs.dev/)\r\n- [Tailwind CSS](https://tailwindcss.com/)\r\n- [shadcn/ui](https://ui.shadcn.com/)\r\n- [react-resizable-panels](https://github.com/bvaughn/react-resizable-panels)\r\n- [react-markdown](https://github.com/remarkjs/react-markdown)\r\n- [date-fns](https://date-fns.org/)\r\n- [Radix UI](https://www.radix-ui.com/)\r\n","readmeFilename":"README.md"}